diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..401ecd7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +bin +chart diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..6cb858a --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake --experimental-features 'nix-command flakes' diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..cabd16c --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +internal/quake/client/static/ioquake3.js linguist-vendored diff --git a/.github/workflows/blah.yaml b/.github/workflows/blah.yaml new file mode 100644 index 0000000..faf0732 --- /dev/null +++ b/.github/workflows/blah.yaml @@ -0,0 +1,49 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Deploy static content to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Single deploy job since we're just deploying + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Pages + uses: actions/configure-pages@v4 + - name: Setup mdBook + uses: peaceiris/actions-mdbook@v1 + with: + mdbook-version: 'latest' + - run: make docs + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + # Upload entire repository + path: 'docs' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/publish-docs.yaml b/.github/workflows/publish-docs.yaml new file mode 100644 index 0000000..e776688 --- /dev/null +++ b/.github/workflows/publish-docs.yaml @@ -0,0 +1,31 @@ +name: Publish docs + +on: + push: + branches: + - main + pull_request: + +jobs: + deploy: + runs-on: ubuntu-latest + permissions: + contents: read + pages: write + id-token: write + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + steps: + - uses: actions/checkout@v3 + - name: Setup mdBook + uses: peaceiris/actions-mdbook@v1 + with: + mdbook-version: 'latest' + - run: make docs + + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + if: ${{ github.ref == 'refs/heads/main' }} + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./docs/book diff --git a/.github/workflows/push-image.yaml b/.github/workflows/push-image.yaml new file mode 100644 index 0000000..ef68679 --- /dev/null +++ b/.github/workflows/push-image.yaml @@ -0,0 +1,41 @@ +name: Push Image + +on: + push: + # Sequence of patterns matched against refs/tags + tags: + - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 + +jobs: + x86_64: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - uses: actions/checkout@v3 + - run: sudo apt-get install -y qemu-user-static + - uses: cachix/install-nix-action@v21 + - name: Build + run: | + nix build .#container + skopeo login --username "${{ github.actor }}" --password "${{ secrets.GITHUB_TOKEN }}" ghcr.io + skopeo copy docker-archive://$(readlink -f ./result) docker://ghcr.io/chrisrx/quake-kube:latest + + aarch64: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - uses: actions/checkout@v3 + - run: sudo apt-get install -y qemu-user-static + - uses: cachix/install-nix-action@v21 + with: + extra_nix_config: | + system = aarch64-linux + - name: Build + run: | + nix build .#container + skopeo login --username "${{ github.actor }}" --password "${{ secrets.GITHUB_TOKEN }}" ghcr.io + skopeo copy docker-archive://$(readlink -f ./result) docker://ghcr.io/chrisrx/quake-kube:latest diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..bbd7e27 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,25 @@ +name: Tests + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Install golang + uses: actions/setup-go@v2 + with: + go-version: '^1.21.5' # The Go version to download (if necessary) and use. + + - name: Run tests + run: | + make test diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5c7c4dc --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +vendor/ + +bin/ + +# Ignore any Quake 3 assets in the default assets directory +assets/ + +# Nix build file +result + +.direnv diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..12b118b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +FROM golang:1.21 as builder + +WORKDIR /workspace +COPY go.mod go.mod +COPY go.sum go.sum +ARG GOPROXY +ARG GOSUMDB +RUN go mod download + +COPY cmd cmd/ +COPY internal internal/ + +RUN CGO_ENABLED=0 GOOS=linux GO111MODULE=on taskset -c 1 /usr/local/go/bin/go build -a -o q3 ./cmd/q3 + +FROM alpine:3.12 as quake-n-bake + +RUN apk add --no-cache git gcc make libc-dev +RUN git clone https://github.com/ioquake/ioq3 +RUN cd /ioq3 && make BUILD_MISSIONPACK=0 BUILD_BASEGAME=0 BUILD_CLIENT=0 BUILD_SERVER=1 BUILD_GAME_SO=0 BUILD_GAME_QVM=0 BUILD_RENDERER_OPENGL2=0 BUILD_STANDALONE=1 +RUN cp /ioq3/build/release-linux-$(uname -m)/ioq3ded.$(uname -m) /usr/local/bin/ioq3ded + +FROM alpine:3.12 + +COPY --from=builder /workspace/q3 /usr/local/bin +COPY --from=quake-n-bake /usr/local/bin/ioq3ded /usr/local/bin +COPY --from=quake-n-bake /lib/ld-musl-*.so.1 /lib + +ENTRYPOINT ["/usr/local/bin/q3"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f50b5c6 --- /dev/null +++ b/Makefile @@ -0,0 +1,67 @@ +.DEFAULT_GOAL:=help + +BIN_DIR ?= bin +TOOLS_DIR := hack/tools +TOOLS_BIN_DIR := $(TOOLS_DIR)/bin +GOLANGCI_LINT := $(TOOLS_BIN_DIR)/golangci-lint +PROTOC_GEN_GO := $(TOOLS_BIN_DIR)/protoc-gen-go +PROTOC_GEN_GO_GRPC := $(TOOLS_BIN_DIR)/protoc-gen-go-grpc + +BIN_DIR ?= bin +LDFLAGS := -s -w +GOFLAGS = -gcflags "all=-trimpath=$(PWD)" -asmflags "all=-trimpath=$(PWD)" +GO_BUILD_ENV_VARS := GO111MODULE=on CGO_ENABLED=0 + + +q3: + @$(GO_BUILD_ENV_VARS) go build -o $(BIN_DIR)/q3 $(GOFLAGS) -ldflags '$(LDFLAGS)' ./cmd/q3 + +.PHONY: generate +generate: $(PROTOC_GEN_GO) $(PROTOC_GEN_GO_GRPC) ## Generate Go protobuf files + protoc \ + --proto_path=proto \ + --go_out=. \ + --go_opt=module=github.com/ChrisRx/quake-kube \ + --go-grpc_out=. \ + --go-grpc_opt=module=github.com/ChrisRx/quake-kube \ + --plugin protoc-gen-go="$(PROTOC_GEN_GO)" \ + $(shell find proto -name '*.proto') + +VERSION ?= latest +IMAGE ?= docker.io/ChrisRx/quake:$(VERSION) + +.PHONY: build +build: + @docker build . --force-rm --build-arg GOPROXY --build-arg GOSUMDB -t $(IMAGE) + +.PHONY: buildx +buildx: + @docker buildx build . --platform=linux/amd64,linux/arm64 --progress=auto -t $(IMAGE) --push + +.PHONY: test +test: + @go test -v ./internal/... + + +##@ Helpers + +.PHONY: help clean + +docs: + mdbook build docs + +$(PROTOC_GEN_GO): $(TOOLS_DIR)/go.mod # Build protoc-gen-go from tools folder. + cd $(TOOLS_DIR); go build -tags=tools -o bin/protoc-gen-go google.golang.org/protobuf/cmd/protoc-gen-go + +$(PROTOC_GEN_GO_GRPC): $(TOOLS_DIR)/go.mod # Build protoc-gen-go-grpc from tools folder. + cd $(TOOLS_DIR); go build -tags=tools -o bin/protoc-gen-go-grpc google.golang.org/grpc/cmd/protoc-gen-go-grpc + +$(GOLANGCI_LINT): $(TOOLS_DIR)/go.mod # Build golangci-lint from tools folder. + cd $(TOOLS_DIR); go build -tags=tools -o bin/golangci-lint github.com/golangci/golangci-lint/cmd/golangci-lint + +clean: ## Cleanup the project folders + @rm -f $(BIN_DIR)/* + @rm -f $(TOOLS_BIN_DIR)/* + +help: ## Display this help + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) diff --git a/README.md b/README.md new file mode 100644 index 0000000..f1b34ab --- /dev/null +++ b/README.md @@ -0,0 +1,192 @@ +# TODO + +- [ ] Update README.md +- [ ] More proto +- [ ] docs (mdBook) +- [ ] tests +- [ ] project logger (slog or zap) + + +![Build Status](https://github.com/ChrisRx/quake-kube/workflows/Push%20Image/badge.svg) + +# QuakeKube + +QuakeKube is a Kubernetes-ified version of [QuakeJS](https://github.com/inolen/quakejs) that runs a dedicated [Quake 3](https://en.wikipedia.org/wiki/Quake_III_Arena) server in a Kubernetes Deployment, and then allow clients to connect via QuakeJS in the browser. + +## Quick start + +### With an existing K8s cluster + +Deploy the example manifest: + +```shell +$ kubectl apply -f https://raw.githubusercontent.com/ChrisRx/quake-kube/master/example.yaml +``` + + +### Without an existing K8s cluster + +Start an instance of Kubernetes locally using [cinder](https://docs.crit.sh/cinder-guide/what-is-cinder.html) (or [kind](https://kind.sigs.k8s.io/)): + +```shell +$ kind create cluster +``` + +Deploy the example manifest: + +```shell +$ kubectl apply -f example.yaml +``` + +Finally, navigate to `http://$(kubectl get nodes -o jsonpath='{.items[?(@.metadata.name=="kind-control-plane")].status.addresses[?(@.type=="InternalIP")].address}'):30001` in the browser. + +## How it works + +QuakeKube makes use of [ioquake](https://www.ioquake.org) for the Quake 3 dedicated server, and [QuakeJS](https://github.com/inolen/quakejs), a port of ioquake to javascript using [Emscripten](http://github.com/kripken/emscripten), to provide an in-browser game client. + +### Networking + +The client/server protocol of Quake 3 uses UDP to synchronize game state. Browsers do not natively support sending UDP packets so QuakeJS wraps the client and dedicated server net code in websockets, allowing the browser-based clients to send messages and enable multiplayer for other clients. This ends up preventing the browser client from using any other Quake 3 dedicated server. In order to use other Quake 3 dedicated servers, a proxy handles websocket traffic coming from browser clients and translates that into UDP to the backend. This gives the flexibility of being able to talk to other existing Quake 3 servers, but also allows using ioquake (instead of the javascript translation of it), which uses *considerably* less CPU and memory. + +QuakeKube also uses a cool trick with [cmux](https://github.com/cockroachdb/cmux) to multiplex the client and websocket traffic into the same connection. Having all the traffic go through the same address makes routing a client to its backend much easier (since it can just use its `document.location.host`). + +### Quake 3 demo EULA + +The Quake 3 dedicated server requires an End-User License Agreement be agreed to by the user before distributing the Quake 3 demo files that are used (maps, textures, etc). To ensure that the installer is aware of, and agrees to, this EULA, the flag `--agree-eula` must be passed to `q3 server` at runtime. This flag is not set by default in the container image and is therefore required for the dedicated server to pass the prompt for EULA. The [example.yaml](example.yaml) manifest demonstrates usage of this flag to agree to the EULA. + +## Configuration + +The server and maps are configured via ConfigMap that is mounted to the container: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: quake3-server-config +data: + config.yaml: | + fragLimit: 25 + timeLimit: 15m + game: + motd: "Welcome to Quake Kube" + type: FreeForAll + forceRespawn: false + inactivity: 10m + quadFactor: 3 + weaponRespawn: 3 + server: + hostname: "quakekube" + maxClients: 12 + password: "changeme" + maps: + - name: q3dm7 + type: FreeForAll + - name: q3dm17 + type: FreeForAll + - name: q3wctf1 + type: CaptureTheFlag + captureLimit: 8 + - name: q3tourney2 + type: Tournament + - name: q3wctf3 + type: CaptureTheFlag + captureLimit: 8 + - name: ztn3tourney1 + type: Tournament +``` + +The time limit and frag limit can be specified with each map (it will change it for subsequent maps in the list): + +```yaml +- name: q3dm17 + type: FreeForAll + fragLimit: 30 + timeLimit: 30 +``` + +Capture limit for CTF maps can also be configured: + +```yaml +- name: q3wctf3 + type: CaptureTheFlag + captureLimit: 8 +``` + +Any commands not captured by the config yaml can be specified in the `commands` section: + +```yaml +commands: +- seta g_inactivity 600 +- seta sv_timeout 120 +``` + +### Add bots + +Bots can be added individually to map rotations using the `commands` section of the config: + +```yaml +commands: + - addbot crash 1 + - addbot sarge 2 +``` + +The `addbot` server command requires the name of the bot and skill level (crash and sarge are a couple of the built-in bots). + +Another way to add bots is by setting a minimum number of players to allow the server to add bots up to a certain value (removed when human players join): + +```yaml +bot: + minPlayers: 8 +game: + singlePlayerSkill: 2 +``` + +`singlePlayerSkill` can be used to set the skill level of the automatically added bots (2 is the default skill level). + +### Setting a password + +A password should be set for the server to allow remote administration and is found in the server configuration settings: + +```yaml +server: + password: "changeme" +``` + +This will allow clients to use `\rcon changeme ` to remotely administrate the server. To create a password that must be provided by clients to connect: + +```yaml +game: + password: "letmein" +``` + +This will add an additional dialog to the in-browser client to accept the password. It will only appear if the server indicates it needs a password. + +### Add custom maps + +The content server hosts a small upload app to allow uploading `pk3` or `zip` files containing maps. The content server in the [example.yaml](example.yaml) shares a volume with the game server, effectively "side-loading" the map content, however, in the future the game server will introspect into the maps and make sure that it can fulfill the users map configuration before starting. + +### Development + +The easiest way to develop quake-kube is building the binary locally with `make` and running it directly. This only requires that you have the `ioq3ded` binary in your path: + +```shell +$ bin/q3 server -c config.yaml --assets-dir $HOME/.q3a --agree-eula +``` + +### Multi-platform images + +Container images are being cross-compiled with [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) so it can run on hardware with different architectures and operating systems. Currently, it is building for `linux/amd64` and `linux/arm64`. While not specifically compiling to the macOS platform (`darwin/amd64`) QuakeKube should also work on macOS and maybe even Windows. This is due to the fact that they both use a linux VM to provide container support. + +Docker Buildx uses [QEMU](https://www.qemu.org/) to virtualize non-native platforms, which has unfortunately had long-running issues running the Go compiler: + +* [golang/go#24656](https://github.com/golang/go/issues/24656) +* [https://bugs.launchpad.net/qemu/+bug/1696773](https://bugs.launchpad.net/qemu/+bug/1696773) + +This issue is circumvented by ensuring that the Go compiler does not run across multiple hardware threads, which is why the affinity is being limited in the Dockerfile. + +## Credits + +* [inolen/quakejs](https://github.com/inolen/quakejs) - The really awesome QuakeJS project that makes this possible. +* [ioquake/ioq3](https://github.com/ioquake/ioq3) - The community supported version of Quake 3 used by QuakeJS. It is licensed under the GPLv2. +* [begleysm/quakejs](https://github.com/begleysm/quakejs) - Information in the README.md (very helpful) was used as a guide, as well as, some forked assets of this project (which came from quakejs-web originally) were used. +* [joz3d.net](http://www.joz3d.net/html/q3console.html) - Useful information about configuration values. diff --git a/Tiltfile b/Tiltfile new file mode 100644 index 0000000..a356aa9 --- /dev/null +++ b/Tiltfile @@ -0,0 +1,11 @@ +docker_build('quake-kube', '.', + dockerfile='Dockerfile') +k8s_yaml( + helm('./chart', + name='quake-kube', + set=[ + 'image.repository=quake-kube', + ] + ) +) +k8s_resource('quake-kube-chart', port_forwards='30001:8080') diff --git a/chart/.helmignore b/chart/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/chart/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/chart/Chart.yaml b/chart/Chart.yaml new file mode 100644 index 0000000..6a84c17 --- /dev/null +++ b/chart/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: chart +description: A Helm chart for Quake Kube + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.0.0" diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl new file mode 100644 index 0000000..7ba5edc --- /dev/null +++ b/chart/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "chart.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "chart.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "chart.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "chart.labels" -}} +helm.sh/chart: {{ include "chart.chart" . }} +{{ include "chart.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "chart.selectorLabels" -}} +app.kubernetes.io/name: {{ include "chart.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "chart.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "chart.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/chart/templates/configmap.yaml b/chart/templates/configmap.yaml new file mode 100644 index 0000000..565344b --- /dev/null +++ b/chart/templates/configmap.yaml @@ -0,0 +1,39 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: quake3-server-config +data: + config.yaml: | + fragLimit: 25 + timeLimit: 15m + bot: + minPlayers: 3 + game: + motd: "Welcome to Quake Kube" + type: FreeForAll + forceRespawn: false + inactivity: 10m + quadFactor: 3 + weaponRespawn: 3 + server: + hostname: "quakekube" + maxClients: 12 + password: "changeme" + commands: + - addbot sarge 2 + maps: + - name: q3dm7 + type: FreeForAll + timeLimit: 10m + - name: q3dm17 + type: FreeForAll + - name: q3wctf1 + type: CaptureTheFlag + captureLimit: 8 + - name: q3tourney2 + type: Tournament + - name: q3wctf3 + type: CaptureTheFlag + captureLimit: 8 + - name: ztn3tourney1 + type: Tournament diff --git a/chart/templates/deployment.yaml b/chart/templates/deployment.yaml new file mode 100644 index 0000000..03c72c0 --- /dev/null +++ b/chart/templates/deployment.yaml @@ -0,0 +1,103 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "chart.fullname" . }} + labels: + {{- include "chart.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + {{- include "chart.selectorLabels" . | nindent 6 }} + run: quake-kube + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "chart.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "chart.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + # - name: {{ .Chart.Name }} + - name: server + command: + - q3 + - server + - --config=/config/config.yaml + - --content-server=http://127.0.0.1:9090 + - --agree-eula + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - containerPort: 8080 + # livenessProbe: + # httpGet: + # path: / + # port: http + readinessProbe: + tcpSocket: + port: 8080 + initialDelaySeconds: 15 + periodSeconds: 5 + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + - name: content-server + command: + - q3 + - content + - --seed-content-url=http://content.quakejs.com + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - containerPort: 9090 + # livenessProbe: + # httpGet: + # path: / + # port: http + # readinessProbe: + # tcpSocket: + # port: 8080 + # initialDelaySeconds: 15 + # periodSeconds: 5 + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/chart/templates/service.yaml b/chart/templates/service.yaml new file mode 100644 index 0000000..b7486dd --- /dev/null +++ b/chart/templates/service.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "chart.fullname" . }} + labels: + {{- include "chart.labels" . | nindent 4 }} +spec: + type: NodePort + ports: + - port: 8080 + targetPort: 8080 + nodePort: 30001 + name: client + - port: 27960 + targetPort: 27960 + nodePort: 30003 + name: server + - port: 9090 + targetPort: 9090 + nodePort: 30002 + name: content + selector: + {{- include "chart.selectorLabels" . | nindent 4 }} + run: quake-kube diff --git a/chart/templates/serviceaccount.yaml b/chart/templates/serviceaccount.yaml new file mode 100644 index 0000000..1df9350 --- /dev/null +++ b/chart/templates/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "chart.serviceAccountName" . }} + labels: + {{- include "chart.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automount }} +{{- end }} diff --git a/chart/values.yaml b/chart/values.yaml new file mode 100644 index 0000000..3981f47 --- /dev/null +++ b/chart/values.yaml @@ -0,0 +1,76 @@ +# Default values for chart. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: ghcr.io/ChrisRx/quake-kube + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "latest" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: + prometheus.io/scrape: 'true' + prometheus.io/port: '8080' + +podLabels: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +# Additional volumes on the output Deployment definition. +volumes: + - name: quake3-server-config + configMap: + name: quake3-server-config + - name: quake3-content + emptyDir: {} + +# Additional volumeMounts on the output Deployment definition. +volumeMounts: + - name: quake3-server-config + mountPath: /config + - name: quake3-content + mountPath: /assets + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/cmd/q3/app/cmd/cmd.go b/cmd/q3/app/cmd/cmd.go new file mode 100644 index 0000000..70f7b77 --- /dev/null +++ b/cmd/q3/app/cmd/cmd.go @@ -0,0 +1,14 @@ +package cmd + +import "github.com/spf13/cobra" + +func NewCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "cmd", + Short: "send remote server commands", + RunE: func(cmd *cobra.Command, args []string) error { + return nil + }, + } + return cmd +} diff --git a/cmd/q3/app/content/content.go b/cmd/q3/app/content/content.go new file mode 100644 index 0000000..366f504 --- /dev/null +++ b/cmd/q3/app/content/content.go @@ -0,0 +1,66 @@ +package content + +import ( + "fmt" + "net" + "net/url" + "os" + "path/filepath" + + "github.com/soheilhy/cmux" + "github.com/spf13/cobra" + + quakecontent "github.com/ChrisRx/quake-kube/internal/quake/content" + quakecontentutil "github.com/ChrisRx/quake-kube/internal/quake/content/util" + "github.com/ChrisRx/quake-kube/pkg/must" + "github.com/ChrisRx/quake-kube/pkg/mux" +) + +var opts struct { + Addr string + AssetsDir string + SeedContentURL string +} + +func NewCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "content", + Short: "q3 content server", + SilenceErrors: true, + SilenceUsage: true, + RunE: func(cmd *cobra.Command, args []string) (err error) { + if !filepath.IsAbs(opts.AssetsDir) { + opts.AssetsDir, err = filepath.Abs(opts.AssetsDir) + if err != nil { + return err + } + } + + if err := os.MkdirAll(opts.AssetsDir, 0755); err != nil { + return err + } + + if opts.SeedContentURL != "" { + u, err := url.Parse(opts.SeedContentURL) + if err != nil { + return err + } + if err := quakecontentutil.DownloadAssets(u, opts.AssetsDir); err != nil { + return err + } + } + + m := mux.New(must.Must(net.Listen("tcp", opts.Addr))) + m.Register(quakecontent.NewRPCServer(opts.AssetsDir)). + Match(cmux.HTTP2MatchHeaderFieldSendSettings("content-type", "application/grpc")) + m.Register(quakecontent.NewHTTPContentServer(opts.AssetsDir)). + Any() + fmt.Printf("Starting server %s\n", opts.Addr) + return m.Serve() + }, + } + cmd.Flags().StringVarP(&opts.Addr, "addr", "a", ":9090", "address :") + cmd.Flags().StringVarP(&opts.AssetsDir, "assets-dir", "d", "assets", "assets directory") + cmd.Flags().StringVar(&opts.SeedContentURL, "seed-content-url", "", "seed content from another content server") + return cmd +} diff --git a/cmd/q3/app/proxy/proxy.go b/cmd/q3/app/proxy/proxy.go new file mode 100644 index 0000000..fd0649f --- /dev/null +++ b/cmd/q3/app/proxy/proxy.go @@ -0,0 +1,46 @@ +package proxy + +import ( + "fmt" + "net/http" + + "github.com/spf13/cobra" + + quakeclient "github.com/ChrisRx/quake-kube/internal/quake/client" + netutil "github.com/ChrisRx/quake-kube/internal/util/net" +) + +var opts struct { + ClientAddr string + ServerAddr string + ContentServer string +} + +func NewCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "proxy", + Short: "q3 websocket/udp proxy", + SilenceUsage: true, + RunE: func(cmd *cobra.Command, args []string) error { + if opts.ClientAddr == "" { + hostIPv4, err := netutil.DetectHostIPv4() + if err != nil { + return err + } + opts.ClientAddr = fmt.Sprintf("%s:8080", hostIPv4) + } + p, err := quakeclient.NewProxy(opts.ServerAddr) + if err != nil { + return err + } + s := http.Server{ + Addr: opts.ClientAddr, + Handler: p, + } + return s.ListenAndServe() + }, + } + cmd.Flags().StringVarP(&opts.ClientAddr, "client-addr", "c", "", "client address :") + cmd.Flags().StringVarP(&opts.ServerAddr, "server-addr", "s", "", "dedicated server :") + return cmd +} diff --git a/cmd/q3/app/server/server.go b/cmd/q3/app/server/server.go new file mode 100644 index 0000000..347b712 --- /dev/null +++ b/cmd/q3/app/server/server.go @@ -0,0 +1,99 @@ +package server + +import ( + "context" + "errors" + "fmt" + "net" + "net/url" + "path/filepath" + "time" + + "github.com/soheilhy/cmux" + "github.com/spf13/cobra" + + quakeclient "github.com/ChrisRx/quake-kube/internal/quake/client" + quakecontentutil "github.com/ChrisRx/quake-kube/internal/quake/content/util" + quakeserver "github.com/ChrisRx/quake-kube/internal/quake/server" + httputil "github.com/ChrisRx/quake-kube/internal/util/net/http" + "github.com/ChrisRx/quake-kube/pkg/must" + "github.com/ChrisRx/quake-kube/pkg/mux" +) + +var opts struct { + ClientAddr string + ServerAddr string + ContentServer string + AcceptEula bool + AssetsDir string + ConfigFile string + WatchInterval time.Duration +} + +func NewCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "server", + Short: "q3 server", + SilenceUsage: true, + RunE: func(cmd *cobra.Command, args []string) (err error) { + if !filepath.IsAbs(opts.AssetsDir) { + opts.AssetsDir, err = filepath.Abs(opts.AssetsDir) + if err != nil { + return err + } + } + + if !opts.AcceptEula { + fmt.Println(quakeserver.Q3DemoEULA) + return errors.New("You must agree to the EULA to continue") + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + // Sync with content server and start ioq3ded server process. + go func() { + if err := httputil.GetUntil(opts.ContentServer+"/assets/manifest.json", ctx.Done()); err != nil { + panic(err) + } + // TODO(ChrisRx): only download what is in map config + if err := quakecontentutil.DownloadAssets(must.Must(url.Parse(opts.ContentServer)), opts.AssetsDir); err != nil { + panic(err) + } + + s := quakeserver.Server{ + Dir: opts.AssetsDir, + WatchInterval: opts.WatchInterval, + ConfigFile: opts.ConfigFile, + Addr: opts.ServerAddr, + } + if err := s.Start(ctx); err != nil { + panic(err) + } + }() + + m := mux.New(must.Must(net.Listen("tcp", opts.ClientAddr))) + m.Register(must.Must(quakeclient.NewProxy(opts.ServerAddr))). + Match(cmux.HTTP1HeaderField("Upgrade", "websocket")) + m.Register(must.Must(quakeclient.NewHTTPClientServer(&quakeclient.Config{ + ContentServerURL: opts.ContentServer, + ServerAddr: opts.ServerAddr, + }))). + Any() + fmt.Printf("Starting server %s\n", opts.ClientAddr) + return m.Serve() + }, + } + cmd.Flags().StringVarP(&opts.ConfigFile, "config", "c", "", "server configuration file") + cmd.Flags(). + StringVar(&opts.ContentServer, "content-server", "http://content.quakejs.com", "content server url") + cmd.Flags().BoolVar(&opts.AcceptEula, "agree-eula", false, "agree to the Quake 3 demo EULA") + cmd.Flags().StringVar(&opts.AssetsDir, "assets-dir", "assets", "location for game files") + cmd.Flags(). + StringVar(&opts.ClientAddr, "client-addr", "0.0.0.0:8080", "client address :") + cmd.Flags(). + StringVar(&opts.ServerAddr, "server-addr", "0.0.0.0:27960", "dedicated server :") + cmd.Flags(). + DurationVar(&opts.WatchInterval, "watch-interval", 15*time.Second, "dedicated server :") + return cmd +} diff --git a/cmd/q3/app/upload/upload.go b/cmd/q3/app/upload/upload.go new file mode 100644 index 0000000..cedbade --- /dev/null +++ b/cmd/q3/app/upload/upload.go @@ -0,0 +1,95 @@ +package upload + +import ( + "context" + "crypto/tls" + "crypto/x509" + "fmt" + "os" + + "github.com/spf13/cobra" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" + "google.golang.org/protobuf/types/known/emptypb" + + contentapiv1 "github.com/ChrisRx/quake-kube/internal/quake/content/api/v1" + contentapiv2 "github.com/ChrisRx/quake-kube/internal/quake/content/api/v2" +) + +var opts struct { + Addr string + // KVAddr string + Insecure bool + + // gRPC TLS client auth + KeyFile string + CertFile string + CACertFile string +} + +func NewCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "upload", + Short: "upload Quake 3 maps", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + var copts []grpc.DialOption + if opts.Insecure { + copts = append(copts, grpc.WithInsecure()) + } + if opts.KeyFile != "" && opts.CertFile != "" { + tlsConfig := &tls.Config{ + ClientCAs: x509.NewCertPool(), + } + if opts.CACertFile != "" { + caCert, err := os.ReadFile(opts.CACertFile) + if err != nil { + return err + } + if !tlsConfig.ClientCAs.AppendCertsFromPEM(caCert) { + return fmt.Errorf("failed to add ca cert file: %s", opts.CACertFile) + } + } + cert, err := tls.LoadX509KeyPair(opts.CertFile, opts.KeyFile) + if err != nil { + return err + } + tlsConfig.Certificates = []tls.Certificate{cert} + copts = append(copts, grpc.WithTransportCredentials(credentials.NewTLS(tlsConfig))) + } + conn, err := grpc.Dial(opts.Addr, copts...) + if err != nil { + return err + } + client := contentapiv1.NewAssetsClient(conn) + + data, err := os.ReadFile(args[0]) + if err != nil { + return err + } + + resp, err := client.FileUpload(context.Background(), &contentapiv1.FileUploadRequest{ + Name: args[0], + File: data, + }) + if err != nil { + return err + } + fmt.Printf("resp: %+v\n", resp) + + { + client := contentapiv2.NewAssetsClient(conn) + resp, err := client.GetManifest(context.Background(), &emptypb.Empty{}) + if err != nil { + return err + } + fmt.Printf("resp: %+v\n", resp) + } + + return nil + }, + } + cmd.Flags().StringVar(&opts.Addr, "addr", ":9090", "Address for content server") + cmd.Flags().BoolVar(&opts.Insecure, "insecure", false, "Allow insecure gRPC client connection") + return cmd +} diff --git a/cmd/q3/main.go b/cmd/q3/main.go new file mode 100644 index 0000000..c612ea2 --- /dev/null +++ b/cmd/q3/main.go @@ -0,0 +1,37 @@ +package main + +import ( + "log" + + "github.com/spf13/cobra" + + q3cmd "github.com/ChrisRx/quake-kube/cmd/q3/app/cmd" + q3content "github.com/ChrisRx/quake-kube/cmd/q3/app/content" + q3proxy "github.com/ChrisRx/quake-kube/cmd/q3/app/proxy" + q3server "github.com/ChrisRx/quake-kube/cmd/q3/app/server" + q3upload "github.com/ChrisRx/quake-kube/cmd/q3/app/upload" +) + +var global struct { + Verbosity int +} + +func main() { + cmd := &cobra.Command{ + Use: "q3", + Short: "", + } + cmd.AddCommand( + q3cmd.NewCommand(), + q3content.NewCommand(), + q3proxy.NewCommand(), + q3server.NewCommand(), + q3upload.NewCommand(), + ) + + cmd.PersistentFlags().CountVarP(&global.Verbosity, "verbose", "v", "log output verbosity") + + if err := cmd.Execute(); err != nil { + log.Fatal(err) + } +} diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..8371eb9 --- /dev/null +++ b/config.yaml @@ -0,0 +1,34 @@ +fragLimit: 25 +timeLimit: 15m +bot: + minPlayers: 3 +game: + motd: "Welcome to Quake Kube" + type: FreeForAll + forceRespawn: false + inactivity: 10m + #password: "letmein" + quadFactor: 3 + weaponRespawn: 3 +server: + hostname: "quakekube" + maxClients: 16 + password: "changeme" +commands: + - addbot sarge 2 +maps: +- name: q3dm7 + type: FreeForAll + timeLimit: 10m +- name: q3dm17 + type: FreeForAll +- name: q3wctf1 + type: CaptureTheFlag + captureLimit: 8 +- name: q3tourney2 + type: Tournament +- name: q3wctf3 + type: CaptureTheFlag + captureLimit: 8 +- name: ztn3tourney1 + type: Tournament diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..7585238 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +book diff --git a/docs/book.toml b/docs/book.toml new file mode 100644 index 0000000..18646ec --- /dev/null +++ b/docs/book.toml @@ -0,0 +1,6 @@ +[book] +authors = ["Chris Marshall"] +language = "en" +multilingual = false +src = "src" +title = "quake-kube" diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md new file mode 100644 index 0000000..7390c82 --- /dev/null +++ b/docs/src/SUMMARY.md @@ -0,0 +1,3 @@ +# Summary + +- [Chapter 1](./chapter_1.md) diff --git a/docs/src/chapter_1.md b/docs/src/chapter_1.md new file mode 100644 index 0000000..b743fda --- /dev/null +++ b/docs/src/chapter_1.md @@ -0,0 +1 @@ +# Chapter 1 diff --git a/example.yaml b/example.yaml new file mode 100644 index 0000000..0229d0f --- /dev/null +++ b/example.yaml @@ -0,0 +1,117 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: quake +spec: + selector: + matchLabels: + run: quake + replicas: 1 + template: + metadata: + labels: + run: quake + annotations: + prometheus.io/scrape: 'true' + prometheus.io/port: '8080' + spec: + containers: + - command: + - q3 + - server + - --config=/config/config.yaml + - --content-server=http://127.0.0.1:9090 + - --agree-eula + image: ghcr.io/chrisrx/quake-kube:latest + name: server + ports: + - containerPort: 8080 + readinessProbe: + tcpSocket: + port: 8080 + initialDelaySeconds: 15 + periodSeconds: 5 + volumeMounts: + - name: quake3-server-config + mountPath: /config + - name: quake3-content + mountPath: /assets + - command: + - q3 + - content + - --seed-content-url=http://content.quakejs.com + image: ghcr.io/chrisrx/quake-kube:latest + name: content-server + ports: + - containerPort: 9090 + volumeMounts: + - name: quake3-content + mountPath: /assets + volumes: + - name: quake3-server-config + configMap: + name: quake3-server-config + - name: quake3-content + emptyDir: {} +--- +apiVersion: v1 +kind: Service +metadata: + name: quake +spec: + type: NodePort + selector: + run: quake + ports: + - port: 8080 + targetPort: 8080 + nodePort: 30001 + name: client + - port: 27960 + targetPort: 27960 + nodePort: 30003 + name: server + - port: 9090 + targetPort: 9090 + nodePort: 30002 + name: content +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: quake3-server-config +data: + config.yaml: | + fragLimit: 25 + timeLimit: 15m + bot: + minPlayers: 3 + game: + motd: "Welcome to Quake Kube" + type: FreeForAll + forceRespawn: false + inactivity: 10m + quadFactor: 3 + weaponRespawn: 3 + server: + hostname: "quakekube" + maxClients: 12 + password: "changeme" + commands: + - addbot sarge 2 + maps: + - name: q3dm7 + type: FreeForAll + timeLimit: 10m + - name: q3dm17 + type: FreeForAll + - name: q3wctf1 + type: CaptureTheFlag + captureLimit: 8 + - name: q3tourney2 + type: Tournament + - name: q3wctf3 + type: CaptureTheFlag + captureLimit: 8 + - name: ztn3tourney1 + type: Tournament diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..5f3a970 --- /dev/null +++ b/flake.lock @@ -0,0 +1,85 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1705314449, + "narHash": "sha256-yfQQ67dLejP0FLK76LKHbkzcQqNIrux6MFe32MMFGNQ=", + "owner": "nix-community", + "repo": "gomod2nix", + "rev": "30e3c3a9ec4ac8453282ca7f67fca9e1da12c3e6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "gomod2nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1706732774, + "narHash": "sha256-hqJlyJk4MRpcItGYMF+3uHe8HvxNETWvlGtLuVpqLU0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b8b232ae7b8b144397fdb12d20f592e5e7c1a64d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "gomod2nix": "gomod2nix", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..5460116 --- /dev/null +++ b/flake.nix @@ -0,0 +1,75 @@ +{ + description = "quake-kube flake"; + + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + inputs.flake-utils.url = "github:numtide/flake-utils"; + inputs.gomod2nix.url = "github:nix-community/gomod2nix"; + inputs.gomod2nix.inputs.nixpkgs.follows = "nixpkgs"; + inputs.gomod2nix.inputs.flake-utils.follows = "flake-utils"; + + outputs = { self, nixpkgs, flake-utils, gomod2nix }: + (flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] + (system: + let + + pkgs = import nixpkgs { + inherit system; + + # needed for terraform + config.allowUnfree = true; + + overlays = [ + gomod2nix.overlays.default + ]; + }; + + + # The current default sdk for macOS fails to compile go projects, so we use a newer one for now. + # This has no effect on other platforms. + callPackage = pkgs.darwin.apple_sdk_11_0.callPackage or pkgs.callPackage; + in + rec { + packages.default = pkgs.buildGoApplication { + pname = "q3"; + version = "0.1"; + subPackages = [ + "./cmd/q3" + ]; + src = ./.; + modules = ./gomod2nix.toml; + }; + packages.container = pkgs.dockerTools.buildLayeredImage { + name = "quake-kube"; + tag = "latest"; + created = "now"; + contents = [ + packages.default + pkgs.ioquake3 + ]; + config.Cmd = [ "${packages.default}/bin/q3" ]; + }; + + devShells.default = + pkgs.mkShell { + buildInputs = with pkgs; [ + pkgs.gomod2nix + go_1_21 + gopls + gotools + go-tools + protobuf + protoc-gen-go + protoc-gen-go-grpc + mdbook + kubernetes-helm + kind + kubectl + tilt + terraform + ioquake3 + skopeo + ]; + }; + }) + ); +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..edd77c9 --- /dev/null +++ b/go.mod @@ -0,0 +1,55 @@ +module github.com/ChrisRx/quake-kube + +go 1.21 + +// +replace k8s.io/apimachinery => k8s.io/apimachinery v0.29.1 + +require ( + github.com/google/go-cmp v0.6.0 + github.com/gorilla/websocket v1.5.1 + github.com/labstack/echo/v4 v4.11.4 + github.com/prometheus/client_golang v1.18.0 + github.com/soheilhy/cmux v0.1.5 + github.com/spf13/cobra v1.8.0 + google.golang.org/grpc v1.61.0 + google.golang.org/protobuf v1.32.0 + k8s.io/apimachinery v0.29.1 + sigs.k8s.io/yaml v1.4.0 +) + +require ( + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang-jwt/jwt v3.2.2+incompatible // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/labstack/gommon v0.4.2 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.46.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasttemplate v1.2.2 // indirect + golang.org/x/crypto v0.18.0 // indirect + golang.org/x/net v0.20.0 // indirect + golang.org/x/sys v0.16.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/time v0.5.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + k8s.io/klog/v2 v2.120.1 // indirect + k8s.io/utils v0.0.0-20240102154912-e7106e64919e // indirect + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..e44c68f --- /dev/null +++ b/go.sum @@ -0,0 +1,148 @@ +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/labstack/echo/v4 v4.11.4 h1:vDZmA+qNeh1pd/cCkEicDMrjtrnMGQ1QFI9gWN1zGq8= +github.com/labstack/echo/v4 v4.11.4/go.mod h1:noh7EvLwqDsmh/X/HWKPUl1AjzJrhyptRyEbQJfxen8= +github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= +github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= +github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.46.0 h1:doXzt5ybi1HBKpsZOL0sSkaNHJJqkyfEWZGGqqScV0Y= +github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= +github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= +google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0= +google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/apimachinery v0.29.1 h1:KY4/E6km/wLBguvCZv8cKTeOwwOBqFNjwJIdMkMbbRc= +k8s.io/apimachinery v0.29.1/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU= +k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= +k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ= +k8s.io/utils v0.0.0-20240102154912-e7106e64919e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/gomod2nix.toml b/gomod2nix.toml new file mode 100644 index 0000000..cf32155 --- /dev/null +++ b/gomod2nix.toml @@ -0,0 +1,132 @@ +schema = 3 + +[mod] + [mod."github.com/beorn7/perks"] + version = "v1.0.1" + hash = "sha256-h75GUqfwJKngCJQVE5Ao5wnO3cfKD9lSIteoLp/3xJ4=" + [mod."github.com/cespare/xxhash/v2"] + version = "v2.2.0" + hash = "sha256-nPufwYQfTkyrEkbBrpqM3C2vnMxfIz6tAaBmiUP7vd4=" + [mod."github.com/go-logr/logr"] + version = "v1.4.1" + hash = "sha256-WM4badoqxXlBmqCRrnmtNce63dLlr/FJav3BJSYHvaY=" + [mod."github.com/gogo/protobuf"] + version = "v1.3.2" + hash = "sha256-pogILFrrk+cAtb0ulqn9+gRZJ7sGnnLLdtqITvxvG6c=" + [mod."github.com/golang-jwt/jwt"] + version = "v3.2.2+incompatible" + hash = "sha256-LOkpuXhWrFayvVf1GOaOmZI5YKEsgqVSb22aF8LnCEM=" + [mod."github.com/golang/protobuf"] + version = "v1.5.3" + hash = "sha256-svogITcP4orUIsJFjMtp+Uv1+fKJv2Q5Zwf2dMqnpOQ=" + [mod."github.com/google/go-cmp"] + version = "v0.6.0" + hash = "sha256-qgra5jze4iPGP0JSTVeY5qV5AvEnEu39LYAuUCIkMtg=" + [mod."github.com/google/gofuzz"] + version = "v1.2.0" + hash = "sha256-T6Gz741l45L3F6Dt7fiAuQvQQg59Qtap3zG05M2cfqU=" + [mod."github.com/gorilla/websocket"] + version = "v1.5.1" + hash = "sha256-eHZ/U+eeE5tSgWc1jEDuBwtTRbXKP9fqP9zfW4Zw8T0=" + [mod."github.com/inconshreveable/mousetrap"] + version = "v1.1.0" + hash = "sha256-XWlYH0c8IcxAwQTnIi6WYqq44nOKUylSWxWO/vi+8pE=" + [mod."github.com/json-iterator/go"] + version = "v1.1.12" + hash = "sha256-To8A0h+lbfZ/6zM+2PpRpY3+L6725OPC66lffq6fUoM=" + [mod."github.com/kr/text"] + version = "v0.2.0" + hash = "sha256-fadcWxZOORv44oak3jTxm6YcITcFxdGt4bpn869HxUE=" + [mod."github.com/labstack/echo/v4"] + version = "v4.11.4" + hash = "sha256-pVKfkZtxi5e/1MTK2RcKWSgNpEbRDo3lKUVKo01WYO0=" + [mod."github.com/labstack/gommon"] + version = "v0.4.2" + hash = "sha256-395+BETDpv15L2lsCiEccwakXgEQxKHlYBAU0Ot3qhY=" + [mod."github.com/mattn/go-colorable"] + version = "v0.1.13" + hash = "sha256-qb3Qbo0CELGRIzvw7NVM1g/aayaz4Tguppk9MD2/OI8=" + [mod."github.com/mattn/go-isatty"] + version = "v0.0.20" + hash = "sha256-qhw9hWtU5wnyFyuMbKx+7RB8ckQaFQ8D+8GKPkN3HHQ=" + [mod."github.com/modern-go/concurrent"] + version = "v0.0.0-20180306012644-bacd9c7ef1dd" + hash = "sha256-OTySieAgPWR4oJnlohaFTeK1tRaVp/b0d1rYY8xKMzo=" + [mod."github.com/modern-go/reflect2"] + version = "v1.0.2" + hash = "sha256-+W9EIW7okXIXjWEgOaMh58eLvBZ7OshW2EhaIpNLSBU=" + [mod."github.com/prometheus/client_golang"] + version = "v1.18.0" + hash = "sha256-kuC6WUg2j7A+9qnSp5VZSYo+oltgLvj/70TpqlCJIdE=" + [mod."github.com/prometheus/client_model"] + version = "v0.5.0" + hash = "sha256-/sXlngf8AoEIeLIiaLg6Y7uYPVq7tI0qnLt0mUyKid4=" + [mod."github.com/prometheus/common"] + version = "v0.46.0" + hash = "sha256-Q303suNDzc+DbIYhiqURNhymXeheWEshwm7XasKnX+Y=" + [mod."github.com/prometheus/procfs"] + version = "v0.12.0" + hash = "sha256-Y4ZZmxIpVCO67zN3pGwSk2TcI88zvmGJkgwq9DRTwFw=" + [mod."github.com/soheilhy/cmux"] + version = "v0.1.5" + hash = "sha256-e9+SEcYZONDLDvRfCmwkkpLTTll55LIhhC2bigVO1uc=" + [mod."github.com/spf13/cobra"] + version = "v1.8.0" + hash = "sha256-oAE+fEaRfZPE541IPWE0GMeBBYgH2DMhtZNxzp7DFlY=" + [mod."github.com/spf13/pflag"] + version = "v1.0.5" + hash = "sha256-w9LLYzxxP74WHT4ouBspH/iQZXjuAh2WQCHsuvyEjAw=" + [mod."github.com/valyala/bytebufferpool"] + version = "v1.0.0" + hash = "sha256-I9FPZ3kCNRB+o0dpMwBnwZ35Fj9+ThvITn8a3Jr8mAY=" + [mod."github.com/valyala/fasttemplate"] + version = "v1.2.2" + hash = "sha256-gp+lNXE8zjO+qJDM/YbS6V43HFsYP6PKn4ux1qa5lZ0=" + [mod."golang.org/x/crypto"] + version = "v0.18.0" + hash = "sha256-BuMVUxOIyfLo8MOhqYt+uQ8NDN6P2KdblKyfPxINzQ4=" + [mod."golang.org/x/net"] + version = "v0.20.0" + hash = "sha256-PCttIsWSBQd6fDXL49jepszUAMLnAGAKR//5EDO3XDk=" + [mod."golang.org/x/sys"] + version = "v0.16.0" + hash = "sha256-ZkGclbp2S7NQYhbuGji6XokCn2Qi1BJy8dwyAOTV8sY=" + [mod."golang.org/x/text"] + version = "v0.14.0" + hash = "sha256-yh3B0tom1RfzQBf1RNmfdNWF1PtiqxV41jW1GVS6JAg=" + [mod."golang.org/x/time"] + version = "v0.5.0" + hash = "sha256-W6RgwgdYTO3byIPOFxrP2IpAZdgaGowAaVfYby7AULU=" + [mod."google.golang.org/genproto/googleapis/rpc"] + version = "v0.0.0-20231106174013-bbf56f31fb17" + hash = "sha256-9TtJ3WDdTvD8gFVNX6CrBZdc2qTzXme7zxw1ee7QHx8=" + [mod."google.golang.org/grpc"] + version = "v1.61.0" + hash = "sha256-+LvlQyeIaM0GgOQoa3rVmM9OS0UtbdK54Fvl3dgJEt8=" + [mod."google.golang.org/protobuf"] + version = "v1.32.0" + hash = "sha256-GJuTkMGHCzHbyK4yD5kY4oMn8wQWqgkeBK//yVDqHJk=" + [mod."gopkg.in/inf.v0"] + version = "v0.9.1" + hash = "sha256-z84XlyeWLcoYOvWLxPkPFgLkpjyb2Y4pdeGMyySOZQI=" + [mod."gopkg.in/yaml.v2"] + version = "v2.4.0" + hash = "sha256-uVEGglIedjOIGZzHW4YwN1VoRSTK8o0eGZqzd+TNdd0=" + [mod."k8s.io/apimachinery"] + version = "v0.29.1" + hash = "sha256-TU0woi326oyFjYvGbtROtZMaZPJo+aGdpu8HSdZfUZc=" + [mod."k8s.io/klog/v2"] + version = "v2.120.1" + hash = "sha256-PU3q5ODCHEO8z//zUKsCq2tky6ZNx4xFl3nHSPJpuW8=" + [mod."k8s.io/utils"] + version = "v0.0.0-20240102154912-e7106e64919e" + hash = "sha256-2vwd2NSUOWQSuzGGOpdtz6FDGrLHER8vEAVC7wDlZ40=" + [mod."sigs.k8s.io/json"] + version = "v0.0.0-20221116044647-bc3834ca7abd" + hash = "sha256-XDBMN2o450IHiAwEpBVsvo9e7tYZa+EXWrifUNTdNMU=" + [mod."sigs.k8s.io/structured-merge-diff/v4"] + version = "v4.4.1" + hash = "sha256-FcZHHZCKNNZW6/s1T1sKiS5Vj1TpHPmxVWr6YlL60xA=" + [mod."sigs.k8s.io/yaml"] + version = "v1.4.0" + hash = "sha256-Hd/M0vIfIVobDd87eb58p1HyVOjYWNlGq2bRXfmtVno=" diff --git a/hack/tools/go.mod b/hack/tools/go.mod new file mode 100644 index 0000000..ed1515f --- /dev/null +++ b/hack/tools/go.mod @@ -0,0 +1,192 @@ +module github.com/ChrisRx/quake-kube/hack/tools + +go 1.21.5 + +require ( + github.com/golangci/golangci-lint v1.55.2 + google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 + google.golang.org/protobuf v1.32.0 +) + +require ( + 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect + 4d63.com/gochecknoglobals v0.2.1 // indirect + github.com/4meepo/tagalign v1.3.3 // indirect + github.com/Abirdcfly/dupword v0.0.13 // indirect + github.com/Antonboom/errname v0.1.12 // indirect + github.com/Antonboom/nilnil v0.1.7 // indirect + github.com/Antonboom/testifylint v0.2.3 // indirect + github.com/BurntSushi/toml v1.3.2 // indirect + github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect + github.com/GaijinEntertainment/go-exhaustruct/v3 v3.1.0 // indirect + github.com/Masterminds/semver v1.5.0 // indirect + github.com/OpenPeeDeeP/depguard/v2 v2.1.0 // indirect + github.com/alecthomas/go-check-sumtype v0.1.3 // indirect + github.com/alexkohler/nakedret/v2 v2.0.2 // indirect + github.com/alexkohler/prealloc v1.0.0 // indirect + github.com/alingse/asasalint v0.0.11 // indirect + github.com/ashanbrown/forbidigo v1.6.0 // indirect + github.com/ashanbrown/makezero v1.1.1 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bkielbasa/cyclop v1.2.1 // indirect + github.com/blizzy78/varnamelen v0.8.0 // indirect + github.com/bombsimon/wsl/v3 v3.4.0 // indirect + github.com/breml/bidichk v0.2.7 // indirect + github.com/breml/errchkjson v0.3.6 // indirect + github.com/butuzov/ireturn v0.2.2 // indirect + github.com/butuzov/mirror v1.1.0 // indirect + github.com/catenacyber/perfsprint v0.2.0 // indirect + github.com/ccojocar/zxcvbn-go v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/charithe/durationcheck v0.0.10 // indirect + github.com/chavacava/garif v0.1.0 // indirect + github.com/curioswitch/go-reassign v0.2.0 // indirect + github.com/daixiang0/gci v0.11.2 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/denis-tingaikin/go-header v0.4.3 // indirect + github.com/esimonov/ifshort v1.0.4 // indirect + github.com/ettle/strcase v0.1.1 // indirect + github.com/fatih/color v1.15.0 // indirect + github.com/fatih/structtag v1.2.0 // indirect + github.com/firefart/nonamedreturns v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/fzipp/gocyclo v0.6.0 // indirect + github.com/ghostiam/protogetter v0.2.3 // indirect + github.com/go-critic/go-critic v0.9.0 // indirect + github.com/go-toolsmith/astcast v1.1.0 // indirect + github.com/go-toolsmith/astcopy v1.1.0 // indirect + github.com/go-toolsmith/astequal v1.1.0 // indirect + github.com/go-toolsmith/astfmt v1.1.0 // indirect + github.com/go-toolsmith/astp v1.1.0 // indirect + github.com/go-toolsmith/strparse v1.1.0 // indirect + github.com/go-toolsmith/typep v1.1.0 // indirect + github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/gofrs/flock v0.8.1 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect + github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect + github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe // indirect + github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e // indirect + github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect + github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect + github.com/golangci/misspell v0.4.1 // indirect + github.com/golangci/revgrep v0.5.2 // indirect + github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601 // indirect + github.com/gostaticanalysis/analysisutil v0.7.1 // indirect + github.com/gostaticanalysis/comment v1.4.2 // indirect + github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect + github.com/gostaticanalysis/nilerr v0.1.1 // indirect + github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hexops/gotextdiff v1.0.3 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jgautheron/goconst v1.6.0 // indirect + github.com/jingyugao/rowserrcheck v1.1.1 // indirect + github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect + github.com/julz/importas v0.1.0 // indirect + github.com/kisielk/errcheck v1.6.3 // indirect + github.com/kisielk/gotool v1.0.0 // indirect + github.com/kkHAIKE/contextcheck v1.1.4 // indirect + github.com/kulti/thelper v0.6.3 // indirect + github.com/kunwardeep/paralleltest v1.0.8 // indirect + github.com/kyoh86/exportloopref v0.1.11 // indirect + github.com/ldez/gomoddirectives v0.2.3 // indirect + github.com/ldez/tagliatelle v0.5.0 // indirect + github.com/leonklingele/grouper v1.1.1 // indirect + github.com/lufeee/execinquery v1.2.1 // indirect + github.com/macabu/inamedparam v0.1.2 // indirect + github.com/magiconair/properties v1.8.6 // indirect + github.com/maratori/testableexamples v1.0.0 // indirect + github.com/maratori/testpackage v1.1.1 // indirect + github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/mbilski/exhaustivestruct v1.2.0 // indirect + github.com/mgechev/revive v1.3.4 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moricho/tparallel v0.3.1 // indirect + github.com/nakabonne/nestif v0.3.1 // indirect + github.com/nishanths/exhaustive v0.11.0 // indirect + github.com/nishanths/predeclared v0.2.2 // indirect + github.com/nunnatsa/ginkgolinter v0.14.1 // indirect + github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.0.5 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/polyfloyd/go-errorlint v1.4.5 // indirect + github.com/prometheus/client_golang v1.12.1 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.32.1 // indirect + github.com/prometheus/procfs v0.7.3 // indirect + github.com/quasilyte/go-ruleguard v0.4.0 // indirect + github.com/quasilyte/gogrep v0.5.0 // indirect + github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect + github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect + github.com/ryancurrah/gomodguard v1.3.0 // indirect + github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect + github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect + github.com/sashamelentyev/interfacebloat v1.1.0 // indirect + github.com/sashamelentyev/usestdlibvars v1.24.0 // indirect + github.com/securego/gosec/v2 v2.18.2 // indirect + github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/sivchari/containedctx v1.0.3 // indirect + github.com/sivchari/nosnakecase v1.7.0 // indirect + github.com/sivchari/tenv v1.7.1 // indirect + github.com/sonatard/noctx v0.0.2 // indirect + github.com/sourcegraph/go-diff v0.7.0 // indirect + github.com/spf13/afero v1.8.2 // indirect + github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/cobra v1.7.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.12.0 // indirect + github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect + github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect + github.com/stretchr/objx v0.5.0 // indirect + github.com/stretchr/testify v1.8.4 // indirect + github.com/subosito/gotenv v1.4.1 // indirect + github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect + github.com/tdakkota/asciicheck v0.2.0 // indirect + github.com/tetafro/godot v1.4.15 // indirect + github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 // indirect + github.com/timonwong/loggercheck v0.9.4 // indirect + github.com/tomarrell/wrapcheck/v2 v2.8.1 // indirect + github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect + github.com/ultraware/funlen v0.1.0 // indirect + github.com/ultraware/whitespace v0.0.5 // indirect + github.com/uudashr/gocognit v1.1.2 // indirect + github.com/xen0n/gosmopolitan v1.2.2 // indirect + github.com/yagipy/maintidx v1.0.0 // indirect + github.com/yeya24/promlinter v0.2.0 // indirect + github.com/ykadowak/zerologlint v0.1.3 // indirect + gitlab.com/bosi/decorder v0.4.1 // indirect + go-simpler.org/sloglint v0.1.2 // indirect + go.tmz.dev/musttag v0.7.2 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.24.0 // indirect + golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea // indirect + golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833 // indirect + golang.org/x/mod v0.13.0 // indirect + golang.org/x/sync v0.4.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect + golang.org/x/tools v0.14.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + honnef.co/go/tools v0.4.6 // indirect + mvdan.cc/gofumpt v0.5.0 // indirect + mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect + mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect + mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d // indirect +) diff --git a/hack/tools/go.sum b/hack/tools/go.sum new file mode 100644 index 0000000..2cd623b --- /dev/null +++ b/hack/tools/go.sum @@ -0,0 +1,1010 @@ +4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= +4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= +4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= +4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/4meepo/tagalign v1.3.3 h1:ZsOxcwGD/jP4U/aw7qeWu58i7dwYemfy5Y+IF1ACoNw= +github.com/4meepo/tagalign v1.3.3/go.mod h1:Q9c1rYMZJc9dPRkbQPpcBNCLEmY2njbAsXhQOZFE2dE= +github.com/Abirdcfly/dupword v0.0.13 h1:SMS17YXypwP000fA7Lr+kfyBQyW14tTT+nRv9ASwUUo= +github.com/Abirdcfly/dupword v0.0.13/go.mod h1:Ut6Ue2KgF/kCOawpW4LnExT+xZLQviJPE4klBPMK/5Y= +github.com/Antonboom/errname v0.1.12 h1:oh9ak2zUtsLp5oaEd/erjB4GPu9w19NyoIskZClDcQY= +github.com/Antonboom/errname v0.1.12/go.mod h1:bK7todrzvlaZoQagP1orKzWXv59X/x0W0Io2XT1Ssro= +github.com/Antonboom/nilnil v0.1.7 h1:ofgL+BA7vlA1K2wNQOsHzLJ2Pw5B5DpWRLdDAVvvTow= +github.com/Antonboom/nilnil v0.1.7/go.mod h1:TP+ScQWVEq0eSIxqU8CbdT5DFWoHp0MbP+KMUO1BKYQ= +github.com/Antonboom/testifylint v0.2.3 h1:MFq9zyL+rIVpsvLX4vDPLojgN7qODzWsrnftNX2Qh60= +github.com/Antonboom/testifylint v0.2.3/go.mod h1:IYaXaOX9NbfAyO+Y04nfjGI8wDemC1rUyM/cYolz018= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= +github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.1.0 h1:3ZBs7LAezy8gh0uECsA6CGU43FF3zsx5f4eah5FxTMA= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.1.0/go.mod h1:rZLTje5A9kFBe0pzhpe2TdhRniBF++PRHQuRpR8esVc= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/OpenPeeDeeP/depguard/v2 v2.1.0 h1:aQl70G173h/GZYhWf36aE5H0KaujXfVMnn/f1kSDVYY= +github.com/OpenPeeDeeP/depguard/v2 v2.1.0/go.mod h1:PUBgk35fX4i7JDmwzlJwJ+GMe6NfO1723wmJMgPThNQ= +github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= +github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= +github.com/alecthomas/go-check-sumtype v0.1.3 h1:M+tqMxB68hcgccRXBMVCPI4UJ+QUfdSx0xdbypKCqA8= +github.com/alecthomas/go-check-sumtype v0.1.3/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ= +github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk= +github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alexkohler/nakedret/v2 v2.0.2 h1:qnXuZNvv3/AxkAb22q/sEsEpcA99YxLFACDtEw9TPxE= +github.com/alexkohler/nakedret/v2 v2.0.2/go.mod h1:2b8Gkk0GsOrqQv/gPWjNLDSKwG8I5moSXG1K4VIBcTQ= +github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= +github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= +github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= +github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= +github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= +github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= +github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= +github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bkielbasa/cyclop v1.2.1 h1:AeF71HZDob1P2/pRm1so9cd1alZnrpyc4q2uP2l0gJY= +github.com/bkielbasa/cyclop v1.2.1/go.mod h1:K/dT/M0FPAiYjBgQGau7tz+3TMh4FWAEqlMhzFWCrgM= +github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= +github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= +github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aNU= +github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo= +github.com/breml/bidichk v0.2.7 h1:dAkKQPLl/Qrk7hnP6P+E0xOodrq8Us7+U0o4UBOAlQY= +github.com/breml/bidichk v0.2.7/go.mod h1:YodjipAGI9fGcYM7II6wFvGhdMYsC5pHDlGzqvEW3tQ= +github.com/breml/errchkjson v0.3.6 h1:VLhVkqSBH96AvXEyclMR37rZslRrY2kcyq+31HCsVrA= +github.com/breml/errchkjson v0.3.6/go.mod h1:jhSDoFheAF2RSDOlCfhHO9KqhZgAYLyvHe7bRCX8f/U= +github.com/butuzov/ireturn v0.2.2 h1:jWI36dxXwVrI+RnXDwux2IZOewpmfv930OuIRfaBUJ0= +github.com/butuzov/ireturn v0.2.2/go.mod h1:RfGHUvvAuFFxoHKf4Z8Yxuh6OjlCw1KvR2zM1NFHeBk= +github.com/butuzov/mirror v1.1.0 h1:ZqX54gBVMXu78QLoiqdwpl2mgmoOJTk7s4p4o+0avZI= +github.com/butuzov/mirror v1.1.0/go.mod h1:8Q0BdQU6rC6WILDiBM60DBfvV78OLJmMmixe7GF45AE= +github.com/catenacyber/perfsprint v0.2.0 h1:azOocHLscPjqXVJ7Mf14Zjlkn4uNua0+Hcg1wTR6vUo= +github.com/catenacyber/perfsprint v0.2.0/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= +github.com/ccojocar/zxcvbn-go v1.0.1 h1:+sxrANSCj6CdadkcMnvde/GWU1vZiiXRbqYSCalV4/4= +github.com/ccojocar/zxcvbn-go v1.0.1/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= +github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= +github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= +github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= +github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= +github.com/daixiang0/gci v0.11.2 h1:Oji+oPsp3bQ6bNNgX30NBAVT18P4uBH4sRZnlOlTj7Y= +github.com/daixiang0/gci v0.11.2/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denis-tingaikin/go-header v0.4.3 h1:tEaZKAlqql6SKCY++utLmkPLd6K8IBM20Ha7UVm+mtU= +github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStBA= +github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= +github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw= +github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y= +github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= +github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= +github.com/ghostiam/protogetter v0.2.3 h1:qdv2pzo3BpLqezwqfGDLZ+nHEYmc5bUpIdsMbBVwMjw= +github.com/ghostiam/protogetter v0.2.3/go.mod h1:KmNLOsy1v04hKbvZs8EfGI1fk39AgTdRDxWNYPfXVc4= +github.com/go-critic/go-critic v0.9.0 h1:Pmys9qvU3pSML/3GEQ2Xd9RZ/ip+aXHKILuxczKGV/U= +github.com/go-critic/go-critic v0.9.0/go.mod h1:5P8tdXL7m/6qnyG6oRAlYLORvoXH0WDypYgAEmagT40= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= +github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= +github.com/go-toolsmith/astcopy v1.1.0 h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s= +github.com/go-toolsmith/astcopy v1.1.0/go.mod h1:hXM6gan18VA1T/daUEHCFcYiW8Ai1tIwIzHY6srfEAw= +github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= +github.com/go-toolsmith/astequal v1.1.0 h1:kHKm1AWqClYn15R0K1KKE4RG614D46n+nqUQ06E1dTw= +github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= +github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco= +github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4= +github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA= +github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA= +github.com/go-toolsmith/pkgload v1.2.2 h1:0CtmHq/02QhxcF7E9N5LIFcYFsMR5rdovfqTtRKkgIk= +github.com/go-toolsmith/pkgload v1.2.2/go.mod h1:R2hxLNRKuAsiXCo2i5J6ZQPhnPMOVtU+f0arbFPWCus= +github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= +github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw= +github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= +github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= +github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= +github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= +github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= +github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6J5HIP8ZtyMdiDscjMLfRBSPuzVVeo= +github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= +github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e h1:ULcKCDV1LOZPFxGZaA6TlQbiM3J2GCPnkx/bGF6sX/g= +github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e/go.mod h1:Pm5KhLPA8gSnQwrQ6ukebRcapGb/BG9iUkdaiCcGHJM= +github.com/golangci/golangci-lint v1.55.2 h1:yllEIsSJ7MtlDBwDJ9IMBkyEUz2fYE0b5B8IUgO1oP8= +github.com/golangci/golangci-lint v1.55.2/go.mod h1:H60CZ0fuqoTwlTvnbyjhpZPWp7KmsjwV2yupIMiMXbM= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= +github.com/golangci/misspell v0.4.1 h1:+y73iSicVy2PqyX7kmUefHusENlrP9YwuHZHPLGQj/g= +github.com/golangci/misspell v0.4.1/go.mod h1:9mAN1quEo3DlpbaIKKyEvRxK1pwqR9s/Sea1bJCtlNI= +github.com/golangci/revgrep v0.5.2 h1:EndcWoRhcnfj2NHQ+28hyuXpLMF+dQmCN+YaeeIl4FU= +github.com/golangci/revgrep v0.5.2/go.mod h1:bjAMA+Sh/QUfTDcHzxfyHxr4xKvllVr/0sCv2e7jJHA= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601 h1:mrEEilTAUmaAORhssPPkxj84TsHrPMLBGW2Z4SoTxm8= +github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= +github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= +github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= +github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= +github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= +github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= +github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= +github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= +github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= +github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= +github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= +github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY= +github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jgautheron/goconst v1.6.0 h1:gbMLWKRMkzAc6kYsQL6/TxaoBUg3Jm9LSF/Ih1ADWGA= +github.com/jgautheron/goconst v1.6.0/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= +github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= +github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= +github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= +github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= +github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= +github.com/kisielk/errcheck v1.6.3 h1:dEKh+GLHcWm2oN34nMvDzn1sqI0i0WxPvrgiJA5JuM8= +github.com/kisielk/errcheck v1.6.3/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkHAIKE/contextcheck v1.1.4 h1:B6zAaLhOEEcjvUgIYEqystmnFk1Oemn8bvJhbt0GMb8= +github.com/kkHAIKE/contextcheck v1.1.4/go.mod h1:1+i/gWqokIa+dm31mqGLZhZJ7Uh44DJGZVmr6QRBNJg= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= +github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= +github.com/kunwardeep/paralleltest v1.0.8 h1:Ul2KsqtzFxTlSU7IP0JusWlLiNqQaloB9vguyjbE558= +github.com/kunwardeep/paralleltest v1.0.8/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= +github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= +github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= +github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= +github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= +github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo= +github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4= +github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU= +github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= +github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM= +github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= +github.com/macabu/inamedparam v0.1.2 h1:RR5cnayM6Q7cDhQol32DE2BGAPGMnffJ31LFE+UklaU= +github.com/macabu/inamedparam v0.1.2/go.mod h1:Xg25QvY7IBRl1KLPV9Rbml8JOMZtF/iAkNkmV7eQgjw= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= +github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= +github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= +github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= +github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE= +github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= +github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= +github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= +github.com/mgechev/revive v1.3.4 h1:k/tO3XTaWY4DEHal9tWBkkUMJYO/dLDVyMmAQxmIMDc= +github.com/mgechev/revive v1.3.4/go.mod h1:W+pZCMu9qj8Uhfs1iJMQsEFLRozUfvwFwqVvRbSNLVw= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA= +github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= +github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nishanths/exhaustive v0.11.0 h1:T3I8nUGhl/Cwu5Z2hfc92l0e04D2GEW6e0l8pzda2l0= +github.com/nishanths/exhaustive v0.11.0/go.mod h1:RqwDsZ1xY0dNdqHho2z6X+bgzizwbLYOWnZbbl2wLB4= +github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= +github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= +github.com/nunnatsa/ginkgolinter v0.14.1 h1:khx0CqR5U4ghsscjJ+lZVthp3zjIFytRXPTaQ/TMiyA= +github.com/nunnatsa/ginkgolinter v0.14.1/go.mod h1:nY0pafUSst7v7F637e7fymaMlQqI9c0Wka2fGsDkzWg= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= +github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/gomega v1.28.1 h1:MijcGUbfYuznzK/5R4CPNoUP/9Xvuo20sXfEm6XxoTA= +github.com/onsi/gomega v1.28.1/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/copy v1.11.0 h1:OKBD80J/mLBrwnzXqGtFCzprFSGioo30JcmR4APsNwc= +github.com/otiai10/copy v1.11.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= +github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polyfloyd/go-errorlint v1.4.5 h1:70YWmMy4FgRHehGNOUask3HtSFSOLKgmDn7ryNe7LqI= +github.com/polyfloyd/go-errorlint v1.4.5/go.mod h1:sIZEbFoDOCnTYYZoVkjc4hTnM459tuWA9H/EkdXwsKk= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/quasilyte/go-ruleguard v0.4.0 h1:DyM6r+TKL+xbKB4Nm7Afd1IQh9kEUKQs2pboWGKtvQo= +github.com/quasilyte/go-ruleguard v0.4.0/go.mod h1:Eu76Z/R8IXtViWUIHkE3p8gdH3/PKk1eh3YGfaEof10= +github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= +github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= +github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU= +github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJHMLuTw= +github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50= +github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= +github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= +github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= +github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= +github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= +github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= +github.com/sashamelentyev/usestdlibvars v1.24.0 h1:MKNzmXtGh5N0y74Z/CIaJh4GlB364l0K1RUT08WSWAc= +github.com/sashamelentyev/usestdlibvars v1.24.0/go.mod h1:9cYkq+gYJ+a5W2RPdhfaSCnTVUC1OQP/bSiiBhq3OZE= +github.com/securego/gosec/v2 v2.18.2 h1:DkDt3wCiOtAHf1XkiXZBhQ6m6mK/b9T/wD257R3/c+I= +github.com/securego/gosec/v2 v2.18.2/go.mod h1:xUuqSF6i0So56Y2wwohWAmB07EdBkUN6crbLlHwbyJs= +github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= +github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= +github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= +github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt95do8= +github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= +github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= +github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= +github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00= +github.com/sonatard/noctx v0.0.2/go.mod h1:kzFz+CzWSjQ2OzIm46uJZoXuBpa2+0y3T36U18dWqIo= +github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= +github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= +github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= +github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= +github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= +github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= +github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= +github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= +github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= +github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8= +github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c/go.mod h1:SbErYREK7xXdsRiigaQiQkI9McGRzYMvlKYaP3Nimdk= +github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM= +github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg= +github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= +github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= +github.com/tetafro/godot v1.4.15 h1:QzdIs+XB8q+U1WmQEWKHQbKmCw06QuQM7gLx/dky2RM= +github.com/tetafro/godot v1.4.15/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= +github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4= +github.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg= +github.com/tomarrell/wrapcheck/v2 v2.8.1 h1:HxSqDSN0sAt0yJYsrcYVoEeyM4aI9yAm3KQpIXDJRhQ= +github.com/tomarrell/wrapcheck/v2 v2.8.1/go.mod h1:/n2Q3NZ4XFT50ho6Hbxg+RV1uyo2Uow/Vdm9NQcl5SE= +github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= +github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= +github.com/ultraware/funlen v0.1.0 h1:BuqclbkY6pO+cvxoq7OsktIXZpgBSkYTQtmwhAK81vI= +github.com/ultraware/funlen v0.1.0/go.mod h1:XJqmOQja6DpxarLj6Jj1U7JuoS8PvL4nEqDaQhy22p4= +github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqzi/CzI= +github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= +github.com/uudashr/gocognit v1.1.2 h1:l6BAEKJqQH2UpKAPKdMfZf5kE4W/2xk8pfU1OVLvniI= +github.com/uudashr/gocognit v1.1.2/go.mod h1:aAVdLURqcanke8h3vg35BC++eseDm66Z7KmchI5et4k= +github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= +github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= +github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= +github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= +github.com/yeya24/promlinter v0.2.0 h1:xFKDQ82orCU5jQujdaD8stOHiv8UN68BSdn2a8u8Y3o= +github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= +github.com/ykadowak/zerologlint v0.1.3 h1:TLy1dTW3Nuc+YE3bYRPToG1Q9Ej78b5UUN6bjbGdxPE= +github.com/ykadowak/zerologlint v0.1.3/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +gitlab.com/bosi/decorder v0.4.1 h1:VdsdfxhstabyhZovHafFw+9eJ6eU0d2CkFNJcZz/NU4= +gitlab.com/bosi/decorder v0.4.1/go.mod h1:jecSqWUew6Yle1pCr2eLWTensJMmsxHsBwt+PVbkAqA= +go-simpler.org/assert v0.6.0 h1:QxSrXa4oRuo/1eHMXSBFHKvJIpWABayzKldqZyugG7E= +go-simpler.org/assert v0.6.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= +go-simpler.org/sloglint v0.1.2 h1:IjdhF8NPxyn0Ckn2+fuIof7ntSnVUAqBFcQRrnG9AiM= +go-simpler.org/sloglint v0.1.2/go.mod h1:2LL+QImPfTslD5muNPydAEYmpXIj6o/WYcqnJjLi4o4= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.tmz.dev/musttag v0.7.2 h1:1J6S9ipDbalBSODNT5jCep8dhZyMr4ttnjQagmGYR5s= +go.tmz.dev/musttag v0.7.2/go.mod h1:m6q5NiiSKMnQYokefa2xGoyoXnrswCbJ0AWYzf4Zs28= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea h1:vLCWI/yYrdEHyN2JzIzPO3aaQJHQdp89IZBA/+azVC4= +golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= +golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833 h1:jWGQJV4niP+CCmFW9ekjA9Zx8vYORzOUH2/Nl5WPuLQ= +golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.4.6 h1:oFEHCKeID7to/3autwsWfnuv69j3NsfcXbvJKuIcep8= +honnef.co/go/tools v0.4.6/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= +mvdan.cc/gofumpt v0.5.0 h1:0EQ+Z56k8tXjj/6TQD25BFNKQXpCvT0rnansIc7Ug5E= +mvdan.cc/gofumpt v0.5.0/go.mod h1:HBeVDtMKRZpXyxFciAirzdKklDlGu8aAy1wEbH5Y9js= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= +mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d h1:3rvTIIM22r9pvXk+q3swxUQAQOxksVMGK7sml4nG57w= +mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d/go.mod h1:IeHQjmn6TOD+e4Z3RFiZMMsLVL+A96Nvptar8Fj71is= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/hack/tools/tools.go b/hack/tools/tools.go new file mode 100644 index 0000000..0887b5a --- /dev/null +++ b/hack/tools/tools.go @@ -0,0 +1,11 @@ +//go:build tools +// +build tools + +// This package imports things required by build scripts, to force `go mod` to see them as dependencies +package tools + +import ( + _ "github.com/golangci/golangci-lint/cmd/golangci-lint" + _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc" + _ "google.golang.org/protobuf/cmd/protoc-gen-go" +) diff --git a/internal/log/log.go b/internal/log/log.go new file mode 100644 index 0000000..8fa9cba --- /dev/null +++ b/internal/log/log.go @@ -0,0 +1,56 @@ +package log + +import ( + "context" + "log/slog" + "os" +) + +var logger = slog.New(slog.NewJSONHandler(os.Stdout, nil)) + +func With(args ...any) *slog.Logger { + return logger.With(args...) +} + +func Enabled(ctx context.Context, level slog.Level) bool { + return logger.Enabled(ctx, level) +} + +func Log(ctx context.Context, level slog.Level, msg string, args ...any) { + logger.Log(ctx, level, msg, args...) +} + +func LogAttrs(ctx context.Context, level slog.Level, msg string, attrs ...slog.Attr) { + logger.LogAttrs(ctx, level, msg, attrs...) +} + +func Debug(msg string, args ...any) { + logger.Debug(msg, args...) +} + +func DebugContext(ctx context.Context, msg string, args ...any) { + logger.DebugContext(ctx, msg, args...) +} +func Info(msg string, args ...any) { + logger.Info(msg, args...) +} + +func InfoContext(ctx context.Context, msg string, args ...any) { + logger.InfoContext(ctx, msg, args...) +} + +func Warn(msg string, args ...any) { + logger.Warn(msg, args...) +} + +func WarnContext(ctx context.Context, msg string, args ...any) { + logger.WarnContext(ctx, msg, args...) +} + +func Error(msg string, args ...any) { + logger.Error(msg, args...) +} + +func ErrorContext(ctx context.Context, msg string, args ...any) { + logger.ErrorContext(ctx, msg, args...) +} diff --git a/internal/quake/client/httpserver.go b/internal/quake/client/httpserver.go new file mode 100644 index 0000000..f90d025 --- /dev/null +++ b/internal/quake/client/httpserver.go @@ -0,0 +1,146 @@ +package client + +import ( + "html/template" + "io" + "net" + "net/http" + "net/url" + "time" + + "github.com/labstack/echo/v4" + "github.com/labstack/echo/v4/middleware" + "github.com/prometheus/client_golang/prometheus/promhttp" + "github.com/soheilhy/cmux" + + quakenet "github.com/ChrisRx/quake-kube/pkg/quake/net" +) + +type Config struct { + ContentServerURL string + ServerAddr string +} + +type HTTPClientServer struct { + cfg *Config + e *echo.Echo +} + +func NewHTTPClientServer(cfg *Config) (*HTTPClientServer, error) { + e := echo.New() + e.Use(middleware.Logger()) + e.Use(middleware.Recover()) + e.Use(middleware.CORSWithConfig(middleware.CORSConfig{ + AllowOrigins: []string{"*"}, + AllowHeaders: []string{echo.HeaderOrigin, echo.HeaderContentType, echo.HeaderAccept}, + })) + + static, err := LoadStaticFiles() + if err != nil { + return nil, err + } + data, err := static.ReadFile("index.html") + if err != nil { + return nil, err + } + templates, err := template.New("index").Parse(string(data)) + if err != nil { + return nil, err + } + e.Renderer = &TemplateRenderer{templates} + + e.GET("/", func(c echo.Context) error { + m, err := quakenet.GetInfo(cfg.ServerAddr) + if err != nil { + return err + } + needsPass := false + if v, ok := m["g_needpass"]; ok { + if v == "1" { + needsPass = true + } + } + return c.Render(http.StatusOK, "index", map[string]interface{}{ + "ServerAddr": cfg.ServerAddr, + "NeedsPass": needsPass, + }) + }) + + e.GET("/metrics", echo.WrapHandler(promhttp.Handler())) + + e.GET("/info", func(c echo.Context) error { + m, err := quakenet.GetInfo(cfg.ServerAddr) + if err != nil { + return err + } + return c.JSON(http.StatusOK, m) + }) + + e.GET("/status", func(c echo.Context) error { + m, err := quakenet.GetStatus(cfg.ServerAddr) + if err != nil { + return err + } + return c.JSON(http.StatusOK, m) + }) + + e.GET("/*", echo.WrapHandler(http.FileServer(static))) + + // Quake3 assets requests must be proxied to the content server. The host + // header is manipulated to ensure that services like CloudFlare will not + // reject requests based upon incorrect host header. + csurl, err := url.Parse(cfg.ContentServerURL) + if err != nil { + return nil, err + } + g := e.Group("/assets") + g.Use(middleware.ProxyWithConfig(middleware.ProxyConfig{ + Balancer: middleware.NewRoundRobinBalancer([]*middleware.ProxyTarget{ + {URL: csurl}, + }), + Transport: &HostHeaderTransport{RoundTripper: http.DefaultTransport, Host: csurl.Host}, + })) + return &HTTPClientServer{ + cfg: cfg, + e: e, + }, nil +} + +func (h *HTTPClientServer) Match() []cmux.Matcher { + return []cmux.Matcher{ + cmux.Any(), + } +} + +func (h *HTTPClientServer) Serve(l net.Listener) error { + s := &http.Server{ + Handler: h.e, + ReadTimeout: 5 * time.Minute, + WriteTimeout: 5 * time.Minute, + MaxHeaderBytes: 1 << 20, + } + return s.Serve(l) +} + +type HostHeaderTransport struct { + http.RoundTripper + Host string +} + +func (t *HostHeaderTransport) RoundTrip(req *http.Request) (*http.Response, error) { + req.Host = t.Host + return t.RoundTripper.RoundTrip(req) +} + +type TemplateRenderer struct { + *template.Template +} + +func (t *TemplateRenderer) Render( + w io.Writer, + name string, + data interface{}, + c echo.Context, +) error { + return t.ExecuteTemplate(w, name, data) +} diff --git a/internal/quake/client/proxyserver.go b/internal/quake/client/proxyserver.go new file mode 100644 index 0000000..08a97dc --- /dev/null +++ b/internal/quake/client/proxyserver.go @@ -0,0 +1,140 @@ +package client + +import ( + "bytes" + "context" + "fmt" + "log" + "net" + "net/http" + "time" + + "github.com/gorilla/websocket" + "github.com/soheilhy/cmux" +) + +var DefaultUpgrader = &websocket.Upgrader{ + ReadBufferSize: 1024, + WriteBufferSize: 1024, + CheckOrigin: func(r *http.Request) bool { + return true + }, +} + +// WebsocketUDPProxy +type WebsocketUDPProxy struct { + Upgrader *websocket.Upgrader + + addr net.Addr +} + +func NewProxy(addr string) (*WebsocketUDPProxy, error) { + host, port, err := net.SplitHostPort(addr) + if err != nil { + return nil, err + } + proxyTarget := addr + if net.ParseIP(host).IsUnspecified() { + // handle case where host is 0.0.0.0 + proxyTarget = net.JoinHostPort("127.0.0.1", port) + } + raddr, err := net.ResolveUDPAddr("udp", proxyTarget) + if err != nil { + return nil, err + } + return &WebsocketUDPProxy{addr: raddr}, nil +} + +func (w *WebsocketUDPProxy) Match() []cmux.Matcher { + return []cmux.Matcher{ + cmux.HTTP1HeaderField("Upgrade", "websocket"), + } +} + +func (w *WebsocketUDPProxy) Serve(l net.Listener) error { + s := &http.Server{ + Handler: w, + } + return s.Serve(l) +} + +func (w *WebsocketUDPProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + + upgrader := w.Upgrader + if w.Upgrader == nil { + upgrader = DefaultUpgrader + } + upgradeHeader := http.Header{} + if hdr := req.Header.Get("Sec-Websocket-Protocol"); hdr != "" { + upgradeHeader.Set("Sec-Websocket-Protocol", hdr) + } + ws, err := upgrader.Upgrade(rw, req, upgradeHeader) + if err != nil { + log.Printf("wsproxy: couldn't upgrade %v", err) + return + } + defer ws.Close() + + backend, err := net.ListenPacket("udp", "0.0.0.0:0") + if err != nil { + return + } + defer backend.Close() + + errc := make(chan error, 1) + + go func() { + for { + _, msg, err := ws.ReadMessage() + if err != nil { + m := websocket.FormatCloseMessage(websocket.CloseNormalClosure, fmt.Sprintf("%v", err)) + if e, ok := err.(*websocket.CloseError); ok { + if e.Code != websocket.CloseNoStatusReceived { + m = websocket.FormatCloseMessage(e.Code, e.Text) + } + } + errc <- err + ws.WriteMessage(websocket.CloseMessage, m) + return + } + if bytes.HasPrefix(msg, []byte("\xff\xff\xff\xffport")) { + continue + } + if err := backend.SetWriteDeadline(time.Now().Add(5 * time.Second)); err != nil { + errc <- err + return + } + _, err = backend.WriteTo(msg, w.addr) + if err != nil { + errc <- err + return + } + } + }() + + go func() { + buffer := make([]byte, 1024*1024) + for { + n, _, err := backend.ReadFrom(buffer) + if err != nil { + errc <- err + return + } + if err := ws.WriteMessage(websocket.BinaryMessage, buffer[:n]); err != nil { + errc <- err + return + } + } + }() + + select { + case err = <-errc: + if e, ok := err.(*websocket.CloseError); !ok || e.Code == websocket.CloseAbnormalClosure { + log.Printf("wsproxy: %v", err) + } + case <-ctx.Done(): + return + } +} diff --git a/internal/quake/client/static.go b/internal/quake/client/static.go new file mode 100644 index 0000000..5b3bdc8 --- /dev/null +++ b/internal/quake/client/static.go @@ -0,0 +1,38 @@ +package client + +import ( + "embed" + "io" + "io/fs" + "net/http" + + fsutil "github.com/ChrisRx/quake-kube/internal/util/fs" +) + +//go:embed static +var static embed.FS + +type staticFiles struct { + http.FileSystem +} + +func LoadStaticFiles() (*staticFiles, error) { + files, err := fs.Sub(static, "static") + if err != nil { + return nil, err + } + + // TODO(ChrisRx): I don't remember why I was stripping the modified time out + // anymore lol + return &staticFiles{fsutil.StripModTime(http.FS(files))}, nil +} + +func (s *staticFiles) ReadFile(path string) ([]byte, error) { + f, err := s.Open(path) + if err != nil { + return nil, err + } + defer f.Close() + + return io.ReadAll(f) +} diff --git a/internal/quake/client/static/browserconfig.xml b/internal/quake/client/static/browserconfig.xml new file mode 100644 index 0000000..d25b18f --- /dev/null +++ b/internal/quake/client/static/browserconfig.xml @@ -0,0 +1,11 @@ + + + + + + + + #ffffff + + + diff --git a/internal/quake/client/static/favicon.ico b/internal/quake/client/static/favicon.ico new file mode 100644 index 0000000..5595172 Binary files /dev/null and b/internal/quake/client/static/favicon.ico differ diff --git a/internal/quake/client/static/game.css b/internal/quake/client/static/game.css new file mode 100644 index 0000000..5577261 --- /dev/null +++ b/internal/quake/client/static/game.css @@ -0,0 +1,63 @@ +html, body { + height: 100%; + padding: 0; + margin: 0; + background: #000; +} + +#bg { + position: absolute; + top: 0; + left: 0; + bottom: 24em; + right: 0; + overflow: hidden; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAKACAYAAAAMzckjAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAbm1JREFUeNrsnVtyG0l6cL9u9/y+hO1Gh2dibhFW0faDHX4QtAKVVtDQCgSuQOQKCK6A1AoIrUDUClRcgaAn2xG2VbKfbIejoZ4J3239zGbmoAQWgLrkteqcCAR1BQpVeTn5ZeaXX3z69EkAAAAAYDx8yS0AAAAAQAABAAAAAAEEAAAAAAQQAAAAABBAAAAAAEAAAQAAAAABBAAAAAAEEAAAAAAQQAAAAABAAAEAAAAAAQQAAAAABBAAAAAAEEAAAAAAQAABAAAAEEAAAAAAQAABAAAAAAEEAAAAAAQQAAAAABBAAAAAAEAAAQAAAAABBAAAAAAEEAAAAAAQQAAAAABAAAEAAAAAAQQAAAAABBAAAAAAEEAAAAAAQAABAAAAEEAAAAAAQAABAAAAAAEEAAAAAAQQAAAAABBAAAAAAEAAAQAAACAwX3ELACAxJrevaeX3U/1nhq+3/n6b7X9/iPXta7Xn79Xffdzz70v9AgCIhi8+ffrEXQCAGMi3BK0qcpl+pU5VBo04VoWxoBgAAAIIAEPCiJ0Rvcdb4gcbVhUx/FgRQwQRABBAAIiOTL+U7D3QP82fgR2MGFblsBSmmQEAAQQAD+Rbotd2bR3Yx8jgu4okrrktAIAAAkBbzKYLJXwPZRPVgzQotQi+04KIFAIAAggA98i15D3Uv0b2hiuFN/pnwS0BQAABYDxMKsL3WNiQMWaKihSqXxMlBEAAAWBgwve4In4AdZRaBI0QltwSAAQQANJhhvCBJSG8FiKEAAggAESJ2bDxrTClC+5Q08WvtRSuuB0ACCAA+GWyJXwZtwQ8s5ZNdPBaiA4CIIAA4AQleWZqd8btgMhQEcGXWgZLbgcAAggA3TFTu8+EtXyQDqUWwZfCVDEAAggAjaVPCZ+K8mXcDkAGAQABBBgmSvSeI32ADAIAAggwfOlTwsf0LoxVBpUILoU1gwAIIMDAmVSkL+d2APyAiga+EHYTAyCA+0BgIVEWcjfNO+FWAOxkKZtcgwB2BeiLL0b9/b+kCAAE4WvkD+Ag89vXq9vXez1oyrglAJYEmAggQBDUOr+33AaA1hSyWS8I0F2ARh4BRAABwvFW2PBhC7VurLpeTP363Y5/u5Z2u07VM9oVrX249XcTnqk31HN8IWwcAQQQAQRIjJPb1wW34aCkqZ8ft/6srcSFoiqP1V8/biCX0JxrLYMFtwIQQAQQIHZUx//dyAWvvH190D+rr7GRbb0ebP0emqHKzrmwgxgQQAQQIHLUAvchn+VrJO+dbKZpCx57a6ZaBKcVOcy5LXsHGEwPAwKIAAJEy/z2dTWA71FqwXtXkb7QU7SHplcPrdfbXldYJxmhv2NWkcGHFVGEDUoCzxFBQAARQIDY+E7SWgdWlb2igSjZkhyRz6Nej1vInC+278VN5ddF5f65lpFc3w8jhWxMubv/50IEGhBABBAgElQEcB7ptZko140j2TPiZn5+XZGVfCRSYsTxY+X+urrPuZbCXMa7+UTdc3PSCCCACCACCBCMmHICljXCZwMlHJl+mdQpOY++kayYlDalfhUWy516Pa48nzGh7qWKCC4pZgggAogAAoTifaAOWMnFdUX4Soui91jYxeryuRlRtyWGmX5+YxNCRBABRAARQIBg+MwJWBW+PhE+JQmsM4uLlXy+GaePFBoh/FbGMWWMCCKACCACCOAd1dm+d9ixGenruu6pOl2I7KUrhX2kvyqDQ37+iCACiAAigABesZkTsCp8ZcfOPq8IH6dVDItCNlHgouOAxQjhUPNYqnpzKmwWQQARQAQQwDFz6Z4T0CRYfi3dTkGoCl/Oo0AI23Sgt+3wrCKDkwHeG9LHIIAIIAII4JQ2OQHNBg4jfW2Y6s4a4YN9QqjK1apNBzpgGVT35FhIKI0AIoAIIIADDuUE7Cp9k4rwDTFKA+6oRpeLqgAd6kAHKoNL4WQRBBABRAABLLMrJ6CRvmXL9zIdMJs2wBYrMwC57UAbbyipyOB8IFKskklfittTcAABRAARQBgRJifgSjYnFjTtZKpRvoxbCY4pdfm8ue1MG0Wkb9tsE41+JukvP1D18lTYMYwAIoAIIIAFcml3XuyQF+BDWjL0Q6S6hQyqQcpcy2DKA5aVFsGCYoAAIoAIIIBLkD5IXga32u9ci+A84e+91CLItDACiAAigADWmFY6SKQPUpPBF9trBne03xNdxp9LmlFBsz5wwaNHABFABBCgK5kMY4rMdwdctzlB/dnHHu/7tdRvpiFRdnPK29fL29fytvMtG7TfuRbBFJNNMy2MACKACCBAK4a0SN5WR7rWr3cVkSgPCF8oqkKYVcT9of7zibAr2zzXppuczEDoeYKyvRSmhRFABBABBDggDibaMaaIkhG8G/37YuvnkMm3fj4eoSD+Zoq4ocgrETyTtCLi7BZGABFABBDgM0y07/nAO30TpVOvD/pnKSTT3UemX6pcPNA/hz7drMrDuTSLCuZaBPOEvp8a1HCaCAKIACKAMPLO/UyGGe2ril4hmwgf2Bs0GBl8WPn10AYMTaOCpi7NE/p+SnIXFGUEEAFEAGE8qE5qSGv7jOy90z8LHnEw8oFKoSpTP2wcGdigStWXY4lr/SoCiAAigAAWST2thcGcCftO/0T20pDCXEthLmlHm0stgoeOX1Pf8UTS2TBCNBABRAARQBgYme6E5ol2vEb4bmQzlQtpM9Ui+DhhITTTw+eyfy1dSiJINBABRAARQBhIJ2vED+EDhNAdS7mLChYDEUGigQggAogAQoKoDjS1XYlK8l4LU7qwEUJzzGBKawgLLU9DEEGigQggAtiE//u//6MUA+LXHBPlU9LXJNUGjBeTouixpLOxoqkInmkZjLmequ9xSTF0x5dffokAIoAAgxa/Usvejf4Jn8vAtMV9LEd8r6oymEV+reaUkeWef5NJ/OljlMg+ZaCGACKACCAgfm2l76UMeyopq8hINUnygy1JcX26RrH1+5stGVnv+Hepou7lswRkUNWD0wMDH3X9VxHXZ1V2jhm8IYAIIAIIiN8YpM/IXFXchnSWbqlf5nzjdUUUk3l2qgO9bYNTkEEl3oemhlW9voi4bF3q70A0EAFEABFAQPxan6OaAuzs2ghi9ei86E5U2e5AKzI4lzjXDDYRwbnEe9YwG0QQQAQQAQQPZDoiMIvw2kykb2jTQkog3lL09gr/9pnKRYwd6G3bbHYTzyMVwX1n8sa8Y1iVATWtvaQ6IIAIIIB98YtxcfhKNkdiDXUaKL99vaEItioTj2LuQG/baLOb+LnEN72q6tK+hNIxDwKXWgSZEkYAu31/igDAZ6P+hdxFoGKRv7Vu6B/p16FjsIYggNBOAGPvZNe3r+Xty5ThmAYwc13fF1If6VNiqHbhPpH4doDP9WBpSjUABBCgf0dwJnFM+Zi1PkcyrjU/DyiKrbhJqsP58svV7Su2cm3yAr7fM/Ar9DXHtgljqiVwTlWAtjAFDGMnl7g2eCxlWBs62vJGiAK2QUlJGVDobLTfsR2dqOreqexeW5lJnNPCl/q6wVP5RQARQEiTiW7EY+h0VAf+UoY/vduE7yS982hDlpujlDvQrfbbbLx4JnHswL3WQrVLsGe6DckiKhNKXp/QjiCAjb4/RQBGyEL2T/f4bKzNdNiCRvs3EgDNy8+QWOt6EMv0sBI8sz5wlyCadbmxMNVtG+sCAQEEqJBLHOv8Cj1KNwviYfN8oDk3A/5uS10/nkjY01Oq6wPzHdJ6qq8zFiGfSFwb2QABBAjaIKqjnkLvmFOd2lEEnVqsZNyC1gOJMXzHJ7reLAOXzTe6HZnsuE4lrOcR3bsr/QJAAGGUzCX8dK8Rv32JZwEBbMuYNgqVslkuEVIETXtysuPvF1oEY3k2cy2uLK2Ae7AJBIYsE6EPeF/K/iSz8DmvxP7Oyrrj09SffbTw3l9LfUTZR5kr5C4yFjaCYHcTSNv6bXYOh5Kb4sCgTsngWUSDBY6Qs1x+EUAEEOLjRMKu80P8utEkBYwROvV6p/+srNzrcuu+Z3I/sjiR/ksBioZ/Vv386q8f95TFc9m9OWEMAlh9lqGPbNv3LKZ6IBrDpgxVZ54Ky08QQAQQBkjoxhbx6y+ARvI+VmTOnH9bfc6THULVR6pssi2lH7YkcTsymVd+msjidI/URLGONAIBrIp2yOMb90XYzEaSk0jq2bGw+QwBRABhQCwk3HQL4mcXI3ZGgPpGy2LGiKKR3lXl90YejAw+1PdF3YcvhtCBOmi/Q4vgvmhgrgeoWQSPjqTRCCACCIOQhVcSJupXCBs7bIie6hgfVH4Nn8vhTeXXxZA6UIfttypLoU7rOBQNvJI4ThFZ6utEABFABBCSI9Rav0KP9AseQasOOdc/H8v+6U3YTzRphCIWQEMu4Y56VBG2XUmi51pQQ9eBUZ8cggAigJAeqtF8FaBRL7X4LXkEB5/PVD8fZM8+Qc//TUwADaGObVOivmuWIJYNIkoCn8oIZzIQQAQQ0mImu5OxukKNjl9IBLsuIyXTsvdQ/+QYKrdl8ZuhdKAB2m9Vh33vGF5rCbzeMViK4UxydY0xnWaCACKACCAEbyiXcjeVwzm9nz8LJXqPtZBn3BJvKIl4igAOri2ZS/gpYXVdKol1iQAigAggxEKIqZKVbqwLbv9vnoGSvW9lOBG+Ls82Cyy8UeT/S1wAq2X6QvwuJSm1wK8iaee2BXVUm0IQQAQQ4uZEN9I+R8Gqk70c+X03Ub5vtfjFuoavlE3E4maH3K3F/dRWvkMSH1R+bUM0ojpHOnEBNMzFf/Rt1waRkNHJ0e0IRgARQIhXQHynS1jKuKd7J7KJ8s0iuSYjeCZPnpGfVcLPyWyKMT8fVoT7YJs9pA40ovY7RLLmay1du6aErwLLKAKIAMbN//7v/6JKw0N1jGqXb+ZRMo5lnNO9sUjfSr8+6OfgI2oX6/OYyiaKWN1Fre7Ho5gu9rd+67eG1n4rCb8Qf9Owqu3ZNyX8RtxGJkd9Kkjf8osAIoBgF58jX4WPNVUmunAj9TsBxyR9RuxMcuOVcEB902eWxXavBiiAhoX4PVlo35TwG0dCOvoj4RBABBDi6eB8rn0pdKO7cvydqgfVK+E5CniPjfTNPX7mSt/rd8geHWhi7XemB6O5p89byu4lKFcW6+0oU74ggAggxNvQ+jrOzdcmj7nULyz3vYg/0wI6Fz+L3NV3u9E/C4o2HegA2m+fJw7tO0ZuLv1nR5A/BBABhGjItfz5khPXZ/fmsn8NUaEbYJeYKd5n4j56oTqS1wgfHejA2+9M/EUD9yWO7tNeIn8IIAIIUY2sfaR48RH1y6T54fOujvJS1+A62ldq0TPSR4JsOtAxtd8+o4G71gV2yRc46jN/EUAEEOLC5pqWQw2fy3MuJ5VOoSlLsZtza6bFL3d4D19q4SN6AGMWQDPQ8hUNXEr9usA2m0OQPwQQARwhKiJlIjWx4HJX2zaud/j2OWC+bxRwogX6ubhJl6Omn8yu5ZKqBAjgPRbiZ6fwPoE7NJAu9AAY+UMAEcARYRqGmHKH+chrJbI/t1YsEYCucpqJu2neaz1guKbDAASwcZvmI2fpvvV7u0R0KSM83QMBbM6XFIFBy59poE4iuKaZJ/lbauF1JX+qsX0r/ad/nre8F0Y63+vnaes+mjOPv9HSvET+YAS8ETtTuGaAvXR8vWbmZL6jTTpG/qAtRACHLX/V0eNRwI59Lu6TO6+1yLhqiF0c1N4kEWuuZdFmwuZS7tb0LYXpXehBohHAanukNlmcW2obZ/p9XQ9yd20OMZ//Qtwnt6f8IoAIYGTsE61QI0Ifmz1cbvRweUZoKbsTQ+f6c3OLn7eUzWYOgLEKoIqiZ1v10NZRkOp9feQ03dWeT4QIPgLYEKaAxyF/5u+nHq9n4kn+1Ej4kSP5U/L1VtxNoWc190d95huxN0VVymaKd6znHQNU28Gsph6q+nZhqb49Ej+J5uvyASJ/gAAif7VceLqefetVbGGSpZ46uv4L/R0yx/fqof45tSx+KkKgFo0f6c6IjgFg/67dEz3gszFQVu2S6923vtZVAwIIkTKT5uvrcnEfkTOjaZfRRpMWYengvafiNupXjRSoDuKFfn42NpaYhNdHQrQPoG6gnHms/2o3vcsNadWB45THC21hDWDadEmr4nJDiI80L0vZfWB6XxbiPq+XkTT1PS4sCXlZeU8AbyS2BvC9tIvoF2InijexWNf3tSsc8+a5/KYOEcBxyZ9pjM4iup42KPE7diB/mR71u5a/cx0RmOjOqG+HUMhmmhf5A9jNXNov58h1Pc0tyJmr5SrVdp1IILSCCGCaGIHoI1s2pyZUA/lK3MnfWo/EC0cdw4VjcS10B5Brycx6vp+aWnohTPFCYBKKAL7vWe8uLQmcj7bSZTosyi8CiAAGlj8bIz0lD08sCZTLHH+uUryYXcozh9deyiZieWEhkqAa9XMhdx8ggG2YaemKpS3KxH2qmCY5Rim/TAFDYthqOHIL8uNa/q61pNoWHrPQ26X8meneZ9J/g4dqyM3GDuQPoB3PI2s3SnG3ic3gIwUXIIDgkb7nz27TZ+rTtfxdips0CibVQ+bougvZbLLpu84P8QPoP9C12WZO9CC8b0otsy7wHAkEBBAOsXBQmTPplu7Atfy5WDBtq+He16A/1dd91VOulUQ+QvwArNR7FxkDVLtpY9PbQtye0IQEwk6SXwP4P//zP2N4Tq6F66iFaLi8FlepDKZa/jJH132txU/dmz47iQsdEShomiAFvvrqq5jb75NK/bQ9e2K7zXKdRYE1gQ7KLwKIALrGrDtxSSHNNoS4lD8loE8dyJ+6Zle7fEvZ5CS86iGYpZDHDxBAm2S63Zzo9u1U/9mVo7ZAvX/f49+m+vpcbQ5BAhHAz2AKOG4yPSp0jRoZH1rY7FL+lPS5yJh/4bDBX2ppfizdj4yrntxBwwxgj2q9z2VzxJuqa9cOPs9GW2NOOFo5vCdzigYYiADGi+/EnqWWsLVn+bsWN8mdzYja9rTKunK9faJ+S3F3ogmAFyKNAJ7I7rW+K11/M0eDQxupYlyfHEIk0FL5TR0igHGPYH1mdd8lIi7lbyluD0w3I2pb72/O9uwT9Stks8ED+QOwP3A+OzAodBkNrL5/30GmK0kjEggIYMQsxG2Ouqai5Fr+jj19t76fYxrkF1r8Tnq8B+d1ArgdODeJ6p3puuzieMmJlsC+kqWu69LhfUICEUCIjLm4P5M2tPwde5I/w3WPzzPrEzPpHvW7FNb5Abhm1nLgbKJ1E13HCweS1Tft1KnDthIJRAAhIqbiLk9dHesdo1/X8hdChJYdGtJz/X9edZRyI9es9QPw16a1way3U6+nYj8x84n0P/u3S9uFBMJB2AQSD2baIPPYUNZNR7rMRxXD4uMLOTyFa5I6Z9I9hYzqSBY0MTBkItwE0mcDhan3RoxstsU21iO7HJiraysov+OCCGA82G5wDvF0hPKnOD1wHaoRNGf4dtklaKaMkT8A/1TX2pYd5FG1f7muwzY3iKi29b302xyyFLub2qrYOmMeEEBoiZIFn5s+jmtGe67kb60b02VE93uXjJ5rQXzVMYJwLm7yGQJAO8xArssmijPdBtg+krIqmH2+lwsJ9J12DCKAKeDw5OIn2bOhLmO9q+lnV0e72W7wTNTATB91ifodI34wNiI/Cq7axnaZYTFTwmsHg+O+MyIuB+xHMpI1y0wBQ0gyPdL0xXKH/HXd3Zqq/FWvb6l/fivdpnyJ+gHETSHdpnRN2zjTUlRYvCbV1pz0+P+2c5xuf+cJxWb4EAEMS9+EoW24ls0C5yp9pyRSlD8bz6GU+ql0gNGQSASwyqzjQM+kkjrrKW51g/I+O3xdRQLNWmbK74AhAhiOC4/ytysZ8hXy9wMvOzTaLvKGAYD7gXCXujvTovVS7KZkmUu/nb2uIoFTcbfjGBDAUTOzPIo8JGR1x60txH7+pxTlT3EpzaaHzFpBjnEDSJdSt1Ntc/6ZaJvZ2GarDZhLvyieKwlU13VBcRkuTAH7J5NN9nkf8lcnZH1HnbtI+ZDxQ7vg2OgBsEWCU8Db5NItUbNJJ2Vz52xfkTMnm9Cueyq/qUME0D9d1p905VTqc/0hf/WyvCuytxTO8AUYIoV02+BhTg95YrHd67uez8a557v6rJyiggBCPxYeK9JlTcNkGhjkb3cDelojhUz5AgwXM1PSdkp4rtvTutRaoSRw6UgCSRQ9QJKfAv7v//7vVC41F3/5/up2/LpK9DnE6QE1sp9J/WkpAKD50Y9+NLT2u8suYRN5szm70nc6eC72Z3pcrTVMtvwigAhgE3ye87urkr4S+6eNDPm824kQ9QMYmwCKbPKzthksmyhiJvaW+fQVrhOxv4mj0NdE+R0ATAH7wdc5v7vWsV04kL+lDPu8W+QPYJyU0n5tXzWBsq0o2bRn4OBS7M/O5EJ6GAQQGjMTf+f81u1SnYv9lDNLcbPOBOyT6+efcSvAkpSMoTyZwXSbdYETLUdTLYGlhetQ97nLLuVqn2BbAudiP4UYBIApYLeoSvte/Oz6VaO905rG2naW+MGtAxmw+KlXISSsBvvMtZwsf/SjH3UWnUSW8HRZF3ip5dHWuuu+7a6LU6eSPwKTNYAIoEtcHLNWRyH312W4WHeI/KXRMT+7fb2Q9mefArRlcft6qMrbbWfaeqCR0Ca+LoPppR6UxyCBLjYBqus4Srk/YA0guOLEk/yZkz62eWVZ/nadKALxiJ9JAvsE+QNPHagSQDXN+O2tzL25feUD/aorLTurlnXS5Aq0ESnrM6OzdjB4n+h+BhBAqKDE68zTZ+065s1mQ2waj5JHG6X4vddlzmZSWoCmEri+fZ1qETwbsAiuOwyuqhJoo27GJoG5cFxcsjAF7AZfU791aVhmDkZlgz0KKGHyyiDjGDmHQPJX1yarsqnWzBWqjdq3RjChKeBtrqTdRggzfXshdjZQ9JkOdtFHPJUEZx2YAgbb+Jr6LWrkLxP7W/RPkb+oMBEA9ZxfCJFZiK9TLW5farr0w+3r7a3kXd2+JgP7msdyf9Ndk3prqz3tk3T6WuxncfCV6gwQwGhRFcDH1O++dX82G1rVUF3yWKMpW6qRfatH/4+EdX4QtwgudDlVZff9rQQuBiaCly1FyrYEznpI4NLywJ71gAjg6LGVAf4Qdev+LsTuDi9XB4tD+4Z1IZs0Do90B8JmHEhBAsvb1xNdZp/LXURwPqCvuAwsgfMeEliXN7YPU2E9IAI4UtRoLPc06ixqPttmsmezWBjClyklfiqq/EIGkHcLRiuCSnbMLtorvVFkOpCvt9R1s+mgzIUEdpVq20tITsTfwQfQEzaB2MFXwmcz9efys438IRrhyPSoPpdNJJbnATGKXZc2u5pY2SRMHkJEu+0OXdsbQ7pu1rN9YMBa91PlEMvvkCACaIcLD/Jnjibaxva6v1NkIygLLfS57hiJ+sHQpFGtXVXRQPXzRJf3IUSN2u7MNeJ1LHbW83ZdBrSSdhtaDmGOxAMEcPDk4udcxPMaEViI3WlnF4eHQ/NypDrCM9kcRr/gtsBAJVDlDnxaEY9XWoayEUrgldiJ8k963MOl2N3wl9N+xU/yU8D/9V//FfoS3ntotAq5vyZPNRxvLTdcj6gS3plo6TNrOE2KBjZ5QPT8v//3/2y030aCprrcn0v62QfaTqsuxd6xcX1yBNrOYRv1DEbf8ps6RAD7sfAgf3VTv7ZD7Gz6CEOuJf6k8pw5bg/Ghhl8Xuq27ULSjwa2lbC52Ds2rk+OQNvtj+0lSoAARoFqnHzk/Ks75eFM7KZ8QTr8st3Jmc5iya2BEXNaaYuqg6MxSeCJpfZ4Jt1SstgOBvjqJwEB9IqPRa7Xcn9xcG65UVTTLQWP0xvbHdtS2HUNUG3zzLThEKKBbSXwTLcRNs7sPZFu69NtbwohNUyksAaw++jKddZzVfmPthqBiZYHW41hIUz9+mSxNRpWjSwnrUCyWFoDWIeRv3mlPbS1WzYEbdcEmk0hfdd590nr9cqiuNX1Z8mX39QhAtge0zC5pm4jwIVF+dt1nBzYJ5NNQmdz7x8hfwB726fqebvmqDFfpy3Zpm0k8KLSD/Ttr7quw6tbftTnOkgNgwAmz4m4n46om/qdid10M6z788NcNse4mY6A3H4AzbjcEqft+pSaBDYddJuULjamY7OO8rUWu8eBzoSpYAQwYVRFeu5h5HvqePTEuj/3mGdWjVgsxf7RSwBDp9gaNGWS7gaRooVUmTZkKf03iCnxWnS83nOL3z/VCC4CCD9M4bkuvOdSv+vX1ueuhASdrjHrfeaVP7sU8vsBdKXUg6fqwFVNk6aYZmTZQgKn+jseWxi0mw0mbVlYDBgwFRwRbAJpTq47ddejwycOPzeZMxoTZlYzyu16RidA1DjcBLKPq63BVarnZS+keYoU1X7YSBRd6j6g7UA0k7uoqy3ZfiIRzEKxCQTajJ5c4zrh8yny55TtiITZaIP8AdhtJ6vTknUR91QEsGnbMNeDy76zCFnHPqUUu+sBmQpGAJNBVb7c8WfUTf3a3HByjYg4wyzYrq5JMukXrrk9AE7k6bhmsHyR2PdoM7VrpKlv9oaZdFs/eW2xPVP9GgmiA8MUcDNcn/erxG87LG/zrN8oczANhOo5ptXnqRppdvrCoAk0Bbw9OL+Qz6NJqZ2nbQaQTaZ2zTKerid9bL9P2eFa38tApoKZAoYmI83M8WfUNVZXjt8f+pPXNNykeQHwx1Lu59ebSVqnh6yleY5Ak9dvKf1mdLouL7KdP/aCIowAxjwyc5325bpmBHQi9vJc2Qzbw+eRh+3M/m2TvQJAf+rqnZlBSSVfYBsJnGpxOu050FQD2EWH/6f6K1tJ7KeS9nnPSZP8FPB//ud/unx7VTnOHFf67TC8zRA7U79u2N6FiPzBKPnt3/7tmNrvXcetpbQLfy7NI3OnenDfZ3dun6lgW8eSBstO0bf8pg4RwN1k4n6R6ouaQn8h9tZXMPVrlwnyBxAtu+phXZ2NFSWqTRMvm76iz+7cPlPBtnYF+zpeFRDAxriWPyV+i60/yy02VEz92pe/N8gfQLISmEoC4kWLtlutByyk32kdXfudQuxFVmfiPtMGbMEUcD2Z3E3DuuRpTSW3tWaFqV838jdF/gA2RDYFXGXXdLASluMEbm2bncHXuj9500OiuvYZNpcslfoakim/qUMEsB7X0b+iRv5sbvw4RUqsdiRvkT+ApNhVP+c7xDA2zBRrk/bF5PV72qM9mnTs92xOBWfChhCvEAGsL4Suo3/baUJsjqIKuX+cHNiNIiB/ABJ1BHAodVjJ3asW/YqJHHZ2go7/75W+Vhvi6232igggbOM6+reU+1v3z8Tert9jHiEdBwB8Vl+b1u/YUDNFTVOuvNLft2uKlj6pXWzNOrEhxCNEAD8nE7fRv7rRjc3PVAuBFxRrZ/JncnWR5BlAkogAGuZSvwkklQFd0/XhSx0EaLuevJT7p1G1RfU9tgIoR+IhLQwRQKjiI+2LqxM/SuQP+QOAvWLUtL7HRtP1fUp0Z9I+BZiNlGELi+3jFUUWAfRJJm5zRanKtR1iz8Xe1nemft3Jn2mAkT+AtCXwPFEJLFu08Ve6v2maGkb1S4Wl6zy19D42+0ZAAA/iOvpXt0bC1mdeS8ADtUcgf8fcX4BBsJD63HUpSGDT9YAmuXMTsSulXw7BbQqxlxuQKKBjWAN4RyZu1/6pSrad32huqYAHO0ZnJPLHukqAHSS0BnCbXWvkUlgT2HR9X5Oj4p44GNzazGrh9Bg/1gCCwnX079zhZ75A/pzJ3xL5Axgku9bzphAJbLpe72xP/6OwOfW7HZR4kUjfPGqSjwD+x3/8R9+3yMRt9E81Mo+2/mwudqJ/SvyOKMZO5I90LwAH+J3f+Z3Q7fdY679KmNwkXUqhv8f2KSGl9N/1e4j3un/ti7NZmL7lN3WIAPpZ+1fFZp6jUx5fZ9RzeLWj8V8jfwCDR0ne0z1yGPMatKbRu1zL4nbU0Mau30PY2pj4XOLfpY0AJioBM4fvX9RU0hOxd+LHNUW483N/s2d0ivwBjINiz0B6FrkENk0Nsz0V7Grqt0n/17W95og4BNA6tmRsF+c1Bfm5o/eGdvI33TNqJd0LwHhQQrTc8XdzifdkiqYnP5lZJ/M9ffYdtmapiAIigNZF4LnD968b/dgSzqWQlqQrF3vkbykOd5wBQLSc7hn4nYjbHLF9uJZmM0Ez6ZYgui8rS20qUUAHjHkTiKrQLsP729vrbW6N93JMzgC52tOQs+kDoCWJbwLZ5tAO4KcS57Kbpn1L3VGkPshkfyqapli/fjaBjBeXmz8KcRf9O0f+Ogv/fE/D4ntkDABxoQaBpwcGkNMIr7vNVHCItCqqv7KRFoYooGXGGgFUofBXDi/LVfQv1AgudXI9st+F02SjAENlYBHAqujNE2yDt1O97OKR+F/nHGUfSARwnLhc+1eKu+jfC+SvNdMDsr9E/gCgwr71gGYTWYwbEprOYoTY1GIrOTRRQIuMMQKYidvEz9vRJKJ/4Ti047cU98lQAQbLQCOAZuD49sDA8TjC626aIDrUrIeN5NDW+kIigOPD5RqIsqZS2Vz7h6i045XsX7PzlHsKADUcWg84lziPibyUZtO7FxImimkjBQ1RQEskHwH893//97YF573Dgl83qvrOwueVwpFvbbk40Eg4O14IYCz87u/+rs/2OwSH1tXFuDM4l/1rnquyGOI0qWiigH3Lb+qMLQI4dyh/6xr5s/V5JH1ux+yA/K2QPwBoOKjfJxlXYue8W5sU0mx69yTQtduKAs4pnghgG1xu/qhb4GpjurkUNim0ockZnsfcJgBo2P6eHxCRVxLfppBTaRYdC3HU3VLspDJ7TvFEAJuSOxztqIp2ufVnc0ufR/Sv3ajw6kBjrO4nR70BQFMOnZ2rBp2xHRe3bth35NIsdYxtbPRrmRAFRAAb8szhe1/XjLZsfF4pRP/asO+YNxGmfgGgG4emgucRykibDSG+WQpRQATQE67XC5w7GlW9oIg2pkkDzNQvAHQdjB+KWh0agIagySaPaSB5tREFnEqYCCYCmJgcuKKoGcnYiP7VbSqBerIGo1imfgGgD4emgs0SlJhQ19tkl3KII+KWQhQQAfSAywJyXiMjNoSTUz+ac2gRdin312gCALTlUEQtxvWATaKAqt8KkVvvpYX3mEl8O7ERwEjIHRaOsmZEaEM21whLYxZyeNql6Y44AIB9rBq0zScS17Rk0wHwmfjfzXxpqW0mCogA1uJy88f2Gj1baw2XCEtjuT80dXEt8SVqBYB0aXIqU2ypYZpcc4gTNmydETyXOM9nRgADogrEzGHBXW792cxSIWTzR7Nn22S9zSm3CgAst/2H2pXY1gM2Fa3nEiYKGHNfP1iSPwru3/7t3w6NClxVQiV/27tK1eHhUwfvC/c5dNSbGfUuuFUAbvi93/s9l+137Bw6Jk4R01FxTY9CDdFuXkn/2bNSWh6Z2rf8IoBxC2CTCtqVR/L5rtJcmp2/2PZ94T5N7rWVsyIBAAEcUDt0Ioc3qYS45kzLaV+eyP6d2ghghSFPAWcO5W9VI2k21hoWyF+jUWzTqV/kDwBcodrrpaX2yhdqurVscM2+1wKWbcRtD88olgigwuV6AFebP15SJA9yJod3da+EHIoA4J4myYxnEtf6tCbXHGItIJtBEEBruNoWrqJK1zWFzsYICGnZT95wZMrGDwDwQdlQqA6dUe6TpTSLAs49X9e12EkMPadYjlsA1UaMzGEhdXHuL9G/Zo3oIQqxM5UAANCEJrnslFCdRXTNTaOAvrERBSQn4MgF0OU6gJc1smnj/EcSP+9n0VDqz7lVAOCRpilWYkoQvZTD0TbV3s4DXFfftduZcD7wqAXQ1XoLVWEKB6MNG4V+yGQNR8+FEP0DAP80PdEipmPimgyWfUct65ZYdYHNIA0YYhoYFY1767DCLLb+7Dvpv7aj1db1EdI0nQ/3cT9TGWay1FKGt352InZmFoZMbHV90VCYYslP2jQvoO921UYf3iiVDXkAhyeATRIEd+VIPg+bz6X/Fn+1Y/URbflOlLC8atgZPOF2HcRGwtUYRWBIz36iBz0I4G6U8B9H+NyaCFVMuQGbSGuI+mXjUIXjQwPDsQvgV6l/gRqBdRXhKOT+molvLbwvmz/203TKhLV/zRtFEXbKIX/In23MWsCzBs/4IpLvoKauD6V8yXV59Jmj9oX0D648EzJr7GVoawBd7v7dFrXMkmxSQPePTps8z0KY+rU6MgbkL1LOJe6jMpuuBZxLHBsV1g3bAt87a6+lf4Q0d+gDCGCEPHNcIKvYkj82f+zuDJs2OkT/kEDkbxxldhH5NTbdEayIJS1Mk+udi988hrY2g8yoNuMRQFcPm9x//rlo2OAUQvQPCUT+KKvx0DQKmEscSzHKhvfW97Xa6B/ZDTwSAXQ5/ft66/eZhca6RFx2krVobF5wu5BA5I8yGhFtolexRAGbyJbvaeBC+p8MMqVujUMAXYZ6XUz/Ev3bTdPFv6XYmSagg0UCkT/Kpk2aLktRg91FBNerZGvV4Fp9T6naGOATBRyBAH7r6H3rpn9tJX+G++TSfHE0a//oaJE/ymSMtBmcHtqFG5Ns+ZYp1gEigI1GUa4a0u3pXxtTzSuxc+j1EGk6JWJrkTAggcgfZTGUUJnycBLB9S7l8NrFmfjdWav6ySJiP0AAI8Dn9C+bP9yRS/PoX5PGCpBA5I8yGIqixUA/lihgk/s+93xNbAZBAPfy2KH8rWskxUclGyNtFkSz+YMOGPmj7MXOeYuyEUMUkGlgBDA5XD1cF7t/bSS4HCLzFnLdZmQNdMTIH2UuFG3a+xiigKUcnnLNxG8SaxvLfTLq3jAFMLXdv68pdjsbv6YwhU6HjPxR1lKgjbzEEgVs0r76jgLa6DeJAg5QAF1N/xbiJvkzGxfuk7foHJseXQT2OmZ2WyN/yF932ixXiSEKuJRmm0F8XqeNfvNbqtrnfJX6F/j06RPTv+nTZu0f8uefhdxNDV1xK5A/5K81K/2aNiwzJxI+N6Dqq+YHrnPm8dmZSGqf/t5k8CipdnckHQH89a9/nYm7LenbI47cgVRCu52/CqZ/w0UFjrkNyB/y14k27VYMUcAmUUvfETWmgRFA61JWR1kzSrBR2Jn+vU+b6J8ZSQMSiPwlLn+///u/vxxZ3WlTfkKvBWySqzbFaeDHVL0NqU8Bf+uxoM0svCfTv58zFaJ/KXZka0tyo9bUZgO8R1eW7o+61x8GeH9Wt/I3tsFw2ylMVTcWga9ZRQEvDvyb+e3rMtJ7uE9a6YsHIIC5o/d9bVn+FDcUt3u0PVKPCGocXFscjQ9RAG1FRdSAp4j5i96KHLWhXb/StC/JtFwtA9fzQwL4zKMAtr2H+7yBvkQSngL+9a9/PRU34ed1TaP72FJlgvsNXFPUMym5bQCQ8MCpDWeBr1e1t4eW3Ng4GrUNNgZE7AZOXQDFXfSvroD1HXFw9u995i3/PdO/AJAybRMaZ+I34XIdTTaD+NxY0URKQ7kDAugRV4s5b2oqYd8RDrt/78P0LwCMjbZ9wfPA19uk3fUdUesbDFD9ORu0hAhgkwI/81SJxsRc2k3fF8KiXQBIn7Z9wUzCrpNtErXMxe9u4CJif0AAXeNw/V8p96dqH1uoQKQu6TeqJYIKAEOgy7m288DX3KT99TkNbGNJFelgJN0IoCt7Lxx8FtG/z5lK+/A79xAAhkJq08BFg3/zbYTXFIuwIoCW8bX+z0akkfQv/RozNtAAwJBoO6BVfdA84PWWcngWy7dQ2ZgVyhHANHG1gLNwUECIXn3ekM16PhMAgJTpsiwodOqSJhsvfEqgjX4BAUztgh2e/1uK/ePfVsLmhe0Gom1ElfV/ADA02rZroTeDNAlk+FxXZ2Nt/ejXAaYYAXRl7YWDzyoEqjzrUMm5hwAwNLrMDM0DXm8pzc4GjlmifblEMiR3FNynT58eOnrruvV/tt9zzGQdKhzyBzBgbtvzsX51MzvUZkYk9PnASlpPDrTxmfhbs636h16npfzqV7/K/+AP/mC0/UyKEUDW/6VJl9EhAg0AQ6WteGQSNoFxk/aYdYAIoFNcPLC12M//VwhU6ZLKAIEGgKHSZQozZEqY2NYB2uhnR70OMCkBVOFaj4Wo72cRvdrQ5cDwUkj/AgDDpYu8hM5f1+RUEJ/07WdHfSRcahHAqadCpGSlb/4/Tv/Y8KzD/ym4bQAwYLoMcruk0vIpXBPPUtW3n5j86le/Gq0EpiaArjaArByMYhCYfqPWd9w2ABg4XQIFIXMCNunXUlsHiAAmgq8NIA8tVGry/22eWYZAAwDco8sUZsgIYJO+jXWACGAyAlg3AssjGJUMhS7TvzaSfAIAxE6XviL0NPCha/YdUevbVxABjB2HG0BWDgoE05f9RqvIHwCMga5tXchp4NjWAbIRZOgCKO6OwdkuPDZEsxAwFSsLUKEBAFKhS38xi/x6c4/X0ztg4DDAhABawtcGkL6jgbqcgmMlD1WhAQASoUt75zvKtn29Ma0DLC30uQhg5Ew9Vb6HASrzUHnGPQQA2EvXJUPPAl5zEai/dtVnPEAAxyeALtb/MX3Zb4RKBBUAxkRXeckjltZM3C3bsinRoYQVAWzKr371q4n0T8zsSwALAcXM4jMBAEAA7/dVWaBrLhpeX0zXgwBu8VUKF/np0ydXD+edg0KAwNzRdQ0IEVSAkXDbtnMTNgKTd/h/6v8sIxZAX+e59+53v//++/wP//APizEVulSmgH2t/+v7OaWQANow63EPAQDGRNd2L2QS41VE12Zj6dDoooCpCOADTwU4C1SJh4aqSBPuIQBAIz54Hmj7EEA2giCA1oTCxYhhbXnEwvTlHXmP/1tw+wBgZHRt90Kmg2mSEDrzeD1sBEEAe40WMgfvOUa6inTJrQOAEdJn6VAe6JqbtNc+pYoj4QYqgL52AGceKsQYyLl/AABe5CXUOsBiYAI4+f777ydjKnTRC6DamePorT84GEURAey3/o/7BwBjpesAOA94zYfa7IcJ3L9QwooANrFyTwU3Q/6s0Kcx+sjtAwAEsHUfGfJYuH1knq+nQACHJYBTT5UtC1R5h0af6QgkGgDGSp/2L5S4fIjsuvr2w0wBR8YDTwWlb6j6nUDfCk8ORQAYK31mQFgH2ExIY72PQUjhJJDM00hr4uA9x0bW83lxD2EIvBQ767LexP5Fv//++5Afr+TjyYDKTYoRwLJhv7DyWCbOevx/IoAjEMC6SFPu4D3HxpR7CPDD0VzH3AbnqDb7akDfp0/712fznWsBnCZyD0OKdBCijwB++vTJhQDeOLD+gvaY6V+AigTKwAQlRub65xCE24a8hOiHCtkfQPF5wkbvSOPHjx+zr7/+uhxD5Yk6AqgehKeKRuTKDmwAAfhcAokE+pHAIYh23zYwj1RcM8/X01fesrFUnNingDNPFY31f3aYcgsAkEAkMAgPA33uoQ2Qqe0ERgAjwdWaBtsRwFJg0vN5cQ8BCYSxS2CfdjCL9Jp9r03sG5BBACNh6qmAfN3z/T4ITLmHAEggEhhMAGPeCZx7vJ6+Bwo8GEtl+VLARsUpuYVBjyMCQAKhKoEL2uEkpNUFRAAHIoAukjIWNX82GVgFCMEDbgEAEhgJZ7LZITwmQshLk/7Pp5iuE7yHCGBAiACGb3gKbiGMSALPuQ3OuUpQAlONXpXcQwQwhdHMauCFPxQ5twCgMQvZ5AoEJNDQd/1aqKPMDvWBPncok5YNAWxcwcgBGOdzAhg6x0ggEmiZUEeZlZFdV9nnP3/8+DFHAIfJ2nLBJAcgAgiABCKBMRBqJ/ChLA5JCeBYiFYAHZ4CsgpcMGl0AAAJRALHNCCfcg/jI9qzgB2dAeyiYBIBRKIBbEigyDh3rvqWwNXA223Vd5aeP7OQu53XsXAj/dalj0IAmQLuz0cBGwt8S24jIIFEAj3wRoY9axHrd8soeghg6MJi+xQQsBMBRAABkEBf7VWsElhE0h6nLoB9Az2jyGs7RgG0PVoqBFgDCIAEIoFx8DDAZ8bWD5ILsAFf0Q7AgEecfYR2SicMgSXwJbdhbx29sCSB39Ae00+MkbEJYMEjt84QR0qqoTIHyiOBQHu1q6JM+vXp6/U6hrpOm+xP2q+R6HiIeQr4gcdC2YcSARwsY0ogCwDDEI9QbXJMO6v7Dp5GsayJNYD9K9zYBTAWEUcCAYB2MBycioUAwsjIIxr5IoEAAGzMAwTwHjc8ckACAWDgxDigfsxjQQCHVElKitDoJPCC2wAAED1Fn/+8Xq8HH0WNWQCnCXwGAhgm51RITmSzQxgAYKz95zZDm2Eb/E7gmM8CJmcQlSRW5vrnMY8foFc7z02gXYZAsAkEaLC6SyCRQACwyQNuASCAbih55NGS4noLJBAAbJJxCwABRABpsJBAAIAuEEkkLyECiFAigEggANAuj453Pf//4NdRIoD9+MAtsEbqu4mRQADoCwmceRYIIA94dAxhtKUk8I2wAw8AxtsOAgJIZYNRkiOBAACAAAI0Yzqw74IEAkDbwSMAAgijY2iyhAQCAAACCNCAbIASyDpTABhj+weRE/NRcDydcTaAJbcBYBzQziOAEA4igEADCAAQHpI3AwIICCAAAO0fAAIIjIABABBAAAQQaAABAGj/ABDA9pQUgahgxywA0PalyWMeIwKIAEJXJkLePAAYHxm3ABDAtHjILWAkDABAu3eQm8Sut0AAYR9Eq2gIAQD6QjCBe4oAIhejh53AADA2sgF8hwnXgwBSQMdFgaQDAETV7t0M4DuAYzgKDmIj5xYAjAPa+VG1eSsedVx8SWGBCMm4BQAwEsYSOVvzqBHAmApLQcWlQQQACMgQNivkEV5T3yVfgxfWsa0B/DqyAjYEXERqSSgKAAx4u1NE+D3LlO7rH/3RHw1+FpJdwNCXjzwnAADau8gEEA7wFbcAIiSncR8FQ42gT2UkswP/+q//Sr2irRtam40ARsCNp0KlRiVZj/+fjXxk4ypMrp59Eeg7qc9d3r7mFt7rgmbGKWqdzmmE1/VKWCKSAscDFafYpi99Xw91rwHkAewvb9nIy5CrhbKhR/jHWgIh7rL3JNLO7omw6zEF+Qtdxx86rBs+eRDZ9fTtPwoEcHgwHZcOMWwEQQKRPyQQ+XNJPgD5U2QRXhMkLICpFJixh5pdjZTySL4fEoj8IYHInwtcrRUNUS8OCeA7il18xHwSiK9C3HetoarE1xQlJ2I9jaSTN+uE5jwW5K+jBL5hsIj8RTrI9SGAqd3bURxE8eUIG4BcIJURZ0zPikgg8tdXAokEUoerPHZY3nwP1g9RJFZWPo6hQnxJm9CbB9wCZx3bt3QgkLj8IYFxsIyw7s4GIi8xrq3/miKfsAD++Mc/9jVi6Ps5GcVoFBFAJBD5QwLTlb/jyK4pd1zOfNKkDyw8X9M0sXuIAA6g4o0VlyPOWYTfFwlE/pBA5K8P3zquMzEJYIplfRT180seQu88gAil29FdrOcCI4HIHxKI/MU4sC08f5eHDcq7b/pGABHASBpK2zywLIDgtrLMIv7eSCDyhwQif23JxN3SoRDl6dAmkDLCa9rLj3/8Y6aAB4qLijf2BNMrx88r5vuLBLq7r6sR1BskcFzy53pQG6LO5Af+/sMA+ngEcCBiUTcyKEKONgaCy1HeLPLvjgTav59jya2JBI5L/hQu1/+Vnr9L1rCMpySAq7FUltgF0MXmgmki74kA+mkwkUDuIxKI/PlCBQtyh+8fY7QtRindx2jq4VcxX9ynT598PYi+p4EQAex/Dw8Jdibxr9fkxBDkr68EcmLIcOVP4Xo2o/D8ffKGZTslASzHUmnGOAXctNC24aGA60ozS+Q+EAnkvvWVQCKBw5Q/hevZDN/y8qBBmZbIrukQH8ZScUgDY6eQMmJ3X9GfITPIHxIICcvfxPFAdh1AAA8tfyoD3OcsMYlGAOv4yU9+4isCuLb8fgigm4YmS+h+IDXcJyQQ+asyT7wN7iKA7yK8JgRQ85WMk+1zAgtLo7uxN9grcbsh5vnt6zQxuTkWgG516ZvYL/J2kN7r///Lv/zLmJ6p61mMG8/fJ49USicW6t4oSCEPYOHgPdkJnOYIdMYtBoAEyTz0EWWA7xSbTOV93+B2UMMu4IhYeyq4Rc/Ckwm4Dvdn+hkV3GoASIjnHj7Dd7t4aPNjiDWJfaN/RZuodN8IeGhSiAC6kIrMwegJAfTTAD3jNgNAYrievQghW/mBv+cMYATQSsH2UVD6bv1+TBvnpcLPhV3XAJCW/LkOEMQoWzcBrqlvSrZ3YyqYKQigq4I9sfw5mYCiGMBoGgDAFj5mLdgAYqcfLsdUMKNfA/iTn/xECcUXu/7+n//5n219VBm44A0FlyeCGNR6miW3GiBtPn36NPSvmHkasBaev1esAkgKmBZ8KWCzsObcRi+Vfsq9BoAEmA+o3a1yaKq1lPiSUsco0gjggOQl4xZ6q0BsBgGA2PHRTql+y/fmhbzBNfmmb/9bjq1wIoB2CwBnAt81RL42gyDcABArvtqowvP3UpG2QxvxQmwAYfoXAezFu8AFcCj4apDm3GoAiBRfsxQxbgApAtzvx4ndRwQwMvpGrhBAvxXpObcaACIkF3/rlH3LVhPRYgMIApgcfQuACotn3EZvDZK633NuNwBEhq/oX4zr/4oA9zsTzgBGACMoAEQB7xokX43AGbcbACIi8zgwfe35uw11/R8CCFZGLwig30bAZ2MLABDToPTa83fLI7wmG/1uMcaCigDaHwVwJJz/RoC1gAAQAz4HpL4yLrTp30Jck41+txxjYf0q9S/gIJN8353AuYARadUY+Di31ySGLrjtAKNuv0Mz9/hZISJth041CdUG940AvqsR+WzofcpXAnXiYqMwrriVPzRQvhrEMwQQAAKiBrs+ZyN8r7WbRXhNRtZsbwCZy+6p/N/0M//0T/+kfqxrBLKU+1HF8qc//WmJACKAY+G1RwHMhSggAITjRPzMeFQH2D55HOE1mba/L0WL75p3lGPFFzEVWNYANisMLirKGPDdGLAjGPpGEhbcBuiA7+if6qN8p385JDmlhFlL99jCvdzGxWbOMrZCiwDW0zeMnXMLg0hg3mIkBrDd4L/Vg4gr8RvJgfS58FxmfKd/yeRwjtvrgHW3D6ua7+riWUY3K4gAunlQmdCBhGqoLrjl0JK5lr9J5fdvqMPQor2fD3hgLRLv+r+J2N8A4iqV27vYCi4C6M7Uc25jkIYqRGMM6aIGDFc7ogpIIDTB99IT1T+Vnj+zyckmY1j/Z/NzEMBIKS1UMNYB3rGWMGsB6bjhUOTgldwt3N8FEgiHmAYYcL4MMKg+FBULNf1rI/9f6UAqd4k7ApgIfW095xb+hhDrVU647bBH/pTYNZnWMhLICT9QR4glJzGe/vE60P3v28+udtR56/L305/+dB1b4SUR9G5ueo7szJmJawHVYF15/ky1I++S+w87hG7S4f88EdI7pdJ++2AWYKBfiP/p328jlFIzkOsrazeWhbKNaAaHCKDbB5ZzG39ASdgyQOPAhhCoMpfuU7omakgkEAwh2hff078TORwpXwUaaNvoXwtPffa7GAswAui2UH/LbfwNIaYI5kg4aBbSP70LEgjV8pQF+NwYd/++DPQM+q7/qzu3eDQbQBBA9w8N+fi84QoxSiQKOG4mWvzOLL7fW2Gn+ZhR4vc8wOcuA7ShTb5nqA0gfXO+Fp767PXPfvYzpoATpG9eoyzQKDFWlgE+U0Vr2BAyXvl740jWrpDA0eI76bMhxGa6Q9HuEClpbPWto17/hwD6GdlwMsWGF4E+l7Qw40N1XO/F7XQtEjg+8kBteilM/9qWtcKTAN7EWpgRwMOVru/ohnyAn9/PIsDnmmlAGAeq4/KVv0+VKyLM4yBkOxJCtJokf14Guh9919ePfv0fAujn4REBjGPEGCJlA/hHydgr8RvxvWCAMZqylQX6bN+iNZVmyZ9Dpdnq25YXDt6zlp/97GcIYMLYCN8igZ83ZKEajb67QCFuriTcpp85EjholAydBfpsJVql589sEv0Lmfy5bzv+2of8ScTRPwSweeXrC9PAYUezhixgIw7uiGVnLhI47MFFKF4GKsv7CHHEp8FGerXCwXvWcRNzoeYkkMOYtQJ9FpOrCOApbehvUJtBQq2bOtGjv4LHMKjOOZbcfKrjVElfL3ksUbTfNlgELF9lANGay+EIW8jp374zanU7l3NH1xp1P0ME0M9DzITksduNWsiKwVTw8MpTTHBc3HAIOfVrBsu+aTL9G2otdyb912EWvvrnn//85wjgALBR2HNu42ecB/xsVeFJED0cPnILwAGhsweEOEIza9BXhRzA21hPz/o/BLD1iL5vuPsZt/Fe5SgDfv5c2JwDALtRkb+QMzchplmbnPzxMuA96duProX1fwhgx8rYh6lwKsg254E/n6ng4QzQYhvcQNqowWHo/I4h2sd5g3+zDHQ/MgtCXlc380idAQGMCNLB2Gcp4RYSi5a/VzyG5FlzC8ByuxB6N7dqG8sA8tdk80cZ6J64mv51EQRY//znP49+LTAC6NfmmQa+z4vAn68agAWPAQA0vhOJ1xFimjX26V8bU7XXDt6zjiKFgo4AtjB6YRrYBZcSPoJzJmzSSZmYRtoFjyNpFhG0BUWAcpTL4enVUsJNa2Zi5/SP7b7G1azc6xQKOwLo/6EyDXxfrF9EcB0xjPqhexkCsCFBMSSKD7H2L+bUL7b6ze3+22VAJomBIALo/6EyDXyfGKKArAcEGC+x1P8igDwoCZo3bKdDYaPfvK4Rfhesfv7zn5cpFHpOAmmHeqh9TwUxo45SwGCigKFH36pBUPkBObUlPfrWS1vc8Ciibb/38UbimAEIEf1rsvZvGXCQnlmo23Wnf7gKxhSp1D8igO2xEQafcxtrR5cxTOWd8HySHUQAdCGWowSLAPIwadjehVymY2P696UDqXTpCAhgpLAb2F0H/iKSa7kQju4DGAPziAZ8IaJ/J3I48qmkNORGKxfTv67W4q9/8YtfJHMUJALYntJCZXA5+kiZWKKAZj0Qm0LSYcV1QEtyCZ/vrypZRYDPbTL9G3JgPpW0pn+vU6oACGA3XnqqeGMjpiigkvRY1gXBYT5GVIYhfqYS16avUKd+HGrfysBSY0PUfE7/vk6pEiCA3VhaeA/SwdQTSxTQdBIXPBKAQWFO+ohlcFdImOhfk013oY/rnFt4D1/TvyKJ5QFFALuP8vuOiibCZoNd9zamXbhzJDAJmAKGpryRuJbgHAdq17ID/6aUcOf+GlHrK+mFeJz+/cUvfpHUDAAC2B0bod5vuY21LCWuNDnsDE5j4MB1wCFi2fEbuq1rEv0LvZvVxfTvVJj+RQBt2L6Fxn4mHA23i9hy8V0hgQDJy19MdTjUbMe8Qb+jri1k4udM7EzVXjuQyqafFT0kgu5Xea8tNCjq/y9om2srUyFxndGrpoJXwjRfjKy4BtrvA+1sbAO4FxImYnwW8bVVn5eNPsTX2b/Xv/zlL5OL/hMB7IeNkC85AXcTWxRQrUeJbf0QbAZkXAPskomryK6pDDTwV/cia1COLwPfHxfTv7m4m3F7nWLFQAD7jzDKnu+RCTuCd7GKoCFCAgGQvyEMblXb1WRDW+jon42lUXUbNZn+RQCtQ05At5xLfJEVJDDeAcOYPx/SkL8ikDA0OfVjKNG/ZU2bzfQvAmidpYX3yIXNIPsapNMIr4vTQuIsKyH5yCOIhjxS+VOESPsykeanfoSsR5klUds+UMBGSpldvE61kiCA/SnFTvJHooD7JbuI8LpUY8VpIQBxEdspH1XOJVzalxSif3ML7+Hz6DfFdaoVBQG0w0tLBR+R2M1ppNc1RQKjgSlgyCOuj2UgwVID1ZMG/y509E9hIxDyoub7546ud5nq9C8CaLEQWKg4LtcoDKVzP4/02pQEvhfWBIYm9BQsu4DDMo98MHYcqIw02fih5HQRwfObWKiD1w6kchevU64wCKBdCezLGbdxL5cS1wkh2wLPxhCAcPJwFfH1qf6hCPC5ecPAQgyDaxv9X13uv7mrAd8vf/nL65QrDQJojxcW3iOTuBIfx8ZawiygRgLTgClg5C/WdivUEpaLhuV2Gfge5WJnI+R5TdlwFRFepl5xOAnEHqXYObniTOLb8JBJPJE3dW9UJPAk0iJpJPAJQhCkox3z54+x/Y5d/kTCTf3OGw5GY1hfbSP6V4jfzR8vU69/RADtYiMKmEtcESTVuL6VuNbVhNpJ10YC3wpnBwO4bptil79rCbNLtGnS5yKCgEMmdma+Xjp63zoGcSQoAmi/stsQkxhSwpg8d/MWjYkvYp8KrnZQSKA/ViP97LHKX+x1K2Q71STti0TSjtqI/ql+d+ngfZvKJgIIP2AjCjiXsImhzTTmbOuaYopMqlHrZQLlIYUoxVBYj/Szx0RK0fVQU7+qnW6yRCaGTXWZpWf5sqacuMyqsUQAYVfBsFHpQ+0I3pfS5CKye63WrqQQeVENHKeGAPRvm1LZZKXkKtQO0SYDTtVHxbDz97nF+13F5ckftvp4BHCArC1V/HkAYZjJ/jxaucSXq/A4kXJx6N6CHVYj+1zkL84yGEquThreoxjOWJ+InehfnZC5DKC8HkqlQgDdcG6xMvtCVcQmUaqLyCRGNbaniZQLEkb7GYCFgHOA3bZNsW1EOzQoDVEOs4bio9rMGJbPnFh6ptv9bS7ullCVkvDRbwigH2wVkueeGr0269QyiS8Fy2VClZIdwgBu2qYYCLkspengPIYB80TsTP8Wcn8dI5s/EMDgvLBUSU4cV8JXHWTkTMJuUtk16i7p2EYPU8DDIMWB0rWEi6zNpNnynEuJI8+sq+if6pdyh9e9HFIlIxG0Owqxkxj6ua60LqYU+qypUfLyJKL7re7PU91ppMJc3/+niclrzHwMWP7ATvudS3qbpkoJtx55Imlt/LAV/VvVyKzL6N9yaO00EUC3xB4F7FOY8whH5ymtBzRMtbTOqC4AspA0N0s9DTgIuJLmOf9iGKjYiv5t96+Z4z7p5dAqGwLoFpuJoV00iKc9G4TYNoQoUloPWJX8VxJfmp0UYQo4TUzu0bMErz3kur+mU79FJO2ireif6leXW3/mUv5Kie+IVgQwAc4tVZoTR4X6Rc/rilFajhPtkNUzfivxra9MifXIPncI5HK3Oz5P8NqXEm7dX5up31jSZbla+2dLLF324wjgCFmKvSigCzHomw1+HmHDbRq8FDtlMyU8p+rAkPnHf/xHM4BMNT9m6CUnTad+Yzk73WX078RhGbKV2xcBHCm2ooBnjgp330bsSuJrwFeSTpLoXSN7Tg/p9tzH8Jmpy59J7HyS6Fcwm85CDTLVfWs69RvLkZlNzydu25+6jv4tZaARfgTQD0tLI7C5uIkCXku/9Q2ZxLl251rSDt2rBv69sEGkbcc8hs9MWf4WchflTjkh+hMJF1Vr2t7GNPWbWZL9UvxG/xQvhloXEUB/2BIRV6LVd8pUVcI8wvu+kLRzN5kNIkQDIXXxm96+3kqaGz2228qQUd+mbUEsU782+606GXvm8LqXMuAUXQigP2wVpLkj0SotjHRinApWhNylZwsTDZxTlQ6yGvjnpSZ+k4FE/RSXgQeUFw3vYSHxTP1OLbVbZc13Uu+bObz2l0OumwigX2KPAi56dmaZxLkrWEU2Q07Z2MKsDXwj7BQ+9Lx9wjnAu+Uv1+J3NoCvcy1hN32oe3nSsPzHtP7ZVp9w7rEvNBJdDLl+chKIX5Zi5xg11RDMxM3OpFMtGF1RI7LXEt+uKbNoO9Udh9vP/71uEBdoBsTGP/zDP5jBylDWr4beVGaWgjRtw2MZ7OZiZ8aqlPq8fy4Hwi+GXk+JAPrHVhTQVaRNjXj6Th3EOhWsGvEnAypLZ5Ju/jTXz3nInxe7/C1kWJuXTLsRcrNP03V/1xLXmmdb553X7fx1Gf0rZaCpXxDAsCwtjc7UyMdVCoW+i4fbjFbHNpK3jSoHb4Rp4Sq+p2TZBXwnfvnt673YS/cRAzHkFF00HOSVkbVtJ5bapFLqd/66bO/Ox1BnEcAw2FpH4qqhtbGGJJd4c3wtByaB5n6rzjfG4/lg2OKX3b6GOAgxa4dDRnhn0jzSFVPye5sROt95/+qEEwEEa/TNu1etCDFPBTfdsRZKAk8HWLZOtAguRiyCTAH7QYnflQx3GUJo+VMy3XQK9Vzi2rBgKzhRCHn/nPFFYpso6kafqV56Lv02W1R55KihUpWs79m0pb6+WKfJVAM7H2j9LnXHMIrRrKO61agdHdn9NWeTnw34Ox4HrjcTXYabpnyJaW2zOc7SloQXW/flvbg99u2oaX/1x3/8x0kXciKA4VCF2tYi0wuHlaHvVGmbUewYG3ofEQTyB4ItKVno8oT8uaXp7InJbhATtvqjQu5HNV2vL30hI1rTiwCGxdYUZO6wg1cVsO9U8EziPvNzyBI4RhFcDfSzYhG/IS8tiKEtWLSopyHPI65jLvaWA5zWtGMu+5G1xJM8GwEcAaXFAudy8b+NkzRiXg84BgmsE8GhduTrgX5WiPIyFvGLpQ1os+njVOJa92dzTfqyps9xHXUeVfQPAYyDc0uFzuWGENM49iX2JMxjkMBtEVwIu4Zhd/k4G0n5iKHuT6X5cplriS9aZausrOV+9C8Xt7MXo4v+KTgJJDxrLYE25E1VkJeORoUrXSn7XKfJDxhzMubjyr0cOiZVw5nu/GI6PN5GeZ16+pyhkOuykI+sH4xB/kzbOGlY5o4jLDu2pmfrInFE/xxABDAOLi12vFeOr7PvxpVc4jwvOLYOwTdKeFXE581A5NdXY576OcBmR6959shfmGfQNIdiDImp67DVpqt+cLH1ZzPH5XKU0T8EML6GyAaZuD0f1kbjc5KAZIxRAo2gV6eHM6rmIJlWnvPFSJ9zLHW8zfpodc2xRZ0XYi/afupQLncxyugfAhgXhdhLC3Mm7qa/bKUdiH1TiGlsL0daHjPZnDWcYlRwNbDPsUE12vdWhr0R6FAbFov8tclDeirxnU+r2glbp3LU9YGuB6HliNt4BDAybJ5M4XLUpCpq37MSzbTHJIFncjzycpnrjuo7/XOWwDX7mpqNPXIw0YLxSj+/sUb7qs/rSSTy12YmZBmpqFxZbMOPHcrlLs5lxGd5I4BxUYq9Q6hzcZszaSH9N5ukIoFLJPCeTJipwym3JUpmspniTUXafclfDFHbeYtBeoybPozA5hZFrNz6M9c70EsZ5zKf35D8UXAfPnwYYifb9/i1aoP3SNzt7LR1LE8qgpVL8516Yxu4qMHAa4lnimqmn5VrvokkgjDR3/lbXU4po/cl6qnEscu9TdksJc6jNDPdT00stR/b3zEX98c59l4G8ODBAwQQAXQiGrYKfyFu067YOvdRTW+cJvBsppJG1DIU64oMFgE7XB8dyA9taOCymFekD3bL35NIJKpN+xFTxHIbmzvGn9YMHN+K29kFK/1i6gLIFHCcFGIvkqIqqcup4JUlcUthZ7D5vo9kHEeAdcFEosz0o2rIL4QpSFv3dl5zb5G/3Swlngha28FjrPJnc+r3Wuo3frheWnJO1RhABLAsy6E+G1vTqwbX0tJmN1vb0WCsz+cVnW+nwc2NLouFw45ZPZ/vPA0GXJHp8vVQ/2S9ZftOfhHJtbSVv1jTUNmcAalbopSJvanlfW2QlVmxLMsQQATQ6UjL1m5e152V2dAxtdAoxDrydSm+Y2WlX+8qUmgL142btY5E159pRfimQg7GPm3IaUQCNRT5E7E7Naue0fbOZjWodj1bcCSWlqYggAiga2yutXA9IrY1ektNAufi9gSWsUrhB9msI+xS0WMVQCN3U2TPifzF1Ha0lb+lxLshTvUdZxbr+HZAwsfGLav3FwFEAF2jSth7i+/3RNycFVxt8GxsCiklzt1vthp66CZcqjy80z9XlZ+uoxV17Nu4lG/9fCybKB+4Gzg8iajNGJL85WJ3U9X2kiSb2S/2DQ6ObJaP1AXwK9qM+B1X7iJ3tkZeV47FyuSs6hsRy3SDE1ODfuh7H4mdaXDYL1WzPYIoFUl0LePqOS+03AmCF5TY5GlI8jcRuzMc5zWDtjNxHwUf7ZFvuyACmA42oxlqk8VTx9er1i7a2H0c26je53cHgP3Ett6vi/wV4jZVV19srsurm/rNxX3KplIP0K2SegSQNDDpYHN0OPMgKLbOrUxxavVUCzajTQB3mMFhyvK38jAY78Nc7G7KqOvHfKyf5iQnBDD5xs5m7qIzcT9ddSx2FmNPJb1NFtdCvkAAVywlvo1iXeQv5tkN9X1snilfN/W7EPdTv4W4XfeeLEwBp4fNqWAfDZDNfIbLREdyTAkD2CHGKd8hyp+ttF7V7/uo5p699fBdrKV92YYpYPDNscVGw/YIb1eDbauhm0ua6VaYEgawJxGxyV8+MPkzg1abM0Shpn7PJY7zn6Mk+Qjg+/fvx/jcbCaINpXTdaNqc7S3lDQjgWY3HceiAbTvyBcRXlfbQWkK8md7oF2X8Fk9yzPH36MUx6nEjo6Okq5UCGC62EwQLeJnvZrNhiVVCTQCfybkDARo0omrel5EeG25tNu9moL82d50V8j9Hc5t71tXXOe8TV4AmQJOF9tTiq88CIlNabM9SvXJpRbugmIMkGw9KVpcWwryN7HcD6xr2nvbOQV3cU37igAOmbXYjYBl4v4YHiOBtnYzzyXd0zdK3SGcCmsDAVKtG0/l8MxJKrlMr8Tujtxjub/+zkfCZ7NRCBDAQXMt99dW9CEX95tCFAuxt+Ywl7SPYCMaCJBufVjL/tmYpaRxpKVqk22uTV7K/TywPvLPirDxozGsAUwf29v1zcht6eHa1Yhzbum9UjwxRGoayCthbSCMD3OEZKp5M+vWzi0ljXXKqt15ZflZbrfFNtOB7aMQj6eqsAYQYhiB2kwNo7CdAsCHaKZ4Ysg2asSsWpRLijWMqP1S03WpJ01fyefTjqnIn4sk+3X9kY815iJM/SKAIx092yz4E48V1rYEvvckrz46xIKiDQNmObABz1LX3dNE5M9FO39aI/Jq2jf38H3OhZOXWsEU8LCwOaVqxPJRgtdukk8PoTFQ9+RCmBaGgQ1Yj46OCtrvoNg8VUqhZjCe1gzK33oqU49830CmgCEmTi1Lj88zeG1GAs26yPkAnqm6J0di9xxogBD8sFzlttN8pOSP2xE8WGBT/kqpT/nyytP3OeaRIoA0sPbXAyqJWiQqgbYjoiGf60KL4JJiDgmWXzWAufW+I8pveE4st4u7dkLbTiuzC6Z+O5L8FPDf//3f8xTrpc3Fwl5fjbdtcVsObISYy10+rZyiDpGj6t75n/zJn5S036PqG2wfV7qLIFO/httynXRhIAI43EbX9sJq21MGPmVTNXq+NrX4oJC7NY7OjzoC6NEGHd12kMe75A+8M3UgZcuattrF5+zrKwABhC1srwdU2M436FMCZ/r6swE946oI0slCDFwjftHKn+00WSsJu+6PqV8EEPZgOzGyz/QwLiTQ7EibDuw5KxE80veroNhDAFQ9fXQrfU8Rv+gw66Ftttsm08I2rzwNspX4LXi0CCC0r6R9yMRvwmXbEjjREjgfaCfM1DD4LnMm4kc0Jk75czFzUxdcUEKWe+rXmPpFAKHhSMl2ZfF96oa6ftsZ3q/EX4ob3xQVEbymCoCDDrgqfiW3JFpeOZC/uiP71BKbM0/fialfBBBajtJtbwrxudBX9PXbFtm53EUDswGLoErPYNLHrKkK0INSd75muQHiFzdqgJs76EuWNX2Br8F0IRyViQBCa1QEzXY0aC5+o2hLsZ/n0KwLzAf87Et93450OaDjhradrik/CwYSycjf3FE5qOJifeEuTL5BQAChA3Wh+xQl0MXmljcy/EXFaz16PtINKdPDsK+sqLr2SNe3Jbdk1PK32iFfLqaYd/GUwQcCCP1HULYrkWpsfE4Hr8RN6pMz8bu2MSTm3E5zzFxJ9QDZrBk+cjRgBLfYPuXD9Bt1My8upph3oQauBY/XLsmfBPJ3f/d3PMX2uNrE4fO0EBF3O9yMKI+twVELub+VYe6Qhv3lXdXbl22F70//9E9pv+NhLm5mYx7VlAtXn7VrUPIoxhvet/yHhgjgeEf5pw7e1/fZuybNjW3pHMuU8DbXWuK/EXIKjoGlHuh8I24Sx0P68lcXBc49yh/r/hBAcNT4u8ilFEIC1fc4d/Deakp4yLuE993TpZbrI+Rg0JLPOlDkbxenUr/j95XH78ZucwQQHErgcgASqFiI/R3CpsEbauLoJqjGV62/eVSRQaQhPZk30vdUSAmE/DXrG7bTrfjc8Sv682lrHMIaQHApbL7XBBphc7WR49qRZKaIur9qzeBj/XPCLYlK2lVZvXHdgbIGcLDyV5fuxedZ8NGu+7NZ/hFABDAWXJ2RG0ICXTZWZsqZkel98TZCmHM7vKLKZFERvjKVDpD2Ozr5MxkW1p6CBLvK8yNJYOo3dQH8inoEmieOpOmqMqr02SE+ctRoKbl8JUQD6zqOVeUe5RUZnHJ7rGOErxA26yB/w5E/xVNh3R8CCN6jCC4lMBP/u2qPdSd5IfanKGdabogG1pel6637klekcCpMGbeh1J2zET425CB/LspYnfy5yCu4j3MGNP5gChi2UaL21lEHvRQ3O48PYXauZY7eX4kOR6y1L2dT/UIK78veu4rsRRtlZgrYK64icWbwHzLXn2lHk0r5whpABHCIuNxIEUoCzQ62maP3X+vRKweV95NC9cpvXw8qkjhEMSwrsvdBNlPoSS0pQAAHK38z8ZvuZdf0MwKIANKAIIHWUFMaLo+tK4S8eS7IdVlU5fJr2SxTyCO93nWlDNxUysZ6SGUDARyk/Lls+9tcBwKIAO7nb//2b2ke0pRA1RmGOtzb9ZSwQkUCz4VNIr7IKs8z23q2D/Uzt/G8TaTuw9afrWt+PXj+7M/+jPbbHS5nLWKRP9H9wPUYyz8CiACOWQJDhv1dTwmbRrYumz74ZyF3J7v05YmwSB0B9NM+ucy79ygS+TuVhJfNpC6AnAQCISVtKn6Ti27LmRp5ukzlYiRTfceMogQADcgct4vHkcjfUlgzjQACEijhcsUtd4yGbX9HpoLDl+GY3gdgV1vhKim/kb/ljoHqxHN9POZxI4CABJrpjnmg71ZqCTx39P4vEMDgrCN7H4BtZuI2CrdL/nwPwEvdlwACCEjgZ6PQecDvtxD70UB1r5jmAIB9qHbv1Qjkzyy9YSCFAAISeI8r8Zt8tO772YwGEv2Lp9zG8B4APts8s9s3BvkTLX/UIwQQkMC9o2HfC5K3WUj/aGAp/o+/g90dYQzvAVCVsFfibtbDyF8RifwdCzvoEUBAAhuQS9jNIeY79okGnlNMAKAGs/nN5clEdXn+QsmfWgaz5LEjgIAExtJINmWhRbDN6LWkwYuyvIb8/wA+BrexyZ9qB0957AggDFcCS0fvb6ZJTiL5nqcNhZcGLz76DlQ+cguhJyfidnnLLvnLAsmfGjST7iVSvkr9C6R+ksmAJPCR4wZGnd/7sIWAucJMZew7RUQ1etcUCwDa78pAVrVhcw+D1O32MUSSZ3M9Tynl8UIEEFyPPG0yl/DrAs13fSq7I5+s/Yt3oBLy/8M4ycR9ntMY5S/UMZ+AAEJACVw6/IxY1gUqitvXkRa+deXPCopClHy0UL4B2qDaKZcneyiuI5M/cv0hgDBiCTx2LIFmXeBFJN95oUVQfWfW/gGA6PbJZXJn0W1OnWzlAeXP5ZpwQAAhAY49yNCJHl1nEYkv04TxwhQw+CDT7ZLrjWvnUr/BYh5Y/qgnCCDADxsmXO8AM4enz7jd0KCDCvn/Yfj4mPI1A+zFDvm7ClS3kD8EEOAzlnK3Q9hl5xnblDAAjA8fU7771lmHPEbzFPlDAAHqWHkaHZ54Gn1DuuUwxP+FYWNmIVxP+ZZSf7Sbkb95oO/ves03IIAwEAksPDTGbyR84miIj3Wg/wvDxSR2dj3oNLlW6073eIv8AQIIKXTArtPEmEbxQsIshAaA4VNdduK6jVnK7mU0Mwk344H8IYAAnRoOH8cD5bev98IGEdiw8vz/YHjMPLYrpwfaSiVgBfIHCCCkhGo8fGSKNyN114uzIQ26ljfOAQafbYmZLblsKInIH7SGs4DBV8OZy/3zcdXI9ZFuUF1PY8z0NRwL5/QC0H63bz+uPA0izRm6ZYt/r0TRx7pn5G9AEAEE1yjpeq8lry5FQSl+1gX6HsFDnDAFDDG3GUvpdpJG9ThK5A8QQAjecG5vxJjL3Y617YbUnKJx7OnafK7hgbjoOpXLLuDx4budMOv91h3Lp8upYOQPAQRoxL5ULCZn1nTH6PeR+DlH0ozs1XVmPDIA0GTiN+q31u3eZc/3Ue3nysG1IX8IIEAjmiRjzrR4zWv+zuS78rVOL9fXu+DRjQKmgKFJ++Ur6lfcvo4sli+bUUBfabsAAYQBjJqV1DU9jk2NrHcdXaQanqfib3ebupYz3fDnPMpBs/b8/yANzEDQR14/w7nYz4RQWBI2zvZFAAEaMeshT3P9f7Oav1NTIr6mhBVm6trXbj8ACIsZiPo4zWNbrhaO3v9U+p96g/whgAAHG08ba2XMusC6aRffU8JGStXib46TGx5dBhN0hMPkRNfzucfPVO2YmvItHAvmecf/6+vcdkAAIWFysbtWxsjkYkeD9tTCyLbt9VzoDiLncY9aAJn+HWbb5XO61+zSfeqpPF12kDjkDwEEOIiSNFe7Z8/2vPdlgAYq09fDbmGAtMlks/Pf5/m5RqwuPX/f0w7XyGAHAQSoxUzVnnkaoe+bEj73/N3VNb33HDUAN5QdOnBIl4ketIbI/WnWMYcoQ4U02xCy1NeI/CGAALWceB45mynhXcK1kG4Z823ch/f68xHBcQgg5wCnixG/swBlTLVPp4G//6FlM0pQjykm44SzgKGJiF1JuFMzlHDlupFa1YxwH+nG/cTzPVGf+UzuIpFLiglAVO33XNfRLMDXuhQ/R7M1wWwIqUvPRYLnkUMEEA4xlfCbIMzU88mOBu5UwkQDMy3HvncSQj/alhOmgNPBHN92FUD+StlE/WKaTt3eEGI21SF/CCDAXgqJZ3GwOVs423GdNo5T6iOCJJJOgw8t/z1ro+In123DKwkX9XskbtO79OG0UpZVe35NkQEEEJqgRo82jyvq29Ar0Zrv6KhDRQMVJpH0G0QQwKv4hapzpcQZ9asbIJ9H1I4DAggJEdPI0axL3JWAutAN3Xmg6wvdKcHhTrvtAAgQv21U+xJz1G+bhRDNBgQQekjg04BitY1Z7zPb0+CFbKBNJ8UawbQFkE4zHlQ9ehtY/EwqKoQKEEAYHarhO46k8aseR5ftaKxDT9Go62KzCEA/8TObO6aBrsEsMQmV1w8AAYQoWEq4tXZ1zGT3TmGFWqR9JGF3vhkR/E7IIxiSNmWWjj7s4G4h4Xb1VjFn+F7yWAABBNhMhRQRdRj7dgqrEfyxhD/v0uQRjKFjQwD3wxRfuIGSSeCcBS4rqr14SlkABBDgfgcZ4pzLfeSyOa2jjkKLa+ide0oE5/pa2TACY0eV/1eyWSoRMkJupnuPJJ1NHgAIIAThNMJRsomy7RIrMy0cg7zmstkwciJMD7umbPjvmAJ2Pwg6qQyCZhFc01KY7gUEEKAVap1M6OnVbTLZnyA2tpG+usYLCb/gHQG8g3OAHfA3f/M309uXmea9kDiWQaj6r2YGYtngBoAAQlKYXbfLyK7LbBJZ7BGCJxLPxhYzPfxWNomviQpCytI3uX3Nb1+xlelq3SfiC6Phq9S/gMPDxKE7ZrPFjR7dxyIuZvPFM319xY4owJGEPUx+GxUFvNIvJdavhaOcbHT6TQc00IO//uu/znWdm0fYTp0KZ+LCSCECCC5ZRjqqVlJnThHI9ly7mg46l7img1QnahbKxzJ1liJNzwNmKrCb9GW3r4vbl1nbF5P8rWVzLBryBwgggCNinRJW5BWRmuzoKBayOVYuJhlQ4mcWz5v8h8gghJa+k9vXW9lsZoqtTBrxWyD3MHa+SH0K9bax4Smmg1qHdyVxrmVTncEL2b1GUGSTZ3AeuXC/lLsp4pIit5O5LouH+AZR2ItZq6qmeGPesLTU8kedAGv8+Z//edLXTwQQfKKkJNZjlKrJmed7JPFY4p46mspmFzGRwd00FQHk7z6ZLleqfH2ny1us8rfU9fUY+QNAACF8x2vW1sXauV3pzi3f8x1iF8E6GVwIaWWge1ky0vc+culD/AAawBQwhO5UduXni4VCy2pxQBrnt6/nkkaqllJ/nzHvJs60yOzDHHU4VtSSjcf6Z5bA9a51eWaqF7yQ+hQwAgihMVOvJ5FfZxMRNKcapCKC1e/2Wv8cU9qTTw3uy5ORDcjyivSlglm/eylM2QMCiABCcqiO5yqBSENTEZxrEcwSew4minKjv2OJAA6WbEv4Uks0XmrxWyJ+gAAigJA2qUQDm4qgVEQw1bV3pf6OSghXMqwI4fsDgq4iSqcD+r5T/XqsxS9L9HusKuIHgAAigDAgVOeUQjSwjQiq7xTjaQhtWevv+k42U8apRl/eyO6NPqKf6yLxeqReD/XP1I8SvNbiVwgAAogAIoCDJaVooBHBF3J4U0UmaW0YaYKJDL7TP1PpoIckgOp7TLXsmUjfEFCDi6WuWyXNIiCACCACOB5Ux5ZKNFB0J3UuzaanjAgOMTVLuSWF5vcxcSX7I7JPJb5d0llF8B5Wfj80VpUBFev7AAFEABHAkWJ2154lJkDqRI4mOxOnWgRTXIjfpWMvK2JoppRDsDhQpp4EvLZclwUjehPZH60cAmYD0gsZ1250QAARwC781V/9FaVwPJjExil1hG1yk020BA41KniIQt+vd5Xfi7hbZxhSAPNKmZ5UJG86gkFA3aCAaB8kx1/8xV8ggAggeMZEA1PrKAtptk5QkckmKpjxyH+grEi0koaPW39eSrt1YnPZfx5w23OAjbxllWf2dUXmM57lZwOjpbC2DxBABBABhJaojvZC0txVW0q7/GVKAr+VcUwR96Htpo1c7jaC7GwfW37+oU0lcFfmX992nNe034AAhoWzgCHlCII651NN06W2XijT8vqd3EWgDknDtWzOHj6W8R7fdogHETxX2F1+v7ntMI+N/AFAWL7iFkDiFHJ3Xmuq08Jz/SplMz1c7pHepX6Z9YImMgjtBazc83crD58/9HqpNkFd3wof6/oAIoQIIAwFtdv2SP9MVV5UVFCdTvGqgdQZGVSpStRaNSKD7SkP3F9oRzXS9+T2tUT+AOKFNYAwRJRMNZlajZ0uaTGqkcFcxrVmsNSDgDbsagALaXcOcKblfUyYFD6vpWOkj/YbUib1NYBMAcNQReCJpJdEuk7m5rKZIlZTaks5HLlayiYRtZLBxzKO3cRZx7JS9/9WHj471bqlBiU3WvpobQAShSlgGDKFbDZOlAOQG7XGUUWZ3srdmscm0qE661N9H470r5kq/lxo6vjIrblXhh5RhgAQQICUWOrOS6UJGcKaJJMQu60MKtlRayTVukGV4uSJ/v2QTl3IRva5LljpcvFEl5OnAywnAKOHKWAYC0r8FrojS+1YuUMyaIRQddCF3E0VN+msC9mcdGGOGnusf6Z6Ekkm7aK95R4JGosAmnJzI5vTWAAAAQQYpAgutQTOB/TdjAyeaLFRnfkPC/Qb3pfryr81x5JVpXCIfNhzP4ZKVfZWgvABIIAAI0IJklobeD5AEVRkstlAIlJZuC/NImRmh2dRI5iPK7+O8XuH4EGk5WClX+8qwgcAgAACIjhwETTM9OtCNtFBI4RNI0BGJpaVP8u1CD7U8pUnJoDlnu+agnhWKfT3eSebad0+99HsIFfP9BuaCgAEEAARTJtMNtHBK+m3BqyoEY2p/oyqGE4jfu51xDwtutoSvVL6R/aMvBvhy2gSABDAqEk9kTUgghFQXTsoFSE004ZlB0FRr+uazzGbTb6uiKJN2Qg1FZs5KIdG7D5WxHxl8Zkb4ZuGEj7abwAEECBmEXyuRXAsp2psr+9bbwlh0fF9jbwUOwSq+vq6cg25QxEr91ynSwEsKp/1sSJ8pdjPWZnJ5+s3c6o3ACCAAIcF4VSL4ImWwcnI7oE5Xk69ziriYjYXmF+ve97nssF1TGt+rXio/2zV4XO36fI9isr/fbclk+uaX7tiW/amIyyvAIAAAljDpI9Rr7kWoWzE96NuF3C5JYWl2N11upbPo4cxnUbxJMBn5voZPKg8D2QPABBAAEcs9UtFxJ4LU2qGTDa7R6uYyNeNfL62LZaNFuWWzMeUKqVu3SSiBwAIIEBATOLkqWzWCUK9xMgOUS70z5ut3/sUxG0B/Oj53kwq8vxAPl8LCQCAAAJEipIVtWHkVEvgczrvxuRbP7eP6KvufF1V5KwqiKXY3zhh4ztVBU/xsPLrnEcPAAggwDBQQnKpX2oa9Jncnw6FdkxqJPEQaj1e0eIzyhqhb8NChnO2NACMhC+5BQBOUFPDT29fR3K3g7jklkTLhxqRBwBAAAGgM0r8FloEn0pcO1eHSub58x5wywEAAQSAXZiooDpXVa0XXHFLohDAcuv3KZ4DDACAAAJEjlkr+Ei/LoVpx5CUNc8HAAABBABnqGiTigaqqKCKDi4RkN74npLNuOUAgAACQFfUFPHxlgyCeyErd/waAQQABBAAgsngsRAZdElfAQQAQAABwCprLX/bkUFkcDfZQD8LAAABBBgp1cigSnisNpCU3JbeUlZu/UQAAQABBIAoKeRuA8mRfp0KeQa7YsTvA7cCAMZA8kfBffr0iacIcCcw5hg6hTqC7rHcHZ82HeH9yMRPZDSj6NF+AyCAABAL17KJBmZaBI0QjkFa2gpgufUTAQQABBAAkkZJzVI2aWXGKISH+NBRAIdcZorb143+CQAIIAAMVAgfynCmjH1J7VDOAV5VhG+FCAMggAAwHiGsklekcCrpRQmzDvdAZBxTwKWWvJuK+AEAAggA8IMUVMVgokUwZSl0IYCxY6J57/TzVL8nhyQAIIAA0Ih1jRSKbKaMH+ifUy2LofE1NRvLdHmpXzeVXxcUWwBAAAHABXVSaKKFmX49rvyZL7KOAtWWSYD7rWT8HaIHAAggAMTEeo+UZFuvB1u/D0VXAbSNmaJVPz9u/f7e1O1f/uVfJl1QUr9+AAQQAMCeaOX6Z3U6+XHN3+/Dh0xOO3xnE73b/vOCogEACCAAjJmihRRlNbKXd/zcm5b/Xsnc+Q6pRegAAAEEAHCETfkqOnz2gkcAACnyBWcxAgAAAIyLL7kFAAAAAAggAAAAACCAAAAAAIAAAgAAAAACCAAAAAAIIAAAAAAggAAAAACAAAIAAAAAAggAAAAACCAAAAAAIIAAAAAAgAACAAAAAAIIAAAAAAggAAAAAAIIAAAAAAggAAAAACCAAAAAAIAAAgAAAAACCAAAAAAIIAAAAAAggAAAAACAAAIAAAAAAggAAAAACCAAAAAAIIAAAAAAgAACAAAAAAIIAAAAAAggAAAAAAIIAAAAAAggAAAAACCAAAAAAIAAAgAAAAACCAAAAAAIIAAAAAAE5v8LMABhqkFigtnWIwAAAABJRU5ErkJggg=='); + background-repeat: no-repeat; + background-position: center; + background-size: 24em; +} + +#viewport-frame { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + overflow: hidden; + background-repeat: no-repeat; + background-position: center; + background-size: 24em; +} + +#viewport-frame:focus { + outline: none; +} + +#viewport { + background: #000; + width: 100%; + height: 100%; +} + +#viewport-frame:-moz-full-screen, +#viewport:-moz-full-screen { + display: block; + position: absolute; + left: 0; + top: 0; + margin: 0; + width: 100%; + height: 100%; +} + +#viewport-frame:-webkit-full-screen, +#viewport:-webkit-full-screen { + display: block; + position: absolute; + left: 0; + top: 0; + margin: 0; + width: 100%; + height: 100%; +} diff --git a/internal/quake/client/static/images/android-icon-144x144.png b/internal/quake/client/static/images/android-icon-144x144.png new file mode 100644 index 0000000..00ddb2f Binary files /dev/null and b/internal/quake/client/static/images/android-icon-144x144.png differ diff --git a/internal/quake/client/static/images/android-icon-192x192.png b/internal/quake/client/static/images/android-icon-192x192.png new file mode 100644 index 0000000..e425918 Binary files /dev/null and b/internal/quake/client/static/images/android-icon-192x192.png differ diff --git a/internal/quake/client/static/images/android-icon-36x36.png b/internal/quake/client/static/images/android-icon-36x36.png new file mode 100644 index 0000000..744787e Binary files /dev/null and b/internal/quake/client/static/images/android-icon-36x36.png differ diff --git a/internal/quake/client/static/images/android-icon-48x48.png b/internal/quake/client/static/images/android-icon-48x48.png new file mode 100644 index 0000000..0b59d17 Binary files /dev/null and b/internal/quake/client/static/images/android-icon-48x48.png differ diff --git a/internal/quake/client/static/images/android-icon-72x72.png b/internal/quake/client/static/images/android-icon-72x72.png new file mode 100644 index 0000000..f6d2c78 Binary files /dev/null and b/internal/quake/client/static/images/android-icon-72x72.png differ diff --git a/internal/quake/client/static/images/android-icon-96x96.png b/internal/quake/client/static/images/android-icon-96x96.png new file mode 100644 index 0000000..b372e9c Binary files /dev/null and b/internal/quake/client/static/images/android-icon-96x96.png differ diff --git a/internal/quake/client/static/images/apple-icon-114x114.png b/internal/quake/client/static/images/apple-icon-114x114.png new file mode 100644 index 0000000..f64dd6a Binary files /dev/null and b/internal/quake/client/static/images/apple-icon-114x114.png differ diff --git a/internal/quake/client/static/images/apple-icon-120x120.png b/internal/quake/client/static/images/apple-icon-120x120.png new file mode 100644 index 0000000..38824d5 Binary files /dev/null and b/internal/quake/client/static/images/apple-icon-120x120.png differ diff --git a/internal/quake/client/static/images/apple-icon-144x144.png b/internal/quake/client/static/images/apple-icon-144x144.png new file mode 100644 index 0000000..00ddb2f Binary files /dev/null and b/internal/quake/client/static/images/apple-icon-144x144.png differ diff --git a/internal/quake/client/static/images/apple-icon-152x152.png b/internal/quake/client/static/images/apple-icon-152x152.png new file mode 100644 index 0000000..d4983f8 Binary files /dev/null and b/internal/quake/client/static/images/apple-icon-152x152.png differ diff --git a/internal/quake/client/static/images/apple-icon-180x180.png b/internal/quake/client/static/images/apple-icon-180x180.png new file mode 100644 index 0000000..e2b9f41 Binary files /dev/null and b/internal/quake/client/static/images/apple-icon-180x180.png differ diff --git a/internal/quake/client/static/images/apple-icon-57x57.png b/internal/quake/client/static/images/apple-icon-57x57.png new file mode 100644 index 0000000..b8de2b1 Binary files /dev/null and b/internal/quake/client/static/images/apple-icon-57x57.png differ diff --git a/internal/quake/client/static/images/apple-icon-60x60.png b/internal/quake/client/static/images/apple-icon-60x60.png new file mode 100644 index 0000000..477125f Binary files /dev/null and b/internal/quake/client/static/images/apple-icon-60x60.png differ diff --git a/internal/quake/client/static/images/apple-icon-72x72.png b/internal/quake/client/static/images/apple-icon-72x72.png new file mode 100644 index 0000000..f6d2c78 Binary files /dev/null and b/internal/quake/client/static/images/apple-icon-72x72.png differ diff --git a/internal/quake/client/static/images/apple-icon-76x76.png b/internal/quake/client/static/images/apple-icon-76x76.png new file mode 100644 index 0000000..ba3e486 Binary files /dev/null and b/internal/quake/client/static/images/apple-icon-76x76.png differ diff --git a/internal/quake/client/static/images/apple-icon-precomposed.png b/internal/quake/client/static/images/apple-icon-precomposed.png new file mode 100644 index 0000000..b0f1a39 Binary files /dev/null and b/internal/quake/client/static/images/apple-icon-precomposed.png differ diff --git a/internal/quake/client/static/images/apple-icon.png b/internal/quake/client/static/images/apple-icon.png new file mode 100644 index 0000000..b0f1a39 Binary files /dev/null and b/internal/quake/client/static/images/apple-icon.png differ diff --git a/internal/quake/client/static/images/favicon-16x16.png b/internal/quake/client/static/images/favicon-16x16.png new file mode 100644 index 0000000..1e32a19 Binary files /dev/null and b/internal/quake/client/static/images/favicon-16x16.png differ diff --git a/internal/quake/client/static/images/favicon-32x32.png b/internal/quake/client/static/images/favicon-32x32.png new file mode 100644 index 0000000..9064ce7 Binary files /dev/null and b/internal/quake/client/static/images/favicon-32x32.png differ diff --git a/internal/quake/client/static/images/favicon-96x96.png b/internal/quake/client/static/images/favicon-96x96.png new file mode 100644 index 0000000..b372e9c Binary files /dev/null and b/internal/quake/client/static/images/favicon-96x96.png differ diff --git a/internal/quake/client/static/images/ms-icon-144x144.png b/internal/quake/client/static/images/ms-icon-144x144.png new file mode 100644 index 0000000..00ddb2f Binary files /dev/null and b/internal/quake/client/static/images/ms-icon-144x144.png differ diff --git a/internal/quake/client/static/images/ms-icon-150x150.png b/internal/quake/client/static/images/ms-icon-150x150.png new file mode 100644 index 0000000..a64c011 Binary files /dev/null and b/internal/quake/client/static/images/ms-icon-150x150.png differ diff --git a/internal/quake/client/static/images/ms-icon-310x310.png b/internal/quake/client/static/images/ms-icon-310x310.png new file mode 100644 index 0000000..8c59791 Binary files /dev/null and b/internal/quake/client/static/images/ms-icon-310x310.png differ diff --git a/internal/quake/client/static/images/ms-icon-70x70.png b/internal/quake/client/static/images/ms-icon-70x70.png new file mode 100644 index 0000000..9c78139 Binary files /dev/null and b/internal/quake/client/static/images/ms-icon-70x70.png differ diff --git a/internal/quake/client/static/index.html b/internal/quake/client/static/index.html new file mode 100644 index 0000000..d6a0710 --- /dev/null +++ b/internal/quake/client/static/index.html @@ -0,0 +1,159 @@ +{{define "index"}} + + + QuakeJS Local + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + {{ with .NeedsPass }} + + {{ end }} + +
+ +
+
+ +
+ + +{{end}} diff --git a/internal/quake/client/static/ioquake3.js b/internal/quake/client/static/ioquake3.js new file mode 100644 index 0000000..a8b7bc9 --- /dev/null +++ b/internal/quake/client/static/ioquake3.js @@ -0,0 +1,30996 @@ +// Note: For maximum-speed code, see "Optimizing Code" on the Emscripten wiki, https://github.com/kripken/emscripten/wiki/Optimizing-Code +// Note: Some Emscripten settings may limit the speed of the generated code. +// The Module object: Our interface to the outside world. We import +// and export values on it, and do the work to get that through +// closure compiler if necessary. There are various ways Module can be used: +// 1. Not defined. We create it here +// 2. A function parameter, function(Module) { ..generated code.. } +// 3. pre-run appended it, var Module = {}; ..generated code.. +// 4. External script tag defines var Module. +// We need to do an eval in order to handle the closure compiler +// case, where this code here is minified but Module was defined +// elsewhere (e.g. case 4 above). We also need to check if Module +// already exists (e.g. case 3 above). +// Note that if you want to run closure, and also to use Module +// after the generated code, you will need to define var Module = {}; +// before the code. Then that object will be used in the code, and you +// can continue to use Module afterwards as well. +var Module; +if (!Module) Module = eval('(function() { try { return ioq3 || {} } catch(e) { return {} } })()'); + +// Sometimes an existing Module object exists with properties +// meant to overwrite the default module functionality. Here +// we collect those properties and reapply _after_ we configure +// the current environment's defaults to avoid having to be so +// defensive during initialization. +var moduleOverrides = {}; +for (var key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } +} + +// The environment setup code below is customized to use Module. +// *** Environment setup code *** +var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; +var ENVIRONMENT_IS_WEB = typeof window === 'object'; +var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; +var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + +if (ENVIRONMENT_IS_NODE) { + // Expose functionality in the same simple way that the shells work + // Note that we pollute the global namespace here, otherwise we break in node + if (!Module['print']) Module['print'] = function print(x) { + process['stdout'].write(x + '\n'); + }; + if (!Module['printErr']) Module['printErr'] = function printErr(x) { + process['stderr'].write(x + '\n'); + }; + + var nodeFS = require('fs'); + var nodePath = require('path'); + + Module['read'] = function read(filename, binary) { + filename = nodePath['normalize'](filename); + var ret = nodeFS['readFileSync'](filename); + // The path is absolute if the normalized version is the same as the resolved. + if (!ret && filename != nodePath['resolve'](filename)) { + filename = path.join(__dirname, '..', 'src', filename); + ret = nodeFS['readFileSync'](filename); + } + if (ret && !binary) ret = ret.toString(); + return ret; + }; + + Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) }; + + Module['load'] = function load(f) { + globalEval(read(f)); + }; + + Module['arguments'] = process['argv'].slice(2); + + module['exports'] = Module; +} +else if (ENVIRONMENT_IS_SHELL) { + if (!Module['print']) Module['print'] = print; + if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm + + if (typeof read != 'undefined') { + Module['read'] = read; + } else { + Module['read'] = function read() { throw 'no read() available (jsc?)' }; + } + + Module['readBinary'] = function readBinary(f) { + return read(f, 'binary'); + }; + + if (typeof scriptArgs != 'undefined') { + Module['arguments'] = scriptArgs; + } else if (typeof arguments != 'undefined') { + Module['arguments'] = arguments; + } + + this['ioq3'] = Module; + + eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly) +} +else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + Module['read'] = function read(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + return xhr.responseText; + }; + + if (typeof arguments != 'undefined') { + Module['arguments'] = arguments; + } + + if (typeof console !== 'undefined') { + if (!Module['print']) Module['print'] = function print(x) { + console.log(x); + }; + if (!Module['printErr']) Module['printErr'] = function printErr(x) { + console.log(x); + }; + } else { + // Probably a worker, and without console.log. We can do very little here... + var TRY_USE_DUMP = false; + if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { + dump(x); + }) : (function(x) { + // self.postMessage(x); // enable this if you want stdout to be sent as messages + })); + } + + if (ENVIRONMENT_IS_WEB) { + this['ioq3'] = Module; + } else { + Module['load'] = importScripts; + } +} +else { + // Unreachable because SHELL is dependant on the others + throw 'Unknown runtime environment. Where are we?'; +} + +function globalEval(x) { + eval.call(null, x); +} +if (!Module['load'] == 'undefined' && Module['read']) { + Module['load'] = function load(f) { + globalEval(Module['read'](f)); + }; +} +if (!Module['print']) { + Module['print'] = function(){}; +} +if (!Module['printErr']) { + Module['printErr'] = Module['print']; +} +if (!Module['arguments']) { + Module['arguments'] = []; +} +// *** Environment setup code *** + +// Closure helpers +Module.print = Module['print']; +Module.printErr = Module['printErr']; + +// Callbacks +Module['preRun'] = []; +Module['postRun'] = []; + +// Merge back in the overrides +for (var key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } +} + + + +// === Auto-generated preamble library stuff === + +//======================================== +// Runtime code shared with compiler +//======================================== + +var Runtime = { + stackSave: function () { + return STACKTOP; + }, + stackRestore: function (stackTop) { + STACKTOP = stackTop; + }, + forceAlign: function (target, quantum) { + quantum = quantum || 4; + if (quantum == 1) return target; + if (isNumber(target) && isNumber(quantum)) { + return Math.ceil(target/quantum)*quantum; + } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { + return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')'; + } + return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; + }, + isNumberType: function (type) { + return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; + }, + isPointerType: function isPointerType(type) { + return type[type.length-1] == '*'; +}, + isStructType: function isStructType(type) { + if (isPointerType(type)) return false; + if (isArrayType(type)) return true; + if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types + // See comment in isStructPointerType() + return type[0] == '%'; +}, + INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, + FLOAT_TYPES: {"float":0,"double":0}, + or64: function (x, y) { + var l = (x | 0) | (y | 0); + var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; + return l + h; + }, + and64: function (x, y) { + var l = (x | 0) & (y | 0); + var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; + return l + h; + }, + xor64: function (x, y) { + var l = (x | 0) ^ (y | 0); + var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; + return l + h; + }, + getNativeTypeSize: function (type) { + switch (type) { + case 'i1': case 'i8': return 1; + case 'i16': return 2; + case 'i32': return 4; + case 'i64': return 8; + case 'float': return 4; + case 'double': return 8; + default: { + if (type[type.length-1] === '*') { + return Runtime.QUANTUM_SIZE; // A pointer + } else if (type[0] === 'i') { + var bits = parseInt(type.substr(1)); + assert(bits % 8 === 0); + return bits/8; + } else { + return 0; + } + } + } + }, + getNativeFieldSize: function (type) { + return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE); + }, + dedup: function dedup(items, ident) { + var seen = {}; + if (ident) { + return items.filter(function(item) { + if (seen[item[ident]]) return false; + seen[item[ident]] = true; + return true; + }); + } else { + return items.filter(function(item) { + if (seen[item]) return false; + seen[item] = true; + return true; + }); + } +}, + set: function set() { + var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; + var ret = {}; + for (var i = 0; i < args.length; i++) { + ret[args[i]] = 0; + } + return ret; +}, + STACK_ALIGN: 8, + getAlignSize: function (type, size, vararg) { + // we align i64s and doubles on 64-bit boundaries, unlike x86 + if (vararg) return 8; + if (!vararg && (type == 'i64' || type == 'double')) return 8; + if (!type) return Math.min(size, 8); // align structures internally to 64 bits + return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); + }, + calculateStructAlignment: function calculateStructAlignment(type) { + type.flatSize = 0; + type.alignSize = 0; + var diffs = []; + var prev = -1; + var index = 0; + type.flatIndexes = type.fields.map(function(field) { + index++; + var size, alignSize; + if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { + size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. + alignSize = Runtime.getAlignSize(field, size); + } else if (Runtime.isStructType(field)) { + if (field[1] === '0') { + // this is [0 x something]. When inside another structure like here, it must be at the end, + // and it adds no size + // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); + size = 0; + if (Types.types[field]) { + alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); + } else { + alignSize = type.alignSize || QUANTUM_SIZE; + } + } else { + size = Types.types[field].flatSize; + alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); + } + } else if (field[0] == 'b') { + // bN, large number field, like a [N x i8] + size = field.substr(1)|0; + alignSize = 1; + } else if (field[0] === '<') { + // vector type + size = alignSize = Types.types[field].flatSize; // fully aligned + } else if (field[0] === 'i') { + // illegal integer field, that could not be legalized because it is an internal structure field + // it is ok to have such fields, if we just use them as markers of field size and nothing more complex + size = alignSize = parseInt(field.substr(1))/8; + assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field); + } else { + assert(false, 'invalid type for calculateStructAlignment'); + } + if (type.packed) alignSize = 1; + type.alignSize = Math.max(type.alignSize, alignSize); + var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory + type.flatSize = curr + size; + if (prev >= 0) { + diffs.push(curr-prev); + } + prev = curr; + return curr; + }); + if (type.name_ && type.name_[0] === '[') { + // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid + // allocating a potentially huge array for [999999 x i8] etc. + type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2; + } + type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); + if (diffs.length == 0) { + type.flatFactor = type.flatSize; + } else if (Runtime.dedup(diffs).length == 1) { + type.flatFactor = diffs[0]; + } + type.needsFlattening = (type.flatFactor != 1); + return type.flatIndexes; + }, + generateStructInfo: function (struct, typeName, offset) { + var type, alignment; + if (typeName) { + offset = offset || 0; + type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; + if (!type) return null; + if (type.fields.length != struct.length) { + printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); + return null; + } + alignment = type.flatIndexes; + } else { + var type = { fields: struct.map(function(item) { return item[0] }) }; + alignment = Runtime.calculateStructAlignment(type); + } + var ret = { + __size__: type.flatSize + }; + if (typeName) { + struct.forEach(function(item, i) { + if (typeof item === 'string') { + ret[item] = alignment[i] + offset; + } else { + // embedded struct + var key; + for (var k in item) key = k; + ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); + } + }); + } else { + struct.forEach(function(item, i) { + ret[item[1]] = alignment[i]; + }); + } + return ret; + }, + dynCall: function (sig, ptr, args) { + if (args && args.length) { + if (!args.splice) args = Array.prototype.slice.call(args); + args.splice(0, 0, ptr); + return Module['dynCall_' + sig].apply(null, args); + } else { + return Module['dynCall_' + sig].call(null, ptr); + } + }, + functionPointers: [null], + addFunction: function (func) { + for (var i = 0; i < Runtime.functionPointers.length; i++) { + if (!Runtime.functionPointers[i]) { + Runtime.functionPointers[i] = func; + return 2*(1 + i); + } + } + throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; + }, + removeFunction: function (index) { + Runtime.functionPointers[(index-2)/2] = null; + }, + getAsmConst: function (code, numArgs) { + // code is a constant string on the heap, so we can cache these + if (!Runtime.asmConstCache) Runtime.asmConstCache = {}; + var func = Runtime.asmConstCache[code]; + if (func) return func; + var args = []; + for (var i = 0; i < numArgs; i++) { + args.push(String.fromCharCode(36) + i); // $0, $1 etc + } + code = Pointer_stringify(code); + if (code[0] === '"') { + // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct + if (code.indexOf('"', 1) === code.length-1) { + code = code.substr(1, code.length-2); + } else { + // something invalid happened, e.g. EM_ASM("..code($0)..", input) + abort('invalid EM_ASM input |' + code + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'); + } + } + return Runtime.asmConstCache[code] = eval('(function(' + args.join(',') + '){ ' + code + ' })'); // new Function does not allow upvars in node + }, + warnOnce: function (text) { + if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; + if (!Runtime.warnOnce.shown[text]) { + Runtime.warnOnce.shown[text] = 1; + Module.printErr(text); + } + }, + funcWrappers: {}, + getFuncWrapper: function (func, sig) { + assert(sig); + if (!Runtime.funcWrappers[func]) { + Runtime.funcWrappers[func] = function dynCall_wrapper() { + return Runtime.dynCall(sig, func, arguments); + }; + } + return Runtime.funcWrappers[func]; + }, + UTF8Processor: function () { + var buffer = []; + var needed = 0; + this.processCChar = function (code) { + code = code & 0xFF; + + if (buffer.length == 0) { + if ((code & 0x80) == 0x00) { // 0xxxxxxx + return String.fromCharCode(code); + } + buffer.push(code); + if ((code & 0xE0) == 0xC0) { // 110xxxxx + needed = 1; + } else if ((code & 0xF0) == 0xE0) { // 1110xxxx + needed = 2; + } else { // 11110xxx + needed = 3; + } + return ''; + } + + if (needed) { + buffer.push(code); + needed--; + if (needed > 0) return ''; + } + + var c1 = buffer[0]; + var c2 = buffer[1]; + var c3 = buffer[2]; + var c4 = buffer[3]; + var ret; + if (buffer.length == 2) { + ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); + } else if (buffer.length == 3) { + ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); + } else { + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | + ((c3 & 0x3F) << 6) | (c4 & 0x3F); + ret = String.fromCharCode( + Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, + (codePoint - 0x10000) % 0x400 + 0xDC00); + } + buffer.length = 0; + return ret; + } + this.processJSString = function processJSString(string) { + string = unescape(encodeURIComponent(string)); + var ret = []; + for (var i = 0; i < string.length; i++) { + ret.push(string.charCodeAt(i)); + } + return ret; + } + }, + stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; }, + staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; }, + dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, + alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); return ret; }, + makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((+((low>>>0)))+((+((high>>>0)))*(+4294967296))) : ((+((low>>>0)))+((+((high|0)))*(+4294967296)))); return ret; }, + GLOBAL_BASE: 8, + QUANTUM_SIZE: 4, + __dummy__: 0 +} + + +Module['Runtime'] = Runtime; + +function jsCall() { + var args = Array.prototype.slice.call(arguments); + return Runtime.functionPointers[args[0]].apply(null, args.slice(1)); +} + + + + + + + + +//======================================== +// Runtime essentials +//======================================== + +var __THREW__ = 0; // Used in checking for thrown exceptions. + +var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() +var EXITSTATUS = 0; + +var undef = 0; +// tempInt is used for 32-bit signed values or smaller. tempBigInt is used +// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt +var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat; +var tempI64, tempI64b; +var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; + +function assert(condition, text) { + if (!condition) { + abort('Assertion failed: ' + text); + } +} + +var globalScope = this; + +// C calling interface. A convenient way to call C functions (in C files, or +// defined with extern "C"). +// +// Note: LLVM optimizations can inline and remove functions, after which you will not be +// able to call them. Closure can also do so. To avoid that, add your function to +// the exports using something like +// +// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' +// +// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") +// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and +// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). +// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType, +// except that 'array' is not possible (there is no way for us to know the length of the array) +// @param args An array of the arguments to the function, as native JS values (as in returnType) +// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). +// @return The return value, as a native JS value (as in returnType) +function ccall(ident, returnType, argTypes, args) { + return ccallFunc(getCFunc(ident), returnType, argTypes, args); +} +Module["ccall"] = ccall; + +// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) +function getCFunc(ident) { + try { + var func = Module['_' + ident]; // closure exported function + if (!func) func = eval('_' + ident); // explicit lookup + } catch(e) { + } + assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); + return func; +} + +// Internal function that does a C call using a function, not an identifier +function ccallFunc(func, returnType, argTypes, args) { + var stack = 0; + function toC(value, type) { + if (type == 'string') { + if (value === null || value === undefined || value === 0) return 0; // null string + value = intArrayFromString(value); + type = 'array'; + } + if (type == 'array') { + if (!stack) stack = Runtime.stackSave(); + var ret = Runtime.stackAlloc(value.length); + writeArrayToMemory(value, ret); + return ret; + } + return value; + } + function fromC(value, type) { + if (type == 'string') { + return Pointer_stringify(value); + } + assert(type != 'array'); + return value; + } + var i = 0; + var cArgs = args ? args.map(function(arg) { + return toC(arg, argTypes[i++]); + }) : []; + var ret = fromC(func.apply(null, cArgs), returnType); + if (stack) Runtime.stackRestore(stack); + return ret; +} + +// Returns a native JS wrapper for a C function. This is similar to ccall, but +// returns a function you can call repeatedly in a normal way. For example: +// +// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); +// alert(my_function(5, 22)); +// alert(my_function(99, 12)); +// +function cwrap(ident, returnType, argTypes) { + var func = getCFunc(ident); + return function() { + return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); + } +} +Module["cwrap"] = cwrap; + +// Sets a value in memory in a dynamic way at run-time. Uses the +// type data. This is the same as makeSetValue, except that +// makeSetValue is done at compile-time and generates the needed +// code then, whereas this function picks the right code at +// run-time. +// Note that setValue and getValue only do *aligned* writes and reads! +// Note that ccall uses JS types as for defining types, while setValue and +// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation +function setValue(ptr, value, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + 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': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= (+1) ? (tempDouble > (+0) ? ((Math_min((+(Math_floor((tempDouble)/(+4294967296)))), (+4294967295)))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+4294967296))))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break; + case 'float': HEAPF32[((ptr)>>2)]=value; break; + case 'double': HEAPF64[((ptr)>>3)]=value; break; + default: abort('invalid type for setValue: ' + type); + } +} +Module['setValue'] = setValue; + +// Parallel to setValue. +function getValue(ptr, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + 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': return HEAP32[((ptr)>>2)]; + case 'float': return HEAPF32[((ptr)>>2)]; + case 'double': return HEAPF64[((ptr)>>3)]; + default: abort('invalid type for setValue: ' + type); + } + return null; +} +Module['getValue'] = getValue; + +var ALLOC_NORMAL = 0; // Tries to use _malloc() +var ALLOC_STACK = 1; // Lives for the duration of the current function call +var ALLOC_STATIC = 2; // Cannot be freed +var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk +var ALLOC_NONE = 4; // Do not allocate +Module['ALLOC_NORMAL'] = ALLOC_NORMAL; +Module['ALLOC_STACK'] = ALLOC_STACK; +Module['ALLOC_STATIC'] = ALLOC_STATIC; +Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; +Module['ALLOC_NONE'] = ALLOC_NONE; + +// allocate(): This is for internal use. You can use it yourself as well, but the interface +// is a little tricky (see docs right below). The reason is that it is optimized +// for multiple syntaxes to save space in generated code. So you should +// normally not use allocate(), and instead allocate memory using _malloc(), +// initialize it with setValue(), and so forth. +// @slab: An array of data, or a number. If a number, then the size of the block to allocate, +// in *bytes* (note that this is sometimes confusing: the next parameter does not +// affect this!) +// @types: Either an array of types, one for each byte (or 0 if no type at that position), +// or a single type which is used for the entire block. This only matters if there +// is initial data - if @slab is a number, then this does not matter at all and is +// ignored. +// @allocator: How to allocate memory, see ALLOC_* +function allocate(slab, types, allocator, ptr) { + var zeroinit, size; + if (typeof slab === 'number') { + zeroinit = true; + size = slab; + } else { + zeroinit = false; + size = slab.length; + } + + var singleType = typeof types === 'string' ? types : null; + + var ret; + if (allocator == ALLOC_NONE) { + ret = ptr; + } else { + ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length)); + } + + if (zeroinit) { + var ptr = ret, stop; + assert((ret & 3) == 0); + stop = ret + (size & ~3); + for (; ptr < stop; ptr += 4) { + HEAP32[((ptr)>>2)]=0; + } + stop = ret + size; + while (ptr < stop) { + HEAP8[((ptr++)|0)]=0; + } + return ret; + } + + if (singleType === 'i8') { + if (slab.subarray || slab.slice) { + HEAPU8.set(slab, ret); + } else { + HEAPU8.set(new Uint8Array(slab), ret); + } + return ret; + } + + var i = 0, type, typeSize, previousType; + while (i < size) { + var curr = slab[i]; + + if (typeof curr === 'function') { + curr = Runtime.getFunctionIndex(curr); + } + + type = singleType || types[i]; + if (type === 0) { + i++; + continue; + } + + if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later + + setValue(ret+i, curr, type); + + // no need to look up size unless type changes, so cache it + if (previousType !== type) { + typeSize = Runtime.getNativeTypeSize(type); + previousType = type; + } + i += typeSize; + } + + return ret; +} +Module['allocate'] = allocate; + +function Pointer_stringify(ptr, /* optional */ length) { + // TODO: use TextDecoder + // Find the length, and check for UTF while doing so + var hasUtf = false; + var t; + var i = 0; + while (1) { + t = HEAPU8[(((ptr)+(i))|0)]; + if (t >= 128) hasUtf = true; + else if (t == 0 && !length) break; + i++; + if (length && i == length) break; + } + if (!length) length = i; + + var ret = ''; + + if (!hasUtf) { + var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack + var curr; + while (length > 0) { + curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK))); + ret = ret ? ret + curr : curr; + ptr += MAX_CHUNK; + length -= MAX_CHUNK; + } + return ret; + } + + var utf8 = new Runtime.UTF8Processor(); + for (i = 0; i < length; i++) { + t = HEAPU8[(((ptr)+(i))|0)]; + ret += utf8.processCChar(t); + } + return ret; +} +Module['Pointer_stringify'] = Pointer_stringify; + +// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. +function UTF16ToString(ptr) { + var i = 0; + + var str = ''; + while (1) { + var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; + if (codeUnit == 0) + return str; + ++i; + // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. + str += String.fromCharCode(codeUnit); + } +} +Module['UTF16ToString'] = UTF16ToString; + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP. +function stringToUTF16(str, outPtr) { + for(var i = 0; i < str.length; ++i) { + // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit; + } + // Null-terminate the pointer to the HEAP. + HEAP16[(((outPtr)+(str.length*2))>>1)]=0; +} +Module['stringToUTF16'] = stringToUTF16; + +// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. +function UTF32ToString(ptr) { + var i = 0; + + var str = ''; + while (1) { + var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; + if (utf32 == 0) + return str; + ++i; + // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. + if (utf32 >= 0x10000) { + var ch = utf32 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } else { + str += String.fromCharCode(utf32); + } + } +} +Module['UTF32ToString'] = UTF32ToString; + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP, +// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string. +function stringToUTF32(str, outPtr) { + var iChar = 0; + for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { + var trailSurrogate = str.charCodeAt(++iCodeUnit); + codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); + } + HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit; + ++iChar; + } + // Null-terminate the pointer to the HEAP. + HEAP32[(((outPtr)+(iChar*4))>>2)]=0; +} +Module['stringToUTF32'] = stringToUTF32; + +function demangle(func) { + try { + // Special-case the entry point, since its name differs from other name mangling. + if (func == 'Object._main' || func == '_main') { + return 'main()'; + } + if (typeof func === 'number') func = Pointer_stringify(func); + if (func[0] !== '_') return func; + if (func[1] !== '_') return func; // C function + if (func[2] !== 'Z') return func; + switch (func[3]) { + case 'n': return 'operator new()'; + case 'd': return 'operator delete()'; + } + var i = 3; + // params, etc. + var basicTypes = { + 'v': 'void', + 'b': 'bool', + 'c': 'char', + 's': 'short', + 'i': 'int', + 'l': 'long', + 'f': 'float', + 'd': 'double', + 'w': 'wchar_t', + 'a': 'signed char', + 'h': 'unsigned char', + 't': 'unsigned short', + 'j': 'unsigned int', + 'm': 'unsigned long', + 'x': 'long long', + 'y': 'unsigned long long', + 'z': '...' + }; + function dump(x) { + //return; + if (x) Module.print(x); + Module.print(func); + var pre = ''; + for (var a = 0; a < i; a++) pre += ' '; + Module.print (pre + '^'); + } + var subs = []; + function parseNested() { + i++; + if (func[i] === 'K') i++; // ignore const + var parts = []; + while (func[i] !== 'E') { + if (func[i] === 'S') { // substitution + i++; + var next = func.indexOf('_', i); + var num = func.substring(i, next) || 0; + parts.push(subs[num] || '?'); + i = next+1; + continue; + } + if (func[i] === 'C') { // constructor + parts.push(parts[parts.length-1]); + i += 2; + continue; + } + var size = parseInt(func.substr(i)); + var pre = size.toString().length; + if (!size || !pre) { i--; break; } // counter i++ below us + var curr = func.substr(i + pre, size); + parts.push(curr); + subs.push(curr); + i += pre + size; + } + i++; // skip E + return parts; + } + var first = true; + function parse(rawList, limit, allowVoid) { // main parser + limit = limit || Infinity; + var ret = '', list = []; + function flushList() { + return '(' + list.join(', ') + ')'; + } + var name; + if (func[i] === 'N') { + // namespaced N-E + name = parseNested().join('::'); + limit--; + if (limit === 0) return rawList ? [name] : name; + } else { + // not namespaced + if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' + var size = parseInt(func.substr(i)); + if (size) { + var pre = size.toString().length; + name = func.substr(i + pre, size); + i += pre + size; + } + } + first = false; + if (func[i] === 'I') { + i++; + var iList = parse(true); + var iRet = parse(true, 1, true); + ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>'; + } else { + ret = name; + } + paramLoop: while (i < func.length && limit-- > 0) { + //dump('paramLoop'); + var c = func[i++]; + if (c in basicTypes) { + list.push(basicTypes[c]); + } else { + switch (c) { + case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer + case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference + case 'L': { // literal + i++; // skip basic type + var end = func.indexOf('E', i); + var size = end - i; + list.push(func.substr(i, size)); + i += size + 2; // size + 'EE' + break; + } + case 'A': { // array + var size = parseInt(func.substr(i)); + i += size.toString().length; + if (func[i] !== '_') throw '?'; + i++; // skip _ + list.push(parse(true, 1, true)[0] + ' [' + size + ']'); + break; + } + case 'E': break paramLoop; + default: ret += '?' + c; break paramLoop; + } + } + } + if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void) + return rawList ? list : ret + flushList(); + } + return parse(); + } catch(e) { + return func; + } +} + +function demangleAll(text) { + return text.replace(/__Z[\w\d_]+/g, function(x) { var y = demangle(x); return x === y ? x : (x + ' [' + y + ']') }); +} + +function stackTrace() { + var stack = new Error().stack; + return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6. +} + +// Memory management + +var PAGE_SIZE = 4096; +function alignMemoryPage(x) { + return (x+4095)&-4096; +} + +var HEAP; +var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + +var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area +var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area +var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk + +function enlargeMemory() { + abort('Cannot enlarge memory arrays in asm.js. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + TOTAL_MEMORY + ', or (2) set Module.TOTAL_MEMORY before the program runs.'); +} + +var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; +var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 234881024; +var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; + +var totalMemory = 4096; +while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) { + if (totalMemory < 16*1024*1024) { + totalMemory *= 2; + } else { + totalMemory += 16*1024*1024 + } +} +if (totalMemory !== TOTAL_MEMORY) { + Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable'); + TOTAL_MEMORY = totalMemory; +} + +// Initialize the runtime's memory +// check for full engine support (use string 'subarray' to avoid closure compiler confusion) +assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), + 'Cannot fallback to non-typed array case: Code is too specialized'); + +var buffer = new ArrayBuffer(TOTAL_MEMORY); +HEAP8 = new Int8Array(buffer); +HEAP16 = new Int16Array(buffer); +HEAP32 = new Int32Array(buffer); +HEAPU8 = new Uint8Array(buffer); +HEAPU16 = new Uint16Array(buffer); +HEAPU32 = new Uint32Array(buffer); +HEAPF32 = new Float32Array(buffer); +HEAPF64 = new Float64Array(buffer); + +// Endianness check (note: assumes compiler arch was little-endian) +HEAP32[0] = 255; +assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); + +Module['HEAP'] = HEAP; +Module['HEAP8'] = HEAP8; +Module['HEAP16'] = HEAP16; +Module['HEAP32'] = HEAP32; +Module['HEAPU8'] = HEAPU8; +Module['HEAPU16'] = HEAPU16; +Module['HEAPU32'] = HEAPU32; +Module['HEAPF32'] = HEAPF32; +Module['HEAPF64'] = HEAPF64; + +function callRuntimeCallbacks(callbacks) { + while(callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == 'function') { + callback(); + continue; + } + var func = callback.func; + if (typeof func === 'number') { + if (callback.arg === undefined) { + Runtime.dynCall('v', func); + } else { + Runtime.dynCall('vi', func, [callback.arg]); + } + } else { + func(callback.arg === undefined ? null : callback.arg); + } + } +} + +var __ATPRERUN__ = []; // functions called before the runtime is initialized +var __ATINIT__ = []; // functions called during startup +var __ATMAIN__ = []; // functions called when main() is to be run +var __ATEXIT__ = []; // functions called during shutdown +var __ATPOSTRUN__ = []; // functions called after the runtime has exited + +var runtimeInitialized = false; + +function preRun() { + // compatibility - merge in anything from Module['preRun'] at this time + if (Module['preRun']) { + if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; + while (Module['preRun'].length) { + addOnPreRun(Module['preRun'].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); +} + +function ensureInitRuntime() { + if (runtimeInitialized) return; + runtimeInitialized = true; + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + callRuntimeCallbacks(__ATMAIN__); +} + +function exitRuntime() { + callRuntimeCallbacks(__ATEXIT__); +} + +function postRun() { + // compatibility - merge in anything from Module['postRun'] at this time + 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); +} +Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} +Module['addOnInit'] = Module.addOnInit = addOnInit; + +function addOnPreMain(cb) { + __ATMAIN__.unshift(cb); +} +Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; + +function addOnExit(cb) { + __ATEXIT__.unshift(cb); +} +Module['addOnExit'] = Module.addOnExit = addOnExit; + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} +Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; + +// Tools + +// This processes a JS string into a C-line array of numbers, 0-terminated. +// For LLVM-originating strings, see parser.js:parseLLVMString function +function intArrayFromString(stringy, dontAddNull, length /* optional */) { + var ret = (new Runtime.UTF8Processor()).processJSString(stringy); + if (length) { + ret.length = length; + } + if (!dontAddNull) { + ret.push(0); + } + return ret; +} +Module['intArrayFromString'] = intArrayFromString; + +function intArrayToString(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + var chr = array[i]; + if (chr > 0xFF) { + chr &= 0xFF; + } + ret.push(String.fromCharCode(chr)); + } + return ret.join(''); +} +Module['intArrayToString'] = intArrayToString; + +// Write a Javascript array to somewhere in the heap +function writeStringToMemory(string, buffer, dontAddNull) { + var array = intArrayFromString(string, dontAddNull); + var i = 0; + while (i < array.length) { + var chr = array[i]; + HEAP8[(((buffer)+(i))|0)]=chr; + i = i + 1; + } +} +Module['writeStringToMemory'] = writeStringToMemory; + +function writeArrayToMemory(array, buffer) { + for (var i = 0; i < array.length; i++) { + HEAP8[(((buffer)+(i))|0)]=array[i]; + } +} +Module['writeArrayToMemory'] = writeArrayToMemory; + +function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; i++) { + HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i); + } + if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0; +} +Module['writeAsciiToMemory'] = writeAsciiToMemory; + +function unSign(value, bits, ignore) { + if (value >= 0) { + return value; + } + return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts + : Math.pow(2, bits) + value; +} +function reSign(value, bits, ignore) { + if (value <= 0) { + return value; + } + var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 + : Math.pow(2, bits-1); + if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that + // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors + // TODO: In i64 mode 1, resign the two parts separately and safely + value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts + } + return value; +} + +// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) +if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { + var ah = a >>> 16; + var al = a & 0xffff; + var bh = b >>> 16; + var bl = b & 0xffff; + return (al*bl + ((ah*bl + al*bh) << 16))|0; +}; +Math.imul = Math['imul']; + + +var Math_abs = Math.abs; +var Math_cos = Math.cos; +var Math_sin = Math.sin; +var Math_tan = Math.tan; +var Math_acos = Math.acos; +var Math_asin = Math.asin; +var Math_atan = Math.atan; +var Math_atan2 = Math.atan2; +var Math_exp = Math.exp; +var Math_log = Math.log; +var Math_sqrt = Math.sqrt; +var Math_ceil = Math.ceil; +var Math_floor = Math.floor; +var Math_pow = Math.pow; +var Math_imul = Math.imul; +var Math_fround = Math.fround; +var Math_min = Math.min; + +// A counter of dependencies for calling run(). If we need to +// do asynchronous work before running, increment this and +// decrement it. Incrementing must happen in a place like +// PRE_RUN_ADDITIONS (used by emcc to add file preloading). +// Note that you can add dependencies in preRun, even though +// it happens right before run - run will be postponed until +// the dependencies are met. +var runDependencies = 0; +var runDependencyWatcher = null; +var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled + +function addRunDependency(id) { + runDependencies++; + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } +} +Module['addRunDependency'] = addRunDependency; +function removeRunDependency(id) { + runDependencies--; + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); // can add another dependenciesFulfilled + } + } +} +Module['removeRunDependency'] = removeRunDependency; + +Module["preloadedImages"] = {}; // maps url to image data +Module["preloadedAudios"] = {}; // maps url to audio data + + +var memoryInitializer = null; + +// === Body === + + + +STATIC_BASE = 8; + +STATICTOP = STATIC_BASE + 30344800; + + +/* global initializers */ __ATINIT__.push({ func: function() { runPostSets() } }); + + + + + + + + + + + + + + + + + + + + + + + + + +var _stdout; +var _stdout=_stdout=allocate(1, "i32*", ALLOC_STATIC); +var _stderr; +var _stderr=_stderr=allocate(1, "i32*", ALLOC_STATIC); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +var _in6addr_any; +var _in6addr_any=_in6addr_any=allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/* memory initializer */ allocate([106,28,141,56,82,187,30,58,8,105,220,58,130,237,87,59,137,99,178,59,3,42,5,60,48,220,57,60,180,62,119,60,28,163,158,60,209,242,197,60,254,134,241,60,155,171,16,61,5,173,42,61,132,194,70,61,83,230,100,61,17,137,130,61,135,159,147,61,203,178,165,61,209,190,184,61,58,191,204,61,84,175,225,61,20,138,247,61,14,37,7,62,217,244,18,62,95,49,31,62,104,215,43,62,138,227,56,62,48,82,70,62,148,31,84,62,191,71,98,62,142,198,112,62,176,151,127,62,82,91,135,62,96,15,143,62,152,229,150,62,121,219,158,62,112,238,166,62,216,27,175,62,251,96,183,62,17,187,191,62,70,39,200,62,183,162,208,62,120,42,217,62,148,187,225,62,12,83,234,62,222,237,242,62,6,137,251,62,190,16,2,63,31,90,6,63,36,159,10,63,80,222,14,63,43,22,19,63,65,69,23,63,37,106,27,63,115,131,31,63,206,143,35,63,230,141,39,63,116,124,43,63,63,90,47,63,25,38,51,63,231,222,54,63,153,131,58,63,51,19,62,63,197,140,65,63,119,239,68,63,127,58,72,63,39,109,75,63,206,134,78,63,229,134,81,63,241,108,84,63,142,56,87,63,105,233,89,63,69,127,92,63,250,249,94,63,115,89,97,63,175,157,99,63,193,198,101,63,207,212,103,63,17,200,105,63,210,160,107,63,110,95,109,63,80,4,111,63,244,143,112,63,230,2,114,63,189,93,115,63,31,161,116,63,191,205,117,63,87,228,118,63,176,229,119,63,151,210,120,63,227,171,121,63,115,114,122,63,39,39,123,63,231,202,123,63,157,94,124,63,53,227,124,63,156,89,125,63,189,194,125,63,134,31,126,63,222,112,126,63,171,183,126,63,207,244,126,63,38,41,127,63,134,85,127,63,190,122,127,63,150,153,127,63,204,178,127,63,20,199,127,63,28,215,127,63,130,227,127,63,221,236,127,63,182,243,127,63,138,248,127,63,200,251,127,63,214,253,127,63,7,255,127,63,165,255,127,63,232,255,127,63,253,255,127,63,0,0,128,63,40,2,0,0,240,1,0,0,240,226,1,0,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,49,2,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,223,1,0,168,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,39,2,0,88,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,220,1,0,172,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,30,2,0,176,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,216,1,0,180,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,212,1,0,4,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,206,1,0,8,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,202,1,0,12,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,198,1,0,16,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,192,1,0,20,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,188,1,0,24,1,0,0,3,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,184,1,0,36,1,0,0,3,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,180,1,0,48,1,0,0,3,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,177,1,0,60,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,175,1,0,64,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,1,0,68,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,165,1,0,72,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,162,1,0,76,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,158,1,0,80,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,155,1,0,84,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,2,0,6,0,0,0,12,0,0,0,48,0,0,0,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,172,2,0,0,0,0,0,168,170,2,0,0,0,0,0,96,169,2,0,0,0,0,0,152,168,2,0,0,0,0,0,152,167,2,0,0,0,0,0,216,166,2,0,0,0,0,0,176,165,2,0,0,0,0,0,232,163,2,0,0,0,0,0,16,162,2,0,0,0,0,0,128,160,2,0,0,0,0,0,192,158,2,0,0,0,0,0,40,157,2,0,0,0,0,0,128,156,2,0,0,0,0,0,200,155,2,0,6,0,0,0,240,154,2,0,6,0,0,0,24,154,2,0,6,0,0,0,120,153,2,0,5,0,0,0,24,152,2,0,5,0,0,0,160,149,2,0,5,0,0,0,248,148,2,0,0,0,0,0,184,147,2,0,0,0,0,0,0,146,2,0,4,0,0,0,184,144,2,0,4,0,0,0,232,143,2,0,0,0,0,0,216,142,2,0,2,0,0,0,72,142,2,0,0,0,0,0,104,141,2,0,0,0,0,0,88,138,2,0,0,0,0,0,88,136,2,0,5,0,0,0,88,135,2,0,5,0,0,0,40,134,2,0,5,0,0,0,232,132,2,0,5,0,0,0,184,131,2,0,4,0,0,0,216,129,2,0,4,0,0,0,72,129,2,0,4,0,0,0,208,128,2,0,5,0,0,0,112,127,2,0,4,0,0,0,192,125,2,0,1,0,0,0,0,124,2,0,4,0,0,0,224,122,2,0,4,0,0,0,248,121,2,0,1,0,0,0,184,120,2,0,5,0,0,0,240,119,2,0,5,0,0,0,248,118,2,0,1,0,0,0,96,118,2,0,5,0,0,0,144,117,2,0,6,0,0,0,176,116,2,0,6,0,0,0,8,115,2,0,1,0,0,0,40,113,2,0,1,0,0,0,40,112,2,0,3,0,0,0,56,110,2,0,5,0,0,0,240,108,2,0,4,0,0,0,48,108,2,0,4,0,0,0,200,107,2,0,4,0,0,0,40,107,2,0,4,0,0,0,176,106,2,0,4,0,0,0,72,106,2,0,3,0,0,0,184,104,2,0,3,0,0,0,0,103,2,0,4,0,0,0,184,101,2,0,5,0,0,0,248,100,2,0,4,0,0,0,120,99,2,0,4,0,0,0,200,98,2,0,1,0,0,0,24,222,0,0,248,0,0,0,128,219,0,0,68,1,0,0,160,215,0,0,30,0,0,0,176,212,0,0,112,0,0,0,144,210,0,0,228,0,0,0,144,145,1,0,214,0,0,0,176,208,0,0,220,0,0,0,0,207,0,0,250,0,0,0,0,0,0,0,0,0,0,0,126,124,119,109,87,41,19,9,4,2,0,0,0,0,0,0,0,255,0,255,0,255,0,255,0,255,0,254,1,0,1,255,0,254,0,253,2,0,1,255,0,254,0,253,3,0,1,255,2,1,0,0,0,0,0,0,240,140,1,0,224,128,2,0,224,33,2,0,224,235,1,0,88,195,1,0,104,156,1,0,80,243,0,0,24,213,0,0,168,189,0,0,16,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,16,0,0,0,17,0,0,0,19,0,0,0,21,0,0,0,23,0,0,0,25,0,0,0,28,0,0,0,31,0,0,0,34,0,0,0,37,0,0,0,41,0,0,0,45,0,0,0,50,0,0,0,55,0,0,0,60,0,0,0,66,0,0,0,73,0,0,0,80,0,0,0,88,0,0,0,97,0,0,0,107,0,0,0,118,0,0,0,130,0,0,0,143,0,0,0,157,0,0,0,173,0,0,0,190,0,0,0,209,0,0,0,230,0,0,0,253,0,0,0,23,1,0,0,51,1,0,0,81,1,0,0,115,1,0,0,152,1,0,0,193,1,0,0,238,1,0,0,32,2,0,0,86,2,0,0,146,2,0,0,212,2,0,0,28,3,0,0,108,3,0,0,195,3,0,0,36,4,0,0,142,4,0,0,2,5,0,0,131,5,0,0,16,6,0,0,171,6,0,0,86,7,0,0,18,8,0,0,224,8,0,0,195,9,0,0,189,10,0,0,208,11,0,0,255,12,0,0,76,14,0,0,186,15,0,0,76,17,0,0,7,19,0,0,238,20,0,0,6,23,0,0,84,25,0,0,220,27,0,0,165,30,0,0,182,33,0,0,21,37,0,0,202,40,0,0,223,44,0,0,91,49,0,0,75,54,0,0,185,59,0,0,178,65,0,0,68,72,0,0,126,79,0,0,113,87,0,0,47,96,0,0,206,105,0,0,98,116,0,0,255,127,0,0,0,0,0,0,16,0,0,0,11,0,0,0,10,0,0,0,16,0,0,0,24,0,0,0,40,0,0,0,51,0,0,0,61,0,0,0,12,0,0,0,12,0,0,0,14,0,0,0,19,0,0,0,26,0,0,0,58,0,0,0,60,0,0,0,55,0,0,0,14,0,0,0,13,0,0,0,16,0,0,0,24,0,0,0,40,0,0,0,57,0,0,0,69,0,0,0,56,0,0,0,14,0,0,0,17,0,0,0,22,0,0,0,29,0,0,0,51,0,0,0,87,0,0,0,80,0,0,0,62,0,0,0,18,0,0,0,22,0,0,0,37,0,0,0,56,0,0,0,68,0,0,0,109,0,0,0,103,0,0,0,77,0,0,0,24,0,0,0,35,0,0,0,55,0,0,0,64,0,0,0,81,0,0,0,104,0,0,0,113,0,0,0,92,0,0,0,49,0,0,0,64,0,0,0,78,0,0,0,87,0,0,0,103,0,0,0,121,0,0,0,120,0,0,0,101,0,0,0,72,0,0,0,92,0,0,0,95,0,0,0,98,0,0,0,112,0,0,0,100,0,0,0,103,0,0,0,99,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,0,0,0,0,1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250,0,0,0,0,0,0,0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250,0,0,0,0,0,0,0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125,0,0,0,0,0,0,0,0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119,0,0,0,0,0,0,0,17,0,0,0,18,0,0,0,24,0,0,0,47,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,18,0,0,0,21,0,0,0,26,0,0,0,66,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,24,0,0,0,26,0,0,0,56,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,47,0,0,0,66,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,197,88,33,123,252,115,98,104,197,88,191,69,11,48,126,24,159,83,252,115,65,109,84,98,159,83,179,65,65,45,18,23,66,75,98,104,84,98,126,88,66,75,33,59,186,40,195,20,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,73,50,191,69,179,65,33,59,73,50,130,39,55,27,224,13,163,34,11,48,65,45,186,40,163,34,55,27,191,18,142,9,168,17,126,24,18,23,195,20,168,17,224,13,142,9,223,4,0,0,0,0,0,0,240,63,239,97,72,177,80,49,246,63,202,111,77,145,174,231,244,63,170,17,108,239,98,208,242,63,0,0,0,0,0,0,240,63,59,191,167,192,105,36,233,63,187,32,199,123,122,81,225,63,93,171,114,222,85,168,209,63,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,197,88,33,123,252,115,98,104,197,88,191,69,11,48,126,24,159,83,252,115,65,109,84,98,159,83,179,65,65,45,18,23,66,75,98,104,84,98,126,88,66,75,33,59,186,40,195,20,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,73,50,191,69,179,65,33,59,73,50,130,39,55,27,224,13,163,34,11,48,65,45,186,40,163,34,55,27,191,18,142,9,168,17,126,24,18,23,195,20,168,17,224,13,142,9,223,4,0,0,0,0,0,0,240,63,239,97,72,177,80,49,246,63,202,111,77,145,174,231,244,63,170,17,108,239,98,208,242,63,0,0,0,0,0,0,240,63,59,191,167,192,105,36,233,63,187,32,199,123,122,81,225,63,93,171,114,222,85,168,209,63,25,23,2,0,0,0,0,0,255,255,255,255,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,128,63,0,0,0,0,0,0,128,63,0,0,128,191,0,0,0,0,0,0,0,0,0,0,128,191,0,0,128,63,0,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,0,0,0,0,0,0,128,63,0,0,128,191,0,0,0,0,0,0,128,63,224,192,160,128,96,64,32,0,213,171,128,85,43,0,0,0,205,154,102,51,0,0,0,0,192,128,64,0,0,0,0,0,171,85,0,0,0,0,0,0,230,0,0,0,0,0,0,0,232,158,10,0,0,0,0,0,92,202,190,216,182,223,154,226,156,230,120,236,122,244,204,252,52,3,134,11,136,19,100,25,102,29,74,32,66,39,164,53,249,247,246,245,244,234,210,202,201,200,197,174,82,59,56,55,54,46,22,12,11,10,9,7,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,254,49,67,77,82,93,99,198,11,18,24,31,36,45,255,46,66,78,87,94,104,208,14,21,32,42,51,66,255,94,104,109,112,115,118,248,53,69,80,88,95,102,0,0,0,0,0,0,0,0,2,5,9,14,20,27,35,44,54,65,77,90,104,119,135,0,0,0,0,0,0,0,130,0,200,58,0,231,130,26,0,244,184,76,12,0,249,214,130,43,6,0,252,232,173,87,24,3,0,253,241,203,131,56,14,2,0,254,246,221,167,94,35,8,1,0,254,249,232,193,130,65,23,5,1,0,255,251,239,211,162,99,45,15,4,1,0,255,251,243,223,186,131,74,33,11,3,1,0,255,252,245,230,202,158,105,57,24,8,2,1,0,255,253,247,235,214,179,132,84,44,19,7,2,1,0,255,254,250,240,223,196,159,112,69,36,15,6,2,1,0,255,254,253,245,231,209,176,136,93,55,27,11,3,2,1,0,255,254,253,252,239,221,194,158,117,76,42,18,4,3,2,1,0,129,0,203,54,0,234,129,23,0,245,184,73,10,0,250,215,129,41,5,0,252,232,173,86,24,3,0,253,240,200,129,56,15,2,0,253,244,217,164,94,38,10,1,0,253,245,226,189,132,71,27,7,1,0,253,246,231,203,159,105,56,23,6,1,0,255,248,235,213,179,133,85,47,19,5,1,0,255,254,243,221,194,159,117,70,37,12,2,1,0,255,254,248,234,208,171,128,85,48,22,8,2,1,0,255,254,250,240,220,189,149,107,67,36,16,6,2,1,0,255,254,251,243,227,201,166,128,90,55,29,13,5,2,1,0,255,254,252,246,234,213,183,147,109,73,43,22,10,4,2,1,0,129,0,207,50,0,236,129,20,0,245,185,72,10,0,249,213,129,42,6,0,250,226,169,87,27,4,0,251,233,194,130,62,20,4,0,250,236,207,160,99,47,17,3,0,255,240,217,182,131,81,41,11,1,0,255,254,233,201,159,107,61,20,2,1,0,255,249,233,206,170,128,86,50,23,7,1,0,255,250,238,217,186,148,108,70,39,18,6,1,0,255,252,243,226,200,166,128,90,56,30,13,4,1,0,255,252,245,231,209,180,146,110,76,47,25,11,4,1,0,255,253,248,237,219,194,163,128,93,62,37,19,8,3,1,0,255,254,250,241,226,205,177,145,111,79,51,30,15,6,2,1,0,128,0,214,42,0,235,128,21,0,244,184,72,11,0,248,214,128,42,7,0,248,225,170,80,25,5,0,251,236,198,126,54,18,3,0,250,238,211,159,82,35,15,5,0,250,231,203,168,128,88,53,25,6,0,252,238,216,185,148,108,71,40,18,4,0,253,243,225,199,166,128,90,57,31,13,3,0,254,246,233,212,183,147,109,73,44,23,10,2,0,255,250,240,223,198,166,128,90,58,33,16,6,1,0,255,251,244,231,210,181,146,110,75,46,25,12,5,1,0,255,253,248,238,221,196,164,128,92,60,35,18,8,3,1,0,255,253,249,242,229,208,180,146,110,76,48,27,14,7,3,1,0,189,0,168,253,105,2,103,119,117,0,97,255,210,251,8,116,52,0,221,0,168,246,116,110,252,255,17,2,234,242,229,102,208,255,246,2,140,240,165,93,176,255,137,3,117,239,6,83,157,255,204,3,130,239,102,71,149,255,199,3,139,240,39,59,153,255,128,3,97,242,174,46,165,255,5,3,207,244,94,34,185,255,99,2,161,247,152,22,210,255,169,1,161,250,180,11,241,190,178,132,87,74,41,14,0,223,193,157,140,106,57,39,18,0,0,0,0,0,0,0,125,51,26,18,15,12,11,10,9,8,7,6,5,4,3,2,1,0,198,105,45,22,15,12,11,10,9,8,7,6,5,4,3,2,1,0,213,162,116,83,59,43,32,24,18,15,12,9,7,6,5,3,2,0,239,187,116,59,28,16,11,10,9,8,7,6,5,4,3,2,1,0,250,229,188,135,86,51,30,19,13,10,8,6,5,4,3,2,1,0,249,235,213,185,156,128,103,83,66,53,42,33,26,21,17,13,10,0,254,249,235,206,164,118,77,46,27,16,10,7,5,4,3,2,1,0,255,253,249,239,220,191,156,119,85,57,37,23,15,10,6,4,2,0,255,253,251,246,237,223,203,179,152,124,98,75,55,40,29,21,15,0,255,254,253,247,220,162,106,67,42,28,18,12,9,6,4,3,2,0,0,0,0,0,253,250,244,233,212,182,150,131,120,110,98,85,72,60,49,40,32,25,19,15,13,11,9,8,7,6,5,4,3,2,1,0,210,208,206,203,199,193,183,168,142,104,74,52,37,27,20,14,10,6,4,2,0,0,0,0,223,201,183,167,152,138,124,111,98,88,79,70,62,56,50,44,39,35,31,27,24,21,18,16,14,12,10,8,6,4,3,2,1,0,0,0,0,0,0,0,188,176,155,138,119,97,67,43,26,10,0,0,0,0,0,0,165,119,80,61,47,35,27,20,14,9,4,0,0,0,0,0,113,63,0,0,0,0,0,0,120,0,0,0,0,0,0,0,224,112,44,15,3,2,1,0,254,237,192,132,70,23,4,0,255,252,226,155,61,11,2,0,250,245,234,203,71,50,42,38,35,33,31,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,42,175,213,201,207,255,64,0,17,0,99,255,97,1,16,254,163,0,39,43,189,86,217,255,6,0,91,0,86,255,186,0,23,0,128,252,192,24,216,77,237,255,220,255,102,0,167,255,232,255,72,1,73,252,8,10,37,62,0,0,0,0,0,0,135,199,61,201,64,0,128,0,134,255,36,0,54,1,0,253,72,2,51,36,69,69,12,0,128,0,18,0,114,255,32,1,139,255,159,252,27,16,123,56,148,107,103,196,17,0,12,0,8,0,1,0,246,255,234,255,226,255,224,255,234,255,3,0,44,0,100,0,168,0,243,0,61,1,125,1,173,1,199,1,228,87,5,197,3,0,242,255,236,255,241,255,2,0,25,0,37,0,25,0,240,255,185,255,149,255,177,255,50,0,36,1,111,2,214,3,8,5,184,5,230,62,198,196,243,255,0,0,20,0,26,0,5,0,225,255,213,255,252,255,65,0,90,0,7,0,99,255,8,255,212,255,81,2,47,6,52,10,199,12,104,2,13,200,246,255,39,0,58,0,210,255,172,255,120,0,184,0,197,254,227,253,4,5,4,21,64,35,0,0,0,0,100,0,240,0,32,0,100,0,243,221,192,181,0,0,0,0,175,148,160,176,178,173,174,164,177,174,196,182,198,192,182,68,62,66,60,72,117,85,90,118,136,151,142,160,142,155,0,0,179,138,140,148,151,149,153,151,163,116,67,82,59,92,72,100,89,92,0,0,0,0,0,0,100,40,16,7,3,1,0,0,100,0,3,0,40,0,3,0,3,0,3,0,5,0,14,0,14,0,10,0,11,0,3,0,8,0,9,0,7,0,3,0,91,1,0,0,0,0,0,0,250,0,3,0,6,0,3,0,3,0,3,0,4,0,3,0,3,0,3,0,205,1,0,0,32,0,16,0,102,38,171,1,160,28,0,0,32,28,0,0,144,24,0,0,240,25,0,0,96,25,0,0,144,27,0,0,208,24,0,0,0,0,0,0,32,0,10,0,20,46,100,1,160,30,0,0,96,28,0,0,176,24,0,0,240,26,0,0,168,25,0,0,216,27,0,0,248,24,0,0,0,0,0,0,255,254,253,244,12,3,2,1,0,255,254,252,224,38,3,2,1,0,255,254,251,209,57,4,2,1,0,255,254,244,195,69,4,2,1,0,255,251,232,184,84,7,2,1,0,255,254,240,186,86,14,2,1,0,255,254,239,178,91,30,5,1,0,255,248,227,177,100,19,2,1,0,255,254,253,238,14,3,2,1,0,255,254,252,218,35,3,2,1,0,255,254,250,208,59,4,2,1,0,255,254,246,194,71,10,2,1,0,255,252,236,183,82,8,2,1,0,255,252,235,180,90,17,2,1,0,255,248,224,171,97,30,4,1,0,255,254,236,173,95,37,7,1,0,0,0,0,0,0,0,0,1,100,102,102,68,68,36,34,96,164,107,158,185,180,185,139,102,64,66,36,34,34,0,1,32,208,139,141,191,152,185,155,104,96,171,104,166,102,102,102,132,1,0,0,0,0,16,16,0,80,109,78,107,185,139,103,101,208,212,141,139,173,153,123,103,36,0,0,0,0,0,0,1,48,0,0,0,0,0,0,32,68,135,123,119,119,103,69,98,68,103,120,118,118,102,71,98,134,136,157,184,182,153,139,134,208,168,248,75,189,143,121,107,32,49,34,34,34,0,17,2,210,235,139,123,185,137,105,134,98,135,104,182,100,183,171,134,100,70,68,70,66,66,34,131,64,166,102,68,36,2,1,0,134,166,102,68,34,34,66,132,212,246,158,139,107,107,87,102,100,219,125,122,137,118,103,132,114,135,137,105,171,106,50,34,164,214,141,143,185,151,121,103,192,34,0,0,0,0,0,1,208,109,74,187,134,249,159,137,102,110,154,118,87,101,119,101,0,2,0,36,36,66,68,35,96,164,102,100,36,0,2,33,167,138,174,102,100,84,2,2,100,107,120,119,36,197,24,0,16,0,0,0,0,99,66,36,36,34,36,34,34,34,34,83,69,36,52,34,116,102,70,68,68,176,102,68,68,34,65,85,68,84,36,116,141,152,139,170,132,187,184,216,137,132,249,168,185,139,104,102,100,68,68,178,218,185,185,170,244,216,187,187,170,244,187,187,219,138,103,155,184,185,137,116,183,155,152,136,132,217,184,184,170,164,217,171,155,139,244,169,184,185,170,164,216,223,218,138,214,143,188,218,168,244,141,136,155,170,168,138,220,219,139,164,219,202,216,137,168,186,246,185,139,116,185,219,185,138,100,100,134,100,102,34,68,68,100,68,168,203,221,218,168,167,154,136,104,70,164,246,171,137,139,137,155,218,219,139,255,255,255,156,4,154,255,255,255,255,255,227,102,15,92,255,255,255,255,255,213,83,24,72,236,255,255,255,255,150,76,33,63,214,255,255,255,190,121,77,43,55,185,255,255,255,245,137,71,43,59,139,255,255,255,255,131,66,50,66,107,194,255,255,166,116,76,55,53,125,255,255,255,255,255,131,6,145,255,255,255,255,255,236,93,15,96,255,255,255,255,255,194,83,25,71,221,255,255,255,255,162,73,34,66,162,255,255,255,210,126,73,43,57,173,255,255,255,201,125,71,48,58,130,255,255,255,166,110,73,57,62,104,210,255,255,251,123,65,55,68,100,171,255,225,204,201,184,183,175,158,154,153,135,119,115,113,110,109,99,98,95,79,68,52,50,48,45,43,32,31,27,18,10,3,0,255,251,235,230,212,201,196,182,167,166,163,151,138,124,110,104,90,78,76,70,69,57,45,34,24,21,11,6,5,4,3,0,212,178,148,129,108,96,85,82,79,77,61,59,57,56,51,49,48,45,42,41,40,38,36,34,31,30,21,12,10,3,1,0,255,245,244,236,233,225,217,203,190,176,175,161,149,136,125,114,102,91,81,71,60,52,43,35,28,20,19,18,12,11,5,0,7,23,38,54,69,85,100,116,131,147,162,178,193,208,223,239,13,25,41,55,69,83,98,112,127,142,157,171,187,203,220,236,15,21,34,51,61,78,92,106,126,136,152,167,185,205,225,240,10,21,36,50,63,79,95,110,126,141,157,173,189,205,221,237,17,20,37,51,59,78,89,107,123,134,150,164,184,205,224,240,10,15,32,51,67,81,96,112,129,142,158,173,189,204,220,236,8,21,37,51,65,79,98,113,126,138,155,168,179,192,209,218,12,15,34,55,63,78,87,108,118,131,148,167,185,203,219,236,16,19,32,36,56,79,91,108,118,136,154,171,186,204,220,237,11,28,43,58,74,89,105,120,135,150,165,180,196,211,226,241,6,16,33,46,60,75,92,107,123,137,156,169,185,199,214,225,11,19,30,44,57,74,89,105,121,135,152,169,186,202,218,234,12,19,29,46,57,71,88,100,120,132,148,165,182,199,216,233,17,23,35,46,56,77,92,106,123,134,152,167,185,204,222,237,14,17,45,53,63,75,89,107,115,132,151,171,188,206,221,240,9,16,29,40,56,71,88,103,119,137,154,171,189,205,222,237,16,19,36,48,57,76,87,105,118,132,150,167,185,202,218,236,12,17,29,54,71,81,94,104,126,136,149,164,182,201,221,237,15,28,47,62,79,97,115,129,142,155,168,180,194,208,223,238,8,14,30,45,62,78,94,111,127,143,159,175,192,207,223,239,17,30,49,62,79,92,107,119,132,145,160,174,190,204,220,235,14,19,36,45,61,76,91,108,121,138,154,172,189,205,222,238,12,18,31,45,60,76,91,107,123,138,154,171,187,204,221,236,13,17,31,43,53,70,83,103,114,131,149,167,185,203,220,237,17,22,35,42,58,78,93,110,125,139,155,170,188,206,224,240,8,15,34,50,67,83,99,115,131,146,162,178,193,209,224,239,13,16,41,66,73,86,95,111,128,137,150,163,183,206,225,241,17,25,37,52,63,75,92,102,119,132,144,160,175,191,212,231,19,31,49,65,83,100,117,133,147,161,174,187,200,213,227,242,18,31,52,68,88,103,117,126,138,149,163,177,192,207,223,239,16,29,47,61,76,90,106,119,133,147,161,176,193,209,224,240,15,21,35,50,61,73,86,97,110,119,129,141,175,198,218,237,12,35,60,83,108,132,157,180,206,228,15,32,55,77,101,125,151,175,201,225,19,42,66,89,114,137,162,184,209,230,12,25,50,72,97,120,147,172,200,223,26,44,69,90,114,135,159,180,205,225,13,22,53,80,106,130,156,180,205,228,15,25,44,64,90,115,142,168,196,222,19,24,62,82,100,120,145,168,190,214,22,31,50,79,103,120,151,170,203,227,21,29,45,65,106,124,150,171,196,224,30,49,75,97,121,142,165,186,209,229,19,25,52,70,93,116,143,166,192,219,26,34,62,75,97,118,145,167,194,217,25,33,56,70,91,113,143,165,196,223,21,34,51,72,97,117,145,171,196,222,20,29,50,67,90,117,144,168,197,221,22,31,48,66,95,117,146,168,196,222,24,33,51,77,116,134,158,180,200,224,21,28,70,87,106,124,149,170,194,217,26,33,53,64,83,117,152,173,204,225,27,34,65,95,108,129,155,174,210,225,20,26,72,99,113,131,154,176,200,219,34,43,61,78,93,114,155,177,205,229,23,29,54,97,124,138,163,179,209,229,30,38,56,89,118,129,158,178,200,231,21,29,49,63,85,111,142,163,193,222,27,48,77,103,133,158,179,196,215,232,29,47,74,99,124,151,176,198,220,237,33,42,61,76,93,121,155,174,207,225,29,53,87,112,136,154,170,188,208,227,24,30,52,84,131,150,166,186,203,229,37,48,64,84,104,118,156,177,201,230,0,15,8,7,4,11,12,3,2,13,10,5,6,9,14,1,0,9,6,3,4,5,8,1,2,7,0,0,0,0,0,0,128,64,0,0,0,0,0,0,16,33,0,0,192,32,0,0,32,32,0,0,0,0,0,0,179,99,0,0,0,0,0,0,250,27,61,39,5,245,42,88,4,1,254,60,65,6,252,255,251,73,56,1,247,19,94,29,247,0,12,99,6,4,8,237,102,46,243,3,2,13,3,2,9,235,84,72,238,245,46,104,234,8,18,38,48,23,0,240,70,83,235,11,5,245,117,22,248,250,23,117,244,3,3,248,95,28,4,246,15,77,60,241,255,4,124,2,252,3,38,84,24,231,2,13,42,13,31,21,252,56,46,255,255,35,79,243,19,249,65,88,247,242,20,4,81,49,227,20,0,75,3,239,5,247,44,92,248,1,253,22,69,31,250,95,41,244,5,39,67,16,252,1,0,250,120,55,220,243,44,122,4,232,81,5,11,3,7,2,0,9,10,88,13,22,39,23,12,255,36,64,27,250,249,10,55,43,17,1,1,8,1,1,6,245,74,53,247,244,55,76,244,8,253,3,93,27,252,26,39,59,3,248,2,0,77,11,9,248,22,44,250,7,40,9,26,3,9,249,20,101,249,4,3,248,42,26,0,241,33,68,2,23,254,55,46,254,15,3,255,21,16,41,4,6,24,7,5,0,0,2,0,0,12,28,41,13,252,247,15,42,25,14,1,254,62,41,247,246,37,65,252,3,250,4,66,7,248,16,14,38,253,33,120,33,0,0,104,33,0,0,72,33,0,0,0,0,0,0,241,225,211,199,187,175,164,153,142,132,123,114,105,96,88,80,72,64,57,50,44,38,33,29,24,20,16,12,9,5,2,0,199,165,144,124,109,96,84,71,61,51,42,32,23,15,8,0,71,56,43,30,21,12,6,0,205,60,0,48,0,32,0,0,0,32,254,31,246,31,234,31,216,31,194,31,168,31,136,31,98,31,58,31,10,31,216,30,160,30,98,30,34,30,220,29,144,29,66,29,238,28,150,28,58,28,216,27,114,27,10,27,156,26,42,26,180,25,58,25,188,24,60,24,182,23,46,23,160,22,16,22,126,21,232,20,78,20,176,19,16,19,110,18,200,17,30,17,116,16,198,15,22,15,100,14,174,13,248,12,64,12,132,11,200,10,10,10,74,9,138,8,198,7,2,7,62,6,120,5,178,4,234,3,34,3,90,2,146,1,202,0,0,0,54,255,110,254,166,253,222,252,22,252,78,251,136,250,194,249,254,248,58,248,118,247,182,246,246,245,56,245,124,244,192,243,8,243,82,242,156,241,234,240,58,240,140,239,226,238,56,238,146,237,240,236,80,236,178,235,24,235,130,234,240,233,96,233,210,232,74,232,196,231,68,231,198,230,76,230,214,229,100,229,246,228,142,228,40,228,198,227,106,227,18,227,190,226,112,226,36,226,222,225,158,225,96,225,40,225,246,224,198,224,158,224,120,224,88,224,62,224,40,224,22,224,10,224,2,224,0,224,0,0,0,0,0,0,160,34,0,0,152,34,0,0,215,195,166,125,110,82,0,0,203,150,0,0,0,0,0,0,6,0,0,0,4,0,0,0,3,0,0,0,0,0,0,0,0,0,1,255,1,255,2,254,2,254,3,253,0,1,0,1,255,2,255,2,254,3,254,3,0,0,1,255,0,1,255,0,255,1,254,2,254,254,2,253,2,3,253,252,3,252,4,4,251,5,250,251,6,249,6,5,8,247,0,0,1,0,0,0,0,0,0,0,255,1,0,0,1,255,0,1,255,255,1,255,2,1,255,2,254,254,2,254,2,2,3,253,0,1,0,0,0,0,0,0,1,0,1,0,0,1,255,1,0,0,2,1,255,2,255,255,2,255,2,2,255,3,254,254,254,3,0,1,0,0,1,0,1,255,2,255,2,255,2,3,254,3,254,254,4,4,253,5,253,252,6,252,6,5,251,8,250,251,249,9,0,1,0,0,0,1,0,0,0,2,255,255,255,0,0,1,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,255,2,1,0,1,1,0,0,255,255,0,0,0,0,80,73,44,1,24,73,44,1,16,73,44,1,224,72,44,1,240,35,44,1,104,35,44,1,104,34,44,1,32,34,44,1,56,33,44,1,48,33,44,1,168,33,44,1,152,33,44,1,144,33,44,1,232,32,44,1,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,174,0,0,0,144,0,0,0,244,0,0,0,64,0,0,0,12,1,0,0,138,0,0,0,114,0,0,0,120,0,0,0,178,0,0,0,210,0,0,0,72,0,0,0,60,0,0,0,12,0,0,0,0,0,0,0,40,191,0,0,64,1,0,0,240,0,0,0,0,0,128,63,48,174,0,0,144,1,0,0,44,1,0,0,0,0,128,63,72,205,2,0,0,2,0,0,128,1,0,0,0,0,128,63,176,190,2,0,128,2,0,0,224,1,0,0,0,0,128,63,208,172,2,0,32,3,0,0,88,2,0,0,0,0,128,63,232,158,2,0,192,3,0,0,208,2,0,0,0,0,128,63,232,147,2,0,0,4,0,0,0,3,0,0,0,0,128,63,64,134,2,0,128,4,0,0,96,3,0,0,0,0,128,63,16,122,2,0,0,5,0,0,0,4,0,0,0,0,128,63,96,110,2,0,64,6,0,0,176,4,0,0,0,0,128,63,24,101,2,0,0,8,0,0,0,6,0,0,0,0,128,63,248,91,2,0,88,3,0,0,224,1,0,0,0,0,128,63,0,1,1,1,2,3,3,3,2,3,3,3,2,3,3,3,0,3,12,15,48,51,60,63,192,195,204,207,240,243,252,255,208,0,0,0,144,37,0,0,216,49,2,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,39,2,0,80,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,30,2,0,160,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,23,2,0,164,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,17,2,0,168,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,2,0,172,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,6,2,0,176,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,2,2,0,180,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,253,1,0,184,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,248,1,0,188,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,244,1,0,192,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,238,1,0,196,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,233,1,0,200,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,230,1,0,204,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,63,0,0,76,63,0,0,38,63,0,0,0,63,200,239,0,0,0,0,0,0,32,0,0,0,48,255,1,0,20,0,0,0,0,0,0,0,248,249,1,0,24,0,0,0,0,0,0,0,0,237,0,0,8,0,0,0,8,0,0,0,88,234,0,0,32,0,0,0,0,0,0,0,192,231,0,0,36,0,0,0,0,0,0,0,240,229,0,0,156,0,0,0,0,0,0,0,144,226,0,0,152,0,0,0,0,0,0,0,144,222,0,0,44,0,0,0,240,255,255,255,96,245,1,0,28,0,0,0,0,0,0,0,192,219,0,0,40,0,0,0,0,0,0,0,80,216,0,0,72,0,0,0,8,0,0,0,0,213,0,0,16,0,0,0,240,255,255,255,176,210,0,0,108,0,0,0,16,0,0,0,96,88,2,0,84,0,0,0,8,0,0,0,200,208,0,0,88,0,0,0,4], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); +/* memory initializer */ allocate([40,207,0,0,112,0,0,0,8,0,0,0,208,71,2,0,76,0,0,0,8,0,0,0,248,204,0,0,116,0,0,0,8,0,0,0,72,203,0,0,12,0,0,0,16,0,0,0,208,61,2,0,68,0,0,0,10,0,0,0,152,200,0,0,148,0,0,0,4,0,0,0,120,42,2,0,104,0,0,0,16,0,0,0,128,197,0,0,128,0,0,0,10,0,0,0,112,194,0,0,48,0,0,0,16,0,0,0,128,191,0,0,52,0,0,0,16,0,0,0,144,189,0,0,60,0,0,0,16,0,0,0,96,187,0,0,132,0,0,0,8,0,0,0,16,186,0,0,164,0,0,0,248,255,255,255,128,184,0,0,168,0,0,0,8,0,0,0,0,183,0,0,172,0,0,0,8,0,0,0,224,181,0,0,176,0,0,0,8,0,0,0,72,180,0,0,180,0,0,0,8,0,0,0,208,221,1,0,184,1,0,0,8,0,0,0,232,177,0,0,4,0,0,0,8,0,0,0,232,175,0,0,56,0,0,0,16,0,0,0,80,174,0,0,64,0,0,0,16,0,0,0,248,172,0,0,80,0,0,0,12,0,0,0,48,171,0,0,120,0,0,0,8,0,0,0,232,169,0,0,124,0,0,0,8,0,0,0,192,19,2,0,140,0,0,0,8,0,0,0,184,25,2,0,144,0,0,0,5,0,0,0,200,168,0,0,160,0,0,0,0,0,0,0,224,214,2,0,92,0,0,0,0,0,0,0,176,213,2,0,96,0,0,0,0,0,0,0,216,211,2,0,100,0,0,0,0,0,0,0,72,209,2,0,192,1,0,0,10,0,0,0,32,225,1,0,188,1,0,0,16,0,0,0,1,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,1,0,0,0,5,0,0,0,2,0,0,0,15,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,12,0,0,0,3,0,0,0,11,0,0,0,4,0,0,0,14,0,0,0,1,0,0,0,9,0,0,0,6,0,0,0,13,0,0,0,2,0,0,0,10,0,0,0,5,0,0,0,192,88,2,0,10,0,0,0,36,0,0,0,16,0,0,0,146,0,0,0,0,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,17,74,29,0,48,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,17,74,29,0,49,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,17,74,29,0,50,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,17,74,29,0,51,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,17,74,29,0,52,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,17,74,29,0,53,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,17,74,29,0,54,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,17,74,29,0,55,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,17,74,29,0,56,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,17,74,29,0,57,0,0,0,1,0,0,0,0,0,0,0,24,116,2,0,232,105,2,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,203,209,3,0,233,160,0,0,148,24,0,0,194,27,0,0,146,14,0,0,166,14,0,0,222,23,0,0,243,90,0,0,37,130,0,0,38,27,0,0,158,30,0,0,242,37,0,0,41,36,0,0,107,67,0,0,109,15,0,0,242,6,0,0,96,32,0,0,68,6,0,0,54,6,0,0,127,6,0,0,76,4,0,0,189,4,0,0,214,4,0,0,110,4,0,0,213,6,0,0,35,4,0,0,222,4,0,0,125,4,0,0,249,4,0,0,134,17,0,0,245,10,0,0,144,13,0,0,59,85,0,0,135,4,0,0,134,6,0,0,42,4,0,0,19,4,0,0,244,3,0,0,29,4,0,0,46,4,0,0,190,6,0,0,120,3,0,0,156,4,0,0,82,3,0,0,192,3,0,0,12,3,0,0,216,6,0,0,224,12,0,0,134,41,0,0,162,17,0,0,249,22,0,0,125,10,0,0,42,18,0,0,253,14,0,0,45,8,0,0,75,7,0,0,24,10,0,0,157,7,0,0,180,7,0,0,172,3,0,0,110,4,0,0,252,6,0,0,134,6,0,0,182,4,0,0,87,22,0,0,240,23,0,0,54,28,0,0,254,25,0,0,126,14,0,0,211,14,0,0,212,5,0,0,244,5,0,0,167,8,0,0,116,4,0,0,75,5,0,0,203,3,0,0,132,8,0,0,224,4,0,0,48,5,0,0,171,4,0,0,234,6,0,0,54,4,0,0,240,4,0,0,242,4,0,0,144,4,0,0,197,3,0,0,131,4,0,0,162,4,0,0,67,5,0,0,204,4,0,0,249,5,0,0,64,6,0,0,57,10,0,0,0,8,0,0,242,9,0,0,203,12,0,0,106,9,0,0,1,14,0,0,200,9,0,0,240,10,0,0,115,10,0,0,2,24,0,0,79,14,0,0,24,11,0,0,173,55,0,0,92,12,0,0,173,8,0,0,151,6,0,0,136,12,0,0,179,10,0,0,184,13,0,0,188,18,0,0,251,15,0,0,187,13,0,0,168,20,0,0,176,15,0,0,1,31,0,0,143,23,0,0,240,20,0,0,84,15,0,0,28,19,0,0,159,14,0,0,214,17,0,0,199,18,0,0,220,22,0,0,0,25,0,0,81,24,0,0,99,32,0,0,203,90,0,0,158,30,0,0,161,27,0,0,231,34,0,0,61,21,0,0,131,17,0,0,57,14,0,0,136,20,0,0,192,20,0,0,208,20,0,0,250,20,0,0,164,13,0,0,154,9,0,0,158,6,0,0,29,7,0,0,73,8,0,0,124,7,0,0,125,4,0,0,236,5,0,0,87,5,0,0,212,4,0,0,5,4,0,0,234,4,0,0,80,4,0,0,221,4,0,0,238,3,0,0,125,4,0,0,1,4,0,0,217,4,0,0,184,3,0,0,7,5,0,0,229,3,0,0,177,6,0,0,241,3,0,0,163,4,0,0,111,3,0,0,75,4,0,0,161,3,0,0,54,4,0,0,183,3,0,0,120,6,0,0,162,3,0,0,129,4,0,0,6,4,0,0,238,4,0,0,38,4,0,0,190,4,0,0,36,4,0,0,85,6,0,0,162,3,0,0,82,4,0,0,144,3,0,0,10,4,0,0,124,3,0,0,134,4,0,0,222,3,0,0,151,4,0,0,82,3,0,0,97,4,0,0,135,3,0,0,63,4,0,0,152,3,0,0,120,4,0,0,32,4,0,0,134,13,0,0,192,8,0,0,45,17,0,0,104,47,0,0,78,30,0,0,65,5,0,0,27,5,0,0,206,12,0,0,158,7,0,0,118,3,0,0,255,3,0,0,88,4,0,0,53,4,0,0,18,4,0,0,37,4,0,0,47,4,0,0,204,5,0,0,233,3,0,0,72,4,0,0,147,3,0,0,28,4,0,0,227,3,0,0,46,4,0,0,108,3,0,0,87,4,0,0,83,3,0,0,35,4,0,0,37,3,0,0,88,4,0,0,155,3,0,0,79,4,0,0,49,3,0,0,107,7,0,0,80,7,0,0,208,3,0,0,73,3,0,0,103,4,0,0,188,3,0,0,135,4,0,0,182,3,0,0,111,30,0,0,186,3,0,0,9,5,0,0,165,3,0,0,103,4,0,0,135,12,0,0,252,3,0,0,159,3,0,0,75,5,0,0,0,3,0,0,16,4,0,0,233,2,0,0,184,3,0,0,37,3,0,0,49,4,0,0,228,2,0,0,245,3,0,0,37,3,0,0,240,3,0,0,28,3,0,0,228,3,0,0,33,4,0,0,193,44,0,0,192,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,176,1,0,0,38,0,0,0,38,0,0,248,141,2,0,1,38,0,0,1,38,0,0,224,42,2,0,0,39,0,0,0,38,0,0,216,240,1,0,1,39,0,0,1,38,0,0,56,200,1,0,2,39,0,0,0,38,0,0,240,159,1,0,3,39,0,0,1,38,0,0,200,47,2,0,54,0,0,0,232,37,2,0,12,0,0,0,8,28,2,0,106,0,0,0,128,187,0,0,120,0,0,0,21,0,0,0,21,0,0,0,0,154,89,63,0,0,0,0,0,0,128,63,0,0,128,63,24,116,0,0,3,0,0,0,8,0,0,0,120,0,0,0,11,0,0,0,0,167,0,0,216,55,0,0,8,0,0,0,128,7,0,0,3,0,0,0,184,105,0,0,128,105,0,0,72,105,0,0,16,105,0,0,80,48,0,0,136,1,0,0,168,162,0,0,40,164,0,0,128,163,0,0,0,0,0,0,0,0,0,0,255,0,0,128,0,255,0,128,0,0,255,128,255,0,0,128,0,255,0,128,0,0,255,128,255,0,0,128,0,255,0,128,0,0,255,128,255,0,0,128,0,255,0,128,0,0,255,128,255,0,0,128,0,255,0,128,0,0,255,128,0,0,128,63,166,255,127,63,153,254,127,63,216,252,127,63,99,250,127,63,58,247,127,63,94,243,127,63,206,238,127,63,139,233,127,63,148,227,127,63,233,220,127,63,139,213,127,63,121,205,127,63,180,196,127,63,59,187,127,63,15,177,127,63,47,166,127,63,156,154,127,63,86,142,127,63,92,129,127,63,175,115,127,63,78,101,127,63,58,86,127,63,116,70,127,63,249,53,127,63,204,36,127,63,236,18,127,63,89,0,127,63,18,237,126,63,25,217,126,63,109,196,126,63,14,175,126,63,253,152,126,63,56,130,126,63,193,106,126,63,152,82,126,63,188,57,126,63,46,32,126,63,237,5,126,63,250,234,125,63,85,207,125,63,253,178,125,63,244,149,125,63,56,120,125,63,203,89,125,63,172,58,125,63,219,26,125,63,89,250,124,63,37,217,124,63,63,183,124,63,168,148,124,63,96,113,124,63,103,77,124,63,189,40,124,63,97,3,124,63,85,221,123,63,152,182,123,63,42,143,123,63,12,103,123,63,61,62,123,63,190,20,123,63,143,234,122,63,176,191,122,63,33,148,122,63,226,103,122,63,243,58,122,63,84,13,122,63,6,223,121,63,9,176,121,63,92,128,121,63,0,80,121,63,246,30,121,63,60,237,120,63,212,186,120,63,189,135,120,63,248,83,120,63,132,31,120,63,99,234,119,63,147,180,119,63,22,126,119,63,234,70,119,63,17,15,119,63,139,214,118,63,88,157,118,63,119,99,118,63,234,40,118,63,176,237,117,63,201,177,117,63,54,117,117,63,246,55,117,63,11,250,116,63,115,187,116,63,48,124,116,63,65,60,116,63,167,251,115,63,97,186,115,63,112,120,115,63,213,53,115,63,143,242,114,63,158,174,114,63,3,106,114,63,190,36,114,63,207,222,113,63,54,152,113,63,244,80,113,63,8,9,113,63,115,192,112,63,53,119,112,63,79,45,112,63,191,226,111,63,136,151,111,63,168,75,111,63,32,255,110,63,241,177,110,63,26,100,110,63,156,21,110,63,118,198,109,63,170,118,109,63,55,38,109,63,30,213,108,63,94,131,108,63,249,48,108,63,237,221,107,63,61,138,107,63,231,53,107,63,235,224,106,63,75,139,106,63,7,53,106,63,29,222,105,63,144,134,105,63,95,46,105,63,138,213,104,63,18,124,104,63,247,33,104,63,57,199,103,63,216,107,103,63,212,15,103,63,47,179,102,63,231,85,102,63,254,247,101,63,116,153,101,63,72,58,101,63,123,218,100,63,14,122,100,63,1,25,100,63,83,183,99,63,6,85,99,63,25,242,98,63,141,142,98,63,97,42,98,63,151,197,97,63,47,96,97,63,40,250,96,63,132,147,96,63,66,44,96,63,99,196,95,63,230,91,95,63,205,242,94,63,23,137,94,63,197,30,94,63,215,179,93,63,78,72,93,63,41,220,92,63,106,111,92,63,15,2,92,63,26,148,91,63,139,37,91,63,98,182,90,63,160,70,90,63,69,214,89,63,80,101,89,63,196,243,88,63,158,129,88,63,225,14,88,63,140,155,87,63,160,39,87,63,29,179,86,63,3,62,86,63,84,200,85,63,13,82,85,63,49,219,84,63,192,99,84,63,185,235,83,63,30,115,83,63,239,249,82,63,43,128,82,63,212,5,82,63,234,138,81,63,108,15,81,63,91,147,80,63,184,22,80,63,132,153,79,63,189,27,79,63,101,157,78,63,123,30,78,63,2,159,77,63,248,30,77,63,94,158,76,63,53,29,76,63,124,155,75,63,53,25,75,63,94,150,74,63,250,18,74,63,7,143,73,63,135,10,73,63,123,133,72,63,225,255,71,63,187,121,71,63,9,243,70,63,204,107,70,63,3,228,69,63,175,91,69,63,209,210,68,63,105,73,68,63,119,191,67,63,252,52,67,63,247,169,66,63,106,30,66,63,85,146,65,63,184,5,65,63,146,120,64,63,231,234,63,63,181,92,63,63,251,205,62,63,189,62,62,63,249,174,61,63,176,30,61,63,225,141,60,63,143,252,59,63,185,106,59,63,95,216,58,63,129,69,58,63,35,178,57,63,65,30,57,63,220,137,56,63,247,244,55,63,144,95,55,63,169,201,54,63,65,51,54,63,90,156,53,63,243,4,53,63,13,109,52,63,168,212,51,63,197,59,51,63,100,162,50,63,135,8,50,63,45,110,49,63,85,211,48,63,1,56,48,63,50,156,47,63,232,255,46,63,34,99,46,63,226,197,45,63,41,40,45,63,246,137,44,63,73,235,43,63,36,76,43,63,136,172,42,63,114,12,42,63,230,107,41,63,227,202,40,63,106,41,40,63,121,135,39,63,20,229,38,63,58,66,38,63,235,158,37,63,39,251,36,63,241,86,36,63,71,178,35,63,41,13,35,63,153,103,34,63,151,193,33,63,36,27,33,63,63,116,32,63,235,204,31,63,37,37,31,63,241,124,30,63,76,212,29,63,58,43,29,63,184,129,28,63,201,215,27,63,110,45,27,63,164,130,26,63,111,215,25,63,205,43,25,63,192,127,24,63,71,211,23,63,100,38,23,63,24,121,22,63,98,203,21,63,66,29,21,63,185,110,20,63,201,191,19,63,113,16,19,63,178,96,18,63,140,176,17,63,0,0,17,63,13,79,16,63,182,157,15,63,249,235,14,63,217,57,14,63,85,135,13,63,110,212,12,63,36,33,12,63,118,109,11,63,104,185,10,63,247,4,10,63,38,80,9,63,246,154,8,63,100,229,7,63,117,47,7,63,37,121,6,63,119,194,5,63,106,11,5,63,2,84,4,63,62,156,3,63,27,228,2,63,156,43,2,63,194,114,1,63,143,185,0,63,255,255,255,62,45,140,254,62,172,23,253,62,117,162,251,62,142,44,250,62,251,181,248,62,185,62,247,62,198,198,245,62,39,78,244,62,220,212,242,62,235,90,241,62,76,224,239,62,5,101,238,62,23,233,236,62,134,108,235,62,76,239,233,62,111,113,232,62,237,242,230,62,206,115,229,62,10,244,227,62,169,115,226,62,170,242,224,62,9,113,223,62,203,238,221,62,241,107,220,62,129,232,218,62,115,100,217,62,204,223,215,62,142,90,214,62,190,212,212,62,84,78,211,62,86,199,209,62,200,63,208,62,168,183,206,62,244,46,205,62,175,165,203,62,223,27,202,62,126,145,200,62,144,6,199,62,22,123,197,62,21,239,195,62,135,98,194,62,113,213,192,62,215,71,191,62,179,185,189,62,10,43,188,62,221,155,186,62,52,12,185,62,2,124,183,62,79,235,181,62,29,90,180,62,111,200,178,62,65,54,177,62,150,163,175,62,115,16,174,62,211,124,172,62,186,232,170,62,40,84,169,62,36,191,167,62,166,41,166,62,179,147,164,62,81,253,162,62,124,102,161,62,51,207,159,62,121,55,158,62,83,159,156,62,189,6,155,62,185,109,153,62,74,212,151,62,116,58,150,62,48,160,148,62,132,5,147,62,113,106,145,62,252,206,143,62,31,51,142,62,225,150,140,62,64,250,138,62,58,93,137,62,212,191,135,62,15,34,134,62,239,131,132,62,110,229,130,62,146,70,129,62,180,78,127,62,154,15,124,62,200,207,120,62,70,143,117,62,25,78,114,62,73,12,111,62,209,201,107,62,172,134,104,62,235,66,101,62,130,254,97,62,123,185,94,62,215,115,91,62,161,45,88,62,203,230,84,62,96,159,81,62,97,87,78,62,218,14,75,62,188,197,71,62,19,124,68,62,231,49,65,62,51,231,61,62,243,155,58,62,47,80,55,62,243,3,52,62,48,183,48,62,241,105,45,62,57,28,42,62,17,206,38,62,108,127,35,62,85,48,32,62,213,224,28,62,222,144,25,62,124,64,22,62,185,239,18,62,143,158,15,62,247,76,12,62,253,250,8,62,164,168,5,62,244,85,2,62,194,5,254,61,234,94,247,61,115,183,240,61,68,15,234,61,112,102,227,61,253,188,220,61,255,18,214,61,91,104,207,61,53,189,200,61,115,17,194,61,56,101,187,61,105,184,180,61,28,11,174,61,101,93,167,61,40,175,160,61,122,0,154,61,97,81,147,61,240,161,140,61,12,242,133,61,148,131,126,61,94,34,113,61,158,192,99,61,63,94,86,61,41,251,72,61,166,151,59,61,128,51,46,61,223,206,32,61,205,105,19,61,116,4,6,61,59,61,241,60,227,112,214,60,245,163,187,60,195,214,160,60,225,8,134,60,64,117,86,60,40,216,32,60,62,119,214,59,43,119,86,59,46,189,59,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,8,0,8,0,16,0,16,0,16,0,21,0,21,0,24,0,29,0,34,0,36,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,120,198,2,0,9,0,0,0,80,198,2,0,13,0,0,0,48,81,2,0,27,0,0,0,240,3,2,0,32,0,0,0,200,218,1,0,127,0,0,0,120,176,1,0,132,0,0,0,96,139,1,0,133,0,0,0,224,229,0,0,134,0,0,0,56,203,0,0,135,0,0,0,208,181,0,0,136,0,0,0,152,213,2,0,137,0,0,0,48,198,2,0,138,0,0,0,216,179,2,0,128,0,0,0,24,166,2,0,129,0,0,0,168,153,2,0,145,0,0,0,176,141,2,0,146,0,0,0,24,128,2,0,147,0,0,0,0,117,2,0,148,0,0,0,96,106,2,0,149,0,0,0,96,96,2,0,150,0,0,0,152,88,2,0,151,0,0,0,40,81,2,0,152,0,0,0,16,72,2,0,153,0,0,0,248,61,2,0,154,0,0,0,176,52,2,0,155,0,0,0,128,42,2,0,156,0,0,0,112,33,2,0,157,0,0,0,192,25,2,0,158,0,0,0,208,19,2,0,159,0,0,0,8,14,2,0,139,0,0,0,0,8,2,0,140,0,0,0,232,3,2,0,141,0,0,0,72,255,1,0,142,0,0,0,8,250,1,0,143,0,0,0,152,245,1,0,144,0,0,0,168,240,1,0,178,0,0,0,112,235,1,0,179,0,0,0,184,231,1,0,180,0,0,0,104,228,1,0,181,0,0,0,48,225,1,0,182,0,0,0,224,221,1,0,184,0,0,0,184,218,1,0,183,0,0,0,48,214,1,0,185,0,0,0,192,208,1,0,186,0,0,0,0,204,1,0,187,0,0,0,240,199,1,0,188,0,0,0,200,194,1,0,189,0,0,0,200,189,1,0,190,0,0,0,224,185,1,0,191,0,0,0,48,182,1,0,192,0,0,0,64,179,1,0,193,0,0,0,112,176,1,0,194,0,0,0,144,171,1,0,195,0,0,0,216,166,1,0,196,0,0,0,104,163,1,0,197,0,0,0,184,159,1,0,198,0,0,0,8,156,1,0,199,0,0,0,224,152,1,0,200,0,0,0,16,149,1,0,201,0,0,0,232,145,1,0,202,0,0,0,136,142,1,0,203,0,0,0,88,139,1,0,204,0,0,0,200,134,1,0,205,0,0,0,128,129,1,0,206,0,0,0,40,250,0,0,207,0,0,0,168,246,0,0,208,0,0,0,224,242,0,0,209,0,0,0,192,239,0,0,210,0,0,0,248,236,0,0,211,0,0,0,80,234,0,0,212,0,0,0,184,231,0,0,213,0,0,0,216,229,0,0,214,0,0,0,136,226,0,0,215,0,0,0,96,222,0,0,216,0,0,0,184,219,0,0,217,0,0,0,216,216,0,0,218,0,0,0,96,213,0,0,219,0,0,0,32,211,0,0,220,0,0,0,24,209,0,0,221,0,0,0,120,207,0,0,222,0,0,0,80,205,0,0,223,0,0,0,136,203,0,0,224,0,0,0,40,201,0,0,225,0,0,0,8,198,0,0,226,0,0,0,248,194,0,0,227,0,0,0,200,191,0,0,228,0,0,0,184,189,0,0,229,0,0,0,152,187,0,0,230,0,0,0,56,186,0,0,231,0,0,0,160,184,0,0,232,0,0,0,48,183,0,0,160,0,0,0,0,182,0,0,161,0,0,0,176,180,0,0,162,0,0,0,80,178,0,0,163,0,0,0,56,176,0,0,164,0,0,0,152,174,0,0,165,0,0,0,72,173,0,0,166,0,0,0,112,171,0,0,167,0,0,0,56,170,0,0,168,0,0,0,0,169,0,0,169,0,0,0,16,215,2,0,170,0,0,0,248,213,2,0,171,0,0,0,56,212,2,0,172,0,0,0,200,209,2,0,173,0,0,0,120,207,2,0,174,0,0,0,176,205,2,0,175,0,0,0,120,204,2,0,176,0,0,0,216,202,2,0,177,0,0,0,152,201,2,0,131,0,0,0,120,200,2,0,59,0,0,0,160,199,2,0,233,0,0,0,88,198,2,0,234,0,0,0,208,196,2,0,235,0,0,0,224,194,2,0,236,0,0,0,168,192,2,0,237,0,0,0,24,191,2,0,238,0,0,0,8,189,2,0,239,0,0,0,24,187,2,0,240,0,0,0,120,185,2,0,241,0,0,0,224,183,2,0,242,0,0,0,232,181,2,0,243,0,0,0,64,180,2,0,244,0,0,0,144,178,2,0,245,0,0,0,136,176,2,0,246,0,0,0,184,174,2,0,247,0,0,0,48,173,2,0,248,0,0,0,184,171,2,0,249,0,0,0,192,169,2,0,250,0,0,0,0,169,2,0,251,0,0,0,72,168,2,0,252,0,0,0,32,167,2,0,253,0,0,0,96,166,2,0,254,0,0,0,192,164,2,0,255,0,0,0,0,163,2,0,0,1,0,0,232,160,2,0,1,1,0,0,56,159,2,0,2,1,0,0,0,158,2,0,3,1,0,0,192,156,2,0,4,1,0,0,56,156,2,0,5,1,0,0,88,155,2,0,6,1,0,0,96,154,2,0,7,1,0,0,216,153,2,0,8,1,0,0,144,152,2,0,9,1,0,0,192,150,2,0,10,1,0,0,48,149,2,0,11,1,0,0,0,148,2,0,12,1,0,0,224,146,2,0,13,1,0,0,152,145,2,0,14,1,0,0,112,144,2,0,15,1,0,0,152,143,2,0,16,1,0,0,120,142,2,0,17,1,0,0,8,142,2,0,18,1,0,0,160,140,2,0,19,1,0,0,168,137,2,0,20,1,0,0,168,135,2,0,21,1,0,0,112,134,2,0,22,1,0,0,144,133,2,0,23,1,0,0,56,132,2,0,24,1,0,0,208,130,2,0,25,1,0,0,152,129,2,0,26,1,0,0,0,129,2,0,27,1,0,0,88,128,2,0,28,1,0,0,120,126,2,0,29,1,0,0,32,125,2,0,30,1,0,0,72,123,2,0,31,1,0,0,72,122,2,0,32,1,0,0,104,121,2,0,33,1,0,0,96,120,2,0,34,1,0,0,88,119,2,0,35,1,0,0,168,118,2,0,36,1,0,0,192,117,2,0,37,1,0,0,16,117,2,0,38,1,0,0,176,115,2,0,39,1,0,0,88,114,2,0,40,1,0,0,152,112,2,0,41,1,0,0,32,111,2,0,42,1,0,0,200,109,2,0,43,1,0,0,128,108,2,0,44,1,0,0,0,108,2,0,45,1,0,0,104,107,2,0,46,1,0,0,224,106,2,0,47,1,0,0,136,106,2,0,48,1,0,0,152,105,2,0,49,1,0,0,248,103,2,0,50,1,0,0,112,102,2,0,51,1,0,0,80,101,2,0,52,1,0,0,120,100,2,0,53,1,0,0,56,99,2,0,54,1,0,0,128,98,2,0,55,1,0,0,152,97,2,0,56,1,0,0,56,97,2,0,57,1,0,0,136,96,2,0,58,1,0,0,168,95,2,0,59,1,0,0,24,94,2,0,60,1,0,0,240,92,2,0,61,1,0,0,24,92,2,0,62,1,0,0,160,91,2,0,63,1,0,0,200,90,2,0,64,1,0,0,16,90,2,0,65,1,0,0,160,89,2,0,66,1,0,0,8,89,2,0,67,1,0,0,200,88,2,0,68,1,0,0,192,87,2,0,69,1,0,0,112,86,2,0,70,1,0,0,64,85,2,0,71,1,0,0,144,84,2,0,72,1,0,0,240,83,2,0,73,1,0,0,80,83,2,0,74,1,0,0,216,82,2,0,75,1,0,0,112,82,2,0,76,1,0,0,200,81,2,0,77,1,0,0,104,81,2,0,78,1,0,0,96,80,2,0,79,1,0,0,160,78,2,0,80,1,0,0,40,77,2,0,81,1,0,0,8,76,2,0,130,0,0,0,88,75,2,0,82,1,0,0,88,74,2,0,83,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,15,0,0,0,31,0,0,0,63,0,0,0,127,0,0,0,255,0,0,0,255,1,0,0,255,3,0,0,255,7,0,0,255,15,0,0,255,31,0,0,255,63,0,0,255,127,0,0,255,255,0,0,255,255,1,0,255,255,3,0,255,255,7,0,255,255,15,0,255,255,31,0,255,255,63,0,255,255,127,0,255,255,255,0,255,255,255,1,255,255,255,3,255,255,255,7,255,255,255,15,255,255,255,31,255,255,255,63,255,255,255,127,255,255,255,255,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,27,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,26,0,0,0,28,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,25,0,0,0,29,0,0,0,38,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,37,0,0,0,39,0,0,0,10,0,0,0,19,0,0,0,23,0,0,0,31,0,0,0,36,0,0,0,40,0,0,0,45,0,0,0,20,0,0,0,22,0,0,0,32,0,0,0,35,0,0,0,41,0,0,0,44,0,0,0,46,0,0,0,21,0,0,0,33,0,0,0,34,0,0,0,42,0,0,0,43,0,0,0,47,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,25,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,24,0,0,0,26,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,23,0,0,0,27,0,0,0,32,0,0,0,10,0,0,0,19,0,0,0,22,0,0,0,28,0,0,0,31,0,0,0,33,0,0,0,20,0,0,0,21,0,0,0,29,0,0,0,30,0,0,0,34,0,0,0,35,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,15,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,21,0,0,0,9,0,0,0,11,0,0,0,17,0,0,0,20,0,0,0,22,0,0,0,10,0,0,0,18,0,0,0,19,0,0,0,23,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,12,0,0,0,3,0,0,0,8,0,0,0,11,0,0,0,13,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,27,0,0,0,28,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,26,0,0,0,29,0,0,0,42,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,25,0,0,0,30,0,0,0,41,0,0,0,43,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,24,0,0,0,31,0,0,0,40,0,0,0,44,0,0,0,53,0,0,0,10,0,0,0,19,0,0,0,23,0,0,0,32,0,0,0,39,0,0,0,45,0,0,0,52,0,0,0,54,0,0,0,20,0,0,0,22,0,0,0,33,0,0,0,38,0,0,0,46,0,0,0,51,0,0,0,55,0,0,0,60,0,0,0,21,0,0,0,34,0,0,0,37,0,0,0,47,0,0,0,50,0,0,0,56,0,0,0,59,0,0,0,61,0,0,0,35,0,0,0,36,0,0,0,48,0,0,0,49,0,0,0,57,0,0,0,58,0,0,0,62,0,0,0,63,0,0,0,104,249,0,0,0,123,2,0,56,29,2,0,144,233,1,0,216,191,1,0,192,154,1,0,120,241,0,0,248,211,0,0,184,188,0,0,56,172,0,0,184,203,2,0,88,188,2,0,232,170,2,0,56,157,2,0,48,146,2,0,248,132,2,0,200,120,2,0,16,109,2,0,152,99,2,0,64,91,2,0,176,83,2,0,240,74,2,0,40,66,2,0,0,56,2,0,176,46,2,0,104,37,2,0,120,27,2,0,16,21,2,0,128,15,2,0,32,9,2,0,184,4,2,0,40,1,2,0,128,251,1,0,96,246,1,0,168,242,1,0,112,237,1,0,104,232,1,0,224,228,1,0,144,225,1,0,96,222,1,0,40,219,1,0,152,215,1,0,192,210,1,0,104,205,1,0,168,201,1,0,232,196,1,0,224,190,1,0,168,186,1,0,48,183,1,0,232,179,1,0,16,177,1,0,216,173,1,0,144,168,1,0,80,164,1,0,24,161,1,0,72,157,1,0,24,154,1,0,80,150,1,0,144,146,1,0,176,143,1,0,0,140,1,0,64,136,1,0,248,131,1,0,0,251,0,0,56,248,0,0,16,244,0,0,168,240,0,0,200,237,0,0,160,234,0,0,112,232,0,0,56,230,0,0,192,227,0,0,64,224,0,0,128,220,0,0,200,217,0,0,40,214,0,0,80,211,0,0,112,209,0,0,152,207,0,0,136,205,0,0,160,203,0,0,160,201,0,0,128,198,0,0,80,195,0,0,192,192,0,0,32,190,0,0,216,187,0,0,120,186,0,0,184,184,0,0,96,183,0,0,40,182,0,0,24,181,0,0,0,179,0,0,152,176,0,0,64,175,0,0,152,173,0,0,200,171,0,0,112,170,0,0,64,169,0,0,8,168,0,0,16,214,2,0,176,212,2,0,128,210,2,0,224,207,2,0,128,206,2,0,184,204,2,0,48,203,2,0,216,201,2,0,168,200,2,0,216,199,2,0,152,198,2,0,104,197,2,0,144,195,2,0,16,193,2,0,184,191,2,0,104,189,2,0,88,187,2,0,184,185,2,0,40,184,2,0,40,182,2,0,112,180,2,0,248,178,2,0,48,177,2,0,0,175,2,0,208,173,2,0,40,172,2,0,248,169,2,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,48,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,49,0,0,0,50,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,22,0,0,0,30,0,0,0,37,0,0,0,44,0,0,0,51,0,0,0,52,0,0,0,45,0,0,0,38,0,0,0,46,0,0,0,53,0,0,0,54,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,37,0,0,0,44,0,0,0,45,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,35,0,0,0,36,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,19,0,0,0,26,0,0,0,27,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,17,0,0,0,18,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,48,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,6,0,0,0,7,0,0,0,14,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,49,0,0,0,56,0,0,0,57,0,0,0,50,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,22,0,0,0,15,0,0,0,23,0,0,0,30,0,0,0,37,0,0,0,44,0,0,0,51,0,0,0,58,0,0,0,59,0,0,0,52,0,0,0,45,0,0,0,38,0,0,0,31,0,0,0,39,0,0,0,46,0,0,0,53,0,0,0,60,0,0,0,61,0,0,0,54,0,0,0,47,0,0,0,55,0,0,0,62,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,129,1,29,90,14,2,134,37,16,3,20,17,18,4,11,8,20,5,216,3,23,6,218,1,25,7,229,0,28,8,111,0,30,9,54,0,33,10,26,0,35,11,13,0,9,12,6,0,10,13,3,0,12,13,1,0,143,15,127,90,36,16,37,63,38,17,242,44,39,18,124,32,40,19,185,23,42,20,130,17,43,21,239,12,45,22,161,9,46,23,47,7,48,24,92,5,49,25,6,4,51,26,3,3,52,27,64,2,54,28,177,1,56,29,68,1,57,30,245,0,59,31,183,0,60,32,138,0,62,33,104,0,63,34,78,0,32,35,59,0,33,9,44,0,165,37,225,90,64,38,76,72,65,39,13,58,67,40,241,46,68,41,31,38,69,42,51,31,70,43,168,25,72,44,24,21,73,45,119,17,74,46,116,14,75,47,251,11,77,48,248,9,78,49,97,8,79,50,6,7,48,51,205,5,50,52,222,4,50,53,15,4,51,54,99,3,52,55,212,2,53,56,92,2,54,57,248,1,55,58,164,1,56,59,96,1,57,60,37,1,58,61,246,0,59,62,203,0,61,63,171,0,61,32,143,0,193,65,18,91,80,66,4,77,81,67,44,65,82,68,216,55,83,69,232,47,84,70,60,41,86,71,121,35,87,72,223,30,87,73,169,26,72,74,78,23,72,75,36,20,74,76,156,17,74,77,107,15,75,78,81,13,77,79,182,11,77,48,64,10,208,81,50,88,88,82,28,77,89,83,142,67,90,84,221,59,91,85,238,52,92,86,174,46,93,87,154,41,86,71,22,37,216,89,112,85,95,90,169,76,96,91,217,68,97,92,34,62,99,93,36,56,99,94,180,50,93,86,23,46,223,96,168,86,101,97,70,79,102,98,229,71,103,99,207,65,104,100,61,60,99,93,94,55,105,102,49,82,106,103,15,76,107,104,57,70,103,99,94,65,233,106,39,86,108,107,231,80,109,103,133,75,110,109,151,85,111,107,79,80,238,111,16,90,112,109,34,85,240,111,235,89,113,113,29,90,134,0,0,0,135,0,0,0,132,0,0,0,133,0,0,0,201,0,0,0,202,0,0,0,203,0,0,0,204,0,0,0,205,0,0,0,206,0,0,0,207,0,0,0,208,0,0,0,209,0,0,0,210,0,0,0,211,0,0,0,212,0,0,0,236,0,0,0,176,75,0,0,8,247,1,0,32,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,161,2,0,112,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,58,2,0,192,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,248,1,0,196,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,206,1,0,200,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,165,1,0,204,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,25,1,0,208,0,0,0,3,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,221,0,0,220,0,0,0,3,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,255,255,255,255,0,0,0,0,200,171,2,0,1,0,0,0,0,0,0,0,32,0,0,0,56,158,2,0,1,0,0,0,0,0,0,0,16,0,0,0,32,147,2,0,1,0,0,0,0,0,0,0,8,0,0,0,176,133,2,0,1,0,0,0,0,0,0,0,0,0,1,0,120,121,2,0,1,0,0,0,0,0,0,0,0,0,2,0,216,109,2,0,1,0,0,0,0,0,0,0,0,0,0,128,136,100,2,0,1,0,0,0,0,64,0,0,0,0,0,0,176,91,2,0,1,0,0,0,0,0,0,0,0,0,0,1,248,83,2,0,0,0,0,0,0,0,0,0,0,0,0,32,96,75,2,0,0,0,0,0,0,0,0,0,0,0,0,8,240,66,2,0,0,0,0,0,0,0,0,0,0,0,0,16,144,56,2,0,1,0,0,0,0,0,0,0,0,128,0,0,184,47,2,0,1,0,0,0,0,0,0,0,0,0,16,0,216,37,2,0,1,0,0,0,0,0,0,0,0,0,32,0,0,28,2,0,1,0,0,0,0,0,0,0,64,0,0,0,192,195,1,0,0,0,0,0,4,0,0,0,0,0,0,0,176,21,2,0,0,0,0,0,0,128,0,0,0,0,0,0,16,16,2,0,0,0,0,0,0,0,1,0,0,0,0,0,176,9,2,0,0,0,0,0,0,1,0,0,0,0,0,0,64,5,2,0,0,0,0,0,2,0,0,0,0,0,0,0,104,1,2,0,0,0,0,0,16,0,0,0,0,0,0,0,248,251,1,0,0,0,0,0,32,0,0,0,0,0,0,0,0,247,1,0,0,0,0,0,8,0,0,0,0,0,0,0,64,243,1,0,0,0,0,0,1,0,0,0,0,0,0,0,224,237,1,0,0,0,0,0,0,16,0,0,0,0,0,0,232,232,1,0,0,0,0,0,64,0,0,0,0,0,0,0,120,229,1,0,0,0,0,0,0,32,0,0,0,0,0,0,16,226,1,0,0,0,0,0,128,0,0,0,0,0,0,0,176,222,1,0,0,0,0,0,0,8,0,0,0,0,0,0,112,219,1,0,0,0,0,0,0,4,0,0,0,0,0,0,224,215,1,0,0,0,0,0,0,0,2,0,0,0,0,0,8,211,1,0,0,0,0,0,0,0,4,0,0,0,0,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,17,0,17,0,17,0,17,0,18,0,18,0,18,0,18,0,19,0,19,0,19,0,19,0,20,0,20,0,20,0,20,0,21,0,21,0,21,0,21,0,16,0,201,0,196,0,0,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,13,0,15,0,17,0,19,0,23,0,27,0,31,0,35,0,43,0,51,0,59,0,67,0,83,0,99,0,115,0,131,0,163,0,195,0,227,0,2,1,0,0,0,0,0,0,16,0,16,0,16,0,16,0,17,0,17,0,18,0,18,0,19,0,19,0,20,0,20,0,21,0,21,0,22,0,22,0,23,0,23,0,24,0,24,0,25,0,25,0,26,0,26,0,27,0,27,0,28,0,28,0,29,0,29,0,64,0,64,0,1,0,2,0,3,0,4,0,5,0,7,0,9,0,13,0,17,0,25,0,33,0,49,0,65,0,97,0,129,0,193,0,1,1,129,1,1,2,1,3,1,4,1,6,1,8,1,12,1,16,1,24,1,32,1,48,1,64,1,96,0,0,0,0,16,0,17,0,18,0,0,0,8,0,7,0,9,0,6,0,10,0,5,0,11,0,4,0,12,0,3,0,13,0,2,0,14,0,1,0,15,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,2,0,0,0,4,0,0,0,6,0,0,0,8], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240); +/* memory initializer */ allocate([255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,2,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,224,203,0,0,128,0,0,0,248,201,0,0,96,0,0,0,24,199,0,0,96,0,0,0,224,195,0,0,130,0,0,0,80,193,0,0,120,0,0,0,128,190,0,0,90,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,213,0,0,0,214,0,0,0,215,0,0,0,216,0,0,0,209,0,0,0,210,0,0,0,211,0,0,0,212,0,0,0,205,0,0,0,206,0,0,0,207,0,0,0,208,0,0,0,201,0,0,0,202,0,0,0,203,0,0,0,204,0,0,0,1,39,0,0,0,0,0,0,1,38,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,128,63,0,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,128,63,0,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0,18,7,31,0,0,8,112,0,0,8,48,0,0,9,192,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,160,0,0,8,0,0,0,8,128,0,0,8,64,0,0,9,224,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,144,0,19,7,59,0,0,8,120,0,0,8,56,0,0,9,208,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,176,0,0,8,8,0,0,8,136,0,0,8,72,0,0,9,240,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,0,8,116,0,0,8,52,0,0,9,200,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,168,0,0,8,4,0,0,8,132,0,0,8,68,0,0,9,232,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,152,0,20,7,83,0,0,8,124,0,0,8,60,0,0,9,216,0,18,7,23,0,0,8,108,0,0,8,44,0,0,9,184,0,0,8,12,0,0,8,140,0,0,8,76,0,0,9,248,0,16,7,3,0,0,8,82,0,0,8,18,0,21,8,163,0,19,7,35,0,0,8,114,0,0,8,50,0,0,9,196,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,164,0,0,8,2,0,0,8,130,0,0,8,66,0,0,9,228,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,148,0,20,7,67,0,0,8,122,0,0,8,58,0,0,9,212,0,18,7,19,0,0,8,106,0,0,8,42,0,0,9,180,0,0,8,10,0,0,8,138,0,0,8,74,0,0,9,244,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9,204,0,17,7,15,0,0,8,102,0,0,8,38,0,0,9,172,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,236,0,16,7,9,0,0,8,94,0,0,8,30,0,0,9,156,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,220,0,18,7,27,0,0,8,110,0,0,8,46,0,0,9,188,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,252,0,96,7,0,0,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,194,0,16,7,10,0,0,8,97,0,0,8,33,0,0,9,162,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,226,0,16,7,6,0,0,8,89,0,0,8,25,0,0,9,146,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,210,0,17,7,17,0,0,8,105,0,0,8,41,0,0,9,178,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,242,0,16,7,4,0,0,8,85,0,0,8,21,0,16,8,2,1,19,7,43,0,0,8,117,0,0,8,53,0,0,9,202,0,17,7,13,0,0,8,101,0,0,8,37,0,0,9,170,0,0,8,5,0,0,8,133,0,0,8,69,0,0,9,234,0,16,7,8,0,0,8,93,0,0,8,29,0,0,9,154,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,218,0,18,7,23,0,0,8,109,0,0,8,45,0,0,9,186,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,250,0,16,7,3,0,0,8,83,0,0,8,19,0,21,8,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,198,0,17,7,11,0,0,8,99,0,0,8,35,0,0,9,166,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,230,0,16,7,7,0,0,8,91,0,0,8,27,0,0,9,150,0,20,7,67,0,0,8,123,0,0,8,59,0,0,9,214,0,18,7,19,0,0,8,107,0,0,8,43,0,0,9,182,0,0,8,11,0,0,8,139,0,0,8,75,0,0,9,246,0,16,7,5,0,0,8,87,0,0,8,23,0,64,8,0,0,19,7,51,0,0,8,119,0,0,8,55,0,0,9,206,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,174,0,0,8,7,0,0,8,135,0,0,8,71,0,0,9,238,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,158,0,20,7,99,0,0,8,127,0,0,8,63,0,0,9,222,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,190,0,0,8,15,0,0,8,143,0,0,8,79,0,0,9,254,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0,18,7,31,0,0,8,112,0,0,8,48,0,0,9,193,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,161,0,0,8,0,0,0,8,128,0,0,8,64,0,0,9,225,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,145,0,19,7,59,0,0,8,120,0,0,8,56,0,0,9,209,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,177,0,0,8,8,0,0,8,136,0,0,8,72,0,0,9,241,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,0,8,116,0,0,8,52,0,0,9,201,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,169,0,0,8,4,0,0,8,132,0,0,8,68,0,0,9,233,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,153,0,20,7,83,0,0,8,124,0,0,8,60,0,0,9,217,0,18,7,23,0,0,8,108,0,0,8,44,0,0,9,185,0,0,8,12,0,0,8,140,0,0,8,76,0,0,9,249,0,16,7,3,0,0,8,82,0,0,8,18,0,21,8,163,0,19,7,35,0,0,8,114,0,0,8,50,0,0,9,197,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,165,0,0,8,2,0,0,8,130,0,0,8,66,0,0,9,229,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,149,0,20,7,67,0,0,8,122,0,0,8,58,0,0,9,213,0,18,7,19,0,0,8,106,0,0,8,42,0,0,9,181,0,0,8,10,0,0,8,138,0,0,8,74,0,0,9,245,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9,205,0,17,7,15,0,0,8,102,0,0,8,38,0,0,9,173,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,237,0,16,7,9,0,0,8,94,0,0,8,30,0,0,9,157,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,221,0,18,7,27,0,0,8,110,0,0,8,46,0,0,9,189,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,253,0,96,7,0,0,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,195,0,16,7,10,0,0,8,97,0,0,8,33,0,0,9,163,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,227,0,16,7,6,0,0,8,89,0,0,8,25,0,0,9,147,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,211,0,17,7,17,0,0,8,105,0,0,8,41,0,0,9,179,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,243,0,16,7,4,0,0,8,85,0,0,8,21,0,16,8,2,1,19,7,43,0,0,8,117,0,0,8,53,0,0,9,203,0,17,7,13,0,0,8,101,0,0,8,37,0,0,9,171,0,0,8,5,0,0,8,133,0,0,8,69,0,0,9,235,0,16,7,8,0,0,8,93,0,0,8,29,0,0,9,155,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,219,0,18,7,23,0,0,8,109,0,0,8,45,0,0,9,187,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,251,0,16,7,3,0,0,8,83,0,0,8,19,0,21,8,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,199,0,17,7,11,0,0,8,99,0,0,8,35,0,0,9,167,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,231,0,16,7,7,0,0,8,91,0,0,8,27,0,0,9,151,0,20,7,67,0,0,8,123,0,0,8,59,0,0,9,215,0,18,7,19,0,0,8,107,0,0,8,43,0,0,9,183,0,0,8,11,0,0,8,139,0,0,8,75,0,0,9,247,0,16,7,5,0,0,8,87,0,0,8,23,0,64,8,0,0,19,7,51,0,0,8,119,0,0,8,55,0,0,9,207,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,175,0,0,8,7,0,0,8,135,0,0,8,71,0,0,9,239,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,159,0,20,7,99,0,0,8,127,0,0,8,63,0,0,9,223,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,191,0,0,8,15,0,0,8,143,0,0,8,79,0,0,9,255,0,16,5,1,0,23,5,1,1,19,5,17,0,27,5,1,16,17,5,5,0,25,5,1,4,21,5,65,0,29,5,1,64,16,5,3,0,24,5,1,2,20,5,33,0,28,5,1,32,18,5,9,0,26,5,1,8,22,5,129,0,64,5,0,0,16,5,2,0,23,5,129,1,19,5,25,0,27,5,1,24,17,5,7,0,25,5,1,6,21,5,97,0,29,5,1,96,16,5,4,0,24,5,1,3,20,5,49,0,28,5,1,48,18,5,13,0,26,5,1,12,22,5,193,0,64,5,0,0,0,0,0,0,0,0,0,0,112,11,58,1,48,9,58,1,208,11,58,1,144,11,58,1,64,6,0,0,128,62,0,0,0,0,128,63,0,0,0,128,99,250,127,63,191,117,86,188,139,233,127,63,10,113,214,188,121,205,127,63,231,206,32,189,47,166,127,63,58,94,86,189,175,115,127,63,19,242,133,189,249,53,127,63,42,175,160,189,18,237,126,63,51,101,187,189,253,152,126,63,4,19,214,189,188,57,126,63,115,183,240,189,85,207,125,63,168,168,5,190,203,89,125,63,187,239,18,190,37,217,124,63,92,48,32,190,103,77,124,63,245,105,45,190,152,182,123,63,243,155,58,190,190,20,123,63,194,197,71,190,226,103,122,63,205,230,84,190,9,176,121,63,130,254,97,190,60,237,120,63,77,12,111,190,132,31,120,63,156,15,124,190,234,70,119,63,238,131,132,190,119,99,118,63,62,250,138,190,54,117,117,63,117,106,145,190,48,124,116,63,76,212,151,190,113,120,115,63,122,55,158,190,3,106,114,63,183,147,164,190,244,80,113,63,188,232,170,190,79,45,112,63,65,54,177,190,33,255,110,63,1,124,183,190,118,198,109,63,180,185,189,190,94,131,108,63,21,239,195,190,231,53,107,63,222,27,202,190,30,222,105,63,201,63,208,190,18,124,104,63,146,90,214,190,212,15,103,63,243,107,220,190,116,153,101,63,170,115,226,190,1,25,100,63,113,113,232,190,141,142,98,63,7,101,238,190,40,250,96,63,39,78,244,190,230,91,95,63,144,44,250,190,215,179,93,63,0,0,0,191,15,2,92,63,27,228,2,191,160,70,90,63,119,194,5,191,158,129,88,63,246,154,8,191,29,179,86,63,119,109,11,191,49,219,84,63,218,57,14,191,239,249,82,63,0,0,17,191,108,15,81,63,202,191,19,191,189,27,79,63,24,121,22,191,248,30,77,63,205,43,25,191,52,25,75,63,202,215,27,191,136,10,73,63,241,124,30,191,10,243,70,63,36,27,33,191,209,210,68,63,70,178,35,191,247,169,66,63,58,66,38,191,147,120,64,63,227,202,40,191,189,62,62,63,37,76,43,191,143,252,59,63,227,197,45,191,34,178,57,63,1,56,48,191,144,95,55,63,101,162,50,191,243,4,53,63,243,4,53,191,101,162,50,63,144,95,55,191,1,56,48,63,34,178,57,191,227,197,45,63,143,252,59,191,37,76,43,63,189,62,62,191,227,202,40,63,147,120,64,191,58,66,38,63,247,169,66,191,70,178,35,63,209,210,68,191,36,27,33,63,10,243,70,191,241,124,30,63,136,10,73,191,202,215,27,63,52,25,75,191,205,43,25,63,248,30,77,191,24,121,22,63,189,27,79,191,202,191,19,63,108,15,81,191,0,0,17,63,239,249,82,191,218,57,14,63,49,219,84,191,119,109,11,63,29,179,86,191,246,154,8,63,158,129,88,191,119,194,5,63,160,70,90,191,27,228,2,63,15,2,92,191,0,0,0,63,215,179,93,191,144,44,250,62,230,91,95,191,39,78,244,62,40,250,96,191,7,101,238,62,141,142,98,191,113,113,232,62,1,25,100,191,170,115,226,62,116,153,101,191,243,107,220,62,212,15,103,191,146,90,214,62,18,124,104,191,201,63,208,62,30,222,105,191,222,27,202,62,231,53,107,191,21,239,195,62,94,131,108,191,180,185,189,62,118,198,109,191,1,124,183,62,33,255,110,191,65,54,177,62,79,45,112,191,188,232,170,62,244,80,113,191,183,147,164,62,3,106,114,191,122,55,158,62,113,120,115,191,76,212,151,62,48,124,116,191,117,106,145,62,54,117,117,191,62,250,138,62,119,99,118,191,238,131,132,62,234,70,119,191,156,15,124,62,132,31,120,191,77,12,111,62,60,237,120,191,130,254,97,62,9,176,121,191,205,230,84,62,226,103,122,191,194,197,71,62,190,20,123,191,243,155,58,62,152,182,123,191,245,105,45,62,103,77,124,191,92,48,32,62,37,217,124,191,187,239,18,62,203,89,125,191,168,168,5,62,85,207,125,191,115,183,240,61,188,57,126,191,4,19,214,61,253,152,126,191,51,101,187,61,18,237,126,191,42,175,160,61,249,53,127,191,19,242,133,61,175,115,127,191,58,94,86,61,47,166,127,191,231,206,32,61,121,205,127,191,10,113,214,60,139,233,127,191,191,117,86,60,99,250,127,191,0,48,141,36,0,0,128,191,191,117,86,188,99,250,127,191,10,113,214,188,139,233,127,191,231,206,32,189,121,205,127,191,58,94,86,189,47,166,127,191,19,242,133,189,175,115,127,191,42,175,160,189,249,53,127,191,51,101,187,189,18,237,126,191,4,19,214,189,253,152,126,191,115,183,240,189,188,57,126,191,168,168,5,190,85,207,125,191,187,239,18,190,203,89,125,191,92,48,32,190,37,217,124,191,245,105,45,190,103,77,124,191,243,155,58,190,152,182,123,191,194,197,71,190,190,20,123,191,205,230,84,190,226,103,122,191,130,254,97,190,9,176,121,191,77,12,111,190,60,237,120,191,156,15,124,190,132,31,120,191,238,131,132,190,234,70,119,191,62,250,138,190,119,99,118,191,117,106,145,190,54,117,117,191,76,212,151,190,48,124,116,191,122,55,158,190,113,120,115,191,183,147,164,190,3,106,114,191,188,232,170,190,244,80,113,191,65,54,177,190,79,45,112,191,1,124,183,190,33,255,110,191,180,185,189,190,118,198,109,191,21,239,195,190,94,131,108,191,222,27,202,190,231,53,107,191,201,63,208,190,30,222,105,191,146,90,214,190,18,124,104,191,243,107,220,190,212,15,103,191,170,115,226,190,116,153,101,191,113,113,232,190,1,25,100,191,7,101,238,190,141,142,98,191,39,78,244,190,40,250,96,191,144,44,250,190,230,91,95,191,0,0,0,191,215,179,93,191,27,228,2,191,15,2,92,191,119,194,5,191,160,70,90,191,246,154,8,191,158,129,88,191,119,109,11,191,29,179,86,191,218,57,14,191,49,219,84,191,0,0,17,191,239,249,82,191,202,191,19,191,108,15,81,191,24,121,22,191,189,27,79,191,205,43,25,191,248,30,77,191,202,215,27,191,52,25,75,191,241,124,30,191,136,10,73,191,36,27,33,191,10,243,70,191,70,178,35,191,209,210,68,191,58,66,38,191,247,169,66,191,227,202,40,191,147,120,64,191,37,76,43,191,189,62,62,191,227,197,45,191,143,252,59,191,1,56,48,191,34,178,57,191,101,162,50,191,144,95,55,191,243,4,53,191,243,4,53,191,144,95,55,191,101,162,50,191,34,178,57,191,1,56,48,191,143,252,59,191,227,197,45,191,189,62,62,191,37,76,43,191,147,120,64,191,227,202,40,191,247,169,66,191,58,66,38,191,209,210,68,191,70,178,35,191,10,243,70,191,36,27,33,191,136,10,73,191,241,124,30,191,52,25,75,191,202,215,27,191,248,30,77,191,205,43,25,191,189,27,79,191,24,121,22,191,108,15,81,191,202,191,19,191,239,249,82,191,0,0,17,191,49,219,84,191,218,57,14,191,29,179,86,191,119,109,11,191,158,129,88,191,246,154,8,191,160,70,90,191,119,194,5,191,15,2,92,191,27,228,2,191,215,179,93,191,0,0,0,191,230,91,95,191,144,44,250,190,40,250,96,191,39,78,244,190,141,142,98,191,7,101,238,190,1,25,100,191,113,113,232,190,116,153,101,191,170,115,226,190,212,15,103,191,243,107,220,190,18,124,104,191,146,90,214,190,30,222,105,191,201,63,208,190,231,53,107,191,222,27,202,190,94,131,108,191,21,239,195,190,118,198,109,191,180,185,189,190,33,255,110,191,1,124,183,190,79,45,112,191,65,54,177,190,244,80,113,191,188,232,170,190,3,106,114,191,183,147,164,190,113,120,115,191,122,55,158,190,48,124,116,191,76,212,151,190,54,117,117,191,117,106,145,190,119,99,118,191,62,250,138,190,234,70,119,191,238,131,132,190,132,31,120,191,156,15,124,190,60,237,120,191,77,12,111,190,9,176,121,191,130,254,97,190,226,103,122,191,205,230,84,190,190,20,123,191,194,197,71,190,152,182,123,191,243,155,58,190,103,77,124,191,245,105,45,190,37,217,124,191,92,48,32,190,203,89,125,191,187,239,18,190,85,207,125,191,168,168,5,190,188,57,126,191,115,183,240,189,253,152,126,191,4,19,214,189,18,237,126,191,51,101,187,189,249,53,127,191,42,175,160,189,175,115,127,191,19,242,133,189,47,166,127,191,58,94,86,189,121,205,127,191,231,206,32,189,139,233,127,191,10,113,214,188,99,250,127,191,191,117,86,188,0,0,128,191,0,48,13,165,99,250,127,191,191,117,86,60,139,233,127,191,10,113,214,60,121,205,127,191,231,206,32,61,47,166,127,191,58,94,86,61,175,115,127,191,19,242,133,61,249,53,127,191,42,175,160,61,18,237,126,191,51,101,187,61,253,152,126,191,4,19,214,61,188,57,126,191,115,183,240,61,85,207,125,191,168,168,5,62,203,89,125,191,187,239,18,62,37,217,124,191,92,48,32,62,103,77,124,191,245,105,45,62,152,182,123,191,243,155,58,62,190,20,123,191,194,197,71,62,226,103,122,191,205,230,84,62,9,176,121,191,130,254,97,62,60,237,120,191,77,12,111,62,132,31,120,191,156,15,124,62,234,70,119,191,238,131,132,62,119,99,118,191,62,250,138,62,54,117,117,191,117,106,145,62,48,124,116,191,76,212,151,62,113,120,115,191,122,55,158,62,3,106,114,191,183,147,164,62,244,80,113,191,188,232,170,62,79,45,112,191,65,54,177,62,33,255,110,191,1,124,183,62,118,198,109,191,180,185,189,62,94,131,108,191,21,239,195,62,231,53,107,191,222,27,202,62,30,222,105,191,201,63,208,62,18,124,104,191,146,90,214,62,212,15,103,191,243,107,220,62,116,153,101,191,170,115,226,62,1,25,100,191,113,113,232,62,141,142,98,191,7,101,238,62,40,250,96,191,39,78,244,62,230,91,95,191,144,44,250,62,215,179,93,191,0,0,0,63,15,2,92,191,27,228,2,63,160,70,90,191,119,194,5,63,158,129,88,191,246,154,8,63,29,179,86,191,119,109,11,63,49,219,84,191,218,57,14,63,239,249,82,191,0,0,17,63,108,15,81,191,202,191,19,63,189,27,79,191,24,121,22,63,248,30,77,191,205,43,25,63,52,25,75,191,202,215,27,63,136,10,73,191,241,124,30,63,10,243,70,191,36,27,33,63,209,210,68,191,70,178,35,63,247,169,66,191,58,66,38,63,147,120,64,191,227,202,40,63,189,62,62,191,37,76,43,63,143,252,59,191,227,197,45,63,34,178,57,191,1,56,48,63,144,95,55,191,101,162,50,63,243,4,53,191,243,4,53,63,101,162,50,191,144,95,55,63,1,56,48,191,34,178,57,63,227,197,45,191,143,252,59,63,37,76,43,191,189,62,62,63,227,202,40,191,147,120,64,63,58,66,38,191,247,169,66,63,70,178,35,191,209,210,68,63,36,27,33,191,10,243,70,63,241,124,30,191,136,10,73,63,202,215,27,191,52,25,75,63,205,43,25,191,248,30,77,63,24,121,22,191,189,27,79,63,202,191,19,191,108,15,81,63,0,0,17,191,239,249,82,63,218,57,14,191,49,219,84,63,119,109,11,191,29,179,86,63,246,154,8,191,158,129,88,63,119,194,5,191,160,70,90,63,27,228,2,191,15,2,92,63,0,0,0,191,215,179,93,63,144,44,250,190,230,91,95,63,39,78,244,190,40,250,96,63,7,101,238,190,141,142,98,63,113,113,232,190,1,25,100,63,170,115,226,190,116,153,101,63,243,107,220,190,212,15,103,63,146,90,214,190,18,124,104,63,201,63,208,190,30,222,105,63,222,27,202,190,231,53,107,63,21,239,195,190,94,131,108,63,180,185,189,190,118,198,109,63,1,124,183,190,33,255,110,63,65,54,177,190,79,45,112,63,188,232,170,190,244,80,113,63,183,147,164,190,3,106,114,63,122,55,158,190,113,120,115,63,76,212,151,190,48,124,116,63,117,106,145,190,54,117,117,63,62,250,138,190,119,99,118,63,238,131,132,190,234,70,119,63,156,15,124,190,132,31,120,63,77,12,111,190,60,237,120,63,130,254,97,190,9,176,121,63,205,230,84,190,226,103,122,63,194,197,71,190,190,20,123,63,243,155,58,190,152,182,123,63,245,105,45,190,103,77,124,63,92,48,32,190,37,217,124,63,187,239,18,190,203,89,125,63,168,168,5,190,85,207,125,63,115,183,240,189,188,57,126,63,4,19,214,189,253,152,126,63,51,101,187,189,18,237,126,63,42,175,160,189,249,53,127,63,19,242,133,189,175,115,127,63,58,94,86,189,47,166,127,63,231,206,32,189,121,205,127,63,10,113,214,188,139,233,127,63,191,117,86,188,99,250,127,63,0,200,83,165,0,0,128,63,191,117,86,60,99,250,127,63,10,113,214,60,139,233,127,63,231,206,32,61,121,205,127,63,58,94,86,61,47,166,127,63,19,242,133,61,175,115,127,63,42,175,160,61,249,53,127,63,51,101,187,61,18,237,126,63,4,19,214,61,253,152,126,63,115,183,240,61,188,57,126,63,168,168,5,62,85,207,125,63,187,239,18,62,203,89,125,63,92,48,32,62,37,217,124,63,245,105,45,62,103,77,124,63,243,155,58,62,152,182,123,63,194,197,71,62,190,20,123,63,205,230,84,62,226,103,122,63,130,254,97,62,9,176,121,63,77,12,111,62,60,237,120,63,156,15,124,62,132,31,120,63,238,131,132,62,234,70,119,63,62,250,138,62,119,99,118,63,117,106,145,62,54,117,117,63,76,212,151,62,48,124,116,63,122,55,158,62,113,120,115,63,183,147,164,62,3,106,114,63,188,232,170,62,244,80,113,63,65,54,177,62,79,45,112,63,1,124,183,62,33,255,110,63,180,185,189,62,118,198,109,63,21,239,195,62,94,131,108,63,222,27,202,62,231,53,107,63,201,63,208,62,30,222,105,63,146,90,214,62,18,124,104,63,243,107,220,62,212,15,103,63,170,115,226,62,116,153,101,63,113,113,232,62,1,25,100,63,7,101,238,62,141,142,98,63,39,78,244,62,40,250,96,63,144,44,250,62,230,91,95,63,0,0,0,63,215,179,93,63,27,228,2,63,15,2,92,63,119,194,5,63,160,70,90,63,246,154,8,63,158,129,88,63,119,109,11,63,29,179,86,63,218,57,14,63,49,219,84,63,0,0,17,63,239,249,82,63,202,191,19,63,108,15,81,63,24,121,22,63,189,27,79,63,205,43,25,63,248,30,77,63,202,215,27,63,52,25,75,63,241,124,30,63,136,10,73,63,36,27,33,63,10,243,70,63,70,178,35,63,209,210,68,63,58,66,38,63,247,169,66,63,227,202,40,63,147,120,64,63,37,76,43,63,189,62,62,63,227,197,45,63,143,252,59,63,1,56,48,63,34,178,57,63,101,162,50,63,144,95,55,63,243,4,53,63,243,4,53,63,144,95,55,63,101,162,50,63,34,178,57,63,1,56,48,63,143,252,59,63,227,197,45,63,189,62,62,63,37,76,43,63,147,120,64,63,227,202,40,63,247,169,66,63,58,66,38,63,209,210,68,63,70,178,35,63,10,243,70,63,36,27,33,63,136,10,73,63,241,124,30,63,52,25,75,63,202,215,27,63,248,30,77,63,205,43,25,63,189,27,79,63,24,121,22,63,108,15,81,63,202,191,19,63,239,249,82,63,0,0,17,63,49,219,84,63,218,57,14,63,29,179,86,63,119,109,11,63,158,129,88,63,246,154,8,63,160,70,90,63,119,194,5,63,15,2,92,63,27,228,2,63,215,179,93,63,0,0,0,63,230,91,95,63,144,44,250,62,40,250,96,63,39,78,244,62,141,142,98,63,7,101,238,62,1,25,100,63,113,113,232,62,116,153,101,63,170,115,226,62,212,15,103,63,243,107,220,62,18,124,104,63,146,90,214,62,30,222,105,63,201,63,208,62,231,53,107,63,222,27,202,62,94,131,108,63,21,239,195,62,118,198,109,63,180,185,189,62,33,255,110,63,1,124,183,62,79,45,112,63,65,54,177,62,244,80,113,63,188,232,170,62,3,106,114,63,183,147,164,62,113,120,115,63,122,55,158,62,48,124,116,63,76,212,151,62,54,117,117,63,117,106,145,62,119,99,118,63,62,250,138,62,234,70,119,63,238,131,132,62,132,31,120,63,156,15,124,62,60,237,120,63,77,12,111,62,9,176,121,63,130,254,97,62,226,103,122,63,205,230,84,62,190,20,123,63,194,197,71,62,152,182,123,63,243,155,58,62,103,77,124,63,245,105,45,62,37,217,124,63,92,48,32,62,203,89,125,63,187,239,18,62,85,207,125,63,168,168,5,62,188,57,126,63,115,183,240,61,253,152,126,63,4,19,214,61,18,237,126,63,51,101,187,61,249,53,127,63,42,175,160,61,175,115,127,63,19,242,133,61,47,166,127,63,58,94,86,61,121,205,127,63,231,206,32,61,139,233,127,63,10,113,214,60,99,250,127,63,191,117,86,60,60,0,0,0,137,136,136,60,3,0,0,0,4,0,15,0,3,0,5,0,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,105,0,0,16,90,0,0,0,0,0,0,120,0,0,0,136,136,8,60,2,0,0,0,4,0,30,0,2,0,15,0,3,0,5,0,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,112,0,0,16,90,0,0,0,0,0,0,240,0,0,0,137,136,136,59,1,0,0,0,4,0,60,0,4,0,15,0,3,0,5,0,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,110,0,0,16,90,0,0,0,0,0,0,224,1,0,0,135,136,8,59,255,255,255,255,4,0,120,0,4,0,30,0,2,0,15,0,3,0,5,0,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,104,106,0,0,16,90,0,0,0,0,0,0,0,0,15,0,30,0,45,0,5,0,20,0,35,0,50,0,10,0,25,0,40,0,55,0,1,0,16,0,31,0,46,0,6,0,21,0,36,0,51,0,11,0,26,0,41,0,56,0,2,0,17,0,32,0,47,0,7,0,22,0,37,0,52,0,12,0,27,0,42,0,57,0,3,0,18,0,33,0,48,0,8,0,23,0,38,0,53,0,13,0,28,0,43,0,58,0,4,0,19,0,34,0,49,0,9,0,24,0,39,0,54,0,14,0,29,0,44,0,59,0,0,0,120,0,240,0,104,1,30,0,150,0,14,1,134,1,60,0,180,0,44,1,164,1,90,0,210,0,74,1,194,1,15,0,135,0,255,0,119,1,45,0,165,0,29,1,149,1,75,0,195,0,59,1,179,1,105,0,225,0,89,1,209,1,5,0,125,0,245,0,109,1,35,0,155,0,19,1,139,1,65,0,185,0,49,1,169,1,95,0,215,0,79,1,199,1,20,0,140,0,4,1,124,1,50,0,170,0,34,1,154,1,80,0,200,0,64,1,184,1,110,0,230,0,94,1,214,1,10,0,130,0,250,0,114,1,40,0,160,0,24,1,144,1,70,0,190,0,54,1,174,1,100,0,220,0,84,1,204,1,25,0,145,0,9,1,129,1,55,0,175,0,39,1,159,1,85,0,205,0,69,1,189,1,115,0,235,0,99,1,219,1,1,0,121,0,241,0,105,1,31,0,151,0,15,1,135,1,61,0,181,0,45,1,165,1,91,0,211,0,75,1,195,1,16,0,136,0,0,1,120,1,46,0,166,0,30,1,150,1,76,0,196,0,60,1,180,1,106,0,226,0,90,1,210,1,6,0,126,0,246,0,110,1,36,0,156,0,20,1,140,1,66,0,186,0,50,1,170,1,96,0,216,0,80,1,200,1,21,0,141,0,5,1,125,1,51,0,171,0,35,1,155,1,81,0,201,0,65,1,185,1,111,0,231,0,95,1,215,1,11,0,131,0,251,0,115,1,41,0,161,0,25,1,145,1,71,0,191,0,55,1,175,1,101,0,221,0,85,1,205,1,26,0,146,0,10,1,130,1,56,0,176,0,40,1,160,1,86,0,206,0,70,1,190,1,116,0,236,0,100,1,220,1,2,0,122,0,242,0,106,1,32,0,152,0,16,1,136,1,62,0,182,0,46,1,166,1,92,0,212,0,76,1,196,1,17,0,137,0,1,1,121,1,47,0,167,0,31,1,151,1,77,0,197,0,61,1,181,1,107,0,227,0,91,1,211,1,7,0,127,0,247,0,111,1,37,0,157,0,21,1,141,1,67,0,187,0,51,1,171,1,97,0,217,0,81,1,201,1,22,0,142,0,6,1,126,1,52,0,172,0,36,1,156,1,82,0,202,0,66,1,186,1,112,0,232,0,96,1,216,1,12,0,132,0,252,0,116,1,42,0,162,0,26,1,146,1,72,0,192,0,56,1,176,1,102,0,222,0,86,1,206,1,27,0,147,0,11,1,131,1,57,0,177,0,41,1,161,1,87,0,207,0,71,1,191,1,117,0,237,0,101,1,221,1,3,0,123,0,243,0,107,1,33,0,153,0,17,1,137,1,63,0,183,0,47,1,167,1,93,0,213,0,77,1,197,1,18,0,138,0,2,1,122,1,48,0,168,0,32,1,152,1,78,0,198,0,62,1,182,1,108,0,228,0,92,1,212,1,8,0,128,0,248,0,112,1,38,0,158,0,22,1,142,1,68,0,188,0,52,1,172,1,98,0,218,0,82,1,202,1,23,0,143,0,7,1,127,1,53,0,173,0,37,1,157,1,83,0,203,0,67,1,187,1,113,0,233,0,97,1,217,1,13,0,133,0,253,0,117,1,43,0,163,0,27,1,147,1,73,0,193,0,57,1,177,1,103,0,223,0,87,1,207,1,28,0,148,0,12,1,132,1,58,0,178,0,42,1,162,1,88,0,208,0,72,1,192,1,118,0,238,0,102,1,222,1,4,0,124,0,244,0,108,1,34,0,154,0,18,1,138,1,64,0,184,0,48,1,168,1,94,0,214,0,78,1,198,1,19,0,139,0,3,1,123,1,49,0,169,0,33,1,153,1,79,0,199,0,63,1,183,1,109,0,229,0,93,1,213,1,9,0,129,0,249,0,113,1,39,0,159,0,23,1,143,1,69,0,189,0,53,1,173,1,99,0,219,0,83,1,203,1,24,0,144,0,8,1,128,1,54,0,174,0,38,1,158,1,84,0,204,0,68,1,188,1,114,0,234,0,98,1,218,1,14,0,134,0,254,0,118,1,44,0,164,0,28,1,148,1,74,0,194,0,58,1,178,1,104,0,224,0,88,1,208,1,29,0,149,0,13,1,133,1,59,0,179,0,43,1,163,1,89,0,209,0,73,1,193,1,119,0,239,0,103,1,223,1,0,0,60,0,120,0,180,0,15,0,75,0,135,0,195,0,30,0,90,0,150,0,210,0,45,0,105,0,165,0,225,0,5,0,65,0,125,0,185,0,20,0,80,0,140,0,200,0,35,0,95,0,155,0,215,0,50,0,110,0,170,0,230,0,10,0,70,0,130,0,190,0,25,0,85,0,145,0,205,0,40,0,100,0,160,0,220,0,55,0,115,0,175,0,235,0,1,0,61,0,121,0,181,0,16,0,76,0,136,0,196,0,31,0,91,0,151,0,211,0,46,0,106,0,166,0,226,0,6,0,66,0,126,0,186,0,21,0,81,0,141,0,201,0,36,0,96,0,156,0,216,0,51,0,111,0,171,0,231,0,11,0,71,0,131,0,191,0,26,0,86,0,146,0,206,0,41,0,101,0,161,0,221,0,56,0,116,0,176,0,236,0,2,0,62,0,122,0,182,0,17,0,77,0,137,0,197,0,32,0,92,0,152,0,212,0,47,0,107,0,167,0,227,0,7,0,67,0,127,0,187,0,22,0,82,0,142,0,202,0,37,0,97,0,157,0,217,0,52,0,112,0,172,0,232,0,12,0,72,0,132,0,192,0,27,0,87,0,147,0,207,0,42,0,102,0,162,0,222,0,57,0,117,0,177,0,237,0,3,0,63,0,123,0,183,0,18,0,78,0,138,0,198,0,33,0,93,0,153,0,213,0,48,0,108,0,168,0,228,0,8,0,68,0,128,0,188,0,23,0,83,0,143,0,203,0,38,0,98,0,158,0,218,0,53,0,113,0,173,0,233,0,13,0,73,0,133,0,193,0,28,0,88,0,148,0,208,0,43,0,103,0,163,0,223,0,58,0,118,0,178,0,238,0,4,0,64,0,124,0,184,0,19,0,79,0,139,0,199,0,34,0,94,0,154,0,214,0,49,0,109,0,169,0,229,0,9,0,69,0,129,0,189,0,24,0,84,0,144,0,204,0,39,0,99,0,159,0,219,0,54,0,114,0,174,0,234,0,14,0,74,0,134,0,194,0,29,0,89,0,149,0,209,0,44,0,104,0,164,0,224,0,59,0,119,0,179,0,239,0,0,0,30,0,60,0,90,0,15,0,45,0,75,0,105,0,5,0,35,0,65,0,95,0,20,0,50,0,80,0,110,0,10,0,40,0,70,0,100,0,25,0,55,0,85,0,115,0,1,0,31,0,61,0,91,0,16,0,46,0,76,0,106,0,6,0,36,0,66,0,96,0,21,0,51,0,81,0,111,0,11,0,41,0,71,0,101,0,26,0,56,0,86,0,116,0,2,0,32,0,62,0,92,0,17,0,47,0,77,0,107,0,7,0,37,0,67,0,97,0,22,0,52,0,82,0,112,0,12,0,42,0,72,0,102,0,27,0,57,0,87,0,117,0,3,0,33,0,63,0,93,0,18,0,48,0,78,0,108,0,8,0,38,0,68,0,98,0,23,0,53,0,83,0,113,0,13,0,43,0,73,0,103,0,28,0,58,0,88,0,118,0,4,0,34,0,64,0,94,0,19,0,49,0,79,0,109,0,9,0,39,0,69,0,99,0,24,0,54,0,84,0,114,0,14,0,44,0,74,0,104,0,29,0,59,0,89,0,119,0,168,251,0,0,0,0,0,0,184,252,0,0,0,0,0,0,216,253,0,0,0,0,0,0,136,25,1,0,0,0,0,0,40,83,1,0,0,0,0,0,168,105,1,0,0,0,0,0,24,110,1,0,0,0,0,0,48,120,1,0,0,0,0,0,104,121,1,0,0,0,0,0,136,129,1,0,0,0,0,0,0,0,0,0,136,19,0,0,15,0,0,0,10,0,0,0,5,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,232,201,0,0,16,0,0,0,32,0,0,0,104,181,0,0,24,0,0,0,0,0,0,0,16,213,2,0,28,0,0,0,0,0,0,0,192,197,2,0,36,0,0,0,0,0,0,0,48,179,2,0,40,0,0,0,0,0,0,0,160,165,2,0,32,0,0,0,0,0,0,0,104,153,2,0,64,0,0,0,0,0,0,0,88,141,2,0,44,0,0,0,0,0,0,0,96,127,2,0,60,0,0,0,0,0,0,0,168,116,2,0,180,0,0,0,10,0,0,0,56,106,2,0,132,0,0,0,0,0,0,0,48,96,2,0,4,0,0,0,8,0,0,0,96,88,2,0,200,0,0,0,8,0,0,0,8,81,2,0,184,0,0,0,8,0,0,0,208,71,2,0,196,0,0,0,8,0,0,0,208,61,2,0,148,0,0,0,10,0,0,0,160,52,2,0,12,0,0,0,8,0,0,0,120,42,2,0,8,0,0,0,19,0,0,0,64,33,2,0,140,0,0,0,10,0,0,0,184,25,2,0,192,0,0,0,8,0,0,0,192,19,2,0,168,0,0,0,8,0,0,0,248,13,2,0,120,0,0,0,0,0,0,0,240,7,2,0,20,0,0,0,32,0,0,0,216,3,2,0,48,0,0,0,8,0,0,0,48,255,1,0,92,0,0,0,0,0,0,0,248,249,1,0,96,0,0,0,0,0,0,0,96,245,1,0,100,0,0,0,0,0,0,0,160,240,1,0,176,0,0,0,24,0,0,0,96,235,1,0,188,0,0,0,16,0,0,0,168,231,1,0,160,0,0,0,8,0,0,0,88,228,1,0,144,0,0,0,10,0,0,0,32,225,1,0,156,0,0,0,8,0,0,0,208,221,1,0,204,0,0,0,8,0,0,0,168,218,1,0,112,0,0,0,0,0,0,0,32,214,1,0,104,0,0,0,0,0,0,0,176,208,1,0,108,0,0,0,0,0,0,0,240,203,1,0,164,0,0,0,8,0,0,0,224,199,1,0,116,0,0,0,0,0,0,0,208,194,1,0,84,0,0,0,32,0,0,0,208,189,1,0,52,0,0,0,32,0,0,0,232,185,1,0,56,0,0,0,32,0,0,0,56,182,1,0,68,0,0,0,0,0,0,0,72,179,1,0,72,0,0,0,0,0,0,0,128,176,1,0,76,0,0,0,0,0,0,0,152,171,1,0,80,0,0,0,0,0,0,0,224,166,1,0,88,0,0,0,32,0,0,0,112,163,1,0,124,0,0,0,0,0,0,0,192,159,1,0,128,0,0,0,0,0,0,0,48,156,1,0,136,0,0,0,0,0,0,0,32,153,1,0,152,0,0,0,32,0,0,0,24,149,1,0,172,0,0,0,16,0,0,0,0,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,17,74,29,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,10,0,12,0,14,0,16,0,20,0,24,0,28,0,34,0,40,0,48,0,60,0,78,0,100,0,0,0,0,0,72,127,65,129,66,128,65,128,64,128,62,128,64,128,64,128,92,78,92,79,92,78,90,79,116,41,115,40,114,40,132,26,132,26,145,17,161,12,176,10,177,11,24,179,48,138,54,135,54,132,53,134,56,133,55,132,55,132,61,114,70,96,74,88,75,88,87,74,89,66,91,67,100,59,108,50,120,40,122,37,97,43,78,50,83,78,84,81,88,75,86,74,87,71,90,73,93,74,93,74,109,40,114,36,117,34,117,34,143,17,145,18,146,19,162,12,165,10,178,7,189,6,190,8,177,9,23,178,54,115,63,102,66,98,69,99,74,89,71,91,73,91,78,89,86,80,92,66,93,64,102,59,103,60,104,60,117,52,123,44,138,35,133,31,97,38,77,45,61,90,93,60,105,42,107,41,110,45,116,38,113,38,112,38,124,26,132,27,136,19,140,20,155,14,159,16,158,18,170,13,177,10,187,8,192,6,175,9,159,10,21,178,59,110,71,86,75,85,84,83,91,66,88,73,87,72,92,75,98,72,105,58,107,54,115,52,114,55,112,56,129,51,132,40,150,33,140,29,98,35,77,42,42,121,96,66,108,43,111,40,117,44,123,32,120,36,119,33,127,33,134,34,139,21,147,23,152,20,158,25,154,26,166,21,173,16,184,13,184,10,150,13,139,15,22,178,63,114,74,82,84,83,92,82,103,62,96,72,96,67,101,73,107,72,113,55,118,52,125,52,118,52,117,55,135,49,137,39,157,32,145,29,97,33,77,40,0,0,206,64,0,0,200,64,0,0,184,64,0,0,170,64,0,0,162,64,0,0,154,64,0,0,144,64,0,0,140,64,0,0,156,64,0,0,150,64,0,0,146,64,0,0,142,64,0,0,156,64,0,0,148,64,0,0,138,64,0,0,144,64,0,0,140,64,0,0,148,64,0,0,152,64,0,0,142,64,0,0,112,64,0,0,112,64,0,0,112,64,0,0,112,64,0,0,112,64,0,0,0,0,16,0,17,0,18,0,0,0,8,0,7,0,9,0,6,0,10,0,5,0,11,0,4,0,12,0,3,0,13,0,2,0,14,0,1,0,15,0,0,0,64,211,2,0,64,0,0,0,144,169,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,190,0,0,30,0,0,0,248,188,0,0,96,0,0,0,248,186,0,0,18,0,0,0,112,185,0,0,104,0,0,0,24,184,0,0,134,0,0,0,200,182,0,0,80,0,0,0,152,181,0,0,44,0,0,0,208,179,0,0,108,0,0,0,96,177,0,0,50,0,0,0,192,175,0,0,8,0,0,0,16,174,0,0,122,0,0,0,88,172,0,0,94,0,0,0,224,170,0,0,118,0,0,0,144,169,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,66,0,0,0,0,0,0,0,0,0,0,0,6,0,3,0,7,3,0,1,10,0,2,6,18,10,12,0,4,0,2,0,0,0,9,4,7,4,0,3,12,7,7,0,128,227,1,0,1,0,0,0,0,0,0,0,0,156,2,0,2,0,0,0,0,0,0,0,216,54,2,0,3,0,0,0,0,0,0,0,56,246,1,0,4,0,0,0,0,0,0,0,24,205,1,0,5,0,0,0,0,0,0,0,8,164,1,0,6,0,0,0,0,0,0,0,224,250,0,0,7,0,0,0,0,0,0,0,64,220,0,0,8,0,0,0,0,0,0,0,24,195,0,0,9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+20480); +/* memory initializer */ allocate([88,176,0,0,10,0,0,0,0,0,0,0,184,207,2,0,11,0,0,0,0,0,0,0,224,192,2,0,12,0,0,0,0,0,0,0,216,174,2,0,13,0,0,0,0,0,0,0,40,161,2,0,14,0,0,0,0,0,0,0,80,149,2,0,15,0,0,0,0,0,0,0,224,135,2,0,16,0,0,0,0,0,0,0,128,123,2,0,17,0,0,0,0,0,0,0,208,112,2,0,18,0,0,0,0,0,0,0,168,102,2,0,19,0,0,0,0,0,0,0,24,93,2,0,20,0,0,0,0,0,0,0,88,85,2,0,21,0,0,0,0,0,0,0,72,77,2,0,22,0,0,0,0,0,0,0,160,68,2,0,23,0,0,0,0,0,0,0,208,58,2,0,24,0,0,0,0,0,0,0,72,49,2,0,25,0,0,0,0,0,0,0,32,39,2,0,26,0,0,0,0,0,0,0,224,29,2,0,27,0,0,0,0,0,0,0,200,22,2,0,28,0,0,0,0,0,0,0,88,17,2,0,29,0,0,0,0,0,0,0,176,11,2,0,30,0,0,0,0,0,0,0,32,6,2,0,31,0,0,0,0,0,0,0,72,2,2,0,32,0,0,0,0,0,0,0,248,252,1,0,33,0,0,0,0,0,0,0,16,248,1,0,34,0,0,0,0,0,0,0,40,244,1,0,35,0,0,0,0,0,0,0,120,238,1,0,36,0,0,0,0,0,0,0,184,233,1,0,37,0,0,0,0,0,0,0,16,230,1,0,38,0,0,0,0,0,0,0,200,226,1,0,39,0,0,0,0,0,0,0,120,223,1,0,40,0,0,0,0,0,0,0,0,220,1,0,41,0,0,0,0,0,0,0,176,216,1,0,42,0,0,0,0,0,0,0,0,212,1,0,43,0,0,0,0,0,0,0,184,206,1,0,44,0,0,0,0,0,0,0,192,202,1,0,45,0,0,0,0,0,0,0,16,198,1,0,46,0,0,0,0,0,0,0,8,192,1,0,47,0,0,0,0,0,0,0,224,187,1,0,48,0,0,0,0,0,0,0,80,184,1,0,49,0,0,0,0,0,0,0,200,180,1,0,50,0,0,0,0,0,0,0,208,177,1,0,51,0,0,0,0,0,0,0,232,174,1,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,112,137,0,255,9,47,15,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,33,16,66,32,99,48,132,64,165,80,198,96,231,112,8,129,41,145,74,161,107,177,140,193,173,209,206,225,239,241,49,18,16,2,115,50,82,34,181,82,148,66,247,114,214,98,57,147,24,131,123,179,90,163,189,211,156,195,255,243,222,227,98,36,67,52,32,4,1,20,230,100,199,116,164,68,133,84,106,165,75,181,40,133,9,149,238,229,207,245,172,197,141,213,83,54,114,38,17,22,48,6,215,118,246,102,149,86,180,70,91,183,122,167,25,151,56,135,223,247,254,231,157,215,188,199,196,72,229,88,134,104,167,120,64,8,97,24,2,40,35,56,204,201,237,217,142,233,175,249,72,137,105,153,10,169,43,185,245,90,212,74,183,122,150,106,113,26,80,10,51,58,18,42,253,219,220,203,191,251,158,235,121,155,88,139,59,187,26,171,166,108,135,124,228,76,197,92,34,44,3,60,96,12,65,28,174,237,143,253,236,205,205,221,42,173,11,189,104,141,73,157,151,126,182,110,213,94,244,78,19,62,50,46,81,30,112,14,159,255,190,239,221,223,252,207,27,191,58,175,89,159,120,143,136,145,169,129,202,177,235,161,12,209,45,193,78,241,111,225,128,16,161,0,194,48,227,32,4,80,37,64,70,112,103,96,185,131,152,147,251,163,218,179,61,195,28,211,127,227,94,243,177,2,144,18,243,34,210,50,53,66,20,82,119,98,86,114,234,181,203,165,168,149,137,133,110,245,79,229,44,213,13,197,226,52,195,36,160,20,129,4,102,116,71,100,36,84,5,68,219,167,250,183,153,135,184,151,95,231,126,247,29,199,60,215,211,38,242,54,145,6,176,22,87,102,118,118,21,70,52,86,76,217,109,201,14,249,47,233,200,153,233,137,138,185,171,169,68,88,101,72,6,120,39,104,192,24,225,8,130,56,163,40,125,203,92,219,63,235,30,251,249,139,216,155,187,171,154,187,117,74,84,90,55,106,22,122,241,10,208,26,179,42,146,58,46,253,15,237,108,221,77,205,170,189,139,173,232,157,201,141,38,124,7,108,100,92,69,76,162,60,131,44,224,28,193,12,31,239,62,255,93,207,124,223,155,175,186,191,217,143,248,159,23,110,54,126,85,78,116,94,147,46,178,62,209,14,240,30,0,0,0,0,0,0,0,0,0,0,0,0,150,48,7,119,44,97,14,238,186,81,9,153,25,196,109,7,143,244,106,112,53,165,99,233,163,149,100,158,50,136,219,14,164,184,220,121,30,233,213,224,136,217,210,151,43,76,182,9,189,124,177,126,7,45,184,231,145,29,191,144,100,16,183,29,242,32,176,106,72,113,185,243,222,65,190,132,125,212,218,26,235,228,221,109,81,181,212,244,199,133,211,131,86,152,108,19,192,168,107,100,122,249,98,253,236,201,101,138,79,92,1,20,217,108,6,99,99,61,15,250,245,13,8,141,200,32,110,59,94,16,105,76,228,65,96,213,114,113,103,162,209,228,3,60,71,212,4,75,253,133,13,210,107,181,10,165,250,168,181,53,108,152,178,66,214,201,187,219,64,249,188,172,227,108,216,50,117,92,223,69,207,13,214,220,89,61,209,171,172,48,217,38,58,0,222,81,128,81,215,200,22,97,208,191,181,244,180,33,35,196,179,86,153,149,186,207,15,165,189,184,158,184,2,40,8,136,5,95,178,217,12,198,36,233,11,177,135,124,111,47,17,76,104,88,171,29,97,193,61,45,102,182,144,65,220,118,6,113,219,1,188,32,210,152,42,16,213,239,137,133,177,113,31,181,182,6,165,228,191,159,51,212,184,232,162,201,7,120,52,249,0,15,142,168,9,150,24,152,14,225,187,13,106,127,45,61,109,8,151,108,100,145,1,92,99,230,244,81,107,107,98,97,108,28,216,48,101,133,78,0,98,242,237,149,6,108,123,165,1,27,193,244,8,130,87,196,15,245,198,217,176,101,80,233,183,18,234,184,190,139,124,136,185,252,223,29,221,98,73,45,218,21,243,124,211,140,101,76,212,251,88,97,178,77,206,81,181,58,116,0,188,163,226,48,187,212,65,165,223,74,215,149,216,61,109,196,209,164,251,244,214,211,106,233,105,67,252,217,110,52,70,136,103,173,208,184,96,218,115,45,4,68,229,29,3,51,95,76,10,170,201,124,13,221,60,113,5,80,170,65,2,39,16,16,11,190,134,32,12,201,37,181,104,87,179,133,111,32,9,212,102,185,159,228,97,206,14,249,222,94,152,201,217,41,34,152,208,176,180,168,215,199,23,61,179,89,129,13,180,46,59,92,189,183,173,108,186,192,32,131,184,237,182,179,191,154,12,226,182,3,154,210,177,116,57,71,213,234,175,119,210,157,21,38,219,4,131,22,220,115,18,11,99,227,132,59,100,148,62,106,109,13,168,90,106,122,11,207,14,228,157,255,9,147,39,174,0,10,177,158,7,125,68,147,15,240,210,163,8,135,104,242,1,30,254,194,6,105,93,87,98,247,203,103,101,128,113,54,108,25,231,6,107,110,118,27,212,254,224,43,211,137,90,122,218,16,204,74,221,103,111,223,185,249,249,239,190,142,67,190,183,23,213,142,176,96,232,163,214,214,126,147,209,161,196,194,216,56,82,242,223,79,241,103,187,209,103,87,188,166,221,6,181,63,75,54,178,72,218,43,13,216,76,27,10,175,246,74,3,54,96,122,4,65,195,239,96,223,85,223,103,168,239,142,110,49,121,190,105,70,140,179,97,203,26,131,102,188,160,210,111,37,54,226,104,82,149,119,12,204,3,71,11,187,185,22,2,34,47,38,5,85,190,59,186,197,40,11,189,178,146,90,180,43,4,106,179,92,167,255,215,194,49,207,208,181,139,158,217,44,29,174,222,91,176,194,100,155,38,242,99,236,156,163,106,117,10,147,109,2,169,6,9,156,63,54,14,235,133,103,7,114,19,87,0,5,130,74,191,149,20,122,184,226,174,43,177,123,56,27,182,12,155,142,210,146,13,190,213,229,183,239,220,124,33,223,219,11,212,210,211,134,66,226,212,241,248,179,221,104,110,131,218,31,205,22,190,129,91,38,185,246,225,119,176,111,119,71,183,24,230,90,8,136,112,106,15,255,202,59,6,102,92,11,1,17,255,158,101,143,105,174,98,248,211,255,107,97,69,207,108,22,120,226,10,160,238,210,13,215,84,131,4,78,194,179,3,57,97,38,103,167,247,22,96,208,77,71,105,73,219,119,110,62,74,106,209,174,220,90,214,217,102,11,223,64,240,59,216,55,83,174,188,169,197,158,187,222,127,207,178,71,233,255,181,48,28,242,189,189,138,194,186,202,48,147,179,83,166,163,180,36,5,54,208,186,147,6,215,205,41,87,222,84,191,103,217,35,46,122,102,179,184,74,97,196,2,27,104,93,148,43,111,42,55,190,11,180,161,142,12,195,27,223,5,90,141,239,2,45,0,0,0,0,65,49,27,25,130,98,54,50,195,83,45,43,4,197,108,100,69,244,119,125,134,167,90,86,199,150,65,79,8,138,217,200,73,187,194,209,138,232,239,250,203,217,244,227,12,79,181,172,77,126,174,181,142,45,131,158,207,28,152,135,81,18,194,74,16,35,217,83,211,112,244,120,146,65,239,97,85,215,174,46,20,230,181,55,215,181,152,28,150,132,131,5,89,152,27,130,24,169,0,155,219,250,45,176,154,203,54,169,93,93,119,230,28,108,108,255,223,63,65,212,158,14,90,205,162,36,132,149,227,21,159,140,32,70,178,167,97,119,169,190,166,225,232,241,231,208,243,232,36,131,222,195,101,178,197,218,170,174,93,93,235,159,70,68,40,204,107,111,105,253,112,118,174,107,49,57,239,90,42,32,44,9,7,11,109,56,28,18,243,54,70,223,178,7,93,198,113,84,112,237,48,101,107,244,247,243,42,187,182,194,49,162,117,145,28,137,52,160,7,144,251,188,159,23,186,141,132,14,121,222,169,37,56,239,178,60,255,121,243,115,190,72,232,106,125,27,197,65,60,42,222,88,5,79,121,240,68,126,98,233,135,45,79,194,198,28,84,219,1,138,21,148,64,187,14,141,131,232,35,166,194,217,56,191,13,197,160,56,76,244,187,33,143,167,150,10,206,150,141,19,9,0,204,92,72,49,215,69,139,98,250,110,202,83,225,119,84,93,187,186,21,108,160,163,214,63,141,136,151,14,150,145,80,152,215,222,17,169,204,199,210,250,225,236,147,203,250,245,92,215,98,114,29,230,121,107,222,181,84,64,159,132,79,89,88,18,14,22,25,35,21,15,218,112,56,36,155,65,35,61,167,107,253,101,230,90,230,124,37,9,203,87,100,56,208,78,163,174,145,1,226,159,138,24,33,204,167,51,96,253,188,42,175,225,36,173,238,208,63,180,45,131,18,159,108,178,9,134,171,36,72,201,234,21,83,208,41,70,126,251,104,119,101,226,246,121,63,47,183,72,36,54,116,27,9,29,53,42,18,4,242,188,83,75,179,141,72,82,112,222,101,121,49,239,126,96,254,243,230,231,191,194,253,254,124,145,208,213,61,160,203,204,250,54,138,131,187,7,145,154,120,84,188,177,57,101,167,168,75,152,131,59,10,169,152,34,201,250,181,9,136,203,174,16,79,93,239,95,14,108,244,70,205,63,217,109,140,14,194,116,67,18,90,243,2,35,65,234,193,112,108,193,128,65,119,216,71,215,54,151,6,230,45,142,197,181,0,165,132,132,27,188,26,138,65,113,91,187,90,104,152,232,119,67,217,217,108,90,30,79,45,21,95,126,54,12,156,45,27,39,221,28,0,62,18,0,152,185,83,49,131,160,144,98,174,139,209,83,181,146,22,197,244,221,87,244,239,196,148,167,194,239,213,150,217,246,233,188,7,174,168,141,28,183,107,222,49,156,42,239,42,133,237,121,107,202,172,72,112,211,111,27,93,248,46,42,70,225,225,54,222,102,160,7,197,127,99,84,232,84,34,101,243,77,229,243,178,2,164,194,169,27,103,145,132,48,38,160,159,41,184,174,197,228,249,159,222,253,58,204,243,214,123,253,232,207,188,107,169,128,253,90,178,153,62,9,159,178,127,56,132,171,176,36,28,44,241,21,7,53,50,70,42,30,115,119,49,7,180,225,112,72,245,208,107,81,54,131,70,122,119,178,93,99,78,215,250,203,15,230,225,210,204,181,204,249,141,132,215,224,74,18,150,175,11,35,141,182,200,112,160,157,137,65,187,132,70,93,35,3,7,108,56,26,196,63,21,49,133,14,14,40,66,152,79,103,3,169,84,126,192,250,121,85,129,203,98,76,31,197,56,129,94,244,35,152,157,167,14,179,220,150,21,170,27,0,84,229,90,49,79,252,153,98,98,215,216,83,121,206,23,79,225,73,86,126,250,80,149,45,215,123,212,28,204,98,19,138,141,45,82,187,150,52,145,232,187,31,208,217,160,6,236,243,126,94,173,194,101,71,110,145,72,108,47,160,83,117,232,54,18,58,169,7,9,35,106,84,36,8,43,101,63,17,228,121,167,150,165,72,188,143,102,27,145,164,39,42,138,189,224,188,203,242,161,141,208,235,98,222,253,192,35,239,230,217,189,225,188,20,252,208,167,13,63,131,138,38,126,178,145,63,185,36,208,112,248,21,203,105,59,70,230,66,122,119,253,91,181,107,101,220,244,90,126,197,55,9,83,238,118,56,72,247,177,174,9,184,240,159,18,161,51,204,63,138,114,253,36,147,0,0,0,0,55,106,194,1,110,212,132,3,89,190,70,2,220,168,9,7,235,194,203,6,178,124,141,4,133,22,79,5,184,81,19,14,143,59,209,15,214,133,151,13,225,239,85,12,100,249,26,9,83,147,216,8,10,45,158,10,61,71,92,11,112,163,38,28,71,201,228,29,30,119,162,31,41,29,96,30,172,11,47,27,155,97,237,26,194,223,171,24,245,181,105,25,200,242,53,18,255,152,247,19,166,38,177,17,145,76,115,16,20,90,60,21,35,48,254,20,122,142,184,22,77,228,122,23,224,70,77,56,215,44,143,57,142,146,201,59,185,248,11,58,60,238,68,63,11,132,134,62,82,58,192,60,101,80,2,61,88,23,94,54,111,125,156,55,54,195,218,53,1,169,24,52,132,191,87,49,179,213,149,48,234,107,211,50,221,1,17,51,144,229,107,36,167,143,169,37,254,49,239,39,201,91,45,38,76,77,98,35,123,39,160,34,34,153,230,32,21,243,36,33,40,180,120,42,31,222,186,43,70,96,252,41,113,10,62,40,244,28,113,45,195,118,179,44,154,200,245,46,173,162,55,47,192,141,154,112,247,231,88,113,174,89,30,115,153,51,220,114,28,37,147,119,43,79,81,118,114,241,23,116,69,155,213,117,120,220,137,126,79,182,75,127,22,8,13,125,33,98,207,124,164,116,128,121,147,30,66,120,202,160,4,122,253,202,198,123,176,46,188,108,135,68,126,109,222,250,56,111,233,144,250,110,108,134,181,107,91,236,119,106,2,82,49,104,53,56,243,105,8,127,175,98,63,21,109,99,102,171,43,97,81,193,233,96,212,215,166,101,227,189,100,100,186,3,34,102,141,105,224,103,32,203,215,72,23,161,21,73,78,31,83,75,121,117,145,74,252,99,222,79,203,9,28,78,146,183,90,76,165,221,152,77,152,154,196,70,175,240,6,71,246,78,64,69,193,36,130,68,68,50,205,65,115,88,15,64,42,230,73,66,29,140,139,67,80,104,241,84,103,2,51,85,62,188,117,87,9,214,183,86,140,192,248,83,187,170,58,82,226,20,124,80,213,126,190,81,232,57,226,90,223,83,32,91,134,237,102,89,177,135,164,88,52,145,235,93,3,251,41,92,90,69,111,94,109,47,173,95,128,27,53,225,183,113,247,224,238,207,177,226,217,165,115,227,92,179,60,230,107,217,254,231,50,103,184,229,5,13,122,228,56,74,38,239,15,32,228,238,86,158,162,236,97,244,96,237,228,226,47,232,211,136,237,233,138,54,171,235,189,92,105,234,240,184,19,253,199,210,209,252,158,108,151,254,169,6,85,255,44,16,26,250,27,122,216,251,66,196,158,249,117,174,92,248,72,233,0,243,127,131,194,242,38,61,132,240,17,87,70,241,148,65,9,244,163,43,203,245,250,149,141,247,205,255,79,246,96,93,120,217,87,55,186,216,14,137,252,218,57,227,62,219,188,245,113,222,139,159,179,223,210,33,245,221,229,75,55,220,216,12,107,215,239,102,169,214,182,216,239,212,129,178,45,213,4,164,98,208,51,206,160,209,106,112,230,211,93,26,36,210,16,254,94,197,39,148,156,196,126,42,218,198,73,64,24,199,204,86,87,194,251,60,149,195,162,130,211,193,149,232,17,192,168,175,77,203,159,197,143,202,198,123,201,200,241,17,11,201,116,7,68,204,67,109,134,205,26,211,192,207,45,185,2,206,64,150,175,145,119,252,109,144,46,66,43,146,25,40,233,147,156,62,166,150,171,84,100,151,242,234,34,149,197,128,224,148,248,199,188,159,207,173,126,158,150,19,56,156,161,121,250,157,36,111,181,152,19,5,119,153,74,187,49,155,125,209,243,154,48,53,137,141,7,95,75,140,94,225,13,142,105,139,207,143,236,157,128,138,219,247,66,139,130,73,4,137,181,35,198,136,136,100,154,131,191,14,88,130,230,176,30,128,209,218,220,129,84,204,147,132,99,166,81,133,58,24,23,135,13,114,213,134,160,208,226,169,151,186,32,168,206,4,102,170,249,110,164,171,124,120,235,174,75,18,41,175,18,172,111,173,37,198,173,172,24,129,241,167,47,235,51,166,118,85,117,164,65,63,183,165,196,41,248,160,243,67,58,161,170,253,124,163,157,151,190,162,208,115,196,181,231,25,6,180,190,167,64,182,137,205,130,183,12,219,205,178,59,177,15,179,98,15,73,177,85,101,139,176,104,34,215,187,95,72,21,186,6,246,83,184,49,156,145,185,180,138,222,188,131,224,28,189,218,94,90,191,237,52,152,190,0,0,0,0,101,103,188,184,139,200,9,170,238,175,181,18,87,151,98,143,50,240,222,55,220,95,107,37,185,56,215,157,239,40,180,197,138,79,8,125,100,224,189,111,1,135,1,215,184,191,214,74,221,216,106,242,51,119,223,224,86,16,99,88,159,87,25,80,250,48,165,232,20,159,16,250,113,248,172,66,200,192,123,223,173,167,199,103,67,8,114,117,38,111,206,205,112,127,173,149,21,24,17,45,251,183,164,63,158,208,24,135,39,232,207,26,66,143,115,162,172,32,198,176,201,71,122,8,62,175,50,160,91,200,142,24,181,103,59,10,208,0,135,178,105,56,80,47,12,95,236,151,226,240,89,133,135,151,229,61,209,135,134,101,180,224,58,221,90,79,143,207,63,40,51,119,134,16,228,234,227,119,88,82,13,216,237,64,104,191,81,248,161,248,43,240,196,159,151,72,42,48,34,90,79,87,158,226,246,111,73,127,147,8,245,199,125,167,64,213,24,192,252,109,78,208,159,53,43,183,35,141,197,24,150,159,160,127,42,39,25,71,253,186,124,32,65,2,146,143,244,16,247,232,72,168,61,88,20,155,88,63,168,35,182,144,29,49,211,247,161,137,106,207,118,20,15,168,202,172,225,7,127,190,132,96,195,6,210,112,160,94,183,23,28,230,89,184,169,244,60,223,21,76,133,231,194,209,224,128,126,105,14,47,203,123,107,72,119,195,162,15,13,203,199,104,177,115,41,199,4,97,76,160,184,217,245,152,111,68,144,255,211,252,126,80,102,238,27,55,218,86,77,39,185,14,40,64,5,182,198,239,176,164,163,136,12,28,26,176,219,129,127,215,103,57,145,120,210,43,244,31,110,147,3,247,38,59,102,144,154,131,136,63,47,145,237,88,147,41,84,96,68,180,49,7,248,12,223,168,77,30,186,207,241,166,236,223,146,254,137,184,46,70,103,23,155,84,2,112,39,236,187,72,240,113,222,47,76,201,48,128,249,219,85,231,69,99,156,160,63,107,249,199,131,211,23,104,54,193,114,15,138,121,203,55,93,228,174,80,225,92,64,255,84,78,37,152,232,246,115,136,139,174,22,239,55,22,248,64,130,4,157,39,62,188,36,31,233,33,65,120,85,153,175,215,224,139,202,176,92,51,59,182,89,237,94,209,229,85,176,126,80,71,213,25,236,255,108,33,59,98,9,70,135,218,231,233,50,200,130,142,142,112,212,158,237,40,177,249,81,144,95,86,228,130,58,49,88,58,131,9,143,167,230,110,51,31,8,193,134,13,109,166,58,181,164,225,64,189,193,134,252,5,47,41,73,23,74,78,245,175,243,118,34,50,150,17,158,138,120,190,43,152,29,217,151,32,75,201,244,120,46,174,72,192,192,1,253,210,165,102,65,106,28,94,150,247,121,57,42,79,151,150,159,93,242,241,35,229,5,25,107,77,96,126,215,245,142,209,98,231,235,182,222,95,82,142,9,194,55,233,181,122,217,70,0,104,188,33,188,208,234,49,223,136,143,86,99,48,97,249,214,34,4,158,106,154,189,166,189,7,216,193,1,191,54,110,180,173,83,9,8,21,154,78,114,29,255,41,206,165,17,134,123,183,116,225,199,15,205,217,16,146,168,190,172,42,70,17,25,56,35,118,165,128,117,102,198,216,16,1,122,96,254,174,207,114,155,201,115,202,34,241,164,87,71,150,24,239,169,57,173,253,204,94,17,69,6,238,77,118,99,137,241,206,141,38,68,220,232,65,248,100,81,121,47,249,52,30,147,65,218,177,38,83,191,214,154,235,233,198,249,179,140,161,69,11,98,14,240,25,7,105,76,161,190,81,155,60,219,54,39,132,53,153,146,150,80,254,46,46,153,185,84,38,252,222,232,158,18,113,93,140,119,22,225,52,206,46,54,169,171,73,138,17,69,230,63,3,32,129,131,187,118,145,224,227,19,246,92,91,253,89,233,73,152,62,85,241,33,6,130,108,68,97,62,212,170,206,139,198,207,169,55,126,56,65,127,214,93,38,195,110,179,137,118,124,214,238,202,196,111,214,29,89,10,177,161,225,228,30,20,243,129,121,168,75,215,105,203,19,178,14,119,171,92,161,194,185,57,198,126,1,128,254,169,156,229,153,21,36,11,54,160,54,110,81,28,142,167,22,102,134,194,113,218,62,44,222,111,44,73,185,211,148,240,129,4,9,149,230,184,177,123,73,13,163,30,46,177,27,72,62,210,67,45,89,110,251,195,246,219,233,166,145,103,81,31,169,176,204,122,206,12,116,148,97,185,102,241,6,5,222,0,0,0,0,119,7,48,150,238,14,97,44,153,9,81,186,7,109,196,25,112,106,244,143,233,99,165,53,158,100,149,163,14,219,136,50,121,220,184,164,224,213,233,30,151,210,217,136,9,182,76,43,126,177,124,189,231,184,45,7,144,191,29,145,29,183,16,100,106,176,32,242,243,185,113,72,132,190,65,222,26,218,212,125,109,221,228,235,244,212,181,81,131,211,133,199,19,108,152,86,100,107,168,192,253,98,249,122,138,101,201,236,20,1,92,79,99,6,108,217,250,15,61,99,141,8,13,245,59,110,32,200,76,105,16,94,213,96,65,228,162,103,113,114,60,3,228,209,75,4,212,71,210,13,133,253,165,10,181,107,53,181,168,250,66,178,152,108,219,187,201,214,172,188,249,64,50,216,108,227,69,223,92,117,220,214,13,207,171,209,61,89,38,217,48,172,81,222,0,58,200,215,81,128,191,208,97,22,33,180,244,181,86,179,196,35,207,186,149,153,184,189,165,15,40,2,184,158,95,5,136,8,198,12,217,178,177,11,233,36,47,111,124,135,88,104,76,17,193,97,29,171,182,102,45,61,118,220,65,144,1,219,113,6,152,210,32,188,239,213,16,42,113,177,133,137,6,182,181,31,159,191,228,165,232,184,212,51,120,7,201,162,15,0,249,52,150,9,168,142,225,14,152,24,127,106,13,187,8,109,61,45,145,100,108,151,230,99,92,1,107,107,81,244,28,108,97,98,133,101,48,216,242,98,0,78,108,6,149,237,27,1,165,123,130,8,244,193,245,15,196,87,101,176,217,198,18,183,233,80,139,190,184,234,252,185,136,124,98,221,29,223,21,218,45,73,140,211,124,243,251,212,76,101,77,178,97,88,58,181,81,206,163,188,0,116,212,187,48,226,74,223,165,65,61,216,149,215,164,209,196,109,211,214,244,251,67,105,233,106,52,110,217,252,173,103,136,70,218,96,184,208,68,4,45,115,51,3,29,229,170,10,76,95,221,13,124,201,80,5,113,60,39,2,65,170,190,11,16,16,201,12,32,134,87,104,181,37,32,111,133,179,185,102,212,9,206,97,228,159,94,222,249,14,41,217,201,152,176,208,152,34,199,215,168,180,89,179,61,23,46,180,13,129,183,189,92,59,192,186,108,173,237,184,131,32,154,191,179,182,3,182,226,12,116,177,210,154,234,213,71,57,157,210,119,175,4,219,38,21,115,220,22,131,227,99,11,18,148,100,59,132,13,109,106,62,122,106,90,168,228,14,207,11,147,9,255,157,10,0,174,39,125,7,158,177,240,15,147,68,135,8,163,210,30,1,242,104,105,6,194,254,247,98,87,93,128,101,103,203,25,108,54,113,110,107,6,231,254,212,27,118,137,211,43,224,16,218,122,90,103,221,74,204,249,185,223,111,142,190,239,249,23,183,190,67,96,176,142,213,214,214,163,232,161,209,147,126,56,216,194,196,79,223,242,82,209,187,103,241,166,188,87,103,63,181,6,221,72,178,54,75,216,13,43,218,175,10,27,76,54,3,74,246,65,4,122,96,223,96,239,195,168,103,223,85,49,110,142,239,70,105,190,121,203,97,179,140,188,102,131,26,37,111,210,160,82,104,226,54,204,12,119,149,187,11,71,3,34,2,22,185,85,5,38,47,197,186,59,190,178,189,11,40,43,180,90,146,92,179,106,4,194,215,255,167,181,208,207,49,44,217,158,139,91,222,174,29,155,100,194,176,236,99,242,38,117,106,163,156,2,109,147,10,156,9,6,169,235,14,54,63,114,7,103,133,5,0,87,19,149,191,74,130,226,184,122,20,123,177,43,174,12,182,27,56,146,210,142,155,229,213,190,13,124,220,239,183,11,219,223,33,134,211,210,212,241,212,226,66,104,221,179,248,31,218,131,110,129,190,22,205,246,185,38,91,111,176,119,225,24,183,71,119,136,8,90,230,255,15,106,112,102,6,59,202,17,1,11,92,143,101,158,255,248,98,174,105,97,107,255,211,22,108,207,69,160,10,226,120,215,13,210,238,78,4,131,84,57,3,179,194,167,103,38,97,208,96,22,247,73,105,71,77,62,110,119,219,174,209,106,74,217,214,90,220,64,223,11,102,55,216,59,240,169,188,174,83,222,187,158,197,71,178,207,127,48,181,255,233,189,189,242,28,202,186,194,138,83,179,147,48,36,180,163,166,186,208,54,5,205,215,6,147,84,222,87,41,35,217,103,191,179,102,122,46,196,97,74,184,93,104,27,2,42,111,43,148,180,11,190,55,195,12,142,161,90,5,223,27,45,2,239,141,0,0,0,0,25,27,49,65,50,54,98,130,43,45,83,195,100,108,197,4,125,119,244,69,86,90,167,134,79,65,150,199,200,217,138,8,209,194,187,73,250,239,232,138,227,244,217,203,172,181,79,12,181,174,126,77,158,131,45,142,135,152,28,207,74,194,18,81,83,217,35,16,120,244,112,211,97,239,65,146,46,174,215,85,55,181,230,20,28,152,181,215,5,131,132,150,130,27,152,89,155,0,169,24,176,45,250,219,169,54,203,154,230,119,93,93,255,108,108,28,212,65,63,223,205,90,14,158,149,132,36,162,140,159,21,227,167,178,70,32,190,169,119,97,241,232,225,166,232,243,208,231,195,222,131,36,218,197,178,101,93,93,174,170,68,70,159,235,111,107,204,40,118,112,253,105,57,49,107,174,32,42,90,239,11,7,9,44,18,28,56,109,223,70,54,243,198,93,7,178,237,112,84,113,244,107,101,48,187,42,243,247,162,49,194,182,137,28,145,117,144,7,160,52,23,159,188,251,14,132,141,186,37,169,222,121,60,178,239,56,115,243,121,255,106,232,72,190,65,197,27,125,88,222,42,60,240,121,79,5,233,98,126,68,194,79,45,135,219,84,28,198,148,21,138,1,141,14,187,64,166,35,232,131,191,56,217,194,56,160,197,13,33,187,244,76,10,150,167,143,19,141,150,206,92,204,0,9,69,215,49,72,110,250,98,139,119,225,83,202,186,187,93,84,163,160,108,21,136,141,63,214,145,150,14,151,222,215,152,80,199,204,169,17,236,225,250,210,245,250,203,147,114,98,215,92,107,121,230,29,64,84,181,222,89,79,132,159,22,14,18,88,15,21,35,25,36,56,112,218,61,35,65,155,101,253,107,167,124,230,90,230,87,203,9,37,78,208,56,100,1,145,174,163,24,138,159,226,51,167,204,33,42,188,253,96,173,36,225,175,180,63,208,238,159,18,131,45,134,9,178,108,201,72,36,171,208,83,21,234,251,126,70,41,226,101,119,104,47,63,121,246,54,36,72,183,29,9,27,116,4,18,42,53,75,83,188,242,82,72,141,179,121,101,222,112,96,126,239,49,231,230,243,254,254,253,194,191,213,208,145,124,204,203,160,61,131,138,54,250,154,145,7,187,177,188,84,120,168,167,101,57,59,131,152,75,34,152,169,10,9,181,250,201,16,174,203,136,95,239,93,79,70,244,108,14,109,217,63,205,116,194,14,140,243,90,18,67,234,65,35,2,193,108,112,193,216,119,65,128,151,54,215,71,142,45,230,6,165,0,181,197,188,27,132,132,113,65,138,26,104,90,187,91,67,119,232,152,90,108,217,217,21,45,79,30,12,54,126,95,39,27,45,156,62,0,28,221,185,152,0,18,160,131,49,83,139,174,98,144,146,181,83,209,221,244,197,22,196,239,244,87,239,194,167,148,246,217,150,213,174,7,188,233,183,28,141,168,156,49,222,107,133,42,239,42,202,107,121,237,211,112,72,172,248,93,27,111,225,70,42,46,102,222,54,225,127,197,7,160,84,232,84,99,77,243,101,34,2,178,243,229,27,169,194,164,48,132,145,103,41,159,160,38,228,197,174,184,253,222,159,249,214,243,204,58,207,232,253,123,128,169,107,188,153,178,90,253,178,159,9,62,171,132,56,127,44,28,36,176,53,7,21,241,30,42,70,50,7,49,119,115,72,112,225,180,81,107,208,245,122,70,131,54,99,93,178,119,203,250,215,78,210,225,230,15,249,204,181,204,224,215,132,141,175,150,18,74,182,141,35,11,157,160,112,200,132,187,65,137,3,35,93,70,26,56,108,7,49,21,63,196,40,14,14,133,103,79,152,66,126,84,169,3,85,121,250,192,76,98,203,129,129,56,197,31,152,35,244,94,179,14,167,157,170,21,150,220,229,84,0,27,252,79,49,90,215,98,98,153,206,121,83,216,73,225,79,23,80,250,126,86,123,215,45,149,98,204,28,212,45,141,138,19,52,150,187,82,31,187,232,145,6,160,217,208,94,126,243,236,71,101,194,173,108,72,145,110,117,83,160,47,58,18,54,232,35,9,7,169,8,36,84,106,17,63,101,43,150,167,121,228,143,188,72,165,164,145,27,102,189,138,42,39,242,203,188,224,235,208,141,161,192,253,222,98,217,230,239,35,20,188,225,189,13,167,208,252,38,138,131,63,63,145,178,126,112,208,36,185,105,203,21,248,66,230,70,59,91,253,119,122,220,101,107,181,197,126,90,244,238,83,9,55,247,72,56,118,184,9,174,177,161,18,159,240,138,63,204,51,147,36,253,114,0,0,0,0,1,194,106,55,3,132,212,110,2,70,190,89,7,9,168,220,6,203,194,235,4,141,124,178,5,79,22,133,14,19,81,184,15,209,59,143,13,151,133,214,12,85,239,225,9,26,249,100,8,216,147,83,10,158,45,10,11,92,71,61,28,38,163,112,29,228,201,71,31,162,119,30,30,96,29,41,27,47,11,172,26,237,97,155,24,171,223,194,25,105,181,245,18,53,242,200,19,247,152,255,17,177,38,166,16,115,76,145,21,60,90,20,20,254,48,35,22,184,142,122,23,122,228,77,56,77,70,224,57,143,44,215,59,201,146,142,58,11,248,185,63,68,238,60,62,134,132,11,60,192,58,82,61,2,80,101,54,94,23,88,55,156,125,111,53,218,195,54,52,24,169,1,49,87,191,132,48,149,213,179,50,211,107,234,51,17,1,221,36,107,229,144,37,169,143,167,39,239,49,254,38,45,91,201,35,98,77,76,34,160,39,123,32,230,153,34,33,36,243,21,42,120,180,40,43,186,222,31,41,252,96,70,40,62,10,113,45,113,28,244,44,179,118,195,46,245,200,154,47,55,162,173,112,154,141,192,113,88,231,247,115,30,89,174,114,220,51,153,119,147,37,28,118,81,79,43,116,23,241,114,117,213,155,69,126,137,220,120,127,75,182,79,125,13,8,22,124,207,98,33,121,128,116,164,120,66,30,147,122,4,160,202,123,198,202,253,108,188,46,176,109,126,68,135,111,56,250,222,110,250,144,233,107,181,134,108,106,119,236,91,104,49,82,2,105,243,56,53,98,175,127,8,99,109,21,63,97,43,171,102,96,233,193,81,101,166,215,212,100,100,189,227,102,34,3,186,103,224,105,141,72,215,203,32,73,21,161,23,75,83,31,78,74,145,117,121,79,222,99,252,78,28,9,203,76,90,183,146,77,152,221,165,70,196,154,152,71,6,240,175,69,64,78,246,68,130,36,193,65,205,50,68,64,15,88,115,66,73,230,42,67,139,140,29,84,241,104,80,85,51,2,103,87,117,188,62,86,183,214,9,83,248,192,140,82,58,170,187,80,124,20,226,81,190,126,213,90,226,57,232,91,32,83,223,89,102,237,134,88,164,135,177,93,235,145,52,92,41,251,3,94,111,69,90,95,173,47,109,225,53,27,128,224,247,113,183,226,177,207,238,227,115,165,217,230,60,179,92,231,254,217,107,229,184,103,50,228,122,13,5,239,38,74,56,238,228,32,15,236,162,158,86,237,96,244,97,232,47,226,228,233,237,136,211,235,171,54,138,234,105,92,189,253,19,184,240,252,209,210,199,254,151,108,158,255,85,6,169,250,26,16,44,251,216,122,27,249,158,196,66,248,92,174,117,243,0,233,72,242,194,131,127,240,132,61,38,241,70,87,17,244,9,65,148,245,203,43,163,247,141,149,250,246,79,255,205,217,120,93,96,216,186,55,87,218,252,137,14,219,62,227,57,222,113,245,188,223,179,159,139,221,245,33,210,220,55,75,229,215,107,12,216,214,169,102,239,212,239,216,182,213,45,178,129,208,98,164,4,209,160,206,51,211,230,112,106,210,36,26,93,197,94,254,16,196,156,148,39,198,218,42,126,199,24,64,73,194,87,86,204,195,149,60,251,193,211,130,162,192,17,232,149,203,77,175,168,202,143,197,159,200,201,123,198,201,11,17,241,204,68,7,116,205,134,109,67,207,192,211,26,206,2,185,45,145,175,150,64,144,109,252,119,146,43,66,46,147,233,40,25,150,166,62,156,151,100,84,171,149,34,234,242,148,224,128,197,159,188,199,248,158,126,173,207,156,56,19,150,157,250,121,161,152,181,111,36,153,119,5,19,155,49,187,74,154,243,209,125,141,137,53,48,140,75,95,7,142,13,225,94,143,207,139,105,138,128,157,236,139,66,247,219,137,4,73,130,136,198,35,181,131,154,100,136,130,88,14,191,128,30,176,230,129,220,218,209,132,147,204,84,133,81,166,99,135,23,24,58,134,213,114,13,169,226,208,160,168,32,186,151,170,102,4,206,171,164,110,249,174,235,120,124,175,41,18,75,173,111,172,18,172,173,198,37,167,241,129,24,166,51,235,47,164,117,85,118,165,183,63,65,160,248,41,196,161,58,67,243,163,124,253,170,162,190,151,157,181,196,115,208,180,6,25,231,182,64,167,190,183,130,205,137,178,205,219,12,179,15,177,59,177,73,15,98,176,139,101,85,187,215,34,104,186,21,72,95,184,83,246,6,185,145,156,49,188,222,138,180,189,28,224,131,191,90,94,218,190,152,52,237,0,0,0,0,184,188,103,101,170,9,200,139,18,181,175,238,143,98,151,87,55,222,240,50,37,107,95,220,157,215,56,185,197,180,40,239,125,8,79,138,111,189,224,100,215,1,135,1,74,214,191,184,242,106,216,221,224,223,119,51,88,99,16,86,80,25,87,159,232,165,48,250,250,16,159,20,66,172,248,113,223,123,192,200,103,199,167,173,117,114,8,67,205,206,111,38,149,173,127,112,45,17,24,21,63,164,183,251,135,24,208,158,26,207,232,39,162,115,143,66,176,198,32,172,8,122,71,201,160,50,175,62,24,142,200,91,10,59,103,181,178,135,0,208,47,80,56,105,151,236,95,12,133,89,240,226,61,229,151,135,101,134,135,209,221,58,224,180,207,143,79,90,119,51,40,63,234,228,16,134,82,88,119,227,64,237,216,13,248,81,191,104,240,43,248,161,72,151,159,196,90,34,48,42,226,158,87,79,127,73,111,246,199,245,8,147,213,64,167,125,109,252,192,24,53,159,208,78,141,35,183,43,159,150,24,197,39,42,127,160,186,253,71,25,2,65,32,124,16,244,143,146,168,72,232,247,155,20,88,61,35,168,63,88,49,29,144,182,137,161,247,211,20,118,207,106,172,202,168,15,190,127,7,225,6,195,96,132,94,160,112,210,230,28,23,183,244,169,184,89,76,21,223,60,209,194,231,133,105,126,128,224,123,203,47,14,195,119,72,107,203,13,15,162,115,177,104,199,97,4,199,41,217,184,160,76,68,111,152,245,252,211,255,144,238,102,80,126,86,218,55,27,14,185,39,77,182,5,64,40,164,176,239,198,28,12,136,163,129,219,176,26,57,103,215,127,43,210,120,145,147,110,31,244,59,38,247,3,131,154,144,102,145,47,63,136,41,147,88,237,180,68,96,84,12,248,7,49,30,77,168,223,166,241,207,186,254,146,223,236,70,46,184,137,84,155,23,103,236,39,112,2,113,240,72,187,201,76,47,222,219,249,128,48,99,69,231,85,107,63,160,156,211,131,199,249,193,54,104,23,121,138,15,114,228,93,55,203,92,225,80,174,78,84,255,64,246,232,152,37,174,139,136,115,22,55,239,22,4,130,64,248,188,62,39,157,33,233,31,36,153,85,120,65,139,224,215,175,51,92,176,202,237,89,182,59,85,229,209,94,71,80,126,176,255,236,25,213,98,59,33,108,218,135,70,9,200,50,233,231,112,142,142,130,40,237,158,212,144,81,249,177,130,228,86,95,58,88,49,58,167,143,9,131,31,51,110,230,13,134,193,8,181,58,166,109,189,64,225,164,5,252,134,193,23,73,41,47,175,245,78,74,50,34,118,243,138,158,17,150,152,43,190,120,32,151,217,29,120,244,201,75,192,72,174,46,210,253,1,192,106,65,102,165,247,150,94,28,79,42,57,121,93,159,150,151,229,35,241,242,77,107,25,5,245,215,126,96,231,98,209,142,95,222,182,235,194,9,142,82,122,181,233,55,104,0,70,217,208,188,33,188,136,223,49,234,48,99,86,143,34,214,249,97,154,106,158,4,7,189,166,189,191,1,193,216,173,180,110,54,21,8,9,83,29,114,78,154,165,206,41,255,183,123,134,17,15,199,225,116,146,16,217,205,42,172,190,168,56,25,17,70,128,165,118,35,216,198,102,117,96,122,1,16,114,207,174,254,202,115,201,155,87,164,241,34,239,24,150,71,253,173,57,169,69,17,94,204,118,77,238,6,206,241,137,99,220,68,38,141,100,248,65,232,249,47,121,81,65,147,30,52,83,38,177,218,235,154,214,191,179,249,198,233,11,69,161,140,25,240,14,98,161,76,105,7,60,155,81,190,132,39,54,219,150,146,153,53,46,46,254,80,38,84,185,153,158,232,222,252,140,93,113,18,52,225,22,119,169,54,46,206,17,138,73,171,3,63,230,69,187,131,129,32,227,224,145,118,91,92,246,19,73,233,89,253,241,85,62,152,108,130,6,33,212,62,97,68,198,139,206,170,126,55,169,207,214,127,65,56,110,195,38,93,124,118,137,179,196,202,238,214,89,29,214,111,225,161,177,10,243,20,30,228,75,168,121,129,19,203,105,215,171,119,14,178,185,194,161,92,1,126,198,57,156,169,254,128,36,21,153,229,54,160,54,11,142,28,81,110,134,102,22,167,62,218,113,194,44,111,222,44,148,211,185,73,9,4,129,240,177,184,230,149,163,13,73,123,27,177,46,30,67,210,62,72,251,110,89,45,233,219,246,195,81,103,145,166,204,176,169,31,116,12,206,122,102,185,97,148,222,5,6,241,0,0,0,0,183,29,193,4,110,59,130,9,217,38,67,13,220,118,4,19,107,107,197,23,178,77,134,26,5,80,71,30,184,237,8,38,15,240,201,34,214,214,138,47,97,203,75,43,100,155,12,53,211,134,205,49,10,160,142,60,189,189,79,56,112,219,17,76,199,198,208,72,30,224,147,69,169,253,82,65,172,173,21,95,27,176,212,91,194,150,151,86,117,139,86,82,200,54,25,106,127,43,216,110,166,13,155,99,17,16,90,103,20,64,29,121,163,93,220,125,122,123,159,112,205,102,94,116,224,182,35,152,87,171,226,156,142,141,161,145,57,144,96,149,60,192,39,139,139,221,230,143,82,251,165,130,229,230,100,134,88,91,43,190,239,70,234,186,54,96,169,183,129,125,104,179,132,45,47,173,51,48,238,169,234,22,173,164,93,11,108,160,144,109,50,212,39,112,243,208,254,86,176,221,73,75,113,217,76,27,54,199,251,6,247,195,34,32,180,206,149,61,117,202,40,128,58,242,159,157,251,246,70,187,184,251,241,166,121,255,244,246,62,225,67,235,255,229,154,205,188,232,45,208,125,236,119,112,134,52,192,109,71,48,25,75,4,61,174,86,197,57,171,6,130,39,28,27,67,35,197,61,0,46,114,32,193,42,207,157,142,18,120,128,79,22,161,166,12,27,22,187,205,31,19,235,138,1,164,246,75,5,125,208,8,8,202,205,201,12,7,171,151,120,176,182,86,124,105,144,21,113,222,141,212,117,219,221,147,107,108,192,82,111,181,230,17,98,2,251,208,102,191,70,159,94,8,91,94,90,209,125,29,87,102,96,220,83,99,48,155,77,212,45,90,73,13,11,25,68,186,22,216,64,151,198,165,172,32,219,100,168,249,253,39,165,78,224,230,161,75,176,161,191,252,173,96,187,37,139,35,182,146,150,226,178,47,43,173,138,152,54,108,142,65,16,47,131,246,13,238,135,243,93,169,153,68,64,104,157,157,102,43,144,42,123,234,148,231,29,180,224,80,0,117,228,137,38,54,233,62,59,247,237,59,107,176,243,140,118,113,247,85,80,50,250,226,77,243,254,95,240,188,198,232,237,125,194,49,203,62,207,134,214,255,203,131,134,184,213,52,155,121,209,237,189,58,220,90,160,251,216,238,224,12,105,89,253,205,109,128,219,142,96,55,198,79,100,50,150,8,122,133,139,201,126,92,173,138,115,235,176,75,119,86,13,4,79,225,16,197,75,56,54,134,70,143,43,71,66,138,123,0,92,61,102,193,88,228,64,130,85,83,93,67,81,158,59,29,37,41,38,220,33,240,0,159,44,71,29,94,40,66,77,25,54,245,80,216,50,44,118,155,63,155,107,90,59,38,214,21,3,145,203,212,7,72,237,151,10,255,240,86,14,250,160,17,16,77,189,208,20,148,155,147,25,35,134,82,29,14,86,47,241,185,75,238,245,96,109,173,248,215,112,108,252,210,32,43,226,101,61,234,230,188,27,169,235,11,6,104,239,182,187,39,215,1,166,230,211,216,128,165,222,111,157,100,218,106,205,35,196,221,208,226,192,4,246,161,205,179,235,96,201,126,141,62,189,201,144,255,185,16,182,188,180,167,171,125,176,162,251,58,174,21,230,251,170,204,192,184,167,123,221,121,163,198,96,54,155,113,125,247,159,168,91,180,146,31,70,117,150,26,22,50,136,173,11,243,140,116,45,176,129,195,48,113,133,153,144,138,93,46,141,75,89,247,171,8,84,64,182,201,80,69,230,142,78,242,251,79,74,43,221,12,71,156,192,205,67,33,125,130,123,150,96,67,127,79,70,0,114,248,91,193,118,253,11,134,104,74,22,71,108,147,48,4,97,36,45,197,101,233,75,155,17,94,86,90,21,135,112,25,24], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+30724); +/* memory initializer */ allocate([48,109,216,28,53,61,159,2,130,32,94,6,91,6,29,11,236,27,220,15,81,166,147,55,230,187,82,51,63,157,17,62,136,128,208,58,141,208,151,36,58,205,86,32,227,235,21,45,84,246,212,41,121,38,169,197,206,59,104,193,23,29,43,204,160,0,234,200,165,80,173,214,18,77,108,210,203,107,47,223,124,118,238,219,193,203,161,227,118,214,96,231,175,240,35,234,24,237,226,238,29,189,165,240,170,160,100,244,115,134,39,249,196,155,230,253,9,253,184,137,190,224,121,141,103,198,58,128,208,219,251,132,213,139,188,154,98,150,125,158,187,176,62,147,12,173,255,151,177,16,176,175,6,13,113,171,223,43,50,166,104,54,243,162,109,102,180,188,218,123,117,184,3,93,54,181,180,64,247,177,0,64,202,69,27,76,255,82,130,90,179,98,162,107,96,117,0,0,157,62,0,64,94,62,0,192,4,62,0,128,237,62,0,64,137,62,0,0,0,0,0,192,76,63,0,0,205,61,0,0,0,0,0,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,49,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,33,0,0,0,0,0,0,19,0,0,0,19,0,0,0,0,33,0,0,19,0,0,0,49,0,0,0,19,0,0,0,0,33,0,0,19,0,0,0,19,0,0,0,49,0,0,0,0,33,0,0,19,0,0,0,49,0,0,0,49,0,0,0,0,33,0,0,19,0,0,0,0,0,0,0,34,0,0,0,4,1,0,0,0,0,0,0,34,0,0,0,34,0,0,0,4,1,0,0,34,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,3,0,3,0,3,0,3,0,4,0,4,0,4,0,4,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,13,0,15,0,17,0,19,0,23,0,27,0,31,0,35,0,43,0,51,0,59,0,67,0,83,0,99,0,115,0,131,0,163,0,195,0,227,0,2,1,0,0,0,0,0,0,1,0,2,0,3,0,4,0,5,0,7,0,9,0,13,0,17,0,25,0,33,0,49,0,65,0,97,0,129,0,193,0,1,1,129,1,1,2,1,3,1,4,1,6,1,8,1,12,1,16,1,24,1,32,1,48,1,64,1,96,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,2,0,2,0,3,0,3,0,4,0,4,0,5,0,5,0,6,0,6,0,7,0,7,0,8,0,8,0,9,0,9,0,10,0,10,0,11,0,11,0,12,0,12,0,13,0,13,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,41,0,41,0,41,0,82,0,82,0,123,0,164,0,200,0,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,41,0,41,0,41,0,123,0,123,0,123,0,164,0,164,0,240,0,10,1,27,1,39,1,41,0,41,0,41,0,41,0,41,0,41,0,41,0,41,0,123,0,123,0,123,0,123,0,240,0,240,0,240,0,10,1,10,1,49,1,62,1,72,1,80,1,123,0,123,0,123,0,123,0,123,0,123,0,123,0,123,0,240,0,240,0,240,0,240,0,49,1,49,1,49,1,62,1,62,1,87,1,95,1,102,1,108,1,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,49,1,49,1,49,1,49,1,87,1,87,1,87,1,95,1,95,1,114,1,120,1,126,1,131,1,0,0,0,0,0,0,224,224,224,224,224,224,224,224,160,160,160,160,185,185,185,178,178,168,134,61,37,224,224,224,224,224,224,224,224,240,240,240,240,207,207,207,198,198,183,144,66,40,160,160,160,160,160,160,160,160,185,185,185,185,193,193,193,183,183,172,138,64,38,240,240,240,240,240,240,240,240,207,207,207,207,204,204,204,193,193,180,143,66,40,185,185,185,185,185,185,185,185,193,193,193,193,193,193,193,183,183,172,138,65,39,207,207,207,207,207,207,207,207,204,204,204,204,201,201,201,188,188,176,141,66,40,193,193,193,193,193,193,193,193,193,193,193,193,194,194,194,184,184,173,139,65,39,204,204,204,204,204,204,204,204,201,201,201,201,198,198,198,187,187,175,140,66,40,40,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,40,15,23,28,31,34,36,38,39,41,42,43,44,45,46,47,47,49,50,51,52,53,54,55,55,57,58,59,60,61,62,63,63,65,66,67,68,69,70,71,71,40,20,33,41,48,53,57,61,64,66,69,71,73,75,76,78,80,82,85,87,89,91,92,94,96,98,101,103,105,107,108,110,112,114,117,119,121,123,124,126,128,40,23,39,51,60,67,73,79,83,87,91,94,97,100,102,105,107,111,115,118,121,124,126,129,131,135,139,142,145,148,150,153,155,159,163,166,169,172,174,177,179,35,28,49,65,78,89,99,107,114,120,126,132,136,141,145,149,153,159,165,171,176,180,185,189,192,199,205,211,216,220,225,229,232,239,245,251,21,33,58,79,97,112,125,137,148,157,166,174,182,189,195,201,207,217,227,235,243,251,17,35,63,86,106,123,139,152,165,177,187,197,206,214,222,230,237,250,25,31,55,75,91,105,117,128,138,146,154,161,168,174,180,185,190,200,208,215,222,229,235,240,245,255,16,36,65,89,110,128,144,159,173,185,196,207,217,226,234,242,250,11,41,74,103,128,151,172,191,209,225,241,255,9,43,79,110,138,163,186,207,227,246,12,39,71,99,123,144,164,182,198,214,228,241,253,9,44,81,113,142,168,192,214,235,255,7,49,90,127,160,191,220,247,6,51,95,134,170,203,234,7,47,87,123,155,184,212,237,6,52,97,137,174,208,240,5,57,106,151,192,231,5,59,111,158,202,243,5,55,103,147,187,224,5,60,113,161,206,248,4,65,122,175,224,4,67,127,182,234,0,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,15,0,0,0,31,0,0,0,63,0,0,0,127,0,0,0,255,0,0,0,255,1,0,0,255,3,0,0,255,7,0,0,255,15,0,0,255,31,0,0,255,63,0,0,255,127,0,0,0,134,107,63,0,20,46,63,0,112,189,62,0,208,76,62,0,192,48,240,12,204,60,252,3,195,51,243,15,207,63,255,128,64,176,112,140,76,188,124,131,67,179,115,143,79,191,127,32,224,16,208,44,236,28,220,35,227,19,211,47,239,31,223,160,96,144,80,172,108,156,92,163,99,147,83,175,111,159,95,8,200,56,248,4,196,52,244,11,203,59,251,7,199,55,247,136,72,184,120,132,68,180,116,139,75,187,123,135,71,183,119,40,232,24,216,36,228,20,212,43,235,27,219,39,231,23,215,168,104,152,88,164,100,148,84,171,107,155,91,167,103,151,87,2,194,50,242,14,206,62,254,1,193,49,241,13,205,61,253,130,66,178,114,142,78,190,126,129,65,177,113,141,77,189,125,34,226,18,210,46,238,30,222,33,225,17,209,45,237,29,221,162,98,146,82,174,110,158,94,161,97,145,81,173,109,157,93,10,202,58,250,6,198,54,246,9,201,57,249,5,197,53,245,138,74,186,122,134,70,182,118,137,73,185,121,133,69,181,117,42,234,26,218,38,230,22,214,41,233,25,217,37,229,21,213,170,106,154,90,166,102,150,86,169,105,153,89,165,101,149,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,80,75,69,63,56,49,40,34,29,20,18,10,0,0,0,0,0,0,0,0,110,100,90,84,78,71,65,58,51,45,39,32,26,20,12,0,0,0,0,0,0,118,110,103,93,86,80,75,70,65,59,53,47,40,31,23,15,4,0,0,0,0,126,119,112,104,95,89,83,78,72,66,60,54,47,39,32,25,17,12,1,0,0,134,127,120,114,103,97,91,85,78,72,66,60,54,47,41,35,29,23,16,10,1,144,137,130,124,113,107,101,95,88,82,76,70,64,57,51,45,39,33,26,15,1,152,145,138,132,123,117,111,105,98,92,86,80,74,67,61,55,49,43,36,20,1,162,155,148,142,133,127,121,115,108,102,96,90,84,77,71,65,59,53,46,30,1,172,165,158,152,143,137,131,125,118,112,106,100,94,87,81,75,69,63,56,45,20,200,200,200,200,200,200,200,200,198,193,188,183,178,173,168,163,158,153,148,129,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,108,71,101,116,73,110,102,111,76,111,103,0,0,0,0,65,116,32,109,97,114,107,101,114,32,48,120,37,48,50,120,44,32,114,101,99,111,118,101,114,121,32,97,99,116,105,111,110,32,37,100,0,0,0,0,113,51,109,97,112,0,0,0,114,95,110,111,114,109,97,108,77,97,112,112,105,110,103,0,97,116,116,114,95,76,105,103,104,116,68,105,114,101,99,116,105,111,110,0,0,0,0,0,102,111,117,110,100,32,35,32,119,105,116,104,111,117,116,32,110,97,109,101,0,0,0,0,67,76,32,112,97,99,107,101,116,32,37,115,58,32,37,115,10,0,0,0,0,0,0,0,109,97,116,99,104,102,105,108,101,0,0,0,0,0,0,0,83,101,114,118,101,114,32,100,105,115,99,111,110,110,101,99,116,101,100,0,0,0,0,0,119,97,115,32,107,105,99,107,101,100,0,0,0,0,0,0,118,105,101,119,97,110,103,108,101,115,91,50,93,0,0,0,67,111,110,110,101,99,116,101,100,32,116,111,32,97,32,112,117,114,101,32,115,101,114,118,101,114,46,10,0,0,0,0,37,115,61,37,115,10,0,0,75,80,95,69,78,84,69,82,0,0,0,0,0,0,0,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,0,32,119,105,116,104,111,117,116,32,110,111,116,105,102,105,99,97,116,105,111,110,0,0,0,83,101,108,101,99,116,101,100,32,37,100,32,99,111,108,111,114,115,32,102,111,114,32,113,117,97,110,116,105,122,97,116,105,111,110,0,0,0,0,0,99,108,97,109,112,84,105,109,101,0,0,0,0,0,0,0,114,95,115,115,97,111,0,0,97,116,116,114,95,80,97,105,110,116,67,111,108,111,114,0,101,118,97,108,102,108,111,97,116,0,0,0,0,0,0,0,37,100,32,115,101,114,118,101,114,115,32,112,97,114,115,101,100,32,40,116,111,116,97,108,32,37,100,41,10,0,0,0,114,110,100,46,99,0,0,0,67,97,110,110,111,116,32,107,105,99,107,32,104,111,115,116,32,112,108,97,121,101,114,10,0,0,0,0,0,0,0,0,101,118,101,110,116,80,97,114,109,115,91,49,93,0,0,0,32,0,0,0,0,0,0,0,67,111,109,95,69,118,101,110,116,76,111,111,112,58,32,98,97,100,32,101,118,101,110,116,32,116,121,112,101,32,37,105,0,0,0,0,0,0,0,0,114,95,100,101,98,117,103,83,117,114,102,97,99,101,0,0,75,80,95,80,71,68,78,0,53,0,0,0,0,0,0,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,0,77,97,112,32,119,105,116,104,32,110,111,32,112,108,97,110,101,115,0,0,0,0,0,0,81,117,97,110,116,105,122,105,110,103,32,116,111,32,37,100,32,99,111,108,111,114,115,0,116,101,115,115,115,105,122,101,0,0,0,0,0,0,0,0,114,95,100,101,112,116,104,80,114,101,112,97,115,115,0,0,97,116,116,114,95,67,111,108,111,114,0,0,0,0,0,0,71,76,95,65,82,66,95,118,101,114,116,101,120,95,116,121,112,101,95,50,95,49,48,95,49,48,95,49,48,95,114,101,118,0,0,0,0,0,0,0,101,118,97,108,0,0,0,0,67,76,95,83,101,114,118,101,114,115,82,101,115,112,111,110,115,101,80,97,99,107,101,116,10,0,0,0,0,0,0,0,114,110,100,102,105,108,101,0,85,115,97,103,101,58,32,37,115,32,60,99,108,105,101,110,116,32,110,117,109,98,101,114,62,10,0,0,0,0,0,0,101,118,101,110,116,80,97,114,109,115,91,48,93,0,0,0,37,105,32,0,0,0,0,0,117,105,0,0,0,0,0,0,83,86,95,80,97,99,107,101,116,69,118,101,110,116,32,116,105,109,101,58,32,37,105,10,0,0,0,0,0,0,0,0,75,80,95,68,79,87,78,65,82,82,79,87,0,0,0,0,83,67,82,95,68,114,97,119,83,99,114,101,101,110,70,105,101,108,100,58,32,98,97,100,32,99,108,99,46,115,116,97,116,101,0,0,0,0,0,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,81,117,97,110,116,105,122,105,110,103,32,116,111,32,37,100,32,61,32,37,100,42,37,100,42,37,100,32,99,111,108,111,114,115,0,0,0,0,0,0,100,101,102,111,114,109,86,101,114,116,101,120,101,115,0,0,114,95,115,114,103,98,0,0,97,116,116,114,95,78,111,114,109,97,108,0,0,0,0,0,71,76,95,65,82,66,95,115,101,97,109,108,101,115,115,95,99,117,98,101,95,109,97,112,0,0,0,0,0,0,0,0,66,111,103,117,115,32,72,117,102,102,109,97,110,32,116,97,98,108,101,32,100,101,102,105,110,105,116,105,111,110,0,0,112,114,97,103,109,97,0,0,67,76,95,67,104,101,99,107,70,111,114,82,101,115,101,110,100,58,32,98,97,100,32,99,108,99,46,115,116,97,116,101,0,0,0,0,0,0,0,0,115,121,110,46,99,0,0,0,85,115,105,110,103,32,37,100,47,37,100,47,37,100,32,67,111,108,111,114,32,98,105,116,115,44,32,37,100,32,100,101,112,116,104,44,32,37,100,32,115,116,101,110,99,105,108,32,100,105,115,112,108,97,121,46,10,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,82,95,67,114,101,97,116,101,73,66,79,50,58,32,77,65,88,95,73,66,79,83,32,104,105,116,0,0,0,0,0,0,116,111,114,115,111,84,105,109,101,114,0,0,0,0,0,0,119,104,105,99,104,0,0,0,115,118,99,95,118,111,105,112,0,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,67,111,109,95,80,117,115,104,69,118,101,110,116,32,111,118,101,114,102,108,111,119,10,0,0,0,0,0,0,0,0,75,80,95,69,78,68,0,0,97,100,100,105,116,105,118,101,0,0,0,0,0,0,0,0,37,56,105,32,58,32,40,37,105,41,32,37,115,10,0,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,0,0,32,32,32,32,32,32,32,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,0,113,51,103,108,50,95,116,111,110,101,109,97,112,0,0,0,114,95,99,97,109,101,114,97,69,120,112,111,115,117,114,101,0,0,0,0,0,0,0,0,97,116,116,114,95,84,97,110,103,101,110,116,0,0,0,0,71,76,95,65,82,66,95,100,101,112,116,104,95,99,108,97,109,112,0,0,0,0,0,0,101,114,114,111,114,0,0,0,115,121,110,102,105,108,101,0,115,99,114,95,99,111,110,115,112,101,101,100,0,0,0,0,77,111,100,101,32,32,49,58,32,52,48,48,120,51,48,48,0,0,0,0,0,0,0,0,32,37,53,105,0,0,0,0,100,101,108,116,97,95,97,110,103,108,101,115,91,50,93,0,116,111,117,99,104,70,105,108,101,0,0,0,0,0,0,0,63,63,63,63,32,0,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,116,111,32,106,111,117,114,110,97,108,32,102,105,108,101,0,0,0,75,80,95,82,73,71,72,84,65,82,82,79,87,0,0,0,40,117,115,105,110,103,32,99,97,99,104,101,41,10,0,0,70,66,79,95,67,114,101,97,116,101,58,32,98,97,100,32,119,105,100,116,104,32,37,105,0,0,0,0,0,0,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,65,82,66,0,0,0,0,0,0,0,0,82,95,71,101,116,67,111,109,109,97,110,100,66,117,102,102,101,114,58,32,98,97,100,32,115,105,122,101,32,37,105,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114,101,50,68,0,0,103,114,105,100,115,105,122,101,0,0,0,0,0,0,0,0,85,110,101,120,112,101,99,116,101,100,32,109,97,114,107,101,114,32,48,120,37,48,50,120,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,115,32,115,101,116,0,0,0,0,0,113,51,103,108,50,95,115,117,110,0,0,0,0,0,0,0,50,46,48,0,0,0,0,0,97,116,116,114,95,84,101,120,67,111,111,114,100,49,0,0,103,108,68,114,97,119,66,117,102,102,101,114,115,65,82,66,0,0,0,0,0,0,0,0,108,105,110,101,0,0,0,0,99,104,97,108,108,101,110,103,101,0,0,0,0,0,0,0,115,97,121,32,37,115,0,0,37,53,105,0,0,0,0,0,100,101,108,116,97,95,97,110,103,108,101,115,91,48,93,0,102,100,105,114,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,102,114,111,109,32,106,111,117,114,110,97,108,32,102,105,108,101,0,27,91,37,100,109,0,0,0,70,65,73,76,69,68,32,40,37,115,41,10,0,0,0,0,75,80,95,53,0,0,0,0,105,110,95,106,111,121,115,116,105,99,107,0,0,0,0,0,125,0,0,0,0,0,0,0,33,61,0,0,0,0,0,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,0,0,0,0,0,0,100,101,102,105,110,101,32,37,115,32,105,110,99,111,109,112,108,101,116,101,0,0,0,0,77,105,115,99,101,108,108,97,110,101,111,117,115,32,109,97,114,107,101,114,32,48,120,37,48,50,120,44,32,108,101,110,103,116,104,32,37,117,0,0,98,111,116,108,105,98,46,108,111,103,0,0,0,0,0,0,113,51,109,97,112,95,115,117,110,69,120,116,0,0,0,0,114,95,102,111,114,99,101,65,117,116,111,69,120,112,111,115,117,114,101,77,97,120,0,0,98,111,116,95,114,101,108,111,97,100,99,104,97,114,97,99,116,101,114,115,0,0,0,0,97,116,116,114,95,84,101,120,67,111,111,114,100,48,0,0,71,76,95,65,82,66,95,100,114,97,119,95,98,117,102,102,101,114,115,0,0,0,0,0,99,111,117,110,108,100,110,39,116,32,108,111,97,100,32,37,115,10,0,0,0,0,0,0,102,117,110,99,95,115,116,97,116,105,99,0,0,0,0,0,117,110,100,101,102,0,0,0,105,110,118,97,108,105,100,32,103,111,97,108,32,115,116,97,116,101,32,37,100,10,0,0,113,112,111,114,116,0,0,0,116,101,108,108,32,37,100,32,37,115,0,0,0,0,0,0,98,111,116,102,105,108,101,115,0,0,0,0,0,0,0,0,37,55,105,32,0,0,0,0,98,111,116,95,114,101,108,111,97,100,99,104,97,114,97,99,116,101,114,115,0,0,0,0,65,65,83,95,76,105,110,107,69,110,116,105,116,121,58,32,97,97,115,32,110,111,116,32,108,111,97,100,101,100,10,0,112,109,95,116,121,112,101,0,119,114,105,116,116,101,110,32,37,100,32,98,121,116,101,115,32,111,102,32,114,111,117,116,105,110,103,32,99,97,99,104,101,10,0,0,0,0,0,0,100,105,114,0,0,0,0,0,67,111,109,95,81,117,101,117,101,69,118,101,110,116,58,32,111,118,101,114,102,108,111,119,10,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,52,48,48,0,0,0,0,0,75,80,95,76,69,70,84,65,82,82,79,87,0,0,0,0,109,101,109,111,114,121,100,117,109,112,0,0,0,0,0,0,101,114,114,111,114,32,111,112,101,110,105,110,103,32,37,115,10,0,0,0,0,0,0,0,13,37,54,100,32,112,111,115,115,105,98,108,101,32,112,111,114,116,97,108,32,97,114,101,97,115,10,0,0,0,0,0,67,111,117,108,100,110,39,116,32,108,111,97,100,32,115,121,109,98,111,108,32,102,105,108,101,58,32,37,115,10,0,0,81,95,115,116,114,110,99,112,121,122,58,32,100,101,115,116,115,105,122,101,32,60,32,49,0,0,0,0,0,0,0,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,0,0,0,32,32,32,32,119,105,116,104,32,37,100,32,120,32,37,100,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,0,0,0,0,0,0,0,0,100,101,109,111,115,47,37,115,46,37,115,37,100,0,0,0,113,51,109,97,112,95,115,117,110,0,0,0,0,0,0,0,114,95,102,111,114,99,101,65,117,116,111,69,120,112,111,115,117,114,101,77,105,110,0,0,97,116,116,114,95,80,111,115,105,116,105,111,110,0,0,0,37,115,32,114,101,115,111,108,118,101,100,32,116,111,32,37,115,10,0,0,0,0,0,0,71,76,95,65,82,66,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,98,112,116,99,0,67,76,95,80,108,97,121,67,105,110,101,109,97,116,105,99,95,102,10,0,0,0,0,0,83,101,114,118,101,114,58,32,37,115,10,0,0,0,0,0,100,101,102,105,110,101,0,0,49,0,0,0,0,0,0,0,37,105,0,0,0,0,0,0,115,97,121,95,116,101,97,109,32,37,115,0,0,0,0,0,112,114,105,110,116,10,83,101,114,118,101,114,32,117,115,101,115,32,112,114,111,116,111,99,111,108,32,118,101,114,115,105,111,110,32,37,105,32,40,121,111,117,114,115,32,105,115,32,37,105,41,46,10,0,0,0,32,0,0,0,0,0,0,0,113,99,111,110,115,111,108,101,46,108,111,103,0,0,0,0,100,97,109,97,103,101,67,111,117,110,116,0,0,0,0,0,100,117,109,112,117,115,101,114,0,0,0,0,0,0,0,0,112,97,116,104,0,0,0,0,98,111,116,95,101,110,97,98,108,101,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,111,112,101,110,32,106,111,117,114,110,97,108,32,102,105,108,101,115,10,0,0,0,0,115,95,97,108,77,105,110,68,105,115,116,97,110,99,101,0,75,80,95,80,71,85,80,0,115,95,100,111,112,112,108,101,114,0,0,0,0,0,0,0,78,111,32,98,97,99,107,103,114,111,117,110,100,32,102,105,108,101,46,10,0,0,0,0,73,80,58,32,37,115,10,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,0,0,0,0,0,0,37,115,32,114,101,99,118,32,37,52,105,32,58,32,115,61,37,105,10,0,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,116,121,112,101,32,48,120,37,48,50,120,44,32,108,101,110,103,116,104,32,37,117,0,0,0,113,101,114,0,0,0,0,0,114,95,102,111,114,99,101,65,117,116,111,69,120,112,111,115,117,114,101,0,0,0,0,0,112,111,115,46,116,114,66,97,115,101,91,48,93,0,0,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,108,97,116,99,0,105,110,99,108,117,100,101,0,112,114,111,116,111,99,111,108,0,0,0,0,0,0,0,0,98,111,116,95,116,101,115,116,114,99,104,97,116,0,0,0,114,98,0,0,0,0,0,0,94,55,0,0,0,0,0,0,65,76,84,0,0,0,0,0,10,0,0,0,0,0,0,0,100,97,109,97,103,101,80,105,116,99,104,0,0,0,0,0,99,111,109,95,106,111,117,114,110,97,108,0,0,0,0,0,75,80,95,85,80,65,82,82,79,87,0,0,0,0,0,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,0,0,0,0,0,0,87,97,114,110,105,110,103,58,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,32,115,105,122,101,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,100,97,116,97,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,87,65,82,78,73,78,71,58,32,116,111,111,32,109,97,110,121,32,115,116,97,103,101,115,32,105,110,32,115,104,97,100,101,114,32,37,115,10,0,0,114,95,97,117,116,111,69,120,112,111,115,117,114,101,0,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,115,82,71,66,95,100,101,99,111,100,101,0,0,0,0,0,0,37,115,0,0,0,0,0,0,101,110,100,105,102,0,0,0,110,101,116,95,113,112,111,114,116,0,0,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,37,115,0,0,0,0,0,0,100,97,109,97,103,101,89,97,119,0,0,0,0,0,0,0,82,101,112,108,97,121,105,110,103,32,106,111,117,114,110,97,108,101,100,32,101,118,101,110,116,115,10,0,0,0,0,0,75,80,95,72,79,77,69,0,100,105,115,99,111,110,110,101,99,116,0,0,0,0,0,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,0,0,0,74,70,73,70,32,65,80,80,48,32,109,97,114,107,101,114,58,32,118,101,114,115,105,111,110,32,37,100,46,37,48,50,100,44,32,100,101,110,115,105,116,121,32,37,100,120,37,100,32,32,37,100,0,0,0,0,87,65,82,78,73,78,71,58,32,110,111,32,99,111,110,99,108,117,100,105,110,103,32,39,125,39,32,105,110,32,115,104,97,100,101,114,32,37,115,10,0,0,0,0,0,0,0,0,48,46,48,0,0,0,0,0,71,76,83,76,95,73,110,105,116,71,80,85,83,104,97,100,101,114,50,58,32,34,37,115,34,32,105,115,32,116,111,111,32,108,111,110,103,0,0,0,71,76,95,69,88,84,95,102,114,97,109,101,98,117,102,102,101,114,95,115,82,71,66,0,37,115,47,37,115,0,0,0,101,108,115,101,0,0,0,0,103,101,116,99,104,97,108,108,101,110,103,101,32,37,100,32,37,115,0,0,0,0,0,0,37,115,32,104,97,115,32,37,100,32,99,104,97,116,32,108,105,110,101,115,10,0,0,0,99,111,109,95,101,114,114,111,114,77,101,115,115,97,103,101,0,0,0,0,0,0,0,0,100,105,115,99,111,110,110,101,99,116,101,100,0,0,0,0,37,52,105,32,0,0,0,0,100,97,109,97,103,101,69,118,101,110,116,0,0,0,0,0,106,111,117,114,110,97,108,100,97,116,97,46,100,97,116,0,65,85,88,49,54,0,0,0,103,108,73,115,80,114,111,103,114,97,109,0,0,0,0,0,32,32,32,32,32,32,32,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,0,87,65,82,78,73,78,71,58,32,101,120,112,101,99,116,105,110,103,32,39,123,39,44,32,102,111,117,110,100,32,39,37,115,39,32,105,110,115,116,101,97,100,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,114,95,102,111,114,99,101,84,111,110,101,77,97,112,77,97,120,0,0,0,0,0,0,0,45,45,45,45,45,45,45,32,71,80,85,32,115,104,97,100,101,114,32,45,45,45,45,45,45,45,10,0,0,0,0,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,115,82,71,66,0,0,0,0,0,101,108,105,102,0,0,0,0,85,68,80,32,68,111,119,110,108,111,97,100,115,32,97,114,101,32,100,105,115,97,98,108,101,100,32,111,110,32,121,111,117,114,32,99,108,105,101,110,116,46,32,40,99,108,95,97,108,108,111,119,68,111,119,110,108,111,97,100,32,105,115,32,37,100,41,0,0,0,0,0,98,111,116,95,116,101,115,116,105,99,104,97,116,0,0,0,85,110,112,117,114,101,32,99,108,105,101,110,116,32,100,101,116,101,99,116,101,100,46,32,73,110,118,97,108,105,100,32,46,80,75,51,32,102,105,108,101,115,32,114,101,102,101,114,101,110,99,101,100,33,0,0,90,77,66,73,32,0,0,0,118,105,101,119,104,101,105,103,104,116,0,0,0,0,0,0,106,111,117,114,110,97,108,46,100,97,116,0,0,0,0,0,49,0,0,0,0,0,0,0,65,85,88,49,53,0,0,0,48,0,0,0,0,0,0,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,0,0,0,0,0,0,77,97,112,32,119,105,116,104,32,110,111,32,108,101,97,102,115,0,0,0,0,0,0,0,69,110,100,32,79,102,32,73,109,97,103,101,0,0,0,0,95,110,0,0,0,0,0,0,45,50,46,48,0,0,0,0,113,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,84,65,78,71,69,78,84,50,32,41,10,0,0,0,0,0,0,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,77,117,108,116,105,115,97,109,112,108,101,69,88,84,0,0,0,0,0,105,102,110,100,101,102,0,0,73,110,99,111,114,114,101,99,116,32,99,104,101,99,107,115,117,109,32,102,111,114,32,102,105,108,101,58,32,37,115,0,37,115,10,0,0,0,0,0,105,103,110,111,114,105,110,103,32,111,117,116,100,97,116,101,100,32,99,112,32,99,111,109,109,97,110,100,32,102,114,111,109,32,99,108,105,101,110,116,32,37,115,10,0,0,0,0,67,78,67,84,32,0,0,0,101,120,116,101,114,110,97,108,69,118,101,110,116,80,97,114,109,0,0,0,0,0,0,0,118,109,95,117,105,0,0,0,74,111,117,114,110,97,108,105,110,103,32,101,118,101,110,116,115,10,0,0,0,0,0,0,65,85,88,49,52,0,0,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,0,103,114,97,112,104,115,104,105,102,116,0,0,0,0,0,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,0,0,0,0,79,98,116,97,105,110,101,100,32,69,77,83,32,104,97,110,100,108,101,32,37,117,0,0,87,65,82,78,73,78,71,58,32,71,101,110,101,114,97,116,101,80,101,114,109,97,110,101,110,116,83,104,97,100,101,114,32,45,32,77,65,88,95,83,72,65,68,69,82,83,32,104,105,116,10,0,0,0,0,0,114,95,102,111,114,99,101,84,111,110,101,77,97,112,65,118,103,0,0,0,0,0,0,0,82,101,115,97,109,112,108,101,84,101,120,116,117,114,101,58,32,109,97,120,32,119,105,100,116,104,0,0,0,0,0,0,113,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,78,79,82,77,65,76,50,32,41,10,0,0,0,0,0,0,0,0,71,76,95,69,88,84,95,102,114,97,109,101,98,117,102,102,101,114,95,109,117,108,116,105,115,97,109,112,108,101,0,0,67,111,109,112,111,110,101,110,116,32,105,110,100,101,120,32,37,100,58,32,109,105,115,109,97,116,99,104,105,110,103,32,115,97,109,112,108,105,110,103,32,114,97,116,105,111,32,37,100,58,37,100,44,32,37,100,58,37,100,44,32,37,99,0,105,102,100,101,102,0,0,0,102,115,95,104,111,109,101,112,97,116,104,0,0,0,0,0,116,111,111,32,109,97,110,121,32,101,120,112,97,110,115,105,111,110,115,32,105,110,32,99,104,97,116,32,109,101,115,115,97,103,101,10,0,0,0,0,118,109,47,117,105,46,113,118,109,0,0,0,0,0,0,0,83,68,76,95,83,101,116,86,105,100,101,111,77,111,100,101,32,102,97,105,108,101,100,58,32,37,115,10,0,0,0,0,37,53,105,32,0,0,0,0,82,95,67,114,101,97,116,101,73,66,79,50,58,32,34,37,115,34,32,105,115,32,116,111,111,32,108,111,110,103,0,0,100,101,108,116,97,95,97,110,103,108,101,115,91,49,93,0,46,46,92,0,0,0,0,0,115,118,99,95,69,79,70,0,48,0,0,0,0,0,0,0,65,85,88,49,51,0,0,0,67,98,117,102,95,65,100,100,84,101,120,116,58,32,111,118,101,114,102,108,111,119,10,0,98,97,110,110,101,114,0,0,87,65,82,78,73,78,71,58,32,37,115,32,110,111,116,32,112,114,101,115,101,110,116,44,32,117,115,105,110,103,32,37,115,32,105,110,115,116,101,97,100,10,0,0,0,0,0,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,0,0,70,114,101,101,100,32,69,77,83,32,104,97,110,100,108,101,32,37,117,0,0,0,0,0,87,65,82,78,73,78,71,58,32,115,104,97,100,101,114,32,39,37,115,39,32,104,97,115,32,108,105,103,104,116,109,97,112,32,98,117,116,32,110,111,32,108,105,103,104,116,109,97,112,32,115,116,97,103,101,33,10,0,0,0,0,0,0,0,45,56,46,48,0,0,0,0,98,109,112,0,0,0,0,0,113,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,80,79,83,73,84,73,79,78,50,32,41,10,0,0,0,0,0,0,103,108,66,108,105,116,70,114,97,109,101,98,117,102,102,101,114,69,88,84,0,0,0,0,105,102,0,0,0,0,0,0,100,111,119,110,108,111,97,100,32,37,115,0,0,0,0,0,66,111,116,67,111,110,115,116,114,117,99,116,67,104,97,116,58,32,109,101,115,115,97,103,101,32,34,37,115,34,32,105,110,118,97,108,105,100,32,101,115,99,97,112,101,32,99,104,97,114,10,0,0,0,0,0,77,111,100,101,32,32,48,58,32,51,50,48,120,50,52,48,0,0,0,0,0,0,0,0,118,109,47,99,103,97,109,101,46,113,118,109,0,0,0,0,37,51,105,32,0,0,0,0,76,111,97,100,66,77,80,58,32,102,105,108,101,32,116,114,117,110,99,97,116,101,100,32,40,37,115,41,0,0,0,0,51,0,0,0,0,0,0,0,115,112,101,101,100,0,0,0,46,46,47,0,0,0,0,0,10,32,32,32,32,32,32,45,119,45,45,32,45,104,45,45,32,116,121,112,101,32,32,45,115,105,122,101,45,32,45,45,110,97,109,101,45,45,45,45,45,45,45,10,0,0,0,0,106,111,117,114,110,97,108,0,65,85,88,49,50,0,0,0,45,45,45,45,45,45,45,32,71,76,83,76,95,73,110,105,116,71,80,85,83,104,97,100,101,114,115,32,45,45,45,45,45,45,45,10,0,0,0,0,70,66,79,95,67,114,101,97,116,101,58,32,34,37,115,34,32,105,115,32,116,111,111,32,108,111,110,103,0,0,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,65,82,66,0,0,0,0,71,76,83,76,32,98,105,110,100,115,58,32,37,105,32,32,100,114,97,119,115,58,32,103,101,110,32,37,105,32,108,105,103,104,116,32,37,105,32,102,111,103,32,37,105,32,100,108,105,103,104,116,32,37,105,10,0,0,0,0,0,0,0,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,110,111,32,115,101,109,105,32,99,111,108,111,110,32,105,110,32,115,104,97,100,101,114,114,101,109,97,112,32,39,37,115,39,10,0,0,0,0,0,68,101,102,105,110,101,32,82,101,115,116,97,114,116,32,73,110,116,101,114,118,97,108,32,37,117,0,0,0,0,0,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,32,82,66,95,83,119,97,112,66,117,102,102,101,114,115,32,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,10,10,0,0,0,105,110,118,97,108,105,100,32,98,105,116,32,108,101,110,103,116,104,32,114,101,112,101,97,116,0,0,0,0,0,0,0,114,95,102,111,114,99,101,84,111,110,101,77,97,112,77,105,110,0,0,0,0,0,0,0,112,99,120,0,0,0,0,0,113,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,76,73,71,72,84,68,73,82,69,67,84,73,79,78,32,41,10,0,71,76,95,69,88,84,95,102,114,97,109,101,98,117,102,102,101,114,95,98,108,105,116,0,66,85,71,58,32,119,114,111,110,103,32,112,117,110,99,116,117,97,116,105,111,110,32,115,117,98,116,121,112,101,0,0,37,49,46,50,102,0,0,0,99,108,95,100,111,119,110,108,111,97,100,84,105,109,101,0,66,111,116,67,111,110,115,116,114,117,99,116,67,104,97,116,58,32,109,101,115,115,97,103,101,32,34,37,115,34,32,116,111,111,32,108,111,110,103,10,0,0,0,0,0,0,0,0,98,114,111,107,101,110,32,100,111,119,110,108,111,97,100,0,45,45,45,32,45,45,45,45,45,32,45,45,45,45,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,32,45,45,45,45,45,45,45,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,32,45,45,45,45,45,32,45,45,45,45,45,10,0,0,0,0,0,0,0,103,114,97,118,105,116,121,0,37,115,47,112,97,107,37,100,0,0,0,0,0,0,0,0,72,117,110,107,95,70,114,101,101,84,101,109,112,77,101,109,111,114,121,58,32,110,111,116,32,116,104,101,32,102,105,110,97,108,32,98,108,111,99,107,10,0,0,0,0,0,0,0,70,108,111,111,100,65,114,101,97,95,114,58,32,114,101,102,108,111,111,100,101,100,0,0,27,91,48,109,10,0,0,0,83,68,76,95,73,110,105,116,40,32,83,68,76,95,73,78,73,84,95,65,85,68,73,79,32,41,46,46,46,32,0,0,65,85,88,49,49,0,0,0,105,110,95,110,111,103,114,97,98,0,0,0,0,0,0,0,123,0,0,0,0,0,0,0,61,61,0,0,0,0,0,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,100,101,102,105,110,101,32,37,115,32,104,97,115,32,116,111,111,32,109,97,110,121,32,112,97,114,109,115,0,0,0,0,68,101,102,105,110,101,32,81,117,97,110,116,105,122,97,116,105,111,110,32,84,97,98,108,101,32,37,100,32,32,112,114,101,99,105,115,105,111,110,32,37,100,0,0,0,0,0,0,67,108,111,115,101,100,32,108,111,103,32,37,115,10,0,0,37,115,37,99,98,97,115,101,113,51,37,99,98,111,116,108,105,98,46,108,111,103,0,0,83,104,97,100,101,114,32,37,115,32,104,97,115,32,97,32,115,116,97,103,101,32,119,105,116,104,32,110,111,32,105,109,97,103,101,10,0,0,0,0,114,95,102,111,114,99,101,84,111,110,101,77,97,112,0,0,112,110,103,0,0,0,0,0,59,0,0,0,0,0,0,0,113,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,67,79,76,79,82,32,41,10,0,0,103,108,71,101,116,81,117,101,114,121,79,98,106,101,99,116,117,105,118,65,82,66,0,0,98,111,116,102,105,108,101,115,0,0,0,0,0,0,0,0,102,117,110,99,95,100,111,111,114,0,0,0,0,0,0,0,32,105,110,116,101,103,101,114,0,0,0,0,0,0,0,0,103,111,97,108,32,115,116,97,116,101,32,104,97,110,100,108,101,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,0,99,108,95,100,111,119,110,108,111,97,100,67,111,117,110,116,0,0,0,0,0,0,0,0,66,111,116,67,111,110,115,116,114,117,99,116,67,104,97,116,58,32,117,110,107,110,111,119,110,32,114,97,110,100,111,109,32,115,116,114,105,110,103,32,37,115,10,0,0,0,0,0,99,108,105,101,110,116,68,111,119,110,108,111,97,100,58,32,37,100,32,58,32,102,105,108,101,32,34,37,115,34,32,99,111,109,112,108,101,116,101,100,10,0,0,0,0,0,0,0,110,117,109,32,115,99,111,114,101,32,112,105,110,103,32,110,97,109,101,32,32,32,32,32,32,32,32,32,32,32,32,108,97,115,116,109,115,103,32,97,100,100,114,101,115,115,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,113,112,111,114,116,32,114,97,116,101,10,0,0,0,0,0,0,0,0,125,10,0,0,0,0,0,0,65,65,83,95,84,114,97,99,101,65,114,101,97,115,58,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,10,0,101,120,116,101,114,110,97,108,69,118,101,110,116,0,0,0,10,114,111,117,116,101,32,99,97,99,104,101,32,119,114,105,116,116,101,110,32,116,111,32,37,115,10,0,0,0,0,0,46,112,107,51,100,105,114,0,72,117,110,107,95,70,114,101,101,84,101,109,112,77,101,109,111,114,121,58,32,98,97,100,32,109,97,103,105,99,0,0,98,111,116,95,118,105,115,117,97,108,105,122,101,106,117,109,112,112,97,100,115,0,0,0,112,104,121,115,95,119,97,116,101,114,103,114,97,118,105,116,121,0,0,0,0,0,0,0,65,85,88,49,48,0,0,0,115,104,111,119,109,101,109,111,114,121,117,115,97,103,101,0,119,114,105,116,105,110,103,32,37,115,10,0,0,0,0,0,112,111,115,115,105,98,108,101,32,112,111,114,116,97,108,58,32,37,100,13,10,0,0,0,118,109,47,37,115,46,109,97,112,0,0,0,0,0,0,0,81,95,115,116,114,110,99,112,121,122,58,32,78,85,76,76,32,115,114,99,0,0,0,0,103,108,73,115,83,104,97,100,101,114,0,0,0,0,0,0,68,101,102,105,110,101,32,72,117,102,102,109,97,110,32,84,97,98,108,101,32,48,120,37,48,50,120,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,89,111,117,32,115,104,111,117,108,100,32,115,101,116,32,39,103,95,115,121,110,99,104,114,111,110,111,117,115,67,108,105,101,110,116,115,32,49,39,32,102,111,114,32,115,109,111,111,116,104,101,114,32,100,101,109,111,32,114,101,99,111,114,100,105,110,103,10,0,60,115,116,101,110,99,105,108,32,115,104,97,100,111,119,62,0,0,0,0,0,0,0,0,114,95,116,111,110,101,77,97,112,0,0,0,0,0,0,0,106,112,101,103,0,0,0,0,113,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,84,65,78,71,69,78,84,32,41,10,0,0,0,0,0,0,0,0,82,101,115,111,108,118,105,110,103,32,37,115,32,40,73,80,118,52,41,10,0,0,0,0,103,108,71,101,116,81,117,101,114,121,79,98,106,101,99,116,105,118,65,82,66,0,0,0,32,102,108,111,97,116,0,0,45,45,45,45,45,45,32,83,101,114,118,101,114,32,73,110,105,116,105,97,108,105,122,97,116,105,111,110,32,45,45,45,45,45,45,10,0,0,0,0,35,112,114,97,103,109,97,32,100,105,114,101,99,116,105,118,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,98,111,116,95,101,110,97,98,108,101,0,0,0,0,0,0,99,108,95,100,111,119,110,108,111,97,100,83,105,122,101,0,66,111,116,67,111,110,115,116,114,117,99,116,67,104,97,116,58,32,109,101], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+40964); +/* memory initializer */ allocate([115,115,97,103,101,32,37,115,32,116,111,111,32,108,111,110,103,10,0,0,116,114,70,77,86,58,58,112,108,97,121,40,41,44,32,105,110,118,97,108,105,100,32,82,111,81,32,73,68,10,0,0,112,114,111,116,111,99,111,108,0,0,0,0,0,0,0,0,99,108,105,101,110,116,68,111,119,110,108,111,97,100,58,32,37,100,32,58,32,99,108,105,101,110,116,32,97,99,107,110,111,119,108,101,100,103,101,32,111,102,32,98,108,111,99,107,32,37,100,10,0,0,0,0,109,97,112,58,32,37,115,10,0,0,0,0,0,0,0,0,119,101,97,112,111,110,115,116,97,116,101,0,0,0,0,0,115,121,115,116,101,109,105,110,102,111,0,0,0,0,0,0,47,0,0,0,0,0,0,0,98,97,115,101,103,97,109,101,0,0,0,0,0,0,0,0,72,117,110,107,95,65,108,108,111,99,97,116,101,84,101,109,112,77,101,109,111,114,121,58,32,102,97,105,108,101,100,32,111,110,32,37,105,0,0,0,50,50,48,48,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,78,101,103,97,116,105,118,101,32,99,104,117,110,107,32,108,101,110,103,116,104,10,0,0,0,0,0,0,0,65,85,88,57,0,0,0,0,48,0,0,0,0,0,0,0,66,97,99,107,103,114,111,117,110,100,32,102,105,108,101,58,32,37,115,10,0,0,0,0,83,121,115,95,83,101,110,100,80,97,99,107,101,116,58,32,37,115,10,0,0,0,0,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,0,37,115,32,114,101,99,118,32,37,52,105,32,58,32,115,61,37,105,32,102,114,97,103,109,101,110,116,61,37,105,44,37,105,10,0,0,0,0,0,0,68,101,102,105,110,101,32,65,114,105,116,104,109,101,116,105,99,32,84,97,98,108,101,32,48,120,37,48,50,120,58,32,48,120,37,48,50,120,0,0,60,100,101,102,97,117,108,116,62,0,0,0,0,0,0,0,114,95,102,108,111,97,116,76,105,103,104,116,109,97,112,0,112,111,115,46,116,114,84,105,109,101,0,0,0,0,0,0,106,112,103,0,0,0,0,0,113,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,78,79,82,77,65,76,32,41,10,0,103,108,71,101,116,81,117,101,114,121,105,118,65,82,66,0,32,117,110,115,105,103,110,101,100,0,0,0,0,0,0,0,35,101,114,114,111,114,32,100,105,114,101,99,116,105,118,101,58,32,37,115,0,0,0,0,37,115,46,116,109,112,0,0,66,111,116,67,111,110,115,116,114,117,99,116,67,104,97,116,58,32,109,101,115,115,97,103,101,32,37,115,32,118,97,114,105,97,98,108,101,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,70,83,95,67,114,101,97,116,101,80,97,116,104,58,32,102,97,105,108,101,100,32,116,111,32,99,114,101,97,116,101,32,112,97,116,104,32,34,37,115,34,0,0,0,0,0,0,0,99,115,32,37,105,32,34,37,115,34,10,0,0,0,0,0,99,108,105,101,110,116,68,111,119,110,108,111,97,100,58,32,37,100,32,58,32,102,105,108,101,32,34,37,115,34,32,97,98,111,114,116,101,100,10,0,83,101,114,118,101,114,32,105,110,102,111,32,115,101,116,116,105,110,103,115,58,10,0,0,32,100,101,102,97,117,108,116,58,34,37,115,94,55,34,0,82,73,71,72,84,65,82,82,79,87,0,0,0,0,0,0,112,109,95,102,108,97,103,115,0,0,0,0,0,0,0,0,70,105,108,101,32,110,111,116,32,102,111,117,110,100,58,32,34,37,115,34,10,0,0,0,72,117,110,107,95,65,108,108,111,99,32,102,97,105,108,101,100,32,111,110,32,37,105,0,65,85,88,56,0,0,0,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,0,0,85,110,107,110,111,119,110,32,65,80,80,49,52,32,109,97,114,107,101,114,32,40,110,111,116,32,65,100,111,98,101,41,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,114,95,112,111,115,116,80,114,111,99,101,115,115,0,0,0,116,103,97,0,0,0,0,0,113,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,76,73,71,72,84,67,79,79,82,68,32,41,10,0,0,0,0,0,103,108,69,110,100,81,117,101,114,121,65,82,66,0,0,0,32,108,111,110,103,0,0,0,42,42,42,42,42,32,67,76,95,66,101,103,105,110,68,111,119,110,108,111,97,100,32,42,42,42,42,42,10,76,111,99,97,108,110,97,109,101,58,32,37,115,10,82,101,109,111,116,101,110,97,109,101,58,32,37,115,10,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,0,99,111,117,108,100,110,39,116,32,108,111,97,100,32,99,104,97,116,32,37,115,32,102,114,111,109,32,37,115,10,0,0,37,115,32,37,105,32,34,37,115,34,10,0,0,0,0,0,99,108,105,101,110,116,68,111,119,110,108,111,97,100,58,32,37,115,32,68,111,110,101,10,0,0,0,0,0,0,0,0,83,121,115,116,101,109,32,105,110,102,111,32,115,101,116,116,105,110,103,115,58,10,0,0,101,118,101,110,116,115,91,49,93,0,0,0,0,0,0,0,85,115,97,103,101,58,32,119,104,105,99,104,32,60,102,105,108,101,62,10,0,0,0,0,72,117,110,107,95,65,108,108,111,99,58,32,72,117,110,107,32,109,101,109,111,114,121,32,115,121,115,116,101,109,32,110,111,116,32,105,110,105,116,105,97,108,105,122,101,100,0,0,65,85,88,55,0,0,0,0,115,101,114,118,101,114,67,111,109,109,97,110,100,58,32,37,105,32,58,32,37,115,10,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,0,0,0,0,0,85,110,107,110,111,119,110,32,65,80,80,48,32,109,97,114,107,101,114,32,40,110,111,116,32,74,70,73,70,41,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,73,103,110,111,114,105,110,103,32,115,104,97,100,101,114,32,102,105,108,101,32,37,115,46,32,83,104,97,100,101,114,32,34,37,115,34,32,111,110,32,108,105,110,101,32,37,100,32,109,105,115,115,105,110,103,32,99,108,111,115,105,110,103,32,98,114,97,99,101,46,10,0,0,0,0,0,0,0,0,114,95,104,100,114,0,0,0,42,100,101,102,97,117,108,116,0,0,0,0,0,0,0,0,77,65,88,95,80,65,84,67,72,95,80,76,65,78,69,83,0,0,0,0,0,0,0,0,113,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,84,69,88,67,79,79,82,68,32,41,10,0,0,0,0,0,0,0,103,108,66,101,103,105,110,81,117,101,114,121,65,82,66,0,98,105,110,97,114,121,0,0,35,108,105,110,101,32,100,105,114,101,99,116,105,118,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,100,111,110,101,100,108,0,0,105,99,104,97,116,100,97,116,97,32,116,97,98,108,101,32,102,117,108,108,59,32,99,111,117,108,100,110,39,116,32,108,111,97,100,32,99,104,97,116,32,37,115,32,102,114,111,109,32,37,115,10,0,0,0,0,37,105,0,0,0,0,0,0,98,99,115,49,0,0,0,0,100,111,110,101,100,108,0,0,80,108,97,121,101,114,32,37,115,32,105,115,32,110,111,116,32,111,110,32,116,104,101,32,115,101,114,118,101,114,10,0,101,118,101,110,116,115,91,48,93,0,0,0,0,0,0,0,70,105,108,101,32,34,37,115,34,32,102,111,117,110,100,32,97,116,32,34,37,115,34,10,0,0,0,0,0,0,0,0,72,117,110,107,95,67,108,101,97,114,58,32,114,101,115,101,116,32,116,104,101,32,104,117,110,107,32,111,107,10,0,0,65,85,88,54,0,0,0,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,113,0,0,0,0,0,0,0,65,100,111,98,101,32,65,80,80,49,52,32,109,97,114,107,101,114,58,32,118,101,114,115,105,111,110,32,37,100,44,32,102,108,97,103,115,32,48,120,37,48,52,120,32,48,120,37,48,52,120,44,32,116,114,97,110,115,102,111,114,109,32,37,100,0,0,0,0,0,0,0,46,10,0,0,0,0,0,0,114,95,115,111,102,116,79,118,101,114,98,114,105,103,104,116,0,0,0,0,0,0,0,0,42,100,108,105,103,104,116,0,113,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,80,79,83,73,84,73,79,78,32,41,10,0,0,0,0,0,0,0,103,108,73,115,81,117,101,114,121,65,82,66,0,0,0,0,111,99,116,97,108,0,0,0,109,105,115,112,108,97,99,101,100,32,35,101,108,105,102,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,98,111,116,95,114,101,108,111,97,100,99,104,97,114,97,99,116,101,114,115,0,0,0,0,98,99,115,50,0,0,0,0,115,116,111,112,100,108,0,0,45,45,45,45,45,45,45,45,10,0,0,0,0,0,0,0,109,111,118,101,109,101,110,116,68,105,114,0,0,0,0,0,70,105,108,101,32,34,37,115,34,32,102,111,117,110,100,32,105,110,32,34,37,115,34,10,0,0,0,0,0,0,0,0,109,101,109,105,110,102,111,0,114,95,100,101,98,117,103,83,117,114,102,97,99,101,85,112,100,97,116,101,0,0,0,0,65,85,88,53,0,0,0,0,99,108,95,112,97,99,107,101,116,100,117,112,0,0,0,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,0,0,0,0,0,0,67,77,111,100,95,76,111,97,100,66,114,117,115,104,101,115,58,32,98,97,100,32,115,104,97,100,101,114,78,117,109,58,32,37,105,0,0,0,0,0,67,97,117,116,105,111,110,58,32,113,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,115,32,97,114,101,32,116,111,111,32,99,111,97,114,115,101,32,102,111,114,32,98,97,115,101,108,105,110,101,32,74,80,69,71,0,0,0,32,40,102,111,117,110,100,32,34,37,115,34,32,111,110,32,108,105,110,101,32,37,100,41,0,0,0,0,0,0,0,0,114,95,103,114,101,121,115,99,97,108,101,0,0,0,0,0,42,102,111,103,0,0,0,0,45,45,45,32,71,76,95,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,115,40,32,37,115,32,41,32,45,45,45,10,0,0,103,108,68,101,108,101,116,101,81,117,101,114,105,101,115,65,82,66,0,0,0,0,0,0,110,111,116,104,105,110,103,32,116,111,32,101,118,97,108,117,97,116,101,0,0,0,0,0,85,115,101,114,32,105,110,102,111,32,115,101,116,116,105,110,103,115,58,10,0,0,0,0,108,111,97,100,101,100,32,37,115,32,102,114,111,109,32,37,115,10,0,0,0,0,0,0,115,116,97,116,117,115,82,101,115,112,111,110,115,101,10,37,115,10,37,115,0,0,0,0,98,99,115,48,0,0,0,0,100,111,119,110,108,111,97,100,0,0,0,0,0,0,0,0,117,115,101,114,105,110,102,111,10,0,0,0,0,0,0,0,101,118,101,110,116,83,101,113,117,101,110,99,101,0,0,0,85,115,97,103,101,58,32,116,111,117,99,104,70,105,108,101,32,60,102,105,108,101,62,10,0,0,0,0,0,0,0,0,72,117,110,107,32,100,97,116,97,32,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,37,105,32,109,101,103,115,0,0,0,0,66,97,100,32,85,73,32,115,121,115,116,101,109,32,116,114,97,112,58,32,37,108,100,0,65,85,88,52,0,0,0,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,0,49,0,0,0,0,0,0,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,0,56,99,32,32,49,54,45,74,97,110,45,50,48,49,49,0,87,65,82,78,73,78,71,58,32,73,103,110,111,114,105,110,103,32,115,104,97,100,101,114,32,102,105,108,101,32,37,115,46,32,83,104,97,100,101,114,32,34,37,115,34,32,111,110,32,108,105,110,101,32,37,100,32,109,105,115,115,105,110,103,32,111,112,101,110,105,110,103,32,98,114,97,99,101,0,0,114,95,115,116,101,114,101,111,69,110,97,98,108,101,100,0,71,76,95,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,115,58,32,110,111,32,86,66,79,32,98,111,117,110,100,0,0,0,103,108,71,101,110,81,117,101,114,105,101,115,65,82,66,0,68,67,84,32,115,99,97,108,101,100,32,98,108,111,99,107,32,115,105,122,101,32,37,100,120,37,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,110,111,32,108,101,97,100,105,110,103,32,40,32,97,102,116,101,114,32,36,101,118,97,108,105,110,116,47,36,101,118,97,108,102,108,111,97,116,0,0,83,101,114,118,101,114,58,32,37,115,10,0,0,0,0,0,99,111,117,108,100,110,39,116,32,102,105,110,100,32,99,104,97,116,32,37,115,32,105,110,32,37,115,10,0,0,0,0,37,105,32,37,105,32,34,37,115,34,10,0,0,0,0,0,83,86,95,83,116,97,114,116,117,112,58,32,115,118,115,46,105,110,105,116,105,97,108,105,122,101,100,0,0,0,0,0,118,100,114,0,0,0,0,0,113,117,97,107,101,106,115,0,85,115,97,103,101,58,32,100,117,109,112,117,115,101,114,32,60,117,115,101,114,105,100,62,10,0,0,0,0,0,0,0,82,95,67,114,101,97,116,101,73,66,79,58,32,77,65,88,95,73,66,79,83,32,104,105,116,0,0,0,0,0,0,0,112,109,95,116,105,109,101,0,104,97,110,100,108,101,32,37,105,58,32,37,115,10,0,0,115,118,99,95,115,110,97,112,115,104,111,116,0,0,0,0,77,105,110,105,109,117,109,32,99,111,109,95,104,117,110,107,77,101,103,115,32,105,115,32,37,105,44,32,97,108,108,111,99,97,116,105,110,103,32,37,105,32,109,101,103,115,46,10,0,0,0,0,0,0,0,0,65,85,88,51,0,0,0,0,67,77,111,100,95,76,111,97,100,83,104,97,100,101,114,115,58,32,102,117,110,110,121,32,108,117,109,112,32,115,105,122,101,0,0,0,0,0,0,0,115,101,101,84,104,114,111,117,103,104,0,0,0,0,0,0,82,95,65,100,100,73,81,77,83,117,114,102,97,99,101,115,58,32,110,111,32,115,117,99,104,32,102,114,97,109,101,32,37,100,32,116,111,32,37,100,32,102,111,114,32,39,37,115,39,10,0,0,0,0,0,0,82,69,95,82,101,103,105,115,116,101,114,77,111,100,101,108,58,32,82,95,65,108,108,111,99,77,111,100,101,108,40,41,32,102,97,105,108,101,100,32,102,111,114,32,39,37,115,39,10,0,0,0,0,0,0,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,0,0,0,67,111,112,121,114,105,103,104,116,32,40,67,41,32,50,48,49,49,44,32,84,104,111,109,97,115,32,71,46,32,76,97,110,101,44,32,71,117,105,100,111,32,86,111,108,108,98,101,100,105,110,103,0,0,0,0,67,111,117,108,100,110,39,116,32,108,111,97,100,32,37,115,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,32,32,32,32,32,32,32,37,115,32,61,32,37,115,10,0,113,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,84,65,78,71,69,78,84,50,32,41,10,0,0,71,76,95,65,82,66,95,111,99,99,108,117,115,105,111,110,95,113,117,101,114,121,0,0,101,120,112,101,99,116,101,100,32,97,32,37,115,44,32,102,111,117,110,100,32,37,115,0,99,97,110,39,116,32,101,118,97,108,117,97,116,101,32,37,115,0,0,0,0,0,0,0,115,116,97,116,101,58,32,37,105,10,0,0,0,0,0,0,117,110,107,110,111,119,110,32,100,101,102,105,110,105,116,105,111,110,32,37,115,0,0,0,83,86,67,95,83,116,97,116,117,115,58,32,114,97,116,101,32,108,105,109,105,116,32,101,120,99,101,101,100,101,100,44,32,100,114,111,112,112,105,110,103,32,114,101,113,117,101,115,116,10,0,0,0,0,0,0,71,76,95,67,104,101,99,107,69,114,114,111,114,115,58,32,37,115,32,105,110,32,37,115,32,97,116,32,108,105,110,101,32,37,100,0,0,0,0,0,99,103,97,109,101,0,0,0,99,112,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,39,37,115,39,32,84,71,65,32,102,105,108,101,32,104,101,97,100,101,114,32,100,101,99,108,97,114,101,115,32,116,111,112,45,100,111,119,110,32,105,109,97,103,101,44,32,105,103,110,111,114,105,110,103,10,0,0,0,0,0,0,0,0,83,86,95,77,97,112,82,101,115,116,97,114,116,95,102,40,37,100,41,58,32,100,114,111,112,112,101,100,32,99,108,105,101,110,116,32,37,105,32,45,32,100,101,110,105,101,100,33,10,0,0,0,0,0,0,0,76,111,97,100,66,77,80,58,32,37,115,32,104,97,115,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,0,0,0,108,101,103,115,84,105,109,101,114,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,98,97,100,32,102,105,108,116,101,114,32,110,97,109,101,10,0,0,0,0,0,0,0,0,77,105,110,105,109,117,109,32,99,111,109,95,104,117,110,107,77,101,103,115,32,102,111,114,32,97,32,100,101,100,105,99,97,116,101,100,32,115,101,114,118,101,114,32,105,115,32,37,105,44,32,97,108,108,111,99,97,116,105,110,103,32,37,105,32,109,101,103,115,46,10,0,99,111,110,95,110,111,116,105,102,121,116,105,109,101,0,0,65,85,88,50,0,0,0,0,49,50,56,0,0,0,0,0,71,76,83,76,95,83,101,116,85,110,105,102,111,114,109,77,97,116,52,58,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,117,110,105,102,111,114,109,32,37,105,32,105,110,32,112,114,111,103,114,97,109,32,37,115,10,0,0,0,82,95,67,104,101,99,107,70,66,79,58,32,40,37,115,41,32,117,110,107,110,111,119,110,32,101,114,114,111,114,32,48,120,37,88,10,0,0,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,65,82,66,0,0,0,0,0,86,66,79,32,100,114,97,119,115,58,32,115,116,97,116,105,99,32,37,105,32,100,121,110,97,109,105,99,32,37,105,10,77,117,108,116,105,100,114,97,119,115,58,32,37,105,32,109,101,114,103,101,100,32,37,105,10,0,0,0,0,0,0,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,0,114,101,109,97,112,115,104,97,100,101,114,0,0,0,0,0,87,114,105,116,101,32,116,111,32,88,77,83,32,102,97,105,108,101,100,0,0,0,0,0,37,105,32,109,115,101,99,32,116,111,32,100,114,97,119,32,97,108,108,32,105,109,97,103,101,115,10,0,0,0,0,0,65,118,97,105,108,97,98,108,101,32,109,111,100,101,115,58,32,39,37,115,39,10,0,0,105,110,118,97,108,105,100,32,99,111,100,101,32,108,101,110,103,116,104,115,32,115,101,116,0,0,0,0,0,0,0,0,46,46,46,108,111,97,100,105,110,103,32,39,37,115,39,10,0,0,0,0,0,0,0,0,114,95,115,117,98,100,105,118,105,115,105,111,110,115,0,0,37,51,105,58,37,115,10,0,113,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,84,65,78,71,69,78,84,50,32,41,10,0,0,0,71,76,95,69,88,84,95,112,97,99,107,101,100,95,100,101,112,116,104,95,115,116,101,110,99,105,108,0,0,0,0,0,112,117,110,99,116,117,97,116,105,111,110,0,0,0,0,0,99,97,110,39,116,32,101,118,97,108,117,97,116,101,32,37,115,44,32,110,111,116,32,100,101,102,105,110,101,100,0,0,45,45,45,45,45,45,45,45,45,32,67,108,105,101,110,116,32,73,110,102,111,114,109,97,116,105,111,110,32,45,45,45,45,45,45,45,45,45,10,0,101,120,112,101,99,116,101,100,32,116,121,112,101,32,102,111,117,110,100,32,37,115,0,0,83,86,67,95,83,116,97,116,117,115,58,32,114,97,116,101,32,108,105,109,105,116,32,102,114,111,109,32,37,115,32,101,120,99,101,101,100,101,100,44,32,100,114,111,112,112,105,110,103,32,114,101,113,117,101,115,116,10,0,0,0,0,0,0,118,109,47,37,115,46,113,118,109,0,0,0,0,0,0,0,100,105,115,99,111,110,110,101,99,116,0,0,0,0,0,0,109,97,112,95,114,101,115,116,97,114,116,10,0,0,0,0,115,111,117,110,100,47,109,105,115,99,47,115,105,108,101,110,99,101,46,119,97,118,0,0,65,85,88,49,0,0,0,0,118,101,108,111,99,105,116,121,91,50,93,0,0,0,0,0,37,115,37,99,37,115,10,0,117,115,101,114,110,97,109,101,0,0,0,0,0,0,0,0,115,95,115,100,108,77,105,120,83,97,109,112,115,0,0,0,99,108,95,100,101,98,117,103,77,111,118,101,0,0,0,0,99,111,109,95,104,117,110,107,77,101,103,115,0,0,0,0,49,0,0,0,0,0,0,0,118,97,108,117,101,32,37,108,100,32,111,117,116,32,111,102,32,114,97,110,103,101,32,91,37,102,44,32,37,102,93,0,60,61,0,0,0,0,0,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,0,0,0,0,0,0,100,101,102,105,110,101,32,37,115,32,119,105,116,104,32,116,111,111,32,109,97,110,121,32,112,97,114,109,115,0,0,0,82,101,97,100,32,102,114,111,109,32,88,77,83,32,102,97,105,108,101,100,0,0,0,0,99,97,110,39,116,32,99,108,111,115,101,32,108,111,103,32,102,105,108,101,32,37,115,10,0,0,0,0,0,0,0,0,83,107,105,112,112,105,110,103,32,109,111,100,101,32,37,117,120,37,120,44,32,98,117,102,102,101,114,32,116,111,111,32,115,109,97,108,108,10,0,0,37,115,37,99,37,115,37,99,98,111,116,108,105,98,46,108,111,103,0,0,0,0,0,0,46,109,116,114,0,0,0,0,114,95,117,105,102,117,108,108,115,99,114,101,101,110,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,0,41,0,0,0,0,0,0,0,113,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,78,79,82,77,65,76,50,32,41,10,0,0,0,109,97,120,95,112,114,111,106,101,99,116,105,108,101,105,110,102,111,32,61,32,37,100,10,0,0,0,0,0,0,0,0,102,117,110,99,95,112,108,97,116,0,0,0,0,0,0,0,110,97,109,101,0,0,0,0,110,111,32,118,97,108,117,101,32,97,102,116,101,114,32,35,105,102,47,35,101,108,105,102,0,0,0,0,0,0,0,0,109,97,120,115,0,0,0,0,37,52,105,58,32,37,115,10,0,0,0,0,0,0,0,0,116,121,112,101,0,0,0,0,112,114,105,110,116,10,37,115,0,0,0,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,117,115,101,114,105,110,102,111,0,0,0,0,0,0,0,0,115,118,95,115,101,114,118,101,114,105,100,0,0,0,0,0,32,37,52,100,32,37,115,10,0,0,0,0,0,0,0,0,65,108,108,111,99,97,116,101,100,32,37,100,32,115,111,117,114,99,101,115,46,10,0,0,74,79,89,51,50,0,0,0,65,65,83,95,84,114,97,99,101,66,111,117,110,100,105,110,103,66,111,120,58,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,10,0,0,0,119,101,97,112,111,110,84,105,109,101,0,0,0,0,0,0,85,110,97,98,108,101,32,116,111,32,111,112,101,110,32,102,105,108,101,58,32,37,115,10,0,0,0,0,0,0,0,0,32,32,32,32,110,111,116,32,105,110,32,116,104,101,32,109,97,110,105,102,101,115,116,10,0,0,0,0,0,0,0,0,116,114,105,103,103,101,114,95,112,117,115,104,32,119,105,116,104,111,117,116,32,116,105,109,101,10,0,0,0,0,0,0,49,0,0,0,0,0,0,0,99,108,95,110,111,100,101,108,116,97,0,0,0,0,0,0,72,117,110,107,32,105,110,105,116,105,97,108,105,122,97,116,105,111,110,32,102,97,105,108,101,100,46,32,70,105,108,101,32,115,121,115,116,101,109,32,108,111,97,100,32,115,116,97,99,107,32,110,111,116,32,122,101,114,111,0,0,0,0,0,115,104,111,119,99,97,99,104,101,117,112,100,97,116,101,115,0,0,0,0,0,0,0,0,97,97,115,32,102,105,108,101,32,37,115,32,105,115,32,111,117,116,32,111,102,32,100,97,116,101,10,0,0,0,0,0,77,65,88,95,80,79,82,84,65,76,65,82,69,65,83,10,0,0,0,0,0,0,0,0,109,105,115,115,105,110,103,32,125,0,0,0,0,0,0,0,73,110,116,101,114,112,114,101,116,101,114,32,101,114,114,111,114,58,32,111,112,83,116,97,99,107,91,48,93,32,61,32,37,88,44,32,111,112,83,116,97,99,107,79,102,115,32,61,32,37,100,0,0,0,0,0,81,95,115,116,114,110,99,112,121,122,58,32,78,85,76,76,32,100,101,115,116,0,0,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,0,0,0,0,83,86,70,95,67,76,73,69,78,84,77,65,83,75,58,32,99,108,105,101,110,116,78,117,109,32,62,61,32,51,50,0,73,109,97,103,101,32,116,111,111,32,119,105,100,101,32,102,111,114,32,116,104,105,115,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,0,0,37,117,120,37,117,32,0,0,103,95,115,121,110,99,104,114,111,110,111,117,115,67,108,105,101,110,116,115,0,0,0,0,115,99,114,105,112,116,115,47,37,115,0,0,0,0,0,0,114,95,118,101,114,116,101,120,76,105,103,104,116,0,0,0,60,100,101,102,97,117,108,116,32,115,107,105,110,62,0,0,113,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,78,79,82,77,65,76,50,32,41,10,0,0,0,0,81,117,97,107,101,65,114,101,110,97,45,49,0,0,0,0,71,76,95,65,82,66,95,104,97,108,102,95,102,108,111,97,116,95,112,105,120,101,108,0,110,117,109,98,101,114,0,0,83,86,95,71,101,116,85,115,101,114,105,110,102,111,58,32,98,97,100,32,105,110,100,101,120,32,37,105,0,0,0,0,63,32,97,102,116,101,114,32,63,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,86,77,95,82,101,115,116,97,114,116,32,111,110,32,103,97,109,101,32,102,97,105,108,101,100,0,0,0,0,0,0,0,99,104,97,116,0,0,0,0,82,101,102,101,114,101,110,99,101,100,32,80,75,51,32,78,97,109,101,115,58,32,37,115,10,0,0,0,0,0,0,0,66,97,100,32,114,99,111,110,112,97,115,115,119,111,114,100,46,10,0,0,0,0,0,0,112,114,105,110,116,10,89,111,117,32,97,114,101,32,98,97,110,110,101,100,32,102,114,111,109,32,116,104,105,115,32,115,101,114,118,101,114,46,10,0,87,65,82,78,73,78,71,58,32,115,118,95,112,117,114,101,32,115,101,116,32,98,117,116,32,110,111,32,80,75,51,32,102,105,108,101,115,32,108,111,97,100,101,100,10,0,0,0,71,111,105,110,103,32,102,114,111,109,32,67,83,95,67,79,78,78,69,67,84,69,68,32,116,111,32,67,83,95,80,82,73,77,69,68,32,102,111,114,32,37,115,10,0,0,0,0,109,97,112,110,97,109,101,0,94,51,87,65,82,78,73,78,71,58,32,83,111,117,114,99,101,32,37,100,32,105,115,32,108,111,99,107,101,100,10,0,116,114,70,77,86,58,58,112,108,97,121,40,41,44,32,112,108,97,121,105,110,103,32,37,115,10,0,0,0,0,0,0,74,79,89,51,49,0,0,0,118,105,101,119,97,110,103,108,101,115,91,48,93,0,0,0,115,101,114,118,101,114,105,110,102,111,0,0,0,0,0,0,32,32,32,32,105,110,32,116,104,101,32,109,97,110,105,102,101,115,116,10,0,0,0,0,94,49,69,114,114,111,114,58,32,83,86,95,66,111,116,76,105,98,83,101,116,117,112,32,119,105,116,104,111,117,116,32,83,86,95,66,111,116,73,110,105,116,66,111,116,76,105,98,10,0,0,0,0,0,0,0,115,95,97,108,68,111,112,112,108,101,114,83,112,101,101,100,0,0,0,0,0,0,0,0,94,49,69,82,82,79,82,58,32,67,111,117,108,100,110,39,116,32,102,105,110,100,32,34,100,97,116,97,34,32,99,104,117,110,107,10,0,0,0,0,45,109,108,111,111,107,0,0,115,95,109,117,116,101,100,0,37,112,32,100,109,97,32,98,117,102,102,101,114,10,0,0,83,121,115,95,83,101,110,100,80,97,99,107,101,116,58,32,98,97,100,32,97,100,100,114,101,115,115,32,116,121,112,101,0,0,0,0,0,0,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,0,0,0,0,0,0,37,115,32,115,101,110,100,32,37,52,105,32,58,32,115,61,37,105,32,97,99,107,61,37,105,10,0,0,0,0,0,0,86,105,114,116,117,97,108,32,97,114,114,97,121,32,99,111,110,116,114,111,108,108,101,114,32,109,101,115,115,101,100,32,117,112,0,0,0,0,0,0,68,105,115,112,108,97,121,32,115,117,112,112,111,114,116,115,32,97,110,121,32,114,101,115,111,108,117,116,105,111,110,10,0,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,110,111,32,115,104,97,100,101,114,32,102,105,108,101,115,32,102,111,117,110,100,10,0,114,95,115,105,109,112,108,101,77,105,112,77,97,112,115,0,37,100,32,117,115,101,100,32,37,100,10,0,0,0,0,0,87,65,82,78,73,78,71,58,32,73,103,110,111,114,105,110,103,32,115,117,114,102,97,99,101,115,32,105,110,32,39,37,115,39,44,32,116,104,101,32,109,97,120,32,105,115,32,37,100,32,115,117,114,102,97,99,101,115,33,10,0,0,0,0,113,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,80,79,83,73,84,73,79,78,50,32,41,10,0,71,76,95,65,82,66,95,116,101,120,116,117,114,101,95,102,108,111,97,116,0,0,0,0,58,32,119,105,116,104,111,117,116,32,63,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,0,0,0,0,0,0,79,112,101,110,101,100,32,80,75,51,32,78,97,109,101,115,58,32,37,115,10,0,0,0,87,65,82,78,73,78,71,58,32,114,101,102,117,115,105,110,103,32,116,111,32,99,114,101,97,116,101,32,114,101,108,97,116,105,118,101,32,112,97,116,104,32,34,37,115,34,10,0,78,111,32,114,99,111,110,112,97,115,115,119,111,114,100,32,115,101,116,32,111,110,32,116,104,101,32,115,101,114,118,101,114,46,10,0,0,0,0,0,37,105,0,0,0,0,0,0,83,86,95,83,101,110,100,67,108,105,101,110,116,71,97,109,101,83,116,97,116,101,40,41,32,102,111,114,32,37,115,10,0,0,0,0,0,0,0,0,118,97,114,105,97,98,108,101,32,99,104,97,110,103,101,32,45,45,32,114,101,115,116,97,114,116,105,110,103,46,10,0,109,117,115,105,99,0,0,0,44,32,116,104,101,32,100,101,102,97,117,108,116,0,0,0,74,79,89,51,48,0,0,0,76,69,70,84,65,82,82,79,87,0,0,0,0,0,0,0,118,105,101,119,97,110,103,108,101,115,91,49,93,0,0,0,32,32,32,32,111,110,32,116,104,101,32,112,117,114,101,32,108,105,115,116,10,0,0,0,43,109,108,111,111,107,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,109,97,114,107,101,114,32,116,121,112,101,32,48,120,37,48,50,120,0,0,67,97,110,39,116,32,103,101,116,32,108,105,115,116,32,111,102,32,97,118,97,105,108,97,98,108,101,32,109,111,100,101,115,10,0,0,0,0,0,0,46,115,104,97,100,101,114,0,114,95,99,117,115,116,111,109,80,105,120,101,108,65,115,112,101,99,116,0,0,0,0,0,116,97,103,95,0,0,0,0,113,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,80,79,83,73,84,73,79,78,50,32,41,10,0,0,71,76,95,65,82,66,95,116,101,120,116,117,114,101,95,110,111,110,95,112,111,119,101,114,95,111,102,95,116,119,111,0,115,116,114,105,110,103,0,0,100,105,118,105,100,101,32,98,121,32,122,101,114,111,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,0,0,0,94,49,69,82,82,79,82,58,32,70,97,105,108,101,100,32,116,111,32,112,97,116,99,104,32,99,103,97,109,101,32,114,101,115,111,108,117,116,105,111,110,10,0,0,0,0,0,0,82,99,111,110,32,102,114,111,109,32,37,115,58,32,37,115,10,0,0,0,0,0,0,0,109,97,112,115,47,37,115,46,98,115,112,0,0,0,0,0,76,111,115,116,32,114,101,108,105,97,98,108,101,32,99,111,109,109,97,110,100,115,0,0,37,105,0,0,0,0,0,0,115,116,114,101,97,109,0,0,115,101,114,118,101,114,99,97,99,104,101,46,100,97,116,0,74,79,89,50,57,0,0,0,118,101,108,111,99,105,116,121,91,49,93,0,0,0,0,0,32,32,32,32,110,111,116,32,111,110,32,116,104,101,32,112,117,114,101,32,108,105,115,116,10,0,0,0,0,0,0,0,45,98,117,116,116,111,110,49,52,0,0,0,0,0,0,0,84,104,114,101,101,32,107,101,121,115,32,100,111,119,110,32,102,111,114,32,97,32,98,117,116,116,111,110,33,10,0,0,67,76,95,71,101,116,83,101,114,118,101,114,67,111,109,109,97,110,100,58,32,114,101,113,117,101,115,116,101,100,32,97,32,99,111,109,109,97,110,100,32,110,111,116,32,114,101,99,101,105,118,101,100,0,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,0,0,0,0,0,0,65,112,112,108,105,99,97,116,105,111,110,32,116,114,97,110,115,102,101,114,114,101,100,32,116,111,111,32,102,101,119,32,115,99,97,110,108,105,110,101,115,0,0,0,0,0,0,0,46,46,46,87,65,82,78,73,78,71,58,32,99,111,117,108,100,32,110,111,116,32,115,101,116,32,116,104,101,32,103,105,118,101,110,32,109,111,100,101,32,40,37,100,41,10,0,0,115,99,114,105,112,116,115,0,49,48,50,52,0,0,0,0,46,115,107,105,110,0,0,0,113,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,76,73,71,72,84,68,73,82,69,67,84,73,79,78,32,41,10,0,0,0,0,71,76,95,65,84,73,95,109,101,109,105,110,102,111,0,0,99,111,117,108,100,110,39,116,32,114,101,97,100,32,101,120,112,101,99,116,101,100,32,116,111,107,101,110,0,0,0,0,109,105,115,105,110,103,32,118,97,108,117,101,115,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,0,0,0,0,98,97,100,32,99,103,97,109,101,32,112,97,116,99,104,32,116,121,112,101,0,0,0,0,99,111,109,95,101,114,114,111,114,67,111,100,101,0,0,0,66,97,100,32,114,99,111,110,32,102,114,111,109,32,37,115,58,32,37,115,10,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,67,108,105,101,110,116,32,37,115,32,108,111,115,116,32,37,105,32,99,108,105,101,110,116,67,111,109,109,97,110,100,115,10,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,94,49,87,65,82,78,73,78,71,58,32,83,116,101,97,109,32,100,114,111,112,112,105,110,103,32,114,97,119,32,115,97,109,112,108,101,115,44,32,114,101,97,99,104,101,100,32,77,65,88,95,83,84,82,69,65,77,95,66,85,70,70,69,82,83,10,0,0,0,0,0,0,74,79,89,50,56,0,0,0,118,101,108,111,99,105,116,121,91,48,93,0,0,0,0,0,37,115,32,40,37,105,32,102,105,108,101,115,41,10,0,0,43,98,117,116,116,111,110,49,52,0,0,0,0,0,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,0,0,0,0,0,0,87,114,105,116,101,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,45,45,45,32,111,117,116,32,111,102,32,100,105,115,107,32,115,112,97,99,101,63,0,0,0,101,120,101,99,37,115,32,60,102,105,108,101,110,97,109,101,62,32,58,32,101,120,101,99,117,116,101,32,97,32,115,99,114,105,112,116,32,102,105,108,101,37,115,10,0,0,0,0,46,46,46,87,65,82,78,73,78,71,58,32,102,117,108,108,115,99,114,101,101,110,32,117,110,97,118,97,105,108,97,98,108,101,32,105,110,32,116,104,105,115,32,109,111,100,101,10,0,0,0,0,0,0,0,0,103,102,120,47,50,100,47,115,117,110,102,108,97,114,101,0,114,95,99,117,115,116,111,109,104,101,105,103,104,116,0,0,87,65,82,78,73,78,71,58,32,82,69,95,82,101,103,105,115,116,101,114,83,107,105,110,40,32,39,37,115,39,32,41,32,77,65,88,95,83,75,73,78,83,32,104,105,116,10,0,113,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,76,73,71,72,84,68,73,82,69,67,84,73,79,78,32,41,10,0,0,0,0,0,71,76,95,78,86,88,95,103,112,117,95,109,101,109,111,114,121,95,105,110,102,111,0,0,101,120,112,101,99,116,101,100,32,37,115,44,32,102,111,117,110,100,32,37,115,0,0,0,116,111,111,32,109,97,110,121,32,40,32,105,110,32,35,105,102,47,35,101,108,105,102,0,70,111,117,110,100,32,99,103,97,109,101,32,121,115,99,97,108,101,32,111,102,102,115,101,116,32,97,116,32,48,120,37,48,56,120,10,0,0,0,0,83,86,67,95,82,101,109,111,116,101,67,111,109,109,97,110,100,58,32,114,97,116,101,32,108,105,109,105,116,32,101,120,99,101,101,100,101,100,44,32,100,114,111,112,112,105,110,103,32,114,101,113,117,101,115,116,10,0,0,0,0,0,0,0,117,105,95,115,105,110,103,108,101,80,108,97,121,101,114,65,99,116,105,118,101,0,0,0,99,108,105,101,110,116,67,111,109,109,97,110,100,58,32,37,115,32,58,32,37,105,32,58,32,37,115,10,0,0,0,0,115,118,95,99,104,101,97,116,115,0,0,0,0,0,0,0,94,49,69,82,82,79,82,58,32,67,97,110,39,116,32,97,108,108,111,99,97,116,101,32,115,116,114,101,97,109,105,110,103,32,115,116,114,101,97,109,83,111,117,114,99,101,10,0,74,79,89,50,55,0,0,0,98,111,98,67,121,99,108,101,0,0,0,0,0,0,0,0,67,117,114,114,101,110,116,32,115,101,97,114,99,104,32,112,97,116,104,58,10,0,0,0,44,32,115,101,116,116,105,110,103,32,116,111,32,37,102,10,0,0,0,0,0,0,0,0,67,77,95,71,101,110,101,114,97,116,101,80,97,116,99,104,70,97,99,101,116,115,58,32,115,111,117,114,99,101,32,105,115,32,62,32,77,65,88,95,71,82,73,68,95,83,73,90,69,0,0,0,0,0,0,0,45,98,117,116,116,111,110,49,51,0,0,0,0,0,0,0,90,111,110,101,32,100,97,116,97,32,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,37,105,32,109,101,103,115,0,0,0,0,69,88,84,0,0,0,0,0,103,108,66,105,110,100,66,117,102,102,101,114,0,0,0,0,83,101,101,107,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,0,0,0,77,97,112,32,104,97,115,32,110,111,32,110,111,100,101,115,0,0,0,0,0,0,0,0,83,68,76,32,117,115,105,110,103,32,100,114,105,118,101,114,32,34,37,115,34,10,0,0,49,50,53,0,0,0,0,0,115,117,110,0,0,0,0,0,49,54,48,48,0,0,0,0,83,107,105,110,32,110,97,109,101,32,101,120,99,101,101,100,115,32,77,65,88,95,81,80,65,84,72,10,0,0,0,0,113,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,67,79,76,79,82,32,41,10,0,0,0,0,0,46,46,46,117,115,105,110,103,32,71,76,83,76,32,118,101,114,115,105,111,110,32,37,115,10,0,0,0,0,0,0,0,116,114,97,105,108,105,110,103,32,111,112,101,114,97,116,111,114,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,70,111,117,110,100,32,99,103,97,109,101,32,120,115,99,97,108,101,32,111,102,102,115,101,116,32,97,116,32,48,120,37,48,56,120,10,0,0,0,0,83,86,67,95,82,101,109,111,116,101,67,111,109,109,97,110,100,58,32,114,97,116,101,32,108,105,109,105,116,32,102,114,111,109,32,37,115,32,101,120,99,101,101,100,101,100,44,32,100,114,111,112,112,105,110,103,32,114,101,113,117,101,115,116,10,0,0,0,0,0,0,0,45,45,45,45,45,32,83,101,114,118,101,114,32,83,104,117,116,100,111,119,110,32,40,37,115,41,32,45,45,45,45,45,10,0,0,0,0,0,0,0,67,97,110,110,111,116,32,118,97,108,105,100,97,116,101,32,112,117,114,101,32,99,108,105,101,110,116,33,0,0,0,0,56,0,0,0,0,0,0,0,94,49,69,82,82,79,82,58,32,83,95,65,76,95,67,104,101,99,107,73,110,112,117,116,58,32,104,97,110,100,108,101,32,37,105,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,0,0,74,79,89,50,54,0,0,0,99,111,109,109,97,110,100,84,105,109,101,0,0,0,0,0,37,100,32,102,105,108,101,115,32,108,105,115,116,101,100,10,0,0,0,0,0,0,0,0,44,32,115,101,116,116,105,110,103,32,116,111,32,37,100,10,0,0,0,0,0,0,0,0,85,73,95,67], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+51204); +/* memory initializer */ allocate([73,78,95,80,108,97,121,67,105,110,101,109,97,116,105,99,10,0,0,0,74,80,69,71,77,69,77,0,82,69,67,79,82,68,73,78,71,32,37,115,58,32,37,105,107,0,0,0,0,0,0,0,43,98,117,116,116,111,110,49,51,0,0,0,0,0,0,0,50,52,0,0,0,0,0,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,0,0,0,103,114,97,112,104,115,99,97,108,101,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,0,0,0,0,0,82,101,97,100,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,0,0,0,83,68,76,95,73,110,105,116,40,32,83,68,76,95,73,78,73,84,95,86,73,68,69,79,32,41,32,70,65,73,76,69,68,32,40,37,115,41,10,0,102,108,97,114,101,83,104,97,100,101,114,0,0,0,0,0,114,95,99,117,115,116,111,109,119,105,100,116,104,0,0,0,69,109,112,116,121,32,110,97,109,101,32,112,97,115,115,101,100,32,116,111,32,82,69,95,82,101,103,105,115,116,101,114,83,107,105,110,10,0,0,0,113,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,67,79,76,79,82,32,41,10,0,0,0,0,0,0,37,100,46,37,100,0,0,0,68,67,84,32,99,111,101,102,102,105,99,105,101,110,116,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,99,97,110,39,116,32,114,101,97,100,32,116,111,107,101,110,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,37,115,32,105,110,32,35,105,102,47,35,101,108,105,102,0,110,111,32,114,99,104,97,116,115,10,0,0,0,0,0,0,94,49,69,82,82,79,82,58,32,70,97,105,108,101,100,32,116,111,32,112,97,116,99,104,32,117,105,32,114,101,115,111,108,117,116,105,111,110,10,0,98,97,100,32,99,111,110,110,101,99,116,105,111,110,108,101,115,115,32,112,97,99,107,101,116,32,102,114,111,109,32,37,115,58,10,37,115,10,0,0,100,105,115,99,111,110,110,101,99,116,32,34,37,115,34,0,37,115,58,32,100,105,100,110,39,116,32,103,101,116,32,99,112,32,99,111,109,109,97,110,100,44,32,114,101,115,101,110,100,105,110,103,32,103,97,109,101,115,116,97,116,101,10,0,32,37,100,32,37,100,10,0,115,118,95,109,97,120,99,108,105,101,110,116,115,0,0,0,69,82,82,79,82,58,32,83,95,65,76,95,67,104,101,99,107,73,110,112,117,116,58,32,98,97,100,32,101,110,116,105,116,121,110,117,109,32,37,105,0,0,0,0,0,0,0,0,83,121,115,95,83,116,114,105,110,103,84,111,83,111,99,107,97,100,100,114,58,32,69,114,114,111,114,32,114,101,115,111,108,118,105,110,103,32,37,115,58,32,37,115,10,0,0,0,74,79,89,50,53,0,0,0,82,95,67,114,101,97,116,101,73,66,79,58,32,34,37,115,34,32,105,115,32,116,111,111,32,108,111,110,103,0,0,0,32,40,37,105,32,98,105,116,115,41,10,0,0,0,0,0,101,120,97,109,112,108,101,58,32,102,100,105,114,32,42,113,51,100,109,42,46,98,115,112,10,0,0,0,0,0,0,0,32,111,117,116,32,111,102,32,114,97,110,103,101,32,40,109,97,120,32,37,102,41,0,0,115,118,99,95,100,111,119,110,108,111,97,100,0,0,0,0,45,98,117,116,116,111,110,49,50,0,0,0,0,0,0,0,99,111,109,95,122,111,110,101,77,101,103,115,0,0,0,0,100,101,99,97,108,0,0,0,82,95,76,111,97,100,73,81,77,58,32,37,115,32,104,97,115,32,37,100,32,112,111,115,101,115,32,97,110,100,32,37,100,32,106,111,105,110,116,115,44,32,109,117,115,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,114,32,48,32,112,111,115,101,115,10,0,77,111,100,101,108,32,110,97,109,101,32,101,120,99,101,101,100,115,32,77,65,88,95,81,80,65,84,72,10,0,0,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,99,114,101,97,116,101,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,0,0,0,0,0,46,46,46,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,32,110,111,116,32,102,111,117,110,100,10,0,112,114,111,106,101,99,116,105,111,110,83,104,97,100,111,119,0,0,0,0,0,0,0,0,114,95,110,111,98,111,114,100,101,114,0,0,0,0,0,0,51,46,48,0,0,0,0,0,113,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,84,65,78,71,69,78,84,32,41,10,0,0,0,71,76,95,65,82,66,95,115,104,97,100,105,110,103,95,108,97,110,103,117,97,103,101,95,49,48,48,0,0,0,0,0,112,114,105,109,105,116,105,118,101,32,116,111,107,101,110,32,108,111,110,103,101,114,32,116,104,97,110,32,77,65,88,95,84,79,75,69,78,32,61,32,37,100,0,0,0,0,0,0,111,117,116,32,111,102,32,111,112,101,114,97,116,111,114,32,115,112,97,99,101,0,0,0,62,0,0,0,0,0,0,0,98,97,100,32,117,105,32,112,97,116,99,104,32,116,121,112,101,0,0,0,0,0,0,0,100,105,115,99,111,110,110,101,99,116,0,0,0,0,0,0,37,105,0,0,0,0,0,0,112,114,105,110,116,32,34,37,115,10,34,10,0,0,0,0,99,109,100,67,111,117,110,116,32,62,32,77,65,88,95,80,65,67,75,69,84,95,85,83,69,82,67,77,68,83,10,0,76,111,97,100,84,71,65,58,32,105,108,108,101,103,97,108,32,112,105,120,101,108,95,115,105,122,101,32,39,37,100,39,32,105,110,32,102,105,108,101,32,39,37,115,39,0,0,0,103,95,100,111,87,97,114,109,117,112,0,0,0,0,0,0,76,111,97,100,66,77,80,58,32,105,108,108,101,103,97,108,32,112,105,120,101,108,95,115,105,122,101,32,39,37,104,117,39,32,105,110,32,102,105,108,101,32,39,37,115,39,0,0,94,51,87,65,82,78,73,78,71,58,32,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,115,111,117,114,99,101,32,102,111,114,32,108,111,111,112,32,115,102,120,32,37,100,32,111,110,32,101,110,116,105,116,121,32,37,100,10,0,0,0,0,0,0,83,121,115,95,83,116,114,105,110,103,84,111,83,111,99,107,97,100,100,114,58,32,69,114,114,111,114,32,114,101,115,111,108,118,105,110,103,32,37,115,58,32,78,111,32,97,100,100,114,101,115,115,32,111,102,32,114,101,113,117,105,114,101,100,32,116,121,112,101,32,102,111,117,110,100,46,10,0,0,0,74,79,89,50,52,0,0,0,37,115,58,37,102,32,0,0,117,115,97,103,101,58,32,102,100,105,114,32,60,102,105,108,116,101,114,62,10,0,0,0,32,111,117,116,32,111,102,32,114,97,110,103,101,32,40,109,97,120,32,37,100,41,0,0,82,101,102,117,115,105,110,103,32,116,111,32,115,101,116,32,116,114,105,108,105,110,101,97,114,32,111,110,32,97,32,118,111,111,100,111,111,46,10,0,116,120,116,0,0,0,0,0,43,98,117,116,116,111,110,49,50,0,0,0,0,0,0,0,83,109,97,108,108,32,122,111,110,101,32,100,97,116,97,32,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,37,49,46,49,102,32,109,101,103,115,0,0,0,71,76,83,76,95,83,101,116,85,110,105,102,111,114,109,70,108,111,97,116,53,58,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,117,110,105,102,111,114,109,32,37,105,32,105,110,32,112,114,111,103,114,97,109,32,37,115,10,0,82,95,67,104,101,99,107,70,66,79,58,32,40,37,115,41,32,70,114,97,109,101,98,117,102,102,101,114,32,105,110,99,111,109,112,108,101,116,101,44,32,109,105,115,115,105,110,103,32,114,101,97,100,32,98,117,102,102,101,114,10,0,0,0,71,76,95,65,82,66,95,118,101,114,116,101,120,95,112,114,111,103,114,97,109,0,0,0,102,108,97,114,101,32,97,100,100,115,58,37,105,32,116,101,115,116,115,58,37,105,32,114,101,110,100,101,114,115,58,37,105,10,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,0,0,0,0,0,48,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,83,79,83,32,98,101,102,111,114,101,32,83,79,70,0,0,0,0,0,113,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,32,37,105,44,32,37,105,58,32,37,105,32,109,115,101,99,10,0,0,0,0,0,0,0,46,46,46,105,103,110,111,114,105,110,103,32,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,10,0,0,116,111,111,32,109,97,110,121,32,108,101,110,103,116,104,32,111,114,32,100,105,115,116,97,110,99,101,32,115,121,109,98,111,108,115,0,0,0,0,0,73,110,105,116,105,97,108,105,122,105,110,103,32,83,104,97,100,101,114,115,10,0,0,0,114,95,102,117,108,108,115,99,114,101,101,110,0,0,0,0,48,46,53,0,0,0,0,0,113,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,84,65,78,71,69,78,84,32,41,10,0,0,0,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,65,82,66,0,0,66,111,103,117,115,32,109,101,115,115,97,103,101,32,99,111,100,101,32,37,100,0,0,0,105,110,118,97,108,105,100,32,111,112,101,114,97,116,111,114,32,37,115,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,0,0,0,0,0,0,70,111,117,110,100,32,117,105,32,98,105,97,115,32,111,102,102,115,101,116,32,97,116,32,48,120,37,48,56,120,10,0,114,99,111,110,0,0,0,0,114,101,104,97,115,104,98,97,110,115,10,0,0,0,0,0,99,109,100,67,111,117,110,116,32,60,32,49,10,0,0,0,115,112,0,0,0,0,0,0,99,111,100,101,47,99,108,105,101,110,116,47,115,110,100,95,111,112,101,110,97,108,46,99,0,0,0,0,0,0,0,0,72,111,115,116,110,97,109,101,58,32,37,115,10,0,0,0,74,79,89,50,51,0,0,0,37,115,58,37,105,32,0,0,37,115,10,0,0,0,0,0,32,111,117,116,32,111,102,32,114,97,110,103,101,32,40,109,105,110,32,37,102,41,0,0,101,109,115,99,114,105,112,116,101,110,32,0,0,0,0,0,115,95,115,100,108,68,101,118,83,97,109,112,115,0,0,0,45,98,117,116,116,111,110,49,49,0,0,0,0,0,0,0,67,111,109,95,84,111,117,99,104,77,101,109,111,114,121,58,32,37,105,32,109,115,101,99,10,0,0,0,0,0,0,0,105,110,95,109,111,117,115,101,0,0,0,0,0,0,0,0,118,97,108,117,101,32,37,108,100,32,111,117,116,32,111,102,32,114,97,110,103,101,32,91,37,108,100,44,32,37,108,100,93,0,0,0,0,0,0,0,62,61,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,52,102,118,0,0,0,0,40,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,116,119,111,32,83,79,73,32,109,97,114,107,101,114,115,0,0,0,0,79,112,101,110,101,100,32,108,111,103,32,37,115,10,0,0,46,46,46,117,115,105,110,103,32,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,32,40,109,97,120,58,32,37,105,41,10,0,0,0,98,97,115,101,103,97,109,101,0,0,0,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,0,45,50,0,0,0,0,0,0,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,80,111,115,105,116,105,111,110,59,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,59,10,10,117,110,105,102,111,114,109,32,109,97,116,52,32,32,32,117,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,59,10,10,118,97,114,121,105,110,103,32,118,101,99,50,32,32,32,118,97,114,95,84,101,120,49,59,10,10,10,118,111,105,100,32,109,97,105,110,40,41,10,123,10,9,103,108,95,80,111,115,105,116,105,111,110,32,61,32,117,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,32,42,32,118,101,99,52,40,97,116,116,114,95,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,10,9,118,97,114,95,84,101,120,49,32,61,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,46,115,116,59,10,125,10,0,0,0,0,114,95,103,97,109,109,97,0,44,0,0,0,0,0,0,0,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,117,95,68,105,102,102,117,115,101,77,97,112,59,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,32,32,32,117,95,67,111,108,111,114,59,10,10,118,97,114,121,105,110,103,32,118,101,99,50,32,32,32,32,32,32,118,97,114,95,84,101,120,49,59,10,10,10,118,111,105,100,32,109,97,105,110,40,41,10,123,10,9,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,117,95,68,105,102,102,117,115,101,77,97,112,44,32,118,97,114,95,84,101,120,49,41,32,42,32,117,95,67,111,108,111,114,59,10,125,10,0,113,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,78,79,82,77,65,76,32,41,10,0,0,0,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,65,82,66,0,0,0,0,109,97,120,95,112,114,111,106,101,99,116,105,108,101,105,110,102,111,0,0,0,0,0,0,102,117,110,99,95,98,111,98,98,105,110,103,0,0,0,0,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,59,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,71,69,78,41,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,97,116,116,114,95,84,101,120,67,111,111,114,100,49,59,10,35,101,110,100,105,102,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,97,116,116,114,95,67,111,108,111,114,59,10,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,80,111,115,105,116,105,111,110,59,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,78,111,114,109,97,108,59,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,41,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,97,116,116,114,95,84,97,110,103,101,110,116,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,69,88,95,65,78,73,77,65,84,73,79,78,41,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,80,111,115,105,116,105,111,110,50,59,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,78,111,114,109,97,108,50,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,41,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,97,116,116,114,95,84,97,110,103,101,110,116,50,59,10,32,32,35,101,110,100,105,102,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,67,84,79,82,41,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,76,105,103,104,116,68,105,114,101,99,116,105,111,110,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,76,85,88,69,77,65,80,41,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,69,110,97,98,108,101,84,101,120,116,117,114,101,115,59,32,47,47,32,120,32,61,32,110,111,114,109,97,108,44,32,121,32,61,32,100,101,108,117,120,101,44,32,122,32,61,32,115,112,101,99,117,108,97,114,44,32,119,32,61,32,99,117,98,101,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,86,105,101,119,79,114,105,103,105,110,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,71,69,78,41,10,117,110,105,102,111,114,109,32,105,110,116,32,32,32,32,117,95,84,67,71,101,110,48,59,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,84,67,71,101,110,48,86,101,99,116,111,114,48,59,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,84,67,71,101,110,48,86,101,99,116,111,114,49,59,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,76,111,99,97,108,86,105,101,119,79,114,105,103,105,110,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,77,79,68,41,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,68,105,102,102,117,115,101,84,101,120,77,97,116,114,105,120,59,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,68,105,102,102,117,115,101,84,101,120,79,102,102,84,117,114,98,59,10,35,101,110,100,105,102,10,10,117,110,105,102,111,114,109,32,109,97,116,52,32,32,32,117,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,59,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,66,97,115,101,67,111,108,111,114,59,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,86,101,114,116,67,111,108,111,114,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,77,79,68,69,76,77,65,84,82,73,88,41,10,117,110,105,102,111,114,109,32,109,97,116,52,32,32,32,117,95,77,111,100,101,108,77,97,116,114,105,120,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,69,88,95,65,78,73,77,65,84,73,79,78,41,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,117,95,86,101,114,116,101,120,76,101,114,112,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,67,84,79,82,41,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,76,105,103,104,116,79,114,105,103,105,110,59,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,117,95,76,105,103,104,116,82,97,100,105,117,115,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,68,105,114,101,99,116,101,100,76,105,103,104,116,59,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,65,109,98,105,101,110,116,76,105,103,104,116,59,10,32,32,35,101,110,100,105,102,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,80,82,73,77,65,82,89,95,76,73,71,72,84,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,83,72,65,68,79,87,77,65,80,41,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,117,95,80,114,105,109,97,114,121,76,105,103,104,116,79,114,105,103,105,110,59,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,117,95,80,114,105,109,97,114,121,76,105,103,104,116,82,97,100,105,117,115,59,10,35,101,110,100,105,102,10,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,84,101,120,67,111,111,114,100,115,59,10,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,67,111,108,111,114,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,41,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,78,111,114,109,97,108,59,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,84,97,110,103,101,110,116,59,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,66,105,116,97,110,103,101,110,116,59,10,32,32,35,101,108,115,101,10,118,97,114,121,105,110,103,32,118,101,99,51,32,32,32,118,97,114,95,78,111,114,109,97,108,59,10,118,97,114,121,105,110,103,32,118,101,99,51,32,32,32,118,97,114,95,86,105,101,119,68,105,114,59,10,32,32,35,101,110,100,105,102,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,82,84,69,88,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,118,97,114,121,105,110,103,32,118,101,99,51,32,32,32,118,97,114,95,76,105,103,104,116,67,111,108,111,114,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,76,105,103,104,116,68,105,114,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,80,82,73,77,65,82,89,95,76,73,71,72,84,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,83,72,65,68,79,87,77,65,80,41,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,80,114,105,109,97,114,121,76,105,103,104,116,68,105,114,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,71,69,78,41,10,118,101,99,50,32,71,101,110,84,101,120,67,111,111,114,100,115,40,105,110,116,32,84,67,71,101,110,44,32,118,101,99,51,32,112,111,115,105,116,105,111,110,44,32,118,101,99,51,32,110,111,114,109,97,108,44,32,118,101,99,51,32,84,67,71,101,110,86,101,99,116,111,114,48,44,32,118,101,99,51,32,84,67,71,101,110,86,101,99,116,111,114,49,41,10,123,10,9,118,101,99,50,32,116,101,120,32,61,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,46,115,116,59,10,10,9,105,102,32,40,84,67,71,101,110,32,61,61,32,84,67,71,69,78,95,76,73,71,72,84,77,65,80,41,10,9,123,10,9,9,116,101,120,32,61,32,97,116,116,114,95,84,101,120,67,111,111,114,100,49,46,115,116,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,84,67,71,101,110,32,61,61,32,84,67,71,69,78,95,69,78,86,73,82,79,78,77,69,78,84,95,77,65,80,80,69,68,41,10,9,123,10,9,9,118,101,99,51,32,118,105,101,119,101,114,32,61,32,110,111,114,109,97,108,105,122,101,40,117,95,76,111,99,97,108,86,105,101,119,79,114,105,103,105,110,32,45,32,112,111,115,105,116,105,111,110,41,59,10,9,9,118,101,99,50,32,114,101,102,32,61,32,114,101,102,108,101,99,116,40,118,105,101,119,101,114,44,32,110,111,114,109,97,108,41,46,121,122,59,10,9,9,116,101,120,46,115,32,61,32,114,101,102,46,120,32,42,32,45,48,46,53,32,43,32,48,46,53,59,10,9,9,116,101,120,46,116,32,61,32,114,101,102,46,121,32,42,32,32,48,46,53,32,43,32,48,46,53,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,84,67,71,101,110,32,61,61,32,84,67,71,69,78,95,86,69,67,84,79,82,41,10,9,123,10,9,9,116,101,120,32,61,32,118,101,99,50,40,100,111,116,40,112,111,115,105,116,105,111,110,44,32,84,67,71,101,110,86,101,99,116,111,114,48,41,44,32,100,111,116,40,112,111,115,105,116,105,111,110,44,32,84,67,71,101,110,86,101,99,116,111,114,49,41,41,59,10,9,125,10,10,9,114,101,116,117,114,110,32,116,101,120,59,10,125,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,77,79,68,41,10,118,101,99,50,32,77,111,100,84,101,120,67,111,111,114,100,115,40,118,101,99,50,32,115,116,44,32,118,101,99,51,32,112,111,115,105,116,105,111,110,44,32,118,101,99,52,32,116,101,120,77,97,116,114,105,120,44,32,118,101,99,52,32,111,102,102,84,117,114,98,41,10,123,10,9,102,108,111,97,116,32,97,109,112,108,105,116,117,100,101,32,61,32,111,102,102,84,117,114,98,46,122,59,10,9,102,108,111,97,116,32,112,104,97,115,101,32,61,32,111,102,102,84,117,114,98,46,119,32,42,32,50,46,48,32,42,32,77,95,80,73,59,10,9,118,101,99,50,32,115,116,50,59,10,9,115,116,50,46,120,32,61,32,115,116,46,120,32,42,32,116,101,120,77,97,116,114,105,120,46,120,32,43,32,40,115,116,46,121,32,42,32,116,101,120,77,97,116,114,105,120,46,122,32,43,32,111,102,102,84,117,114,98,46,120,41,59,10,9,115,116,50,46,121,32,61,32,115,116,46,120,32,42,32,116,101,120,77,97,116,114,105,120,46,121,32,43,32,40,115,116,46,121,32,42,32,116,101,120,77,97,116,114,105,120,46,119,32,43,32,111,102,102,84,117,114,98,46,121,41,59,10,10,9,118,101,99,50,32,111,102,102,115,101,116,80,111,115,32,61,32,118,101,99,50,40,112,111,115,105,116,105,111,110,46,120,32,43,32,112,111,115,105,116,105,111,110,46,122,44,32,112,111,115,105,116,105,111,110,46,121,41,59,10,10,9,118,101,99,50,32,116,101,120,79,102,102,115,101,116,32,61,32,115,105,110,40,111,102,102,115,101,116,80,111,115,32,42,32,40,50,46,48,32,42,32,77,95,80,73,32,47,32,49,48,50,52,46,48,41,32,43,32,118,101,99,50,40,112,104,97,115,101,41,41,59,10,10,9,114,101,116,117,114,110,32,115,116,50,32,43,32,116,101,120,79,102,102,115,101,116,32,42,32,97,109,112,108,105,116,117,100,101,59,9,10,125,10,35,101,110,100,105,102,10,10,10,102,108,111,97,116,32,67,97,108,99,76,105,103,104,116,65,116,116,101,110,117,97,116,105,111,110,40,102,108,111,97,116,32,112,111,105,110,116,44,32,102,108,111,97,116,32,110,111,114,109,68,105,115,116,41,10,123,10,9,47,47,32,122,101,114,111,32,108,105,103,104,116,32,97,116,32,49,46,48,44,32,97,112,112,114,111,120,105,109,97,116,105,110,103,32,113,51,32,115,116,121,108,101,10,9,47,47,32,97,108,115,111,32,100,111,110,39,116,32,97,116,116,101,110,117,97,116,101,32,100,105,114,101,99,116,105,111,110,97,108,32,108,105,103,104,116,10,9,102,108,111,97,116,32,97,116,116,101,110,117,97,116,105,111,110,32,61,32,40,48,46,53,32,42,32,110,111,114,109,68,105,115,116,32,45,32,49,46,53,41,32,42,32,112,111,105,110,116,32,43,32,49,46,48,59,10,10,9,47,47,32,99,108,97,109,112,32,97,116,116,101,110,117,97,116,105,111,110,10,9,35,105,102,32,100,101,102,105,110,101,100,40,78,79,95,76,73,71,72,84,95,67,76,65,77,80,41,10,9,97,116,116,101,110,117,97,116,105,111,110,32,61,32,109,97,120,40,97,116,116,101,110,117,97,116,105,111,110,44,32,48,46,48,41,59,10,9,35,101,108,115,101,10,9,97,116,116,101,110,117,97,116,105,111,110,32,61,32,99,108,97,109,112,40,97,116,116,101,110,117,97,116,105,111,110,44,32,48,46,48,44,32,49,46,48,41,59,10,9,35,101,110,100,105,102,10,10,9,114,101,116,117,114,110,32,97,116,116,101,110,117,97,116,105,111,110,59,10,125,10,10,10,118,111,105,100,32,109,97,105,110,40,41,10,123,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,69,88,95,65,78,73,77,65,84,73,79,78,41,10,9,118,101,99,51,32,112,111,115,105,116,105,111,110,32,32,61,32,109,105,120,40,97,116,116,114,95,80,111,115,105,116,105,111,110,44,32,32,32,32,97,116,116,114,95,80,111,115,105,116,105,111,110,50,44,32,32,32,32,117,95,86,101,114,116,101,120,76,101,114,112,41,59,10,9,118,101,99,51,32,110,111,114,109,97,108,32,32,32,32,61,32,109,105,120,40,97,116,116,114,95,78,111,114,109,97,108,44,32,32,32,32,32,32,97,116,116,114,95,78,111,114,109,97,108,50,44,32,32,32,32,32,32,117,95,86,101,114,116,101,120,76,101,114,112,41,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,41,32,38,38,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,9,118,101,99,51,32,116,97,110,103,101,110,116,32,32,32,61,32,109,105,120,40,97,116,116,114,95,84,97,110,103,101,110,116,46,120,121,122,44,32,97,116,116,114,95,84,97,110,103,101,110,116,50,46,120,121,122,44,32,117,95,86,101,114,116,101,120,76,101,114,112,41,59,10,32,32,35,101,110,100,105,102,10,35,101,108,115,101,10,9,118,101,99,51,32,112,111,115,105,116,105,111,110,32,32,61,32,97,116,116,114,95,80,111,115,105,116,105,111,110,59,10,9,118,101,99,51,32,110,111,114,109,97,108,32,32,32,32,61,32,97,116,116,114,95,78,111,114,109,97,108,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,41,32,38,38,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,9,118,101,99,51,32,116,97,110,103,101,110,116,32,32,32,61,32,97,116,116,114,95,84,97,110,103,101,110,116,46,120,121,122,59,10,32,32,35,101,110,100,105,102,10,35,101,110,100,105,102,10,10,9,110,111,114,109,97,108,32,32,61,32,110,111,114,109,97,108,32,32,42,32,50,46,48,32,45,32,118,101,99,51,40,49,46,48,41,59,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,41,32,38,38,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,9,116,97,110,103,101,110,116,32,61,32,116,97,110,103,101,110,116,32,42,32,50,46,48,32,45,32,118,101,99,51,40,49,46,48,41,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,71,69,78,41,10,9,118,101,99,50,32,116,101,120,67,111,111,114,100,115,32,61,32,71,101,110,84,101,120,67,111,111,114,100,115,40,117,95,84,67,71,101,110,48,44,32,112,111,115,105,116,105,111,110,44,32,110,111,114,109,97,108,44,32,117,95,84,67,71,101,110,48,86,101,99,116,111,114,48,44,32,117,95,84,67,71,101,110,48,86,101,99,116,111,114,49,41,59,10,35,101,108,115,101,10,9,118,101,99,50,32,116,101,120,67,111,111,114,100,115,32,61,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,46,115,116,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,77,79,68,41,10,9,118,97,114,95,84,101,120,67,111,111,114,100,115,46,120,121,32,61,32,77,111,100,84,101,120,67,111,111,114,100,115,40,116,101,120,67,111,111,114,100,115,44,32,112,111,115,105,116,105,111,110,44,32,117,95,68,105,102,102,117,115,101,84,101,120,77,97,116,114,105,120,44,32,117,95,68,105,102,102,117,115,101,84,101,120,79,102,102,84,117,114,98,41,59,10,35,101,108,115,101,10,9,118,97,114,95,84,101,120,67,111,111,114,100,115,46,120,121,32,61,32,116,101,120,67,111,111,114,100,115,59,10,35,101,110,100,105,102,10,10,9,103,108,95,80,111,115,105,116,105,111,110,32,61,32,117,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,32,42,32,118,101,99,52,40,112,111,115,105,116,105,111,110,44,32,49,46,48,41,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,77,79,68,69,76,77,65,84,82,73,88,41,10,9,112,111,115,105,116,105,111,110,32,32,61,32,40,117,95,77,111,100,101,108,77,97,116,114,105,120,32,42,32,118,101,99,52,40,112,111,115,105,116,105,111,110,44,32,49,46,48,41,41,46,120,121,122,59,10,9,110,111,114,109,97,108,32,32,32,32,61,32,40,117,95,77,111,100,101,108,77,97,116,114,105,120,32,42,32,118,101,99,52,40,110,111,114,109,97,108,44,32,32,32,48,46,48,41,41,46,120,121,122,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,41,32,38,38,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,9,116,97,110,103,101,110,116,32,32,32,61,32,40,117,95,77,111,100,101,108,77,97,116,114,105,120,32,42,32,118,101,99,52,40,116,97,110,103,101,110,116,44,32,32,48,46,48,41,41,46,120,121,122,59,10,32,32,35,101,110,100,105,102,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,41,32,38,38,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,9,118,101,99,51,32,98,105,116,97,110,103,101,110,116,32,61,32,99,114,111,115,115,40,110,111,114,109,97,108,44,32,116,97,110,103,101,110,116,41,32,42,32,40,97,116,116,114,95,84,97,110,103,101,110,116,46,119,32,42,32,50,46,48,32,45,32,49,46,48,41,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,67,84,79,82,41,10,9,118,101,99,51,32,76,32,61,32,117,95,76,105,103,104,116,79,114,105,103,105,110,46,120,121,122,32,45,32,40,112,111,115,105,116,105,111,110,32,42,32,117,95,76,105,103,104,116,79,114,105,103,105,110,46,119,41,59,10,35,101,108,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,9,118,101,99,51,32,76,32,61,32,97,116,116,114,95,76,105,103,104,116,68,105,114,101,99,116,105,111,110,32,42,32,50,46,48,32,45,32,118,101,99,51,40,49,46,48,41,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,77,79,68,69,76,77,65,84,82,73,88,41,10,9,76,32,61,32,40,117,95,77,111,100,101,108,77,97,116,114,105,120,32,42,32,118,101,99,52,40,76,44,32,48,46,48,41,41,46,120,121,122,59,10,32,32,35,101,110,100,105,102,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,10,9,118,97,114,95,84,101,120,67,111,111,114,100,115,46,122,119,32,61,32,97,116,116,114,95,84,101,120,67,111,111,114,100,49,46,115,116,59,10,35,101,110,100,105,102,10,10,9,118,97,114,95,67,111,108,111,114,32,61,32,117,95,86,101,114,116,67,111,108,111,114,32,42,32,97,116,116,114,95,67,111,108,111,114,32,43,32,117,95,66,97,115,101,67,111,108,111,114,59,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,82,84,69,88,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,9,118,97,114,95,76,105,103,104,116,67,111,108,111,114,32,61,32,118,97,114,95,67,111,108,111,114,46,114,103,98,59,10,9,118,97,114,95,67,111,108,111,114,46,114,103,98,32,61,32,118,101,99,51,40,49,46,48,41,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,67,84,79,82,41,32,38,38,32,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,9,102,108,111,97,116,32,115,113,114,76,105,103,104,116,68,105,115,116,32,61,32,100,111,116,40,76,44,32,76,41,59,10,9,102,108,111,97,116,32,97,116,116,101,110,117,97,116,105,111,110,32,61,32,67,97,108,99,76,105,103,104,116,65,116,116,101,110,117,97,116,105,111,110,40,117,95,76,105,103,104,116,79,114,105,103,105,110,46,119,44,32,117,95,76,105,103,104,116,82,97,100,105,117,115,32,42,32,117,95,76,105,103,104,116,82,97,100,105,117,115,32,47,32,115,113,114,76,105,103,104,116,68,105,115,116,41,59,10,9,102,108,111,97,116,32,78,76,32,61,32,99,108,97,109,112,40,100,111,116,40,110,111,114,109,97,108,105,122,101,40,110,111,114,109,97,108,41,44,32,76,41,32,47,32,115,113,114,116,40,115,113,114,76,105,103,104,116,68,105,115,116,41,44,32,48,46,48,44,32,49,46,48,41,59,10,10,9,118,97,114,95,67,111,108,111,114,46,114,103,98,32,42,61,32,117,95,68,105,114,101,99,116,101,100,76,105,103,104,116,32,42,32,40,97,116,116,101,110,117,97,116,105,111,110,32,42,32,78,76,41,32,43,32,117,95,65,109,98,105,101,110,116,76,105,103,104,116,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,80,82,73,77,65,82,89,95,76,73,71,72,84,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,83,72,65,68,79,87,77,65,80,41,10,9,118,97,114,95,80,114,105,109,97,114,121,76,105,103,104,116,68,105,114,46,120,121,122,32,61,32,117,95,80,114,105,109,97,114,121,76,105,103,104,116,79,114,105,103,105,110,46,120,121,122,32,45,32,40,112,111,115,105,116,105,111,110,32,42,32,117,95,80,114,105,109,97,114,121,76,105,103,104,116,79,114,105,103,105,110,46,119,41,59,10,9,118,97,114,95,80,114,105,109,97,114,121,76,105,103,104,116,68,105,114,46,119,32,61,32,117,95,80,114,105,109,97,114,121,76,105,103,104,116,82,97,100,105,117,115,32,42,32,117,95,80,114,105,109,97,114,121,76,105,103,104,116,82,97,100,105,117,115,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,67,84,79,82,41,10,9,118,97,114,95,76,105,103,104,116,68,105,114,32,61,32,118,101,99,52,40,76,44,32,117,95,76,105,103,104,116,82,97,100,105,117,115,32,42,32,117,95,76,105,103,104,116,82,97,100,105,117,115,41,59,10,32,32,35,101,108,115,101,10,9,118,97,114,95,76,105,103,104,116,68,105,114,32,61,32,118,101,99,52,40,76,44,32,48,46,48,41,59,10,32,32,35,101,110,100,105,102,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,76,85,88,69,77,65,80,41,10,9,118,97,114,95,76,105,103,104,116,68,105,114,32,45,61,32,117,95,69,110,97,98,108,101,84,101,120,116,117,114,101,115,46,121,32,42,32,118,97,114,95,76,105,103,104,116,68,105,114,59,10,32,32,35,101,110,100,105,102,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,9,118,101,99,51,32,118,105,101,119,68,105,114,32,61,32,117,95,86,105,101,119,79], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+61444); +/* memory initializer */ allocate([114,105,103,105,110,32,45,32,112,111,115,105,116,105,111,110,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,41,10,9,47,47,32,115,116,111,114,101,32,118,105,101,119,32,100,105,114,101,99,116,105,111,110,32,105,110,32,116,97,110,103,101,110,116,32,115,112,97,99,101,32,116,111,32,115,97,118,101,32,111,110,32,118,97,114,121,105,110,103,115,10,9,118,97,114,95,78,111,114,109,97,108,32,32,32,32,61,32,118,101,99,52,40,110,111,114,109,97,108,44,32,32,32,32,118,105,101,119,68,105,114,46,120,41,59,10,9,118,97,114,95,84,97,110,103,101,110,116,32,32,32,61,32,118,101,99,52,40,116,97,110,103,101,110,116,44,32,32,32,118,105,101,119,68,105,114,46,121,41,59,10,9,118,97,114,95,66,105,116,97,110,103,101,110,116,32,61,32,118,101,99,52,40,98,105,116,97,110,103,101,110,116,44,32,118,105,101,119,68,105,114,46,122,41,59,10,32,32,35,101,108,115,101,10,9,118,97,114,95,78,111,114,109,97,108,32,61,32,110,111,114,109,97,108,59,10,9,118,97,114,95,86,105,101,119,68,105,114,32,61,32,118,105,101,119,68,105,114,59,10,32,32,35,101,110,100,105,102,10,35,101,110,100,105,102,10,125,10,0,0,0,0,0,0,0,111,112,101,114,97,116,111,114,32,37,115,32,97,102,116,101,114,32,111,112,101,114,97,116,111,114,32,105,110,32,35,105,102,47,35,101,108,105,102,0,109,105,110,115,0,0,0,0,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,117,95,68,105,102,102,117,115,101,77,97,112,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,117,95,76,105,103,104,116,77,97,112,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,78,79,82,77,65,76,77,65,80,41,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,117,95,78,111,114,109,97,108,77,97,112,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,76,85,88,69,77,65,80,41,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,117,95,68,101,108,117,120,101,77,97,112,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,83,80,69,67,85,76,65,82,77,65,80,41,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,117,95,83,112,101,99,117,108,97,114,77,97,112,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,83,72,65,68,79,87,77,65,80,41,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,117,95,83,104,97,100,111,119,77,97,112,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,67,85,66,69,77,65,80,41,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,67,117,98,101,32,117,95,67,117,98,101,77,97,112,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,78,79,82,77,65,76,77,65,80,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,76,85,88,69,77,65,80,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,83,80,69,67,85,76,65,82,77,65,80,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,67,85,66,69,77,65,80,41,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,32,32,32,117,95,69,110,97,98,108,101,84,101,120,116,117,114,101,115,59,32,47,47,32,120,32,61,32,110,111,114,109,97,108,44,32,121,32,61,32,100,101,108,117,120,101,44,32,122,32,61,32,115,112,101,99,117,108,97,114,44,32,119,32,61,32,99,117,98,101,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,67,84,79,82,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,32,32,32,117,95,68,105,114,101,99,116,101,100,76,105,103,104,116,59,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,32,32,32,117,95,65,109,98,105,101,110,116,76,105,103,104,116,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,80,82,73,77,65,82,89,95,76,73,71,72,84,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,83,72,65,68,79,87,77,65,80,41,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,117,95,80,114,105,109,97,114,121,76,105,103,104,116,67,111,108,111,114,59,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,117,95,80,114,105,109,97,114,121,76,105,103,104,116,65,109,98,105,101,110,116,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,117,110,105,102,111,114,109,32,118,101,99,50,32,32,32,32,32,32,117,95,77,97,116,101,114,105,97,108,73,110,102,111,59,10,35,101,110,100,105,102,10,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,32,32,32,118,97,114,95,84,101,120,67,111,111,114,100,115,59,10,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,32,32,32,118,97,114,95,67,111,108,111,114,59,10,10,35,105,102,32,40,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,41,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,41,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,78,111,114,109,97,108,59,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,84,97,110,103,101,110,116,59,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,66,105,116,97,110,103,101,110,116,59,10,32,32,35,101,108,115,101,10,118,97,114,121,105,110,103,32,118,101,99,51,32,32,32,118,97,114,95,78,111,114,109,97,108,59,10,118,97,114,121,105,110,103,32,118,101,99,51,32,32,32,118,97,114,95,86,105,101,119,68,105,114,59,10,32,32,35,101,110,100,105,102,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,82,84,69,88,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,118,97,114,121,105,110,103,32,118,101,99,51,32,32,32,32,32,32,118,97,114,95,76,105,103,104,116,67,111,108,111,114,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,32,32,32,118,97,114,95,76,105,103,104,116,68,105,114,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,80,82,73,77,65,82,89,95,76,73,71,72,84,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,83,72,65,68,79,87,77,65,80,41,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,32,32,32,118,97,114,95,80,114,105,109,97,114,121,76,105,103,104,116,68,105,114,59,10,35,101,110,100,105,102,10,10,10,35,100,101,102,105,110,101,32,69,80,83,73,76,79,78,32,48,46,48,48,48,48,48,48,48,49,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,80,65,82,65,76,76,65,88,77,65,80,41,10,102,108,111,97,116,32,83,97,109,112,108,101,68,101,112,116,104,40,115,97,109,112,108,101,114,50,68,32,110,111,114,109,97,108,77,97,112,44,32,118,101,99,50,32,116,41,10,123,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,83,87,73,90,90,76,69,95,78,79,82,77,65,76,77,65,80,41,10,9,114,101,116,117,114,110,32,49,46,48,32,45,32,116,101,120,116,117,114,101,50,68,40,110,111,114,109,97,108,77,97,112,44,32,116,41,46,114,59,10,32,32,35,101,108,115,101,10,9,114,101,116,117,114,110,32,49,46,48,32,45,32,116,101,120,116,117,114,101,50,68,40,110,111,114,109,97,108,77,97,112,44,32,116,41,46,97,59,10,32,32,35,101,110,100,105,102,10,125,10,10,102,108,111,97,116,32,82,97,121,73,110,116,101,114,115,101,99,116,68,105,115,112,108,97,99,101,77,97,112,40,118,101,99,50,32,100,112,44,32,118,101,99,50,32,100,115,44,32,115,97,109,112,108,101,114,50,68,32,110,111,114,109,97,108,77,97,112,41,10,123,10,9,99,111,110,115,116,32,105,110,116,32,108,105,110,101,97,114,83,101,97,114,99,104,83,116,101,112,115,32,61,32,49,54,59,10,9,99,111,110,115,116,32,105,110,116,32,98,105,110,97,114,121,83,101,97,114,99,104,83,116,101,112,115,32,61,32,54,59,10,10,9,47,47,32,99,117,114,114,101,110,116,32,115,105,122,101,32,111,102,32,115,101,97,114,99,104,32,119,105,110,100,111,119,10,9,102,108,111,97,116,32,115,105,122,101,32,61,32,49,46,48,32,47,32,102,108,111,97,116,40,108,105,110,101,97,114,83,101,97,114,99,104,83,116,101,112,115,41,59,10,10,9,47,47,32,99,117,114,114,101,110,116,32,100,101,112,116,104,32,112,111,115,105,116,105,111,110,10,9,102,108,111,97,116,32,100,101,112,116,104,32,61,32,48,46,48,59,10,10,9,47,47,32,98,101,115,116,32,109,97,116,99,104,32,102,111,117,110,100,32,40,115,116,97,114,116,115,32,119,105,116,104,32,108,97,115,116,32,112,111,115,105,116,105,111,110,32,49,46,48,41,10,9,102,108,111,97,116,32,98,101,115,116,68,101,112,116,104,32,61,32,49,46,48,59,10,10,9,47,47,32,115,101,97,114,99,104,32,102,114,111,110,116,32,116,111,32,98,97,99,107,32,102,111,114,32,102,105,114,115,116,32,112,111,105,110,116,32,105,110,115,105,100,101,32,111,98,106,101,99,116,10,9,102,111,114,40,105,110,116,32,105,32,61,32,48,59,32,105,32,60,32,108,105,110,101,97,114,83,101,97,114,99,104,83,116,101,112,115,32,45,32,49,59,32,43,43,105,41,10,9,123,10,9,9,100,101,112,116,104,32,43,61,32,115,105,122,101,59,10,9,9,10,9,9,102,108,111,97,116,32,116,32,61,32,83,97,109,112,108,101,68,101,112,116,104,40,110,111,114,109,97,108,77,97,112,44,32,100,112,32,43,32,100,115,32,42,32,100,101,112,116,104,41,59,10,9,9,10,9,9,105,102,40,98,101,115,116,68,101,112,116,104,32,62,32,48,46,57,57,54,41,9,9,47,47,32,105,102,32,110,111,32,100,101,112,116,104,32,102,111,117,110,100,32,121,101,116,10,9,9,9,105,102,40,100,101,112,116,104,32,62,61,32,116,41,10,9,9,9,9,98,101,115,116,68,101,112,116,104,32,61,32,100,101,112,116,104,59,9,47,47,32,115,116,111,114,101,32,98,101,115,116,32,100,101,112,116,104,10,9,125,10,10,9,100,101,112,116,104,32,61,32,98,101,115,116,68,101,112,116,104,59,10,9,10,9,47,47,32,114,101,99,117,114,115,101,32,97,114,111,117,110,100,32,102,105,114,115,116,32,112,111,105,110,116,32,40,100,101,112,116,104,41,32,102,111,114,32,99,108,111,115,101,115,116,32,109,97,116,99,104,10,9,102,111,114,40,105,110,116,32,105,32,61,32,48,59,32,105,32,60,32,98,105,110,97,114,121,83,101,97,114,99,104,83,116,101,112,115,59,32,43,43,105,41,10,9,123,10,9,9,115,105,122,101,32,42,61,32,48,46,53,59,10,10,9,9,102,108,111,97,116,32,116,32,61,32,83,97,109,112,108,101,68,101,112,116,104,40,110,111,114,109,97,108,77,97,112,44,32,100,112,32,43,32,100,115,32,42,32,100,101,112,116,104,41,59,10,9,9,10,9,9,105,102,40,100,101,112,116,104,32,62,61,32,116,41,10,9,9,123,10,9,9,9,98,101,115,116,68,101,112,116,104,32,61,32,100,101,112,116,104,59,10,9,9,9,100,101,112,116,104,32,45,61,32,50,46,48,32,42,32,115,105,122,101,59,10,9,9,125,10,10,9,9,100,101,112,116,104,32,43,61,32,115,105,122,101,59,10,9,125,10,10,9,114,101,116,117,114,110,32,98,101,115,116,68,101,112,116,104,59,10,125,10,35,101,110,100,105,102,10,10,118,101,99,51,32,67,97,108,99,68,105,102,102,117,115,101,40,118,101,99,51,32,100,105,102,102,117,115,101,65,108,98,101,100,111,44,32,118,101,99,51,32,78,44,32,118,101,99,51,32,76,44,32,118,101,99,51,32,69,44,32,102,108,111,97,116,32,78,69,44,32,102,108,111,97,116,32,78,76,44,32,102,108,111,97,116,32,115,104,105,110,105,110,101,115,115,41,10,123,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,79,82,69,78,95,78,65,89,65,82,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,84,82,73,65,67,69,95,79,82,69,78,95,78,65,89,65,82,41,10,9,102,108,111,97,116,32,103,97,109,109,97,32,61,32,100,111,116,40,69,44,32,76,41,32,45,32,78,69,32,42,32,78,76,59,10,9,102,108,111,97,116,32,66,32,61,32,50,46,50,50,50,50,50,32,43,32,48,46,49,32,42,32,115,104,105,110,105,110,101,115,115,59,10,9,9,10,32,32,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,79,82,69,78,95,78,65,89,65,82,41,10,9,102,108,111,97,116,32,65,32,61,32,49,46,48,32,45,32,49,46,48,32,47,32,40,50,46,48,32,43,32,48,46,51,51,32,42,32,115,104,105,110,105,110,101,115,115,41,59,10,9,103,97,109,109,97,32,61,32,99,108,97,109,112,40,103,97,109,109,97,44,32,48,46,48,44,32,49,46,48,41,59,10,32,32,32,32,35,101,110,100,105,102,10,9,10,32,32,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,82,73,65,67,69,95,79,82,69,78,95,78,65,89,65,82,41,10,9,102,108,111,97,116,32,65,32,61,32,49,46,48,32,45,32,49,46,48,32,47,32,40,50,46,48,32,43,32,48,46,54,53,32,42,32,115,104,105,110,105,110,101,115,115,41,59,10,10,9,105,102,32,40,103,97,109,109,97,32,62,61,32,48,46,48,41,10,32,32,32,32,35,101,110,100,105,102,10,9,123,10,9,9,66,32,61,32,109,97,120,40,66,32,42,32,109,97,120,40,78,76,44,32,78,69,41,44,32,69,80,83,73,76,79,78,41,59,10,9,125,10,10,9,114,101,116,117,114,110,32,100,105,102,102,117,115,101,65,108,98,101,100,111,32,42,32,40,65,32,43,32,103,97,109,109,97,32,47,32,66,41,59,10,32,32,35,101,108,115,101,10,9,114,101,116,117,114,110,32,100,105,102,102,117,115,101,65,108,98,101,100,111,59,10,32,32,35,101,110,100,105,102,10,125,10,10,118,101,99,51,32,69,110,118,105,114,111,110,109,101,110,116,66,82,68,70,40,102,108,111,97,116,32,103,108,111,115,115,44,32,102,108,111,97,116,32,78,69,44,32,118,101,99,51,32,115,112,101,99,117,108,97,114,41,10,123,10,32,32,35,105,102,32,49,10,9,47,47,32,102,114,111,109,32,104,116,116,112,58,47,47,98,108,111,103,46,115,101,108,102,115,104,97,100,111,119,46,99,111,109,47,112,117,98,108,105,99,97,116,105,111,110,115,47,115,50,48,49,51,45,115,104,97,100,105,110,103,45,99,111,117,114,115,101,47,108,97,122,97,114,111,118,47,115,50,48,49,51,95,112,98,115,95,98,108,97,99,107,95,111,112,115,95,50,95,110,111,116,101,115,46,112,100,102,10,9,118,101,99,52,32,116,32,61,32,118,101,99,52,40,32,49,46,48,47,48,46,57,54,44,32,48,46,52,55,53,44,32,40,48,46,48,50,55,53,32,45,32,48,46,50,53,32,42,32,48,46,48,52,41,47,48,46,57,54,44,48,46,50,53,32,41,32,42,32,103,108,111,115,115,59,10,9,116,32,43,61,32,118,101,99,52,40,32,48,46,48,44,32,48,46,48,44,32,40,48,46,48,49,53,32,45,32,48,46,55,53,32,42,32,48,46,48,52,41,47,48,46,57,54,44,48,46,55,53,32,41,59,10,9,102,108,111,97,116,32,97,48,32,61,32,116,46,120,32,42,32,109,105,110,40,32,116,46,121,44,32,101,120,112,50,40,32,45,57,46,50,56,32,42,32,78,69,32,41,32,41,32,43,32,116,46,122,59,10,9,102,108,111,97,116,32,97,49,32,61,32,116,46,119,59,10,9,114,101,116,117,114,110,32,99,108,97,109,112,40,32,97,48,32,43,32,115,112,101,99,117,108,97,114,32,42,32,40,32,97,49,32,45,32,97,48,32,41,44,32,48,46,48,44,32,49,46,48,32,41,59,10,32,32,35,101,108,105,102,32,48,10,9,47,47,32,102,114,111,109,32,104,116,116,112,58,47,47,115,101,98,108,97,103,97,114,100,101,46,119,111,114,100,112,114,101,115,115,46,99,111,109,47,50,48,49,49,47,48,56,47,49,55,47,104,101,108,108,111,45,119,111,114,108,100,47,10,9,114,101,116,117,114,110,32,109,105,120,40,115,112,101,99,117,108,97,114,46,114,103,98,44,32,109,97,120,40,115,112,101,99,117,108,97,114,46,114,103,98,44,32,118,101,99,51,40,103,108,111,115,115,41,41,44,32,67,97,108,99,70,114,101,115,110,101,108,40,78,69,41,41,59,10,32,32,35,101,108,115,101,10,9,47,47,32,102,114,111,109,32,104,116,116,112,58,47,47,97,100,118,97,110,99,101,115,46,114,101,97,108,116,105,109,101,114,101,110,100,101,114,105,110,103,46,99,111,109,47,115,50,48,49,49,47,76,97,122,97,114,111,118,45,80,104,121,115,105,99,97,108,108,121,45,66,97,115,101,100,45,76,105,103,104,116,105,110,103,45,105,110,45,66,108,97,99,107,45,79,112,115,37,50,48,37,50,56,83,105,103,103,114,97,112,104,37,50,48,50,48,49,49,37,50,48,65,100,118,97,110,99,101,115,37,50,48,105,110,37,50,48,82,101,97,108,45,84,105,109,101,37,50,48,82,101,110,100,101,114,105,110,103,37,50,48,67,111,117,114,115,101,37,50,57,46,112,112,116,120,10,9,114,101,116,117,114,110,32,109,105,120,40,115,112,101,99,117,108,97,114,46,114,103,98,44,32,118,101,99,51,40,49,46,48,41,44,32,67,97,108,99,70,114,101,115,110,101,108,40,78,69,41,32,47,32,40,52,46,48,32,45,32,51,46,48,32,42,32,103,108,111,115,115,41,41,59,10,32,32,35,101,110,100,105,102,10,125,10,10,102,108,111,97,116,32,67,97,108,99,66,108,105,110,110,40,102,108,111,97,116,32,78,72,44,32,102,108,111,97,116,32,115,104,105,110,105,110,101,115,115,41,10,123,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,66,76,73,78,78,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,66,76,73,78,78,95,70,82,69,83,78,69,76,41,10,9,47,47,32,78,111,114,109,97,108,105,122,101,100,32,66,108,105,110,110,45,80,104,111,110,103,10,9,102,108,111,97,116,32,110,111,114,109,32,61,32,115,104,105,110,105,110,101,115,115,32,42,32,48,46,49,50,53,32,32,32,32,43,32,49,46,48,59,10,35,101,108,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,77,67,65,85,76,69,89,41,10,9,47,47,32,67,111,111,107,45,84,111,114,114,97,110,99,101,32,97,115,32,100,111,110,101,32,98,121,32,83,116,101,112,104,101,110,32,77,99,65,117,108,101,121,10,9,47,47,32,104,116,116,112,58,47,47,98,108,111,103,46,115,101,108,102,115,104,97,100,111,119,46,99,111,109,47,112,117,98,108,105,99,97,116,105,111,110,115,47,115,50,48,49,50,45,115,104,97,100,105,110,103,45,99,111,117,114,115,101,47,109,99,97,117,108,101,121,47,115,50,48,49,50,95,112,98,115,95,102,97,114,99,114,121,51,95,110,111,116,101,115,95,118,50,46,112,100,102,10,9,102,108,111,97,116,32,110,111,114,109,32,61,32,115,104,105,110,105,110,101,115,115,32,42,32,48,46,50,53,32,32,32,32,32,43,32,48,46,49,50,53,59,10,35,101,108,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,71,79,84,65,78,68,65,41,10,9,47,47,32,78,101,117,109,97,110,110,45,78,101,117,109,97,110,110,32,97,115,32,100,111,110,101,32,98,121,32,89,111,115,104,105,104,97,114,117,32,71,111,116,97,110,100,97,10,9,47,47,32,104,116,116,112,58,47,47,114,101,115,101,97,114,99,104,46,116,114,105,45,97,99,101,46,99,111,109,47,68,97,116,97,47,115,50,48,49,50,95,98,101,121,111,110,100,95,67,111,117,114,115,101,78,111,116,101,115,46,112,100,102,10,9,102,108,111,97,116,32,110,111,114,109,32,61,32,115,104,105,110,105,110,101,115,115,32,42,32,48,46,49,50,52,56,53,56,32,43,32,48,46,50,54,57,49,56,50,59,10,35,101,108,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,65,90,65,82,79,86,41,10,9,47,47,32,67,111,111,107,45,84,111,114,114,97,110,99,101,32,97,115,32,100,111,110,101,32,98,121,32,68,105,109,105,116,97,114,32,76,97,122,97,114,111,118,10,9,47,47,32,104,116,116,112,58,47,47,98,108,111,103,46,115,101,108,102,115,104,97,100,111,119,46,99,111,109,47,112,117,98,108,105,99,97,116,105,111,110,115,47,115,50,48,49,51,45,115,104,97,100,105,110,103,45,99,111,117,114,115,101,47,108,97,122,97,114,111,118,47,115,50,48,49,51,95,112,98,115,95,98,108,97,99,107,95,111,112,115,95,50,95,110,111,116,101,115,46,112,100,102,10,9,102,108,111,97,116,32,110,111,114,109,32,61,32,115,104,105,110,105,110,101,115,115,32,42,32,48,46,49,50,53,32,32,32,32,43,32,48,46,50,53,59,10,35,101,108,115,101,10,9,102,108,111,97,116,32,110,111,114,109,32,61,32,49,46,48,59,10,35,101,110,100,105,102,10,10,35,105,102,32,48,10,9,47,47,32,102,114,111,109,32,104,116,116,112,58,47,47,115,101,98,108,97,103,97,114,100,101,46,119,111,114,100,112,114,101,115,115,46,99,111,109,47,50,48,49,50,47,48,54,47,48,51,47,115,112,104,101,114,105,99,97,108,45,103,97,117,115,115,105,101,110,45,97,112,112,114,111,120,105,109,97,116,105,111,110,45,102,111,114,45,98,108,105,110,110,45,112,104,111,110,103,45,112,104,111,110,103,45,97,110,100,45,102,114,101,115,110,101,108,47,10,9,102,108,111,97,116,32,97,32,61,32,115,104,105,110,105,110,101,115,115,32,43,32,48,46,55,55,53,59,10,9,114,101,116,117,114,110,32,110,111,114,109,32,42,32,101,120,112,40,97,32,42,32,78,72,32,45,32,97,41,59,10,35,101,108,115,101,10,9,114,101,116,117,114,110,32,110,111,114,109,32,42,32,112,111,119,40,78,72,44,32,115,104,105,110,105,110,101,115,115,41,59,10,35,101,110,100,105,102,10,125,10,10,102,108,111,97,116,32,67,97,108,99,71,71,88,40,102,108,111,97,116,32,78,72,44,32,102,108,111,97,116,32,103,108,111,115,115,41,10,123,10,9,47,47,32,102,114,111,109,32,104,116,116,112,58,47,47,98,108,111,103,46,115,101,108,102,115,104,97,100,111,119,46,99,111,109,47,112,117,98,108,105,99,97,116,105,111,110,115,47,115,50,48,49,51,45,115,104,97,100,105,110,103,45,99,111,117,114,115,101,47,107,97,114,105,115,47,115,50,48,49,51,95,112,98,115,95,101,112,105,99,95,110,111,116,101,115,95,118,50,46,112,100,102,10,9,102,108,111,97,116,32,97,95,115,113,32,61,32,101,120,112,50,40,103,108,111,115,115,32,42,32,45,49,51,46,48,32,43,32,49,46,48,41,59,10,9,102,108,111,97,116,32,100,32,61,32,40,40,78,72,32,42,32,78,72,41,32,42,32,40,97,95,115,113,32,45,32,49,46,48,41,32,43,32,49,46,48,41,59,10,9,114,101,116,117,114,110,32,97,95,115,113,32,47,32,40,100,32,42,32,100,41,59,10,125,10,10,102,108,111,97,116,32,67,97,108,99,70,114,101,115,110,101,108,40,102,108,111,97,116,32,69,72,41,10,123,10,35,105,102,32,49,10,9,47,47,32,70,114,111,109,32,104,116,116,112,58,47,47,98,108,111,103,46,115,101,108,102,115,104,97,100,111,119,46,99,111,109,47,112,117,98,108,105,99,97,116,105,111,110,115,47,115,50,48,49,51,45,115,104,97,100,105,110,103,45,99,111,117,114,115,101,47,108,97,122,97,114,111,118,47,115,50,48,49,51,95,112,98,115,95,98,108,97,99,107,95,111,112,115,95,50,95,110,111,116,101,115,46,112,100,102,10,9,47,47,32,110,111,116,32,97,99,99,117,114,97,116,101,44,32,98,117,116,32,102,97,115,116,10,9,114,101,116,117,114,110,32,101,120,112,50,40,45,49,48,46,48,32,42,32,69,72,41,59,10,35,101,108,105,102,32,48,10,9,47,47,32,70,114,111,109,32,104,116,116,112,58,47,47,115,101,98,108,97,103,97,114,100,101,46,119,111,114,100,112,114,101,115,115,46,99,111,109,47,50,48,49,50,47,48,54,47,48,51,47,115,112,104,101,114,105,99,97,108,45,103,97,117,115,115,105,101,110,45,97,112,112,114,111,120,105,109,97,116,105,111,110,45,102,111,114,45,98,108,105,110,110,45,112,104,111,110,103,45,112,104,111,110,103,45,97,110,100,45,102,114,101,115,110,101,108,47,10,9,114,101,116,117,114,110,32,101,120,112,50,40,40,45,53,46,53,53,52,55,51,32,42,32,69,72,32,45,32,54,46,57,56,51,49,54,41,32,42,32,69,72,41,59,10,35,101,108,105,102,32,48,10,9,102,108,111,97,116,32,98,108,101,110,100,32,61,32,49,46,48,32,45,32,69,72,59,10,9,102,108,111,97,116,32,98,108,101,110,100,50,32,61,32,98,108,101,110,100,32,42,32,98,108,101,110,100,59,10,9,98,108,101,110,100,32,42,61,32,98,108,101,110,100,50,32,42,32,98,108,101,110,100,50,59,10,9,10,9,114,101,116,117,114,110,32,98,108,101,110,100,59,10,35,101,108,115,101,10,9,114,101,116,117,114,110,32,112,111,119,40,49,46,48,32,45,32,69,72,44,32,53,46,48,41,59,10,35,101,110,100,105,102,10,125,10,10,102,108,111,97,116,32,67,97,108,99,86,105,115,105,98,105,108,105,116,121,40,102,108,111,97,116,32,78,72,44,32,102,108,111,97,116,32,78,76,44,32,102,108,111,97,116,32,78,69,44,32,102,108,111,97,116,32,69,72,44,32,102,108,111,97,116,32,103,108,111,115,115,41,10,123,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,71,79,84,65,78,68,65,41,10,9,47,47,32,78,101,117,109,97,110,110,45,78,101,117,109,97,110,110,32,97,115,32,100,111,110,101,32,98,121,32,89,111,115,104,105,104,97,114,117,32,71,111,116,97,110,100,97,10,9,47,47,32,104,116,116,112,58,47,47,114,101,115,101,97,114,99,104,46,116,114,105,45,97,99,101,46,99,111,109,47,68,97,116,97,47,115,50,48,49,50,95,98,101,121,111,110,100,95,67,111,117,114,115,101,78,111,116,101,115,46,112,100,102,10,9,114,101,116,117,114,110,32,49,46,48,32,47,32,109,97,120,40,109,97,120,40,78,76,44,32,78,69,41,44,32,69,80,83,73,76,79,78,41,59,10,35,101,108,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,65,90,65,82,79,86,41,10,9,47,47,32,67,111,111,107,45,84,111,114,114,97,110,99,101,32,97,115,32,100,111,110,101,32,98,121,32,68,105,109,105,116,97,114,32,76,97,122,97,114,111,118,10,9,47,47,32,104,116,116,112,58,47,47,98,108,111,103,46,115,101,108,102,115,104,97,100,111,119,46,99,111,109,47,112,117,98,108,105,99,97,116,105,111,110,115,47,115,50,48,49,51,45,115,104,97,100,105,110,103,45,99,111,117,114,115,101,47,108,97,122,97,114,111,118,47,115,50,48,49,51,95,112,98,115,95,98,108,97,99,107,95,111,112,115,95,50,95,110,111,116,101,115,46,112,100,102,10,9,102,108,111,97,116,32,107,32,61,32,109,105,110,40,49,46,48,44,32,103,108,111,115,115,32,43,32,48,46,53,52,53,41,59,10,9,114,101,116,117,114,110,32,49,46,48,32,47,32,40,107,32,42,32,40,69,72,32,42,32,69,72,32,45,32,49,46,48,41,32,43,32,49,46,48,41,59,10,35,101,108,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,71,71,88,41,10,9,102,108,111,97,116,32,114,111,117,103,104,110,101,115,115,32,61,32,101,120,112,50,40,103,108,111,115,115,32,42,32,45,54,46,53,41,59,10,10,9,47,47,32,77,111,100,105,102,105,101,100,32,102,114,111,109,32,104,116,116,112,58,47,47,98,108,111,103,46,115,101,108,102,115,104,97,100,111,119,46,99,111,109,47,112,117,98,108,105,99,97,116,105,111,110,115,47,115,50,48,49,51,45,115,104,97,100,105,110,103,45,99,111,117,114,115,101,47,107,97,114,105,115,47,115,50,48,49,51,95,112,98,115,95,101,112,105,99,95,110,111,116,101,115,95,118,50,46,112,100,102,10,9,47,47,32,78,76,44,32,78,69,32,105,110,32,110,117,109,101,114,97,116,111,114,32,102,97,99,116,111,114,101,100,32,111,117,116,32,102,114,111,109,32,99,111,111,107,45,116,111,114,114,97,110,99,101,10,9,102,108,111,97,116,32,107,32,61,32,114,111,117,103,104,110,101,115,115,32,43,32,49,46,48,59,10,9,107,32,42,61,32,107,32,42,32,48,46,49,50,53,59,10,10,9,102,108,111,97,116,32,107,50,32,61,32,49,46,48,32,45,32,107,59,10,9,10,9,102,108,111,97,116,32,105,110,118,71,101,111,49,32,61,32,78,76,32,42,32,107,50,32,43,32,107,59,10,9,102,108,111,97,116,32,105,110,118,71,101,111,50,32,61,32,78,69,32,42,32,107,50,32,43,32,107,59,10,10,9,114,101,116,117,114,110,32,49,46,48,32,47,32,40,105,110,118,71,101,111,49,32,42,32,105,110,118,71,101,111,50,41,59,10,35,101,108,115,101,10,9,114,101,116,117,114,110,32,49,46,48,59,10,35,101,110,100,105,102,10,125,10,10,10,118,101,99,51,32,67,97,108,99,83,112,101,99,117,108,97,114,40,118,101,99,51,32,115,112,101,99,117,108,97,114,44,32,102,108,111,97,116,32,78,72,44,32,102,108,111,97,116,32,78,76,44,32,102,108,111,97,116,32,78,69,44,32,102,108,111,97,116,32,69,72,44,32,102,108,111,97,116,32,103,108,111,115,115,44,32,102,108,111,97,116,32,115,104,105,110,105,110,101,115,115,41,10,123,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,71,71,88,41,10,9,102,108,111,97,116,32,100,105,115,116,114,105,98,32,61,32,67,97,108,99,71,71,88,40,78,72,44,32,103,108,111,115,115,41,59,10,35,101,108,115,101,10,9,102,108,111,97,116,32,100,105,115,116,114,105,98,32,61,32,67,97,108,99,66,108,105,110,110,40,78,72,44,32,115,104,105,110,105,110,101,115,115,41,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,66,76,73,78,78,41,10,9,118,101,99,51,32,102,83,112,101,99,117,108,97,114,32,61,32,115,112,101,99,117,108,97,114,59,10,35,101,108,115,101,10,9,118,101,99,51,32,102,83,112,101,99,117,108,97,114,32,61,32,109,105,120,40,115,112,101,99,117,108,97,114,44,32,118,101,99,51,40,49,46,48,41,44,32,67,97,108,99,70,114,101,115,110,101,108,40,69,72,41,41,59,10,35,101,110,100,105,102,10,10,9,102,108,111,97,116,32,118,105,115,32,61,32,67,97,108,99,86,105,115,105,98,105,108,105,116,121,40,78,72,44,32,78,76,44,32,78,69,44,32,69,72,44,32,103,108,111,115,115,41,59,10,10,9,114,101,116,117,114,110,32,102,83,112,101,99,117,108,97,114,32,42,32,40,100,105,115,116,114,105,98,32,42,32,118,105,115,41,59,10,125,10,10,10,102,108,111,97,116,32,67,97,108,99,76,105,103,104,116,65,116,116,101,110,117,97,116,105,111,110,40,102,108,111,97,116,32,112,111,105,110,116,44,32,102,108,111,97,116,32,110,111,114,109,68,105,115,116,41,10,123,10,9,47,47,32,122,101,114,111,32,108,105,103,104,116,32,97,116,32,49,46,48,44,32,97,112,112,114,111,120,105,109,97,116,105,110,103,32,113,51,32,115,116,121,108,101,10,9,47,47,32,97,108,115,111,32,100,111,110,39,116,32,97,116,116,101,110,117,97,116,101,32,100,105,114,101,99,116,105,111,110,97,108,32,108,105,103,104,116,10,9,102,108,111,97,116,32,97,116,116,101,110,117,97,116,105,111,110,32,61,32,40,48,46,53,32,42,32,110,111,114,109,68,105,115,116,32,45,32,49,46,53,41,32,42,32,112,111,105,110,116,32,43,32,49,46,48,59,10,10,9,47,47,32,99,108,97,109,112,32,97,116,116,101,110,117,97,116,105,111,110,10,9,35,105,102,32,100,101,102,105,110,101,100,40,78,79,95,76,73,71,72,84,95,67,76,65,77,80,41,10,9,97,116,116,101,110,117,97,116,105,111,110,32,61,32,109,97,120,40,97,116,116,101,110,117,97,116,105,111,110,44,32,48,46,48,41,59,10,9,35,101,108,115,101,10,9,97,116,116,101,110,117,97,116,105,111,110,32,61,32,99,108,97,109,112,40,97,116,116,101,110,117,97,116,105,111,110,44,32,48,46,48,44,32,49,46,48,41,59,10,9,35,101,110,100,105,102,10,10,9,114,101,116,117,114,110,32,97,116,116,101,110,117,97,116,105,111,110,59,10,125,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,10,47,47,32,102,114,111,109,32,104,116,116,112,58,47,47,119,119,119,46,116,104,101,116,101,110,116,104,112,108,97,110,101,116,46,100,101,47,97,114,99,104,105,118,101,115,47,49,49,56,48,10,109,97,116,51,32,99,111,116,97,110,103,101,110,116,95,102,114,97,109,101,40,32,118,101,99,51,32,78,44,32,118,101,99,51,32,112,44,32,118,101,99,50,32,117,118,32,41,10,123,10,9,47,47,32,103,101,116,32,101,100,103,101,32,118,101,99,116,111,114,115,32,111,102,32,116,104,101,32,112,105,120,101,108,32,116,114,105,97,110,103,108,101,10,9,118,101,99,51,32,100,112,49,32,61,32,100,70,100,120,40,32,112,32,41,59,10,9,118,101,99,51,32,100,112,50,32,61,32,100,70,100,121,40,32,112,32,41,59,10,9,118,101,99,50,32,100,117,118,49,32,61,32,100,70,100,120,40,32,117,118,32,41,59,10,9,118,101,99,50,32,100,117,118,50,32,61,32,100,70,100,121,40,32,117,118,32,41,59,10,10,9,47,47,32,115,111,108,118,101,32,116,104,101,32,108,105,110,101,97,114,32,115,121,115,116,101,109,10,9,118,101,99,51,32,100,112,50,112,101,114,112,32,61,32,99,114,111,115,115,40,32,100,112,50,44,32,78,32,41,59,10,9,118,101,99,51,32,100,112,49,112,101,114,112,32,61,32,99,114,111,115,115,40,32,78,44,32,100,112,49,32,41,59,10,9,118,101,99,51,32,84,32,61,32,100,112,50,112,101,114,112,32,42,32,100,117,118,49,46,120,32,43,32,100,112,49,112,101,114,112,32,42,32,100,117,118,50,46,120,59,10,9,118,101,99,51,32,66,32,61,32,100,112,50,112,101,114,112,32,42,32,100,117,118,49,46,121,32,43,32,100,112,49,112,101,114,112,32,42,32,100,117,118,50,46,121,59,10,10,9,47,47,32,99,111,110,115,116,114,117,99,116,32,97,32,115,99,97,108,101,45,105,110,118,97,114,105,97,110,116,32,102,114,97,109,101,32,10,9,102,108,111,97,116,32,105,110,118,109,97,120,32,61,32,105,110,118,101,114,115,101,115,113,114,116,40,32,109,97,120,40,32,100,111,116,40,84,44,84,41,44,32,100,111,116,40,66,44,66,41,32,41,32,41,59,10,9,114,101,116,117,114,110,32,109,97,116,51,40,32,84,32,42,32,105,110,118,109,97,120,44,32,66,32,42,32,105,110,118,109,97,120,44,32,78,32,41,59,10,125,10,35,101,110,100,105,102,10,10,118,111,105,100,32,109,97,105,110,40,41,10,123,10,9,118,101,99,51,32,76,44,32,78,44,32,69,44,32,72,59,10,9,102,108,111,97,116,32,78,76,44,32,78,72,44,32,78,69,44,32,69,72,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,41,10,9,109,97,116,51,32,116,97,110,103,101,110,116,84,111,87,111,114,108,100,32,61,32,109,97,116,51,40,118,97,114,95,84,97,110,103,101,110,116,46,120,121,122,44,32,118,97,114,95,66,105,116,97,110,103,101,110,116,46,120,121,122,44,32,118,97,114,95,78,111,114,109,97,108,46,120,121,122,41,59,10,9,69,32,61,32,118,101,99,51,40,118,97,114,95,78,111,114,109,97,108,46,119,44,32,118,97,114,95,84,97,110,103,101,110,116,46,119,44,32,118,97,114,95,66,105,116,97,110,103,101,110,116,46,119,41,59,10,32,32,35,101,108,115,101,10,9,109,97,116,51,32,116,97,110,103,101,110,116,84,111,87,111,114,108,100,32,61,32,99,111,116,97,110,103,101,110,116,95,102,114,97,109,101,40,118,97,114,95,78,111,114,109,97,108,44,32,45,118,97,114,95,86,105,101,119,68,105,114,44,32,118,97,114,95,84,101,120,67,111,111,114,100,115,46,120,121,41,59,10,9,69,32,61,32,118,97,114,95,86,105,101,119,68,105,114,59,10,32,32,35,101,110,100,105,102,10,10,9,69,32,61,32,110,111,114,109,97,108,105,122,101,40,69,41,59,10,10,9,76,32,61,32,118,97,114,95,76,105,103,104,116,68,105,114,46,120,121,122,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,76,85,88,69,77,65,80,41,10,9,76,32,43,61,32,40,116,101,120,116,117,114,101,50,68,40,117,95,68,101,108,117,120,101,77,97,112,44,32,118,97,114,95,84,101,120,67,111,111,114,100,115,46,122,119,41,46,120,121,122,32,45,32,118,101,99,51,40,48,46,53,41,41,32,42,32,117,95,69,110,97,98,108,101,84,101,120,116,117,114,101,115,46,121,59,10,32,32,35,101,110,100,105,102,10,9,102,108,111,97,116,32,115,113,114,76,105,103,104,116,68,105,115,116,32,61,32,100,111,116,40,76,44,32,76,41,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,10,9,118,101,99,52,32,108,105,103,104,116,83,97,109,112,108,101,32,61,32,116,101,120,116,117,114,101,50,68,40,117,95,76,105,103,104,116,77,97,112,44,32,118,97,114,95,84,101,120,67,111,111,114,100,115,46,122,119,41,59,10,9,118,101,99,51,32,108,105,103,104,116,67,111,108,111,114,32,61,32,108,105,103,104,116,83,97,109,112,108,101,46,114,103,98,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,82,71,66,77,95,76,73,71,72,84,77,65,80,41,10,9,108,105,103,104,116,67,111,108,111,114,32,42,61,32,51,50,46,48,32,42,32,108,105,103,104,116,83,97,109,112,108,101,46,97,59,10,32,32,35,101,110,100,105,102,10,35,101,108,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,67,84,79,82,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,9,118,101,99,51,32,108,105,103,104,116,67,111,108,111,114,32,32,32,61,32,117,95,68,105,114,101,99,116,101,100,76,105,103,104,116,32,42,32,67,97,108,99,76,105,103,104,116,65,116,116,101,110,117,97,116,105,111,110,40,102,108,111,97,116,40,118,97,114,95,76,105,103,104,116,68,105,114,46,119,32,62,32,48,46,48,41,44,32,118,97,114,95,76,105,103,104,116,68,105,114,46,119,32,47,32,115,113,114,76,105,103,104,116,68,105,115,116,41,59,10,9,118,101,99,51,32,97,109,98,105,101,110,116,67,111,108,111,114,32,61,32,117,95,65,109,98,105,101,110,116,76,105,103,104,116,59,10,35,101,108,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,82,84,69,88,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,9,118,101,99,51,32,108,105,103,104,116,67,111,108,111,114,32,61,32,118,97,114,95,76,105,103,104,116,67,111,108,111,114,59,10,35,101,110,100,105,102,10,10,9,118,101,99,50,32,116,101,120,67,111,111,114,100,115,32,61,32,118,97,114,95,84,101,120,67,111,111,114,100,115,46,120,121,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,80,65,82,65,76,76,65,88,77,65,80,41,10,9,118,101,99,51,32,111,102,102,115,101,116,68,105,114,32,61,32,110,111,114,109,97,108,105,122,101,40,69,32,42,32,116,97,110,103,101,110,116,84,111,87,111,114,108,100,41,59,10,10,9,111,102,102,115,101,116,68,105,114,46,120,121,32,42,61,32,45,48,46,48,53,32,47,32,111,102,102,115,101,116,68,105,114,46,122,59,10,10,9,116,101,120,67,111,111,114,100,115,32,43,61,32,111,102,102,115,101,116,68,105,114,46,120,121,32,42,32,82,97,121,73,110,116,101,114,115,101,99,116,68,105,115,112,108,97,99,101,77,97,112,40,116,101,120,67,111,111,114,100,115,44], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+71684); +/* memory initializer */ allocate([32,111,102,102,115,101,116,68,105,114,46,120,121,44,32,117,95,78,111,114,109,97,108,77,97,112,41,59,10,35,101,110,100,105,102,10,10,9,118,101,99,52,32,100,105,102,102,117,115,101,32,61,32,116,101,120,116,117,114,101,50,68,40,117,95,68,105,102,102,117,115,101,77,97,112,44,32,116,101,120,67,111,111,114,100,115,41,59,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,71,65,77,77,65,50,95,84,69,88,84,85,82,69,83,41,10,9,100,105,102,102,117,115,101,46,114,103,98,32,42,61,32,100,105,102,102,117,115,101,46,114,103,98,59,10,35,101,110,100,105,102,10,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,41,32,38,38,32,33,100,101,102,105,110,101,100,40,85,83,69,95,70,65,83,84,95,76,73,71,72,84,41,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,78,79,82,77,65,76,77,65,80,41,10,32,32,32,32,35,105,102,32,100,101,102,105,110,101,100,40,83,87,73,90,90,76,69,95,78,79,82,77,65,76,77,65,80,41,10,9,78,46,120,121,32,61,32,116,101,120,116,117,114,101,50,68,40,117,95,78,111,114,109,97,108,77,97,112,44,32,116,101,120,67,111,111,114,100,115,41,46,97,103,32,45,32,118,101,99,50,40,48,46,53,41,59,10,32,32,32,32,35,101,108,115,101,10,9,78,46,120,121,32,61,32,116,101,120,116,117,114,101,50,68,40,117,95,78,111,114,109,97,108,77,97,112,44,32,116,101,120,67,111,111,114,100,115,41,46,114,103,32,45,32,118,101,99,50,40,48,46,53,41,59,10,32,32,32,32,35,101,110,100,105,102,10,9,78,46,120,121,32,42,61,32,117,95,69,110,97,98,108,101,84,101,120,116,117,114,101,115,46,120,59,10,9,78,46,122,32,61,32,115,113,114,116,40,40,48,46,50,53,32,45,32,78,46,120,32,42,32,78,46,120,41,32,45,32,78,46,121,32,42,32,78,46,121,41,59,10,9,78,32,61,32,116,97,110,103,101,110,116,84,111,87,111,114,108,100,32,42,32,78,59,10,32,32,35,101,108,115,101,10,9,78,32,61,32,118,97,114,95,78,111,114,109,97,108,46,120,121,122,59,10,32,32,35,101,110,100,105,102,10,10,9,78,32,61,32,110,111,114,109,97,108,105,122,101,40,78,41,59,10,9,76,32,47,61,32,115,113,114,116,40,115,113,114,76,105,103,104,116,68,105,115,116,41,59,10,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,83,72,65,68,79,87,77,65,80,41,32,10,9,118,101,99,50,32,115,104,97,100,111,119,84,101,120,32,61,32,103,108,95,70,114,97,103,67,111,111,114,100,46,120,121,32,42,32,114,95,70,66,117,102,83,99,97,108,101,59,10,9,102,108,111,97,116,32,115,104,97,100,111,119,86,97,108,117,101,32,61,32,116,101,120,116,117,114,101,50,68,40,117,95,83,104,97,100,111,119,77,97,112,44,32,115,104,97,100,111,119,84,101,120,41,46,114,59,10,10,9,47,47,32,115,117,114,102,97,99,101,115,32,110,111,116,32,102,97,99,105,110,103,32,116,104,101,32,108,105,103,104,116,32,97,114,101,32,97,108,119,97,121,115,32,115,104,97,100,111,119,101,100,10,9,115,104,97,100,111,119,86,97,108,117,101,32,42,61,32,102,108,111,97,116,40,100,111,116,40,118,97,114,95,78,111,114,109,97,108,46,120,121,122,44,32,118,97,114,95,80,114,105,109,97,114,121,76,105,103,104,116,68,105,114,46,120,121,122,41,32,62,32,48,46,48,41,59,10,10,32,32,32,32,35,105,102,32,100,101,102,105,110,101,100,40,83,72,65,68,79,87,77,65,80,95,77,79,68,85,76,65,84,69,41,10,9,47,47,118,101,99,51,32,115,104,97,100,111,119,67,111,108,111,114,32,61,32,109,105,110,40,117,95,80,114,105,109,97,114,121,76,105,103,104,116,65,109,98,105,101,110,116,44,32,108,105,103,104,116,67,111,108,111,114,41,59,10,9,118,101,99,51,32,115,104,97,100,111,119,67,111,108,111,114,32,61,32,117,95,80,114,105,109,97,114,121,76,105,103,104,116,65,109,98,105,101,110,116,32,42,32,108,105,103,104,116,67,111,108,111,114,59,10,10,32,32,32,32,32,32,35,105,102,32,48,10,9,47,47,32,79,110,108,121,32,115,104,97,100,111,119,32,119,104,101,110,32,116,104,101,32,119,111,114,108,100,32,108,105,103,104,116,32,105,115,32,112,97,114,97,108,108,101,108,32,116,111,32,116,104,101,32,112,114,105,109,97,114,121,32,108,105,103,104,116,10,9,115,104,97,100,111,119,86,97,108,117,101,32,61,32,49,46,48,32,43,32,40,115,104,97,100,111,119,86,97,108,117,101,32,45,32,49,46,48,41,32,42,32,99,108,97,109,112,40,100,111,116,40,76,44,32,118,97,114,95,80,114,105,109,97,114,121,76,105,103,104,116,68,105,114,46,120,121,122,41,44,32,48,46,48,44,32,49,46,48,41,59,10,32,32,32,32,32,32,35,101,110,100,105,102,10,9,108,105,103,104,116,67,111,108,111,114,32,61,32,109,105,120,40,115,104,97,100,111,119,67,111,108,111,114,44,32,108,105,103,104,116,67,111,108,111,114,44,32,115,104,97,100,111,119,86,97,108,117,101,41,59,10,32,32,32,32,35,101,110,100,105,102,10,32,32,35,101,110,100,105,102,10,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,82,84,69,88,41,10,9,118,101,99,51,32,97,109,98,105,101,110,116,67,111,108,111,114,32,61,32,108,105,103,104,116,67,111,108,111,114,59,10,9,102,108,111,97,116,32,115,117,114,102,78,76,32,61,32,99,108,97,109,112,40,100,111,116,40,118,97,114,95,78,111,114,109,97,108,46,120,121,122,44,32,76,41,44,32,48,46,48,44,32,49,46,48,41,59,10,10,9,47,47,32,83,99,97,108,101,32,116,104,101,32,105,110,99,111,109,105,110,103,32,108,105,103,104,116,32,116,111,32,99,111,109,112,101,110,115,97,116,101,32,102,111,114,32,116,104,101,32,98,97,107,101,100,45,105,110,32,108,105,103,104,116,32,97,110,103,108,101,10,9,47,47,32,97,116,116,101,110,117,97,116,105,111,110,46,10,9,108,105,103,104,116,67,111,108,111,114,32,47,61,32,109,97,120,40,115,117,114,102,78,76,44,32,48,46,50,53,41,59,10,10,9,47,47,32,82,101,99,111,118,101,114,32,97,110,121,32,117,110,117,115,101,100,32,108,105,103,104,116,32,97,115,32,97,109,98,105,101,110,116,44,32,105,110,32,99,97,115,101,32,97,116,116,101,110,117,97,116,105,111,110,32,105,115,32,111,118,101,114,32,52,120,32,111,114,10,9,47,47,32,108,105,103,104,116,32,105,115,32,98,101,108,111,119,32,116,104,101,32,115,117,114,102,97,99,101,10,9,97,109,98,105,101,110,116,67,111,108,111,114,32,45,61,32,108,105,103,104,116,67,111,108,111,114,32,42,32,115,117,114,102,78,76,59,10,32,32,35,101,110,100,105,102,10,32,32,10,9,118,101,99,51,32,114,101,102,108,101,99,116,97,110,99,101,59,10,10,9,78,76,32,61,32,99,108,97,109,112,40,100,111,116,40,78,44,32,76,41,44,32,48,46,48,44,32,49,46,48,41,59,10,9,78,69,32,61,32,99,108,97,109,112,40,100,111,116,40,78,44,32,69,41,44,32,48,46,48,44,32,49,46,48,41,59,10,10,9,118,101,99,52,32,115,112,101,99,117,108,97,114,32,61,32,118,101,99,52,40,49,46,48,41,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,83,80,69,67,85,76,65,82,77,65,80,41,10,9,115,112,101,99,117,108,97,114,32,43,61,32,116,101,120,116,117,114,101,50,68,40,117,95,83,112,101,99,117,108,97,114,77,97,112,44,32,116,101,120,67,111,111,114,100,115,41,32,42,32,117,95,69,110,97,98,108,101,84,101,120,116,117,114,101,115,46,122,32,45,32,117,95,69,110,97,98,108,101,84,101,120,116,117,114,101,115,46,122,122,122,122,59,10,32,32,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,71,65,77,77,65,50,95,84,69,88,84,85,82,69,83,41,10,9,115,112,101,99,117,108,97,114,46,114,103,98,32,42,61,32,115,112,101,99,117,108,97,114,46,114,103,98,59,10,32,32,32,32,35,101,110,100,105,102,10,32,32,35,101,110,100,105,102,10,10,9,115,112,101,99,117,108,97,114,32,42,61,32,117,95,77,97,116,101,114,105,97,108,73,110,102,111,46,120,120,120,121,59,10,10,9,102,108,111,97,116,32,103,108,111,115,115,32,61,32,115,112,101,99,117,108,97,114,46,97,59,10,9,102,108,111,97,116,32,115,104,105,110,105,110,101,115,115,32,61,32,101,120,112,50,40,103,108,111,115,115,32,42,32,49,51,46,48,41,59,10,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,83,80,69,67,85,76,65,82,95,73,83,95,77,69,84,65,76,76,73,67,41,10,9,47,47,32,100,105,102,102,117,115,101,32,105,115,32,97,99,116,117,97,108,108,121,32,98,97,115,101,32,99,111,108,111,114,44,32,97,110,100,32,114,101,100,32,111,102,32,115,112,101,99,117,108,97,114,32,105,115,32,109,101,116,97,108,108,105,99,110,101,115,115,10,9,102,108,111,97,116,32,109,101,116,97,108,108,105,99,32,61,32,115,112,101,99,117,108,97,114,46,114,59,10,10,9,115,112,101,99,117,108,97,114,46,114,103,98,32,61,32,40,48,46,57,54,32,42,32,109,101,116,97,108,108,105,99,41,32,42,32,100,105,102,102,117,115,101,46,114,103,98,32,43,32,118,101,99,51,40,48,46,48,52,41,59,10,9,100,105,102,102,117,115,101,46,114,103,98,32,42,61,32,49,46,48,32,45,32,109,101,116,97,108,108,105,99,59,10,32,32,35,101,108,115,101,10,9,47,47,32,97,100,106,117,115,116,32,100,105,102,102,117,115,101,32,98,121,32,115,112,101,99,117,108,97,114,32,114,101,102,108,101,99,116,97,110,99,101,44,32,116,111,32,109,97,105,110,116,97,105,110,32,101,110,101,114,103,121,32,99,111,110,115,101,114,118,97,116,105,111,110,10,9,100,105,102,102,117,115,101,46,114,103,98,32,42,61,32,118,101,99,51,40,49,46,48,41,32,45,32,115,112,101,99,117,108,97,114,46,114,103,98,59,10,32,32,35,101,110,100,105,102,10,10,9,114,101,102,108,101,99,116,97,110,99,101,32,61,32,67,97,108,99,68,105,102,102,117,115,101,40,100,105,102,102,117,115,101,46,114,103,98,44,32,78,44,32,76,44,32,69,44,32,78,69,44,32,78,76,44,32,115,104,105,110,105,110,101,115,115,41,59,10,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,114,95,100,101,108,117,120,101,83,112,101,99,117,108,97,114,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,67,84,79,82,41,10,9,102,108,111,97,116,32,97,100,106,71,108,111,115,115,32,61,32,103,108,111,115,115,59,10,9,102,108,111,97,116,32,97,100,106,83,104,105,110,105,110,101,115,115,32,61,32,115,104,105,110,105,110,101,115,115,59,10,10,32,32,32,32,35,105,102,32,33,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,67,84,79,82,41,10,9,97,100,106,71,108,111,115,115,32,42,61,32,114,95,100,101,108,117,120,101,83,112,101,99,117,108,97,114,59,10,9,97,100,106,83,104,105,110,105,110,101,115,115,32,61,32,101,120,112,50,40,97,100,106,71,108,111,115,115,32,42,32,49,51,46,48,41,59,10,32,32,32,32,35,101,110,100,105,102,10,10,9,72,32,61,32,110,111,114,109,97,108,105,122,101,40,76,32,43,32,69,41,59,10,10,9,69,72,32,61,32,99,108,97,109,112,40,100,111,116,40,69,44,32,72,41,44,32,48,46,48,44,32,49,46,48,41,59,10,9,78,72,32,61,32,99,108,97,109,112,40,100,111,116,40,78,44,32,72,41,44,32,48,46,48,44,32,49,46,48,41,59,10,10,32,32,32,32,35,105,102,32,33,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,95,86,69,67,84,79,82,41,10,9,114,101,102,108,101,99,116,97,110,99,101,32,43,61,32,67,97,108,99,83,112,101,99,117,108,97,114,40,115,112,101,99,117,108,97,114,46,114,103,98,44,32,78,72,44,32,78,76,44,32,78,69,44,32,69,72,44,32,97,100,106,71,108,111,115,115,44,32,97,100,106,83,104,105,110,105,110,101,115,115,41,32,42,32,114,95,100,101,108,117,120,101,83,112,101,99,117,108,97,114,59,10,32,32,32,32,35,101,108,115,101,10,9,114,101,102,108,101,99,116,97,110,99,101,32,43,61,32,67,97,108,99,83,112,101,99,117,108,97,114,40,115,112,101,99,117,108,97,114,46,114,103,98,44,32,78,72,44,32,78,76,44,32,78,69,44,32,69,72,44,32,97,100,106,71,108,111,115,115,44,32,97,100,106,83,104,105,110,105,110,101,115,115,41,59,10,32,32,32,32,35,101,110,100,105,102,10,32,32,35,101,110,100,105,102,10,10,9,103,108,95,70,114,97,103,67,111,108,111,114,46,114,103,98,32,32,61,32,108,105,103,104,116,67,111,108,111,114,32,32,32,42,32,114,101,102,108,101,99,116,97,110,99,101,32,42,32,78,76,59,10,9,103,108,95,70,114,97,103,67,111,108,111,114,46,114,103,98,32,43,61,32,97,109,98,105,101,110,116,67,111,108,111,114,32,42,32,40,100,105,102,102,117,115,101,46,114,103,98,32,43,32,115,112,101,99,117,108,97,114,46,114,103,98,41,59,10,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,67,85,66,69,77,65,80,41,10,9,114,101,102,108,101,99,116,97,110,99,101,32,61,32,69,110,118,105,114,111,110,109,101,110,116,66,82,68,70,40,103,108,111,115,115,44,32,78,69,44,32,115,112,101,99,117,108,97,114,46,114,103,98,41,59,10,10,9,118,101,99,51,32,82,32,61,32,114,101,102,108,101,99,116,40,69,44,32,78,41,59,10,10,9,118,101,99,51,32,99,117,98,101,76,105,103,104,116,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,67,117,98,101,76,111,100,40,117,95,67,117,98,101,77,97,112,44,32,82,44,32,55,46,48,32,45,32,103,108,111,115,115,32,42,32,55,46,48,41,46,114,103,98,32,42,32,117,95,69,110,97,98,108,101,84,101,120,116,117,114,101,115,46,119,59,10,10,9,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,10,9,99,117,98,101,76,105,103,104,116,67,111,108,111,114,32,42,61,32,108,105,103,104,116,83,97,109,112,108,101,46,114,103,98,59,10,9,35,101,108,105,102,32,100,101,102,105,110,101,100,32,40,85,83,69,95,76,73,71,72,84,95,86,69,82,84,69,88,41,10,9,99,117,98,101,76,105,103,104,116,67,111,108,111,114,32,42,61,32,118,97,114,95,76,105,103,104,116,67,111,108,111,114,59,10,9,35,101,108,115,101,10,9,99,117,98,101,76,105,103,104,116,67,111,108,111,114,32,42,61,32,108,105,103,104,116,67,111,108,111,114,32,42,32,78,76,32,43,32,97,109,98,105,101,110,116,67,111,108,111,114,59,10,9,35,101,110,100,105,102,10,10,9,47,47,103,108,95,70,114,97,103,67,111,108,111,114,46,114,103,98,32,43,61,32,100,105,102,102,117,115,101,46,114,103,98,32,42,32,116,101,120,116,117,114,101,67,117,98,101,76,111,100,40,117,95,67,117,98,101,77,97,112,44,32,78,44,32,55,46,48,41,46,114,103,98,32,42,32,117,95,69,110,97,98,108,101,84,101,120,116,117,114,101,115,46,119,59,10,9,103,108,95,70,114,97,103,67,111,108,111,114,46,114,103,98,32,43,61,32,99,117,98,101,76,105,103,104,116,67,111,108,111,114,32,42,32,114,101,102,108,101,99,116,97,110,99,101,59,10,32,32,35,101,110,100,105,102,10,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,80,82,73,77,65,82,89,95,76,73,71,72,84,41,10,9,118,101,99,51,32,76,50,44,32,72,50,59,10,9,102,108,111,97,116,32,78,76,50,44,32,69,72,50,44,32,78,72,50,59,10,10,9,76,50,32,61,32,118,97,114,95,80,114,105,109,97,114,121,76,105,103,104,116,68,105,114,46,120,121,122,59,10,10,9,47,47,32,101,110,97,98,108,101,32,119,104,101,110,32,112,111,105,110,116,32,108,105,103,104,116,115,32,97,114,101,32,115,117,112,112,111,114,116,101,100,32,97,115,32,112,114,105,109,97,114,121,32,108,105,103,104,116,115,10,9,47,47,115,113,114,76,105,103,104,116,68,105,115,116,32,61,32,100,111,116,40,76,50,44,32,76,50,41,59,10,9,47,47,76,50,32,47,61,32,115,113,114,116,40,115,113,114,76,105,103,104,116,68,105,115,116,41,59,10,10,9,78,76,50,32,61,32,99,108,97,109,112,40,100,111,116,40,78,44,32,76,50,41,44,32,48,46,48,44,32,49,46,48,41,59,10,10,9,72,50,32,61,32,110,111,114,109,97,108,105,122,101,40,76,50,32,43,32,69,41,59,10,9,69,72,50,32,61,32,99,108,97,109,112,40,100,111,116,40,69,44,32,72,50,41,44,32,48,46,48,44,32,49,46,48,41,59,10,9,78,72,50,32,61,32,99,108,97,109,112,40,100,111,116,40,78,44,32,72,50,41,44,32,48,46,48,44,32,49,46,48,41,59,10,10,9,114,101,102,108,101,99,116,97,110,99,101,32,32,61,32,67,97,108,99,68,105,102,102,117,115,101,40,100,105,102,102,117,115,101,46,114,103,98,44,32,78,44,32,76,50,44,32,69,44,32,78,69,44,32,78,76,50,44,32,115,104,105,110,105,110,101,115,115,41,59,10,9,114,101,102,108,101,99,116,97,110,99,101,32,43,61,32,67,97,108,99,83,112,101,99,117,108,97,114,40,115,112,101,99,117,108,97,114,46,114,103,98,44,32,78,72,50,44,32,78,76,50,44,32,78,69,44,32,69,72,50,44,32,103,108,111,115,115,44,32,115,104,105,110,105,110,101,115,115,41,59,10,10,9,108,105,103,104,116,67,111,108,111,114,32,61,32,117,95,80,114,105,109,97,114,121,76,105,103,104,116,67,111,108,111,114,59,10,10,9,47,47,32,101,110,97,98,108,101,32,119,104,101,110,32,112,111,105,110,116,32,108,105,103,104,116,115,32,97,114,101,32,115,117,112,112,111,114,116,101,100,32,97,115,32,112,114,105,109,97,114,121,32,108,105,103,104,116,115,10,9,47,47,108,105,103,104,116,67,111,108,111,114,32,42,61,32,67,97,108,99,76,105,103,104,116,65,116,116,101,110,117,97,116,105,111,110,40,102,108,111,97,116,40,117,95,80,114,105,109,97,114,121,76,105,103,104,116,68,105,114,46,119,32,62,32,48,46,48,41,44,32,117,95,80,114,105,109,97,114,121,76,105,103,104,116,68,105,114,46,119,32,47,32,115,113,114,76,105,103,104,116,68,105,115,116,41,59,10,10,32,32,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,83,72,65,68,79,87,77,65,80,41,10,9,108,105,103,104,116,67,111,108,111,114,32,42,61,32,115,104,97,100,111,119,86,97,108,117,101,59,10,32,32,32,32,35,101,110,100,105,102,10,10,9,103,108,95,70,114,97,103,67,111,108,111,114,46,114,103,98,32,43,61,32,108,105,103,104,116,67,111,108,111,114,32,42,32,114,101,102,108,101,99,116,97,110,99,101,32,42,32,78,76,50,59,10,32,32,35,101,110,100,105,102,10,10,9,103,108,95,70,114,97,103,67,111,108,111,114,46,97,32,61,32,100,105,102,102,117,115,101,46,97,59,10,35,101,108,115,101,10,9,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,100,105,102,102,117,115,101,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,32,10,9,103,108,95,70,114,97,103,67,111,108,111,114,46,114,103,98,32,42,61,32,108,105,103,104,116,67,111,108,111,114,59,10,32,32,35,101,110,100,105,102,10,35,101,110,100,105,102,10,10,9,103,108,95,70,114,97,103,67,111,108,111,114,32,42,61,32,118,97,114,95,67,111,108,111,114,59,10,125,10,0,0,0,0,0,60,0,0,0,0,0,0,0,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,80,111,115,105,116,105,111,110,59,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,78,111,114,109,97,108,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,69,88,95,65,78,73,77,65,84,73,79,78,41,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,80,111,115,105,116,105,111,110,50,59,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,78,111,114,109,97,108,50,59,10,35,101,110,100,105,102,10,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,97,116,116,114,95,67,111,108,111,114,59,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,71,69,78,41,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,97,116,116,114,95,84,101,120,67,111,111,114,100,49,59,10,35,101,110,100,105,102,10,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,68,105,102,102,117,115,101,84,101,120,77,97,116,114,105,120,59,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,68,105,102,102,117,115,101,84,101,120,79,102,102,84,117,114,98,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,71,69,78,41,32,124,124,32,100,101,102,105,110,101,100,40,85,83,69,95,82,71,66,65,71,69,78,41,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,76,111,99,97,108,86,105,101,119,79,114,105,103,105,110,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,71,69,78,41,10,117,110,105,102,111,114,109,32,105,110,116,32,32,32,32,117,95,84,67,71,101,110,48,59,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,84,67,71,101,110,48,86,101,99,116,111,114,48,59,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,84,67,71,101,110,48,86,101,99,116,111,114,49,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,70,79,71,41,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,70,111,103,68,105,115,116,97,110,99,101,59,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,70,111,103,68,101,112,116,104,59,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,117,95,70,111,103,69,121,101,84,59,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,70,111,103,67,111,108,111,114,77,97,115,107,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,70,79,82,77,95,86,69,82,84,69,88,69,83,41,10,117,110,105,102,111,114,109,32,105,110,116,32,32,32,32,117,95,68,101,102,111,114,109,71,101,110,59,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,53,93,59,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,117,95,84,105,109,101,59,10,35,101,110,100,105,102,10,10,117,110,105,102,111,114,109,32,109,97,116,52,32,32,32,117,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,59,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,66,97,115,101,67,111,108,111,114,59,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,86,101,114,116,67,111,108,111,114,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,82,71,66,65,71,69,78,41,10,117,110,105,102,111,114,109,32,105,110,116,32,32,32,32,117,95,67,111,108,111,114,71,101,110,59,10,117,110,105,102,111,114,109,32,105,110,116,32,32,32,32,117,95,65,108,112,104,97,71,101,110,59,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,65,109,98,105,101,110,116,76,105,103,104,116,59,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,68,105,114,101,99,116,101,100,76,105,103,104,116,59,10,117,110,105,102,111,114,109,32,118,101,99,51,32,32,32,117,95,77,111,100,101,108,76,105,103,104,116,68,105,114,59,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,117,95,80,111,114,116,97,108,82,97,110,103,101,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,69,88,95,65,78,73,77,65,84,73,79,78,41,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,117,95,86,101,114,116,101,120,76,101,114,112,59,10,35,101,110,100,105,102,10,10,118,97,114,121,105,110,103,32,118,101,99,50,32,32,32,118,97,114,95,68,105,102,102,117,115,101,84,101,120,59,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,10,118,97,114,121,105,110,103,32,118,101,99,50,32,32,32,118,97,114,95,76,105,103,104,116,84,101,120,59,10,35,101,110,100,105,102,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,67,111,108,111,114,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,70,79,82,77,95,86,69,82,84,69,88,69,83,41,10,118,101,99,51,32,68,101,102,111,114,109,80,111,115,105,116,105,111,110,40,99,111,110,115,116,32,118,101,99,51,32,112,111,115,44,32,99,111,110,115,116,32,118,101,99,51,32,110,111,114,109,97,108,44,32,99,111,110,115,116,32,118,101,99,50,32,115,116,41,10,123,10,9,102,108,111,97,116,32,98,97,115,101,32,61,32,32,32,32,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,48,93,59,10,9,102,108,111,97,116,32,97,109,112,108,105,116,117,100,101,32,61,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,49,93,59,10,9,102,108,111,97,116,32,112,104,97,115,101,32,61,32,32,32,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,50,93,59,10,9,102,108,111,97,116,32,102,114,101,113,117,101,110,99,121,32,61,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,51,93,59,10,9,102,108,111,97,116,32,115,112,114,101,97,100,32,61,32,32,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,52,93,59,10,10,9,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,66,85,76,71,69,41,10,9,123,10,9,9,112,104,97,115,101,32,42,61,32,115,116,46,120,59,10,9,125,10,9,101,108,115,101,32,47,47,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,60,61,32,68,71,69,78,95,87,65,86,69,95,73,78,86,69,82,83,69,95,83,65,87,84,79,79,84,72,41,10,9,123,10,9,9,112,104,97,115,101,32,43,61,32,100,111,116,40,112,111,115,46,120,121,122,44,32,118,101,99,51,40,115,112,114,101,97,100,41,41,59,10,9,125,10,10,9,102,108,111,97,116,32,118,97,108,117,101,32,61,32,112,104,97,115,101,32,43,32,40,117,95,84,105,109,101,32,42,32,102,114,101,113,117,101,110,99,121,41,59,10,9,102,108,111,97,116,32,102,117,110,99,59,10,10,9,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,83,73,78,41,10,9,123,10,9,9,102,117,110,99,32,61,32,115,105,110,40,118,97,108,117,101,32,42,32,50,46,48,32,42,32,77,95,80,73,41,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,83,81,85,65,82,69,41,10,9,123,10,9,9,102,117,110,99,32,61,32,115,105,103,110,40,102,114,97,99,116,40,48,46,53,32,45,32,118,97,108,117,101,41,41,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,84,82,73,65,78,71,76,69,41,10,9,123,10,9,9,102,117,110,99,32,61,32,97,98,115,40,102,114,97,99,116,40,118,97,108,117,101,32,43,32,48,46,55,53,41,32,45,32,48,46,53,41,32,42,32,52,46,48,32,45,32,49,46,48,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,83,65,87,84,79,79,84,72,41,10,9,123,10,9,9,102,117,110,99,32,61,32,102,114,97,99,116,40,118,97,108,117,101,41,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,73,78,86,69,82,83,69,95,83,65,87,84,79,79,84,72,41,10,9,123,10,9,9,102,117,110,99,32,61,32,40,49,46,48,32,45,32,102,114,97,99,116,40,118,97,108,117,101,41,41,59,10,9,125,10,9,101,108,115,101,32,47,47,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,66,85,76,71,69,41,10,9,123,10,9,9,102,117,110,99,32,61,32,115,105,110,40,118,97,108,117,101,41,59,10,9,125,10,10,9,114,101,116,117,114,110,32,112,111,115,32,43,32,110,111,114,109,97,108,32,42,32,40,98,97,115,101,32,43,32,102,117,110,99,32,42,32,97,109,112,108,105,116,117,100,101,41,59,10,125,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,71,69,78,41,10,118,101,99,50,32,71,101,110,84,101,120,67,111,111,114,100,115,40,105,110,116,32,84,67,71,101,110,44,32,118,101,99,51,32,112,111,115,105,116,105,111,110,44,32,118,101,99,51,32,110,111,114,109,97,108,44,32,118,101,99,51,32,84,67,71,101,110,86,101,99,116,111,114,48,44,32,118,101,99,51,32,84,67,71,101,110,86,101,99,116,111,114,49,41,10,123,10,9,118,101,99,50,32,116,101,120,32,61,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,46,115,116,59,10,10,9,105,102,32,40,84,67,71,101,110,32,61,61,32,84,67,71,69,78,95,76,73,71,72,84,77,65,80,41,10,9,123,10,9,9,116,101,120,32,61,32,97,116,116,114,95,84,101,120,67,111,111,114,100,49,46,115,116,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,84,67,71,101,110,32,61,61,32,84,67,71,69,78,95,69,78,86,73,82,79,78,77,69,78,84,95,77,65,80,80,69,68,41,10,9,123,10,9,9,118,101,99,51,32,118,105,101,119,101,114,32,61,32,110,111,114,109,97,108,105,122,101,40,117,95,76,111,99,97,108,86,105,101,119,79,114,105,103,105,110,32,45,32,112,111,115,105,116,105,111,110,41,59,10,9,9,118,101,99,50,32,114,101,102,32,61,32,114,101,102,108,101,99,116,40,118,105,101,119,101,114,44,32,110,111,114,109,97,108,41,46,121,122,59,10,9,9,116,101,120,46,115,32,61,32,114,101,102,46,120,32,42,32,45,48,46,53,32,43,32,48,46,53,59,10,9,9,116,101,120,46,116,32,61,32,114,101,102,46,121,32,42,32,32,48,46,53,32,43,32,48,46,53,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,84,67,71,101,110,32,61,61,32,84,67,71,69,78,95,86,69,67,84,79,82,41,10,9,123,10,9,9,116,101,120,32,61,32,118,101,99,50,40,100,111,116,40,112,111,115,105,116,105,111,110,44,32,84,67,71,101,110,86,101,99,116,111,114,48,41,44,32,100,111,116,40,112,111,115,105,116,105,111,110,44,32,84,67,71,101,110,86,101,99,116,111,114,49,41,41,59,10,9,125,10,9,10,9,114,101,116,117,114,110,32,116,101,120,59,10,125,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,77,79,68,41,10,118,101,99,50,32,77,111,100,84,101,120,67,111,111,114,100,115,40,118,101,99,50,32,115,116,44,32,118,101,99,51,32,112,111,115,105,116,105,111,110,44,32,118,101,99,52,32,116,101,120,77,97,116,114,105,120,44,32,118,101,99,52,32,111,102,102,84,117,114,98,41,10,123,10,9,102,108,111,97,116,32,97,109,112,108,105,116,117,100,101,32,61,32,111,102,102,84,117,114,98,46,122,59,10,9,102,108,111,97,116,32,112,104,97,115,101,32,61,32,111,102,102,84,117,114,98,46,119,32,42,32,50,46,48,32,42,32,77,95,80,73,59,10,9,118,101,99,50,32,115,116,50,59,10,9,115,116,50,46,120,32,61,32,115,116,46,120,32,42,32,116,101,120,77,97,116,114,105,120,46,120,32,43,32,40,115,116,46,121,32,42,32,116,101,120,77,97,116,114,105,120,46,122,32,43,32,111,102,102,84,117,114,98,46,120,41,59,10,9,115,116,50,46,121,32,61,32,115,116,46,120,32,42,32,116,101,120,77,97,116,114,105,120,46,121,32,43,32,40,115,116,46,121,32,42,32,116,101,120,77,97,116,114,105,120,46,119,32,43,32,111,102,102,84,117,114,98,46,121,41,59,10,10,9,118,101,99,50,32,111,102,102,115,101,116,80,111,115,32,61,32,118,101,99,50,40,112,111,115,105,116,105,111,110,46,120,32,43,32,112,111,115,105,116,105,111,110,46,122,44,32,112,111,115,105,116,105,111,110,46,121,41,59,10,9,10,9,118,101,99,50,32,116,101,120,79,102,102,115,101,116,32,61,32,115,105,110,40,111,102,102,115,101,116,80,111,115,32,42,32,40,50,46,48,32,42,32,77,95,80,73,32,47,32,49,48,50,52,46,48,41,32,43,32,118,101,99,50,40,112,104,97,115,101,41,41,59,10,9,10,9,114,101,116,117,114,110,32,115,116,50,32,43,32,116,101,120,79,102,102,115,101,116,32,42,32,97,109,112,108,105,116,117,100,101,59,9,10,125,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,82,71,66,65,71,69,78,41,10,118,101,99,52,32,67,97,108,99,67,111,108,111,114,40,118,101,99,51,32,112,111,115,105,116,105,111,110,44,32,118,101,99,51,32,110,111,114,109,97,108,41,10,123,10,9,118,101,99,52,32,99,111,108,111,114,32,61,32,117,95,86,101,114,116,67,111,108,111,114,32,42,32,97,116,116,114,95,67,111,108,111,114,32,43,32,117,95,66,97,115,101,67,111,108,111,114,59,10,9,10,9,105,102,32,40,117,95,67,111,108,111,114,71,101,110,32,61,61,32,67,71,69,78,95,76,73,71,72,84,73,78,71,95,68,73,70,70,85,83,69,41,10,9,123,10,9,9,102,108,111,97,116,32,105,110,99,111,109,105,110,103,32,61,32,99,108,97,109,112,40,100,111,116,40,110,111,114,109,97,108,44,32,117,95,77,111,100,101,108,76,105,103,104,116,68,105,114,41,44,32,48,46,48,44,32,49,46,48,41,59,10,10,9,9,99,111,108,111,114,46,114,103,98,32,61,32,99,108,97,109,112,40,117,95,68,105,114,101,99,116,101,100,76,105,103,104,116,32,42,32,105,110,99,111,109,105,110,103,32,43,32,117,95,65,109,98,105,101,110,116,76,105,103,104,116,44,32,48,46,48,44,32,49,46,48,41,59,10,9,125,10,9,10,9,118,101,99,51,32,118,105,101,119,101,114,32,61,32,117,95,76,111,99,97,108,86,105,101,119,79,114,105,103,105,110,32,45,32,112,111,115,105,116,105,111,110,59,10,10,9,105,102,32,40,117,95,65,108,112,104,97,71,101,110,32,61,61,32,65,71,69,78,95,76,73,71,72,84,73,78,71,95,83,80,69,67,85,76,65,82,41,10,9,123,10,9,9,118,101,99,51,32,108,105,103,104,116,68,105,114,32,61,32,110,111,114,109,97,108,105,122,101,40,118,101,99,51,40,45,57,54,48,46,48,44,32,49,57,56,48,46,48,44,32,57,54,46,48,41,32,45,32,112,111,115,105,116,105,111,110,41,59,10,9,9,118,101,99,51,32,114,101,102,108,101,99,116,101,100,32,61,32,45,114,101,102,108,101,99,116,40,108,105,103,104,116,68,105,114,44,32,110,111,114,109,97,108,41,59,10,9,9,10,9,9,99,111,108,111,114,46,97,32,61,32,99,108,97,109,112,40,100,111,116,40,114,101,102,108,101,99,116,101,100,44,32,110,111,114,109,97,108,105,122,101,40,118,105,101,119,101,114,41,41,44,32,48,46,48,44,32,49,46,48,41,59,10,9,9,99,111,108,111,114,46,97,32,42,61,32,99,111,108,111,114,46,97,59,10,9,9,99,111,108,111,114,46,97,32,42,61,32,99,111,108,111,114,46,97,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,65,108,112,104,97,71,101,110,32,61,61,32,65,71,69,78,95,80,79,82,84,65,76,41,10,9,123,10,9,9,99,111,108,111,114,46,97,32,61,32,99,108,97,109,112,40,108,101,110,103,116,104,40,118,105,101,119,101,114,41,32,47,32,117,95,80,111,114,116,97,108,82,97,110,103,101,44,32,48,46,48,44,32,49,46,48,41,59,10,9,125,10,9,10,9,114,101,116,117,114,110,32,99,111,108,111,114,59,10,125,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,70,79,71,41,10,102,108,111,97,116,32,67,97,108,99,70,111,103,40,118,101,99,51,32,112,111,115,105,116,105,111,110,41,10,123,10,9,102,108,111,97,116,32,115,32,61,32,100,111,116,40,118,101,99,52,40,112,111,115,105,116,105,111,110,44,32,49,46,48,41,44,32,117,95,70,111,103,68,105,115,116,97,110,99,101,41,32,42,32,56,46,48,59,10,9,102,108,111,97,116,32,116,32,61,32,100,111,116,40,118,101,99,52,40,112,111,115,105,116,105,111,110,44,32,49,46,48,41,44,32,117,95,70,111,103,68,101,112,116,104,41,59,10,10,9,102,108,111,97,116,32,101,121,101,79,117,116,115,105,100,101,32,61,32,102,108,111,97,116,40,117,95,70,111,103,69,121,101,84,32,60,32,48,46,48,41,59,10,9,102,108,111,97,116,32,102,111,103,103,101,100,32,61,32,102,108,111,97,116,40,116,32,60,32,101,121,101,79,117,116,115,105,100,101,41,59,10,10,9,116,32,43,61,32,49,101,45,54,59,10,9,116,32,42,61,32,102,111,103,103,101,100,32,47,32,40,116,32,45,32,117,95,70,111,103,69,121,101,84,32,42,32,101,121,101,79,117,116,115,105,100,101,41,59,10,10,9,114,101,116,117,114,110,32,115,32,42,32,116,59,10,125,10,35,101,110,100,105,102,10,10,118,111,105,100,32,109,97,105,110,40,41,10,123,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,69,88,95,65,78,73,77,65,84,73,79,78,41,10,9,118,101,99,51,32,112,111,115,105,116,105,111,110,32,32,61,32,109,105,120,40,97,116,116,114,95,80,111,115,105,116,105,111,110,44,32,97,116,116,114,95,80,111,115,105,116,105,111,110,50,44,32,117,95,86,101,114,116,101,120,76,101,114,112,41,59,10,9,118,101,99,51,32,110,111,114,109,97,108,32,32,32,32,61,32,109,105,120,40,97,116,116,114,95,78,111,114,109,97,108,44,32,32,32,97,116,116,114,95,78,111,114,109,97,108,50,44,32,32,32,117,95,86,101,114,116,101,120,76,101,114,112,41,59,10,9,110,111,114,109,97,108,32,61,32,110,111,114,109,97,108,105,122,101,40,110,111,114,109,97,108,32,45,32,118,101,99,51,40,48,46,53,41,41,59,10,35,101,108,115,101,10,9,118,101,99,51,32,112,111,115,105,116,105,111,110,32,32,61,32,97,116,116,114,95,80,111,115,105,116,105,111,110,59,10,9,118,101,99,51,32,110,111,114,109,97,108,32,32,32,32,61,32,97,116,116,114,95,78,111,114,109,97,108,32,42,32,50,46,48,32,45,32,118,101,99,51,40,49,46,48,41,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,70,79,82,77,95,86,69,82,84,69,88,69,83,41,10,9,112,111,115,105,116,105,111,110,32,61,32,68,101,102,111,114,109,80,111,115,105,116,105,111,110,40,112,111,115,105,116,105,111,110,44,32,110,111,114,109,97,108,44,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,46,115,116,41,59,10,35,101,110,100,105,102,10,10,9,103,108,95,80,111,115,105,116,105,111,110,32,61,32,117,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,32,42,32,118,101,99,52,40,112,111,115,105,116,105,111,110,44,32,49,46,48,41,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,71,69,78,41,10,9,118,101,99,50,32,116,101,120,32,61,32,71,101,110,84,101,120,67,111,111,114,100,115,40,117,95,84,67,71,101,110,48,44,32,112,111,115,105,116,105,111,110,44,32,110,111,114,109,97,108,44,32,117,95,84,67,71,101,110,48,86,101,99,116,111,114,48,44,32,117,95,84,67,71,101,110,48,86,101,99,116,111,114,49,41,59,10,35,101,108,115,101,10,9,118,101,99,50,32,116,101,120,32,61,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,46,115,116,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,84,67,77,79,68,41,10,9,118,97,114,95,68,105,102,102,117,115,101,84,101,120,32,61,32,77,111,100,84,101,120,67,111,111,114,100,115,40,116,101,120,44,32,112,111,115,105,116,105,111,110,44,32,117,95,68,105,102,102,117,115,101,84,101,120,77,97,116,114,105,120,44,32,117,95,68,105,102,102,117,115,101,84,101,120,79,102,102,84,117,114,98,41,59,10,35,101,108,115,101,10,32,32,32,32], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+81924); +/* memory initializer */ allocate([118,97,114,95,68,105,102,102,117,115,101,84,101,120,32,61,32,116,101,120,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,10,9,118,97,114,95,76,105,103,104,116,84,101,120,32,61,32,97,116,116,114,95,84,101,120,67,111,111,114,100,49,46,115,116,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,82,71,66,65,71,69,78,41,10,9,118,97,114,95,67,111,108,111,114,32,61,32,67,97,108,99,67,111,108,111,114,40,112,111,115,105,116,105,111,110,44,32,110,111,114,109,97,108,41,59,10,35,101,108,115,101,10,9,118,97,114,95,67,111,108,111,114,32,61,32,117,95,86,101,114,116,67,111,108,111,114,32,42,32,97,116,116,114,95,67,111,108,111,114,32,43,32,117,95,66,97,115,101,67,111,108,111,114,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,70,79,71,41,10,9,118,97,114,95,67,111,108,111,114,32,42,61,32,118,101,99,52,40,49,46,48,41,32,45,32,117,95,70,111,103,67,111,108,111,114,77,97,115,107,32,42,32,115,113,114,116,40,99,108,97,109,112,40,67,97,108,99,70,111,103,40,112,111,115,105,116,105,111,110,41,44,32,48,46,48,44,32,49,46,48,41,41,59,10,35,101,110,100,105,102,10,125,10,0,0,0,0,0,0,0,0,70,111,117,110,100,32,117,105,32,121,115,99,97,108,101,32,111,102,102,115,101,116,32,97,116,32,48,120,37,48,56,120,10,0,0,0,0,0,0,0,103,114,97,112,112,108,101,114,101,97,99,104,0,0,0,0,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,117,95,68,105,102,102,117,115,101,77,97,112,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,117,95,76,105,103,104,116,77,97,112,59,10,10,117,110,105,102,111,114,109,32,105,110,116,32,32,32,32,32,32,32,117,95,84,101,120,116,117,114,101,49,69,110,118,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,82,71,66,65,71,69,78,41,10,117,110,105,102,111,114,109,32,105,110,116,32,32,32,32,32,32,32,117,95,65,108,112,104,97,84,101,115,116,59,10,35,101,110,100,105,102,10,10,118,97,114,121,105,110,103,32,118,101,99,50,32,32,32,32,32,32,118,97,114,95,68,105,102,102,117,115,101,84,101,120,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,10,118,97,114,121,105,110,103,32,118,101,99,50,32,32,32,32,32,32,118,97,114,95,76,105,103,104,116,84,101,120,59,10,35,101,110,100,105,102,10,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,32,32,32,118,97,114,95,67,111,108,111,114,59,10,10,10,118,111,105,100,32,109,97,105,110,40,41,10,123,10,9,118,101,99,52,32,99,111,108,111,114,32,32,61,32,116,101,120,116,117,114,101,50,68,40,117,95,68,105,102,102,117,115,101,77,97,112,44,32,118,97,114,95,68,105,102,102,117,115,101,84,101,120,41,59,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,76,73,71,72,84,77,65,80,41,10,9,118,101,99,52,32,99,111,108,111,114,50,32,61,32,116,101,120,116,117,114,101,50,68,40,117,95,76,105,103,104,116,77,97,112,44,32,118,97,114,95,76,105,103,104,116,84,101,120,41,59,10,32,32,35,105,102,32,100,101,102,105,110,101,100,40,82,71,66,77,95,76,73,71,72,84,77,65,80,41,10,9,99,111,108,111,114,50,46,114,103,98,32,42,61,32,51,50,46,48,32,42,32,99,111,108,111,114,50,46,97,59,10,9,99,111,108,111,114,50,46,97,32,61,32,49,46,48,59,10,32,32,35,101,110,100,105,102,10,10,9,105,102,32,40,117,95,84,101,120,116,117,114,101,49,69,110,118,32,61,61,32,84,69,88,69,78,86,95,77,79,68,85,76,65,84,69,41,10,9,123,10,9,9,99,111,108,111,114,32,42,61,32,99,111,108,111,114,50,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,84,101,120,116,117,114,101,49,69,110,118,32,61,61,32,84,69,88,69,78,86,95,65,68,68,41,10,9,123,10,9,9,99,111,108,111,114,32,43,61,32,99,111,108,111,114,50,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,84,101,120,116,117,114,101,49,69,110,118,32,61,61,32,84,69,88,69,78,86,95,82,69,80,76,65,67,69,41,10,9,123,10,9,9,99,111,108,111,114,32,61,32,99,111,108,111,114,50,59,10,9,125,10,9,10,9,47,47,99,111,108,111,114,32,61,32,99,111,108,111,114,32,42,32,40,117,95,84,101,120,116,117,114,101,49,69,110,118,46,120,120,120,120,32,43,32,99,111,108,111,114,50,32,42,32,117,95,84,101,120,116,117,114,101,49,69,110,118,46,122,41,32,43,32,99,111,108,111,114,50,32,42,32,117,95,84,101,120,116,117,114,101,49,69,110,118,46,121,59,10,35,101,110,100,105,102,10,10,9,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,99,111,108,111,114,32,42,32,118,97,114,95,67,111,108,111,114,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,82,71,66,65,71,69,78,41,10,9,105,102,32,40,40,117,95,65,108,112,104,97,84,101,115,116,32,61,61,32,65,84,69,83,84,95,71,84,95,48,32,38,38,32,103,108,95,70,114,97,103,67,111,108,111,114,46,97,32,60,61,32,48,46,48,41,32,124,124,10,9,32,32,32,32,40,117,95,65,108,112,104,97,84,101,115,116,32,61,61,32,65,84,69,83,84,95,76,84,95,56,48,32,38,38,32,103,108,95,70,114,97,103,67,111,108,111,114,46,97,32,62,61,32,48,46,53,41,32,124,124,10,9,32,32,32,32,40,117,95,65,108,112,104,97,84,101,115,116,32,61,61,32,65,84,69,83,84,95,71,69,95,56,48,32,38,38,32,103,108,95,70,114,97,103,67,111,108,111,114,46,97,32,60,32,48,46,53,41,41,10,9,123,10,9,9,100,105,115,99,97,114,100,59,10,9,125,10,35,101,110,100,105,102,10,125,10,0,0,0,0,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,32,97,116,116,114,95,80,111,115,105,116,105,111,110,59,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,32,97,116,116,114,95,78,111,114,109,97,108,59,10,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,69,88,95,65,78,73,77,65,84,73,79,78,41,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,32,97,116,116,114,95,80,111,115,105,116,105,111,110,50,59,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,32,97,116,116,114,95,78,111,114,109,97,108,50,59,10,35,101,110,100,105,102,10,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,32,117,95,70,111,103,68,105,115,116,97,110,99,101,59,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,32,117,95,70,111,103,68,101,112,116,104,59,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,32,117,95,70,111,103,69,121,101,84,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,70,79,82,77,95,86,69,82,84,69,88,69,83,41,10,117,110,105,102,111,114,109,32,105,110,116,32,32,32,32,32,117,95,68,101,102,111,114,109,71,101,110,59,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,53,93,59,10,35,101,110,100,105,102,10,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,32,117,95,84,105,109,101,59,10,117,110,105,102,111,114,109,32,109,97,116,52,32,32,32,32,117,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,69,88,95,65,78,73,77,65,84,73,79,78,41,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,32,117,95,86,101,114,116,101,120,76,101,114,112,59,10,35,101,110,100,105,102,10,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,117,95,67,111,108,111,114,59,10,10,118,97,114,121,105,110,103,32,102,108,111,97,116,32,32,32,118,97,114,95,83,99,97,108,101,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,70,79,82,77,95,86,69,82,84,69,88,69,83,41,10,118,101,99,51,32,68,101,102,111,114,109,80,111,115,105,116,105,111,110,40,99,111,110,115,116,32,118,101,99,51,32,112,111,115,44,32,99,111,110,115,116,32,118,101,99,51,32,110,111,114,109,97,108,44,32,99,111,110,115,116,32,118,101,99,50,32,115,116,41,10,123,10,9,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,48,41,10,9,123,10,9,9,114,101,116,117,114,110,32,112,111,115,59,10,9,125,10,10,9,102,108,111,97,116,32,98,97,115,101,32,61,32,32,32,32,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,48,93,59,10,9,102,108,111,97,116,32,97,109,112,108,105,116,117,100,101,32,61,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,49,93,59,10,9,102,108,111,97,116,32,112,104,97,115,101,32,61,32,32,32,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,50,93,59,10,9,102,108,111,97,116,32,102,114,101,113,117,101,110,99,121,32,61,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,51,93,59,10,9,102,108,111,97,116,32,115,112,114,101,97,100,32,61,32,32,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,52,93,59,10,10,9,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,66,85,76,71,69,41,10,9,123,10,9,9,112,104,97,115,101,32,42,61,32,115,116,46,120,59,10,9,125,10,9,101,108,115,101,32,47,47,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,60,61,32,68,71,69,78,95,87,65,86,69,95,73,78,86,69,82,83,69,95,83,65,87,84,79,79,84,72,41,10,9,123,10,9,9,112,104,97,115,101,32,43,61,32,100,111,116,40,112,111,115,46,120,121,122,44,32,118,101,99,51,40,115,112,114,101,97,100,41,41,59,10,9,125,10,10,9,102,108,111,97,116,32,118,97,108,117,101,32,61,32,112,104,97,115,101,32,43,32,40,117,95,84,105,109,101,32,42,32,102,114,101,113,117,101,110,99,121,41,59,10,9,102,108,111,97,116,32,102,117,110,99,59,10,10,9,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,83,73,78,41,10,9,123,10,9,9,102,117,110,99,32,61,32,115,105,110,40,118,97,108,117,101,32,42,32,50,46,48,32,42,32,77,95,80,73,41,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,83,81,85,65,82,69,41,10,9,123,10,9,9,102,117,110,99,32,61,32,115,105,103,110,40,48,46,53,32,45,32,102,114,97,99,116,40,118,97,108,117,101,41,41,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,84,82,73,65,78,71,76,69,41,10,9,123,10,9,9,102,117,110,99,32,61,32,97,98,115,40,102,114,97,99,116,40,118,97,108,117,101,32,43,32,48,46,55,53,41,32,45,32,48,46,53,41,32,42,32,52,46,48,32,45,32,49,46,48,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,83,65,87,84,79,79,84,72,41,10,9,123,10,9,9,102,117,110,99,32,61,32,102,114,97,99,116,40,118,97,108,117,101,41,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,73,78,86,69,82,83,69,95,83,65,87,84,79,79,84,72,41,10,9,123,10,9,9,102,117,110,99,32,61,32,40,49,46,48,32,45,32,102,114,97,99,116,40,118,97,108,117,101,41,41,59,10,9,125,10,9,101,108,115,101,32,47,47,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,66,85,76,71,69,41,10,9,123,10,9,9,102,117,110,99,32,61,32,115,105,110,40,118,97,108,117,101,41,59,10,9,125,10,10,9,114,101,116,117,114,110,32,112,111,115,32,43,32,110,111,114,109,97,108,32,42,32,40,98,97,115,101,32,43,32,102,117,110,99,32,42,32,97,109,112,108,105,116,117,100,101,41,59,10,125,10,35,101,110,100,105,102,10,10,102,108,111,97,116,32,67,97,108,99,70,111,103,40,118,101,99,51,32,112,111,115,105,116,105,111,110,41,10,123,10,9,102,108,111,97,116,32,115,32,61,32,100,111,116,40,118,101,99,52,40,112,111,115,105,116,105,111,110,44,32,49,46,48,41,44,32,117,95,70,111,103,68,105,115,116,97,110,99,101,41,32,42,32,56,46,48,59,10,9,102,108,111,97,116,32,116,32,61,32,100,111,116,40,118,101,99,52,40,112,111,115,105,116,105,111,110,44,32,49,46,48,41,44,32,117,95,70,111,103,68,101,112,116,104,41,59,10,10,9,102,108,111,97,116,32,101,121,101,79,117,116,115,105,100,101,32,61,32,102,108,111,97,116,40,117,95,70,111,103,69,121,101,84,32,60,32,48,46,48,41,59,10,9,102,108,111,97,116,32,102,111,103,103,101,100,32,61,32,102,108,111,97,116,40,116,32,62,61,32,101,121,101,79,117,116,115,105,100,101,41,59,10,10,9,116,32,43,61,32,49,101,45,54,59,10,9,116,32,42,61,32,102,111,103,103,101,100,32,47,32,40,116,32,45,32,117,95,70,111,103,69,121,101,84,32,42,32,101,121,101,79,117,116,115,105,100,101,41,59,10,10,9,114,101,116,117,114,110,32,115,32,42,32,116,59,10,125,10,10,118,111,105,100,32,109,97,105,110,40,41,10,123,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,86,69,82,84,69,88,95,65,78,73,77,65,84,73,79,78,41,10,9,118,101,99,51,32,112,111,115,105,116,105,111,110,32,61,32,109,105,120,40,97,116,116,114,95,80,111,115,105,116,105,111,110,44,32,97,116,116,114,95,80,111,115,105,116,105,111,110,50,44,32,117,95,86,101,114,116,101,120,76,101,114,112,41,59,10,9,118,101,99,51,32,110,111,114,109,97,108,32,32,32,61,32,109,105,120,40,97,116,116,114,95,78,111,114,109,97,108,44,32,32,32,97,116,116,114,95,78,111,114,109,97,108,50,44,32,32,32,117,95,86,101,114,116,101,120,76,101,114,112,41,59,10,9,110,111,114,109,97,108,32,61,32,110,111,114,109,97,108,105,122,101,40,110,111,114,109,97,108,32,45,32,118,101,99,51,40,48,46,53,41,41,59,10,35,101,108,115,101,10,9,118,101,99,51,32,112,111,115,105,116,105,111,110,32,61,32,97,116,116,114,95,80,111,115,105,116,105,111,110,59,10,9,118,101,99,51,32,110,111,114,109,97,108,32,32,32,61,32,97,116,116,114,95,78,111,114,109,97,108,32,42,32,50,46,48,32,45,32,118,101,99,51,40,49,46,48,41,59,10,35,101,110,100,105,102,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,70,79,82,77,95,86,69,82,84,69,88,69,83,41,10,9,112,111,115,105,116,105,111,110,46,120,121,122,32,61,32,68,101,102,111,114,109,80,111,115,105,116,105,111,110,40,112,111,115,105,116,105,111,110,46,120,121,122,44,32,110,111,114,109,97,108,44,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,46,115,116,41,59,10,35,101,110,100,105,102,10,10,9,103,108,95,80,111,115,105,116,105,111,110,32,61,32,117,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,32,42,32,118,101,99,52,40,112,111,115,105,116,105,111,110,44,32,49,46,48,41,59,10,10,9,118,97,114,95,83,99,97,108,101,32,61,32,67,97,108,99,70,111,103,40,112,111,115,105,116,105,111,110,41,32,42,32,117,95,67,111,108,111,114,46,97,32,42,32,117,95,67,111,108,111,114,46,97,59,10,125,10,0,103,101,116,99,104,97,108,108,101,110,103,101,0,0,0,0,115,101,114,118,101,114,98,97,110,115,46,100,97,116,0,0,117,110,105,102,111,114,109,32,118,101,99,52,32,32,117,95,67,111,108,111,114,59,10,10,118,97,114,121,105,110,103,32,102,108,111,97,116,32,118,97,114,95,83,99,97,108,101,59,10,10,118,111,105,100,32,109,97,105,110,40,41,10,123,10,9,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,117,95,67,111,108,111,114,59,10,9,103,108,95,70,114,97,103,67,111,108,111,114,46,97,32,61,32,115,113,114,116,40,99,108,97,109,112,40,118,97,114,95,83,99,97,108,101,44,32,48,46,48,44,32,49,46,48,41,41,59,10,125,10,0,87,65,82,78,73,78,71,58,32,98,97,100,32,99,111,109,109,97,110,100,32,98,121,116,101,32,102,111,114,32,99,108,105,101,110,116,32,37,105,10,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,32,37,52,100,32,37,102,10,0,0,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,118,101,99,116,111,114,32,119,105,116,104,32,111,110,101,32,111,114,32,109,111,114,101,32,78,97,78,32,99,111,109,112,111,110,101,110,116,115,32,98,101,105,110,103,32,112,97,115,115,101,100,32,116,111,32,79,112,101,110,65,76,32,97,116,32,37,115,58,37,100,32,45,45,32,122,101,114,111,105,110,103,10,0,0,0,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,80,111,115,105,116,105,111,110,59,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,59,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,97,116,116,114,95,78,111,114,109,97,108,59,10,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,68,108,105,103,104,116,73,110,102,111,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,70,79,82,77,95,86,69,82,84,69,88,69,83,41,10,117,110,105,102,111,114,109,32,105,110,116,32,32,32,32,117,95,68,101,102,111,114,109,71,101,110,59,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,53,93,59,10,117,110,105,102,111,114,109,32,102,108,111,97,116,32,32,117,95,84,105,109,101,59,10,35,101,110,100,105,102,10,10,117,110,105,102,111,114,109,32,118,101,99,52,32,32,32,117,95,67,111,108,111,114,59,10,117,110,105,102,111,114,109,32,109,97,116,52,32,32,32,117,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,59,10,10,118,97,114,121,105,110,103,32,118,101,99,50,32,32,32,118,97,114,95,84,101,120,49,59,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,118,97,114,95,67,111,108,111,114,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,70,79,82,77,95,86,69,82,84,69,88,69,83,41,10,118,101,99,51,32,68,101,102,111,114,109,80,111,115,105,116,105,111,110,40,99,111,110,115,116,32,118,101,99,51,32,112,111,115,44,32,99,111,110,115,116,32,118,101,99,51,32,110,111,114,109,97,108,44,32,99,111,110,115,116,32,118,101,99,50,32,115,116,41,10,123,10,9,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,48,41,10,9,123,10,9,9,114,101,116,117,114,110,32,112,111,115,59,10,9,125,10,10,9,102,108,111,97,116,32,98,97,115,101,32,61,32,32,32,32,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,48,93,59,10,9,102,108,111,97,116,32,97,109,112,108,105,116,117,100,101,32,61,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,49,93,59,10,9,102,108,111,97,116,32,112,104,97,115,101,32,61,32,32,32,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,50,93,59,10,9,102,108,111,97,116,32,102,114,101,113,117,101,110,99,121,32,61,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,51,93,59,10,9,102,108,111,97,116,32,115,112,114,101,97,100,32,61,32,32,32,32,117,95,68,101,102,111,114,109,80,97,114,97,109,115,91,52,93,59,10,10,9,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,66,85,76,71,69,41,10,9,123,10,9,9,112,104,97,115,101,32,42,61,32,115,116,46,120,59,10,9,125,10,9,101,108,115,101,32,47,47,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,60,61,32,68,71,69,78,95,87,65,86,69,95,73,78,86,69,82,83,69,95,83,65,87,84,79,79,84,72,41,10,9,123,10,9,9,112,104,97,115,101,32,43,61,32,100,111,116,40,112,111,115,46,120,121,122,44,32,118,101,99,51,40,115,112,114,101,97,100,41,41,59,10,9,125,10,10,9,102,108,111,97,116,32,118,97,108,117,101,32,61,32,112,104,97,115,101,32,43,32,40,117,95,84,105,109,101,32,42,32,102,114,101,113,117,101,110,99,121,41,59,10,9,102,108,111,97,116,32,102,117,110,99,59,10,10,9,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,83,73,78,41,10,9,123,10,9,9,102,117,110,99,32,61,32,115,105,110,40,118,97,108,117,101,32,42,32,50,46,48,32,42,32,77,95,80,73,41,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,83,81,85,65,82,69,41,10,9,123,10,9,9,102,117,110,99,32,61,32,115,105,103,110,40,48,46,53,32,45,32,102,114,97,99,116,40,118,97,108,117,101,41,41,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,84,82,73,65,78,71,76,69,41,10,9,123,10,9,9,102,117,110,99,32,61,32,97,98,115,40,102,114,97,99,116,40,118,97,108,117,101,32,43,32,48,46,55,53,41,32,45,32,48,46,53,41,32,42,32,52,46,48,32,45,32,49,46,48,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,83,65,87,84,79,79,84,72,41,10,9,123,10,9,9,102,117,110,99,32,61,32,102,114,97,99,116,40,118,97,108,117,101,41,59,10,9,125,10,9,101,108,115,101,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,87,65,86,69,95,73,78,86,69,82,83,69,95,83,65,87,84,79,79,84,72,41,10,9,123,10,9,9,102,117,110,99,32,61,32,40,49,46,48,32,45,32,102,114,97,99,116,40,118,97,108,117,101,41,41,59,10,9,125,10,9,101,108,115,101,32,47,47,32,105,102,32,40,117,95,68,101,102,111,114,109,71,101,110,32,61,61,32,68,71,69,78,95,66,85,76,71,69,41,10,9,123,10,9,9,102,117,110,99,32,61,32,115,105,110,40,118,97,108,117,101,41,59,10,9,125,10,10,9,114,101,116,117,114,110,32,112,111,115,32,43,32,110,111,114,109,97,108,32,42,32,40,98,97,115,101,32,43,32,102,117,110,99,32,42,32,97,109,112,108,105,116,117,100,101,41,59,10,125,10,35,101,110,100,105,102,10,10,118,111,105,100,32,109,97,105,110,40,41,10,123,10,9,118,101,99,51,32,112,111,115,105,116,105,111,110,32,61,32,97,116,116,114,95,80,111,115,105,116,105,111,110,59,10,9,118,101,99,51,32,110,111,114,109,97,108,32,61,32,97,116,116,114,95,78,111,114,109,97,108,32,42,32,50,46,48,32,45,32,118,101,99,51,40,49,46,48,41,59,10,10,35,105,102,32,100,101,102,105,110,101,100,40,85,83,69,95,68,69,70,79,82,77,95,86,69,82,84,69,88,69,83,41,10,9,112,111,115,105,116,105,111,110,32,61,32,68,101,102,111,114,109,80,111,115,105,116,105,111,110,40,112,111,115,105,116,105,111,110,44,32,110,111,114,109,97,108,44,32,97,116,116,114,95,84,101,120,67,111,111,114,100,48,46,115,116,41,59,10,35,101,110,100,105,102,10,10,9,103,108,95,80,111,115,105,116,105,111,110,32,61,32,117,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,32,42,32,118,101,99,52,40,112,111,115,105,116,105,111,110,44,32,49,46,48,41,59,10,9,9,10,9,118,101,99,51,32,100,105,115,116,32,61,32,117,95,68,108,105,103,104,116,73,110,102,111,46,120,121,122,32,45,32,112,111,115,105,116,105,111,110,59,10,10,9,118,97,114,95,84,101,120,49,32,61,32,100,105,115,116,46,120,121,32,42,32,117,95,68,108,105,103,104,116,73,110,102,111,46,97,32,43,32,118,101,99,50,40,48,46,53,41,59,10,9,102,108,111,97,116,32,100,108,105,103,104,116,109,111,100,32,61,32,115,116,101,112,40,48,46,48,44,32,100,111,116,40,100,105,115,116,44,32,110,111,114,109,97,108,41,41,59,10,9,100,108,105,103,104,116,109,111,100,32,42,61,32,99,108,97,109,112,40,50,46,48,32,42,32,40,49,46,48,32,45,32,97,98,115,40,100,105,115,116,46,122,41,32,42,32,117,95,68,108,105,103,104,116,73,110,102,111,46,97,41,44,32,48,46,48,44,32,49,46,48,41,59,10,9,10,9,118,97,114,95,67,111,108,111,114,32,61,32,117,95,67,111,108,111,114,32,42,32,100,108,105,103,104,116,109,111,100,59,10,125,10,0,0,0,0,0,0,0,110,101,116,95,100,114,111,112,115,105,109,0,0,0,0,0,65,65,83,95,65,114,101,97,80,114,101,115,101,110,99,101,84,121,112,101,58,32,105,110,118,97,108,105,100,32,97,114,101,97,32,110,117,109,98,101,114,10,0,0,0,0,0,0,74,79,89,50,50,0,0,0,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,117,95,68,105,102,102,117,115,101,77,97,112,59,10,10,118,97,114,121,105,110,103,32,118,101,99,50,32,32,32,32,32,32,118,97,114,95,84,101,120,49,59,10,118,97,114,121,105,110,103,32,118,101,99,52,32,32,32,32,32,32,118,97,114,95,67,111,108,111,114,59,10,10,10,118,111,105,100,32,109,97,105,110,40,41,10,123,10,9,118,101,99,52,32,99,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,117,95,68,105,102,102,117,115,101,77,97,112,44,32,118,97,114,95,84,101,120,49,41,59,10,10,9,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,99,111,108,111,114,32,42,32,118,97,114,95,67,111,108,111,114,59,10,10,9,105,102,32,40,103,108,95,70,114,97,103,67,111,108,111,114,46,97,32,61,61,32,48,46,48,41,32,123,10,9,9,100,105,115,99,97,114,100,59,10,9,125,10,125,10,0,0,37,51,105,58,32,35,37,45,51,105,32,0,0,0,0,0,109,97,112,115,47,37,115,46,114,99,100,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,0,0,0,0,32,111,117,116,32,111,102,32,114,97,110,103,101,32,40,109,105,110,32,37,100,41,0,0,111,114,105,103,105,110,0,0,43,98,117,116,116,111,110,49,49,0,0,0,0,0,0,0,112,104,121,115,95,119,97,116,101,114,102,114,105,99,116,105,111,110,0,0,0,0,0,0,32,32,32,32,32,32,32,32,37,56,105,32,98,121,116,101,115,32,105,110,32,115,109,97,108,108,32,90,111,110,101,32,109,101,109,111,114,121,10,0,99,111,117,108,100,110,39,116,32,119,114,105,116,101,32,37,115,10,0,0,0,0,0,0,115,118,95,109,97,112,67,104,101,99,107,115,117,109,0,0,65,65,83,95,69,110,116,105,116,121,77,111,100,101,108,78,117,109,58,32,101,110,116,110,117,109,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,65,65,83,95,77,65,88,95,80,79,82,84,65,76,83,10,0,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,86,77,32,112,114,111,103,114,97,109,32,99,111,117,110,116,101,114,32,111,117,116,32,111,102,32,114,97,110,103,101,32,105,110,32,79,80,95,74,85,77,80,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,51,102,118,0,0,0,0,70,73,88,73,78,71,32,69,78,84,45,62,83,46,78,85,77,66,69,82,33,33,33,10,0,0,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,74,80,69,71,32,112,114,111,99,101,115,115,58,32,83,79,70,32,116,121,112,101,32,48,120,37,48,50,120,0,0,0,0,0,0,0,46,46,46,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,32,110,111,116,32,112,114,111,112,101,114,108,121,32,115,117,112,112,111,114,116,101,100,33,10,0,0,0,89,111,117,32,109,117,115,116,32,98,101,32,105,110,32,97,32,108,101,118,101,108,32,116,111,32,114,101,99,111,114,100,46,10,0,0,0,0,0,0,37,105,32,116,111,116,97,108,32,115,104,97,100,101,114,115,10,0,0,0,0,0,0,0,114,95,109,111,100,101,0,0,49,0,0,0,0,0,0,0,113,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,78,79,82,77,65,76,32,41,10,0,0,0,0,0,81,117,97,107,101,51,65,114,101,110,97,0,0,0,0,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,65,82,66,0,110,117,109,98,101,114,32,108,111,110,103,101,114,32,116,104,97,110,32,77,65,88,95,84,79,75,69,78,32,61,32,37,100,0,0,0,0,0,0,0,83,86,95,71,101,116,85,115,101,114,105,110,102,111,58,32,98,117,102,102,101,114,83,105,122,101,32,61,61,32,37,105,0,0,0,0,0,0,0,0,43,43,32,111,114,32,45,45,32,117,115,101,100,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,0,0,0,0,66,97,100,32,103,97,109,101,32,115,121,115,116,101,109,32,116,114,97,112,58,32,37,108,100,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,32,91,44,32,102,111,117,110,100,32,37,115,0,0,0,0,70,111,117,110,100,32,117,105,32,120,115,99,97,108,101,32,111,102,102,115,101,116,32,97,116,32,48,120,37,48,56,120,10,0,0,0,0,0,0,0,102,111,114,99,101,114,101,97,99,104,97,98,105,108,105,116,121,0,0,0,0,0,0,0,103,101,116,105,110,102,111,0,83,86,67,95,68,105,114,101,99,116,67,111,110,110,101,99,116,32,40,41,10,0,0,0,115,118,95,98,97,110,70,105,108,101,0,0,0,0,0,0,37,115,32,97,99,107,110,111,119,108,101,100,103,101,100,32,103,97,109,101,115,116,97,116,101,10,0,0,0,0,0,0,103,95,103,97,109,101,116,121,112,101,0,0,0,0,0,0,83,95,85,112,100,97,116,101,69,110,116,105,116,121,80,111,115,105,116,105,111,110,58,32,98,97,100,32,101,110,116,105,116,121,110,117,109,32,37,105,0,0,0,0,0,0,0,0,73,110,105,116,105,97,108,105,122,105,110,103,32,79,112,101,110,71,76,32,100,105,115,112,108,97,121,10,0,0,0,0,110,101,116,95,115,111,99,107,115,80,97,115,115,119,111,114,100,0,0,0,0,0,0,0,74,79,89,50,49,0,0,0,105,110,118,97,108,105,100,32,101,110,116,105,116,121,83,116,97,116,101,32,102,105,101,108,100,32,99,111,117,110,116,0,115,116,97,116,117,115,0,0,68,105,114,101,99,116,111,114,121,32,111,102,32,37,115,32,37,115,10,0,0,0,0,0,87,65,82,78,73,78,71,58,32,99,118,97,114,32,39,37,115,39,0,0,0,0,0,0,98,111,116,95,104,105,103,104,108,105,103,104,116,97,114,101,97,0,0,0,0,0,0,0,112,108,97,121,40,37,115,41,44,32,82,79,81,83,105,122,101,60,61,48,10,0,0,0,102,111,117,110,100,32,99,108,117,115,116,101,114,58,37,105,32,32,97,114,101,97,58,37,105,32,32,105,110,100,101,120,58,37,105,10,0,0,0,0,115,95,97,108,68,111,112,112,108,101,114,70,97,99,116,111,114,0,0,0,0,0,0,0,100,97,116,97,0,0,0,0,45,98,117,116,116,111,110,49,48,0,0,0,0,0,0,0,32,32,32,32,32,32,32,32,37,56,105,32,98,121,116,101,115,32,105,110,32,100,121,110,97,109,105,99,32,111,116,104,101,114,10,0,0,0,0,0,48,46,50,53,0,0,0,0,37,53,100,32,115,112,101,101,100,10,0,0,0,0,0,0,79,118,101,114,115,105,122,101,32,112,97,99,107,101,116,32,102,114,111,109,32,37,115,10,0,0,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,50,102,118,0,0,0,0,78,101,116,99,104,97,110,95,84,114,97,110,115,109,105,116,58,32,108,101,110,103,116,104,32,61,32,37,105,0,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,109,105,115,115,105,110,103,32,83,79,83,32,109,97,114,107,101,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,0,0,0,0,0,0,58,32,37,115,10,0,0,0,98,97,100,32,118,98,111,85,115,97,103,101,95,116,32,103,105,118,101,110,58,32,37,105,0,0,0,0,0,0,0,0,114,95,105,103,110,111,114,101,104,119,103,97,109,109,97,0,77,83,71,95,87,114,105,116,101,83,116,114,105,110,103,58,32,66,73,71,95,73,78,70,79,95,83,84,82,73,78,71,0,0,0,0,0,0,0,0,114,95,105,110,116,101,110,115,105,116,121,0,0,0,0,0,113,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,76,73,71,72,84,67,79,79,82,68,32,41,10,0,0,0,0,0,0,0,0,71,76,95,65,82,66,95,118,101,114,116,101,120,95,115,104,97,100,101,114,0,0,0,0,98,105,110,97,114,121,32,110,117,109,98,101,114,32,108,111,110,103,101,114,32,116,104,97,110,32,77,65,88,95,84,79,75,69,78,32,61,32,37,100,0,0,0,0,0,0,0,0,33,32,111,114,32,126,32,97,102,116,101,114,32,118,97,108,117,101,32,105,110,32,35,105,102,47,35,101,108,105,102,0,82,66,95,67,104,101,99,107,79,118,101,114,102,108,111,119,58,32,118,101,114,116,115,32,62,32,77,65,88,32,40,37,100,32,62,32,37,100,41,0,118,97,114,105,97,98,108,101,115,32,102,114,111,109,32,116,104,101,32,109,97,116,99,104,32,116,101,109,112,108,97,116,101,40,115,41,32,99,111,117,108,100,32,98,101,32,105,110,118,97,108,105,100,32,119,104,101,110,32,111,117,116,112,117,116,116,105,110,103,32,111,110,101,32,111,102,32,116,104,101,32,99,104,97,116,32,109,101,115,115,97,103,101,115,0,0,102,97,115,116,0,0,0,0,58,58,0,0,0,0,0,0,99,97,108,99,117,108,97,116,105,110,103,32,99,108,117,115,116,101,114,115,46,46,46,10,0,0,0,0,0,0,0,0,83,72,65,68,69,82,95,77,65,88,95,86,69,82,84,69,88,69,83,32,104,105,116,32,105,110,32,68,114,97,119,83,107,121,83,105,100,101,86,66,79,40,41,0,0,0,0,0,103,101,116,115,116,97,116,117,115,0,0,0,0,0,0,0,115,118,95,108,97,110,70,111,114,99,101,82,97,116,101,0,37,115,32,58,32,100,114,111,112,112,101,100,32,103,97,109,101,115,116,97,116,101,44,32,114,101,115,101,110,100,105,110,103,10,0,0,0,0,0,0,67,97,110,39,116,32,102,105,110,100,32,109,97,112,32,37,115,10,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,67,97,110,110,111,116,32,103,101,116,32,115,97,109,112,108,101,32,111,102,102,115,101,116,32,102,114,111,109,32,115,111,117,114,99,101,32,37,100,58,32,37,115,10,0,34,37,115,34,32,105,115,58,34,37,115,94,55,34,0,0,110,101,116,95,115,111,99,107,115,85,115,101,114,110,97,109,101,0,0,0,0,0,0,0,74,79,89,50,48,0,0,0,68,79,87,78,65,82,82,79,87,0,0,0,0,0,0,0,37,51,105,58,32,35,37,45,51,105,32,114,101,109,111,118,101,10,0,0,0,0,0,0,117,115,97,103,101,58,32,100,105,114,32,60,100,105,114,101,99,116,111,114,121,62,32,91,101,120,116,101,110,115,105,111,110,93,10,0,0,0,0,0,32,97,110,100,32,105,115,0,43,98,117,116,116,111,110,49,48,0,0,0,0,0,0,0,32,32,32,32,32,32,32,32,37,56,105,32,98,121,116,101,115,32,105,110,32,100,121,110,97,109,105,99,32,114,101,110,100,101,114,101,114,10,0,0,103,108,85,110,105,102,111,114,109,49,102,118,0,0,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,116,119,111,32,83,79,70,32,109,97,114,107,101,114,115,0,0,0,0,46,46,46,71,76,95,69,88,84,95,99,111,109,112,105,108,101,100,95,118,101,114,116,101,120,95,97,114,114,97,121,32,110,111,116,32,102,111,117,110,100,10,0,0,0,0,0,0,58,32,37,115,32,40,68,69,70,65,85,76,84,69,68,41,10,0,0,0,0,0,0,0,114,95,111,118,101,114,66,114,105,103,104,116,66,105,116,115,0,0,0,0,0,0,0,0,42,114,101,110,100,101,114,67,117,98,101,0,0,0,0,0,113,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,76,73,71,72,84,67,79,79,82,68,32,41,10,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,65,82,66,0,0,0,0,115,118,99,95,98,97,100,0,104,101,120,97,100,101,99,105,109,97,108,32,110,117,109,98,101,114,32,108,111,110,103,101,114,32,116,104,97,110,32,77,65,88,95,84,79,75,69,78,32,61,32,37,100,0,0,0,105,108,108,105,103,97,108,32,111,112,101,114,97,116,111,114,32,37,115,32,111,110,32,102,108,111,97,116,105,110,103,32,112,111,105,110,116,32,111,112,101,114,97,110,100,115,0,0,49,48,48,48,0,0,0,0,97,108,108,32,107,101,121,115,32,104,97,118,101,32,97,32,38,32,111,114,32,33,32,112,114,101,102,105,120,0,0,0,99,108,95,112,97,117,115,101,100,0,0,0,0,0,0,0,10,112,108,101,97,115,101,32,119,97,105,116,32,119,104,105,108,101,32,115,116,111,114,105,110,103,32,114,101,97,99,104,97,98,105,108,105,116,121,46,46,46,10,0,0,0,0,0,83,86,32,112,97,99,107,101,116,32,37,115,32,58,32,37,115,10,0,0,0,0,0,0,115,118,95,109,97,112,67,104,101,99,107,115,117,109,0,0,37,115,32,58,32,105,103,110,111,114,105,110,103,32,112,114,101,32,109,97,112,95,114,101,115,116,97,114,116,32,47,32,111,117,116,100,97,116,101,100,32,99,108,105,101,110,116,32,109,101,115,115,97,103,101,10,0,0,0,0,0,0,0,0,102,115,95,99,111,109,112,108,101,116,101,77,97,110,105,102,101,115,116,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,67,111,117,108,100,32,110,111,116,32,103,101,116,32,116,105,109,101,32,111,102,102,115,101,116,32,102,111,114,32,97,108,83,111,117,114,99,101,32,37,100,58,32,37,115,10,0,0,0,0,0,0,0,49,48,56,48,0,0,0,0,74,79,89,49,57,0,0,0,66,97,100,32,100,101,108,116,97,32,101,110,116,105,116,121,32,110,117,109,98,101,114,58,32,37,105,0,0,0,0,0,47,100,101,115,99,114,105,112,116,105,111,110,46,116,120,116,0,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,99,118,97,114,32,39,37,115,39,32,109,117,115,116,32,98,101,32,110,117,109,101,114,105,99,0,0,0,0,0,0,45,98,117,116,116,111,110,57,0,0,0,0,0,0,0,0,67,76,95,71,101,116,83,101,114,118,101,114,67,111,109,109,97,110,100,58,32,97,32,114,101,108,105,97,98,108,101,32,99,111,109,109,97,110,100,32,119,97,115,32,99,121,99,108,101,100,32,111,117,116,0,0,32,32,32,32,32,32,32,32,37,56,105,32,98,121,116,101,115,32,105,110,32,100,121,110,97,109,105,99,32,98,111,116,108,105,98,10,0,0,0,0,87,65,82,78,73,78,71,58,32,35,52,54,50,32,117,110,115,101,110,116,32,102,114,97,103,109,101,110,116,115,32,40,110,111,116,32,115,117,112,112,111,115,101,100,32,116,111,32,104,97,112,112,101,110,33,41,10,0,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,52,105,118,0,0,0,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,116,111,32,109,111,114,101,32,116,104,97,110,32,37,100,32,99,111,108,111,114,115,0,0,46,46,46,105,103,110,111,114,105,110,103,32,71,76,95,69,88,84,95,99,111,109,112,105,108,101,100,95,118,101,114,116,101,120,95,97,114,114,97,121,10,0,0,0,0,0,0,0,32,32,32,32], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+92164); +/* memory initializer */ allocate([0,0,0,0,114,95,101,120,116,95,109,117,108,116,105,115,97,109,112,108,101,0,0,0,0,0,0,0,42,115,99,114,101,101,110,83,104,97,100,111,119,0,0,0,113,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,84,69,88,67,79,79,82,68,32,41,10,0,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,65,82,66,0,0,0,0,0,0,0,40,37,99,41,0,0,0,0,110,97,109,101,32,108,111,110,103,101,114,32,116,104,97,110,32,77,65,88,95,84,79,75,69,78,32,61,32,37,100,0,116,111,111,32,109,97,110,121,32,41,32,105,110,32,35,105,102,47,35,101,108,115,105,102,0,0,0,0,0,0,0,0,100,114,111,112,112,101,100,119,101,105,103,104,116,0,0,0,116,104,101,32,107,101,121,32,37,115,32,119,105,116,104,32,112,114,101,102,105,120,32,33,32,105,115,32,105,110,115,105,100,101,32,116,104,101,32,109,97,116,99,104,32,116,101,109,112,108,97,116,101,32,115,116,114,105,110,103,32,37,115,0,118,100,114,0,0,0,0,0,13,37,54,46,49,102,37,37,0,0,0,0,0,0,0,0,80,114,101,100,105,99,116,77,111,118,101,109,101,110,116,58,32,115,116,97,114,116,32,115,111,108,105,100,10,0,0,0,114,101,99,117,114,115,105,118,101,32,101,114,114,111,114,32,97,102,116,101,114,58,32,37,115,0,0,0,0,0,0,0,99,111,110,110,101,99,116,0,115,118,95,107,105,108,108,115,101,114,118,101,114,0,0,0,110,101,120,116,100,108,0,0,37,115,46,112,107,51,0,0,94,49,69,82,82,79,82,58,32,119,104,105,108,101,32,98,117,102,102,101,114,105,110,103,32,100,97,116,97,32,102,111,114,32,109,117,115,105,99,32,115,116,114,101,97,109,32,45,32,37,115,10,0,0,0,0,110,101,116,95,115,111,99,107,115,80,111,114,116,0,0,0,74,79,89,49,56,0,0,0,77,83,71,95,87,114,105,116,101,68,101,108,116,97,69,110,116,105,116,121,58,32,66,97,100,32,101,110,116,105,116,121,32,110,117,109,98,101,114,58,32,37,105,0,0,0,0,0,46,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,99,118,97,114,32,39,37,115,39,32,109,117,115,116,32,98,101,32,105,110,116,101,103,114,97,108,0,0,0,0,0,43,98,117,116,116,111,110,57,0,0,0,0,0,0,0,0,37,56,105,32,98,121,116,101,115,32,105,110,32,37,105,32,122,111,110,101,32,98,108,111,99,107,115,10,0,0,0,0,103,108,85,110,105,102,111,114,109,51,105,118,0,0,0,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,116,111,32,102,101,119,101,114,32,116,104,97,110,32,37,100,32,99,111,108,111,114,115,0,101,120,101,99,113,0,0,0,98,97,100,32,103,101,116,112,114,111,99,97,100,100,114,101,115,115,0,0,0,0,0,0,115,107,121,32,0,0,0,0,114,95,100,101,112,116,104,98,105,116,115,0,0,0,0,0,42,115,117,110,115,104,97,100,111,119,100,101,112,116,104,37,105,0,0,0,0,0,0,0,113,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,84,69,88,67,79,79,82,68,32,41,10,0,0,0,87,65,82,78,73,78,71,58,32,82,95,82,101,109,97,112,83,104,97,100,101,114,58,32,115,104,97,100,101,114,32,37,115,32,110,111,116,32,102,111,117,110,100,10,0,0,0,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,65,82,66,0,0,0,0,0,0,0,32,85,58,48,120,37,48,50,120,0,0,0,0,0,0,0,110,101,119,108,105,110,101,32,105,110,115,105,100,101,32,115,116,114,105,110,103,32,37,115,0,0,0,0,0,0,0,0,109,105,115,112,108,97,99,101,100,32,109,105,110,117,115,32,115,105,103,110,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,0,0,0,0,0,99,111,117,108,100,110,39,116,32,108,111,97,100,32,105,116,101,109,32,99,111,110,102,105,103,10,0,0,0,0,0,0,116,104,101,32,107,101,121,32,37,115,32,119,105,116,104,32,112,114,101,102,105,120,32,33,32,105,115,32,105,110,115,105,100,101,32,116,104,101,32,107,101,121,32,37,115,0,0,0,99,112,32,37,100,32,37,115,0,0,0,0,0,0,0,0,99,97,108,99,117,108,97,116,105,110,103,32,114,101,97,99,104,97,98,105,108,105,116,121,46,46,46,10,0,0,0,0,52,53,48,0,0,0,0,0,49,0,0,0,0,0,0,0,115,118,95,112,97,100,80,97,99,107,101,116,115,0,0,0,65,117,116,111,115,112,114,105,116,101,50,32,115,104,97,100,101,114,32,37,115,32,104,97,100,32,111,100,100,32,118,101,114,116,101,120,32,99,111,117,110,116,10,0,0,0,0,0,99,108,105,101,110,116,32,116,101,120,116,32,105,103,110,111,114,101,100,32,102,111,114,32,37,115,58,32,37,115,10,0,109,97,112,115,47,37,115,46,98,115,112,0,0,0,0,0,94,51,82,101,115,116,97,114,116,101,100,32,79,112,101,110,65,76,32,109,117,115,105,99,10,0,0,0,0,0,0,0,110,101,116,95,115,111,99,107,115,83,101,114,118,101,114,0,74,79,89,49,55,0,0,0,102,114,97,109,101,0,0,0,45,45,45,32,82,66,95,83,116,97,103,101,73,116,101,114,97,116,111,114,71,101,110,101,114,105,99,40,32,37,115,32,41,32,45,45,45,10,0,0,36,109,111,100,108,105,115,116,0,0,0,0,0,0,0,0,99,118,97,114,95,114,101,115,116,97,114,116,0,0,0,0,67,77,95,71,101,110,101,114,97,116,101,80,97,116,99,104,70,97,99,101,116,115,58,32,101,118,101,110,32,115,105,122,101,115,32,97,114,101,32,105,110,118,97,108,105,100,32,102,111,114,32,113,117,97,100,114,97,116,105,99,32,109,101,115,104,101,115,0,0,0,0,0,45,98,117,116,116,111,110,56,0,0,0,0,0,0,0,0,37,56,105,32,117,110,117,115,101,100,32,104,105,103,104,119,97,116,101,114,10,0,0,0,87,65,82,78,73,78,71,58,32,82,69,95,65,100,100,80,111,108,121,84,111,83,99,101,110,101,58,32,114,95,109,97,120,95,112,111,108,121,115,32,111,114,32,114,95,109,97,120,95,112,111,108,121,118,101,114,116,115,32,114,101,97,99,104,101,100,10,0,0,0,0,0,103,108,85,110,105,102,111,114,109,50,105,118,0,0,0,0,102,115,95,109,97,110,105,102,101,115,116,0,0,0,0,0,73,78,84,69,82,81,85,65,75,69,77,79,68,69,76,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,109,111,114,101,32,116,104,97,110,32,37,100,32,99,111,108,111,114,32,99,111,109,112,111,110,101,110,116,115,0,0,0,77,79,68,95,76,111,97,100,66,109,111,100,101,108,58,32,102,117,110,110,121,32,108,117,109,112,32,115,105,122,101,0,103,108,85,110,108,111,99,107,65,114,114,97,121,115,69,88,84,0,0,0,0,0,0,0,103,101,110,32,0,0,0,0,56,0,0,0,0,0,0,0,42,115,104,97,100,111,119,109,97,112,37,105,0,0,0,0,49,53,0,0,0,0,0,0,113,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,80,79,83,73,84,73,79,78,32,41,10,0,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,65,82,66,0,0,0,32,81,58,48,120,37,48,50,120,40,37,115,41,0,0,0,109,105,115,115,105,110,103,32,116,114,97,105,108,105,110,103,32,113,117,111,116,101,0,0,100,101,102,105,110,101,100,32,119,105,116,104,111,117,116,32,41,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,105,116,101,109,115,46,99,0,111,110,101,32,111,102,32,116,104,101,32,109,97,116,99,104,32,116,101,109,112,108,97,116,101,115,32,100,111,101,115,32,110,111,116,32,108,101,97,118,101,32,115,112,97,99,101,32,102,111,114,32,116,104,101,32,107,101,121,32,37,115,32,119,105,116,104,32,116,104,101,32,38,32,112,114,101,102,105,120,0,0,0,0,0,0,0,0,89,111,117,32,109,117,115,116,32,101,105,116,104,101,114,32,98,101,32,99,111,110,110,101,99,116,101,100,44,10,111,114,32,115,101,116,32,116,104,101,32,39,114,99,111,110,65,100,100,114,101,115,115,39,32,99,118,97,114,10,116,111,32,105,115,115,117,101,32,114,99,111,110,32,99,111,109,109,97,110,100,115,10,0,0,0,0,0,37,100,32,119,101,97,112,111,110,32,106,117,109,112,32,97,114,101,97,115,10,0,0,0,114,115,95,109,97,120,106,117,109,112,102,97,108,108,104,101,105,103,104,116,0,0,0,0,115,118,95,112,97,117,115,101,100,0,0,0,0,0,0,0,115,118,95,115,104,111,119,108,111,115,115,0,0,0,0,0,117,115,101,114,105,110,102,111,32,115,116,114,105,110,103,32,108,101,110,103,116,104,32,101,120,99,101,101,100,101,100,0,98,115,112,0,0,0,0,0,83,95,65,76,95,66,117,102,102,101,114,70,105,110,100,70,114,101,101,58,32,78,111,32,102,114,101,101,32,115,111,117,110,100,32,104,97,110,100,108,101,115,0,0,0,0,0,0,48,0,0,0,0,0,0,0,74,79,89,49,54,0,0,0,82,95,65,100,100,77,68,51,83,117,114,102,97,99,101,115,58,32,110,111,32,115,117,99,104,32,102,114,97,109,101,32,37,100,32,116,111,32,37,100,32,102,111,114,32,39,37,115,39,10,0,0,0,0,0,0,99,111,110,115,116,97,110,116,76,105,103,104,116,0,0,0,70,97,105,108,101,100,32,116,111,32,111,112,101,110,32,37,115,10,0,0,0,0,0,0,99,118,97,114,108,105,115,116,0,0,0,0,0,0,0,0,94,51,116,117,114,110,105,110,103,32,69,88,69,67,95,78,79,87,32,39,37,46,49,49,115,39,32,105,110,116,111,32,69,88,69,67,95,73,78,83,69,82,84,10,0,0,0,0,43,98,117,116,116,111,110,56,0,0,0,0,0,0,0,0,37,56,105,32,116,111,116,97,108,32,104,117,110,107,32,105,110,32,117,115,101,10,0,0,87,65,82,78,73,78,71,58,32,114,101,99,117,114,115,105,118,101,32,109,105,114,114,111,114,47,112,111,114,116,97,108,32,102,111,117,110,100,10,0,103,108,85,115,101,80,114,111,103,114,97,109,0,0,0,0,51,50,0,0,0,0,0,0,97,109,98,58,37,105,32,32,100,105,114,58,37,105,10,0,103,108,85,110,105,102,111,114,109,49,105,118,0,0,0,0,102,115,95,99,100,110,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,40,99,97,115,101,32,37,100,41,0,0,0,103,108,76,111,99,107,65,114,114,97,121,115,69,88,84,0,69,32,0,0,0,0,0,0,114,95,115,116,101,110,99,105,108,98,105,116,115,0,0,0,42,104,100,114,68,101,112,116,104,0,0,0,0,0,0,0,113,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,40,32,65,84,84,82,95,73,78,68,69,88,95,80,79,83,73,84,73,79,78,32,41,10,0,0,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,65,82,66,0,73,110,118,97,108,105,100,32,99,114,111,112,32,114,101,113,117,101,115,116,0,0,0,0,32,75,77,79,68,95,82,69,83,69,82,86,69,68,0,0,115,116,114,105,110,103,32,108,111,110,103,101,114,32,116,104,97,110,32,77,65,88,95,84,79,75,69,78,32,61,32,37,100,0,0,0,0,0,0,0,111,117,116,32,111,102,32,118,97,108,117,101,32,115,112,97,99,101,0,0,0,0,0,0,115,112,105,110,100,111,119,110,0,0,0,0,0,0,0,0,105,116,101,109,99,111,110,102,105,103,0,0,0,0,0,0,32,0,0,0,0,0,0,0,37,115,32,105,110,32,115,111,108,105,100,32,97,116,32,40,37,49,46,49,102,32,37,49,46,49,102,32,37,49,46,49,102,41,10,0,0,0,0,0,48,0,0,0,0,0,0,0,116,105,109,101,100,32,111,117,116,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,115,110,97,112,115,0,0,0,32,105,110,118,97,108,105,100,32,109,111,100,101,10,0,0,109,97,112,115,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,84,114,105,101,100,32,116,111,32,108,111,97,100,32,112,108,97,121,101,114,32,115,111,117,110,100,32,100,105,114,101,99,116,108,121,58,32,37,115,10,0,0,0,0,0,110,101,116,95,115,111,99,107,115,69,110,97,98,108,101,100,0,0,0,0,0,0,0,0,74,79,89,49,53,0,0,0,82,95,67,114,101,97,116,101,86,66,79,50,58,32,77,65,88,95,86,66,79,83,32,104,105,116,0,0,0,0,0,0,97,110,103,108,101,115,50,91,50,93,0,0,0,0,0,0,70,83,95,87,114,105,116,101,70,105,108,101,58,32,78,85,76,76,32,112,97,114,97,109,101,116,101,114,0,0,0,0,117,110,115,101,116,0,0,0,115,118,99,95,115,101,114,118,101,114,67,111,109,109,97,110,100,0,0,0,0,0,0,0,45,98,117,116,116,111,110,55,0,0,0,0,0,0,0,0,37,56,105,32,104,105,103,104,32,116,101,109,112,72,105,103,104,119,97,116,101,114,10,0,111,112,97,113,117,101,0,0,82,95,82,101,110,100,101,114,83,99,101,110,101,58,32,78,85,76,76,32,119,111,114,108,100,109,111,100,101,108,0,0,82,95,76,111,97,100,73,81,77,58,32,37,115,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,37,105,32,116,114,105,97,110,103,108,101,115,32,111,110,32,37,115,32,40,37,105,41,46,10,0,0,0,82,69,95,82,101,103,105,115,116,101,114,77,111,100,101,108,58,32,78,85,76,76,32,110,97,109,101,10,0,0,0,0,103,108,85,110,105,102,111,114,109,52,105,0,0,0,0,0,115,118,95,100,108,85,82,76,0,0,0,0,0,0,0,0,78,111,116,32,97,32,74,80,69,71,32,102,105,108,101,58,32,115,116,97,114,116,115,32,119,105,116,104,32,48,120,37,48,50,120,32,48,120,37,48,50,120,0,0,0,0,0,0,46,46,46,117,115,105,110,103,32,71,76,95,69,88,84,95,99,111,109,112,105,108,101,100,95,118,101,114,116,101,120,95,97,114,114,97,121,10,0,0,32,32,32,32,32,32,0,0,114,95,99,111,108,111,114,98,105,116,115,0,0,0,0,0,42,115,99,114,101,101,110,83,115,97,111,0,0,0,0,0,45,45,45,32,71,76,95,66,105,110,100,78,117,108,108,80,114,111,103,114,97,109,32,45,45,45,10,0,0,0,0,0,103,108,71,101,116,65,116,116,97,99,104,101,100,79,98,106,101,99,116,115,65,82,66,0,66,114,105,103,104,116,101,115,116,32,108,105,103,104,116,109,97,112,32,118,97,108,117,101,58,32,37,100,10,0,0,0,32,75,77,79,68,95,77,79,68,69,0,0,0,0,0,0,117,110,107,110,111,119,110,32,101,115,99,97,112,101,32,99,104,97,114,0,0,0,0,0,100,101,102,105,110,101,100,32,119,105,116,104,111,117,116,32,110,97,109,101,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,0,0,0,0,0,115,112,105,110,117,112,0,0,48,0,0,0,0,0,0,0,114,99,111,110,32,0,0,0,105,116,101,109,95,105,110,118,117,108,110,101,114,97,98,105,108,105,116,121,0,0,0,0,114,115,95,109,97,120,102,97,108,108,104,101,105,103,104,116,0,0,0,0,0,0,0,0,71,111,105,110,103,32,102,114,111,109,32,67,83,95,90,79,77,66,73,69,32,116,111,32,67,83,95,70,82,69,69,32,102,111,114,32,99,108,105,101,110,116,32,37,100,10,0,0,71,76,95,79,85,84,95,79,70,95,77,69,77,79,82,89,0,0,0,0,0,0,0,0,115,118,95,114,101,99,111,110,110,101,99,116,108,105,109,105,116,0,0,0,0,0,0,0,49,48,48,0,0,0,0,0,76,111,97,100,84,71,65,58,32,102,105,108,101,32,116,114,117,110,99,97,116,101,100,32,40,37,115,41,0,0,0,0,99,111,110,115,111,108,101,58,32,0,0,0,0,0,0,0,76,111,97,100,66,77,80,58,32,109,111,110,111,99,104,114,111,109,101,32,97,110,100,32,52,45,98,105,116,32,66,77,80,32,102,105,108,101,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,40,37,115,41,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,83,111,117,110,100,32,110,97,109,101,32,105,115,32,116,111,111,32,108,111,110,103,58,32,37,115,10,0,0,74,79,89,49,52,0,0,0,97,110,103,108,101,115,50,91,48,93,0,0,0,0,0,0,70,83,95,70,114,101,101,70,105,108,101,40,32,78,85,76,76,32,41,0,0,0,0,0,114,101,115,101,116,0,0,0,71,76,95,76,73,78,69,65,82,95,77,73,80,77,65,80,95,76,73,78,69,65,82,0,43,98,117,116,116,111,110,55,0,0,0,0,0,0,0,0,37,56,105,32,104,105,103,104,32,116,101,109,112,10,0,0,71,76,83,76,95,83,101,116,85,110,105,102,111,114,109,86,101,99,52,58,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,117,110,105,102,111,114,109,32,37,105,32,105,110,32,112,114,111,103,114,97,109,32,37,115,10,0,0,0,82,95,67,104,101,99,107,70,66,79,58,32,40,37,115,41,32,70,114,97,109,101,98,117,102,102,101,114,32,105,110,99,111,109,112,108,101,116,101,44,32,109,105,115,115,105,110,103,32,100,114,97,119,32,98,117,102,102,101,114,10,0,0,0,122,70,97,114,58,32,37,46,48,102,10,0,0,0,0,0,103,108,85,110,105,102,111,114,109,51,105,0,0,0,0,0,115,118,95,97,108,108,111,119,68,111,119,110,108,111,97,100,0,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,110,111,32,115,101,109,105,32,99,111,108,111,110,32,105,110,32,118,101,114,116,101,120,115,104,97,100,101,114,114,101,109,97,112,32,39,37,115,39,10,0,0,0,0,0,0,0,81,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,0,0,0,0,0,0,68,114,97,119,95,83,116,114,101,116,99,104,82,97,119,58,32,115,105,122,101,32,110,111,116,32,97,32,112,111,119,101,114,32,111,102,32,50,58,32,37,105,32,98,121,32,37,105,0,0,0,0,0,0,0,0,71,76,95,69,88,84,95,99,111,109,112,105,108,101,100,95,118,101,114,116,101,120,95,97,114,114,97,121,0,0,0,0,105,110,118,97,108,105,100,32,115,116,111,114,101,100,32,98,108,111,99,107,32,108,101,110,103,116,104,115,0,0,0,0,77,84,40,100,41,32,0,0,114,95,116,101,120,116,117,114,101,98,105,116,115,0,0,0,42,113,117,97,114,116,101,114,37,100,0,0,0,0,0,0,45,45,45,32,71,76,95,66,105,110,100,80,114,111,103,114,97,109,40,32,37,115,32,41,32,45,45,45,10,0,0,0,103,108,71,101,116,73,110,102,111,76,111,103,65,82,66,0,42,100,101,108,117,120,101,109,97,112,37,100,0,0,0,0,32,75,77,79,68,95,67,65,80,83,0,0,0,0,0,0,116,111,111,32,108,97,114,103,101,32,118,97,108,117,101,32,105,110,32,101,115,99,97,112,101,32,99,104,97,114,97,99,116,101,114,0,0,0,0,0,117,110,100,101,102,105,110,101,100,32,110,97,109,101,32,37,115,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,114,101,108,111,97,100,0,0,103,95,103,97,109,101,116,121,112,101,0,0,0,0,0,0,89,111,117,32,109,117,115,116,32,115,101,116,32,39,114,99,111,110,112,97,115,115,119,111,114,100,39,32,98,101,102,111,114,101,10,105,115,115,117,105,110,103,32,97,110,32,114,99,111,110,32,99,111,109,109,97,110,100,46,10,0,0,0,0,105,116,101,109,95,114,101,103,101,110,0,0,0,0,0,0,114,115,95,102,97,108,108,100,97,109,97,103,101,49,48,0,115,118,95,109,105,110,82,97,116,101,0,0,0,0,0,0,115,118,95,109,97,115,116,101,114,37,100,0,0,0,0,0,104,97,110,100,105,99,97,112,0,0,0,0,0,0,0,0,99,104,97,116,32,34,37,115,34,0,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,83,111,117,110,100,32,110,97,109,101,32,105,115,32,101,109,112,116,121,10,0,110,101,116,95,109,99,97,115,116,54,105,102,97,99,101,0,74,79,89,49,51,0,0,0,97,110,103,108,101,115,91,50,93,0,0,0,0,0,0,0,87,114,105,116,105,110,103,32,37,115,32,116,111,32,106,111,117,114,110,97,108,32,102,105,108,101,46,10,0,0,0,0,115,101,116,97,0,0,0,0,97,114,99,104,0,0,0,0,50,0,0,0,0,0,0,0,45,98,117,116,116,111,110,54,0,0,0,0,0,0,0,0,37,56,105,32,104,105,103,104,32,112,101,114,109,97,110,101,110,116,10,0,0,0,0,0,48,0,0,0,0,0,0,0,102,108,111,97,116,32,111,117,116,32,111,102,32,114,97,110,103,101,32,91,37,102,44,32,37,102,93,0,0,0,0,0,124,124,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,50,105,0,0,0,0,0,100,101,102,105,110,101,32,119,105,116,104,32,109,111,114,101,32,116,104,97,110,32,37,100,32,112,97,114,97,109,101,116,101,114,115,0,0,0,0,0,48,0,0,0,0,0,0,0,74,80,69,71,32,100,97,116,97,115,116,114,101,97,109,32,99,111,110,116,97,105,110,115,32,110,111,32,105,109,97,103,101,0,0,0,0,0,0,0,99,97,110,39,116,32,111,112,101,110,32,116,104,101,32,108,111,103,32,102,105,108,101,32,37,115,10,0,0,0,0,0,46,46,46,71,76,95,65,82,66,95,109,117,108,116,105,116,101,120,116,117,114,101,32,110,111,116,32,102,111,117,110,100,10,0,0,0,0,0,0,0,103,97,109,101,100,105,114,0,77,84,40,109,41,32,0,0,114,95,100,101,116,97,105,108,116,101,120,116,117,114,101,115,0,0,0,0,0,0,0,0,42,116,101,120,116,117,114,101,83,99,114,97,116,99,104,37,100,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,45,45,45,45,45,45,45,32,71,76,83,76,95,83,104,117,116,100,111,119,110,71,80,85,83,104,97,100,101,114,115,32,45,45,45,45,45,45,45,10,0,0,0,0,0,0,0,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,65,82,66,0,0,0,0,0,0,0,42,108,105,103,104,116,109,97,112,37,100,0,0,0,0,0,109,97,120,95,119,101,97,112,111,110,105,110,102,111,32,61,32,37,100,10,0,0,0,0,101,110,116,105,116,121,32,37,115,32,109,111,100,101,108,32,110,117,109,98,101,114,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,32,75,77,79,68,95,78,85,77,0,0,0,0,0,0,0,102,105,108,101,32,37,115,44,32,108,105,110,101,32,37,100,58,32,37,115,10,0,0,0,100,101,102,105,110,101,100,0,114,101,115,112,97,119,110,116,105,109,101,0,0,0,0,0,97,99,116,105,118,97,116,101,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,103,111,97,108,32,115,116,97,116,101,32,104,97,110,100,108,101,32,37,100,10,0,0,0,105,116,0,0,0,0,0,0,99,108,95,99,117,114,114,101,110,116,83,101,114,118,101,114,65,100,100,114,101,115,115,0,105,116,101,109,95,113,117,97,100,0,0,0,0,0,0,0,114,115,95,102,97,108,108,100,97,109,97,103,101,53,0,0,49,48,48,48,0,0,0,0,109,97,115,116,101,114,46,113,117,97,107,101,106,115,46,99,111,109,0,0,0,0,0,0,114,97,116,101,0,0,0,0,99,111,110,115,111,108,101,95,116,101,108,108,58,32,0,0,32,37,52,100,32,37,100,10,0,0,0,0,0,0,0,0,83,111,117,110,100,32,110,97,109,101,32,105,115,32,78,85,76,76,0,0,0,0,0,0,102,102,48,52,58,58,54,57,54,102,58,55,49,55,53,58,54,49,54,98,58,54,53,51,51,0,0,0,0,0,0,0,74,79,89,49,50,0,0,0,116,105,109,101,50,0,0,0,87,114,105,116,105,110,103,32,108,101,110,32,102,111,114,32,37,115,32,116,111,32,106,111,117,114,110,97,108,32,102,105,108,101,46,10,0,0,0,0,115,101,116,117,0,0,0,0,116,114,105,103,103,101,114,95,112,117,115,104,32,119,105,116,104,111,117,116,32,116,97,114,103,101,116,32,101,110,116,105,116,121,32,37,115,10,0,0,43,98,117,116,116,111,110,54,0,0,0,0,0,0,0,0,56,48,48,0,0,0,0,0,37,56,105,32,104,105,103,104,32,109,97,114,107,10,0,0,37,115,32,119,114,105,116,116,101,110,32,115,117,99,99,101,115,115,102,117,108,108,121,10,0,0,0,0,0,0,0,0,97,97,115,32,102,105,108,101,32,37,115,32,105,115,32,118,101,114,115,105,111,110,32,37,105,44,32,110,111,116,32,37,105,10,0,0,0,0,0,0,65,65,83,95,69,110,116,105,116,121,84,121,112,101,58,32,101,110,116,110,117,109,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,65,65,83,95,77,65,88,95,67,76,85,83,84,69,82,83,10,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,101,110,116,105,116,105,101,115,32,105,110,32,66,83,80,32,102,105,108,101,10,0,0,86,77,32,112,114,111,103,114,97,109,32,99,111,117,110,116,101,114,32,111,117,116,32,111,102,32,114,97,110,103,101,32,105,110,32,79,80,95,76,69,65,86,69,0,0,0,0,0,118,109,105,110,102,111,0,0,103,108,85,110,105,102,111,114,109,49,105,0,0,0,0,0,99,108,95,112,97,117,115,101,100,0,0,0,0,0,0,0,83,86,95,81,115,111,114,116,69,110,116,105,116,121,83,116,97,116,101,115,58,32,100,117,112,108,105,99,97,116,101,100,32,101,110,116,105,116,121,0,72,117,102,102,109,97,110,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,0,0,0,46,46,46,105,103,110,111,114,105,110,103,32,71,76,95,65,82,66,95,109,117,108,116,105,116,101,120,116,117,114,101,10,0,0,0,0,0,0,0,0,77,84,40,97,41,32,0,0,65,108,114,101,97,100,121,32,114,101,99,111,114,100,105,110,103,46,10,0,0,0,0,0,114,95,99,111,108,111,114,77,105,112,76,101,118,101,108,115,0,0,0,0,0,0,0,0,42,102,105,120,101,100,76,101,118,101,108,115,0,0,0,0,108,111,97,100,101,100,32,37,105,32,71,76,83,76,32,115,104,97,100,101,114,115,32,40,37,105,32,103,101,110,32,37,105,32,108,105,103,104,116,32,37,105,32,101,116,99,41,32,105,110,32,37,53,46,50,102,32,115,101,99,111,110,100,115,10,0,0,0,0,0,0,0,110,101,116,95,101,110,97,98,108,101,100,0,0,0,0,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,102,118,65,82,66,0,0,0,0,0,0,0,66,97,100,32,115,105,122,101,32,102,111,114,32,37,115,32,40,37,105,41,33,0,0,0,71,76,95,73,78,86,65,76,73,68,95,69,78,85,77,0,32,75,77,79,68,95,82,77,69,84,65,0,0,0,0,0,110,97,109,101,0,0,0,0,115,121,110,116,97,120,32,101,114,114,111,114,32,105,110,32,35,105,102,47,35,101,108,105,102,0,0,0,0,0,0,0,97,109,109,111,105,110,100,101,120,0,0,0,0,0,0,0,83,86,95,71,101,116,85,115,101,114,99,109,100,58,32,98,97,100,32,99,108,105,101,110,116,78,117,109,58,37,105,0,99,111,117,108,100,110,39,116,32,108,111,97,100,32,119,101,105,103,104,116,115,10,0,0,109,97,108,101,0,0,0,0,37,115,32,114,101,115,111,108,118,101,100,32,116,111,32,37,115,10,0,0,0,0,0,0,119,101,97,112,111,110,95,98,102,103,0,0,0,0,0,0,114,115,95,115,116,97,114,116,101,108,101,118,97,116,111,114,0,0,0,0,0,0,0,0,80,67,88,32,116,114,117,110,99,97,116,101,100,58,32,37,115,10,0,0,0,0,0,0,115,118,95,77,97,120,82,97,116,101,0,0,0,0,0,0,99,104,97,108,108,101,110,103,101,82,101,115,112,111,110,115,101,32,37,100,32,37,100,32,37,100,0,0,0,0,0,0,115,118,95,109,97,115,116,101,114,49,0,0,0,0,0,0,110,97,109,101,0,0,0,0,85,115,97,103,101,58,32,116,101,108,108,32,60,99,108,105,101,110,116,32,110,117,109,98,101,114,62,32,60,116,101,120,116,62,10,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,85,115,105,110,103,32,100,101,102,97,117,108,116,32,115,111,117,110,100,32,102,111,114,32,37,115,10,0,0,76,111,97,100,84,71,65,58,32,104,101,97,100,101,114,32,116,111,111,32,115,104,111,114,116,32,40,37,115,41,0,0,83,95,70,105,110,100,78,97,109,101,58,32,111,117,116,32,111,102,32,115,102,120,95,116,0,0,0,0,0,0,0,0,110,101,116,95,109,99,97,115,116,54,97,100,100,114,0,0,74,79,89,49,49,0,0,0,97,112,111,115,46,116,114,68,101,108,116,97,91,50,93,0,99,108,105,101,110,116,107,105,99,107,0,0,0,0,0,0,87,114,105,116,105,110,103,32,122,101,114,111,32,102,111,114,32,37,115,32,116,111,32,106,111,117,114,110,97,108,32,102,105,108,101,46,10,0,0,0,115,101,116,115,0,0,0,0,49,0,0,0,0,0,0,0,76,111,97,100,66,77,80,58,32,104,101,97,100,101,114,32,116,111,111,32,115,104,111,114,116,32,40,37,115,41,0,0,76,111,97,100,74,80,71,58,32,37,115,32,104,97,115,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,102,111,114,109,97,116,58,32,37,100,120,37,100,42,52,61,37,100,44,32,99,111,109,112,111,110,101,110,116,115,58,32,37,100,0,0,0,0,0,57,54,0,0,0,0,0,0,94,49,69,82,82,79,82,58,32,76,101,115,115,32,116,104,97,110,32,56,32,98,105,116,32,115,111,117,110,100,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,10,0,0,0,0,0,0,0,0,67,73,78,95,80,108,97,121,67,105,110,101,109,97,116,105,99,40,32,37,115,32,41,10,0,0,0,0,0,0,0,0,45,98,117,116,116,111,110,53,0,0,0,0,0,0,0,0,137,80,78,71,13,10,26,10,0,0,0,0,0,0,0,0,111,112,101,110,0,0,0,0,37,56,105,32,108,111,119,32,116,101,109,112,72,105,103,104,119,97,116,101,114,10,0,0,115,95,109,117,115,105,99,118,111,108,117,109,101,0,0,0,37,100,32,98,121,116,101,115,32,102,114,101,101,32,115,111,117,110,100,32,98,117,102,102,101,114,32,109,101,109,111,114,121,44,32,37,100,32,116,111,116,97,108,32,117,115,101,100,10,0,0,0,0,0,0,0,37,53,100,32,115,117,98,109,105,115,115,105,111,110,95,99,104,117,110,107,10,0,0,0,78,69,84,95,71,101,116,80,97,99,107,101,116,58,32,37,115,10,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,52,102,0,0,0,0,0,37,115,32,115,101,110,100,32,37,52,105,32,58,32,115,61,37,105,32,102,114,97,103,109,101,110,116,61,37,105,44,37,105,10,0,0,0,0,0,0,67,76,95,80,97,114,115,101,83,101,114,118,101,114,77,101,115,115,97,103,101,58,32,73,108,108,101,103,105,98,108,101,32,115,101,114,118,101,114,32,109,101,115,115,97,103,101,0,66,97,99,107,105,110,103,32,115,116,111,114,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,46,46,46,110,111,116,32,117,115,105,110,103,32,71,76,95,65,82,66,95,109,117,108,116,105,116,101,120,116,117,114,101,44,32,60,32,50,32,116,101,120,116,117,114,101,32,117,110,105,116,115,10,0,0,0,0,32,32,0,0,0,0,0,0,114,95,114,111,117,110,100,73,109,97,103,101,115,68,111,119,110,0,0,0,0,0,0,0,77,83,71,95,87,114,105,116,101,83,116,114,105,110,103,58,32,77,65,88,95,83,84,82,73,78,71,95,67,72,65,82,83,0,0,0,0,0,0,0,42,116,97,114,103,101,116,76,101,118,101,108,115,0,0,0,67,111,117,108,100,32,110,111,116,32,108,111,97,100,32,108,105,103,104,116,97,108,108,32,115,104,97,100,101,114,33,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,65,82,66,0,0,0,66,97,100,32,104,101,97,100,101,114,32,102,111,114,32,37,115,33,0,0,0,0,0,0,32,75,77,79,68,95,76,77,69,84,65,0,0,0,0,0,36,0,0,0,0,0,0,0,109,105,115,112,108,97,99,101,100,32,35,101,110,100,105,102,0,0,0,0,0,0,0,0,97,109,109,111,97,109,111,117,110,116,0,0,0,0,0,0,103,111,97,108,32,104,101,97,112,32,111,118,101,114,102,108,111,119,10,0,0,0,0,0,102,101,109,97,108,101,0,0,46,46,0,0,0,0,0,0,119,101,97,112,111,110,95,114,97,105,108,103,117,110,0,0,66,97,100,32,115,101,114,118,101,114,32,97,100,100,114,101,115,115,10,0,0,0,0,0,114,115,95,102,117,110,99,98,111,98,0,0,0,0,0,0,109,97,112,95,114,101,115,116,97,114,116,32,48,10,0,0,115,118,95,100,108,85,82,76,0,0,0,0,0,0,0,0,99,108,105,101,110,116,68,111,119,110,108,111,97,100,58,32,37,100,32,58,32,119,114,105,116,105,110,103,32,98,108,111,99,107,32,37,100,10,0,0,69,120,99,101,112,116,32,35,37,100,58,32,37,115,47,37,100,10,0,0,0,0,0,0,67,97,110,39,116,32,108,111,97,100,32,100,101,102,97,117,108,116,32,115,111,117,110,100,32,101,102,102,101,99,116,32,37,115,0,0,0,0,0,0,69,114,114,111,114,58,32,84,111,111,32,109,97,110,121,32,99,118,97,114,115,44,32,99,97,110,110,111,116,32,99,114,101,97,116,101,32,97,32,110,101,119,32,111,110,101,33,0,94,51,87,65,82,78,73,78,71,58,32,84,114,105,101,100,32,116,111,32,108,111,97,100,32,112,108,97,121,101,114,32,115,111,117,110,100,32,100,105,114,101,99,116,108,121,58,32,37,115,10,0,0,0,0,0,37,105,0,0,0,0,0,0,74,79,89,49,48,0,0,0,85,80,65,82,82,79,87,0,97,112,111,115,46,116,114,68,101,108,116,97,91,49,93,0,82,101,97,100,32,102,114,111,109,32,106,111,117,114,110,97,108,68,97,116,97,70,105,108,101,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,115,101,116,0,0,0,0,0,43,98,117,116,116,111,110,53,0,0,0,0,0,0,0,0,71,76,95,78,69,65,82,69,83,84,0,0,0,0,0,0,37,56,105,32,108,111,119,32,116,101,109,112,10,0,0,0,103,108,85,110,105,102,111,114,109,51,102,0,0,0,0,0,37,51,105,58,66,65,68,32,67,77,68,32,37,105,10,0,65,114,105,116,104,109,101,116,105,99,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,46,46,46,117,115,105,110,103,32,71,76,95,65,82,66,95,109,117,108,116,105,116,101,120,116,117,114,101,10,0,0,0,76,32,0,0,0,0,0,0,114,95,112,105,99,109,105,112,0,0,0,0,0,0,0,0,42,99,97,108,99,76,101,118,101,108,115,0,0,0,0,0,108,105,103,104,116,97,108,108,0,0,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,65,82,66,0,0,0,109,97,112,115,47,37,115,47,108,109,95,37,48,52,100,46,104,100,114,0,0,0,0,0,32,75,77,79,68,95,82,65,76,84,0,0,0,0,0,0,35,0,0,0,0,0,0,0,35,101,108,115,101,32,97,102,116,101,114,32,35,101,108,115,101,0,0,0,0,0,0,0,101,120,116,114,97,122,118,101,108,111,99,105,116,121,0,0,37,100,58,32,37,115,0,0,110,97,109,101,0,0,0,0,119,101,97,112,111,110,95,112,108,97,115,109,97,103,117,110,0,0,0,0,0,0,0,0,83,101,114,118,101,114,32,113,117,105,116,0,0,0,0,0,114,115,95,97,105,114,99,111,110,116,114,111,108,108,101,100,106,117,109,112,112,97,100,0,82,101,115,116,97,114,116,105,110,103,32,115,101,114,118,101,114,32,100,117,101,32,116,111,32,110,117,109,83,110,97,112,115,104,111,116,69,110,116,105,116,105,101,115,32,119,114,97,112,112,105,110,103,0,0,0,115,118,95,97,108,108,111,119,68,111,119,110,108,111,97,100,0,0,0,0,0,0,0,0,99,108,105,101,110,116,68,111,119,110,108,111,97,100,58,32,37,100,32,58,32,98,101,103,105,110,110,105,110,103,32,34,37,115,34,10,0,0,0,0,66,97,110,32,35,37,100,58,32,37,115,47,37,100,10,0,94,49,69,82,82,79,82,58,32,67,97,110,39,116,32,99,114,101,97,116,101,32,97,32,115,111,117,110,100,32,98,117,102,102,101,114,32,102,111,114,32,37,115,32,45,32,37,115,10,0,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,83,111,117,110,100,32,110,97,109,101,32,105,115,32,116,111,111,32,108,111,110,103,58,32,37,115,10,0,0,58,58,0,0,0,0,0,0,74,79,89,57,0,0,0,0,97,112,111,115,46,116,114,68,101,108,116,97,91,48,93,0,76,111,97,100,105,110,103,32,37,115,32,102,114,111,109,32,106,111,117,114,110,97,108,32,102,105,108,101,46,10,0,0,116,111,103,103,108,101,0,0,45,98,117,116,116,111,110,52,0,0,0,0,0,0,0,0,77,65,88,95,71,65,77,69,83,84,65,84,69,95,67,72,65,82,83,32,101,120,99,101,101,100,101,100,0,0,0,0,37,56,105,32,108,111,119,32,112,101,114,109,97,110,101,110,116,10,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,50,102,0,0,0,0,0,69,78,68,32,79,70,32,77,69,83,83,65,71,69,0,0,82,101,113,117,101,115,116,101,100,32,102,101,97,116,117,114,101,32,119,97,115,32,111,109,105,116,116,101,100,32,97,116,32,99,111,109,112,105,108,101,32,116,105,109,101,0,0,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101,120,116,117,114,101,65,82,66,0,0,0,0,0,0,0,0,37,105,32,0,0,0,0,0,50,0,0,0,0,0,0,0,42,116,101,120,116,117,114,101,100,101,112,116,104,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,86,69,82,84,69,88,95,65,78,73,77,65,84,73,79,78,10,35,100,101,102,105,110,101,32,85,83,69,95,77,79,68,69,76,77,65,84,82,73,88,10,0,0,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,65,82,66,0,0,0,95,102,97,116,100,101,108,117,120,101,109,97,112,37,100,0,32,75,77,79,68,95,76,65,76,84,0,0,0,0,0,0,92,0,0,0,0,0,0,0,109,105,115,112,108,97,99,101,100,32,35,101,108,115,101,0,97,110,103,108,101,111,102,102,115,101,116,0,0,0,0,0,97,118,111,105,100,32,103,111,97,108,32,37,115,44,32,110,117,109,98,101,114,32,37,100,32,102,111,114,32,37,102,32,115,101,99,111,110,100,115,0,33,0,0,0,0,0,0,0,119,101,97,112,111,110,95,108,105,103,104,116,110,105,110,103,0,0,0,0,0,0,0,0,119,97,114,110,105,110,103,58,32,111,110,108,121,32,45,52,32,111,114,32,45,54,32,97,115,32,97,100,100,114,101,115,115,32,116,121,112,101,32,117,110,100,101,114,115,116,111,111,100,46,10,0,0,0,0,0,50,53,48,0,0,0,0,0,37,115,0,0,0,0,0,0,109,97,112,32,37,115,10,0,50,0,0,0,0,0,0,0,70,105,108,101,32,34,37,115,34,32,110,111,116,32,102,111,117,110,100,32,111,110,32,115,101,114,118,101,114,32,102,111,114,32,97,117,116,111,100,111,119,110,108,111,97,100,105,110,103,46,10,0,0,0,0,0,67,108,105,101,110,116,32,37,105,32,105,115,32,110,111,116,32,97,99,116,105,118,101,10,0,0,0,0,0,0,0,0,94,49,69,82,82,79,82,58,32,79,117,116,32,111,102,32,97,117,100,105,111,32,98,117,102,102,101,114,115,10,0,0,94,51,87,65,82,78,73,78,71,58,32,83,111,117,110,100,32,110,97,109,101,32,105,115,32,101,109,112,116,121,10,0,110,101,116,95,105,112,54,0,74,79,89,56,0,0,0,0,97,112,111,115,46,116,114,66,97,115,101,91,50,93,0,0,70,83,95,82,101,97,100,70,105,108,101,32,119,105,116,104,32,101,109,112,116,121,32,110,97,109,101,0,0,0,0,0,112,114,105,110,116,0,0,0,99,111,100,101,47,114,101,110,100,101,114,101,114,103,108,50,47,116,114,95,103,108,115,108,46,99,0,0,0,0,0,0,43,98,117,116,116,111,110,52,0,0,0,0,0,0,0,0,82,69,95,82,101,103,105,115,116,101,114,70,111,110,116,58,32,99,97,108,108,101,100,32,119,105,116,104,32,101,109,112,116,121,32,110,97,109,101,10,0,0,0,0,0,0,0,0,37,56,105,32,108,111,119,32,109,97,114,107,10,0,0,0,49,53,48,0,0,0,0,0,103,108,85,110,105,102,111,114,109,49,102,0,0,0,0,0,67,76,95,80,97,114,115,101,83,101,114,118,101,114,77,101,115,115,97,103,101,58,32,114,101,97,100,32,112,97,115,116,32,101,110,100,32,111,102,32,115,101,114,118,101,114,32,109,101,115,115,97,103,101,0,0,78,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,0,0,0,0,67,98,117,102,95,69,120,101,99,117,116,101,84,101,120,116,58,32,98,97,100,32,101,120,101,99,95,119,104,101,110,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,65,82,66,0,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,0,0,0,0,114,95,101,120,116,95,109,97,120,95,97,110,105,115,111,116,114,111,112,121,0,0,0,0,42,114,101,110,100,101,114,100,101,112,116,104,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,80,82,73,77,65,82,89,95,76,73,71,72,84,10,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,52,105,118,65,82,66,0,95,102,97,116,108,105,103,104,116,109,97,112,37,100,0,0,82,95,67,104], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+102404); +/* memory initializer */ allocate([101,99,107,70,66,79,58,32,40,37,115,41,32,85,110,115,117,112,112,111,114,116,101,100,32,102,114,97,109,101,98,117,102,102,101,114,32,102,111,114,109,97,116,10,0,0,0,0,0,0,0,0,32,75,77,79,68,95,82,67,84,82,76,0,0,0,0,0,93,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,32,110,97,109,101,32,97,102,116,101,114,32,35,105,102,100,101,102,44,32,102,111,117,110,100,32,37,115,0,0,0,0,111,102,102,115,101,116,0,0,38,0,0,0,0,0,0,0,119,101,97,112,111,110,95,114,111,99,107,101,116,108,97,117,110,99,104,101,114,0,0,0,45,54,0,0,0,0,0,0,114,115,95,106,117,109,112,112,97,100,0,0,0,0,0,0,86,77,95,82,101,115,117,109,101,73,110,116,101,114,112,114,101,116,101,100,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,0,0,0,82,101,115,116,97,114,116,105,110,103,32,115,101,114,118,101,114,32,100,117,101,32,116,111,32,116,105,109,101,32,119,114,97,112,112,105,110,103,0,0,115,118,95,122,111,109,98,105,101,116,105,109,101,0,0,0,67,108,105,112,87,105,110,100,105,110,103,58,32,77,65,88,95,80,79,73,78,84,83,95,79,78,95,87,73,78,68,73,78,71,0,0,0,0,0,0,99,108,105,101,110,116,68,111,119,110,108,111,97,100,58,32,37,100,32,58,32,34,37,115,34,32,102,105,108,101,32,110,111,116,32,102,111,117,110,100,32,111,110,32,115,101,114,118,101,114,10,0,0,0,0,0,66,97,100,32,99,108,105,101,110,116,32,115,108,111,116,58,32,37,105,10,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,117,110,104,97,110,100,108,101,100,32,65,76,32,101,114,114,111,114,58,32,37,115,10,0,0,0,0,0,0,83,111,117,110,100,32,110,97,109,101,32,105,115,32,78,85,76,76,0,0,0,0,0,0,48,46,48,46,48,46,48,0,74,79,89,55,0,0,0,0,97,112,111,115,46,116,114,68,117,114,97,116,105,111,110,0,66,97,100,32,111,114,105,103,105,110,32,105,110,32,70,83,95,83,101,101,107,0,0,0,49,0,0,0,0,0,0,0,67,77,95,71,101,110,101,114,97,116,101,80,97,116,99,104,70,97,99,101,116,115,58,32,98,97,100,32,112,97,114,97,109,101,116,101,114,115,58,32,40,37,105,44,32,37,105,44,32,37,112,41,0,0,0,0,45,98,117,116,116,111,110,51,0,0,0,0,0,0,0,0,37,56,105,32,98,121,116,101,115,32,116,111,116,97,108,32,122,111,110,101,10,0,0,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,108,111,114,32,113,117,97,110,116,105,122,97,116,105,111,110,32,109,111,100,101,32,99,104,97,110,103,101,0,0,77,65,88,95,83,85,66,77,79,68,69,76,83,32,101,120,99,101,101,100,101,100,0,0,103,108,77,117,108,116,105,84,101,120,67,111,111,114,100,50,102,65,82,66,0,0,0,0,82,95,71,101,116,83,104,97,100,101,114,66,121,72,97,110,100,108,101,58,32,111,117,116,32,111,102,32,114,97,110,103,101,32,104,83,104,97,100,101,114,32,39,37,100,39,10,0,114,95,101,120,116,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,0,0,0,0,0,0,0,42,115,117,110,82,97,121,115,0,0,0,0,0,0,0,0,35,100,101,102,105,110,101,32,83,72,65,68,79,87,77,65,80,95,77,79,68,85,76,65,84,69,10,0,0,0,0,0,103,108,85,110,105,102,111,114,109,51,105,118,65,82,66,0,87,65,82,78,73,78,71,58,32,110,117,109,98,101,114,32,111,102,32,108,105,103,104,116,109,97,112,115,32,62,32,49,48,50,52,10,0,0,0,0,32,75,77,79,68,95,76,67,84,82,76,0,0,0,0,0,99,108,95,109,97,120,112,97,99,107,101,116,115,0,0,0,91,0,0,0,0,0,0,0,46,46,46,105,103,110,111,114,105,110,103,32,37,115,10,0,35,105,102,100,101,102,32,119,105,116,104,111,117,116,32,110,97,109,101,0,0,0,0,0,114,101,99,111,105,108,0,0,102,111,117,110,100,32,37,100,32,108,101,118,101,108,32,105,116,101,109,115,10,0,0,0,119,101,97,112,111,110,95,103,114,101,110,97,100,101,108,97,117,110,99,104,101,114,0,0,45,52,0,0,0,0,0,0,114,115,95,98,102,103,106,117,109,112,0,0,0,0,0,0,37,102,0,0,0,0,0,0,50,48,48,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,100,111,119,110,108,111,97,100,32,34,37,115,34,32,98,101,99,97,117,115,101,32,97,117,116,111,100,111,119,110,108,111,97,100,105,110,103,32,105,115,32,100,105,115,97,98,108,101,100,32,111,110,32,116,104,101,32,115,101,114,118,101,114,46,10,10,84,104,101,32,115,101,114,118,101,114,32,121,111,117,32,97,114,101,32,99,111,110,110,101,99,116,105,110,103,32,116,111,32,105,115,32,110,111,116,32,97,32,112,117,114,101,32,115,101,114,118,101,114,44,32,115,101,116,32,97,117,116,111,100,111,119,110,108,111,97,100,32,116,111,32,78,111,32,105,110,32,121,111,117,114,32,115,101,116,116,105,110,103,115,32,97,110,100,32,121,111,117,32,109,105,103,104,116,32,98,101,32,97,98,108,101,32,116,111,32,106,111,105,110,32,116,104,101,32,103,97,109,101,32,97,110,121,119,97,121,46,10,0,0,0,0,0,0,66,97,100,32,115,108,111,116,32,110,117,109,98,101,114,58,32,37,115,10,0,0,0,0,117,110,107,110,111,119,110,32,112,114,105,110,116,32,116,121,112,101,10,0,0,0,0,0,94,49,69,82,82,79,82,58,32,67,97,110,39,116,32,100,101,108,101,116,101,32,115,111,117,110,100,32,98,117,102,102,101,114,32,102,111,114,32,37,115,10,0,0,0,0,0,0,100,114,111,112,112,105,110,103,32,115,111,117,110,100,10,0,110,101,116,95,105,112,0,0,74,79,89,54,0,0,0,0,97,112,111,115,46,116,114,84,105,109,101,0,0,0,0,0,70,83,95,87,114,105,116,101,58,32,45,49,32,98,121,116,101,115,32,119,114,105,116,116,101,110,10,0,0,0,0,0,115,118,95,99,104,101,97,116,115,0,0,0,0,0,0,0,113,117,105,116,0,0,0,0,37,105,47,37,105,47,37,105,32,115,104,97,100,101,114,115,47,98,97,116,99,104,101,115,47,115,117,114,102,115,32,37,105,32,108,101,97,102,115,32,37,105,32,118,101,114,116,115,32,37,105,47,37,105,32,116,114,105,115,32,37,46,50,102,32,109,116,101,120,32,37,46,50,102,32,100,99,10,0,0,43,98,117,116,116,111,110,51,0,0,0,0,0,0,0,0,37,56,105,32,98,121,116,101,115,32,116,111,116,97,108,32,104,117,110,107,10,0,0,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,0,0,0,0,0,103,114,97,112,104,104,101,105,103,104,116,0,0,0,0,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,0,0,0,0,0,0,37,105,32,0,0,0,0,0,83,99,97,110,32,115,99,114,105,112,116,32,100,111,101,115,32,110,111,116,32,116,114,97,110,115,109,105,116,32,97,108,108,32,100,97,116,97,0,0,71,76,95,65,82,66,95,109,117,108,116,105,116,101,120,116,117,114,101,0,0,0,0,0,83,104,97,100,101,114,32,110,97,109,101,32,101,120,99,101,101,100,115,32,77,65,88,95,81,80,65,84,72,10,0,0,114,95,97,114,98,95,118,101,114,116,101,120,95,116,121,112,101,95,50,95,49,48,95,49,48,95,49,48,95,114,101,118,0,0,0,0,0,0,0,0,95,114,101,110,100,101,114,0,35,100,101,102,105,110,101,32,85,83,69,95,67,85,66,69,77,65,80,10,0,0,0,0,103,108,85,110,105,102,111,114,109,50,105,118,65,82,66,0,102,111,103,32,98,114,117,115,104,32,115,105,100,101,78,117,109,98,101,114,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,115,116,105,116,99,104,101,100,32,37,100,32,76,111,68,32,99,114,97,99,107,115,10,0,73,110,118,97,108,105,100,32,99,111,109,112,111,110,101,110,116,32,73,68,32,37,100,32,105,110,32,83,79,83,0,0,32,75,77,79,68,95,82,83,72,73,70,84,0,0,0,0,125,0,0,0,0,0,0,0,42,101,120,116,101,114,110,0,71,76,95,66,105,110,100,58,32,78,85,76,76,32,105,109,97,103,101,10,0,0,0,0,97,99,99,101,108,101,114,97,116,105,111,110,0,0,0,0,37,115,32,110,111,116,32,114,101,97,99,104,97,98,108,101,32,102,111,114,32,98,111,116,115,32,97,116,32,40,37,49,46,49,102,32,37,49,46,49,102,32,37,49,46,49,102,41,10,0,0,0,0,0,0,0,82,95,77,68,82,65,100,100,65,110,105,109,83,117,114,102,97,99,101,115,58,32,110,111,32,115,117,99,104,32,102,114,97,109,101,32,37,100,32,116,111,32,37,100,32,102,111,114,32,39,37,115,39,10,0,0,66,111,116,67,104,101,99,107,67,104,97,116,77,101,115,115,97,103,101,73,110,116,101,103,114,101,116,121,58,32,109,101,115,115,97,103,101,32,34,37,115,34,32,105,110,118,97,108,105,100,32,101,115,99,97,112,101,32,99,104,97,114,10,0,105,116,101,109,95,104,101,97,108,116,104,95,109,101,103,97,0,0,0,0,0,0,0,0,117,115,97,103,101,58,32,99,111,110,110,101,99,116,32,91,45,52,124,45,54,93,32,115,101,114,118,101,114,10,0,0,114,115,95,114,111,99,107,101,116,106,117,109,112,0,0,0,79,80,95,66,76,79,67,75,95,67,79,80,89,32,111,117,116,32,111,102,32,114,97,110,103,101,33,0,0,0,0,0,116,105,109,101,115,99,97,108,101,0,0,0,0,0,0,0,115,118,95,116,105,109,101,111,117,116,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,100,111,119,110,108,111,97,100,32,34,37,115,34,32,98,101,99,97,117,115,101,32,97,117,116,111,100,111,119,110,108,111,97,100,105,110,103,32,105,115,32,100,105,115,97,98,108,101,100,32,111,110,32,116,104,101,32,115,101,114,118,101,114,46,10,10,89,111,117,32,119,105,108,108,32,110,101,101,100,32,116,111,32,103,101,116,32,116,104,105,115,32,102,105,108,101,32,101,108,115,101,119,104,101,114,101,32,98,101,102,111,114,101,32,121,111,117,32,99,97,110,32,99,111,110,110,101,99,116,32,116,111,32,116,104,105,115,32,112,117,114,101,32,115,101,114,118,101,114,46,10,0,0,0,0,0,0,0,67,97,110,110,111,116,32,100,101,116,101,114,109,105,110,101,32,100,105,115,112,108,97,121,32,114,101,115,111,108,117,116,105,111,110,44,32,97,115,115,117,109,105,110,103,32,54,52,48,120,52,56,48,10,0,0,78,111,32,112,108,97,121,101,114,32,115,112,101,99,105,102,105,101,100,46,10,0,0,0,94,49,69,120,105,116,58,32,37,115,0,0,0,0,0,0,85,110,107,110,111,119,110,32,101,114,114,111,114,0,0,0,37,105,32,58,32,37,115,10,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,82,95,67,114,101,97,116,101,86,66,79,50,58,32,34,37,115,34,32,105,115,32,116,111,111,32,108,111,110,103,0,0,74,79,89,53,0,0,0,0,116,105,109,101,0,0,0,0,66,97,100,32,115,117,114,102,97,99,101,32,116,101,115,115,101,108,97,116,101,100,46,10,0,0,0,0,0,0,0,0,70,83,95,87,114,105,116,101,58,32,48,32,98,121,116,101,115,32,119,114,105,116,116,101,110,10,0,0,0,0,0,0,67,118,97,114,95,85,112,100,97,116,101,58,32,115,114,99,32,37,115,32,108,101,110,103,116,104,32,37,117,32,101,120,99,101,101,100,115,32,77,65,88,95,67,86,65,82,95,86,65,76,85,69,95,83,84,82,73,78,71,0,0,0,0,0,115,118,99,95,98,97,115,101,108,105,110,101,0,0,0,0,45,98,117,116,116,111,110,50,0,0,0,0,0,0,0,0,69,82,82,79,82,58,32,116,119,111,32,99,111,110,115,101,99,117,116,105,118,101,32,102,114,101,101,32,98,108,111,99,107,115,10,0,0,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,116,111,111,32,102,97,114,32,98,97,99,107,0,0,0,115,107,121,0,0,0,0,0,84,97,98,108,101,70,111,114,70,117,110,99,32,99,97,108,108,101,100,32,119,105,116,104,32,105,110,118,97,108,105,100,32,102,117,110,99,116,105,111,110,32,39,37,100,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,0,0,0,69,82,82,79,82,58,32,117,110,107,110,111,119,110,32,116,101,120,109,111,100,32,39,37,100,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,0,0,0,0,0,0,0,61,61,61,61,61,61,32,82,69,95,82,101,110,100,101,114,83,99,101,110,101,32,61,61,61,61,61,10,0,0,0,0,97,32,115,117,114,102,97,99,101,0,0,0,0,0,0,0,82,95,82,101,103,105,115,116,101,114,73,81,77,58,32,99,111,117,108,100,110,39,116,32,108,111,97,100,32,105,113,109,32,102,105,108,101,32,37,115,10,0,0,0,0,0,0,0,82,95,65,100,100,69,110,116,105,116,121,83,117,114,102,97,99,101,115,58,32,66,97,100,32,114,101,84,121,112,101,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,0,0,0,0,99,108,95,100,111,119,110,108,111,97,100,67,111,117,110,116,0,0,0,0,0,0,0,0,67,97,110,110,111,116,32,116,114,97,110,115,99,111,100,101,32,100,117,101,32,116,111,32,109,117,108,116,105,112,108,101,32,117,115,101,32,111,102,32,113,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,32,37,100,0,0,0,46,46,46,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,101,110,118,95,97,100,100,32,110,111,116,32,102,111,117,110,100,10,0,0,0,0,79,103,103,83,0,0,0,0,67,111,117,108,100,110,39,116,32,102,105,110,100,32,105,109,97,103,101,32,102,105,108,101,32,102,111,114,32,115,104,97,100,101,114,32,37,115,10,0,114,95,97,114,98,95,115,101,97,109,108,101,115,115,95,99,117,98,101,95,109,97,112,0,42,115,99,114,97,116,99,104,0,0,0,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,76,65,90,65,82,79,86,10,0,0,0,0,103,108,85,110,105,102,111,114,109,52,102,118,65,82,66,0,102,111,103,32,98,114,117,115,104,78,117,109,98,101,114,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,32,75,77,79,68,95,76,83,72,73,70,84,0,0,0,0,79,112,117,115,72,101,97,100,0,0,0,0,0,0,0,0,123,0,0,0,0,0,0,0,100,101,102,105,110,101,32,119,105,116,104,32,109,105,115,112,108,97,99,101,100,32,35,35,0,0,0,0,0,0,0,0,115,112,101,101,100,0,0,0,37,115,32,105,110,32,115,111,108,105,100,32,97,116,32,40,37,49,46,49,102,32,37,49,46,49,102,32,37,49,46,49,102,41,10,0,0,0,0,0,37,115,32,61,32,123,34,37,115,34,125,32,47,47,77,73,83,83,73,78,71,32,82,65,78,68,79,77,13,10,0,0,105,116,101,109,95,97,114,109,111,114,95,99,111,109,98,97,116,0,0,0,0,0,0,0,99,111,110,110,101,99,116,32,37,115,10,0,0,0,0,0,114,115,95,115,116,97,114,116,106,117,109,112,0,0,0,0,49,48,0,0,0,0,0,0,71,76,95,83,84,65,67,75,95,85,78,68,69,82,70,76,79,87,0,0,0,0,0,0,115,118,95,102,112,115,0,0,99,108,105,101,110,116,68,111,119,110,108,111,97,100,58,32,37,100,32,58,32,34,37,115,34,32,100,111,119,110,108,111,97,100,32,100,105,115,97,98,108,101,100,10,0,0,0,0,76,111,97,100,84,71,65,58,32,37,115,32,104,97,115,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,0,0,0,98,97,110,32,101,120,99,101,112,116,105,111,110,0,0,0,94,49,70,97,116,97,108,58,32,37,115,0,0,0,0,0,76,111,97,100,66,77,80,58,32,111,110,108,121,32,117,110,99,111,109,112,114,101,115,115,101,100,32,66,77,80,32,102,105,108,101,115,32,115,117,112,112,111,114,116,101,100,32,40,37,115,41,0,0,0,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,94,51,83,95,83,116,97,114,116,83,111,117,110,100,58,32,104,97,110,100,108,101,32,37,105,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,110,101,116,95,101,110,97,98,108,101,100,0,0,0,0,0,97,110,103,108,101,115,91,48,93,0,0,0,0,0,0,0,74,79,89,52,0,0,0,0,70,83,95,82,101,97,100,58,32,45,49,32,98,121,116,101,115,32,114,101,97,100,0,0,67,118,97,114,95,85,112,100,97,116,101,58,32,104,97,110,100,108,101,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,0,71,76,95,78,69,65,82,69,83,84,95,77,73,80,77,65,80,95,76,73,78,69,65,82,0,0,0,0,0,0,0,0,43,98,117,116,116,111,110,50,0,0,0,0,0,0,0,0,69,82,82,79,82,58,32,110,101,120,116,32,98,108,111,99,107,32,100,111,101,115,110,39,116,32,104,97,118,101,32,112,114,111,112,101,114,32,98,97,99,107,32,108,105,110,107,10,0,0,0,0,0,0,0,0,71,76,83,76,95,83,101,116,85,110,105,102,111,114,109,86,101,99,51,58,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,117,110,105,102,111,114,109,32,37,105,32,105,110,32,112,114,111,103,114,97,109,32,37,115,10,0,0,0,82,95,67,104,101,99,107,70,66,79,58,32,40,37,115,41,32,70,114,97,109,101,98,117,102,102,101,114,32,105,110,99,111,109,112,108,101,116,101,44,32,97,116,116,97,99,104,101,100,32,105,109,97,103,101,115,32,109,117,115,116,32,104,97,118,101,32,115,97,109,101,32,102,111,114,109,97,116,10,0,10,0,0,0,0,0,0,0,100,108,105,103,104,116,32,115,114,102,58,37,105,32,32,99,117,108,108,101,100,58,37,105,32,32,118,101,114,116,115,58,37,105,32,32,116,114,105,115,58,37,105,10,0,0,0,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,0,0,0,0,110,101,120,116,100,108,32,37,100,0,0,0,0,0,0,0,118,101,114,116,101,120,114,101,109,97,112,115,104,97,100,101,114,0,0,0,0,0,0,0,80,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,105,110,112,117,116,32,102,105,108,101,0,0,0,0,0,71,76,95,83,116,97,116,101,58,32,105,110,118,97,108,105,100,32,100,115,116,32,98,108,101,110,100,32,115,116,97,116,101,32,98,105,116,115,0,0,46,46,46,105,103,110,111,114,105,110,103,32,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,101,110,118,95,97,100,100,10,0,0,0,0,0,105,110,118,97,108,105,100,32,98,108,111,99,107,32,116,121,112,101,0,0,0,0,0,0,42,83,72,65,68,69,82,42,32,37,115,10,0,0,0,0,114,95,101,120,116,95,102,114,97,109,101,98,117,102,102,101,114,95,109,117,108,116,105,115,97,109,112,108,101,0,0,0,42,105,100,101,110,116,105,116,121,76,105,103,104,116,0,0,35,100,101,102,105,110,101,32,85,83,69,95,71,79,84,65,78,68,65,10,0,0,0,0,103,108,85,110,105,102,111,114,109,51,102,118,65,82,66,0,80,97,114,115,101,77,101,115,104,58,32,98,97,100,32,115,105,122,101,0,0,0,0,0,48,120,37,48,50,120,32,34,37,115,34,0,0,0,0,0,41,0,0,0,0,0,0,0,35,35,0,0,0,0,0,0,118,115,112,114,101,97,100,0,105,116,101,109,95,98,111,116,114,111,97,109,0,0,0,0,105,116,101,109,95,97,114,109,111,114,95,98,111,100,121,0,68,105,115,99,111,110,110,101,99,116,101,100,32,102,114,111,109,32,115,101,114,118,101,114,0,0,0,0,0,0,0,0,55,48,0,0,0,0,0,0,115,118,95,102,112,115,0,0,115,118,95,112,114,105,118,97,116,101,80,97,115,115,119,111,114,100,0,0,0,0,0,0,67,97,110,110,111,116,32,97,117,116,111,100,111,119,110,108,111,97,100,32,105,100,32,112,107,51,32,102,105,108,101,32,34,37,115,34,0,0,0,0,65,100,100,101,100,32,37,115,58,32,37,115,47,37,100,10,0,0,0,0,0,0,0,0,94,49,69,114,114,111,114,58,32,37,115,0,0,0,0,0,73,110,118,97,108,105,100,32,111,112,101,114,97,116,105,111,110,0,0,0,0,0,0,0,83,95,83,116,97,114,116,83,111,117,110,100,58,32,98,97,100,32,101,110,116,105,116,121,110,117,109,32,37,105,0,0,87,97,114,110,105,110,103,58,32,115,101,108,101,99,116,40,41,32,115,121,115,99,97,108,108,32,102,97,105,108,101,100,58,32,37,115,10,0,0,0,109,111,100,101,108,105,110,100,101,120,50,0,0,0,0,0,74,79,89,51,0,0,0,0,118,109,47,37,115,46,113,118,109,0,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,85,110,115,101,116,116,105,110,103,32,67,86,65,82,95,82,79,77,32,99,118,97,114,32,39,37,115,39,44,32,115,105,110,99,101,32,105,116,32,105,115,32,97,108,115,111,32,67,86,65,82,95,65,82,67,72,73,86,69,10,0,45,98,117,116,116,111,110,49,0,0,0,0,0,0,0,0,105,110,95,114,101,115,116,97,114,116,0,0,0,0,0,0,115,95,115,100,108,67,104,97,110,110,101,108,115,0,0,0,117,115,97,103,101,58,32,99,111,110,100,117,109,112,32,60,102,105,108,101,110,97,109,101,62,10,0,0,0,0,0,0,69,82,82,79,82,58,32,98,108,111,99,107,32,115,105,122,101,32,100,111,101,115,32,110,111,116,32,116,111,117,99,104,32,116,104,101,32,110,101,120,116,32,98,108,111,99,107,10,0,0,0,0,0,0,0,0,105,110,95,107,101,121,98,111,97,114,100,68,101,98,117,103,0,0,0,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,102,108,111,97,116,0,0,0,0,0,0,0,0,38,38,0,0,0,0,0,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,0,0,0,100,101,102,105,110,101,32,37,115,32,109,105,115,115,105,110,103,32,112,97,114,109,115,0,67,111,117,108,100,32,110,111,116,32,99,114,101,97,116,101,32,37,115,10,0,0,0,0,69,109,112,116,121,32,105,110,112,117,116,32,102,105,108,101,0,0,0,0,0,0,0,0,119,98,0,0,0,0,0,0,46,46,46,117,115,105,110,103,32,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,101,110,118,95,97,100,100,10,0,0,0,0,0,0,0,0,104,111,109,101,100,105,114,0,87,65,82,78,73,78,71,58,32,115,104,97,100,101,114,32,39,37,115,39,32,104,97,115,32,105,110,118,97,108,105,100,32,108,105,103,104,116,109,97,112,32,105,110,100,101,120,32,111,102,32,37,100,10,0,0,114,95,97,114,98,95,104,97,108,102,95,102,108,111,97,116,95,112,105,120,101,108,0,0,42,115,104,97,100,111,119,99,117,98,101,109,97,112,37,105,0,0,0,0,0,0,0,0,98,97,108,97,110,99,101,0,35,100,101,102,105,110,101,32,85,83,69,95,77,67,65,85,76,69,89,10,0,0,0,0,103,108,85,110,105,102,111,114,109,50,102,118,65,82,66,0,84,114,105,115,117,114,102,32,104,97,115,32,98,97,100,32,116,114,105,97,110,103,108,101,115,44,32,111,114,105,103,105,110,97,108,108,121,32,115,104,97,100,101,114,32,37,115,32,37,100,32,116,114,105,115,32,37,100,32,118,101,114,116,115,44,32,110,111,119,32,37,100,32,116,114,105,115,10,0,0,51,50,0,0,0,0,0,0,109,111,100,101,108,0,0,0,32,32,0,0,0,0,0,0,40,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,32,100,101,102,105,110,101,32,40,114,101,109,111,118,101,100,32,114,101,99,117,114,115,105,111,110,41,0,0,0,0,105,110,100,101,120,0,0,0,104,115,112,114,101,97,100,0,110,111,116,98,111,116,0,0,66,111,116,77,97,116,99,104,86,97,114,105,97,98,108,101,58,32,118,97,114,105,97,98,108,101,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,0,0,0,97,114,101,97,32,37,100,32,99,101,110,116,101,114,32,37,102,32,37,102,32,37,102,32,105,110,32,115,111,108,105,100,63,13,10,0,0,0,0,0,114,115,95,115,116,97,114,116,119,97,108,107,111,102,102,108,101,100,103,101,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,101,109,112,116,121,32,99,111,110,115,111,108,101,32,109,101,115,115,97,103,101,32,104,101,97,112,10,0,0,0,0,0,114,99,111,110,80,97,115,115,119,111,114,100,0,0,0,0,99,108,105,101,110,116,68,111,119,110,108,111,97,100,58,32,37,100,32,58,32,34,37,115,34,32,99,97,110,110,111,116,32,100,111,119,110,108,111,97,100,32,105,100,32,112,107,51,32,102,105,108,101,115,10,0,69,114,114,111,114,58,32,37,115,32,37,115,47,37,100,32,115,117,112,101,114,115,101,100,101,115,32,97,108,114,101,97,100,121,32,101,120,105,115,116,105,110,103,32,37,115,32,37,115,47,37,100,10,0,0,0,123,10,0,0,0,0,0,0,94,51,87,97,114,110,105,110,103,58,32,37,115,0,0,0,73,110,118,97,108,105,100,32,118,97,108,117,101,0,0,0,94,51,87,65,82,78,73,78,71,58,32,109,117,115,105,99,32,102,105,108,101,32,37,115,32,105,115,32,110,111,116,32,50,50,107,32,115,116,101,114,101,111,10,0,0,0,0,0,110,101,116,95,114,101,115,116,97,114,116,0,0,0,0,0,65,65,83,95,80,111,105,110,116,65,114,101,97,78,117,109,58,32,97,97,115,32,110,111,116,32,108,111,97,100,101,100,10,0,0,0,0,0,0,0,111,114,105,103,105,110,50,91,49,93,0,0,0,0,0,0,74,79,89,50,0,0,0,0,97,114,101,97,32,37,100,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,49,50,56,32,114,101,97,99,104,97,98,105,108,105,116,105,101,115,10,0,0,0,0,0,0,0,37,115,46,106,115,0,0,0,69,114,114,111,114,58,32,37,115,58,32,86,97,114,105,97,98,108,101,32,37,115,32,105,115,32,110,111,116,32,117,115,101,114,32,99,114,101,97,116,101,100,46,10,0,0,0,0,116,97,114,103,101,116,110,97,109,101,0,0,0,0,0,0,43,98,117,116,116,111,110,49,0,0,0,0,0,0,0,0,112,104,121,115,95,103,114,97,118,105,116,121,0,0,0,0,48,0,0,0,0,0,0,0,98,108,111,99,107,58,37,112,32,32,32,32,115,105,122,101,58,37,55,105,32,32,32,32,116,97,103,58,37,51,105,10,0,0,0,0,0,0,0,0,37,115,32,105,115,32,110,111,116,32,97,110,32,65,65,83,32,102,105,108,101,10,0,0,65,65,83,95,69,110,116,105,116,121,77,111,100,101,108,105,110,100,101,120,58,32,101,110,116,110,117,109,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,99,108,117,115,116,101,114,32,37,100,32,116,111,117,99,104,101,100,32,99,108,117,115,116,101,114,32,37,100,32,97,116,32,97,114,101,97,32,37,100,10,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,37,115,0,0,0,0,0,0,86,77,32,112,114,111,103,114,97,109,32,99,111,117,110,116,101,114,32,111,117,116,32,111,102,32,114,97,110,103,101,32,105,110,32,79,80,95,67,65,76,76,0,0,0,0,0,0,118,109,112,114,111,102,105,108,101,0,0,0,0,0,0,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,0,67,76,95,80,97,114,115,101,68,111,119,110,108,111,97,100,58,32,69,120,112,101,99,116,101,100,32,98,108,111,99,107,32,37,100,44,32,103,111,116,32,37,100,10,0,0,0,0,115,118,115,46,110,101,120,116,83,110,97,112,115,104,111,116,69,110,116,105,116,105,101,115,32,119,114,97,112,112,101,100,0,0,0,0,0,0,0,0,77,97,120,105,109,117,109,32,115,117,112,112,111,114,116,101,100,32,105,109,97,103,101,32,100,105,109,101,110,115,105,111,110,32,105,115,32,37,117,32,112,105,120,101,108,115,0,0,69,88,84,95,116,101,120,116,117,114,101,95,101,110,118,95,97,100,100,0,0,0,0,0,100,117,115,116,0,0,0,0,114,101,99,111,114,100,32,60,100,101,109,111,110,97,109,101,62,10,0,0,0,0,0,0,114,95,101,120,116,95,116,101,120,116,117,114,101,95,102,108,111,97,116,0,0,0,0,0,95,110,0,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,66,76,73,78,78,95,70,82,69,83,78,69,76,10,0,0,0,0,0,0,84,114,105,101,100,32,116,111,32,98,108,105,116,32,102,114,111,109,32,97,32,78,85,76,76,32,70,66,79,33,10,0,98,114,111,97,100,99,97,115,116,58,32,37,115,10,0,0,103,108,85,110,105,102,111,114,109,49,102,118,65,82,66,0,70,97,99,101,32,104,97,115,32,98,97,100,32,116,114,105,97,110,103,108,101,115,44,32,111,114,105,103,105,110,97,108,108,121,32,115,104,97,100,101,114,32,37,115,32,37,100,32,116,114,105,115,32,37,100,32,118,101,114,116,115,44,32,110,111,119,32,37,100,32,116,114,105,115,10,0,0,0,0,0,43,32,0,0,0,0,0,0,63,0,0,0,0,0,0,0,83,86,95,83,101,116,85,115,101,114,105,110,102,111,58,32,98,97,100,32,105,110,100,101,120,32,37,105,0,0,0,0,100,101,102,105,110,101,32,110,111,116,32,116,101,114,109,105,110,97,116,101,100,0,0,0,110,117,109,112,114,111,106,101,99,116,105,108,101,115,0,0,83,86,95,71,101,116,83,101,114,118,101,114,105,110,102,111,58,32,98,117,102,102,101,114,83,105,122,101,32,61,61,32,37,105,0,0,0,0,0,0,110,111,116,115,105,110,103,108,101,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,32,105,110,116,101,103,101,114,44,32,102,111,117,110,100,32,37,115,0,0,0,0,0,0,102,111,117,110,100,32,97,32,116,114,105,103,103,101,114,95,112,117,115,104,32,119,105,116,104,32,118,101,108,111,99,105,116,121,32,37,102,32,37,102,32,37,102,10,0,0,0,0,53,48,48,0,0,0,0,0,117,105,95,115,105,110,103,108,101,80,108,97,121,101,114,65,99,116,105,118,101,0,0,0,32,32,32,32,100,97,116,97,32,108,101,110,103,116,104,32,58,32,37,55,105,10,0,0,115,118,95,107,105,108,108,115,101,114,118,101,114,0,0,0,112,114,105,110,116,10,71,97,109,101,32,109,105,115,109,97,116,99,104,58,32,84,104,105,115,32,105,115,32,97,32,37,115,32,115,101,114,118,101,114,10,0,0,0,0,0,0,0,115,118,95,114,101,102,101,114,101,110,99,101,100,80,97,107,78,97,109,101,115,0,0,0,70,105,108,101,32,34,37,115,34,32,105,115,32,110,111,116,32,114,101,102,101,114,101,110,99,101,100,32,97,110,100,32,99,97,110,110,111,116,32,98,101,32,100,111,119,110,108,111,97,100,101,100,46,0,0,0,66,97,110,0,0,0,0,0,37,115,0,0,0,0,0,0,73,110,118,97,108,105,100,32,101,110,117,109,101,114,97,116,111,114,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,99,111,117,108,100,110,39,116,32,111,112,101,110,32,109,117,115,105,99,32,102,105,108,101,32,37,115,10,0,87,65,82,78,73,78,71,58,32,67,111,117,108,100,110,39,116,32,98,105,110,100,32,116,111,32,97,32,118,52,32,105,112,32,97,100,100,114,101,115,115,46,10,0,0,0,0,0,111,114,105,103,105,110,50,91,48,93,0,0,0,0,0,0,74,79,89,49,0,0,0,0,107,105,99,107,110,117,109,0,70,83,95,70,79,112,101,110,70,105,108,101,82,101,97,100,58,32,37,115,32,40,102,111,117,110,100,32,105,110,32,39,37,115,37,99,37,115,39,41,10,0,0,0,0,0,0,0,85,115,97,103,101,58,32,37,115,32,60,118,97,114,110,97,109,101,62,10,0,0,0,0,98,111,116,95,103,114,111,117,110,100,111,110,108,121,0,0,115,95,97,108,83,111,117,114,99,101,115,0,0,0,0,0,94,49,69,82,82,79,82,58,32,67,111,117,108,100,110,39,116,32,102,105,110,100,32,34,102,109,116,34,32,99,104,117,110,107,10,0,0,0,0,0,45,98,117,116,116,111,110,48,0,0,0,0,0,0,0,0,108,111,97,100,0,0,0,0,48,46,56,0,0,0,0,0,37,115,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,37,115,32,105,115,32,110,111,116,32,97,32,50,50,107,72,122,32,97,117,100,105,111,32,102,105,108,101,10,0,0,0,0,0,0,0,0,37,53,100,32,115,97,109,112,108,101,98,105,116,115,10,0,91,37,115,93,58,37,104,117,0,0,0,0,0,0,0,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,0,37,105,0,0,0,0,0,0,67,76,95,80,97,114,115,101,68,111,119,110,108,111,97,100,58,32,73,110,118,97,108,105,100,32,115,105,122,101,32,37,100,32,102,111,114,32,100,111,119,110,108,111,97,100,32,99,104,117,110,107,0,0,0,0,77,105,115,115,105,110,103,32,72,117,102,102,109,97,110,32,99,111,100,101,32,116,97,98,108,101,32,101,110,116,114,121,0,0,0,0,0,0,0,0,46,46,46,71,76,95,83,51,95,115,51,116,99,32,110,111,116,32,102,111,117,110,100,10,0,0,0,0,0,0,0,0,110,111,100,108,105,103,104,116,0,0,0,0,0,0,0,0,114,95,101,120,116,95,102,114,97,109,101,98,117,102,102,101,114,95,111,98,106,101,99,116,0,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,114,101,117,115,101,100,32,105,109,97,103,101,32,37,115,32,119,105,116,104,32,109,105,120,101,100,32,102,108,97,103,115,32,40,37,105,32,118,115,32,37,105,41,10,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,66,76,73,78,78,10,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,52,105,65,82,66,0,0,66,97,100,32,105,110,100,101,120,32,105,110,32,102,97,99,101,32,115,117,114,102,97,99,101,0,0,0,0,0,0,0,32,32,73,103,110,111,114,101,100,32,100,101,97,100,32,107,101,121,32,39,37,99,39,10,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,100,101,102,105,110,101,32,112,97,114,97,109,101,116,101,114,115,32,110,111,116,32,116,101,114,109,105,110,97,116,101,100,0,0,0,0,0,0,0,0,112,114,111,106,101,99,116,105,108,101,0,0,0,0,0,0,110,111,116,116,101,97,109,0,105,110,118,97,108,105,100,32,116,111,107,101,110,32,37,115,0,0,0,0,0,0,0,0,37,115,37,115,0,0,0,0,102,117,110,99,98,111,98,32,114,101,97,99,104,32,102,114,111,109,32,97,114,101,97,32,37,100,32,116,111,32,37,100,10,0,0,0,0,0,0,0,114,115,95,115,116,97,114,116,103,114,97,112,112,108,101,0,78,111,116,32,99,111,110,110,101,99,116,101,100,32,116,111,32,97,32,115,101,114,118,101,114,46,10,0,0,0,0,0,32,32,32,32,116,97,98,108,101,32,108,101,110,103,116,104,58,32,37,55,105,10,0,0,83,101,114,118,101,114,32,119,97,115,32,107,105,108,108,101,100,0,0,0,0,0,0,0,115,118,95,114,101,102,101,114,101,110,99,101,100,80,97,107,115,0,0,0,0,0,0,0,99,108,105,101,110,116,68,111,119,110,108,111,97,100,58,32,37,100,32,58,32,34,37,115,34,32,105,115,32,110,111,116,32,114,101,102,101,114,101,110,99,101,100,32,97,110,100,32,99,97,110,110,111,116,32,98,101,32,100,111,119,110,108,111,97,100,101,100,46,10,0,0,69,120,99,101,112,116,105,111,110,0,0,0,0,0,0,0,83,86,95,66,111,116,95,72,117,110,107,65,108,108,111,99,58,32,65,108,108,111,99,32,119,105,116,104,32,109,97,114,107,115,32,97,108,114,101,97,100,121,32,115,101,116,0,0,73,110,118,97,108,105,100,32,110,97,109,101,0,0,0,0,87,97,114,110,105,110,103,58,32,99,118,97,114,32,34,37,115,34,32,103,105,118,101,110,32,105,110,105,116,105,97,108,32,118,97,108,117,101,115,58,32,34,37,115,34,32,97,110,100,32,34,37,115,34,10,0,115,95,116,101,115,116,115,111,117,110,100,0,0,0,0,0,110,101,116,95,112,111,114,116,0,0,0,0,0,0,0,0,111,114,105,103,105,110,50,91,50,93,0,0,0,0,0,0,77,87,72,69,69,76,68,79,87,78,0,0,0,0,0,0,66,65,67,75,83,80,65,67,69,0,0,0,0,0,0,0,46,100,97,116,0,0,0,0,37,105,32,99,118,97,114,32,105,110,100,101,120,101,115,10,0,0,0,0,0,0,0,0,43,98,117,116,116,111,110,48,0,0,0,0,0,0,0,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,0,0,0,0,0,0,0,37,115,0,0,0,0,0,0,72,117,102,102,109,97,110,32,99,111,100,101,32,115,105,122,101,32,116,97,98,108,101,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,114,0,0,0,0,0,0,0,46,46,46,105,103,110,111,114,105,110,103,32,71,76,95,83,51,95,115,51,116,99,10,0,110,111,108,105,103,104,116,109,97,112,0,0,0,0,0,0,114,95,101,120,116,95,109,117,108,116,105,95,100,114,97,119,95,97,114,114,97,121,115,0,42,119,104,105,116,101,0,0,35,100,101,102,105,110,101,32,85,83,69,95,83,80,69,67,85,76,65,82,77,65,80,10,0,0,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,51,105,65,82,66,0,0,87,65,82,78,73,78,71,58,32,77,65,88,95,70,65,67,69,95,80,79,73,78,84,83,32,101,120,99,101,101,100,101,100,58,32,37,105,10,0,0,45,49,0,0,0,0,0,0,59,0,0,0,0,0,0,0,116,119,111,32,116,104,101,32,115,97,109,101,32,100,101,102,105,110,101,32,112,97,114,97,109,101,116,101,114,115,0,0,119,101,97,112,111,110,105,110,100,101,120,0,0,0,0,0,110,111,116,102,114,101,101,0,110,111,116,32,97,108,108,111,119,101,100,32,116,111,32,104,97,118,101,32,97,100,106,97,99,101,110,116,32,118,97,114,105,97,98,108,101,115,0,0,102,117,110,99,98,111,98,32,109,111,100,101,108,32,37,100,44,32,115,116,97,114,116,32,61,32,123,37,49,46,49,102,44,32,37,49,46,49,102,44,32,37,49,46,49,102,125,32,101,110,100,32,61,32,123,37,49,46,49,102,44,32,37,49,46,49,102,44,32,37,49,46,49,102,125,10,0,0,0,0,51,48,48,0,0,0,0,0,85,110,107,110,111,119,110,32,99,111,109,109,97,110,100,32,34,37,115,94,55,34,10,0,32,32,32,32,99,111,100,101,32,108,101,110,103,116,104,32,58,32,37,55,105,10,0,0,83,86,95,80,97,99,107,101,116,69,118,101,110,116,58,32,102,105,120,105,110,103,32,117,112,32,97,32,116,114,97,110,115,108,97,116,101,100,32,112,111,114,116,10,0,0,0,0,115,118,95,112,97,107,78,97,109,101,115,0,0,0,0,0,115,95,115,100,108,66,105,116,115,0,0,0,0,0,0,0,98,97,115,101,113,51,0,0,69,114,114,111,114,58,32,37,115,32,37,115,47,37,100,32,115,117,112,101,114,115,101,100,101,115,32,37,115,32,37,115,47,37,100,10,0,0,0,0,98,111,116,95,105,110,116,101,114,98,114,101,101,100,119,114,105,116,101,0,0,0,0,0,78,111,32,101,114,114,111,114,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,67,111,117,108,100,110,39,116,32,98,105,110,100,32,116,111,32,97,32,118,54,32,105,112,32,97,100,100,114,101,115,115,46,10,0,0,0,0,0,103,101,110,101,114,105,99,49,0,0,0,0,0,0,0,0,77,87,72,69,69,76,85,80,0,0,0,0,0,0,0,0,46,103,97,109,101,0,0,0,10,37,105,32,116,111,116,97,108,32,99,118,97,114,115,10,0,0,0,0,0,0,0,0,45,97,116,116,97,99,107,0,67,76,95,67,111,110,102,105,103,115,116,114,105,110,103,77,111,100,105,102,105,101,100,58,32,98,97,100,32,105,110,100,101,120,32,37,105,0,0,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,0,0,0,70,114,97,99,116,105,111,110,97,108,32,115,97,109,112,108,105,110,103,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,99,108,95,100,111,119,110,108,111,97,100,83,105,122,101,0,46,46,46,117,115,105,110,103,32,71,76,95,83,51,95,115,51,116,99,10,0,0,0,0,112,111,105,110,116,108,105,103,104,116,0,0,0,0,0,0,114,95,102,117,108,108,115,99,114,101,101,110,0,0,0,0,114,95,101,120,116,95,100,114,97,119,95,114,97,110,103,101,95,101,108,101,109,101,110,116,115,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,37,115,32,110,111,116,32,112,114,101,115,101,110,116,44,32,117,115,105,110,103,32,37,115,32,105,110,115,116,101,97,100,10,0,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,80,65,82,65,76,76,65,88,77,65,80,10,0,0,0,0,0,0,0,0,103,108,85,110,105,102,111,114,109,50,105,65,82,66,0,0,83,104,97,100,101,114,70,111,114,83,104,97,100,101,114,78,117,109,58,32,98,97,100,32,110,117,109,32,37,105,0,0,114,95,109,111,100,101,0,0,44,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,100,101,102,105,110,101,32,112,97,114,97,109,101,116,101,114,0,0,0,0,0,0,0,0,108,101,118,101,108,0,0,0,105,116,101,109,32,37,115,32,114,101,97,99,104,97,98,108,101,32,102,114,111,109,32,106,117,109,112,112,97,100,32,97,114,101,97,32,37,100,13,10,0,0,0,0,0,0,0,0,99,97,110,39,116,32,104,97,118,101,32,109,111,114,101,32,116,104,97,110,32,37,100,32,109,97,116,99,104,32,118,97,114,105,97,98,108,101,115,0,101,120,112,101,99,116,101,100,32,117,110,115], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+112644); +/* memory initializer */ allocate([105,103,110,101,100,32,118,97,108,117,101,44,32,102,111,117,110,100,32,37,115,0,0,0,0,0,0,0,115,112,97,119,110,102,108,97,103,115,0,0,0,0,0,0,114,115,95,115,116,97,114,116,99,114,111,117,99,104,0,0,115,118,95,99,104,101,97,116,115,0,0,0,0,0,0,0,105,110,116,101,114,112,114,101,116,101,100,10,0,0,0,0,105,110,102,111,82,101,115,112,111,110,115,101,10,37,115,0,108,111,103,102,105,108,101,0,115,118,95,112,97,107,115,0,112,107,51,0,0,0,0,0,69,114,114,111,114,58,32,67,97,110,32,98,97,110,32,112,108,97,121,101,114,115,32,99,111,110,110,101,99,116,101,100,32,118,105,97,32,116,104,101,32,105,110,116,101,114,110,101,116,32,111,110,108,121,46,10,0,0,0,0,0,0,0,0,50,48,0,0,0,0,0,0,94,49,69,82,82,79,82,58,32,67,97,110,39,116,32,102,105,108,108,32,115,111,117,110,100,32,98,117,102,102,101,114,32,102,111,114,32,37,115,32,45,32,37,115,10,0,0,0,115,95,115,104,111,119,0,0,110,101,116,95,112,111,114,116,54,0,0,0,0,0,0,0,108,111,111,112,83,111,117,110,100,0,0,0,0,0,0,0,77,79,85,83,69,53,0,0,70,83,95,70,79,112,101,110,70,105,108,101,82,101,97,100,58,32,37,115,32,40,102,111,117,110,100,32,105,110,32,39,37,115,39,41,10,0,0,0,32,37,115,32,34,37,115,34,10,0,0,0,0,0,0,0,43,97,116,116,97,99,107,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,0,0,0,0,0,79,117,116,112,117,116,32,102,105,108,101,32,119,114,105,116,101,32,101,114,114,111,114,32,45,45,45,32,111,117,116,32,111,102,32,100,105,115,107,32,115,112,97,99,101,63,0,0,115,116,111,112,100,108,0,0,71,76,95,83,51,95,115,51,116,99,0,0,0,0,0,0,67,98,117,102,95,69,120,101,99,117,116,101,84,101,120,116,58,32,69,88,69,67,95,78,79,87,32,99,97,108,108,101,100,32,97,110,32,97,115,121,110,99,32,104,97,110,100,108,101,114,0,0,0,0,0,0,110,111,100,114,97,119,0,0,114,95,101,120,116,95,116,101,120,116,117,114,101,95,101,110,118,95,97,100,100,0,0,0,37,115,46,37,115,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,86,69,82,84,95,84,65,78,71,69,78,84,95,83,80,65,67,69,10,0,103,108,85,110,105,102,111,114,109,49,105,65,82,66,0,0,46,46,46,108,111,97,100,101,100,32,37,100,32,102,97,99,101,115,44,32,37,105,32,109,101,115,104,101,115,44,32,37,105,32,116,114,105,115,117,114,102,115,44,32,37,105,32,102,108,97,114,101,115,10,0,0,97,114,101,97,32,62,61,32,99,109,46,110,117,109,65,114,101,97,115,0,0,0,0,0,114,95,99,117,115,116,111,109,104,101,105,103,104,116,0,0,46,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,32,100,101,102,105,110,101,32,112,97,114,97,109,101,116,101,114,0,0,0,0,0,0,0,110,117,109,98,101,114,0,0,105,116,101,109,32,37,115,32,119,105,116,104,111,117,116,32,111,114,105,103,105,110,10,0,102,117,110,99,95,98,111,98,98,105,110,103,32,119,105,116,104,32,105,110,118,97,108,105,100,32,109,111,100,101,108,32,110,117,109,98,101,114,10,0,114,115,95,98,97,114,114,105,101,114,106,117,109,112,0,0,100,105,115,99,111,110,110,101,99,116,0,0,0,0,0,0,99,111,109,112,105,108,101,100,32,111,110,32,108,111,97,100,10,0,0,0,0,0,0,0,103,97,109,101,0,0,0,0,115,118,95,112,117,114,101,0,62,62,61,0,0,0,0,0,67,108,105,112,87,105,110,100,105,110,103,58,32,112,111,105,110,116,115,32,101,120,99,101,101,100,101,100,32,101,115,116,105,109,97,116,101,0,0,0,37,115,0,0,0,0,0,0,69,114,114,111,114,58,32,80,108,97,121,101,114,110,117,109,32,37,115,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,10,0,0,0,0,98,111,116,95,105,110,116,101,114,98,114,101,101,100,99,121,99,108,101,0,0,0,0,0,94,49,69,82,82,79,82,58,32,79,117,116,32,111,102,32,109,101,109,111,114,121,32,108,111,97,100,105,110,103,32,37,115,10,0,0,0,0,0,0,48,46,48,53,0,0,0,0,78,69,84,95,79,112,101,110,83,111,99,107,115,58,32,114,101,108,97,121,32,97,100,100,114,101,115,115,32,105,115,32,110,111,116,32,73,80,86,52,58,32,37,105,10,0,0,0,111,116,104,101,114,69,110,116,105,116,121,78,117,109,50,0,77,79,85,83,69,52,0,0,67,111,117,108,100,110,39,116,32,111,112,101,110,32,37,115,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,45,115,112,101,101,100,0,0,87,65,82,78,73,78,71,58,32,67,77,95,65,100,100,70,97,99,101,116,66,101,118,101,108,115,46,46,46,32,105,110,118,97,108,105,100,32,98,101,118,101,108,10,0,0,0,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,0,0,73,110,112,117,116,32,102,105,108,101,32,114,101,97,100,32,101,114,114,111,114,0,0,0,83,101,114,118,101,114,32,115,101,110,100,105,110,103,32,100,111,119,110,108,111,97,100,44,32,98,117,116,32,110,111,32,100,111,119,110,108,111,97,100,32,119,97,115,32,114,101,113,117,101,115,116,101,100,10,0,46,46,46,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,32,110,111,116,32,102,111,117,110,100,10,0,0,0,77,97,112,32,119,105,116,104,32,110,111,32,109,111,100,101,108,115,0,0,0,0,0,0,110,111,115,116,101,112,115,0,114,95,101,120,116,95,99,111,109,112,105,108,101,100,95,118,101,114,116,101,120,95,97,114,114,97,121,0,0,0,0,0,99,111,100,101,47,114,101,110,100,101,114,101,114,103,108,50,47,116,114,95,105,109,97,103,101,46,99,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,84,82,73,65,67,69,95,79,82,69,78,95,78,65,89,65,82,10,0,0,103,108,85,110,105,102,111,114,109,52,102,65,82,66,0,0,66,97,100,32,115,117,114,102,97,99,101,84,121,112,101,0,114,95,99,117,115,116,111,109,119,105,100,116,104,0,0,0,60,0,0,0,0,0,0,0,114,101,100,101,102,105,110,105,116,105,111,110,32,111,102,32,37,115,0,0,0,0,0,0,98,111,117,110,99,101,115,116,111,112,0,0,0,0,0,0,101,110,116,105,116,121,32,37,115,32,117,110,107,110,111,119,110,32,105,116,101,109,13,10,0,0,0,0,0,0,0,0,102,117,110,99,95,98,111,98,98,105,110,103,32,119,105,116,104,111,117,116,32,109,111,100,101,108,10,0,0,0,0,0,53,48,0,0,0,0,0,0,114,97,116,101,120,58,32,37,102,44,32,114,97,116,101,121,58,32,37,102,44,32,112,111,119,120,58,32,37,102,44,32,112,111,119,121,58,32,37,102,10,0,0,0,0,0,0,0,99,108,95,100,111,119,110,108,111,97,100,78,97,109,101,0,110,97,116,105,118,101,10,0,102,115,95,103,97,109,101,0,115,118,95,115,101,114,118,101,114,105,100,0,0,0,0,0,71,111,105,110,103,32,102,114,111,109,32,67,83,95,80,82,73,77,69,68,32,116,111,32,67,83,95,65,67,84,73,86,69,32,102,111,114,32,37,115,10,0,0,0,0,0,0,0,69,114,114,111,114,58,32,77,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,98,97,110,115,47,101,120,99,101,112,116,105,111,110,115,32,101,120,99,101,101,100,101,100,46,10,0,0,0,0,0,49,48,0,0,0,0,0,0,32,32,65,118,97,105,108,97,98,108,101,32,68,101,118,105,99,101,115,58,10,37,115,0,115,95,109,105,120,80,114,101,83,116,101,112,0,0,0,0,78,69,84,95,79,112,101,110,83,111,99,107,115,58,32,114,101,113,117,101,115,116,32,100,101,110,105,101,100,58,32,37,105,10,0,0,0,0,0,0,109,111,100,101,108,105,110,100,101,120,0,0,0,0,0,0,77,79,85,83,69,51,0,0,117,105,46,113,118,109,0,0,67,0,0,0,0,0,0,0,118,105,100,95,114,101,115,116,97,114,116,0,0,0,0,0,43,115,112,101,101,100,0,0,90,95,67,104,101,99,107,72,101,97,112,58,32,116,119,111,32,99,111,110,115,101,99,117,116,105,118,101,32,102,114,101,101,32,98,108,111,99,107,115,0,0,0,0,0,0,0,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,100,101,98,117,103,103,114,97,112,104,0,0,0,0,0,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,0,0,0,0,0,102,105,108,101,32,37,115,44,32,108,105,110,101,32,37,100,58,32,37,115,10,0,0,0,68,105,100,110,39,116,32,101,120,112,101,99,116,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,115,99,97,110,0,0,0,0,0,0,0,0,67,76,95,80,97,114,115,101,71,97,109,101,115,116,97,116,101,58,32,98,97,100,32,99,111,109,109,97,110,100,32,98,121,116,101,0,0,0,0,0,46,46,46,105,103,110,111,114,105,110,103,32,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,10,0,0,0,0,102,108,101,115,104,0,0,0,114,95,101,120,116,95,109,117,108,116,105,116,101,120,116,117,114,101,0,0,0,0,0,0,82,95,67,114,101,97,116,101,73,109,97,103,101,58,32,77,65,88,95,68,82,65,87,73,77,65,71,69,83,32,104,105,116,0,0,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,79,82,69,78,95,78,65,89,65,82,10,0,45,45,45,45,45,45,45,32,70,66,79,95,83,104,117,116,100,111,119,110,32,45,45,45,45,45,45,45,10,0,0,0,103,108,85,110,105,102,111,114,109,51,102,65,82,66,0,0,109,97,112,115,47,37,115,47,118,101,114,116,108,105,103,104,116,46,114,97,119,0,0,0,66,111,103,117,115,32,98,117,102,102,101,114,32,99,111,110,116,114,111,108,32,109,111,100,101,0,0,0,0,0,0,0,37,100,0,0,0,0,0,0,62,0,0,0,0,0,0,0,99,97,110,39,116,32,114,101,100,101,102,105,110,101,32,37,115,0,0,0,0,0,0,0,98,111,117,110,99,101,102,114,105,99,0,0,0,0,0,0,115,112,97,119,110,102,108,97,103,115,0,0,0,0,0,0,124,0,0,0,0,0,0,0,99,104,97,114,97,99,116,101,114,105,115,116,105,99,32,37,100,32,105,115,32,110,111,116,32,97,32,115,116,114,105,110,103,10,0,0,0,0,0,0,108,111,103,0,0,0,0,0,102,117,110,99,95,98,111,98,98,105,110,103,0,0,0,0,114,115,95,116,101,108,101,112,111,114,116,0,0,0,0,0,49,0,0,0,0,0,0,0,37,115,32,58,32,0,0,0,109,97,120,80,105,110,103,0,115,118,95,99,104,101,97,116,115,0,0,0,0,0,0,0,71,111,105,110,103,32,116,111,32,67,83,95,90,79,77,66,73,69,32,102,111,114,32,37,115,10,0,0,0,0,0,0,46,46,46,115,101,116,116,105,110,103,32,109,111,100,101,32,37,100,58,0,0,0,0,0,85,115,97,103,101,58,32,37,115,32,40,105,112,91,47,115,117,98,110,101,116,93,32,124,32,99,108,105,101,110,116,110,117,109,32,91,115,117,98,110,101,116,93,41,10,0,0,0,98,111,116,95,105,110,116,101,114,98,114,101,101,100,98,111,116,115,0,0,0,0,0,0,32,32,68,101,118,105,99,101,58,32,32,32,32,32,32,32,32,32,37,115,10,0,0,0,48,46,50,0,0,0,0,0,78,69,84,95,79,112,101,110,83,111,99,107,115,58,32,97,117,116,104,101,110,116,105,99,97,116,105,111,110,32,102,97,105,108,101,100,10,0,0,0,99,111,100,101,47,114,101,110,100,101,114,101,114,103,108,50,47,116,114,95,118,98,111,46,99,0,0,0,0,0,0,0,112,111,119,101,114,117,112,115,0,0,0,0,0,0,0,0,77,79,85,83,69,50,0,0,45,45,45,32,82,66,95,83,117,114,102,97,99,101,86,66,79,77,68,86,77,101,115,104,32,45,45,45,10,0,0,0,99,103,97,109,101,46,113,118,109,0,0,0,0,0,0,0,67,108,105,112,83,107,121,80,111,108,121,103,111,110,58,32,77,65,88,95,67,76,73,80,95,86,69,82,84,83,0,0,76,0,0,0,0,0,0,0,45,109,111,118,101,114,105,103,104,116,0,0,0,0,0,0,115,118,99,95,99,111,110,102,105,103,115,116,114,105,110,103,0,0,0,0,0,0,0,0,99,108,46,115,110,97,112,46,115,101,114,118,101,114,84,105,109,101,32,60,32,99,108,46,111,108,100,70,114,97,109,101,83,101,114,118,101,114,84,105,109,101,0,0,0,0,0,0,90,95,67,104,101,99,107,72,101,97,112,58,32,110,101,120,116,32,98,108,111,99,107,32,100,111,101,115,110,39,116,32,104,97,118,101,32,112,114,111,112,101,114,32,98,97,99,107,32,108,105,110,107,0,0,0,112,111,114,116,97,108,0,0,65,117,116,111,115,112,114,105,116,101,32,115,104,97,100,101,114,32,37,115,32,104,97,100,32,111,100,100,32,105,110,100,101,120,32,99,111,117,110,116,10,0,0,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,0,82,69,95,65,100,100,82,101,102,69,110,116,105,116,121,84,111,83,99,101,110,101,58,32,98,97,100,32,114,101,84,121,112,101,32,37,105,0,0,0,82,95,76,111,97,100,73,81,77,58,32,37,115,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,37,105,32,118,101,114,116,115,32,111,110,32,37,115,32,40,37,105,41,46,10,0,0,0,0,0,0,0,82,95,82,101,103,105,115,116,101,114,77,68,82,58,32,99,111,117,108,100,110,39,116,32,108,111,97,100,32,109,100,114,32,102,105,108,101,32,37,115,10,0,0,0,0,0,0,0,82,95,65,100,100,69,110,116,105,116,121,83,117,114,102,97,99,101,115,58,32,66,97,100,32,109,111,100,101,108,116,121,112,101,0,0,0,0,0,0,103,108,73,115,66,117,102,102,101,114,0,0,0,0,0,0,87,114,105,116,101,32,116,111,32,69,77,83,32,102,97,105,108,101,100,0,0,0,0,0,66,97,115,101,108,105,110,101,32,110,117,109,98,101,114,32,111,117,116,32,111,102,32,114,97,110,103,101,58,32,37,105,0,0,0,0,0,0,0,0,46,46,46,117,115,105,110,103,32,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,10,0,0,0,0,0,0,0,109,101,116,97,108,115,116,101,112,115,0,0,0,0,0,0,115,97,121,32,37,115,0,0,48,0,0,0,0,0,0,0,42,108,105,103,104,116,109,97,112,0,0,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,78,79,82,77,65,76,77,65,80,10,0,0,95,114,101,110,100,101,114,67,117,98,101,70,98,111,0,0,103,108,85,110,105,102,111,114,109,50,102,65,82,66,0,0,42,37,100,0,0,0,0,0,105,111,113,51,46,112,105,100,0,0,0,0,0,0,0,0,113,117,105,116,32,67,108,111,115,101,100,32,119,105,110,100,111,119,10,0,0,0,0,0,33,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,32,110,97,109,101,32,97,102,116,101,114,32,35,100,101,102,105,110,101,44,32,102,111,117,110,100,32,37,115,0,0,0,98,111,117,110,99,101,0,0,103,114,97,112,112,108,101,111,102,102,0,0,0,0,0,0,105,116,101,109,32,37,115,32,104,97,115,32,109,111,100,101,108,105,110,100,101,120,32,48,0,0,0,0,0,0,0,0,99,97,110,110,111,116,32,98,111,117,110,100,32,99,104,97,114,97,99,116,101,114,105,115,116,105,99,32,37,100,32,98,101,116,119,101,101,110,32,37,100,32,97,110,100,32,37,100,10,0,0,0,0,0,0,0,104,101,105,103,104,116,0,0,114,115,95,119,97,116,101,114,106,117,109,112,0,0,0,0,114,95,117,105,70,117,108,108,83,99,114,101,101,110,0,0,82,101,103,105,115,116,101,114,101,100,32,118,105,114,116,117,97,108,32,109,97,99,104,105,110,101,115,58,10,0,0,0,109,105,110,80,105,110,103,0,71,76,95,83,84,65,67,75,95,79,86,69,82,70,76,79,87,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,80,67,88,32,109,105,115,115,105,110,103,32,112,97,108,101,116,116,101,58,32,37,115,10,0,0,0,0,0,0,0,0,76,111,97,100,84,71,65,58,32,79,110,108,121,32,51,50,32,111,114,32,50,52,32,98,105,116,32,105,109,97,103,101,115,32,115,117,112,112,111,114,116,101,100,32,40,110,111,32,99,111,108,111,114,109,97,112,115,41,0,0,0,0,0,0,69,114,114,111,114,58,32,73,110,118,97,108,105,100,32,98,97,110,32,110,117,109,98,101,114,32,103,105,118,101,110,10,0,0,0,0,0,0,0,0,76,111,97,100,66,77,80,58,32,104,101,97,100,101,114,32,115,105,122,101,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,102,105,108,101,32,115,105,122,101,32,40,37,117,32,118,115,46,32,37,117,41,32,40,37,115,41,0,0,37,115,0,0,0,0,0,0,32,32,65,76,67,32,69,120,116,101,110,115,105,111,110,115,58,32,37,115,10,0,0,0,115,95,109,105,120,97,104,101,97,100,0,0,0,0,0,0,78,69,84,95,79,112,101,110,83,111,99,107,115,58,32,114,101,113,117,101,115,116,32,100,101,110,105,101,100,10,0,0,115,111,108,105,100,0,0,0,77,79,85,83,69,49,0,0,108,101,118,101,108,115,104,111,116,115,0,0,0,0,0,0,65,0,0,0,0,0,0,0,43,109,111,118,101,114,105,103,104,116,0,0,0,0,0,0,71,76,95,76,73,78,69,65,82,95,77,73,80,77,65,80,95,78,69,65,82,69,83,84,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,67,76,95,83,101,116,67,71,97,109,101,84,105,109,101,58,32,33,99,108,46,115,110,97,112,46,118,97,108,105,100,0,90,95,67,104,101,99,107,72,101,97,112,58,32,98,108,111,99,107,32,115,105,122,101,32,100,111,101,115,32,110,111,116,32,116,111,117,99,104,32,116,104,101,32,110,101,120,116,32,98,108,111,99,107,0,0,0,71,76,83,76,95,83,101,116,85,110,105,102,111,114,109,86,101,99,50,58,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,117,110,105,102,111,114,109,32,37,105,32,105,110,32,112,114,111,103,114,97,109,32,37,115,10,0,0,0,82,69,95,82,101,103,105,115,116,101,114,70,111,110,116,58,32,70,114,101,101,84,121,112,101,32,99,111,100,101,32,110,111,116,32,97,118,97,105,108,97,98,108,101,10,0,0,0,82,95,67,104,101,99,107,70,66,79,58,32,40,37,115,41,32,70,114,97,109,101,98,117,102,102,101,114,32,105,110,99,111,109,112,108,101,116,101,44,32,97,116,116,97,99,104,101,100,32,105,109,97,103,101,115,32,109,117,115,116,32,104,97,118,101,32,115,97,109,101,32,100,105,109,101,110,115,105,111,110,115,10,0,0,0,0,0,79,69,83,95,101,108,101,109,101,110,116,95,105,110,100,101,120,95,117,105,110,116,0,0,118,105,101,119,99,108,117,115,116,101,114,58,32,37,105,10,0,0,0,0,0,0,0,0,68,117,109,112,101,100,32,99,111,110,115,111,108,101,32,116,101,120,116,32,116,111,32,37,115,46,10,0,0,0,0,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,66,97,100,32,115,105,122,101,32,102,111,114,32,37,115,32,40,37,105,44,32,101,120,112,101,99,116,101,100,32,37,105,41,33,0,0,0,0,0,0,82,101,97,100,32,102,114,111,109,32,69,77,83,32,102,97,105,108,101,100,0,0,0,0,77,65,88,95,71,65,77,69,83,84,65,84,69,95,67,72,65,82,83,32,101,120,99,101,101,100,101,100,0,0,0,0,71,76,95,83,116,97,116,101,58,32,105,110,118,97,108,105,100,32,115,114,99,32,98,108,101,110,100,32,115,116,97,116,101,32,98,105,116,115,0,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,105,110,118,97,108,105,100,32,119,105,110,100,111,119,32,115,105,122,101,0,0,0,0,0,110,111,100,97,109,97,103,101,0,0,0,0,0,0,0,0,119,101,97,112,111,110,32,110,117,109,98,101,114,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,114,95,101,120,116,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,115,0,0,0,0,0,0,0,82,95,67,114,101,97,116,101,73,109,97,103,101,58,32,34,37,115,34,32,105,115,32,116,111,111,32,108,111,110,103,0,35,100,101,102,105,110,101,32,85,83,69,95,76,73,71,72,84,95,86,69,82,84,69,88,10,0,0,0,0,0,0,0,95,115,99,114,101,101,110,115,115,97,111,0,0,0,0,0,103,108,85,110,105,102,111,114,109,49,102,65,82,66,0,0,82,95,76,111,97,100,83,117,98,109,111,100,101,108,115,58,32,82,95,65,108,108,111,99,77,111,100,101,108,40,41,32,102,97,105,108,101,100,0,0,37,115,47,37,115,0,0,0,78,111,0,0,0,0,0,0,126,0,0,0,0,0,0,0,35,100,101,102,105,110,101,32,119,105,116,104,111,117,116,32,110,97,109,101,0,0,0,0,100,101,116,111,110,97,116,105,111,110,0,0,0,0,0,0,99,109,100,95,103,114,97,112,112,108,101,111,102,102,0,0,37,100,32,99,97,109,112,32,115,112,111,116,115,10,0,0,61,0,0,0,0,0,0,0,99,104,97,114,97,99,116,101,114,105,115,116,105,99,32,37,100,32,105,115,32,110,111,116,32,97,110,32,105,110,116,101,103,101,114,10,0,0,0,0,108,105,112,0,0,0,0,0,54,48,0,0,0,0,0,0,110,101,120,116,109,97,112,0,32,32,32,32,37,57,46,48,102,32,116,111,116,97,108,10,0,0,0,0,0,0,0,0,37,100,0,0,0,0,0,0,115,118,95,102,108,111,111,100,80,114,111,116,101,99,116,0,100,105,115,99,111,110,110,101,99,116,32,34,37,115,34,0,98,97,110,0,0,0,0,0,98,111,116,95,105,110,116,101,114,98,114,101,101,100,99,104,97,114,0,0,0,0,0,0,32,32,65,76,32,69,120,116,101,110,115,105,111,110,115,58,32,32,37,115,10,0,0,0,115,95,105,110,102,111,0,0,78,69,84,95,79,112,101,110,83,111,99,107,115,58,32,98,97,100,32,114,101,115,112,111,110,115,101,10,0,0,0,0,111,114,105,103,105,110,91,50,93,0,0,0,0,0,0,0,109,111,118,101,32,115,116,97,116,101,32,104,97,110,100,108,101,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,0,69,78,68,0,0,0,0,0,118,109,47,113,97,103,97,109,101,46,113,118,109,0,0,0,73,0,0,0,0,0,0,0,45,109,111,118,101,108,101,102,116,0,0,0,0,0,0,0,94,51,67,111,117,108,100,110,39,116,32,119,114,105,116,101,32,37,115,46,10,0,0,0,48,0,0,0,0,0,0,0,10,45,45,45,45,45,45,45,32,73,110,112,117,116,32,73,110,105,116,105,97,108,105,122,97,116,105,111,110,32,45,45,45,45,45,45,45,10,0,0,109,97,105,110,0,0,0,0,101,120,112,101,99,116,101,100,32,110,117,109,98,101,114,44,32,102,111,117,110,100,32,37,115,0,0,0,0,0,0,0,35,35,0,0,0,0,0,0,103,108,66,117,102,102,101,114,68,97,116,97,0,0,0,0,109,105,115,115,105,110,103,32,35,101,110,100,105,102,0,0,69,109,112,116,121,32,74,80,69,71,32,105,109,97,103,101,32,40,68,78,76,32,110,111,116,32,115,117,112,112,111,114,116,101,100,41,0,0,0,0,99,111,110,102,105,103,115,116,114,105,110,103,32,62,32,77,65,88,95,67,79,78,70,73,71,83,84,82,73,78,71,83,0,0,0,0,0,0,0,0,108,111,103,32,102,105,108,101,32,37,115,32,105,115,32,97,108,114,101,97,100,121,32,111,112,101,110,101,100,10,0,0,71,76,95,65,82,66,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,0,0,0,0,0,0,98,111,116,95,100,101,118,101,108,111,112,101,114,0,0,0,108,97,100,100,101,114,0,0,110,97,109,101,0,0,0,0,71,101,110,101,116,105,99,80,97,114,101,110,116,115,65,110,100,67,104,105,108,100,83,101,108,101,99,116,105,111,110,58,32,116,111,111,32,109,97,110,121,32,98,111,116,115,10,0,49,0,0,0,0,0,0,0,32,37,105,32,116,111,116,97,108,32,105,109,97,103,101,115,10,10,0,0,0,0,0,0,105,110,118,97,108,105,100,32,114,101,116,117,114,110,32,118,97,108,117,101,32,37,115,0,35,100,101,102,105,110,101,32,85,83,69,95,76,73,71,72,84,95,86,69,67,84,79,82,10,0,0,0,0,0,0,0,95,104,100,114,68,101,112,116,104,0,0,0,0,0,0,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,65,82,66,0,0,0,0,76,111,97,100,77,97,112,58,32,102,117,110,110,121,32,108,117,109,112,32,115,105,122,101,32,105,110,32,37,115,0,0,109,97,120,95,119,101,97,112,111,110,105,110,102,111,0,0,99,108,97,115,115,110,97,109,101,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,89,101,115,0,0,0,0,0,94,0,0,0,0,0,0,0,99,97,110,39,116,32,117,110,100,101,102,32,37,115,0,0,116,121,112,101,0,0,0,0,112,117,115,104,0,0,0,0,103,114,97,112,112,108,101,111,110,0,0,0,0,0,0,0,37,100,32,109,97,112,32,108,111,99,97,116,105,111,110,115,10,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,114,97,110,100,111,109,32,37,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,98,111,117,110,100,32,99,104,97,114,97,99,116,101,114,105,115,116,105,99,32,37,100,32,98,101,116,119,101,101,110,32,37,102,32,97,110,100,32,37,102,10,0,0,0,0,0,0,0,102,117,110,99,95,112,108,97,116,32,119,105,116,104,32,105,110,118,97,108,105,100,32,109,111,100,101,108,32,110,117,109,98,101,114,10,0,0,0,0,112,104,121,115,95,102,97,108,108,100,101,108,116,97,49,48,0,0,0,0,0,0,0,0,108,111,99,97,108,104,111,115,116,0,0,0,0,0,0,0,37,50,105,37,37,32,37,57,105,32,37,115,10,0,0,0,49,48,50,52,0,0,0,0,103,95,110,101,101,100,112,97,115,115,0,0,0,0,0,0,115,118,95,109,97,120,80,105,110,103,0,0,0,0,0,0,112,114,105,110,116,32,34,37,115,94,55,32,37,115,10,34,0,0,0,0,0,0,0,0,101,120,99,101,112,116,105,111,110,0,0,0,0,0,0,0,115,107,105,108,108,32,37,46,49,102,10,0,0,0,0,0,98,111,116,95,109,105,110,112,108,97,121,101,114,115,0,0,32,32,82,101,110,100,101,114,101,114,58,32,32,32,32,32,32,32,37,115,10,0,0,0,83,95,70,114,101,101,79,108,100,101,115,116,83,111,117,110,100,58,32,102,114,101,101,105,110,103,32,115,111,117,110,100,32,37,115,10,0,0,0,0,78,69,84,95,79,112,101,110,83,111,99,107,115,58,32,114,101,99,118,58,32,37,115,10,0,0,0,0,0,0,0,0,101,109,112,116,121,32,97,97,115,32,108,105,110,107,32,104,101,97,112,10,0,0,0,0,111,114,105,103,105,110,91,49,93,0,0,0,0,0,0,0,72,79,77,69,0,0,0,0,65,65,83,95,69,110,97,98,108,101,82,111,117,116,105,110,103,65,114,101,97,58,32,97,114,101,97,110,117,109,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,46,109,101,110,117,0,0,0,82,0,0,0,0,0,0,0,43,109,111,118,101,108,101,102,116,0,0,0,0,0,0,0,116,97,114,103,101,116,0,0,97,99,116,105,118,101,65,99,116,105,111,110,0,0,0,0,49,48,48,0,0,0,0,0,97,97,115,111,112,116,105,109,105,122,101,0,0,0,0,0,99,97,110,39,116,32,111,112,101,110,32,37,115,10,0,0,115,109,97,108,108,0,0,0,65,65,83,95,70,108,111,111,100,67,108,117,115,116,101,114,65,114,101,97,115,95,114,58,32,97,114,101,97,110,117,109,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,123,0,0,0,0,0,0,0,86,77,95,80,114,101,112,97,114,101,73,110,116,101,114,112,114,101,116,101,114,58,32,74,117,109,112,32,116,111,32,105,110,118,97,108,105,100,32,105,110,115,116,114,117,99,116,105,111,110,32,110,117,109,98,101,114,0,0,0,0,0,0,0,118,109,95,117,105,0,0,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,0,83,86,95,65,114,101,97,69,110,116,105,116,105,101,115,58,32,77,65,88,67,79,85,78,84,10,0,0,0,0,0,0,83,86,95,83,118,69,110,116,105,116,121,70,111,114,71,101,110,116,105,116,121,58,32,98,97,100,32,103,69,110,116,0,66,111,103,117,115,32,68,81,84,32,105,110,100,101,120,32,37,100,0,0,0,0,0,0,115,118,95,112,117,114,101,0,35,52,54,50,32,83,86,95,78,101,116,99,104,97,110,95,84,114,97,110,115,109,105,116,58,32,117,110,115,101,110,116,32,102,114,97,103,109,101,110,116,115,44,32,115,116,97,99,107,101,100,10,0,0,0,0,73,110,105,116,105,97,108,105,122,105,110,103,32,79,112,101,110,71,76,32,101,120,116,101,110,115,105,111,110,115,10,0,110,111,109,97,114,107,115,0,100,101,109,111,37,105,37,105,37,105,37,105,0,0,0,0,114,95,97,108,108,111,119,69,120,116,101,110,115,105,111,110,115,0,0,0,0,0,0,0,32,97,112,112,114,111,120,32,37,105,32,98,121,116,101,115,10,0,0,0,0,0,0,0,99,104,97,116,32,115,116,97,116,101,32,104,97,110,100,108,101,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,68,69,76,85,88,69,77,65,80,10,0,0,95,113,117,97,114,116,101,114,37,100,0,0,0,0,0,0,112,114,105,110,116,0,0,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,65,82,66,0,0,0,119,111,114,108,100,32,86,66,79,115,32,99,97,108,99,117,108,97,116,105,111,110,32,116,105,109,101,32,61,32,37,53,46,50,102,32,115,101,99,111,110,100,115,10,0,0,0,0,34,0,0,0,0,0,0,0,85,115,101,32,65,110,97,108,111,103,58,32,37,115,10,0,124,0,0,0,0,0,0,0,83,86,95,71,101,116,67,111,110,102,105,103,115,116,114,105,110,103,58,32,98,97,100,32,105,110,100,101,120,32,37,105,0,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,32,110,97,109,101,44,32,102,111,117,110,100,32,37,115,0,104,101,97,108,116,104,105,110,99,0,0,0,0,0,0,0,83,86,95,83,101,116,66,114,117,115,104,77,111,100,101,108,58,32,37,115,32,105,115,110,39,116,32,97,32,98,114,117,115,104,32,109,111,100,101,108,0,0,0,0,0,0,0,0,99,109,100,95,103,114,97,112,112,108,101,111,110,0,0,0,99,97,109,112,32,115,112,111,116,32,97,116,32,37,49,46,49,102,32,37,49,46,49,102,32,37,49,46,49,102,32,105,110,32,115,111,108,105,100,10,0,0,0,0,0,0,0,0,99,104,97,114,97,99,116,101,114,105,115,116,105,99,32,37,100,32,105,115,32,110,111,116,32,97,32,102,108,111,97,116,10,0,0,0,0,0,0,0,102,117,110,99,95,112,108,97,116,32,119,105,116,104,111,117,116,32,109,111,100,101,108,10,0,0,0,0,0,0,0,0,52,48,0,0,0,0,0,0,10,0,0,0,0,0,0,0,86,77,95,67,97,108,108,40,32,37,100,32,41,10,0,0,112,117,114,101,0,0,0,0,83,86,95,71,101,116,67,104,97,108,108,101,110,103,101,58,32,114,97,116,101,32,108,105,109,105,116,32,101,120,99,101,101,100,101,100,44,32,100,114,111,112,112,105,110,103,32,114,101,113,117,101,115,116,10,0,115,118,95,109,105,110,80,105,110,103,0,0,0,0,0,0,71,111,105,110,103,32,102,114,111,109,32,67,83,95,70,82,69,69,32,116,111,32,67,83,95,67,79,78,78,69,67,84,69,68,32,102,111,114,32,37,115,10,0,0,0,0,0,0,68,101,108,101,116,105,110,103,32,37,115,32,37,115,47,37,100,10,0,0,0,0,0,0,98,111,116,95,99,104,97,108,108,101,110,103,101,0,0,0,32,32,86,101,114,115,105,111,110,58,32,32,32,32,32,32,32,32,37,115,10,0,0,0,83,95,83,116,97,114,116,66,97,99,107,103,114,111,117,110,100,84,114,97,99,107,40,32,37,115,44,32,37,115,32,41,10,0,0,0,0,0,0,0,78,69,84,95,79,112,101,110,83,111,99,107,115,58,32,115,101,110,100,58,32,37,115,10,0,0,0,0,0,0,0,0,111,114,105,103,105,110,91,48,93,0,0,0,0,0,0,0,107,105,99,107,97,108,108,0,80,71,85,80,0,0,0,0,46,97,114,101,110,97,0,0,99,104,97,114,97,99,116,101,114,32,104,97,110,100,108,101,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,45,115,116,114,97,102,101,0,98,111,116,95,114,101,97,99,104,97,98,105,108,105,116,121,0,0,0,0,0,0,0,0,49,46,48,0,0,0,0,0,102,109,116,32,0,0,0,0,78,111,116,32,102,111,117,110,100,58,32,37,115,10,0,0,37,105,32,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,70,97,105,108,101,100,32,116,111,32,37,115,32,115,111,117,110,100,32,37,115,33,10,0,0,0,0,0,0,90,95,77,97,108,108,111,99,58,32,102,97,105,108,101,100,32,111,110,32,97,108,108,111,99,97,116,105,111,110,32,111,102,32,37,105,32,98,121,116,101,115,32,102,114,111,109,32,116,104,101,32,37,115,32,122,111,110,101,0,0,0,0,0,115,95,118,111,108,117,109,101,0,0,0,0,0,0,0,0,68,101,109,111,32,102,105,108,101,58,32,37,115,10,0,0,94,51,87,65,82,78,73,78,71,58,32,37,115,32,105,115,32,97,32,56,32,98,105,116,32,97,117,100,105,111,32,102,105,108,101,10,0,0,0,0,94,49,37,115,0,0,0,0,37,53,100,32,115,97,109,112,108,101,115,10,0,0,0,0,118,105,100,101,111,47,37,115,0,0,0,0,0,0,0,0,37,115,58,37,104,117,0,0,65,65,83,95,80,114,101,115,101,110,99,101,84,121,112,101,66,111,117,110,100,105,110,103,66,111,120,58,32,117,110,107,110,111,119,110,32,112,114,101,115,101,110,99,101,32,116,121,112,101,10,0,0,0,0,0,94,51,37,115,0,0,0,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,110,101,116,95,113,112,111,114,116,0,0,0,0,0,0,0,37,100,32,109,105,100,114,97,110,103,101,32,97,114,101,97,32,37,100,0,0,0,0,0,66,111,103,117,115,32,68,72,84,32,105,110,100,101,120,32,37,100,0,0,0,0,0,0,42,32,73,71,78,79,82,73,78,71,32,79,80,69,78,71,76,32,69,88,84,69,78,83,73,79,78,83,32,42,10,0,100,101,109,111,115,0,0,0,110,111,105,109,112,97,99,116,0,0,0,0,0,0,0,0,37,115,0,0,0,0,0,0,99,97,110,39,116,32,114,101,97,100,32,37,100,32,98,105,116,115,0,0,0,0,0,0,32,45,45,45,45,45,45,45,45,45,10,0,0,0,0,0,46,37,115,37,100,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,76,73,71,72,84,10,0,0,0,0,0,0,95,116,97,114,103,101,116,108,101,118,101,108,115,0,0,0,103,108,76,105,110,107,80,114,111,103,114,97,109,65,82,66,0,0,0,0,0,0,0,0,115,116,97,116,105,99,66,115,112,77,111,100,101,108,48,95,73,66,79,32,37,105,0,0,47,98,97,115,101,0,0,0,81,75,69,89,32,103,101,110,101,114,97,116,101,100,10,0,66,97,108,108,115,58,32,32,32,32,32,32,37,100,10,0,37,100,32,97,114,101,97,32,99,97,99,104,101,32,117,112,100,97,116,101,115,10,0,0,38,0,0,0,0,0,0,0,117,110,100,101,102,32,119,105,116,104,111,117,116,32,110,97,109,101,0,0,0,0,0,0,100,97,109,97,103,101,116,121,112,101,0,0,0,0,0,0,48,0,0,0,0,0,0,0,114,97,110,100,111,109,0,0,99,104,97,114,97,99,116,101,114,105,115,116,105,99,32,37,100,32,105,115,32,110,111,116,32,105,110,105,116,105,97,108,105,122,101,100,10,0,0,0,47,37,115,47,37,115,0,0,102,117,110,99,95,112,108,97,116,0,0,0,0,0,0,0,112,104,121,115,95,102,97,108,108,100,101,108,116,97,53,0,81,75,69,89,32,99,111,117,108,100,32,110,111,116,32,111,112,101,110,32,37,115,32,102,111,114,32,119,114,105,116,101,10,0,0,0,0,0,0,0,86,77,95,67,97,108,108,32,119,105,116,104,32,78,85,76,76,32,118,109,0,0,0,0,103,97,109,101,116,121,112,101,0,0,0,0,0,0,0,0,49,48,48,0,0,0,0,0,99,111,110,110,101,99,116,82,101,115,112,111,110,115,101,32,37,100,0,0,0,0,0,0,69,114,114,111,114,58,32,73,110,118,97,108,105,100,32,97,100,100,114,101,115,115,32,37,115,10,0,0,0,0,0,0,98,111,116,95,114,111,99,107,101,116,106,117,109,112,0,0,32,32,86,101,110,100,111,114,58,32,32,32,32,32,32,32,32,32,37,115,10,0,0,0,81,75,69,89,32,98,117,105,108,100,105,110,103,32,114,97,110,100,111,109,32,115,116,114,105,110,103,10,0,0,0,0,66,65,68,78,65,77,69,0,78,69,84,95,79,112,101,110,83,111,99,107,115,58,32,99,111,110,110,101,99,116,58,32,37,115,10,0,0,0,0,0,97,112,111,115,46,116,114,84,121,112,101,0,0,0,0,0,80,71,68,78,0,0,0,0,83,80,65,67,69,0,0,0,46,98,111,116,0,0,0,0,115,0,0,0,0,0,0,0,43,115,116,114,97,102,101,0,81,75,69,89,32,102,105,108,101,32,115,105,122,101,32,33,61,32,37,100,44,32,114,101,103,101,110,101,114,97,116,105,110,103,10,0,0,0,0,0,81,75,69,89,32,102,111,117,110,100,46,10,0,0,0,0,60,70,65,83,84,62,32,0,90,95,84,97,103,77,97,108,108,111,99,58,32,116,114,105,101,100,32,116,111,32,117,115,101,32,97,32,48,32,116,97,103,0,0,0,0,0,0,0,113,107,101,121,0,0,0,0,103,95,110,101,101,100,112,97,115,115,0,0,0,0,0,0,103,95,104,117,109,97,110,112,108,97,121,101,114,115,0,0,103,108,71,101,110,66,117,102,102,101,114,115,0,0,0,0,115,112,101,101,100,0,0,0,66,111,103,117,115,32,68,65,67,32,118,97,108,117,101,32,48,120,37,120,0,0,0,0,65,65,83,32,100,97,116,97,32,111,112,116,105,109,105,122,101,100,46,10,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,115,101,114,118,101,114,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,116,111,32,115,101,116,32,37,115,61,37,115,10,0,0,118,105,100,95,114,101,115,116,97,114,116,32,102,97,115,116,10,0,0,0,0,0,0,0,112,117,110,107,98,117,115,116,101,114,0,0,0,0,0,0,115,108,105,99,107,0,0,0,115,99,114,101,101,110,115,104,111,116,115,47,37,115,46,106,112,103,0,0,0,0,0,0,37,52,105,58,32,37,52,105,120,37,52,105,32,37,115,32,37,52,105,37,115,32,37,115,10,0,0,0,0,0,0,0,109,97,120,112,105,110,103,0,35,100,101,102,105,110,101,32,85,83,69,95,70,65,83,84,95,76,73,71,72,84,10,0,95,99,97,108,99,108,101,118,101,108,115,0,0,0,0,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,65,82,66,0,0,0,0,0,0,0,115,116,97,116,105,99,66,115,112,77,111,100,101,108,48,95,86,66,79,32,37,105,0,0,83,68,76,32,76,105,98,114,97,114,121,32,84,111,111,32,79,108,100,0,0,0,0,0,65,85,68,73,79,95,83,49,54,77,83,66,0,0,0,0,109,105,110,112,105,110,103,0,66,117,116,116,111,110,115,58,32,32,32,32,37,100,10,0,61,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,118,105,115,100,97,109,97,103,101,0,0,0,0,0,0,0,111,102,102,104,97,110,100,103,114,97,112,112,108,101,0,0,119,97,105,116,0,0,0,0,99,104,97,114,97,99,116,101,114,105,115,116,105,99,32,37,100,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,10,0,0,0,0,0,0,0,116,114,105,103,103,101,114,95,109,117,108,116,105,112,108,101,32,110,111,116,32,105,110,32,97,110,121,32,97,114,101,97,10,0,0,0,0,0,0,0,50,55,48,0,0,0,0,0,103,97,109,101,116,121,112,101,0,0,0,0,0,0,0,0,67,76,95,78,101,120,116,68,101,109,111,58,32,37,115,10,0,0,0,0,0,0,0,0,102,111,114,99,101,102,117,108,108,121,32,117,110,108,111,97,100,105,110,103,32,37,115,32,118,109,10,0,0,0,0,0,115,118,95,109,97,120,99,108,105,101,110,116,115,0,0,0,115,118,95,100,108,82,97,116,101,0,0,0,0,0,0,0,71,97,109,101,32,114,101,106,101,99,116,101,100,32,97,32,99,111,110,110,101,99,116,105,111,110,58,32,37,115,46,10,0,0,0,0,0,0,0,0,85,115,97,103,101,58,32,37,115,32,40,105,112,91,47,115,117,98,110,101,116,93,32,124,32,110,117,109,41,10,0,0,98,111,116,95,103,114,97,112,112,108,101,0,0,0,0,0,79,112,101,110,65,76,32,105,110,102,111,58,10,0,0,0,103,97,109,101,0,0,0,0,45,45,45,45,40,37,105,41,45,45,45,45,32,112,97,105,110,116,101,100,58,32,37,105,10,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,78,69,84,95,79,112,101,110,83,111,99,107,115,58,32,103,101,116,104,111,115,116,98,121,110,97,109,101,58,32,97,100,100,114,101,115,115,32,116,121,112,101,32,119,97,115,32,110,111,116,32,65,70,95,73,78,69,84,10,0,0,0,0,112,111,115,46,116,114,68,117,114,97,116,105,111,110,0,0,68,69,76,0,0,0,0,0,46,99,111,110], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+122884); +/* memory initializer */ allocate([102,105,103,0,32,0,0,0,0,0,0,0,45,108,111,111,107,100,111,119,110,0,0,0,0,0,0,0,115,118,95,109,97,120,99,108,105,101,110,116,115,0,0,0,109,97,112,110,97,109,101,0,60,82,69,83,69,84,62,32,0,0,0,0,0,0,0,0,67,76,95,71,101,116,83,110,97,112,115,104,111,116,58,32,116,114,117,110,99,97,116,101,100,32,37,105,32,101,110,116,105,116,105,101,115,32,116,111,32,37,105,10,0,0,0,0,43,108,111,111,107,100,111,119,110,0,0,0,0,0,0,0,90,95,70,114,101,101,58,32,109,101,109,111,114,121,32,98,108,111,99,107,32,119,114,111,116,101,32,112,97,115,116,32,101,110,100,0,0,0,0,0,112,104,121,115,95,102,114,105,99,116,105,111,110,0,0,0,104,111,115,116,110,97,109,101,0,0,0,0,0,0,0,0,99,108,105,101,110,116,115,0,117,115,97,103,101,58,32,115,101,114,118,101,114,115,116,97,116,117,115,32,91,45,52,124,45,54,93,32,115,101,114,118,101,114,10,0,0,0,0,0,103,108,73,115,84,101,120,116,117,114,101,0,0,0,0,0,37,115,0,0,0,0,0,0,66,111,103,117,115,32,68,65,67,32,105,110,100,101,120,32,37,100,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,83,101,114,118,101,114,32,115,101,110,116,32,105,110,118,97,108,105,100,32,102,115,95,103,97,109,101,32,118,97,108,117,101,32,37,115,10,0,0,0,0,0,0,0,0,70,117,108,108,115,99,114,101,101,110,32,110,111,116,32,97,108,108,111,119,101,100,32,119,105,116,104,32,105,110,95,110,111,103,114,97,98,32,49,10,0,0,0,0,0,0,0,0,103,101,116,105,110,102,111,32,120,120,120,0,0,0,0,0,104,105,110,116,0,0,0,0,65,65,83,32,102,105,108,101,32,110,111,116,32,115,101,113,117,101,110,116,105,97,108,108,121,32,114,101,97,100,10,0,83,99,114,101,101,110,83,104,111,116,58,32,67,111,117,108,100,110,39,116,32,99,114,101,97,116,101,32,97,32,102,105,108,101,10,0,0,0,0,0,71,98,0,0,0,0,0,0,117,115,97,103,101,58,32,112,105,110,103,32,91,45,52,124,45,54,93,32,115,101,114,118,101,114,10,0,0,0,0,0,35,100,101,102,105,110,101,32,83,87,73,90,90,76,69,95,78,79,82,77,65,76,77,65,80,10,0,0,0,0,0,0,65,65,83,95,85,112,100,97,116,101,69,110,116,105,116,121,58,32,110,111,116,32,108,111,97,100,101,100,10,0,0,0,95,116,101,120,116,117,114,101,115,99,114,97,116,99,104,37,100,0,0,0,0,0,0,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,65,82,66,0,0,0,0,0,0,0,0,46,46,46,99,97,108,99,117,108,97,116,105,110,103,32,119,111,114,108,100,32,86,66,79,32,37,100,32,40,32,37,105,32,118,101,114,116,115,32,37,105,32,116,114,105,115,32,41,10,0,0,0,0,0,0,0,83,68,76,32,118,101,114,115,105,111,110,32,49,46,50,46,49,48,32,111,114,32,103,114,101,97,116,101,114,32,105,115,32,114,101,113,117,105,114,101,100,44,32,98,117,116,32,111,110,108,121,32,118,101,114,115,105,111,110,32,37,100,46,37,100,46,37,100,32,119,97,115,32,102,111,117,110,100,46,32,89,111,117,32,109,97,121,32,98,101,32,97,98,108,101,32,116,111,32,111,98,116,97,105,110,32,97,32,109,111,114,101,32,114,101,99,101,110,116,32,99,111,112,121,32,102,114,111,109,32,104,116,116,112,58,47,47,119,119,119,46,108,105,98,115,100,108,46,111,114,103,47,46,0,0,0,0,0,0,0,65,85,68,73,79,95,85,49,54,77,83,66,0,0,0,0,103,101,116,115,101,114,118,101,114,115,32,37,115,32,37,115,0,0,0,0,0,0,0,0,72,97,116,115,58,32,32,32,32,32,32,32,37,100,10,0,45,0,0,0,0,0,0,0,102,105,108,101,32,37,115,32,110,111,116,32,102,111,117,110,100,0,0,0,0,0,0,0,99,97,110,110,111,116,32,105,110,116,101,114,98,114,101,101,100,32,119,101,105,103,104,116,32,99,111,110,102,105,103,115,44,32,117,110,101,113,117,97,108,32,110,117,109,119,101,105,103,104,116,115,10,0,0,0,114,97,100,105,117,115,0,0,51,0,0,0,0,0,0,0,119,101,105,103,104,116,0,0,59,0,0,0,0,0,0,0,99,111,117,108,100,110,39,116,32,108,111,97,100,32,97,110,121,32,115,107,105,108,108,32,102,114,111,109,32,37,115,10,0,0,0,0,0,0,0,0,116,101,108,101,112,111,114,116,101,100,32,105,110,116,111,32,115,108,105,109,101,32,111,114,32,108,97,118,97,32,97,116,32,100,101,115,116,32,37,115,10,0,0,0,0,0,0,0,112,104,121,115,95,106,117,109,112,118,101,108,0,0,0,0,103,101,116,115,101,114,118,101,114,115,32,37,115,0,0,0,110,101,120,116,100,101,109,111,0,0,0,0,0,0,0,0,86,77,95,70,114,101,101,40,37,115,41,32,111,110,32,114,117,110,110,105,110,103,32,118,109,0,0,0,0,0,0,0,103,95,104,117,109,97,110,112,108,97,121,101,114,115,0,0,115,118,95,109,97,120,82,97,116,101,0,0,0,0,0,0,79,112,101,110,105,110,103,32,113,99,111,110,115,111,108,101,46,108,111,103,32,102,97,105,108,101,100,33,10,0,0,0,112,114,105,110,116,10,37,115,10,0,0,0,0,0,0,0,37,100,32,37,115,32,37,100,10,0,0,0,0,0,0,0,98,111,116,95,114,101,112,111,114,116,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,99,114,101,97,116,101,32,79,112,101,110,65,76,32,99,111,110,116,101,120,116,46,10,0,0,0,0,0,0,0,81,117,97,107,101,51,65,114,101,110,97,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,0,0,0,110,111,32,112,111,114,116,97,108,32,111,102,32,97,114,101,97,32,37,100,10,0,0,0,37,100,32,37,100,32,37,115,10,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,78,69,84,95,79,112,101,110,83,111,99,107,115,58,32,103,101,116,104,111,115,116,98,121,110,97,109,101,58,32,37,115,10,0,0,0,0,0,0,97,110,103,108,101,115,91,49,93,0,0,0,0,0,0,0,73,78,83,0,0,0,0,0,46,99,102,103,0,0,0,0,83,0,0,0,0,0,0,0,98,115,112,32,101,110,116,105,116,121,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,0,0,0,103,101,116,115,101,114,118,101,114,115,69,120,116,32,37,115,32,37,115,32,105,112,118,54,0,0,0,0,0,0,0,0,103,101,116,115,101,114,118,101,114,115,69,120,116,32,37,115,32,37,115,0,0,0,0,0,67,76,95,73,110,105,116,67,71,97,109,101,58,32,37,53,46,50,102,32,115,101,99,111,110,100,115,10,0,0,0,0,45,108,111,111,107,117,112,0,90,95,70,114,101,101,58,32,102,114,101,101,100,32,97,32,102,114,101,101,100,32,112,111,105,110,116,101,114,0,0,0,110,101,116,95,101,110,97,98,108,101,100,0,0,0,0,0,82,101,113,117,101,115,116,105,110,103,32,115,101,114,118,101,114,115,32,102,114,111,109,32,109,97,115,116,101,114,32,37,115,46,46,46,10,0,0,0,69,82,82,79,82,58,32,84,111,112,32,111,102,32,99,104,117,110,107,115,116,97,99,107,32,98,114,101,97,99,104,101,100,0,0,0,0,0,0,0,67,76,95,71,108,111,98,97,108,83,101,114,118,101,114,115,95,102,58,32,69,114,114,111,114,58,32,99,111,117,108,100,32,110,111,116,32,114,101,115,111,108,118,101,32,97,100,100,114,101,115,115,32,111,102,32,109,97,115,116,101,114,32,37,115,10,0,0,0,0,0,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,0,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,99,111,108,111,114,32,99,111,110,118,101,114,115,105,111,110,32,114,101,113,117,101,115,116,0,0,0,0,102,115,95,103,97,109,101,0,105,110,95,110,111,103,114,97,98,0,0,0,0,0,0,0,94,51,69,88,69,67,95,78,79,87,32,37,115,10,0,0,67,76,95,71,108,111,98,97,108,83,101,114,118,101,114,115,95,102,58,32,69,114,114,111,114,58,32,78,111,32,109,97,115,116,101,114,32,115,101,114,118,101,114,32,97,100,100,114,101,115,115,32,103,105,118,101,110,46,10,0,0,0,0,0,97,108,112,104,97,115,104,97,100,111,119,0,0,0,0,0,115,99,114,101,101,110,115,104,111,116,115,47,37,115,46,116,103,97,0,0,0,0,0,0,77,98,0,0,0,0,0,0,115,118,95,109,97,115,116,101,114,37,100,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,83,72,65,68,79,87,77,65,80,10,0,0,95,115,99,114,101,101,110,115,104,97,100,111,119,0,0,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,65,82,66,0,0,0,0,0,0,105,110,102,111,95,112,108,97,121,101,114,95,100,101,97,116,104,109,97,116,99,104,0,0,67,77,95,65,100,106,117,115,116,65,114,101,97,80,111,114,116,97,108,83,116,97,116,101,58,32,110,101,103,97,116,105,118,101,32,114,101,102,101,114,101,110,99,101,32,99,111,117,110,116,0,0,0,0,0,0,82,101,99,101,105,118,101,100,32,115,105,103,110,97,108,32,37,100,0,0,0,0,0,0,65,85,68,73,79,95,83,49,54,76,83,66,0,0,0,0,117,115,97,103,101,58,32,103,108,111,98,97,108,115,101,114,118,101,114,115,32,60,109,97,115,116,101,114,35,32,48,45,37,100,62,32,60,112,114,111,116,111,99,111,108,62,32,91,107,101,121,119,111,114,100,115,93,10,0,0,0,0,0,0,65,120,101,115,58,32,32,32,32,32,32,32,37,100,10,0,43,0,0,0,0,0,0,0,35,105,110,99,108,117,100,101,32,119,105,116,104,111,117,116,32,102,105,108,101,32,110,97,109,101,32,98,101,116,119,101,101,110,32,60,32,62,0,0,99,97,110,110,111,116,32,105,110,116,101,114,98,114,101,101,100,32,119,101,105,103,104,116,32,99,111,110,102,105,103,115,44,32,117,110,101,113,117,97,108,32,110,101,120,116,10,0,100,97,109,97,103,101,0,0,101,110,116,105,116,121,116,121,112,101,109,105,115,115,105,108,101,0,0,0,0,0,0,0,114,97,110,103,101,0,0,0,117,110,107,110,111,119,110,32,109,101,115,115,97,103,101,32,99,111,109,112,111,110,101,110,116,32,37,115,0,0,0,0,108,111,97,100,101,100,32,100,101,102,97,117,108,116,32,115,107,105,108,108,32,37,102,32,102,114,111,109,32,37,115,10,0,0,0,0,0,0,0,0,97,110,103,108,101,0,0,0,51,51,0,0,0,0,0,0,255,255,255,255,103,101,116,105,110,102,111,32,120,120,120,0,37,115,32,108,111,97,100,101,100,32,105,110,32,37,100,32,98,121,116,101,115,32,111,110,32,116,104,101,32,104,117,110,107,10,0,0,0,0,0,0,99,108,105,101,110,116,115,0,115,118,95,109,105,110,82,97,116,101,0,0,0,0,0,0,118,109,95,99,103,97,109,101,0,0,0,0,0,0,0,0,82,101,106,101,99,116,101,100,32,97,32,99,111,110,110,101,99,116,105,111,110,46,10,0,66,97,115,101,87,105,110,100,105,110,103,70,111,114,80,108,97,110,101,58,32,110,111,32,97,120,105,115,32,102,111,117,110,100,0,0,0,0,0,0,37,115,47,37,115,0,0,0,98,111,116,95,112,97,117,115,101,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,111,112,101,110,32,79,112,101,110,65,76,32,100,101,118,105,99,101,46,10,0,0,83,99,97,110,110,105,110,103,32,102,111,114,32,115,101,114,118,101,114,115,32,111,110,32,116,104,101,32,108,111,99,97,108,32,110,101,116,119,111,114,107,46,46,46,10,0,0,0,83,111,117,110,100,32,105,110,105,116,105,97,108,105,122,97,116,105,111,110,32,102,97,105,108,101,100,46,10,0,0,0,83,95,85,112,100,97,116,101,69,110,116,105,116,121,80,111,115,105,116,105,111,110,58,32,98,97,100,32,101,110,116,105,116,121,110,117,109,32,37,105,0,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,78,69,84,95,79,112,101,110,83,111,99,107,115,58,32,115,111,99,107,101,116,58,32,37,115,10,0,0,0,0,0,114,98,0,0,0,0,0,0,99,108,105,101,110,116,78,117,109,0,0,0,0,0,0,0,70,49,53,0,0,0,0,0,46,116,120,116,0,0,0,0,115,101,116,97,32,37,115,32,34,37,115,34,10,0,0,0,37,45,50,100,32,32,32,37,45,51,100,32,32,32,32,37,45,51,100,32,32,32,37,115,10,0,0,0,0,0,0,0,117,110,107,110,111,119,110,0,86,77,95,67,114,101,97,116,101,32,111,110,32,99,103,97,109,101,32,102,97,105,108,101,100,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,98,101,118,101,108,32,112,108,97,110,101,32,97,108,114,101,97,100,121,32,117,115,101,100,10,0,0,0,0,0,0,43,108,111,111,107,117,112,0,90,95,70,114,101,101,58,32,102,114,101,101,100,32,97,32,112,111,105,110,116,101,114,32,119,105,116,104,111,117,116,32,90,79,78,69,73,68,0,0,49,46,50,46,51,0,0,0,37,100,32,37,100,0,0,0,92,37,115,0,0,0,0,0,69,82,82,79,82,58,32,66,111,116,116,111,109,32,111,102,32,99,104,117,110,107,115,116,97,99,107,32,98,114,101,97,99,104,101,100,0,0,0,0,110,117,109,58,32,115,99,111,114,101,58,32,112,105,110,103,58,32,110,97,109,101,58,10,0,0,0,0,0,0,0,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,0,0,0,0,0,0,0,37,115,10,0,0,0,0,0,84,111,111,32,109,97,110,121,32,99,111,108,111,114,32,99,111,109,112,111,110,101,110,116,115,58,32,37,100,44,32,109,97,120,32,37,100,0,0,0,115,118,95,114,101,102,101,114,101,110,99,101,100,80,97,107,78,97,109,101,115,0,0,0,71,76,95,70,82,79,78,84,0,0,0,0,0,0,0,0,45,45,45,32,82,66,95,85,112,100,97,116,101,86,66,79,115,32,45,45,45,10,0,0,67,77,111,100,95,76,111,97,100,83,117,98,109,111,100,101,108,115,58,32,102,117,110,110,121,32,108,117,109,112,32,115,105,122,101,0,0,0,0,0,10,80,108,97,121,101,114,115,58,10,0,0,0,0,0,0,108,105,103,104,116,102,105,108,116,101,114,0,0,0,0,0,70,111,114,99,105,110,103,32,103,108,70,105,110,105,115,104,10,0,0,0,0,0,0,0,115,105,108,101,110,116,0,0,107,98,0,0,0,0,0,0,92,0,0,0,0,0,0,0,35,100,101,102,105,110,101,32,83,80,69,67,85,76,65,82,95,73,83,95,77,69,84,65,76,76,73,67,10,0,0,0,95,115,117,110,115,104,97,100,111,119,109,97,112,0,0,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,65,82,66,0,0,0,0,0,0,0,109,105,115,99,95,99,117,98,101,109,97,112,0,0,0,0,72,65,67,75,58,32,114,105,118,97,49,50,56,32,97,112,112,114,111,120,105,109,97,116,105,111,110,115,10,0,0,0,68,79,85,66,76,69,32,83,73,71,78,65,76,32,70,65,85,76,84,58,32,82,101,99,101,105,118,101,100,32,115,105,103,110,97,108,32,37,100,44,32,101,120,105,116,105,110,103,46,46,46,10,0,0,0,0,65,85,68,73,79,95,85,49,54,76,83,66,0,0,0,0,37,45,50,52,115,0,0,0,78,97,109,101,58,32,32,32,32,32,32,32,37,115,10,0,37,0,0,0,0,0,0,0,35,105,110,99,108,117,100,101,32,109,105,115,115,105,110,103,32,116,114,97,105,108,105,110,103,32,62,0,0,0,0,0,72,65,67,75,58,32,114,97,103,101,80,114,111,32,97,112,112,114,111,120,105,109,97,116,105,111,110,115,10,0,0,0,99,97,110,110,111,116,32,105,110,116,101,114,98,114,101,101,100,32,119,101,105,103,104,116,32,99,111,110,102,105,103,115,44,32,117,110,101,113,117,97,108,32,98,97,108,97,110,99,101,10,0,0,0,0,0,0,103,114,97,118,105,116,121,0,49,48,0,0,0,0,0,0,105,110,102,111,95,99,97,109,112,0,0,0,0,0,0,0,37,99,114,37,115,37,99,0,108,111,97,100,101,100,32,99,97,99,104,101,100,32,100,101,102,97,117,108,116,32,115,107,105,108,108,32,37,102,32,102,114,111,109,32,37,115,10,0,116,101,108,101,112,111,114,116,101,114,32,100,101,115,116,105,110,97,116,105,111,110,32,40,37,115,41,32,105,110,32,115,111,108,105,100,10,0,0,0,112,104,121,115,95,109,97,120,98,97,114,114,105,101,114,0,37,115,10,0,0,0,0,0,70,97,105,108,101,100,32,108,111,97,100,105,110,103,32,100,108,108,44,32,116,114,121,105,110,103,32,110,101,120,116,10,0,0,0,0,0,0,0,0,99,111,117,108,100,110,39,116,32,111,112,101,110,32,37,115,0,0,0,0,0,0,0,0,83,101,114,118,101,114,32,115,101,116,116,105,110,103,115,58,10,0,0,0,0,0,0,0,72,65,67,75,58,32,117,115,105,110,103,32,118,101,114,116,101,120,32,108,105,103,104,116,109,97,112,32,97,112,112,114,111,120,105,109,97,116,105,111,110,10,0,0,0,0,0,0,109,97,112,110,97,109,101,0,56,0,0,0,0,0,0,0,112,114,105,110,116,10,83,101,114,118,101,114,32,105,115,32,102,117,108,108,46,10,0,0,65,108,108,32,98,97,110,115,32,97,110,100,32,101,120,99,101,112,116,105,111,110,115,32,104,97,118,101,32,98,101,101,110,32,100,101,108,101,116,101,100,46,10,0,0,0,0,0,98,111,116,95,110,111,99,104,97,116,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,111,112,101,110,32,79,112,101,110,65,76,32,100,101,118,105,99,101,32,39,37,115,39,44,32,116,114,121,105,110,103,32,100,101,102,97,117,108,116,46,10,0,0,0,0,0,114,97,116,101,58,32,37,102,44,32,97,99,99,101,108,83,101,110,115,105,116,105,118,105,116,121,58,32,37,102,10,0,83,111,117,110,100,32,105,110,105,116,105,97,108,105,122,97,116,105,111,110,32,115,117,99,99,101,115,115,102,117,108,46,10,0,0,0,0,0,0,0,83,95,66,97,115,101,95,82,97,119,83,97,109,112,108,101,115,58,32,111,118,101,114,102,108,111,119,101,100,32,37,105,32,62,32,37,105,10,0,0,79,112,101,110,105,110,103,32,99,111,110,110,101,99,116,105,111,110,32,116,111,32,83,79,67,75,83,32,115,101,114,118,101,114,46,10,0,0,0,0,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,58,32,37,115,10,0,0,0,0,0,0,0,0,119,101,97,112,111,110,0,0,70,49,52,0,0,0,0,0,46,115,104,97,100,101,114,0,94,51,87,65,82,78,73,78,71,58,32,118,97,108,117,101,32,111,102,32,118,97,114,105,97,98,108,101,32,34,37,115,34,32,116,111,111,32,108,111,110,103,32,116,111,32,119,114,105,116,101,32,116,111,32,102,105,108,101,10,0,0,0,0,103,101,116,115,116,97,116,117,115,0,0,0,0,0,0,0,116,101,120,101,110,118,32,97,100,100,58,32,37,115,10,0,115,110,100,95,114,101,115,116,97,114,116,0,0,0,0,0,37,115,58,32,37,115,0,0,99,103,97,109,101,0,0,0,45,98,97,99,107,0,0,0,99,111,109,112,105,108,101,100,32,118,101,114,116,101,120,32,97,114,114,97,121,115,58,32,37,115,10,0,0,0,0,0,90,95,70,114,101,101,58,32,78,85,76,76,32,112,111,105,110,116,101,114,0,0,0,0,77,65,88,95,79,84,72,69,82,95,83,69,82,86,69,82,83,32,104,105,116,44,32,100,114,111,112,112,105,110,103,32,105,110,102,111,82,101,115,112,111,110,115,101,10,0,0,0,109,117,108,116,105,116,101,120,116,117,114,101,58,32,37,115,10,0,0,0,0,0,0,0,37,100,0,0,0,0,0,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,0,0,116,101,120,116,117,114,101,32,98,105,116,115,58,32,37,100,10,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,119,114,105,116,101,32,97,118,105,32,102,105,108,101,0,0,0,0,0,0,0,0,103,95,104,117,109,97,110,112,108,97,121,101,114,115,0,0,48,0,0,0,0,0,0,0,110,101,116,116,121,112,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,0,0,0,0,112,105,99,109,105,112,58,32,37,100,10,0,0,0,0,0,67,67,73,82,54,48,49,32,115,97,109,112,108,105,110,103,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,0,0,0,115,118,95,114,101,102,101,114,101,110,99,101,100,80,97,107,115,0,0,0,0,0,0,0,114,95,97,118,97,105,108,97,98,108,101,77,111,100,101,115,0,0,0,0,0,0,0,0,115,101,99,116,111,114,32,37,105,58,32,37,105,32,101,110,116,105,116,105,101,115,10,0,112,105,110,103,32,116,105,109,101,32,37,100,109,115,32,102,114,111,109,32,37,115,10,0,102,111,103,0,0,0,0,0,109,100,51,0,0,0,0,0,116,101,120,116,117,114,101,109,111,100,101,58,32,37,115,10,0,0,0,0,0,0,0,0,108,101,118,101,108,115,104,111,116,0,0,0,0,0,0,0,98,32,0,0,0,0,0,0,68,105,102,102,101,114,101,110,116,32,112,114,111,116,111,99,111,108,32,105,110,102,111,32,112,97,99,107,101,116,58,32,37,115,10,0,0,0,0,0,35,100,101,102,105,110,101,32,114,95,100,101,108,117,120,101,83,112,101,99,117,108,97,114,32,37,102,10,0,0,0,0,95,115,104,97,100,111,119,109,97,112,37,100,0,0,0,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,65,82,66,0,82,69,95,76,111,97,100,87,111,114,108,100,77,97,112,58,32,37,115,32,104,97,115,32,119,114,111,110,103,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,32,40,37,105,32,115,104,111,117,108,100,32,98,101,32,37,105,41,0,0,71,65,77,77,65,58,32,115,111,102,116,119,97,114,101,32,119,47,32,37,100,32,111,118,101,114,98,114,105,103,104,116,32,98,105,116,115,10,0,0,87,65,82,78,73,78,71,58,32,109,115,103,32,111,118,101,114,102,108,111,119,101,100,32,102,111,114,32,37,115,10,0,77,65,88,95,65,76,76,79,67,95,67,72,85,78,75,32,105,115,32,119,114,111,110,103,44,32,112,108,101,97,115,101,32,102,105,120,0,0,0,0,105,111,113,51,32,49,46,51,54,95,71,73,84,95,52,102,55,100,55,98,102,45,50,48,49,52,45,48,50,45,48,49,32,99,108,105,101,110,116,32,40,37,115,41,10,0,0,0,65,85,68,73,79,95,83,56,0,0,0,0,0,0,0,0,71,97,109,101,32,109,105,115,109,97,116,99,104,32,105,110,32,105,110,102,111,32,112,97,99,107,101,116,58,32,37,115,10,0,0,0,0,0,0,0,74,111,121,115,116,105,99,107,32,37,100,32,111,112,101,110,101,100,10,0,0,0,0,0,47,0,0,0,0,0,0,0,35,105,110,99,108,117,100,101,32,119,105,116,104,111,117,116,32,102,105,108,101,32,110,97,109,101,0,0,0,0,0,0,71,65,77,77,65,58,32,104,97,114,100,119,97,114,101,32,119,47,32,37,100,32,111,118,101,114,98,114,105,103,104,116,32,98,105,116,115,10,0,0,99,97,110,110,111,116,32,105,110,116,101,114,98,114,101,101,100,32,119,101,105,103,104,116,32,99,111,110,102,105,103,115,44,32,117,110,101,113,117,97,108,32,99,104,105,108,100,10,0,0,0,0,0,0,0,0,102,108,97,103,115,0,0,0,119,101,97,112,105,110,100,101,120,95,103,114,97,112,112,108,101,0,0,0,0,0,0,0,109,101,115,115,97,103,101,0,35,52,54,50,32,78,101,116,99,104,97,110,95,84,114,97,110,115,109,105,116,78,101,120,116,70,114,97,103,109,101,110,116,58,32,112,111,112,112,105,110,103,32,97,32,113,117,101,117,101,100,32,109,101,115,115,97,103,101,32,102,111,114,32,116,114,97,110,115,109,105,116,10,0,0,0,0,0,0,0,37,99,118,37,108,100,37,99,0,0,0,0,0,0,0,0,108,111,97,100,101,100,32,115,107,105,108,108,32,37,102,32,102,114,111,109,32,37,115,10,0,0,0,0,0,0,0,0,116,101,108,101,112,111,114,116,101,114,32,100,101,115,116,105,110,97,116,105,111,110,32,40,37,115,41,32,119,105,116,104,111,117,116,32,111,114,105,103,105,110,10,0,0,0,0,0,49,56,0,0,0,0,0,0,103,97,109,101,110,97,109,101,0,0,0,0,0,0,0,0,84,114,121,32,108,111,97,100,105,110,103,32,100,108,108,32,102,105,108,101,32,37,115,10,0,0,0,0,0,0,0,0,80,114,111,116,111,99,111,108,32,37,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,100,101,109,111,115,10,0,0,0,0,78,47,65,10,0,0,0,0,104,111,115,116,110,97,109,101,0,0,0,0,0,0,0,0,115,118,95,109,97,120,99,108,105,101,110,116,115,0,0,0,115,101,114,118,101,114,32,105,115,32,102,117,108,108,32,111,110,32,108,111,99,97,108,32,99,111,110,110,101,99,116,0,67,97,110,110,111,116,32,101,115,116,105,109,97,116,101,32,100,105,115,112,108,97,121,32,97,115,112,101,99,116,44,32,97,115,115,117,109,105,110,103,32,49,46,51,51,51,10,0,83,101,114,118,101,114,32,105,115,32,110,111,116,32,114,117,110,110,105,110,103,46,10,0,98,111,116,95,102,97,115,116,99,104,97,116,0,0,0,0,82,95,80,111,105,110,116,73,110,76,101,97,102,58,32,98,97,100,32,109,111,100,101,108,0,0,0,0,0,0,0,0,115,95,97,108,65,118,97,105,108,97,98,108,101,68,101,118,105,99,101,115,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,0,0,0,0,83,111,117,110,100,32,105,110,116,101,114,102,97,99,101,32,105,110,118,97,108,105,100,0,83,95,66,97,115,101,95,82,97,119,83,97,109,112,108,101,115,58,32,114,101,115,101,116,116,105,110,103,32,109,105,110,105,109,117,109,58,32,37,105,32,60,32,37,105,10,0,0,78,69,84,95,74,111,105,110,77,117,108,116,105,99,97,115,116,54,58,32,67,111,117,108,100,110,39,116,32,106,111,105,110,32,109,117,108,116,105,99,97,115,116,32,103,114,111,117,112,58,32,37,115,10,0,0,37,100,10,0,0,0,0,0,82,95,67,114,101,97,116,101,86,66,79,58,32,77,65,88,95,86,66,79,83,32,104,105,116,0,0,0,0,0,0,0,111,116,104,101,114,69,110,116,105,116,121,78,117,109,0,0,45,45,45,32,82,66,95,73,110,115,116,97,110,116,81,117,97,100,50,32,45,45,45,10,0,0,0,0,0,0,0,0,70,49,51,0,0,0,0,0,113,51,107,101,121,0,0,0,83,72,65,68,69,82,95,77,65,88,95,86,69,82,84,69,88,69,83,32,104,105,116,32,105,110,32,70,105,108,108,67,108,111,117,100,121,83,107,121,83,105,100,101,40,41,0,0,99,108,95,99,100,107,101,121,0,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,82,101,99,117,114,115,105,118,101,32,115,104,117,116,100,111,119,110,10,0,0,0,0,115,118,99,95,103,97,109,101,115,116,97,116,101,0,0,0,77,79,68,69,58,32,37,100,44,32,37,100,32,120,32,37,100,32,37,115,32,104,122,58,0,0,0,0,0,0,0,0,45,45,45,45,45,32,67,108,105,101,110,116,32,83,104,117,116,100,111,119,110,32,40,37,115,41,32,45,45,45,45,45,10,0,0,0,0,0,0,0,118,109,95,99,103,97,109,101,0,0,0,0,0,0,0,0,10,80,73,88,69,76,70,79,82,77,65,84,58,32,99,111,108,111,114,40,37,100,45,98,105,116,115,41,32,90,40,37,100,45,98,105,116,41,32,115,116,101,110,99,105,108,40,37,100,45,98,105,116,115,41,10,0,0,0,0,0,0,0,0,43,98,97,99,107,0,0,0,37,115,10,0,0,0,0,0,45,45,45,45,45,32,67,108,105,101,110,116,32,73,110,105,116,105,97,108,105,122,97,116,105,111,110,32,67,111,109,112,108,101,116,101,32,45,45,45,45,45,10,0,0,0,0,0,119,97,105,116,0,0,0,0,87,65,82,78,73,78,71,58,32,105,110,118,97,108,105,100,32,97,108,112,104,97,70,117,110,99,32,110,97,109,101,32,39,37,115,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,71,76,95,77,65,88,95,84,69,88,84,85,82,69,95,85,78,73,84,83,95,65,82,66,58,32,37,100,10,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,115,111,114,116,32,112,97,114,97,109,101,116,101,114,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,65,117,116,111,115,112,114,105,116,101,32,115,104,97,100,101,114,32,37,115,32,104,97,100,32,111,100,100,32,118,101,114,116,101,120,32,99,111,117,110,116,10,0,0,0,0,0,0,82,66,95,69,110,100,83,117,114,102,97,99,101,40,41,32,45,32,83,72,65,68,69,82,95,77,65,88,95,86,69,82,84,69,88,69,83,32,104,105,116,0,0,0,0,0,0,0,99,108,95,103,117,105,100,0,82,69,95,65,100,100,82,101,102,69,110,116,105,116,121,84,111,83,99,101,110,101,32,112,97,115,115,101,100,32,97,32,114,101,102,69,110,116,105,116,121,32,119,104,105,99,104,32,104,97,115,32,97,110,32,111,114,105,103,105,110,32,119,105,116,104,32,97,32,78,97,78,32,99,111,109,112,111,110,101,110,116,10,0,0,0,0,0,67,77,95,76,101,97,102,65,114,101,97,58,32,98,97,100,32,110,117,109,98,101,114,0,82,95,76,111,97,100,73,81,77,58,32,37,115,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,37,100,32,106,111,105,110,116,115,32,40,37,100,41,46,10,0,0,0,0,71,69,49,50,56,0,0,0,71,76,95,77,65,88,95,84,69,88,84,85,82,69,95,83,73,90,69,58,32,37,100,10,0,0,0,0,0,0,0,0,37,115,95,0,0,0,0,0,103,95,110,101,101,100,112,97,115,115,0,0,0,0,0,0,82,95,82,101,103,105,115,116,101,114,77,68,51,58,32,117,110,107,110,111,119,110,32,102,105,108,101,105,100,32,102,111,114,32,37,115,10,0,0,0,87,65,82,78,73,78,71,58,32,115,104,97,100,101,114,32,37,115,32,105,110,32,115,107,105,110,32,37,115,32,110,111,116,32,102,111,117,110,100,10,0,0,0,0,0,0,0,0,99,108,95,114,117,110,110,105,110,103,0,0,0,0,0,0,99,117,98,101,109,97,112,32,37,100,32,40,37,102,44,32,37,102,44,32,37,102,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,108,105,103,104,116,103,114,105,100,33,10,0,0,0,0,0,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,0,0,0,0,76,84,49,50,56,0,0,0,10,0,0,0,0,0,0,0,83,117,115,112,101,110,115,105,111,110,32,110,111,116,32,97,108,108,111,119,101,100,32,104,101,114,101,0,0,0,0,0,115,118,95,112,97,107,78,97,109,101,115,0,0,0,0,0,71,76,105,109,112,95,73,110,105,116,40,41,32,45,32,99,111,117,108,100,32,110,111,116,32,108,111,97,100,32,79,112,101,110,71,76,32,115,117,98,115,121,115,116,101,109,0,0,115,116,111,112,118,105,100,101,111,0,0,0,0,0,0,0,100,111,110,111,116,101,110,116,101,114,0,0,0,0,0,0,109,100,114,0,0,0,0,0,71,84,48,0,0,0,0,0,71,76,95,69,88,84,69,78,83,73,79,78,83,58,32,0,87,114,111,116,101,32,37,115,10,0,0,0,0,0,0,0,115,76,65,32,32,0,0,0,118,105,100,101,111,0,0,0,67,111,117,108,100,32,110,111,116,32,108,111,97,100,32,100,108,105,103,104,116,32,115,104,97,100,101,114,33,0,0,0,95,115,117,110,82,97,121,115,0,0,0,0,0,0,0,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,65,82,66,0,0,0,0,0,0,0,82,69,95,76,111,97,100,87,111,114,108,100,77,97,112,58,32,37,115,32,110,111,116,32,102,111,117,110,100,0,0,0,71,76,95,83,82,67,95,65,76,80,72,65,95,83,65,84,85,82,65,84,69,0,0,0,102,115,95,114,101,102,101,114,101,110,99,101,100,76,105,115,116,0,0,0,0,0,0,0,71,76,95,86,69,82,83,73,79,78,58,32,37,115,10,0,70,101,98,32,50,51,32,50,48,49,52,0,0,0,0,0,65,85,68,73,79,95,85,56,0,0,0,0,0,0,0,0,67,108,105,101,110,116,32,99,111,109,109,97,110,100,32,111,118,101,114,102,108,111,119,0,78,111,32,106,111,121,115,116,105,99,107,32,111,112,101,110,101,100,46,10,0,0,0,0,42,0,0,0,0,0,0,0,99,97,110,39,116,32,109,101,114,103,101,32,37,115,32,119,105,116,104,32,37,115,0,0,71,76,95,79,78,69,95,77,73,78,85,83,95,68,83,84,95,67,79,76,79,82,0,0,102,115,95,111,112,101,110,101,100,76,105,115,116,0,0,0,71,76,95,82,69,78,68,69,82,69,82,58,32,37,115,10,0,0,0,0,0,0,0,0,108,111,97,100,101,100,32,37,115,10,0,0,0,0,0,0,109,111,100,101,108,0,0,0,57,0,0,0,0,0,0,0,111,114,105,103,105,110,0,0,99,104,97,116,32,109,101,115,115,97,103,101,32,116,111,111,32,108,111,110,103,0,0,0,108,111,97,100,101,100,32,100,101,102,97,117,108,116,32,115,107,105,108,108,32,37,100,32,102,114,111,109,32,37,115,10,0,0,0,0,0,0,0,0,116,101,108,101,112,111,114,116,101,114,32,119,105,116,104,111,117,116,32,109,105,115,99,95,116,101,108,101,112,111,114,116,101,114,95,100,101,115,116,32,40,37,115,41,10,0,0,0,112,104,121,115,95,109,97,120,119,97,116,101,114,106,117,109,112,0,0,0,0,0,0,0,116,111,103,103,108,101,109,101,110,117,0,0,0,0,0,0,86,77,95,67,114,101,97,116,101,58,32,110,111,32,102,114,101,101,32,118,109,95,116,0,100,101,109,111,115,47,37,115,0,0,0,0,0,0,0,0,71,76,95,68,83,84,95,67,79,76,79,82,0,0,0,0,115,104,111,119,105,112,0,0,10,71,76,95,86,69,78,68,79,82,58,32,37,115,10,0,37,105,0,0,0,0,0,0,71,76,95,73,78,86,65,76,73,68,95,79,80,69,82,65,84,73,79,78,0,0,0,0,110,111,110,97,109,101,0,0,80,67,88,32,102,105,108,101,32,116,114,117,110,99,97,116,101,100,58,32,37,115,10,0,111,110,108,121,32,98,111,116,115,32,111,110,32,115,101,114,118,101,114,0,0,0,0,0,76,111,97,100,84,71,65,58,32,99,111,108,111,114,109,97,112,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,0,102,108,117,115,104,98,97,110,115,0,0,0,0,0,0,0,98,111,116,95,116,101,115,116,99,108,117,115,116,101,114,115,0,0,0,0,0,0,0,0,76,111,97,100,66,77,80,58,32,111,110,108,121,32,87,105,110,100,111,119,115,45,115,116,121,108,101,32,66,77,80,32,102,105,108,101,115,32,115,117,112,112,111,114,116,101,100,32,40,37,115,41,0,0,0,0,37,115,10,0,0,0,0,0,10,0,0,0,0,0,0,0,116,111,103,103,108,101,99,111,110,115,111,108,101,0,0,0,98,97,115,101,0,0,0,0,94,51,83,95,65,100,100,82,101,97,108,76,111,111,112,105,110,103,83,111,117,110,100,58,32,104,97,110,100,108,101,32,37,105,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,0,0,0,78,69,84,95,74,111,105,110,77,117,108,116,105,99,97,115,116,54,58,32,67,111,117,108,100,110,39,116,32,115,101,116,32,115,99,111,112,101,32,111,110,32,109,117,108,116,105,99,97,115,116,32,115,111,99,107,101,116,58,32,37,115,10,0,87,65,82,78,73,78,71,58,32,117,110,107,110,111,119,110,32,98,108,101,110,100,32,109,111,100,101,32,39,37,115,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,44,32,115,117,98,115,116,105,116,117,116,105,110,103,32,71,76,95,79,78,69,10,0,0,0,115,101,114,118,101,114,115,116,97,116,117,115,0,0,0,0,102,117,108,108,115,99,114,101,101,110,0,0,0,0,0,0,101,70,108,97,103,115,0,0,70,49,50,0,0,0,0,0,70,83,95,70,79,112,101,110,70,105,108,101,82,101,97,100,58,32,78,85,76,76,32,39,102,105,108,101,110,97,109,101,39,32,112,97,114,97,109,101,116,101,114,32,112,97,115,115,101,100,0,0,0,0,0,0,117,115,97,103,101,58,32,114,101,115,101,116,32,60,118,97,114,105,97,98,108,101,62,10,0,0,0,0,0,0,0,0,71,76,95,78,69,65,82,69,83,84,95,77,73,80,77,65,80,95,78,69,65,82,69,83,84,0,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,119,114,105,116,101,32,37,115,46,10,0,0,0,0,0,71,76,95,79,78,69,95,77,73,78,85,83,95,83,82,67,95,67,79,76,79,82,0,0,112,105,110,103,0,0,0,0,119,105,110,100,111,119,101,100,0,0,0,0,0,0,0,0,37,100,32,37,100,32,37,100,32,37,115,32,0,0,0,0,109,97,112,115,47,37,115,46,98,115,112,0,0,0,0,0,71,76,95,83,82,67,95,67,79,76,79,82,0,0,0,0,114,99,111,110,0,0,0,0,101,110,97,98,108,101,100,0,77,73,83,83,73,78,71,32,86,65,76,85,69,10,0,0,45,102,111,114,119,97,114,100,0,0,0,0,0,0,0,0,71,76,83,76,95,83,101,116,85,110,105,102,111,114,109,70,108,111,97,116,58,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,117,110,105,102,111,114,109,32,37,105,32,105,110,32,112,114,111,103,114,97,109,32,37,115,10,0,0,102,111,110,116,115,47,102,111,110,116,73,109,97,103,101,95,37,105,46,100,97,116,0,0,94,51,87,65,82,78,73,78,71,58,32,112,114,111,98,97,98,108,101,32,99,111,114,114,117,112,116,32,104,105,115,116,111,114,121,10,0,0,0,0,101,99,104,111,0,0,0,0,71,76,95,79,78,69,95,77,73,78,85,83,95,68,83,84,95,65,76,80,72,65,0,0,103,108,111,98,97,108,115,101,114,118,101,114,115,0,0,0,100,105,115,97,98,108,101,100,0,0,0,0,0,0,0,0,82,95,67,104,101,99,107,70,66,79,58,32,40,37,115,41,32,70,114,97,109,101,98,117,102,102,101,114,32,105,110,99,111,109,112,108,101,116,101,44,32,109,105,115,115,105,110,103,32,97,116,116,97,99,104,109,101,110,116,10,0,0,0,0,67,111,117,108,100,110,39,116,32,114,101,97,100,32,37,115,46,10,0,0,0,0,0,0,67,77,95,76,101,97,102,67,108,117,115,116,101,114,58,32,98,97,100,32,110,117,109,98,101,114,0,0,0,0,0,0,71,76,95,68,83,84,95,65,76,80,72,65,0,0,0,0,108,111,99,97,108,115,101,114,118,101,114,115,0,0,0,0,82,69,78,68,69,82,66,85,70,70,69,82,95,70,82,69,69,95,77,69,77,79,82,89,95,65,84,73,58,32,37,105,107,98,32,116,111,116,97,108,32,37,105,107,98,32,108,97,114,103,101,115,116,32,97,117,120,58,32,37,105,107,98,32,116,111,116,97,108,32,37,105,107,98,32,108,97,114,103,101,115,116,10,0,0,0,0,0,61,61,61,61,61,32,112,101,110,100,105,110,103,32,115,101,114,118,101,114,32,99,111,109,109,97,110,100,115,32,61,61,61,61,61,10,0,0,0,0,87,114,111,116,101,32,37,100,58,37,100,32,102,114,97,109,101,115,32,116,111,32,37,115,10,0,0,0,0,0,0,0,46,46,46,37,115,32,110,111,116,32,102,111,117,110,100,10,0,0,0,0,0,0,0,0,112,117,110,107,98,117,115,116,101,114,0,0,0,0,0,0,40,109,100,51,41,32,37,105,32,115,105,110,32,37,105,32,115,99,108,105,112,32,32,37,105,32,115,111,117,116,32,37,105,32,98,105,110,32,37,105,32,98,99,108,105,112,32,37,105,32,98,111,117,116,10,0,113,51,104,105,115,116,111,114,121,0,0,0,0,0,0,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,0,0,71,76,95,79,78,69,95,77,73,78,85,83,95,83,82,67,95,65,76,80,72,65,0,0,114,101,99,111,110,110,101,99,116,0,0,0,0,0,0,0,84,69,88,84,85,82,69,95,70,82,69,69,95,77,69,77,79,82,89,95,65,84,73,58,32,37,105,107,98,32,116,111,116,97,108,32,37,105,107,98,32,108,97,114,103,101,115,116,32,97,117,120,58,32,37,105,107,98,32,116,111,116,97,108,32,37,105,107,98,32,108,97,114,103,101,115,116,10,0,0,109,97,112,115,47,37,115,47,108,105,103,104,116,103,114,105,100,46,114,97,119,0,0,0,66,117,102,102,101,114,32,112,97,115,115,101,100,32,116,111,32,74,80,69,71,32,108,105,98,114,97,114,121,32,105,115,32,116,111,111,32,115,109,97,108,108,0,0,0,0,0,0,71,76,95,84,101,120,69,110,118,58,32,105,110,118,97,108,105,100,32,101,110,118,32,39,37,100,39,32,112,97,115,115,101,100,0,0,0,0,0,0,115,118,95,112,97,107,115,0,83,101,116,116,105,110,103,32,114,95,109,111,100,101,32,37,100,32,102,97,105,108,101,100,44,32,102,97,108,108,105,110,103,32,98,97,99,107,32,111,110,32,114,95,109,111,100,101,32,37,100,10,0,0,0,0,110,101,120,116,100,101,109,111,0,0,0,0,0,0,0,0,69,82,82,79,82,58,32,99,111,117,108,100,110,39,116,32,111,112,101,110,32,37,115,46,10,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,0,0,0,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,99,111,100,101,0,0,0,0,0,99,108,117,115,116,101,114,112,111,114,116,97,108,0,0,0,105,113,109,0,0,0,0,0,71,76,95,83,82,67,95,65,76,80,72,65,0,0,0,0,99,111,110,110,101,99,116,0,86,66,79,95,70,82,69,69,95,77,69,77,79,82,89,95,65,84,73,58,32,37,105,107,98,32,116,111,116,97,108,32,37,105,107,98], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+133124); +/* memory initializer */ allocate([32,108,97,114,103,101,115,116,32,97,117,120,58,32,37,105,107,98,32,116,111,116,97,108,32,37,105,107,98,32,108,97,114,103,101,115,116,10,0,0,0,0,0,0,108,101,118,101,108,115,104,111,116,115,47,37,115,46,116,103,97,0,0,0,0,0,0,0,115,76,32,32,32,0,0,0,99,111,109,95,99,97,109,101,114,97,77,111,100,101,0,0,100,108,105,103,104,116,0,0,95,109,115,97,97,82,101,115,111,108,118,101,0,0,0,0,103,108,71,101,116,72,97,110,100,108,101,65,82,66,0,0,69,82,82,79,82,58,32,97,116,116,101,109,112,116,101,100,32,116,111,32,114,101,100,117,110,100,97,110,116,108,121,32,108,111,97,100,32,119,111,114,108,100,32,109,97,112,0,0,71,76,95,90,69,82,79,0,115,116,111,112,114,101,99,111,114,100,0,0,0,0,0,0,71,80,85,95,77,69,77,79,82,89,95,73,78,70,79,95,69,86,73,67,84,69,68,95,77,69,77,79,82,89,95,78,86,88,58,32,37,105,107,98,10,0,0,0,0,0,0,0,45,118,0,0,0,0,0,0,32,32,67,104,97,110,110,101,108,115,58,32,37,100,10,0,114,95,102,117,108,108,115,99,114,101,101,110,0,0,0,0,105,110,95,106,111,121,115,116,105,99,107,85,115,101,65,110,97,108,111,103,0,0,0,0,46,42,0,0,0,0,0,0,115,116,114,105,110,103,105,122,105,110,103,32,111,112,101,114,97,116,111,114,32,119,105,116,104,111,117,116,32,100,101,102,105,110,101,32,112,97,114,97,109,101,116,101,114,0,0,0,71,76,95,79,78,69,0,0,99,105,110,101,109,97,116,105,99,0,0,0,0,0,0,0,71,80,85,95,77,69,77,79,82,89,95,73,78,70,79,95,69,86,73,67,84,73,79,78,95,67,79,85,78,84,95,78,86,88,58,32,37,105,10,0,116,111,111,32,109,97,110,121,32,102,117,122,122,121,32,119,101,105,103,104,116,115,0,0,110,97,109,101,0,0,0,0,119,101,97,112,105,110,100,101,120,95,98,102,103,49,48,107,0,0,0,0,0,0,0,0,116,97,114,103,101,116,95,108,111,99,97,116,105,111,110,0,108,111,97,100,101,100,32,37,115,10,0,0,0,0,0,0,108,111,97,100,101,100,32,99,97,99,104,101,100,32,100,101,102,97,117,108,116,32,115,107,105,108,108,32,37,100,32,102,114,111,109,32,37,115,10,0,116,114,105,103,103,101,114,95,116,101,108,101,112,111,114,116,32,97,116,32,37,49,46,48,102,32,37,49,46,48,102,32,37,49,46,48,102,32,119,105,116,104,111,117,116,32,116,97,114,103,101,116,10,0,0,0,48,46,55,0,0,0,0,0,37,99,37,115,32,37,100,32,37,100,10,0,0,0,0,0,37,54,105,32,65,65,83,32,109,101,109,111,114,121,47,67,80,85,32,117,115,97,103,101,32,40,116,104,101,32,108,111,119,101,114,32,116,104,101,32,98,101,116,116,101,114,41,10,0,0,0,0,0,0,0,0,86,77,95,67,114,101,97,116,101,58,32,98,97,100,32,112,97,114,109,115,0,0,0,0,50,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,117,110,107,110,111,119,110,32,116,99,77,111,100,32,39,37,115,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,100,101,109,111,0,0,0,0,71,80,85,95,77,69,77,79,82,89,95,73,78,70,79,95,67,85,82,82,69,78,84,95,65,86,65,73,76,65,66,76,69,95,86,73,68,77,69,77,95,78,86,88,58,32,37,105,107,98,10,0,0,0,0,0,112,114,111,116,111,99,111,108,0,0,0,0,0,0,0,0,115,118,95,104,111,115,116,110,97,109,101,0,0,0,0,0,112,97,115,115,119,111,114,100,0,0,0,0,0,0,0,0,101,120,99,101,112,116,100,101,108,0,0,0,0,0,0,0,98,111,116,95,116,101,115,116,115,111,108,105,100,0,0,0,65,76,67,95,69,78,85,77,69,82,65,84,73,79,78,95,69,88,84,0,0,0,0,0,98,105,110,100,108,105,115,116,0,0,0,0,0,0,0,0,79,112,101,110,65,76,0,0,37,115,32,104,97,115,32,108,101,110,103,116,104,32,48,0,87,65,82,78,73,78,71,58,32,78,69,84,95,74,111,105,110,77,117,108,116,105,99,97,115,116,54,58,32,73,110,99,111,114,114,101,99,116,32,109,117,108,116,105,99,97,115,116,32,97,100,100,114,101,115,115,32,103,105,118,101,110,44,32,112,108,101,97,115,101,32,115,101,116,32,99,118,97,114,32,37,115,32,116,111,32,97,32,115,97,110,101,32,118,97,108,117,101,46,10,0,0,0,0,101,110,116,105,116,121,84,114,97,110,115,108,97,116,101,0,114,101,99,111,114,100,0,0,71,80,85,95,77,69,77,79,82,89,95,73,78,70,79,95,84,79,84,65,76,95,65,86,65,73,76,65,66,76,69,95,77,69,77,79,82,89,95,78,86,88,58,32,37,105,107,98,10,0,0,0,0,0,0,0,112,111,115,46,116,114,84,121,112,101,0,0,0,0,0,0,70,49,49,0,0,0,0,0,100,109,95,0,0,0,0,0,117,115,97,103,101,58,32,37,115,32,60,118,97,114,105,97,98,108,101,62,32,60,118,97,108,117,101,62,10,0,0,0,117,110,98,105,110,100,97,108,108,0,0,0,0,0,0,0,37,100,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,116,99,77,111,100,32,114,111,116,97,116,101,32,112,97,114,109,115,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,118,105,100,95,114,101,115,116,97,114,116,0,0,0,0,0,71,80,85,95,77,69,77,79,82,89,95,73,78,70,79,95,68,69,68,73,67,65,84,69,68,95,86,73,68,77,69,77,95,78,86,88,58,32,37,105,107,98,10,0,0,0,0,0,115,95,115,100,108,83,112,101,101,100,0,0,0,0,0,0,117,110,98,105,110,100,0,0,109,97,112,110,97,109,101,0,114,111,116,97,116,101,0,0,73,78,95,73,110,105,116,32,99,97,108,108,101,100,32,98,101,102,111,114,101,32,83,68,76,95,73,110,105,116,40,32,83,68,76,95,73,78,73,84,95,86,73,68,69,79,32,41,0,0,0,0,0,0,0,0,115,110,100,95,114,101,115,116,97,114,116,0,0,0,0,0,78,111,32,101,120,116,101,110,115,105,111,110,32,102,111,117,110,100,32,102,111,114,32,71,80,85,32,109,101,109,111,114,121,32,105,110,102,111,46,10,0,0,0,0,0,0,0,0,37,115,32,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,112,117,110,99,116,117,97,116,105,111,110,32,37,115,0,0,0,0,0,0,0,43,102,111,114,119,97,114,100,0,0,0,0,0,0,0,0,98,105,110,100,0,0,0,0,118,115,116,114,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,116,114,97,110,115,102,111,114,109,32,112,97,114,109,115,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,0,0,77,105,115,109,97,116,99,104,101,100,32,82,69,70,95,65,80,73,95,86,69,82,83,73,79,78,58,32,101,120,112,101,99,116,101,100,32,37,105,44,32,103,111,116,32,37,105,10,0,0,0,0,0,0,0,0,99,108,105,101,110,116,105,110,102,111,0,0,0,0,0,0,46,46,46,0,0,0,0,0,37,115,32,34,37,115,34,10,0,0,0,0,0,0,0,0,67,77,95,73,110,108,105,110,101,77,111,100,101,108,58,32,98,97,100,32,110,117,109,98,101,114,0,0,0,0,0,0,116,114,97,110,115,102,111,114,109,0,0,0,0,0,0,0,99,111,100,101,47,114,101,110,100,101,114,101,114,103,108,50,47,116,114,95,105,110,105,116,46,99,0,0,0,0,0,0,99,111,110,102,105,103,115,116,114,105,110,103,115,0,0,0,97,100,100,114,0,0,0,0,83,86,95,83,101,116,67,111,110,102,105,103,115,116,114,105,110,103,58,32,98,97,100,32,105,110,100,101,120,32,37,105,0,0,0,0,0,0,0,0,98,105,110,100,32,37,115,32,34,37,115,34,10,0,0,0,103,108,82,101,97,100,80,105,120,101,108,115,0,0,0,0,111,117,116,32,111,102,32,116,111,107,101,110,32,115,112,97,99,101,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,115,116,114,101,116,99,104,32,112,97,114,109,115,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,115,104,97,100,101,114,115,116,97,116,101,0,0,0,0,0,99,109,100,0,0,0,0,0,66,111,103,117,115,32,118,105,114,116,117,97,108,32,97,114,114,97,121,32,97,99,99,101,115,115,0,0,0,0,0,0,111,112,101,110,108,111,103,32,60,102,105,108,101,110,97,109,101,62,10,0,0,0,0,0,115,118,95,99,104,101,97,116,115,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,117,110,98,105,110,100,97,108,108,10,0,0,0,0,0,0,37,115,58,32,98,111,116,32,108,105,98,114,97,114,121,32,117,115,101,100,32,98,101,102,111,114,101,32,98,101,105,110,103,32,115,101,116,117,112,10,0,0,0,0,0,0,0,0,97,114,101,97,112,111,114,116,97,108,0,0,0,0,0,0,115,116,97,116,105,99,77,68,51,77,101,115,104,95,73,66,79,32,37,115,0,0,0,0,115,116,114,101,116,99,104,0,82,69,95,83,104,117,116,100,111,119,110,40,32,37,105,32,41,10,0,0,0,0,0,0,99,103,95,115,116,101,114,101,111,83,101,112,97,114,97,116,105,111,110,0,0,0,0,0,115,99,114,101,101,110,115,104,111,116,115,47,115,104,111,116,37,105,37,105,37,105,37,105,46,106,112,103,0,0,0,0,115,82,71,66,65,0,0,0,77,105,115,115,105,110,103,32,114,101,116,117,114,110,32,118,97,108,117,101,0,0,0,0,32,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,108,111,97,100,32,102,111,103,112,97,115,115,32,115,104,97,100,101,114,33,0,0,95,114,101,110,100,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,65,82,66,0,0,0,0,0,0,0,80,114,111,99,101,115,115,101,100,32,37,100,32,115,117,114,102,97,99,101,115,32,105,110,116,111,32,37,100,32,109,101,114,103,101,100,44,32,37,100,32,117,110,109,101,114,103,101,100,32,105,110,32,37,53,46,50,102,32,115,101,99,111,110,100,115,10,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,115,99,97,108,101,32,115,99,114,111,108,108,32,112,97,114,109,115,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,45,45,45,45,45,32,102,105,110,105,115,104,101,100,32,82,95,73,110,105,116,32,45,45,45,45,45,10,0,0,0,0,99,103,95,118,105,101,119,115,105,122,101,0,0,0,0,0,105,110,118,97,108,105,100,32,119,101,97,112,111,110,32,115,116,97,116,101,32,37,100,10,0,0,0,0,0,0,0,0,83,86,95,83,118,69,110,116,105,116,121,70,111,114,71,101,110,116,105,116,121,58,32,98,97,100,32,103,69,110,116,0,110,111,32,101,110,116,105,116,121,32,119,105,116,104,32,109,111,100,101,108,32,37,100,10,0,0,0,0,0,0,0,0,45,45,118,101,114,115,105,111,110,0,0,0,0,0,0,0,32,32,83,97,109,112,108,101,115,58,32,32,37,100,10,0,34,37,115,34,32,105,115,32,110,111,116,32,98,111,117,110,100,10,0,0,0,0,0,0,105,110,95,106,111,121,115,116,105,99,107,78,111,0,0,0,58,58,0,0,0,0,0,0,115,99,114,111,108,108,0,0,109,111,100,101,108,105,110,100,101,120,0,0,0,0,0,0,103,108,71,101,116,69,114,114,111,114,40,41,32,61,32,48,120,37,120,10,0,0,0,0,99,103,95,112,114,101,100,105,99,116,73,116,101,109,115,0,119,101,105,103,104,116,0,0,99,111,117,108,100,110,39,116,32,108,111,97,100,32,116,104,101,32,119,101,97,112,111,110,32,99,111,110,102,105,103,10,0,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,99,108,97,115,115,110,97,109,101,0,0,0,0,0,0,0,109,105,115,115,105,110,103,32,125,0,0,0,0,0,0,0,98,111,116,115,47,100,101,102,97,117,108,116,95,99,46,99,0,0,0,0,0,0,0,0,116,114,105,103,103,101,114,95,116,101,108,101,112,111,114,116,32,109,111,100,101,108,32,61,32,34,37,115,34,10,0,0,112,104,121,115,95,109,97,120,115,116,101,101,112,110,101,115,115,0,0,0,0,0,0,0,34,37,115,34,32,61,32,34,37,115,34,10,0,0,0,0,37,54,105,32,116,111,116,97,108,32,114,101,97,99,104,97,98,105,108,105,116,121,32,97,114,101,97,115,10,0,0,0,86,77,95,82,101,115,116,97,114,116,32,102,97,105,108,101,100,0,0,0,0,0,0,0,115,118,95,107,105,108,108,115,101,114,118,101,114,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,115,99,97,108,101,32,112,97,114,109,115,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,116,101,115,115,46,120,121,122,32,110,111,116,32,49,54,32,98,121,116,101,32,97,108,105,103,110,101,100,10,0,0,0,112,97,115,115,119,111,114,100,0,0,0,0,0,0,0,0,109,97,120,95,109,101,115,115,97,103,101,115,0,0,0,0,103,97,109,101,110,97,109,101,0,0,0,0,0,0,0,0,115,118,95,112,114,105,118,97,116,101,67,108,105,101,110,116,115,0,0,0,0,0,0,0,37,115,58,114,101,99,111,110,110,101,99,116,10,0,0,0,98,97,110,100,101,108,0,0,37,115,10,0,0,0,0,0,98,111,116,95,116,101,115,116,114,99,104,97,116,0,0,0,65,76,67,95,69,78,85,77,69,82,65,84,69,95,65,76,76,95,69,88,84,0,0,0,98,105,110,100,32,60,107,101,121,62,32,91,99,111,109,109,97,110,100,93,32,58,32,97,116,116,97,99,104,32,97,32,99,111,109,109,97,110,100,32,116,111,32,97,32,107,101,121,10,0,0,0,0,0,0,0,115,95,117,115,101,79,112,101,110,65,76,0,0,0,0,0,94,51,83,95,65,100,100,76,111,111,112,105,110,103,83,111,117,110,100,58,32,104,97,110,100,108,101,32,37,105,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,87,65,82,78,73,78,71,58,32,78,69,84,95,73,80,54,83,111,99,107,101,116,58,32,98,105,110,100,58,32,37,115,10,0,0,0,0,0,0,0,54,49,52,52,0,0,0,0,115,99,97,108,101,0,0,0,45,45,45,45,45,32,82,95,73,110,105,116,32,45,45,45,45,45,10,0,0,0,0,0,99,108,95,97,110,111,110,121,109,111,117,115,0,0,0,0,103,114,111,117,110,100,69,110,116,105,116,121,78,117,109,0,37,100,32,98,121,116,101,115,32,114,111,117,116,105,110,103,32,99,97,99,104,101,10,0,70,49,48,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,67,111,117,108,100,32,110,111,116,32,99,114,101,97,116,101,32,110,101,119,32,99,111,109,95,112,105,112,101,102,105,108,101,32,97,116,32,37,115,46,32,99,111,109,95,112,105,112,101,102,105,108,101,32,119,105,108,108,32,110,111,116,32,98,101,32,117,115,101,100,46,10,0,0,0,0,0,116,111,103,103,108,101,58,32,110,111,116,104,105,110,103,32,116,111,32,116,111,103,103,108,101,32,116,111,10,0,0,0,34,37,115,34,32,105,115,110,39,116,32,97,32,118,97,108,105,100,32,107,101,121,10,0,116,114,105,103,103,101,114,95,112,117,115,104,32,115,116,97,114,116,32,115,111,108,105,100,10,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,116,99,77,111,100,32,116,117,114,98,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,103,102,120,109,101,109,105,110,102,111,0,0,0,0,0,0,109,97,108,101,0,0,0,0,117,110,98,105,110,100,32,60,107,101,121,62,32,58,32,114,101,109,111,118,101,32,99,111,109,109,97,110,100,115,32,102,114,111,109,32,97,32,107,101,121,10,0,0,0,0,0,0,66,97,100,32,99,103,97,109,101,32,115,121,115,116,101,109,32,116,114,97,112,58,32,37,108,100,0,0,0,0,0,0,112,104,121,115,95,115,116,111,112,115,112,101,101,100,0,0,102,111,114,99,101,119,114,105,116,101,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,116,99,77,111,100,32,116,117,114,98,32,112,97,114,109,115,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,0,116,114,121,105,110,103,32,116,111,32,108,111,97,100,32,37,115,10,0,0,0,0,0,0,109,105,110,105,109,105,122,101,0,0,0,0,0,0,0,0,115,101,120,0,0,0,0,0,65,65,83,95,69,110,116,105,116,121,73,110,102,111,58,32,101,110,116,110,117,109,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,10,0,0,0,0,0,0,0,65,65,83,95,77,65,88,95,80,79,82,84,65,76,73,78,68,69,88,83,73,90,69,10,0,0,0,0,0,0,0,0,45,114,105,103,104,116,0,0,101,110,116,100,97,116,97,0,86,77,95,80,114,101,112,97,114,101,73,110,116,101,114,112,114,101,116,101,114,58,32,112,99,32,62,32,104,101,97,100,101,114,45,62,99,111,100,101,76,101,110,103,116,104,0,0,101,120,101,99,0,0,0,0,116,117,114,98,0,0,0,0,103,102,120,105,110,102,111,0,116,101,97,109,116,97,115,107,0,0,0,0,0,0,0,0,118,109,95,103,97,109,101,0,119,98,0,0,0,0,0,0,60,79,85,84,32,79,70,32,82,65,78,71,69,62,0,0,67,77,95,67,108,105,112,72,97,110,100,108,101,84,111,77,111,100,101,108,58,32,98,97,100,32,104,97,110,100,108,101,32,37,105,32,60,32,37,105,32,60,32,37,105,0,0,0,69,82,82,79,82,58,32,116,111,111,32,109,97,110,121,32,116,99,77,111,100,32,115,116,97,103,101,115,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,0,0,0,0,0,115,99,114,101,101,110,115,104,111,116,74,80,69,71,0,0,49,48,48,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,65,117,100,105,111,32,99,97,112,116,117,114,101,32,98,117,102,102,101,114,32,111,118,101,114,102,108,111,119,32,45,45,32,116,114,117,110,99,97,116,105,110,103,10,0,110,101,116,116,121,112,101,0,60,75,69,89,32,78,79,84,32,70,79,85,78,68,62,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,79,98,106,101,99,116,32,37,105,32,116,111,117,99,104,105,110,103,32,51,32,97,114,101,97,115,32,97,116,32,37,102,32,37,102,32,37,102,10,0,87,65,82,78,73,78,71,58,32,117,110,107,110,111,119,110,32,112,97,114,97,109,101,116,101,114,32,39,37,115,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,115,99,114,101,101,110,115,104,111,116,0,0,0,0,0,0,104,97,110,100,105,99,97,112,0,0,0,0,0,0,0,0,37,115,58,32,68,101,108,116,97,32,114,101,113,117,101,115,116,32,102,114,111,109,32,111,117,116,32,111,102,32,100,97,116,101,32,101,110,116,105,116,105,101,115,46,10,0,0,0,74,80,69,71,32,112,97,114,97,109,101,116,101,114,32,115,116,114,117,99,116,32,109,105,115,109,97,116,99,104,58,32,108,105,98,114,97,114,121,32,116,104,105,110,107,115,32,115,105,122,101,32,105,115,32,37,117,44,32,99,97,108,108,101,114,32,101,120,112,101,99,116,115,32,37,117,0,0,0,0,35,52,54,50,32,78,101,116,99,104,97,110,95,84,114,97,110,115,109,105,116,78,101,120,116,70,114,97,103,109,101,110,116,58,32,114,101,109,97,105,110,105,110,103,32,113,117,101,117,101,100,32,109,101,115,115,97,103,101,10,0,0,0,0,115,118,95,115,101,114,118,101,114,105,100,0,0,0,0,0,83,68,76,95,86,73,68,69,79,95,67,69,78,84,69,82,69,68,0,0,0,0,0,0,115,97,121,32,34,37,115,34,10,0,0,0,0,0,0,0,115,116,114,117,99,116,117,114,97,108,0,0,0,0,0,0,115,116,97,116,105,99,77,68,51,77,101,115,104,95,86,66,79,32,39,37,115,39,0,0,100,101,112,116,104,119,114,105,116,101,0,0,0,0,0,0,83,116,111,112,112,101,100,32,100,101,109,111,46,10,0,0,109,111,100,101,108,105,115,116,0,0,0,0,0,0,0,0,99,111,108,111,114,50,0,0,115,99,114,101,101,110,115,104,111,116,115,47,115,104,111,116,57,57,57,57,46,106,112,103,0,0,0,0,0,0,0,0,115,82,71,66,32,0,0,0,115,97,121,95,116,101,97,109,32,34,37,115,34,10,0,0,102,111,103,112,97,115,115,0,114,95,101,120,116,95,102,114,97,109,101,98,117,102,102,101,114,95,109,117,108,116,105,115,97,109,112,108,101,0,0,0,103,95,103,97,109,101,116,121,112,101,0,0,0,0,0,0,83,101,114,118,101,114,32,99,111,109,109,97,110,100,32,111,118,101,114,102,108,111,119,0,71,76,95,65,82,66,95,115,104,97,100,101,114,95,111,98,106,101,99,116,115,0,0,0,99,111,100,101,47,114,101,110,100,101,114,101,114,103,108,50,47,116,114,95,98,115,112,46,99,0,0,0,0,0,0,0,109,111,100,101,108,108,105,115,116,0,0,0,0,0,0,0,99,111,108,111,114,49,0,0,83,121,115,95,76,111,97,100,71,97,109,101,68,108,108,40,37,115,41,32,102,111,117,110,100,32,118,109,77,97,105,110,32,102,117,110,99,116,105,111,110,32,97,116,32,37,112,10,0,0,0,0,0,0,0,0,32,32,70,114,101,113,58,32,32,32,32,32,37,100,10,0,116,101,108,108,32,37,105,32,34,37,115,34,10,0,0,0,74,111,121,115,116,105,99,107,32,105,115,32,110,111,116,32,97,99,116,105,118,101,46,10,0,0,0,0,0,0,0,0,45,62,0,0,0,0,0,0,83,86,95,71,101,116,67,111,110,102,105,103,115,116,114,105,110,103,58,32,98,117,102,102,101,114,83,105,122,101,32,61,61,32,37,105,0,0,0,0,37,100,0,0,0,0,0,0,116,99,77,111,100,0,0,0,115,107,105,110,108,105,115,116,0,0,0,0,0,0,0,0,80,97,103,97,110,115,0,0,99,111,117,110,108,100,110,39,116,32,108,111,97,100,32,37,115,10,0,0,0,0,0,0,119,101,97,112,111,110,115,46,99,0,0,0,0,0,0,0,83,86,95,83,101,116,66,114,117,115,104,77,111,100,101,108,58,32,78,85,76,76,0,0,119,101,97,112,105,110,100,101,120,95,114,111,99,107,101,116,108,97,117,110,99,104,101,114,0,0,0,0,0,0,0,0,111,117,116,32,111,102,32,108,101,118,101,108,32,105,116,101,109,115,10,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,37,115,0,0,0,99,111,117,108,100,110,39,116,32,102,105,110,100,32,115,107,105,108,108,32,37,100,32,105,110,32,37,115,10,0,0,0,116,114,105,103,103,101,114,95,116,101,108,101,112,111,114,116,0,0,0,0,0,0,0,0,49,57,0,0,0,0,0,0,99,109,100,32,115,97,121,32,0,0,0,0,0,0,0,0,99,108,117,115,116,101,114,32,37,100,32,104,97,115,32,37,100,32,114,101,97,99,104,97,98,105,108,105,116,121,32,97,114,101,97,115,10,0,0,0,86,77,95,82,101,115,116,97,114,116,40,41,10,0,0,0,100,101,109,111,32,60,100,101,109,111,110,97,109,101,62,10,0,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,117,110,107,110,111,119,110,32,116,101,120,103,101,110,32,112,97,114,109,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,115,104,97,100,101,114,108,105,115,116,0,0,0,0,0,0,103,95,98,108,117,101,84,101,97,109,0,0,0,0,0,0,99,104,97,108,108,101,110,103,101,0,0,0,0,0,0,0,83,86,95,71,101,116,67,104,97,108,108,101,110,103,101,58,32,114,97,116,101,32,108,105,109,105,116,32,102,114,111,109,32,37,115,32,101,120,99,101,101,100,101,100,44,32,100,114,111,112,112,105,110,103,32,114,101,113,117,101,115,116,10,0,110,111,109,97,112,0,0,0,67,108,105,101,110,116,32,37,105,32,99,111,110,110,101,99,116,105,110,103,32,119,105,116,104,32,37,105,32,99,104,97,108,108,101,110,103,101,32,112,105,110,103,10,0,0,0,0,101,120,99,101,112,116,97,100,100,114,0,0,0,0,0,0,98,111,116,95,116,101,115,116,105,99,104,97,116,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,108,105,98,114,97,114,121,58,32,34,37,115,34,46,10,0,0,10,0,0,0,0,0,0,0,115,95,105,110,102,111,0,0,94,51,83,95,83,116,97,114,116,76,111,99,97,108,83,111,117,110,100,58,32,104,97,110,100,108,101,32,37,105,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,87,65,82,78,73,78,71,58,32,78,69,84,95,73,80,54,83,111,99,107,101,116,58,32,115,101,116,115,111,99,107,111,112,116,32,73,80,86,54,95,86,54,79,78,76,89,58,32,37,115,10,0,0,0,0,0,118,101,99,116,111,114,0,0,105,109,97,103,101,108,105,115,116,0,0,0,0,0,0,0,83,116,114,111,103,103,115,0,108,101,103,115,65,110,105,109,0,0,0,0,0,0,0,0,107,105,99,107,98,111,116,115,0,0,0,0,0,0,0,0,70,83,95,70,67,114,101,97,116,101,79,112,101,110,80,105,112,101,70,105,108,101,58,32,37,115,10,0,0,0,0,0,70,57,0,0,0,0,0,0,37,100,0,0,0,0,0,0,93,37,115,10,0,0,0,0,48,0,0,0,0,0,0,0,98,97,115,101,0,0,0,0,114,95,109,97,120,112,111,108,121,118,101,114,116,115,0,0,103,95,114,101,100,84,101,97,109,0,0,0,0,0,0,0,115,95,97,108,71,97,105,110,0,0,0,0,0,0,0,0,79,110,108,121,32,109,111,110,111,32,97,110,100,32,115,116,101,114,101,111,32,79,103,103,32,79,112,117,115,32,102,105,108,101,115,32,97,114,101,32,115,117,112,112,111,114,116,101,100,10,0,0,0,0,0,0,94,49,69,82,82,79,82,58,32,79,117,116,32,111,102,32,109,101,109,111,114,121,32,114,101,97,100,105,110,103,32,34,37,115,34,10,0,0,0,0,92,37,115,0,0,0,0,0,37,115,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,37,115,32,110,111,116,32,112,114,101,115,101,110,116,44,32,117,115,105,110,103,32,37,115,32,105,110,115,116,101,97,100,10,0,0,0,0,116,101,120,116,117,114,101,0,37,100,0,0,0,0,0,0,42,106,97,109,101,115,0,0,115,101,116,0,0,0,0,0,45,45,45,45,45,45,32,73,110,105,116,105,97,108,105,122,105,110,103,32,83,111,117,110,100,32,45,45,45,45,45,45,10,0,0,0,0,0,0,0,43,114,105,103,104,116,0,0,99,108,101,97,114,10,0,0,83,111,117,110,100,32,109,101,109,111,114,121,32,109,97,110,97,103,101,114,32,115,116,97,114,116,101,100,10,0,0,0,99,109,100,108,105,115,116,0,108,105,103,104,116,109,97,112,0,0,0,0,0,0,0,0,114,95,109,97,120,112,111,108,121,115,0,0,0,0,0,0,116,101,97,109,95,104,101,97,100,109,111,100,101,108,0,0,37,53,100,32,115,116,101,114,101,111,10,0,0,0,0,0,100,114,97,119,76,101,110,32,62,61,32,77,65,88,95,83,84,82,73,78,71,95,67,72,65,82,83,0,0,0,0,0,67,77,95,67,108,105,112,72,97,110,100,108,101,84,111,77,111,100,101,108,58,32,98,97,100,32,104,97,110,100,108,101,32,37,105,0,0,0,0,0,101,110,118,105,114,111,110,109,101,110,116,0,0,0,0,0,114,95,115,99,114,101,101,110,115,104,111,116,74,112,101,103,81,117,97,108,105,116,121,0,106,97,109,101,115,0,0,0,103,97,109,101,116,121,112,101,0,0,0,0,0,0,0,0,98,111,116,0,0,0,0,0,85,78,68,79,0,0,0,0,103,108,84,101,120,73,109,97,103,101,50,68,0,0,0,0,115,104,111,119,100,114,111,112,0,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,116,101,120,103,101,110,32,112,97,114,109,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,57,48,0,0,0,0,0,0,116,101,97,109,95,109,111,100,101,108,0,0,0,0,0,0,105,111,113,51,32,49,46,51,54,95,71,73,84,95,52,102,55,100,55,98,102,45,50,48,49,52,45,48,50,45,48,49,0,0,0,0,0,0,0,0,73,109,112,114,111,112,101,114,32,99,97,108,108,32,116,111,32,74,80,69,71,32,108,105,98,114,97,114,121,32,105,110,32,115,116,97,116,101,32,37,100,0,0,0,0,0,0,0,32,32,32,115,110,97,112,115,104,111,116,58,37,105,32,32,100,101,108,116,97,58,37,105,32,32,112,105,110,103,58,37,105,10,0,0,0,0,0,0,114,95,102,117,108,108,115,99,114,101,101,110,0,0,0,0,69,85,82,79,0,0,0,0,100,101,116,97,105,108,0,0,82,95,76,111,97,100,77,68,51,58,32,37,115,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,37,105,32,116,114,105,97,110,103,108,101,115,32,111,110,32,37,115,32,40,37,105,41,46,10,0,0,0,116,99,71,101,110,0,0,0,114,95,97,118,105,77,111,116,105,111,110,74,112,101,103,81,117,97,108,105,116,121,0,0,115,97,114,103,101,0,0,0,115,99,114,101,101,110,115,104,111,116,115,47,115,104,111,116,37,105,37,105,37,105,37,105,46,116,103,97,0,0,0,0,99,97,110,39,116,32,119,114,105,116,101,32,37,100,32,98,105,116,115,0,0,0,0,0,76,65,32,32,32,0,0,0,80,79,87,69,82,0,0,0,67,111,117,108,100,32,110,111,116,32,108,111,97,100,32,116,101,120,116,117,114,101,99,111,108,111,114,32,115,104,97,100,101,114,33,0,0,0,0,0,99,111,100,101,47,114,101,110,100,101,114,101,114,103,108,50,47,116,114,95,102,98,111,46,99,0,0,0,0,0,0,0,103,108,71,101,116,66,117,102,102,101,114,80,111,105,110,116,101,114,118,65,82,66,0,0,115,116,97,116,105,99,87,111,114,108,100,77,101,115,104,95,73,66,79,95,109,101,114,103,101,100,83,117,114,102,115,37,105,0,0,0,0,0,0,0,116,101,120,103,101,110,0,0,114,95,109,97,114,107,115,79,110,84,114,105,97,110,103,108,101,77,101,115,104,101,115,0,50,48,0,0,0,0,0,0,104,101,97,114,116,98,101,97,116,0,0,0,0,0,0,0,83,121,115,95,76,111,97,100,71,97,109,101,68,108,108,40,37,115,41,32,102,97,105,108,101,100,32,116,111,32,102,105,110,100,32,118,109,77,97,105,110,32,102,117,110,99,116,105,111,110,58,10,34,37,115,34,32,33,10,0,0,0,0,0,32,32,70,111,114,109,97,116,58,32,32,32,94,49,85,78,75,78,79,87,78,10,0,0,77,69,78,85,0,0,0,0,105,110,95,97,118,97,105,108,97,98,108,101,74,111,121,115,116,105,99,107,115,0,0,0,60,60,0,0,0,0,0,0,77,105,115,109,97,116,99,104,101,100,32,66,79,84,76,73,66,95,65,80,73,95,86,69,82,83,73,79,78,58,32,101,120,112,101,99,116,101,100,32,37,105,44,32,103,111,116,32,37,105,10,0,0,0,0,0,87,65,82,78,73,78,71,58,32,117,110,107,110,111,119,110,32,97,108,112,104,97,71,101,110,32,112,97,114,97,109,101,116,101,114,32,39,37,115,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,0,0,99,103,95,115,104,97,100,111,119,115,0,0,0,0,0,0,115,110,97,112,115,0,0,0,98,111,116,102,105,108,101,115,0,0,0,0,0,0,0,0,119,101,97,112,111,110,99,111,110,102,105,103,0,0,0,0,56,48,48,0,0,0,0,0,109,97,120,95,108,101,118,101,108,105,116,101,109,115,0,0,115,121,110,111,110,121,109,32,109,117,115,116,32,104,97,118,101,32,97,116,32,108,101,97,115,116,32,116,119,111,32,101,110,116,114,105,101,115,0,0,108,111,97,100,101,100,32,115,107,105,108,108,32,37,100,32,102,114,111,109,32,37,115,10,0,0,0,0,0,0,0,0,46,112,107,51,0,0,0,0,116,97,114,103,101,116,95,116,101,108,101,112,111,114,116,101,114,32,119,105,116,104,111,117,116,32,116,97,114,103,101,116,10,0,0,0,0,0,0,0,112,104,121,115,95,109,97,120,115,116,101,112,0,0,0,0,66,82,69,65,75,0,0,0,37,54,100,32,99,108,117,115,116,101,114,115,32,99,114,101,97,116,101,100,10,0,0,0,94,51,87,97,114,110,105,110,103,58,32,74,117,109,112,32,116,97,98,108,101,32,115,105,122,101,32,111,102,32,37,115,32,110,111,116,32,109,97,116,99,104,105,110,103,32,97,102,116,101,114,32,86,77,95,82,101,115,116,97,114,116,40,41,10,0,0,0,0,0,0,0,68,101,109,111,32,102,105,108,101,32,119,97,115,32,116,114,117,110,99,97,116,101,100,46,10,0,0,0,0,0,0,0,66,73,71,32,73,110,102,111,32,115,116,114,105,110,103,32,108,101,110,103,116,104,32,101,120,99,101,101,100,101,100,10,0,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,114,97,110,103,101,32,112,97,114,97,109,101,116,101,114,32,102,111,114,32,97,108,112,104,97,71,101,110,32,112,111,114,116,97,108,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,44,32,100,101,102,97,117,108,116,105,110,103,32,116,111,32,50,53,54,10,0,114,95,110,111,112,111,114,116,97,108,115,0,0,0,0,0,50,53,48,48,48,0,0,0,83,86,67,95,73,110,102,111,58,32,114,97,116,101,32,108,105,109,105,116,32,101,120,99,101,101,100,101,100,44,32,100,114,111,112,112,105,110,103,32,114,101,113,117,101,115,116,10,0,0,0,0,0,0,0,0,115,118,95,107,101,121,119,111,114,100,115,0,0,0,0,0,67,108,105,101,110,116,32,37,105,32,114,101,106,101,99,116,101,100,32,111,110,32,97,32,116,111,111,32,104,105,103,104,32,112,105,110,103,10,0,0,98,97,110,97,100,100,114,0,98,111,116,95,114,101,108,111,97,100,99,104,97,114,97,99,116,101,114,115,0,0,0,0,115,95,97,108,68,101,118,105,99,101,0,0,0,0,0,0,83,67,82,79,76,76,79,67,75,0,0,0,0,0,0,0,115,95,115,116,111,112,0,0,105,110,118,97,108,105,100,32,99,118,97,114,32,110,97,109,101,32,115,116,114,105,110,103,58,32,37,115,10,0,0,0,115,111,117,110,100,47,102,101,101,100,98,97,99,107,47,104,105,116,46,119,97,118,0,0,87,65,82,78,73,78,71,58,32,78,69,84,95,73,80,54,83,111,99,107,101,116,58,32,105,111,99,116,108,32,70,73,79,78,66,73,79,58,32,37,115,10,0,0,0,0,0,0,108,105,103,104,116,105,110,103,83,112,101,99,117,108,97,114,0,0,0,0,0,0,0,0,114,95,108,111,99,107,112,118,115,0,0,0,0,0,0,0,101,118,101,110,116,80,97,114,109,0,0,0,0,0,0,0,114,97,116,101,0,0,0,0,97,98,0,0,0,0,0,0,70,56,0,0,0,0,0,0,69,83,67,65,80,69,0,0,117,115,97,103,101,58,32,116,111,103,103,108,101,32,60,118,97,114,105,97,98,108,101,62,32,91,118,97,108,117,101,49,44,32,118,97,108,117,101,50,44,32,46,46,46,93,10,0,83,89,83,82,69,81,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,115,32,102,111,114,32,97,108,112,104,97,71,101,110,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,0,0,71,76,95,66,65,67,75,0,85,110,110,97,109,101,100,80,108,97,121,101,114,0,0,0,80,82,73,78,84,0,0,0,119,97,105,116,32,59,32,119,97,105,116,32,59,32,119,97,105,116,32,59,32,119,97,105,116,32,59,32,115,99,114,101,101,110,115,104,111,116,32,108,101,118,101,108,115,104,111,116,10,0,0,0,0,0,0,0,97,108,112,104,97,71,101,110,0,0,0,0,0,0,0,0,114,95,100,114,97,119,66,117,102,102,101,114,0,0,0,0,110,97,109,101,0,0,0,0,83,86,95,66,111,116,70,114,101,101,67,108,105,101,110,116,58,32,98,97,100,32,99,108,105,101,110,116,78,117,109,58,32,37,105,0,0,0,0,0,99,118,97,114,95,114,101,115,116,97,114,116,0,0,0,0,45,108,101,102,116,0,0,0,72,69,76,80,0,0,0,0,99,102,103,0,0,0,0,0,87,65,82,78,73,78,71,58,32,117,110,107,110,111,119,110,32,114,103,98,71,101,110,32,112,97,114,97,109,101,116,101,114,32,39,37,115,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,114,95,111,102,102,115,101,116,117,110,105,116,115,0,0,0,126,32,96,32,48,120,55,101,32,48,120,54,48,0,0,0,77,79,68,69,0,0,0,0,67,77,95,76,111,97,100,77,97,112,58,32,37,115,32,104,97,115,32,119,114,111,110,103,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,32,40,37,105,32,115,104,111,117,108,100,32,98,101,32,37,105,41,0,0,0,0,0,0,0,111,110,101,77,105,110,117,115,86,101,114,116,101,120,0,0,45,49,0,0,0,0,0,0,99,108,95,99,111,110,115,111,108,101,75,101,121,115,0,0,103,97,109,101,0,0,0,0,67,79,77,80,79,83,69,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,0,0,0,0,0,0,108,105,103,104,116,105,110,103,68,105,102,102,117,115,101,0,114,95,111,102,102,115,101,116,102,97,99,116,111,114,0,0,99,108,95,103,117,105,100,83,101,114,118,101,114,85,110,105,113,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,115,99,97,110,32,115,99,114,105,112,116,32,97,116,32,101,110,116,114,121,32,37,100,0,115,97,121,58,0,0,0,0,112,97,99,107,101,116,32,101,110,116,105,116,105,101,115,0,37,100,0,0,0,0,0,0,87,73,78,68,79,87,83,0,116,114,97,110,115,0,0,0,82,95,76,111,97,100,77,68,51,58,32,37,115,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,37,105,32,118,101,114,116,115,32,111,110,32,37,115,32,40,37,105,41,46,10,0,0,0,0,0,0,0,101,120,97,99,116,86,101,114,116,101,120,76,105,116,0,0,114,95,99,108,101,97,114,0,99,108,95,108,97,110,70,111,114,99,101,80,97,99,107,101,116,115,0,0,0,0,0,0,115,99,114,101,101,110,115,104,111,116,115,47,115,104,111,116,57,57,57,57,46,116,103,97,0,0,0,0,0,0,0,0,82,71,66,32,32,0,0,0,87,79,82,76,68,95,57,53,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,99,111,108,111,114,0,0,0,0,45,45,45,45,45,45,45,32,70,66,79,95,73,110,105,116,32,45,45,45,45,45,45,45,10,0,0,0,0,0,0,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,65,82,66,0,0,0,0,0,0,0,42,99,117,98,101,77,97,112,37,100,0,0,0,0,0,0,118,101,114,116,101,120,76,105,116,0,0,0,0,0,0,0,114,95,115,104,111,119,110,111,114,109,97,108,115,0,0,0,56,48,48,0,0,0,0,0,118,109,77,97,105,110,0,0,32,32,70,111,114,109,97,116,58,32,32,32,37,115,10,0,87,79,82,76,68,95,57,52,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,62,62,0,0,0,0,0,0,66,111,116,85,112,100,97,116,101,69,110,116,105,116,121,0,101,120,97,99,116,86,101,114,116,101,120,0,0,0,0,0,114,95,115,104,111,119,115,107,121,0,0,0,0,0,0,0,119,101,105,103,104,116,70,105,108,101,76,105,115,116,32,119,97,115,32,102,117,108,108,32,116,114,121,105,110,103,32,116,111,32,108,111,97,100,32,37,115,10,0,0,0,0,0,0,99,108,95,109,97,120,80,105,110,103,0,0,0,0,0,0,99,111,117,108,100,110,39,116,32,108,111,97,100,32,119,101,97,112,111,110,32,99,111,110,102,105,103,32,37,115,10,0,115,118,95,103,114,97,118,105,116,121,0,0,0,0,0,0,105,116,101,109,32,105,110,102,111,32,37,100,32,34,37,115,34,32,104,97,115,32,110,111,32,102,117,122,122,121,32,119,101,105,103,104,116,13,10,0,93,0,0,0,0,0,0,0,108,111,97,100,101,100,32,99,97,99,104,101,100,32,115,107,105,108,108,32,37,102,32,102,114,111,109,32,37,115,10,0,116,97,114,103,101,116,95,116,101,108,101,112,111,114,116,101,114,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,87,79,82,76,68,95,57,51,0,0,0,0,0,0,0,0,37,54,100,32,112,111,114,116,97,108,115,32,99,114,101,97,116,101,100,10,0,0,0,0,76,111,97,100,105,110,103,32,37,100,32,106,117,109,112,32,116,97,98,108,101,32,116,97,114,103,101,116,115,10,0,0,67,76,95,82,101,97,100,68,101,109,111,77,101,115,115,97,103,101,58,32,100,101,109,111,77,115,103,108,101,110,32,62,32,77,65,88,95,77,83,71,76,69,78,0,0,0,0,0,73,110,102,111,32,115,116,114,105,110,103,32,108,101,110,103,116,104,32,101,120,99,101,101,100,101,100,10,0,0,0,0,118,101,114,116,101,120,0,0,114,95,115,104,111,119,116,114,105,115,0,0,0,0,0,0,99,108,95,109,111,116,100,83,116,114,105,110,103,0,0,0,83,86,67,95,73,110,102,111,58,32,114,97,116,101,32,108,105,109,105,116,32,102,114,111,109,32,37,115,32,101,120,99,101,101,100,101,100,44,32,100,114,111,112,112,105,110,103,32,114,101,113,117,101,115,116,10,0,0,0,0,0,0,0,0,103,95,103,97,109,101,116,121,112,101,0,0,0,0,0,0,112,114,105,110,116,10,83,101,114,118,101,114,32,105,115,32,102,111,114,32,108,111,119,32,112,105,110,103,115,32,111,110,108,121,10,0,0,0,0,0,108,105,115,116,98,97,110,115,0,0,0,0,0,0,0,0,49,48,48,0,0,0,0,0,87,79,82,76,68,95,57,50,0,0,0,0,0,0,0,0,115,95,108,105,115,116,0,0,94,51,87,65,82,78,73,78,71,58,32,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,37,115,32,45,32,117,115,105,110,103,32,100,101,102,97,117,108,116,10,0,0,0,87,65,82,78], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+143364); +/* memory initializer */ allocate([73,78,71,58,32,78,69,84,95,73,80,54,83,111,99,107,101,116,58,32,115,111,99,107,101,116,58,32,37,115,10,0,0,0,0,0,115,95,97,108,80,114,101,99,97,99,104,101,0,0,0,0,111,110,101,77,105,110,117,115,69,110,116,105,116,121,0,0,114,95,110,111,98,105,110,100,0,0,0,0,0,0,0,0,116,111,114,115,111,65,110,105,109,0,0,0,0,0,0,0,106,95,117,112,95,97,120,105,115,0,0,0,0,0,0,0,70,83,95,70,79,112,101,110,70,105,108,101,65,112,112,101,110,100,58,32,37,115,10,0,70,55,0,0,0,0,0,0,67,118,97,114,32,37,115,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,10,0,0,0,0,0,0,0,0,111,112,117,115,0,0,0,0,87,79,82,76,68,95,57,49,0,0,0,0,0,0,0,0,101,110,116,105,116,121,0,0,114,95,100,101,98,117,103,83,117,114,102,97,99,101,0,0,106,95,115,105,100,101,95,97,120,105,115,0,0,0,0,0,119,97,118,0,0,0,0,0,87,79,82,76,68,95,57,48,0,0,0,0,0,0,0,0,99,108,105,101,110,116,76,101,118,101,108,83,104,111,116,0,67,76,95,71,101,116,83,110,97,112,115,104,111,116,58,32,115,110,97,112,115,104,111,116,78,117,109,98,101,114,32,62,32,99,108,46,115,110,97,112,115,104,111,116,46,109,101,115,115,97,103,101,78,117,109,0,105,100,101,110,116,105,116,121,76,105,103,104,116,105,110,103,0,0,0,0,0,0,0,0,114,95,108,111,103,70,105,108,101,0,0,0,0,0,0,0,106,95,102,111,114,119,97,114,100,95,97,120,105,115,0,0,115,97,102,101,0,0,0,0,87,79,82,76,68,95,56,57,0,0,0,0,0,0,0,0,43,108,101,102,116,0,0,0,37,105,32,99,111,109,109,97,110,100,115,10,0,0,0,0,105,100,101,110,116,105,116,121,0,0,0,0,0,0,0,0,114,95,118,101,114,98,111,115,101,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,67,97,110,39,116,32,114,101,97,100,32,115,111,117,110,100,32,102,105,108,101,32,37,115,10,0,0,0,0,0,0,0,87,79,82,76,68,95,56,56,0,0,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,108,111,97,100,32,37,115,0,0,0,0,0,0,0,0,99,111,110,115,116,0,0,0,114,95,115,112,101,101,100,115,0,0,0,0,0,0,0,0,106,95,121,97,119,95,97,120,105,115,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,65,117,100,105,111,32,99,97,112,116,117,114,101,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,119,105,116,104,32,79,112,101,110,65,76,46,32,83,101,116,32,115,95,117,115,101,79,112,101,110,65,76,32,116,111,32,48,32,102,111,114,32,97,117,100,105,111,32,99,97,112,116,117,114,101,10,0,0,109,97,120,112,105,110,103,0,87,79,82,76,68,95,56,55,0,0,0,0,0,0,0,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,115,32,102,111,114,32,114,103,98,71,101,110,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,114,95,115,104,111,119,99,108,117,115,116,101,114,0,0,0,51,0,0,0,0,0,0,0,66,111,103,117,115,32,115,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,0,0,115,97,121,95,116,101,97,109,58,0,0,0,0,0,0,0,114,95,109,111,100,101,0,0,112,108,97,121,101,114,115,116,97,116,101,0,0,0,0,0,45,45,45,45,45,45,45,32,82,95,83,104,117,116,100,111,119,110,86,66,79,115,32,45,45,45,45,45,45,45,10,0,87,79,82,76,68,95,56,54,0,0,0,0,0,0,0,0,111,114,105,103,105,110,0,0,82,95,76,111,97,100,77,68,51,58,32,37,115,32,104,97,115,32,110,111,32,102,114,97,109,101,115,10,0,0,0,0,114,103,98,71,101,110,0,0,114,95,110,111,118,105,115,0,106,95,112,105,116,99,104,95,97,120,105,115,0,0,0,0,77,111,100,101,32,49,49,58,32,56,53,54,120,52,56,48,32,40,119,105,100,101,41,0,76,32,32,32,32,0,0,0,87,79,82,76,68,95,56,53,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,108,111,97,100,32,103,101,110,101,114,105,99,32,115,104,97,100,101,114,33,0,0,45,45,45,32,70,66,79,95,66,105,110,100,32,40,32,78,85,76,76,32,41,32,45,45,45,10,0,0,0,0,0,0,103,108,71,101,116,66,117,102,102,101,114,83,117,98,68,97,116,97,65,82,66,0,0,0,111,114,105,103,105,110,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,111,114,32,103,108,111,115,115,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,114,95,110,111,99,117,108,108,0,0,0,0,0,0,0,0,106,95,117,112,0,0,0,0,100,108,108,69,110,116,114,121,0,0,0,0,0,0,0,0,37,115,58,10,0,0,0,0,87,79,82,76,68,95,56,52,0,0,0,0,0,0,0,0,37,100,32,112,111,115,115,105,98,108,101,32,106,111,121,115,116,105,99,107,115,10,0,0,94,61,0,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,103,108,111,115,115,0,0,0,114,95,105,103,110,111,114,101,0,0,0,0,0,0,0,0,115,119,105,116,99,104,32,119,105,116,104,111,117,116,32,100,101,102,97,117,108,116,0,0,106,95,115,105,100,101,0,0,108,111,97,100,101,100,32,37,115,10,0,0,0,0,0,0,51,50,0,0,0,0,0,0,108,111,97,100,101,100,32,37,115,10,0,0,0,0,0,0,41,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,100,101,102,105,110,105,116,105,111,110,32,37,115,0,0,0,116,114,105,103,103,101,114,95,109,117,108,116,105,112,108,101,32,97,116,32,37,49,46,48,102,32,37,49,46,48,102,32,37,49,46,48,102,32,119,105,116,104,111,117,116,32,116,97,114,103,101,116,10,0,0,0,112,104,121,115,95,115,119,105,109,97,99,99,101,108,101,114,97,116,101,0,0,0,0,0,87,79,82,76,68,95,56,51,0,0,0,0,0,0,0,0,112,111,114,116,97,108,32,37,100,58,32,97,114,101,97,32,37,100,13,10,0,0,0,0,94,51,87,97,114,110,105,110,103,58,32,68,97,116,97,32,114,101,103,105,111,110,32,115,105,122,101,32,111,102,32,37,115,32,110,111,116,32,109,97,116,99,104,105,110,103,32,97,102,116,101,114,32,86,77,95,82,101,115,116,97,114,116,40,41,10,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,111,112,101,110,32,37,115,32,102,111,114,32,119,114,105,116,105,110,103,10,0,0,0,92,37,115,92,37,115,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,111,114,32,115,112,101,99,117,108,97,114,32,101,120,112,111,110,101,110,116,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,0,0,114,95,100,114,97,119,101,110,116,105,116,105,101,115,0,0,117,105,95,115,105,110,103,108,101,80,108,97,121,101,114,65,99,116,105,118,101,0,0,0,45,48,46,50,53,0,0,0,116,105,109,101,108,105,109,105,116,0,0,0,0,0,0,0,108,111,103,102,105,108,101,32,111,112,101,110,101,100,32,111,110,32,37,115,10,0,0,0,67,108,105,101,110,116,32,37,105,32,114,101,106,101,99,116,101,100,32,111,110,32,97,32,116,111,111,32,108,111,119,32,112,105,110,103,10,0,0,0,114,101,104,97,115,104,98,97,110,115,0,0,0,0,0,0,98,111,116,95,116,104,105,110,107,116,105,109,101,0,0,0,115,95,97,108,73,110,112,117,116,68,101,118,105,99,101,0,87,79,82,76,68,95,56,50,0,0,0,0,0,0,0,0,115,116,111,112,109,117,115,105,99,0,0,0,0,0,0,0,67,104,97,110,110,101,108,32,109,101,109,111,114,121,32,109,97,110,97,103,101,114,32,115,116,97,114,116,101,100,10,0,79,112,101,110,105,110,103,32,73,80,54,32,115,111,99,107,101,116,58,32,91,58,58,93,58,37,105,10,0,0,0,0,115,112,101,99,117,108,97,114,101,120,112,111,110,101,110,116,0,0,0,0,0,0,0,0,114,95,110,111,114,101,102,114,101,115,104,0,0,0,0,0,101,84,121,112,101,0,0,0,106,95,102,111,114,119,97,114,100,0,0,0,0,0,0,0,70,83,95,70,79,112,101,110,70,105,108,101,87,114,105,116,101,58,32,37,115,10,0,0,70,54,0,0,0,0,0,0,117,115,97,103,101,58,32,112,114,105,110,116,32,60,118,97,114,105,97,98,108,101,62,10,0,0,0,0,0,0,0,0,87,79,82,76,68,95,56,49,0,0,0,0,0,0,0,0,85,115,97,103,101,58,32,112,108,97,121,32,60,115,111,117,110,100,32,102,105,108,101,110,97,109,101,62,32,91,115,111,117,110,100,32,102,105,108,101,110,97,109,101,93,32,91,115,111,117,110,100,32,102,105,108,101,110,97,109,101,93,32,46,46,46,10,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,111,114,32,115,112,101,99,117,108,97,114,32,114,101,102,108,101,99,116,97,110,99,101,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,53,0,0,0,0,0,0,0,45,48,46,48,50,50,0,0,87,79,82,76,68,95,56,48,0,0,0,0,0,0,0,0,109,97,112,95,114,101,115,116,97,114,116,0,0,0,0,0,115,112,101,99,117,108,97,114,114,101,102,108,101,99,116,97,110,99,101,0,0,0,0,0,114,95,108,111,100,115,99,97,108,101,0,0,0,0,0,0,106,95,121,97,119,0,0,0,67,108,105,101,110,116,32,113,117,105,116,0,0,0,0,0,87,79,82,76,68,95,55,57,0,0,0,0,0,0,0,0,45,109,111,118,101,100,111,119,110,0,0,0,0,0,0,0,82,101,115,116,114,105,99,116,101,100,32,115,111,117,114,99,101,32,116,114,105,101,100,32,116,111,32,114,101,109,111,118,101,32,115,121,115,116,101,109,32,99,111,109,109,97,110,100,32,34,37,115,34,0,0,0,87,65,82,78,73,78,71,58,32,117,110,107,110,111,119,110,32,115,116,97,103,101,32,112,97,114,97,109,101,116,101,114,32,39,37,115,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,114,95,109,101,97,115,117,114,101,79,118,101,114,100,114,97,119,0,0,0,0,0,0,0,106,95,112,105,116,99,104,0,99,111,109,95,115,111,117,110,100,77,101,103,115,0,0,0,87,65,82,78,73,78,71,58,32,67,77,95,71,114,105,100,80,108,97,110,101,32,117,110,114,101,115,111,108,118,97,98,108,101,10,0,0,0,0,0,87,79,82,76,68,95,55,56,0,0,0,0,0,0,0,0,67,77,95,76,111,97,100,77,97,112,40,32,37,115,44,32,37,105,32,41,10,0,0,0,115,112,101,99,117,108,97,114,77,97,112,0,0,0,0,0,114,95,115,107,105,112,66,97,99,107,69,110,100,0,0,0,117,95,80,114,105,109,97,114,121,76,105,103,104,116,82,97,100,105,117,115,0,0,0,0,109,95,102,105,108,116,101,114,0,0,0,0,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,65,117,100,105,111,32,102,111,114,109,97,116,32,111,102,32,37,100,32,98,105,116,47,37,100,32,99,104,97,110,110,101,108,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,109,105,110,112,105,110,103,0,87,79,82,76,68,95,55,55,0,0,0,0,0,0,0,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,0,0,0,0,0,0,0,98,117,109,112,80,97,114,97,108,108,97,120,77,97,112,0,49,53,48,0,0,0,0,0,117,95,80,114,105,109,97,114,121,76,105,103,104,116,65,109,98,105,101,110,116,0,0,0,109,95,115,105,100,101,0,0,73,110,118,97,108,105,100,32,112,114,111,103,114,101,115,115,105,118,101,32,112,97,114,97,109,101,116,101,114,115,32,97,116,32,115,99,97,110,32,115,99,114,105,112,116,32,101,110,116,114,121,32,37,100,0,0,99,111,109,95,97,98,110,111,114,109,97,108,69,120,105,116,0,0,0,0,0,0,0,0,67,76,95,80,97,114,115,101,83,110,97,112,115,104,111,116,58,32,73,110,118,97,108,105,100,32,115,105,122,101,32,37,100,32,102,111,114,32,97,114,101,97,109,97,115,107,0,0,91,115,107,105,112,110,111,116,105,102,121,93,0,0,0,0,116,101,115,115,86,101,114,116,101,120,65,114,114,97,121,95,73,66,79,0,0,0,0,0,84,101,115,116,105,110,103,32,102,97,116,97,108,32,101,114,114,111,114,0,0,0,0,0,67,98,117,102,95,73,110,115,101,114,116,84,101,120,116,32,111,118,101,114,102,108,111,119,101,100,10,0,0,0,0,0,87,79,82,76,68,95,55,54,0,0,0,0,0,0,0,0,110,111,110,115,111,108,105,100,0,0,0,0,0,0,0,0,82,95,76,111,97,100,77,68,51,58,32,37,115,32,104,97,115,32,119,114,111,110,103,32,118,101,114,115,105,111,110,32,40,37,105,32,115,104,111,117,108,100,32,98,101,32,37,105,41,10,0,0,0,0,0,0,110,111,114,109,97,108,80,97,114,97,108,108,97,120,77,97,112,0,0,0,0,0,0,0,114,95,102,108,97,114,101,67,111,101,102,102,0,0,0,0,117,95,80,114,105,109,97,114,121,76,105,103,104,116,67,111,108,111,114,0,0,0,0,0,48,46,50,53,0,0,0,0,77,111,100,101,32,49,48,58,32,50,48,52,56,120,49,53,51,54,0,0,0,0,0,0,82,71,66,65,32,0,0,0,84,101,115,116,105,110,103,32,100,114,111,112,32,101,114,114,111,114,0,0,0,0,0,0,87,79,82,76,68,95,55,53,0,0,0,0,0,0,0,0,103,101,110,101,114,105,99,0,45,45,45,32,70,66,79,95,66,105,110,100,40,32,37,115,32,41,32,45,45,45,10,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,65,82,66,0,0,0,0,0,0,99,108,97,115,115,110,97,109,101,0,0,0,0,0,0,0,98,117,109,112,77,97,112,0,55,0,0,0,0,0,0,0,117,95,80,114,105,109,97,114,121,76,105,103,104,116,79,114,105,103,105,110,0,0,0,0,109,95,102,111,114,119,97,114,100,0,0,0,0,0,0,0,67,77,95,67,104,97,110,103,101,65,114,101,97,80,111,114,116,97,108,83,116,97,116,101,58,32,98,97,100,32,97,114,101,97,32,110,117,109,98,101,114,0,0,0,0,0,0,0,102,114,101,101,122,101,32,60,115,101,99,111,110,100,115,62,10,0,0,0,0,0,0,0,83,121,115,95,76,111,97,100,71,97,109,101,68,108,108,40,37,115,41,32,102,97,105,108,101,100,58,10,34,37,115,34,10,0,0,0,0,0,0,0,83,68,76,32,97,117,100,105,111,32,100,101,118,105,99,101,32,115,104,117,116,32,100,111,119,110,46,10,0,0,0,0,87,79,82,76,68,95,55,52,0,0,0,0,0,0,0,0,83,68,76,95,73,110,105,116,40,83,68,76,95,73,78,73,84,95,74,79,89,83,84,73,67,75,41,32,112,97,115,115,101,100,46,10,0,0,0,0,124,61,0,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,32,77,97,112,32,76,111,97,100,105,110,103,32,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,110,111,114,109,97,108,77,97,112,0,0,0,0,0,0,0,114,95,102,108,97,114,101,70,97,100,101,0,0,0,0,0,125,0,0,0,0,0,0,0,117,95,84,111,110,101,77,105,110,65,118,103,77,97,120,76,105,110,101,97,114,0,0,0,109,95,121,97,119,0,0,0,110,111,32,119,101,97,112,111,110,32,105,110,102,111,32,108,111,97,100,101,100,10,0,0,115,118,95,109,97,120,98,97,114,114,105,101,114,0,0,0,110,111,32,105,116,101,109,32,105,110,102,111,32,108,111,97,100,101,100,10,0,0,0,0,44,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,32,105,110,116,101,103,101,114,44,32,102,108,111,97,116,32,111,114,32,115,116,114,105,110,103,44,32,102,111,117,110,100,32,37,115,0,0,0,0,0,45,45,45,32,67,111,109,109,111,110,32,73,110,105,116,105,97,108,105,122,97,116,105,111,110,32,67,111,109,112,108,101,116,101,32,45,45,45,10,0,116,114,105,103,103,101,114,95,109,117,108,116,105,112,108,101,32,109,111,100,101,108,32,61,32,34,37,115,34,10,0,0,112,104,121,115,95,97,105,114,97,99,99,101,108,101,114,97,116,101,0,0,0,0,0,0,87,79,82,76,68,95,55,51,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,94,51,87,97,114,110,105,110,103,58,32,37,115,32,100,111,101,115,32,110,111,116,32,104,97,118,101,32,97,32,114,101,99,111,103,110,105,115,97,98,108,101,32,109,97,103,105,99,32,110,117,109,98,101,114,32,105,110,32,105,116,115,32,104,101,97,100,101,114,10,0,0,37,115,32,119,114,105,116,116,101,110,10,0,0,0,0,0,94,51,67,97,110,39,116,32,117,115,101,32,107,101,121,115,32,111,114,32,118,97,108,117,101,115,32,119,105,116,104,32,97,32,39,37,99,39,58,32,37,115,32,61,32,37,115,10,0,0,0,0,0,0,0,0,100,105,102,102,117,115,101,77,97,112,0,0,0,0,0,0,52,48,0,0,0,0,0,0,117,95,65,117,116,111,69,120,112,111,115,117,114,101,77,105,110,77,97,120,0,0,0,0,103,95,103,97,109,101,116,121,112,101,0,0,0,0,0,0,48,46,48,50,50,0,0,0,50,48,0,0,0,0,0,0,112,114,105,110,116,10,83,101,114,118,101,114,32,105,115,32,102,111,114,32,104,105,103,104,32,112,105,110,103,115,32,111,110,108,121,10,0,0,0,0,45,45,45,45,45,32,83,111,117,110,100,32,73,110,102,111,32,45,45,45,45,45,10,0,116,101,108,108,0,0,0,0,98,111,116,95,115,97,118,101,114,111,117,116,105,110,103,99,97,99,104,101,0,0,0,0,99,111,109,95,112,105,112,101,102,105,108,101,0,0,0,0,70,114,101,101,87,105,110,100,105,110,103,58,32,102,114,101,101,100,32,97,32,102,114,101,101,100,32,119,105,110,100,105,110,103,0,0,0,0,0,0,108,105,98,111,112,101,110,97,108,46,115,111,46,49,0,0,87,79,82,76,68,95,55,50,0,0,0,0,0,0,0,0,109,117,115,105,99,0,0,0,84,111,116,97,108,32,114,101,115,105,100,101,110,116,58,32,37,105,10,0,0,0,0,0,79,112,101,110,105,110,103,32,73,80,54,32,115,111,99,107,101,116,58,32,37,115,58,37,105,10,0,0,0,0,0,0,115,101,114,118,101,114,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,115,32,102,111,114,32,115,116,97,103,101,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,114,95,102,108,97,114,101,83,105,122,101,0,0,0,0,0,97,110,103,108,101,115,50,91,49,93,0,0,0,0,0,0,117,95,73,110,118,84,101,120,82,101,115,0,0,0,0,0,109,95,112,105,116,99,104,0,70,53,0,0,0,0,0,0,37,102,0,0,0,0,0,0,117,105,95,115,105,110,103,108,101,80,108,97,121,101,114,65,99,116,105,118,101,0,0,0,87,79,82,76,68,95,55,49,0,0,0,0,0,0,0,0,115,116,97,103,101,0,0,0,114,95,112,111,114,116,97,108,79,110,108,121,0,0,0,0,117,95,86,105,101,119,85,112,0,0,0,0,0,0,0,0,99,103,95,97,117,116,111,115,119,105,116,99,104,0,0,0,114,95,117,105,70,117,108,108,83,99,114,101,101,110,0,0,87,79,82,76,68,95,55,48,0,0,0,0,0,0,0,0,99,115,0,0,0,0,0,0,98,108,101,110,100,0,0,0,69,82,82,79,82,58,32,116,111,111,32,109,97,110,121,32,98,101,118,101,108,115,10,0,114,95,108,105,103,104,116,109,97,112,0,0,0,0,0,0,117,95,86,105,101,119,76,101,102,116,0,0,0,0,0,0,55,53,48,0,0,0,0,0,83,101,114,118,101,114,32,113,117,105,116,0,0,0,0,0,99,105,110,101,109,97,116,105,99,32,105,110,116,114,111,46,82,111,81,0,0,0,0,0,87,79,82,76,68,95,54,57,0,0,0,0,0,0,0,0,67,109,100,95,65,100,100,67,111,109,109,97,110,100,58,32,37,115,32,97,108,114,101,97,100,121,32,100,101,102,105,110,101,100,10,0,0,0,0,0,43,109,111,118,101,100,111,119,110,0,0,0,0,0,0,0,102,105,108,116,101,114,0,0,114,95,100,114,97,119,119,111,114,108,100,0,0,0,0,0,117,95,86,105,101,119,70,111,114,119,97,114,100,0,0,0,99,108,95,115,101,114,118,101,114,83,116,97,116,117,115,82,101,115,101,110,100,84,105,109,101,0,0,0,0,0,0,0,110,101,120,116,109,97,112,0,87,79,82,76,68,95,54,56,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,97,100,100,0,0,0,0,0,114,95,110,111,99,117,114,118,101,115,0,0,0,0,0,0,117,95,76,111,99,97,108,86,105,101,119,79,114,105,103,105,110,0,0,0,0,0,0,0,114,95,105,110,71,97,109,101,86,105,100,101,111,0,0,0,79,112,101,110,65,76,0,0,112,105,110,103,0,0,0,0,99,105,110,101,109,97,116,105,99,32,105,100,108,111,103,111,46,82,111,81,10,0,0,0,87,79,82,76,68,95,54,55,0,0,0,0,0,0,0,0,110,97,110,0,0,0,0,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,109,32,102,111,114,32,98,108,101,110,100,70,117,110,99,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,114,95,115,97,118,101,70,111,110,116,68,97,116,97,0,0,117,95,86,105,101,119,79,114,105,103,105,110,0,0,0,0,99,108,95,99,111,110,88,79,102,102,115,101,116,0,0,0,73,110,118,97,108,105,100,32,112,114,111,103,114,101,115,115,105,118,101,32,112,97,114,97,109,101,116,101,114,115,32,83,115,61,37,100,32,83,101,61,37,100,32,65,104,61,37,100,32,65,108,61,37,100,0,0,114,95,99,101,110,116,101,114,87,105,110,100,111,119,0,0,68,101,108,116,97,32,112,97,114,115,101,69,110,116,105,116,105,101,115,78,117,109,32,116,111,111,32,111,108,100,46,10,0,0,0,0,0,0,0,0,116,101,115,115,86,101,114,116,101,120,65,114,114,97,121,95,86,66,79,0,0,0,0,0,65,98,110,111,114,109,97,108,32,69,120,105,116,0,0,0,99,111,110,100,117,109,112,0,77,97,112,32,119,105,116,104,32,110,111,32,115,104,97,100,101,114,115,0,0,0,0,0,87,79,82,76,68,95,54,54,0,0,0,0,0,0,0,0,110,111,100,114,111,112,0,0,82,95,76,111,97,100,77,68,82,58,32,37,115,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,37,105,32,116,114,105,97,110,103,108,101,115,32,111,110,32,37,115,32,40,37,105,41,46,10,0,0,0,98,108,101,110,100,102,117,110,99,0,0,0,0,0,0,0,114,95,112,114,105,110,116,83,104,97,100,101,114,115,0,0,117,95,86,105,101,119,73,110,102,111,0,0,0,0,0,0,99,108,95,97,108,108,111,119,68,111,119,110,108,111,97,100,0,0,0,0,0,0,0,0,77,111,100,101,32,32,57,58,32,49,54,48,48,120,49,50,48,48,0,0,0,0,0,0,83,51,84,67,32,0,0,0,84,104,101,32,108,97,115,116,32,116,105,109,101,32,113,117,97,107,101,106,115,32,114,97,110,44,32,105,116,32,100,105,100,110,39,116,32,101,120,105,116,32,112,114,111,112,101,114,108,121,46,32,84,104,105,115,32,109,97,121,32,98,101,32,100,117,101,32,116,111,32,105,110,97,112,112,114,111,112,114,105,97,116,101,32,118,105,100,101,111,32,115,101,116,116,105,110,103,115,46,32,87,111,117,108,100,32,121,111,117,32,108,105,107,101,32,116,111,32,115,116,97,114,116,32,119,105,116,104,32,34,115,97,102,101,34,32,118,105,100,101,111,32,115,101,116,116,105,110,103,115,63,0,0,0,0,0,0,0,0,87,79,82,76,68,95,54,53,0,0,0,0,0,0,0,0,35,100,101,102,105,110,101,32,82,71,66,77,95,76,73,71,72,84,77,65,80,10,0,0,70,66,79,58,32,97,116,116,101,109,112,116,101,100,32,116,111,32,97,116,116,97,99,104,32,97,32,116,101,120,116,117,114,101,32,105,109,97,103,101,32,119,105,116,104,32,110,111,32,70,66,79,32,98,111,117,110,100,33,10,0,0,0,0,103,108,66,117,102,102,101,114,68,97,116,97,65,82,66,0,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,37,115,32,124,32,37,115,10,0,0,0,0,82,95,80,97,114,115,101,83,112,97,119,110,86,97,114,115,58,32,77,65,88,95,83,80,65,87,78,95,86,65,82,95,67,72,65,82,83,0,0,0,87,65,82,78,73,78,71,58,32,117,110,107,110,111,119,110,32,100,101,112,116,104,102,117,110,99,32,39,37,115,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,114,95,100,101,98,117,103,83,111,114,116,0,0,0,0,0,117,95,77,97,116,101,114,105,97,108,73,110,102,111,0,0,99,108,95,115,104,111,119,109,111,117,115,101,114,97,116,101,0,0,0,0,0,0,0,0,112,114,111,116,111,99,111,108,0,0,0,0,0,0,0,0,76,111,97,100,105,110,103,32,68,76,76,32,102,105,108,101,58,32,37,115,10,0,0,0,67,108,111,115,105,110,103,32,83,68,76,32,97,117,100,105,111,32,100,101,118,105,99,101,46,46,46,10,0,0,0,0,87,79,82,76,68,95,54,52,0,0,0,0,0,0,0,0,83,68,76,95,73,110,105,116,40,83,68,76,95,73,78,73,84,95,74,79,89,83,84,73,67,75,41,32,102,97,105,108,101,100,58,32,37,115,10,0,38,61,0,0,0,0,0,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,0,0,0,0,66,111,116,76,111,97,100,77,97,112,0,0,0,0,0,0,101,113,117,97,108,0,0,0,114,95,100,101,98,117,103,108,105,103,104,116,0,0,0,0,105,110,118,97,108,105,100,32,110,97,109,101,32,37,115,0,117,95,86,101,114,116,101,120,76,101,114,112,0,0,0,0,119,101,97,112,111,110,32,37,115,32,117,115,101,115,32,117,110,100,101,102,105,110,101,100,32,112,114,111,106,101,99,116,105,108,101,32,105,110,32,37,115,10,0,0,0,0,0,0,99,108,95,109,111,117,115,101,65,99,99,101,108,79,102,102,115,101,116,0,0,0,0,0,49,56,0,0,0,0,0,0,117,110,107,110,111,119,110,32,100,101,102,105,110,105,116,105,111,110,32,37,115,0,0,0,101,109,112,116,121,32,115,116,114,105,110,103,0,0,0,0,99,104,97,114,97,99,116,101,114,105,115,116,105,99,32,37,100,32,97,108,114,101,97,100,121,32,105,110,105,116,105,97,108,105,122,101,100,0,0,0,37,115,10,0,0,0,0,0,65,65,83,95,78,101,120,116,65,114,101,97,82,101,97,99,104,97,98,105,108,105,116,121,58,32,114,101,97,99,104,110,117,109,32,60,32,115,101,116,116,105,110,103,115,45,62,102,105,114,115,116,114,101,97,99,104,97,98,108,101,97,114,97,0,0,0,0,0,0,0,0,99,111,109,95,112,114,111,116,111,99,111,108,0,0,0,0,116,114,105,103,103,101,114,95,109,117,108,116,105,112,108,101,0,0,0,0,0,0,0,0,49,48,0,0,0,0,0,0,87,79,82,76,68,95,54,51,0,0,0,0,0,0,0,0,65,65,83,32,115,104,117,116,100,111,119,110,46,10,0,0,13,37,54,100,0,0,0,0,94,51,87,97,114,110,105,110,103,58,32,37,115,32,104,97,115,32,98,97,100,32,104,101,97,100,101,114,10,0,0,0,37,100,10,0,0,0,0,0,73,110,102,111,95,83,101,116,86,97,108,117,101,70,111,114,75,101,121,58,32,111,118,101,114,115,105,122,101,32,105,110,102,111,115,116,114,105,110,103,0,0,0,0,0,0,0,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,0,0,0,0,0,0,0,108,101,113,117,97,108,0,0,114,95,115,104,111,119,73,109,97,103,101,115,0,0,0,0,117,95,84,105,109,101,0,0,68,97,114,107,80,108,97,99,101,115,0,0,0,0,0,0,99,108,95,109,111,117,115,101,65,99,99,101,108,83,116,121,108,101,0,0,0,0,0,0,102,114,97,103,108,105,109,105,116,0,0,0,0,0,0,0,112,114,105,110,116,10,78,111,32,111,114,32,98,97,100,32,99,104,97,108,108,101,110,103,101,32,102,111,114,32,121,111,117,114,32,97,100,100,114,101,115,115,46,10,0,0,0,0,115,97,121,0,0,0,0,0,98,111,116,95,97,97,115,111,112,116,105,109,105,122,101,0,81,117,97,107,101,51,65,114,101,110,97,0,0,0,0,0,115,95,97,108,68,114,105,118,101,114,0,0,0,0,0,0,87,79,82,76,68,95,54,50,0,0,0,0,0,0,0,0,112,108,97,121,0,0,0,0,37,54,105,91,37,115,93,32,58,32,37,115,91,37,115,93,10,0,0,0,0,0,0,0,79,112,101,110,105,110,103,32,73,80,54,32,115,111,99,107,101,116,58,32,91,37,115,93,58,37,105,10,0,0,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,0,0,0,0,0,0,0,99,108,105,101,110,116,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,111,114,32,39,100,101,112,116,104,102,117,110,99,39,32,107,101,121,119,111,114,100,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,78,69,84,95,67,111,109,112,97,114,101,66,97,115,101,65,100,114,58,32,98,97,100,32,97,100,100,114,101,115,115,32,116,121,112,101,10,0,0,0,114,95,109,101,114,103,101,76,101,97,102,83,117,114,102,97,99,101,115,0,0,0,0,0,101,118,101,110,116,0,0,0,117,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,0,0,0,0,0,99,108,95,102,114,101,101,108,111,111,107,0,0,0,0,0,70,83,95,83,86,95,82,101,110,97,109,101,58,32,37,115,32,45,45,62,32,37,115,10,0,0,0,0,0,0,0,0,70,52,0,0,0,0,0,0,37,105,0,0,0,0,0,0,87,79,82,76,68,95,54,49,0,0,0,0,0,0,0,0,99,111,109,95,103,97,109,101,110,97,109,101,0,0,0,0,67,76,95,74,111,121,115,116,105,99,107,69,118,101,110,116,58,32,98,97,100,32,97,120,105,115,32,37,105,0,0,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,0,0,0,0,100,101,112,116,104,102,117,110,99,0,0,0,0,0,0,0,114,95,109,101,114,103,101,77,117,108,116,105,100,114,97,119,115,0,0,0,0,0,0,0,117,95,77,111,100,101,108,77,97,116,114,105,120,0,0,0,99,108,95,109,111,117,115,101,65,99,99,101,108,0,0,0,37,115,0,0,0,0,0,0,118,101,114,115,105,111,110,0,87,79,82,76,68,95,54,48,0,0,0,0,0,0,0,0,116,114,70,77,86,58,58,115,116,111,112,40,41,44,32,99,108,111,115,105,110,103,32,37,115,10,0,0,0,0,0,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,111,114,32,39,97,108,112,104,97,70,117,110,99,39,32,107,101,121,119,111,114,100,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,114,95,97,110,97,103,108,121,112,104,77,111,100,101,0,0,117,95,70,111,103,67,111,108,111,114,77,97,115,107,0,0,53,0,0,0,0,0,0,0,83,101,114,118,101,114,32,102,97,116,97,108,32,99,114,97,115,104,101,100,58,32,37,115,0,0,0,0,0,0,0,0,37,115,32,37,115,32,37,115,0,0,0,0,0,0,0,0,87,79,82,76,68,95,53,57,0,0,0,0,0,0,0,0,10,13,59,0,0,0,0,0,103,108,66,108,101,110,100,67,111,108,111,114,0,0,0,0,97,108,112,104,97,70,117,110,99,0,0,0,0,0,0,0,45,109,111,118,101,117,112,0,114,95,100,105,114,101,99,116,101,100,83,99,97,108,101,0,117,95,70,111,103,69,121,101,84,0,0,0,0,0,0,0,115,101,110,115,105,116,105,118,105,116,121,0,0,0,0,0,87,65,82,78,73,78,71,58,32,67,77,95,83,101,116,66,111,114,100,101,114,73,110,119,97,114,100,58,32,109,105,120,101,100,32,112,108,97,110,101,32,115,105,100,101,115,10,0,99,111,109,95,105,110,116,114,111,112,108,97,121,101,100,0,87,79,82,76,68,95,53,56,0,0,0,0,0,0,0,0,65,82,66,0,0,0,0,0,99,109,95,112,108,97,121,101,114,67,117,114,118,101,67,108,105,112,0,0,0,0,0,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,111,114,32,39,118,105,100,101,111,77,109,97,112,39,32,107,101,121,119,111,114,100,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,48,46,54,0,0,0,0,0,117,95,70,111,103,68,101,112,116,104,0,0,0,0,0,0,115,104,111,119,112,97,99,107,101,116,115,0,0,0,0,0,99,108,95,114,117,110,0,0,115,95,98,97,99,107,101,110,100,0,0,0,0,0,0,0,115,118,95,109,97,120,99,108,105,101,110,116,115,0,0,0,99,111,109,95,98,117,115,121,87,97,105,116,0,0,0,0,116,105,109,101,103,114,97,112,104,0,0,0,0,0,0,0,37,108,100,37,99,0,0,0,87,79,82,76,68,95,53,55,0,0,0,0,0,0,0,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,0,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,0,0,118,105,100,101,111,77,97,112,0,0,0,0,0,0,0,0,114,95,97,109,98,105,101,110,116,83,99,97,108,101,0,0,117,95,70,111,103,68,105,115,116,97,110,99,101,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,74,80,69,71,32,100,97,116,97,32,112,114,101,99,105,115,105,111,110,32,37,100,0,0,0,0,0,0,99,108,95,112,97,99,107,101,116,100,117,112,0,0,0,0,114,95,97,108,108,111,119,82,101,115,105,122,101,0,0,0,68,101,108,116,97,32,102,114,97,109,101,32,116,111,111,32,111,108,100,46,10,0,0,0,45,45,45,45,45,45,45,32,82,95,73,110,105,116,86,66,79,115,32,45,45,45,45,45,45,45,10,0,0,0,0,0,99,111,109,95,97,98,110,111,114,109,97,108,69,120,105,116,0,0,0,0,0,0,0,0,99,108,101,97,114,0,0,0,87,79,82,76,68,95,53,54,0,0,0,0,0,0,0,0,109,111,110,115,116,101,114,99,108,105,112,0,0,0,0,0,97,32,115,117,114,102,97,99,101,0,0,0,0,0,0,0,103,108,67,111,108,111,114,77,97,115,107,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,111,114,32,39,97,110,105,109,77,109,97,112,39,32,107,101,121,119,111,114,100,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,0,51,50,0,0,0,0,0,0,117,95,80,111,114,116,97,108,82,97,110,103,101,0,0,0,51,48,0,0,0,0,0,0,77,111,100,101,32,32,56,58,32,49,50,56,48,120,49,48,50,52,0,0,0,0,0,0,66,80,84,67,32,0,0,0,99,111,109,95,109,97,120,102,112,115,77,105,110,105,109,105,122,101,100,0,0,0,0,0,87,79,82,76,68,95,53,53,0,0,0,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,76,73,71,72,84,77,65,80,10,0,0,0,103,108,73,115,66,117,102,102,101,114,65,82,66,0,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,0,0,0,0,0,0,0,82,95,80,97,114,115,101,83,112,97,119,110,86,97,114,115,58,32,77,65,88,95,83,80,65,87,78,95,86,65,82,83,0,0,0,0,0,0,0,0,97,110,105,109,77,97,112,0,114,95,114,97,105,108,83,101,103,109,101,110,116,76,101,110,103,116,104,0,0,0,0,0,117,95,68,105,114,101,99,116,101,100,76,105,103,104,116,0,99,108,95,109,97,120,112,97,99,107,101,116,115,0,0,0,65,76,73,71,78,95,84,89,80,69,32,105,115,32,119,114,111,110,103,44,32,112,108,101,97,115,101,32,102,105,120,0,99,111,109,95,109,105,110,105,109,105,122,101,100,0,0,0,83,68,76,32,97,117,100,105,111,32,105,110,105,116,105,97,108,105,122,101,100,46,10,0,87,79,82,76,68,95,53,52,0,0,0,0,0,0,0,0,67,97,108,108,105,110,103,32,83,68,76,95,73,110,105,116,40,83,68,76,95,73,78,73,84,95,74,79,89,83,84,73,67,75,41,46,46,46,10,0,45,45,0,0,0,0,0,0,103,108,83,99,105,115,115,111,114,0,0,0,0,0,0,0,66,111,116,83,116,97,114,116,70,114,97,109,101,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,111,114,32,39,99,108,97,109,112,109,97,112,39,32,107,101,121,119,111,114,100,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,115,119,105,116,99,104,0,0,117,95,65,109,98,105,101,110,116,76,105,103,104,116,0,0,119,101,97,112,111,110,32,37,115,32,104,97,115,32,110,111,32,112,114,111,106,101,99,116,105,108,101,32,105,110,32,37,115,10,0,0,0,0,0,0,49,46,53,0,0,0,0,0,115,118,95,115,116,101,112,0,109,111,114,101,32,116,104,97,110,32,37,100,32,105,116,101,109,32,105,110,102,111,32,100,101,102,105,110,101,100,0,0,40,0,0,0,0,0,0,0,99,104,97,114,97,99,116,101,114,105,115,116,105,99,32,105,110,100,101,120,32,111,117,116,32,111,102,32,114,97,110,103,101,32,91,48,44,32,37,100,93,0,0,0,0,0,0,0,65,65,83,95,78,101,120,116,65,114,101,97,82,101,97,99,104,97,98,105,108,105,116,121,58,32,97,114,101,97,110,117,109,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,0,99,111,109,95,109,97,120,102,112,115,85,110,102,111,99,117,115,101,100,0,0,0,0,0,110,101,120,116,109,97,112,0,98,111,116,95,110,111,116,116,101,97,109,0,0,0,0,0,112,104,121,115,95,119,97,108,107,97,99,99,101,108,101,114,97,116,101,0,0,0,0,0,87,79,82,76,68,95,53,51,0,0,0,0,0,0,0,0,49,48,50,52,0,0,0,0,13,37,54,100,32,114,101,109,111,118,101,100,32,112,111,114,116,97,108,32,97,114,101,97,115,0,0,0,0,0,0,0,46,46,46,119,104,105,99,104,32,104,97,115,32,118,109,77,97,103,105,99,32,86,77,95,77,65,71,73,67,95,86,69,82,50,10,0,0,0,0,0,35,32,37,115,0,0,0,0,92,59,34,0,0,0,0,0,103,108,67,108,101,97,114,67,111,108,111,114,0,0,0,0,99,108,97,109,112,109,97,112,0,0,0,0,0,0,0,0,114,95,114,97,105,108,67,111,114,101,87,105,100,116,104,0,117,95,76,105,103,104,116,82,97,100,105,117,115,0,0,0,104,101,97,114,116,98,101,97,116,32,37,115,10,0,0,0,99,108,95,97,110,103,108,101,115,112,101,101,100,107,101,121,0,0,0,0,0,0,0,0,100,109,102,108,97,103,115,0,105,112,0,0,0,0,0,0,69,115,116,105,109,97,116,101,100,32,100,105,115,112,108,97,121,32,97,115,112,101,99,116,58,32,37,46,51,102,10,0,107,105,108,108,115,101,114,118,101,114,0,0,0,0,0,0,98,111,116,95,102,111,114,99,101,119,114,105,116,101,0,0,99,111,109,95,117,110,102,111,99,117,115,101,100,0,0,0,99,108,117,115,116,101,114,58,37,105,32,32,97,114,101,97,58,37,105,10,0,0,0,0,53,49,50,0,0,0,0,0,87,79,82,76,68,95,53,50,0,0,0,0,0,0,0,0,83,111,117,110,100,32,100,105,115,97,98,108,101,100,46,10,0,0,0,0,0,0,0,0,114,101,115,105,100,101,110,116,32,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,78,69,84,95,73,80,83,111,99,107,101,116,58,32,98,105,110,100,58,32,37,115,10,0,0,0,0,0,0,0,0,103,108,86,105,101,119,112,111,114,116,0,0,0,0,0,0,108,111,99,97,108,104,111,115,116,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,82,95,70,105,110,100,73,109,97,103,101,70,105,108,101,32,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,39,37,115,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,49,54,0,0,0,0,0,0,82,95,67,114,101,97,116,101,86,66,79,58,32,34,37,115,34,32,105,115,32,116,111,111,32,108,111,110,103,0,0,0,97,112,111,115,46,116,114,66,97,115,101,91,48,93,0,0,117,95,77,111,100,101,108,76,105,103,104,116,68,105,114,0,99,108,95,112,105,116,99,104,115,112,101,101,100,0,0,0,82,66,95,67,104,101,99,107,79,118,101,114,102,108,111,119,58,32,105,110,100,105,99,101,115,32,62,32,77,65,88,32,40,37,100,32,62,32,37,100,41,0,0,0,0,0,0,0,70,83,95,83,86,95,70,79,112,101,110,70,105,108,101,82,101,97,100,32,40,102,115,95,98,97,115,101,112,97,116,104,41,58,32,37,115,10,0,0,83,72,65,68,69,82,95,77,65,88,95,73,78,68,69,88,69,83,32,104,105,116,32,105,110,32,68,114,97,119,83,107,121,83,105,100], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+153604); +/* memory initializer */ allocate([101,86,66,79,40,41,0,0,0,0,0,0,70,51,0,0,0,0,0,0,82,101,115,116,114,105,99,116,101,100,32,115,111,117,114,99,101,32,116,114,105,101,100,32,116,111,32,109,111,100,105,102,121,32,34,37,115,34,0,0,99,111,109,95,97,110,115,105,67,111,108,111,114,0,0,0,87,79,82,76,68,95,53,49,0,0,0,0,0,0,0,0,103,108,83,116,101,110,99,105,108,79,112,0,0,0,0,0,87,65,82,78,73,78,71,58,32,115,104,97,100,101,114,32,39,37,115,39,32,119,97,110,116,115,32,97,32,100,101,108,117,120,101,32,109,97,112,32,105,110,32,97,32,109,97,112,32,99,111,109,112,105,108,101,100,32,119,105,116,104,111,117,116,32,116,104,101,109,10,0,114,95,114,97,105,108,87,105,100,116,104,0,0,0,0,0,117,95,76,105,103,104,116,79,114,105,103,105,110,0,0,0,115,118,99,95,110,111,112,0,49,52,48,0,0,0,0,0,99,111,109,95,98,117,105,108,100,83,99,114,105,112,116,0,87,79,82,76,68,95,53,48,0,0,0,0,0,0,0,0,98,99,115,50,0,0,0,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,0,0,36,100,101,108,117,120,101,109,97,112,0,0,0,0,0,0,114,95,102,97,99,101,80,108,97,110,101,67,117,108,108,0,117,95,76,105,103,104,116,82,105,103,104,116,0,0,0,0,99,108,95,121,97,119,115,112,101,101,100,0,0,0,0,0,67,108,105,101,110,116,32,102,97,116,97,108,32,99,114,97,115,104,101,100,58,32,37,115,0,0,0,0,0,0,0,0,99,108,95,114,117,110,110,105,110,103,0,0,0,0,0,0,87,79,82,76,68,95,52,57,0,0,0,0,0,0,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,0,0,0,0,0,0,0,36,108,105,103,104,116,109,97,112,0,0,0,0,0,0,0,114,95,103,97,109,109,97,0,117,95,76,105,103,104,116,85,112,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,82,95,82,101,109,97,112,83,104,97,100,101,114,58,32,110,101,119,32,115,104,97,100,101,114,32,37,115,32,110,111,116,32,102,111,117,110,100,10,0,0,0,0,0,0,0,0,43,109,111,118,101,117,112,0,114,99,111,110,65,100,100,114,101,115,115,0,0,0,0,0,65,117,116,111,115,112,114,105,116,101,50,32,115,104,97,100,101,114,32,37,115,32,104,97,100,32,111,100,100,32,105,110,100,101,120,32,99,111,117,110,116,10,0,0,0,0,0,0,82,66,95,69,110,100,83,117,114,102,97,99,101,40,41,32,45,32,83,72,65,68,69,82,95,77,65,88,95,73,78,68,69,88,69,83,32,104,105,116,0,0,0,0,0,0,0,0,115,118,95,114,117,110,110,105,110,103,0,0,0,0,0,0,67,77,95,83,101,116,66,111,114,100,101,114,73,110,119,97,114,100,58,32,98,97,100,32,112,97,114,97,109,101,116,101,114,0,0,0,0,0,0,0,87,79,82,76,68,95,52,56,0,0,0,0,0,0,0,0,82,69,95,65,100,100,82,101,102,69,110,116,105,116,121,84,111,83,99,101,110,101,58,32,68,114,111,112,112,105,110,103,32,114,101,102,69,110,116,105,116,121,44,32,114,101,97,99,104,101,100,32,77,65,88,95,82,69,70,69,78,84,73,84,73,69,83,10,0,0,0,0,99,109,95,110,111,67,117,114,118,101,115,0,0,0,0,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,82,95,76,111,97,100,73,81,77,58,32,37,115,32,105,115,32,97,32,117,110,115,117,112,112,111,114,116,101,100,32,73,81,77,32,118,101,114,115,105,111,110,32,40,37,100,41,44,32,111,110,108,121,32,118,101,114,115,105,111,110,32,37,100,32,105,115,32,115,117,112,112,111,114,116,101,100,46,10,0,36,119,104,105,116,101,105,109,97,103,101,0,0,0,0,0,114,95,115,119,97,112,73,110,116,101,114,118,97,108,0,0,117,95,76,105,103,104,116,70,111,114,119,97,114,100,0,0,99,108,95,102,111,114,99,101,97,118,105,100,101,109,111,0,115,95,105,110,105,116,115,111,117,110,100,0,0,0,0,0,37,115,46,37,115,0,0,0,37,105,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,110,111,32,115,104,97,100,101,114,32,102,111,114,32,115,117,114,102,97,99,101,32,37,115,32,105,110,32,115,107,105,110,32,37,115,10,0,0,0,115,118,95,112,97,99,107,101,116,100,101,108,97,121,0,0,87,79,82,76,68,95,52,55,0,0,0,0,0,0,0,0,83,104,97,100,101,114,32,39,37,115,39,119,105,116,104,32,115,111,114,116,32,61,61,32,83,83,95,66,65,68,0,0,103,108,71,101,116,70,108,111,97,116,118,0,0,0,0,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,111,114,32,39,109,97,112,39,32,107,101,121,119,111,114,100,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,71,76,95,76,73,78,69,65,82,95,77,73,80,77,65,80,95,78,69,65,82,69,83,84,0,0,0,0,0,0,0,0,117,95,68,108,105,103,104,116,73,110,102,111,0,0,0,0,73,110,118,97,108,105,100,32,109,101,109,111,114,121,32,112,111,111,108,32,99,111,100,101,32,37,100,0,0,0,0,0,99,108,95,97,118,105,77,111,116,105,111,110,74,112,101,103,0,0,0,0,0,0,0,0,68,101,108,116,97,32,102,114,111,109,32,105,110,118,97,108,105,100,32,102,114,97,109,101,32,40,110,111,116,32,115,117,112,112,111,115,101,100,32,116,111,32,104,97,112,112,101,110,33,41,46,10,0,0,0,0,45,45,45,32,82,95,66,105,110,100,78,117,108,108,73,66,79,32,45,45,45,10,0,0,99,108,95,112,97,99,107,101,116,100,101,108,97,121,0,0,87,79,82,76,68,95,52,54,0,0,0,0,0,0,0,0,109,101,115,115,97,103,101,109,111,100,101,52,0,0,0,0,112,108,97,121,101,114,99,108,105,112,0,0,0,0,0,0,82,95,76,111,97,100,77,68,82,58,32,37,115,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,37,105,32,118,101,114,116,115,32,111,110,32,37,115,32,40,37,105,41,46,10,0,0,0,0,0,0,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,0,0,0,0,0,0,0,109,97,112,0,0,0,0,0,114,95,116,101,120,116,117,114,101,77,111,100,101,0,0,0,117,95,86,101,114,116,67,111,108,111,114,0,0,0,0,0,50,53,0,0,0,0,0,0,77,111,100,101,32,32,55,58,32,49,49,53,50,120,56,54,52,0,0,0,0,0,0,0,68,88,84,53,32,0,0,0,115,118,95,112,97,117,115,101,100,0,0,0,0,0,0,0,87,79,82,76,68,95,52,53,0,0,0,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,82,71,66,65,71,69,78,10,0,0,0,0,82,95,65,116,116,97,99,104,70,66,79,84,101,120,116,117,114,101,50,68,58,32,105,110,118,97,108,105,100,32,97,116,116,97,99,104,109,101,110,116,32,105,110,100,101,120,32,37,105,10,0,0,0,0,0,0,103,108,71,101,110,66,117,102,102,101,114,115,65,82,66,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,0,0,0,0,0,0,0,82,95,80,97,114,115,101,83,112,97,119,110,86,97,114,115,58,32,99,108,111,115,105,110,103,32,98,114,97,99,101,32,119,105,116,104,111,117,116,32,100,97,116,97,0,0,0,0,87,65,82,78,73,78,71,58,32,110,111,32,109,97,116,99,104,105,110,103,32,39,125,39,32,102,111,117,110,100,10,0,114,95,102,105,110,105,115,104,0,0,0,0,0,0,0,0,117,95,66,97,115,101,67,111,108,111,114,0,0,0,0,0,99,108,95,97,118,105,70,114,97,109,101,82,97,116,101,0,99,108,95,112,97,117,115,101,100,0,0,0,0,0,0,0,83,116,97,114,116,105,110,103,32,83,68,76,32,97,117,100,105,111,32,99,97,108,108,98,97,99,107,46,46,46,10,0,87,79,82,76,68,95,52,52,0,0,0,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,43,43,0,0,0,0,0,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,66,111,116,76,105,98,83,104,117,116,100,111,119,110,0,0,87,65,82,78,73,78,71,58,32,105,110,118,97,108,105,100,32,103,101,110,102,117,110,99,32,110,97,109,101,32,39,37,115,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,114,95,100,108,105,103,104,116,66,97,99,107,115,0,0,0,114,101,116,117,114,110,0,0,117,95,67,111,108,111,114,0,119,101,97,112,111,110,32,37,100,32,104,97,115,32,110,111,32,110,97,109,101,32,105,110,32,37,115,10,0,0,0,0,40,108,97,115,116,41,32,116,114,97,118,101,108,32,116,121,112,101,32,37,100,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,10,0,0,0,0,0,0,99,108,95,97,117,116,111,82,101,99,111,114,100,68,101,109,111,0,0,0,0,0,0,0,105,116,101,109,105,110,102,111,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,32,105,110,116,101,103,101,114,32,105,110,100,101,120,44,32,102,111,117,110,100,32,37,115,0,0,0,0,0,0,0,0,65,65,83,95,65,114,101,97,84,114,97,118,101,108,84,105,109,101,84,111,71,111,97,108,65,114,101,97,58,32,103,111,97,108,97,114,101,97,110,117,109,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,0,0,99,111,109,95,99,97,109,101,114,97,77,111,100,101,0,0,65,65,83,95,65,114,101,97,82,101,97,99,104,97,98,105,108,105,116,121,58,32,97,114,101,97,110,117,109,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,49,53,48,0,0,0,0,0,102,105,110,105,115,104,101,100,32,99,105,110,101,109,97,116,105,99,10,0,0,0,0,0,87,79,82,76,68,95,52,51,0,0,0,0,0,0,0,0,109,97,120,101,110,116,105,116,105,101,115,0,0,0,0,0,102,111,114,99,101,114,101,97,99,104,97,98,105,108,105,116,121,0,0,0,0,0,0,0,94,51,87,97,114,110,105,110,103,58,32,67,111,117,108,100,110,39,116,32,111,112,101,110,32,86,77,32,102,105,108,101,32,37,115,10,0,0,0,0,73,110,102,111,95,82,101,109,111,118,101,75,101,121,95,66,105,103,58,32,111,118,101,114,115,105,122,101,32,105,110,102,111,115,116,114,105,110,103,0,37,115,0,0,0,0,0,0,103,108,72,105,110,116,0,0,110,111,105,115,101,0,0,0,114,95,100,121,110,97,109,105,99,108,105,103,104,116,0,0,117,95,65,108,112,104,97,84,101,115,116,0,0,0,0,0,83,101,110,100,105,110,103,32,104,101,97,114,116,98,101,97,116,32,116,111,32,37,115,10,0,0,0,0,0,0,0,0,71,76,95,73,78,86,65,76,73,68,95,86,65,76,85,69,0,0,0,0,0,0,0,0,99,108,95,116,105,109,101,100,101,109,111,76,111,103,0,0,109,97,112,110,97,109,101,0,66,97,100,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,112,99,120,32,102,105,108,101,32,37,115,32,40,37,100,120,37,100,64,37,100,41,10,0,0,0,0,0,0,112,114,105,110,116,10,85,115,101,114,105,110,102,111,32,115,116,114,105,110,103,32,108,101,110,103,116,104,32,101,120,99,101,101,100,101,100,46,32,32,84,114,121,32,114,101,109,111,118,105,110,103,32,115,101,116,117,32,99,118,97,114,115,32,102,114,111,109,32,121,111,117,114,32,99,111,110,102,105,103,46,10,0,0,0,0,0,0,76,111,97,100,84,71,65,58,32,79,110,108,121,32,116,121,112,101,32,50,32,40,82,71,66,41,44,32,51,32,40,103,114,97,121,41,44,32,97,110,100,32,49,48,32,40,82,71,66,41,32,84,71,65,32,105,109,97,103,101,115,32,115,117,112,112,111,114,116,101,100,0,115,112,100,101,118,109,97,112,0,0,0,0,0,0,0,0,98,111,116,95,102,111,114,99,101,114,101,97,99,104,97,98,105,108,105,116,121,0,0,0,116,105,109,101,100,101,109,111,0,0,0,0,0,0,0,0,76,111,97,100,66,77,80,58,32,105,110,118,97,108,105,100,32,111,102,102,115,101,116,32,118,97,108,117,101,32,105,110,32,104,101,97,100,101,114,32,40,37,115,41,0,0,0,0,77,83,71,95,67,111,112,121,58,32,99,97,110,39,116,32,99,111,112,121,32,105,110,116,111,32,97,32,115,109,97,108,108,101,114,32,109,115,103,95,116,32,98,117,102,102,101,114,0,0,0,0,0,0,0,0,79,117,116,112,117,116,32,98,117,102,102,101,114,32,102,111,114,32,101,110,99,111,100,101,100,32,74,80,69,71,32,105,109,97,103,101,32,104,97,115,32,105,110,115,117,102,102,105,99,105,101,110,116,32,115,105,122,101,32,111,102,32,37,100,32,98,121,116,101,115,0,0,115,95,97,108,71,114,97,99,101,68,105,115,116,97,110,99,101,0,0,0,0,0,0,0,37,115,58,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,10,0,87,79,82,76,68,95,52,50,0,0,0,0,0,0,0,0,115,95,105,110,105,116,115,111,117,110,100,0,0,0,0,0,112,97,103,101,100,32,111,117,116,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,78,69,84,95,73,80,83,111,99,107,101,116,58,32,115,101,116,115,111,99,107,111,112,116,32,83,79,95,66,82,79,65,68,67,65,83,84,58,32,37,115,10,0,0,0,0,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,0,0,115,101,110,100,32,112,97,99,107,101,116,32,37,52,105,10,0,0,0,0,0,0,0,0,105,110,118,101,114,115,101,115,97,119,116,111,111,116,104,0,114,95,100,114,97,119,83,117,110,0,0,0,0,0,0,0,112,111,115,46,116,114,68,101,108,116,97,91,50,93,0,0,117,95,65,108,112,104,97,71,101,110,0,0,0,0,0,0,116,105,109,101,100,101,109,111,0,0,0,0,0,0,0,0,70,83,95,83,86,95,70,79,112,101,110,70,105,108,101,82,101,97,100,32,40,102,115,95,104,111,109,101,112,97,116,104,41,58,32,37,115,10,0,0,70,50,0,0,0,0,0,0,82,101,115,116,114,105,99,116,101,100,32,115,111,117,114,99,101,32,116,114,105,101,100,32,116,111,32,115,101,116,32,34,37,115,34,32,116,111,32,34,37,115,34,0,0,0,0,0,99,111,109,95,115,112,101,101,100,115,0,0,0,0,0,0,71,76,95,76,73,78,69,65,82,0,0,0,0,0,0,0,87,79,82,76,68,95,52,49,0,0,0,0,0,0,0,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,0,0,115,97,119,116,111,111,116,104,0,0,0,0,0,0,0,0,114,95,105,110,71,97,109,101,86,105,100,101,111,0,0,0,117,95,67,111,108,111,114,71,101,110,0,0,0,0,0,0,97,99,116,105,118,101,65,99,116,105,111,110,0,0,0,0,99,111,109,95,115,104,111,119,116,114,97,99,101,0,0,0,87,79,82,76,68,95,52,48,0,0,0,0,0,0,0,0,98,99,115,32,101,120,99,101,101,100,101,100,32,66,73,71,95,73,78,70,79,95,83,84,82,73,78,71,0,0,0,0,103,108,68,101,112,116,104,82,97,110,103,101,0,0,0,0,116,114,105,97,110,103,108,101,0,0,0,0,0,0,0,0,114,95,102,97,115,116,115,107,121,0,0,0,0,0,0,0,117,95,68,101,102,111,114,109,80,97,114,97,109,115,0,0,114,99,111,110,80,97,115,115,119,111,114,100,0,0,0,0,83,101,114,118,101,114,32,100,105,100,110,39,116,32,104,97,118,101,32,67,68,10,0,0,102,105,120,101,100,116,105,109,101,0,0,0,0,0,0,0,71,76,83,76,95,83,101,116,85,110,105,102,111,114,109,73,110,116,58,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,117,110,105,102,111,114,109,32,37,105,32,105,110,32,112,114,111,103,114,97,109,32,37,115,10,0,0,0,0,82,69,95,82,101,103,105,115,116,101,114,70,111,110,116,58,32,84,111,111,32,109,97,110,121,32,102,111,110,116,115,32,114,101,103,105,115,116,101,114,101,100,32,97,108,114,101,97,100,121,46,10,0,0,0,0,87,79,82,76,68,95,51,57,0,0,0,0,0,0,0,0,37,115,10,0,0,0,0,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,115,113,117,97,114,101,0,0,114,95,105,103,110,111,114,101,71,76,69,114,114,111,114,115,0,0,0,0,0,0,0,0,117,95,68,101,102,111,114,109,71,101,110,0,0,0,0,0,82,95,67,104,101,99,107,70,66,79,58,32,40,37,115,41,32,70,114,97,109,101,98,117,102,102,101,114,32,105,110,99,111,109,112,108,101,116,101,32,97,116,116,97,99,104,109,101,110,116,10,0,0,0,0,0,99,108,95,102,114,101,101,122,101,68,101,109,111,0,0,0,99,101,110,116,101,114,118,105,101,119,0,0,0,0,0,0,116,105,109,101,115,99,97,108,101,0,0,0,0,0,0,0,77,65,88,95,70,65,67,69,84,83,0,0,0,0,0,0,87,79,82,76,68,95,51,56,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,103,108,66,108,101,110,100,70,117,110,99,0,0,0,0,0,115,105,110,0,0,0,0,0,114,95,115,116,101,114,101,111,83,101,112,97,114,97,116,105,111,110,0,0,0,0,0,0,117,95,84,67,71,101,110,48,86,101,99,116,111,114,49,0,99,108,95,115,104,111,119,84,105,109,101,68,101,108,116,97,0,0,0,0,0,0,0,0,46,46,46,117,115,105,110,103,32,37,115,10,0,0,0,0,94,51,87,65,82,78,73,78,71,58,32,99,108,95,97,118,105,70,114,97,109,101,82,97,116,101,32,105,115,32,110,111,116,32,97,32,100,105,118,105,115,111,114,32,111,102,32,116,104,101,32,97,117,100,105,111,32,114,97,116,101,44,32,115,117,103,103,101,115,116,32,37,100,10,0,0,0,0,0,0,99,108,105,101,110,116,115,0,99,111,109,95,98,108,111,111,100,0,0,0,0,0,0,0,40,112,97,116,99,104,41,32,37,105,32,115,105,110,32,37,105,32,115,99,108,105,112,32,32,37,105,32,115,111,117,116,32,37,105,32,98,105,110,32,37,105,32,98,99,108,105,112,32,37,105,32,98,111,117,116,10,0,0,0,0,0,0,0,87,79,82,76,68,95,51,55,0,0,0,0,0,0,0,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,0,0,103,108,73,115,69,110,97,98,108,101,100,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,119,97,118,101,102,111,114,109,32,112,97,114,109,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,54,52,0,0,0,0,0,0,117,95,84,67,71,101,110,48,86,101,99,116,111,114,48,0,87,65,82,78,73,78,71,58,32,108,105,103,104,116,32,103,114,105,100,32,109,105,115,109,97,116,99,104,10,0,0,0,83,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,105,110,116,101,114,108,101,97,118,101,100,32,115,99,97,110,0,99,108,95,115,104,111,119,83,101,110,100,0,0,0,0,0,71,76,95,83,101,108,101,99,116,84,101,120,116,117,114,101,58,32,117,110,105,116,32,61,32,37,105,0,0,0,0,0,114,95,115,100,108,68,114,105,118,101,114,0,0,0,0,0,37,51,105,58,32,32,98,97,115,101,108,105,110,101,58,32,37,105,10,0,0,0,0,0,45,45,45,32,82,95,66,105,110,100,73,66,79,40,32,37,115,32,41,32,45,45,45,10,0,0,0,0,0,0,0,0,56,53,0,0,0,0,0,0,87,79,82,76,68,95,51,54,0,0,0,0,0,0,0,0,105,110,99,111,114,114,101,99,116,32,104,101,97,100,101,114,32,99,104,101,99,107,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,99,111,100,101,0,0,0,108,97,118,97,0,0,0,0,109,101,115,115,97,103,101,109,111,100,101,51,0,0,0,0,82,95,76,111,97,100,77,68,82,58,32,37,115,32,104,97,115,32,110,111,32,102,114,97,109,101,115,10,0,0,0,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,87,65,82,78,73,78,71,58,32,117,110,107,110,111,119,110,32,100,101,102,111,114,109,86,101,114,116,101,120,101,115,32,115,117,98,116,121,112,101,32,39,37,115,39,32,102,111,117,110,100,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,114,95,122,112,114,111,106,0,117,95,84,67,71,101,110,48,0,0,0,0,0,0,0,0,79,112,117,115,84,97,103,115,0,0,0,0,0,0,0,0,99,108,95,115,104,111,119,110,101,116,0,0,0,0,0,0,77,111,100,101,32,32,54,58,32,49,48,50,52,120,55,54,56,0,0,0,0,0,0,0,87,79,82,76,68,95,51,53,0,0,0,0,0,0,0,0,68,88,84,49,32,0,0,0,99,111,109,95,109,97,120,102,112,115,0,0,0,0,0,0,46,116,120,116,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,70,79,71,10,0,0,0,0,0,0,0,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,65,82,66,0,0,0,0,0,0,82,69,95,66,101,103,105,110,70,114,97,109,101,40,41,32,45,32,103,108,71,101,116,69,114,114,111,114,40,41,32,102,97,105,108,101,100,32,40,48,120,37,120,41,33,0,0,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,82,95,80,97,114,115,101,83,112,97,119,110,86,97,114,115,58,32,69,79,70,32,119,105,116,104,111,117,116,32,99,108,111,115,105,110,103,32,98,114,97,99,101,0,0,0,0,0,105,110,99,111,114,114,101,99,116,32,100,97,116,97,32,99,104,101,99,107,0,0,0,0,109,111,118,101,0,0,0,0,114,95,122,110,101,97,114,0,117,95,84,101,120,116,117,114,101,49,69,110,118,0,0,0,99,108,95,116,105,109,101,78,117,100,103,101,0,0,0,0,49,0,0,0,0,0,0,0,83,68,76,95,65,117,100,105,111,83,112,101,99,0,0,0,87,79,82,76,68,95,51,52,0,0,0,0,0,0,0,0,99,111,109,95,109,105,110,105,109,105,122,101,100,0,0,0,45,61,0,0,0,0,0,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,49,48,50,52,0,0,0,0,110,111,114,109,97,108,0,0,114,95,102,108,97,114,101,115,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,117,95,68,105,102,102,117,115,101,84,101,120,79,102,102,84,117,114,98,0,0,0,0,0,117,110,107,110,111,119,110,32,100,101,102,105,110,105,116,105,111,110,32,37,115,32,105,110,32,37,115,10,0,0,0,0,99,108,105,101,110,116,32,37,100,32,100,105,100,110,39,116,32,102,105,110,100,32,106,117,109,112,112,97,100,32,114,101,97,99,104,97,98,105,108,105,116,121,10,0,0,0,0,0,50,48,48,0,0,0,0,0,99,111,117,110,108,100,110,39,116,32,108,111,97,100,32,37,115,10,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,125,0,0,0,0,0,0,125,0,0,0,0,0,0,0,65,65,83,95,65,114,101,97,84,114,97,118,101,108,84,105,109,101,84,111,71,111,97,108,65,114,101,97,58,32,97,114,101,97,110,117,109,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,103,97,109,101,95,114,101,115,116,97,114,116,0,0,0,0,65,65,83,95,77,65,88,95,82,69,65,67,72,65,66,73,76,73,84,89,83,73,90,69,10,0,0,0,0,0,0,0,112,104,121,115,95,109,97,120,115,119,105,109,118,101,108,111,99,105,116,121,0,0,0,0,87,79,82,76,68,95,51,51,0,0,0,0,0,0,0,0,49,50,56,0,0,0,0,0,102,111,114,99,101,99,108,117,115,116,101,114,105,110,103,0,72,65,67,75,58,32,97,112,112,114,111,120,109,105,109,97,116,105,110,103,32,99,105,110,101,109,97,116,105,99,32,102,111,114,32,82,97,103,101,32,80,114,111,32,111,114,32,86,111,111,100,111,111,10,0,0,70,97,105,108,101,100,46,10,0,0,0,0,0,0,0,0,73,110,102,111,95,82,101,109,111,118,101,75,101,121,58,32,111,118,101,114,115,105,122,101,32,105,110,102,111,115,116,114,105,110,103,0,0,0,0,0,37,105,32,102,114,97,109,101,115,32,37,51,46,49,102,32,115,101,99,111,110,100,115,32,37,51,46,49,102,32,102,112,115,32,37,100,46,48,47,37,46,49,102,47,37,100,46,48,47,37,46,49,102,32,109,115,10,0,0,0,0,0,0,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,105,108,108,101,103,97,108,32,100,105,118,32,118,97,108,117,101,32,111,102,32,48,32,105,110,32,100,101,102,111,114,109,86,101,114,116,101,120,101,115,32,99,111,109,109,97,110,100,32,102,111,114,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,114,95,108,111,100,98,105,97,115,0,0,0,0,0,0,0,117,95,68,105,102,102,117,115,101,84,101,120,77,97,116,114,105,120,0,0,0,0,0,0,99,108,95,116,105,109,101,111,117,116,0,0,0,0,0,0,48,0,0,0,0,0,0,0,108,111,99,97,108,104,111,115,116,0,0,0,0,0,0,0,115,112,109,97,112,0,0,0,98,111,116,95,102,111,114,99,101,99,108,117,115,116,101,114,105,110,103,0,0,0,0,0,119,114,105,116,101,99,111,110,102,105,103,0,0,0,0,0,50,0,0,0,0,0,0,0,87,79,82,76,68,95,51,50,0,0,0,0,0,0,0,0,115,95,109,117,116,101,87,104,101,110,85,110,102,111,99,117,115,101,100,0,0,0,0,0,109,117,108,97,119,0,0,0,87,65,82,78,73,78,71,58,32,78,69,84,95,73,80,83,111,99,107,101,116,58,32,105,111,99,116,108,32,70,73,79,78,66,73,79,58,32,37,115,10,0,0,0,0,0,0,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,0,0,37,115,58,102,114,97,103,109,101,110,116,76,101,110,103,116,104,32,37,105,32,62,32,109,115,103,45,62,109,97,120,115,105,122,101,10,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,100,101,102,111,114,109,86,101,114,116,101,120,101,115,32,112,97,114,109,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,50,53,48,0,0,0,0,0,97,112,111,115,46,116,114,66,97,115,101,91,49,93,0,0,117,95,69,110,97,98,108,101,84,101,120,116,117,114,101,115,0,0,0,0,0,0,0,0,99,108,95,110,111,112,114,105,110,116,0,0,0,0,0,0,119,98,0,0,0,0,0,0,70,49,0,0,0,0,0,0,37,115,32,105,115,32,99,104,101,97,116,32,112,114,111,116,101,99,116,101,100,46,10,0,99,104,97,110,103,101,86,101,99,116,111,114,115,0,0,0,87,79,82,76,68,95,51,49,0,0,0,0,0,0,0,0,103,108,68,101,112,116,104,77,97,115,107,0,0,0,0,0,119,0,0,0,0,0,0,0,119,97,118,101,0,0,0,0,114,95,108,111,100,67,117,114,118,101,69,114,114,111,114,0,117,95,83,104,97,100,111,119,77,118,112,51,0,0,0,0,45,45,45,45,45,32,67,108,105,101,110,116,32,73,110,105,116,105,97,108,105,122,97,116,105,111,110,32,45,45,45,45,45,10,0,0,0,0,0,0,49,54,0,0,0,0,0,0,113,117,105,116,0,0,0,0,87,79,82,76,68,95,51,48,0,0,0,0,0,0,0,0,98,99,115,49,0,0,0,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,100,101,102,111,114,109,86,101,114,116,101,120,101,115,32,98,117,108,103,101,32,112,97,114,109,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,0,118,105,100,95,114,101,115,116,97,114,116,32,102,97,115,116,10,0,0,0,0,0,0,0,114,95,115,105,110,103,108,101,83,104,97,100,101,114,0,0,117,95,83,104,97,100,111,119,77,118,112,50,0,0,0,0,94,49,69,82,82,79,82,58,32,110,111,32,102,114,101,101,32,102,105,108,101,32,110,97,109,101,115,32,116,111,32,99,114,101,97,116,101,32,118,105,100,101,111,10,0,0,0,0,83,101,114,118,101,114,32,100,105,100,110,39,116,32,104,97,118,101,32,67,68,0,0,0,45,0,0,0,0,0,0,0,102,114,101,101,122,101,0,0,87,79,82,76,68,95,50,57,0,0,0,0,0,0,0,0,118,115,116,114,32,60,118,97,114,105,97,98,108,101,110,97,109,101,62,32,58,32,101,120,101,99,117,116,101,32,97,32,118,97,114,105,97,98,108,101,32,99,111,109,109,97,110,100,10,0,0,0,0,0,0,0,103,108,76,105,110,101,87,105,100,116,104,0,0,0,0,0,98,117,108,103,101,0,0,0,114,95,105,110,116,101,110,115,105,116,121,0,0,0,0,0,117,95,83,104,97,100,111,119,77,118,112,0,0,0,0,0,118,105,100,101,111,115,47,118,105,100,101,111,37,100,37,100,37,100,37,100,46,97,118,105,0,0,0,0,0,0,0,0,46,32,0,0,0,0,0,0,60,60,61,0,0,0,0,0,99,114,97,115,104,0,0,0,119,105,110,100,105,110,103,32,99,104,111,112,112,101,100,32,97,119,97,121,32,98,121,32,98,111,114,100,101,114,32,112,108,97,110,101,115,10,0,0,87,79,82,76,68,95,50,56,0,0,0,0,0,0,0,0,99,109,95,110,111,65,114,101,97,115,0,0,0,0,0,0,103,108,67,108,101,97,114,0,116,101,120,116,0,0,0,0,114,95,109,97,112,79,118,101,114,66,114,105,103,104,116,66,105,116,115,0,0,0,0,0,117,95,83,104,97,100,111,119,77,97,112,51,0,0,0,0,118,105,100,101,111,115,47,37,115,46,97,118,105,0,0,0,37,115,46,105,110,100,101,120,46,100,97,116,0,0,0,0,109,97,112,110,97,109,101,0,101,114,114,111,114,0,0,0,87,79,82,76,68,95,50,55,0,0,0,0,0,0,0,0,103,108,71,101,116,83,116,114,105,110,103,0,0,0,0,0,103,108,67,117,108,108,70,97,99,101,0,0,0,0,0,0,37,115,32,114,101,99,117,114,115,105,118,101,108,121,32,105,110,99,108,117,100,101,100,0,97,117,116,111,115,112,114,105,116,101,50,0,0,0,0,0,114,95,102,117,108,108,98,114,105,103,104,116,0,0,0,0,117,95,83,104,97,100,111,119,77,97,112,50,0,0,0,0,87,114,111,110,103,32,74,80,69,71,32,108,105,98,114,97,114,121,32,118,101,114,115,105,111,110,58,32,108,105,98,114,97,114,121,32,105,115,32,37,100,44,32,99,97,108,108,101,114,32,101,120,112,101,99,116,115,32,37,100,0,0,0,0,84,104,101,32,118,105,100,101,111,32,99,111,109,109,97,110,100,32,99,97,110,32,111,110,108,121,32,98,101,32,117,115,101,100,32,119,104,101,110,32,112,108,97,121,105,110,103,32,98,97,99,107,32,100,101,109,111,115,10,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,37,51,105,58,32,32,100,101,108,116,97,58,32,37,105,10,0,0,0,0,0,0,0,0,82,95,66,105,110,100,73,66,79,58,32,78,85,76,76,32,105,98,111,0,0,0,0,0,115,101,116,101,110,118,0,0,87,79,82,76,68,95,50,54,0,0,0,0,0,0,0,0,37,115,58,32,105,110,118,97,108,105,100,32,101,110,116,105,116,121,32,110,117,109,98,101,114,32,37,100,44,32,91,48,44,32,37,100,93,10,0,0,115,108,105,109,101,0,0,0,82,95,76,111,97,100,77,68,82,58,32,37,115,32,104,97,115,32,98,114,111,107,101,110,32,115,116,114,117,99,116,117,114,101,46,10,0,0,0,0,109,101,115,115,97,103,101,109,111,100,101,50,0,0,0,0,103,108,70,114,111,110,116,70,97,99,101,0,0,0,0,0,97,117,116,111,115,112,114,105,116,101,0,0,0,0,0,0,115,97,121,95,116,101,97,109,32,37,115,0,0,0,0,0,114,95,105,103,110,111,114,101,68,115,116,65,108,112,104,97,0,0,0,0,0,0,0,0,117,95,83,104,97,100,111,119,77,97,112,0,0,0,0,0,109,111,100,101,108,32,105,115,32,115,101,116,32,116,111,32,37,115,10,0,0,0,0,0,77,111,100,101,32,32,53,58,32,57,54,48,120,55,50,48,0,0,0,0,0,0,0,0,76,65,84,67,32,0,0,0,110,101,103,97,116,105,118,101,32,118,97,108,117,101,32,115,101,116,32,116,111,32,122,101,114,111,0,0,0,0,0,0,99,111,109,95,97,108,116,105,118,101,99,0,0,0,0,0,87,79,82,76,68,95,50,53,0,0,0,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,86,69,82,84,69,88,95,65,78,73,77,65,84,73,79,78,10,0,0,0,103,108,66,105,110,100,66,117,102,102,101,114,65,82,66,0,87,97,114,110,105,110,103,58,32,115,116,101,110,99,105,108,32,115,104,97,100,111,119,115,32,97,110,100,32,111,118,101,114,100,114,97,119,32,109,101,97,115,117,114,101,109,101,110,116,32,97,114,101,32,109,117,116,117,97,108,108,121,32,101,120,99,108,117,115,105,118,101,10,0,0,0,0,0,0,0,103,108,68,105,115,97,98,108,101,0,0,0,0,0,0,0,82,95,80,97,114,115,101,83,112,97,119,110,86,97,114,115,58,32,102,111,117,110,100,32,37,115,32,119,104,101,110,32,101,120,112,101,99,116,105,110,103,32,123,0,0,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,116,111,111,32,102,97,114,32,98,97,99,107,0,0,0,87,65,82,78,73,78,71,58,32,77,65,88,95,83,72,65,68,69,82,95,68,69,70,79,82,77,83,32,105,110,32,39,37,115,39,10,0,0,0,0,45,51,50,48,0,0,0,0,119,101,97,112,111,110,32,115,116,97,116,101,32,104,97,110,100,108,101,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,0,0,117,95,83,99,114,101,101,110,68,101,112,116,104,77,97,112,0,0,0,0,0,0,0,0,104,101,97,100,109,111,100,101,108,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,109,111,118,101,32,115,116,97,116,101,32,37,100,10,0,0,93,37,115,10,0,0,0,0,83,68,76,95,79,112,101,110,65,117,100,105,111,40,41,32,102,97,105,108,101,100,58,32,37,115,10,0,0,0,0,0,87,79,82,76,68,95,50,52,0,0,0,0,0,0,0,0,99,111,109,95,117,110,102,111,99,117,115,101,100,0,0,0,101,120,112,101,99,116,101,100,32,97,32,99,111,109,109,97,44,32,102,111,117,110,100,32,37,115,0,0,0,0,0,0,43,61,0,0,0,0,0,0,103,108,69,110,97,98,108,101,0,0,0,0,0,0,0,0,116,111,111,32,102,101,119,32,100,101,102,105,110,101,32,112,97,114,109,115,0,0,0,0,109,97,120,101,110,116,105,116,105,101,115,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,100,101,102,111,114,109,32,112,97,114,109,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,109,111,100,101,108,0,0,0,114,95,115,104,97,100,111,119,67,97,115,99,97,100,101,90,66,105,97,115,0,0,0,0,71,101,110,101,116,105,99,80,97,114,101,110,116,115,65,110,100,67,104,105,108,100,83,101,108,101,99,116,105,111,110,58,32,116,111,111,32,102,101,119,32,118,97,108,105,100,32,98,111,116,115,10,0,0,0,0,115,119,105,116,99,104,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,100,101,102,97,117,108,116,0,0,0,0,117,95,83,99,114,101,101,110,73,109,97,103,101,77,97,112,0,0,0,0,0,0,0,0,109,111,114,101,32,116,104,97,110,32,37,100,32,112,114,111,106,101,99,116,105,108,101,115,32,100,101,102,105,110,101,100,32,105,110,32,37,115,10,0,99,108,105,101,110,116,32,37,100,58,32,111,110,32,102,117,110,99,95,98,111,98,98,105,110,103,32,119,105,116,104,111,117,116,32,114,101,97,99,104,97,98,105,108,105,116,121,10,0,0,0,0,0,0,0,0,109,111,100,101,108,0,0,0,98,111,116,102,105,108,101,115,0,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,123,0,0,0,0,0,0,0,52,48,57,54,0,0,0,0,32,0,0,0,0,0,0,0,65,65,83,95,66,101,115,116,82,101,97,99,104,97,98,108,101,65,114,101,97,58,32,97,97,115,32,110,111,116,32,108,111,97,100,101,100,10,0,0,112,104,121,115,95,109,97,120,99,114,111,117,99,104,118,101,108,111,99,105,116,121,0,0,87,79,82,76,68,95,50,51,0,0,0,0,0,0,0,0,109,97,120,99,108,105,101,110,116,115,0,0,0,0,0,0,37,54,100,32,102,111,114,99,101,100,32,112,111,114,116,97,108,32,97,114,101,97,115,10,0,0,0,0,0,0,0,0,76,111,97,100,105,110,103,32,118,109,32,102,105,108,101,32,37,115,46,46,46,10,0,0,114,111,113,95,115,105,122,101,62,54,53,53,51,54,124,124,114,111,113,95,105,100,61,61,48,120,49,48,56,52,10,0,73,110,102,111,95,86,97,108,117,101,70,111,114,75,101,121,58,32,111,118,101,114,115,105,122,101,32,105,110,102,111,115,116,114,105,110,103,0,0,0,103,108,68,101,112,116,104,70,117,110,99,0,0,0,0,0,117,105,95,114,101,99,111,114,100,83,80,68,101,109,111,0,41,0,0,0,0,0,0,0,51,48,55,50,0,0,0,0,105,110,118,97,108,105,100,32,99,104,97,116,32,115,116,97,116,101,32,37,100,10,0,0,117,95,67,117,98,101,77,97,112,0,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,114,101,115,111,108,118,101,32,97,100,100,114,101,115,115,58,32,37,115,10,0,0,0,67,111,117,108,100,110,39,116,32,105,110,105,116,105,97,108,105,122,101,32,114,101,102,114,101,115,104,0,0,0,0,0,99,108,95,112,97,117,115,101,100,0,0,0,0,0,0,0,37,115,58,114,101,99,111,110,110,101,99,116,32,114,101,106,101,99,116,101,100,32,58,32,116,111,111,32,115,111,111,110,10,0,0,0,0,0,0,0,100,101,118,109,97,112,0,0,105,110,118,97,108,105,100,32,99,104,97,114,97,99,116,101,114,32,37,100,10,0,0,0,98,111,116,95,118,105,115,117,97,108,105,122,101,106,117,109,112,112,97,100,115,0,0,0,32,32,32,32,37,115,10,0,115,95,97,108,82,111,108,108,111,102,102,0,0,0,0,0,87,79,82,76,68,95,50,50,0,0,0,0,0,0,0,0,115,95,109,117,116,101,87,104,101,110,77,105,110,105,109,105,122,101,100,0,0,0,0,0,100,97,117,98,52,0,0,0,87,65,82,78,73,78,71,58,32,78,69,84,95,73,80,83,111,99,107,101,116,58,32,115,111,99,107,101,116,58,32,37,115,10,0,0,0,0,0,0,109,97,120,95,97,97,115,108,105,110,107,115,0,0,0,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,0,0,37,115,58,105,108,108,101,103,97,108,32,102,114,97,103,109,101,110,116,32,108,101,110,103,116,104,10,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,118,101,99,116,111,114,32,101,108,101,109,101,110,116,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,114,95,115,104,97,100,111,119,67,97,115,99,97,100,101,90,70,97,114,0,0,0,0,0,112,111,115,46,116,114,66,97,115,101,91,50,93,0,0,0,117,95,76,101,118,101,108,115,77,97,112,0,0,0,0,0,37,100,32,112,111,114,116,97,108,32,99,97,99,104,101,32,117,112,100,97,116,101,115,10,0,0,0,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0,0,0,0,0,119,114,105,116,105,110,103,32,116,111,58,32,37,115,10,0,67,65,80,83,76,79,67,75,0,0,0,0,0,0,0,0,37,115,32,119,105,108,108,32,98,101,32,99,104,97,110,103,101,100,32,117,112,111,110,32,114,101,115,116,97,114,116,105,110,103,46,10,0,0,0,0,32,32,32,32,37,115,32,61,32,34,37,115,34,10,0,0,87,79,82,76,68,95,50,49,0,0,0,0,0,0,0,0,37,115,47,37,115,0,0,0,103,108,67,108,101,97,114,68,101,112,116,104,0,0,0,0,109,111,100,101,108,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,101,110,116,104,101,115,105,115,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,114,95,115,104,97,100,111,119,67,97,115,99,97,100,101,90,78,101,97,114,0,0,0,0,117,95,84,101,120,116,117,114,101,77,97,112,0,0,0,0,45,45,45,45,45,32,73,110,105,116,105,97,108,105,122,105,110,103,32,82,101,110,100,101,114,101,114,32,45,45,45,45,10,0,0,0,0,0,0,0,102,115,95,109,97,110,105,102,101,115,116,0,0,0,0,0,87,79,82,76,68,95,50,48,0,0,0,0,0,0,0,0,99,115,32,37,115,32,34,37,115,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,65,65,83,32,105,110,105,116,105,97,108,105,122,101,100,46,10,0,0,0,0,0,0,0,103,108,70,108,117,115,104,0,40,0,0,0,0,0,0,0,99,97,110,39,116,32,115,101,101,107,32,116,111,32,97,97,115,32,108,117,109,112,10,0,114,95,115,104,97,100,111,119,77,97,112,83,105,122,101,0,117,95,83,112,101,99,117,108,97,114,77,97,112,0,0,0,65,65,83,95,69,110,116,105,116,121,73,110,102,111,58,32,97,97,115,119,111,114,108,100,32,110,111,116,32,105,110,105,116,105,97,108,105,122,101,100,10,0,0,0,0,0,0,0,99,111,110,115,111,108,101,0,83,101,114,118,101,114,32,99,114,97,115,104,101,100,58,32,37,115,0,0,0,0,0,0,112,111,114,116,97,108,32,97,114,101,97,32,37,100,32,105,115,32,115,101], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+163844); +/* memory initializer */ allocate([112,101,114,97,116,105,110,103,32,109,111,114,101,32,116,104,97,110,32,116,119,111,32,99,108,117,115,116,101,114,115,13,10,0,0,0,37,108,102,32,37,108,102,32,37,108,102,0,0,0,0,0,102,115,95,99,100,110,0,0,87,79,82,76,68,95,49,57,0,0,0,0,0,0,0,0,101,120,101,99,105,110,103,32,37,115,10,0,0,0,0,0,103,108,70,105,110,105,115,104,0,0,0,0,0,0,0,0,37,115,95,37,115,46,116,103,97,0,0,0,0,0,0,0,114,95,115,104,97,100,111,119,70,105,108,116,101,114,0,0,117,95,68,101,108,117,120,101,77,97,112,0,0,0,0,0,119,104,105,116,101,0,0,0,50,0,0,0,0,0,0,0,37,105,32,0,0,0,0,0,114,43,98,0,0,0,0,0,67,111,109,95,82,97,110,100,111,109,66,121,116,101,115,58,32,117,115,105,110,103,32,119,101,97,107,32,114,97,110,100,111,109,105,122,97,116,105,111,110,10,0,0,0,0,0,0,50,0,0,0,0,0,0,0,87,79,82,76,68,95,49,56,0,0,0,0,0,0,0,0,67,77,95,76,111,97,100,77,97,112,58,32,78,85,76,76,32,110,97,109,101,0,0,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,37,115,10,0,0,0,0,0,45,0,0,0,0,0,0,0,114,95,115,117,110,83,104,97,100,111,119,115,0,0,0,0,117,95,78,111,114,109,97,108,77,97,112,0,0,0,0,0,103,102,120,47,50,100,47,98,105,103,99,104,97,114,115,0,94,49,99,108,95,97,118,105,70,114,97,109,101,82,97,116,101,32,109,117,115,116,32,98,101,32,62,61,32,49,10,0,37,115,0,0,0,0,0,0,104,111,115,116,110,97,109,101,0,0,0,0,0,0,0,0,32,34,0,0,0,0,0,0,87,79,82,76,68,95,49,55,0,0,0,0,0,0,0,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,0,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,0,0,65,112,112,108,105,99,97,116,105,111,110,32,116,114,97,110,115,102,101,114,114,101,100,32,116,111,111,32,109,97,110,121,32,115,99,97,110,108,105,110,101,115,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,83,86,95,85,110,108,105,110,107,69,110,116,105,116,121,58,32,110,111,116,32,102,111,117,110,100,32,105,110,32,119,111,114,108,100,83,101,99,116,111,114,10,0,0,0,0,0,87,65,82,78,73,78,71,58,32,39,115,107,121,80,97,114,109,115,39,32,109,105,115,115,105,110,103,32,112,97,114,97,109,101,116,101,114,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,114,95,115,117,110,108,105,103,104,116,77,111,100,101,0,0,117,95,76,105,103,104,116,77,97,112,0,0,0,0,0,0,37,115,58,32,68,101,108,116,97,32,114,101,113,117,101,115,116,32,102,114,111,109,32,111,117,116,32,111,102,32,100,97,116,101,32,112,97,99,107,101,116,46,10,0,0,0,0,0,66,111,103,117,115,32,109,97,114,107,101,114,32,108,101,110,103,116,104,0,0,0,0,0,114,101,99,111,114,100,32,37,115,45,37,115,45,37,115,0,35,52,54,50,32,78,101,116,99,104,97,110,95,84,114,97,110,115,109,105,116,78,101,120,116,70,114,97,103,109,101,110,116,58,32,101,109,112,116,105,101,100,32,113,117,101,117,101,10,0,0,0,0,0,0,0,114,95,97,108,108,111,119,83,111,102,116,119,97,114,101,71,76,0,0,0,0,0,0,0,45,45,45,32,82,95,66,105,110,100,78,117,108,108,86,66,79,32,45,45,45,10,0,0,37,51,105,58,32,32,117,110,99,104,97,110,103,101,100,58,32,37,105,10,0,0,0,0,37,52,105,32,116,114,97,99,101,115,32,32,40,37,105,98,32,37,105,112,41,32,37,52,105,32,112,111,105,110,116,115,10,0,0,0,0,0,0,0,87,79,82,76,68,95,49,54,0,0,0,0,0,0,0,0,119,97,116,101,114,0,0,0,82,95,76,111,97,100,77,68,82,58,32,72,101,97,100,101,114,32,111,102,32,37,115,32,105,115,32,98,114,111,107,101,110,46,32,87,114,111,110,103,32,102,105,108,101,115,105,122,101,32,100,101,99,108,97,114,101,100,33,10,0,0,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,0,0,73,110,118,97,108,105,100,32,83,79,83,32,112,97,114,97,109,101,116,101,114,115,32,102,111,114,32,115,101,113,117,101,110,116,105,97,108,32,74,80,69,71,0,0,0,0,0,0,109,101,115,115,97,103,101,109,111,100,101,0,0,0,0,0,100,110,0,0,0,0,0,0,114,95,100,114,97,119,83,117,110,82,97,121,115,0,0,0,117,95,68,105,102,102,117,115,101,77,97,112,0,0,0,0,78,111,116,32,114,101,99,111,114,100,105,110,103,32,97,32,100,101,109,111,46,10,0,0,102,105,108,101,32,37,115,32,115,116,105,108,108,32,111,112,101,110,32,105,110,32,112,114,101,99,111,109,112,105,108,101,114,10,0,0,0,0,0,0,77,111,100,101,32,32,52,58,32,56,48,48,120,54,48,48,0,0,0,0,0,0,0,0,115,66,80,84,67,0,0,0,102,114,97,109,101,58,37,105,32,97,108,108,58,37,51,105,32,115,118,58,37,51,105,32,101,118,58,37,51,105,32,99,108,58,37,51,105,32,103,109,58,37,51,105,32,114,102,58,37,51,105,32,98,107,58,37,51,105,10,0,0,0,0,0,87,79,82,76,68,95,49,53,0,0,0,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,84,67,77,79,68,10,0,0,0,0,0,0,70,66,79,95,67,114,101,97,116,101,66,117,102,102,101,114,58,32,105,110,118,97,108,105,100,32,102,111,114,109,97,116,32,37,100,10,0,0,0,0,99,109,100,32,37,53,100,58,32,37,115,10,0,0,0,0,71,76,95,65,82,66,95,118,101,114,116,101,120,95,98,117,102,102,101,114,95,111,98,106,101,99,116,0,0,0,0,0,48,0,0,0,0,0,0,0,103,108,71,101,116,69,114,114,111,114,0,0,0,0,0,0,37,102,32,37,102,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,102,111,117,110,100,32,109,97,114,107,101,114,32,48,120,37,48,50,120,32,105,110,115,116,101,97,100,32,111,102,32,82,83,84,37,100,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,99,111,100,101,0,0,0,117,112,0,0,0,0,0,0,48,46,53,0,0,0,0,0,97,99,116,105,118,101,32,117,110,105,102,111,114,109,58,32,39,37,115,39,10,0,0,0,37,48,52,100,37,48,50,100,37,48,50,100,37,48,50,100,37,48,50,100,37,48,50,100,0,0,0,0,0,0,0,0,70,83,95,70,105,108,101,70,111,114,72,97,110,100,108,101,58,32,78,85,76,76,0,0,100,101,100,105,99,97,116,101,100,32,115,101,116,32,116,111,32,48,0,0,0,0,0,0,83,68,76,32,97,117,100,105,111,32,100,114,105,118,101,114,32,105,115,32,34,37,115,34,46,10,0,0,0,0,0,0,87,79,82,76,68,95,49,52,0,0,0,0,0,0,0,0,48,46,49,53,0,0,0,0,44,0,0,0,0,0,0,0,37,61,0,0,0,0,0,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,41,0,0,0,0,0,0,0,80,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,74,80,69,71,32,102,105,108,101,0,0,0,0,0,0,49,50,56,0,0,0,0,0,102,116,0,0,0,0,0,0,114,95,102,111,114,99,101,83,117,110,65,109,98,105,101,110,116,83,99,97,108,101,0,0,99,97,115,101,0,0,0,0,100,101,118,101,108,111,112,101,114,0,0,0,0,0,0,0,112,114,111,106,101,99,116,105,108,101,105,110,102,111,0,0,37,115,0,0,0,0,0,0,99,108,105,101,110,116,32,37,100,58,32,111,110,32,102,117,110,99,95,112,108,97,116,32,119,105,116,104,111,117,116,32,114,101,97,99,104,97,98,105,108,105,116,121,10,0,0,0,117,115,101,114,105,110,102,111,32,34,37,115,34,0,0,0,102,111,117,110,100,32,37,115,0,0,0,0,0,0,0,0,109,97,120,95,105,116,101,109,105,110,102,111,32,61,32,37,100,10,0,0,0,0,0,0,123,0,0,0,0,0,0,0,115,107,105,108,108,0,0,0,109,97,120,95,114,111,117,116,105,110,103,99,97,99,104,101,0,0,0,0,0,0,0,0,70,83,95,70,105,108,101,70,111,114,72,97,110,100,108,101,58,32,99,97,110,39,116,32,103,101,116,32,70,73,76,69,32,111,110,32,122,105,112,32,102,105,108,101,0,0,0,0,100,101,100,105,99,97,116,101,100,0,0,0,0,0,0,0,116,114,105,103,103,101,114,95,112,117,115,104,32,110,111,116,32,105,110,32,97,110,121,32,106,117,109,112,32,112,97,100,32,97,114,101,97,10,0,0,112,104,121,115,95,109,97,120,119,97,108,107,118,101,108,111,99,105,116,121,0,0,0,0,87,79,82,76,68,95,49,51,0,0,0,0,0,0,0,0,108,111,97,100,101,100,32,37,115,10,0,0,0,0,0,0,97,114,101,97,32,37,100,32,105,115,32,97,32,102,111,114,99,101,100,32,112,111,114,116,97,108,32,97,114,101,97,13,10,0,0,0,0,0,0,0,118,109,47,37,115,46,113,118,109,0,0,0,0,0,0,0,32,46,46,46,32,0,0,0,67,73,78,95,72,97,110,100,108,101,70,111,114,86,105,100,101,111,58,32,110,111,110,101,32,102,114,101,101,0,0,0,103,108,83,104,97,100,101,114,66,105,110,97,114,121,0,0,69,82,82,79,82,58,32,99,111,117,108,100,110,39,116,32,111,112,101,110,46,10,0,0,87,97,114,110,105,110,103,58,32,117,110,107,110,111,119,110,32,74,70,73,70,32,114,101,118,105,115,105,111,110,32,110,117,109,98,101,114,32,37,100,46,37,48,50,100,0,0,0,108,102,0,0,0,0,0,0,114,95,102,111,114,99,101,83,117,110,76,105,103,104,116,83,99,97,108,101,0,0,0,0,35,108,105,110,101,32,48,10,0,0,0,0,0,0,0,0,37,115,32,104,97,115,32,110,111,32,73,80,118,54,32,97,100,100,114,101,115,115,46,10,0,0,0,0,0,0,0,0,117,105,95,115,105,110,103,108,101,80,108,97,121,101,114,65,99,116,105,118,101,0,0,0,109,97,112,95,114,101,115,116,97,114,116,32,48,0,0,0,10,83,101,114,118,101,114,32,99,111,110,110,101,99,116,105,111,110,32,116,105,109,101,100,32,111,117,116,46,10,0,0,32,105,110,116,101,103,101,114,0,0,0,0,0,0,0,0,86,77,95,67,114,101,97,116,101,32,111,110,32,103,97,109,101,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,113,112,111,114,116,0,0,0,109,97,112,0,0,0,0,0,70,83,95,70,105,108,101,70,111,114,72,97,110,100,108,101,58,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,50,0,0,0,0,0,0,0,72,105,116,99,104,32,119,97,114,110,105,110,103,58,32,37,105,32,109,115,101,99,32,102,114,97,109,101,32,116,105,109,101,10,0,0,0,0,0,0,49,48,50,52,0,0,0,0,87,79,82,76,68,95,49,50,0,0,0,0,0,0,0,0,97,100,112,99,109,0,0,0,79,112,101,110,105,110,103,32,73,80,32,115,111,99,107,101,116,58,32,48,46,48,46,48,46,48,58,37,105,10,0,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,0,0,37,115,58,68,114,111,112,112,101,100,32,97,32,109,101,115,115,97,103,101,32,102,114,97,103,109,101,110,116,10,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,98,97,100,32,72,117,102,102,109,97,110,32,99,111,100,101,0,0,0,0,0,98,107,0,0,0,0,0,0,49,46,48,0,0,0,0,0,112,111,115,46,116,114,68,101,108,116,97,91,49,93,0,0,35,105,102,110,100,101,102,32,114,95,70,66,117,102,83,99,97,108,101,10,35,100,101,102,105,110,101,32,114,95,70,66,117,102,83,99,97,108,101,32,118,101,99,50,40,37,102,44,32,37,102,41,10,35,101,110,100,105,102,10,0,0,0,0,107,105,99,107,0,0,0,0,37,115,58,115,101,113,117,101,110,99,101,100,32,112,97,99,107,101,116,32,119,105,116,104,111,117,116,32,99,111,110,110,101,99,116,105,111,110,10,0,32,102,108,111,97,116,0,0,70,83,95,83,86,95,70,79,112,101,110,70,105,108,101,87,114,105,116,101,58,32,37,115,10,0,0,0,0,0,0,0,67,79,77,77,65,78,68,0,37,115,32,105,115,32,119,114,105,116,101,32,112,114,111,116,101,99,116,101,100,46,10,0,37,115,58,32,78,111,116,32,97,108,108,111,119,101,100,32,116,111,32,109,97,110,105,112,117,108,97,116,101,32,39,37,115,39,32,100,117,101,32,116,111,32,37,115,32,101,120,116,101,110,115,105,111,110,0,0,87,114,105,116,105,110,103,32,37,115,46,10,0,0,0,0,87,79,82,76,68,95,49,49,0,0,0,0,0,0,0,0,98,111,116,95,100,101,98,117,103,0,0,0,0,0,0,0,103,108,68,114,97,119,65,114,114,97,121,115,0,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,112,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,100,97,116,97,32,115,101,103,109,101,110,116,0,0,0,0,0,0,0,0,114,116,0,0,0,0,0,0,114,95,102,111,114,99,101,83,117,110,77,97,112,76,105,103,104,116,83,99,97,108,101,0,35,105,102,110,100,101,102,32,116,101,120,101,110,118,95,116,10,35,100,101,102,105,110,101,32,116,101,120,101,110,118,95,116,10,35,100,101,102,105,110,101,32,84,69,88,69,78,86,95,77,79,68,85,76,65,84,69,32,37,105,10,35,100,101,102,105,110,101,32,84,69,88,69,78,86,95,65,68,68,32,37,105,10,35,100,101,102,105,110,101,32,84,69,88,69,78,86,95,82,69,80,76,65,67,69,32,37,105,10,35,101,110,100,105,102,10,0,0,0,0,37,115,58,32,82,117,110,116,32,112,97,99,107,101,116,10,0,0,0,0,0,0,0,0,32,117,110,115,105,103,110,101,100,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,79,110,108,121,32,79,103,103,32,79,112,117,115,32,102,105,108,101,115,32,119,105,116,104,32,111,110,101,32,115,116,114,101,97,109,32,97,114,101,32,115,117,112,112,111,114,116,10,0,0,0,0,0,0,0,0,46,113,118,109,0,0,0,0,46,99,102,103,0,0,0,0,94,49,69,82,82,79,82,58,32,73,110,99,111,114,114,101,99,116,47,117,110,115,117,112,112,111,114,116,101,100,32,102,111,114,109,97,116,32,105,110,32,34,37,115,34,10,0,0,87,79,82,76,68,95,49,48,0,0,0,0,0,0,0,0,98,99,115,48,0,0,0,0,37,115,46,37,115,0,0,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,0,0,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,37,117,32,101,120,116,114,97,110,101,111,117,115,32,98,121,116,101,115,32,98,101,102,111,114,101,32,109,97,114,107,101,114,32,48,120,37,48,50,120,0,0,0,0,0,87,65,82,78,73,78,71,58,32,117,110,107,110,111,119,110,32,103,101,110,101,114,97,108,32,115,104,97,100,101,114,32,112,97,114,97,109,101,116,101,114,32,39,37,115,39,32,105,110,32,39,37,115,39,10,0,114,95,102,111,114,99,101,83,117,110,0,0,0,0,0,0,35,105,102,110,100,101,102,32,97,108,112,104,97,84,101,115,116,95,116,10,35,100,101,102,105,110,101,32,97,108,112,104,97,84,101,115,116,95,116,10,35,100,101,102,105,110,101,32,65,84,69,83,84,95,71,84,95,48,32,37,105,10,35,100,101,102,105,110,101,32,65,84,69,83,84,95,76,84,95,56,48,32,37,105,10,35,100,101,102,105,110,101,32,65,84,69,83,84,95,71,69,95,56,48,32,37,105,10,35,101,110,100,105,102,10,0,0,0,0,0,32,108,111,110,103,0,0,0,85,110,107,110,111,119,110,32,99,111,110,110,101,99,116,105,111,110,108,101,115,115,32,112,97,99,107,101,116,32,99,111,109,109,97,110,100,46,10,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,69,82,82,79,82,58,32,37,115,10,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,0,0,0,0,46,106,115,0,0,0,0,0,85,115,97,103,101,58,32,119,114,105,116,101,99,111,110,102,105,103,32,60,102,105,108,101,110,97,109,101,62,10,0,0,85,115,97,103,101,58,32,109,117,115,105,99,32,60,109,117,115,105,99,102,105,108,101,62,32,91,108,111,111,112,102,105,108,101,93,10,0,0,0,0,87,79,82,76,68,95,57,0,56,0,0,0,0,0,0,0,99,111,117,108,100,110,39,116,32,101,120,101,99,32,37,115,10,0,0,0,0,0,0,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,0,0,0,0,0,0,73,110,99,111,110,115,105,115,116,101,110,116,32,112,114,111,103,114,101,115,115,105,111,110,32,115,101,113,117,101,110,99,101,32,102,111,114,32,99,111,109,112,111,110,101,110,116,32,37,100,32,99,111,101,102,102,105,99,105,101,110,116,32,37,100,0,0,0,0,0,0,0,115,111,114,116,0,0,0,0,114,95,103,101,110,78,111,114,109,97,108,77,97,112,115,0,35,105,102,110,100,101,102,32,97,108,112,104,97,71,101,110,95,116,10,35,100,101,102,105,110,101,32,97,108,112,104,97,71,101,110,95,116,10,35,100,101,102,105,110,101,32,65,71,69,78,95,76,73,71,72,84,73,78,71,95,83,80,69,67,85,76,65,82,32,37,105,10,35,100,101,102,105,110,101,32,65,71,69,78,95,80,79,82,84,65,76,32,37,105,10,35,101,110,100,105,102,10,0,0,98,105,110,97,114,121,0,0,103,101,116,115,101,114,118,101,114,115,69,120,116,82,101,115,112,111,110,115,101,0,0,0,115,111,117,110,100,32,115,121,115,116,101,109,32,110,111,116,32,115,116,97,114,116,101,100,10,0,0,0,0,0,0,0,70,83,95,72,97,110,100,108,101,70,111,114,70,105,108,101,58,32,110,111,110,101,32,102,114,101,101,0,0,0,0,0,113,51,99,111,110,102,105,103,46,99,102,103,0,0,0,0,40,37,105,41,0,0,0,0,99,109,95,100,101,98,117,103,83,105,122,101,0,0,0,0,87,79,82,76,68,95,56,0,80,97,114,115,101,77,101,115,104,58,32,77,65,88,95,80,65,84,67,72,95,86,69,82,84,83,0,0,0,0,0,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,98,97,100,32,97,114,105,116,104,109,101,116,105,99,32,99,111,100,101,0,0,87,65,82,78,73,78,71,58,32,105,110,118,97,108,105,100,32,99,117,108,108,32,112,97,114,109,32,39,37,115,39,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,114,95,105,109,97,103,101,85,112,115,97,109,112,108,101,84,121,112,101,0,0,0,0,0,35,105,102,110,100,101,102,32,99,111,108,111,114,71,101,110,95,116,10,35,100,101,102,105,110,101,32,99,111,108,111,114,71,101,110,95,116,10,35,100,101,102,105,110,101,32,67,71,69,78,95,76,73,71,72,84,73,78,71,95,68,73,70,70,85,83,69,32,37,105,10,35,101,110,100,105,102,10,0,0,111,99,116,97,108,0,0,0,103,101,116,115,101,114,118,101,114,115,82,101,115,112,111,110,115,101,0,0,0,0,0,0,108,111,111,112,98,97,99,107,0,0,0,0,0,0,0,0,85,115,101,114,32,73,110,116,101,114,102,97,99,101,32,105,115,32,118,101,114,115,105,111,110,32,37,100,44,32,101,120,112,101,99,116,101,100,32,37,100,0,0,0,0,0,0,0,37,100,32,102,105,108,101,115,32,105,110,32,112,107,51,32,102,105,108,101,115,10,0,0,47,47,32,103,101,110,101,114,97,116,101,100,32,98,121,32,113,117,97,107,101,44,32,100,111,32,110,111,116,32,109,111,100,105,102,121,10,0,0,0,87,79,82,76,68,95,55,0,114,95,97,110,97,103,108,121,112,104,77,111,100,101,0,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,0,48,0,0,0,0,0,0,0,103,108,82,111,116,97,116,101,102,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,65,100,111,98,101,32,99,111,108,111,114,32,116,114,97,110,115,102,111,114,109,32,99,111,100,101,32,37,100,0,0,0,98,97,99,107,115,105,100,101,100,0,0,0,0,0,0,0,114,95,105,109,97,103,101,85,112,115,97,109,112,108,101,77,97,120,83,105,122,101,0,0,35,105,102,110,100,101,102,32,116,99,71,101,110,95,116,10,35,100,101,102,105,110,101,32,116,99,71,101,110,95,116,10,35,100,101,102,105,110,101,32,84,67,71,69,78,95,76,73,71,72,84,77,65,80,32,37,105,10,35,100,101,102,105,110,101,32,84,67,71,69,78,95,84,69,88,84,85,82,69,32,37,105,10,35,100,101,102,105,110,101,32,84,67,71,69,78,95,69,78,86,73,82,79,78,77,69,78,84,95,77,65,80,80,69,68,32,37,105,10,35,100,101,102,105,110,101,32,84,67,71,69,78,95,70,79,71,32,37,105,10,35,100,101,102,105,110,101,32,84,67,71,69,78,95,86,69,67,84,79,82,32,37,105,10,35,101,110,100,105,102,10,0,0,0,0,0,66,111,103,117,115,32,74,80,69,71,32,99,111,108,111,114,115,112,97,99,101,0,0,0,112,114,105,110,116,0,0,0,71,76,95,82,69,78,68,69,82,69,82,58,32,37,115,10,0,0,0,0,0,0,0,0,45,45,45,32,82,95,66,105,110,100,86,66,79,40,32,37,115,32,41,32,45,45,45,10,0,0,0,0,0,0,0,0,67,76,95,80,97,114,115,101,80,97,99,107,101,116,69,110,116,105,116,105,101,115,58,32,101,110,100,32,111,102,32,109,101,115,115,97,103,101,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,67,111,117,108,100,110,39,116,32,119,114,105,116,101,32,37,115,46,10,0,0,0,0,0,87,79,82,76,68,95,54,0,117,110,100,101,114,119,97,116,101,114,0,0,0,0,0,0,82,95,76,111,97,100,77,68,82,58,32,37,115,32,104,97,115,32,119,114,111,110,103,32,118,101,114,115,105,111,110,32,40,37,105,32,115,104,111,117,108,100,32,98,101,32,37,105,41,10,0,0,0,0,0,0,103,108,70,114,117,115,116,117,109,0,0,0,0,0,0,0,79,98,116,97,105,110,101,100,32,88,77,83,32,104,97,110,100,108,101,32,37,117,0,0,98,97,99,107,115,105,100,101,0,0,0,0,0,0,0,0,114,95,105,109,97,103,101,85,112,115,97,109,112,108,101,0,35,105,102,110,100,101,102,32,100,101,102,111,114,109,71,101,110,95,116,10,35,100,101,102,105,110,101,32,100,101,102,111,114,109,71,101,110,95,116,10,35,100,101,102,105,110,101,32,68,71,69,78,95,87,65,86,69,95,83,73,78,32,37,105,10,35,100,101,102,105,110,101,32,68,71,69,78,95,87,65,86,69,95,83,81,85,65,82,69,32,37,105,10,35,100,101,102,105,110,101,32,68,71,69,78,95,87,65,86,69,95,84,82,73,65,78,71,76,69,32,37,105,10,35,100,101,102,105,110,101,32,68,71,69,78,95,87,65,86,69,95,83,65,87,84,79,79,84,72,32,37,105,10,35,100,101,102,105,110,101,32,68,71,69,78,95,87,65,86,69,95,73,78,86,69,82,83,69,95,83,65,87,84,79,79,84,72,32,37,105,10,35,100,101,102,105,110,101,32,68,71,69,78,95,66,85,76,71,69,32,37,105,10,35,100,101,102,105,110,101,32,68,71,69,78,95,77,79,86,69,32,37,105,10,35,101,110,100,105,102,10,0,0,0,0,0,0,0,116,111,103,103,108,101,109,101,110,117,0,0,0,0,0,0,109,111,116,100,0,0,0,0,77,111,100,101,32,32,51,58,32,54,52,48,120,52,56,48,0,0,0,0,0,0,0,0,77,83,71,95,87,114,105,116,101,66,105,116,115,58,32,98,97,100,32,98,105,116,115,32,37,105,0,0,0,0,0,0,37,48,50,88,0,0,0,0,102,115,95,98,97,115,101,103,97,109,101,0,0,0,0,0,115,68,88,84,53,0,0,0,99,111,109,95,104,111,109,101,112,97,116,104,0,0,0,0,87,79,82,76,68,95,53,0,35,100,101,102,105,110,101,32,85,83,69,95,84,67,71,69,78,10,0,0,0,0,0,0,70,66,79,95,67,114,101,97,116,101,58,32,77,65,88,95,70,66,79,83,32,104,105,116,0,0,0,0,0,0,0,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,0,0,0,114,95,109,101,97,115,117,114,101,79,118,101,114,100,114,97,119,0,0,0,0,0,0,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,0,0,97,117,116,111,69,120,112,111,115,117,114,101,77,105,110,77,97,120,0,0,0,0,0,0,70,114,101,101,100,32,88,77,83,32,104,97,110,100,108,101,32,37,117,0,0,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,99,111,100,101,0,0,0,0,0,98,97,99,107,0,0,0,0,114,95,109,101,114,103,101,76,105,103,104,116,109,97,112,115,0,0,0,0,0,0,0,0,35,105,102,110,100,101,102,32,77,95,80,73,10,35,100,101,102,105,110,101,32,77,95,80,73,32,51,46,49,52,49,53,57,50,54,53,51,53,56,57,55,57,51,50,51,56,52,54,10,35,101,110,100,105,102,10,0,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,32,97,32,37,115,44,32,102,111,117,110,100,32,37,115,0,107,101,121,65,117,116,104,111,114,105,122,101,0,0,0,0,102,115,95,99,111,109,112,108,101,116,101,77,97,110,105,102,101,115,116,0,0,0,0,0,98,97,115,101,113,51,0,0,40,85,78,75,78,79,87,78,41,0,0,0,0,0,0,0,87,79,82,76,68,95,52,0,106,111,121,95,116,104,114,101,115,104,111,108,100,0,0,0,66,85,71,58,32,110,111,32,115,117,98,32,115,116,114,117,99,116,117,114,101,32,100,101,102,105,110,101,100,0,0,0,47,61,0,0,0,0,0,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,0,116,111,111,32,109,97,110,121,32,99,111,109,109,97,39,115,0,0,0,0,0,0,0,0,85,110,114,101,99,111,103,110,105,122,101,100,32,99,111,109,112,111,110,101,110,116,32,73,68,115,32,37,100,32,37,100,32,37,100,44,32,97,115,115,117,109,105,110,103,32,89,67,98,67,114,0,0,0,0,0,109,97,120,99,108,105,101,110,116,115,0,0,0,0,0,0,100,105,115,97,98,108,101,0,114,95,114,101,99,97,108,99,77,68,51,78,111,114,109,97,108,115,0,0,0,0,0,0,100,101,102,97,117,108,116,0,99,111,117,108,100,110,39,116,32,108,111,97,100,33,10,0,119,101,97,112,111,110,32,105,110,102,111,32,110,117,109,98,101,114,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,32,105,110,32,37,115,10,0,0,0,0,0,0,0,116,114,97,118,101,108,32,116,121,112,101,32,37,100,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,10,0,0,0,0,0,112,117,110,99,116,117,97,116,105,111,110,0,0,0,0,0,101,99,104,111,0,0,0,0,50,53,54,0,0,0,0,0,109,111,114,101,32,116,104,97,110,32,51,50,32,99,111,110,116,101,120,116,32,108,101,118,101,108,115,0,0,0,0,0,99,111,117,110,108,100,110,39,116,32,108,111,97,100,32,37,115,10,0,0,0,0,0,0,65,65,83,95,65,114,101,97,73,110,102,111,58,32,97,114,101,97,110,117,109,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,10,0,0,114,111,117,116,101,32,99,97,99,104,101,32,100,117,109,112,32,104,97,115,32,119,114,111,110,103,32,118,101,114,115,105,111,110,32,37,100,44,32,115,104,111,117,108,100,32,98,101,32,37,100,10,0,0,0,0,102,115,95,109,97,110,105,102,101,115,116,0,0,0,0,0,99,111,109,95,98,97,115,101,103,97,109,101,0,0,0,0,98,97,115,101,113,51,0,0,116,114,105,103,103,101,114,95,112,117,115,104,0,0,0,0,51,50,48,0,0,0,0,0,87,79,82,76,68,95,51,0,109,97,112,115,47,37,115,46,97,97,115,0,0,0,0,0,112,111,114,116,97,108,32,97,114,101,97,32,37,100,32,104,97,115,32,110,111,32,98,97,99,107,32,99,108,117,115,116,101,114,13,10,0,0,0,0,37,105,32,115,121,109,98,111,108,115,32,112,97,114,115,101,100,32,102,114,111,109,32,37,115,10,0,0,0,0,0,0,67,111,109,95,115,112,114,105,110,116,102,58,32,79,117,116,112,117,116,32,108,101,110,103,116,104,32,37,100,32,116,111,111,32,115,104,111,114,116,44,32,114,101,113,117,105,114,101,32,37,100,32,98,121,116,101,115,46,10,0,0,0,0,0,103,108,77,97,116,114,105,120,77,111,100,101,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,82,71,66,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,0,0,114,101,99,111,114,100,105,110,103,32,116,111,32,37,115,46,10,0,0,0,0,0,0,0,101,110,100,46,114,111,113,0,116,119,111,115,105,100,101,100,0,0,0,0,0,0,0,0,49,50,56,0,0,0,0,0,99,111,117,108,100,110,39,116,32,108,111,97,100,44,32,117,115,105,110,103,32,102,97,108,108,98,97,99,107,10,0,0,82,101,115,111,108,118,105,110,103,32,37,115,32,40,73,80,118,54,41,10,0,0,0,0,110,101,120,116,109,97,112,0,110,97,109,101,0,0,0,0,115,116,97,116,117,115,82,101,115,112,111,110,115,101,0,0,118,109,95,103,97,109,101,0,99,104,97,108,108,101,110,103,101,0,0,0,0,0,0,0,115,101,99,116,111,114,108,105,115,116,0,0,0,0,0,0,99,111,110,116,101,110,116,46,113,117,97,107,101,106,115,46,99,111,109,0,0,0,0,0,98,111,116,95,109,97,120,100,101,98,117,103,112,111,108,121,115,0,0,0,0,0,0,0,99,111,109,95,115,116,97,110,100,97,108,111,110,101,0,0,115,95,97,108,77,97,120,68,105,115,116,97,110,99,101,0,87,79,82,76,68,95,50,0,115,95,98,97,99,107,101,110,100,0,0,0,0,0,0,0,67,118,97,114,95,71,101,116,58,32,78,85,76,76,32,112,97,114,97,109,101,116,101,114,0,0,0,0,0,0,0,0,49,54,98,105,116,0,0,0,79,112,101,110,105,110,103,32,73,80,32,115,111,99,107,101,116,58,32,37,115,58,37,105,10,0,0,0,0,0,0,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,0,0,0,0,0,0,37,115,58,68,114,111,112,112,101,100,32,37,105,32,112,97,99,107,101,116,115,32,97,116,32,37,105,10,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,112,97,108,101,116,116,101,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,0,0,110,111,110,101,0,0,0,0,114,95,112,115,104,97,100,111,119,68,105,115,116,0,0,0,112,111,115,46,116,114,68,101,108,116,97,91,48,93,0,0,46,46,46,108,111,97,100,105,110,103,32,39,37,115,39,10,0,0,0,0,0,0,0,0,110,117,109,98,101,114,0,0,105,110,102,111,82,101,115,112,111,110,115,101,0,0,0,0,70,105,108,101,115,121,115,116,101,109,32,99,97,108,108,32,109,97,100,101,32,119,105,116,104,111,117,116,32,105,110,105,116,105,97,108,105,122,97,116,105,111,110,0,0,0,0,0,83,72,73,70,84,0,0,0,37,115,32,105,115,32,114,101,97,100,32,111,110,108,121,46,10,0,0,0,0,0,0,0,69,78,84,69,82,0,0,0,87,79,82,76,68,95,49,0,102,115,95,99,100,110,0,0,100,101,118,101,108,111,112,101,114,0,0,0,0,0,0,0,84,65,66,0,0,0,0,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,74,80,69,71,45,99,111,109,112,114,101,115,115,101,100,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,99,117,108,108,32,112,97,114,109,115,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,0,114,95,100,108,105,103,104,116,77,111,100,101,0,0,0,0,103,108,115,108,47,37,115,95,102,112,46,103,108,115,108,0,67,111,110,110,101,99,116,82,101,115,112,111,110,115,101,32,119,105,116,104,32,98,97,100,32,99,104,97,108,108,101,110,103,101,32,114,101,99,101,105,118,101,100,46,32,73,103,110,111,114,101,100,46,10,0,0,80,83,95,80,79,87,69,82,85,80,83,0,0,0,0,0,48,0,0,0,0,0,0,0,69,114,114,111,114,32,100,117,114,105,110,103,32,105,110,105,116,105,97,108,105,122,97,116,105,111,110,0,0,0,0,0,87,79,82,76,68,95,48,0,83,101,114,118,101,114,32,100,105,115,99,111,110,110,101,99,116,101,100,0,0,0,0,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,0,0,0,0,0,0,79,112,101,110,101,100,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,0,0,0,0,0,0,0,99,117,108,108,0,0,0,0,114,95,98,97,115,101,71,108,111,115,115,0,0,0,0,0,103,108,115,108,47,37,115,95,118,112,46,103,108,115,108,0,115,116,114,105,110,103,0,0,66,97,100,32,99,111,110,110,101,99,116,82,101,115,112,111,110,115,101,32,114,101,99,101,105,118,101,100,46,32,73,103,110,111,114,101,100,46,10,0,80,83,95,65,77,77,79,0,102,115,95,100,101,98,117,103,0,0,0,0,0,0,0,0,70,101,98,32,50,51,32,50,48,49,52,0,0,0,0,0,83,69,77,73,67,79,76,79,78,0,0,0,0,0,0,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101,120,116,117,114,101,0,0,0,46,99,102,103,0,0,0,0,67,108,111,115,101,100,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,0,0,0,0,0,0,0,108,105,103,104,116,0,0,0,48,46,48,52,0,0,0,0,67,111,117,108,100,110,39,116,32,99,111,109,112,105,108,101,32,115,104,97,100,101,114,0,99,111,117,108,100,110,39,116,32,114,101,97,100,32,101,120,112,101,99,116,101,100,32,116,111,107,101,110,0,0,0,0,99,111,110,110,101,99,116,82,101,115,112,111,110,115,101,32,102,114,111,109,32,119,114,111,110,103,32,97,100,100,114,101,115,115,46,32,73,103,110,111,114,101,100,46,10,0,0,0,80,83,95,80,69,82,83,73,83,84,65,78,84,0,0,0,45,45,45,45,45,32,70,83,95,83,116,97,114,116,117,112,32,45,45,45,45,45,10,0,101,109,115,99,114,105,112,116,101,110,45,0,0,0,0,0,48,0,0,0,0,0,0,0,77,65,88,95,80,65,67,75,69,84,95,85,83,69,82,67,77,68,83,10,0,0,0,0,80,65,85,83,69,0,0,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,0,67,77,111,100,95,76,111,97,100,66,114,117,115,104,83,105,100,101,115,58,32,98,97,100,32,115,104,97,100,101,114,78,117,109,58,32,37,105,0,0,32,32,83,115,61,37,100,44,32,83,101,61,37,100,44,32,65,104,61,37,100,44,32,65,108,61,37,100,0,0,0,0,115,107,121,112,97,114,109,115,0,0,0,0,0,0,0,0,114,95,98,97,115,101,83,112,101,99,117,108,97,114,0,0,37,115,10,0,0,0,0,0,101,120,112,101,99,116,101,100,32,37,115,44,32,102,111,117,110,100,32,37,115,0,0,0,99,111,110,110,101,99,116,82,101,115,112,111,110,115,101,32,112,97,99,107,101,116,32,119,104,105,108,101,32,110,111,116,32,99,111,110,110,101,99,116,105,110,103,46,32,73,103,110,111,114,101,100,46,10,0,0,80,83,95,83,84,65,84,83,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,103,97,109,101,32,102,111,108,100,101,114,0,0,0,0,0,86,77,95,67,114,101,97,116,101,32,111,110,32,85,73,32,102,97,105,108,101,100,0,0,105,111,113,51,32,49,46,51,54,95,71,73,84,95,52,102,55,100,55,98,102,45,50,48,49,52,45,48,50,45,48,49,0,0,0,0,0,0,0,0,75,80,95,69,81,85,65,76,83,0,0,0,0,0,0,0,83,67,82,95,85,112,100,97,116,101,83,99,114,101,101,110,58,32,114,101,99,117,114,115,105,118,101,108,121,32,99,97,108,108,101,100,0,0,0,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,0,103,108,78,111,114,109,97,108,80,111,105,110,116,101,114,0,32,32,32,32,67,111,109,112,111,110,101,110,116,32,37,100,58,32,100,99,61,37,100,32,97,99,61,37,100,0,0,0,87,65,82,78,73,78,71,58,32,109,105,115,115,105,110,103,32,112,97,114,109,32,102,111,114,32,39,102,111,103,80,97,114,109,115,39,32,107,101,121,119,111,114,100,32,105,110,32,115,104,97,100,101,114,32,39,37,115,39,10,0,0,0,0,114,95,115,112,101,99,117,108,97,114,73,115,77,101,116,97,108,108,105,99,0,0,0,0,99,111,109,112,105,108,101,32,108,111,103,58,10,0,0,0,66,111,103,117,115,32,105,110,112,117,116,32,99,111,108,111,114,115,112,97,99,101,0,0,99,111,117,108,100,110,39,116,32,102,105,110,100,32,101,120,112,101,99,116,101,100,32,37,115,0,0,0,0,0,0,0,68,117,112,32,99,111,110,110,101,99,116,32,114,101,99,101,105,118,101,100,46,32,73,103,110,111,114,101,100,46,10,0,67,111,117,108,100,110,39,116,32,103,101,116,32,97,32,118,105,115,117,97,108,10,0,0,82,95,66,105,110,100,78,117,108,108,86,66,79,58,32,78,85,76,76,32,118,98,111,0,37,115,32,0,0,0,0,0,101,120,101,99,32,113,51,99,111,110,102,105,103,46,99,102,103,10,0,0,0,0,0,0,37,51,105,58,37,115,10,0,37,115,32,37,115,32,37,115,10,0,0,0,0,0,0,0,75,80,95,83,84,65,82,0,110,101,97,114,101,115,116,0,37,56,105,32,58,32,84,111,116,97,108,32,109,111,100,101,108,115,10,0,0,0,0,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,0,0,0,0,0,0,83,116,97,114,116,32,79,102,32,83,99,97,110,58,32,37,100,32,99,111,109,112,111,110,101,110,116,115,0,0,0,0,102,111,103,80,97,114,109,115,0,0,0,0,0,0,0,0,48,46,51,0,0,0,0,0,78,111,32,99,111,109,112,105,108,101,32,108,111,103,46,10,0,0,0,0,0,0,0,0,116,111,103,103,108,101,99,111,110,115,111,108,101,0,0,0,115,116,114,105,110,103,32,108,111,110,103,101,114,32,116,104,97,110,32,77,65,88,95,84,79,75,69,78,32,37,100,0,99,111,110,110,101,99,116,82,101,115,112,111,110,115,101,0,77,111,100,101,32,32,50,58,32,53,49,50,120,51,56,52,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,112,108,97,121,101,114,83,116,97,116,101,32,102,105,101,108,100,32,99,111,117,110,116,0,70,83,95,70,79,112,101,110,70,105,108,101,66,121,77,111,100,101,58,32,98,97,100,32,109,111,100,101,0,0,0,0,115,68,88,84,49,0,0,0,102,115,95,103,97,109,101,0,75,80,95,78,85,77,76,79,67,75,0,0,0,0,0,0,35,100,101,102,105,110,101,32,85,83,69,95,68,69,70,79,82,77,95,86,69,82,84,69,88,69,83,10,0,0,0,0,70,66,79,95,67,114,101,97,116,101,58,32,98,97,100,32,104,101,105,103,104,116,32,37,105,0,0,0,0,0,0,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,65,82,66,0,0,0,0,87,97,114,110,105,110,103,58,32,110,111,116,32,101,110,111,117,103,104,32,115,116,101,110,99,105,108,32,98,105,116,115,32,116,111,32,109,101,97,115,117,114,101,32,111,118,101,114,100,114,97,119,58,32,37,100,10,0,0,0,0,0,0,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,37,102,32,37,102,32,37,102,0,0,0,0,0,0,0,0,83,116,97,114,116,32,111,102,32,73,109,97,103,101,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,115,32,115,101,116,0,0,0,101,110,116,105,116,121,77,101,114,103,97,98,108,101,0,0,114,95,100,101,108,117,120,101,83,112,101,99,117,108,97,114,0,0,0,0,0,0,0,0,115,104,97,100,101,114,115,32,102,97,105,108,101,100,32,116,111,32,108,105,110,107,0,0,102,111,117,110,100,32,36,32,97,116,32,101,110,100,32,111,102,32,108,105,110,101,0,0,99,104,97,108,108,101,110,103,101,82,101,115,112,111,110,115,101,58,32,37,100,10,0,0,114,99,104,97,116,46,99,0,37,51,105,58,32,112,108,97,121,101,114,115,116,97,116,101,32,0,0,0,0,0,0,0,102,115,95,103,97,109,101,0,71,97,109,101,32,100,105,114,101,99,116,111,114,121,32,99,104,97,110,103,101,100,0,0,83,121,115,95,85,110,108,111,97,100,68,108,108,40,78,85,76,76,41,10,0,0,0,0,79,75,10,0,0,0,0,0,75,80,95,80,76,85,83,0,105,110,95,106,111,121,115,116,105,99,107,68,101,98,117,103,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,115,116,114,117,99,116,117,114,101,32,102,105,101,108,100,32,37,115,0,0,0,0,0,0,42,61,0,0,0,0,0,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,0,0,0,0,44,0,0,0,0,0,0,0,32,32,32,32,67,111,109,112,111,110,101,110,116,32,37,100,58,32,37,100,104,120,37,100,118,32,113,61,37,100,0,0,45,45,45,45,45,45,45,32,66,111,116,76], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+174084); +/* memory initializer */ allocate([105,98,32,73,110,105,116,105,97,108,105,122,97,116,105,111,110,32,45,45,45,45,45,45,45,10,0,0,112,111,108,121,103,111,110,79,102,102,115,101,116,0,0,0,114,95,99,117,98,101,77,97,112,112,105,110,103,0,0,0,123,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,119,101,97,112,111,110,105,110,102,111,0,0,0,0,0,0,66,111,116,70,117,110,99,66,111,98,83,116,97,114,116,69,110,100,58,32,110,111,32,101,110,116,105,116,121,32,119,105,116,104,32,109,111,100,101,108,32,37,100,10,0,0,0,0,102,111,117,110,100,32,36,32,119,105,116,104,111,117,116,32,110,97,109,101,0,0,0,0,109,97,120,95,105,116,101,109,105,110,102,111,0,0,0,0,66,97,100,32,99,104,97,108,108,101,110,103,101,32,102,111,114,32,99,104,97,108,108,101,110,103,101,82,101,115,112,111,110,115,101,46,32,73,103,110,111,114,101,100,46,10,0,0,114,99,104,97,116,102,105,108,101,0,0,0,0,0,0,0,99,111,117,110,108,100,110,39,116,32,108,111,97,100,32,37,115,10,0,0,0,0,0,0,98,111,116,102,105,108,101,115,0,0,0,0,0,0,0,0,65,65,83,95,76,105,110,107,69,110,116,105,116,121,58,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,10,0,106,117,109,112,112,97,100,95,101,110,116,0,0,0,0,0,37,115,32,105,115,32,110,111,116,32,97,32,114,111,117,116,101,32,99,97,99,104,101,32,100,117,109,112,10,0,0,0,102,115,95,104,111,109,101,112,97,116,104,0,0,0,0,0,101,120,101,99,32,97,117,116,111,101,120,101,99,46,99,102,103,10,0,0,0,0,0,0,99,108,97,115,115,110,97,109,101,0,0,0,0,0,0,0,112,104,121,115,95,109,97,120,118,101,108,111,99,105,116,121,0,0,0,0,0,0,0,0,75,80,95,77,73,78,85,83,0,0,0,0,0,0,0,0,115,97,118,101,114,111,117,116,105,110,103,99,97,99,104,101,0,0,0,0,0,0,0,0,112,111,114,116,97,108,32,97,114,101,97,32,37,100,32,104,97,115,32,110,111,32,102,114,111,110,116,32,99,108,117,115,116,101,114,13,10,0,0,0,87,65,82,78,73,78,71,58,32,105,110,99,111,109,112,108,101,116,101,32,108,105,110,101,32,97,116,32,101,110,100,32,111,102,32,102,105,108,101,10,0,0,0,0,0,0,0,0,81,95,115,116,114,99,97,116,58,32,97,108,114,101,97,100,121,32,111,118,101,114,102,108,111,119,101,100,0,0,0,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,0,0,0,0,83,116,97,114,116,32,79,102,32,70,114,97,109,101,32,48,120,37,48,50,120,58,32,119,105,100,116,104,61,37,117,44,32,104,101,105,103,104,116,61,37,117,44,32,99,111,109,112,111,110,101,110,116,115,61,37,100,0,0,0,0,0,0,0,100,109,95,0,0,0,0,0,110,111,112,105,99,109,105,112,0,0,0,0,0,0,0,0,114,95,112,97,114,97,108,108,97,120,77,97,112,112,105,110,103,0,0,0,0,0,0,0,97,116,116,114,95,84,97,110,103,101,110,116,50,0,0,0,100,101,109,111,101,110,100,46,114,111,113,0,0,0,0,0,37,115,32,104,97,115,32,110,111,32,73,80,118,52,32,97,100,100,114,101,115,115,46,10,0,0,0,0,0,0,0,0,115,118,95,114,117,110,110,105,110,103,0,0,0,0,0,0,101,118,97,108,105,110,116,0,94,51,87,97,114,110,105,110,103,58,32,83,101,114,118,101,114,32,114,101,112,111,114,116,115,32,112,114,111,116,111,99,111,108,32,118,101,114,115,105,111,110,32,37,100,44,32,119,101,32,104,97,118,101,32,37,100,46,32,84,114,121,105,110,103,32,97,110,121,119,97,121,115,46,10,0,0,0,0,0,113,97,103,97,109,101,0,0,48,0,0,0,0,0,0,0,32,32,32,32,114,101,106,101,99,116,101,100,32,99,111,110,110,101,99,116,32,102,114,111,109,32,118,101,114,115,105,111,110,32,37,105,10,0,0,0,97,108,108,98,111,116,115,0,103,114,97,112,112,108,101,80,111,105,110,116,91,50,93,0,109,97,112,95,114,101,115,116,97,114,116,0,0,0,0,0,102,115,95,98,97,115,101,112,97,116,104,0,0,0,0,0,98,111,116,95,100,101,118,101,108,111,112,101,114,0,0,0,101,120,101,99,32,113,51,99,111,110,102,105,103,46,99,102,103,10,0,0,0,0,0,0,49,50,48,0,0,0,0,0,75,80,95,83,76,65,83,72,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,73,80,54,58,32,37,115,10,0,0,0,0,0,0,0,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,0,0,37,115,58,79,117,116,32,111,102,32,111,114,100,101,114,32,112,97,99,107,101,116,32,37,105,32,97,116,32,37,105,10,0,0,0,0,0,0,0,0,83,109,111,111,116,104,105,110,103,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,119,105,116,104,32,110,111,110,115,116,97,110,100,97,114,100,32,115,97,109,112,108,105,110,103,32,114,97,116,105,111,115,0,0,0,0,0,0,0,0,110,111,109,105,112,109,97,112,115,0,0,0,0,0,0,0,114,95,100,101,108,117,120,101,77,97,112,112,105,110,103,0,112,111,115,46,116,114,66,97,115,101,91,49,93,0,0,0,97,116,116,114,95,78,111,114,109,97,108,50,0,0,0,0,117,110,107,110,111,119,110,32,112,114,101,99,111,109,112,105,108,101,114,32,100,105,114,101,99,116,105,118,101,32,37,115,0,0,0,0,0,0,0,0,85,110,119,97,110,116,101,100,32,99,104,97,108,108,101,110,103,101,32,114,101,115,112,111,110,115,101,32,114,101,99,101,105,118,101,100,46,32,73,103,110,111,114,101,100,46,10,0,110,111,99,104,97,116,0,0,97,108,108,0,0,0,0,0,67,84,82,76,0,0,0,0,108,97,116,99,104,101,100,58,32,34,37,115,34,10,0,0,103,114,97,112,112,108,101,80,111,105,110,116,91,49,93,0,67,111,117,108,100,110,39,116,32,108,111,97,100,32,100,101,102,97,117,108,116,46,99,102,103,0,0,0,0,0,0,0,101,120,101,99,32,100,101,102,97,117,108,116,46,99,102,103,10,0,0,0,0,0,0,0,75,80,95,68,69,76,0,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,0,0,82,83,84,37,100,0,0,0,115,117,114,102,97,99,101,80,97,114,109,0,0,0,0,0,114,95,115,112,101,99,117,108,97,114,77,97,112,112,105,110,103,0,0,0,0,0,0,0,97,116,116,114,95,80,111,115,105,116,105,111,110,50,0,0,102,111,117,110,100,32,35,32,97,116,32,101,110,100,32,111,102,32,108,105,110,101,0,0,99,104,97,108,108,101,110,103,101,82,101,115,112,111,110,115,101,0,0,0,0,0,0,0,109,97,116,99,104,46,99,0,85,115,97,103,101,58,32,107,105,99,107,32,60,112,108,97,121,101,114,32,110,97,109,101,62,10,107,105,99,107,32,97,108,108,32,61,32,107,105,99,107,32,101,118,101,114,121,111,110,101,10,107,105,99,107,32,97,108,108,98,111,116,115,32,61,32,107,105,99,107,32,97,108,108,32,98,111,116,115,10,0,0,0,0,0,0,0,0,103,114,97,112,112,108,101,80,111,105,110,116,91,48,93,0,100,101,102,97,117,108,116,46,99,102,103,0,0,0,0,0,37,115,32,117,110,100,101,102,105,110,101,100,10,0,0,0,75,80,95,73,78,83,0,0,83,101,114,118,101,114,32,100,105,115,99,111,110,110,101,99,116,101,100,32,45,32,37,115,0,0,0,0,0,0,0,0,67,76,95,71,101,116,85,115,101,114,67,109,100,58,32,37,105,32,62,61,32,37,105,0,70,83,95,83,86,95,82,101,110,97,109,101,0,0,0,0,70,83,95,83,86,95,70,79,112,101,110,70,105,108,101,87,114,105,116,101,0,0,0,0,70,83,95,72,111,109,101,82,101,109,111,118,101,0,0,0,70,83,95,70,79,112,101,110,70,105,108,101,87,114,105,116,101,0,0,0,0,0,0,0,70,83,95,70,79,112,101,110,70,105,108,101,65,112,112,101,110,100,0,0,0,0,0,0,70,83,95,70,67,114,101,97,116,101,79,112,101,110,80,105,112,101,70,105,108,101,0,0,0,0,0,0,0,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,36,0,0,0,35,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,20,0,0,0,22,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,193,0,0,0,193,0,0,0,193,0,0,0,65,0,0,0,65,0,0,0,65,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,154,121,102,102,0,0,0,0,184,126,51,115,0,0,0,0,3,0,0,0,255,255,255,255,2,0,0,0,253,255,255,255,1,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,255,255,255,255,253,255,255,255,2,0,0,0,254,255,255,255,255,255,255,255,3,0,0,0,2,0,0,0,255,255,255,255,253,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,255,255,255,255,1,0,0,0,0,8,13,16,19,21,23,24,26,27,28,29,30,31,32,32,33,34,34,35,36,36,37,37,1,0,0,0,171,170,170,170,205,204,204,204,183,109,219,182,57,142,227,56,163,139,46,186,197,78,236,196,239,238,238,238,241,240,240,240,27,202,107,40,61,207,243,60,167,55,189,233,41,92,143,194,19,218,75,104,53,194,114,79,223,123,239,189,225,131,15,62,139,175,248,138,173,27,76,145,151,111,249,150,25,156,143,193,131,190,160,47,165,79,250,164,207,70,125,103,209,88,31,26,251,250,250,250,29,82,19,140,135,181,111,88,9,238,35,184,243,216,138,160,21,151,12,193,191,239,251,190,193,15,252,192,107,76,164,7,141,18,63,163,119,169,39,227,249,241,227,199,99,201,47,150,133,56,43,63,175,22,55,97,177,72,25,120,219,67,46,43,253,252,252,252,103,235,208,111,233,71,63,250,211,47,253,210,245,211,79,63,159,91,226,212,161,163,2,95,75,129,90,191,109,177,50,124,87,27,67,211,217,143,253,216,0,0,0,0,184,126,154,121,0,0,0,0,56,43,2,0,104,42,2,0,88,44,2,0,128,43,2,0,232,187,1,0,224,144,2,0,160,45,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,193,0,0,128,193,0,0,0,193,0,0,0,0,0,0,128,65,0,0,128,65,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,255,3,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,255,255,255,255,1,0,0,0,3,0,0,0,2,0,0,0,255,255,255,255,3,0,0,0,254,255,255,255,254,255,255,255,255,255,255,255,3,0,0,0,254,255,255,255,1,0,0,0,253,255,255,255,0,0,112,193,0,0,112,193,0,0,112,193,0,0,0,0,0,0,112,65,0,0,112,65,0,0,112,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+184324); + + + +var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); + +assert(tempDoublePtr % 8 == 0); + +function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much + + HEAP8[tempDoublePtr] = HEAP8[ptr]; + + HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + + HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; + + HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; + +} + +function copyTempDouble(ptr) { + + HEAP8[tempDoublePtr] = HEAP8[ptr]; + + HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + + HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; + + HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; + + HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; + + HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; + + HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; + + HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; + +} + + + + + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.set(HEAPU8.subarray(src, src+num), dest); + return dest; + } + Module["_memcpy"] = _memcpy;var _llvm_memcpy_p0i8_p0i8_i32=_memcpy; + + function _llvm_lifetime_start() {} + + + + + function _isspace(chr) { + return (chr == 32) || (chr >= 9 && chr <= 13); + } + + + var ___errno_state=0;function ___setErrNo(value) { + // For convenient setting and returning of errno. + HEAP32[((___errno_state)>>2)]=value; + return value; + } + + var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function __parseInt(str, endptr, base, min, max, bits, unsign) { + // Skip space. + while (_isspace(HEAP8[(str)])) str++; + + // Check for a plus/minus sign. + var multiplier = 1; + if (HEAP8[(str)] == 45) { + multiplier = -1; + str++; + } else if (HEAP8[(str)] == 43) { + str++; + } + + // Find base. + var finalBase = base; + if (!finalBase) { + if (HEAP8[(str)] == 48) { + if (HEAP8[((str+1)|0)] == 120 || + HEAP8[((str+1)|0)] == 88) { + finalBase = 16; + str += 2; + } else { + finalBase = 8; + str++; + } + } + } else if (finalBase==16) { + if (HEAP8[(str)] == 48) { + if (HEAP8[((str+1)|0)] == 120 || + HEAP8[((str+1)|0)] == 88) { + str += 2; + } + } + } + if (!finalBase) finalBase = 10; + + // Get digits. + var chr; + var ret = 0; + while ((chr = HEAP8[(str)]) != 0) { + var digit = parseInt(String.fromCharCode(chr), finalBase); + if (isNaN(digit)) { + break; + } else { + ret = ret * finalBase + digit; + str++; + } + } + + // Apply sign. + ret *= multiplier; + + // Set end pointer. + if (endptr) { + HEAP32[((endptr)>>2)]=str; + } + + // Unsign if needed. + if (unsign) { + if (Math.abs(ret) > max) { + ret = max; + ___setErrNo(ERRNO_CODES.ERANGE); + } else { + ret = unSign(ret, bits); + } + } + + // Validate range. + if (ret > max || ret < min) { + ret = ret > max ? max : min; + ___setErrNo(ERRNO_CODES.ERANGE); + } + + if (bits == 64) { + return ((asm["setTempRet0"]((tempDouble=ret,(+(Math_abs(tempDouble))) >= (+1) ? (tempDouble > (+0) ? ((Math_min((+(Math_floor((tempDouble)/(+4294967296)))), (+4294967295)))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+4294967296))))))>>>0) : 0)),ret>>>0)|0); + } + + return ret; + }function _strtol(str, endptr, base) { + return __parseInt(str, endptr, base, -2147483648, 2147483647, 32); // LONG_MIN, LONG_MAX. + }function _atoi(ptr) { + return _strtol(ptr, null, 10); + } + + + + Module["_memset"] = _memset;var _llvm_memset_p0i8_i32=_memset; + + + Module["_strlen"] = _strlen; + + function _llvm_lifetime_end() {} + + + Module["_strcat"] = _strcat; + + + + + + + + var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; + + var TTY={ttys:[],init:function () { + // https://github.com/kripken/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // currently, FS.init does not distinguish if process.stdin is a file or TTY + // // device, it always assumes it's a TTY device. because of this, we're forcing + // // process.stdin to UTF8 encoding to at least make stdin reading compatible + // // with text files until FS.init can be refactored. + // process['stdin']['setEncoding']('utf8'); + // } + },shutdown:function () { + // https://github.com/kripken/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? + // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation + // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? + // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle + // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call + // process['stdin']['pause'](); + // } + },register:function (dev, ops) { + TTY.ttys[dev] = { input: [], output: [], ops: ops }; + FS.registerDevice(dev, TTY.stream_ops); + },stream_ops:{open:function (stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + stream.tty = tty; + stream.seekable = false; + },close:function (stream) { + // flush any pending line data + if (stream.tty.output.length) { + stream.tty.ops.put_char(stream.tty, 10); + } + },read:function (stream, buffer, offset, length, pos /* ignored */) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(ERRNO_CODES.ENXIO); + } + 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(ERRNO_CODES.EIO); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + },write:function (stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(ERRNO_CODES.ENXIO); + } + for (var i = 0; i < length; i++) { + try { + stream.tty.ops.put_char(stream.tty, buffer[offset+i]); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + }},default_tty_ops:{get_char:function (tty) { + if (!tty.input.length) { + var result = null; + if (ENVIRONMENT_IS_NODE) { + result = process['stdin']['read'](); + if (!result) { + if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) { + return null; // EOF + } + return undefined; // no data available + } + } else if (typeof window != 'undefined' && + typeof window.prompt == 'function') { + // Browser. + result = window.prompt('Input: '); // returns null on cancel + if (result !== null) { + result += '\n'; + } + } else if (typeof readline == 'function') { + // Command line. + result = readline(); + if (result !== null) { + result += '\n'; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + },put_char:function (tty, val) { + if (val === null || val === 10) { + Module['print'](tty.output.join('')); + tty.output = []; + } else { + tty.output.push(TTY.utf8.processCChar(val)); + } + }},default_tty1_ops:{put_char:function (tty, val) { + if (val === null || val === 10) { + Module['printErr'](tty.output.join('')); + tty.output = []; + } else { + tty.output.push(TTY.utf8.processCChar(val)); + } + }}}; + + var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) { + return MEMFS.createNode(null, '/', 16384 | 0777, 0); + },createNode:function (parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + // no supported + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (!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, + 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 + } + }, + 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.contents = []; + node.contentMode = MEMFS.CONTENT_FLEXIBLE; + } 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(); + // add the new node to the parent + if (parent) { + parent.contents[name] = node; + } + return node; + },ensureFlexible:function (node) { + if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { + var contents = node.contents; + node.contents = Array.prototype.slice.call(contents); + node.contentMode = MEMFS.CONTENT_FLEXIBLE; + } + },node_ops:{getattr:function (node) { + var attr = {}; + // device numbers reuse inode numbers. + 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.contents.length; + } 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); + // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), + // but this is not required by the standard. + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + },setattr:function (node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.ensureFlexible(node); + var contents = node.contents; + if (attr.size < contents.length) contents.length = attr.size; + else while (attr.size > contents.length) contents.push(0); + } + },lookup:function (parent, name) { + throw FS.genericErrors[ERRNO_CODES.ENOENT]; + },mknod:function (parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + },rename:function (old_node, new_dir, new_name) { + // if we're overwriting a directory at new_name, make sure it's empty. + 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(ERRNO_CODES.ENOTEMPTY); + } + } + } + // do the internal rewiring + delete old_node.parent.contents[old_node.name]; + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + old_node.parent = new_dir; + },unlink:function (parent, name) { + delete parent.contents[name]; + },rmdir:function (parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); + } + delete parent.contents[name]; + },readdir:function (node) { + var entries = ['.', '..'] + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + },symlink:function (parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 0777 | 40960, 0); + node.link = oldpath; + return node; + },readlink:function (node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + return node.link; + }},stream_ops:{read:function (stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= contents.length) + return 0; + var size = Math.min(contents.length - position, length); + assert(size >= 0); + if (size > 8 && contents.subarray) { // non-trivial, and typed array + 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 (stream, buffer, offset, length, position, canOwn) { + var node = stream.node; + node.timestamp = Date.now(); + var contents = node.contents; + if (length && contents.length === 0 && position === 0 && buffer.subarray) { + // just replace it with the new data + if (canOwn && offset === 0) { + node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source. + node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED; + } else { + node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); + node.contentMode = MEMFS.CONTENT_FIXED; + } + return length; + } + MEMFS.ensureFlexible(node); + var contents = node.contents; + while (contents.length < position) contents.push(0); + for (var i = 0; i < length; i++) { + contents[position + i] = buffer[offset + i]; + } + return length; + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { // SEEK_CUR. + position += stream.position; + } else if (whence === 2) { // SEEK_END. + if (FS.isFile(stream.node.mode)) { + position += stream.node.contents.length; + } + } + if (position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + stream.ungotten = []; + stream.position = position; + return position; + },allocate:function (stream, offset, length) { + MEMFS.ensureFlexible(stream.node); + var contents = stream.node.contents; + var limit = offset + length; + while (limit > contents.length) contents.push(0); + },mmap:function (stream, buffer, offset, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + var ptr; + var allocated; + var contents = stream.node.contents; + // Only make a new copy when MAP_PRIVATE is specified. + if ( !(flags & 2) && + (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { + // We can't emulate MAP_SHARED when the file is not backed by the buffer + // we're mapping to (e.g. the HEAP buffer). + allocated = false; + ptr = contents.byteOffset; + } else { + // Try to avoid unnecessary slices. + 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 = _malloc(length); + if (!ptr) { + throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); + } + buffer.set(contents, ptr); + } + return { ptr: ptr, allocated: allocated }; + }}}; + + var IDBFS={dbs:{},indexedDB:function () { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { + // reuse all of the core MEMFS functionality + return MEMFS.mount.apply(null, arguments); + },syncfs:function (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); + }); + }); + },getDB:function (name, callback) { + // check the cache first + 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); + } + 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); + } + + fileStore.createIndex('timestamp', 'timestamp', { unique: false }); + }; + req.onsuccess = function() { + db = req.result; + + // add to the cache + IDBFS.dbs[name] = db; + callback(null, db); + }; + req.onerror = function() { + callback(this.error); + }; + },getLocalSet:function (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, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); + } + + entries[path] = { timestamp: stat.mtime }; + } + + return callback(null, { type: 'local', entries: entries }); + },getRemoteSet:function (mount, callback) { + var entries = {}; + + IDBFS.getDB(mount.mountpoint, function(err, db) { + if (err) return callback(err); + + var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); + transaction.onerror = function() { callback(this.error); }; + + 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(); + }; + }); + },loadLocalEntry:function (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)) { + return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); + } else { + return callback(new Error('node type not supported')); + } + },storeLocalEntry:function (path, entry, callback) { + try { + if (FS.isDir(entry.mode)) { + FS.mkdir(path, entry.mode); + } else if (FS.isFile(entry.mode)) { + FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); + } else { + return callback(new Error('node type not supported')); + } + + FS.utime(path, entry.timestamp, entry.timestamp); + } catch (e) { + return callback(e); + } + + callback(null); + },removeLocalEntry:function (path, callback) { + try { + var lookup = FS.lookupPath(path); + 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 (store, path, callback) { + var req = store.get(path); + req.onsuccess = function(event) { callback(null, event.target.result); }; + req.onerror = function() { callback(this.error); }; + },storeRemoteEntry:function (store, path, entry, callback) { + var req = store.put(entry, path); + req.onsuccess = function() { callback(null); }; + req.onerror = function() { callback(this.error); }; + },removeRemoteEntry:function (store, path, callback) { + var req = store.delete(path); + req.onsuccess = function() { callback(null); }; + req.onerror = function() { callback(this.error); }; + },reconcile:function (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 > e2.timestamp) { + create.push(key); + total++; + } + }); + + var remove = []; + Object.keys(dst.entries).forEach(function (key) { + var e = dst.entries[key]; + var e2 = src.entries[key]; + if (!e2) { + remove.push(key); + total++; + } + }); + + if (!total) { + return callback(null); + } + + var errored = false; + var completed = 0; + 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) { + if (!done.errored) { + done.errored = true; + return callback(err); + } + return; + } + if (++completed >= total) { + return callback(null); + } + }; + + transaction.onerror = function() { done(this.error); }; + + // sort paths in ascending order so directory entries are created + // before the files inside them + 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); + }); + } + }); + + // sort paths in descending order so files are deleted before their + // parent directories + remove.sort().reverse().forEach(function(path) { + if (dst.type === 'local') { + IDBFS.removeLocalEntry(path, done); + } else { + IDBFS.removeRemoteEntry(store, path, done); + } + }); + }}; + + var NODEFS={isWindows:false,staticInit:function () { + NODEFS.isWindows = !!process.platform.match(/^win/); + },mount:function (mount) { + assert(ENVIRONMENT_IS_NODE); + return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); + },createNode:function (parent, name, mode, dev) { + if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var node = FS.createNode(parent, name, mode); + node.node_ops = NODEFS.node_ops; + node.stream_ops = NODEFS.stream_ops; + return node; + },getMode:function (path) { + var stat; + try { + stat = fs.lstatSync(path); + if (NODEFS.isWindows) { + // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so + // propagate write bits to execute bits. + stat.mode = stat.mode | ((stat.mode & 146) >> 1); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + return stat.mode; + },realPath:function (node) { + var parts = []; + while (node.parent !== node) { + parts.push(node.name); + node = node.parent; + } + parts.push(node.mount.opts.root); + parts.reverse(); + return PATH.join.apply(null, parts); + },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { + if (flags in NODEFS.flagsToPermissionStringMap) { + return NODEFS.flagsToPermissionStringMap[flags]; + } else { + return flags; + } + },node_ops:{getattr:function (node) { + var path = NODEFS.realPath(node); + var stat; + try { + stat = fs.lstatSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. + // See http://support.microsoft.com/kb/140365 + if (NODEFS.isWindows && !stat.blksize) { + stat.blksize = 4096; + } + if (NODEFS.isWindows && !stat.blocks) { + stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; + } + return { + dev: stat.dev, + ino: stat.ino, + mode: stat.mode, + nlink: stat.nlink, + uid: stat.uid, + gid: stat.gid, + rdev: stat.rdev, + size: stat.size, + atime: stat.atime, + mtime: stat.mtime, + ctime: stat.ctime, + blksize: stat.blksize, + blocks: stat.blocks + }; + },setattr:function (node, attr) { + var path = NODEFS.realPath(node); + try { + if (attr.mode !== undefined) { + fs.chmodSync(path, attr.mode); + // update the common node structure mode as well + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + var date = new Date(attr.timestamp); + fs.utimesSync(path, date, date); + } + if (attr.size !== undefined) { + fs.truncateSync(path, attr.size); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },lookup:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + var mode = NODEFS.getMode(path); + return NODEFS.createNode(parent, name, mode); + },mknod:function (parent, name, mode, dev) { + var node = NODEFS.createNode(parent, name, mode, dev); + // create the backing node for this in the fs root as well + var path = NODEFS.realPath(node); + try { + if (FS.isDir(node.mode)) { + fs.mkdirSync(path, node.mode); + } else { + fs.writeFileSync(path, '', { mode: node.mode }); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + return node; + },rename:function (oldNode, newDir, newName) { + var oldPath = NODEFS.realPath(oldNode); + var newPath = PATH.join2(NODEFS.realPath(newDir), newName); + try { + fs.renameSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },unlink:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.unlinkSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },rmdir:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.rmdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },readdir:function (node) { + var path = NODEFS.realPath(node); + try { + return fs.readdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },symlink:function (parent, newName, oldPath) { + var newPath = PATH.join2(NODEFS.realPath(parent), newName); + try { + fs.symlinkSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },readlink:function (node) { + var path = NODEFS.realPath(node); + try { + return fs.readlinkSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + }},stream_ops:{open:function (stream) { + var path = NODEFS.realPath(stream.node); + try { + if (FS.isFile(stream.node.mode)) { + stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },close:function (stream) { + try { + if (FS.isFile(stream.node.mode) && stream.nfd) { + fs.closeSync(stream.nfd); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },read:function (stream, buffer, offset, length, position) { + // FIXME this is terrible. + var nbuffer = new Buffer(length); + var res; + try { + res = fs.readSync(stream.nfd, nbuffer, 0, length, position); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + if (res > 0) { + for (var i = 0; i < res; i++) { + buffer[offset + i] = nbuffer[i]; + } + } + return res; + },write:function (stream, buffer, offset, length, position) { + // FIXME this is terrible. + var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); + var res; + try { + res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + return res; + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { // SEEK_CUR. + position += stream.position; + } else if (whence === 2) { // SEEK_END. + if (FS.isFile(stream.node.mode)) { + try { + var stat = fs.fstatSync(stream.nfd); + position += stat.size; + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + } + } + + if (position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + + stream.position = position; + return position; + }}}; + + var _stdin=allocate(1, "i32*", ALLOC_STATIC); + + var _stdout=allocate(1, "i32*", ALLOC_STATIC); + + var _stderr=allocate(1, "i32*", ALLOC_STATIC); + + function _fflush(stream) { + // int fflush(FILE *stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html + // we don't currently perform any user-space buffering of data + }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) { + if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); + return ___setErrNo(e.errno); + },lookupPath:function (path, opts) { + path = PATH.resolve(FS.cwd(), path); + opts = opts || {}; + + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + for (var key in defaults) { + if (opts[key] === undefined) { + opts[key] = defaults[key]; + } + } + + if (opts.recurse_count > 8) { // max recursive lookup of 8 + throw new FS.ErrnoError(ERRNO_CODES.ELOOP); + } + + // split the path + var parts = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), false); + + // start at the root + 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) { + // stop resolving + break; + } + + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + + // jump to the mount's root node if this is a mountpoint + if (FS.isMountpoint(current)) { + if (!islast || (islast && opts.follow_mount)) { + current = current.mounted.root; + } + } + + // by default, lookupPath will not follow a symlink if it is the final path component. + // setting opts.follow = true will override this behavior. + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH.resolve(PATH.dirname(current_path), link); + + var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); + current = lookup.node; + + if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). + throw new FS.ErrnoError(ERRNO_CODES.ELOOP); + } + } + } + } + + return { path: current_path, node: current }; + },getPath:function (node) { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; + } + path = path ? node.name + '/' + path : node.name; + node = node.parent; + } + },hashName:function (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 (node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + },hashRemoveNode:function (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 (parent, name) { + var err = FS.mayLookup(parent); + if (err) { + throw new FS.ErrnoError(err); + } + 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; + } + } + // if we failed to find it in the cache, call into the VFS + return FS.lookup(parent, name); + },createNode:function (parent, name, mode, rdev) { + if (!FS.FSNode) { + FS.FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this; // root node sets parent to itself + } + 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; + }; + + FS.FSNode.prototype = {}; + + // compatibility + var readMode = 292 | 73; + var writeMode = 146; + + // NOTE we must use Object.defineProperties instead of individual calls to + // Object.defineProperty in order to make closure compiler happy + Object.defineProperties(FS.FSNode.prototype, { + read: { + get: function() { return (this.mode & readMode) === readMode; }, + set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } + }, + write: { + get: function() { return (this.mode & writeMode) === writeMode; }, + set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } + }, + isFolder: { + get: function() { return FS.isDir(this.mode); }, + }, + isDevice: { + get: function() { return FS.isChrdev(this.mode); }, + }, + }); + } + + var node = new FS.FSNode(parent, name, mode, rdev); + + FS.hashAddNode(node); + + return node; + },destroyNode:function (node) { + FS.hashRemoveNode(node); + },isRoot:function (node) { + return node === node.parent; + },isMountpoint:function (node) { + return !!node.mounted; + },isFile:function (mode) { + return (mode & 61440) === 32768; + },isDir:function (mode) { + return (mode & 61440) === 16384; + },isLink:function (mode) { + return (mode & 61440) === 40960; + },isChrdev:function (mode) { + return (mode & 61440) === 8192; + },isBlkdev:function (mode) { + return (mode & 61440) === 24576; + },isFIFO:function (mode) { + return (mode & 61440) === 4096; + },isSocket:function (mode) { + return (mode & 49152) === 49152; + },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { + var flags = FS.flagModes[str]; + if (typeof flags === 'undefined') { + throw new Error('Unknown file open mode: ' + str); + } + return flags; + },flagsToPermissionString:function (flag) { + var accmode = flag & 2097155; + var perms = ['r', 'w', 'rw'][accmode]; + if ((flag & 512)) { + perms += 'w'; + } + return perms; + },nodePermissions:function (node, perms) { + if (FS.ignorePermissions) { + return 0; + } + // return 0 if any user, group or owner bits are set. + if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { + return ERRNO_CODES.EACCES; + } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { + return ERRNO_CODES.EACCES; + } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { + return ERRNO_CODES.EACCES; + } + return 0; + },mayLookup:function (dir) { + return FS.nodePermissions(dir, 'x'); + },mayCreate:function (dir, name) { + try { + var node = FS.lookupNode(dir, name); + return ERRNO_CODES.EEXIST; + } catch (e) { + } + return FS.nodePermissions(dir, 'wx'); + },mayDelete:function (dir, name, isdir) { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var err = FS.nodePermissions(dir, 'wx'); + if (err) { + return err; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return ERRNO_CODES.ENOTDIR; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return ERRNO_CODES.EBUSY; + } + } else { + if (FS.isDir(node.mode)) { + return ERRNO_CODES.EISDIR; + } + } + return 0; + },mayOpen:function (node, flags) { + if (!node) { + return ERRNO_CODES.ENOENT; + } + if (FS.isLink(node.mode)) { + return ERRNO_CODES.ELOOP; + } else if (FS.isDir(node.mode)) { + if ((flags & 2097155) !== 0 || // opening for write + (flags & 512)) { + return ERRNO_CODES.EISDIR; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { + fd_start = fd_start || 0; + fd_end = fd_end || FS.MAX_OPEN_FDS; + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(ERRNO_CODES.EMFILE); + },getStream:function (fd) { + return FS.streams[fd]; + },createStream:function (stream, fd_start, fd_end) { + if (!FS.FSStream) { + FS.FSStream = function(){}; + FS.FSStream.prototype = {}; + // compatibility + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function() { return this.node; }, + set: function(val) { this.node = val; } + }, + isRead: { + get: function() { return (this.flags & 2097155) !== 1; } + }, + isWrite: { + get: function() { return (this.flags & 2097155) !== 0; } + }, + isAppend: { + get: function() { return (this.flags & 1024); } + } + }); + } + if (stream.__proto__) { + // reuse the object + stream.__proto__ = FS.FSStream.prototype; + } else { + var newStream = new FS.FSStream(); + for (var p in stream) { + newStream[p] = stream[p]; + } + stream = newStream; + } + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + },closeStream:function (fd) { + FS.streams[fd] = null; + },getStreamFromPtr:function (ptr) { + return FS.streams[ptr - 1]; + },getPtrForStream:function (stream) { + return stream ? stream.fd + 1 : 0; + },chrdev_stream_ops:{open:function (stream) { + var device = FS.getDevice(stream.node.rdev); + // override node's stream ops with the device's + stream.stream_ops = device.stream_ops; + // forward the open call + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + },llseek:function () { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + }},major:function (dev) { + return ((dev) >> 8); + },minor:function (dev) { + return ((dev) & 0xff); + },makedev:function (ma, mi) { + return ((ma) << 8 | (mi)); + },registerDevice:function (dev, ops) { + FS.devices[dev] = { stream_ops: ops }; + },getDevice:function (dev) { + return FS.devices[dev]; + },getMounts:function (mount) { + var mounts = []; + var check = [mount]; + + while (check.length) { + var m = check.pop(); + + mounts.push(m); + + check.push.apply(check, m.mounts); + } + + return mounts; + },syncfs:function (populate, callback) { + if (typeof(populate) === 'function') { + callback = populate; + populate = false; + } + + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + + function done(err) { + if (err) { + if (!done.errored) { + done.errored = true; + return callback(err); + } + return; + } + if (++completed >= mounts.length) { + callback(null); + } + }; + + // sync all mounts + mounts.forEach(function (mount) { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + },mount:function (type, opts, mountpoint) { + var root = mountpoint === '/'; + var pseudo = !mountpoint; + var node; + + if (root && FS.root) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + mountpoint = lookup.path; // use the absolute path + node = lookup.node; + + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); + } + } + + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + + // create a root node for the fs + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + + if (root) { + FS.root = mountRoot; + } else if (node) { + // set as a mountpoint + node.mounted = mount; + + // add the new mount to the current mount's children + if (node.mount) { + node.mount.mounts.push(mount); + } + } + + return mountRoot; + },unmount:function (mountpoint) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + + // destroy the nodes for this mount, and all its child mounts + 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.indexOf(current.mount) !== -1) { + FS.destroyNode(current); + } + + current = next; + } + }); + + // no longer a mountpoint + node.mounted = null; + + // remove this mount from the child mounts + var idx = node.mount.mounts.indexOf(mount); + assert(idx !== -1); + node.mount.mounts.splice(idx, 1); + },lookup:function (parent, name) { + return parent.node_ops.lookup(parent, name); + },mknod:function (path, mode, dev) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var err = FS.mayCreate(parent, name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return parent.node_ops.mknod(parent, name, mode, dev); + },create:function (path, mode) { + mode = mode !== undefined ? mode : 0666; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + },mkdir:function (path, mode) { + mode = mode !== undefined ? mode : 0777; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + },mkdev:function (path, mode, dev) { + if (typeof(dev) === 'undefined') { + dev = mode; + mode = 0666; + } + mode |= 8192; + return FS.mknod(path, mode, dev); + },symlink:function (oldpath, newpath) { + var lookup = FS.lookupPath(newpath, { parent: true }); + var parent = lookup.node; + var newname = PATH.basename(newpath); + var err = FS.mayCreate(parent, newname); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return parent.node_ops.symlink(parent, newname, oldpath); + },rename:function (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); + // parents must exist + var lookup, old_dir, new_dir; + try { + lookup = FS.lookupPath(old_path, { parent: true }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { parent: true }); + new_dir = lookup.node; + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + // need to be part of the same mount + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(ERRNO_CODES.EXDEV); + } + // source must exist + var old_node = FS.lookupNode(old_dir, old_name); + // old path should not be an ancestor of the new path + var relative = PATH.relative(old_path, new_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + // new path should not be an ancestor of the old path + relative = PATH.relative(new_path, old_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); + } + // see if the new path already exists + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + // not fatal + } + // early out if nothing needs to change + if (old_node === new_node) { + return; + } + // we'll need to delete the old entry + var isdir = FS.isDir(old_node.mode); + var err = FS.mayDelete(old_dir, old_name, isdir); + if (err) { + throw new FS.ErrnoError(err); + } + // need delete permissions if we'll be overwriting. + // need create permissions if new doesn't already exist. + err = new_node ? + FS.mayDelete(new_dir, new_name, isdir) : + FS.mayCreate(new_dir, new_name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + // if we are going to change the parent, check write permissions + if (new_dir !== old_dir) { + err = FS.nodePermissions(old_dir, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + } + // remove the node from the lookup hash + FS.hashRemoveNode(old_node); + // do the underlying fs rename + try { + old_dir.node_ops.rename(old_node, new_dir, new_name); + } catch (e) { + throw e; + } finally { + // add the node back to the hash (in case node_ops.rename + // changed its name) + FS.hashAddNode(old_node); + } + },rmdir:function (path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, true); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + },readdir:function (path) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); + } + return node.node_ops.readdir(node); + },unlink:function (path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, false); + if (err) { + // POSIX says unlink should set EPERM, not EISDIR + if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + },readlink:function (path) { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + return link.node_ops.readlink(link); + },stat:function (path, dontFollow) { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + var node = lookup.node; + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return node.node_ops.getattr(node); + },lstat:function (path) { + return FS.stat(path, true); + },chmod:function (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(ERRNO_CODES.EPERM); + } + node.node_ops.setattr(node, { + mode: (mode & 4095) | (node.mode & ~4095), + timestamp: Date.now() + }); + },lchmod:function (path, mode) { + FS.chmod(path, mode, true); + },fchmod:function (fd, mode) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + FS.chmod(stream.node, mode); + },chown:function (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(ERRNO_CODES.EPERM); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + // we ignore the uid / gid for now + }); + },lchown:function (path, uid, gid) { + FS.chown(path, uid, gid, true); + },fchown:function (fd, uid, gid) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + FS.chown(stream.node, uid, gid); + },truncate:function (path, len) { + if (len < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + 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(ERRNO_CODES.EPERM); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var err = FS.nodePermissions(node, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + },ftruncate:function (fd, len) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + FS.truncate(stream.node, len); + },utime:function (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 (path, flags, mode, fd_start, fd_end) { + flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode === 'undefined' ? 0666 : 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) { + // ignore + } + } + // perhaps we need to create the node + if ((flags & 64)) { + if (node) { + // if O_CREAT and O_EXCL are set, error out if the node already exists + if ((flags & 128)) { + throw new FS.ErrnoError(ERRNO_CODES.EEXIST); + } + } else { + // node doesn't exist, try to create it + node = FS.mknod(path, mode, 0); + } + } + if (!node) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + // can't truncate a device + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + // check permissions + var err = FS.mayOpen(node, flags); + if (err) { + throw new FS.ErrnoError(err); + } + // do truncation if necessary + if ((flags & 512)) { + FS.truncate(node, 0); + } + // we've already handled these, don't pass down to the underlying vfs + flags &= ~(128 | 512); + + // register the stream with the filesystem + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), // we want the absolute path to the node + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + // used by the file family libc calls (fopen, fwrite, ferror, etc.) + ungotten: [], + error: false + }, fd_start, fd_end); + // call the new stream's open function + 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; + Module['printErr']('read file: ' + path); + } + } + return stream; + },close:function (stream) { + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + },llseek:function (stream, offset, whence) { + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + return stream.stream_ops.llseek(stream, offset, whence); + },read:function (stream, buffer, offset, length, position) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var seeking = true; + if (typeof position === 'undefined') { + position = stream.position; + seeking = false; + } else if (!stream.seekable) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + },write:function (stream, buffer, offset, length, position, canOwn) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var seeking = true; + if (typeof position === 'undefined') { + position = stream.position; + seeking = false; + } else if (!stream.seekable) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + if (stream.flags & 1024) { + // seek to the end before writing in append mode + FS.llseek(stream, 0, 2); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + return bytesWritten; + },allocate:function (stream, offset, length) { + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); + } + stream.stream_ops.allocate(stream, offset, length); + },mmap:function (stream, buffer, offset, length, position, prot, flags) { + // TODO if PROT is PROT_WRITE, make sure we have write access + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(ERRNO_CODES.EACCES); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); + },ioctl:function (stream, cmd, arg) { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + },readFile:function (path, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'r'; + opts.encoding = opts.encoding || 'binary'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + 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 = ''; + var utf8 = new Runtime.UTF8Processor(); + for (var i = 0; i < length; i++) { + ret += utf8.processCChar(buf[i]); + } + } else if (opts.encoding === 'binary') { + ret = buf; + } + FS.close(stream); + return ret; + },writeFile:function (path, data, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'w'; + opts.encoding = opts.encoding || 'utf8'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var stream = FS.open(path, opts.flags, opts.mode); + if (opts.encoding === 'utf8') { + var utf8 = new Runtime.UTF8Processor(); + var buf = new Uint8Array(utf8.processJSString(data)); + FS.write(stream, buf, 0, buf.length, 0, opts.canOwn); + } else if (opts.encoding === 'binary') { + FS.write(stream, data, 0, data.length, 0, opts.canOwn); + } + FS.close(stream); + },cwd:function () { + return FS.currentPath; + },chdir:function (path) { + var lookup = FS.lookupPath(path, { follow: true }); + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); + } + var err = FS.nodePermissions(lookup.node, 'x'); + if (err) { + throw new FS.ErrnoError(err); + } + FS.currentPath = lookup.path; + },createDefaultDirectories:function () { + FS.mkdir('/tmp'); + },createDefaultDevices:function () { + // create /dev + FS.mkdir('/dev'); + // setup /dev/null + FS.registerDevice(FS.makedev(1, 3), { + read: function() { return 0; }, + write: function() { return 0; } + }); + FS.mkdev('/dev/null', FS.makedev(1, 3)); + // setup /dev/tty and /dev/tty1 + // stderr needs to print output using Module['printErr'] + // so we register a second tty just for it. + 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)); + // we're not going to emulate the actual shm device, + // just create the tmp dirs that reside in it commonly + FS.mkdir('/dev/shm'); + FS.mkdir('/dev/shm/tmp'); + },createStandardStreams:function () { + // TODO deprecate the old functionality of a single + // input / output callback and that utilizes FS.createDevice + // and instead require a unique set of stream ops + + // by default, we symlink the standard streams to the + // default tty devices. however, if the standard streams + // have been overwritten we create a unique device for + // them instead. + 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'); + } + + // open default streams for the stdin, stdout and stderr devices + var stdin = FS.open('/dev/stdin', 'r'); + HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin); + assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); + + var stdout = FS.open('/dev/stdout', 'w'); + HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout); + assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); + + var stderr = FS.open('/dev/stderr', 'w'); + HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr); + assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); + },ensureErrnoError:function () { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno) { + this.errno = errno; + for (var key in ERRNO_CODES) { + if (ERRNO_CODES[key] === errno) { + this.code = key; + break; + } + } + this.message = ERRNO_MESSAGES[errno]; + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) + [ERRNO_CODES.ENOENT].forEach(function(code) { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ''; + }); + },staticInit:function () { + FS.ensureErrnoError(); + + FS.nameTable = new Array(4096); + + FS.mount(MEMFS, {}, '/'); + + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + },init:function (input, output, error) { + assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); + FS.init.initialized = true; + + FS.ensureErrnoError(); + + // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here + Module['stdin'] = input || Module['stdin']; + Module['stdout'] = output || Module['stdout']; + Module['stderr'] = error || Module['stderr']; + + FS.createStandardStreams(); + },quit:function () { + FS.init.initialized = false; + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + },getMode:function (canRead, canWrite) { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + },joinPath:function (parts, forceRelative) { + var path = PATH.join.apply(null, parts); + if (forceRelative && path[0] == '/') path = path.substr(1); + return path; + },absolutePath:function (relative, base) { + return PATH.resolve(base, relative); + },standardizePath:function (path) { + return PATH.normalize(path); + },findObject:function (path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (ret.exists) { + return ret.object; + } else { + ___setErrNo(ret.error); + return null; + } + },analyzePath:function (path, dontResolveLastLink) { + // operate from within the context of the symlink's target + 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; + },createFolder:function (parent, name, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.mkdir(path, mode); + },createPath:function (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) { + // ignore EEXIST + } + parent = current; + } + return current; + },createFile:function (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 (parent, name, data, canRead, canWrite, canOwn) { + var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(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; + } + // make sure we can write to the file + FS.chmod(node, mode | 146); + var stream = FS.open(node, 'w'); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode); + } + return node; + },createDevice:function (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); + // Create a fake device that a set of stream ops to emulate + // the old behavior. + FS.registerDevice(dev, { + open: function(stream) { + stream.seekable = false; + }, + close: function(stream) { + // flush any pending line data + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: function(stream, buffer, offset, length, pos /* ignored */) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset+i]); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + },createLink:function (parent, name, target, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + return FS.symlink(target, path); + },forceLoadFile:function (obj) { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + var success = 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 (Module['read']) { + // Command-line. + try { + // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as + // read() will try to parse UTF8. + obj.contents = intArrayFromString(Module['read'](obj.url), true); + } catch (e) { + success = false; + } + } else { + throw new Error('Cannot load without read() or XMLHttpRequest.'); + } + if (!success) ___setErrNo(ERRNO_CODES.EIO); + return success; + },createLazyFile:function (parent, name, url, canRead, canWrite) { + 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'; + // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; // Loaded chunks. Index is the chunk number + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length-1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = Math.floor(idx / this.chunkSize); + return this.getter(chunkNum)[chunkOffset]; + } + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + } + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + // Find length + 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 chunkSize = 1024*1024; // Chunk size in bytes + + if (!hasByteServing) chunkSize = datalength; + + // Function to get a range from the remote URL. + var doXHR = (function(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!"); + + // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + + // Some hints to the browser that we want binary data. + if (typeof Uint8Array != 'undefined') 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 || []); + } else { + return intArrayFromString(xhr.responseText || '', true); + } + }); + var lazyArray = this; + lazyArray.setDataGetter(function(chunkNum) { + var start = chunkNum * chunkSize; + var end = (chunkNum+1) * chunkSize - 1; // including this byte + end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block + 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]; + }); + + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + } + + var lazyArray = new LazyUint8Array(); + Object.defineProperty(lazyArray, "length", { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }); + Object.defineProperty(lazyArray, "chunkSize", { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + }); + + var properties = { isDevice: false, contents: lazyArray }; + } else { + var properties = { isDevice: false, url: url }; + } + + var node = FS.createFile(parent, name, properties, canRead, canWrite); + // This is a total hack, but I want to get this lazy file code out of the + // core of MEMFS. If we want to keep this lazy file concept I feel it should + // be its own thin LAZYFS proxying calls to MEMFS. + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + // override each stream op with one that tries to force load the lazy file first + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(function(key) { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + return fn.apply(null, arguments); + }; + }); + // use a custom read function + stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + var contents = stream.node.contents; + if (position >= contents.length) + return 0; + var size = Math.min(contents.length - position, length); + assert(size >= 0); + if (contents.slice) { // normal array + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR + buffer[offset + i] = contents.get(position + i); + } + } + return size; + }; + node.stream_ops = stream_ops; + return node; + },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { + Browser.init(); + // TODO we should allow people to just pass in a complete filename instead + // of parent and name being that we just join them anyways + var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; + function processData(byteArray) { + function finish(byteArray) { + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency('cp ' + fullname); + } + var handled = false; + Module['preloadPlugins'].forEach(function(plugin) { + if (handled) return; + if (plugin['canHandle'](fullname)) { + plugin['handle'](byteArray, fullname, finish, function() { + if (onerror) onerror(); + removeRunDependency('cp ' + fullname); + }); + handled = true; + } + }); + if (!handled) finish(byteArray); + } + addRunDependency('cp ' + fullname); + if (typeof url == 'string') { + Browser.asyncLoad(url, function(byteArray) { + processData(byteArray); + }, onerror); + } else { + processData(url); + } + },indexedDB:function () { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + },DB_NAME:function () { + return 'EM_FS_' + window.location.pathname; + },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { + console.log('creating db'); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; + putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + },loadFilesFromDB:function (paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; // no database to load from + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + try { + var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); + } catch(e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var getRequest = files.get(path); + getRequest.onsuccess = function getRequest_onsuccess() { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }};var PATH={splitPath:function (filename) { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + },normalizeArray:function (parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + 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 the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + return parts; + },normalize:function (path) { + var isAbsolute = path.charAt(0) === '/', + trailingSlash = path.substr(-1) === '/'; + // Normalize the path + 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 (path) { + var result = PATH.splitPath(path), + root = result[0], + dir = result[1]; + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + },basename:function (path) { + // EMSCRIPTEN return '/'' for '/', not an empty string + if (path === '/') return '/'; + var lastSlash = path.lastIndexOf('/'); + if (lastSlash === -1) return path; + return path.substr(lastSlash+1); + },extname:function (path) { + return PATH.splitPath(path)[3]; + },join:function () { + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.join('/')); + },join2:function (l, r) { + return PATH.normalize(l + '/' + r); + },resolve:function () { + var resolvedPath = '', + resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : FS.cwd(); + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; + },relative:function (from, to) { + from = PATH.resolve(from).substr(1); + to = PATH.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 Browser={mainLoop:{scheduler:null,method:"",shouldPause:false,paused:false,queue:[],pause:function () { + Browser.mainLoop.shouldPause = true; + },resume:function () { + if (Browser.mainLoop.paused) { + Browser.mainLoop.paused = false; + Browser.mainLoop.scheduler(); + } + Browser.mainLoop.shouldPause = false; + },updateStatus:function () { + 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'](''); + } + } + }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { + if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers + + if (Browser.initted || ENVIRONMENT_IS_WORKER) return; + Browser.initted = true; + + try { + new Blob(); + Browser.hasBlobConstructor = true; + } catch(e) { + Browser.hasBlobConstructor = false; + console.log("warning: no blob constructor, cannot create blobs with mimetypes"); + } + Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); + Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; + if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { + console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); + Module.noImageDecoding = true; + } + + // Support for plugins that can process preloaded files. You can add more of these to + // your app by creating and appending to Module.preloadPlugins. + // + // Each plugin is asked if it can handle a file based on the file's name. If it can, + // it is given the file's raw data. When it is done, it calls a callback with the file's + // (possibly modified) data. For example, a plugin might decompress a file, or it + // might create some side data structure for use later (like an Image element, etc.). + + 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 = null; + if (Browser.hasBlobConstructor) { + try { + b = new Blob([byteArray], { type: Browser.getMimetype(name) }); + if (b.size !== byteArray.length) { // Safari bug #118630 + // Safari's Blob can only take an ArrayBuffer + b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); + } + } catch(e) { + Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); + } + } + if (!b) { + var bb = new Browser.BlobBuilder(); + bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range + b = bb.getBlob(); + } + var url = Browser.URLObject.createObjectURL(b); + var img = new Image(); + img.onload = function img_onload() { + assert(img.complete, 'Image ' + name + ' could not be decoded'); + var canvas = document.createElement('canvas'); + canvas.width = img.width; + canvas.height = img.height; + var ctx = canvas.getContext('2d'); + ctx.drawImage(img, 0, 0); + Module["preloadedImages"][name] = canvas; + Browser.URLObject.revokeObjectURL(url); + if (onload) onload(byteArray); + }; + img.onerror = function img_onerror(event) { + console.log('Image ' + url + ' could not be decoded'); + if (onerror) onerror(); + }; + img.src = url; + }; + Module['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; + Module["preloadedAudios"][name] = audio; + if (onload) onload(byteArray); + } + function fail() { + if (done) return; + done = true; + Module["preloadedAudios"][name] = new Audio(); // empty shim + if (onerror) onerror(); + } + if (Browser.hasBlobConstructor) { + try { + var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); + } catch(e) { + return fail(); + } + var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! + var audio = new Audio(); + audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 + audio.onerror = function audio_onerror(event) { + if (done) return; + console.log('warning: browser could not fully decode audio ' + 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)) & 0x3f; + leftbits -= 6; + ret += BASE[curr]; + } + } + if (leftbits == 2) { + ret += BASE[(leftchar&3) << 4]; + ret += PAD + PAD; + } else if (leftbits == 4) { + ret += BASE[(leftchar&0xf) << 2]; + ret += PAD; + } + return ret; + } + audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); + finish(audio); // we don't wait for confirmation this worked - but it's worth trying + }; + audio.src = url; + // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror + Browser.safeSetTimeout(function() { + finish(audio); // try to use it even though it is not necessarily ready to play + }, 10000); + } else { + return fail(); + } + }; + Module['preloadPlugins'].push(audioPlugin); + + // Canvas event setup + + var canvas = Module['canvas']; + canvas.requestPointerLock = canvas['requestPointerLock'] || + canvas['mozRequestPointerLock'] || + canvas['webkitRequestPointerLock']; + canvas.exitPointerLock = document['exitPointerLock'] || + document['mozExitPointerLock'] || + document['webkitExitPointerLock'] || + function(){}; // no-op if function does not exist + canvas.exitPointerLock = canvas.exitPointerLock.bind(document); + + function pointerLockChange() { + Browser.pointerLock = document['pointerLockElement'] === canvas || + document['mozPointerLockElement'] === canvas || + document['webkitPointerLockElement'] === canvas; + } + + document.addEventListener('pointerlockchange', pointerLockChange, false); + document.addEventListener('mozpointerlockchange', pointerLockChange, false); + document.addEventListener('webkitpointerlockchange', pointerLockChange, false); + + if (Module['elementPointerLock']) { + canvas.addEventListener("click", function(ev) { + if (!Browser.pointerLock && canvas.requestPointerLock) { + canvas.requestPointerLock(); + ev.preventDefault(); + } + }, false); + } + },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { + var ctx; + try { + if (useWebGL) { + var contextAttributes = { + antialias: false, + alpha: false + }; + + if (webGLContextAttributes) { + for (var attribute in webGLContextAttributes) { + contextAttributes[attribute] = webGLContextAttributes[attribute]; + } + } + + + var errorInfo = '?'; + function onContextCreationError(event) { + errorInfo = event.statusMessage || errorInfo; + } + canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false); + try { + ['experimental-webgl', 'webgl'].some(function(webglId) { + return ctx = canvas.getContext(webglId, contextAttributes); + }); + } finally { + canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false); + } + } else { + ctx = canvas.getContext('2d'); + } + if (!ctx) throw ':('; + } catch (e) { + Module.print('Could not create canvas: ' + [errorInfo, e]); + return null; + } + if (useWebGL) { + // Set the background of the WebGL canvas to black + canvas.style.backgroundColor = "black"; + + // Warn on context loss + canvas.addEventListener('webglcontextlost', function(event) { + alert('WebGL context lost. You will need to reload the page.'); + }, false); + } + if (setInModule) { + GLctx = Module.ctx = ctx; + Module.useWebGL = useWebGL; + Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); + Browser.init(); + } + return ctx; + },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (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() { + Browser.isFullScreen = false; + if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || + document['mozFullScreenElement'] || document['mozFullscreenElement'] || + document['fullScreenElement'] || document['fullscreenElement']) === canvas) { + canvas.cancelFullScreen = document['cancelFullScreen'] || + document['mozCancelFullScreen'] || + document['webkitCancelFullScreen']; + canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); + if (Browser.lockPointer) canvas.requestPointerLock(); + Browser.isFullScreen = true; + if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); + } else if (Browser.resizeCanvas){ + Browser.setWindowedCanvasSize(); + } + if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); + } + + if (!Browser.fullScreenHandlersInstalled) { + Browser.fullScreenHandlersInstalled = true; + document.addEventListener('fullscreenchange', fullScreenChange, false); + document.addEventListener('mozfullscreenchange', fullScreenChange, false); + document.addEventListener('webkitfullscreenchange', fullScreenChange, false); + } + + canvas.requestFullScreen = canvas['requestFullScreen'] || + canvas['mozRequestFullScreen'] || + (canvas['webkitRequestFullScreen'] ? function() { canvas['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); + canvas.requestFullScreen(); + },requestAnimationFrame:function requestAnimationFrame(func) { + if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) + setTimeout(func, 1000/60); + } else { + if (!window.requestAnimationFrame) { + window.requestAnimationFrame = window['requestAnimationFrame'] || + window['mozRequestAnimationFrame'] || + window['webkitRequestAnimationFrame'] || + window['msRequestAnimationFrame'] || + window['oRequestAnimationFrame'] || + window['setTimeout']; + } + window.requestAnimationFrame(func); + } + },safeCallback:function (func) { + return function() { + if (!ABORT) return func.apply(null, arguments); + }; + },safeRequestAnimationFrame:function (func) { + return Browser.requestAnimationFrame(function() { + if (!ABORT) func(); + }); + },safeSetTimeout:function (func, timeout) { + return setTimeout(function() { + if (!ABORT) func(); + }, timeout); + },safeSetInterval:function (func, timeout) { + return setInterval(function() { + if (!ABORT) func(); + }, timeout); + },getMimetype:function (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 (func) { + if(!window.getUserMedia) { + window.getUserMedia = navigator['getUserMedia'] || + navigator['mozGetUserMedia']; + } + window.getUserMedia(func); + },getMovementX:function (event) { + return event['movementX'] || + event['mozMovementX'] || + event['webkitMovementX'] || + 0; + },getMovementY:function (event) { + return event['movementY'] || + event['mozMovementY'] || + event['webkitMovementY'] || + 0; + },getMouseWheelDelta:function (event) { + return Math.max(-1, Math.min(1, event.type === 'DOMMouseScroll' ? event.detail : -event.wheelDelta)); + },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup + if (Browser.pointerLock) { + // When the pointer is locked, calculate the coordinates + // based on the movement of the mouse. + // Workaround for Firefox bug 764498 + if (event.type != 'mousemove' && + ('mozMovementX' in event)) { + Browser.mouseMovementX = Browser.mouseMovementY = 0; + } else { + Browser.mouseMovementX = Browser.getMovementX(event); + Browser.mouseMovementY = Browser.getMovementY(event); + } + + // check if SDL is available + if (typeof SDL != "undefined") { + Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; + Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; + } else { + // just add the mouse delta to the current absolut mouse position + // FIXME: ideally this should be clamped against the canvas size and zero + Browser.mouseX += Browser.mouseMovementX; + Browser.mouseY += Browser.mouseMovementY; + } + } else { + // Otherwise, calculate the movement based on the changes + // in the coordinates. + var rect = Module["canvas"].getBoundingClientRect(); + var x, y; + + // Neither .scrollX or .pageXOffset are defined in a spec, but + // we prefer .scrollX because it is currently in a spec draft. + // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) + var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); + var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); + if (event.type == 'touchstart' || + event.type == 'touchend' || + event.type == 'touchmove') { + var t = event.touches.item(0); + if (t) { + x = t.pageX - (scrollX + rect.left); + y = t.pageY - (scrollY + rect.top); + } else { + return; + } + } else { + x = event.pageX - (scrollX + rect.left); + y = event.pageY - (scrollY + rect.top); + } + + // the canvas might be CSS-scaled compared to its backbuffer; + // SDL-using content will want mouse coordinates in terms + // of backbuffer units. + var cw = Module["canvas"].width; + var ch = Module["canvas"].height; + x = x * (cw / rect.width); + y = y * (ch / rect.height); + + Browser.mouseMovementX = x - Browser.mouseX; + Browser.mouseMovementY = y - Browser.mouseY; + Browser.mouseX = x; + Browser.mouseY = y; + } + },xhrLoad:function (url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = function xhr_onload() { + if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 + onload(xhr.response); + } else { + onerror(); + } + }; + xhr.onerror = onerror; + xhr.send(null); + },asyncLoad:function (url, onload, onerror, noRunDep) { + Browser.xhrLoad(url, function(arrayBuffer) { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (!noRunDep) removeRunDependency('al ' + url); + }, function(event) { + if (onerror) { + onerror(); + } else { + throw 'Loading data file "' + url + '" failed.'; + } + }); + if (!noRunDep) addRunDependency('al ' + url); + },resizeListeners:[],updateResizeListeners:function () { + var canvas = Module['canvas']; + Browser.resizeListeners.forEach(function(listener) { + listener(canvas.width, canvas.height); + }); + },setCanvasSize:function (width, height, noUpdates) { + var canvas = Module['canvas']; + canvas.width = width; + canvas.height = height; + if (!noUpdates) Browser.updateResizeListeners(); + },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { + var canvas = Module['canvas']; + this.windowedWidth = canvas.width; + this.windowedHeight = canvas.height; + canvas.width = screen.width; + canvas.height = screen.height; + // check if SDL is available + if (typeof SDL != "undefined") { + var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; + flags = flags | 0x00800000; // set SDL_FULLSCREEN flag + HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags + } + Browser.updateResizeListeners(); + },setWindowedCanvasSize:function () { + var canvas = Module['canvas']; + canvas.width = this.windowedWidth; + canvas.height = this.windowedHeight; + // check if SDL is available + if (typeof SDL != "undefined") { + var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; + flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag + HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags + } + Browser.updateResizeListeners(); + }}; + + var CRC32={TABLE:[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918000,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],Start:function () { + return -1; + },Update:function (crc, buffer, offset, len) { + for (var i = offset, l = offset + len; i < l; i++) { + crc = CRC32.TABLE[(crc ^ buffer[i]) & 0xff] ^ (crc >>> 8); + } + return crc; + },Finish:function (crc) { + return (crc ^ -1) >>> 0; + }};var SYSC={cb_context_t:{__size__:8,data:0,cb:4},startup_data_t:{__size__:4100,gameName:0,after:4096},download_progress_data_t:{__size__:8,loaded:0,total:4},download_complete_data_t:{__size__:4,progress:0},eula:"LIMITED USE SOFTWARE LICENSE AGREEMENT\n\n \n\nThis Limited Use Software License Agreement (the \"Agreement\") is a legal agreement between you, the end-user, and Id Software, Inc. (\"ID\"). BY CONTINUING THE INSTALLATION OF THIS GAME DEMO PROGRAM ENTITLED QUAKE III: ARENA (THE \"SOFTWARE\"), BY LOADING OR RUNNING THE SOFTWARE, OR BY PLACING OR COPYING THE SOFTWARE ONTO YOUR COMPUTER HARD DRIVE, COMPUTER RAM OR OTHER STORAGE, YOU ARE AGREEING TO BE BOUND BY THE TERMS OF THIS AGREEMENT.\n\n\n\n1. Grant of License. Subject to the terms and provisions of this Agreement, ID grants to you the non-exclusive and limited right to use the Software only in executable or object code form. The term \"Software\" includes all elements of the Software, including, without limitation, data files and screen displays. You are not receiving any ownership or proprietary right, title or interest in or to the Software or the copyright, trademarks, or other rights related thereto. For purposes of this section, \"use\" means loading the Software into RAM and/or onto computer hard drive, as well as installation of the Software on a hard disk or other storage device and means the uses permitted in section 3. hereinbelow. You agree that the Software will not be shipped, transferred or exported into any country in violation of the U.S. Export Administration Act (or any other law governing such matters) by you or anyone at your direction and that you will not utilize and will not authorize anyone to utilize, in any other manner, the Software in violation of any applicable law. The Software may not be downloaded or otherwise exported or exported into (or to a national or resident of) any country to which the U.S. has embargoed goods or to anyone or into any country who/which are prohibited, by applicable law, from receiving such property.\n\n\n\n2. Prohibitions. You, either directly or indirectly, shall not do any of the following acts:\n\n\n\na. rent the Software;\n\n\n\nb. sell the Software;\n\n\n\nc. lease or lend the Software;\n\n\n\nd. offer the Software on a \"pay-per-play\" basis;\n\n\n\ne. distribute the Software (except as permitted by section 3. hereinbelow);\n\n\n\nf. in any other manner and through any medium whatsoever commercially exploit the Software or use the Software for any commercial purpose;\n\n\n\ng. disassemble, reverse engineer, decompile, modify or alter the Software including, without limitation, creating or developing extra or add-on levels for the Software;\n\n\n\nh. translate the Software;\n\n\n\ni. reproduce or copy the Software (except as permitted by section 3. hereinbelow);\n\n\n\nj. publicly display the Software;\n\n\n\nk. prepare or develop derivative works based upon the Software; or\n\n\n\nl. remove or alter any legal notices or other markings or legends, such as trademark and copyright notices, affixed on or within the Software.\n\n\n\n3. Permitted Distribution and Copying. So long as this Agreement accompanies each copy you make of the Software, and so long as you fully comply, at all times, with this Agreement, ID grants to you the non-exclusive and limited right to copy the Software and to distribute such copies of the Software free of charge for non-commercial purposes which shall include the free of charge distribution of copies of the Software as mounted on the covers of magazines; provided, however, you shall not copy or distribute the Software in any infringing manner or in any manner which violates any law or third party right and you shall not distribute the Software together with any material which is infringing, libelous, defamatory, obscene, false, misleading, or otherwise illegal or unlawful. You agree to label conspicuously as \"SHAREWARE\" or \"DEMO\" each CD or other non-electronic copy of the Software that you make and distribute. ID reserves all rights not granted in this Agreement. You shall not commercially distribute the Software unless you first enter into a separate contract with ID, a copy of which you may request, but which ID may decline to execute. For more information visit www.quake3arena.com.\n\n\n\n4. Intellectual Property Rights. The Software and all copyrights, trademarks and all other conceivable intellectual property rights related to the Software are owned by ID and are protected by United States copyright laws, international treaty provisions and all applicable law, such as the Lanham Act. You must treat the Software like any other copyrighted material, as required by 17 U.S.C., §101 et seq. and other applicable law. You agree to use your best efforts to see that any user of the Software licensed hereunder complies with this Agreement. You agree that you are receiving a copy of the Software by license only and not by sale and that the \"first sale\" doctrine of 17 U.S.C. §109 does not apply to your receipt or use of the Software.\n\n\n\n5. NO WARRANTIES. ID DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE SOFTWARE. ID DOES NOT WARRANT THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE OR THAT THE SOFTWARE WILL MEET YOUR SPECIFIC REQUIREMENTS. ADDITIONAL STATEMENTS SUCH AS PRESENTATIONS, WHETHER ORAL OR WRITTEN, DO NOT CONSTITUTE WARRANTIES BY ID AND SHOULD NOT BE RELIED UPON. THIS SECTION 5. SHALL SURVIVE CANCELLATION OR TERMINATION OF THIS AGREEMENT.\n\n\n\n6. Governing Law, Venue, Indemnity and Liability Limitation. This Agreement shall be construed in accordance with and governed by the applicable laws of the State of Texas and applicable United States federal law. Copyright and other proprietary matters will be governed by United States laws and international treaties. Exclusive venue for all litigation regarding this Agreement shall be in Dallas County, Texas and you agree to submit to the jurisdiction of the courts in Dallas, Texas for any such litigation. You agree to indemnify, defend and hold harmless ID and ID's officers, employees, directors, agents, licensees (excluding you), successors and assigns from and against all losses, lawsuits, damages, causes of action and claims relating to and/or arising from your breach of this Agreement. You agree that your unauthorized use of the Software, or any part thereof, may immediately and irreparably damage ID such that ID could not be adequately compensated solely by a monetary award and that at ID's option ID shall be entitled to an injunctive order, in addition to all other available remedies including a monetary award, appropriately restraining and/or prohibiting such unauthorized use without the necessity of ID posting bond or other security. IN ANY CASE, ID AND ID'S OFFICERS, EMPLOYEES, DIRECTORS, AGENTS, LICENSEES, SUBLICENSEES, SUCCESSORS AND ASSIGNS SHALL NOT BE LIABLE FOR LOSS OF DATA, LOSS OF PROFITS, LOST SAVINGS, SPECIAL, INCIDENTAL, CONSEQUENTIAL, INDIRECT, PUNITIVE OR OTHER SIMILAR DAMAGES ARISING FROM ANY ALLEGED CLAIM FOR BREACH OF WARRANTY, BREACH OF CONTRACT, NEGLIGENCE, STRICT PRODUCT LIABILITY, OR OTHER LEGAL THEORY EVEN IF ID OR ITS AGENT HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR EVEN IF SUCH DAMAGES ARE FORESEEABLE, OR LIABLE FOR ANY CLAIM BY ANY OTHER PARTY. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so the above limitation or exclusion may not apply to you. This Section 6. shall survive cancellation or termination of this Agreement.\n\n\n\n7. U.S. Government Restricted Rights. To the extent applicable, the United States Government shall only have those rights to use the Software as expressly stated and expressly limited and restricted in this Agreement, as provided in 48 C.F.R. §§ 227.7201 through 227.7204, inclusive.\n\n\n\n8. General Provisions. Neither this Agreement nor any part or portion hereof shall be assigned or sublicensed by you. ID may assign its rights under this Agreement in ID's sole discretion. Should any provision of this Agreement be held to be void, invalid, unenforceable or illegal by a court of competent jurisdiction, the validity and enforceability of the other provisions shall not be affected thereby. If any provision is determined to be unenforceable by a court of competent jurisdiction, you agree to a modification of such provision to provide for enforcement of the provision's intent, to the extent permitted by applicable law. Failure of ID to enforce any provision of this Agreement shall not constitute or be construed as a waiver of such provision or of the right to enforce such provision. Immediately upon your failure to comply with or breach of any term or provision of this Agreement, THIS AGREEMENT AND YOUR LICENSE SHALL AUTOMATICALLY TERMINATE, WITHOUT NOTICE, AND ID MAY PURSUE ALL RELIEF AND REMEDIES AGAINST YOU WHICH ARE AVAILABLE UNDER APPLICABLE LAW AND/OR THIS AGREEMENT. In the event this Agreement is terminated, you shall have no right to use the Software, in any manner, and you shall immediately destroy all copies of the Software in your possession, custody or control.\n\n\n\nYOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, YOU UNDERSTAND THIS AGREEMENT, AND UNDERSTAND THAT BY CONTINUING THE INSTALLATION OF THE SOFTWARE, BY LOADING OR RUNNING THE SOFTWARE, OR BY PLACING OR COPYING THE SOFTWARE ONTO YOUR COMPUTER HARD DRIVE OR RAM, YOU AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT. YOU FURTHER AGREE THAT, EXCEPT FOR WRITTEN SEPARATE AGREEMENTS BETWEEN ID AND YOU, THIS AGREEMENT IS A COMPLETE AND EXCLUSIVE STATEMENT OF THE RIGHTS AND LIABILITIES OF THE PARTIES HERETO. THIS AGREEMENT SUPERSEDES ALL PRIOR ORAL AGREEMENTS, PROPOSALS OR UNDERSTANDINGS, AND ANY OTHER COMMUNICATIONS BETWEEN ID AND YOU RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.",installers:[{name:"linuxq3ademo-1.11-6.x86.gz.sh",offset:5468,paks:[{src:"demoq3/pak0.pk3",dest:"baseq3/pak0.pk3",checksum:2483777038}]},{name:"linuxq3apoint-1.32b-3.x86.run",offset:8251,paks:[{src:"baseq3/pak1.pk3",dest:"baseq3/pak1.pk3",checksum:1635885364},{src:"baseq3/pak2.pk3",dest:"baseq3/pak2.pk3",checksum:2142044321},{src:"baseq3/pak3.pk3",dest:"baseq3/pak3.pk3",checksum:682311620},{src:"baseq3/pak4.pk3",dest:"baseq3/pak4.pk3",checksum:4113726565},{src:"baseq3/pak5.pk3",dest:"baseq3/pak5.pk3",checksum:590466266},{src:"baseq3/pak6.pk3",dest:"baseq3/pak6.pk3",checksum:231612509},{src:"baseq3/pak7.pk3",dest:"baseq3/pak7.pk3",checksum:3663817674},{src:"baseq3/pak8.pk3",dest:"baseq3/pak8.pk3",checksum:136401958}]}],manifest:null,Print:function (str) { + str = allocate(intArrayFromString(str + '\n'), 'i8', ALLOC_STACK); + + _Com_Printf(str); + },Error:function (level, err) { + if (level === 'fatal') { + level = 0; + } else if (level === 'drop') { + level = 1; + } else if (level === 'serverdisconnect') { + level = 2; + } else if (level === 'disconnect') { + level = 3; + } else if (level === 'need_cd') { + level = 4; + } else { + level = 0; + } + + err = allocate(intArrayFromString(err + '\n'), 'i8', ALLOC_STACK); + + _Com_Error(level, err); + },ProxyCallback:function (context) { + try { + _Com_ProxyCallback(context); + } catch (e) { + if (e instanceof ExitStatus) { + return; + } + // TODO should we try and call back in using __Error? + throw e; + } + },CRC32File:function (path) { + var stack = Runtime.stackSave(); + var chunkSize = 1024*1024; + var bufp = allocate(chunkSize, 'i8', ALLOC_STACK); + var crc = CRC32.Start(); + + var start = Date.now(); + + try { + var slab = HEAP8; + var n = 0; + var pos = 0; + var stream = FS.open(path, 'r', 0666); + do { + n = FS.read(stream, slab, bufp, chunkSize, pos); + crc = CRC32.Update(crc, slab, bufp, n); + pos += n; + } while (n); + FS.close(stream); + } catch (e) { + Runtime.stackRestore(stack); + return null; + } + + SYSC.Print('generated crc32 for ' + path + ' in ' + ((Date.now() - start) / 1000).toFixed(2) + ' seconds'); + + Runtime.stackRestore(stack); + return CRC32.Finish(crc); + },GetCDN:function () { + return Pointer_stringify(_Com_GetCDN()); + },GetManifest:function () { + var manifest = Pointer_stringify(_Com_GetManifest()); + + if (!manifest) { + return []; + } + + return manifest.split(' ').map(function (entry) { + var split = entry.split('@'); + + return { + name: split[0], + checksum: parseInt(split[1], 10), + compressed: parseInt(split[2], 10) + }; + }); + },DownloadAsset:function (asset, onprogress, onload) { + //var root = SYSC.GetCDN(); + var root = Pointer_stringify(_Cvar_VariableString(allocate(intArrayFromString('fs_cdn'), 'i8', ALLOC_STACK))); + var name = asset.name.replace(/(.+\/|)(.+?)$/, '$1' + asset.checksum + '-$2'); + var url = document.location.protocol + '//' + root + '/assets/' + name; + + SYS.DoXHR(url, { + dataType: 'arraybuffer', + onprogress: onprogress, + onload: onload + }); + },DownloadAssets:function (assets, onstartasset, onprogress, onendasset, callback) { + var progress = []; + + function downloadedBytes() { + return progress.reduce(function (a, b) { return a + b; }); + } + + function totalBytes() { + return assets.reduce(function (a, b) { return a + b.compressed; }, 0); + } + + function nextDownload() { + nextDownload.pos = nextDownload.pos == undefined ? 0 : nextDownload.pos + 1; + + if (nextDownload.pos >= assets.length) { + return callback(); + } + + var asset = assets[nextDownload.pos]; + + onstartasset(asset); + + SYSC.DownloadAsset(asset, function (loaded, total) { + progress[nextDownload.pos] = loaded; + + onprogress(downloadedBytes(), totalBytes()); + }, function (err, data) { + if (err) return callback(err); + + onendasset(asset, data, function (err) { + if (err) return callback(err); + + setTimeout(nextDownload); + }); + }); + } + + nextDownload(); + },UpdateManifest:function (callback) { + var fs_cdn = Pointer_stringify(_Cvar_VariableString(allocate(intArrayFromString('fs_cdn'), 'i8', ALLOC_STACK))); + var fs_game = Pointer_stringify(_Cvar_VariableString(allocate(intArrayFromString('fs_game'), 'i8', ALLOC_STACK))); + var com_basegame = Pointer_stringify(_Cvar_VariableString(allocate(intArrayFromString('com_basegame'), 'i8', ALLOC_STACK))); + var url = document.location.protocol + '//' + fs_cdn + '/assets/manifest.json'; + + SYS.DoXHR(document.location.protocol + '//' + fs_cdn + '/info', { + dataType: 'json', + onload: function (err, info) { + var mapname = info["mapname"]; + + function isInstaller(name) { + return SYSC.installers.some(function (installer) { + return installer.name === name; + }); + } + + function isCommon(name) { + var basepakRx = RegExp('(' + com_basegame + (fs_game ? '|' + fs_game : '') + ')\/pak.+\.pk3$'); + return name.match(basepakRx); + } + + function isMapPak(name) { + return PATH.basename(name) === (mapname + '.pk3'); + } + + function activePaks(entry) { + return isInstaller(entry.name) || isCommon(entry.name) || isMapPak(entry.name); + } + + function formatManifestString(manifest) { + return manifest.map(function (entry) { + return entry.name + '@' + entry.checksum + '@' + entry.compressed; + }).join(' '); + } + + SYS.DoXHR(url, { + dataType: 'json', + onload: function (err, manifest) { + if (err) return callback(new Error('Failed to download and parse manifest, ' + err.message)); + + var fs_manifestName = allocate(intArrayFromString('fs_manifest'), 'i8', ALLOC_STACK); + var fs_manifest = allocate(intArrayFromString(formatManifestString(manifest.filter(activePaks))), 'i8', ALLOC_STACK); + _Cvar_Set(fs_manifestName, fs_manifest); + + var fs_completeManifestName = allocate(intArrayFromString('fs_completeManifest'), 'i8', ALLOC_STACK); + var fs_completeManifest = allocate(intArrayFromString(formatManifestString(manifest)), 'i8', ALLOC_STACK); + _Cvar_Set(fs_completeManifestName, fs_completeManifest); + + return callback(); + } + }); + } + }); + },SavePak:function (name, buffer, callback) { + var fs_homepath = Pointer_stringify(_Cvar_VariableString(allocate(intArrayFromString('fs_homepath'), 'i8', ALLOC_STACK))); + var localPath = PATH.join(fs_homepath, name); + + try { + FS.mkdir(PATH.dirname(localPath), 0777); + } catch (e) { + if (e.errno !== ERRNO_CODES.EEXIST) { + return callback(e); + } + } + + FS.writeFile(localPath, new Uint8Array(buffer), { encoding: 'binary', flags: 'w', canOwn: true }); + + FS.syncfs(callback); + },ValidateInstaller:function (installer) { + var fs_homepath = Pointer_stringify(_Cvar_VariableString(allocate(intArrayFromString('fs_homepath'), 'i8', ALLOC_STACK))); + + for (var i = 0; i < installer.paks.length; i++) { + var pak = installer.paks[i]; + var localPath = PATH.join(fs_homepath, pak.dest); + var crc = SYSC.CRC32File(localPath); + + if (crc !== pak.checksum) { + return false; + } + } + + return true; + },DirtyInstallers:function () { + var installers = []; + var assets = SYSC.GetManifest(); + + for (var i = 0; i < SYSC.installers.length; i++) { + var installer = SYSC.installers[i]; + + var asset; + for (var j = 0; j < assets.length; j++) { + if (assets[j].name === installer.name) { + asset = assets[j]; + break; + } + } + + if (!asset) { + return callback(new Error('Failed to find "' + installer.name + '" in manifest')); + } + + if (!SYSC.ValidateInstaller(installer)) { + // append the installer info to the asset + asset.installer = installer; + + installers.push(asset); + } + } + + return installers; + },ExtractInstaller:function (data, paks, callback) { + var gunzip = new Zlib.Gunzip(data); + var buffer = gunzip.decompress(); + var tar = new Tar(buffer); + + function nextEntry() { + nextEntry.pos = nextEntry.pos == undefined ? 0 : nextEntry.pos + 1; + + if (nextEntry.pos >= paks.length) { + return callback(); + } + + var entry = paks[nextEntry.pos]; + + var pakPath = entry.src; + var buffer = tar.getContent(pakPath); + + // TODO validate buffer checksum + + SYSC.SavePak(entry.dest, buffer, function (err) { + if (err) return callback(err); + + nextEntry(); + }); + } + + nextEntry(); + },SyncInstallers:function (callback) { + var downloads = SYSC.DirtyInstallers(); + + if (!downloads.length) { + return callback(); + } + + SYS.PromptEULA(function (err) { + if (err) return callback(err); + + SYSC.DownloadAssets(downloads, function (asset) { + SYS.LoadingDescription('loading ' + asset.name); + }, function (loaded, total) { + SYS.LoadingProgress(loaded / total); + }, function (asset, data, next) { + SYSC.ExtractInstaller(new Uint8Array(data, asset.installer.offset), asset.installer.paks, next); + }, function (err) { + SYS.LoadingDescription(null); + + setTimeout(function () { + callback(err); + }); + }); + }); + },ValidatePak:function (asset) { + var fs_homepath = Pointer_stringify(_Cvar_VariableString(allocate(intArrayFromString('fs_homepath'), 'i8', ALLOC_STACK))); + var localPath = PATH.join(fs_homepath, asset.name); + var crc = SYSC.CRC32File(localPath); + + return crc === asset.checksum; + },DirtyPaks:function () { + return SYSC.GetManifest().filter(function (asset) { + return asset.name.indexOf('.pk3') !== -1 && !SYSC.ValidatePak(asset); + }); + },SyncPaks:function (callback) { + var downloads = SYSC.DirtyPaks(); + + SYSC.DownloadAssets(downloads, function (asset) { + SYS.LoadingDescription('loading ' + asset.name); + }, function (loaded, total) { + SYS.LoadingProgress(loaded / total); + }, function (asset, data, next) { + SYSC.SavePak(asset.name, data, next); + }, function (err) { + SYS.LoadingDescription(null); + + setTimeout(function () { + callback(err); + }); + }); + },FS_Startup:function (callback) { + SYSC.UpdateManifest(function (err) { + if (err) return callback(err); + + SYSC.SyncInstallers(function (err) { + if (err) return callback(err); + + SYSC.SyncPaks(Browser.safeCallback(callback)); + }); + }); + },FS_Shutdown:function (callback) { + callback(null); + }};var SYS={exited:false,timeBase:null,style:null,loading:null,css:"@font-face {\tfont-family: \"Open Sans\";\tsrc: url(\"data:application/x-font-ttf;base64,AAEAAAATAQAABAAwRkZUTWNfpp0AAAE8AAAAHEdERUYBHAAEAAABWAAAACBHUE9TLXIXQgAAAXgAAAmeR1NVQqBiiJ4AAAsYAAAAqE9TLzKit518AAALwAAAAGBjbWFwt29svgAADCAAAAICY3Z0IC0XB1cAAA4kAAAAPGZwZ22LC3pBAAAOYAAACZFnYXNwAAAAEAAAF/QAAAAIZ2x5ZiXJj4cAABf8AAB90GhlYWQCJ5aeAACVzAAAADZoaGVhEAoF9AAAlgQAAAAkaG10eE7lQQEAAJYoAAADvGxvY2HsOw0sAACZ5AAAAeBtYXhwAyECPAAAm8QAAAAgbmFtZXqaoH4AAJvkAAAEqnBvc3Slhu7VAACgkAAAAwBwcmVw80Qi7AAAo5AAAACQd2ViZmi7Ua8AAKQgAAAABgAAAAEAAAAAzD2izwAAAADJTOqTAAAAAM3VGToAAQAAAA4AAAAYAAAAAAACAAEAAQDuAAEABAAAAAIAAAABAAAACgBUAGIABERGTFQAGmN5cmwAJmdyZWsAMmxhdG4APgAEAAAAAP//AAEAAAAEAAAAAP//AAEAAAAEAAAAAP//AAEAAAAEAAAAAP//AAEAAAABa2VybgAIAAAAAQAAAAEABAACAAAAAQAIAAEIcgAEAAAAYADKAMoBkAGWAfQBlgH6AlgCpgJYAtgC3gKmAxACWAN+AlgDtATOBPwE/AKmBe4G5AGQBxYHKAdSBygHZAcWB3YHFgcWBygHKAfAB1IIOgg6B3YIOgGQAfoB+gH6AfoB+gH6AtgCpgLYAtgC2ALYAlgCWAJYAlgCWAJYAlgEzgTOBM4EzgXuA34HFgcWBxYHFgcWBxYHKAcoBygHKAcoBygHKAcoCGAHKAg6BygIOgLYBe4B9AH0AMoAygGWAMoBlgAxACT/cQA3ACkAOQApADoAKQA8ABQARP+uAEb/hQBH/4UASP+FAEr/wwBQ/8MAUf/DAFL/hQBT/8MAVP+FAFX/wwBW/8MAWP/DAIL/cQCD/3EAhP9xAIX/cQCG/3EAh/9xAJ8AFACi/4UAo/+uAKT/rgCl/64Apv+uAKf/rgCo/64Aqf+FAKr/hQCr/4UArP+FAK3/hQC0/4UAtf+FALb/hQC3/4UAuP+FALr/hQC7/8MAvP/DAL3/wwC+/8MAxP+FAMUAFAABAC0AuAAXACb/mgAq/5oAMv+aADT/mgA3/3EAOP/XADn/hQA6/4UAPP+FAIn/mgCU/5oAlf+aAJb/mgCX/5oAmP+aAJr/mgCb/9cAnP/XAJ3/1wCe/9cAn/+FAMP/mgDF/4UAAQA3/64AFwAF/3EACv9xACb/1wAq/9cALQEKADL/1wA0/9cAN/9xADn/rgA6/64APP+FAIn/1wCU/9cAlf/XAJb/1wCX/9cAmP/XAJr/1wCf/4UAw//XAMX/hQDa/3EA3f9xABMAD/+uABH/rgAk/9cAN//DADn/7AA6/+wAO//XADz/7AA9/+wAgv/XAIP/1wCE/9cAhf/XAIb/1wCH/9cAn//sAMX/7ADb/64A3v+uAAwAJv/XACr/1wAy/9cANP/XAIn/1wCU/9cAlf/XAJb/1wCX/9cAmP/XAJr/1wDD/9cAAQAtAHsADAAP/4UAEf+FACIAKQAk/9cAgv/XAIP/1wCE/9cAhf/XAIb/1wCH/9cA2/+FAN7/hQAbAAX/XAAK/1wAJv/XACr/1wAy/9cANP/XADf/1wA4/+wAOf/XADr/1wA8/8MAif/XAJT/1wCV/9cAlv/XAJf/1wCY/9cAmv/XAJv/7ACc/+wAnf/sAJ7/7ACf/8MAw//XAMX/wwDa/1wA3f9cAA0AD/72ABH+9gAk/5oAO//XAD3/7ACC/5oAg/+aAIT/mgCF/5oAhv+aAIf/mgDb/vYA3v72AEYAD/+FABD/rgAR/4UAIgApACT/cQAm/9cAKv/XADL/1wA0/9cANwApAET/XABG/3EAR/9xAEj/cQBK/3EAUP+aAFH/mgBS/3EAU/+aAFT/cQBV/5oAVv+FAFj/mgBZ/9cAWv/XAFv/1wBc/9cAXf+uAIL/cQCD/3EAhP9xAIX/cQCG/3EAh/9xAIn/1wCU/9cAlf/XAJb/1wCX/9cAmP/XAJr/1wCi/3EAo/9cAKT/XACl/1wApv9cAKf/XACo/1wAqf9xAKr/cQCr/3EArP9xAK3/cQC0/3EAtf9xALb/cQC3/3EAuP9xALr/cQC7/5oAvP+aAL3/mgC+/5oAv//XAMP/1wDE/3EA1/+uANj/rgDb/4UA3v+FAAsAD//XABH/1wAk/+wAgv/sAIP/7ACE/+wAhf/sAIb/7ACH/+wA2//XAN7/1wA8AA//mgAR/5oAIgApACT/rgAm/+wAKv/sADL/7AA0/+wARP/XAEb/1wBH/9cASP/XAEr/7ABQ/+wAUf/sAFL/1wBT/+wAVP/XAFX/7ABW/+wAWP/sAIL/rgCD/64AhP+uAIX/rgCG/64Ah/+uAIn/7ACU/+wAlf/sAJb/7ACX/+wAmP/sAJr/7ACi/9cAo//XAKT/1wCl/9cApv/XAKf/1wCo/9cAqf/XAKr/1wCr/9cArP/XAK3/1wC0/9cAtf/XALb/1wC3/9cAuP/XALr/1wC7/+wAvP/sAL3/7AC+/+wAw//sAMT/1wDb/5oA3v+aAD0AD/+FABH/hQAiACkAJP+FACb/1wAq/9cAMv/XADT/1wBE/5oARv+aAEf/mgBI/5oASv/XAFD/wwBR/8MAUv+aAFP/wwBU/5oAVf/DAFb/rgBY/8MAXf/XAIL/hQCD/4UAhP+FAIX/hQCG/4UAh/+FAIn/1wCU/9cAlf/XAJb/1wCX/9cAmP/XAJr/1wCi/5oAo/+aAKT/mgCl/5oApv+aAKf/mgCo/5oAqf+aAKr/mgCr/5oArP+aAK3/mgC0/5oAtf+aALb/mgC3/5oAuP+aALr/mgC7/8MAvP/DAL3/wwC+/8MAw//XAMT/mgDb/4UA3v+FAAwAJv/sACr/7AAy/+wANP/sAIn/7ACU/+wAlf/sAJb/7ACX/+wAmP/sAJr/7ADD/+wABAAF/+wACv/sANr/7ADd/+wACgAF/+wACv/sAFn/1wBa/9cAW//XAFz/1wBd/+wAv//XANr/7ADd/+wABAAFACkACgApANoAKQDdACkABAAFAHsACgB7ANoAewDdAHsAEgBG/9cAR//XAEj/1wBS/9cAVP/XAKL/1wCp/9cAqv/XAKv/1wCs/9cArf/XALT/1wC1/9cAtv/XALf/1wC4/9cAuv/XAMT/1wAeAAUAUgAKAFIARP/XAEb/1wBH/9cASP/XAEr/7ABS/9cAVP/XAKL/1wCj/9cApP/XAKX/1wCm/9cAp//XAKj/1wCp/9cAqv/XAKv/1wCs/9cArf/XALT/1wC1/9cAtv/XALf/1wC4/9cAuv/XAMT/1wDaAFIA3QBSAAkABQBSAAoAUgAP/64AEf+uACIAKQDaAFIA2/+uAN0AUgDe/64ABAAF/9cACv/XANr/1wDd/9cAAgAfAAUABQAAAAoACwABAA8AEQADACQAKQAGAC4ALwAMADIANAAOADcAPgARAEQARgAZAEgASQAcAEsASwAeAE4ATgAfAFAAUwAgAFUAVQAkAFcAVwAlAFkAXAAmAF4AXgAqAIIAjQArAJIAkgA3AJQAmAA4AJoAoAA9AKIApwBEAKoArQBKALIAsgBOALQAtgBPALgAuABSALoAugBTAL8AwQBUAMMAwwBXAMUAxQBYANcA3ABZAN4A3gBfAAAAAQAAAAoAWgBoAARERkxUABpjeXJsACRncmVrAC5sYXRuADgABAAAAAD//wAAAAQAAAAA//8AAAAEAAAAAP//AAAAEAACTU9MIAAQUk9NIAAQAAD//wABAAAAAWxpZ2EACAAAAAEAAAABAAQABAAAAAEACAABAC4AAQAIAAQACgASABoAIADtAAMASQBPAOwAAwBJAEwA6wACAE8A6gACAEwAAQABAEkAAwSaAyAABQAEBZoFMwAAAR8FmgUzAAAD0QBmAgMIAgILCQYDCAQCAgTgAALvQAAgWwAAACgAAAAAMUFTQwAgAA37BAZm/mYAAAj+AoAgAAGfAAAAAARtBbYAAAAgAAMAAAADAAAAAwAAABwAAQAAAAAA/AADAAEAAAAcAAQA4AAAADQAIAAEABQAAAANAH4A/wExAVMBeALGAtoC3CAKIBQgGiAeICIgJiAvIDogRCBfIHQgrCEi4AD7BP//AAAAAAANACAAoAExAVIBeALGAtoC3CAAIBAgGCAcICIgJiAvIDkgRCBfIHQgrCEi4AD7Af//AAH/9f/j/8L/kf9x/03+AP3t/ezgyeDE4MHgwOC94LrgsuCp4KDghuBy4DvfxiDpBekAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhAIaHiYuTmJ6joqSmpaepq6qsra+usLGztbS2uLe8u72+AHJkZWnfeKFwa+h2agCImgBzAABndwAAAAAAbHwAqLqBY24AAAAAbX3gYoKFl8PE19jc3dnauQDBxeTn4uPq6wB5294AhIyDjYqPkJGOlZYAlJydm8LGyHEAAMd6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAY0BIgGNASIFtgAABhQEbQAA/hQI/v2ABc3/7AY1BIH/7P4UCP79gABEBRGwACywIGBmLbABLCBkILDAULAEJlqwBEVbWCEjIRuKWCCwUFBYIbBAWRsgsDhQWCGwOFlZILALRWFksChQWCGwC0UgsDBQWCGwMFkbILDAUFggZiCKimEgsApQWGAbILAgUFghsApgGyCwNlBYIbA2YBtgWVlZG7AAK1lZI7AAUFhlWVktsAIsIEUgsAQlYWQgsAVDUFiwBSNCsAYjQhshIVmwAWAtsAMsIyEjISBksQViQiCwBiNCsgsBAiohILAGQyCKIIqwACuxMAUlilFYYFAbYVJZWCNZISCwQFNYsAArGyGwQFkjsABQWGVZLbAELLAHQyuyAAIAQ2BCLbAFLLAHI0IjILAAI0JhsIBisAFgsAQqLbAGLCAgRSCwAkVjsAFFYmBEsAFgLbAHLCAgRSCwACsjsQgEJWAgRYojYSBkILAgUFghsAAbsDBQWLAgG7BAWVkjsABQWGVZsAMlI2FERLABYC2wCCyxBQVFsAFhRC2wCSywAWAgILAJQ0qwAFBYILAJI0JZsApDSrAAUlggsAojQlktsAosILgEAGIguAQAY4ojYbALQ2AgimAgsAsjQiMtsAssS1RYsQcBRFkksA1lI3gtsAwsS1FYS1NYsQcBRFkbIVkksBNlI3gtsA0ssQAMQ1VYsQwMQ7ABYUKwCitZsABDsAIlQrEJAiVCsQoCJUKwARYjILADJVBYsQEAQ2CwBCVCioogiiNhsAkqISOwAWEgiiNhsAkqIRuxAQBDYLACJUKwAiVhsAkqIVmwCUNHsApDR2CwgGIgsAJFY7ABRWJgsQAAEyNEsAFDsAA+sgEBAUNgQi2wDiyxAAVFVFgAsAwjQiBgsAFhtQ0NAQALAEJCimCxDQUrsG0rGyJZLbAPLLEADistsBAssQEOKy2wESyxAg4rLbASLLEDDistsBMssQQOKy2wFCyxBQ4rLbAVLLEGDistsBYssQcOKy2wFyyxCA4rLbAYLLEJDistsBkssAgrsQAFRVRYALAMI0IgYLABYbUNDQEACwBCQopgsQ0FK7BtKxsiWS2wGiyxABkrLbAbLLEBGSstsBwssQIZKy2wHSyxAxkrLbAeLLEEGSstsB8ssQUZKy2wICyxBhkrLbAhLLEHGSstsCIssQgZKy2wIyyxCRkrLbAkLCA8sAFgLbAlLCBgsA1gIEMjsAFgQ7ACJWGwAWCwJCohLbAmLLAlK7AlKi2wJywgIEcgILACRWOwAUViYCNhOCMgilVYIEcgILACRWOwAUViYCNhOBshWS2wKCyxAAVFVFgAsAEWsCcqsAEVMBsiWS2wKSywCCuxAAVFVFgAsAEWsCcqsAEVMBsiWS2wKiwgNbABYC2wKywAsANFY7ABRWKwACuwAkVjsAFFYrAAK7AAFrQAAAAAAEQ+IzixKgEVKi2wLCwgPCBHILACRWOwAUViYLAAQ2E4LbAtLC4XPC2wLiwgPCBHILACRWOwAUViYLAAQ2GwAUNjOC2wLyyxAgAWJSAuIEewACNCsAIlSYqKRyNHI2EgWGIbIVmwASNCsi4BARUUKi2wMCywABawBCWwBCVHI0cjYbAGRStlii4jICA8ijgtsDEssAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgsAhDIIojRyNHI2EjRmCwBEOwgGJgILAAKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwgGJhIyAgsAQmI0ZhOBsjsAhDRrACJbAIQ0cjRyNhYCCwBEOwgGJgIyCwACsjsARDYLAAK7AFJWGwBSWwgGKwBCZhILAEJWBkI7ADJWBkUFghGyMhWSMgILAEJiNGYThZLbAyLLAAFiAgILAFJiAuRyNHI2EjPDgtsDMssAAWILAII0IgICBGI0ewACsjYTgtsDQssAAWsAMlsAIlRyNHI2GwAFRYLiA8IyEbsAIlsAIlRyNHI2EgsAUlsAQlRyNHI2GwBiWwBSVJsAIlYbABRWMjIFhiGyFZY7ABRWJgIy4jICA8ijgjIVktsDUssAAWILAIQyAuRyNHI2EgYLAgYGawgGIjICA8ijgtsDYsIyAuRrACJUZSWCA8WS6xJgEUKy2wNywjIC5GsAIlRlBYIDxZLrEmARQrLbA4LCMgLkawAiVGUlggPFkjIC5GsAIlRlBYIDxZLrEmARQrLbA5LLAwKyMgLkawAiVGUlggPFkusSYBFCstsDossDEriiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSYBFCuwBEMusCYrLbA7LLAAFrAEJbAEJiAuRyNHI2GwBkUrIyA8IC4jOLEmARQrLbA8LLEIBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmGwAiVGYTgjIDwjOBshICBGI0ewACsjYTghWbEmARQrLbA9LLAwKy6xJgEUKy2wPiywMSshIyAgPLAEI0IjOLEmARQrsARDLrAmKy2wPyywABUgR7AAI0KyAAEBFRQTLrAsKi2wQCywABUgR7AAI0KyAAEBFRQTLrAsKi2wQSyxAAEUE7AtKi2wQiywLyotsEMssAAWRSMgLiBGiiNhOLEmARQrLbBELLAII0KwQystsEUssgAAPCstsEYssgABPCstsEcssgEAPCstsEgssgEBPCstsEkssgAAPSstsEossgABPSstsEsssgEAPSstsEwssgEBPSstsE0ssgAAOSstsE4ssgABOSstsE8ssgEAOSstsFAssgEBOSstsFEssgAAOystsFIssgABOystsFMssgEAOystsFQssgEBOystsFUssgAAPistsFYssgABPistsFcssgEAPistsFgssgEBPistsFkssgAAOistsFossgABOistsFsssgEAOistsFwssgEBOistsF0ssDIrLrEmARQrLbBeLLAyK7A2Ky2wXyywMiuwNystsGAssAAWsDIrsDgrLbBhLLAzKy6xJgEUKy2wYiywMyuwNistsGMssDMrsDcrLbBkLLAzK7A4Ky2wZSywNCsusSYBFCstsGYssDQrsDYrLbBnLLA0K7A3Ky2waCywNCuwOCstsGkssDUrLrEmARQrLbBqLLA1K7A2Ky2wayywNSuwNystsGwssDUrsDgrLbBtLCuwCGWwAyRQeLABFTAtAAAAAAEAAf//AA8AAgBEAAACZAVVAAMABwAusQEALzyyBwQc7TKxBgXcPLIDAhztMgCxAwAvPLIFBBztMrIHBh38PLIBAhztMjMRIRElIREhRAIg/iQBmP5oBVX6q0QEzQAAAAIAUv/nAgIFtgADAA8AHkAbAAAAAVEAAQEMQwACAgNTAAMDFQNEJCMREAQTKwEhAyEBNDYzMhYVFAYjIiYBz/62MwGw/lRsZ2ZpbWJjcAIEA7L68FtlZVtaZWUAAgB5A6YDuAW2AAMABwAjQCACAQAAAVEFAwQDAQEMAEQEBAAABAcEBwYFAAMAAxEGECsBAyEDIQMhAwHdKf7uKQM/Kf7uKQW2/fACEP3wAhAAAAAAAgAlAAAFJwW2ABsAHwBGQEMMCgIIDxANAwcACAdaDgYCAAUDAgECAAFZCwEJCQxDBAECAg0CRAAAHx4dHAAbABsaGRgXFhUUExEREREREREREREYKwEHMxUhAyETIwMhEyM1ITcjESETIQMzEyEDMxEFMzcjBBIe8/7eSv70SahH/vVI4QESH+4BH0gBDEqmSAEMSeX9G6UfpgMtqP7+eQGH/nkBh/6oAQQBhf57AYX+e/78qKgAAAIAUP+JBGgGEgArACwA20AVLBQCAwIZAQQDGgMCAQQpAgIAAQRCS7AKUFhAHAAFAAAFXwADAAQBAwRcAAEAAAUBAFsAAgIOAkQbS7ANUFhAHgAFAAAFXwABAAAFAQBbAAICDkMABAQDUwADAwwERBtLsBVQWEAdAAUABWsAAQAABQEAWwACAg5DAAQEA1MAAwMMBEQbS7AvUFhAGwAFAAVrAAMABAEDBFwAAQAABQEAWwACAg4CRBtAIgACAwJqAAUABWsAAwAEAQMEXAABAAABTwABAQBTAAABAEdZWVlZtx0jER4kEAYVKyUmJxEWBDMyNjU0LgEnLgI1NDY3NTMVFhcDJiMiBhUUHgEXHgEVFAYHFSMTAfjby3QBEGdVTzmFcX+cR9TUz8fKd9GoUEEvdGfRttXMz21EClgBTDtPKTAhLjopL3WRbKW6FomHC1f+414nJiErNSNKvZWo0hnBBi0ABQAl//AHbwXLAAsAFwAbACcAMwCwS7AYUFhAKAAJAAcCCQdcAAAAAgYAAlsAAQEDUwoFAgMDFEMABgYEUwgBBAQNBEQbS7AfUFhALAAJAAcCCQdcAAAAAgYAAlsKAQUFDEMAAQEDUwADAxRDAAYGBFMIAQQEDQREG0AwAAkABwIJB1wAAAACBgACWwoBBQUMQwABAQNTAAMDFEMABAQNQwAGBghTAAgIFQhEWVlAFRgYMjAsKiYkIB4YGxgbEyQkJCILFCsBFBYzMjY1NCYjIgYFFAYjIiY1NDYzMhYlASEBExQWMzI2NTQmIyIGBRQGIyImNTQ2MzIWAVImJiYlJSYnJQHFxresycSxr84C2fzV/tcDK+MmJishISsnJQHFx7asycSxr84D/nNmZHVzZmht3PH51Nzt9uH6SgW2/AJzZnVkZHVobdvx+dPc7fYAAwBI/+wGbwXJAB8AKAAzAJFLsBpQWEATMQECBScmHhgXCwYEAgEBAAQDQhtAEzEBAgUnJh4YFwsGBAIBAQMEA0JZS7AaUFhAIwAFBQFTAAEBFEMAAgIAUwYDAgAAFUMABAQAUwYDAgAAFQBEG0AgAAUFAVMAAQEUQwACAgNRBgEDAw1DAAQEAFMAAAAVAERZQA8AAC0rJCIAHwAfGCokBxIrIScOAiMiLgE1ECUuATU0NjMyFhUUBgcXNjchBgIHCQEUFjMyNjcnBgE0JiMiBhUUFz4BBHVjWnOPXJ7zgQEQPkX32NPrf4nHSx0Blh6BUQFA+2xaSjlWF/hSASc5Kyo/WDk8ZjkrFmzCfAEGi0adY6C8u6FvvVO9c5GK/utj/s0Bsj9QHhP8PQJaMSsyN0tQIFkAAAAAAQB5A6YB3QW2AAMAGEAVAAAAAVECAQEBDABEAAAAAwADEQMQKwEDIQMB3Sn+7ikFtv3wAhAAAAACAEr+vAKoBd8ADQAOADO1DgEBAAFCS7AYUFhACwABAQBRAAAADAFEG0AQAAABAQBNAAAAAVEAAQABRVmzFhMCESsTEBI3IQYCERASFyEmAgFKjooBRn6IhID+vImPAaMCRgEiAdKlr/4m/vL++/4rsp4BzASnAAACADf+vAKWBd8ADQAOADO1DgEAAQFCS7AYUFhACwAAAAFRAAEBDABEG0AQAAEAAAFNAAEBAFEAAAEARVmzFhMCESsBEAIHITYSERACJyEWEgEClo+K/rx+hoSCAUaLjv5hAkb+5f4xoKwB2QEHAQkB2bWm/igCbAABAC0CPQQhBhQADgBCQBMNDAsCAQUAAQFCCgkIBwYFBgA/S7AvUFhADAAAAQBrAgEBAQ4BRBtACgIBAQABagAAAGFZQAkAAAAOAA4TAxArAQMlEwUTBQsBJRMlEwUDAr4mAWQl/sbP/vyPe/7wzv7HLQFcJwYU/qBl/tkV/uqKARv+54gBFhkBI2UBYAAAAAABAEgA4wQ9BMcACwAlQCIAAgEFAk0DAQEEAQAFAQBZAAICBVEABQIFRREREREREAYVKwEhESERIREhESERIQG8/owBdAENAXT+jP7zAkwBDAFv/pH+9P6XAAAAAAEAOf7jAgABKwAHAB5AGwIBAQAAAU0CAQEBAFEAAAEARQAAAAcABxMDECsBFwIHITYSNwHyDmFP/ukdOwsBKxf+g7SKAVdnAAEAKwGJAmACwQADAB1AGgAAAQEATQAAAAFRAgEBAAFFAAAAAwADEQMQKxMRIRErAjUBiQE4/sgAAQBW/+cB+AFmAAsAEkAPAAAAAVMAAQEVAUQkIgIRKzc0NjMyFhUUBiMiJlZtaGNqbWBjcqZcZGRcWmVkAAAAAAEACv/sA4UFywADAC9LsDFQWEAMAgEBAQxDAAAADQBEG0AMAgEBAAFqAAAADQBEWUAJAAAAAwADEQMQKwkBIQEDhf3f/qYCIQXL+iEF3wAAAgBI/+wEaAXLAAsAFwAeQBsAAwMBUwABARRDAAICAFMAAAAVAEQkJCQiBBMrARAAISAAERAAISAAARQWMzI2NTQmIyIGBGj+/P70/vr+9gEEAQwBBQEL/Wk+SUo9PklJPgLZ/nz+lwF5AXQBhgFs/oX+ifi6wPLzw7wAAAEAVAAAA64FtgAKABpAFwgHBAMAAQFCAAEBDEMAAAANAEQYEAIRKykBETQ3Bg8BJwEhA67+bwYlN6bNAfYBZAMGjXUtMYn8AZkAAAABAC0AAARiBcsAHQAtQCoOAQECGw0CAwECAQADA0IAAQECUwACAhRDAAMDAFEAAAANAEQZJigQBBMrKQERAT4CNTQmIyIGByc+AjMyHgEVFA4CBxUhBGL72wFlmV4lSkNFjVnZcZq1cY7feytalfMCKQEEAWmgdVQuOUJPTf5lVy5kuXNWko2c2goAAAEARv/sBFwFywAnAD9APCIBBAUhAQMEBAMCAgMNAQECDAEAAQVCAAMAAgEDAlsABAQFUwAFBRRDAAEBAFMAAAAVAEQkIyElJSgGFSsBFAYHFQQRFAQhIiYnER4BMzI2NTQuASsBETMgNTQmIyIHAz4BMzIEBDGmnQFu/r3+4XbJdWDHVIJ3PopvWlwBLVlLjJakdPOd4wECBHmIwywGLv7UzOoiLQFIMS9JTjxBIQEpmjo4XgEIUES0AAAAAgAjAAAEkQW2AAoAEwA1QDIGAQAEAUIABQMEAwUEaAcGAgQCAQABBABZAAMDDEMAAQENAUQLCwsTCxMVERIRERAIFSsBIxEhESERASERMyE1NDY3IwYPAQSRof56/bkCYAFtof3ZBwILIiuiARv+5QEbASIDefyMqjCjBE1D8QABAF7/7ARSBbYAHQBDQEAbFgIDABUKAgIDCQEBAgNCBgEAAAMCAANbAAUFBFEABAQMQwACAgFTAAEBFQFEAQAaGRgXFBIODAgGAB0BHAcPKwEyHgEVFAAhICcRHgEzMjY1NCYjIgcnEyERIQc+AQKYfstx/tn+1f8AolfbT252eHpdbJE3A0L+DhJOQgO+ddaM9f76TwFEKDRdW1ReI0gDBP63wQ8DAAACAEb/7ARxBcsAFwAiAEJAPwYBAQAHAQMBAkIAAgMGAwIGaAADAAYFAwZbAAEBAFMAAAAUQwcBBQUEVAAEBBUERBkYHhwYIhkiJCESIyMIFCsTEBIkMzIXESYjIgYHMzYzMhYVFAAjIAAFMjY1NCMiBhUUFkavAVX6WXdkdcbCCQxax8PX/vD0/v3+3AIeP0+KRFVSAmoBMgF7tBH+yxOuxar74PH+6QFQF19oslxCYHsAAAABAE4AAARtBbQABgAkQCEFAQABAUIAAAABUQABAQxDAwECAg0CRAAAAAYABhERBBErMwEhESEVAdEB9v2HBB/9/QRtAUfp+zUAAAAAAwBE/+wEbwXLABcAIgAtADVAMiggEgYEAgMBQgUBAwMAUwQBAAAUQwACAgFTAAEBFQFEJCMBACMtJC0cGg0LABcBFwYPKwEyBBUUBgceARUUBCMgJDU0NjcuATU0JBMUFjMyNTQmJw4BEyIGFRQXPgE1NCYCXOcBAXmDooX+5v3+/v7uepB0awEGOVhOsE1jWU2sM0Z1RzRGBcu6q3SvQVy3asPW0cR/s0lOs2uou/vGPkuBMV87L18C6DsvVkIpRCswOgAAAAACADX/7ARtBcUAGAAkAEJAPwYBAQMFAQABAkIAAgYDBgIDaAAGAAMBBgNbBwEFBQRTAAQEFEMAAQEAUwAAABUARBoZIB4ZJBokJCMSIyIIFCsBEAAhIicRFjMyNjcjDgIjIiY1NAAzIAAlIgYVFBYzMjY1NCYEbf6O/mmGRlZW1OYKDCdMblK+1gEV8QEMASb92UFRRkhBYFkDGf5T/oAKATkQr71IQCL+3/MBFP6cKF5oUmFeQlmAAAAAAAIAVv/nAfgEewALABcAHkAbAAMDAlMAAgIXQwAAAAFTAAEBFQFEJCQkIgQTKzc0NjMyFhUUBiMiJhE0NjMyFhUUBiMiJlZtaGNqbWBjcm5nY2psYWZvplxkZFxaZWQDcVtkZFtaZmYAAgA5/uMCAAR7AAcAEwAjQCAEAQEAAAEAVQADAwJTAAICFwNEAAASEAwKAAcABxMFECsBFwIHITYSNwM0NjMyFhUUBiMiJgHyDmFP/ukdOwtAa2hka2xjZm0BKxf+g7SKAVdnApFbZGVaWmZlAAAAAAEASACyBDsFGQAGAAazAwABKCslATUBEQEFBDv8DQPz/ZQCbLIBwawB+v7X/uX8AAIASAFmBD8EOwADAAcAcEuwC1BYQBoAAAQBAQIAAVkAAgMDAk0AAgIDUQUBAwIDRRtLsBBQWEAUAAIFAQMCA1UEAQEBAFEAAAAPAUQbQBoAAAQBAQIAAVkAAgMDAk0AAgIDUQUBAwIDRVlZQBEEBAAABAcEBwYFAAMAAxEGECsTESERAREhEUgD9/wJA/cDLwEM/vT+NwEP/vEAAAEASACyBDsFGQAGAAazBgMBKCsTJQERARUBSAJs/ZQD8/wNAdn8ARsBKf4GrP4/AAIAAP/nA+UFywAZACUAOUA2DQEAAQwBAgACQgUBAgADAAIDaAAAAAFTAAEBFEMAAwMEUwAEBBUERAAAJCIeHAAZABkjKQYRKwE1NDY3PgE1NCYjIgcDNiEyFhUUBgcOAR0BATQ2MzIWFRQGIyImASdQZlFHTD2Xyov5AQ/f/nF8aTX+omtoZGtvYGNwAgRWYodAM1I1KjFrARCOxKl5sU9EPysz/qJcZGVbW2RjAAAAAgBS/2YG2wXJADUAQQBSQE8UAQoDPQEECigBBgApAQcGBEIAAQQABAEAaAkBBAIBAAYEAFsABgAHBgdXAAUFCFMACAgUQwAKCgNTAAMDDwpEQD46OCUkJSQlJSESIwsYKwEUDgEjIiYnIwYjIiY1ND4BMzIWFwMHFDMyNjU0ACMiBAIVFAAhMiQ3FQYhIAARNBIkITIEEgEUFjMyNj8BJiMiBgbbYaxuT4AkD2uZt8R86ppRw1EVAjE0Qf7y+L7+55QBHQEEdAENgeD+7P58/kXlAZMA/+oBZ8H8HUk8TUgLCigcbH8C9I30ij84d9bAjdl1IRz+Wl5WroXvAQSe/tnG//7rMi7lXwGVAWf9AZHZsv63/rNkWnyenAaGAAAAAgAAAAAFzwW8AAcADwAwQC0MAQQCAUIGAQQAAAEEAFoAAgIMQwUDAgEBDQFECAgAAAgPCA8ABwAHERERBxIrIQMhAyEBIQkBJy4BJw4BAwQfSP4lSv5OAd0CDwHj/bY/Fj8KCTVbARL+7gW8+kQCVvBQ/jcz6v6oAAAAAAMAngAABQQFtgAPABcAHwA1QDIIBwIFAgFCAAIGAQUEAgVbAAMDAFMAAAAMQwAEBAFTAAEBDQFEGBgYHxgeIiMhKyAHFCsTISAEFRQGBxUeARUUBCkBATMyNjU0KwEZATMyNTQmI54B/gEqASF+Z4h6/tX+/v3HAYt3VV26b4u5Y14FtrG7e64ZCiSohsflA4VGRXv92f7NnElOAAEAaP/sBPIFywAXADZAMxQBAAMVCAIBAAkBAgEDQgQBAAADUwADAxRDAAEBAlMAAgIVAkQBABMRDAoGBAAXARcFDysBIgYVECEyNjcRBiMgABE0EiQzMhcDLgEDKY2eAUFhtly35/61/p+rAUHZ7dh5UaIEh+fL/lo2Jv6yUQGAAWvjAVi5Z/7JJjQAAgCeAAAFdwW2AAgAEQAeQBsAAgIBUwABAQxDAAMDAFMAAAANAEQhJCEiBBMrARAAKQERISAAATQmKwERMzI2BXf+bf6T/icB+gFgAX/+Zp+ic1i0qAL6/pL+dAW2/pj+nsnC/M3RAAABAJ4AAAQCBbYACwAoQCUAAwAEBQMEWQACAgFRAAEBDEMABQUAUQAAAA0ARBEREREREAYVKykBESERIRUhESERIQQC/JwDZP4nAbb+SgHZBbb+w+b+w/7sAAAAAAEAngAAA/4FtgAJACJAHwADAAQAAwRZAAICAVEAAQEMQwAAAA0ARBEREREQBRQrKQERIREhESERIQIj/nsDYP4lAbb+SgW2/sP+6f7DAAAAAQBo/+wFYAXLABoAOkA3DQEDAg4BAAMYAQQFAgEBBARCAAAABQQABVkAAwMCUwACAhRDAAQEAVMAAQEVAUQSJCQkIhAGFSsBIREEISAAERAAITIWFwMmIyIGFRQWMzI3NSEC6QJ3/v/+zP6u/o8BlAFsivVbfZ69rb2roVhK/vsDWPzsWAGIAWsBYgGKNCj+yk7h0c3XEeUAAAAAAQCeAAAFgwW2AAsAIEAdAAQAAQAEAVkFAQMDDEMCAQAADQBEEREREREQBhUrKQERIREhESERIREhBYP+c/41/nMBjQHLAY0CVP2sBbb94gIeAAAAAQCeAAACKwW2AAMAGEAVAAAADEMCAQEBDQFEAAAAAwADEQMQKzMRIRGeAY0FtvpKAAAAAAH/Xv41AjMFtgAOAEVACgMBAQICAQABAkJLsB9QWEARAAICDEMAAQEAVAMBAAARAEQbQA4AAQMBAAEAWAACAgwCRFlADAEACwoHBQAOAQ4EDysTIicRHgEzMjY1ESEREAArbGEgSCpiVAGN/vz+NRUBMwYPdo8FSfrZ/tf+zwAAAQCeAAAFhwW2AA0AH0AcDQgDAgQAAgFCAwECAgxDAQEAAA0ARBQRExAEEyspAQEHESERIRE2NwEhAQV//kL+33X+cwGNHlsBMwGw/jMCL0b+FwW2/YU7gAHA/XEAAAAAAQCeAAAEXAW2AAUAHkAbAAAADEMAAQECUgMBAgINAkQAAAAFAAUREQQRKzMRIREhEZ4BiwIzBbb7if7BAAAAAAEAngAABx8FtgAUACxAKQYBAAACUQQBAgIMQwADAwFRCAcFAwEBDQFEAAAAFAAUFBERERETEQkWKyEBIxIVESERIQEzASERIRE0NjcjAQMb/tUJFf6iAg4BMQgBKwIP/pUDDAn+2QQd/vOV/YUFtvvyBA76SgKBMnru++UAAAAAAQCeAAAGDgW2AA8AJUAiAAQBAAEEAGgAAQEDUQUBAwMMQwIBAAANAEQTERETERAGFSspAQEjFhURIREhATMmNREhBg79+v3qCRP+ogIEAhQGDgFgBAbzgP1tBbb8CN2GApUAAAIAaP/sBfYFzQALABUAHkAbAAMDAVMAAQEUQwACAgBTAAAAFQBEJCMkIgQTKwEQACEgABEQACEgAAEQITI2NTQmIyAF9v6W/qP+qP6RAW0BXAFdAWj8EgEnlpGTkv7XAt3+j/6AAYIBcQFtAYH+gv6O/ljO2tvRAAIAngAABMMFtgAKABIAIkAfAAMAAAEDAFsABAQCUwACAgxDAAEBDQFEIyIhESIFFCsBFAAhIxEhESEgBAEzMjY1NCsBBMP+3/72b/51AfoBFQEW/WZIWWmkZgPl9f71/hsFtvL+Y2RYlAAAAAIAaP6kBh8FzQAQABoAL0AsAgEBAwcGAgABAkIAAAEAawAEBAJTAAICFEMAAwMBUwABARUBRCQjJBQTBRQrARAFASEBJzUnIAAREAAhIAABECEyNjU0JiMgBfb+xAFl/hT+/gEB/qj+kQFtAVwBXQFo/BIBJ5aRk5L+1wLd/g+t/mUBRQEBAQGCAXEBbQGB/oL+jv5Yztrb0QAAAAIAngAABYMFtgALABIAMkAvCAEDBAFCAAQGAQMABANZAAUFAVMAAQEMQwIBAAANAEQAABIQDgwACwALFCERBxIrAREhESEgERQHASEBAzMyNTQrAQIp/nUB3wJU+AGq/kD+ymRKz8tOAhT97AW2/lD+i/2DAhQBKbeXAAABAFr/7ARaBcsAJgAtQCobAQMCHAgCAQMHAQABA0IAAwMCUwACAhRDAAEBAFMAAAAVAEQjLCUjBBMrARQGBCMiJicRHgEzMjY1NC4BJy4CNTQkITIXAyYjIgYVFBYXHgEEWor+/K+Sxmtx9GZYUiFJno+PRQEmAQHj7HnNlU1GWcW9kwG8iNN1KTMBYDpBPTAeLS5HQXqebMriaf7PXjYoK0RaVcMAAAABADMAAASHBbYABwAaQBcDAQEBAlEAAgIMQwAAAA0ARBERERAEEyspAREhESERIQMj/nX+mwRU/pwEcwFD/r0AAQCW/+wFeQW2ABEAIEAdBAMCAQEMQwACAgBUAAAAFQBEAAAAEQARIxMjBRIrAREQACEgABkBIREUFjMyNjURBXn+u/7O/tX+vwGNdHF5bQW2/JD+4f7FATIBHwN5/KabjIueA1gAAAABAAAAAAWNBbYACwAaQBcIAQEAAUICAQAADEMAAQENAUQRERADEisBIQEhASETFhc+ATcD0wG6/iH+L/4jAbzHPgYHKhAFtvpKBbb9G/dhRtI8AAABAB8AAAgxBbYAHAAgQB0YDwUDAAIBQgQDAgICDEMBAQAADQBEFxcRGBAFFCspAQMuAScOAgMhASETFhc2EjcTIRMWEhc2GwEhBsn+LYwKKwoIJCOA/i3+lgF9nzYUDUMdgQFufSBCCw06ogF9An0o7lBBwaL9wQW2/SPzkGYBXnMCKf3Xhf6kVm8BEgLfAAABAAQAAAXDBbYACwAfQBwLCAUCBAACAUIDAQICDEMBAQAADQBEEhISEAQTKykBCQEhCQEhARMhAQXD/jf+4/7m/kEB5f44AbYBCP4Bw/4xAcn+NwLsAsr+PAHE/RcAAAABAAAAAAVQBbYACAAcQBkGAwADAQABQgIBAAAMQwABAQ0BRBISEQMSKwETIQERIREBIQKo/AGs/h/+cv4fAa4DmAIe/IX9xQIvA4cAAQA9AAAEsAW2AAkAKEAlBwEBAgIBAAMCQgABAQJRAAICDEMAAwMAUQAAAA0ARBIREhAEEyspATUBIREhFQEhBLD7jQJ5/ZYEVP2HAon0A4MBP/P8fAAAAAIAdf6oAmgF3wAHAAgARLUIAQIBAUJLsBhQWEASAAMAAAMAVQACAgFRAAEBDAJEG0AYAAEAAgMBAlkAAwAAA00AAwMAUQAAAwBFWbUREREQBBMrASERIRUjETMBAmj+DQHztrb++/6oBzf++sUGJwABAAb/7AOBBcsAAwAvS7AxUFhADAIBAQEMQwAAAA0ARBtADAIBAQABagAAAA0ARFlACQAAAAMAAxEDECsJASEBAWACIf6m/d8Fy/ohBd8AAAIAL/6oAiMF3wAHAAgARLUIAQECAUJLsBhQWEASAAAAAwADVQABAQJRAAICDAFEG0AYAAIAAQACAVkAAAMDAE0AAAADUQADAANFWbUREREQBBMrFzMRIzUhESEBL7a2AfT+DAEOWgU7/vjJByUAAAAB//AB9gROBbwABwAgQB0FAQEAAUIDAgIBAAFrAAAADABEAAAABwAHEREEESsDATMBIQELARABuKoB/P7Z/t98fAH2A8b8OgJB/t3+4gAAAAH//P6FBAT/ewADABdAFAABAAABTQABAQBRAAABAEUREAIRKwEhNSEEBPv4BAj+hfYAAAABAQgE2QO8BiEACQA1tggDAgEAAUJLsC9QWEAMAgEBAAFrAAAADgBEG0AKAAABAGoCAQEBYVlACQAAAAkACRQDECsBJiQnNSEWHwEVArhF/vNeAa40lzsE2Sy9ShVGo0IdAAAAAgBK/+wEeQSBABgAIQCDQAoSAQMEEQECAwJCS7AaUFhAKAAABgEGAAFoAAIABwYCB1sAAwMEUwAEBBdDCQEGBgFTCAUCAQEVAUQbQCwAAAYFBgAFaAACAAcGAgdbAAMDBFMABAQXQwgBBQUNQwkBBgYBUwABARUBRFlAFRoZAAAfHRkhGiEAGAAYIyIkIhEKFCshJyMOASMiJjU0Nj8BNTQjIgcDNiEyFhURATI2PQEHBhUUA2pLCE+kgqC4/O+9iny/ccYBLtrv/c9HZVrBlmJIwK61sQsGEIxUAQJm2ML9GQEAWkhYBAeHaAACAIf/7ATNBhQAFQAhALFLsBpQWEAoAAcGAgYHAmgABQACAQUCWQAEBA5DCQEGBgBTCAEAABdDAwEBARUBRBtLsC9QWEAsAAcGAgYHAmgABQACAwUCWQAEBA5DCQEGBgBTCAEAABdDAAMDDUMAAQEVAUQbQCwABwYCBgcCaAAFAAIDBQJZCQEGBgBTCAEAABdDAAQEA1EAAwMNQwABARUBRFlZQBoXFgEAHhwWIRchExIPDg0MCwoHBQAVARUKDysBMhIREAIjIi4BJyMHIREhERQHMz4BAyIGHQEUFjMyNjUQAzu52dvDP2JNMxg+/s8Bhw4OOZUwUkxMVkVKBIH+yv7u/uz+xxswOG8GFP6gP5pYTv7Ncno3i3mNiQERAAABAFb/7AQdBIEAFQA2QDMIAQIBEwkCAwIUAQADA0IAAgIBUwABARdDAAMDAFMEAQAAFQBEAQASEA0LBwUAFQEVBQ8rBSAAERAAITIXAy4BIyIGFRAzMjcRBgKL/ur+4QE2AR7FrnNHeEFfaMmsnpcUASwBGQEaATZW/t8fJZSH/vBk/slkAAAAAgBW/+wEngYUABQAIQD1S7APUFhALAACAQcBAgdoAAUGAAAFYAADAw5DAAcHAVMAAQEXQwkBBgYAUwQIAgAAFQBEG0uwGlBYQC0AAgEHAQIHaAAFBgAGBQBoAAMDDkMABwcBUwABARdDCQEGBgBTBAgCAAAVAEQbS7AvUFhAMQACAQcBAgdoAAUGBAYFBGgAAwMOQwAHBwFTAAEBF0MABAQNQwkBBgYAUwgBAAAVAEQbQDEAAgEHAQIHaAAFBgQGBQRoAAcHAVMAAQEXQwADAwRRAAQEDUMJAQYGAFMIAQAAFQBEWVlZQBoWFQEAHRsVIRYhExIREA8OCwoIBgAUARQKDysFIiYCNRASMzIWFzMmNREhESEnIwYDMjY3NTQmIyIGFRQWAed5tWPewl+POwgTAYr+2VQPZSheTQNWXE1VVhSKAQyzARQBOExahYUBL/nsj6MBNXZ7H5Z/kYaEigAAAAACAFb/7AScBIEAFAAbAEJAPxEBAwISAQADAkIABQACAwUCWQcBBAQBUwABARdDAAMDAFMGAQAAFQBEFhUBABkYFRsWGw8NCwoHBQAUARQIDysFIAAREAAhIAAdASEeATMyNjcRDgEDIgYHIS4BAqr+5f7HASIBDQEAARf9RQSDcWetZVzEn0VdCAFQAlkUAS0BFgEfATP+9fuuX2wnL/7nLyQDi1ddUmIAAAAAAQAtAAADgQYfABYAWkAPDgEEAw8BBQQHBgIABQNCS7AvUFhAGwAEBANTAAMDDkMCAQAABVEABQUPQwABAQ0BRBtAGQADAAQFAwRbAgEAAAVRAAUFD0MAAQENAURZtxMkJREREAYVKwEjESERIzU3NTQ2MzIWFwcmIyIGHQEzAzvx/nmWnrfKTotcVEhFLSnxA0j8uANIwGAT4MQYHv0UNz4eAAADABT+FAS0BIEAKAA1AD4AqUuwGlBYQBMBAQgDAgEHCB8JAgAHGQEGAQRCG0ATAQEIBAIBBwgfCQIABxkBBgEEQllLsBpQWEApAAcAAAEHAFwACAgDUwkEAgMDF0MAAQEGUwAGBhVDAAUFAlMAAgIRAkQbQC0ABwAAAQcAXAkBBAQPQwAICANTAAMDF0MAAQEGUwAGBhVDAAUFAlMAAgIRAkRZQBQAAD48OTc0MS0rACgAKC8jNSYKEysBFQcWFRQEIyInBhUUFjsBIBEUBCEiJDU0Ny4BNTQ2Ny4BNTQ2MzIWFwEUFjMyNjU0JisBIgYTFDMyNjU0IyIEtJsg/v//PyUOXky8AX3+n/7B8f77/DRNOlxYZfzqH5gk/jVoV46raGGZP1d7eTg9dXkEbb05Ok23yggaFx0f/r/P5qGXyzsWYjA1UTgnpne5zA4G+wYwO0c4LSU7A1yuVlawAAAAAQCHAAAE2QYUABUAU0uwL1BYQBwAAgIOQwAAAARTAAQEF0MAAwMBUgYFAgEBDQFEG0AcAAIEAmoAAAAEUwAEBBdDAAMDAVIGBQIBAQ0BRFlADQAAABUAFSITERMiBxQrIRE0IyIGFREhESEVFAczPgEzMhYVEQNQh2Bb/nkBhxASOJpmvtMCauShu/4OBhTdlsBYSNvF/R8AAAAAAgB/AAACHwY1AAMADQA7S7AvUFhAFQADAwJTAAICFkMAAQEPQwAAAA0ARBtAEwACAAMBAgNbAAEBD0MAAAANAERZtSMjERAEEyspAREhATQ2MzIWFRQjIgIQ/nkBh/5vYm1tZNHPBG0BGlhWWFasAAL/mP4UAh0GNQANABcAXkAKBAEBAgMBAAECQkuwL1BYQBsABAQDUwADAxZDAAICD0MAAQEAVAUBAAARAEQbQBkAAwAEAgMEWwACAg9DAAEBAFQFAQAAEQBEWUAQAQAXFRIQCgkHBQANAQ0GDysTIiYnERYzMjURIREUBgM0NjMyFhUUIyJqMH0lQDh3AYfbtmJtbWTRz/4UDwoBMRKqBHf7N7vVB3NYVlhWrAABAIcAAAVGBhQAEABVQAsFAQQACQgCAQQCQkuwL1BYQBcAAwMOQwAAAA9DBQEEBAFSAgEBAQ0BRBtAFwADAANqAAAAD0MFAQQEAVICAQEBDQFEWUAMAAAAEAAQERMSEwYTKwE2NxMhCQEhAwcRIREhERQHAgJHMv4BtP53AaL+Qfh//ncBiRYCfXE/AUD+Hv11AZZh/ssGFP2cnZYAAAAAAQCHAAACDgYUAAMAJ0uwL1BYQAsAAQEOQwAAAA0ARBtACwABAQBRAAAADQBEWbMREAIRKykBESECDv55AYcGFAAAAAABAIcAAAd9BIEAIwC6S7ATUFhAHgcBBQQABAVgAgEAAARTCAYCBAQPQwoJAwMBAQ0BRBtLsBpQWEAfBwEFBAAEBQBoAgEAAARTCAYCBAQPQwoJAwMBAQ0BRBtLsC5QWEAjBwEFBAAEBQBoAAQED0MCAQAABlMIAQYGF0MKCQMDAQENAUQbQCkABwQFBAcFaAAFAAQFAGYABAQPQwIBAAAGUwgBBgYXQwoJAwMBAQ0BRFlZWUARAAAAIwAjIhEiERETIxMjCxgrIRE0JiMiBhURIRE0JiMiBhURIREhFzM+ATMyFzM+ATMyFhURBfY/RFpU/ng8Q1xU/nkBJzEXLatt9WMfMKtnycACaHNzmqT98AJoc3Okuv4QBG2MTlKVRk/O0v0fAAAAAAEAhwAABNkEgQAUAHhLsBNQWEAaAAMCAAIDYAAAAAJTBAECAg9DBgUCAQENAUQbS7AaUFhAGwADAgACAwBoAAAAAlMEAQICD0MGBQIBAQ0BRBtAHwADAgACAwBoAAICD0MAAAAEUwAEBBdDBgUCAQENAURZWUANAAAAFAAUIhEREyMHFCshETQmIyIGFREhESEXMz4BMzIWFREDUkFIY1j+eQEnMRcysXO80QJqcXOewP4QBG2MUFDaxv0fAAAAAAIAVv/sBMEEgQAMABgAHkAbAAMDAVMAAQEXQwACAgBTAAAAFQBEJCUkIgQTKwEQACEgABEQACEyBBIFFBYzMjY1NCYjIgYEwf7V/vP+/v7PASsBDqcBAIv9Ik5cW0tMXFpOAjn+6v7JAT4BDwEVATOO/vexkpmZkpGUkwACAIf+FATNBIEAEwAgAHZLsBpQWEAlAAQAAQAEAVkJAQYGA1MFAQMDD0MABwcAUwgBAAAVQwACAhECRBtAKQAEAAEABAFZAAMDD0MJAQYGBVMABQUXQwAHBwBTCAEAABVDAAICEQJEWUAaFRQBABwaFCAVIA8NDAsKCQgHBAMAEwETCg8rBSImJyMWFREhESEXMzYzMhIREAIBIgYHFRQWMzI2NTQmAy9WiEMSEv55AT43Em3AvNbf/r5WRQNOVEtERBQ5Sncd/jkGWZCk/sj+8P7u/sUDYnt5H5KCgZWSfwAAAAACAFb+FASeBIEAEgAeASZLsA9QWEAsAAIBBwECYAAFBgAGBQBoAAcHAVMDAQEBF0MJAQYGAFMIAQAAFUMABAQRBEQbS7AQUFhALQACAQcBAgdoAAUGAAYFAGgABwcBUwMBAQEXQwkBBgYAUwgBAAAVQwAEBBEERBtLsBFQWEAsAAIBBwECYAAFBgAGBQBoAAcHAVMDAQEBF0MJAQYGAFMIAQAAFUMABAQRBEQbS7AaUFhALQACAQcBAgdoAAUGAAYFAGgABwcBUwMBAQEXQwkBBgYAUwgBAAAVQwAEBBEERBtAMQACAwcDAgdoAAUGAAYFAGgAAwMPQwAHBwFTAAEBF0MJAQYGAFMIAQAAFUMABAQRBERZWVlZQBoUEwEAGxkTHhQeERANDAsKCQgHBQASARIKDysFIgIREBIzMhczNyERIRE0NyMGAzI2PQE0JiMiERQWAey+2N2/zWgIHQFS/nkMDGAsWVFSXqJSFAE4AREBFAE4oIz5pwHVIoSjAS9ugy+Wgf7dlIAAAAABAIcAAAOqBIEAEQCNS7AaUFi1AwEEAAFCG7UDAQMAAUJZS7ANUFhAGQAEAAEABGAAAQEAUwMFAgAAF0MAAgINAkQbS7AaUFhAGgAEAAEABAFoAAEBAFMDBQIAABdDAAICDQJEG0AeAAQDAQMEAWgAAwMPQwABAQBTBQEAABdDAAICDQJEWVlAEAEADw4NDAsKBwUAEQERBg8rATIfAQMmIyIGFREhESEXMz4BAzMzLhYjMFWAdP55ASM9EzGvBIEIBP6PDHVu/dMEbbVabwAAAQB3/+wD8gSBACQALUAqGAEDAhkHAgEDBgEAAQNCAAMDAlMAAgIXQwABAQBTAAAAFQBEJSklIgQTKwEUBiMiJicRHgEzMjU0JicuATU0NjMyFhcHLgEjIhUUFhceAgPy+Oh+umFb2VV/R6ucfPTfcMVqak6uN2BDoHd1NwFctrobJAE5KDQ6Hi9EQKN9nrAxL/wjMS8dKT8xXn8AAQA1/+wDbwVQABUAP0A8DAECBAIBAAIDAQEAA0IAAwQDagUBAgIEUQAEBA9DBgEAAAFUAAEBFQFEAQATEhEQDw4LCgcFABUBFQcPKwEyNxEOASMiJjURIzU/ASEVIREhERQCsk9uT49gxa6JrmUBAAEW/uoBISf+4yIdwcgB05977uP+2/5HbgAAAAABAIX/7ATVBG0AFAB4S7APUFhAGgAAAwEBAGAEAQICD0MAAwMBVAYFAgEBFQFEG0uwGlBYQBsAAAMBAwABaAQBAgIPQwADAwFUBgUCAQEVAUQbQB8AAAMFAwAFaAQBAgIPQwYBBQUNQwADAwFUAAEBFQFEWVlADQAAABQAFBMjEyIRBxQrIScjDgEjIiY1ESERFBYzMjY1ESERA64xFzGvdrvQAYc/SGVWAYeNTlPZxgLi/ZVvcp+9AfD7kwAAAAABAAAAAATjBG0ADgAjQCAAAQADAAEDaAIBAAAPQwQBAwMNA0QAAAAOAA4TFhEFEishASETHgMVMzQ3EyEBAbD+UAGYwAEGBgUHEskBl/5QBG39YgUYISUQND0CoPuTAAABABkAAAcvBG0AHAAxQC4AAAIDAgADaAUBAwECAwFmBgQCAgIPQwgHAgEBDQFEAAAAHAAcFBMTExETEwkWKyEDLwEjAgcDIQEhExYXMzYbASETFhczPgE3EyEBBFaAHhQGMRFz/mX+ywGBXCwHBgM0aQGwYC4MBgYcEWQBef7JAhyjg/7oSf4fBG3+TeCUXAECAcn+Md17TONFAbP7kwAAAQAKAAAFAARtAAsAH0AcCQYDAAQCAAFCAQEAAA9DAwECAg0CRBISEhEEEysJASEbASEJASELASEBd/6mAbyssAG9/p0Bcf5Ev77+QwJCAiv+wgE+/dX9vgFY/qgAAAAAAf/+/hQE4QRtABYALUAqEAEEAQ8BAwQCQgABAAQAAQRoAgEAAA9DAAQEA1QAAwMRA0QjIxMTEAUUKwMhExYXMzY3EyEBDgEjIicRFjMyPgE3AgGcwA4FCAgQxQGP/kBW+8pOUjVENE46IQRt/XYzSEU0Aoz7S+a+EQEzDChJUwABADEAAAPbBG0ACQAoQCUHAQECAgEAAwJCAAEBAlEAAgIPQwADAwBRAAAADQBEEhESEAQTKykBNQEhESEVASED2/xWAdX+RgN5/j8B198CYwEr8v2wAAAAAQA9/qgDNQXLACMALEApEhECBQABQgAAAAUDAAVbAAMABAMEVwACAgFTAAEBFAJEFhEfERYQBhUrEzI2PQE0PgEzEQ4CFREUBgcVHgEVERQeARcRIi4BPQE0JiM9c4Ni3cNZPyZxf4BwKkZOxdxhhnACz1lR/ouKP/7pAxUsJv7xcXkSDBR2bP7sJywVA/7qQIuN+FBaAAABAYP+QgKPBhQAAwBAS7AWUFhACwAAAA5DAAEBEQFEG0uwL1BYQAsAAQEAUQAAAA4BRBtAEAAAAQEATQAAAAFRAAEAAUVZWbMREAIRKwEhESEBgwEM/vQGFPguAAEAQv6oAzkFywAiACxAKREQAgAFAUIABQAAAgUAWwACAAECAVcAAwMEUwAEBBQDRBYRHhEWEAYVKwEiBh0BFA4BIxE+ATURNDY3NS4BNRE0LgEnETIeAR0BFBYzAzlvhmLcxGxScIB/cSc9WsTcYoJzAaJaUPiMjEABFgQzNAEUbHYUDBJ5cQEPJysVAwEXP4qL/lFZAAAAAQBIAg4EPQOWABQAPEA5AwECAQ4BAwACQg0BAUACAQM/AAIAAwJPAAEEAQADAQBbAAICA1MAAwIDRwEAEQ8LCQYEABQBFAUPKwEiBxE2MzIWFxYzMjY3EQYjIiYnJgExbntooEV6WYNrMn04aZ9HfVSDAod5ARlsGyQ3QDn+520eIjcAAgBS/rICAgSBAAMADwAbQBgAAAABAAFVAAICA1MAAwMXAkQkIxEQBBMrEyETIQEUBiMiJjU0NjMyFoUBSjP+UAGsa2hmaWxjZW4CZPxOBRFbZmVcWmRlAAEAgf/sBEgFywAbANBAEhsEAgIBDwUCAwIVEhADBAMDQkuwD1BYQBwAAQACAAFgAAICAFEAAAAMQwADAwRRAAQEDQREG0uwEFBYQB0AAQACAAECaAACAgBRAAAADEMAAwMEUQAEBA0ERBtLsBFQWEAcAAEAAgABYAACAgBRAAAADEMAAwMEUQAEBA0ERBtLsDFQWEAdAAEAAgABAmgAAgIAUQAAAAxDAAMDBFEABAQNBEQbQBsAAQACAAECaAAAAAIDAAJbAAMDBFEABAQNBERZWVlZthUjJBEQBRQrATMVFhcDLgEjIgYVEDMyNxEGBxUjNSYCNTQSNwI1z6uZc0d4QV9oyayef57P1ODi0gXLmglL/t8fJZSH/vBk/slSELS6HwEi/PABKSkAAAEAZgAABI0FzQAeAEdARAIBAQADAQIBEwEFBANCBwECBgEDBAIDWQABAQBTCAEAABRDAAQEBVEABQUNBUQBABsaGRgSERAPDAsKCQYEAB4BHgkPKwEyFwMmIyIGHQEhESEVFAchESERPgI9ASMRMzU0NgLT0sNulGg6NwFY/qifAp/721E5Gqam6gXNUv7fN0JHav7rYJZN/roBOS87TDhiARV21+IAAAIAYAD6BB0EsAAbACcAOUA2DAsJBQMCBgMAGhkXExEQBgECAkIKBAIAQBgSAgE/AAIAAQIBVwADAwBTAAAADwNEJCgsJgQTKxM0Nyc3FzYzMhc3FwcWFRQHFwcnBiMiJwcnNyYlFBYzMjY1NCYjIga0KX20e1RYW1Z4uX8pKXmzeFlYZEx3snspAQBRNjpUVDo4TwLTWVd3tnspLX+ufUxmXlJ3sncnJXOyd1JcOE9NOjpPUQAAAAABAAgAAASoBbYAFgA4QDUAAQEAAUIJAQEIAQIDAQJaBwEDBgEEBQMEWQoBAAAMQwAFBQ0FRBYVFBMRERERERERERELGCsBEyEBMxUjFTMVIxUhNSM1MzUjNTMBIQJYwQGP/pXD8vLy/pT29va+/p4BkAO+Afj9ONN10dXV0XXTAsgAAAACAYP+QgKPBhQAAwAHAFtLsBZQWEAVAAEBAFEAAAAOQwACAgNRAAMDEQNEG0uwL1BYQBIAAgADAgNVAAEBAFEAAAAOAUQbQBgAAAABAgABWQACAwMCTQACAgNRAAMCA0VZWbUREREQBBMrASERIREhESEBgwEM/vQBDP70BhT8uf68/LkAAAAAAgBq/+cDoAYpACwANgBQQBMKAQEANTAhGQsDBgMBIAECAwNCS7AvUFhAFQABAQBTAAAAFkMAAwMCUwACAhUCRBtAEwAAAAEDAAFbAAMDAlMAAgIVAkRZtSQuJCcEEysTNDY3JjU0NjMyFwcuASMiFRQWFx4BFRQGBxYVFAYjIic1HgEzMjU0JicuAiUUFhc2NTQmJwZqVk6N3ri/s2JJkzdsW1Ovm0BUfenLzJRPzkWLPmyNgUABI1hvKVRiOgMjQHovZpCJnlbdKC5KK0giR6JhTXk8XpaVsVb0LEBgKj0wP2J2bzNQOi88OVYpIAAAAgDfBOkEFwYjAAsAFwAzS7AvUFhADQMBAQEAUwIBAAAOAUQbQBMCAQABAQBPAgEAAAFTAwEBAAFHWbUkJCQiBBMrEzQ2MzIWFRQGIyImJTQ2MzIWFRQGIyIm31xOT11dT05cAd9cUFBdXVBRWwWFS1NVSUdVUkpLU1ZIR1VTAAADAFz/7AY7BcsAFQAlADUAg0APEwEAAxQIAgEACQECAQNCS7AWUFhAKAABAAIGAQJbAAcHBFMABAQUQwgBAAADUwADAxdDAAYGBVMABQUVBUQbQCYAAwgBAAEDAFsAAQACBgECWwAHBwRTAAQEFEMABgYFUwAFBRUFRFlAFgEAMzErKSMhGxkSEAwKBwUAFQEVCQ8rASIGFRQWMzI3FQYjIiY1NDYzMhcHJgU0EiQzMgQSFRQCBCMiJAI3FBIEMzIkEjU0AiQjIgQCA3dRW1dbinh+ktTp4tCmnFxq/HzIAV7KxQFa0Mn+p83P/qLDpJ8BEJ2eARCem/7voJ7+750Dy3p2gHJE50D44dn2Ts048MgBXsrC/qLQzP6nys8BWsae/u2bnQERnp0BEJ+d/u8AAgAxAtkC3QXHABoAJACzS7AqUFhAEhMBAgMSAQECIgEGAQEBAAUEQhtAEhMBAgMSAQECIgEGAQEBBAUEQllLsBZQWEAeAAUHBAIABQBXAAICA1MAAwMUQwAGBgFTAAEBFwZEG0uwKlBYQBwAAQAGBQEGWwAFBwQCAAUAVwACAgNTAAMDFAJEG0AjBwEEBQAFBABoAAEABgUBBlsABQAABQBXAAICA1MAAwMUAkRZWUAQAAAkIx8dABoAGiUjJCMIEysBJw4BIyImNTQ2PwE1NCYjIgYHJz4BMzIWFRElFBYzMjY9AQcGAjstMHFSbX2avlgzMzllNUxskVuLnv5QJCIyPFRgAuV/TD9/b3RuCQQGKSMeGaYzHZeK/j/uICRNOxYGBgAAAAACAEoAUAUnBC8ABgANAAi1DAgFAQIoKxMBBQkBBQElAQUJAQUBSgGFARj+8AEQ/uj+ewI/AYMBG/7tARP+5f59AkwB45X+pf6kkwHhGwHjlf6l/qSTAeEAAQBIAO4EPQNYAAUAHUAaAAABAGsAAgEBAk0AAgIBUQABAgFFEREQAxIrJSERIREhBD3+8v0ZA/XuAV4BDAAA//8AKwGJAmACwRAjAO4AKwGJEwYAEAAAAB1AGgAAAQEATQAAAAFRAgEBAAFFAQEBBAEEEgMbKwAABABc/+wGOwXLAAwAFQAlADUAgLUDAQEEAUJLsB5QWEAwAgEAAQgBAAhoAAQAAQAEAVkACQkGUwAGBhRDAAUFA1MAAwMXQwAICAdTAAcHFQdEG0AuAgEAAQgBAAhoAAMABQQDBVsABAABAAQBWQAJCQZTAAYGFEMACAgHUwAHBxUHRFlADTMxJiYkJCEhEREUChgrARQGBxMhAyMRIREhIAEzMjY1NCYrAQE0EiQzMgQSFRQCBCMiJAI3FBIEMzIkEjU0AiQjIgQCBLRCS8L+3pIj/ugBIwGX/l4LOkM3RA39SsgBXsrFAVrQyf6nzc/+osOknwEQnZ4BEJ6b/u+gnv7vnQOWV3ck/pUBQP7AA2v+hSs3Lyf++sgBXsrC/qLQzP6nys8BWsae/u2bnQERnp0BEJ+d/u8AAf/6BhQEBgcKAAMAF0AUAAEAAAFNAAEBAFEAAAEARREQAhErASE1IQQG+/QEDAYU9gAAAAIAPwLuAyEFywAPABsAG0AYAAIAAQIBVwADAwBTAAAAFANEJCUmIwQTKxM0PgEzMh4BFRQOASMiLgE3FBYzMjY1NCYjIgY/YqxjY6xiYatlY6xi7k02Nk1LODhLBFphq2VlqmJhqGNiqGIyTU4xNFFRAAAAAgBIAAAEPQUnAAsADwAwQC0DAQEEAQAFAQBZAAIABQYCBVkABgYHUQgBBwcNB0QMDAwPDA8SEREREREQCRYrASERIREhESERIREhAREhEQG8/owBdAENAXT+jP7z/owD9QKsAQwBb/6R/vT+mP68AQz+9AABAD0CSgLuBc0AFwApQCYLAQECCgEDAQIBAAMDQgADAAADAFUAAQECUwACAhQBRBckJhAEEysBITU3PgE1NCMiByc+ATMyFhUUDgIHIQLu/V7XVEFBUVuOUK90jpsaN16XAVsCSs/VVFoiOlimST5+cC5SV19+AAABAD8COQLyBckAJQA+QDshAQQFIAEDBAQDAgIDDQEBAgwBAAEFQgABAAABAFcABAQFUwAFBRRDAAICA1MAAwMPAkQkJCEjIykGFSsBFAYHFR4BFRQGIyInNRYzMjU0JisBNTMyNjU0JiMiBgcnNjMyFgLVSlhhXsSzuXx1tHRBRmhQR0QqMjJYNXWVwpKtBPJObSAJGGhXeIZG6VFDKR/CJSkZKyIoqnNzAAAAAQEIBNkDvAYhAAkANbYGAQIBAAFCS7AvUFhADAIBAQABawAAAA4ARBtACgAAAQBqAgEBAWFZQAkAAAAJAAkUAxArATU+ATchFQYEBwEImlMbAaxQ/uhIBNkdpWAmFUDGLQAAAAEAh/4UBNkEbQAYAIe1EgECAwFCS7ARUFhAHgADAAICA2AGAQEBD0MAAAACUwQBAgINQwAFBREFRBtLsBpQWEAfAAMAAgADAmgGAQEBD0MAAAACUwQBAgINQwAFBREFRBtAIwADAAIAAwJoBgEBAQ9DAAICDUMAAAAEUwAEBBVDAAUFEQVEWVlACREVIhEREyIHFisBFBYzMjY1ESERIScjDgEjIiYnFhURIREhAg5DT11TAYn+2zUQInFCOEQcDP55AYcCBnNyprYB8PuTmFhUKCtakf7ABlkAAAABAGb+/ASiBhQADwBQtQYBAwEBQkuwL1BYQBgAAwEAAQMAaAIBAABpAAEBBFMABAQOAUQbQB0AAwEAAQMAaAIBAABpAAQBAQRPAAQEAVEAAQQBRVm2JCIRERAFFCsBIxEjESMRBiMiJjUQEjMhBKK/nb82R9jM1+wCef78BjP5zQMzEvr7AQABAgAAAAEAVgISAfgDkwALABdAFAAAAQEATwAAAAFTAAEAAUckIgIRKxM0NjMyFhUUBiMiJlZtaGNqbWBkcQLTXGRkXFpnZgAAAf+m/hQBjQAAABIAQUAMEA0GAwECBQEAAQJCS7AKUFhAEQACAQECXgABAQBUAAAAEQBEG0AQAAIBAmoAAQEAVAAAABEARFm0FSMiAxIrBRQGIyInNRYzMjU0Jic3MwceAQGNlnyITVNANFJCSMsJYEr8bYMdzRsvITMPix0nawABADkCSgJoBbYACwAaQBcJCAUDAAEBQgAAAAFRAAEBDABEGRACESsBIRE0NjcOAQcnATMCaP7mBwMJLVeSAVTbAkoBZCOmEBMwSqoBEgAAAAIAMQLZAvQFxwALABQAG0AYAAIAAAIAVwADAwFTAAEBFANEIiQkIgQTKwEUBiMiJjU0NjMyFgUUFjMyNTQjIgL0v6afv72lncT+OTA0Y2NkBFCuyc2qscbOqVdVrK4AAAIATABQBSkELwAGAA0ACLUMCAUBAigrCQElCQElAQUBJQkBJQEFKf59/uMBE/7tAR0Bg/3A/n3+5gEQ/vABGgGDAjH+H5MBXAFblf4dG/4fkwFcAVuV/h0AAAD////0AAAHBgW2ECIA7gAAECcA5gPn/bcQJwDkAxcAABEGAHu7AABPQEwgHxwDAwcPAQgDBwEABANCCgUCBAIBAAEEAFoACAgHUQkLAgcHDEMAAwMBUQYBAQENAUQTEwwMIiEYFxMWExYVFAwSDBIREhEREQwfKwD////0AAAHJQW2ECIA7gAAECcAdAQ3/bcQJwDkAy8AABEGAHu7AABIQEUmJSIDAgUMAQECCwEGAQMBAAMEQgACAAEGAgFcAAYGBVEHCAIFBQxDAAMDAFEEAQAADQBEGRkoJx4dGRwZHBIXJCYRCR8r//8AUwAAB04FyRAiAO5TABAnAOYEL/23ECYAdRQAEQcA5AODAAAA4EuwGlBYQBw0AQoLMwEJChcWAggJIAEHAx8PAgYHBwEABAZCG0AcNAEKDTMBCQoXFgIICSABBwMfDwIGBwcBAAQGQllLsBpQWEA1AAcABgQHBlsOBQIEAgEAAQQAWgAKCgtTDw0CCwsUQwAICAlTAAkJD0MAAwMBUQwBAQENAUQbQDkABwAGBAcGWw4FAgQCAQABBABaDwENDQxDAAoKC1MACwsUQwAICAlTAAkJD0MAAwMBUQwBAQENAURZQCE5OQwMOTw5PDs6NzUxLyspKCYjIR4cDBIMEhESEREREB8rAAIAJf6eBAoEgQAaACYANkAzDQEAAg4BAQACQgUBAgMAAwIAaAAAAAEAAVgAAwMEUwAEBBcDRAAAJSMfHQAaABojKgYRKwEVFAYHDgIVFBYzMjcTBiEiJjU0Njc+AT0BARQGIyImNTQ2MzIWAuNQZjlCHEs+lMyL8/7r3/5uf2Q6AV5qaWVpbGJlbgJkVmKHQCQ8MycqMGr+8I3EqHiwUUBCLDMBX11kZF1aZGMAAAD//wAAAAAFzwdzECIA7gAAEiYAJAAAEQcAQwAIAVIASEBFGRQCBgUNAQQCAkIABQYFagkBBgIGaggBBAAAAQQAWgACAgxDBwMCAQENAUQREQkJAQERGhEaFhUJEAkQAQgBCBEREgodK///AAAAAAXPB3MQIgDuAAASJgAkAAARBwB2AQwBUgBIQEUXEgIGBQ0BBAICQgAFBgVqCQEGAgZqCAEEAAABBABaAAICDEMHAwIBAQ0BRBERCQkBAREaERoWFQkQCRABCAEIERESCh0r//8AAAAABc8HcxAiAO4AABImACQAABEHAMYAgwFSAExASR0XEwMFBg0BBAICQgAGBQZqCgcCBQIFagkBBAAAAQQAWgACAgxDCAMCAQENAUQREQkJAQERHhEeGxoWFQkQCRABCAEIERESCx0r//8AAAAABc8HfxAiAO4AABImACQAABEHAMgAmgFSAFNAUA0BBAIBQgoBCAAGBQgGWwAJBw0CBQIJBVwMAQQAAAEEAFoAAgIMQwsDAgEBDQFEEhEJCQEBJSQiIB0bGRgXFREnEicJEAkQAQgBCBEREg4dKwD//wAAAAAFzwd1ECIA7gAAEiYAJAAAEQcAagCBAVIAQkA/DQEEAgFCBwEFCAEGAgUGWwoBBAAAAQQAWgACAgxDCQMCAQENAUQJCQEBJyUhHxsZFRMJEAkQAQgBCBEREgsdKwAA//8AAAAABc8HTBAiAO4AABImACQAABEHAMcAtgB9ARu1DQEEBQFCS7AmUFhAKAAGAAcIBgdbCgEEAAABBABZAAgIDkMABQUCUQACAgxDCQMCAQENAUQbS7AoUFhAKgAIBwICCGAABgAHCAYHWwoBBAAAAQQAWQAFBQJRAAICDEMJAwIBAQ0BRBtLsClQWEArAAgHAgcIAmgABgAHCAYHWwoBBAAAAQQAWQAFBQJRAAICDEMJAwIBAQ0BRBtLsCpQWEAqAAgHAgIIYAAGAAcIBgdbCgEEAAABBABZAAUFAlEAAgIMQwkDAgEBDQFEG0ArAAgHAgcIAmgABgAHCAYHWwoBBAAAAQQAWQAFBQJRAAICDEMJAwIBAQ0BRFlZWVlAGQkJAQEnJSEfGxkVEwkQCRABCAEIERESCx0rAAAC//YAAAcvBbYADwATAG9LsB5QWEAnAAUABgcFBlkACAABAAgBWQkBBAQDUQADAwxDAAcHAFECAQAADQBEG0AtAAkEBQQJYAAFAAYHBQZZAAgAAQAIAVkABAQDUQADAwxDAAcHAFECAQAADQBEWUANExIRERERERERERAKGCspAREhAyEBIREhFSERIREhASERIwcv/Jr+S2T+RgJ0BMX+JwG2/koB2fteATxvARL+7gW2/sPm/sP+7AEYAg4AAP//AGj+FATyBcsQIgDuaAASJgAmAAARBwB6AjcAAABYQFUVAQADFgkCAQAKAQYBKSYfAwUCHgEEBQVCAAEABgABBmgHAQAAA1MAAwMUQwAGBgJUAAICFUMABQUEUwAEBBEERAIBKCciIB0bFBINCwcFARgCGAgaK///AJoAAAQCB3MQIwDuAJoAABImACgAABEHAEP/kgFSAEFAPhUQAgcGAUIABgcGaggBBwEHagADAAQFAwRZAAICAVEAAQEMQwAFBQBRAAAADQBEDQ0NFg0WFREREREREQkhKwD//wCeAAAEHgdzECMA7gCeAAASJgAoAAARBwB2AGIBUgBBQD4TDgIHBgFCAAYHBmoIAQcBB2oAAwAEBQMEWQACAgFRAAEBDEMABQUAUQAAAA0ARA0NDRYNFhUREREREREJISsA//8AlwAABCIHcxAjAO4AlwAAEiYAKAAAEQcAxv/zAVIAREBBGRMPAwYHAUIABwYHagkIAgYBBmoAAwAEBQMEWQACAgFRAAEBDEMABQUAUQAAAA0ARA0NDRoNGhQVERERERERCiIrAAD//wCeAAAEAgd1ECMA7gCeAAASJgAoAAARBwBq/9wBUgA3QDQIAQYJAQcBBgdbAAMABAUDBFkAAgIBUQABAQxDAAUFAFEAAAANAEQjISQkIxEREREREQojKwAAAP///4wAAAJAB3MQIgDuAAASJgAsAAARBwBD/oQBUgAyQC8NCAIDAgFCAAIDAmoFAQMAA2oAAAAMQwQBAQENAUQFBQEBBQ4FDgoJAQQBBBIGGysAAP//AJwAAANQB3MQIwDuAJwAABImACwAABEHAHb/lAFSADJALwsGAgMCAUIAAgMCagUBAwADagAAAAxDBAEBAQ0BRAUFAQEFDgUOCgkBBAEEEgYbK////6EAAAMsB3MQIgDuAAASJgAsAAARBwDG/v0BUgA2QDMRCwcDAgMBQgADAgNqBgQCAgACagAAAAxDBQEBAQ0BRAUFAQEFEgUSDw4KCQEEAQQSBxsrAAD////JAAADAQd1ECIA7gAAEiYALAAAEQcAav7qAVIAKkAnBAECBQEDAAIDWwAAAAxDBgEBAQ0BRAEBGxkVEw8NCQcBBAEEEgcbKwAAAAIAHwAABXcFtgAMABkALEApBQECBgEBBwIBWQAEBANTAAMDDEMABwcAUwAAAA0ARCERESQhEREiCBcrARAAKQERIxEzESEgAAE0JisBETMRIxUzMjYFd/5t/pP+J39/AfoBYAF//mafonPT01i0qAL6/pL+dAIzAUACQ/6Y/p7Jwv78/sDv0f//AJ4AAAYOB38QIwDuAJ4AABImADEAABEHAMgBAgFSAEhARQAEAQABBABoCwEJAAcGCQdbAAoIDAIGAwoGXAABAQNRBQEDAwxDAgEAAA0ARBIRJSQiIB0bGRgXFREnEicTERETERENICsAAP//AGj/7AX2B3MQIgDuaAASJgAyAAARBwBDAIUBUgA3QDQfGgIFBAFCAAQFBGoGAQUBBWoAAwMBUwABARRDAAICAFMAAAAVAEQXFxcgFyAVJCMkIwcfKwD//wBo/+wF9gdzECIA7mgAEiYAMgAAEQcAdgE/AVIAN0A0HRgCBQQBQgAEBQRqBgEFAQVqAAMDAVMAAQEUQwACAgBTAAAAFQBEFxcXIBcgFSQjJCMHHysA//8AaP/sBfYHcxAiAO5oABImADIAABEHAMYAxwFSADpANyMdGQMEBQFCAAUEBWoHBgIEAQRqAAMDAVMAAQEUQwACAgBTAAAAFQBEFxcXJBckFBUkIyQjCCArAAD//wBo/+wF9gd/ECIA7mgAEiYAMgAAEQcAyADhAVIAQUA+CQEHAAUEBwVbAAgGCgIEAQgEXAADAwFTAAEBFEMAAgIAUwAAABUARBgXKyooJiMhHx4dGxctGC0kIyQjCx4rAAAA//8AaP/sBfYHdRAiAO5oABImADIAABEHAGoAtAFSACxAKQYBBAcBBQEEBVsAAwMBUwABARRDAAICAFMAAAAVAEQkJCQjJCMkIwgiKwABAHkBCgQMBJwACwAGswgCASgrCQE3CQEXCQEHCQEnAYP+9rYBDgETvP7uAQ64/u3+8rQC0wEMvf71AQu3/u7+8LkBD/7zuwADAGj/kwX2BgwAEwAbACIAO0A4EhEPAwMBHx4XFgQCAwgHBQMAAgNCEAEBQAYBAD8AAwMBUwABARRDAAICAFMAAAAVAEQmKigiBBMrARAAISInByc3JhEQACEyFzcXBxYBNCcBFjMyNiUUFwEmIyAF9v6W/qOxglTBVNMBbQFcv4tMvlLD/mAS/nY2P5aR/bIdAZNEQ/7XAt3+j/6AK4R9fcIBkAFtAYE3dnJ9vf59fVb9lA/O2ptUAn8c//8Alv/sBXkHcxAjAO4AlgAAEiYAOAAAEQcAQwAQAVIAOkA3GxYCBQQBQgAEBQRqBwEFAQVqBgMCAQEMQwACAgBUAAAAFQBEExMBARMcExwYFwESARIjEyQIHSv//wCW/+wFeQdzECMA7gCWAAASJgA4AAARBwB2ASkBUgA6QDcZFAIFBAFCAAQFBGoHAQUBBWoGAwIBAQxDAAICAFQAAAAVAEQTEwEBExwTHBgXARIBEiMTJAgdK///AJb/7AV5B3MQIwDuAJYAABImADgAABEHAMYAngFSAD5AOx8ZFQMEBQFCAAUEBWoIBgIEAQRqBwMCAQEMQwACAgBUAAAAFQBEExMBARMgEyAdHBgXARIBEiMTJAkdK///AJb/7AV5B3UQIwDuAJYAABImADgAABEHAGoAiwFSADJALwYBBAcBBQEEBVsIAwIBAQxDAAICAFQAAAAVAEQBASknIyEdGxcVARIBEiMTJAkdK///AAAAAAVQB3MQIgDuAAASJgA8AAARBwB2AM8BUgA2QDMQCwIEAwcEAQMBAAJCBQEEAwADBABoAgEAAAxDAAMDAVEAAQENAUQKCgoTChMVEhISBh4rAAAAAgCeAAAEwwW2AAwAFAAmQCMAAwAFBAMFWwAEAAABBABbAAICDEMAAQENAUQjIiERESIGFSsBFAAhIxEhESEVMyAEATMyNjU0KwEEw/7f/vZv/nUBi28BFQEW/WZIWWmkZgMQ9f71/vAFttXy/mNkWJQAAAABAIf/7AXFBh8AMwCIS7AaUFhAChQBAQITAQABAkIbQAoUAQECEwEDAQJCWUuwGlBYQBYAAgIEUwAEBA5DAAEBAFMDAQAAFQBEG0uwL1BYQBoAAgIEUwAEBA5DAAMDDUMAAQEAUwAAABUARBtAGAAEAAIBBAJbAAMDDUMAAQEAUwAAABUARFlZQAoyMC0sKiglLwURKwEUDgQVFBYXHgEVFAYjIiYnER4BMzI2NTQuAScuATU0Nz4BNTQmIyIVESERNCQhIAQFOyg7RjsoMUWpd+bfiKtAMaVBPUwdSFV+YoxLQGNb3v55AU4BFwEUATsEpjldSzouJA4XKiVfnHyutBkiASMeMi8nHCYvLUNzUHpgNE8sM0TR+90ETNf8x///AEr/7AR5BiEQIgDuSgASJgBEAAARBgBDxAAA7EAPKyYCCQgTAQMEEgECAwNCS7AaUFhANgwBCQgECAkEaAAABgEGAAFoAAIABwYCB1sACAgOQwADAwRTAAQEF0MLAQYGAVMKBQIBARUBRBtLsC9QWEA6DAEJCAQICQRoAAAGBQYABWgAAgAHBgIHWwAICA5DAAMDBFMABAQXQwoBBQUNQwsBBgYBUwABARUBRBtANwAICQhqDAEJBAlqAAAGBQYABWgAAgAHBgIHWwADAwRTAAQEF0MKAQUFDUMLAQYGAVMAAQEVAURZWUAdIyMbGgEBIywjLCgnIB4aIhsiARkBGSMiJCISDR8rAAD//wBK/+wEeQYhECIA7koAEiYARAAAEQcAdgCqAAAA7EAPKSQCCQgTAQMEEgECAwNCS7AaUFhANgwBCQgECAkEaAAABgEGAAFoAAIABwYCB1sACAgOQwADAwRTAAQEF0MLAQYGAVMKBQIBARUBRBtLsC9QWEA6DAEJCAQICQRoAAAGBQYABWgAAgAHBgIHWwAICA5DAAMDBFMABAQXQwoBBQUNQwsBBgYBUwABARUBRBtANwAICQhqDAEJBAlqAAAGBQYABWgAAgAHBgIHWwADAwRTAAQEF0MKAQUFDUMLAQYGAVMAAQEVAURZWUAdIyMbGgEBIywjLCgnIB4aIhsiARkBGSMiJCISDR8r//8ASv/sBHkGHhAiAO5KABImAEQAABEGAMYh/QDyQBAvKSUDCAkTAQMEEgECAwNCS7AaUFhANw0KAggJBAkIBGgAAAYBBgABaAACAAcGAgdbAAkJDkMAAwMEUwAEBBdDDAEGBgFTCwUCAQEVAUQbS7AvUFhAOw0KAggJBAkIBGgAAAYFBgAFaAACAAcGAgdbAAkJDkMAAwMEUwAEBBdDCwEFBQ1DDAEGBgFTAAEBFQFEG0A4AAkICWoNCgIIBAhqAAAGBQYABWgAAgAHBgIHWwADAwRTAAQEF0MLAQUFDUMMAQYGAVMAAQEVAURZWUAfIyMbGgEBIzAjMC0sKCcgHhoiGyIBGQEZIyIkIhIOHyv//wBK/+wEeQYtECIA7koAEiYARAAAEQYAyEQAAQtAChMBAwQSAQIDAkJLsBpQWEA/AAAGAQYAAWgAAgAHBgIHWwAJCQtTDQELCxZDChACCAgMUwAMDBRDAAMDBFMABAQXQw8BBgYBUw4FAgEBFQFEG0uwL1BYQEMAAAYFBgAFaAACAAcGAgdbAAkJC1MNAQsLFkMKEAIICAxTAAwMFEMAAwMEUwAEBBdDDgEFBQ1DDwEGBgFTAAEBFQFEG0BBAAAGBQYABWgNAQsACQgLCVsAAgAHBgIHWwoQAggIDFMADAwUQwADAwRTAAQEF0MOAQUFDUMPAQYGAVMAAQEVAURZWUAlJCMbGgEBNzY0Mi8tKyopJyM5JDkgHhoiGyIBGQEZIyIkIhIRHysAAAD//wBK/+wEeQYjECIA7koAEiYARAAAEQYAai0AAOJAChMBAwQSAQIDAkJLsBpQWEA0AAAGAQYAAWgAAgAHBgIHWwsBCQkIUwoBCAgOQwADAwRTAAQEF0MNAQYGAVMMBQIBARUBRBtLsC9QWEA4AAAGBQYABWgAAgAHBgIHWwsBCQkIUwoBCAgOQwADAwRTAAQEF0MMAQUFDUMNAQYGAVMAAQEVAUQbQDYAAAYFBgAFaAoBCAsBCQQICVsAAgAHBgIHWwADAwRTAAQEF0MMAQUFDUMNAQYGAVMAAQEVAURZWUAdGxoBATk3MzEtKyclIB4aIhsiARkBGSMiJCISDh8r//8ASv/sBHkGzxAiAO5KABImAEQAABEGAMdgAACrQAoTAQMEEgECAwJCS7AaUFhAOAAABgEGAAFoAAkACgsJClsACwAIBAsIWwACAAcGAgdbAAMDBFMABAQXQw0BBgYBUwwFAgEBFQFEG0A8AAAGBQYABWgACQAKCwkKWwALAAgECwhbAAIABwYCB1sAAwMEUwAEBBdDDAEFBQ1DDQEGBgFTAAEBFQFEWUAdGxoBATk3MzEtKyclIB4aIhsiARkBGSMiJCISDh8rAAAAAAMASv/sByUEgQAmADAANgDvS7AxUFhAFBYSAgMEEQECAyMBBwYkAgIABwRCG0AUFhICCgQRAQIDIwEHBiQCAgAHBEJZS7ALUFhAJQsBAggBBgcCBlsNCgIDAwRTBQEEBBdDCQEHBwBTAQwCAAAVAEQbS7AxUFhAKgAIBgIITwsBAgAGBwIGWQ0KAgMDBFMFAQQEF0MJAQcHAFMBDAIAABUARBtANAAIBgIITwsBAgAGBwIGWQ0BCgoEUwUBBAQXQwADAwRTBQEEBBdDCQEHBwBTAQwCAAAVAERZWUAiMjEBADQzMTYyNi4sKSciIB4dGhgVExAODAoHBQAmASYODysFICcOAiMiJjUQJTc1NCMiBwM2ITIXPgEzMgAdASEeATMyNxEOAQEHDgEVFDMyNjUBIgchLgEFPf7ollB7mniixgHxt4iKr26+AQjJh0amdOUBB/1IBIx0wqpewv03VGpdcUVlAi+iDgFUAlwUvlNLIMupAVkSBhKKUAEAZF4xLf7v96xacVb+5zAjAg4EBEVJZFpIAdW0UmIAAP//AFb+FAQdBIEQIgDuVgASJgBGAAARBwB6AcMAAABYQFUJAQIBFAoCAwIVAQYDJyQdAwUAHAEEBQVCAAMCBgIDBmgAAgIBUwABARdDAAYGAFQHAQAAFUMABQUEUwAEBBEERAIBJiUgHhsZExEODAgGARYCFggaK///AFb/7AScBiEQIgDuVgASJgBIAAARBgBDtQAAlEAPJSACBwYSAQMCEwEAAwNCS7AvUFhALQoBBwYBBgcBaAAFAAIDBQJZAAYGDkMJAQQEAVMAAQEXQwADAwBTCAEAABUARBtAKgAGBwZqCgEHAQdqAAUAAgMFAlkJAQQEAVMAAQEXQwADAwBTCAEAABUARFlAHh0dFxYCAR0mHSYiIRoZFhwXHBAODAsIBgEVAhULGisAAP//AFb/7AScBiEQIgDuVgASJgBIAAARBwB2AM8AAACUQA8jHgIHBhIBAwITAQADA0JLsC9QWEAtCgEHBgEGBwFoAAUAAgMFAloABgYOQwkBBAQBUwABARdDAAMDAFMIAQAAFQBEG0AqAAYHBmoKAQcBB2oABQACAwUCWgkBBAQBUwABARdDAAMDAFMIAQAAFQBEWUAeHR0XFgIBHSYdJiIhGhkWHBccEA4MCwgGARUCFQsaK///AFb/7AScBiEQIgDuVgASJgBIAAARBgDGKQAAmUAQKSMfAwYHEgEDAhMBAAMDQkuwL1BYQC4LCAIGBwEHBgFoAAUAAgMFAlkABwcOQwoBBAQBUwABARdDAAMDAFMJAQAAFQBEG0ArAAcGB2oLCAIGAQZqAAUAAgMFAlkKAQQEAVMAAQEXQwADAwBTCQEAABUARFlAIB0dFxYCAR0qHSonJiIhGhkWHBccEA4MCwgGARUCFQwaKwD//wBW/+wEnAYjECIA7lYAEiYASAAAEQYAah0AAIxAChIBAwITAQADAkJLsC9QWEArAAUAAgMFAlkJAQcHBlMIAQYGDkMLAQQEAVMAAQEXQwADAwBTCgEAABUARBtAKQgBBgkBBwEGB1sABQACAwUCWQsBBAQBUwABARdDAAMDAFMKAQAAFQBEWUAeFxYCATMxLSsnJSEfGhkWHBccEA4MCwgGARUCFQwaKwAA////fgAAAjIGIRAiAO4AABImAMIAABEHAEP+dgAAAFC2DQgCAwIBQkuwL1BYQBkEAQMCAQIDAWgAAgIOQwABAQ9DAAAADQBEG0AWAAIDAmoEAQMBA2oAAQEPQwAAAA0ARFlACwUFBQ4FDhUREQUdK///AGsAAAMfBiEQIgDuawASJgDCAAARBwB2/2MAAABQtgsGAgMCAUJLsC9QWEAZBAEDAgECAwFoAAICDkMAAQEPQwAAAA0ARBtAFgACAwJqBAEDAQNqAAEBD0MAAAANAERZQAsFBQUOBQ4VEREFHSv///+IAAADEwYhECIA7gAAEiYAwgAAEQcAxv7kAAAAVLcRCwcDAgMBQkuwL1BYQBoFBAICAwEDAgFoAAMDDkMAAQEPQwAAAA0ARBtAFwADAgNqBQQCAgECagABAQ9DAAAADQBEWUAMBQUFEgUSFBUREQYeK////8MAAAL7BiMQIgDuAAASJgDCAAARBwBq/uQAAABBS7AvUFhAFwUBAwMCUwQBAgIOQwABAQ9DAAAADQBEG0AVBAECBQEDAQIDWwABAQ9DAAAADQBEWbckJCQjEREGICsAAAAAAgBY/+wEwQYnABoAJQAyQC8MCwICAQFCGBcWFRMSERAPDgoBQAABAAIDAQJbAAMDAFMAAAAVAEQkIh8dJCIEESsBEAAhIAA1NAAzMhc3JicHJzcnNxYXNxcHFhIFNCYjIgYVFDMyNgTB/s/++f79/tIBBdrANAhDTLZ1j5VsrlzRc5Gfhv5wWkpcSKRbSQJE/u3+uwEW8O8BFVQEgk13uFxdtkk+ibZhnf6r/VRocHnyjgD//wCHAAAE2QYtECMA7gCHAAASJgBRAAARBgDIYgABCkuwE1BYQDEAAwIAAgNgAAcHCVMLAQkJFkMIDQIGBgpTAAoKFEMAAAACUwQBAgIPQwwFAgEBDQFEG0uwGlBYQDIAAwIAAgMAaAAHBwlTCwEJCRZDCA0CBgYKUwAKChRDAAAAAlMEAQICD0MMBQIBAQ0BRBtLsC9QWEA2AAMCAAIDAGgABwcJUwsBCQkWQwgNAgYGClMACgoUQwACAg9DAAAABFMABAQXQwwFAgEBDQFEG0A0AAMCAAIDAGgLAQkABwYJB1sIDQIGBgpTAAoKFEMAAgIPQwAAAARTAAQEF0MMBQIBAQ0BRFlZWUAdFxYBASopJyUiIB4dHBoWLBcsARUBFSIRERMkDh8rAAD//wBW/+wEwQYhECIA7lYAEiYAUgAAEQYAQ6cAAGa2Ih0CBQQBQkuwL1BYQCMGAQUEAQQFAWgABAQOQwADAwFTAAEBF0MAAgIAUwAAABUARBtAIAAEBQRqBgEFAQVqAAMDAVMAAQEXQwACAgBTAAAAFQBEWUANGhoaIxojFiQlJCMHHyv//wBW/+wEwQYhECIA7lYAEiYAUgAAEQcAdgCYAAAAZrYgGwIFBAFCS7AvUFhAIwYBBQQBBAUBaAAEBA5DAAMDAVMAAQEXQwACAgBTAAAAFQBEG0AgAAQFBGoGAQUBBWoAAwMBUwABARdDAAICAFMAAAAVAERZQA0aGhojGiMWJCUkIwcfKwAA//8AVv/sBMEGIRAiAO5WABImAFIAABEGAMYjAABqtyYgHAMEBQFCS7AvUFhAJAcGAgQFAQUEAWgABQUOQwADAwFTAAEBF0MAAgIAUwAAABUARBtAIQAFBAVqBwYCBAEEagADAwFTAAEBF0MAAgIAUwAAABUARFlADhoaGicaJxQWJCUkIwggK///AFb/7ATBBi0QIgDuVgASJgBSAAARBgDINwAAekuwL1BYQCwABQUHUwkBBwcWQwYKAgQECFMACAgUQwADAwFTAAEBF0MAAgIAUwAAABUARBtAKgkBBwAFBAcFWwYKAgQECFMACAgUQwADAwFTAAEBF0MAAgIAUwAAABUARFlAFhsaLi0rKSYkIiEgHhowGzAkJSQjCx4r//8AVv/sBMEGIxAiAO5WABImAFIAABEGAGoQAABYS7AvUFhAIQcBBQUEUwYBBAQOQwADAwFTAAEBF0MAAgIAUwAAABUARBtAHwYBBAcBBQEEBVsAAwMBUwABARdDAAICAFMAAAAVAERZQAokJCQkJCUkIwgiKwAAAAMASACiBD0FAgADAA8AGwA1QDIABAAFAAQFWwAABgEBAgABWQACAwMCTwACAgNTAAMCA0cAABoYFBIODAgGAAMAAxEHECsTESERATQ2MzIWFRQGIyImETQ2MzIWFRQGIyImSAP1/WlPTUtSV0ZHVU9NS1JXRkdVAkwBDP70/wBSWFdTUFpYA15SWFdTUFpYAAMAVv+LBPoEyQATABsAIwA7QDgKCQcDAgAfHhcWBAMCExEAAwEDA0IIAQBAEgEBPwACAgBTAAAAF0MAAwMBUwABARUBRCYoKCQEEyslJhEQACEyFzcXBxYREAAhIicHJwEUFwEmIyIGBTQnARYzMjYBErwBOgEcfW1HqEO4/sf+5X1oVKoBCgwBISQucmkBtgr+5RsxcmdxngEqARUBMydvaWie/t/+6P7LIoNrAkNjMAHADZSmVi3+RgiSAAAA//8Ahf/sBNUGIRAjAO4AhQAAEiYAWAAAEQYAQ6cAAOW2HhkCBwYBQkuwD1BYQCgJAQcGAgYHAmgAAAMBAQBgAAYGDkMEAQICD0MAAwMBVAgFAgEBFQFEG0uwGlBYQCkJAQcGAgYHAmgAAAMBAwABaAAGBg5DBAECAg9DAAMDAVQIBQIBARUBRBtLsC9QWEAtCQEHBgIGBwJoAAADBQMABWgABgYOQwQBAgIPQwgBBQUNQwADAwFUAAEBFQFEG0AqAAYHBmoJAQcCB2oAAAMFAwAFaAQBAgIPQwgBBQUNQwADAwFUAAEBFQFEWVlZQBUWFgEBFh8WHxsaARUBFRMjEyISCh8rAAAA//8Ahf/sBNUGIRAjAO4AhQAAEiYAWAAAEQcAdgDPAAAA5bYcFwIHBgFCS7APUFhAKAkBBwYCBgcCaAAAAwEBAGAABgYOQwQBAgIPQwADAwFUCAUCAQEVAUQbS7AaUFhAKQkBBwYCBgcCaAAAAwEDAAFoAAYGDkMEAQICD0MAAwMBVAgFAgEBFQFEG0uwL1BYQC0JAQcGAgYHAmgAAAMFAwAFaAAGBg5DBAECAg9DCAEFBQ1DAAMDAVQAAQEVAUQbQCoABgcGagkBBwIHagAAAwUDAAVoBAECAg9DCAEFBQ1DAAMDAVQAAQEVAURZWVlAFRYWAQEWHxYfGxoBFQEVEyMTIhIKHysA//8Ahf/sBNUGIRAjAO4AhQAAEiYAWAAAEQYAxkIAAOy3IhwYAwYHAUJLsA9QWEApCggCBgcCBwYCaAAAAwEBAGAABwcOQwQBAgIPQwADAwFUCQUCAQEVAUQbS7AaUFhAKgoIAgYHAgcGAmgAAAMBAwABaAAHBw5DBAECAg9DAAMDAVQJBQIBARUBRBtLsC9QWEAuCggCBgcCBwYCaAAAAwUDAAVoAAcHDkMEAQICD0MJAQUFDUMAAwMBVAABARUBRBtAKwAHBgdqCggCBgIGagAAAwUDAAVoBAECAg9DCQEFBQ1DAAMDAVQAAQEVAURZWVlAFxYWAQEWIxYjIB8bGgEVARUTIxMiEgsfK///AIX/7ATVBiMQIwDuAIUAABImAFgAABEGAGoxAADWS7APUFhAJgAAAwEBAGAJAQcHBlMIAQYGDkMEAQICD0MAAwMBVAoFAgEBFQFEG0uwGlBYQCcAAAMBAwABaAkBBwcGUwgBBgYOQwQBAgIPQwADAwFUCgUCAQEVAUQbS7AvUFhAKwAAAwUDAAVoCQEHBwZTCAEGBg5DBAECAg9DCgEFBQ1DAAMDAVQAAQEVAUQbQCkAAAMFAwAFaAgBBgkBBwIGB1sEAQICD0MKAQUFDUMAAwMBVAABARUBRFlZWUAVAQEsKiYkIB4aGAEVARUTIxMiEgsfKwAA/////v4UBOEGIRAiAO4AABImAFwAABEHAHYAiQAAAHhADx4ZAgYFEQEEARABAwQDQkuwL1BYQCcHAQYFAAUGAGgAAQAEAAEEaAAFBQ5DAgEAAA9DAAQEA1QAAwMRA0QbQCQABQYFagcBBgAGagABAAQAAQRoAgEAAA9DAAQEA1QAAwMRA0RZQA4YGBghGCEYIyMTExEIICsAAgCH/hQEzQYUABUAIgB8tQ4BAwEBQkuwL1BYQCkIAQUAAgEFAloABAQOQwkBBgYAUwAAABdDAAcHAVMAAQEVQwADAxEDRBtAKQAEAARqCAEFAAIBBQJaCQEGBgBTAAAAF0MABwcBUwABARVDAAMDEQNEWUAVFxYAAB4cFiIXIgAVABURExEkIgoUKwE+ATMyEhEQAiMiJyMfAREhESERFAcXIgYHFRQWMzI2NTQmAg4rnmS52d/BrXIOBwf+eQGHEq5VRANOVFA/QgPbTlj+zP7s/vH+woE8XP4/CAD+qGp3jXt7HZKCjYmGi/////7+FAThBiMQIgDuAAASJgBcAAARBgBq+QAAbUAKEQEEARABAwQCQkuwL1BYQCUAAQAEAAEEaAgBBgYFUwcBBQUOQwIBAAAPQwAEBANUAAMDEQNEG0AjAAEABAABBGgHAQUIAQYABQZbAgEAAA9DAAQEA1QAAwMRA0RZQAskJCQmIyMTExEJIysAAAEAiQAAAhAEbQADABJADwABAQ9DAAAADQBEERACESspAREhAhD+eQGHBG0AAgBo/+wHRgXNABYAIgEzQAogAQUEHwEHBgJCS7AWUFhAIgAFAAYHBQZZCggCBAQCUwMBAgIUQwkBBwcAUwEBAAANAEQbS7AaUFhALQAFAAYHBQZZCggCBAQCUwACAhRDCggCBAQDUQADAwxDCQEHBwBTAQEAAA0ARBtLsB9QWEA3AAUABgcFBlkKCAIEBAJTAAICFEMKCAIEBANRAAMDDEMJAQcHAFEAAAANQwkBBwcBUwABARUBRBtLsCZQWEA0AAUABgcFBlkKAQgIAlMAAgIUQwAEBANRAAMDDEMJAQcHAFEAAAANQwkBBwcBUwABARUBRBtAMgAFAAYHBQZZCgEICAJTAAICFEMABAQDUQADAwxDAAcHAFEAAAANQwAJCQFTAAEBFQFEWVlZWUASGBceHBciGCIREREREiQiEAsXKykBDgEjIAAREAAhMhYXIREhFSERIREhASIGFRQWMzI3ES4BB0b8tCKZOf7B/qEBXgFCQ5keA0T+JwG0/kwB2fvEfYWBf41MInYIDAGQAWMBZwGHDgn+w+b+w/7sA0fb0c3bKwL4FxoAAAADAFb/7AeBBIEAGwAnAC0A/kuwFVBYQA8MAQcCGAEFBBkCAgAFA0IbS7AqUFhADwwBCAIYAQUEGQICAAUDQhtADwwBCAIYAQYEGQICAAUDQllZS7AVUFhAIwAJAAQFCQRZCwgCBwcCUwMBAgIXQwYBBQUAUwEKAgAAFQBEG0uwKlBYQC0ACQAEBQkEWQsBCAgCUwMBAgIXQwAHBwJTAwECAhdDBgEFBQBTAQoCAAAVAEQbQDgACQAEBgkEWQsBCAgCUwMBAgIXQwAHBwJTAwECAhdDAAYGAFMBCgIAABVDAAUFAFMBCgIAABUARFlZQB4pKAEAKyooLSktJiQgHhcVExIPDQsJBQMAGwEbDA8rBSInBiMgABEQACEyFzYzMgAdASEeATMyNxEOAQEUFjMyNjU0JiMiBiUiByEuAQWa7pGX+/7+/s8BKwEO4pWb9eMBCP1IBIx0wqpcvvvGTFxbS0xcWU0DmqIOAVQCXBSJiQE+AQ8BFQEzf3/+8PisWnFW/ucvJAJNkpmZkpGUlK20UmIA//8AAAAABVAHdRAiAO4AABImADwAABEHAGoALQFSACpAJwcEAQMBAAFCBQEDBgEEAAMEWwIBAAAMQwABAQ0BRCQkJCMSEhIHISsAAAABAKQE2QQvBiEADQA5twwGAgMAAQFCS7AvUFhADQMCAgABAGsAAQEOAUQbQAsAAQABagMCAgAAYVlACgAAAA0ADRQUBBErASYnBgchNT4BNyEWFxUDMVR1fUX+/kWXJgGJXqIE2TBmaysdQbA6iaIdAAAAAAIBJQTVAz0GzwALABcAIUAeAAEAAgMBAlsAAwAAA08AAwMAUwAAAwBHJCQkIgQTKwEUBiMiJjU0NjMyFgc0JiMiBhUUFjMyNgM9mHh5j495dpq8MSMjMSoqIzEF03GNiXN0ioxyJi4uJiUvLwAAAAABALAE1QP6Bi0AFgBOS7AvUFhAGAABAQNTBQEDAxZDAgYCAAAEUwAEBBQARBtAFgUBAwABAAMBWwIGAgAABFMABAQUAERZQBIBABQTEQ8MCggHBgQAFgEWBw8rASIuAiMiByM+ATMyHgIzMjY3Mw4BAwQtW1hTJTYStAt6dyZWWFYmHSIJtgt+BNceJB5ir6ceJB4yMKevAAEAKwGJAmACwQADAAATESERKwI1AYkBOP7IAAABACsBiQJgAsEAAwAAExEhESsCNQGJATj+yAAAAQArAYkCYALBAAMAABMRIRErAjUBiQE4/sgAAAEASgGeA7YCsgADAB1AGgAAAQEATQAAAAFRAgEBAAFFAAAAAwADEQMQKxMRIRFKA2wBngEU/uwAAQBKAZ4HsgKyAAMAHUAaAAABAQBNAAAAAVECAQEAAUUAAAADAAMRAxArExEhEUoHaAGeART+7AABABQDbQHbBbQABgAYQBUCAQEBAFEAAAAMAUQAAAAGAAYTAxArEycSNyECAyMPZE0BFkMfA20WAYeq/sj+8QAAAQAlA20B7AW0AAYAHkAbAQEAAQFCAAAAAVECAQEBDABEAAAABgAGEwMQKwEXAgchEhMB3Q9cVf7qRB4FtBb+ksMBPQEKAAD//wA5/uMCAAErECIA7jkAEwYADwAAAB5AGwIBAQAAAU0CAQEBAFEAAAEARQEBAQgBCBQDGysAAAACABQDbQPZBbQABgANACNAIAUDBAMBAQBRAgEAAAwBRAcHAAAHDQcNCwoABgAGEwYQKwEnEjchAgMhJxI3IQIDAiEPZE0BFkMf/KwPZE0BFkMfA20WAYeq/sj+8RYBh6r+yP7xAAAAAAIAJQNtA+kFtAAGAA0AKUAmAQEAAQFCAgEAAAFRBQMEAwEBDABEBwcAAAcNBw0LCgAGAAYTBhArARcCByESEyEXAgchEhMB3Q9cVf7qRB4DVA5dU/7qRB4FtBb+ksMBPQEKFv6NvgE9AQoAAAIAOf7jA/4BKwAHAA8AK0AoBQMEAwEAAAFNBQMEAwEBAFECAQABAEUICAAACA8IDwwLAAcABxMGECsBFwIHITYSNyEXAgchNhI3AfIOYU/+6R07CwNUDmFP/ukdOwsBKxf+g7SKAVdnF/6DtIoBV2cAAAAAAgBKAYMC2QRtAAsADAAxswwBAEBLsChQWEALAAEBAFMAAAAPAUQbQBAAAAEBAE8AAAABUwABAAFHWbMkIgIRKxM0NjMyFhUUBiMiJgFKqZ6eqq6am6wCUgLsrrq9q6y9ugIwAAMAVv/nBpgBZgALABcAIwAaQBcEAgIAAAFTBQMCAQEVAUQkJCQkJCIGFSs3NDYzMhYVFAYjIiYlNDYzMhYVFAYjIiYlNDYzMhYVFAYjIiZWbWhjam1gY3ICUG1oY2ptYGNyAlBtaGNqbWBjcqZcZGRcWmVkW1xkZFxaZWRbXGRkXFplZAAAAAABAEoAUALnBC8ABgAGswUBASgrEwEFCQEFAUoBhQEY/vABEP7o/nsCTAHjlf6l/qSTAeEAAQBMAFAC6QQvAAYABrMFAQEoKwkBJQkBJQEC6f59/uYBEP7wARoBgwIx/h+TAVwBW5X+HQAAAAAB/k4AAAJtBbYAAwAYQBUCAQEBDEMAAAANAEQAAAADAAMRAxArCQEhAQJt/Q7+0wLxBbb6SgW2AAIAHQJKAx8FvAAKABEAMEAtDgEEAwYBAAQCQgYFAgQCAQABBABZAAEBA1EAAwMMAUQLCwsRCxEREhEREAcUKwEjFSE1ITUBIREzITU0NwYPAQMfff7t/o4BXgEnff5wBygWZgLVi4u8Aiv94qZFQmQhqAAAAQA3/+wEmgXLACcAYUBeJQEACyYBAQAbAQMCEQEFBBIBBgUFQgoBAQkBAgMBAlkIAQMHAQQFAwRZDAEAAAtTAAsLFEMABQUGUwAGBhUGRAEAJCIgHx4dGhkYFxUTEA4NDAsKBgUEAwAnAScNDysBIgYHIRUhBxUXNSEVIRYzMjcRBiMiJCcjNTMnNTcjNTMSADMyFwMmAz1wdwwBUv6fAgIBH/74IeOReWa9/f7CL5yBAgKBlDMBQ/y0qXd4BIdrWc0dDiwBzaQ3/r03/OvNFRYrzQD/AQlM/tUzAAIAJQLlBdcFtgAHABoAfUuwD1BYtREBAAEBQhu1EQEABAFCWUuwD1BYQCAJBAMDAQECUQcGAgICDEMLCggFBAAAAlIHBgICAgwARBtAJwkBBAEAAQQAaAMBAQECUQcGAgICDEMLCggFBAAAAlIHBgICAgwARFlAEwgICBoIGhkYERIRExIREREQDBgrASMRIzUhFSMBAyMWFREjESEbASERIxE0NyMDAZPEqgIYqgJEjwkHwQEfiZYBFMMHCZcC5QIhsLD93wH+ODb+cALR/iEB3/0vAZBEKv4CAAABAAAAAARvBG8AAwASQA8AAAAPQwABAQ0BRBEQAhErESERIQRv+5EEb/uR//8ALQAABW0GNRAiAO4tABAnAEwDTgAAEQYASQAAAP1LsA1QWEAMHh0CAwIWFQIEAQJCG0uwFlBYQA8dAQgCHgEDCBYVAgQBA0IbQA8dAQgHHgEDCBYVAgQBA0JZWUuwDVBYQB8IAQMDAlMHAQICFkMGAQQEAVEJAQEBD0MFAQAADQBEG0uwFlBYQCkACAgCUwcBAgIWQwADAwJTBwECAhZDBgEEBAFRCQEBAQ9DBQEAAA0ARBtLsC9QWEAnAAgIB1MABwcOQwADAwJTAAICFkMGAQQEAVEJAQEBD0MFAQAADQBEG0AjAAcACAMHCFsAAgADAQIDWwYBBAQBUQkBAQEPQwUBAAANAERZWVlADSUkJCUREREjIxERCiMrAAAA//8ALQAABVwGHxAiAO4tABAnAE8DTgAAEQYASQAAAI9ADxMBBgEUAQcGDAsCAgcDQkuwLlBYQB0ABgYBUwUBAQEOQwQBAgIHUQAHBw9DAwEAAA0ARBtLsC9QWEAhAAEBDkMABgYFUwAFBQ5DBAECAgdRAAcHD0MDAQAADQBEG0AfAAUABgcFBlsEAQICB1EABwcPQwABAQBRAwEAAA0ARFlZQAoTJCUREREREQgiKwD//wAtAAAIuwY1ECIA7i0AECYASQAAECcASQNOAAARBwBMBpwAAAEVS7ANUFhAEyYPAgQDJxACBQQfHggHBAAFA0IbQBMmDwIEAycQAg8EHx4IBwQABQNCWUuwDVBYQCUPCgIEBANTDgkCAwMOQwgGAgMAAAVRDQsCBQUPQwwHAgEBDQFEG0uwFlBYQDAKAQQEA1MOCQIDAw5DAA8PA1MOCQIDAw5DCAYCAwAABVENCwIFBQ9DDAcCAQENAUQbS7AvUFhALQoBBAQDUwkBAwMOQwAPDw5TAA4OFkMIBgIDAAAFUQ0LAgUFD0MMBwIBAQ0BRBtAKQkBAwoBBA8DBFsADgAPBQ4PWwgGAgMAAAVRDQsCBQUPQwwHAgEBDQFEWVlZQBk8Ojc1MjEwLy4tKigkIhERERMkJRERERAjKwAAAP//AC0AAAiqBh8QIgDuLQAQJgBJAAAQJwBJA04AABEHAE8GnAAAAMxLsC5QWEATJg8CBAMnEAIFBB8eCAcEAAUDQhtAEyYPAgQNJxACBQQfHggHBAAFA0JZS7AuUFhAIwoBBAQDUw0JAgMDDkMIBgIDAAAFUQsBBQUPQwwHAgEBDQFEG0uwL1BYQCcADQ0OQwoBBAQDUwkBAwMOQwgGAgMAAAVRCwEFBQ9DDAcCAQENAUQbQCUJAQMKAQQFAwRbCAYCAwAABVELAQUFD0MADQ0BUQwHAgEBDQFEWVlAFTIxMC8uLSooJCIRERETJCUREREOIysAAQAAAAAAAAAAAAAAB7IFAQVFYEQxAAAAAQAAAAEZmgJLH99fDzz1AB8IAAAAAADN1Rk6AAAAAM3VGTr+Tv4UCLsHfwBBAAgAAgAAAAAAAAABAAAI/v2AAAAJNf5O/k8IuwABAAAAAAAAAAAAAAAAAAAA7wLsAEQIAAAABBQAAAIUAAACUgBSBDEAeQVMACUEsABQB5YAJQZkAEgCVgB5At8ASgLfADcETAAtBIcASAJ5ADkCiwArAlAAVgOJAAoEsABIBLAAVASwAC0EsABGBLAAIwSwAF4EsABGBLAATgSwAEQEsAA1AlAAVgJgADkEhwBIBIcASASHAEgECgAABy0AUgXPAAAFZACeBTEAaAXfAJ4EZACeBFAAngXsAGgGIQCeAskAngLR/14FfwCeBKgAnge8AJ4GrACeBmAAaAUOAJ4GYABoBWoAngSeAFoEugAzBg4AlgWNAAAIUAAfBckABAVQAAAE4wA9ApgAdQOJAAYCmAAvBDP/8AQA//wEyQEIBPwASgUlAIcEUABWBSUAVgTyAFYDTgAtBNkAFAVcAIcCmgB/Apj/mAVGAIcClgCHCAAAhwVcAIcFGQBWBSUAhwUlAFYDwQCHBEQAdwOuADUFXACFBOMAAAdIABkFCgAKBOH//gQOADEDdwA9BBIBgwN3AEIEhwBIAhQAAAJSAFIEsACBBLAAZgSHAGAEsAAIBBIBgwQAAGoE0QDfBpgAXAMtADEFcwBKBIcASAKLACsGmABcBAD/+gNgAD8EhwBIAzEAPQMxAD8EyQEIBWAAhwUlAGYCUABWAX//pgMxADkDIwAxBXMATAd///QHgf/0B4EAUwQKACUFzwAABc8AAAXPAAAFzwAABc8AAAXPAAAHkf/2BTEAaARkAJoEZACeBGQAlwRkAJ4Cyf+MAskAnALJ/6ECyf/JBd8AHwasAJ4GYABoBmAAaAZgAGgGYABoBmAAaASHAHkGYABoBg4AlgYOAJYGDgCWBg4AlgVQAAAFBACeBgAAhwT8AEoE/ABKBPwASgT8AEoE/ABKBPwASgd7AEoEUABWBPIAVgTyAFYE8gBWBPIAVgKa/34CmgBrApr/iAKa/8MFIQBYBVwAhwUZAFYFGQBWBRkAVgUZAFYFGQBWBIcASAVSAFYFXACFBVwAhQVcAIUFXACFBOH//gUlAIcE4f/+ApoAiQeoAGgH1wBWBVAAAATVAKQEYAElBMkAsAO/AAAHfwAAA78AAAd/AAACfwAAAd8AAAE/AAABPwAAAO8AAAF/AAAAagAAAosAKwKLACsCiwArBAAASggAAEoCAAAUAgAAJQJ5ADkD/gAUA/4AJQR3ADkDIwBKBvAAVgF/AAADMwBKAzMATAC8/k4B3wAAAzEAHQSwADcGKQAlBG8AAAXnAC0F4wAtCTUALQkxAC0FJQAAAAAALAAsACwALABaAIQA4AGSAjoC1gLyAy4DagOyA+AEBAQgBEAEaASmBMwFEgVwBbAGBAZeBoQG6AdGB3oHsgfKCBgIMAiICRgJVgmkCeoKHgpMCnQKwgrsCwYLRgt2C5YL1gwIDEQMegzIDQYNWg16Da4N2A4gDlAOdg6iDtoPAg86D2IPfA+uECQQtBD4EaoSABJSEwITUBOIE94ULhRQFOQVRBWCFfQWuhciF3AXthgWGEYYlhjGGQYZMhl+GawZ+Bo6GjoaZhr8G1AbrBvuHDIcqhzqHYIeFh5CHmIefh8aHzQfbh+oH+QgOiBsINohICFCIYIhqiHaIggiRCJ8IwAjWCOMI8Aj9iQwJGIlACVgJZwlziYAJjQmYiaMJrYm4icIJ0wngieuJ9ooCCg6KGAohCjiKRApPiluKZgpxCn+Ko4rFCuaLCIsuC04LZ4ubC6oLwIvXC+4MA4wRjB+MLgw6jFEMdoyHDJgMqQy8DMsM3Qz1DRYNNw1YjXeNio2oDbmNvw30jicOMI4/Dk0OYA5gDmAOYA5gDmAOYA5gDmAOYA5gDmAOY45nDmqOcY54joCOiY6Qjp2Oqw65jsYO1w7XDt2O5I7rjuuO+g8VjzEPNo9aj3CPmI+3D7oAAEAAADvAEIABQA9AAUAAgB6AIcAbgAAATsBMwAEAAEAAAARANIAAwABBAkAAABoAAAAAwABBAkAAQAmAGgAAwABBAkAAgAOAI4AAwABBAkAAwBQAJwAAwABBAkABAA2AOwAAwABBAkABQAYASIAAwABBAkABgAkAToAAwABBAkABwCkAV4AAwABBAkACAAoAgIAAwABBAkACwA4AioAAwABBAkADABcAmIAAwABBAkADQBcAr4AAwABBAkADgBUAxoAAwABBAkAEAASA24AAwABBAkAEQASA4AAAwABBAkAyAAWA5IAAwABBAkAyQAwA6gARABpAGcAaQB0AGkAegBlAGQAIABkAGEAdABhACAAYwBvAHAAeQByAGkAZwBoAHQAIACpACAAMgAwADEAMQAsACAARwBvAG8AZwBsAGUAIABDAG8AcgBwAG8AcgBhAHQAaQBvAG4ALgBPAHAAZQBuACAAUwBhAG4AcwAgAEUAeAB0AHIAYQBiAG8AbABkAFIAZQBnAHUAbABhAHIAQQBzAGMAZQBuAGQAZQByACAALQAgAE8AcABlAG4AIABTAGEAbgBzACAARQB4AHQAcgBhAGIAbwBsAGQAIABCAHUAaQBsAGQAIAAxADAAMABPAHAAZQBuACAAUwBhAG4AcwAgAEUAeAB0AHIAYQBiAG8AbABkACAAUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMQAuADEAMABPAHAAZQBuAFMAYQBuAHMALQBFAHgAdAByAGEAYgBvAGwAZABPAHAAZQBuACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlACAAYQBuAGQAIABtAGEAeQAgAGIAZQAgAHIAZQBnAGkAcwB0AGUAcgBlAGQAIABpAG4AIABjAGUAcgB0AGEAaQBuACAAagB1AHIAaQBzAGQAaQBjAHQAaQBvAG4AcwAuAEEAcwBjAGUAbgBkAGUAcgAgAEMAbwByAHAAbwByAGEAdABpAG8AbgBoAHQAdABwADoALwAvAHcAdwB3AC4AYQBzAGMAZQBuAGQAZQByAGMAbwByAHAALgBjAG8AbQAvAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHMAYwBlAG4AZABlAHIAYwBvAHIAcAAuAGMAbwBtAC8AdAB5AHAAZQBkAGUAcwBpAGcAbgBlAHIAcwAuAGgAdABtAGwATABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABBAHAAYQBjAGgAZQAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAyAC4AMABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBwAGEAYwBoAGUALgBvAHIAZwAvAGwAaQBjAGUAbgBzAGUAcwAvAEwASQBDAEUATgBTAEUALQAyAC4AMABPAHAAZQBuACAAUwBhAG4AcwBFAHgAdAByAGEAYgBvAGwAZABXAGUAYgBmAG8AbgB0ACAAMQAuADAAVwBlAGQAIABKAHUAbgAgACAANQAgADEAMgA6ADMANQA6ADAANgAgADIAMAAxADMAAAACAAAAAAAA/2YAZgAAAAAAAAAAAAAAAAAAAAAAAAAAAO8AAAECAQMAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAQQAowCEAIUAvQCWAOgAhgCOAIsAnQCpAKQBBQCKANoAgwCTAQYBBwCNAQgAiADDAN4BCQCeAKoA9QD0APYAogCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAOkAZgDTANAA0QCvAGcA8ACRANYA1ADVAGgA6wDtAIkAagBpAGsAbQBsAG4AoABvAHEAcAByAHMAdQB0AHYAdwDqAHgAegB5AHsAfQB8ALgAoQB/AH4AgACBAOwA7gC6ANcAsACxALsA2ADdANkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXALIAswC2ALcAxAC0ALUAxQCHAKsBGAC+AL8AvAEZARoBGwCMARwBHQEeAR8BIAEhBmdseXBoMQd1bmkwMDBEB3VuaTAwQTAHdW5pMDBBRAd1bmkwMEIyB3VuaTAwQjMHdW5pMDBCNQd1bmkwMEI5B3VuaTIwMDAHdW5pMjAwMQd1bmkyMDAyB3VuaTIwMDMHdW5pMjAwNAd1bmkyMDA1B3VuaTIwMDYHdW5pMjAwNwd1bmkyMDA4B3VuaTIwMDkHdW5pMjAwQQd1bmkyMDEwB3VuaTIwMTEKZmlndXJlZGFzaAd1bmkyMDJGB3VuaTIwNUYHdW5pMjA3NARFdXJvB3VuaUUwMDAHdW5pRkIwMQd1bmlGQjAyB3VuaUZCMDMHdW5pRkIwNAhnbHlwaDIyMku4AMhSWLEBAY5ZuQgACABjILABI0SwAyNwsBdFICBLuAAOUUuwBlNaWLA0G7AoWWBmIIpVWLACJWGwAUVjI2KwAiNEsgsBBiqyDAYGKrIUBgYqWbIEKAlFUkSyDAgHKrEGAUSxJAGIUViwQIhYsQYDRLEmAYhRWLgEAIhYsQYBRFlZWVm4Af+FsASNsQUARAABUa9ougAA\") format(\"truetype\");\tfont-weight: normal;\tfont-style: normal;}.btn {\tdisplay: inline-block;\tmargin-bottom: 0;\tfont-weight: 400;\ttext-align: center;\tvertical-align: middle;\tcursor: pointer;\tbackground-image: none;\tborder: 1px solid transparent;\twhite-space: nowrap;\tpadding: 6px 12px;\tfont-size: 14px;\tline-height: 1.428571429;\tborder-radius: 4px;}.btn-success {\tcolor: #fff;\tbackground-color: #5cb85c;\tborder-color: #4cae4c;}.btn-success:hover {\tbackground-color: #47a447;\tborder-color: #398439;}#eula-frame {\tdisplay: none;\tposition: absolute;\ttop: 0;\tleft: 0;\tbottom: 0;\tright: 0;\toverflow-y: auto;}#eula-frame-inner {\tmax-width: 940px;\tmargin: 0 auto;\tpadding: 5em 0;\tbackground: rgba(0, 0, 0, 0.9);\tcolor: #eee;\tfont-size: 1.2em;}#eula-frame p {\tfont-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;}#eula {\tcolor: #ccc;\theight: 25em;\tmargin: 3em 0;\toverflow-y: scroll;\twhite-space: pre-wrap;}#dialog {\tdisplay: none;\tposition: absolute;\ttop: 50%;\tleft: 50%;\tmargin-top: -5em;\tmargin-left: -12em;\twidth: 24em;\tbackground: #2a2a2a;}#dialog .title {\tmargin: 0;\tpadding: 0.2em 0.5em;\tbackground: #333;\tcolor: #fff;\tfont-family: \"Open Sans\";\tfont-weight: bold;\ttext-transform: uppercase;}#dialog .description {\tmargin: 0;\tpadding: 0.5em;\tcolor: #fff;\tfont-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;}#loading {\tdisplay: none;\tposition: absolute;\ttop: 0;\tleft: 0;\tbottom: 0;\tright: 0;\tz-index: 1;}#loading-progress {\tposition: absolute;\ttop: 50%;\tleft: 50%;\tmargin-top: -1em;\tmargin-left: -12em;\tpadding: 0.4em;\twidth: 24em;\tbackground: rgba(0, 0, 0, 0.7);}#loading-progress .description {\ttext-align: center;\tcolor: #fff;\tfont-family: \"Open Sans\";\ttext-shadow: 1px 1px 2px #000;\ttext-transform: uppercase;}#loading-progress .bar-wrapper {\tbackground: #222;\tborder-radius: 2px;}#loading-progress .bar {\twidth: 0;\tbackground: #2dbb30;\tbox-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);}",DoXHR:function (url, opts) { + if (!url) { + return opts.onload(new Error('Must provide a URL')); + } + + var req = new XMLHttpRequest(); + req.open('GET', url, true); + if (opts.dataType && + // responseType json not implemented in webkit, we'll do it manually later on + opts.dataType !== 'json') { + req.responseType = opts.dataType; + } + req.onprogress = function (ev) { + if (opts.onprogress) { + opts.onprogress(ev.loaded, ev.total); + } + }; + req.onload = function () { + var err = null; + var data = req.response; + + if (!(req.status >= 200 && req.status < 300 || req.status === 304)) { + err = new Error('Couldn\'t load ' + url + '. Status: ' + req.statusCode); + } else { + // manually parse out a request expecting a JSON response + if (opts.dataType === 'json') { + try { + data = JSON.parse(data); + } catch (e) { + err = e; + } + } + } + + if (opts.onload) { + opts.onload(err, data); + } + }; + req.send(null); + },LoadingDescription:function (desc) { + var progress = document.getElementById('loading-progress'); + var description = progress.querySelector('.description'); + + if (!desc) { + SYS.loading.style.display = 'none'; + SYS.LoadingProgress(0); + } else { + SYS.loading.style.display = 'block'; + } + + description.innerHTML = desc; + },LoadingProgress:function (frac) { + var progress = document.getElementById('loading-progress'); + var bar = progress.querySelector('.bar'); + + bar.style.width = (frac*100) + '%'; + },PromptEULA:function (callback) { + var agree = document.getElementById('agree'); + var dontAgree = document.getElementById('dont-agree'); + + SYS.eula.style.display = 'block'; + + agree.onclick = function () { + SYS.eula.style.display = 'none'; + agree.onclick = null; + return callback(); + }; + + dontAgree.onclick = function () { + SYS.eula.style.display = 'none'; + dontAgree.onclick = null; + return callback(new Error('You must agree to the EULA to continue')); + }; + }};function _Sys_Milliseconds() { + if (!SYS.timeBase) { + SYS.timeBase = Date.now(); + } + + if (window.performance.now) { + return parseInt(window.performance.now(), 10); + } else if (window.performance.webkitNow) { + return parseInt(window.performance.webkitNow(), 10); + } else { + return Date.now() - SYS.timeBase(); + } + } + + + Module["_strncpy"] = _strncpy; + + var _sin=Math_sin; + + var _cos=Math_cos; + + var _atan2=Math_atan2; + + function _Sys_LowPhysicalMemory() { + return false; + } + + + function _round(x) { + return (x < 0) ? -Math.round(-x) : Math.round(x); + }var _roundf=_round; + + var _ceilf=Math_ceil; + + var _floorf=Math_floor; + + var _sqrtf=Math_sqrt; + + + Module["_strcpy"] = _strcpy; + + + + Module["_memmove"] = _memmove;var _llvm_memmove_p0i8_p0i8_i32=_memmove; + + function _strchr(ptr, chr) { + ptr--; + do { + ptr++; + var val = HEAP8[(ptr)]; + if (val == chr) return ptr; + } while (val); + return 0; + } + + function _isalnum(chr) { + return (chr >= 48 && chr <= 57) || + (chr >= 97 && chr <= 122) || + (chr >= 65 && chr <= 90); + } + + var _sqrt=Math_sqrt; + + var _llvm_pow_f32=Math_pow; + + var _fabsf=Math_abs; + + function _Sys_GetClipboardData() { + return 0; + } + + + Module["_tolower"] = _tolower; + + + function _strrchr(ptr, chr) { + var ptr2 = ptr + _strlen(ptr); + do { + if (HEAP8[(ptr2)] == chr) return ptr2; + ptr2--; + } while (ptr2 >= ptr); + return 0; + } + + + + Module["_rand_r"] = _rand_r; + + var ___rand_seed=allocate([0x0273459b, 0, 0, 0], "i32", ALLOC_STATIC); + Module["_rand"] = _rand; + + + function _rint(x) { + if (Math.abs(x % 1) !== 0.5) return Math.round(x); + return x + x % 2 + ((x < 0) ? 1 : -1); + }var _lrintf=_rint; + + function _Sys_SetEnv(name, value) { + name = Pointer_stringify(name); + value = Pointer_stringify(value); + } + + function _Sys_GLimpSafeInit() { + } + + function _Sys_GLimpInit() { + var viewport = Module['viewport']; + + // create a canvas element at this point if one doesnt' already exist + if (!Module['canvas']) { + var canvas = document.createElement('canvas'); + canvas.id = 'viewport'; + canvas.width = viewport.offsetWidth; + canvas.height = viewport.offsetHeight; + + Module['canvas'] = viewport.appendChild(canvas); + } + } + + + + function __getFloat(text) { + return /^[+-]?[0-9]*\.?[0-9]+([eE][+-]?[0-9]+)?/.exec(text); + }function __scanString(format, get, unget, varargs) { + if (!__scanString.whiteSpace) { + __scanString.whiteSpace = {}; + __scanString.whiteSpace[32] = 1; + __scanString.whiteSpace[9] = 1; + __scanString.whiteSpace[10] = 1; + __scanString.whiteSpace[11] = 1; + __scanString.whiteSpace[12] = 1; + __scanString.whiteSpace[13] = 1; + } + // Supports %x, %4x, %d.%d, %lld, %s, %f, %lf. + // TODO: Support all format specifiers. + format = Pointer_stringify(format); + var soFar = 0; + if (format.indexOf('%n') >= 0) { + // need to track soFar + var _get = get; + get = function get() { + soFar++; + return _get(); + } + var _unget = unget; + unget = function unget() { + soFar--; + return _unget(); + } + } + var formatIndex = 0; + var argsi = 0; + var fields = 0; + var argIndex = 0; + var next; + + mainLoop: + for (var formatIndex = 0; formatIndex < format.length;) { + if (format[formatIndex] === '%' && format[formatIndex+1] == 'n') { + var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; + argIndex += Runtime.getAlignSize('void*', null, true); + HEAP32[((argPtr)>>2)]=soFar; + formatIndex += 2; + continue; + } + + if (format[formatIndex] === '%') { + var nextC = format.indexOf('c', formatIndex+1); + if (nextC > 0) { + var maxx = 1; + if (nextC > formatIndex+1) { + var sub = format.substring(formatIndex+1, nextC); + maxx = parseInt(sub); + if (maxx != sub) maxx = 0; + } + if (maxx) { + var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; + argIndex += Runtime.getAlignSize('void*', null, true); + fields++; + for (var i = 0; i < maxx; i++) { + next = get(); + HEAP8[((argPtr++)|0)]=next; + if (next === 0) return i > 0 ? fields : fields-1; // we failed to read the full length of this field + } + formatIndex += nextC - formatIndex + 1; + continue; + } + } + } + + // handle %[...] + if (format[formatIndex] === '%' && format.indexOf('[', formatIndex+1) > 0) { + var match = /\%([0-9]*)\[(\^)?(\]?[^\]]*)\]/.exec(format.substring(formatIndex)); + if (match) { + var maxNumCharacters = parseInt(match[1]) || Infinity; + var negateScanList = (match[2] === '^'); + var scanList = match[3]; + + // expand "middle" dashs into character sets + var middleDashMatch; + while ((middleDashMatch = /([^\-])\-([^\-])/.exec(scanList))) { + var rangeStartCharCode = middleDashMatch[1].charCodeAt(0); + var rangeEndCharCode = middleDashMatch[2].charCodeAt(0); + for (var expanded = ''; rangeStartCharCode <= rangeEndCharCode; expanded += String.fromCharCode(rangeStartCharCode++)); + scanList = scanList.replace(middleDashMatch[1] + '-' + middleDashMatch[2], expanded); + } + + var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; + argIndex += Runtime.getAlignSize('void*', null, true); + fields++; + + for (var i = 0; i < maxNumCharacters; i++) { + next = get(); + if (negateScanList) { + if (scanList.indexOf(String.fromCharCode(next)) < 0) { + HEAP8[((argPtr++)|0)]=next; + } else { + unget(); + break; + } + } else { + if (scanList.indexOf(String.fromCharCode(next)) >= 0) { + HEAP8[((argPtr++)|0)]=next; + } else { + unget(); + break; + } + } + } + + // write out null-terminating character + HEAP8[((argPtr++)|0)]=0; + formatIndex += match[0].length; + + continue; + } + } + // remove whitespace + while (1) { + next = get(); + if (next == 0) return fields; + if (!(next in __scanString.whiteSpace)) break; + } + unget(); + + if (format[formatIndex] === '%') { + formatIndex++; + var suppressAssignment = false; + if (format[formatIndex] == '*') { + suppressAssignment = true; + formatIndex++; + } + var maxSpecifierStart = formatIndex; + while (format[formatIndex].charCodeAt(0) >= 48 && + format[formatIndex].charCodeAt(0) <= 57) { + formatIndex++; + } + var max_; + if (formatIndex != maxSpecifierStart) { + max_ = parseInt(format.slice(maxSpecifierStart, formatIndex), 10); + } + var long_ = false; + var half = false; + var longLong = false; + if (format[formatIndex] == 'l') { + long_ = true; + formatIndex++; + if (format[formatIndex] == 'l') { + longLong = true; + formatIndex++; + } + } else if (format[formatIndex] == 'h') { + half = true; + formatIndex++; + } + var type = format[formatIndex]; + formatIndex++; + var curr = 0; + var buffer = []; + // Read characters according to the format. floats are trickier, they may be in an unfloat state in the middle, then be a valid float later + if (type == 'f' || type == 'e' || type == 'g' || + type == 'F' || type == 'E' || type == 'G') { + next = get(); + while (next > 0 && (!(next in __scanString.whiteSpace))) { + buffer.push(String.fromCharCode(next)); + next = get(); + } + var m = __getFloat(buffer.join('')); + var last = m ? m[0].length : 0; + for (var i = 0; i < buffer.length - last + 1; i++) { + unget(); + } + buffer.length = last; + } else { + next = get(); + var first = true; + + // Strip the optional 0x prefix for %x. + if ((type == 'x' || type == 'X') && (next == 48)) { + var peek = get(); + if (peek == 120 || peek == 88) { + next = get(); + } else { + unget(); + } + } + + while ((curr < max_ || isNaN(max_)) && next > 0) { + if (!(next in __scanString.whiteSpace) && // stop on whitespace + (type == 's' || + ((type === 'd' || type == 'u' || type == 'i') && ((next >= 48 && next <= 57) || + (first && next == 45))) || + ((type === 'x' || type === 'X') && (next >= 48 && next <= 57 || + next >= 97 && next <= 102 || + next >= 65 && next <= 70))) && + (formatIndex >= format.length || next !== format[formatIndex].charCodeAt(0))) { // Stop when we read something that is coming up + buffer.push(String.fromCharCode(next)); + next = get(); + curr++; + first = false; + } else { + break; + } + } + unget(); + } + if (buffer.length === 0) return 0; // Failure. + if (suppressAssignment) continue; + + var text = buffer.join(''); + var argPtr = HEAP32[(((varargs)+(argIndex))>>2)]; + argIndex += Runtime.getAlignSize('void*', null, true); + switch (type) { + case 'd': case 'u': case 'i': + if (half) { + HEAP16[((argPtr)>>1)]=parseInt(text, 10); + } else if (longLong) { + (tempI64 = [parseInt(text, 10)>>>0,(tempDouble=parseInt(text, 10),(+(Math_abs(tempDouble))) >= (+1) ? (tempDouble > (+0) ? ((Math_min((+(Math_floor((tempDouble)/(+4294967296)))), (+4294967295)))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+4294967296))))))>>>0) : 0)],HEAP32[((argPtr)>>2)]=tempI64[0],HEAP32[(((argPtr)+(4))>>2)]=tempI64[1]); + } else { + HEAP32[((argPtr)>>2)]=parseInt(text, 10); + } + break; + case 'X': + case 'x': + HEAP32[((argPtr)>>2)]=parseInt(text, 16); + break; + case 'F': + case 'f': + case 'E': + case 'e': + case 'G': + case 'g': + case 'E': + // fallthrough intended + if (long_) { + HEAPF64[((argPtr)>>3)]=parseFloat(text); + } else { + HEAPF32[((argPtr)>>2)]=parseFloat(text); + } + break; + case 's': + var array = intArrayFromString(text); + for (var j = 0; j < array.length; j++) { + HEAP8[(((argPtr)+(j))|0)]=array[j]; + } + break; + } + fields++; + } else if (format[formatIndex].charCodeAt(0) in __scanString.whiteSpace) { + next = get(); + while (next in __scanString.whiteSpace) { + if (next <= 0) break mainLoop; // End of input. + next = get(); + } + unget(next); + formatIndex++; + } else { + // Not a specifier. + next = get(); + if (format[formatIndex].charCodeAt(0) !== next) { + unget(next); + break mainLoop; + } + formatIndex++; + } + } + return fields; + }function _sscanf(s, format, varargs) { + // int sscanf(const char *restrict s, const char *restrict format, ... ); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/scanf.html + var index = 0; + function get() { return HEAP8[(((s)+(index++))|0)]; }; + function unget() { index--; }; + return __scanString(format, get, unget, varargs); + } + + + + + function __reallyNegative(x) { + return x < 0 || (x === 0 && (1/x) === -Infinity); + }function __formatString(format, varargs) { + var textIndex = format; + var argIndex = 0; + function getNextArg(type) { + // NOTE: Explicitly ignoring type safety. Otherwise this fails: + // int x = 4; printf("%c\n", (char)x); + var ret; + if (type === 'double') { + ret = HEAPF64[(((varargs)+(argIndex))>>3)]; + } else if (type == 'i64') { + ret = [HEAP32[(((varargs)+(argIndex))>>2)], + HEAP32[(((varargs)+(argIndex+8))>>2)]]; + argIndex += 8; // each 32-bit chunk is in a 64-bit block + + } else { + type = 'i32'; // varargs are always i32, i64, or double + ret = HEAP32[(((varargs)+(argIndex))>>2)]; + } + argIndex += Math.max(Runtime.getNativeFieldSize(type), Runtime.getAlignSize(type, null, true)); + return ret; + } + + var ret = []; + var curr, next, currArg; + while(1) { + var startTextIndex = textIndex; + curr = HEAP8[(textIndex)]; + if (curr === 0) break; + next = HEAP8[((textIndex+1)|0)]; + if (curr == 37) { + // Handle flags. + var flagAlwaysSigned = false; + var flagLeftAlign = false; + var flagAlternative = false; + var flagZeroPad = false; + var flagPadSign = false; + flagsLoop: while (1) { + switch (next) { + case 43: + flagAlwaysSigned = true; + break; + case 45: + flagLeftAlign = true; + break; + case 35: + flagAlternative = true; + break; + case 48: + if (flagZeroPad) { + break flagsLoop; + } else { + flagZeroPad = true; + break; + } + case 32: + flagPadSign = true; + break; + default: + break flagsLoop; + } + textIndex++; + next = HEAP8[((textIndex+1)|0)]; + } + + // Handle width. + var width = 0; + if (next == 42) { + width = getNextArg('i32'); + textIndex++; + next = HEAP8[((textIndex+1)|0)]; + } else { + while (next >= 48 && next <= 57) { + width = width * 10 + (next - 48); + textIndex++; + next = HEAP8[((textIndex+1)|0)]; + } + } + + // Handle precision. + var precisionSet = false, precision = -1; + if (next == 46) { + precision = 0; + precisionSet = true; + textIndex++; + next = HEAP8[((textIndex+1)|0)]; + if (next == 42) { + precision = getNextArg('i32'); + textIndex++; + } else { + while(1) { + var precisionChr = HEAP8[((textIndex+1)|0)]; + if (precisionChr < 48 || + precisionChr > 57) break; + precision = precision * 10 + (precisionChr - 48); + textIndex++; + } + } + next = HEAP8[((textIndex+1)|0)]; + } + if (precision === -1) { + precision = 6; // Standard default. + precisionSet = false; + } + + // Handle integer sizes. WARNING: These assume a 32-bit architecture! + var argSize; + switch (String.fromCharCode(next)) { + case 'h': + var nextNext = HEAP8[((textIndex+2)|0)]; + if (nextNext == 104) { + textIndex++; + argSize = 1; // char (actually i32 in varargs) + } else { + argSize = 2; // short (actually i32 in varargs) + } + break; + case 'l': + var nextNext = HEAP8[((textIndex+2)|0)]; + if (nextNext == 108) { + textIndex++; + argSize = 8; // long long + } else { + argSize = 4; // long + } + break; + case 'L': // long long + case 'q': // int64_t + case 'j': // intmax_t + argSize = 8; + break; + case 'z': // size_t + case 't': // ptrdiff_t + case 'I': // signed ptrdiff_t or unsigned size_t + argSize = 4; + break; + default: + argSize = null; + } + if (argSize) textIndex++; + next = HEAP8[((textIndex+1)|0)]; + + // Handle type specifier. + switch (String.fromCharCode(next)) { + case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { + // Integer. + var signed = next == 100 || next == 105; + argSize = argSize || 4; + var currArg = getNextArg('i' + (argSize * 8)); + var origArg = currArg; + var argText; + // Flatten i64-1 [low, high] into a (slightly rounded) double + if (argSize == 8) { + currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); + } + // Truncate to requested size. + if (argSize <= 4) { + var limit = Math.pow(256, argSize) - 1; + currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); + } + // Format the number. + var currAbsArg = Math.abs(currArg); + var prefix = ''; + if (next == 100 || next == 105) { + if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], null); else + argText = reSign(currArg, 8 * argSize, 1).toString(10); + } else if (next == 117) { + if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], true); else + argText = unSign(currArg, 8 * argSize, 1).toString(10); + currArg = Math.abs(currArg); + } else if (next == 111) { + argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); + } else if (next == 120 || next == 88) { + prefix = (flagAlternative && currArg != 0) ? '0x' : ''; + if (argSize == 8 && i64Math) { + if (origArg[1]) { + argText = (origArg[1]>>>0).toString(16); + var lower = (origArg[0]>>>0).toString(16); + while (lower.length < 8) lower = '0' + lower; + argText += lower; + } else { + argText = (origArg[0]>>>0).toString(16); + } + } else + if (currArg < 0) { + // Represent negative numbers in hex as 2's complement. + currArg = -currArg; + argText = (currAbsArg - 1).toString(16); + var buffer = []; + for (var i = 0; i < argText.length; i++) { + buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); + } + argText = buffer.join(''); + while (argText.length < argSize * 2) argText = 'f' + argText; + } else { + argText = currAbsArg.toString(16); + } + if (next == 88) { + prefix = prefix.toUpperCase(); + argText = argText.toUpperCase(); + } + } else if (next == 112) { + if (currAbsArg === 0) { + argText = '(nil)'; + } else { + prefix = '0x'; + argText = currAbsArg.toString(16); + } + } + if (precisionSet) { + while (argText.length < precision) { + argText = '0' + argText; + } + } + + // Add sign if needed + if (currArg >= 0) { + if (flagAlwaysSigned) { + prefix = '+' + prefix; + } else if (flagPadSign) { + prefix = ' ' + prefix; + } + } + + // Move sign to prefix so we zero-pad after the sign + if (argText.charAt(0) == '-') { + prefix = '-' + prefix; + argText = argText.substr(1); + } + + // Add padding. + while (prefix.length + argText.length < width) { + if (flagLeftAlign) { + argText += ' '; + } else { + if (flagZeroPad) { + argText = '0' + argText; + } else { + prefix = ' ' + prefix; + } + } + } + + // Insert the result into the buffer. + argText = prefix + argText; + argText.split('').forEach(function(chr) { + ret.push(chr.charCodeAt(0)); + }); + break; + } + case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { + // Float. + var currArg = getNextArg('double'); + var argText; + if (isNaN(currArg)) { + argText = 'nan'; + flagZeroPad = false; + } else if (!isFinite(currArg)) { + argText = (currArg < 0 ? '-' : '') + 'inf'; + flagZeroPad = false; + } else { + var isGeneral = false; + var effectivePrecision = Math.min(precision, 20); + + // Convert g/G to f/F or e/E, as per: + // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html + if (next == 103 || next == 71) { + isGeneral = true; + precision = precision || 1; + var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); + if (precision > exponent && exponent >= -4) { + next = ((next == 103) ? 'f' : 'F').charCodeAt(0); + precision -= exponent + 1; + } else { + next = ((next == 103) ? 'e' : 'E').charCodeAt(0); + precision--; + } + effectivePrecision = Math.min(precision, 20); + } + + if (next == 101 || next == 69) { + argText = currArg.toExponential(effectivePrecision); + // Make sure the exponent has at least 2 digits. + if (/[eE][-+]\d$/.test(argText)) { + argText = argText.slice(0, -1) + '0' + argText.slice(-1); + } + } else if (next == 102 || next == 70) { + argText = currArg.toFixed(effectivePrecision); + if (currArg === 0 && __reallyNegative(currArg)) { + argText = '-' + argText; + } + } + + var parts = argText.split('e'); + if (isGeneral && !flagAlternative) { + // Discard trailing zeros and periods. + while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && + (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { + parts[0] = parts[0].slice(0, -1); + } + } else { + // Make sure we have a period in alternative mode. + if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; + // Zero pad until required precision. + while (precision > effectivePrecision++) parts[0] += '0'; + } + argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); + + // Capitalize 'E' if needed. + if (next == 69) argText = argText.toUpperCase(); + + // Add sign. + if (currArg >= 0) { + if (flagAlwaysSigned) { + argText = '+' + argText; + } else if (flagPadSign) { + argText = ' ' + argText; + } + } + } + + // Add padding. + while (argText.length < width) { + if (flagLeftAlign) { + argText += ' '; + } else { + if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { + argText = argText[0] + '0' + argText.slice(1); + } else { + argText = (flagZeroPad ? '0' : ' ') + argText; + } + } + } + + // Adjust case. + if (next < 97) argText = argText.toUpperCase(); + + // Insert the result into the buffer. + argText.split('').forEach(function(chr) { + ret.push(chr.charCodeAt(0)); + }); + break; + } + case 's': { + // String. + var arg = getNextArg('i8*'); + var argLength = arg ? _strlen(arg) : '(null)'.length; + if (precisionSet) argLength = Math.min(argLength, precision); + if (!flagLeftAlign) { + while (argLength < width--) { + ret.push(32); + } + } + if (arg) { + for (var i = 0; i < argLength; i++) { + ret.push(HEAPU8[((arg++)|0)]); + } + } else { + ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); + } + if (flagLeftAlign) { + while (argLength < width--) { + ret.push(32); + } + } + break; + } + case 'c': { + // Character. + if (flagLeftAlign) ret.push(getNextArg('i8')); + while (--width > 0) { + ret.push(32); + } + if (!flagLeftAlign) ret.push(getNextArg('i8')); + break; + } + case 'n': { + // Write the length written so far to the next parameter. + var ptr = getNextArg('i32*'); + HEAP32[((ptr)>>2)]=ret.length; + break; + } + case '%': { + // Literal percent sign. + ret.push(curr); + break; + } + default: { + // Unknown specifiers remain untouched. + for (var i = startTextIndex; i < textIndex + 2; i++) { + ret.push(HEAP8[(i)]); + } + } + } + textIndex += 2; + // TODO: Support a/A (hex float) and m (last error) specifiers. + // TODO: Support %1${specifier} for arg selection. + } else { + ret.push(curr); + textIndex += 1; + } + } + return ret; + }function _snprintf(s, n, format, varargs) { + // int snprintf(char *restrict s, size_t n, const char *restrict format, ...); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html + var result = __formatString(format, varargs); + var limit = (n === undefined) ? result.length + : Math.min(result.length, Math.max(n - 1, 0)); + if (s < 0) { + s = -s; + var buf = _malloc(limit+1); + HEAP32[((s)>>2)]=buf; + s = buf; + } + for (var i = 0; i < limit; i++) { + HEAP8[(((s)+(i))|0)]=result[i]; + } + if (limit < n || (n === undefined)) HEAP8[(((s)+(i))|0)]=0; + return result.length; + }function _sprintf(s, format, varargs) { + // int sprintf(char *restrict s, const char *restrict format, ...); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html + return _snprintf(s, undefined, format, varargs); + } + + var _llvm_va_start=undefined; + + function _vsnprintf(s, n, format, va_arg) { + return _snprintf(s, n, format, HEAP32[((va_arg)>>2)]); + } + + function _llvm_va_end() {} + + var _llvm_memset_p0i8_i64=_memset; + + var _llvm_memcpy_p0i8_p0i8_i64=_memcpy; + + function _strpbrk(ptr1, ptr2) { + var curr; + var searchSet = {}; + while (1) { + var curr = HEAP8[((ptr2++)|0)]; + if (!curr) break; + searchSet[curr] = 1; + } + while (1) { + curr = HEAP8[(ptr1)]; + if (!curr) break; + if (curr in searchSet) return ptr1; + ptr1++; + } + return 0; + } + + function _time(ptr) { + var ret = Math.floor(Date.now()/1000); + if (ptr) { + HEAP32[((ptr)>>2)]=ret; + } + return ret; + } + + + var ___tm_current=allocate(44, "i8", ALLOC_STATIC); + + + var ___tm_timezone=allocate(intArrayFromString("GMT"), "i8", ALLOC_STATIC); + + + var _tzname=allocate(8, "i32*", ALLOC_STATIC); + + var _daylight=allocate(1, "i32*", ALLOC_STATIC); + + var _timezone=allocate(1, "i32*", ALLOC_STATIC);function _tzset() { + // TODO: Use (malleable) environment variables instead of system settings. + if (_tzset.called) return; + _tzset.called = true; + + HEAP32[((_timezone)>>2)]=-(new Date()).getTimezoneOffset() * 60; + + var winter = new Date(2000, 0, 1); + var summer = new Date(2000, 6, 1); + HEAP32[((_daylight)>>2)]=Number(winter.getTimezoneOffset() != summer.getTimezoneOffset()); + + var winterName = 'GMT'; // XXX do not rely on browser timezone info, it is very unpredictable | winter.toString().match(/\(([A-Z]+)\)/)[1]; + var summerName = 'GMT'; // XXX do not rely on browser timezone info, it is very unpredictable | summer.toString().match(/\(([A-Z]+)\)/)[1]; + var winterNamePtr = allocate(intArrayFromString(winterName), 'i8', ALLOC_NORMAL); + var summerNamePtr = allocate(intArrayFromString(summerName), 'i8', ALLOC_NORMAL); + HEAP32[((_tzname)>>2)]=winterNamePtr; + HEAP32[(((_tzname)+(4))>>2)]=summerNamePtr; + }function _localtime_r(time, tmPtr) { + _tzset(); + var date = new Date(HEAP32[((time)>>2)]*1000); + 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 start = new Date(date.getFullYear(), 0, 1); + var yday = Math.floor((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)); + HEAP32[(((tmPtr)+(28))>>2)]=yday; + HEAP32[(((tmPtr)+(36))>>2)]=start.getTimezoneOffset() * 60; + + var dst = Number(start.getTimezoneOffset() != date.getTimezoneOffset()); + HEAP32[(((tmPtr)+(32))>>2)]=dst; + + HEAP32[(((tmPtr)+(40))>>2)]=___tm_timezone; + + return tmPtr; + }function _localtime(time) { + return _localtime_r(time, ___tm_current); + } + + + var ___tm_formatted=allocate(44, "i8", ALLOC_STATIC); + + + function _mktime(tmPtr) { + _tzset(); + var year = HEAP32[(((tmPtr)+(20))>>2)]; + var timestamp = new Date(year >= 1900 ? year : year + 1900, + HEAP32[(((tmPtr)+(16))>>2)], + HEAP32[(((tmPtr)+(12))>>2)], + HEAP32[(((tmPtr)+(8))>>2)], + HEAP32[(((tmPtr)+(4))>>2)], + HEAP32[((tmPtr)>>2)], + 0).getTime() / 1000; + HEAP32[(((tmPtr)+(24))>>2)]=new Date(timestamp).getDay(); + var yday = Math.round((timestamp - (new Date(year, 0, 1)).getTime()) / (1000 * 60 * 60 * 24)); + HEAP32[(((tmPtr)+(28))>>2)]=yday; + return timestamp; + }function _asctime_r(tmPtr, buf) { + var date = new Date(_mktime(tmPtr)*1000); + var formatted = date.toString(); + var datePart = formatted.replace(/\d{4}.*/, '').replace(/ 0/, ' '); + var timePart = formatted.match(/\d{2}:\d{2}:\d{2}/)[0]; + formatted = datePart + timePart + ' ' + date.getFullYear() + '\n'; + formatted.split('').forEach(function(chr, index) { + HEAP8[(((buf)+(index))|0)]=chr.charCodeAt(0); + }); + HEAP8[(((buf)+(25))|0)]=0; + return buf; + }function _asctime(tmPtr) { + return _asctime_r(tmPtr, ___tm_formatted); + } + + + + + + + + + function _mkport() { throw 'TODO' }var SOCKFS={mount:function (mount) { + return FS.createNode(null, '/', 16384 | 0777, 0); + },createSocket:function (family, type, protocol) { + var streaming = type == 1; + if (protocol) { + assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp + } + + // create our internal socket structure + var sock = { + family: family, + type: type, + protocol: protocol, + server: null, + peers: {}, + pending: [], + recv_queue: [], + sock_ops: SOCKFS.websocket_sock_ops + }; + + // create the filesystem node to store the socket structure + var name = SOCKFS.nextname(); + var node = FS.createNode(SOCKFS.root, name, 49152, 0); + node.sock = sock; + + // and the wrapping stream that enables library functions such + // as read and write to indirectly interact with the socket + var stream = FS.createStream({ + path: name, + node: node, + flags: FS.modeStringToFlags('r+'), + seekable: false, + stream_ops: SOCKFS.stream_ops + }); + + // map the new stream to the socket structure (sockets have a 1:1 + // relationship with a stream) + sock.stream = stream; + + return sock; + },getSocket:function (fd) { + var stream = FS.getStream(fd); + if (!stream || !FS.isSocket(stream.node.mode)) { + return null; + } + return stream.node.sock; + },stream_ops:{poll:function (stream) { + var sock = stream.node.sock; + return sock.sock_ops.poll(sock); + },ioctl:function (stream, request, varargs) { + var sock = stream.node.sock; + return sock.sock_ops.ioctl(sock, request, varargs); + },read:function (stream, buffer, offset, length, position /* ignored */) { + var sock = stream.node.sock; + var msg = sock.sock_ops.recvmsg(sock, length); + if (!msg) { + // socket is closed + return 0; + } + buffer.set(msg.buffer, offset); + return msg.buffer.length; + },write:function (stream, buffer, offset, length, position /* ignored */) { + var sock = stream.node.sock; + return sock.sock_ops.sendmsg(sock, buffer, offset, length); + },close:function (stream) { + var sock = stream.node.sock; + sock.sock_ops.close(sock); + }},nextname:function () { + if (!SOCKFS.nextname.current) { + SOCKFS.nextname.current = 0; + } + return 'socket[' + (SOCKFS.nextname.current++) + ']'; + },websocket_sock_ops:{createPeer:function (sock, addr, port) { + var ws; + + if (typeof addr === 'object') { + ws = addr; + addr = null; + port = null; + } + + if (ws) { + // for sockets that've already connected (e.g. we're the server) + // we can inspect the _socket property for the address + if (ws._socket) { + addr = ws._socket.remoteAddress; + port = ws._socket.remotePort; + } + // if we're just now initializing a connection to the remote, + // inspect the url property + 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 { + // create the actual websocket object and connect + try { + var url = (window.location.protocol == 'https:' ? "wss://" : "ws://") + addr + ':' + port; + // the node ws library API is slightly different than the browser's + var opts = ENVIRONMENT_IS_NODE ? {headers: {'websocket-protocol': ['binary']}} : ['binary']; + // If node we use the ws library. + var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket']; + ws = new WebSocket(url, opts); + ws.binaryType = 'arraybuffer'; + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH); + } + } + + + 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 this is a bound dgram socket, send the port number first to allow + // us to override the ephemeral port reported to us by remotePort on the + // remote end. + 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 & 0xff00) >> 8) , (sock.sport & 0xff) + ])); + } + + return peer; + },getPeer:function (sock, addr, port) { + return sock.peers[addr + ':' + port]; + },addPeer:function (sock, peer) { + sock.peers[peer.addr + ':' + peer.port] = peer; + },removePeer:function (sock, peer) { + delete sock.peers[peer.addr + ':' + peer.port]; + },handlePeerEvents:function (sock, peer) { + var first = true; + + function handleOpen() { + try { + var queued = peer.dgram_send_queue.shift(); + while (queued) { + peer.socket.send(queued); + queued = peer.dgram_send_queue.shift(); + } + } catch (e) { + // not much we can do here in the way of proper error handling as we've already + // lied and said this data was sent. shut it down. + peer.socket.close(); + } + } + + function handleMessage(data) { + assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer + data = new Uint8Array(data); // make a typed array view on the array buffer + + + // if this is the port message, override the peer's port with it + 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)) { + // update the peer's port and it's key in the peer map + 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 }); + } + + function handleClose() { + SOCKFS.websocket_sock_ops.removePeer(sock, peer); + } + + if (ENVIRONMENT_IS_NODE) { + peer.socket.on('open', handleOpen); + peer.socket.on('message', function(data, flags) { + if (!flags.binary) { + return; + } + handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer + }); + peer.socket.on('error', handleClose); + peer.socket.on('close', handleClose); + } else { + peer.socket.onopen = handleOpen; + peer.socket.onmessage = function peer_socket_onmessage(event) { + handleMessage(event.data); + }; + peer.socket.onerror = handleClose; + peer.socket.onclose = handleClose; + } + },poll:function (sock) { + if (sock.type === 1 && sock.server) { + // listen sockets should only say they're available for reading + // if there are pending clients. + return sock.pending.length ? (64 | 1) : 0; + } + + var mask = 0; + var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets + SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : + null; + + if (sock.recv_queue.length || + !dest || // connection-less sockets are always ready to read + (dest && dest.socket.readyState === dest.socket.CLOSING) || + (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed + mask |= (64 | 1); + } + + if (!dest || // connection-less sockets are always ready to write + (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 (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 ERRNO_CODES.EINVAL; + } + },close:function (sock) { + // if we've spawned a listen server, close it + if (sock.server) { + try { + sock.server.close(); + } catch (e) { + } + sock.server = null; + } + // close any peer connections + 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 (sock, addr, port) { + if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound + } + sock.saddr = addr; + sock.sport = port || _mkport(); + // in order to emulate dgram sockets, we need to launch a listen server when + // binding on a connection-less socket + // note: this is only required on the server side + if (sock.type === 2) { + // close the existing server if it exists + if (sock.server) { + sock.server.close(); + sock.server = null; + } + // swallow error operation not supported error that occurs when binding in the + // browser where this isn't supported + try { + sock.sock_ops.listen(sock, 0); + } catch (e) { + if (!(e instanceof FS.ErrnoError)) throw e; + if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e; + } + } + },connect:function (sock, addr, port) { + if (sock.server) { + throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP); + } + + // TODO autobind + // if (!sock.addr && sock.type == 2) { + // } + + // early out if we're already connected / in the middle of connecting + 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(ERRNO_CODES.EALREADY); + } else { + throw new FS.ErrnoError(ERRNO_CODES.EISCONN); + } + } + } + + // add the socket to our peer list and set our + // destination address / port to match + var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); + sock.daddr = peer.addr; + sock.dport = peer.port; + + // always "fail" in non-blocking mode + throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS); + },listen:function (sock, backlog) { + if (!ENVIRONMENT_IS_NODE) { + throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); + } + if (sock.server) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening + } + var WebSocketServer = require('ws').Server; + var host = sock.saddr; + sock.server = new WebSocketServer({ + host: host, + port: sock.sport + // TODO support backlog + }); + + sock.server.on('connection', function(ws) { + if (sock.type === 1) { + var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); + + // create a peer on the new socket + var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); + newsock.daddr = peer.addr; + newsock.dport = peer.port; + + // push to queue for accept to pick up + sock.pending.push(newsock); + } else { + // create a peer on the listen socket so calling sendto + // with the listen socket and an address will resolve + // to the correct client + SOCKFS.websocket_sock_ops.createPeer(sock, ws); + } + }); + sock.server.on('closed', function() { + sock.server = null; + }); + sock.server.on('error', function() { + // don't throw + }); + },accept:function (listensock) { + if (!listensock.server) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var newsock = listensock.pending.shift(); + newsock.stream.flags = listensock.stream.flags; + return newsock; + },getname:function (sock, peer) { + var addr, port; + if (peer) { + if (sock.daddr === undefined || sock.dport === undefined) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); + } + addr = sock.daddr; + port = sock.dport; + } else { + // TODO saddr and sport will be set for bind()'d UDP sockets, but what + // should we be returning for TCP sockets that've been connect()'d? + addr = sock.saddr || 0; + port = sock.sport || 0; + } + return { addr: addr, port: port }; + },sendmsg:function (sock, buffer, offset, length, addr, port) { + if (sock.type === 2) { + // connection-less sockets will honor the message address, + // and otherwise fall back to the bound destination address + if (addr === undefined || port === undefined) { + addr = sock.daddr; + port = sock.dport; + } + // if there was no address to fall back to, error out + if (addr === undefined || port === undefined) { + throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ); + } + } else { + // connection-based sockets will only use the bound + addr = sock.daddr; + port = sock.dport; + } + + // find the peer for the destination address + var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); + + // early out if not connected with a connection-based socket + if (sock.type === 1) { + if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); + } else if (dest.socket.readyState === dest.socket.CONNECTING) { + throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); + } + } + + // create a copy of the incoming data to send, as the WebSocket API + // doesn't work entirely with an ArrayBufferView, it'll just send + // the entire underlying buffer + var data; + if (buffer instanceof Array || buffer instanceof ArrayBuffer) { + data = buffer.slice(offset, offset + length); + } else { // ArrayBufferView + data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length); + } + + // if we're emulating a connection-less dgram socket and don't have + // a cached connection, queue the buffer to send upon connect and + // lie, saying the data was sent now. + if (sock.type === 2) { + if (!dest || dest.socket.readyState !== dest.socket.OPEN) { + // if we're not connected, open a new connection + 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 { + // send the actual data + dest.socket.send(data); + return length; + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + },recvmsg:function (sock, length) { + // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html + if (sock.type === 1 && sock.server) { + // tcp servers should not be recv()'ing on the listen socket + throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); + } + + 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) { + // if we have a destination address but are not connected, error out + throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN); + } + else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { + // return null if the socket has closed + return null; + } + else { + // else, our socket is in a valid state but truly has nothing available + throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); + } + } else { + throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); + } + } + + // queued.data will be an ArrayBuffer if it's unadulterated, but if it's + // requeued TCP data it'll be an ArrayBufferView + 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 + }; + + + // push back any unread data for TCP connections + 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; + }}};function _send(fd, buf, len, flags) { + var sock = SOCKFS.getSocket(fd); + if (!sock) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + // TODO honor flags + return _write(fd, buf, len); + } + + function _pwrite(fildes, buf, nbyte, offset) { + // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html + var stream = FS.getStream(fildes); + if (!stream) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + try { + var slab = HEAP8; + return FS.write(stream, slab, buf, nbyte, offset); + } catch (e) { + FS.handleFSError(e); + return -1; + } + }function _write(fildes, buf, nbyte) { + // ssize_t write(int fildes, const void *buf, size_t nbyte); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html + var stream = FS.getStream(fildes); + if (!stream) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + + + try { + var slab = HEAP8; + return FS.write(stream, slab, buf, nbyte); + } catch (e) { + FS.handleFSError(e); + return -1; + } + } + + function _fileno(stream) { + // int fileno(FILE *stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html + return FS.getStreamFromPtr(stream).fd; + }function _fputc(c, stream) { + // int fputc(int c, FILE *stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputc.html + var chr = unSign(c & 0xFF); + HEAP8[((_fputc.ret)|0)]=chr; + var fd = _fileno(stream); + var ret = _write(fd, _fputc.ret, 1); + if (ret == -1) { + var streamObj = FS.getStreamFromPtr(stream); + if (streamObj) streamObj.error = true; + return -1; + } else { + return chr; + } + }function _putchar(c) { + // int putchar(int c); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/putchar.html + return _fputc(c, HEAP32[((_stdout)>>2)]); + } + Module["_saveSetjmp"] = _saveSetjmp; + + + Module["_testSetjmp"] = _testSetjmp;function _longjmp(env, value) { + asm['setThrew'](env, value || 1); + throw 'longjmp'; + } + + var _setjmp=undefined; + + function _toupper(chr) { + if (chr >= 97 && chr <= 122) { + return chr - 97 + 65; + } else { + return chr; + } + } + + + + + + var _environ=allocate(1, "i32*", ALLOC_STATIC);var ___environ=_environ;function ___buildEnvironment(env) { + // WARNING: Arbitrary limit! + var MAX_ENV_VALUES = 64; + var TOTAL_ENV_SIZE = 1024; + + // Statically allocate memory for the environment. + var poolPtr; + var envPtr; + if (!___buildEnvironment.called) { + ___buildEnvironment.called = true; + // Set default values. Use string keys for Closure Compiler compatibility. + ENV['USER'] = 'root'; + ENV['PATH'] = '/'; + ENV['PWD'] = '/'; + ENV['HOME'] = '/home/emscripten'; + ENV['LANG'] = 'en_US.UTF-8'; + ENV['_'] = './this.program'; + // Allocate memory. + poolPtr = allocate(TOTAL_ENV_SIZE, 'i8', ALLOC_STATIC); + envPtr = allocate(MAX_ENV_VALUES * 4, + 'i8*', ALLOC_STATIC); + HEAP32[((envPtr)>>2)]=poolPtr; + HEAP32[((_environ)>>2)]=envPtr; + } else { + envPtr = HEAP32[((_environ)>>2)]; + poolPtr = HEAP32[((envPtr)>>2)]; + } + + // Collect key=value lines. + var strings = []; + var totalSize = 0; + for (var key in env) { + if (typeof env[key] === 'string') { + var line = key + '=' + env[key]; + strings.push(line); + totalSize += line.length; + } + } + if (totalSize > TOTAL_ENV_SIZE) { + throw new Error('Environment size exceeded TOTAL_ENV_SIZE!'); + } + + // Make new. + var ptrSize = 4; + for (var i = 0; i < strings.length; i++) { + var line = strings[i]; + writeAsciiToMemory(line, poolPtr); + HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr; + poolPtr += line.length + 1; + } + HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0; + }var ENV={};function _getenv(name) { + // char *getenv(const char *name); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/getenv.html + if (name === 0) return 0; + name = Pointer_stringify(name); + if (!ENV.hasOwnProperty(name)) return 0; + + if (_getenv.ret) _free(_getenv.ret); + _getenv.ret = allocate(intArrayFromString(ENV[name]), 'i8', ALLOC_NORMAL); + return _getenv.ret; + } + + function _Sys_RandomBytes(string, len) { + return false; + } + + function _Sys_Dialog(type, message, title) { + SYSC.Error('SYS_Dialog not implemented'); + } + + function _srand(seed) { + HEAP32[((___rand_seed)>>2)]=seed + } + + function _strstr(ptr1, ptr2) { + var check = 0, start; + do { + if (!check) { + start = ptr1; + check = ptr2; + } + var curr1 = HEAP8[((ptr1++)|0)]; + var curr2 = HEAP8[((check++)|0)]; + if (curr2 == 0) return start; + if (curr2 != curr1) { + // rewind to one character after start, to find ez in eeez + ptr1 = start + 1; + check = 0; + } + } while (curr1); + return 0; + } + + function _setvbuf(stream, buf, type, size) { + // int setvbuf(FILE *restrict stream, char *restrict buf, int type, size_t size); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/setvbuf.html + // TODO: Implement custom buffering. + return 0; + } + + function _ftell(stream) { + // long ftell(FILE *stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/ftell.html + stream = FS.getStreamFromPtr(stream); + if (!stream) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + if (FS.isChrdev(stream.node.mode)) { + ___setErrNo(ERRNO_CODES.ESPIPE); + return -1; + } else { + return stream.position; + } + } + + + function _lseek(fildes, offset, whence) { + // off_t lseek(int fildes, off_t offset, int whence); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/lseek.html + var stream = FS.getStream(fildes); + if (!stream) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + try { + return FS.llseek(stream, offset, whence); + } catch (e) { + FS.handleFSError(e); + return -1; + } + }function _fseek(stream, offset, whence) { + // int fseek(FILE *stream, long offset, int whence); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fseek.html + var fd = _fileno(stream); + var ret = _lseek(fd, offset, whence); + if (ret == -1) { + return -1; + } + stream = FS.getStreamFromPtr(stream); + stream.eof = false; + return 0; + } + + function _Sys_Mkdir(directory) { + directory = Pointer_stringify(directory); + try { + FS.mkdir(directory, 0777); + } catch (e) { + if (!(e instanceof FS.ErrnoError)) { + SYSC.Error('drop', e.message); + } + return e.errno === ERRNO_CODES.EEXIST; + } + return true; + } + + + function _unlink(path) { + // int unlink(const char *path); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/unlink.html + path = Pointer_stringify(path); + try { + FS.unlink(path); + return 0; + } catch (e) { + FS.handleFSError(e); + return -1; + } + } + + function _rmdir(path) { + // int rmdir(const char *path); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/rmdir.html + path = Pointer_stringify(path); + try { + FS.rmdir(path); + return 0; + } catch (e) { + FS.handleFSError(e); + return -1; + } + }function _remove(path) { + // int remove(const char *path); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/remove.html + var ret = _unlink(path); + if (ret == -1) ret = _rmdir(path); + return ret; + } + + function _Sys_FOpen(ospath, mode) { + return _fopen(ospath, mode); + } + + + function _close(fildes) { + // int close(int fildes); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/close.html + var stream = FS.getStream(fildes); + if (!stream) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + try { + FS.close(stream); + return 0; + } catch (e) { + FS.handleFSError(e); + return -1; + } + } + + function _fsync(fildes) { + // int fsync(int fildes); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fsync.html + var stream = FS.getStream(fildes); + if (stream) { + // We write directly to the file system, so there's nothing to do here. + return 0; + } else { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + }function _fclose(stream) { + // int fclose(FILE *stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fclose.html + var fd = _fileno(stream); + _fsync(fd); + return _close(fd); + } + + function _rename(old_path, new_path) { + // int rename(const char *old, const char *new); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/rename.html + old_path = Pointer_stringify(old_path); + new_path = Pointer_stringify(new_path); + try { + FS.rename(old_path, new_path); + return 0; + } catch (e) { + FS.handleFSError(e); + return -1; + } + } + + function _Sys_Mkfifo(path) { + return 0; + } + + + + function _recv(fd, buf, len, flags) { + var sock = SOCKFS.getSocket(fd); + if (!sock) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + // TODO honor flags + return _read(fd, buf, len); + } + + function _pread(fildes, buf, nbyte, offset) { + // ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html + var stream = FS.getStream(fildes); + if (!stream) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + try { + var slab = HEAP8; + return FS.read(stream, slab, buf, nbyte, offset); + } catch (e) { + FS.handleFSError(e); + return -1; + } + }function _read(fildes, buf, nbyte) { + // ssize_t read(int fildes, void *buf, size_t nbyte); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html + var stream = FS.getStream(fildes); + if (!stream) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + + + try { + var slab = HEAP8; + return FS.read(stream, slab, buf, nbyte); + } catch (e) { + FS.handleFSError(e); + return -1; + } + }function _fread(ptr, size, nitems, stream) { + // size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fread.html + var bytesToRead = nitems * size; + if (bytesToRead == 0) { + return 0; + } + var bytesRead = 0; + var streamObj = FS.getStreamFromPtr(stream); + if (!streamObj) { + ___setErrNo(ERRNO_CODES.EBADF); + return 0; + } + while (streamObj.ungotten.length && bytesToRead > 0) { + HEAP8[((ptr++)|0)]=streamObj.ungotten.pop(); + bytesToRead--; + bytesRead++; + } + var err = _read(streamObj.fd, ptr, bytesToRead); + if (err == -1) { + if (streamObj) streamObj.error = true; + return 0; + } + bytesRead += err; + if (bytesRead < bytesToRead) streamObj.eof = true; + return Math.floor(bytesRead / size); + } + + function _fwrite(ptr, size, nitems, stream) { + // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html + var bytesToWrite = nitems * size; + if (bytesToWrite == 0) return 0; + var fd = _fileno(stream); + var bytesWritten = _write(fd, ptr, bytesToWrite); + if (bytesWritten == -1) { + var streamObj = FS.getStreamFromPtr(stream); + if (streamObj) streamObj.error = true; + return 0; + } else { + return Math.floor(bytesWritten / size); + } + } + + + function _Sys_ListFiles(directory, ext, filter, numfiles, dironly) { + directory = Pointer_stringify(directory); + ext = Pointer_stringify(ext); + if (ext === '/') { + ext = null; + dironly = true; + } + + // TODO support filter + + var contents; + try { + contents = FS.readdir(directory); + } catch (e) { + HEAP32[((numfiles)>>2)]=0; + return null; + } + + var matches = []; + for (var i = 0; i < contents.length; i++) { + var name = contents[i]; + var stat = FS.stat(PATH.join(directory, name)); + + if (dironly && !FS.isDir(stat.mode)) { + continue; + } + + if ((!ext || name.lastIndexOf(ext) === (name.length - ext.length))) { + matches.push(name); + } + } + + HEAP32[((numfiles)>>2)]=matches.length; + + if (!matches.length) { + return null; + } + + // return a copy of the match list + var list = _Z_Malloc((matches.length + 1) * 4); + + var i; + for (i = 0; i < matches.length; i++) { + var filename = _S_Malloc(matches[i].length + 1); + + writeStringToMemory(matches[i], filename); + + // write the string's pointer back to the main array + HEAP32[(((list)+(i*4))>>2)]=filename; + } + + // add a NULL terminator to the list + HEAP32[(((list)+(i*4))>>2)]=0; + + return list; + } + + function _Sys_FreeFileList(list) { + if (!list) { + return; + } + + var ptr; + + for (var i = 0; (ptr = HEAP32[(((list)+(i*4))>>2)]); i++) { + _Z_Free(ptr); + } + + _Z_Free(list); + } + + function _qsort(base, num, size, cmp) { + if (num == 0 || size == 0) return; + // forward calls to the JavaScript sort method + // first, sort the items logically + var keys = []; + for (var i = 0; i < num; i++) keys.push(i); + keys.sort(function(a, b) { + return Module['dynCall_iii'](cmp, base+a*size, base+b*size); + }); + // apply the sort + var temp = _malloc(num*size); + _memcpy(temp, base, num*size); + for (var i = 0; i < num; i++) { + if (keys[i] == i) continue; // already in place + _memcpy(base+i*size, temp+keys[i]*size, size); + } + _free(temp); + } + + function _Sys_FS_Shutdown(context) { + var name = allocate(intArrayFromString('fs_homepath'), 'i8', ALLOC_STACK); + var fs_homepath = Pointer_stringify(_Cvar_VariableString(name)); + + FS.syncfs(function (err) { + SYSC.FS_Shutdown(Browser.safeCallback(function (err) { + if (err) { + // FIXME cb_free_context(context) + SYSC.Error('fatal', err); + return; + } + + SYSC.ProxyCallback(context); + })); + }); + } + + function _Sys_DefaultHomePath() { + return 0; + } + + function _Sys_FS_Startup(context) { + var name = allocate(intArrayFromString('fs_homepath'), 'i8', ALLOC_STACK); + var fs_homepath = Pointer_stringify(_Cvar_VariableString(name)); + + // mount a persistable filesystem into base + var dir; + try { + dir = FS.mkdir(fs_homepath); + } catch (e) { + if (!(e instanceof FS.ErrnoError) || e.errno !== ERRNO_CODES.EEXIST) { + SYSC.Error('fatal', e.message); + } + } + + try { + FS.mount(IDBFS, {}, fs_homepath); + } catch (e) { + if (!(e instanceof FS.ErrnoError) || e.errno !== ERRNO_CODES.EBUSY) { + SYSC.Error('fatal', e.message); + } + } + + var start = Date.now(); + + FS.syncfs(true, function (err) { + if (err) { + return SYSC.Error('fatal', err.message); + } + + SYSC.Print('initial sync completed in ' + ((Date.now() - start) / 1000).toFixed(2) + ' seconds'); + + SYSC.FS_Startup(Browser.safeCallback(function (err) { + if (err) { + // FIXME cb_free_context(context) + SYSC.Error('fatal', err); + return; + } + + SYSC.ProxyCallback(context); + })); + }); + } + + function _llvm_uadd_with_overflow_i32(x, y) { + x = x>>>0; + y = y>>>0; + return ((asm["setTempRet0"](x+y > 4294967295),(x+y)>>>0)|0); + } + + + function _strerror_r(errnum, strerrbuf, buflen) { + if (errnum in ERRNO_MESSAGES) { + if (ERRNO_MESSAGES[errnum].length > buflen - 1) { + return ___setErrNo(ERRNO_CODES.ERANGE); + } else { + var msg = ERRNO_MESSAGES[errnum]; + writeAsciiToMemory(msg, strerrbuf); + return 0; + } + } else { + return ___setErrNo(ERRNO_CODES.EINVAL); + } + }function _strerror(errnum) { + if (!_strerror.buffer) _strerror.buffer = _malloc(256); + _strerror_r(errnum, _strerror.buffer, 256); + return _strerror.buffer; + } + + function ___errno_location() { + return ___errno_state; + } + + + function _htons(value) { + return ((value & 0xff) << 8) + ((value & 0xff00) >> 8); + }var _ntohs=_htons; + + + + function __inet_pton4_raw(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; + } + + function __inet_pton6_raw(str) { + var words; + var w, offset, z, i; + /* http://home.deds.nl/~aeron/regex/ */ + 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]; + } + // Z placeholder to keep track of zeros when splitting the string on ":" + if (str.indexOf("::") === 0) { + str = str.replace("::", "Z:"); // leading zeros case + } else { + str = str.replace("::", ":Z:"); + } + + if (str.indexOf(".") > 0) { + // parse IPv4 embedded stress + str = str.replace(new RegExp('[.]', 'g'), ":"); + words = str.split(":"); + words[words.length-4] = parseInt(words[words.length-4]) + parseInt(words[words.length-3])*256; + words[words.length-3] = parseInt(words[words.length-2]) + parseInt(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') { + // compressed zeros - write appropriate number of zero words + for (z = 0; z < (8 - words.length+1); z++) { + parts[w+z] = 0; + } + offset = z-1; + } else { + // parse hex to field to 16-bit value and write it in network byte-order + parts[w+offset] = _htons(parseInt(words[w],16)); + } + } else { + // parsed IPv4 words + 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 DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function (name) { + // If the name is already a valid ipv4 / ipv6 address, don't generate a fake one. + var res = __inet_pton4_raw(name); + if (res) { + return name; + } + res = __inet_pton6_raw(name); + if (res) { + return name; + } + + // See if this name is already mapped. + 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 & 0xff) + '.' + (id & 0xff00); + + DNS.address_map.names[addr] = name; + DNS.address_map.addrs[name] = addr; + } + + return addr; + },lookup_addr:function (addr) { + if (DNS.address_map.names[addr]) { + return DNS.address_map.names[addr]; + } + + return null; + }}; + + + var Sockets={BUFFER_SIZE:10240,MAX_BUFFER_SIZE:10485760,nextFd:1,fds:{},nextport:1,maxport:65535,peer:null,connections:{},portmap:{},localAddr:4261412874,addrPool:[33554442,50331658,67108874,83886090,100663306,117440522,134217738,150994954,167772170,184549386,201326602,218103818,234881034]};function __write_sockaddr(sa, family, addr, port) { + switch (family) { + case 2: + addr = __inet_pton4_raw(addr); + HEAP16[((sa)>>1)]=family; + HEAP32[(((sa)+(4))>>2)]=addr; + HEAP16[(((sa)+(2))>>1)]=_htons(port); + break; + case 10: + addr = __inet_pton6_raw(addr); + 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)]=_htons(port); + break; + default: + return { errno: ERRNO_CODES.EAFNOSUPPORT }; + } + // kind of lame, but let's match _read_sockaddr's interface + return {}; + }function _recvfrom(fd, buf, len, flags, addr, addrlen) { + var sock = SOCKFS.getSocket(fd); + if (!sock) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + + // read from the socket + var msg; + try { + msg = sock.sock_ops.recvmsg(sock, len); + } catch (e) { + FS.handleFSError(e); + return -1; + } + + if (!msg) { + // socket is closed + return 0; + } + + // write the source address out + if (addr) { + var res = __write_sockaddr(addr, sock.family, DNS.lookup_name(msg.addr), msg.port); + assert(!res.errno); + } + // write the buffer out + HEAPU8.set(msg.buffer, buf); + + return msg.buffer.byteLength; + } + + + + function __inet_ntop4_raw(addr) { + return (addr & 0xff) + '.' + ((addr >> 8) & 0xff) + '.' + ((addr >> 16) & 0xff) + '.' + ((addr >> 24) & 0xff) + } + + function __inet_ntop6_raw(ints) { + // ref: http://www.ietf.org/rfc/rfc2373.txt - section 2.5.4 + // Format for IPv4 compatible and mapped 128-bit IPv6 Addresses + // 128-bits are split into eight 16-bit words + // stored in network byte order (big-endian) + // | 80 bits | 16 | 32 bits | + // +-----------------------------------------------------------------+ + // | 10 bytes | 2 | 4 bytes | + // +--------------------------------------+--------------------------+ + // + 5 words | 1 | 2 words | + // +--------------------------------------+--------------------------+ + // |0000..............................0000|0000| IPv4 ADDRESS | (compatible) + // +--------------------------------------+----+---------------------+ + // |0000..............................0000|FFFF| IPv4 ADDRESS | (mapped) + // +--------------------------------------+----+---------------------+ + var str = ""; + var word = 0; + var longest = 0; + var lastzero = 0; + var zstart = 0; + var len = 0; + var i = 0; + var parts = [ + ints[0] & 0xffff, + (ints[0] >> 16), + ints[1] & 0xffff, + (ints[1] >> 16), + ints[2] & 0xffff, + (ints[2] >> 16), + ints[3] & 0xffff, + (ints[3] >> 16) + ]; + + // Handle IPv4-compatible, IPv4-mapped, loopback and any/unspecified addresses + + var hasipv4 = true; + var v4part = ""; + // check if the 10 high-order bytes are all zeros (first 5 words) + for (i = 0; i < 5; i++) { + if (parts[i] !== 0) { hasipv4 = false; break; } + } + + if (hasipv4) { + // low-order 32-bits store an IPv4 address (bytes 13 to 16) (last 2 words) + v4part = __inet_ntop4_raw(parts[6] | (parts[7] << 16)); + // IPv4-mapped IPv6 address if 16-bit value (bytes 11 and 12) == 0xFFFF (6th word) + if (parts[5] === -1) { + str = "::ffff:"; + str += v4part; + return str; + } + // IPv4-compatible IPv6 address if 16-bit value (bytes 11 and 12) == 0x0000 (6th word) + if (parts[5] === 0) { + str = "::"; + //special case IPv6 addresses + if(v4part === "0.0.0.0") v4part = ""; // any/unspecified address + if(v4part === "0.0.0.1") v4part = "1";// loopback address + str += v4part; + return str; + } + } + + // Handle all other IPv6 addresses + + // first run to find the longest contiguous zero words + 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) { + // compress contiguous zeros - to produce "::" + if (parts[word] === 0 && word >= zstart && word < (zstart + longest) ) { + if (word === zstart) { + str += ":"; + if (zstart === 0) str += ":"; //leading zeros case + } + continue; + } + } + // converts 16-bit words from big-endian to little-endian before converting to hex string + str += Number(_ntohs(parts[word] & 0xffff)).toString(16); + str += word < 7 ? ":" : ""; + } + return str; + }function __read_sockaddr(sa, salen) { + // family / port offsets are common to both sockaddr_in and sockaddr_in6 + var family = HEAP16[((sa)>>1)]; + var port = _ntohs(HEAP16[(((sa)+(2))>>1)]); + var addr; + + switch (family) { + case 2: + if (salen !== 16) { + return { errno: ERRNO_CODES.EINVAL }; + } + addr = HEAP32[(((sa)+(4))>>2)]; + addr = __inet_ntop4_raw(addr); + break; + case 10: + if (salen !== 28) { + return { errno: ERRNO_CODES.EINVAL }; + } + addr = [ + HEAP32[(((sa)+(8))>>2)], + HEAP32[(((sa)+(12))>>2)], + HEAP32[(((sa)+(16))>>2)], + HEAP32[(((sa)+(20))>>2)] + ]; + addr = __inet_ntop6_raw(addr); + break; + default: + return { errno: ERRNO_CODES.EAFNOSUPPORT }; + } + + return { family: family, addr: addr, port: port }; + }function _sendto(fd, message, length, flags, dest_addr, dest_len) { + var sock = SOCKFS.getSocket(fd); + if (!sock) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + + // read the address and port to send to + var info = __read_sockaddr(dest_addr, dest_len); + if (info.errno) { + ___setErrNo(info.errno); + return -1; + } + var port = info.port; + var addr = DNS.lookup_addr(info.addr) || info.addr; + + // send the message + try { + var slab = HEAP8; + return sock.sock_ops.sendmsg(sock, slab, message, length, addr, port); + } catch (e) { + FS.handleFSError(e); + return -1; + } + } + + function _socket(family, type, protocol) { + var sock = SOCKFS.createSocket(family, type, protocol); + assert(sock.stream.fd < 64); // select() assumes socket fd values are in 0..63 + return sock.stream.fd; + } + + function _ioctl(fd, request, varargs) { + var stream = FS.getStream(fd); + if (!stream) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + var arg = HEAP32[((varargs)>>2)]; + + try { + return FS.ioctl(stream, request, arg); + } catch (e) { + FS.handleFSError(e); + return -1; + } + } + + + function _setsockopt(fd, level, optname, optval, optlen) { + console.log('ignoring setsockopt command'); + return 0; + } + + + function _bind(fd, addrp, addrlen) { + var sock = SOCKFS.getSocket(fd); + if (!sock) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + + var info = __read_sockaddr(addrp, addrlen); + if (info.errno) { + ___setErrNo(info.errno); + return -1; + } + var port = info.port; + var addr = DNS.lookup_addr(info.addr) || info.addr; + + try { + sock.sock_ops.bind(sock, addr, port); + return 0; + } catch (e) { + FS.handleFSError(e); + return -1; + } + } + + function _if_nametoindex(a) { + return 0; + } + + function _gethostbyname(name) { + name = Pointer_stringify(name); + + // generate hostent + var ret = _malloc(20); // XXX possibly leaked, as are others here + var nameBuf = _malloc(name.length+1); + writeStringToMemory(name, nameBuf); + HEAP32[((ret)>>2)]=nameBuf; + var aliasesBuf = _malloc(4); + HEAP32[((aliasesBuf)>>2)]=0; + HEAP32[(((ret)+(4))>>2)]=aliasesBuf; + var afinet = 2; + HEAP32[(((ret)+(8))>>2)]=afinet; + HEAP32[(((ret)+(12))>>2)]=4; + var addrListBuf = _malloc(12); + HEAP32[((addrListBuf)>>2)]=addrListBuf+8; + HEAP32[(((addrListBuf)+(4))>>2)]=0; + HEAP32[(((addrListBuf)+(8))>>2)]=__inet_pton4_raw(DNS.lookup_name(name)); + HEAP32[(((ret)+(16))>>2)]=addrListBuf; + return ret; + } + + function _connect(fd, addrp, addrlen) { + var sock = SOCKFS.getSocket(fd); + if (!sock) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + + var info = __read_sockaddr(addrp, addrlen); + if (info.errno) { + ___setErrNo(info.errno); + return -1; + } + var port = info.port; + var addr = DNS.lookup_addr(info.addr) || info.addr; + + try { + sock.sock_ops.connect(sock, addr, port); + return 0; + } catch (e) { + FS.handleFSError(e); + return -1; + } + } + + + + + var ___DEFAULT_POLLMASK=5;function _select(nfds, readfds, writefds, exceptfds, timeout) { + // readfds are supported, + // writefds checks socket open status + // exceptfds not supported + // timeout is always 0 - fully async + assert(nfds <= 64, 'nfds must be less than or equal to 64'); // fd sets have 64 bits + assert(!exceptfds, 'exceptfds not supported'); + + 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); + + function get(fd, low, high, val) { + return (fd < 32 ? (low & val) : (high & val)); + } + + for (var fd = 0; fd < nfds; fd++) { + var mask = 1 << (fd % 32); + if (!(get(fd, allLow, allHigh, mask))) { + continue; // index isn't in the set + } + + var stream = FS.getStream(fd); + if (!stream) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + + var flags = ___DEFAULT_POLLMASK; + + if (stream.stream_ops.poll) { + flags = stream.stream_ops.poll(stream); + } + + if ((flags & 1) && get(fd, srcReadLow, srcReadHigh, mask)) { + fd < 32 ? (dstReadLow = dstReadLow | mask) : (dstReadHigh = dstReadHigh | mask); + total++; + } + if ((flags & 4) && get(fd, srcWriteLow, srcWriteHigh, mask)) { + fd < 32 ? (dstWriteLow = dstWriteLow | mask) : (dstWriteHigh = dstWriteHigh | mask); + total++; + } + if ((flags & 2) && get(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; + } + + function _gethostname(name, namelen) { + // int gethostname(char *name, size_t namelen); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/gethostname.html + var host = 'emscripten'; + if (typeof window !== 'undefined' && window.location.host) { + host = window.location.host; + } + var length = Math.min(namelen, host.length); + for (var i = 0; i < length; i++) { + HEAP8[(((name)+(i))|0)]=host.charCodeAt(i); + } + if (namelen > length) { + HEAP8[(((name)+(i))|0)]=0; + return 0; + } else { + ___setErrNo(ERRNO_CODES.ENAMETOOLONG); + return -1; + } + } + + + function _htonl(value) { + return ((value & 0xff) << 24) + ((value & 0xff00) << 8) + + ((value & 0xff0000) >>> 8) + ((value & 0xff000000) >>> 24); + }function _getaddrinfo(node, service, hint, out) { + // Note getaddrinfo currently only returns a single addrinfo with ai_next defaulting to NULL. When NULL + // hints are specified or ai_family set to AF_UNSPEC or ai_socktype or ai_protocol set to 0 then we + // really should provide a linked list of suitable addrinfo values. + var addrs = []; + var canon = null; + var addr = 0; + var port = 0; + var flags = 0; + var family = 0; + var type = 0; + var proto = 0; + var ai, last; + + function allocaddrinfo(family, type, proto, canon, addr, port) { + var sa, salen, ai; + var res; + + salen = family === 10 ? + 28 : + 16; + addr = family === 10 ? + __inet_ntop6_raw(addr) : + __inet_ntop4_raw(addr); + sa = _malloc(salen); + res = __write_sockaddr(sa, family, addr, port); + assert(!res.errno); + + ai = _malloc(32); + HEAP32[(((ai)+(4))>>2)]=family; + HEAP32[(((ai)+(8))>>2)]=type; + HEAP32[(((ai)+(12))>>2)]=proto; + if (canon) { + HEAP32[(((ai)+(24))>>2)]=canon; + } + HEAP32[(((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 type or proto are set to zero in hints we should really be returning multiple addrinfo values, but for + // now default to a TCP STREAM socket so we can at least return a sensible addrinfo given NULL hints. + 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) { + // TODO + return -2; + } + if (type !== 0 && type !== 1 && type !== 2) { + return -7; + } + if (family !== 0 && family !== 2 && family !== 10) { + return -6; + } + + if (service) { + service = Pointer_stringify(service); + port = parseInt(service, 10); + + if (isNaN(port)) { + if (flags & 1024) { + return -2; + } + // TODO support resolving well-known service names from: + // http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt + return -8; + } + } + + if (!node) { + if (family === 0) { + family = 2; + } + if ((flags & 1) === 0) { + if (family === 2) { + addr = _htonl(2130706433); + } else { + addr = [0, 0, 0, 1]; + } + } + ai = allocaddrinfo(family, type, proto, null, addr, port); + HEAP32[((out)>>2)]=ai; + return 0; + } + + // + // try as a numeric address + // + node = Pointer_stringify(node); + addr = __inet_pton4_raw(node); + if (addr !== null) { + // incoming node is a valid ipv4 address + if (family === 0 || family === 2) { + family = 2; + } + else if (family === 10 && (flags & 8)) { + addr = [0, 0, _htonl(0xffff), addr]; + family = 10; + } else { + return -2; + } + } else { + addr = __inet_pton6_raw(node); + if (addr !== null) { + // incoming node is a valid ipv6 address + if (family === 0 || family === 10) { + family = 10; + } else { + return -2; + } + } + } + if (addr != null) { + ai = allocaddrinfo(family, type, proto, node, addr, port); + HEAP32[((out)>>2)]=ai; + return 0; + } + if (flags & 4) { + return -2; + } + + // + // try as a hostname + // + // resolve the hostname to a temporary fake address + node = DNS.lookup_name(node); + addr = __inet_pton4_raw(node); + if (family === 0) { + family = 2; + } else if (family === 10) { + addr = [0, 0, _htonl(0xffff), addr]; + } + ai = allocaddrinfo(family, type, proto, null, addr, port); + HEAP32[((out)>>2)]=ai; + return 0; + } + + function _freeaddrinfo(ai) { + var sa = HEAP32[(((ai)+(20))>>2)]; + _free(sa); + _free(ai); + } + + function _getnameinfo(sa, salen, node, nodelen, serv, servlen, flags) { + var info = __read_sockaddr(sa, salen); + if (info.errno) { + return -6; + } + var port = info.port; + var addr = info.addr; + + if (node && nodelen) { + var lookup; + if ((flags & 1) || !(lookup = DNS.lookup_addr(addr))) { + if (flags & 8) { + return -2; + } + } else { + addr = lookup; + } + if (addr.length >= nodelen) { + return -12; + } + writeStringToMemory(addr, node); + } + + if (serv && servlen) { + port = '' + port; + if (port.length > servlen) { + return -12; + } + writeStringToMemory(port, serv); + } + + return 0; + } + + + var GAI_ERRNO_MESSAGES={};function _gai_strerror(val) { + var buflen = 256; + + // On first call to gai_strerror we initialise the buffer and populate the error messages. + if (!_gai_strerror.buffer) { + _gai_strerror.buffer = _malloc(buflen); + + GAI_ERRNO_MESSAGES['0'] = 'Success'; + GAI_ERRNO_MESSAGES['' + -1] = 'Invalid value for \'ai_flags\' field'; + GAI_ERRNO_MESSAGES['' + -2] = 'NAME or SERVICE is unknown'; + GAI_ERRNO_MESSAGES['' + -3] = 'Temporary failure in name resolution'; + GAI_ERRNO_MESSAGES['' + -4] = 'Non-recoverable failure in name res'; + GAI_ERRNO_MESSAGES['' + -6] = '\'ai_family\' not supported'; + GAI_ERRNO_MESSAGES['' + -7] = '\'ai_socktype\' not supported'; + GAI_ERRNO_MESSAGES['' + -8] = 'SERVICE not supported for \'ai_socktype\''; + GAI_ERRNO_MESSAGES['' + -10] = 'Memory allocation failure'; + GAI_ERRNO_MESSAGES['' + -11] = 'System error returned in \'errno\''; + GAI_ERRNO_MESSAGES['' + -12] = 'Argument buffer overflow'; + } + + var msg = 'Unknown error'; + + if (val in GAI_ERRNO_MESSAGES) { + if (GAI_ERRNO_MESSAGES[val].length > buflen - 1) { + msg = 'Message too long'; // EMSGSIZE message. This should never occur given the GAI_ERRNO_MESSAGES above. + } else { + msg = GAI_ERRNO_MESSAGES[val]; + } + } + + writeAsciiToMemory(msg, _gai_strerror.buffer); + return _gai_strerror.buffer; + } + + + var AL={contexts:[],currentContext:null,stringCache:{},alcStringCache:{},QUEUE_INTERVAL:25,QUEUE_LOOKAHEAD:100,updateSources:function updateSources(context) { + for (var i = 0; i < context.src.length; i++) { + AL.updateSource(context.src[i]); + } + },updateSource:function updateSource(src) { + if (src.state !== 0x1012 /* AL_PLAYING */) { + return; + } + + var currentTime = AL.currentContext.ctx.currentTime; + var startTime = src.bufferPosition; + + for (var i = src.buffersPlayed; i < src.queue.length; i++) { + var entry = src.queue[i]; + + var startOffset = startTime - currentTime; + var endTime = startTime + entry.buffer.duration; + + // Clean up old buffers. + if (currentTime >= endTime) { + // Update our location in the queue. + src.bufferPosition = endTime; + src.buffersPlayed = i + 1; + + // Stop / restart the source when we hit the end. + if (src.buffersPlayed >= src.queue.length) { + if (src.loop) { + AL.setSourceState(src, 0x1012 /* AL_PLAYING */); + } else { + AL.setSourceState(src, 0x1014 /* AL_STOPPED */); + } + } + } + // Process all buffers that'll be played before the next tick. + else if (startOffset < (AL.QUEUE_LOOKAHEAD / 1000) && !entry.src) { + // If the start offset is negative, we need to offset the actual buffer. + var offset = Math.abs(Math.min(startOffset, 0)); + + entry.src = AL.currentContext.ctx.createBufferSource(); + entry.src.buffer = entry.buffer; + entry.src.connect(src.gain); + entry.src.start(startTime, offset); + + } + + startTime = endTime; + } + },setSourceState:function setSourceState(src, state) { + if (state === 0x1012 /* AL_PLAYING */) { + if (src.state !== 0x1013 /* AL_PAUSED */) { + src.state = 0x1012 /* AL_PLAYING */; + // Reset our position. + src.bufferPosition = AL.currentContext.ctx.currentTime; + src.buffersPlayed = 0; + } else { + src.state = 0x1012 /* AL_PLAYING */; + // Use the current offset from src.bufferPosition to resume at the correct point. + src.bufferPosition = AL.currentContext.ctx.currentTime - src.bufferPosition; + } + AL.stopSourceQueue(src); + AL.updateSource(src); + } else if (state === 0x1013 /* AL_PAUSED */) { + if (src.state === 0x1012 /* AL_PLAYING */) { + src.state = 0x1013 /* AL_PAUSED */; + // Store off the current offset to restore with on resume. + src.bufferPosition = AL.currentContext.ctx.currentTime - src.bufferPosition; + AL.stopSourceQueue(src); + } + } else if (state === 0x1014 /* AL_STOPPED */) { + if (src.state !== 0x1011 /* AL_INITIAL */) { + src.state = 0x1014 /* AL_STOPPED */; + src.buffersPlayed = src.queue.length; + AL.stopSourceQueue(src); + } + } else if (state == 0x1011 /* AL_INITIAL */) { + if (src.state !== 0x1011 /* AL_INITIAL */) { + src.state = 0x1011 /* AL_INITIAL */; + src.bufferPosition = 0; + src.buffersPlayed = 0; + } + } + },stopSourceQueue:function stopSourceQueue(src) { + for (var i = 0; i < src.queue.length; i++) { + var entry = src.queue[i]; + if (entry.src) { + entry.src.stop(0); + entry.src = null; + } + } + }};function _alcIsExtensionPresent(device, extName) { + return 0; + } + + function _alcGetString(device, param) { + if (AL.alcStringCache[param]) return AL.alcStringCache[param]; + var ret; + switch (param) { + case 0 /* ALC_NO_ERROR */: + ret = 'No Error'; + break; + case 0xA001 /* ALC_INVALID_DEVICE */: + ret = 'Invalid Device'; + break; + case 0xA002 /* ALC_INVALID_CONTEXT */: + ret = 'Invalid Context'; + break; + case 0xA003 /* ALC_INVALID_ENUM */: + ret = 'Invalid Enum'; + break; + case 0xA004 /* ALC_INVALID_VALUE */: + ret = 'Invalid Value'; + break; + case 0xA005 /* ALC_OUT_OF_MEMORY */: + ret = 'Out of Memory'; + break; + case 0x1004 /* ALC_DEFAULT_DEVICE_SPECIFIER */: + if (typeof(AudioContext) == "function" || + typeof(webkitAudioContext) == "function") { + ret = 'Device'; + } else { + return 0; + } + break; + case 0x1005 /* ALC_DEVICE_SPECIFIER */: + if (typeof(AudioContext) == "function" || + typeof(webkitAudioContext) == "function") { + ret = 'Device\0'; + } else { + ret = '\0'; + } + break; + case 0x311 /* ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER */: + return 0; + break; + case 0x310 /* ALC_CAPTURE_DEVICE_SPECIFIER */: + ret = '\0' + break; + case 0x1006 /* ALC_EXTENSIONS */: + if (!device) { + AL.currentContext.err = 0xA001 /* ALC_INVALID_DEVICE */; + return 0; + } + ret = ''; + break; + default: + AL.currentContext.err = 0xA003 /* ALC_INVALID_ENUM */; + return 0; + } + + ret = allocate(intArrayFromString(ret), 'i8', ALLOC_NORMAL); + + AL.alcStringCache[param] = ret; + + return ret; + } + + function _alcOpenDevice(deviceName) { + if (typeof(AudioContext) == "function" || + typeof(webkitAudioContext) == "function") { + return 1; // non-null pointer -- we just simulate one device + } else { + return 0; + } + } + + + var _updateSources=undefined;function _alcCreateContext(device, attrList) { + if (device != 1) { + return 0; + } + + if (attrList) { + return 0; + } + + var ctx; + try { + ctx = new AudioContext(); + } catch (e) { + try { + ctx = new webkitAudioContext(); + } catch (e) {} + } + + if (ctx) { + var gain = ctx.createGain(); + gain.connect(ctx.destination); + var context = { + ctx: ctx, + err: 0, + src: [], + buf: [], + interval: setInterval(function() { AL.updateSources(context); }, AL.QUEUE_INTERVAL), + gain: gain + }; + AL.contexts.push(context); + return AL.contexts.length; + } else { + return 0; + } + } + + function _alcCloseDevice(device) { + // Stop playback, etc + } + + function _alcMakeContextCurrent(context) { + if (context == 0) { + AL.currentContext = null; + return 0; + } else { + AL.currentContext = AL.contexts[context - 1]; + return 1; + } + } + + function _alDistanceModel(model) { + if (model !== 0 /* AL_NONE */) { + } + } + + function _alDopplerFactor(value) { + } + + function _alDopplerVelocity(value) { + } + + function _alGetString(param) { + if (AL.stringCache[param]) return AL.stringCache[param]; + var ret; + switch (param) { + case 0 /* AL_NO_ERROR */: + ret = 'No Error'; + break; + case 0xA001 /* AL_INVALID_NAME */: + ret = 'Invalid Name'; + break; + case 0xA002 /* AL_INVALID_ENUM */: + ret = 'Invalid Enum'; + break; + case 0xA003 /* AL_INVALID_VALUE */: + ret = 'Invalid Value'; + break; + case 0xA004 /* AL_INVALID_OPERATION */: + ret = 'Invalid Operation'; + break; + case 0xA005 /* AL_OUT_OF_MEMORY */: + ret = 'Out of Memory'; + break; + case 0xB001 /* AL_VENDOR */: + ret = 'Emscripten'; + break; + case 0xB002 /* AL_VERSION */: + ret = '1.1'; + break; + case 0xB003 /* AL_RENDERER */: + ret = 'WebAudio'; + break; + case 0xB004 /* AL_EXTENSIONS */: + ret = ''; + break; + default: + AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */; + return 0; + } + + ret = allocate(intArrayFromString(ret), 'i8', ALLOC_NORMAL); + + AL.stringCache[param] = ret; + + return ret; + } + + function _alBufferData(buffer, format, data, size, freq) { + if (!AL.currentContext) { + return; + } + if (buffer > AL.currentContext.buf.length) { + return; + } + var channels, bytes; + switch (format) { + case 0x1100 /* AL_FORMAT_MONO8 */: + bytes = 1; + channels = 1; + break; + case 0x1101 /* AL_FORMAT_MONO16 */: + bytes = 2; + channels = 1; + break; + case 0x1102 /* AL_FORMAT_STEREO8 */: + bytes = 1; + channels = 2; + break; + case 0x1103 /* AL_FORMAT_STEREO16 */: + bytes = 2; + channels = 2; + break; + default: + return; + } + try { + AL.currentContext.buf[buffer - 1] = AL.currentContext.ctx.createBuffer(channels, size / (bytes * channels), freq); + AL.currentContext.buf[buffer - 1].bytesPerSample = bytes; + } catch (e) { + AL.currentContext.err = 0xA003 /* AL_INVALID_VALUE */; + return; + } + var buf = new Array(channels); + for (var i = 0; i < channels; ++i) { + buf[i] = AL.currentContext.buf[buffer - 1].getChannelData(i); + } + for (var i = 0; i < size / (bytes * channels); ++i) { + for (var j = 0; j < channels; ++j) { + switch (bytes) { + case 1: + var val = HEAP8[(((data)+(i*channels+j))|0)] & 0xff; // unsigned + buf[j][i] = -1.0 + val * (2/256); + break; + case 2: + var val = HEAP16[(((data)+(2*(i*channels+j)))>>1)]; + buf[j][i] = val/32768; + break; + } + } + } + } + + function _alGetError() { + if (!AL.currentContext) { + return 0xA004 /* AL_INVALID_OPERATION */; + } else { + // Reset error on get. + var err = AL.currentContext.err; + AL.currentContext.err = 0 /* AL_NO_ERROR */; + return err; + } + } + + function _alDeleteBuffers(count, buffers) + { + if (!AL.currentContext) { + return; + } + if (count > AL.currentContext.buf.length) { + AL.currentContext.err = 0xA003 /* AL_INVALID_VALUE */; + return; + } + + for (var i = 0; i < count; ++i) { + var bufferIdx = HEAP32[(((buffers)+(i*4))>>2)] - 1; + + // Make sure the buffer index is valid. + if (bufferIdx >= AL.currentContext.buf.length || !AL.currentContext.buf[bufferIdx]) { + AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */; + return; + } + + // Make sure the buffer is no longer in use. + var buffer = AL.currentContext.buf[bufferIdx]; + for (var j = 0; j < AL.currentContext.src.length; ++j) { + var src = AL.currentContext.src[j]; + if (!src) { + continue; + } + for (var k = 0; k < src.queue.length; k++) { + if (buffer === src.queue[k].buffer) { + AL.currentContext.err = 0xA004 /* AL_INVALID_OPERATION */; + return; + } + } + } + } + + for (var i = 0; i < count; ++i) { + var bufferIdx = HEAP32[(((buffers)+(i*4))>>2)] - 1; + delete AL.currentContext.buf[bufferIdx]; + } + } + + function _alGenBuffers(count, buffers) { + if (!AL.currentContext) { + return; + } + for (var i = 0; i < count; ++i) { + AL.currentContext.buf.push(null); + HEAP32[(((buffers)+(i*4))>>2)]=AL.currentContext.buf.length; + } + } + + + var _updateSource=undefined;function _alGetSourcei(source, param, value) { + if (!AL.currentContext) { + return; + } + var src = AL.currentContext.src[source - 1]; + if (!src) { + AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */; + return; + } + + // Being that we have no way to receive end events from buffer nodes, + // we currently proccess and update a source's buffer queue every + // ~QUEUE_INTERVAL milliseconds. However, this interval is not precise, + // so we also forcefully update the source when alGetSourcei is queried + // to aid in the common scenario of application calling alGetSourcei(AL_BUFFERS_PROCESSED) + // to recycle buffers. + AL.updateSource(src); + + switch (param) { + case 0x202 /* AL_SOURCE_RELATIVE */: + HEAP32[((value)>>2)]=src.panner ? 1 : 0; + break; + case 0x1001 /* AL_CONE_INNER_ANGLE */: + HEAP32[((value)>>2)]=src.coneInnerAngle; + break; + case 0x1002 /* AL_CONE_OUTER_ANGLE */: + HEAP32[((value)>>2)]=src.coneOuterAngle; + break; + case 0x1009 /* AL_BUFFER */: + if (!src.queue.length) { + HEAP32[((value)>>2)]=0; + } else { + // Find the first unprocessed buffer. + var buffer = src.queue[src.buffersPlayed].buffer; + // Return its index. + for (var i = 0; i < AL.currentContext.buf.length; ++i) { + if (buffer == AL.currentContext.buf[i]) { + HEAP32[((value)>>2)]=i+1; + return; + } + } + HEAP32[((value)>>2)]=0; + } + break; + case 0x1010 /* AL_SOURCE_STATE */: + HEAP32[((value)>>2)]=src.state; + break; + case 0x1015 /* AL_BUFFERS_QUEUED */: + HEAP32[((value)>>2)]=src.queue.length + break; + case 0x1016 /* AL_BUFFERS_PROCESSED */: + if (src.loop) { + HEAP32[((value)>>2)]=0 + } else { + HEAP32[((value)>>2)]=src.buffersPlayed + } + break; + default: + AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */; + break; + } + } + + function _alSourceUnqueueBuffers(source, count, buffers) { + if (!AL.currentContext) { + return; + } + var src = AL.currentContext.src[source - 1]; + if (!src) { + AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */; + return; + } + + if (count > src.buffersPlayed) { + AL.currentContext.err = 0xA003 /* AL_INVALID_VALUE */; + return; + } + + for (var i = 0; i < count; i++) { + var entry = src.queue.shift(); + // Write the buffers index out to the return list. + for (var j = 0; j < AL.currentContext.buf.length; j++) { + var b = AL.currentContext.buf[j]; + if (b && b == entry.buffer) { + HEAP32[(((buffers)+(i*4))>>2)]=j+1; + break; + } + } + src.buffersPlayed--; + } + + AL.updateSource(src); + } + + function _alSourceQueueBuffers(source, count, buffers) { + if (!AL.currentContext) { + return; + } + var src = AL.currentContext.src[source - 1]; + if (!src) { + AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */; + return; + } + for (var i = 0; i < count; ++i) { + var bufferIdx = HEAP32[(((buffers)+(i*4))>>2)]; + if (bufferIdx > AL.currentContext.buf.length) { + AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */; + return; + } + } + + for (var i = 0; i < count; ++i) { + var bufferIdx = HEAP32[(((buffers)+(i*4))>>2)]; + var buffer = AL.currentContext.buf[bufferIdx - 1]; + src.queue.push({ buffer: buffer, src: null }); + } + + AL.updateSource(src); + } + + + var _setSourceState=undefined;function _alSourcePlay(source) { + if (!AL.currentContext) { + return; + } + var src = AL.currentContext.src[source - 1]; + if (!src) { + AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */; + return; + } + AL.setSourceState(src, 0x1012 /* AL_PLAYING */); + } + + function _alSourcei(source, param, value) { + if (!AL.currentContext) { + return; + } + var src = AL.currentContext.src[source - 1]; + if (!src) { + AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */; + return; + } + switch (param) { + case 0x1001 /* AL_CONE_INNER_ANGLE */: + src.coneInnerAngle = value; + break; + case 0x1002 /* AL_CONE_OUTER_ANGLE */: + src.coneOuterAngle = value; + break; + case 0x1007 /* AL_LOOPING */: + src.loop = (value === 1 /* AL_TRUE */); + break; + case 0x1009 /* AL_BUFFER */: + var buffer = AL.currentContext.buf[value - 1]; + if (value == 0) { + src.queue = []; + } else { + src.queue = [{ buffer: buffer }]; + } + AL.updateSource(src); + break; + case 0x202 /* AL_SOURCE_RELATIVE */: + if (value === 1 /* AL_TRUE */) { + if (src.panner) { + src.panner = null; + + // Disconnect from the panner. + src.gain.disconnect(); + + src.gain.connect(AL.currentContext.ctx.destination); + } + } else if (value === 0 /* AL_FALSE */) { + if (!src.panner) { + var panner = src.panner = AL.currentContext.ctx.createPanner(); + panner.panningModel = "equalpower"; + panner.distanceModel = "linear"; + panner.refDistance = src.refDistance; + panner.maxDistance = src.maxDistance; + panner.rolloffFactor = src.rolloffFactor; + panner.setPosition(src.position[0], src.position[1], src.position[2]); + //panner.setVelocity(src.velocity[0], src.velocity[1], src.velocity[2]); + panner.connect(AL.currentContext.ctx.destination); + + // Disconnect from the default source. + src.gain.disconnect(); + + src.gain.connect(panner); + } + } else { + AL.currentContext.err = 0xA003 /* AL_INVALID_VALUE */; + } + break; + default: + AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */; + break; + } + } + + function _alSourceStop(source) { + if (!AL.currentContext) { + return; + } + var src = AL.currentContext.src[source - 1]; + if (!src) { + AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */; + return; + } + AL.setSourceState(src, 0x1014 /* AL_STOPPED */); + } + + function _alGetSourcef(source, param, value) { + if (!AL.currentContext) { + return; + } + var src = AL.currentContext.src[source - 1]; + if (!src) { + AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */; + return; + } + switch (param) { + // case 0x1003 /* AL_PITCH */: + // break; + case 0x100A /* AL_GAIN */: + HEAPF32[((value)>>2)]=src.gain.gain.value + break; + // case 0x100D /* AL_MIN_GAIN */: + // break; + // case 0x100E /* AL_MAX_GAIN */: + // break; + case 0x1023 /* AL_MAX_DISTANCE */: + HEAPF32[((value)>>2)]=src.maxDistance + break; + case 0x1021 /* AL_ROLLOFF_FACTOR */: + HEAPF32[((value)>>2)]=src.rolloffFactor + break; + case 0x1022 /* AL_CONE_OUTER_GAIN */: + HEAPF32[((value)>>2)]=src.coneOuterGain + break; + case 0x1001 /* AL_CONE_INNER_ANGLE */: + HEAPF32[((value)>>2)]=src.coneInnerAngle + break; + case 0x1002 /* AL_CONE_OUTER_ANGLE */: + HEAPF32[((value)>>2)]=src.coneOuterAngle + break; + case 0x1020 /* AL_REFERENCE_DISTANCE */: + HEAPF32[((value)>>2)]=src.refDistance + break; + // case 0x1024 /* AL_SEC_OFFSET */: + // break; + // case 0x1025 /* AL_SAMPLE_OFFSET */: + // break; + // case 0x1026 /* AL_BYTE_OFFSET */: + // break; + default: + AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */; + break; + } + } + + function _alSourcef(source, param, value) { + if (!AL.currentContext) { + return; + } + var src = AL.currentContext.src[source - 1]; + if (!src) { + AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */; + return; + } + switch (param) { + case 0x1003 /* AL_PITCH */: + break; + case 0x100A /* AL_GAIN */: + src.gain.gain.value = value; + break; + // case 0x100D /* AL_MIN_GAIN */: + // break; + // case 0x100E /* AL_MAX_GAIN */: + // break; + case 0x1023 /* AL_MAX_DISTANCE */: + src.maxDistance = value; + break; + case 0x1021 /* AL_ROLLOFF_FACTOR */: + src.rolloffFactor = value; + break; + case 0x1022 /* AL_CONE_OUTER_GAIN */: + src.coneOuterGain = value; + break; + case 0x1001 /* AL_CONE_INNER_ANGLE */: + src.coneInnerAngle = value; + break; + case 0x1002 /* AL_CONE_OUTER_ANGLE */: + src.coneOuterAngle = value; + break; + case 0x1020 /* AL_REFERENCE_DISTANCE */: + src.refDistance = value; + break; + default: + AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */; + break; + } + } + + + function _fmod(x, y) { + return x % y; + }var _fmodf=_fmod; + + + function _alSource3f(source, param, v1, v2, v3) { + if (!AL.currentContext) { + return; + } + var src = AL.currentContext.src[source - 1]; + if (!src) { + AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */; + return; + } + switch (param) { + case 0x1004 /* AL_POSITION */: + src.position = [v1, v2, v3]; + break; + case 0x1005 /* AL_DIRECTION */: + src.direction = [v1, v2, v3]; + break; + case 0x1006 /* AL_VELOCITY */: + src.velocity = [v1, v2, v3]; + break; + default: + AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */; + break; + } + }function _alSourcefv(source, param, value) { + _alSource3f(source, param, + HEAPF32[((value)>>2)], + HEAPF32[(((value)+(4))>>2)], + HEAPF32[(((value)+(8))>>2)]); + } + + function _alListenerfv(param, values) { + if (!AL.currentContext) { + return; + } + switch (param) { + case 0x1004 /* AL_POSITION */: + var x = HEAPF32[((values)>>2)]; + var y = HEAPF32[(((values)+(4))>>2)]; + var z = HEAPF32[(((values)+(8))>>2)]; + AL.currentContext.ctx.listener._position = [x, y, z]; + AL.currentContext.ctx.listener.setPosition(x, y, z); + break; + case 0x1006 /* AL_VELOCITY */: + var x = HEAPF32[((values)>>2)]; + var y = HEAPF32[(((values)+(4))>>2)]; + var z = HEAPF32[(((values)+(8))>>2)]; + AL.currentContext.ctx.listener._velocity = [x, y, z]; + //AL.currentContext.ctx.listener.setVelocity(x, y, z); + break; + case 0x100F /* AL_ORIENTATION */: + var x = HEAPF32[((values)>>2)]; + var y = HEAPF32[(((values)+(4))>>2)]; + var z = HEAPF32[(((values)+(8))>>2)]; + var x2 = HEAPF32[(((values)+(12))>>2)]; + var y2 = HEAPF32[(((values)+(16))>>2)]; + var z2 = HEAPF32[(((values)+(20))>>2)]; + AL.currentContext.ctx.listener._orientation = [x, y, z, x2, y2, z2]; + AL.currentContext.ctx.listener.setOrientation(x, y, z, x2, y2, z2); + break; + default: + AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */; + break; + } + } + + + function _alcDestroyContext(context) { + // Stop playback, etc + clearInterval(AL.contexts[context - 1].interval); + } + + function _alDeleteSources(count, sources) { + if (!AL.currentContext) { + return; + } + for (var i = 0; i < count; ++i) { + var sourceIdx = HEAP32[(((sources)+(i*4))>>2)] - 1; + delete AL.currentContext.src[sourceIdx]; + } + } + + function _alGenSources(count, sources) { + if (!AL.currentContext) { + return; + } + for (var i = 0; i < count; ++i) { + var gain = AL.currentContext.ctx.createGain(); + gain.connect(AL.currentContext.gain); + AL.currentContext.src.push({ + state: 0x1011 /* AL_INITIAL */, + queue: [], + loop: false, + get refDistance() { + return this._refDistance || 1; + }, + set refDistance(val) { + this._refDistance = val; + if (this.panner) this.panner.refDistance = val; + }, + get maxDistance() { + return this._maxDistance || 10000; + }, + set maxDistance(val) { + this._maxDistance = val; + if (this.panner) this.panner.maxDistance = val; + }, + get rolloffFactor() { + return this._rolloffFactor || 1; + }, + set rolloffFactor(val) { + this._rolloffFactor = val; + if (this.panner) this.panner.rolloffFactor = val; + }, + get position() { + return this._position || [0, 0, 0]; + }, + set position(val) { + this._position = val; + if (this.panner) this.panner.setPosition(val[0], val[1], val[2]); + }, + get velocity() { + return this._velocity || [0, 0, 0]; + }, + set velocity(val) { + this._velocity = val; + //if (this.panner) this.panner.setVelocity(val[0], val[1], val[2]); + }, + get direction() { + return this._direction || [0, 0, 0]; + }, + set direction(val) { + this._direction = val; + if (this.panner) this.panner.setOrientation(val[0], val[1], val[2]); + }, + get coneOuterGain() { + return this._coneOuterGain || 0.0; + }, + set coneOuterGain(val) { + this._coneOuterGain = val; + if (this.panner) this.panner.coneOuterGain = val; + }, + get coneInnerAngle() { + return this._coneInnerAngle || 360.0; + }, + set coneInnerAngle(val) { + this._coneInnerAngle = val; + if (this.panner) this.panner.coneInnerAngle = val; + }, + get coneOuterAngle() { + return this._coneOuterAngle || 360.0; + }, + set coneOuterAngle(val) { + this._coneOuterAngle = val; + if (this.panner) this.panner.coneOuterAngle = val; + }, + gain: gain, + panner: null, + buffersPlayed: 0, + bufferPosition: 0 + }); + HEAP32[(((sources)+(i*4))>>2)]=AL.currentContext.src.length; + } + } + + var _acos=Math_acos; + + function _llvm_bswap_i16(x) { + return ((x&0xff)<<8) | ((x>>8)&0xff); + } + + function _llvm_bswap_i32(x) { + return ((x&0xff)<<24) | (((x>>8)&0xff)<<16) | (((x>>16)&0xff)<<8) | (x>>>24); + } + + + function _open(path, oflag, varargs) { + // int open(const char *path, int oflag, ...); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/open.html + var mode = HEAP32[((varargs)>>2)]; + path = Pointer_stringify(path); + try { + var stream = FS.open(path, oflag, mode); + return stream.fd; + } catch (e) { + FS.handleFSError(e); + return -1; + } + }function _fopen(filename, mode) { + // FILE *fopen(const char *restrict filename, const char *restrict mode); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fopen.html + var flags; + mode = Pointer_stringify(mode); + if (mode[0] == 'r') { + if (mode.indexOf('+') != -1) { + flags = 2; + } else { + flags = 0; + } + } else if (mode[0] == 'w') { + if (mode.indexOf('+') != -1) { + flags = 2; + } else { + flags = 1; + } + flags |= 64; + flags |= 512; + } else if (mode[0] == 'a') { + if (mode.indexOf('+') != -1) { + flags = 2; + } else { + flags = 1; + } + flags |= 64; + flags |= 1024; + } else { + ___setErrNo(ERRNO_CODES.EINVAL); + return 0; + } + var fd = _open(filename, flags, allocate([0x1FF, 0, 0, 0], 'i32', ALLOC_STACK)); // All creation permissions. + return fd === -1 ? 0 : FS.getPtrForStream(FS.getStream(fd)); + } + + function _ferror(stream) { + // int ferror(FILE *stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/ferror.html + stream = FS.getStreamFromPtr(stream); + return Number(stream && stream.error); + } + + + var VM={vmHeader_t:{__size__:36,vmMagic:0,instructionCount:4,codeOffset:8,codeLength:12,dataOffset:16,dataLength:20,litLength:24,bssLength:28,jtrgLength:32},vm_t:{__size__:156,programStack:0,systemCall:4,name:8,searchPath:72,dllHandle:76,entryPoint:80,destroy:84,currentlyInterpreting:88,compiled:92,codeBase:96,entryOfs:100,codeLength:104,instructionPointers:108,instructionCount:112,dataBase:116,dataMask:120,stackBottom:124,numSymbols:128,symbols:132,callLevel:136,breakFunction:140,breakCount:144,jumpTableTargets:148,numJumpTableTargets:152},vms:[],SUSPENDED:3735928559,MAX_VMMAIN_ARGS:13,ENTRY_FRAME_SIZE:60,OPSTACK_SIZE:1024,TYPE:{F4:1,I4:2,U4:3},Constant4:function (state) { + var v = (HEAP8[(((state.codeBase)+(state.pc))|0)] & 0xff) | + ((HEAP8[(((state.codeBase)+(state.pc+1))|0)] & 0xff) << 8) | + ((HEAP8[(((state.codeBase)+(state.pc+2))|0)] & 0xff) << 16) | + ((HEAP8[(((state.codeBase)+(state.pc+3))|0)] & 0xff) << 24 ); + state.pc += 4; + return v; + },Constant1:function (state) { + var v = HEAP8[(((state.codeBase)+(state.pc))|0)]; + state.pc += 1; + return v; + },FindLabels:function (state) { + var labels = {}; + + var op, lastop; + for (state.instr = 0, state.pc = 0; state.instr < state.instructionCount; state.instr++) { + op = HEAP8[(((state.codeBase)+(state.pc))|0)]; + + state.pc++; + + // create a label after each unconditional branching operator + // FIXME this is a bit excessive + if (lastop === 5 /* OP_CALL */ || lastop === 10 /* OP_JUMP */ || lastop === 7 /* OP_POP */ || lastop === 6 /* OP_PUSH */) { + labels[state.instr] = true; + } + + switch (op) { + case 3 /* OP_ENTER */: + case 4 /* OP_LEAVE */: + case 9 /* OP_LOCAL */: + case 34 /* OP_BLOCK_COPY */: + VM.Constant4(state); + break; + + case 8 /* OP_CONST */: + var value = VM.Constant4(state); + var nextop = HEAP8[(((state.codeBase)+(state.pc))|0)]; + if (nextop === 10 /* OP_JUMP */) { + labels[value] = true; + } + break; + + case 33 /* OP_ARG */: + VM.Constant1(state); + break; + + case 11 /* OP_EQ */: + case 12 /* OP_NE */: + case 13 /* OP_LTI */: + case 14 /* OP_LEI */: + case 15 /* OP_GTI */: + case 16 /* OP_GEI */: + case 17 /* OP_LTU */: + case 18 /* OP_LEU */: + case 19 /* OP_GTU */: + case 20 /* OP_GEU */: + case 21 /* OP_EQF */: + case 22 /* OP_NEF */: + case 23 /* OP_LTF */: + case 24 /* OP_LEF */: + case 25 /* OP_GTF */: + case 26 /* OP_GEF */: + // create labels for any explicit branch destination + labels[VM.Constant4(state)] = true; + break; + + default: + break; + } + + lastop = op; + } + + return labels; + },CompileModule:function (name, instructionCount, codeBase, dataBase) { + var fs_game = Pointer_stringify(_Cvar_VariableString(allocate(intArrayFromString('fs_game'), 'i8', ALLOC_STACK))); + + var state = { + name: name, + instructionCount: instructionCount, + codeBase: codeBase, + dataBase: dataBase, + pc: 0, + instr: 0 + }; + + var labels = VM.FindLabels(state); + var fninstr = 0; + var eof = false; + var ab = new ArrayBuffer(4); + var i32 = new Int32Array(ab); + var u32 = new Uint32Array(ab); + var f32 = new Float32Array(ab); + var callargs = []; + + // + // expressions + // + var exprStack = []; + + function PUSH_EXPR(expr) { + exprStack.push(expr); + } + + function POP_EXPR(type) { + return exprStack.pop(); + } + + function CAST_STR(type, expr) { + switch (type) { + case VM.TYPE.F4: + return '+(' + expr + ')'; + + case VM.TYPE.I4: + return '(' + expr + ')|0'; + + case VM.TYPE.U4: + return '(' + expr + ')>>>0'; + + default: + throw new Error('unexpected data type'); + } + } + + function BITCAST_STR(type, expr) { + if (type === expr.type) { + return expr.toString(); + } + + if (expr.type === VM.TYPE.I4 && type === VM.TYPE.F4) { + if (expr instanceof CNST) { + i32[0] = expr.value; + return CAST_STR(type, f32[0]); + } + + if (expr instanceof LOAD4) { + // by default, every pointer value is loaded from HEAP32 + // don't use the scratch array if we can load directly from HEAPF32 + return CAST_STR(type, 'HEAPF32[((' + OFFSET_STR(expr.addr) + ')>>2)]'); + } + + return CAST_STR(type, 'i32[0] = ' + expr + ', f32[0]'); + } else if (expr.type === VM.TYPE.U4 && type === VM.TYPE.F4) { + return CAST_STR(type, 'u32[0] = ' + expr + ', f32[0]'); + } else if (expr.type === VM.TYPE.F4 && type === VM.TYPE.I4) { + return CAST_STR(type, 'f32[0] = ' + expr + ', i32[0]'); + } else if (expr.type === VM.TYPE.U4 && type === VM.TYPE.I4) { + return CAST_STR(type, expr.toString()); + } else if (expr.type === VM.TYPE.F4 && type === VM.TYPE.U4) { + return CAST_STR(type, 'f32[0] = ' + expr + ', u32[0]'); + } else if (expr.type === VM.TYPE.I4 && type === VM.TYPE.U4) { + return CAST_STR(type, expr.toString()); + } else { + throw new Error('unsupported bitcast operands ' + expr.type + ' ' + type); + } + } + + function OFFSET_STR(expr) { + if (expr instanceof CNST) { + return state.dataBase + expr.value; + } else if (expr instanceof LOCAL) { + return state.dataBase + expr.offset + '+STACKTOP'; + } + return state.dataBase + '+' + expr; + } + + function CNST(value) { + var ctor = CNST.ctor; + if (!ctor) { + ctor = CNST.ctor = function (value) { + this.type = VM.TYPE.I4; + this.value = value; + }; + ctor.prototype = Object.create(CNST.prototype); + ctor.prototype.toString = function () { + return this.value.toString(); + }; + } + return new ctor(value); + } + + function LOCAL(offset) { + var ctor = LOCAL.ctor; + if (!ctor) { + ctor = LOCAL.ctor = function (offset) { + this.type = VM.TYPE.I4; + this.offset = offset; + }; + ctor.prototype = Object.create(LOCAL.prototype); + ctor.prototype.toString = function () { + return 'STACKTOP+' + this.offset.toString(); + }; + } + return new ctor(offset); + } + + function LOAD4(addr) { + var ctor = LOAD4.ctor; + if (!ctor) { + ctor = LOAD4.ctor = function (addr) { + this.type = VM.TYPE.I4; + this.addr = addr; + }; + ctor.prototype = Object.create(LOAD4.prototype); + ctor.prototype.toString = function () { + return 'HEAP32[((' + OFFSET_STR(this.addr) + ')>>2)]'; + }; + } + return new ctor(addr); + } + + function LOAD2(addr) { + var ctor = LOAD2.ctor; + if (!ctor) { + ctor = LOAD2.ctor = function (addr) { + this.type = VM.TYPE.I4; + this.addr = addr; + }; + ctor.prototype = Object.create(LOAD2.prototype); + ctor.prototype.toString = function () { + // TODO add makeGetValue u16 + return 'HEAPU16[' + OFFSET_STR(this.addr) + ' >> 1]'; + }; + } + return new ctor(addr); + } + + function LOAD1(addr) { + var ctor = LOAD1.ctor; + if (!ctor) { + ctor = LOAD1.ctor = function (addr) { + this.type = VM.TYPE.I4; + this.addr = addr; + }; + ctor.prototype = Object.create(LOAD1.prototype); + ctor.prototype.toString = function () { + // TODO add makeGetValue u8 + return 'HEAPU8[' + OFFSET_STR(this.addr) + ']'; + }; + } + return new ctor(addr); + } + + function UNARY(type, op, expr) { + var ctor = UNARY.ctor; + if (!ctor) { + ctor = UNARY.ctor = function (type, op, expr) { + this.type = type; + this.op = op; + this.expr = expr; + }; + ctor.prototype = Object.create(UNARY.prototype); + ctor.prototype.toString = function () { + var expr = BITCAST_STR(this.type, this.expr); + + switch (this.op) { + case 35 /* OP_SEX8 */: + return '((' + expr + ')<<24)>>24'; + + case 36 /* OP_SEX16 */: + return '((' + expr + ')<<16)>>16'; + + case 37 /* OP_NEGI */: + return '-(' + expr + ')'; + + case 49 /* OP_BCOM */: + return '(' + expr + ')^-1'; + + case 53 /* OP_NEGF */: + return '(-.0)-(' + expr + ')'; + + default: + throw new Error('unknown op type for unary expression'); + } + }; + } + return new ctor(type, op, expr); + } + + function BINARY(type, op, lhs, rhs) { + var ctor = BINARY.ctor; + if (!ctor) { + ctor = BINARY.ctor = function (type, op, lhs, rhs) { + this.type = type; + this.op = op; + this.lhs = lhs; + this.rhs = rhs; + }; + ctor.prototype = Object.create(BINARY.prototype); + ctor.prototype.toString = function () { + var lhs = '(' + BITCAST_STR(this.type, this.lhs) + ')'; + var rhs = '(' + BITCAST_STR(this.type, this.rhs) + ')'; + + switch (this.op) { + case 38 /* OP_ADD */: + case 54 /* OP_ADDF */: + return lhs + '+' + rhs; + + case 39 /* OP_SUB */: + case 55 /* OP_SUBF */: + return lhs + '-' + rhs; + + case 40 /* OP_DIVI */: + case 41 /* OP_DIVU */: + case 56 /* OP_DIVF */: + return lhs + '/' + rhs; + + case 42 /* OP_MODI */: + case 43 /* OP_MODU */: + return lhs + '%' + rhs; + + case 44 /* OP_MULI */: + case 45 /* OP_MULU */: + return 'Math.imul(' + lhs + ', ' + rhs +')'; + + case 57 /* OP_MULF */: + return lhs + '*' + rhs; + + case 46 /* OP_BAND */: + return lhs + '&' + rhs; + + case 47 /* OP_BOR */: + return lhs + '|' + rhs; + + case 48 /* OP_BXOR */: + return lhs + '^' + rhs; + + case 50 /* OP_LSH */: + return lhs + '<<' + rhs; + + case 51 /* OP_RSHI */: + return lhs + '>>' + rhs; + + case 52 /* OP_RSHU */: + return lhs + '>>>' + rhs; + + default: + throw new Error('unknown op type for binary expression'); + } + }; + } + return new ctor(type, op, lhs, rhs); + } + + function CONVERT(type, from_type, expr) { + var ctor = CONVERT.ctor; + if (!ctor) { + ctor = CONVERT.ctor = function (type, from_type, expr) { + this.type = type; + this.from_type = from_type; + this.expr = expr; + }; + ctor.prototype = Object.create(CONVERT.prototype); + ctor.prototype.toString = function () { + return CAST_STR(this.type, BITCAST_STR(this.from_type, this.expr)); + }; + } + return new ctor(type, from_type, expr); + } + + // + // statements + // + var moduleStr = ''; + var indent = 0; + + function EmitStatement(str) { + var prefix = ''; + for (var i = 0; i < indent; i++) { + prefix += '\t'; + } + moduleStr += prefix + str + '\n'; + } + + function EmitEnter(frameSize) { + EmitStatement('var fn' + fninstr + ' = FUNCTIONS[' + fninstr + '] = function fn' + fninstr + '(override) {'); + indent++; + EmitStatement('var label = override || ' + fninstr + ';'); + EmitStatement('while (1) switch (label) {'); + indent++; + EmitStatement('case ' + fninstr + ':'); + indent++; + EmitStatement('STACKTOP -= ' + frameSize + ';'); + } + + function EmitLeave(frameSize, ret) { + // leave the return value on the stack + EmitStatement('HEAP32[((' + OFFSET_STR(LOCAL(frameSize - 4)) + ')>>2)]=' + ret + ';'); + EmitStatement('STACKTOP += ' + frameSize + ';'); + EmitStatement('return;'); + + if (eof) { + indent--; + indent--; + EmitStatement('}'); + indent--; + EmitStatement('};'); + } + } + + function EmitCall(addr) { + var translate = { + 'cgame': { + '-101': 'memset', + '-102': 'memcpy', + '-103': 'strncpy', + '-104': 'sin', + '-105': 'cos', + '-106': 'atan2', + '-107': 'sqrt', + '-108': 'floor', + '-109': 'ceil', + '-112': 'acos' + }, + 'qagame': { + '-101': 'memset', + '-102': 'memcpy', + '-103': 'strncpy', + '-104': 'sin', + '-105': 'cos', + '-106': 'atan2', + '-107': 'sqrt', + '-111': 'floor', + '-112': 'ceil' + }, + 'ui': { + '-101': 'memset', + '-102': 'memcpy', + '-103': 'strncpy', + '-104': 'sin', + '-105': 'cos', + '-106': 'atan2', + '-107': 'sqrt', + '-108': 'floor', + '-109': 'ceil' + }, + }; + + // emit return address info + EmitStore4(LOCAL(0), fninstr); + EmitStore4(LOCAL(4), state.instr + 1); + + // emit args + while (callargs.length) { + var arg = callargs.shift(); + EmitStore4(arg.addr, arg.value); + } + + // go ahead and directly translate a few syscalls to speed things up + var table = translate[state.name]; + var translation = table && table[addr]; + + if (translation) { + switch (translation) { + case 'memset': + EmitStatement('HEAP32[((' + OFFSET_STR(LOCAL(-4)) + ')>>2)]=_memset(' + state.dataBase + '+' + LOAD4(LOCAL(8)) + ', ' + LOAD4(LOCAL(12)) + ', ' + LOAD4(LOCAL(16)) + ');'); + break; + + case 'memcpy': + EmitStatement('HEAP32[((' + OFFSET_STR(LOCAL(-4)) + ')>>2)]=_memcpy(' + state.dataBase + '+' + LOAD4(LOCAL(8)) + ', ' + state.dataBase + '+' + LOAD4(LOCAL(12)) + ', ' + LOAD4(LOCAL(16)) + ');'); + break; + + case 'strncpy': + EmitStatement('HEAP32[((' + OFFSET_STR(LOCAL(-4)) + ')>>2)]=_strncpy(' + state.dataBase + '+' + LOAD4(LOCAL(8)) + ', ' + state.dataBase + '+' + LOAD4(LOCAL(12)) + ', ' + LOAD4(LOCAL(16)) + ');'); + break; + + case 'sin': + EmitStatement('HEAPF32[((' + OFFSET_STR(LOCAL(-4)) + ')>>2)]=Math.sin(' + (BITCAST_STR(VM.TYPE.F4, LOAD4(LOCAL(8)))) + ');'); + break; + + case 'cos': + EmitStatement('HEAPF32[((' + OFFSET_STR(LOCAL(-4)) + ')>>2)]=Math.cos(' + (BITCAST_STR(VM.TYPE.F4, LOAD4(LOCAL(8)))) + ');'); + break; + + case 'atan2': + EmitStatement('HEAPF32[((' + OFFSET_STR(LOCAL(-4)) + ')>>2)]=Math.atan2(' + (BITCAST_STR(VM.TYPE.F4, LOAD4(LOCAL(8)))) + ', ' + (BITCAST_STR(VM.TYPE.F4, LOAD4(LOCAL(12)))) + ');'); + break; + + case 'sqrt': + EmitStatement('HEAPF32[((' + OFFSET_STR(LOCAL(-4)) + ')>>2)]=Math.sqrt(' + (BITCAST_STR(VM.TYPE.F4, LOAD4(LOCAL(8)))) + ');'); + break; + + case 'floor': + EmitStatement('HEAPF32[((' + OFFSET_STR(LOCAL(-4)) + ')>>2)]=Math.floor(' + (BITCAST_STR(VM.TYPE.F4, LOAD4(LOCAL(8)))) + ');'); + break; + + case 'ceil': + EmitStatement('HEAPF32[((' + OFFSET_STR(LOCAL(-4)) + ')>>2)]=Math.ceil(' + (BITCAST_STR(VM.TYPE.F4, LOAD4(LOCAL(8)))) + ');'); + break; + + case 'acos': + EmitStatement('HEAPF32[((' + OFFSET_STR(LOCAL(-4)) + ')>>2)]=Math.acos(' + (BITCAST_STR(VM.TYPE.F4, LOAD4(LOCAL(8)))) + ');'); + break; + } + } else { + var expr = 'call(' + addr + ')'; + + // remove the indirection if we can + if (addr instanceof CNST) { + if (addr.value >= 0) { + expr = 'fn' + addr.value + '()'; + } else { + expr = 'syscall(' + addr.value + ')'; + } + } + + EmitStatement(expr + ';'); + } + + // push return value to stack + PUSH_EXPR(LOAD4(LOCAL(-4))); + } + + function EmitJump(label) { + EmitStatement('label = ' + label + ';'); + EmitStatement('break;'); + } + + function EmitConditionalJump(lhs, rhs, cond, label) { + var expr = '(' + lhs + ') ' + cond + ' (' + rhs + ')'; + + // MEGA HACK FOR CPMA 1.47 + // ignore its built in pak-file checking since we repackage our own paks + if (fs_game === 'cpma' && name === 'qagame' && (state.instr === 1382 || state.instr === 1392)) { + // 1382 is checking if trap_FS_FOpenFile returned 0 for the pak, and if so, jumps to an error block + // 1392 is checking if trap_FS_FOpenFile's returned length matches the expected length and if so, jumps to a success block + expr = state.instr === 1382 ? '0' : '1'; + } + + EmitStatement('if (' + expr + ') {'); + indent++; + EmitJump(label); + indent--; + EmitStatement('}'); + } + + function EmitStore4(addr, value) { + if (value.type === VM.TYPE.F4) { + EmitStatement('HEAPF32[((' + OFFSET_STR(addr) + ')>>2)]=' + value + ';'); + } else { + EmitStatement('HEAP32[((' + OFFSET_STR(addr) + ')>>2)]=' + value + ';'); + } + } + + function EmitStore2(addr, value) { + EmitStatement('HEAP16[((' + OFFSET_STR(addr) + ')>>1)]=' + value + ';'); + } + + function EmitStore1(addr, value) { + EmitStatement('HEAP8[((' + OFFSET_STR(addr) + ')|0)]=' + value + ';'); + } + + function EmitBlockCopy(dest, src, bytes) { + EmitStatement('(_memcpy(' + OFFSET_STR(dest) + ', ' + OFFSET_STR(src) + ', ' + bytes + ')|0);'); + } + + EmitStatement('(function () {'); + indent++; + + EmitStatement('var FUNCTIONS = {};'); + EmitStatement('var STACKTOP;'); + + EmitStatement('function syscall(callnum) {'); + EmitStatement('\tcallnum = ~callnum;'); + EmitStatement('\t// save the current vm'); + EmitStatement('\tvar savedVM = _VM_GetCurrent();'); + EmitStatement('\tvar stackOnEntry = STACKTOP;'); + EmitStatement('\tvar image = HEAP32[(((savedVM)+(VM.vm_t.dataBase))>>2)];'); + EmitStatement('\t// store the callnum in the return address space'); + EmitStatement('\tvar returnAddr = HEAP32[(((image)+(stackOnEntry + 4))>>2)];'); + EmitStatement('\tHEAP32[(((image)+(stackOnEntry + 4))>>2)]=callnum;'); + // MEGA HACK FOR CPMA 1.47 + // it uses the default model mynx which we don't have. if + // it fails to load the default model, the game will exit + if (fs_game === 'cpma' && name === 'cgame') { + EmitStatement('\tif (callnum === 10 /* trap_FS_FOpenFile */ || callnum === 34 /* trap_S_RegisterSound */ || callnum === 37 /* trap_R_RegisterModel */ || callnum === 38 /* trap_R_RegisterSkin */) {'); + EmitStatement('\t\tvar modelName = Pointer_stringify(' + state.dataBase + ' + HEAP32[(((image)+(stackOnEntry + 8))>>2)]);'); + EmitStatement('\t\tif (modelName.indexOf("/mynx") !== -1) {'); + EmitStatement('\t\t\tmodelName = modelName.replace("/mynx", "/sarge");'); + EmitStatement('\t\t\tSTACKTOP -= modelName.length+1;'); + EmitStatement('\t\t\twriteStringToMemory(modelName, ' + state.dataBase + ' + STACKTOP);'); + EmitStatement('\t\t\tHEAP32[(((image)+(stackOnEntry + 8))>>2)]=STACKTOP;'); + EmitStatement('\t\t}'); + EmitStatement('\t}'); + } + EmitStatement('\t// modify VM stack pointer for recursive VM entry'); + EmitStatement('\tSTACKTOP -= 4;') + EmitStatement('\tHEAP32[(((savedVM)+(VM.vm_t.programStack))>>2)]=STACKTOP;'); + EmitStatement('\t// call into the client'); + EmitStatement('\tvar systemCall = HEAP32[(((savedVM)+(VM.vm_t.systemCall))>>2)];'); + EmitStatement('\tvar ret = Runtime.dynCall("ii", systemCall, [image + stackOnEntry + 4]);'); + EmitStatement('\t// restore return address'); + EmitStatement('\tHEAP32[(((image)+(stackOnEntry + 4))>>2)]=returnAddr;'); + EmitStatement('\t// leave the return value on the stack'); + EmitStatement('\tHEAP32[(((image)+(stackOnEntry - 4))>>2)]=ret;'); + EmitStatement('\tSTACKTOP = stackOnEntry;'); + EmitStatement('\tHEAP32[(((savedVM)+(VM.vm_t.programStack))>>2)]=STACKTOP;'); + EmitStatement('\t_VM_SetCurrent(savedVM);'); + // intercept trap_UpdateScreen calls coming from cgame and suspend the VM + if (name === 'cgame') { + EmitStatement('\tif (callnum === 17 /* trap_UpdateScreen */) {'); + EmitStatement('\t\tthrow { suspend: true };'); + EmitStatement('\t}'); + } + EmitStatement('\treturn;'); + EmitStatement('}'); + + EmitStatement('function call(addr) {'); + EmitStatement('\tif (addr >= 0) {'); + EmitStatement('\t\tvar fn = FUNCTIONS[addr];'); + EmitStatement('\t\tfn();'); + EmitStatement('\t\treturn;'); + EmitStatement('\t}'); + EmitStatement('\tsyscall(addr);'); + EmitStatement('}'); + + EmitStatement('var ab = new ArrayBuffer(4);'); + EmitStatement('var i32 = new Int32Array(ab);'); + EmitStatement('var u32 = new Uint32Array(ab);'); + EmitStatement('var f32 = new Float32Array(ab);'); + + var lastop1, lastop2; + for (state.instr = 0, state.pc = 0; state.instr < state.instructionCount; state.instr++) { + var op = HEAP8[(((state.codeBase)+(state.pc))|0)]; + + state.pc++; + + if (labels[state.instr]) { + indent--; + EmitStatement('case ' + state.instr + ':'); + indent++; + } + + switch (op) { + // + // expressions + // + case 6 /* OP_PUSH */: + PUSH_EXPR(CNST(0)); + eof = true; + break; + + case 7 /* OP_POP */: + POP_EXPR(); + break; + + case 8 /* OP_CONST */: + PUSH_EXPR(CNST(VM.Constant4(state))); + break; + + case 9 /* OP_LOCAL */: + PUSH_EXPR(LOCAL(VM.Constant4(state))); + break; + + case 27 /* OP_LOAD1 */: + PUSH_EXPR(LOAD1(POP_EXPR())); + break; + + case 28 /* OP_LOAD2 */: + PUSH_EXPR(LOAD2(POP_EXPR())); + break; + + case 29 /* OP_LOAD4 */: + PUSH_EXPR(LOAD4(POP_EXPR())); + break; + + case 35 /* OP_SEX8 */: + case 36 /* OP_SEX16 */: + case 37 /* OP_NEGI */: + case 49 /* OP_BCOM */: + PUSH_EXPR(UNARY(VM.TYPE.I4, op, POP_EXPR())); + break; + + case 53 /* OP_NEGF */: + PUSH_EXPR(UNARY(VM.TYPE.F4, op, POP_EXPR())); + break; + + case 38 /* OP_ADD */: + case 39 /* OP_SUB */: + case 40 /* OP_DIVI */: + case 42 /* OP_MODI */: + case 44 /* OP_MULI */: + case 46 /* OP_BAND */: + case 47 /* OP_BOR */: + case 48 /* OP_BXOR */: + case 50 /* OP_LSH */: + case 51 /* OP_RSHI */: + var rhs = POP_EXPR(); + var lhs = POP_EXPR(); + PUSH_EXPR(BINARY(VM.TYPE.I4, op, lhs, rhs)); + break; + + case 41 /* OP_DIVU */: + case 43 /* OP_MODU */: + case 45 /* OP_MULU */: + case 52 /* OP_RSHU */: + var rhs = POP_EXPR(); + var lhs = POP_EXPR(); + PUSH_EXPR(BINARY(VM.TYPE.U4, op, lhs, rhs)); + break; + + case 54 /* OP_ADDF */: + case 55 /* OP_SUBF */: + case 56 /* OP_DIVF */: + case 57 /* OP_MULF */: + var rhs = POP_EXPR(); + var lhs = POP_EXPR(); + PUSH_EXPR(BINARY(VM.TYPE.F4, op, lhs, rhs)); + break; + + case 58 /* OP_CVIF */: + PUSH_EXPR(CONVERT(VM.TYPE.F4, VM.TYPE.I4, POP_EXPR())); + break; + + case 59 /* OP_CVFI */: + PUSH_EXPR(CONVERT(VM.TYPE.I4, VM.TYPE.F4, POP_EXPR())); + break; + + // + // statements + // + case 0 /* OP_UNDEF */: + case 1 /* OP_IGNORE */: + break; + + case 2 /* OP_BREAK */: + EmitStatement('debugger;'); + break; + + case 3 /* OP_ENTER */: + fninstr = state.instr; + eof = false; + EmitEnter(VM.Constant4(state)); + break; + + case 4 /* OP_LEAVE */: + EmitLeave(VM.Constant4(state), BITCAST_STR(VM.TYPE.I4, POP_EXPR())); + break; + + case 5 /* OP_CALL */: + EmitCall(POP_EXPR()); + break; + + case 10 /* OP_JUMP */: + // OP_LEAVE ops have explicit jumps written out afterwards that we can ignore + // RETI4 + // ADDRGP4 $1 + // JUMPV + var expr = POP_EXPR(); + if (!(lastop1 === 4 /* OP_LEAVE */ && lastop2 === 8 /* OP_CONST */)) { + var instr = BITCAST_STR(VM.TYPE.I4, expr); + EmitJump(instr); + } + break; + + case 11 /* OP_EQ */: + var rhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '===', VM.Constant4(state)); + break; + + case 12 /* OP_NE */: + var rhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '!==', VM.Constant4(state)); + break; + + case 13 /* OP_LTI */: + var rhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '<', VM.Constant4(state)); + break; + + case 14 /* OP_LEI */: + var rhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '<=', VM.Constant4(state)); + break; + + case 15 /* OP_GTI */: + var rhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '>', VM.Constant4(state)); + break; + + case 16 /* OP_GEI */: + var rhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '>=', VM.Constant4(state)); + break; + + case 17 /* OP_LTU */: + var rhs = BITCAST_STR(VM.TYPE.U4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.U4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '<', VM.Constant4(state)); + break; + + case 18 /* OP_LEU */: + var rhs = BITCAST_STR(VM.TYPE.U4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.U4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '<=', VM.Constant4(state)); + break; + + case 19 /* OP_GTU */: + var rhs = BITCAST_STR(VM.TYPE.U4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.U4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '>', VM.Constant4(state)); + break; + + case 20 /* OP_GEU */: + var rhs = BITCAST_STR(VM.TYPE.U4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.U4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '>=', VM.Constant4(state)); + break; + + case 21 /* OP_EQF */: + var rhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '===', VM.Constant4(state)); + break; + + case 22 /* OP_NEF */: + var rhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '!==', VM.Constant4(state)); + break; + + case 23 /* OP_LTF */: + var rhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '<', VM.Constant4(state)); + break; + + case 24 /* OP_LEF */: + var rhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '<=', VM.Constant4(state)); + break; + + case 25 /* OP_GTF */: + var rhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '>', VM.Constant4(state)); + break; + + case 26 /* OP_GEF */: + var rhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + var lhs = BITCAST_STR(VM.TYPE.F4, POP_EXPR()); + EmitConditionalJump(lhs, rhs, '>=', VM.Constant4(state)); + break; + + case 30 /* OP_STORE1 */: + var value = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + var addr = POP_EXPR(); + EmitStore1(addr, value); + break; + + case 31 /* OP_STORE2 */: + var value = BITCAST_STR(VM.TYPE.I4, POP_EXPR()); + var addr = POP_EXPR(); + EmitStore2(addr, value); + break; + + case 32 /* OP_STORE4 */: + var value = POP_EXPR(); + var addr = POP_EXPR(); + EmitStore4(addr, value); + break; + + case 33 /* OP_ARG */: + var value = POP_EXPR(); + var addr = LOCAL(VM.Constant1(state)); + callargs.push({ addr: addr, value: value }); + break; + + case 34 /* OP_BLOCK_COPY */: + var src = POP_EXPR(); + var dest = POP_EXPR(); + var bytes = VM.Constant4(state); + EmitBlockCopy(dest, src, bytes); + break; + } + + lastop1 = lastop2; + lastop2 = op; + } + + EmitStatement('return Object.create(Object.prototype, {'); + EmitStatement('\tFUNCTIONS: { value: FUNCTIONS },'); + EmitStatement('\tSTACKTOP: { get: function () { return STACKTOP; }, set: function (val) { STACKTOP = val; } },'); + EmitStatement('});'); + indent--; + EmitStatement('})'); + + return moduleStr; + }}; + + function _VM_Destroy(vmp) { + var handle = HEAP32[(((vmp)+(VM.vm_t.entryOfs))>>2)]; + + delete VM.vms[handle]; + }function _VM_Compile(vmp, headerp) { + var current = _VM_GetCurrent(); + var name = Pointer_stringify(vmp + VM.vm_t.name); + var dataBase = HEAP32[(((vmp)+(VM.vm_t.dataBase))>>2)]; + var codeOffset = HEAP32[(((headerp)+(VM.vmHeader_t.codeOffset))>>2)]; + var instructionCount = HEAP32[(((headerp)+(VM.vmHeader_t.instructionCount))>>2)]; + + var vm; + try { + var start = Date.now(); + + var module = VM.CompileModule(name, instructionCount, headerp + codeOffset, dataBase); + var indirectEval = eval; + vm = indirectEval(module)(); + + SYSC.Print('VM file ' + name + ' compiled in ' + (Date.now() - start) + ' milliseconds'); + } catch (e) { + if (e.longjmp || e === 'longjmp') { + throw e; + } + SYSC.Error('fatal', e); + } + + var handle = VM.vms.length+1; + VM.vms[handle] = vm; + + if (!VM.DestroyPtr) { + VM.DestroyPtr = Runtime.addFunction(_VM_Destroy); + } + + HEAP32[(((vmp)+(VM.vm_t.entryOfs))>>2)]=handle; + HEAP32[(((vmp)+(VM.vm_t.destroy))>>2)]=VM.DestroyPtr; + } + + + function _VM_SuspendCompiled(vmp, stackOnEntry) { + var handle = HEAP32[(((vmp)+(VM.vm_t.entryOfs))>>2)]; + var vm = VM.vms[handle]; + + if (!vm) { + SYSC.Error('drop', 'invalid vm handle'); + return; + } + + vm.suspended = true; + vm.stackOnEntry = stackOnEntry; + }function _VM_CallCompiled(vmp, args) { + var handle = HEAP32[(((vmp)+(VM.vm_t.entryOfs))>>2)]; + var vm = VM.vms[handle]; + + // we can't re-enter the vm until it's been resumed + if (vm.suspended) { + SYSC.Error('drop', 'attempted to re-enter suspended vm'); + } + + // set the current vm + var savedVM = _VM_GetCurrent(); + _VM_SetCurrent(vmp); + + // save off the stack pointer + var image = HEAP32[(((vmp)+(VM.vm_t.dataBase))>>2)]; + + // set up the stack frame + var stackOnEntry = HEAP32[(((vmp)+(VM.vm_t.programStack))>>2)]; + var stackTop = stackOnEntry - VM.ENTRY_FRAME_SIZE; + + HEAP32[(((image)+(stackTop))>>2)]=-1; + HEAP32[(((image)+(stackTop + 4))>>2)]=0; + + for (var i = 0; i < VM.MAX_VMMAIN_ARGS; i++) { + var arg = HEAP32[(((args)+(i * 4))>>2)]; + HEAP32[(((image)+(stackTop + 8 + i * 4))>>2)]=arg; + } + + // call into the entry point + var result; + + try { + var entryPoint = vm.FUNCTIONS[0]; + + vm.STACKTOP = stackTop; + + entryPoint(); + + if (vm.STACKTOP !== (stackOnEntry - VM.ENTRY_FRAME_SIZE)) { + SYSC.Error('fatal', 'program stack corrupted, is ' + vm.STACKTOP + ', expected ' + (stackOnEntry - VM.ENTRY_FRAME_SIZE)); + } + + result = HEAP32[(((image)+(vm.STACKTOP - 4))>>2)]; + + HEAP32[(((vmp)+(VM.vm_t.programStack))>>2)]=stackOnEntry; + } catch (e) { + if (e.longjmp || e === 'longjmp') { + throw e; + } + + if (!e.suspend) { + SYSC.Error('fatal', e); + return; + } + + _VM_SuspendCompiled(vmp, stackOnEntry); + + result = VM.SUSPENDED; + } + + // restore the current vm + _VM_SetCurrent(savedVM); + + // return value is at the top of the stack still + return result; + } + + function _fprintf(stream, format, varargs) { + // int fprintf(FILE *restrict stream, const char *restrict format, ...); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html + var result = __formatString(format, varargs); + var stack = Runtime.stackSave(); + var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); + Runtime.stackRestore(stack); + return ret; + } + + function _VM_IsSuspendedCompiled(vmp) { + var handle = HEAP32[(((vmp)+(VM.vm_t.entryOfs))>>2)]; + var vm = VM.vms[handle]; + + if (!vm) { + SYSC.Error('drop', 'invalid vm handle'); + return; + } + + return vm.suspended; + } + + function _VM_ResumeCompiled(vmp) { + var handle = HEAP32[(((vmp)+(VM.vm_t.entryOfs))>>2)]; + var vm = VM.vms[handle]; + + if (!vm) { + SYSC.Error('drop', 'invalid vm handle'); + return; + } + + var savedVM = _VM_GetCurrent(); + _VM_SetCurrent(vmp); + + var image = HEAP32[(((vmp)+(VM.vm_t.dataBase))>>2)]; + var stackOnEntry = vm.stackOnEntry; + var result; + + vm.suspended = false; + + try { + while (true) { + // grab the last return address off the stack top and resume execution + var fninstr = HEAP32[(((image)+(vm.STACKTOP))>>2)]; + var opinstr = HEAP32[(((image)+(vm.STACKTOP + 4))>>2)]; + + if (fninstr === -1) { + // we're done unwinding + break; + } + + var fn = vm.FUNCTIONS[fninstr]; + + fn(opinstr); + } + + if (vm.STACKTOP !== (stackOnEntry - VM.ENTRY_FRAME_SIZE)) { + SYSC.Error('drop', 'program stack corrupted, is ' + vm.STACKTOP + ', expected ' + (stackOnEntry - VM.ENTRY_FRAME_SIZE)); + return; + } + + result = HEAP32[(((image)+(vm.STACKTOP - 4))>>2)]; + + HEAP32[(((vmp)+(VM.vm_t.programStack))>>2)]=stackOnEntry; + } catch (e) { + if (e.longjmp || e === 'longjmp') { + throw e; + } + + if (!e.suspend) { + SYSC.Error('drop', e); + return; + } + + _VM_SuspendCompiled(vmp, stackOnEntry); + + result = VM.SUSPENDED; + } + + // restore the current vm + _VM_SetCurrent(savedVM); + + return result; + } + + function _clock() { + if (_clock.start === undefined) _clock.start = Date.now(); + return Math.floor((Date.now() - _clock.start) * (1000000/1000)); + } + + function _vfprintf(s, f, va_arg) { + return _fprintf(s, f, HEAP32[((va_arg)>>2)]); + } + + function _strncat(pdest, psrc, num) { + var len = _strlen(pdest); + var i = 0; + while(1) { + HEAP8[((pdest+len+i)|0)]=HEAP8[((psrc+i)|0)]; + if (HEAP8[(((pdest)+(len+i))|0)] == 0) break; + i ++; + if (i == num) { + HEAP8[(((pdest)+(len+i))|0)]=0; + break; + } + } + return pdest; + } + + function _ctime(timer) { + return _asctime(_localtime(timer)); + } + + + var SDL={defaults:{width:320,height:200,copyOnLock:true},version:null,surfaces:{},canvasPool:[],events:[],fonts:[null],audios:[null],rwops:[null],music:{audio:null,volume:1},mixerFrequency:22050,mixerFormat:32784,mixerNumChannels:2,mixerChunkSize:1024,channelMinimumNumber:0,GL:false,glAttributes:{0:3,1:3,2:2,3:0,4:0,5:1,6:16,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:1,16:0,17:0,18:0},keyboardState:null,keyboardMap:{},canRequestFullscreen:false,isRequestingFullscreen:false,textInput:false,startTime:null,initFlags:0,buttonState:0,modState:0,DOMButtons:[0,0,0],DOMEventToSDLEvent:{},keyCodes:{16:1249,17:1248,18:1250,33:1099,34:1102,37:1104,38:1106,39:1103,40:1105,46:127,96:1112,97:1113,98:1114,99:1115,100:1116,101:1117,102:1118,103:1119,104:1120,105:1121,112:1082,113:1083,114:1084,115:1085,116:1086,117:1087,118:1088,119:1089,120:1090,121:1091,122:1092,123:1093,173:45,188:44,190:46,191:47,192:96},scanCodes:{8:42,9:43,13:40,27:41,32:44,44:54,46:55,47:56,48:39,49:30,50:31,51:32,52:33,53:34,54:35,55:36,56:37,57:38,59:51,61:46,91:47,92:49,93:48,96:52,97:4,98:5,99:6,100:7,101:8,102:9,103:10,104:11,105:12,106:13,107:14,108:15,109:16,110:17,111:18,112:19,113:20,114:21,115:22,116:23,117:24,118:25,119:26,120:27,121:28,122:29,305:224,308:226},loadRect:function (rect) { + return { + x: HEAP32[((rect + 0)>>2)], + y: HEAP32[((rect + 4)>>2)], + w: HEAP32[((rect + 8)>>2)], + h: HEAP32[((rect + 12)>>2)] + }; + },loadColorToCSSRGB:function (color) { + var rgba = HEAP32[((color)>>2)]; + return 'rgb(' + (rgba&255) + ',' + ((rgba >> 8)&255) + ',' + ((rgba >> 16)&255) + ')'; + },loadColorToCSSRGBA:function (color) { + var rgba = HEAP32[((color)>>2)]; + return 'rgba(' + (rgba&255) + ',' + ((rgba >> 8)&255) + ',' + ((rgba >> 16)&255) + ',' + (((rgba >> 24)&255)/255) + ')'; + },translateColorToCSSRGBA:function (rgba) { + return 'rgba(' + (rgba&0xff) + ',' + (rgba>>8 & 0xff) + ',' + (rgba>>16 & 0xff) + ',' + (rgba>>>24)/0xff + ')'; + },translateRGBAToCSSRGBA:function (r, g, b, a) { + return 'rgba(' + (r&0xff) + ',' + (g&0xff) + ',' + (b&0xff) + ',' + (a&0xff)/255 + ')'; + },translateRGBAToColor:function (r, g, b, a) { + return r | g << 8 | b << 16 | a << 24; + },makeSurface:function (width, height, flags, usePageCanvas, source, rmask, gmask, bmask, amask) { + flags = flags || 0; + var is_SDL_HWSURFACE = flags & 0x00000001; + var is_SDL_HWPALETTE = flags & 0x00200000; + var is_SDL_OPENGL = flags & 0x04000000; + + var surf = _malloc(60); + var pixelFormat = _malloc(44); + //surface with SDL_HWPALETTE flag is 8bpp surface (1 byte) + var bpp = is_SDL_HWPALETTE ? 1 : 4; + var buffer = 0; + + // preemptively initialize this for software surfaces, + // otherwise it will be lazily initialized inside of SDL_LockSurface + if (!is_SDL_HWSURFACE && !is_SDL_OPENGL) { + buffer = _malloc(width * height * 4); + } + + HEAP32[((surf)>>2)]=flags; + HEAP32[(((surf)+(4))>>2)]=pixelFormat; + HEAP32[(((surf)+(8))>>2)]=width; + HEAP32[(((surf)+(12))>>2)]=height; + HEAP32[(((surf)+(16))>>2)]=width * bpp; // assuming RGBA or indexed for now, + // since that is what ImageData gives us in browsers + HEAP32[(((surf)+(20))>>2)]=buffer; + HEAP32[(((surf)+(36))>>2)]=0; + HEAP32[(((surf)+(56))>>2)]=1; + + HEAP32[((pixelFormat)>>2)]=0 /* XXX missing C define SDL_PIXELFORMAT_RGBA8888 */; + HEAP32[(((pixelFormat)+(4))>>2)]=0;// TODO + HEAP8[(((pixelFormat)+(8))|0)]=bpp * 8; + HEAP8[(((pixelFormat)+(9))|0)]=bpp; + + HEAP32[(((pixelFormat)+(12))>>2)]=rmask || 0x000000ff; + HEAP32[(((pixelFormat)+(16))>>2)]=gmask || 0x0000ff00; + HEAP32[(((pixelFormat)+(20))>>2)]=bmask || 0x00ff0000; + HEAP32[(((pixelFormat)+(24))>>2)]=amask || 0xff000000; + + // Decide if we want to use WebGL or not + SDL.GL = SDL.GL || is_SDL_OPENGL; + var canvas; + if (!usePageCanvas) { + if (SDL.canvasPool.length > 0) { + canvas = SDL.canvasPool.pop(); + } else { + canvas = document.createElement('canvas'); + } + canvas.width = width; + canvas.height = height; + } else { + canvas = Module['canvas']; + } + + var webGLContextAttributes = { + antialias: ((SDL.glAttributes[13 /*SDL_GL_MULTISAMPLEBUFFERS*/] != 0) && (SDL.glAttributes[14 /*SDL_GL_MULTISAMPLESAMPLES*/] > 1)), + depth: (SDL.glAttributes[6 /*SDL_GL_DEPTH_SIZE*/] > 0), + stencil: (SDL.glAttributes[7 /*SDL_GL_STENCIL_SIZE*/] > 0) + }; + + var ctx = Browser.createContext(canvas, is_SDL_OPENGL, usePageCanvas, webGLContextAttributes); + + SDL.surfaces[surf] = { + width: width, + height: height, + canvas: canvas, + ctx: ctx, + surf: surf, + buffer: buffer, + pixelFormat: pixelFormat, + alpha: 255, + flags: flags, + locked: 0, + usePageCanvas: usePageCanvas, + source: source, + + isFlagSet: function(flag) { + return flags & flag; + } + }; + + return surf; + },copyIndexedColorData:function (surfData, rX, rY, rW, rH) { + // HWPALETTE works with palette + // setted by SDL_SetColors + if (!surfData.colors) { + return; + } + + var fullWidth = Module['canvas'].width; + var fullHeight = Module['canvas'].height; + + var startX = rX || 0; + var startY = rY || 0; + var endX = (rW || (fullWidth - startX)) + startX; + var endY = (rH || (fullHeight - startY)) + startY; + + var buffer = surfData.buffer; + var data = surfData.image.data; + var colors = surfData.colors; + + for (var y = startY; y < endY; ++y) { + var indexBase = y * fullWidth; + var colorBase = indexBase * 4; + for (var x = startX; x < endX; ++x) { + // HWPALETTE have only 256 colors (not rgba) + var index = HEAPU8[((buffer + indexBase + x)|0)] * 3; + var colorOffset = colorBase + x * 4; + + data[colorOffset ] = colors[index ]; + data[colorOffset +1] = colors[index +1]; + data[colorOffset +2] = colors[index +2]; + //unused: data[colorOffset +3] = color[index +3]; + } + } + },freeSurface:function (surf) { + var refcountPointer = surf + 56; + var refcount = HEAP32[((refcountPointer)>>2)]; + if (refcount > 1) { + HEAP32[((refcountPointer)>>2)]=refcount - 1; + return; + } + + var info = SDL.surfaces[surf]; + if (!info.usePageCanvas && info.canvas) SDL.canvasPool.push(info.canvas); + if (info.buffer) _free(info.buffer); + _free(info.pixelFormat); + _free(surf); + SDL.surfaces[surf] = null; + },touchX:0,touchY:0,savedKeydown:null,receiveEvent:function (event) { + switch(event.type) { + case 'touchstart': + event.preventDefault(); + var touch = event.touches[0]; + touchX = touch.pageX; + touchY = touch.pageY; + var event = { + type: 'mousedown', + button: 0, + pageX: touchX, + pageY: touchY + }; + SDL.DOMButtons[0] = 1; + SDL.events.push(event); + break; + case 'touchmove': + event.preventDefault(); + var touch = event.touches[0]; + touchX = touch.pageX; + touchY = touch.pageY; + event = { + type: 'mousemove', + button: 0, + pageX: touchX, + pageY: touchY + }; + SDL.events.push(event); + break; + case 'touchend': + event.preventDefault(); + event = { + type: 'mouseup', + button: 0, + pageX: touchX, + pageY: touchY + }; + SDL.DOMButtons[0] = 0; + SDL.events.push(event); + break; + case 'mousemove': + if (Browser.pointerLock) { + // workaround for firefox bug 750111 + if ('mozMovementX' in event) { + event['movementX'] = event['mozMovementX']; + event['movementY'] = event['mozMovementY']; + } + // workaround for Firefox bug 782777 + if (event['movementX'] == 0 && event['movementY'] == 0) { + // ignore a mousemove event if it doesn't contain any movement info + // (without pointer lock, we infer movement from pageX/pageY, so this check is unnecessary) + event.preventDefault(); + return; + } + } + // fall through + case 'keydown': case 'keyup': case 'keypress': case 'mousedown': case 'mouseup': case 'DOMMouseScroll': case 'mousewheel': + // If we preventDefault on keydown events, the subsequent keypress events + // won't fire. However, it's fine (and in some cases necessary) to + // preventDefault for keys that don't generate a character. Otherwise, + // preventDefault is the right thing to do in general. + if (event.type !== 'keydown' || (!SDL.unicode && !SDL.textInput) || (event.keyCode === 8 /* backspace */ || event.keyCode === 9 /* tab */)) { + event.preventDefault(); + } + + if (event.type == 'DOMMouseScroll' || event.type == 'mousewheel') { + var button = Browser.getMouseWheelDelta(event) > 0 ? 4 : 3; + var event2 = { + type: 'mousedown', + button: button, + pageX: event.pageX, + pageY: event.pageY + }; + SDL.events.push(event2); + event = { + type: 'mouseup', + button: button, + pageX: event.pageX, + pageY: event.pageY + }; + } else if (event.type == 'mousedown') { + SDL.DOMButtons[event.button] = 1; + } else if (event.type == 'mouseup') { + // ignore extra ups, can happen if we leave the canvas while pressing down, then return, + // since we add a mouseup in that case + if (!SDL.DOMButtons[event.button]) { + return; + } + + SDL.DOMButtons[event.button] = 0; + } + + // We can only request fullscreen as the result of user input. + // Due to this limitation, we toggle a boolean on keydown which + // SDL_WM_ToggleFullScreen will check and subsequently set another + // flag indicating for us to request fullscreen on the following + // keyup. This isn't perfect, but it enables SDL_WM_ToggleFullScreen + // to work as the result of a keypress (which is an extremely + // common use case). + if (event.type === 'keydown') { + SDL.canRequestFullscreen = true; + } else if (event.type === 'keyup') { + if (SDL.isRequestingFullscreen) { + Module['requestFullScreen'](true, true); + SDL.isRequestingFullscreen = false; + } + SDL.canRequestFullscreen = false; + } + + // SDL expects a unicode character to be passed to its keydown events. + // Unfortunately, the browser APIs only provide a charCode property on + // keypress events, so we must backfill in keydown events with their + // subsequent keypress event's charCode. + if (event.type === 'keypress' && SDL.savedKeydown) { + // charCode is read-only + SDL.savedKeydown.keypressCharCode = event.charCode; + SDL.savedKeydown = null; + } else if (event.type === 'keydown') { + SDL.savedKeydown = event; + } + + // Don't push keypress events unless SDL_StartTextInput has been called. + if (event.type !== 'keypress' || SDL.textInput) { + SDL.events.push(event); + } + break; + case 'mouseout': + // Un-press all pressed mouse buttons, because we might miss the release outside of the canvas + for (var i = 0; i < 3; i++) { + if (SDL.DOMButtons[i]) { + SDL.events.push({ + type: 'mouseup', + button: i, + pageX: event.pageX, + pageY: event.pageY + }); + SDL.DOMButtons[i] = 0; + } + } + event.preventDefault(); + break; + case 'blur': + case 'visibilitychange': { + // Un-press all pressed keys: TODO + for (var code in SDL.keyboardMap) { + SDL.events.push({ + type: 'keyup', + keyCode: SDL.keyboardMap[code] + }); + } + event.preventDefault(); + break; + } + case 'unload': + if (Browser.mainLoop.runner) { + SDL.events.push(event); + // Force-run a main event loop, since otherwise this event will never be caught! + Browser.mainLoop.runner(); + } + return; + case 'resize': + SDL.events.push(event); + // manually triggered resize event doesn't have a preventDefault member + if (event.preventDefault) { + event.preventDefault(); + } + break; + } + if (SDL.events.length >= 10000) { + Module.printErr('SDL event queue full, dropping events'); + SDL.events = SDL.events.slice(0, 10000); + } + return; + },handleEvent:function (event) { + if (event.handled) return; + event.handled = true; + + switch (event.type) { + case 'keydown': case 'keyup': { + var down = event.type === 'keydown'; + var code = event.keyCode; + if (code >= 65 && code <= 90) { + code += 32; // make lowercase for SDL + } else { + code = SDL.keyCodes[event.keyCode] || event.keyCode; + } + + HEAP8[(((SDL.keyboardState)+(code))|0)]=down; + // TODO: lmeta, rmeta, numlock, capslock, KMOD_MODE, KMOD_RESERVED + SDL.modState = (HEAP8[(((SDL.keyboardState)+(1248))|0)] ? 0x0040 | 0x0080 : 0) | // KMOD_LCTRL & KMOD_RCTRL + (HEAP8[(((SDL.keyboardState)+(1249))|0)] ? 0x0001 | 0x0002 : 0) | // KMOD_LSHIFT & KMOD_RSHIFT + (HEAP8[(((SDL.keyboardState)+(1250))|0)] ? 0x0100 | 0x0200 : 0); // KMOD_LALT & KMOD_RALT + + if (down) { + SDL.keyboardMap[code] = event.keyCode; // save the DOM input, which we can use to unpress it during blur + } else { + delete SDL.keyboardMap[code]; + } + + break; + } + case 'mousedown': case 'mouseup': + if (event.type == 'mousedown') { + // SDL_BUTTON(x) is defined as (1 << ((x)-1)). SDL buttons are 1-3, + // and DOM buttons are 0-2, so this means that the below formula is + // correct. + SDL.buttonState |= 1 << event.button; + } else if (event.type == 'mouseup') { + SDL.buttonState &= ~(1 << event.button); + } + // fall through + case 'mousemove': { + Browser.calculateMouseEvent(event); + break; + } + } + },makeCEvent:function (event, ptr) { + if (typeof event === 'number') { + // This is a pointer to a native C event that was SDL_PushEvent'ed + _memcpy(ptr, event, 28); // XXX + return; + } + + SDL.handleEvent(event); + + switch (event.type) { + case 'keydown': case 'keyup': { + var down = event.type === 'keydown'; + //Module.print('Received key event: ' + event.keyCode); + var key = event.keyCode; + if (key >= 65 && key <= 90) { + key += 32; // make lowercase for SDL + } else { + key = SDL.keyCodes[event.keyCode] || event.keyCode; + } + var scan; + if (key >= 1024) { + scan = key - 1024; + } else { + scan = SDL.scanCodes[key] || key; + } + + HEAP32[((ptr)>>2)]=SDL.DOMEventToSDLEvent[event.type]; + HEAP8[(((ptr)+(8))|0)]=down ? 1 : 0; + HEAP8[(((ptr)+(9))|0)]=0; // TODO + HEAP32[(((ptr)+(12))>>2)]=scan; + HEAP32[(((ptr)+(16))>>2)]=key; + HEAP16[(((ptr)+(20))>>1)]=SDL.modState; + // some non-character keys (e.g. backspace and tab) won't have keypressCharCode set, fill in with the keyCode. + HEAP32[(((ptr)+(24))>>2)]=event.keypressCharCode || key; + + break; + } + case 'keypress': { + HEAP32[((ptr)>>2)]=SDL.DOMEventToSDLEvent[event.type]; + // Not filling in windowID for now + var cStr = intArrayFromString(String.fromCharCode(event.charCode)); + for (var i = 0; i < cStr.length; ++i) { + HEAP8[(((ptr)+(8 + i))|0)]=cStr[i]; + } + break; + } + case 'mousedown': case 'mouseup': case 'mousemove': { + if (event.type != 'mousemove') { + var down = event.type === 'mousedown'; + HEAP32[((ptr)>>2)]=SDL.DOMEventToSDLEvent[event.type]; + HEAP8[(((ptr)+(8))|0)]=event.button+1; // DOM buttons are 0-2, SDL 1-3 + HEAP8[(((ptr)+(9))|0)]=down ? 1 : 0; + HEAP32[(((ptr)+(12))>>2)]=Browser.mouseX; + HEAP32[(((ptr)+(16))>>2)]=Browser.mouseY; + } else { + HEAP32[((ptr)>>2)]=SDL.DOMEventToSDLEvent[event.type]; + HEAP8[(((ptr)+(8))|0)]=SDL.buttonState; + HEAP32[(((ptr)+(12))>>2)]=Browser.mouseX; + HEAP32[(((ptr)+(16))>>2)]=Browser.mouseY; + HEAP32[(((ptr)+(20))>>2)]=Browser.mouseMovementX; + HEAP32[(((ptr)+(24))>>2)]=Browser.mouseMovementY; + } + break; + } + case 'unload': { + HEAP32[((ptr)>>2)]=SDL.DOMEventToSDLEvent[event.type]; + break; + } + case 'resize': { + HEAP32[((ptr)>>2)]=SDL.DOMEventToSDLEvent[event.type]; + HEAP32[(((ptr)+(4))>>2)]=event.w; + HEAP32[(((ptr)+(8))>>2)]=event.h; + break; + } + case 'joystick_button_up': case 'joystick_button_down': { + var state = event.type === 'joystick_button_up' ? 0 : 1; + HEAP32[((ptr)>>2)]=SDL.DOMEventToSDLEvent[event.type]; + HEAP8[(((ptr)+(4))|0)]=event.index; + HEAP8[(((ptr)+(5))|0)]=event.button; + HEAP8[(((ptr)+(6))|0)]=state; + break; + } + case 'joystick_axis_motion': { + HEAP32[((ptr)>>2)]=SDL.DOMEventToSDLEvent[event.type]; + HEAP8[(((ptr)+(4))|0)]=event.index; + HEAP8[(((ptr)+(5))|0)]=event.axis; + HEAP32[(((ptr)+(8))>>2)]=SDL.joystickAxisValueConversion(event.value); + break; + } + default: throw 'Unhandled SDL event: ' + event.type; + } + },estimateTextWidth:function (fontData, text) { + var h = fontData.size; + var fontString = h + 'px ' + fontData.name; + var tempCtx = SDL.ttfContext; + tempCtx.save(); + tempCtx.font = fontString; + var ret = tempCtx.measureText(text).width | 0; + tempCtx.restore(); + return ret; + },allocateChannels:function (num) { // called from Mix_AllocateChannels and init + if (SDL.numChannels && SDL.numChannels >= num && num != 0) return; + SDL.numChannels = num; + SDL.channels = []; + for (var i = 0; i < num; i++) { + SDL.channels[i] = { + audio: null, + volume: 1.0 + }; + } + },setGetVolume:function (info, volume) { + if (!info) return 0; + var ret = info.volume * 128; // MIX_MAX_VOLUME + if (volume != -1) { + info.volume = volume / 128; + if (info.audio) info.audio.volume = info.volume; + } + return ret; + },fillWebAudioBufferFromHeap:function (heapPtr, sizeSamplesPerChannel, dstAudioBuffer) { + // The input audio data is interleaved across the channels, i.e. [L, R, L, R, L, R, ...] and is either 8-bit or 16-bit as + // supported by the SDL API. The output audio wave data for Web Audio API must be in planar buffers of [-1,1]-normalized Float32 data, + // so perform a buffer conversion for the data. + var numChannels = SDL.audio.channels; + for(var c = 0; c < numChannels; ++c) { + var channelData = dstAudioBuffer['getChannelData'](c); + if (channelData.length != sizeSamplesPerChannel) { + throw 'Web Audio output buffer length mismatch! Destination size: ' + channelData.length + ' samples vs expected ' + sizeSamplesPerChannel + ' samples!'; + } + if (SDL.audio.format == 0x8010 /*AUDIO_S16LSB*/) { + for(var j = 0; j < sizeSamplesPerChannel; ++j) { + channelData[j] = (HEAP16[(((heapPtr)+((j*numChannels + c)*2))>>1)]) / 0x8000; + } + } else if (SDL.audio.format == 0x0008 /*AUDIO_U8*/) { + for(var j = 0; j < sizeSamplesPerChannel; ++j) { + var v = (HEAP8[(((heapPtr)+(j*numChannels + c))|0)]); + channelData[j] = ((v >= 0) ? v-128 : v+128) /128; + } + } + } + },debugSurface:function (surfData) { + console.log('dumping surface ' + [surfData.surf, surfData.source, surfData.width, surfData.height]); + var image = surfData.ctx.getImageData(0, 0, surfData.width, surfData.height); + var data = image.data; + var num = Math.min(surfData.width, surfData.height); + for (var i = 0; i < num; i++) { + console.log(' diagonal ' + i + ':' + [data[i*surfData.width*4 + i*4 + 0], data[i*surfData.width*4 + i*4 + 1], data[i*surfData.width*4 + i*4 + 2], data[i*surfData.width*4 + i*4 + 3]]); + } + },joystickEventState:1,lastJoystickState:{},joystickNamePool:{},recordJoystickState:function (joystick, state) { + // Standardize button state. + var buttons = new Array(state.buttons.length); + for (var i = 0; i < state.buttons.length; i++) { + buttons[i] = SDL.getJoystickButtonState(state.buttons[i]); + } + + SDL.lastJoystickState[joystick] = { + buttons: buttons, + axes: state.axes.slice(0), + timestamp: state.timestamp, + index: state.index, + id: state.id + }; + },getJoystickButtonState:function (button) { + if (typeof button === 'object') { + // Current gamepad API editor's draft (Firefox Nightly) + // https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#idl-def-GamepadButton + return button.pressed; + } else { + // Current gamepad API working draft (Firefox / Chrome Stable) + // http://www.w3.org/TR/2012/WD-gamepad-20120529/#gamepad-interface + return button > 0; + } + },queryJoysticks:function () { + for (var joystick in SDL.lastJoystickState) { + var state = SDL.getGamepad(joystick - 1); + var prevState = SDL.lastJoystickState[joystick]; + // Check only if the timestamp has differed. + // NOTE: Timestamp is not available in Firefox. + if (typeof state.timestamp !== 'number' || state.timestamp !== prevState.timestamp) { + var i; + for (i = 0; i < state.buttons.length; i++) { + var buttonState = SDL.getJoystickButtonState(state.buttons[i]); + // NOTE: The previous state already has a boolean representation of + // its button, so no need to standardize its button state here. + if (buttonState !== prevState.buttons[i]) { + // Insert button-press event. + SDL.events.push({ + type: buttonState ? 'joystick_button_down' : 'joystick_button_up', + joystick: joystick, + index: joystick - 1, + button: i + }); + } + } + for (i = 0; i < state.axes.length; i++) { + if (state.axes[i] !== prevState.axes[i]) { + // Insert axes-change event. + SDL.events.push({ + type: 'joystick_axis_motion', + joystick: joystick, + index: joystick - 1, + axis: i, + value: state.axes[i] + }); + } + } + + SDL.recordJoystickState(joystick, state); + } + } + },joystickAxisValueConversion:function (value) { + // Ensures that 0 is 0, 1 is 32767, and -1 is 32768. + return Math.ceil(((value+1) * 32767.5) - 32768); + },getGamepads:function () { + var fcn = navigator.getGamepads || navigator.webkitGamepads || navigator.mozGamepads || navigator.gamepads || navigator.webkitGetGamepads; + if (fcn !== undefined) { + // The function must be applied on the navigator object. + return fcn.apply(navigator); + } else { + return []; + } + },getGamepad:function (deviceIndex) { + var gamepads = SDL.getGamepads(); + if (gamepads.length > deviceIndex && deviceIndex >= 0) { + return gamepads[deviceIndex]; + } + return null; + }};function _SDL_GetAppState() { + var state = 0; + + if (Browser.pointerLock) { + state |= 0x01; // SDL_APPMOUSEFOCUS + } + if (document.hasFocus()) { + state |= 0x02; // SDL_APPINPUTFOCUS + } + state |= 0x04; // SDL_APPACTIVE + + return state; + } + + function _SDL_GetKeyboardState(numKeys) { + if (numKeys) { + HEAP32[((numKeys)>>2)]=65536; + } + return SDL.keyboardState; + } + + + function _SDL_Init(initFlags) { + SDL.startTime = Date.now(); + SDL.initFlags = initFlags; + + // capture all key events. we just keep down and up, but also capture press to prevent default actions + if (!Module['doNotCaptureKeyboard']) { + document.addEventListener("keydown", SDL.receiveEvent); + document.addEventListener("keyup", SDL.receiveEvent); + document.addEventListener("keypress", SDL.receiveEvent); + window.addEventListener("blur", SDL.receiveEvent); + document.addEventListener("visibilitychange", SDL.receiveEvent); + } + + if (initFlags & 0x200) { + // SDL_INIT_JOYSTICK + // Firefox will not give us Joystick data unless we register this NOP + // callback. + // https://bugzilla.mozilla.org/show_bug.cgi?id=936104 + addEventListener("gamepadconnected", function() {}); + } + + window.addEventListener("unload", SDL.receiveEvent); + SDL.keyboardState = _malloc(0x10000); // Our SDL needs 512, but 64K is safe for older SDLs + _memset(SDL.keyboardState, 0, 0x10000); + // Initialize this structure carefully for closure + SDL.DOMEventToSDLEvent['keydown'] = 0x300 /* SDL_KEYDOWN */; + SDL.DOMEventToSDLEvent['keyup'] = 0x301 /* SDL_KEYUP */; + SDL.DOMEventToSDLEvent['keypress'] = 0x303 /* SDL_TEXTINPUT */; + SDL.DOMEventToSDLEvent['mousedown'] = 0x401 /* SDL_MOUSEBUTTONDOWN */; + SDL.DOMEventToSDLEvent['mouseup'] = 0x402 /* SDL_MOUSEBUTTONUP */; + SDL.DOMEventToSDLEvent['mousemove'] = 0x400 /* SDL_MOUSEMOTION */; + SDL.DOMEventToSDLEvent['unload'] = 0x100 /* SDL_QUIT */; + SDL.DOMEventToSDLEvent['resize'] = 0x7001 /* SDL_VIDEORESIZE/SDL_EVENT_COMPAT2 */; + // These are not technically DOM events; the HTML gamepad API is poll-based. + // However, we define them here, as the rest of the SDL code assumes that + // all SDL events originate as DOM events. + SDL.DOMEventToSDLEvent['joystick_axis_motion'] = 0x600 /* SDL_JOYAXISMOTION */; + SDL.DOMEventToSDLEvent['joystick_button_down'] = 0x603 /* SDL_JOYBUTTONDOWN */; + SDL.DOMEventToSDLEvent['joystick_button_up'] = 0x604 /* SDL_JOYBUTTONUP */; + return 0; // success + }function _SDL_WasInit() { + if (SDL.startTime === null) { + _SDL_Init(); + } + return 1; + } + + function _SDL_EnableUNICODE(on) { + var ret = SDL.unicode || 0; + SDL.unicode = on; + return ret; + } + + function _SDL_EnableKeyRepeat(delay, interval) { + // TODO + } + + function _SDL_JoystickClose(joystick) { + delete SDL.lastJoystickState[joystick]; + } + + function _SDL_QuitSubSystem(flags) { + Module.print('SDL_QuitSubSystem called (and ignored)'); + } + + + function _SDL_GetError() { + if (!SDL.errorMessage) { + SDL.errorMessage = allocate(intArrayFromString("unknown SDL-emscripten error"), 'i8', ALLOC_NORMAL); + } + return SDL.errorMessage; + } + + function _SDL_NumJoysticks() { + var count = 0; + var gamepads = SDL.getGamepads(); + // The length is not the number of gamepads; check which ones are defined. + for (var i = 0; i < gamepads.length; i++) { + if (gamepads[i] !== undefined && gamepads[i] !== null) count++; + } + return count; + } + + function _SDL_JoystickName(deviceIndex) { + var gamepad = SDL.getGamepad(deviceIndex); + if (gamepad) { + var name = gamepad.id; + if (SDL.joystickNamePool.hasOwnProperty(name)) { + return SDL.joystickNamePool[name]; + } + return SDL.joystickNamePool[name] = allocate(intArrayFromString(name), 'i8', ALLOC_NORMAL); + } + return 0; + } + + function _SDL_JoystickOpen(deviceIndex) { + var gamepad = SDL.getGamepad(deviceIndex); + if (gamepad) { + // Use this as a unique 'pointer' for this joystick. + var joystick = deviceIndex+1; + SDL.recordJoystickState(joystick, gamepad); + return joystick; + } + return 0; + } + + function _SDL_JoystickNumAxes(joystick) { + var gamepad = SDL.getGamepad(joystick - 1); + if (gamepad) { + return gamepad.axes.length; + } + return 0; + } + + function _SDL_JoystickNumHats(joystick) { return 0; } + + function _SDL_JoystickNumButtons(joystick) { + var gamepad = SDL.getGamepad(joystick - 1); + if (gamepad) { + return gamepad.buttons.length; + } + return 0; + } + + function _SDL_JoystickNumBalls(joystick) { return 0; } + + function _SDL_JoystickEventState(state) { + if (state < 0) { + // SDL_QUERY: Return current state. + return SDL.joystickEventState; + } + return SDL.joystickEventState = state; + } + + function _SDL_ShowCursor(toggle) { + switch (toggle) { + case 0: // SDL_DISABLE + if (Browser.isFullScreen) { // only try to lock the pointer when in full screen mode + Module['canvas'].requestPointerLock(); + return 0; + } else { // else return SDL_ENABLE to indicate the failure + return 1; + } + break; + case 1: // SDL_ENABLE + Module['canvas'].exitPointerLock(); + return 1; + break; + case -1: // SDL_QUERY + return !Browser.pointerLock; + break; + default: + console.log( "SDL_ShowCursor called with unknown toggle parameter value: " + toggle + "." ); + break; + } + } + + function _SDL_WM_GrabInput() {} + + function _SDL_PumpEvents(){ + SDL.events.forEach(function(event) { + SDL.handleEvent(event); + }); + } + + function _SDL_PeepEvents(events, numEvents, action, from, to) { + switch(action) { + case 2: { // SDL_GETEVENT + assert(numEvents == 1); + var got = 0; + while (SDL.events.length > 0 && numEvents > 0) { + var type = SDL.DOMEventToSDLEvent[SDL.events[0].type]; + if (type < from || type > to) break; + SDL.makeCEvent(SDL.events.shift(), events); + got++; + numEvents--; + // events += sizeof(..) + } + return got; + } + default: throw 'SDL_PeepEvents does not yet support that action: ' + action; + } + } + + function _SDL_WarpMouse(x, y) { + return; // TODO: implement this in a non-buggy way. Need to keep relative mouse movements correct after calling this + var rect = Module["canvas"].getBoundingClientRect(); + SDL.events.push({ + type: 'mousemove', + pageX: x + (window.scrollX + rect.left), + pageY: y + (window.scrollY + rect.top) + }); + } + + function _SDL_PollEvent(ptr) { + if (SDL.initFlags & 0x200 && SDL.joystickEventState) { + // If SDL_INIT_JOYSTICK was supplied AND the joystick system is configured + // to automatically query for events, query for joystick events. + SDL.queryJoysticks(); + } + if (SDL.events.length === 0) return 0; + if (ptr) { + SDL.makeCEvent(SDL.events.shift(), ptr); + } + return 1; + } + + function _SDL_GetKeyName(key) { + if (!SDL.keyName) { + SDL.keyName = allocate(intArrayFromString('unknown key'), 'i8', ALLOC_NORMAL); + } + return SDL.keyName; + } + + function _SDL_JoystickUpdate() { + SDL.queryJoysticks(); + } + + function _SDL_JoystickGetBall(joystick, ball, dxptr, dyptr) { return -1; } + + function _SDL_JoystickGetButton(joystick, button) { + var gamepad = SDL.getGamepad(joystick - 1); + if (gamepad && gamepad.buttons.length > button) { + return SDL.getJoystickButtonState(gamepad.buttons[button]) ? 1 : 0; + } + return 0; + } + + function _SDL_JoystickGetHat(joystick, hat) { return 0; } + + function _SDL_JoystickGetAxis(joystick, axis) { + var gamepad = SDL.getGamepad(joystick - 1); + if (gamepad && gamepad.axes.length > axis) { + return SDL.joystickAxisValueConversion(gamepad.axes[axis]); + } + return 0; + } + + + function _SDL_VideoDriverName(buf, max_size) { + if (SDL.startTime === null) { + return 0; //return NULL + } + //driverName - emscripten_sdl_driver + var driverName = [101, 109, 115, 99, 114, 105, 112, 116, 101, + 110, 95, 115, 100, 108, 95, 100, 114, 105, 118, 101, 114]; + + var index = 0; + var size = driverName.length; + + if (max_size <= size) { + size = max_size - 1; //-1 cause null-terminator + } + + while (index < size) { + var value = driverName[index]; + HEAP8[(((buf)+(index))|0)]=value; + index++; + } + + HEAP8[(((buf)+(index))|0)]=0; + return buf; + }function _SDL_AudioDriverName(buf, max_size) { + return _SDL_VideoDriverName(buf, max_size); + } + + function _SDL_OpenAudio(desired, obtained) { + try { + SDL.audio = { + freq: HEAPU32[((desired)>>2)], + format: HEAPU16[(((desired)+(4))>>1)], + channels: HEAPU8[(((desired)+(6))|0)], + samples: HEAPU16[(((desired)+(8))>>1)], // Samples in the CB buffer per single sound channel. + callback: HEAPU32[(((desired)+(16))>>2)], + userdata: HEAPU32[(((desired)+(20))>>2)], + paused: true, + timer: null + }; + // The .silence field tells the constant sample value that corresponds to the safe un-skewed silence value for the wave data. + if (SDL.audio.format == 0x0008 /*AUDIO_U8*/) { + SDL.audio.silence = 128; // Audio ranges in [0, 255], so silence is half-way in between. + } else if (SDL.audio.format == 0x8010 /*AUDIO_S16LSB*/) { + SDL.audio.silence = 0; // Signed data in range [-32768, 32767], silence is 0. + } else { + throw 'Invalid SDL audio format ' + SDL.audio.format + '!'; + } + // Round the desired audio frequency up to the next 'common' frequency value. + // Web Audio API spec states 'An implementation must support sample-rates in at least the range 22050 to 96000.' + if (SDL.audio.freq <= 0) { + throw 'Unsupported sound frequency ' + SDL.audio.freq + '!'; + } else if (SDL.audio.freq <= 22050) { + SDL.audio.freq = 22050; // Take it safe and clamp everything lower than 22kHz to that. + } else if (SDL.audio.freq <= 32000) { + SDL.audio.freq = 32000; + } else if (SDL.audio.freq <= 44100) { + SDL.audio.freq = 44100; + } else if (SDL.audio.freq <= 48000) { + SDL.audio.freq = 48000; + } else if (SDL.audio.freq <= 96000) { + SDL.audio.freq = 96000; + } else { + throw 'Unsupported sound frequency ' + SDL.audio.freq + '!'; + } + if (SDL.audio.channels == 0) { + SDL.audio.channels = 1; // In SDL both 0 and 1 mean mono. + } else if (SDL.audio.channels < 0 || SDL.audio.channels > 32) { + throw 'Unsupported number of audio channels for SDL audio: ' + SDL.audio.channels + '!'; + } else if (SDL.audio.channels != 1 && SDL.audio.channels != 2) { // Unsure what SDL audio spec supports. Web Audio spec supports up to 32 channels. + console.log('Warning: Using untested number of audio channels ' + SDL.audio.channels); + } + if (SDL.audio.samples < 128 || SDL.audio.samples > 524288 /* arbitrary cap */) { + throw 'Unsupported audio callback buffer size ' + SDL.audio.samples + '!'; + } else if ((SDL.audio.samples & (SDL.audio.samples-1)) != 0) { + throw 'Audio callback buffer size ' + SDL.audio.samples + ' must be a power-of-two!'; + } + + var totalSamples = SDL.audio.samples*SDL.audio.channels; + SDL.audio.bytesPerSample = (SDL.audio.format == 0x0008 /*AUDIO_U8*/ || SDL.audio.format == 0x8008 /*AUDIO_S8*/) ? 1 : 2; + SDL.audio.bufferSize = totalSamples*SDL.audio.bytesPerSample; + SDL.audio.buffer = _malloc(SDL.audio.bufferSize); + + // To account for jittering in frametimes, always have multiple audio buffers queued up for the audio output device. + // This helps that we won't starve that easily if a frame takes long to complete. + SDL.audio.numSimultaneouslyQueuedBuffers = Module['SDL_numSimultaneouslyQueuedBuffers'] || 3; + + // Create a callback function that will be routinely called to ask more audio data from the user application. + SDL.audio.caller = function SDL_audio_caller() { + if (!SDL.audio) { + return; + } + Runtime.dynCall('viii', SDL.audio.callback, [SDL.audio.userdata, SDL.audio.buffer, SDL.audio.bufferSize]); + SDL.audio.pushAudio(SDL.audio.buffer, SDL.audio.bufferSize); + }; + + SDL.audio.audioOutput = new Audio(); + // As a workaround use Mozilla Audio Data API on Firefox until it ships with Web Audio and sound quality issues are fixed. + if (typeof(SDL.audio.audioOutput['mozSetup'])==='function') { + SDL.audio.audioOutput['mozSetup'](SDL.audio.channels, SDL.audio.freq); // use string attributes on mozOutput for closure compiler + SDL.audio.mozBuffer = new Float32Array(totalSamples); + SDL.audio.nextPlayTime = 0; + SDL.audio.pushAudio = function SDL_audio_pushAudio(ptr, size) { + --SDL.audio.numAudioTimersPending; + var mozBuffer = SDL.audio.mozBuffer; + // The input audio data for SDL audio is either 8-bit or 16-bit interleaved across channels, output for Mozilla Audio Data API + // needs to be Float32 interleaved, so perform a sample conversion. + if (SDL.audio.format == 0x8010 /*AUDIO_S16LSB*/) { + for (var i = 0; i < totalSamples; i++) { + mozBuffer[i] = (HEAP16[(((ptr)+(i*2))>>1)]) / 0x8000; + } + } else if (SDL.audio.format == 0x0008 /*AUDIO_U8*/) { + for (var i = 0; i < totalSamples; i++) { + var v = (HEAP8[(((ptr)+(i))|0)]); + mozBuffer[i] = ((v >= 0) ? v-128 : v+128) /128; + } + } + // Submit the audio data to audio device. + SDL.audio.audioOutput['mozWriteAudio'](mozBuffer); + + // Compute when the next audio callback should be called. + var curtime = Date.now() / 1000.0 - SDL.audio.startTime; + var playtime = Math.max(curtime, SDL.audio.nextPlayTime); + var buffer_duration = SDL.audio.samples / SDL.audio.freq; + SDL.audio.nextPlayTime = playtime + buffer_duration; + // Schedule the next audio callback call to occur when the current one finishes. + SDL.audio.timer = Browser.safeSetTimeout(SDL.audio.caller, 1000.0 * (playtime-curtime)); + ++SDL.audio.numAudioTimersPending; + // And also schedule extra buffers _now_ if we have too few in queue. + if (SDL.audio.numAudioTimersPending < SDL.audio.numSimultaneouslyQueuedBuffers) { + ++SDL.audio.numAudioTimersPending; + Browser.safeSetTimeout(SDL.audio.caller, 1.0); + } + } + } else { + // Initialize Web Audio API if we haven't done so yet. Note: Only initialize Web Audio context ever once on the web page, + // since initializing multiple times fails on Chrome saying 'audio resources have been exhausted'. + if (!SDL.audioContext) { + if (typeof(AudioContext) === 'function') { + SDL.audioContext = new AudioContext(); + } else if (typeof(webkitAudioContext) === 'function') { + SDL.audioContext = new webkitAudioContext(); + } else { + throw 'Web Audio API is not available!'; + } + } + SDL.audio.soundSource = new Array(); // Use an array of sound sources as a ring buffer to queue blocks of synthesized audio to Web Audio API. + SDL.audio.nextSoundSource = 0; // Index of the next sound buffer in the ring buffer queue to play. + SDL.audio.nextPlayTime = 0; // Time in seconds when the next audio block is due to start. + + // The pushAudio function with a new audio buffer whenever there is new audio data to schedule to be played back on the device. + SDL.audio.pushAudio=function(ptr,sizeBytes) { + try { + --SDL.audio.numAudioTimersPending; + if (SDL.audio.paused) return; + + var sizeSamples = sizeBytes / SDL.audio.bytesPerSample; // How many samples fit in the callback buffer? + var sizeSamplesPerChannel = sizeSamples / SDL.audio.channels; // How many samples per a single channel fit in the cb buffer? + if (sizeSamplesPerChannel != SDL.audio.samples) { + throw 'Received mismatching audio buffer size!'; + } + // Allocate new sound buffer to be played. + var source = SDL.audioContext['createBufferSource'](); + if (SDL.audio.soundSource[SDL.audio.nextSoundSource]) { + SDL.audio.soundSource[SDL.audio.nextSoundSource]['disconnect'](); // Explicitly disconnect old source, since we know it shouldn't be running anymore. + } + SDL.audio.soundSource[SDL.audio.nextSoundSource] = source; + var soundBuffer = SDL.audioContext['createBuffer'](SDL.audio.channels,sizeSamplesPerChannel,SDL.audio.freq); + SDL.audio.soundSource[SDL.audio.nextSoundSource]['connect'](SDL.audioContext['destination']); + + SDL.fillWebAudioBufferFromHeap(ptr, sizeSamplesPerChannel, soundBuffer); + // Workaround https://bugzilla.mozilla.org/show_bug.cgi?id=883675 by setting the buffer only after filling. The order is important here! + source['buffer'] = soundBuffer; + + // Schedule the generated sample buffer to be played out at the correct time right after the previously scheduled + // sample buffer has finished. + var curtime = SDL.audioContext['currentTime']; + var playtime = Math.max(curtime, SDL.audio.nextPlayTime); + SDL.audio.soundSource[SDL.audio.nextSoundSource]['start'](playtime); + var buffer_duration = sizeSamplesPerChannel / SDL.audio.freq; + SDL.audio.nextPlayTime = playtime + buffer_duration; + // Timer will be scheduled before the buffer completed playing. + // Extra buffers are needed to avoid disturbing playing buffer. + SDL.audio.nextSoundSource = (SDL.audio.nextSoundSource + 1) % (SDL.audio.numSimultaneouslyQueuedBuffers + 2); + var secsUntilNextCall = playtime-curtime; + + // Queue the next audio frame push to be performed when the previously queued buffer has finished playing. + var preemptBufferFeedMSecs = 1000*buffer_duration/2.0; + SDL.audio.timer = Browser.safeSetTimeout(SDL.audio.caller, Math.max(0.0, 1000.0*secsUntilNextCall-preemptBufferFeedMSecs)); + ++SDL.audio.numAudioTimersPending; + + // If we are risking starving, immediately queue extra buffers. + if (SDL.audio.numAudioTimersPending < SDL.audio.numSimultaneouslyQueuedBuffers) { + ++SDL.audio.numAudioTimersPending; + Browser.safeSetTimeout(SDL.audio.caller, 1.0); + } + } catch(e) { + console.log('Web Audio API error playing back audio: ' + e.toString()); + } + } + } + + if (obtained) { + // Report back the initialized audio parameters. + HEAP32[((obtained)>>2)]=SDL.audio.freq; + HEAP16[(((obtained)+(4))>>1)]=SDL.audio.format; + HEAP8[(((obtained)+(6))|0)]=SDL.audio.channels; + HEAP8[(((obtained)+(7))|0)]=SDL.audio.silence; + HEAP16[(((obtained)+(8))>>1)]=SDL.audio.samples; + HEAP32[(((obtained)+(16))>>2)]=SDL.audio.callback; + HEAP32[(((obtained)+(20))>>2)]=SDL.audio.userdata; + } + SDL.allocateChannels(32); + + } catch(e) { + console.log('Initializing SDL audio threw an exception: "' + e.toString() + '"! Continuing without audio.'); + SDL.audio = null; + SDL.allocateChannels(0); + if (obtained) { + HEAP32[((obtained)>>2)]=0; + HEAP16[(((obtained)+(4))>>1)]=0; + HEAP8[(((obtained)+(6))|0)]=0; + HEAP8[(((obtained)+(7))|0)]=0; + HEAP16[(((obtained)+(8))>>1)]=0; + HEAP32[(((obtained)+(16))>>2)]=0; + HEAP32[(((obtained)+(20))>>2)]=0; + } + } + if (!SDL.audio) { + return -1; + } + return 0; + } + + function _SDL_PauseAudio(pauseOn) { + if (!SDL.audio) { + return; + } + if (pauseOn) { + if (SDL.audio.timer !== undefined) { + clearTimeout(SDL.audio.timer); + SDL.audio.numAudioTimersPending = 0; + SDL.audio.timer = undefined; + } + if (SDL.audio.scriptProcessorNode !== undefined) { + SDL.audio.scriptProcessorNode['disconnect'](); + SDL.audio.scriptProcessorNode = undefined; + } + } else if (!SDL.audio.timer && !SDL.audio.scriptProcessorNode) { + // If we are using the same sampling frequency as the native sampling rate of the Web Audio graph is using, we can feed our buffers via + // Web Audio ScriptProcessorNode, which is a pull-mode API that calls back to our code to get audio data. + if (SDL.audio.freq == SDL.audioContext['sampleRate']) { + var sizeSamplesPerChannel = SDL.audio.bufferSize / SDL.audio.bytesPerSample / SDL.audio.channels; // How many samples per a single channel fit in the cb buffer? + SDL.audio.scriptProcessorNode = SDL.audioContext['createScriptProcessor'](sizeSamplesPerChannel, 0, SDL.audio.channels); + SDL.audio.scriptProcessorNode['onaudioprocess'] = function (e) { + Runtime.dynCall('viii', SDL.audio.callback, [SDL.audio.userdata, SDL.audio.buffer, SDL.audio.bufferSize]); + SDL.fillWebAudioBufferFromHeap(SDL.audio.buffer, sizeSamplesPerChannel, e['outputBuffer']); + } + SDL.audio.scriptProcessorNode['connect'](SDL.audioContext['destination']); + } else { // If we are using a different sampling rate, must manually queue audio data to the graph via timers. + // Start the audio playback timer callback loop. + SDL.audio.numAudioTimersPending = 1; + SDL.audio.timer = Browser.safeSetTimeout(SDL.audio.caller, 1); + SDL.audio.startTime = Date.now() / 1000.0; // Only used for Mozilla Audio Data API. Not needed for Web Audio API. + } + } + SDL.audio.paused = pauseOn; + } + + function _SDL_CloseAudio() { + if (SDL.audio) { + try{ + for(var i = 0; i < SDL.audio.soundSource.length; ++i) { + if (!(typeof(SDL.audio.soundSource[i]==='undefined'))) { + SDL.audio.soundSource[i].stop(0); + } + } + } catch(e) {} + SDL.audio.soundSource = null; + _SDL_PauseAudio(1); + _free(SDL.audio.buffer); + SDL.audio = null; + SDL.allocateChannels(0); + } + } + + function _SDL_UnlockAudio() {} + + function _SDL_LockAudio() {} + + function _Sys_Cwd() { + var cwd = allocate(intArrayFromString(FS.cwd()), 'i8', ALLOC_STACK); + return cwd; + } + + function _Sys_PIDIsRunning(pid) { + return 1; + } + + function _Sys_PID() { + return 0; + } + + function _SDL_HasRDTSC() { return 0; } + + function _SDL_HasMMX() { return 0; } + + function _SDL_Has3DNow() { return 0; } + + function _SDL_HasSSE() { return 0; } + + function _SDL_HasSSE2() { return 0; } + + function _SDL_HasAltiVec() { return 0; } + + function _Sys_GetCurrentUser() { + var stack = Runtime.stackSave(); + var ret = allocate(intArrayFromString('player'), 'i8', ALLOC_STACK); + Runtime.stackRestore(stack); + return ret; + } + + function _fputs(s, stream) { + // int fputs(const char *restrict s, FILE *restrict stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputs.html + var fd = _fileno(stream); + return _write(fd, s, _strlen(s)); + } + + function _Sys_ErrorDialog(error) { + error = Pointer_stringify(error); + + var handler = Module['exitHandler']; + if (handler) { + SYS.exited = true; + handler(error); + return; + } + + var title = SYS.dialog.querySelector('.title'); + title.className = 'title error'; + title.innerHTML = 'Error'; + + var description = SYS.dialog.querySelector('.description'); + description.innerHTML = error; + + SYS.dialog.style.display = 'block'; + } + + + var DLFCN={error:null,errorMsg:null,loadedLibs:{},loadedLibNames:{}};function _dlclose(handle) { + // int dlclose(void *handle); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/dlclose.html + if (!DLFCN.loadedLibs[handle]) { + DLFCN.errorMsg = 'Tried to dlclose() unopened handle: ' + handle; + return 1; + } else { + var lib_record = DLFCN.loadedLibs[handle]; + if (--lib_record.refcount == 0) { + if (lib_record.module.cleanups) { + lib_record.module.cleanups.forEach(function(cleanup) { cleanup() }); + } + delete DLFCN.loadedLibNames[lib_record.name]; + delete DLFCN.loadedLibs[handle]; + } + return 0; + } + } + + function _dlopen(filename, flag) { + // void *dlopen(const char *file, int mode); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/dlopen.html + filename = filename === 0 ? '__self__' : (ENV['LD_LIBRARY_PATH'] || '/') + Pointer_stringify(filename); + + abort('need to build with DLOPEN_SUPPORT=1 to get dlopen support in asm.js'); + + if (DLFCN.loadedLibNames[filename]) { + // Already loaded; increment ref count and return. + var handle = DLFCN.loadedLibNames[filename]; + DLFCN.loadedLibs[handle].refcount++; + return handle; + } + + if (filename === '__self__') { + var handle = -1; + var lib_module = Module; + var cached_functions = SYMBOL_TABLE; + } else { + var target = FS.findObject(filename); + if (!target || target.isFolder || target.isDevice) { + DLFCN.errorMsg = 'Could not find dynamic lib: ' + filename; + return 0; + } else { + FS.forceLoadFile(target); + var lib_data = intArrayToString(target.contents); + } + + try { + var lib_module = eval(lib_data)( + DLFCN.functionTable.length, + Module + ); + } catch (e) { + DLFCN.errorMsg = 'Could not evaluate dynamic lib: ' + filename; + return 0; + } + + // Not all browsers support Object.keys(). + var handle = 1; + for (var key in DLFCN.loadedLibs) { + if (DLFCN.loadedLibs.hasOwnProperty(key)) handle++; + } + + // We don't care about RTLD_NOW and RTLD_LAZY. + if (flag & 256) { // RTLD_GLOBAL + for (var ident in lib_module) { + if (lib_module.hasOwnProperty(ident)) { + Module[ident] = lib_module[ident]; + } + } + } + + var cached_functions = {}; + } + DLFCN.loadedLibs[handle] = { + refcount: 1, + name: filename, + module: lib_module, + cached_functions: cached_functions + }; + DLFCN.loadedLibNames[filename] = handle; + + return handle; + } + + function _dlerror() { + // char *dlerror(void); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/dlerror.html + if (DLFCN.errorMsg === null) { + return 0; + } else { + if (DLFCN.error) _free(DLFCN.error); + var msgArr = intArrayFromString(DLFCN.errorMsg); + DLFCN.error = allocate(msgArr, 'i8', ALLOC_NORMAL); + DLFCN.errorMsg = null; + return DLFCN.error; + } + } + + function _dlsym(handle, symbol) { + // void *dlsym(void *restrict handle, const char *restrict name); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/dlsym.html + symbol = '_' + Pointer_stringify(symbol); + + if (!DLFCN.loadedLibs[handle]) { + DLFCN.errorMsg = 'Tried to dlsym() from an unopened handle: ' + handle; + return 0; + } else { + var lib = DLFCN.loadedLibs[handle]; + // self-dlopen means that lib.module is not a superset of + // cached_functions, so check the latter first + if (lib.cached_functions.hasOwnProperty(symbol)) { + return lib.cached_functions[symbol]; + } else { + if (!lib.module.hasOwnProperty(symbol)) { + DLFCN.errorMsg = ('Tried to lookup unknown symbol "' + symbol + + '" in dynamic lib: ' + lib.name); + return 0; + } else { + var result = lib.module[symbol]; + if (typeof result == 'function') { + result = lib.module.SYMBOL_TABLE[symbol]; + assert(result); + lib.cached_functions = result; + } + return result; + } + } + } + } + + function _SDL_Linked_Version() { + if (SDL.version === null) { + SDL.version = _malloc(3); + HEAP8[((SDL.version + 0)|0)]=1; + HEAP8[((SDL.version + 1)|0)]=3; + HEAP8[((SDL.version + 2)|0)]=0; + } + return SDL.version; + } + + function _Sys_PlatformInit() { + // embed our css + var style = document.createElement('style'); + style.setAttribute('type', 'text/css'); + style.innerHTML = SYS.css; + SYS.style = document.getElementsByTagName('head')[0].appendChild(style); + + // add dialog elements to viewport + var dialog = document.createElement('div'); + dialog.id = 'dialog'; + dialog.innerHTML = '

' + + '

'; + SYS.dialog = Module['viewport'].appendChild(dialog); + + // add loading elements to viewport + var loading = document.createElement('div'); + loading.id = 'loading'; + loading.innerHTML = '
' + + '
' + + '
 
' + + '
'; + SYS.loading = Module['viewport'].appendChild(loading); + + // add eula frame to viewport + var eula = document.createElement('div'); + eula.id = 'eula-frame'; + eula.innerHTML = '
' + + '

In order to continue, the official Quake3 demo will need to be installed into the browser\'s persistent storage.

' + + '

Please read through the demo\'s EULA and click "I Agree" if you agree to it and would like to continue.

' + + '
' + SYSC.eula + '
' + + '' + + '' + + '
'; + SYS.eula = Module['viewport'].appendChild(eula); + } + + function _Sys_Dirname(path) { + path = Pointer_stringify(path); + path = PATH.dirname(path); + var dirname = allocate(intArrayFromString(path), 'i8', ALLOC_STACK); + return dirname; + } + + function _emscripten_exit_with_live_runtime() { + Module['noExitRuntime'] = true; + throw 'SimulateInfiniteLoop'; + } + + function _signal(sig, func) { + // TODO + return 0; + } + + function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop) { + Module['noExitRuntime'] = true; + + Browser.mainLoop.runner = function Browser_mainLoop_runner() { + 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 { + // not counted, but move the progress along a tiny bit + next = next + 0.5; // do not steal all the next one's progress + Browser.mainLoop.remainingBlockers = (8*remaining + next)/9; + } + } + console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + ' ms'); //, left: ' + Browser.mainLoop.remainingBlockers); + Browser.mainLoop.updateStatus(); + setTimeout(Browser.mainLoop.runner, 0); + return; + } + if (Browser.mainLoop.shouldPause) { + // catch pauses from non-main loop sources + Browser.mainLoop.paused = true; + Browser.mainLoop.shouldPause = false; + return; + } + + // Signal GL rendering layer that processing of a new frame is about to start. This helps it optimize + // VBO double-buffering and reduce GPU stalls. + GL.newRenderingFrameStarted(); + + if (Browser.mainLoop.method === 'timeout' && Module.ctx) { + Module.printErr('Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!'); + Browser.mainLoop.method = ''; // just warn once per call to set main loop + } + + if (Module['preMainLoop']) { + Module['preMainLoop'](); + } + + try { + Runtime.dynCall('v', func); + } catch (e) { + if (e instanceof ExitStatus) { + return; + } else { + if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); + throw e; + } + } + + if (Module['postMainLoop']) { + Module['postMainLoop'](); + } + + if (Browser.mainLoop.shouldPause) { + // catch pauses from the main loop itself + Browser.mainLoop.paused = true; + Browser.mainLoop.shouldPause = false; + return; + } + Browser.mainLoop.scheduler(); + } + if (fps && fps > 0) { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() { + setTimeout(Browser.mainLoop.runner, 1000/fps); // doing this each time means that on exception, we stop + }; + Browser.mainLoop.method = 'timeout'; + } else { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() { + Browser.requestAnimationFrame(Browser.mainLoop.runner); + }; + Browser.mainLoop.method = 'rAF'; + } + Browser.mainLoop.scheduler(); + + if (simulateInfiniteLoop) { + throw 'SimulateInfiniteLoop'; + } + } + + function _SDL_Quit() { + for (var i = 0; i < SDL.numChannels; ++i) { + if (SDL.channels[i].audio) { + SDL.channels[i].audio.pause(); + } + } + if (SDL.music.audio) { + SDL.music.audio.pause(); + } + Module.print('SDL_Quit called (and ignored)'); + } + + function _Sys_PlatformExit() { + var handler = Module['exitHandler']; + if (handler) { + if (!SYS.exited) { + handler(); + } + return; + } + + // we want to leave around an error dialog if one exists + // SYS.style.remove(); + // SYS.style = null; + + // SYS.dialog.remove(); + // SYS.dialog = null; + + SYS.loading.remove(); + SYS.loading = null; + + SYS.eula.remove(); + SYS.eula = null; + + if (Module['canvas']) { + Module['canvas'].remove(); + } + } + + + function __exit(status) { + // void _exit(int status); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html + Module['exit'](status); + }function _exit(status) { + __exit(status); + } + + var _exp=Math_exp; + + var ctlz_i8 = allocate([8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC); + Module["_llvm_ctlz_i32"] = _llvm_ctlz_i32; + + var _log=Math_log; + + var _floor=Math_floor; + + function _exp2(x) { + return Math.pow(2, x); + } + + function _memchr(ptr, chr, num) { + chr = unSign(chr); + for (var i = 0; i < num; i++) { + if (HEAP8[(ptr)] == chr) return ptr; + ptr++; + } + return 0; + } + + + var GL={counter:1,lastError:0,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],currArrayBuffer:0,currElementArrayBuffer:0,byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],programInfos:{},stringCache:{},packAlignment:4,unpackAlignment:4,init:function () { + GL.createLog2ceilLookup(GL.MAX_TEMP_BUFFER_SIZE); + Browser.moduleContextCreatedCallbacks.push(GL.initExtensions); + },recordError:function recordError(errorCode) { + if (!GL.lastError) { + GL.lastError = errorCode; + } + },getNewId:function (table) { + var ret = GL.counter++; + for (var i = table.length; i < ret; i++) { + table[i] = null; + } + return ret; + },MINI_TEMP_BUFFER_SIZE:16,miniTempBuffer:null,miniTempBufferViews:[0],MAX_TEMP_BUFFER_SIZE:2097152,tempVertexBuffers1:[],tempVertexBufferCounters1:[],tempVertexBuffers2:[],tempVertexBufferCounters2:[],numTempVertexBuffersPerSize:64,tempIndexBuffers:[],tempQuadIndexBuffer:null,log2ceilLookup:null,createLog2ceilLookup:function (maxValue) { + GL.log2ceilLookup = new Uint8Array(maxValue+1); + var log2 = 0; + var pow2 = 1; + GL.log2ceilLookup[0] = 0; + for(var i = 1; i <= maxValue; ++i) { + if (i > pow2) { + pow2 <<= 1; + ++log2; + } + GL.log2ceilLookup[i] = log2; + } + },generateTempBuffers:function (quads) { + var largestIndex = GL.log2ceilLookup[GL.MAX_TEMP_BUFFER_SIZE]; + GL.tempVertexBufferCounters1.length = GL.tempVertexBufferCounters2.length = largestIndex+1; + GL.tempVertexBuffers1.length = GL.tempVertexBuffers2.length = largestIndex+1; + GL.tempIndexBuffers.length = largestIndex+1; + for(var i = 0; i <= largestIndex; ++i) { + GL.tempIndexBuffers[i] = null; // Created on-demand + GL.tempVertexBufferCounters1[i] = GL.tempVertexBufferCounters2[i] = 0; + var ringbufferLength = GL.numTempVertexBuffersPerSize; + GL.tempVertexBuffers1[i] = []; + GL.tempVertexBuffers2[i] = []; + var ringbuffer1 = GL.tempVertexBuffers1[i]; + var ringbuffer2 = GL.tempVertexBuffers2[i]; + ringbuffer1.length = ringbuffer2.length = ringbufferLength; + for(var j = 0; j < ringbufferLength; ++j) { + ringbuffer1[j] = ringbuffer2[j] = null; // Created on-demand + } + } + + if (quads) { + // GL_QUAD indexes can be precalculated + GL.tempQuadIndexBuffer = GLctx.createBuffer(); + GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, GL.tempQuadIndexBuffer); + var numIndexes = GL.MAX_TEMP_BUFFER_SIZE >> 1; + var quadIndexes = new Uint16Array(numIndexes); + var i = 0, v = 0; + while (1) { + quadIndexes[i++] = v; + if (i >= numIndexes) break; + quadIndexes[i++] = v+1; + if (i >= numIndexes) break; + quadIndexes[i++] = v+2; + if (i >= numIndexes) break; + quadIndexes[i++] = v; + if (i >= numIndexes) break; + quadIndexes[i++] = v+2; + if (i >= numIndexes) break; + quadIndexes[i++] = v+3; + if (i >= numIndexes) break; + v += 4; + } + GLctx.bufferData(GLctx.ELEMENT_ARRAY_BUFFER, quadIndexes, GLctx.STATIC_DRAW); + GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, null); + } + },getTempVertexBuffer:function getTempVertexBuffer(sizeBytes) { + var idx = GL.log2ceilLookup[sizeBytes]; + var ringbuffer = GL.tempVertexBuffers1[idx]; + var nextFreeBufferIndex = GL.tempVertexBufferCounters1[idx]; + GL.tempVertexBufferCounters1[idx] = (GL.tempVertexBufferCounters1[idx]+1) & (GL.numTempVertexBuffersPerSize-1); + var vbo = ringbuffer[nextFreeBufferIndex]; + if (vbo) { + return vbo; + } + var prevVBO = GLctx.getParameter(GLctx.ARRAY_BUFFER_BINDING); + ringbuffer[nextFreeBufferIndex] = GLctx.createBuffer(); + GLctx.bindBuffer(GLctx.ARRAY_BUFFER, ringbuffer[nextFreeBufferIndex]); + GLctx.bufferData(GLctx.ARRAY_BUFFER, 1 << idx, GLctx.DYNAMIC_DRAW); + GLctx.bindBuffer(GLctx.ARRAY_BUFFER, prevVBO); + return ringbuffer[nextFreeBufferIndex]; + },getTempIndexBuffer:function getTempIndexBuffer(sizeBytes) { + var idx = GL.log2ceilLookup[sizeBytes]; + var ibo = GL.tempIndexBuffers[idx]; + if (ibo) { + return ibo; + } + var prevIBO = GLctx.getParameter(GLctx.ELEMENT_ARRAY_BUFFER_BINDING); + GL.tempIndexBuffers[idx] = GLctx.createBuffer(); + GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, GL.tempIndexBuffers[idx]); + GLctx.bufferData(GLctx.ELEMENT_ARRAY_BUFFER, 1 << idx, GLctx.DYNAMIC_DRAW); + GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, prevIBO); + return GL.tempIndexBuffers[idx]; + },newRenderingFrameStarted:function newRenderingFrameStarted() { + var vb = GL.tempVertexBuffers1; + GL.tempVertexBuffers1 = GL.tempVertexBuffers2; + GL.tempVertexBuffers2 = vb; + vb = GL.tempVertexBufferCounters1; + GL.tempVertexBufferCounters1 = GL.tempVertexBufferCounters2; + GL.tempVertexBufferCounters2 = vb; + var largestIndex = GL.log2ceilLookup[GL.MAX_TEMP_BUFFER_SIZE]; + for(var i = 0; i <= largestIndex; ++i) { + GL.tempVertexBufferCounters1[i] = 0; + } + },findToken:function (source, token) { + function isIdentChar(ch) { + if (ch >= 48 && ch <= 57) // 0-9 + return true; + if (ch >= 65 && ch <= 90) // A-Z + return true; + if (ch >= 97 && ch <= 122) // a-z + return true; + return false; + } + var i = -1; + do { + i = source.indexOf(token, i + 1); + if (i < 0) { + break; + } + if (i > 0 && isIdentChar(source[i - 1])) { + continue; + } + i += token.length; + if (i < source.length - 1 && isIdentChar(source[i + 1])) { + continue; + } + return true; + } while (true); + return false; + },getSource:function (shader, count, string, length) { + var source = ''; + for (var i = 0; i < count; ++i) { + var frag; + if (length) { + var len = HEAP32[(((length)+(i*4))>>2)]; + if (len < 0) { + frag = Pointer_stringify(HEAP32[(((string)+(i*4))>>2)]); + } else { + frag = Pointer_stringify(HEAP32[(((string)+(i*4))>>2)], len); + } + } else { + frag = Pointer_stringify(HEAP32[(((string)+(i*4))>>2)]); + } + source += frag; + } + // Let's see if we need to enable the standard derivatives extension + type = GLctx.getShaderParameter(GL.shaders[shader], 0x8B4F /* GL_SHADER_TYPE */); + if (type == 0x8B30 /* GL_FRAGMENT_SHADER */) { + if (GL.findToken(source, "dFdx") || + GL.findToken(source, "dFdy") || + GL.findToken(source, "fwidth")) { + source = "#extension GL_OES_standard_derivatives : enable\n" + source; + var extension = GLctx.getExtension("OES_standard_derivatives"); + } + } + return source; + },computeImageSize:function (width, height, sizePerPixel, alignment) { + function roundedToNextMultipleOf(x, y) { + return Math.floor((x + y - 1) / y) * y + } + var plainRowSize = width * sizePerPixel; + var alignedRowSize = roundedToNextMultipleOf(plainRowSize, alignment); + return (height <= 0) ? 0 : + ((height - 1) * alignedRowSize + plainRowSize); + },get:function (name_, p, type) { + // Guard against user passing a null pointer. + // Note that GLES2 spec does not say anything about how passing a null pointer should be treated. + // Testing on desktop core GL 3, the application crashes on glGetIntegerv to a null pointer, but + // better to report an error instead of doing anything random. + if (!p) { + GL.recordError(0x0501 /* GL_INVALID_VALUE */); + return; + } + var ret = undefined; + switch(name_) { // Handle a few trivial GLES values + case 0x8DFA: // GL_SHADER_COMPILER + ret = 1; + break; + case 0x8DF8: // GL_SHADER_BINARY_FORMATS + if (type !== 'Integer') { + GL.recordError(0x0500); // GL_INVALID_ENUM + } + return; // Do not write anything to the out pointer, since no binary formats are supported. + case 0x8DF9: // GL_NUM_SHADER_BINARY_FORMATS + ret = 0; + break; + case 0x86A2: // GL_NUM_COMPRESSED_TEXTURE_FORMATS + // WebGL doesn't have GL_NUM_COMPRESSED_TEXTURE_FORMATS (it's obsolete since GL_COMPRESSED_TEXTURE_FORMATS returns a JS array that can be queried for length), + // so implement it ourselves to allow C++ GLES2 code get the length. + var formats = GLctx.getParameter(0x86A3 /*GL_COMPRESSED_TEXTURE_FORMATS*/); + ret = formats.length; + break; + case 0x8B9A: // GL_IMPLEMENTATION_COLOR_READ_TYPE + ret = 0x1401; // GL_UNSIGNED_BYTE + break; + case 0x8B9B: // GL_IMPLEMENTATION_COLOR_READ_FORMAT + ret = 0x1908; // GL_RGBA + 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(0x0500); // GL_INVALID_ENUM + return; + case "object": + if (result === null) { + // null is a valid result for some (e.g., which buffer is bound - perhaps nothing is bound), but otherwise + // can mean an invalid name_, which we need to report as an error + switch(name_) { + case 0x8894: // ARRAY_BUFFER_BINDING + case 0x8B8D: // CURRENT_PROGRAM + case 0x8895: // ELEMENT_ARRAY_BUFFER_BINDING + case 0x8CA6: // FRAMEBUFFER_BINDING + case 0x8CA7: // RENDERBUFFER_BINDING + case 0x8069: // TEXTURE_BINDING_2D + case 0x8514: { // TEXTURE_BINDING_CUBE_MAP + ret = 0; + break; + } + default: { + GL.recordError(0x0500); // GL_INVALID_ENUM + 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 'Integer': HEAP32[(((p)+(i*4))>>2)]=result[i]; break; + case 'Float': HEAPF32[(((p)+(i*4))>>2)]=result[i]; break; + case 'Boolean': HEAP8[(((p)+(i))|0)]=result[i] ? 1 : 0; break; + default: throw 'internal glGet error, bad type: ' + type; + } + } + return; + } else if (result instanceof WebGLBuffer || + result instanceof WebGLProgram || + result instanceof WebGLFramebuffer || + result instanceof WebGLRenderbuffer || + result instanceof WebGLTexture) { + ret = result.name | 0; + } else { + GL.recordError(0x0500); // GL_INVALID_ENUM + return; + } + break; + default: + GL.recordError(0x0500); // GL_INVALID_ENUM + return; + } + } + + switch (type) { + case 'Integer': HEAP32[((p)>>2)]=ret; break; + case 'Float': HEAPF32[((p)>>2)]=ret; break; + case 'Boolean': HEAP8[(p)]=ret ? 1 : 0; break; + default: throw 'internal glGet error, bad type: ' + type; + } + },getTexPixelData:function (type, format, width, height, pixels, internalFormat) { + var sizePerPixel; + switch (type) { + case 0x1401 /* GL_UNSIGNED_BYTE */: + switch (format) { + case 0x1906 /* GL_ALPHA */: + case 0x1909 /* GL_LUMINANCE */: + sizePerPixel = 1; + break; + case 0x1907 /* GL_RGB */: + sizePerPixel = 3; + break; + case 0x1908 /* GL_RGBA */: + sizePerPixel = 4; + break; + case 0x190A /* GL_LUMINANCE_ALPHA */: + sizePerPixel = 2; + break; + default: + throw 'Invalid format (' + format + ')'; + } + break; + case 0x1403 /* GL_UNSIGNED_SHORT */: + if (format == 0x1902 /* GL_DEPTH_COMPONENT */) { + sizePerPixel = 2; + } else { + throw 'Invalid format (' + format + ')'; + } + break; + case 0x1405 /* GL_UNSIGNED_INT */: + if (format == 0x1902 /* GL_DEPTH_COMPONENT */) { + sizePerPixel = 4; + } else { + throw 'Invalid format (' + format + ')'; + } + break; + case 0x84FA /* UNSIGNED_INT_24_8_WEBGL */: + sizePerPixel = 4; + break; + case 0x8363 /* GL_UNSIGNED_SHORT_5_6_5 */: + case 0x8033 /* GL_UNSIGNED_SHORT_4_4_4_4 */: + case 0x8034 /* GL_UNSIGNED_SHORT_5_5_5_1 */: + sizePerPixel = 2; + break; + case 0x1406 /* GL_FLOAT */: + switch (format) { + case 0x1907 /* GL_RGB */: + sizePerPixel = 3*4; + break; + case 0x1908 /* GL_RGBA */: + sizePerPixel = 4*4; + break; + default: + throw 'Invalid format (' + format + ')'; + } + internalFormat = GLctx.RGBA; + break; + default: + throw 'Invalid type (' + type + ')'; + } + var bytes = GL.computeImageSize(width, height, sizePerPixel, GL.unpackAlignment); + if (type == 0x1401 /* GL_UNSIGNED_BYTE */) { + pixels = HEAPU8.subarray((pixels),(pixels+bytes)); + } else if (type == 0x1406 /* GL_FLOAT */) { + pixels = HEAPF32.subarray((pixels)>>2,(pixels+bytes)>>2); + } else if (type == 0x1405 /* GL_UNSIGNED_INT */ || type == 0x84FA /* UNSIGNED_INT_24_8_WEBGL */) { + pixels = HEAPU32.subarray((pixels)>>2,(pixels+bytes)>>2); + } else { + pixels = HEAPU16.subarray((pixels)>>1,(pixels+bytes)>>1); + } + return { + pixels: pixels, + internalFormat: internalFormat + } + },initExtensions:function () { + if (GL.initExtensions.done) return; + GL.initExtensions.done = true; + + if (!Module.useWebGL) return; // an app might link both gl and 2d backends + + GL.miniTempBuffer = new Float32Array(GL.MINI_TEMP_BUFFER_SIZE); + for (var i = 0; i < GL.MINI_TEMP_BUFFER_SIZE; i++) { + GL.miniTempBufferViews[i] = GL.miniTempBuffer.subarray(0, i+1); + } + + GL.maxVertexAttribs = GLctx.getParameter(GLctx.MAX_VERTEX_ATTRIBS); + + // Detect the presence of a few extensions manually, this GL interop layer itself will need to know if they exist. + GL.compressionExt = GLctx.getExtension('WEBGL_compressed_texture_s3tc') || + GLctx.getExtension('MOZ_WEBGL_compressed_texture_s3tc') || + GLctx.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc'); + + GL.anisotropicExt = GLctx.getExtension('EXT_texture_filter_anisotropic') || + GLctx.getExtension('MOZ_EXT_texture_filter_anisotropic') || + GLctx.getExtension('WEBKIT_EXT_texture_filter_anisotropic'); + + GL.floatExt = GLctx.getExtension('OES_texture_float'); + + // Extension available from Firefox 26 and Google Chrome 30 + GL.instancedArraysExt = GLctx.getExtension('ANGLE_instanced_arrays'); + + // These are the 'safe' feature-enabling extensions that don't add any performance impact related to e.g. debugging, and + // should be enabled by default so that client GLES2/GL code will not need to go through extra hoops to get its stuff working. + // As new extensions are ratified at http://www.khronos.org/registry/webgl/extensions/ , feel free to add your new extensions + // here, as long as they don't produce a performance impact for users that might not be using those extensions. + // E.g. debugging-related extensions should probably be off by default. + var automaticallyEnabledExtensions = [ "OES_texture_float", "OES_texture_half_float", "OES_standard_derivatives", + "OES_vertex_array_object", "WEBGL_compressed_texture_s3tc", "WEBGL_depth_texture", + "OES_element_index_uint", "EXT_texture_filter_anisotropic", "ANGLE_instanced_arrays", + "OES_texture_float_linear", "OES_texture_half_float_linear", "WEBGL_compressed_texture_atc", + "WEBGL_compressed_texture_pvrtc", "EXT_color_buffer_half_float", "WEBGL_color_buffer_float", + "EXT_frag_depth", "EXT_sRGB", "WEBGL_draw_buffers", "WEBGL_shared_resources" ]; + + function shouldEnableAutomatically(extension) { + for(var i in automaticallyEnabledExtensions) { + var include = automaticallyEnabledExtensions[i]; + if (ext.indexOf(include) != -1) { + return true; + } + } + return false; + } + + var extensions = GLctx.getSupportedExtensions(); + for(var e in extensions) { + var ext = extensions[e].replace('MOZ_', '').replace('WEBKIT_', ''); + if (automaticallyEnabledExtensions.indexOf(ext) != -1) { + GLctx.getExtension(ext); // Calling .getExtension enables that extension permanently, no need to store the return value to be enabled. + } + } + },populateUniformTable:function (program) { + var p = GL.programs[program]; + GL.programInfos[program] = { + uniforms: {}, + maxUniformLength: 0, // This is eagerly computed below, since we already enumerate all uniforms anyway. + maxAttributeLength: -1 // This is lazily computed and cached, computed when/if first asked, "-1" meaning not computed yet. + }; + + var ptable = GL.programInfos[program]; + var utable = ptable.uniforms; + // A program's uniform table maps the string name of an uniform to an integer location of that uniform. + // The global GL.uniforms map maps integer locations to WebGLUniformLocations. + var numUniforms = GLctx.getProgramParameter(p, GLctx.ACTIVE_UNIFORMS); + for (var i = 0; i < numUniforms; ++i) { + var u = GLctx.getActiveUniform(p, i); + + var name = u.name; + ptable.maxUniformLength = Math.max(ptable.maxUniformLength, name.length+1); + + // Strip off any trailing array specifier we might have got, e.g. "[0]". + if (name.indexOf(']', name.length-1) !== -1) { + var ls = name.lastIndexOf('['); + name = name.slice(0, ls); + } + + // Optimize memory usage slightly: If we have an array of uniforms, e.g. 'vec3 colors[3];', then + // only store the string 'colors' in utable, and 'colors[0]', 'colors[1]' and 'colors[2]' will be parsed as 'colors'+i. + // Note that for the GL.uniforms table, we still need to fetch the all WebGLUniformLocations for all the indices. + var loc = GLctx.getUniformLocation(p, name); + var id = GL.getNewId(GL.uniforms); + utable[name] = [u.size, id]; + GL.uniforms[id] = loc; + + for (var j = 1; j < u.size; ++j) { + var n = name + '['+j+']'; + loc = GLctx.getUniformLocation(p, n); + id = GL.getNewId(GL.uniforms); + + GL.uniforms[id] = loc; + } + } + }};function _glBindTexture(target, texture) { + GLctx.bindTexture(target, texture ? GL.textures[texture] : null); + } + + function _glDisable(x0) { GLctx.disable(x0) } + + function _glEnable(x0) { GLctx.enable(x0) } + + function _glCullFace(x0) { GLctx.cullFace(x0) } + + function _glTexEnvf() { Runtime.warnOnce('glTexEnvf: TODO') } + + function _glDepthFunc(x0) { GLctx.depthFunc(x0) } + + function _glBlendFunc(x0, x1) { GLctx.blendFunc(x0, x1) } + + function _glDepthMask(x0) { GLctx.depthMask(x0) } + + function _glPolygonMode(){} + + function _glFinish() { GLctx.finish() } + + function _glClearColor(x0, x1, x2, x3) { GLctx.clearColor(x0, x1, x2, x3) } + + function _glClear(x0) { GLctx.clear(x0) } + + function _glDepthRange(x0, x1) { GLctx.depthRange(x0, x1) } + + function _glViewport(x0, x1, x2, x3) { GLctx.viewport(x0, x1, x2, x3) } + + function _glScissor(x0, x1, x2, x3) { GLctx.scissor(x0, x1, x2, x3) } + + function _glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels) { + if (pixels) { + var data = GL.getTexPixelData(type, format, width, height, pixels, internalFormat); + pixels = data.pixels; + internalFormat = data.internalFormat; + } else { + pixels = null; + } + GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixels); + } + + function _glTexParameterf(x0, x1, x2) { GLctx.texParameterf(x0, x1, x2) } + + function _glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) { + if (pixels) { + var data = GL.getTexPixelData(type, format, width, height, pixels, -1); + pixels = data.pixels; + } else { + pixels = null; + } + GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); + } + + function _glColorMask(x0, x1, x2, x3) { GLctx.colorMask(x0, x1, x2, x3) } + + function _glCopyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { GLctx.copyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7) } + + var _tan=Math_tan; + + function _glDrawBuffer() { throw 'glDrawBuffer: TODO' } + + function _glReadPixels(x, y, width, height, format, type, pixels) { + var sizePerPixel; + switch (format) { + case 0x1907 /* GL_RGB */: + sizePerPixel = 3; + break; + case 0x1908 /* GL_RGBA */: + sizePerPixel = 4; + break; + default: + GL.recordError(0x0500/*GL_INVALID_ENUM*/); + return; + } + var totalSize = width*height*sizePerPixel; + GLctx.readPixels(x, y, width, height, format, type, HEAPU8.subarray(pixels, pixels + totalSize)); + } + + var _ceil=Math_ceil; + + function _glStencilMask(x0) { GLctx.stencilMask(x0) } + + function _glClearStencil(x0) { GLctx.clearStencil(x0) } + + function _glStencilFunc(x0, x1, x2) { GLctx.stencilFunc(x0, x1, x2) } + + function _glStencilOp(x0, x1, x2) { GLctx.stencilOp(x0, x1, x2) } + + function _glGetError() { + // First return any GL error generated by the emscripten library_gl.js interop layer. + if (GL.lastError) { + var error = GL.lastError; + GL.lastError = 0/*GL_NO_ERROR*/; + return error; + } else { // If there were none, return the GL error from the browser GL context. + return GLctx.getError(); + } + } + + function _SDL_GL_GetProcAddress(name_) { + return _emscripten_GetProcAddress(name_); + } + + function _glGetString(name_) { + if (GL.stringCache[name_]) return GL.stringCache[name_]; + var ret; + switch(name_) { + case 0x1F00 /* GL_VENDOR */: + case 0x1F01 /* GL_RENDERER */: + case 0x1F02 /* GL_VERSION */: + ret = allocate(intArrayFromString(GLctx.getParameter(name_)), 'i8', ALLOC_NORMAL); + break; + case 0x1F03 /* GL_EXTENSIONS */: + var exts = GLctx.getSupportedExtensions(); + var gl_exts = []; + for (i in exts) { + gl_exts.push(exts[i]); + gl_exts.push("GL_" + exts[i]); + } + ret = allocate(intArrayFromString(gl_exts.join(' ')), 'i8', ALLOC_NORMAL); + break; + case 0x8B8C /* GL_SHADING_LANGUAGE_VERSION */: + ret = allocate(intArrayFromString('OpenGL ES GLSL 1.00 (WebGL)'), 'i8', ALLOC_NORMAL); + break; + default: + GL.recordError(0x0500/*GL_INVALID_ENUM*/); + return 0; + } + GL.stringCache[name_] = ret; + return ret; + } + + function _glGetIntegerv(name_, p) { + return GL.get(name_, p, 'Integer'); + } + + function _glReadBuffer() { throw 'glReadBuffer: TODO' } + + function _glGenTextures(n, textures) { + for (var i = 0; i < n; i++) { + var id = GL.getNewId(GL.textures); + var texture = GLctx.createTexture(); + texture.name = id; + GL.textures[id] = texture; + HEAP32[(((textures)+(i*4))>>2)]=id; + } + } + + function _glTexParameteri(x0, x1, x2) { GLctx.texParameteri(x0, x1, x2) } + + var _llvm_pow_f64=Math_pow; + + function _glDeleteTextures(n, textures) { + for (var i = 0; i < n; i++) { + var id = HEAP32[(((textures)+(i*4))>>2)]; + var texture = GL.textures[id]; + GLctx.deleteTexture(texture); + texture.name = 0; + GL.textures[id] = null; + } + } + + function _glTexParameterfv(target, pname, params) { + var param = HEAPF32[((params)>>2)]; + GLctx.texParameterf(target, pname, param); + } + + var _fabs=Math_abs; + + function _glClearDepth(x0) { GLctx.clearDepth(x0) } + + function _glColor4f(r, g, b, a) { + r = Math.max(Math.min(r, 1), 0); + g = Math.max(Math.min(g, 1), 0); + b = Math.max(Math.min(b, 1), 0); + a = Math.max(Math.min(a, 1), 0); + + // TODO: make ub the default, not f, save a few mathops + if (GLImmediate.mode >= 0) { + var start = GLImmediate.vertexCounter << 2; + GLImmediate.vertexDataU8[start + 0] = r * 255; + GLImmediate.vertexDataU8[start + 1] = g * 255; + GLImmediate.vertexDataU8[start + 2] = b * 255; + GLImmediate.vertexDataU8[start + 3] = a * 255; + GLImmediate.vertexCounter++; + GLImmediate.addRendererComponent(GLImmediate.COLOR, 4, GLctx.UNSIGNED_BYTE); + } else { + GLImmediate.clientColor[0] = r; + GLImmediate.clientColor[1] = g; + GLImmediate.clientColor[2] = b; + GLImmediate.clientColor[3] = a; + } + } + + function _glDrawElements(mode, count, type, indices) { + + GLctx.drawElements(mode, count, type, indices); + + } + + function _glPolygonOffset(x0, x1) { GLctx.polygonOffset(x0, x1) } + + + + + + function _glIsEnabled(x0) { return GLctx.isEnabled(x0) } + + function _glGetBooleanv(name_, p) { + return GL.get(name_, p, 'Boolean'); + } + + function _glCreateShader(shaderType) { + var id = GL.getNewId(GL.shaders); + GL.shaders[id] = GLctx.createShader(shaderType); + return id; + } + + function _glShaderSource(shader, count, string, length) { + var source = GL.getSource(shader, count, string, length); + GLctx.shaderSource(GL.shaders[shader], source); + } + + function _glCompileShader(shader) { + GLctx.compileShader(GL.shaders[shader]); + } + + function _glAttachShader(program, shader) { + GLctx.attachShader(GL.programs[program], + GL.shaders[shader]); + } + + function _glDetachShader(program, shader) { + GLctx.detachShader(GL.programs[program], + GL.shaders[shader]); + } + + function _glUseProgram(program) { + GLctx.useProgram(program ? GL.programs[program] : null); + } + + function _glDeleteProgram(program) { + var program = GL.programs[program]; + GLctx.deleteProgram(program); + program.name = 0; + GL.programs[program] = null; + GL.programInfos[program] = null; + } + + function _glBindAttribLocation(program, index, name) { + name = Pointer_stringify(name); + GLctx.bindAttribLocation(GL.programs[program], index, name); + } + + function _glLinkProgram(program) { + GLctx.linkProgram(GL.programs[program]); + GL.programInfos[program] = null; // uniforms no longer keep the same names after linking + GL.populateUniformTable(program); + } + + function _glBindBuffer(target, buffer) { + var bufferObj = buffer ? GL.buffers[buffer] : null; + + if (target == GLctx.ARRAY_BUFFER) { + GLImmediate.lastArrayBuffer = GL.currArrayBuffer = buffer; + } else if (target == GLctx.ELEMENT_ARRAY_BUFFER) { + GL.currElementArrayBuffer = buffer; + } + + GLctx.bindBuffer(target, bufferObj); + } + + function _glGetFloatv(name_, p) { + return GL.get(name_, p, 'Float'); + } + + function _glHint(x0, x1) { GLctx.hint(x0, x1) } + + function _glEnableVertexAttribArray(index) { + GLctx.enableVertexAttribArray(index); + } + + function _glDisableVertexAttribArray(index) { + GLctx.disableVertexAttribArray(index); + } + + function _glVertexAttribPointer(index, size, type, normalized, stride, ptr) { + GLctx.vertexAttribPointer(index, size, type, normalized, stride, ptr); + } + + function _glActiveTexture(x0) { GLctx.activeTexture(x0) }var GLEmulation={fogStart:0,fogEnd:1,fogDensity:1,fogColor:null,fogMode:2048,fogEnabled:false,vaos:[],currentVao:null,enabledVertexAttribArrays:{},hasRunInit:false,init:function () { + // Do not activate immediate/emulation code (e.g. replace glDrawElements) when in FULL_ES2 mode. + // We do not need full emulation, we instead emulate client-side arrays etc. in FULL_ES2 code in + // a straightforward manner, and avoid not having a bound buffer be ambiguous between es2 emulation + // code and legacy gl emulation code. + + if (GLEmulation.hasRunInit) { + return; + } + GLEmulation.hasRunInit = true; + + GLEmulation.fogColor = new Float32Array(4); + + // Add some emulation workarounds + Module.printErr('WARNING: using emscripten GL emulation. This is a collection of limited workarounds, do not expect it to work.'); + Module.printErr('WARNING: using emscripten GL emulation unsafe opts. If weirdness happens, try -s GL_UNSAFE_OPTS=0'); + + // XXX some of the capabilities we don't support may lead to incorrect rendering, if we do not emulate them in shaders + var validCapabilities = { + 0x0B44: 1, // GL_CULL_FACE + 0x0BE2: 1, // GL_BLEND + 0x0BD0: 1, // GL_DITHER, + 0x0B90: 1, // GL_STENCIL_TEST + 0x0B71: 1, // GL_DEPTH_TEST + 0x0C11: 1, // GL_SCISSOR_TEST + 0x8037: 1, // GL_POLYGON_OFFSET_FILL + 0x809E: 1, // GL_SAMPLE_ALPHA_TO_COVERAGE + 0x80A0: 1 // GL_SAMPLE_COVERAGE + }; + + var glEnable = _glEnable; + _glEnable = _emscripten_glEnable = function _glEnable(cap) { + // Clean up the renderer on any change to the rendering state. The optimization of + // skipping renderer setup is aimed at the case of multiple glDraw* right after each other + if (GLImmediate.lastRenderer) GLImmediate.lastRenderer.cleanup(); + if (cap == 0x0B60 /* GL_FOG */) { + if (GLEmulation.fogEnabled != true) { + GLImmediate.currentRenderer = null; // Fog parameter is part of the FFP shader state, we must re-lookup the renderer to use. + GLEmulation.fogEnabled = true; + } + return; + } else if (cap == 0x0de1 /* GL_TEXTURE_2D */) { + // XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support + // it by forwarding to glEnableClientState + /* Actually, let's not, for now. (This sounds exceedingly broken) + * This is in gl_ps_workaround2.c. + _glEnableClientState(cap); + */ + return; + } else if (!(cap in validCapabilities)) { + return; + } + glEnable(cap); + }; + + var glDisable = _glDisable; + _glDisable = _emscripten_glDisable = function _glDisable(cap) { + if (GLImmediate.lastRenderer) GLImmediate.lastRenderer.cleanup(); + if (cap == 0x0B60 /* GL_FOG */) { + if (GLEmulation.fogEnabled != false) { + GLImmediate.currentRenderer = null; // Fog parameter is part of the FFP shader state, we must re-lookup the renderer to use. + GLEmulation.fogEnabled = false; + } + return; + } else if (cap == 0x0de1 /* GL_TEXTURE_2D */) { + // XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support + // it by forwarding to glDisableClientState + /* Actually, let's not, for now. (This sounds exceedingly broken) + * This is in gl_ps_workaround2.c. + _glDisableClientState(cap); + */ + return; + } else if (!(cap in validCapabilities)) { + return; + } + glDisable(cap); + }; + _glIsEnabled = _emscripten_glIsEnabled = function _glIsEnabled(cap) { + if (cap == 0x0B60 /* GL_FOG */) { + return GLEmulation.fogEnabled ? 1 : 0; + } else if (!(cap in validCapabilities)) { + return 0; + } + return GLctx.isEnabled(cap); + }; + + var glGetBooleanv = _glGetBooleanv; + _glGetBooleanv = _emscripten_glGetBooleanv = function _glGetBooleanv(pname, p) { + var attrib = GLEmulation.getAttributeFromCapability(pname); + if (attrib !== null) { + var result = GLImmediate.enabledClientAttributes[attrib]; + HEAP8[(p)]=result === true ? 1 : 0; + return; + } + glGetBooleanv(pname, p); + }; + + var glGetIntegerv = _glGetIntegerv; + _glGetIntegerv = _emscripten_glGetIntegerv = function _glGetIntegerv(pname, params) { + switch (pname) { + case 0x84E2: pname = GLctx.MAX_TEXTURE_IMAGE_UNITS /* fake it */; break; // GL_MAX_TEXTURE_UNITS + case 0x8B4A: { // GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB + var result = GLctx.getParameter(GLctx.MAX_VERTEX_UNIFORM_VECTORS); + HEAP32[((params)>>2)]=result*4; // GLES gives num of 4-element vectors, GL wants individual components, so multiply + return; + } + case 0x8B49: { // GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB + var result = GLctx.getParameter(GLctx.MAX_FRAGMENT_UNIFORM_VECTORS); + HEAP32[((params)>>2)]=result*4; // GLES gives num of 4-element vectors, GL wants individual components, so multiply + return; + } + case 0x8B4B: { // GL_MAX_VARYING_FLOATS_ARB + var result = GLctx.getParameter(GLctx.MAX_VARYING_VECTORS); + HEAP32[((params)>>2)]=result*4; // GLES gives num of 4-element vectors, GL wants individual components, so multiply + return; + } + case 0x8871: pname = GLctx.MAX_COMBINED_TEXTURE_IMAGE_UNITS /* close enough */; break; // GL_MAX_TEXTURE_COORDS + case 0x807A: { // GL_VERTEX_ARRAY_SIZE + var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX]; + HEAP32[((params)>>2)]=attribute ? attribute.size : 0; + return; + } + case 0x807B: { // GL_VERTEX_ARRAY_TYPE + var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX]; + HEAP32[((params)>>2)]=attribute ? attribute.type : 0; + return; + } + case 0x807C: { // GL_VERTEX_ARRAY_STRIDE + var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX]; + HEAP32[((params)>>2)]=attribute ? attribute.stride : 0; + return; + } + case 0x8081: { // GL_COLOR_ARRAY_SIZE + var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR]; + HEAP32[((params)>>2)]=attribute ? attribute.size : 0; + return; + } + case 0x8082: { // GL_COLOR_ARRAY_TYPE + var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR]; + HEAP32[((params)>>2)]=attribute ? attribute.type : 0; + return; + } + case 0x8083: { // GL_COLOR_ARRAY_STRIDE + var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR]; + HEAP32[((params)>>2)]=attribute ? attribute.stride : 0; + return; + } + case 0x8088: { // GL_TEXTURE_COORD_ARRAY_SIZE + var attribute = GLImmediate.clientAttributes[GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture]; + HEAP32[((params)>>2)]=attribute ? attribute.size : 0; + return; + } + case 0x8089: { // GL_TEXTURE_COORD_ARRAY_TYPE + var attribute = GLImmediate.clientAttributes[GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture]; + HEAP32[((params)>>2)]=attribute ? attribute.type : 0; + return; + } + case 0x808A: { // GL_TEXTURE_COORD_ARRAY_STRIDE + var attribute = GLImmediate.clientAttributes[GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture]; + HEAP32[((params)>>2)]=attribute ? attribute.stride : 0; + return; + } + } + glGetIntegerv(pname, params); + }; + + var glGetString = _glGetString; + _glGetString = _emscripten_glGetString = function _glGetString(name_) { + if (GL.stringCache[name_]) return GL.stringCache[name_]; + switch(name_) { + case 0x1F03 /* GL_EXTENSIONS */: // Add various extensions that we can support + var ret = allocate(intArrayFromString(GLctx.getSupportedExtensions().join(' ') + + ' GL_EXT_texture_env_combine GL_ARB_texture_env_crossbar GL_ATI_texture_env_combine3 GL_NV_texture_env_combine4 GL_EXT_texture_env_dot3 GL_ARB_multitexture GL_ARB_vertex_buffer_object GL_EXT_framebuffer_object GL_ARB_vertex_program GL_ARB_fragment_program GL_ARB_shading_language_100 GL_ARB_shader_objects GL_ARB_vertex_shader GL_ARB_fragment_shader GL_ARB_texture_cube_map GL_EXT_draw_range_elements' + + (GL.compressionExt ? ' GL_ARB_texture_compression GL_EXT_texture_compression_s3tc' : '') + + (GL.anisotropicExt ? ' GL_EXT_texture_filter_anisotropic' : '') + ), 'i8', ALLOC_NORMAL); + GL.stringCache[name_] = ret; + return ret; + } + return glGetString(name_); + }; + + // Do some automatic rewriting to work around GLSL differences. Note that this must be done in + // tandem with the rest of the program, by itself it cannot suffice. + // Note that we need to remember shader types for this rewriting, saving sources makes it easier to debug. + GL.shaderInfos = {}; + var glCreateShader = _glCreateShader; + _glCreateShader = _emscripten_glCreateShader = function _glCreateShader(shaderType) { + var id = glCreateShader(shaderType); + GL.shaderInfos[id] = { + type: shaderType, + ftransform: false + }; + return id; + }; + + function ensurePrecision(source) { + if (!/precision +(low|medium|high)p +float *;/.test(source)) { + source = 'precision mediump float;\n' + source; + } + return source; + } + + var glShaderSource = _glShaderSource; + _glShaderSource = _emscripten_glShaderSource = function _glShaderSource(shader, count, string, length) { + var source = GL.getSource(shader, count, string, length); + // XXX We add attributes and uniforms to shaders. The program can ask for the # of them, and see the + // ones we generated, potentially confusing it? Perhaps we should hide them. + if (GL.shaderInfos[shader].type == GLctx.VERTEX_SHADER) { + // Replace ftransform() with explicit project/modelview transforms, and add position and matrix info. + var has_pm = source.search(/u_projection/) >= 0; + var has_mm = source.search(/u_modelView/) >= 0; + var has_pv = source.search(/a_position/) >= 0; + var need_pm = 0, need_mm = 0, need_pv = 0; + var old = source; + source = source.replace(/ftransform\(\)/g, '(u_projection * u_modelView * a_position)'); + if (old != source) need_pm = need_mm = need_pv = 1; + old = source; + source = source.replace(/gl_ProjectionMatrix/g, 'u_projection'); + if (old != source) need_pm = 1; + old = source; + source = source.replace(/gl_ModelViewMatrixTranspose\[2\]/g, 'vec4(u_modelView[0][2], u_modelView[1][2], u_modelView[2][2], u_modelView[3][2])'); // XXX extremely inefficient + if (old != source) need_mm = 1; + old = source; + source = source.replace(/gl_ModelViewMatrix/g, 'u_modelView'); + if (old != source) need_mm = 1; + old = source; + source = source.replace(/gl_Vertex/g, 'a_position'); + if (old != source) need_pv = 1; + old = source; + source = source.replace(/gl_ModelViewProjectionMatrix/g, '(u_projection * u_modelView)'); + if (old != source) need_pm = need_mm = 1; + if (need_pv && !has_pv) source = 'attribute vec4 a_position; \n' + source; + if (need_mm && !has_mm) source = 'uniform mat4 u_modelView; \n' + source; + if (need_pm && !has_pm) source = 'uniform mat4 u_projection; \n' + source; + GL.shaderInfos[shader].ftransform = need_pm || need_mm || need_pv; // we will need to provide the fixed function stuff as attributes and uniforms + for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) { + // XXX To handle both regular texture mapping and cube mapping, we use vec4 for tex coordinates. + var old = source; + var need_vtc = source.search('v_texCoord' + i) == -1; + source = source.replace(new RegExp('gl_TexCoord\\[' + i + '\\]', 'g'), 'v_texCoord' + i) + .replace(new RegExp('gl_MultiTexCoord' + i, 'g'), 'a_texCoord' + i); + if (source != old) { + source = 'attribute vec4 a_texCoord' + i + '; \n' + source; + if (need_vtc) { + source = 'varying vec4 v_texCoord' + i + '; \n' + source; + } + } + + old = source; + source = source.replace(new RegExp('gl_TextureMatrix\\[' + i + '\\]', 'g'), 'u_textureMatrix' + i); + if (source != old) { + source = 'uniform mat4 u_textureMatrix' + i + '; \n' + source; + } + } + if (source.indexOf('gl_FrontColor') >= 0) { + source = 'varying vec4 v_color; \n' + + source.replace(/gl_FrontColor/g, 'v_color'); + } + if (source.indexOf('gl_Color') >= 0) { + source = 'attribute vec4 a_color; \n' + + source.replace(/gl_Color/g, 'a_color'); + } + if (source.indexOf('gl_Normal') >= 0) { + source = 'attribute vec3 a_normal; \n' + + source.replace(/gl_Normal/g, 'a_normal'); + } + // fog + if (source.indexOf('gl_FogFragCoord') >= 0) { + source = 'varying float v_fogFragCoord; \n' + + source.replace(/gl_FogFragCoord/g, 'v_fogFragCoord'); + } + source = ensurePrecision(source); + } else { // Fragment shader + for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) { + var old = source; + source = source.replace(new RegExp('gl_TexCoord\\[' + i + '\\]', 'g'), 'v_texCoord' + i); + if (source != old) { + source = 'varying vec4 v_texCoord' + i + '; \n' + source; + } + } + if (source.indexOf('gl_Color') >= 0) { + source = 'varying vec4 v_color; \n' + source.replace(/gl_Color/g, 'v_color'); + } + if (source.indexOf('gl_Fog.color') >= 0) { + source = 'uniform vec4 u_fogColor; \n' + + source.replace(/gl_Fog.color/g, 'u_fogColor'); + } + if (source.indexOf('gl_Fog.end') >= 0) { + source = 'uniform float u_fogEnd; \n' + + source.replace(/gl_Fog.end/g, 'u_fogEnd'); + } + if (source.indexOf('gl_Fog.scale') >= 0) { + source = 'uniform float u_fogScale; \n' + + source.replace(/gl_Fog.scale/g, 'u_fogScale'); + } + if (source.indexOf('gl_Fog.density') >= 0) { + source = 'uniform float u_fogDensity; \n' + + source.replace(/gl_Fog.density/g, 'u_fogDensity'); + } + if (source.indexOf('gl_FogFragCoord') >= 0) { + source = 'varying float v_fogFragCoord; \n' + + source.replace(/gl_FogFragCoord/g, 'v_fogFragCoord'); + } + source = ensurePrecision(source); + } + GLctx.shaderSource(GL.shaders[shader], source); + }; + + var glCompileShader = _glCompileShader; + _glCompileShader = _emscripten_glCompileShader = function _glCompileShader(shader) { + GLctx.compileShader(GL.shaders[shader]); + }; + + GL.programShaders = {}; + var glAttachShader = _glAttachShader; + _glAttachShader = _emscripten_glAttachShader = function _glAttachShader(program, shader) { + if (!GL.programShaders[program]) GL.programShaders[program] = []; + GL.programShaders[program].push(shader); + glAttachShader(program, shader); + }; + + var glDetachShader = _glDetachShader; + _glDetachShader = _emscripten_glDetachShader = function _glDetachShader(program, shader) { + var programShader = GL.programShaders[program]; + if (!programShader) { + Module.printErr('WARNING: _glDetachShader received invalid program: ' + program); + return; + } + var index = programShader.indexOf(shader); + programShader.splice(index, 1); + glDetachShader(program, shader); + }; + + var glUseProgram = _glUseProgram; + _glUseProgram = _emscripten_glUseProgram = function _glUseProgram(program) { + if (GL.currProgram != program) { + GLImmediate.currentRenderer = null; // This changes the FFP emulation shader program, need to recompute that. + GL.currProgram = program; + GLImmediate.fixedFunctionProgram = 0; + glUseProgram(program); + } + } + + var glDeleteProgram = _glDeleteProgram; + _glDeleteProgram = _emscripten_glDeleteProgram = function _glDeleteProgram(program) { + glDeleteProgram(program); + if (program == GL.currProgram) { + GLImmediate.currentRenderer = null; // This changes the FFP emulation shader program, need to recompute that. + GL.currProgram = 0; + } + }; + + // If attribute 0 was not bound, bind it to 0 for WebGL performance reasons. Track if 0 is free for that. + var zeroUsedPrograms = {}; + var glBindAttribLocation = _glBindAttribLocation; + _glBindAttribLocation = _emscripten_glBindAttribLocation = function _glBindAttribLocation(program, index, name) { + if (index == 0) zeroUsedPrograms[program] = true; + glBindAttribLocation(program, index, name); + }; + var glLinkProgram = _glLinkProgram; + _glLinkProgram = _emscripten_glLinkProgram = function _glLinkProgram(program) { + if (!(program in zeroUsedPrograms)) { + GLctx.bindAttribLocation(GL.programs[program], 0, 'a_position'); + } + glLinkProgram(program); + }; + + var glBindBuffer = _glBindBuffer; + _glBindBuffer = _emscripten_glBindBuffer = function _glBindBuffer(target, buffer) { + glBindBuffer(target, buffer); + if (target == GLctx.ARRAY_BUFFER) { + if (GLEmulation.currentVao) { + GLEmulation.currentVao.arrayBuffer = buffer; + } + } else if (target == GLctx.ELEMENT_ARRAY_BUFFER) { + if (GLEmulation.currentVao) GLEmulation.currentVao.elementArrayBuffer = buffer; + } + }; + + var glGetFloatv = _glGetFloatv; + _glGetFloatv = _emscripten_glGetFloatv = function _glGetFloatv(pname, params) { + if (pname == 0x0BA6) { // GL_MODELVIEW_MATRIX + HEAPF32.set(GLImmediate.matrix[0/*m*/], params >> 2); + } else if (pname == 0x0BA7) { // GL_PROJECTION_MATRIX + HEAPF32.set(GLImmediate.matrix[1/*p*/], params >> 2); + } else if (pname == 0x0BA8) { // GL_TEXTURE_MATRIX + HEAPF32.set(GLImmediate.matrix[2/*t*/ + GLImmediate.clientActiveTexture], params >> 2); + } else if (pname == 0x0B66) { // GL_FOG_COLOR + HEAPF32.set(GLEmulation.fogColor, params >> 2); + } else if (pname == 0x0B63) { // GL_FOG_START + HEAPF32[((params)>>2)]=GLEmulation.fogStart; + } else if (pname == 0x0B64) { // GL_FOG_END + HEAPF32[((params)>>2)]=GLEmulation.fogEnd; + } else if (pname == 0x0B62) { // GL_FOG_DENSITY + HEAPF32[((params)>>2)]=GLEmulation.fogDensity; + } else if (pname == 0x0B65) { // GL_FOG_MODE + HEAPF32[((params)>>2)]=GLEmulation.fogMode; + } else { + glGetFloatv(pname, params); + } + }; + + var glHint = _glHint; + _glHint = _emscripten_glHint = function _glHint(target, mode) { + if (target == 0x84EF) { // GL_TEXTURE_COMPRESSION_HINT + return; + } + glHint(target, mode); + }; + + var glEnableVertexAttribArray = _glEnableVertexAttribArray; + _glEnableVertexAttribArray = _emscripten_glEnableVertexAttribArray = function _glEnableVertexAttribArray(index) { + glEnableVertexAttribArray(index); + GLEmulation.enabledVertexAttribArrays[index] = 1; + if (GLEmulation.currentVao) GLEmulation.currentVao.enabledVertexAttribArrays[index] = 1; + }; + + var glDisableVertexAttribArray = _glDisableVertexAttribArray; + _glDisableVertexAttribArray = _emscripten_glDisableVertexAttribArray = function _glDisableVertexAttribArray(index) { + glDisableVertexAttribArray(index); + delete GLEmulation.enabledVertexAttribArrays[index]; + if (GLEmulation.currentVao) delete GLEmulation.currentVao.enabledVertexAttribArrays[index]; + }; + + var glVertexAttribPointer = _glVertexAttribPointer; + _glVertexAttribPointer = _emscripten_glVertexAttribPointer = function _glVertexAttribPointer(index, size, type, normalized, stride, pointer) { + glVertexAttribPointer(index, size, type, normalized, stride, pointer); + if (GLEmulation.currentVao) { // TODO: avoid object creation here? likely not hot though + GLEmulation.currentVao.vertexAttribPointers[index] = [index, size, type, normalized, stride, pointer]; + } + }; + },getAttributeFromCapability:function (cap) { + var attrib = null; + switch (cap) { + case 0x0de1: // GL_TEXTURE_2D - XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support it + // Fall through: + case 0x8078: // GL_TEXTURE_COORD_ARRAY + attrib = GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture; break; + case 0x8074: // GL_VERTEX_ARRAY + attrib = GLImmediate.VERTEX; break; + case 0x8075: // GL_NORMAL_ARRAY + attrib = GLImmediate.NORMAL; break; + case 0x8076: // GL_COLOR_ARRAY + attrib = GLImmediate.COLOR; break; + } + return attrib; + }};var GLImmediate={MapTreeLib:null,spawnMapTreeLib:function () { + /* A naive implementation of a map backed by an array, and accessed by + * naive iteration along the array. (hashmap with only one bucket) + */ + function CNaiveListMap() { + var list = []; + + this.insert = function CNaiveListMap_insert(key, val) { + if (this.contains(key|0)) return false; + list.push([key, val]); + return true; + }; + + var __contains_i; + this.contains = function CNaiveListMap_contains(key) { + for (__contains_i = 0; __contains_i < list.length; ++__contains_i) { + if (list[__contains_i][0] === key) return true; + } + return false; + }; + + var __get_i; + this.get = function CNaiveListMap_get(key) { + for (__get_i = 0; __get_i < list.length; ++__get_i) { + if (list[__get_i][0] === key) return list[__get_i][1]; + } + return undefined; + }; + }; + + /* A tree of map nodes. + Uses `KeyView`s to allow descending the tree without garbage. + Example: { + // Create our map object. + var map = new ObjTreeMap(); + + // Grab the static keyView for the map. + var keyView = map.GetStaticKeyView(); + + // Let's make a map for: + // root: + // 1: + // 2: + // 5: "Three, sir!" + // 3: "Three!" + + // Note how we can chain together `Reset` and `Next` to + // easily descend based on multiple key fragments. + keyView.Reset().Next(1).Next(2).Next(5).Set("Three, sir!"); + keyView.Reset().Next(1).Next(2).Next(3).Set("Three!"); + } + */ + function CMapTree() { + function CNLNode() { + var map = new CNaiveListMap(); + + this.child = function CNLNode_child(keyFrag) { + if (!map.contains(keyFrag|0)) { + map.insert(keyFrag|0, new CNLNode()); + } + return map.get(keyFrag|0); + }; + + this.value = undefined; + this.get = function CNLNode_get() { + return this.value; + }; + + this.set = function CNLNode_set(val) { + this.value = val; + }; + } + + function CKeyView(root) { + var cur; + + this.reset = function CKeyView_reset() { + cur = root; + return this; + }; + this.reset(); + + this.next = function CKeyView_next(keyFrag) { + cur = cur.child(keyFrag); + return this; + }; + + this.get = function CKeyView_get() { + return cur.get(); + }; + + this.set = function CKeyView_set(val) { + cur.set(val); + }; + }; + + var root; + var staticKeyView; + + this.createKeyView = function CNLNode_createKeyView() { + return new CKeyView(root); + } + + this.clear = function CNLNode_clear() { + root = new CNLNode(); + staticKeyView = this.createKeyView(); + }; + this.clear(); + + this.getStaticKeyView = function CNLNode_getStaticKeyView() { + staticKeyView.reset(); + return staticKeyView; + }; + }; + + // Exports: + return { + create: function() { + return new CMapTree(); + }, + }; + },TexEnvJIT:null,spawnTexEnvJIT:function () { + // GL defs: + var GL_TEXTURE0 = 0x84C0; + var GL_TEXTURE_1D = 0x0DE0; + var GL_TEXTURE_2D = 0x0DE1; + var GL_TEXTURE_3D = 0x806f; + var GL_TEXTURE_CUBE_MAP = 0x8513; + var GL_TEXTURE_ENV = 0x2300; + var GL_TEXTURE_ENV_MODE = 0x2200; + var GL_TEXTURE_ENV_COLOR = 0x2201; + var GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; + var GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; + var GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; + var GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; + var GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; + var GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; + + var GL_SRC0_RGB = 0x8580; + var GL_SRC1_RGB = 0x8581; + var GL_SRC2_RGB = 0x8582; + + var GL_SRC0_ALPHA = 0x8588; + var GL_SRC1_ALPHA = 0x8589; + var GL_SRC2_ALPHA = 0x858A; + + var GL_OPERAND0_RGB = 0x8590; + var GL_OPERAND1_RGB = 0x8591; + var GL_OPERAND2_RGB = 0x8592; + + var GL_OPERAND0_ALPHA = 0x8598; + var GL_OPERAND1_ALPHA = 0x8599; + var GL_OPERAND2_ALPHA = 0x859A; + + var GL_COMBINE_RGB = 0x8571; + var GL_COMBINE_ALPHA = 0x8572; + + var GL_RGB_SCALE = 0x8573; + var GL_ALPHA_SCALE = 0x0D1C; + + // env.mode + var GL_ADD = 0x0104; + var GL_BLEND = 0x0BE2; + var GL_REPLACE = 0x1E01; + var GL_MODULATE = 0x2100; + var GL_DECAL = 0x2101; + var GL_COMBINE = 0x8570; + + // env.color/alphaCombiner + //var GL_ADD = 0x0104; + //var GL_REPLACE = 0x1E01; + //var GL_MODULATE = 0x2100; + var GL_SUBTRACT = 0x84E7; + var GL_INTERPOLATE = 0x8575; + + // env.color/alphaSrc + var GL_TEXTURE = 0x1702; + var GL_CONSTANT = 0x8576; + var GL_PRIMARY_COLOR = 0x8577; + var GL_PREVIOUS = 0x8578; + + // env.color/alphaOp + var GL_SRC_COLOR = 0x0300; + var GL_ONE_MINUS_SRC_COLOR = 0x0301; + var GL_SRC_ALPHA = 0x0302; + var GL_ONE_MINUS_SRC_ALPHA = 0x0303; + + var GL_RGB = 0x1907; + var GL_RGBA = 0x1908; + + // Our defs: + var TEXENVJIT_NAMESPACE_PREFIX = "tej_"; + // Not actually constant, as they can be changed between JIT passes: + var TEX_UNIT_UNIFORM_PREFIX = "uTexUnit"; + var TEX_COORD_VARYING_PREFIX = "vTexCoord"; + var PRIM_COLOR_VARYING = "vPrimColor"; + var TEX_MATRIX_UNIFORM_PREFIX = "uTexMatrix"; + + // Static vars: + var s_texUnits = null; //[]; + var s_activeTexture = 0; + + var s_requiredTexUnitsForPass = []; + + // Static funcs: + function abort(info) { + assert(false, "[TexEnvJIT] ABORT: " + info); + } + + function abort_noSupport(info) { + abort("No support: " + info); + } + + function abort_sanity(info) { + abort("Sanity failure: " + info); + } + + function genTexUnitSampleExpr(texUnitID) { + var texUnit = s_texUnits[texUnitID]; + var texType = texUnit.getTexType(); + + var func = null; + switch (texType) { + case GL_TEXTURE_1D: + func = "texture2D"; + break; + case GL_TEXTURE_2D: + func = "texture2D"; + break; + case GL_TEXTURE_3D: + return abort_noSupport("No support for 3D textures."); + case GL_TEXTURE_CUBE_MAP: + func = "textureCube"; + break; + default: + return abort_sanity("Unknown texType: 0x" + texType.toString(16)); + } + + var texCoordExpr = TEX_COORD_VARYING_PREFIX + texUnitID; + if (TEX_MATRIX_UNIFORM_PREFIX != null) { + texCoordExpr = "(" + TEX_MATRIX_UNIFORM_PREFIX + texUnitID + " * " + texCoordExpr + ")"; + } + return func + "(" + TEX_UNIT_UNIFORM_PREFIX + texUnitID + ", " + texCoordExpr + ".xy)"; + } + + function getTypeFromCombineOp(op) { + switch (op) { + case GL_SRC_COLOR: + case GL_ONE_MINUS_SRC_COLOR: + return "vec3"; + case GL_SRC_ALPHA: + case GL_ONE_MINUS_SRC_ALPHA: + return "float"; + } + + return abort_noSupport("Unsupported combiner op: 0x" + op.toString(16)); + } + + function getCurTexUnit() { + return s_texUnits[s_activeTexture]; + } + + function genCombinerSourceExpr(texUnitID, constantExpr, previousVar, + src, op) + { + var srcExpr = null; + switch (src) { + case GL_TEXTURE: + srcExpr = genTexUnitSampleExpr(texUnitID); + break; + case GL_CONSTANT: + srcExpr = constantExpr; + break; + case GL_PRIMARY_COLOR: + srcExpr = PRIM_COLOR_VARYING; + break; + case GL_PREVIOUS: + srcExpr = previousVar; + break; + default: + return abort_noSupport("Unsupported combiner src: 0x" + src.toString(16)); + } + + var expr = null; + switch (op) { + case GL_SRC_COLOR: + expr = srcExpr + ".rgb"; + break; + case GL_ONE_MINUS_SRC_COLOR: + expr = "(vec3(1.0) - " + srcExpr + ".rgb)"; + break; + case GL_SRC_ALPHA: + expr = srcExpr + ".a"; + break; + case GL_ONE_MINUS_SRC_ALPHA: + expr = "(1.0 - " + srcExpr + ".a)"; + break; + default: + return abort_noSupport("Unsupported combiner op: 0x" + op.toString(16)); + } + + return expr; + } + + function valToFloatLiteral(val) { + if (val == Math.round(val)) return val + '.0'; + return val; + } + + + // Classes: + function CTexEnv() { + this.mode = GL_MODULATE; + this.colorCombiner = GL_MODULATE; + this.alphaCombiner = GL_MODULATE; + this.colorScale = 1; + this.alphaScale = 1; + this.envColor = [0, 0, 0, 0]; + + this.colorSrc = [ + GL_TEXTURE, + GL_PREVIOUS, + GL_CONSTANT + ]; + this.alphaSrc = [ + GL_TEXTURE, + GL_PREVIOUS, + GL_CONSTANT + ]; + this.colorOp = [ + GL_SRC_COLOR, + GL_SRC_COLOR, + GL_SRC_ALPHA + ]; + this.alphaOp = [ + GL_SRC_ALPHA, + GL_SRC_ALPHA, + GL_SRC_ALPHA + ]; + + // Map GLenums to small values to efficiently pack the enums to bits for tighter access. + this.traverseKey = { + // mode + 0x1E01 /* GL_REPLACE */: 0, + 0x2100 /* GL_MODULATE */: 1, + 0x0104 /* GL_ADD */: 2, + 0x0BE2 /* GL_BLEND */: 3, + 0x2101 /* GL_DECAL */: 4, + 0x8570 /* GL_COMBINE */: 5, + + // additional color and alpha combiners + 0x84E7 /* GL_SUBTRACT */: 3, + 0x8575 /* GL_INTERPOLATE */: 4, + + // color and alpha src + 0x1702 /* GL_TEXTURE */: 0, + 0x8576 /* GL_CONSTANT */: 1, + 0x8577 /* GL_PRIMARY_COLOR */: 2, + 0x8578 /* GL_PREVIOUS */: 3, + + // color and alpha op + 0x0300 /* GL_SRC_COLOR */: 0, + 0x0301 /* GL_ONE_MINUS_SRC_COLOR */: 1, + 0x0302 /* GL_SRC_ALPHA */: 2, + 0x0300 /* GL_ONE_MINUS_SRC_ALPHA */: 3 + }; + + // The tuple (key0,key1,key2) uniquely identifies the state of the variables in CTexEnv. + // -1 on key0 denotes 'the whole cached key is dirty' + this.key0 = -1; + this.key1 = 0; + this.key2 = 0; + + this.computeKey0 = function() { + var k = this.traverseKey; + var key = k[this.mode] * 1638400; // 6 distinct values. + key += k[this.colorCombiner] * 327680; // 5 distinct values. + key += k[this.alphaCombiner] * 65536; // 5 distinct values. + // The above three fields have 6*5*5=150 distinct values -> 8 bits. + key += (this.colorScale-1) * 16384; // 10 bits used. + key += (this.alphaScale-1) * 4096; // 12 bits used. + key += k[this.colorSrc[0]] * 1024; // 14 + key += k[this.colorSrc[1]] * 256; // 16 + key += k[this.colorSrc[2]] * 64; // 18 + key += k[this.alphaSrc[0]] * 16; // 20 + key += k[this.alphaSrc[1]] * 4; // 22 + key += k[this.alphaSrc[2]]; // 24 bits used total. + return key; + } + this.computeKey1 = function() { + var k = this.traverseKey; + key = k[this.colorOp[0]] * 4096; + key += k[this.colorOp[1]] * 1024; + key += k[this.colorOp[2]] * 256; + key += k[this.alphaOp[0]] * 16; + key += k[this.alphaOp[1]] * 4; + key += k[this.alphaOp[2]]; + return key; + } + // TODO: remove this. The color should not be part of the key! + this.computeKey2 = function() { + return this.envColor[0] * 16777216 + this.envColor[1] * 65536 + this.envColor[2] * 256 + 1 + this.envColor[3]; + } + this.recomputeKey = function() { + this.key0 = this.computeKey0(); + this.key1 = this.computeKey1(); + this.key2 = this.computeKey2(); + } + this.invalidateKey = function() { + this.key0 = -1; // The key of this texture unit must be recomputed when rendering the next time. + GLImmediate.currentRenderer = null; // The currently used renderer must be re-evaluated at next render. + } + } + + function CTexUnit() { + this.env = new CTexEnv(); + this.enabled_tex1D = false; + this.enabled_tex2D = false; + this.enabled_tex3D = false; + this.enabled_texCube = false; + this.texTypesEnabled = 0; // A bitfield combination of the four flags above, used for fast access to operations. + + this.traverseState = function CTexUnit_traverseState(keyView) { + if (this.texTypesEnabled) { + if (this.env.key0 == -1) { + this.env.recomputeKey(); + } + keyView.next(this.texTypesEnabled | (this.env.key0 << 4)); + keyView.next(this.env.key1); + keyView.next(this.env.key2); + } else { + // For correctness, must traverse a zero value, theoretically a subsequent integer key could collide with this value otherwise. + keyView.next(0); + } + }; + }; + + // Class impls: + CTexUnit.prototype.enabled = function CTexUnit_enabled() { + return this.texTypesEnabled; + } + + CTexUnit.prototype.genPassLines = function CTexUnit_genPassLines(passOutputVar, passInputVar, texUnitID) { + if (!this.enabled()) { + return ["vec4 " + passOutputVar + " = " + passInputVar + ";"]; + } + var lines = this.env.genPassLines(passOutputVar, passInputVar, texUnitID).join('\n'); + + var texLoadLines = ''; + var texLoadRegex = /(texture.*?\(.*?\))/g; + var loadCounter = 0; + var load; + + // As an optimization, merge duplicate identical texture loads to one var. + while(load = texLoadRegex.exec(lines)) { + var texLoadExpr = load[1]; + var secondOccurrence = lines.slice(load.index+1).indexOf(texLoadExpr); + if (secondOccurrence != -1) { // And also has a second occurrence of same load expression.. + // Create new var to store the common load. + var prefix = TEXENVJIT_NAMESPACE_PREFIX + 'env' + texUnitID + "_"; + var texLoadVar = prefix + 'texload' + loadCounter++; + var texLoadLine = 'vec4 ' + texLoadVar + ' = ' + texLoadExpr + ';\n'; + texLoadLines += texLoadLine + '\n'; // Store the generated texture load statements in a temp string to not confuse regex search in progress. + lines = lines.split(texLoadExpr).join(texLoadVar); + // Reset regex search, since we modified the string. + texLoadRegex = /(texture.*\(.*\))/g; + } + } + return [texLoadLines + lines]; + } + + CTexUnit.prototype.getTexType = function CTexUnit_getTexType() { + if (this.enabled_texCube) { + return GL_TEXTURE_CUBE_MAP; + } else if (this.enabled_tex3D) { + return GL_TEXTURE_3D; + } else if (this.enabled_tex2D) { + return GL_TEXTURE_2D; + } else if (this.enabled_tex1D) { + return GL_TEXTURE_1D; + } + return 0; + } + + CTexEnv.prototype.genPassLines = function CTexEnv_genPassLines(passOutputVar, passInputVar, texUnitID) { + switch (this.mode) { + case GL_REPLACE: { + /* RGB: + * Cv = Cs + * Av = Ap // Note how this is different, and that we'll + * need to track the bound texture internalFormat + * to get this right. + * + * RGBA: + * Cv = Cs + * Av = As + */ + return [ + "vec4 " + passOutputVar + " = " + genTexUnitSampleExpr(texUnitID) + ";", + ]; + } + case GL_ADD: { + /* RGBA: + * Cv = Cp + Cs + * Av = ApAs + */ + var prefix = TEXENVJIT_NAMESPACE_PREFIX + 'env' + texUnitID + "_"; + var texVar = prefix + "tex"; + var colorVar = prefix + "color"; + var alphaVar = prefix + "alpha"; + + return [ + "vec4 " + texVar + " = " + genTexUnitSampleExpr(texUnitID) + ";", + "vec3 " + colorVar + " = " + passInputVar + ".rgb + " + texVar + ".rgb;", + "float " + alphaVar + " = " + passInputVar + ".a * " + texVar + ".a;", + "vec4 " + passOutputVar + " = vec4(" + colorVar + ", " + alphaVar + ");", + ]; + } + case GL_MODULATE: { + /* RGBA: + * Cv = CpCs + * Av = ApAs + */ + var line = [ + "vec4 " + passOutputVar, + " = ", + passInputVar, + " * ", + genTexUnitSampleExpr(texUnitID), + ";", + ]; + return [line.join("")]; + } + case GL_DECAL: { + /* RGBA: + * Cv = Cp(1 - As) + CsAs + * Av = Ap + */ + var prefix = TEXENVJIT_NAMESPACE_PREFIX + 'env' + texUnitID + "_"; + var texVar = prefix + "tex"; + var colorVar = prefix + "color"; + var alphaVar = prefix + "alpha"; + + return [ + "vec4 " + texVar + " = " + genTexUnitSampleExpr(texUnitID) + ";", + [ + "vec3 " + colorVar + " = ", + passInputVar + ".rgb * (1.0 - " + texVar + ".a)", + " + ", + texVar + ".rgb * " + texVar + ".a", + ";" + ].join(""), + "float " + alphaVar + " = " + passInputVar + ".a;", + "vec4 " + passOutputVar + " = vec4(" + colorVar + ", " + alphaVar + ");", + ]; + } + case GL_BLEND: { + /* RGBA: + * Cv = Cp(1 - Cs) + CcCs + * Av = As + */ + var prefix = TEXENVJIT_NAMESPACE_PREFIX + 'env' + texUnitID + "_"; + var texVar = prefix + "tex"; + var colorVar = prefix + "color"; + var alphaVar = prefix + "alpha"; + + return [ + "vec4 " + texVar + " = " + genTexUnitSampleExpr(texUnitID) + ";", + [ + "vec3 " + colorVar + " = ", + passInputVar + ".rgb * (1.0 - " + texVar + ".rgb)", + " + ", + PRIM_COLOR_VARYING + ".rgb * " + texVar + ".rgb", + ";" + ].join(""), + "float " + alphaVar + " = " + texVar + ".a;", + "vec4 " + passOutputVar + " = vec4(" + colorVar + ", " + alphaVar + ");", + ]; + } + case GL_COMBINE: { + var prefix = TEXENVJIT_NAMESPACE_PREFIX + 'env' + texUnitID + "_"; + var colorVar = prefix + "color"; + var alphaVar = prefix + "alpha"; + var colorLines = this.genCombinerLines(true, colorVar, + passInputVar, texUnitID, + this.colorCombiner, this.colorSrc, this.colorOp); + var alphaLines = this.genCombinerLines(false, alphaVar, + passInputVar, texUnitID, + this.alphaCombiner, this.alphaSrc, this.alphaOp); + + // Generate scale, but avoid generating an identity op that multiplies by one. + var scaledColor = (this.colorScale == 1) ? colorVar : (colorVar + " * " + valToFloatLiteral(this.colorScale)); + var scaledAlpha = (this.alphaScale == 1) ? alphaVar : (alphaVar + " * " + valToFloatLiteral(this.alphaScale)); + + var line = [ + "vec4 " + passOutputVar, + " = ", + "vec4(", + scaledColor, + ", ", + scaledAlpha, + ")", + ";", + ].join(""); + return [].concat(colorLines, alphaLines, [line]); + } + } + + return abort_noSupport("Unsupported TexEnv mode: 0x" + this.mode.toString(16)); + } + + CTexEnv.prototype.genCombinerLines = function CTexEnv_getCombinerLines(isColor, outputVar, + passInputVar, texUnitID, + combiner, srcArr, opArr) + { + var argsNeeded = null; + switch (combiner) { + case GL_REPLACE: + argsNeeded = 1; + break; + + case GL_MODULATE: + case GL_ADD: + case GL_SUBTRACT: + argsNeeded = 2; + break; + + case GL_INTERPOLATE: + argsNeeded = 3; + break; + + default: + return abort_noSupport("Unsupported combiner: 0x" + combiner.toString(16)); + } + + var constantExpr = [ + "vec4(", + valToFloatLiteral(this.envColor[0]), + ", ", + valToFloatLiteral(this.envColor[1]), + ", ", + valToFloatLiteral(this.envColor[2]), + ", ", + valToFloatLiteral(this.envColor[3]), + ")", + ].join(""); + var src0Expr = (argsNeeded >= 1) ? genCombinerSourceExpr(texUnitID, constantExpr, passInputVar, srcArr[0], opArr[0]) + : null; + var src1Expr = (argsNeeded >= 2) ? genCombinerSourceExpr(texUnitID, constantExpr, passInputVar, srcArr[1], opArr[1]) + : null; + var src2Expr = (argsNeeded >= 3) ? genCombinerSourceExpr(texUnitID, constantExpr, passInputVar, srcArr[2], opArr[2]) + : null; + + var outputType = isColor ? "vec3" : "float"; + var lines = null; + switch (combiner) { + case GL_REPLACE: { + var line = [ + outputType + " " + outputVar, + " = ", + src0Expr, + ";", + ]; + lines = [line.join("")]; + break; + } + case GL_MODULATE: { + var line = [ + outputType + " " + outputVar + " = ", + src0Expr + " * " + src1Expr, + ";", + ]; + lines = [line.join("")]; + break; + } + case GL_ADD: { + var line = [ + outputType + " " + outputVar + " = ", + src0Expr + " + " + src1Expr, + ";", + ]; + lines = [line.join("")]; + break; + } + case GL_SUBTRACT: { + var line = [ + outputType + " " + outputVar + " = ", + src0Expr + " - " + src1Expr, + ";", + ]; + lines = [line.join("")]; + break; + } + case GL_INTERPOLATE: { + var prefix = TEXENVJIT_NAMESPACE_PREFIX + 'env' + texUnitID + "_"; + var arg2Var = prefix + "colorSrc2"; + var arg2Line = getTypeFromCombineOp(this.colorOp[2]) + " " + arg2Var + " = " + src2Expr + ";"; + + var line = [ + outputType + " " + outputVar, + " = ", + src0Expr + " * " + arg2Var, + " + ", + src1Expr + " * (1.0 - " + arg2Var + ")", + ";", + ]; + lines = [ + arg2Line, + line.join(""), + ]; + break; + } + + default: + return abort_sanity("Unmatched TexEnv.colorCombiner?"); + } + + return lines; + } + + return { + // Exports: + init: function(gl, specifiedMaxTextureImageUnits) { + var maxTexUnits = 0; + if (specifiedMaxTextureImageUnits) { + maxTexUnits = specifiedMaxTextureImageUnits; + } else if (gl) { + maxTexUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + } + s_texUnits = []; + for (var i = 0; i < maxTexUnits; i++) { + s_texUnits.push(new CTexUnit()); + } + }, + + setGLSLVars: function(uTexUnitPrefix, vTexCoordPrefix, vPrimColor, uTexMatrixPrefix) { + TEX_UNIT_UNIFORM_PREFIX = uTexUnitPrefix; + TEX_COORD_VARYING_PREFIX = vTexCoordPrefix; + PRIM_COLOR_VARYING = vPrimColor; + TEX_MATRIX_UNIFORM_PREFIX = uTexMatrixPrefix; + }, + + genAllPassLines: function(resultDest, indentSize) { + indentSize = indentSize || 0; + + s_requiredTexUnitsForPass.length = 0; // Clear the list. + var lines = []; + var lastPassVar = PRIM_COLOR_VARYING; + for (var i = 0; i < s_texUnits.length; i++) { + if (!s_texUnits[i].enabled()) continue; + + s_requiredTexUnitsForPass.push(i); + + var prefix = TEXENVJIT_NAMESPACE_PREFIX + 'env' + i + "_"; + var passOutputVar = prefix + "result"; + + var newLines = s_texUnits[i].genPassLines(passOutputVar, lastPassVar, i); + lines = lines.concat(newLines, [""]); + + lastPassVar = passOutputVar; + } + lines.push(resultDest + " = " + lastPassVar + ";"); + + var indent = ""; + for (var i = 0; i < indentSize; i++) indent += " "; + + var output = indent + lines.join("\n" + indent); + + return output; + }, + + getUsedTexUnitList: function() { + return s_requiredTexUnitsForPass; + }, + + traverseState: function(keyView) { + for (var i = 0; i < s_texUnits.length; i++) { + s_texUnits[i].traverseState(keyView); + } + }, + + getTexUnitType: function(texUnitID) { + return s_texUnits[texUnitID].getTexType(); + }, + + // Hooks: + hook_activeTexture: function(texture) { + s_activeTexture = texture - GL_TEXTURE0; + }, + + hook_enable: function(cap) { + var cur = getCurTexUnit(); + switch (cap) { + case GL_TEXTURE_1D: + if (!cur.enabled_tex1D) { + GLImmediate.currentRenderer = null; // Renderer state changed, and must be recreated or looked up again. + cur.enabled_tex1D = true; + cur.texTypesEnabled |= 1; + } + break; + case GL_TEXTURE_2D: + if (!cur.enabled_tex2D) { + GLImmediate.currentRenderer = null; + cur.enabled_tex2D = true; + cur.texTypesEnabled |= 2; + } + break; + case GL_TEXTURE_3D: + if (!cur.enabled_tex3D) { + GLImmediate.currentRenderer = null; + cur.enabled_tex3D = true; + cur.texTypesEnabled |= 4; + } + break; + case GL_TEXTURE_CUBE_MAP: + if (!cur.enabled_texCube) { + GLImmediate.currentRenderer = null; + cur.enabled_texCube = true; + cur.texTypesEnabled |= 8; + } + break; + } + }, + + hook_disable: function(cap) { + var cur = getCurTexUnit(); + switch (cap) { + case GL_TEXTURE_1D: + if (cur.enabled_tex1D) { + GLImmediate.currentRenderer = null; // Renderer state changed, and must be recreated or looked up again. + cur.enabled_tex1D = false; + cur.texTypesEnabled &= ~1; + } + break; + case GL_TEXTURE_2D: + if (cur.enabled_tex2D) { + GLImmediate.currentRenderer = null; + cur.enabled_tex2D = false; + cur.texTypesEnabled &= ~2; + } + break; + case GL_TEXTURE_3D: + if (cur.enabled_tex3D) { + GLImmediate.currentRenderer = null; + cur.enabled_tex3D = false; + cur.texTypesEnabled &= ~4; + } + break; + case GL_TEXTURE_CUBE_MAP: + if (cur.enabled_texCube) { + GLImmediate.currentRenderer = null; + cur.enabled_texCube = false; + cur.texTypesEnabled &= ~8; + } + break; + } + }, + + hook_texEnvf: function(target, pname, param) { + if (target != GL_TEXTURE_ENV) + return; + + var env = getCurTexUnit().env; + switch (pname) { + case GL_RGB_SCALE: + if (env.colorScale != param) { + env.invalidateKey(); // We changed FFP emulation renderer state. + env.colorScale = param; + } + break; + case GL_ALPHA_SCALE: + if (env.alphaScale != param) { + env.invalidateKey(); + env.alphaScale = param; + } + break; + + default: + Module.printErr('WARNING: Unhandled `pname` in call to `glTexEnvf`.'); + } + }, + + hook_texEnvi: function(target, pname, param) { + if (target != GL_TEXTURE_ENV) + return; + + var env = getCurTexUnit().env; + switch (pname) { + case GL_TEXTURE_ENV_MODE: + if (env.mode != param) { + env.invalidateKey(); // We changed FFP emulation renderer state. + env.mode = param; + } + break; + + case GL_COMBINE_RGB: + if (env.colorCombiner != param) { + env.invalidateKey(); + env.colorCombiner = param; + } + break; + case GL_COMBINE_ALPHA: + if (env.alphaCombiner != param) { + env.invalidateKey(); + env.alphaCombiner = param; + } + break; + + case GL_SRC0_RGB: + if (env.colorSrc[0] != param) { + env.invalidateKey(); + env.colorSrc[0] = param; + } + break; + case GL_SRC1_RGB: + if (env.colorSrc[1] != param) { + env.invalidateKey(); + env.colorSrc[1] = param; + } + break; + case GL_SRC2_RGB: + if (env.colorSrc[2] != param) { + env.invalidateKey(); + env.colorSrc[2] = param; + } + break; + + case GL_SRC0_ALPHA: + if (env.alphaSrc[0] != param) { + env.invalidateKey(); + env.alphaSrc[0] = param; + } + break; + case GL_SRC1_ALPHA: + if (env.alphaSrc[1] != param) { + env.invalidateKey(); + env.alphaSrc[1] = param; + } + break; + case GL_SRC2_ALPHA: + if (env.alphaSrc[2] != param) { + env.invalidateKey(); + env.alphaSrc[2] = param; + } + break; + + case GL_OPERAND0_RGB: + if (env.colorOp[0] != param) { + env.invalidateKey(); + env.colorOp[0] = param; + } + break; + case GL_OPERAND1_RGB: + if (env.colorOp[1] != param) { + env.invalidateKey(); + env.colorOp[1] = param; + } + break; + case GL_OPERAND2_RGB: + if (env.colorOp[2] != param) { + env.invalidateKey(); + env.colorOp[2] = param; + } + break; + + case GL_OPERAND0_ALPHA: + if (env.alphaOp[0] != param) { + env.invalidateKey(); + env.alphaOp[0] = param; + } + break; + case GL_OPERAND1_ALPHA: + if (env.alphaOp[1] != param) { + env.invalidateKey(); + env.alphaOp[1] = param; + } + break; + case GL_OPERAND2_ALPHA: + if (env.alphaOp[2] != param) { + env.invalidateKey(); + env.alphaOp[2] = param; + } + break; + + case GL_RGB_SCALE: + if (env.colorScale != param) { + env.invalidateKey(); + env.colorScale = param; + } + break; + case GL_ALPHA_SCALE: + if (env.alphaScale != param) { + env.invalidateKey(); + env.alphaScale = param; + } + break; + + default: + Module.printErr('WARNING: Unhandled `pname` in call to `glTexEnvi`.'); + } + }, + + hook_texEnvfv: function(target, pname, params) { + if (target != GL_TEXTURE_ENV) return; + + var env = getCurTexUnit().env; + switch (pname) { + case GL_TEXTURE_ENV_COLOR: { + for (var i = 0; i < 4; i++) { + var param = HEAPF32[(((params)+(i*4))>>2)]; + if (env.envColor[i] != param) { + env.invalidateKey(); // We changed FFP emulation renderer state. + env.envColor[i] = param; + } + } + break + } + default: + Module.printErr('WARNING: Unhandled `pname` in call to `glTexEnvfv`.'); + } + }, + + hook_getTexEnviv: function(target, pname, param) { + if (target != GL_TEXTURE_ENV) + return; + + var env = getCurTexUnit().env; + switch (pname) { + case GL_TEXTURE_ENV_MODE: + HEAP32[((param)>>2)]=env.mode; + return; + + case GL_TEXTURE_ENV_COLOR: + HEAP32[((param)>>2)]=Math.max(Math.min(env.envColor[0]*255, 255, -255)); + HEAP32[(((param)+(1))>>2)]=Math.max(Math.min(env.envColor[1]*255, 255, -255)); + HEAP32[(((param)+(2))>>2)]=Math.max(Math.min(env.envColor[2]*255, 255, -255)); + HEAP32[(((param)+(3))>>2)]=Math.max(Math.min(env.envColor[3]*255, 255, -255)); + return; + + case GL_COMBINE_RGB: + HEAP32[((param)>>2)]=env.colorCombiner; + return; + + case GL_COMBINE_ALPHA: + HEAP32[((param)>>2)]=env.alphaCombiner; + return; + + case GL_SRC0_RGB: + HEAP32[((param)>>2)]=env.colorSrc[0]; + return; + + case GL_SRC1_RGB: + HEAP32[((param)>>2)]=env.colorSrc[1]; + return; + + case GL_SRC2_RGB: + HEAP32[((param)>>2)]=env.colorSrc[2]; + return; + + case GL_SRC0_ALPHA: + HEAP32[((param)>>2)]=env.alphaSrc[0]; + return; + + case GL_SRC1_ALPHA: + HEAP32[((param)>>2)]=env.alphaSrc[1]; + return; + + case GL_SRC2_ALPHA: + HEAP32[((param)>>2)]=env.alphaSrc[2]; + return; + + case GL_OPERAND0_RGB: + HEAP32[((param)>>2)]=env.colorOp[0]; + return; + + case GL_OPERAND1_RGB: + HEAP32[((param)>>2)]=env.colorOp[1]; + return; + + case GL_OPERAND2_RGB: + HEAP32[((param)>>2)]=env.colorOp[2]; + return; + + case GL_OPERAND0_ALPHA: + HEAP32[((param)>>2)]=env.alphaOp[0]; + return; + + case GL_OPERAND1_ALPHA: + HEAP32[((param)>>2)]=env.alphaOp[1]; + return; + + case GL_OPERAND2_ALPHA: + HEAP32[((param)>>2)]=env.alphaOp[2]; + return; + + case GL_RGB_SCALE: + HEAP32[((param)>>2)]=env.colorScale; + return; + + case GL_ALPHA_SCALE: + HEAP32[((param)>>2)]=env.alphaScale; + return; + + default: + Module.printErr('WARNING: Unhandled `pname` in call to `glGetTexEnvi`.'); + } + }, + + hook_getTexEnvfv: function(target, pname, param) { + if (target != GL_TEXTURE_ENV) + return; + + var env = getCurTexUnit().env; + switch (pname) { + case GL_TEXTURE_ENV_COLOR: + HEAPF32[((param)>>2)]=env.envColor[0]; + HEAPF32[(((param)+(4))>>2)]=env.envColor[1]; + HEAPF32[(((param)+(8))>>2)]=env.envColor[2]; + HEAPF32[(((param)+(12))>>2)]=env.envColor[3]; + return; + } + } + }; + },vertexData:null,vertexDataU8:null,tempData:null,indexData:null,vertexCounter:0,mode:-1,rendererCache:null,rendererComponents:[],rendererComponentPointer:0,lastRenderer:null,lastArrayBuffer:null,lastProgram:null,lastStride:-1,matrix:[],matrixStack:[],currentMatrix:0,tempMatrix:null,matricesModified:false,useTextureMatrix:false,VERTEX:0,NORMAL:1,COLOR:2,TEXTURE0:3,NUM_ATTRIBUTES:-1,MAX_TEXTURES:-1,totalEnabledClientAttributes:0,enabledClientAttributes:[0,0],clientAttributes:[],liveClientAttributes:[],currentRenderer:null,modifiedClientAttributes:false,clientActiveTexture:0,clientColor:null,usedTexUnitList:[],fixedFunctionProgram:null,setClientAttribute:function setClientAttribute(name, size, type, stride, pointer) { + var attrib = GLImmediate.clientAttributes[name]; + if (!attrib) { + for (var i = 0; i <= name; i++) { // keep flat + if (!GLImmediate.clientAttributes[i]) { + GLImmediate.clientAttributes[i] = { + name: name, + size: size, + type: type, + stride: stride, + pointer: pointer, + offset: 0 + }; + } + } + } else { + attrib.name = name; + attrib.size = size; + attrib.type = type; + attrib.stride = stride; + attrib.pointer = pointer; + attrib.offset = 0; + } + GLImmediate.modifiedClientAttributes = true; + },addRendererComponent:function addRendererComponent(name, size, type) { + if (!GLImmediate.rendererComponents[name]) { + GLImmediate.rendererComponents[name] = 1; + GLImmediate.enabledClientAttributes[name] = true; + GLImmediate.setClientAttribute(name, size, type, 0, GLImmediate.rendererComponentPointer); + GLImmediate.rendererComponentPointer += size * GL.byteSizeByType[type - GL.byteSizeByTypeRoot]; + } else { + GLImmediate.rendererComponents[name]++; + } + },disableBeginEndClientAttributes:function disableBeginEndClientAttributes() { + for (var i = 0; i < GLImmediate.NUM_ATTRIBUTES; i++) { + if (GLImmediate.rendererComponents[i]) GLImmediate.enabledClientAttributes[i] = false; + } + },getRenderer:function getRenderer() { + // If no FFP state has changed that would have forced to re-evaluate which FFP emulation shader to use, + // we have the currently used renderer in cache, and can immediately return that. + if (GLImmediate.currentRenderer) { + return GLImmediate.currentRenderer; + } + // return a renderer object given the liveClientAttributes + // we maintain a cache of renderers, optimized to not generate garbage + var attributes = GLImmediate.liveClientAttributes; + var cacheMap = GLImmediate.rendererCache; + var keyView = cacheMap.getStaticKeyView().reset(); + + // By attrib state: + var enabledAttributesKey = 0; + for (var i = 0; i < attributes.length; i++) { + enabledAttributesKey |= 1 << attributes[i].name; + } + + // By fog state: + var fogParam = 0; + if (GLEmulation.fogEnabled) { + switch (GLEmulation.fogMode) { + case 0x0801: // GL_EXP2 + fogParam = 1; + break; + case 0x2601: // GL_LINEAR + fogParam = 2; + break; + default: // default to GL_EXP + fogParam = 3; + break; + } + } + keyView.next((enabledAttributesKey << 2) | fogParam); + + // By cur program: + keyView.next(GL.currProgram); + if (!GL.currProgram) { + GLImmediate.TexEnvJIT.traverseState(keyView); + } + + // If we don't already have it, create it. + var renderer = keyView.get(); + if (!renderer) { + renderer = GLImmediate.createRenderer(); + GLImmediate.currentRenderer = renderer; + keyView.set(renderer); + return renderer; + } + GLImmediate.currentRenderer = renderer; // Cache the currently used renderer, so later lookups without state changes can get this fast. + return renderer; + },createRenderer:function createRenderer(renderer) { + var useCurrProgram = !!GL.currProgram; + var hasTextures = false; + for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) { + var texAttribName = GLImmediate.TEXTURE0 + i; + if (!GLImmediate.enabledClientAttributes[texAttribName]) + continue; + + + hasTextures = true; + } + + var ret = { + init: function init() { + // For fixed-function shader generation. + var uTexUnitPrefix = 'u_texUnit'; + var aTexCoordPrefix = 'a_texCoord'; + var vTexCoordPrefix = 'v_texCoord'; + var vPrimColor = 'v_color'; + var uTexMatrixPrefix = GLImmediate.useTextureMatrix ? 'u_textureMatrix' : null; + + if (useCurrProgram) { + if (GL.shaderInfos[GL.programShaders[GL.currProgram][0]].type == GLctx.VERTEX_SHADER) { + this.vertexShader = GL.shaders[GL.programShaders[GL.currProgram][0]]; + this.fragmentShader = GL.shaders[GL.programShaders[GL.currProgram][1]]; + } else { + this.vertexShader = GL.shaders[GL.programShaders[GL.currProgram][1]]; + this.fragmentShader = GL.shaders[GL.programShaders[GL.currProgram][0]]; + } + this.program = GL.programs[GL.currProgram]; + this.usedTexUnitList = []; + } else { + // IMPORTANT NOTE: If you parameterize the shader source based on any runtime values + // in order to create the least expensive shader possible based on the features being + // used, you should also update the code in the beginning of getRenderer to make sure + // that you cache the renderer based on the said parameters. + if (GLEmulation.fogEnabled) { + switch (GLEmulation.fogMode) { + case 0x0801: // GL_EXP2 + // fog = exp(-(gl_Fog.density * gl_FogFragCoord)^2) + var fogFormula = ' float fog = exp(-u_fogDensity * u_fogDensity * ecDistance * ecDistance); \n'; + break; + case 0x2601: // GL_LINEAR + // fog = (gl_Fog.end - gl_FogFragCoord) * gl_fog.scale + var fogFormula = ' float fog = (u_fogEnd - ecDistance) * u_fogScale; \n'; + break; + default: // default to GL_EXP + // fog = exp(-gl_Fog.density * gl_FogFragCoord) + var fogFormula = ' float fog = exp(-u_fogDensity * ecDistance); \n'; + break; + } + } + + GLImmediate.TexEnvJIT.setGLSLVars(uTexUnitPrefix, vTexCoordPrefix, vPrimColor, uTexMatrixPrefix); + var fsTexEnvPass = GLImmediate.TexEnvJIT.genAllPassLines('gl_FragColor', 2); + + var texUnitAttribList = ''; + var texUnitVaryingList = ''; + var texUnitUniformList = ''; + var vsTexCoordInits = ''; + this.usedTexUnitList = GLImmediate.TexEnvJIT.getUsedTexUnitList(); + for (var i = 0; i < this.usedTexUnitList.length; i++) { + var texUnit = this.usedTexUnitList[i]; + texUnitAttribList += 'attribute vec4 ' + aTexCoordPrefix + texUnit + ';\n'; + texUnitVaryingList += 'varying vec4 ' + vTexCoordPrefix + texUnit + ';\n'; + texUnitUniformList += 'uniform sampler2D ' + uTexUnitPrefix + texUnit + ';\n'; + vsTexCoordInits += ' ' + vTexCoordPrefix + texUnit + ' = ' + aTexCoordPrefix + texUnit + ';\n'; + + if (GLImmediate.useTextureMatrix) { + texUnitUniformList += 'uniform mat4 ' + uTexMatrixPrefix + texUnit + ';\n'; + } + } + + var vsFogVaryingInit = null; + if (GLEmulation.fogEnabled) { + vsFogVaryingInit = ' v_fogFragCoord = abs(ecPosition.z);\n'; + } + + var vsSource = [ + 'attribute vec4 a_position;', + 'attribute vec4 a_color;', + 'varying vec4 v_color;', + texUnitAttribList, + texUnitVaryingList, + (GLEmulation.fogEnabled ? 'varying float v_fogFragCoord;' : null), + 'uniform mat4 u_modelView;', + 'uniform mat4 u_projection;', + 'void main()', + '{', + ' vec4 ecPosition = u_modelView * a_position;', // eye-coordinate position + ' gl_Position = u_projection * ecPosition;', + ' v_color = a_color;', + vsTexCoordInits, + vsFogVaryingInit, + '}', + '' + ].join('\n').replace(/\n\n+/g, '\n'); + + this.vertexShader = GLctx.createShader(GLctx.VERTEX_SHADER); + GLctx.shaderSource(this.vertexShader, vsSource); + GLctx.compileShader(this.vertexShader); + + var fogHeaderIfNeeded = null; + if (GLEmulation.fogEnabled) { + fogHeaderIfNeeded = [ + '', + 'varying float v_fogFragCoord; ', + 'uniform vec4 u_fogColor; ', + 'uniform float u_fogEnd; ', + 'uniform float u_fogScale; ', + 'uniform float u_fogDensity; ', + 'float ffog(in float ecDistance) { ', + fogFormula, + ' fog = clamp(fog, 0.0, 1.0); ', + ' return fog; ', + '}', + '', + ].join("\n"); + } + + var fogPass = null; + if (GLEmulation.fogEnabled) { + fogPass = 'gl_FragColor = vec4(mix(u_fogColor.rgb, gl_FragColor.rgb, ffog(v_fogFragCoord)), gl_FragColor.a);\n'; + } + + var fsSource = [ + 'precision mediump float;', + texUnitVaryingList, + texUnitUniformList, + 'varying vec4 v_color;', + fogHeaderIfNeeded, + 'void main()', + '{', + fsTexEnvPass, + fogPass, + '}', + '' + ].join("\n").replace(/\n\n+/g, '\n'); + + this.fragmentShader = GLctx.createShader(GLctx.FRAGMENT_SHADER); + GLctx.shaderSource(this.fragmentShader, fsSource); + GLctx.compileShader(this.fragmentShader); + + this.program = GLctx.createProgram(); + GLctx.attachShader(this.program, this.vertexShader); + GLctx.attachShader(this.program, this.fragmentShader); + + // As optimization, bind all attributes to prespecified locations, so that the FFP emulation + // code can submit attributes to any generated FFP shader without having to examine each shader in turn. + // These prespecified locations are only assumed if GL_FFP_ONLY is specified, since user could also create their + // own shaders that didn't have attributes in the same locations. + GLctx.bindAttribLocation(this.program, GLImmediate.VERTEX, 'a_position'); + GLctx.bindAttribLocation(this.program, GLImmediate.COLOR, 'a_color'); + GLctx.bindAttribLocation(this.program, GLImmediate.NORMAL, 'a_normal'); + var maxVertexAttribs = GLctx.getParameter(GLctx.MAX_VERTEX_ATTRIBS); + for (var i = 0; i < GLImmediate.MAX_TEXTURES && GLImmediate.TEXTURE0 + i < maxVertexAttribs; i++) { + GLctx.bindAttribLocation(this.program, GLImmediate.TEXTURE0 + i, 'a_texCoord'+i); + GLctx.bindAttribLocation(this.program, GLImmediate.TEXTURE0 + i, aTexCoordPrefix+i); + } + GLctx.linkProgram(this.program); + } + + // Stores an array that remembers which matrix uniforms are up-to-date in this FFP renderer, so they don't need to be resubmitted + // each time we render with this program. + this.textureMatrixVersion = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; + + this.positionLocation = GLctx.getAttribLocation(this.program, 'a_position'); + + this.texCoordLocations = []; + + for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) { + if (!GLImmediate.enabledClientAttributes[GLImmediate.TEXTURE0 + i]) { + this.texCoordLocations[i] = -1; + continue; + } + + if (useCurrProgram) { + this.texCoordLocations[i] = GLctx.getAttribLocation(this.program, 'a_texCoord' + i); + } else { + this.texCoordLocations[i] = GLctx.getAttribLocation(this.program, aTexCoordPrefix + i); + } + } + this.colorLocation = GLctx.getAttribLocation(this.program, 'a_color'); + if (!useCurrProgram) { + // Temporarily switch to the program so we can set our sampler uniforms early. + var prevBoundProg = GLctx.getParameter(GLctx.CURRENT_PROGRAM); + GLctx.useProgram(this.program); + { + for (var i = 0; i < this.usedTexUnitList.length; i++) { + var texUnitID = this.usedTexUnitList[i]; + var texSamplerLoc = GLctx.getUniformLocation(this.program, uTexUnitPrefix + texUnitID); + GLctx.uniform1i(texSamplerLoc, texUnitID); + } + } + // The default color attribute value is not the same as the default for all other attribute streams (0,0,0,1) but (1,1,1,1), + // so explicitly set it right at start. + GLctx.vertexAttrib4fv(this.colorLocation, [1,1,1,1]); + GLctx.useProgram(prevBoundProg); + } + + this.textureMatrixLocations = []; + for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) { + this.textureMatrixLocations[i] = GLctx.getUniformLocation(this.program, 'u_textureMatrix' + i); + } + this.normalLocation = GLctx.getAttribLocation(this.program, 'a_normal'); + + this.modelViewLocation = GLctx.getUniformLocation(this.program, 'u_modelView'); + this.projectionLocation = GLctx.getUniformLocation(this.program, 'u_projection'); + + this.hasTextures = hasTextures; + this.hasNormal = GLImmediate.enabledClientAttributes[GLImmediate.NORMAL] && + GLImmediate.clientAttributes[GLImmediate.NORMAL].size > 0 && + this.normalLocation >= 0; + this.hasColor = (this.colorLocation === 0) || this.colorLocation > 0; + + this.floatType = GLctx.FLOAT; // minor optimization + + this.fogColorLocation = GLctx.getUniformLocation(this.program, 'u_fogColor'); + this.fogEndLocation = GLctx.getUniformLocation(this.program, 'u_fogEnd'); + this.fogScaleLocation = GLctx.getUniformLocation(this.program, 'u_fogScale'); + this.fogDensityLocation = GLctx.getUniformLocation(this.program, 'u_fogDensity'); + this.hasFog = !!(this.fogColorLocation || this.fogEndLocation || + this.fogScaleLocation || this.fogDensityLocation); + }, + + prepare: function prepare() { + // Calculate the array buffer + var arrayBuffer; + if (!GL.currArrayBuffer) { + var start = GLImmediate.firstVertex*GLImmediate.stride; + var end = GLImmediate.lastVertex*GLImmediate.stride; + arrayBuffer = GL.getTempVertexBuffer(end); + // TODO: consider using the last buffer we bound, if it was larger. downside is larger buffer, but we might avoid rebinding and preparing + } else { + arrayBuffer = GL.currArrayBuffer; + } + + // If the array buffer is unchanged and the renderer as well, then we can avoid all the work here + // XXX We use some heuristics here, and this may not work in all cases. Try disabling GL_UNSAFE_OPTS if you + // have odd glitches + var lastRenderer = GLImmediate.lastRenderer; + var canSkip = this == lastRenderer && + arrayBuffer == GLImmediate.lastArrayBuffer && + (GL.currProgram || this.program) == GLImmediate.lastProgram && + GLImmediate.stride == GLImmediate.lastStride && + !GLImmediate.matricesModified; + if (!canSkip && lastRenderer) lastRenderer.cleanup(); + if (!GL.currArrayBuffer) { + // Bind the array buffer and upload data after cleaning up the previous renderer + + if (arrayBuffer != GLImmediate.lastArrayBuffer) { + GLctx.bindBuffer(GLctx.ARRAY_BUFFER, arrayBuffer); + GLImmediate.lastArrayBuffer = arrayBuffer; + } + + GLctx.bufferSubData(GLctx.ARRAY_BUFFER, start, GLImmediate.vertexData.subarray(start >> 2, end >> 2)); + } + if (canSkip) return; + GLImmediate.lastRenderer = this; + GLImmediate.lastProgram = GL.currProgram || this.program; + GLImmediate.lastStride == GLImmediate.stride; + GLImmediate.matricesModified = false; + + if (!GL.currProgram) { + if (GLImmediate.fixedFunctionProgram != this.program) { + GLctx.useProgram(this.program); + GLImmediate.fixedFunctionProgram = this.program; + } + } + + if (this.modelViewLocation && this.modelViewMatrixVersion != GLImmediate.matrixVersion[0/*m*/]) { + this.modelViewMatrixVersion = GLImmediate.matrixVersion[0/*m*/]; + GLctx.uniformMatrix4fv(this.modelViewLocation, false, GLImmediate.matrix[0/*m*/]); + } + if (this.projectionLocation && this.projectionMatrixVersion != GLImmediate.matrixVersion[1/*p*/]) { + this.projectionMatrixVersion = GLImmediate.matrixVersion[1/*p*/]; + GLctx.uniformMatrix4fv(this.projectionLocation, false, GLImmediate.matrix[1/*p*/]); + } + + var clientAttributes = GLImmediate.clientAttributes; + var posAttr = clientAttributes[GLImmediate.VERTEX]; + + + GLctx.vertexAttribPointer(this.positionLocation, posAttr.size, posAttr.type, false, GLImmediate.stride, posAttr.offset); + GLctx.enableVertexAttribArray(this.positionLocation); + if (this.hasNormal) { + var normalAttr = clientAttributes[GLImmediate.NORMAL]; + GLctx.vertexAttribPointer(this.normalLocation, normalAttr.size, normalAttr.type, true, GLImmediate.stride, normalAttr.offset); + GLctx.enableVertexAttribArray(this.normalLocation); + } + if (this.hasTextures) { + for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) { + var attribLoc = this.texCoordLocations[i]; + if (attribLoc === undefined || attribLoc < 0) continue; + var texAttr = clientAttributes[GLImmediate.TEXTURE0+i]; + + if (texAttr.size) { + GLctx.vertexAttribPointer(attribLoc, texAttr.size, texAttr.type, false, GLImmediate.stride, texAttr.offset); + GLctx.enableVertexAttribArray(attribLoc); + } else { + // These two might be dangerous, but let's try them. + GLctx.vertexAttrib4f(attribLoc, 0, 0, 0, 1); + GLctx.disableVertexAttribArray(attribLoc); + } + var t = 2/*t*/+i; + if (this.textureMatrixLocations[i] && this.textureMatrixVersion[t] != GLImmediate.matrixVersion[t]) { // XXX might we need this even without the condition we are currently in? + this.textureMatrixVersion[t] = GLImmediate.matrixVersion[t]; + GLctx.uniformMatrix4fv(this.textureMatrixLocations[i], false, GLImmediate.matrix[t]); + } + } + } + if (GLImmediate.enabledClientAttributes[GLImmediate.COLOR]) { + var colorAttr = clientAttributes[GLImmediate.COLOR]; + GLctx.vertexAttribPointer(this.colorLocation, colorAttr.size, colorAttr.type, true, GLImmediate.stride, colorAttr.offset); + GLctx.enableVertexAttribArray(this.colorLocation); + } + else if (this.hasColor) { + GLctx.disableVertexAttribArray(this.colorLocation); + GLctx.vertexAttrib4fv(this.colorLocation, GLImmediate.clientColor); + } + if (this.hasFog) { + if (this.fogColorLocation) GLctx.uniform4fv(this.fogColorLocation, GLEmulation.fogColor); + if (this.fogEndLocation) GLctx.uniform1f(this.fogEndLocation, GLEmulation.fogEnd); + if (this.fogScaleLocation) GLctx.uniform1f(this.fogScaleLocation, 1/(GLEmulation.fogEnd - GLEmulation.fogStart)); + if (this.fogDensityLocation) GLctx.uniform1f(this.fogDensityLocation, GLEmulation.fogDensity); + } + }, + + cleanup: function cleanup() { + GLctx.disableVertexAttribArray(this.positionLocation); + if (this.hasTextures) { + for (var i = 0; i < GLImmediate.MAX_TEXTURES; i++) { + if (GLImmediate.enabledClientAttributes[GLImmediate.TEXTURE0+i] && this.texCoordLocations[i] >= 0) { + GLctx.disableVertexAttribArray(this.texCoordLocations[i]); + } + } + } + if (this.hasColor) { + GLctx.disableVertexAttribArray(this.colorLocation); + } + if (this.hasNormal) { + GLctx.disableVertexAttribArray(this.normalLocation); + } + if (!GL.currProgram) { + GLctx.useProgram(null); + GLImmediate.fixedFunctionProgram = 0; + } + if (!GL.currArrayBuffer) { + GLctx.bindBuffer(GLctx.ARRAY_BUFFER, null); + GLImmediate.lastArrayBuffer = null; + } + + GLImmediate.lastRenderer = null; + GLImmediate.lastProgram = null; + GLImmediate.matricesModified = true; + } + }; + ret.init(); + return ret; + },setupFuncs:function () { + // Replace some functions with immediate-mode aware versions. If there are no client + // attributes enabled, and we use webgl-friendly modes (no GL_QUADS), then no need + // for emulation + _glDrawArrays = _emscripten_glDrawArrays = function _glDrawArrays(mode, first, count) { + if (GLImmediate.totalEnabledClientAttributes == 0 && mode <= 6) { + GLctx.drawArrays(mode, first, count); + return; + } + GLImmediate.prepareClientAttributes(count, false); + GLImmediate.mode = mode; + if (!GL.currArrayBuffer) { + GLImmediate.vertexData = HEAPF32.subarray((GLImmediate.vertexPointer)>>2,(GLImmediate.vertexPointer + (first+count)*GLImmediate.stride)>>2); // XXX assuming float + GLImmediate.firstVertex = first; + GLImmediate.lastVertex = first + count; + } + GLImmediate.flush(null, first); + GLImmediate.mode = -1; + }; + + _glDrawElements = _emscripten_glDrawElements = function _glDrawElements(mode, count, type, indices, start, end) { // start, end are given if we come from glDrawRangeElements + if (GLImmediate.totalEnabledClientAttributes == 0 && mode <= 6 && GL.currElementArrayBuffer) { + GLctx.drawElements(mode, count, type, indices); + return; + } + GLImmediate.prepareClientAttributes(count, false); + GLImmediate.mode = mode; + if (!GL.currArrayBuffer) { + GLImmediate.firstVertex = end ? start : TOTAL_MEMORY; // if we don't know the start, set an invalid value and we will calculate it later from the indices + GLImmediate.lastVertex = end ? end+1 : 0; + GLImmediate.vertexData = HEAPF32.subarray((GLImmediate.vertexPointer)>>2,((end ? GLImmediate.vertexPointer + (end+1)*GLImmediate.stride : TOTAL_MEMORY))>>2); // XXX assuming float + } + GLImmediate.flush(count, 0, indices); + GLImmediate.mode = -1; + }; + + // TexEnv stuff needs to be prepared early, so do it here. + // init() is too late for -O2, since it freezes the GL functions + // by that point. + GLImmediate.MapTreeLib = GLImmediate.spawnMapTreeLib(); + GLImmediate.spawnMapTreeLib = null; + + GLImmediate.TexEnvJIT = GLImmediate.spawnTexEnvJIT(); + GLImmediate.spawnTexEnvJIT = null; + + GLImmediate.setupHooks(); + },setupHooks:function () { + if (!GLEmulation.hasRunInit) { + GLEmulation.init(); + } + + var glActiveTexture = _glActiveTexture; + _glActiveTexture = _emscripten_glActiveTexture = function _glActiveTexture(texture) { + GLImmediate.TexEnvJIT.hook_activeTexture(texture); + glActiveTexture(texture); + }; + + var glEnable = _glEnable; + _glEnable = _emscripten_glEnable = function _glEnable(cap) { + GLImmediate.TexEnvJIT.hook_enable(cap); + glEnable(cap); + }; + var glDisable = _glDisable; + _glDisable = _emscripten_glDisable = function _glDisable(cap) { + GLImmediate.TexEnvJIT.hook_disable(cap); + glDisable(cap); + }; + + var glTexEnvf = (typeof(_glTexEnvf) != 'undefined') ? _glTexEnvf : function(){}; + _glTexEnvf = _emscripten_glTexEnvf = function _glTexEnvf(target, pname, param) { + GLImmediate.TexEnvJIT.hook_texEnvf(target, pname, param); + // Don't call old func, since we are the implementor. + //glTexEnvf(target, pname, param); + }; + var glTexEnvi = (typeof(_glTexEnvi) != 'undefined') ? _glTexEnvi : function(){}; + _glTexEnvi = _emscripten_glTexEnvi = function _glTexEnvi(target, pname, param) { + GLImmediate.TexEnvJIT.hook_texEnvi(target, pname, param); + // Don't call old func, since we are the implementor. + //glTexEnvi(target, pname, param); + }; + var glTexEnvfv = (typeof(_glTexEnvfv) != 'undefined') ? _glTexEnvfv : function(){}; + _glTexEnvfv = _emscripten_glTexEnvfv = function _glTexEnvfv(target, pname, param) { + GLImmediate.TexEnvJIT.hook_texEnvfv(target, pname, param); + // Don't call old func, since we are the implementor. + //glTexEnvfv(target, pname, param); + }; + + _glGetTexEnviv = function _glGetTexEnviv(target, pname, param) { + GLImmediate.TexEnvJIT.hook_getTexEnviv(target, pname, param); + }; + + _glGetTexEnvfv = function _glGetTexEnvfv(target, pname, param) { + GLImmediate.TexEnvJIT.hook_getTexEnvfv(target, pname, param); + }; + + var glGetIntegerv = _glGetIntegerv; + _glGetIntegerv = _emscripten_glGetIntegerv = function _glGetIntegerv(pname, params) { + switch (pname) { + case 0x8B8D: { // GL_CURRENT_PROGRAM + // Just query directly so we're working with WebGL objects. + var cur = GLctx.getParameter(GLctx.CURRENT_PROGRAM); + if (cur == GLImmediate.fixedFunctionProgram) { + // Pretend we're not using a program. + HEAP32[((params)>>2)]=0; + return; + } + break; + } + } + glGetIntegerv(pname, params); + }; + },initted:false,init:function () { + Module.printErr('WARNING: using emscripten GL immediate mode emulation. This is very limited in what it supports'); + GLImmediate.initted = true; + + if (!Module.useWebGL) return; // a 2D canvas may be currently used TODO: make sure we are actually called in that case + + // User can override the maximum number of texture units that we emulate. Using fewer texture units increases runtime performance + // slightly, so it is advantageous to choose as small value as needed. + GLImmediate.MAX_TEXTURES = Module['GL_MAX_TEXTURE_IMAGE_UNITS'] || GLctx.getParameter(GLctx.MAX_TEXTURE_IMAGE_UNITS); + + GLImmediate.TexEnvJIT.init(GLctx, GLImmediate.MAX_TEXTURES); + + GLImmediate.NUM_ATTRIBUTES = 3 /*pos+normal+color attributes*/ + GLImmediate.MAX_TEXTURES; + GLImmediate.clientAttributes = []; + GLEmulation.enabledClientAttribIndices = []; + for (var i = 0; i < GLImmediate.NUM_ATTRIBUTES; i++) { + GLImmediate.clientAttributes.push({}); + GLEmulation.enabledClientAttribIndices.push(false); + } + + // Initialize matrix library + // When user sets a matrix, increment a 'version number' on the new data, and when rendering, submit + // the matrices to the shader program only if they have an old version of the data. + GLImmediate.matrix = []; + GLImmediate.matrixStack = []; + GLImmediate.matrixVersion = []; + for (var i = 0; i < 2 + GLImmediate.MAX_TEXTURES; i++) { // Modelview, Projection, plus one matrix for each texture coordinate. + GLImmediate.matrixStack.push([]); + GLImmediate.matrixVersion.push(0); + GLImmediate.matrix.push(GLImmediate.matrixLib.mat4.create()); + GLImmediate.matrixLib.mat4.identity(GLImmediate.matrix[i]); + } + + // Renderer cache + GLImmediate.rendererCache = GLImmediate.MapTreeLib.create(); + + // Buffers for data + GLImmediate.tempData = new Float32Array(GL.MAX_TEMP_BUFFER_SIZE >> 2); + GLImmediate.indexData = new Uint16Array(GL.MAX_TEMP_BUFFER_SIZE >> 1); + + GLImmediate.vertexDataU8 = new Uint8Array(GLImmediate.tempData.buffer); + + GL.generateTempBuffers(true); + + GLImmediate.clientColor = new Float32Array([1, 1, 1, 1]); + },prepareClientAttributes:function prepareClientAttributes(count, beginEnd) { + // If no client attributes were modified since we were last called, do nothing. Note that this + // does not work for glBegin/End, where we generate renderer components dynamically and then + // disable them ourselves, but it does help with glDrawElements/Arrays. + if (!GLImmediate.modifiedClientAttributes) { + GLImmediate.vertexCounter = (GLImmediate.stride * count) / 4; // XXX assuming float + return; + } + GLImmediate.modifiedClientAttributes = false; + + // The role of prepareClientAttributes is to examine the set of client-side vertex attribute buffers + // that user code has submitted, and to prepare them to be uploaded to a VBO in GPU memory + // (since WebGL does not support client-side rendering, i.e. rendering from vertex data in CPU memory) + // User can submit vertex data generally in three different configurations: + // 1. Fully planar: all attributes are in their own separate tightly-packed arrays in CPU memory. + // 2. Fully interleaved: all attributes share a single array where data is interleaved something like (pos,uv,normal), (pos,uv,normal), ... + // 3. Complex hybrid: Multiple separate arrays that either are sparsely strided, and/or partially interleave vertex attributes. + + // For simplicity, we support the case (2) as the fast case. For (1) and (3), we do a memory copy of the + // vertex data here to prepare a relayouted buffer that is of the structure in case (2). The reason + // for this is that it allows the emulation code to get away with using just one VBO buffer for rendering, + // and not have to maintain multiple ones. Therefore cases (1) and (3) will be very slow, and case (2) is fast. + + // Detect which case we are in by using a quick heuristic by examining the strides of the buffers. If all the buffers have identical + // stride, we assume we have case (2), otherwise we have something more complex. + var clientStartPointer = 0x7FFFFFFF; + var bytes = 0; // Total number of bytes taken up by a single vertex. + var minStride = 0x7FFFFFFF; + var maxStride = 0; + var attributes = GLImmediate.liveClientAttributes; + attributes.length = 0; + for (var i = 0; i < 3+GLImmediate.MAX_TEXTURES; i++) { + if (GLImmediate.enabledClientAttributes[i]) { + var attr = GLImmediate.clientAttributes[i]; + attributes.push(attr); + clientStartPointer = Math.min(clientStartPointer, attr.pointer); + attr.sizeBytes = attr.size * GL.byteSizeByType[attr.type - GL.byteSizeByTypeRoot]; + bytes += attr.sizeBytes; + minStride = Math.min(minStride, attr.stride); + maxStride = Math.max(maxStride, attr.stride); + } + } + + if ((minStride != maxStride || maxStride < bytes) && !beginEnd) { + // We are in cases (1) or (3): slow path, shuffle the data around into a single interleaved vertex buffer. + // The immediate-mode glBegin()/glEnd() vertex submission gets automatically generated in appropriate layout, + // so never need to come down this path if that was used. + if (!GLImmediate.restrideBuffer) GLImmediate.restrideBuffer = _malloc(GL.MAX_TEMP_BUFFER_SIZE); + var start = GLImmediate.restrideBuffer; + bytes = 0; + // calculate restrided offsets and total size + for (var i = 0; i < attributes.length; i++) { + var attr = attributes[i]; + var size = attr.sizeBytes; + if (size % 4 != 0) size += 4 - (size % 4); // align everything + attr.offset = bytes; + bytes += size; + } + // copy out the data (we need to know the stride for that, and define attr.pointer) + for (var i = 0; i < attributes.length; i++) { + var attr = attributes[i]; + var srcStride = Math.max(attr.sizeBytes, attr.stride); + if ((srcStride & 3) == 0 && (attr.sizeBytes & 3) == 0) { + var size4 = attr.sizeBytes>>2; + var srcStride4 = Math.max(attr.sizeBytes, attr.stride)>>2; + for (var j = 0; j < count; j++) { + for (var k = 0; k < size4; k++) { // copy in chunks of 4 bytes, our alignment makes this possible + HEAP32[((start + attr.offset + bytes*j)>>2) + k] = HEAP32[(attr.pointer>>2) + j*srcStride4 + k]; + } + } + } else { + for (var j = 0; j < count; j++) { + for (var k = 0; k < attr.sizeBytes; k++) { // source data was not aligned to multiples of 4, must copy byte by byte. + HEAP8[start + attr.offset + bytes*j + k] = HEAP8[attr.pointer + j*srcStride + k]; + } + } + } + attr.pointer = start + attr.offset; + } + GLImmediate.stride = bytes; + GLImmediate.vertexPointer = start; + } else { + // case (2): fast path, all data is interleaved to a single vertex array so we can get away with a single VBO upload. + if (GL.currArrayBuffer) { + GLImmediate.vertexPointer = 0; + } else { + GLImmediate.vertexPointer = clientStartPointer; + } + for (var i = 0; i < attributes.length; i++) { + var attr = attributes[i]; + attr.offset = attr.pointer - GLImmediate.vertexPointer; // Compute what will be the offset of this attribute in the VBO after we upload. + } + GLImmediate.stride = Math.max(maxStride, bytes); + } + if (!beginEnd) { + GLImmediate.vertexCounter = (GLImmediate.stride * count) / 4; // XXX assuming float + } + },flush:function flush(numProvidedIndexes, startIndex, ptr) { + startIndex = startIndex || 0; + ptr = ptr || 0; + + var renderer = GLImmediate.getRenderer(); + + // Generate index data in a format suitable for GLES 2.0/WebGL + var numVertexes = 4 * GLImmediate.vertexCounter / GLImmediate.stride; + var emulatedElementArrayBuffer = false; + var numIndexes = 0; + if (numProvidedIndexes) { + numIndexes = numProvidedIndexes; + if (!GL.currArrayBuffer && GLImmediate.firstVertex > GLImmediate.lastVertex) { + // Figure out the first and last vertex from the index data + for (var i = 0; i < numProvidedIndexes; i++) { + var currIndex = HEAPU16[(((ptr)+(i*2))>>1)]; + GLImmediate.firstVertex = Math.min(GLImmediate.firstVertex, currIndex); + GLImmediate.lastVertex = Math.max(GLImmediate.lastVertex, currIndex+1); + } + } + if (!GL.currElementArrayBuffer) { + // If no element array buffer is bound, then indices is a literal pointer to clientside data + var indexBuffer = GL.getTempIndexBuffer(numProvidedIndexes << 1); + GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, indexBuffer); + GLctx.bufferSubData(GLctx.ELEMENT_ARRAY_BUFFER, 0, HEAPU16.subarray((ptr)>>1,(ptr + (numProvidedIndexes << 1))>>1)); + ptr = 0; + emulatedElementArrayBuffer = true; + } + } else if (GLImmediate.mode > 6) { // above GL_TRIANGLE_FAN are the non-GL ES modes + if (GLImmediate.mode != 7) throw 'unsupported immediate mode ' + GLImmediate.mode; // GL_QUADS + // GLImmediate.firstVertex is the first vertex we want. Quad indexes are in the pattern + // 0 1 2, 0 2 3, 4 5 6, 4 6 7, so we need to look at index firstVertex * 1.5 to see it. + // Then since indexes are 2 bytes each, that means 3 + ptr = GLImmediate.firstVertex*3; + var numQuads = numVertexes / 4; + numIndexes = numQuads * 6; // 0 1 2, 0 2 3 pattern + GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, GL.tempQuadIndexBuffer); + emulatedElementArrayBuffer = true; + } + + renderer.prepare(); + + if (numIndexes) { + GLctx.drawElements(GLctx.TRIANGLES, numIndexes, GLctx.UNSIGNED_SHORT, ptr); + } else { + GLctx.drawArrays(GLImmediate.mode, startIndex, numVertexes); + } + + if (emulatedElementArrayBuffer) { + GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, GL.buffers[GL.currElementArrayBuffer] || null); + } + + }}; + GLImmediate.matrixLib = (function() { + + /** + * @fileoverview gl-matrix - High performance matrix and vector operations for WebGL + * @author Brandon Jones + * @version 1.2.4 + */ + + // Modifed for emscripten: Global scoping etc. + + /* + * Copyright (c) 2011 Brandon Jones + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ + + + /** + * @class 3 Dimensional Vector + * @name vec3 + */ + var vec3 = {}; + + /** + * @class 3x3 Matrix + * @name mat3 + */ + var mat3 = {}; + + /** + * @class 4x4 Matrix + * @name mat4 + */ + var mat4 = {}; + + /** + * @class Quaternion + * @name quat4 + */ + var quat4 = {}; + + var MatrixArray = Float32Array; + + /* + * vec3 + */ + + /** + * Creates a new instance of a vec3 using the default array type + * Any javascript array-like objects containing at least 3 numeric elements can serve as a vec3 + * + * @param {vec3} [vec] vec3 containing values to initialize with + * + * @returns {vec3} New vec3 + */ + vec3.create = function (vec) { + var dest = new MatrixArray(3); + + if (vec) { + dest[0] = vec[0]; + dest[1] = vec[1]; + dest[2] = vec[2]; + } else { + dest[0] = dest[1] = dest[2] = 0; + } + + return dest; + }; + + /** + * Copies the values of one vec3 to another + * + * @param {vec3} vec vec3 containing values to copy + * @param {vec3} dest vec3 receiving copied values + * + * @returns {vec3} dest + */ + vec3.set = function (vec, dest) { + dest[0] = vec[0]; + dest[1] = vec[1]; + dest[2] = vec[2]; + + return dest; + }; + + /** + * Performs a vector addition + * + * @param {vec3} vec First operand + * @param {vec3} vec2 Second operand + * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec + * + * @returns {vec3} dest if specified, vec otherwise + */ + vec3.add = function (vec, vec2, dest) { + if (!dest || vec === dest) { + vec[0] += vec2[0]; + vec[1] += vec2[1]; + vec[2] += vec2[2]; + return vec; + } + + dest[0] = vec[0] + vec2[0]; + dest[1] = vec[1] + vec2[1]; + dest[2] = vec[2] + vec2[2]; + return dest; + }; + + /** + * Performs a vector subtraction + * + * @param {vec3} vec First operand + * @param {vec3} vec2 Second operand + * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec + * + * @returns {vec3} dest if specified, vec otherwise + */ + vec3.subtract = function (vec, vec2, dest) { + if (!dest || vec === dest) { + vec[0] -= vec2[0]; + vec[1] -= vec2[1]; + vec[2] -= vec2[2]; + return vec; + } + + dest[0] = vec[0] - vec2[0]; + dest[1] = vec[1] - vec2[1]; + dest[2] = vec[2] - vec2[2]; + return dest; + }; + + /** + * Performs a vector multiplication + * + * @param {vec3} vec First operand + * @param {vec3} vec2 Second operand + * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec + * + * @returns {vec3} dest if specified, vec otherwise + */ + vec3.multiply = function (vec, vec2, dest) { + if (!dest || vec === dest) { + vec[0] *= vec2[0]; + vec[1] *= vec2[1]; + vec[2] *= vec2[2]; + return vec; + } + + dest[0] = vec[0] * vec2[0]; + dest[1] = vec[1] * vec2[1]; + dest[2] = vec[2] * vec2[2]; + return dest; + }; + + /** + * Negates the components of a vec3 + * + * @param {vec3} vec vec3 to negate + * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec + * + * @returns {vec3} dest if specified, vec otherwise + */ + vec3.negate = function (vec, dest) { + if (!dest) { dest = vec; } + + dest[0] = -vec[0]; + dest[1] = -vec[1]; + dest[2] = -vec[2]; + return dest; + }; + + /** + * Multiplies the components of a vec3 by a scalar value + * + * @param {vec3} vec vec3 to scale + * @param {number} val Value to scale by + * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec + * + * @returns {vec3} dest if specified, vec otherwise + */ + vec3.scale = function (vec, val, dest) { + if (!dest || vec === dest) { + vec[0] *= val; + vec[1] *= val; + vec[2] *= val; + return vec; + } + + dest[0] = vec[0] * val; + dest[1] = vec[1] * val; + dest[2] = vec[2] * val; + return dest; + }; + + /** + * Generates a unit vector of the same direction as the provided vec3 + * If vector length is 0, returns [0, 0, 0] + * + * @param {vec3} vec vec3 to normalize + * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec + * + * @returns {vec3} dest if specified, vec otherwise + */ + vec3.normalize = function (vec, dest) { + if (!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2], + len = Math.sqrt(x * x + y * y + z * z); + + if (!len) { + dest[0] = 0; + dest[1] = 0; + dest[2] = 0; + return dest; + } else if (len === 1) { + dest[0] = x; + dest[1] = y; + dest[2] = z; + return dest; + } + + len = 1 / len; + dest[0] = x * len; + dest[1] = y * len; + dest[2] = z * len; + return dest; + }; + + /** + * Generates the cross product of two vec3s + * + * @param {vec3} vec First operand + * @param {vec3} vec2 Second operand + * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec + * + * @returns {vec3} dest if specified, vec otherwise + */ + vec3.cross = function (vec, vec2, dest) { + if (!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2], + x2 = vec2[0], y2 = vec2[1], z2 = vec2[2]; + + dest[0] = y * z2 - z * y2; + dest[1] = z * x2 - x * z2; + dest[2] = x * y2 - y * x2; + return dest; + }; + + /** + * Caclulates the length of a vec3 + * + * @param {vec3} vec vec3 to calculate length of + * + * @returns {number} Length of vec + */ + vec3.length = function (vec) { + var x = vec[0], y = vec[1], z = vec[2]; + return Math.sqrt(x * x + y * y + z * z); + }; + + /** + * Caclulates the dot product of two vec3s + * + * @param {vec3} vec First operand + * @param {vec3} vec2 Second operand + * + * @returns {number} Dot product of vec and vec2 + */ + vec3.dot = function (vec, vec2) { + return vec[0] * vec2[0] + vec[1] * vec2[1] + vec[2] * vec2[2]; + }; + + /** + * Generates a unit vector pointing from one vector to another + * + * @param {vec3} vec Origin vec3 + * @param {vec3} vec2 vec3 to point to + * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec + * + * @returns {vec3} dest if specified, vec otherwise + */ + vec3.direction = function (vec, vec2, dest) { + if (!dest) { dest = vec; } + + var x = vec[0] - vec2[0], + y = vec[1] - vec2[1], + z = vec[2] - vec2[2], + len = Math.sqrt(x * x + y * y + z * z); + + if (!len) { + dest[0] = 0; + dest[1] = 0; + dest[2] = 0; + return dest; + } + + len = 1 / len; + dest[0] = x * len; + dest[1] = y * len; + dest[2] = z * len; + return dest; + }; + + /** + * Performs a linear interpolation between two vec3 + * + * @param {vec3} vec First vector + * @param {vec3} vec2 Second vector + * @param {number} lerp Interpolation amount between the two inputs + * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec + * + * @returns {vec3} dest if specified, vec otherwise + */ + vec3.lerp = function (vec, vec2, lerp, dest) { + if (!dest) { dest = vec; } + + dest[0] = vec[0] + lerp * (vec2[0] - vec[0]); + dest[1] = vec[1] + lerp * (vec2[1] - vec[1]); + dest[2] = vec[2] + lerp * (vec2[2] - vec[2]); + + return dest; + }; + + /** + * Calculates the euclidian distance between two vec3 + * + * Params: + * @param {vec3} vec First vector + * @param {vec3} vec2 Second vector + * + * @returns {number} Distance between vec and vec2 + */ + vec3.dist = function (vec, vec2) { + var x = vec2[0] - vec[0], + y = vec2[1] - vec[1], + z = vec2[2] - vec[2]; + + return Math.sqrt(x*x + y*y + z*z); + }; + + /** + * Projects the specified vec3 from screen space into object space + * Based on the Mesa gluUnProject implementation + * + * @param {vec3} vec Screen-space vector to project + * @param {mat4} view View matrix + * @param {mat4} proj Projection matrix + * @param {vec4} viewport Viewport as given to gl.viewport [x, y, width, height] + * @param {vec3} [dest] vec3 receiving unprojected result. If not specified result is written to vec + * + * @returns {vec3} dest if specified, vec otherwise + */ + vec3.unproject = function (vec, view, proj, viewport, dest) { + if (!dest) { dest = vec; } + + var m = mat4.create(); + var v = new MatrixArray(4); + + v[0] = (vec[0] - viewport[0]) * 2.0 / viewport[2] - 1.0; + v[1] = (vec[1] - viewport[1]) * 2.0 / viewport[3] - 1.0; + v[2] = 2.0 * vec[2] - 1.0; + v[3] = 1.0; + + mat4.multiply(proj, view, m); + if(!mat4.inverse(m)) { return null; } + + mat4.multiplyVec4(m, v); + if(v[3] === 0.0) { return null; } + + dest[0] = v[0] / v[3]; + dest[1] = v[1] / v[3]; + dest[2] = v[2] / v[3]; + + return dest; + }; + + /** + * Returns a string representation of a vector + * + * @param {vec3} vec Vector to represent as a string + * + * @returns {string} String representation of vec + */ + vec3.str = function (vec) { + return '[' + vec[0] + ', ' + vec[1] + ', ' + vec[2] + ']'; + }; + + /* + * mat3 + */ + + /** + * Creates a new instance of a mat3 using the default array type + * Any javascript array-like object containing at least 9 numeric elements can serve as a mat3 + * + * @param {mat3} [mat] mat3 containing values to initialize with + * + * @returns {mat3} New mat3 + */ + mat3.create = function (mat) { + var dest = new MatrixArray(9); + + if (mat) { + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + dest[8] = mat[8]; + } + + return dest; + }; + + /** + * Copies the values of one mat3 to another + * + * @param {mat3} mat mat3 containing values to copy + * @param {mat3} dest mat3 receiving copied values + * + * @returns {mat3} dest + */ + mat3.set = function (mat, dest) { + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + dest[8] = mat[8]; + return dest; + }; + + /** + * Sets a mat3 to an identity matrix + * + * @param {mat3} dest mat3 to set + * + * @returns dest if specified, otherwise a new mat3 + */ + mat3.identity = function (dest) { + if (!dest) { dest = mat3.create(); } + dest[0] = 1; + dest[1] = 0; + dest[2] = 0; + dest[3] = 0; + dest[4] = 1; + dest[5] = 0; + dest[6] = 0; + dest[7] = 0; + dest[8] = 1; + return dest; + }; + + /** + * Transposes a mat3 (flips the values over the diagonal) + * + * Params: + * @param {mat3} mat mat3 to transpose + * @param {mat3} [dest] mat3 receiving transposed values. If not specified result is written to mat + * + * @returns {mat3} dest is specified, mat otherwise + */ + mat3.transpose = function (mat, dest) { + // If we are transposing ourselves we can skip a few steps but have to cache some values + if (!dest || mat === dest) { + var a01 = mat[1], a02 = mat[2], + a12 = mat[5]; + + mat[1] = mat[3]; + mat[2] = mat[6]; + mat[3] = a01; + mat[5] = mat[7]; + mat[6] = a02; + mat[7] = a12; + return mat; + } + + dest[0] = mat[0]; + dest[1] = mat[3]; + dest[2] = mat[6]; + dest[3] = mat[1]; + dest[4] = mat[4]; + dest[5] = mat[7]; + dest[6] = mat[2]; + dest[7] = mat[5]; + dest[8] = mat[8]; + return dest; + }; + + /** + * Copies the elements of a mat3 into the upper 3x3 elements of a mat4 + * + * @param {mat3} mat mat3 containing values to copy + * @param {mat4} [dest] mat4 receiving copied values + * + * @returns {mat4} dest if specified, a new mat4 otherwise + */ + mat3.toMat4 = function (mat, dest) { + if (!dest) { dest = mat4.create(); } + + dest[15] = 1; + dest[14] = 0; + dest[13] = 0; + dest[12] = 0; + + dest[11] = 0; + dest[10] = mat[8]; + dest[9] = mat[7]; + dest[8] = mat[6]; + + dest[7] = 0; + dest[6] = mat[5]; + dest[5] = mat[4]; + dest[4] = mat[3]; + + dest[3] = 0; + dest[2] = mat[2]; + dest[1] = mat[1]; + dest[0] = mat[0]; + + return dest; + }; + + /** + * Returns a string representation of a mat3 + * + * @param {mat3} mat mat3 to represent as a string + * + * @param {string} String representation of mat + */ + mat3.str = function (mat) { + return '[' + mat[0] + ', ' + mat[1] + ', ' + mat[2] + + ', ' + mat[3] + ', ' + mat[4] + ', ' + mat[5] + + ', ' + mat[6] + ', ' + mat[7] + ', ' + mat[8] + ']'; + }; + + /* + * mat4 + */ + + /** + * Creates a new instance of a mat4 using the default array type + * Any javascript array-like object containing at least 16 numeric elements can serve as a mat4 + * + * @param {mat4} [mat] mat4 containing values to initialize with + * + * @returns {mat4} New mat4 + */ + mat4.create = function (mat) { + var dest = new MatrixArray(16); + + if (mat) { + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + dest[8] = mat[8]; + dest[9] = mat[9]; + dest[10] = mat[10]; + dest[11] = mat[11]; + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + } + + return dest; + }; + + /** + * Copies the values of one mat4 to another + * + * @param {mat4} mat mat4 containing values to copy + * @param {mat4} dest mat4 receiving copied values + * + * @returns {mat4} dest + */ + mat4.set = function (mat, dest) { + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + dest[8] = mat[8]; + dest[9] = mat[9]; + dest[10] = mat[10]; + dest[11] = mat[11]; + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + return dest; + }; + + /** + * Sets a mat4 to an identity matrix + * + * @param {mat4} dest mat4 to set + * + * @returns {mat4} dest + */ + mat4.identity = function (dest) { + if (!dest) { dest = mat4.create(); } + dest[0] = 1; + dest[1] = 0; + dest[2] = 0; + dest[3] = 0; + dest[4] = 0; + dest[5] = 1; + dest[6] = 0; + dest[7] = 0; + dest[8] = 0; + dest[9] = 0; + dest[10] = 1; + dest[11] = 0; + dest[12] = 0; + dest[13] = 0; + dest[14] = 0; + dest[15] = 1; + return dest; + }; + + /** + * Transposes a mat4 (flips the values over the diagonal) + * + * @param {mat4} mat mat4 to transpose + * @param {mat4} [dest] mat4 receiving transposed values. If not specified result is written to mat + * + * @param {mat4} dest is specified, mat otherwise + */ + mat4.transpose = function (mat, dest) { + // If we are transposing ourselves we can skip a few steps but have to cache some values + if (!dest || mat === dest) { + var a01 = mat[1], a02 = mat[2], a03 = mat[3], + a12 = mat[6], a13 = mat[7], + a23 = mat[11]; + + mat[1] = mat[4]; + mat[2] = mat[8]; + mat[3] = mat[12]; + mat[4] = a01; + mat[6] = mat[9]; + mat[7] = mat[13]; + mat[8] = a02; + mat[9] = a12; + mat[11] = mat[14]; + mat[12] = a03; + mat[13] = a13; + mat[14] = a23; + return mat; + } + + dest[0] = mat[0]; + dest[1] = mat[4]; + dest[2] = mat[8]; + dest[3] = mat[12]; + dest[4] = mat[1]; + dest[5] = mat[5]; + dest[6] = mat[9]; + dest[7] = mat[13]; + dest[8] = mat[2]; + dest[9] = mat[6]; + dest[10] = mat[10]; + dest[11] = mat[14]; + dest[12] = mat[3]; + dest[13] = mat[7]; + dest[14] = mat[11]; + dest[15] = mat[15]; + return dest; + }; + + /** + * Calculates the determinant of a mat4 + * + * @param {mat4} mat mat4 to calculate determinant of + * + * @returns {number} determinant of mat + */ + mat4.determinant = function (mat) { + // Cache the matrix values (makes for huge speed increases!) + var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3], + a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7], + a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11], + a30 = mat[12], a31 = mat[13], a32 = mat[14], a33 = mat[15]; + + return (a30 * a21 * a12 * a03 - a20 * a31 * a12 * a03 - a30 * a11 * a22 * a03 + a10 * a31 * a22 * a03 + + a20 * a11 * a32 * a03 - a10 * a21 * a32 * a03 - a30 * a21 * a02 * a13 + a20 * a31 * a02 * a13 + + a30 * a01 * a22 * a13 - a00 * a31 * a22 * a13 - a20 * a01 * a32 * a13 + a00 * a21 * a32 * a13 + + a30 * a11 * a02 * a23 - a10 * a31 * a02 * a23 - a30 * a01 * a12 * a23 + a00 * a31 * a12 * a23 + + a10 * a01 * a32 * a23 - a00 * a11 * a32 * a23 - a20 * a11 * a02 * a33 + a10 * a21 * a02 * a33 + + a20 * a01 * a12 * a33 - a00 * a21 * a12 * a33 - a10 * a01 * a22 * a33 + a00 * a11 * a22 * a33); + }; + + /** + * Calculates the inverse matrix of a mat4 + * + * @param {mat4} mat mat4 to calculate inverse of + * @param {mat4} [dest] mat4 receiving inverse matrix. If not specified result is written to mat + * + * @param {mat4} dest is specified, mat otherwise, null if matrix cannot be inverted + */ + mat4.inverse = function (mat, dest) { + if (!dest) { dest = mat; } + + // Cache the matrix values (makes for huge speed increases!) + var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3], + a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7], + a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11], + a30 = mat[12], a31 = mat[13], a32 = mat[14], a33 = mat[15], + + b00 = a00 * a11 - a01 * a10, + b01 = a00 * a12 - a02 * a10, + b02 = a00 * a13 - a03 * a10, + b03 = a01 * a12 - a02 * a11, + b04 = a01 * a13 - a03 * a11, + b05 = a02 * a13 - a03 * a12, + b06 = a20 * a31 - a21 * a30, + b07 = a20 * a32 - a22 * a30, + b08 = a20 * a33 - a23 * a30, + b09 = a21 * a32 - a22 * a31, + b10 = a21 * a33 - a23 * a31, + b11 = a22 * a33 - a23 * a32, + + d = (b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06), + invDet; + + // Calculate the determinant + if (!d) { return null; } + invDet = 1 / d; + + dest[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet; + dest[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet; + dest[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet; + dest[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet; + dest[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet; + dest[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet; + dest[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet; + dest[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet; + dest[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet; + dest[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet; + dest[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet; + dest[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet; + dest[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet; + dest[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet; + dest[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet; + dest[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet; + + return dest; + }; + + /** + * Copies the upper 3x3 elements of a mat4 into another mat4 + * + * @param {mat4} mat mat4 containing values to copy + * @param {mat4} [dest] mat4 receiving copied values + * + * @returns {mat4} dest is specified, a new mat4 otherwise + */ + mat4.toRotationMat = function (mat, dest) { + if (!dest) { dest = mat4.create(); } + + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + dest[8] = mat[8]; + dest[9] = mat[9]; + dest[10] = mat[10]; + dest[11] = mat[11]; + dest[12] = 0; + dest[13] = 0; + dest[14] = 0; + dest[15] = 1; + + return dest; + }; + + /** + * Copies the upper 3x3 elements of a mat4 into a mat3 + * + * @param {mat4} mat mat4 containing values to copy + * @param {mat3} [dest] mat3 receiving copied values + * + * @returns {mat3} dest is specified, a new mat3 otherwise + */ + mat4.toMat3 = function (mat, dest) { + if (!dest) { dest = mat3.create(); } + + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[4]; + dest[4] = mat[5]; + dest[5] = mat[6]; + dest[6] = mat[8]; + dest[7] = mat[9]; + dest[8] = mat[10]; + + return dest; + }; + + /** + * Calculates the inverse of the upper 3x3 elements of a mat4 and copies the result into a mat3 + * The resulting matrix is useful for calculating transformed normals + * + * Params: + * @param {mat4} mat mat4 containing values to invert and copy + * @param {mat3} [dest] mat3 receiving values + * + * @returns {mat3} dest is specified, a new mat3 otherwise, null if the matrix cannot be inverted + */ + mat4.toInverseMat3 = function (mat, dest) { + // Cache the matrix values (makes for huge speed increases!) + var a00 = mat[0], a01 = mat[1], a02 = mat[2], + a10 = mat[4], a11 = mat[5], a12 = mat[6], + a20 = mat[8], a21 = mat[9], a22 = mat[10], + + b01 = a22 * a11 - a12 * a21, + b11 = -a22 * a10 + a12 * a20, + b21 = a21 * a10 - a11 * a20, + + d = a00 * b01 + a01 * b11 + a02 * b21, + id; + + if (!d) { return null; } + id = 1 / d; + + if (!dest) { dest = mat3.create(); } + + dest[0] = b01 * id; + dest[1] = (-a22 * a01 + a02 * a21) * id; + dest[2] = (a12 * a01 - a02 * a11) * id; + dest[3] = b11 * id; + dest[4] = (a22 * a00 - a02 * a20) * id; + dest[5] = (-a12 * a00 + a02 * a10) * id; + dest[6] = b21 * id; + dest[7] = (-a21 * a00 + a01 * a20) * id; + dest[8] = (a11 * a00 - a01 * a10) * id; + + return dest; + }; + + /** + * Performs a matrix multiplication + * + * @param {mat4} mat First operand + * @param {mat4} mat2 Second operand + * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat + * + * @returns {mat4} dest if specified, mat otherwise + */ + mat4.multiply = function (mat, mat2, dest) { + if (!dest) { dest = mat; } + + // Cache the matrix values (makes for huge speed increases!) + var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3], + a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7], + a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11], + a30 = mat[12], a31 = mat[13], a32 = mat[14], a33 = mat[15], + + b00 = mat2[0], b01 = mat2[1], b02 = mat2[2], b03 = mat2[3], + b10 = mat2[4], b11 = mat2[5], b12 = mat2[6], b13 = mat2[7], + b20 = mat2[8], b21 = mat2[9], b22 = mat2[10], b23 = mat2[11], + b30 = mat2[12], b31 = mat2[13], b32 = mat2[14], b33 = mat2[15]; + + dest[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30; + dest[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31; + dest[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32; + dest[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33; + dest[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30; + dest[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31; + dest[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32; + dest[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33; + dest[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30; + dest[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31; + dest[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32; + dest[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33; + dest[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30; + dest[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31; + dest[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32; + dest[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33; + + return dest; + }; + + /** + * Transforms a vec3 with the given matrix + * 4th vector component is implicitly '1' + * + * @param {mat4} mat mat4 to transform the vector with + * @param {vec3} vec vec3 to transform + * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec + * + * @returns {vec3} dest if specified, vec otherwise + */ + mat4.multiplyVec3 = function (mat, vec, dest) { + if (!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2]; + + dest[0] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12]; + dest[1] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13]; + dest[2] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14]; + + return dest; + }; + + /** + * Transforms a vec4 with the given matrix + * + * @param {mat4} mat mat4 to transform the vector with + * @param {vec4} vec vec4 to transform + * @param {vec4} [dest] vec4 receiving operation result. If not specified result is written to vec + * + * @returns {vec4} dest if specified, vec otherwise + */ + mat4.multiplyVec4 = function (mat, vec, dest) { + if (!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2], w = vec[3]; + + dest[0] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12] * w; + dest[1] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13] * w; + dest[2] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14] * w; + dest[3] = mat[3] * x + mat[7] * y + mat[11] * z + mat[15] * w; + + return dest; + }; + + /** + * Translates a matrix by the given vector + * + * @param {mat4} mat mat4 to translate + * @param {vec3} vec vec3 specifying the translation + * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat + * + * @returns {mat4} dest if specified, mat otherwise + */ + mat4.translate = function (mat, vec, dest) { + var x = vec[0], y = vec[1], z = vec[2], + a00, a01, a02, a03, + a10, a11, a12, a13, + a20, a21, a22, a23; + + if (!dest || mat === dest) { + mat[12] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12]; + mat[13] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13]; + mat[14] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14]; + mat[15] = mat[3] * x + mat[7] * y + mat[11] * z + mat[15]; + return mat; + } + + a00 = mat[0]; a01 = mat[1]; a02 = mat[2]; a03 = mat[3]; + a10 = mat[4]; a11 = mat[5]; a12 = mat[6]; a13 = mat[7]; + a20 = mat[8]; a21 = mat[9]; a22 = mat[10]; a23 = mat[11]; + + dest[0] = a00; dest[1] = a01; dest[2] = a02; dest[3] = a03; + dest[4] = a10; dest[5] = a11; dest[6] = a12; dest[7] = a13; + dest[8] = a20; dest[9] = a21; dest[10] = a22; dest[11] = a23; + + dest[12] = a00 * x + a10 * y + a20 * z + mat[12]; + dest[13] = a01 * x + a11 * y + a21 * z + mat[13]; + dest[14] = a02 * x + a12 * y + a22 * z + mat[14]; + dest[15] = a03 * x + a13 * y + a23 * z + mat[15]; + return dest; + }; + + /** + * Scales a matrix by the given vector + * + * @param {mat4} mat mat4 to scale + * @param {vec3} vec vec3 specifying the scale for each axis + * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat + * + * @param {mat4} dest if specified, mat otherwise + */ + mat4.scale = function (mat, vec, dest) { + var x = vec[0], y = vec[1], z = vec[2]; + + if (!dest || mat === dest) { + mat[0] *= x; + mat[1] *= x; + mat[2] *= x; + mat[3] *= x; + mat[4] *= y; + mat[5] *= y; + mat[6] *= y; + mat[7] *= y; + mat[8] *= z; + mat[9] *= z; + mat[10] *= z; + mat[11] *= z; + return mat; + } + + dest[0] = mat[0] * x; + dest[1] = mat[1] * x; + dest[2] = mat[2] * x; + dest[3] = mat[3] * x; + dest[4] = mat[4] * y; + dest[5] = mat[5] * y; + dest[6] = mat[6] * y; + dest[7] = mat[7] * y; + dest[8] = mat[8] * z; + dest[9] = mat[9] * z; + dest[10] = mat[10] * z; + dest[11] = mat[11] * z; + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + return dest; + }; + + /** + * Rotates a matrix by the given angle around the specified axis + * If rotating around a primary axis (X,Y,Z) one of the specialized rotation functions should be used instead for performance + * + * @param {mat4} mat mat4 to rotate + * @param {number} angle Angle (in radians) to rotate + * @param {vec3} axis vec3 representing the axis to rotate around + * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat + * + * @returns {mat4} dest if specified, mat otherwise + */ + mat4.rotate = function (mat, angle, axis, dest) { + var x = axis[0], y = axis[1], z = axis[2], + len = Math.sqrt(x * x + y * y + z * z), + s, c, t, + a00, a01, a02, a03, + a10, a11, a12, a13, + a20, a21, a22, a23, + b00, b01, b02, + b10, b11, b12, + b20, b21, b22; + + if (!len) { return null; } + if (len !== 1) { + len = 1 / len; + x *= len; + y *= len; + z *= len; + } + + s = Math.sin(angle); + c = Math.cos(angle); + t = 1 - c; + + a00 = mat[0]; a01 = mat[1]; a02 = mat[2]; a03 = mat[3]; + a10 = mat[4]; a11 = mat[5]; a12 = mat[6]; a13 = mat[7]; + a20 = mat[8]; a21 = mat[9]; a22 = mat[10]; a23 = mat[11]; + + // Construct the elements of the rotation matrix + b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s; + b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s; + b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c; + + if (!dest) { + dest = mat; + } else if (mat !== dest) { // If the source and destination differ, copy the unchanged last row + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + } + + // Perform rotation-specific matrix multiplication + dest[0] = a00 * b00 + a10 * b01 + a20 * b02; + dest[1] = a01 * b00 + a11 * b01 + a21 * b02; + dest[2] = a02 * b00 + a12 * b01 + a22 * b02; + dest[3] = a03 * b00 + a13 * b01 + a23 * b02; + + dest[4] = a00 * b10 + a10 * b11 + a20 * b12; + dest[5] = a01 * b10 + a11 * b11 + a21 * b12; + dest[6] = a02 * b10 + a12 * b11 + a22 * b12; + dest[7] = a03 * b10 + a13 * b11 + a23 * b12; + + dest[8] = a00 * b20 + a10 * b21 + a20 * b22; + dest[9] = a01 * b20 + a11 * b21 + a21 * b22; + dest[10] = a02 * b20 + a12 * b21 + a22 * b22; + dest[11] = a03 * b20 + a13 * b21 + a23 * b22; + return dest; + }; + + /** + * Rotates a matrix by the given angle around the X axis + * + * @param {mat4} mat mat4 to rotate + * @param {number} angle Angle (in radians) to rotate + * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat + * + * @returns {mat4} dest if specified, mat otherwise + */ + mat4.rotateX = function (mat, angle, dest) { + var s = Math.sin(angle), + c = Math.cos(angle), + a10 = mat[4], + a11 = mat[5], + a12 = mat[6], + a13 = mat[7], + a20 = mat[8], + a21 = mat[9], + a22 = mat[10], + a23 = mat[11]; + + if (!dest) { + dest = mat; + } else if (mat !== dest) { // If the source and destination differ, copy the unchanged rows + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + } + + // Perform axis-specific matrix multiplication + dest[4] = a10 * c + a20 * s; + dest[5] = a11 * c + a21 * s; + dest[6] = a12 * c + a22 * s; + dest[7] = a13 * c + a23 * s; + + dest[8] = a10 * -s + a20 * c; + dest[9] = a11 * -s + a21 * c; + dest[10] = a12 * -s + a22 * c; + dest[11] = a13 * -s + a23 * c; + return dest; + }; + + /** + * Rotates a matrix by the given angle around the Y axis + * + * @param {mat4} mat mat4 to rotate + * @param {number} angle Angle (in radians) to rotate + * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat + * + * @returns {mat4} dest if specified, mat otherwise + */ + mat4.rotateY = function (mat, angle, dest) { + var s = Math.sin(angle), + c = Math.cos(angle), + a00 = mat[0], + a01 = mat[1], + a02 = mat[2], + a03 = mat[3], + a20 = mat[8], + a21 = mat[9], + a22 = mat[10], + a23 = mat[11]; + + if (!dest) { + dest = mat; + } else if (mat !== dest) { // If the source and destination differ, copy the unchanged rows + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + } + + // Perform axis-specific matrix multiplication + dest[0] = a00 * c + a20 * -s; + dest[1] = a01 * c + a21 * -s; + dest[2] = a02 * c + a22 * -s; + dest[3] = a03 * c + a23 * -s; + + dest[8] = a00 * s + a20 * c; + dest[9] = a01 * s + a21 * c; + dest[10] = a02 * s + a22 * c; + dest[11] = a03 * s + a23 * c; + return dest; + }; + + /** + * Rotates a matrix by the given angle around the Z axis + * + * @param {mat4} mat mat4 to rotate + * @param {number} angle Angle (in radians) to rotate + * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat + * + * @returns {mat4} dest if specified, mat otherwise + */ + mat4.rotateZ = function (mat, angle, dest) { + var s = Math.sin(angle), + c = Math.cos(angle), + a00 = mat[0], + a01 = mat[1], + a02 = mat[2], + a03 = mat[3], + a10 = mat[4], + a11 = mat[5], + a12 = mat[6], + a13 = mat[7]; + + if (!dest) { + dest = mat; + } else if (mat !== dest) { // If the source and destination differ, copy the unchanged last row + dest[8] = mat[8]; + dest[9] = mat[9]; + dest[10] = mat[10]; + dest[11] = mat[11]; + + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + } + + // Perform axis-specific matrix multiplication + dest[0] = a00 * c + a10 * s; + dest[1] = a01 * c + a11 * s; + dest[2] = a02 * c + a12 * s; + dest[3] = a03 * c + a13 * s; + + dest[4] = a00 * -s + a10 * c; + dest[5] = a01 * -s + a11 * c; + dest[6] = a02 * -s + a12 * c; + dest[7] = a03 * -s + a13 * c; + + return dest; + }; + + /** + * Generates a frustum matrix with the given bounds + * + * @param {number} left Left bound of the frustum + * @param {number} right Right bound of the frustum + * @param {number} bottom Bottom bound of the frustum + * @param {number} top Top bound of the frustum + * @param {number} near Near bound of the frustum + * @param {number} far Far bound of the frustum + * @param {mat4} [dest] mat4 frustum matrix will be written into + * + * @returns {mat4} dest if specified, a new mat4 otherwise + */ + mat4.frustum = function (left, right, bottom, top, near, far, dest) { + if (!dest) { dest = mat4.create(); } + var rl = (right - left), + tb = (top - bottom), + fn = (far - near); + dest[0] = (near * 2) / rl; + dest[1] = 0; + dest[2] = 0; + dest[3] = 0; + dest[4] = 0; + dest[5] = (near * 2) / tb; + dest[6] = 0; + dest[7] = 0; + dest[8] = (right + left) / rl; + dest[9] = (top + bottom) / tb; + dest[10] = -(far + near) / fn; + dest[11] = -1; + dest[12] = 0; + dest[13] = 0; + dest[14] = -(far * near * 2) / fn; + dest[15] = 0; + return dest; + }; + + /** + * Generates a perspective projection matrix with the given bounds + * + * @param {number} fovy Vertical field of view + * @param {number} aspect Aspect ratio. typically viewport width/height + * @param {number} near Near bound of the frustum + * @param {number} far Far bound of the frustum + * @param {mat4} [dest] mat4 frustum matrix will be written into + * + * @returns {mat4} dest if specified, a new mat4 otherwise + */ + mat4.perspective = function (fovy, aspect, near, far, dest) { + var top = near * Math.tan(fovy * Math.PI / 360.0), + right = top * aspect; + return mat4.frustum(-right, right, -top, top, near, far, dest); + }; + + /** + * Generates a orthogonal projection matrix with the given bounds + * + * @param {number} left Left bound of the frustum + * @param {number} right Right bound of the frustum + * @param {number} bottom Bottom bound of the frustum + * @param {number} top Top bound of the frustum + * @param {number} near Near bound of the frustum + * @param {number} far Far bound of the frustum + * @param {mat4} [dest] mat4 frustum matrix will be written into + * + * @returns {mat4} dest if specified, a new mat4 otherwise + */ + mat4.ortho = function (left, right, bottom, top, near, far, dest) { + if (!dest) { dest = mat4.create(); } + var rl = (right - left), + tb = (top - bottom), + fn = (far - near); + dest[0] = 2 / rl; + dest[1] = 0; + dest[2] = 0; + dest[3] = 0; + dest[4] = 0; + dest[5] = 2 / tb; + dest[6] = 0; + dest[7] = 0; + dest[8] = 0; + dest[9] = 0; + dest[10] = -2 / fn; + dest[11] = 0; + dest[12] = -(left + right) / rl; + dest[13] = -(top + bottom) / tb; + dest[14] = -(far + near) / fn; + dest[15] = 1; + return dest; + }; + + /** + * Generates a look-at matrix with the given eye position, focal point, and up axis + * + * @param {vec3} eye Position of the viewer + * @param {vec3} center Point the viewer is looking at + * @param {vec3} up vec3 pointing "up" + * @param {mat4} [dest] mat4 frustum matrix will be written into + * + * @returns {mat4} dest if specified, a new mat4 otherwise + */ + mat4.lookAt = function (eye, center, up, dest) { + if (!dest) { dest = mat4.create(); } + + var x0, x1, x2, y0, y1, y2, z0, z1, z2, len, + eyex = eye[0], + eyey = eye[1], + eyez = eye[2], + upx = up[0], + upy = up[1], + upz = up[2], + centerx = center[0], + centery = center[1], + centerz = center[2]; + + if (eyex === centerx && eyey === centery && eyez === centerz) { + return mat4.identity(dest); + } + + //vec3.direction(eye, center, z); + z0 = eyex - centerx; + z1 = eyey - centery; + z2 = eyez - centerz; + + // normalize (no check needed for 0 because of early return) + len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2); + z0 *= len; + z1 *= len; + z2 *= len; + + //vec3.normalize(vec3.cross(up, z, x)); + x0 = upy * z2 - upz * z1; + x1 = upz * z0 - upx * z2; + x2 = upx * z1 - upy * z0; + len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2); + if (!len) { + x0 = 0; + x1 = 0; + x2 = 0; + } else { + len = 1 / len; + x0 *= len; + x1 *= len; + x2 *= len; + } + + //vec3.normalize(vec3.cross(z, x, y)); + y0 = z1 * x2 - z2 * x1; + y1 = z2 * x0 - z0 * x2; + y2 = z0 * x1 - z1 * x0; + + len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2); + if (!len) { + y0 = 0; + y1 = 0; + y2 = 0; + } else { + len = 1 / len; + y0 *= len; + y1 *= len; + y2 *= len; + } + + dest[0] = x0; + dest[1] = y0; + dest[2] = z0; + dest[3] = 0; + dest[4] = x1; + dest[5] = y1; + dest[6] = z1; + dest[7] = 0; + dest[8] = x2; + dest[9] = y2; + dest[10] = z2; + dest[11] = 0; + dest[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); + dest[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); + dest[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); + dest[15] = 1; + + return dest; + }; + + /** + * Creates a matrix from a quaternion rotation and vector translation + * This is equivalent to (but much faster than): + * + * mat4.identity(dest); + * mat4.translate(dest, vec); + * var quatMat = mat4.create(); + * quat4.toMat4(quat, quatMat); + * mat4.multiply(dest, quatMat); + * + * @param {quat4} quat Rotation quaternion + * @param {vec3} vec Translation vector + * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to a new mat4 + * + * @returns {mat4} dest if specified, a new mat4 otherwise + */ + mat4.fromRotationTranslation = function (quat, vec, dest) { + if (!dest) { dest = mat4.create(); } + + // Quaternion math + var x = quat[0], y = quat[1], z = quat[2], w = quat[3], + x2 = x + x, + y2 = y + y, + z2 = z + z, + + xx = x * x2, + xy = x * y2, + xz = x * z2, + yy = y * y2, + yz = y * z2, + zz = z * z2, + wx = w * x2, + wy = w * y2, + wz = w * z2; + + dest[0] = 1 - (yy + zz); + dest[1] = xy + wz; + dest[2] = xz - wy; + dest[3] = 0; + dest[4] = xy - wz; + dest[5] = 1 - (xx + zz); + dest[6] = yz + wx; + dest[7] = 0; + dest[8] = xz + wy; + dest[9] = yz - wx; + dest[10] = 1 - (xx + yy); + dest[11] = 0; + dest[12] = vec[0]; + dest[13] = vec[1]; + dest[14] = vec[2]; + dest[15] = 1; + + return dest; + }; + + /** + * Returns a string representation of a mat4 + * + * @param {mat4} mat mat4 to represent as a string + * + * @returns {string} String representation of mat + */ + mat4.str = function (mat) { + return '[' + mat[0] + ', ' + mat[1] + ', ' + mat[2] + ', ' + mat[3] + + ', ' + mat[4] + ', ' + mat[5] + ', ' + mat[6] + ', ' + mat[7] + + ', ' + mat[8] + ', ' + mat[9] + ', ' + mat[10] + ', ' + mat[11] + + ', ' + mat[12] + ', ' + mat[13] + ', ' + mat[14] + ', ' + mat[15] + ']'; + }; + + /* + * quat4 + */ + + /** + * Creates a new instance of a quat4 using the default array type + * Any javascript array containing at least 4 numeric elements can serve as a quat4 + * + * @param {quat4} [quat] quat4 containing values to initialize with + * + * @returns {quat4} New quat4 + */ + quat4.create = function (quat) { + var dest = new MatrixArray(4); + + if (quat) { + dest[0] = quat[0]; + dest[1] = quat[1]; + dest[2] = quat[2]; + dest[3] = quat[3]; + } + + return dest; + }; + + /** + * Copies the values of one quat4 to another + * + * @param {quat4} quat quat4 containing values to copy + * @param {quat4} dest quat4 receiving copied values + * + * @returns {quat4} dest + */ + quat4.set = function (quat, dest) { + dest[0] = quat[0]; + dest[1] = quat[1]; + dest[2] = quat[2]; + dest[3] = quat[3]; + + return dest; + }; + + /** + * Calculates the W component of a quat4 from the X, Y, and Z components. + * Assumes that quaternion is 1 unit in length. + * Any existing W component will be ignored. + * + * @param {quat4} quat quat4 to calculate W component of + * @param {quat4} [dest] quat4 receiving calculated values. If not specified result is written to quat + * + * @returns {quat4} dest if specified, quat otherwise + */ + quat4.calculateW = function (quat, dest) { + var x = quat[0], y = quat[1], z = quat[2]; + + if (!dest || quat === dest) { + quat[3] = -Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z)); + return quat; + } + dest[0] = x; + dest[1] = y; + dest[2] = z; + dest[3] = -Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z)); + return dest; + }; + + /** + * Calculates the dot product of two quaternions + * + * @param {quat4} quat First operand + * @param {quat4} quat2 Second operand + * + * @return {number} Dot product of quat and quat2 + */ + quat4.dot = function(quat, quat2){ + return quat[0]*quat2[0] + quat[1]*quat2[1] + quat[2]*quat2[2] + quat[3]*quat2[3]; + }; + + /** + * Calculates the inverse of a quat4 + * + * @param {quat4} quat quat4 to calculate inverse of + * @param {quat4} [dest] quat4 receiving inverse values. If not specified result is written to quat + * + * @returns {quat4} dest if specified, quat otherwise + */ + quat4.inverse = function(quat, dest) { + var q0 = quat[0], q1 = quat[1], q2 = quat[2], q3 = quat[3], + dot = q0*q0 + q1*q1 + q2*q2 + q3*q3, + invDot = dot ? 1.0/dot : 0; + + // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0 + + if(!dest || quat === dest) { + quat[0] *= -invDot; + quat[1] *= -invDot; + quat[2] *= -invDot; + quat[3] *= invDot; + return quat; + } + dest[0] = -quat[0]*invDot; + dest[1] = -quat[1]*invDot; + dest[2] = -quat[2]*invDot; + dest[3] = quat[3]*invDot; + return dest; + }; + + + /** + * Calculates the conjugate of a quat4 + * If the quaternion is normalized, this function is faster than quat4.inverse and produces the same result. + * + * @param {quat4} quat quat4 to calculate conjugate of + * @param {quat4} [dest] quat4 receiving conjugate values. If not specified result is written to quat + * + * @returns {quat4} dest if specified, quat otherwise + */ + quat4.conjugate = function (quat, dest) { + if (!dest || quat === dest) { + quat[0] *= -1; + quat[1] *= -1; + quat[2] *= -1; + return quat; + } + dest[0] = -quat[0]; + dest[1] = -quat[1]; + dest[2] = -quat[2]; + dest[3] = quat[3]; + return dest; + }; + + /** + * Calculates the length of a quat4 + * + * Params: + * @param {quat4} quat quat4 to calculate length of + * + * @returns Length of quat + */ + quat4.length = function (quat) { + var x = quat[0], y = quat[1], z = quat[2], w = quat[3]; + return Math.sqrt(x * x + y * y + z * z + w * w); + }; + + /** + * Generates a unit quaternion of the same direction as the provided quat4 + * If quaternion length is 0, returns [0, 0, 0, 0] + * + * @param {quat4} quat quat4 to normalize + * @param {quat4} [dest] quat4 receiving operation result. If not specified result is written to quat + * + * @returns {quat4} dest if specified, quat otherwise + */ + quat4.normalize = function (quat, dest) { + if (!dest) { dest = quat; } + + var x = quat[0], y = quat[1], z = quat[2], w = quat[3], + len = Math.sqrt(x * x + y * y + z * z + w * w); + if (len === 0) { + dest[0] = 0; + dest[1] = 0; + dest[2] = 0; + dest[3] = 0; + return dest; + } + len = 1 / len; + dest[0] = x * len; + dest[1] = y * len; + dest[2] = z * len; + dest[3] = w * len; + + return dest; + }; + + /** + * Performs quaternion addition + * + * @param {quat4} quat First operand + * @param {quat4} quat2 Second operand + * @param {quat4} [dest] quat4 receiving operation result. If not specified result is written to quat + * + * @returns {quat4} dest if specified, quat otherwise + */ + quat4.add = function (quat, quat2, dest) { + if(!dest || quat === dest) { + quat[0] += quat2[0]; + quat[1] += quat2[1]; + quat[2] += quat2[2]; + quat[3] += quat2[3]; + return quat; + } + dest[0] = quat[0]+quat2[0]; + dest[1] = quat[1]+quat2[1]; + dest[2] = quat[2]+quat2[2]; + dest[3] = quat[3]+quat2[3]; + return dest; + }; + + /** + * Performs a quaternion multiplication + * + * @param {quat4} quat First operand + * @param {quat4} quat2 Second operand + * @param {quat4} [dest] quat4 receiving operation result. If not specified result is written to quat + * + * @returns {quat4} dest if specified, quat otherwise + */ + quat4.multiply = function (quat, quat2, dest) { + if (!dest) { dest = quat; } + + var qax = quat[0], qay = quat[1], qaz = quat[2], qaw = quat[3], + qbx = quat2[0], qby = quat2[1], qbz = quat2[2], qbw = quat2[3]; + + dest[0] = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; + dest[1] = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; + dest[2] = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; + dest[3] = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; + + return dest; + }; + + /** + * Transforms a vec3 with the given quaternion + * + * @param {quat4} quat quat4 to transform the vector with + * @param {vec3} vec vec3 to transform + * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec + * + * @returns dest if specified, vec otherwise + */ + quat4.multiplyVec3 = function (quat, vec, dest) { + if (!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2], + qx = quat[0], qy = quat[1], qz = quat[2], qw = quat[3], + + // calculate quat * vec + ix = qw * x + qy * z - qz * y, + iy = qw * y + qz * x - qx * z, + iz = qw * z + qx * y - qy * x, + iw = -qx * x - qy * y - qz * z; + + // calculate result * inverse quat + dest[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; + dest[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; + dest[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; + + return dest; + }; + + /** + * Multiplies the components of a quaternion by a scalar value + * + * @param {quat4} quat to scale + * @param {number} val Value to scale by + * @param {quat4} [dest] quat4 receiving operation result. If not specified result is written to quat + * + * @returns {quat4} dest if specified, quat otherwise + */ + quat4.scale = function (quat, val, dest) { + if(!dest || quat === dest) { + quat[0] *= val; + quat[1] *= val; + quat[2] *= val; + quat[3] *= val; + return quat; + } + dest[0] = quat[0]*val; + dest[1] = quat[1]*val; + dest[2] = quat[2]*val; + dest[3] = quat[3]*val; + return dest; + }; + + /** + * Calculates a 3x3 matrix from the given quat4 + * + * @param {quat4} quat quat4 to create matrix from + * @param {mat3} [dest] mat3 receiving operation result + * + * @returns {mat3} dest if specified, a new mat3 otherwise + */ + quat4.toMat3 = function (quat, dest) { + if (!dest) { dest = mat3.create(); } + + var x = quat[0], y = quat[1], z = quat[2], w = quat[3], + x2 = x + x, + y2 = y + y, + z2 = z + z, + + xx = x * x2, + xy = x * y2, + xz = x * z2, + yy = y * y2, + yz = y * z2, + zz = z * z2, + wx = w * x2, + wy = w * y2, + wz = w * z2; + + dest[0] = 1 - (yy + zz); + dest[1] = xy + wz; + dest[2] = xz - wy; + + dest[3] = xy - wz; + dest[4] = 1 - (xx + zz); + dest[5] = yz + wx; + + dest[6] = xz + wy; + dest[7] = yz - wx; + dest[8] = 1 - (xx + yy); + + return dest; + }; + + /** + * Calculates a 4x4 matrix from the given quat4 + * + * @param {quat4} quat quat4 to create matrix from + * @param {mat4} [dest] mat4 receiving operation result + * + * @returns {mat4} dest if specified, a new mat4 otherwise + */ + quat4.toMat4 = function (quat, dest) { + if (!dest) { dest = mat4.create(); } + + var x = quat[0], y = quat[1], z = quat[2], w = quat[3], + x2 = x + x, + y2 = y + y, + z2 = z + z, + + xx = x * x2, + xy = x * y2, + xz = x * z2, + yy = y * y2, + yz = y * z2, + zz = z * z2, + wx = w * x2, + wy = w * y2, + wz = w * z2; + + dest[0] = 1 - (yy + zz); + dest[1] = xy + wz; + dest[2] = xz - wy; + dest[3] = 0; + + dest[4] = xy - wz; + dest[5] = 1 - (xx + zz); + dest[6] = yz + wx; + dest[7] = 0; + + dest[8] = xz + wy; + dest[9] = yz - wx; + dest[10] = 1 - (xx + yy); + dest[11] = 0; + + dest[12] = 0; + dest[13] = 0; + dest[14] = 0; + dest[15] = 1; + + return dest; + }; + + /** + * Performs a spherical linear interpolation between two quat4 + * + * @param {quat4} quat First quaternion + * @param {quat4} quat2 Second quaternion + * @param {number} slerp Interpolation amount between the two inputs + * @param {quat4} [dest] quat4 receiving operation result. If not specified result is written to quat + * + * @returns {quat4} dest if specified, quat otherwise + */ + quat4.slerp = function (quat, quat2, slerp, dest) { + if (!dest) { dest = quat; } + + var cosHalfTheta = quat[0] * quat2[0] + quat[1] * quat2[1] + quat[2] * quat2[2] + quat[3] * quat2[3], + halfTheta, + sinHalfTheta, + ratioA, + ratioB; + + if (Math.abs(cosHalfTheta) >= 1.0) { + if (dest !== quat) { + dest[0] = quat[0]; + dest[1] = quat[1]; + dest[2] = quat[2]; + dest[3] = quat[3]; + } + return dest; + } + + halfTheta = Math.acos(cosHalfTheta); + sinHalfTheta = Math.sqrt(1.0 - cosHalfTheta * cosHalfTheta); + + if (Math.abs(sinHalfTheta) < 0.001) { + dest[0] = (quat[0] * 0.5 + quat2[0] * 0.5); + dest[1] = (quat[1] * 0.5 + quat2[1] * 0.5); + dest[2] = (quat[2] * 0.5 + quat2[2] * 0.5); + dest[3] = (quat[3] * 0.5 + quat2[3] * 0.5); + return dest; + } + + ratioA = Math.sin((1 - slerp) * halfTheta) / sinHalfTheta; + ratioB = Math.sin(slerp * halfTheta) / sinHalfTheta; + + dest[0] = (quat[0] * ratioA + quat2[0] * ratioB); + dest[1] = (quat[1] * ratioA + quat2[1] * ratioB); + dest[2] = (quat[2] * ratioA + quat2[2] * ratioB); + dest[3] = (quat[3] * ratioA + quat2[3] * ratioB); + + return dest; + }; + + /** + * Returns a string representation of a quaternion + * + * @param {quat4} quat quat4 to represent as a string + * + * @returns {string} String representation of quat + */ + quat4.str = function (quat) { + return '[' + quat[0] + ', ' + quat[1] + ', ' + quat[2] + ', ' + quat[3] + ']'; + }; + + + return { + vec3: vec3, + mat3: mat3, + mat4: mat4, + quat4: quat4 + }; + + })(); + + ; + var GLImmediateSetup={};function _glBegin(mode) { + // Push the old state: + GLImmediate.enabledClientAttributes_preBegin = GLImmediate.enabledClientAttributes; + GLImmediate.enabledClientAttributes = []; + + GLImmediate.clientAttributes_preBegin = GLImmediate.clientAttributes; + GLImmediate.clientAttributes = [] + for (var i = 0; i < GLImmediate.clientAttributes_preBegin.length; i++) { + GLImmediate.clientAttributes.push({}); + } + + GLImmediate.mode = mode; + GLImmediate.vertexCounter = 0; + var components = GLImmediate.rendererComponents = []; + for (var i = 0; i < GLImmediate.NUM_ATTRIBUTES; i++) { + components[i] = 0; + } + GLImmediate.rendererComponentPointer = 0; + GLImmediate.vertexData = GLImmediate.tempData; + } + + + function _emscripten_glVertex3f(x, y, z) { + GLImmediate.vertexData[GLImmediate.vertexCounter++] = x; + GLImmediate.vertexData[GLImmediate.vertexCounter++] = y; + GLImmediate.vertexData[GLImmediate.vertexCounter++] = z || 0; + GLImmediate.addRendererComponent(GLImmediate.VERTEX, 3, GLctx.FLOAT); + }function _glVertex3fv(p) { + _emscripten_glVertex3f(HEAPF32[((p)>>2)], HEAPF32[(((p)+(4))>>2)], HEAPF32[(((p)+(8))>>2)]); + } + + function _glEnd() { + GLImmediate.prepareClientAttributes(GLImmediate.rendererComponents[GLImmediate.VERTEX], true); + GLImmediate.firstVertex = 0; + GLImmediate.lastVertex = GLImmediate.vertexCounter / (GLImmediate.stride >> 2); + GLImmediate.flush(); + GLImmediate.disableBeginEndClientAttributes(); + GLImmediate.mode = -1; + + // Pop the old state: + GLImmediate.enabledClientAttributes = GLImmediate.enabledClientAttributes_preBegin; + GLImmediate.clientAttributes = GLImmediate.clientAttributes_preBegin; + GLImmediate.currentRenderer = null; // The set of active client attributes changed, we must re-lookup the renderer to use. + GLImmediate.modifiedClientAttributes = true; + } + + + function _emscripten_glColor4f(r, g, b, a) { + r = Math.max(Math.min(r, 1), 0); + g = Math.max(Math.min(g, 1), 0); + b = Math.max(Math.min(b, 1), 0); + a = Math.max(Math.min(a, 1), 0); + + // TODO: make ub the default, not f, save a few mathops + if (GLImmediate.mode >= 0) { + var start = GLImmediate.vertexCounter << 2; + GLImmediate.vertexDataU8[start + 0] = r * 255; + GLImmediate.vertexDataU8[start + 1] = g * 255; + GLImmediate.vertexDataU8[start + 2] = b * 255; + GLImmediate.vertexDataU8[start + 3] = a * 255; + GLImmediate.vertexCounter++; + GLImmediate.addRendererComponent(GLImmediate.COLOR, 4, GLctx.UNSIGNED_BYTE); + } else { + GLImmediate.clientColor[0] = r; + GLImmediate.clientColor[1] = g; + GLImmediate.clientColor[2] = b; + GLImmediate.clientColor[3] = a; + } + }function _glColor3f(r, g, b) { + _emscripten_glColor4f(r, g, b, 1); + } + + + function _glLoadIdentity() { + GLImmediate.matricesModified = true; + GLImmediate.matrixVersion[GLImmediate.currentMatrix] = (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1)|0; + GLImmediate.matrixLib.mat4.identity(GLImmediate.matrix[GLImmediate.currentMatrix]); + } + + function _glVertex3f(x, y, z) { + GLImmediate.vertexData[GLImmediate.vertexCounter++] = x; + GLImmediate.vertexData[GLImmediate.vertexCounter++] = y; + GLImmediate.vertexData[GLImmediate.vertexCounter++] = z || 0; + GLImmediate.addRendererComponent(GLImmediate.VERTEX, 3, GLctx.FLOAT); + } + + function _SDL_SetGammaRamp(redTable, greenTable, blueTable) { + return -1; + } + + function _SDL_WM_IconifyWindow() { throw 'SDL_WM_IconifyWindow TODO' } + + function _SDL_GetVideoInfo() { + // %struct.SDL_VideoInfo = type { i32, i32, %struct.SDL_PixelFormat*, i32, i32 } - 5 fields of quantum size + var ret = _malloc(5*Runtime.QUANTUM_SIZE); + HEAP32[((ret+Runtime.QUANTUM_SIZE*0)>>2)]=0; // TODO + HEAP32[((ret+Runtime.QUANTUM_SIZE*1)>>2)]=0; // TODO + HEAP32[((ret+Runtime.QUANTUM_SIZE*2)>>2)]=0; + HEAP32[((ret+Runtime.QUANTUM_SIZE*3)>>2)]=Module["canvas"].width; + HEAP32[((ret+Runtime.QUANTUM_SIZE*4)>>2)]=Module["canvas"].height; + return ret; + } + + function _SDL_GL_SetAttribute(attr, value) { + if (!(attr in SDL.glAttributes)) { + abort('Unknown SDL GL attribute (' + attr + '). Please check if your SDL version is supported.'); + } + + SDL.glAttributes[attr] = value; + } + + function _SDL_WM_SetCaption(title, icon) { + title = title && Pointer_stringify(title); + icon = icon && Pointer_stringify(icon); + } + + function _SDL_SetVideoMode(width, height, depth, flags) { + ['mousedown', 'mouseup', 'mousemove', 'DOMMouseScroll', 'mousewheel', 'mouseout'].forEach(function(event) { + Module['canvas'].addEventListener(event, SDL.receiveEvent, true); + }); + + // (0,0) means 'use fullscreen' in native; in Emscripten, use the current canvas size. + if (width == 0 && height == 0) { + var canvas = Module['canvas']; + width = canvas.width; + height = canvas.height; + } + + Browser.setCanvasSize(width, height, true); + // Free the old surface first. + if (SDL.screen) { + SDL.freeSurface(SDL.screen); + SDL.screen = null; + } + SDL.screen = SDL.makeSurface(width, height, flags, true, 'screen'); + if (!SDL.addedResizeListener) { + SDL.addedResizeListener = true; + Browser.resizeListeners.push(function(w, h) { + SDL.receiveEvent({ + type: 'resize', + w: w, + h: h + }); + }); + } + return SDL.screen; + } + + function _SDL_SetGamma(r, g, b) { + return -1; + } + + function _SDL_GL_SwapBuffers() {} + + function _SDL_GetVideoSurface() { + return SDL.screen; + } + + function _SDL_WM_ToggleFullScreen(surf) { + if (Browser.isFullScreen) { + Module['canvas'].cancelFullScreen(); + return 1; + } else { + if (!SDL.canRequestFullscreen) { + return 0; + } + SDL.isRequestingFullscreen = true; + return 1; + } + } + + + function _SDL_ListModes(format, flags) { + return -1; // -1 == all modes are ok. TODO + } + + function _emscripten_glPixelStorei(pname, param) { + if (pname == 0x0D05 /* GL_PACK_ALIGNMENT */) { + GL.packAlignment = param; + } else if (pname == 0x0cf5 /* GL_UNPACK_ALIGNMENT */) { + GL.unpackAlignment = param; + } + GLctx.pixelStorei(pname, param); + } + + function _emscripten_glGetString(name_) { + if (GL.stringCache[name_]) return GL.stringCache[name_]; + var ret; + switch(name_) { + case 0x1F00 /* GL_VENDOR */: + case 0x1F01 /* GL_RENDERER */: + case 0x1F02 /* GL_VERSION */: + ret = allocate(intArrayFromString(GLctx.getParameter(name_)), 'i8', ALLOC_NORMAL); + break; + case 0x1F03 /* GL_EXTENSIONS */: + var exts = GLctx.getSupportedExtensions(); + var gl_exts = []; + for (i in exts) { + gl_exts.push(exts[i]); + gl_exts.push("GL_" + exts[i]); + } + ret = allocate(intArrayFromString(gl_exts.join(' ')), 'i8', ALLOC_NORMAL); + break; + case 0x8B8C /* GL_SHADING_LANGUAGE_VERSION */: + ret = allocate(intArrayFromString('OpenGL ES GLSL 1.00 (WebGL)'), 'i8', ALLOC_NORMAL); + break; + default: + GL.recordError(0x0500/*GL_INVALID_ENUM*/); + return 0; + } + GL.stringCache[name_] = ret; + return ret; + } + + function _emscripten_glGetIntegerv(name_, p) { + return GL.get(name_, p, 'Integer'); + } + + function _emscripten_glGetFloatv(name_, p) { + return GL.get(name_, p, 'Float'); + } + + function _emscripten_glGetBooleanv(name_, p) { + return GL.get(name_, p, 'Boolean'); + } + + function _emscripten_glGenTextures(n, textures) { + for (var i = 0; i < n; i++) { + var id = GL.getNewId(GL.textures); + var texture = GLctx.createTexture(); + texture.name = id; + GL.textures[id] = texture; + HEAP32[(((textures)+(i*4))>>2)]=id; + } + } + + function _emscripten_glDeleteTextures(n, textures) { + for (var i = 0; i < n; i++) { + var id = HEAP32[(((textures)+(i*4))>>2)]; + var texture = GL.textures[id]; + GLctx.deleteTexture(texture); + texture.name = 0; + GL.textures[id] = null; + } + } + + function _emscripten_glCompressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data) { + if (data) { + data = HEAPU8.subarray((data),(data+imageSize)); + } else { + data = null; + } + // N.b. using array notation explicitly to not confuse Closure minification. + GLctx['compressedTexImage2D'](target, level, internalFormat, width, height, border, data); + } + + function _emscripten_glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data) { + if (data) { + data = HEAPU8.subarray((data),(data+imageSize)); + } else { + data = null; + } + CLctx['compressedTexSubImage2D'](target, level, xoffset, yoffset, width, height, data); + } + + function _emscripten_glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels) { + if (pixels) { + var data = GL.getTexPixelData(type, format, width, height, pixels, internalFormat); + pixels = data.pixels; + internalFormat = data.internalFormat; + } else { + pixels = null; + } + GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixels); + } + + function _emscripten_glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) { + if (pixels) { + var data = GL.getTexPixelData(type, format, width, height, pixels, -1); + pixels = data.pixels; + } else { + pixels = null; + } + GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); + } + + function _emscripten_glReadPixels(x, y, width, height, format, type, pixels) { + var sizePerPixel; + switch (format) { + case 0x1907 /* GL_RGB */: + sizePerPixel = 3; + break; + case 0x1908 /* GL_RGBA */: + sizePerPixel = 4; + break; + default: + GL.recordError(0x0500/*GL_INVALID_ENUM*/); + return; + } + var totalSize = width*height*sizePerPixel; + GLctx.readPixels(x, y, width, height, format, type, HEAPU8.subarray(pixels, pixels + totalSize)); + } + + function _emscripten_glBindTexture(target, texture) { + GLctx.bindTexture(target, texture ? GL.textures[texture] : null); + } + + function _emscripten_glGetTexParameterfv(target, pname, params) { + HEAPF32[((params)>>2)]=GLctx.getTexParameter(target, pname); + } + + function _emscripten_glGetTexParameteriv(target, pname, params) { + HEAP32[((params)>>2)]=GLctx.getTexParameter(target, pname); + } + + function _emscripten_glTexParameterfv(target, pname, params) { + var param = HEAPF32[((params)>>2)]; + GLctx.texParameterf(target, pname, param); + } + + function _emscripten_glTexParameteriv(target, pname, params) { + var param = HEAP32[((params)>>2)]; + GLctx.texParameteri(target, pname, param); + } + + function _emscripten_glIsTexture(texture) { + var texture = GL.textures[texture]; + if (!texture) return 0; + return GLctx.isTexture(texture); + } + + function _emscripten_glGenBuffers(n, buffers) { + for (var i = 0; i < n; i++) { + var id = GL.getNewId(GL.buffers); + var buffer = GLctx.createBuffer(); + buffer.name = id; + GL.buffers[id] = buffer; + HEAP32[(((buffers)+(i*4))>>2)]=id; + } + } + + function _emscripten_glDeleteBuffers(n, buffers) { + for (var i = 0; i < n; i++) { + var id = HEAP32[(((buffers)+(i*4))>>2)]; + var buffer = GL.buffers[id]; + + // From spec: "glDeleteBuffers silently ignores 0's and names that do not + // correspond to existing buffer objects." + if (!buffer) continue; + + GLctx.deleteBuffer(buffer); + buffer.name = 0; + GL.buffers[id] = null; + + if (id == GL.currArrayBuffer) GL.currArrayBuffer = 0; + if (id == GL.currElementArrayBuffer) GL.currElementArrayBuffer = 0; + } + } + + function _emscripten_glGetBufferParameteriv(target, value, data) { + HEAP32[((data)>>2)]=GLctx.getBufferParameter(target, value); + } + + function _emscripten_glBufferData(target, size, data, usage) { + switch (usage) { // fix usages, WebGL only has *_DRAW + case 0x88E1: // GL_STREAM_READ + case 0x88E2: // GL_STREAM_COPY + usage = 0x88E0; // GL_STREAM_DRAW + break; + case 0x88E5: // GL_STATIC_READ + case 0x88E6: // GL_STATIC_COPY + usage = 0x88E4; // GL_STATIC_DRAW + break; + case 0x88E9: // GL_DYNAMIC_READ + case 0x88EA: // GL_DYNAMIC_COPY + usage = 0x88E8; // GL_DYNAMIC_DRAW + break; + } + if (!data) { + GLctx.bufferData(target, size, usage); + } else { + GLctx.bufferData(target, HEAPU8.subarray(data, data+size), usage); + } + } + + function _emscripten_glBufferSubData(target, offset, size, data) { + GLctx.bufferSubData(target, offset, HEAPU8.subarray(data, data+size)); + } + + function _emscripten_glIsBuffer(buffer) { + var b = GL.buffers[buffer]; + if (!b) return 0; + return GLctx.isBuffer(b); + } + + function _emscripten_glGenRenderbuffers(n, renderbuffers) { + for (var i = 0; i < n; i++) { + var id = GL.getNewId(GL.renderbuffers); + var renderbuffer = GLctx.createRenderbuffer(); + renderbuffer.name = id; + GL.renderbuffers[id] = renderbuffer; + HEAP32[(((renderbuffers)+(i*4))>>2)]=id; + } + } + + function _emscripten_glDeleteRenderbuffers(n, renderbuffers) { + for (var i = 0; i < n; i++) { + var id = HEAP32[(((renderbuffers)+(i*4))>>2)]; + var renderbuffer = GL.renderbuffers[id]; + GLctx.deleteRenderbuffer(renderbuffer); + renderbuffer.name = 0; + GL.renderbuffers[id] = null; + } + } + + function _emscripten_glBindRenderbuffer(target, renderbuffer) { + GLctx.bindRenderbuffer(target, renderbuffer ? GL.renderbuffers[renderbuffer] : null); + } + + function _emscripten_glGetRenderbufferParameteriv(target, pname, params) { + HEAP32[((params)>>2)]=GLctx.getRenderbufferParameter(target, pname); + } + + function _emscripten_glIsRenderbuffer(renderbuffer) { + var rb = GL.renderbuffers[renderbuffer]; + if (!rb) return 0; + return GLctx.isRenderbuffer(rb); + } + + function _emscripten_glGetUniformfv(program, location, params) { + var data = GLctx.getUniform(GL.programs[program], GL.uniforms[location]); + if (typeof data == 'number') { + HEAPF32[((params)>>2)]=data; + } else { + for (var i = 0; i < data.length; i++) { + HEAPF32[(((params)+(i))>>2)]=data[i]; + } + } + } + + function _emscripten_glGetUniformiv(program, location, params) { + var data = GLctx.getUniform(GL.programs[program], GL.uniforms[location]); + if (typeof data == 'number' || typeof data == 'boolean') { + HEAP32[((params)>>2)]=data; + } else { + for (var i = 0; i < data.length; i++) { + HEAP32[(((params)+(i))>>2)]=data[i]; + } + } + } + + function _emscripten_glGetUniformLocation(program, name) { + name = Pointer_stringify(name); + + var arrayOffset = 0; + // If user passed an array accessor "[index]", parse the array index off the accessor. + if (name.indexOf(']', name.length-1) !== -1) { + var ls = name.lastIndexOf('['); + var arrayIndex = name.slice(ls+1, -1); + if (arrayIndex.length > 0) { + arrayOffset = parseInt(arrayIndex); + if (arrayOffset < 0) { + return -1; + } + } + name = name.slice(0, ls); + } + + var ptable = GL.programInfos[program]; + if (!ptable) { + return -1; + } + var utable = ptable.uniforms; + var uniformInfo = utable[name]; // returns pair [ dimension_of_uniform_array, uniform_location ] + if (uniformInfo && arrayOffset < uniformInfo[0]) { // Check if user asked for an out-of-bounds element, i.e. for 'vec4 colors[3];' user could ask for 'colors[10]' which should return -1. + return uniformInfo[1]+arrayOffset; + } else { + return -1; + } + } + + function _emscripten_glGetVertexAttribfv(index, pname, params) { + var data = GLctx.getVertexAttrib(index, pname); + if (typeof data == 'number') { + HEAPF32[((params)>>2)]=data; + } else { + for (var i = 0; i < data.length; i++) { + HEAPF32[(((params)+(i))>>2)]=data[i]; + } + } + } + + function _emscripten_glGetVertexAttribiv(index, pname, params) { + var data = GLctx.getVertexAttrib(index, pname); + if (typeof data == 'number' || typeof data == 'boolean') { + HEAP32[((params)>>2)]=data; + } else { + for (var i = 0; i < data.length; i++) { + HEAP32[(((params)+(i))>>2)]=data[i]; + } + } + } + + function _emscripten_glGetVertexAttribPointerv(index, pname, pointer) { + HEAP32[((pointer)>>2)]=GLctx.getVertexAttribOffset(index, pname); + } + + function _emscripten_glGetActiveUniform(program, index, bufSize, length, size, type, name) { + program = GL.programs[program]; + var info = GLctx.getActiveUniform(program, index); + + var infoname = info.name.slice(0, Math.max(0, bufSize - 1)); + writeStringToMemory(infoname, name); + + if (length) { + HEAP32[((length)>>2)]=infoname.length; + } + if (size) { + HEAP32[((size)>>2)]=info.size; + } + if (type) { + HEAP32[((type)>>2)]=info.type; + } + } + + function _emscripten_glUniform1f(location, v0) { + location = GL.uniforms[location]; + GLctx.uniform1f(location, v0); + } + + function _emscripten_glUniform2f(location, v0, v1) { + location = GL.uniforms[location]; + GLctx.uniform2f(location, v0, v1); + } + + function _emscripten_glUniform3f(location, v0, v1, v2) { + location = GL.uniforms[location]; + GLctx.uniform3f(location, v0, v1, v2); + } + + function _emscripten_glUniform4f(location, v0, v1, v2, v3) { + location = GL.uniforms[location]; + GLctx.uniform4f(location, v0, v1, v2, v3); + } + + function _emscripten_glUniform1i(location, v0) { + location = GL.uniforms[location]; + GLctx.uniform1i(location, v0); + } + + function _emscripten_glUniform2i(location, v0, v1) { + location = GL.uniforms[location]; + GLctx.uniform2i(location, v0, v1); + } + + function _emscripten_glUniform3i(location, v0, v1, v2) { + location = GL.uniforms[location]; + GLctx.uniform3i(location, v0, v1, v2); + } + + function _emscripten_glUniform4i(location, v0, v1, v2, v3) { + location = GL.uniforms[location]; + GLctx.uniform4i(location, v0, v1, v2, v3); + } + + function _emscripten_glUniform1iv(location, count, value) { + location = GL.uniforms[location]; + value = HEAP32.subarray((value)>>2,(value+count*4)>>2); + GLctx.uniform1iv(location, value); + } + + function _emscripten_glUniform2iv(location, count, value) { + location = GL.uniforms[location]; + count *= 2; + value = HEAP32.subarray((value)>>2,(value+count*4)>>2); + GLctx.uniform2iv(location, value); + } + + function _emscripten_glUniform3iv(location, count, value) { + location = GL.uniforms[location]; + count *= 3; + value = HEAP32.subarray((value)>>2,(value+count*4)>>2); + GLctx.uniform3iv(location, value); + } + + function _emscripten_glUniform4iv(location, count, value) { + location = GL.uniforms[location]; + count *= 4; + value = HEAP32.subarray((value)>>2,(value+count*4)>>2); + GLctx.uniform4iv(location, value); + } + + function _emscripten_glUniform1fv(location, count, value) { + location = GL.uniforms[location]; + var view; + if (count == 1) { + // avoid allocation for the common case of uploading one uniform + view = GL.miniTempBufferViews[0]; + view[0] = HEAPF32[((value)>>2)]; + } else { + view = HEAPF32.subarray((value)>>2,(value+count*4)>>2); + } + GLctx.uniform1fv(location, view); + } + + function _emscripten_glUniform2fv(location, count, value) { + location = GL.uniforms[location]; + var view; + if (count == 1) { + // avoid allocation for the common case of uploading one uniform + view = GL.miniTempBufferViews[1]; + view[0] = HEAPF32[((value)>>2)]; + view[1] = HEAPF32[(((value)+(4))>>2)]; + } else { + view = HEAPF32.subarray((value)>>2,(value+count*8)>>2); + } + GLctx.uniform2fv(location, view); + } + + function _emscripten_glUniform3fv(location, count, value) { + location = GL.uniforms[location]; + var view; + if (count == 1) { + // avoid allocation for the common case of uploading one uniform + view = GL.miniTempBufferViews[2]; + view[0] = HEAPF32[((value)>>2)]; + view[1] = HEAPF32[(((value)+(4))>>2)]; + view[2] = HEAPF32[(((value)+(8))>>2)]; + } else { + view = HEAPF32.subarray((value)>>2,(value+count*12)>>2); + } + GLctx.uniform3fv(location, view); + } + + function _emscripten_glUniform4fv(location, count, value) { + location = GL.uniforms[location]; + var view; + if (count == 1) { + // avoid allocation for the common case of uploading one uniform + view = GL.miniTempBufferViews[3]; + view[0] = HEAPF32[((value)>>2)]; + view[1] = HEAPF32[(((value)+(4))>>2)]; + view[2] = HEAPF32[(((value)+(8))>>2)]; + view[3] = HEAPF32[(((value)+(12))>>2)]; + } else { + view = HEAPF32.subarray((value)>>2,(value+count*16)>>2); + } + GLctx.uniform4fv(location, view); + } + + function _emscripten_glUniformMatrix2fv(location, count, transpose, value) { + location = GL.uniforms[location]; + var view; + if (count == 1) { + // avoid allocation for the common case of uploading one uniform matrix + view = GL.miniTempBufferViews[3]; + for (var i = 0; i < 4; i++) { + view[i] = HEAPF32[(((value)+(i*4))>>2)]; + } + } else { + view = HEAPF32.subarray((value)>>2,(value+count*16)>>2); + } + GLctx.uniformMatrix2fv(location, transpose, view); + } + + function _emscripten_glUniformMatrix3fv(location, count, transpose, value) { + location = GL.uniforms[location]; + var view; + if (count == 1) { + // avoid allocation for the common case of uploading one uniform matrix + view = GL.miniTempBufferViews[8]; + for (var i = 0; i < 9; i++) { + view[i] = HEAPF32[(((value)+(i*4))>>2)]; + } + } else { + view = HEAPF32.subarray((value)>>2,(value+count*36)>>2); + } + GLctx.uniformMatrix3fv(location, transpose, view); + } + + function _emscripten_glUniformMatrix4fv(location, count, transpose, value) { + location = GL.uniforms[location]; + var view; + if (count == 1) { + // avoid allocation for the common case of uploading one uniform matrix + view = GL.miniTempBufferViews[15]; + for (var i = 0; i < 16; i++) { + view[i] = HEAPF32[(((value)+(i*4))>>2)]; + } + } else { + view = HEAPF32.subarray((value)>>2,(value+count*64)>>2); + } + GLctx.uniformMatrix4fv(location, transpose, view); + } + + function _emscripten_glBindBuffer(target, buffer) { + var bufferObj = buffer ? GL.buffers[buffer] : null; + + if (target == GLctx.ARRAY_BUFFER) { + GLImmediate.lastArrayBuffer = GL.currArrayBuffer = buffer; + } else if (target == GLctx.ELEMENT_ARRAY_BUFFER) { + GL.currElementArrayBuffer = buffer; + } + + GLctx.bindBuffer(target, bufferObj); + } + + function _emscripten_glVertexAttrib1fv(index, v) { + v = HEAPF32.subarray((v)>>2,(v+4)>>2); + GLctx.vertexAttrib1fv(index, v); + } + + function _emscripten_glVertexAttrib2fv(index, v) { + v = HEAPF32.subarray((v)>>2,(v+8)>>2); + GLctx.vertexAttrib2fv(index, v); + } + + function _emscripten_glVertexAttrib3fv(index, v) { + v = HEAPF32.subarray((v)>>2,(v+12)>>2); + GLctx.vertexAttrib3fv(index, v); + } + + function _emscripten_glVertexAttrib4fv(index, v) { + v = HEAPF32.subarray((v)>>2,(v+16)>>2); + GLctx.vertexAttrib4fv(index, v); + } + + function _emscripten_glGetAttribLocation(program, name) { + program = GL.programs[program]; + name = Pointer_stringify(name); + return GLctx.getAttribLocation(program, name); + } + + function _emscripten_glGetActiveAttrib(program, index, bufSize, length, size, type, name) { + program = GL.programs[program]; + var info = GLctx.getActiveAttrib(program, index); + + var infoname = info.name.slice(0, Math.max(0, bufSize - 1)); + writeStringToMemory(infoname, name); + + if (length) { + HEAP32[((length)>>2)]=infoname.length; + } + if (size) { + HEAP32[((size)>>2)]=info.size; + } + if (type) { + HEAP32[((type)>>2)]=info.type; + } + } + + function _emscripten_glCreateShader(shaderType) { + var id = GL.getNewId(GL.shaders); + GL.shaders[id] = GLctx.createShader(shaderType); + return id; + } + + function _emscripten_glDeleteShader(shader) { + GLctx.deleteShader(GL.shaders[shader]); + GL.shaders[shader] = null; + } + + function _emscripten_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; + } + } + + function _emscripten_glShaderSource(shader, count, string, length) { + var source = GL.getSource(shader, count, string, length); + GLctx.shaderSource(GL.shaders[shader], source); + } + + function _emscripten_glGetShaderSource(shader, bufSize, length, source) { + var result = GLctx.getShaderSource(GL.shaders[shader]); + result = result.slice(0, Math.max(0, bufSize - 1)); + writeStringToMemory(result, source); + if (length) { + HEAP32[((length)>>2)]=result.length; + } + } + + function _emscripten_glCompileShader(shader) { + GLctx.compileShader(GL.shaders[shader]); + } + + function _emscripten_glGetShaderInfoLog(shader, maxLength, length, infoLog) { + var log = GLctx.getShaderInfoLog(GL.shaders[shader]); + // Work around a bug in Chromium which causes getShaderInfoLog to return null + if (!log) log = '(unknown error)'; + log = log.substr(0, maxLength - 1); + writeStringToMemory(log, infoLog); + if (length) { + HEAP32[((length)>>2)]=log.length + } + } + + function _emscripten_glGetShaderiv(shader, pname, p) { + if (pname == 0x8B84) { // GL_INFO_LOG_LENGTH + var log = GLctx.getShaderInfoLog(GL.shaders[shader]); + // Work around a bug in Chromium which causes getShaderInfoLog to return null + if (!log) log = '(unknown error)'; + HEAP32[((p)>>2)]=log.length + 1; + } else { + HEAP32[((p)>>2)]=GLctx.getShaderParameter(GL.shaders[shader], pname); + } + } + + function _emscripten_glGetProgramiv(program, pname, p) { + if (pname == 0x8B84) { // GL_INFO_LOG_LENGTH + HEAP32[((p)>>2)]=GLctx.getProgramInfoLog(GL.programs[program]).length + 1; + } else if (pname == 0x8B87 /* GL_ACTIVE_UNIFORM_MAX_LENGTH */) { + var ptable = GL.programInfos[program]; + if (ptable) { + HEAP32[((p)>>2)]=ptable.maxUniformLength; + return; + } else if (program < GL.counter) { + GL.recordError(0x0502 /* GL_INVALID_OPERATION */); + } else { + GL.recordError(0x0501 /* GL_INVALID_VALUE */); + } + } else if (pname == 0x8B8A /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */) { + var ptable = GL.programInfos[program]; + if (ptable) { + if (ptable.maxAttributeLength == -1) { + var program = GL.programs[program]; + var numAttribs = GLctx.getProgramParameter(program, GLctx.ACTIVE_ATTRIBUTES); + ptable.maxAttributeLength = 0; // Spec says if there are no active attribs, 0 must be returned. + for(var i = 0; i < numAttribs; ++i) { + var activeAttrib = GLctx.getActiveAttrib(program, i); + ptable.maxAttributeLength = Math.max(ptable.maxAttributeLength, activeAttrib.name.length+1); + } + } + HEAP32[((p)>>2)]=ptable.maxAttributeLength; + return; + } else if (program < GL.counter) { + GL.recordError(0x0502 /* GL_INVALID_OPERATION */); + } else { + GL.recordError(0x0501 /* GL_INVALID_VALUE */); + } + } else { + HEAP32[((p)>>2)]=GLctx.getProgramParameter(GL.programs[program], pname); + } + } + + function _emscripten_glIsShader(shader) { + var s = GL.shaders[shader]; + if (!s) return 0; + return GLctx.isShader(s); + } + + function _emscripten_glCreateProgram() { + var id = GL.getNewId(GL.programs); + var program = GLctx.createProgram(); + program.name = id; + GL.programs[id] = program; + return id; + } + + function _emscripten_glDeleteProgram(program) { + var program = GL.programs[program]; + GLctx.deleteProgram(program); + program.name = 0; + GL.programs[program] = null; + GL.programInfos[program] = null; + } + + function _emscripten_glAttachShader(program, shader) { + GLctx.attachShader(GL.programs[program], + GL.shaders[shader]); + } + + function _emscripten_glDetachShader(program, shader) { + GLctx.detachShader(GL.programs[program], + GL.shaders[shader]); + } + + function _emscripten_glGetShaderPrecisionFormat() { throw 'glGetShaderPrecisionFormat: TODO' } + + function _emscripten_glLinkProgram(program) { + GLctx.linkProgram(GL.programs[program]); + GL.programInfos[program] = null; // uniforms no longer keep the same names after linking + GL.populateUniformTable(program); + } + + function _emscripten_glGetProgramInfoLog(program, maxLength, length, infoLog) { + var log = GLctx.getProgramInfoLog(GL.programs[program]); + // Work around a bug in Chromium which causes getProgramInfoLog to return null + if (!log) { + log = ""; + } + log = log.substr(0, maxLength - 1); + writeStringToMemory(log, infoLog); + if (length) { + HEAP32[((length)>>2)]=log.length + } + } + + function _emscripten_glUseProgram(program) { + GLctx.useProgram(program ? GL.programs[program] : null); + } + + function _emscripten_glValidateProgram(program) { + GLctx.validateProgram(GL.programs[program]); + } + + function _emscripten_glIsProgram(program) { + var program = GL.programs[program]; + if (!program) return 0; + return GLctx.isProgram(program); + } + + function _emscripten_glBindAttribLocation(program, index, name) { + name = Pointer_stringify(name); + GLctx.bindAttribLocation(GL.programs[program], index, name); + } + + function _emscripten_glBindFramebuffer(target, framebuffer) { + GLctx.bindFramebuffer(target, framebuffer ? GL.framebuffers[framebuffer] : null); + } + + function _emscripten_glGenFramebuffers(n, ids) { + for (var i = 0; i < n; ++i) { + var id = GL.getNewId(GL.framebuffers); + var framebuffer = GLctx.createFramebuffer(); + framebuffer.name = id; + GL.framebuffers[id] = framebuffer; + HEAP32[(((ids)+(i*4))>>2)]=id; + } + } + + function _emscripten_glDeleteFramebuffers(n, framebuffers) { + for (var i = 0; i < n; ++i) { + var id = HEAP32[(((framebuffers)+(i*4))>>2)]; + var framebuffer = GL.framebuffers[id]; + GLctx.deleteFramebuffer(framebuffer); + framebuffer.name = 0; + GL.framebuffers[id] = null; + } + } + + function _emscripten_glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer) { + GLctx.framebufferRenderbuffer(target, attachment, renderbuffertarget, + GL.renderbuffers[renderbuffer]); + } + + function _emscripten_glFramebufferTexture2D(target, attachment, textarget, texture, level) { + GLctx.framebufferTexture2D(target, attachment, textarget, + GL.textures[texture], level); + } + + function _emscripten_glGetFramebufferAttachmentParameteriv(target, attachment, pname, params) { + var result = GLctx.getFramebufferAttachmentParameter(target, attachment, pname); + HEAP32[((params)>>2)]=result; + } + + function _emscripten_glIsFramebuffer(framebuffer) { + var fb = GL.framebuffers[framebuffer]; + if (!fb) return 0; + return GLctx.isFramebuffer(fb); + } + + function _emscripten_glDeleteObjectARB(id) { + if (GL.programs[id]) { + _emscripten_glDeleteProgram(id); + } else if (GL.shaders[id]) { + _emscripten_glDeleteShader(id); + } else { + Module.printErr('WARNING: deleteObject received invalid id: ' + id); + } + } + + function _emscripten_glGetObjectParameterivARB(id, type, result) { + if (GL.programs[id]) { + if (type == 0x8B84) { // GL_OBJECT_INFO_LOG_LENGTH_ARB + HEAP32[((result)>>2)]=GLctx.getProgramInfoLog(GL.programs[id]).length; + return; + } + _emscripten_glGetProgramiv(id, type, result); + } else if (GL.shaders[id]) { + if (type == 0x8B84) { // GL_OBJECT_INFO_LOG_LENGTH_ARB + HEAP32[((result)>>2)]=GLctx.getShaderInfoLog(GL.shaders[id]).length; + return; + } else if (type == 0x8B88) { // GL_OBJECT_SHADER_SOURCE_LENGTH_ARB + HEAP32[((result)>>2)]=GLctx.getShaderSource(GL.shaders[id]).length; + return; + } + _emscripten_glGetShaderiv(id, type, result); + } else { + Module.printErr('WARNING: getObjectParameteriv received invalid id: ' + id); + } + } + + function _emscripten_glGetInfoLogARB(id, maxLength, length, infoLog) { + if (GL.programs[id]) { + _emscripten_glGetProgramInfoLog(id, maxLength, length, infoLog); + } else if (GL.shaders[id]) { + _emscripten_glGetShaderInfoLog(id, maxLength, length, infoLog); + } else { + Module.printErr('WARNING: getObjectParameteriv received invalid id: ' + id); + } + } + + function _emscripten_glBindProgramARB(type, id) { + } + + function _emscripten_glGetPointerv(name, p) { + var attribute; + switch(name) { + case 0x808E: // GL_VERTEX_ARRAY_POINTER + attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX]; break; + case 0x8090: // GL_COLOR_ARRAY_POINTER + attribute = GLImmediate.clientAttributes[GLImmediate.COLOR]; break; + case 0x8092: // GL_TEXTURE_COORD_ARRAY_POINTER + attribute = GLImmediate.clientAttributes[GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture]; break; + default: + GL.recordError(0x0500/*GL_INVALID_ENUM*/); + return; + } + HEAP32[((p)>>2)]=attribute ? attribute.pointer : 0; + } + + + function _emscripten_glDrawElements(mode, count, type, indices) { + + GLctx.drawElements(mode, count, type, indices); + + }function _emscripten_glDrawRangeElements(mode, start, end, count, type, indices) { + _emscripten_glDrawElements(mode, count, type, indices, start, end); + } + + function _emscripten_glEnableClientState(cap) { + var attrib = GLEmulation.getAttributeFromCapability(cap); + if (attrib === null) { + return; + } + if (!GLImmediate.enabledClientAttributes[attrib]) { + GLImmediate.enabledClientAttributes[attrib] = true; + GLImmediate.totalEnabledClientAttributes++; + GLImmediate.currentRenderer = null; // Will need to change current renderer, since the set of active vertex pointers changed. + if (GLEmulation.currentVao) GLEmulation.currentVao.enabledClientStates[cap] = 1; + GLImmediate.modifiedClientAttributes = true; + } + } + + function _emscripten_glVertexPointer(size, type, stride, pointer) { + GLImmediate.setClientAttribute(GLImmediate.VERTEX, size, type, stride, pointer); + } + + function _emscripten_glTexCoordPointer(size, type, stride, pointer) { + GLImmediate.setClientAttribute(GLImmediate.TEXTURE0 + GLImmediate.clientActiveTexture, size, type, stride, pointer); + } + + function _emscripten_glNormalPointer(type, stride, pointer) { + GLImmediate.setClientAttribute(GLImmediate.NORMAL, 3, type, stride, pointer); + } + + function _emscripten_glColorPointer(size, type, stride, pointer) { + GLImmediate.setClientAttribute(GLImmediate.COLOR, size, type, stride, pointer); + } + + function _emscripten_glClientActiveTexture(texture) { + GLImmediate.clientActiveTexture = texture - 0x84C0; // GL_TEXTURE0 + } + + function _emscripten_glGenVertexArrays(n, vaos) { + for (var i = 0; i < n; i++) { + var id = GL.getNewId(GLEmulation.vaos); + GLEmulation.vaos[id] = { + id: id, + arrayBuffer: 0, + elementArrayBuffer: 0, + enabledVertexAttribArrays: {}, + vertexAttribPointers: {}, + enabledClientStates: {}, + }; + HEAP32[(((vaos)+(i*4))>>2)]=id; + } + } + + function _emscripten_glDeleteVertexArrays(n, vaos) { + for (var i = 0; i < n; i++) { + var id = HEAP32[(((vaos)+(i*4))>>2)]; + GLEmulation.vaos[id] = null; + if (GLEmulation.currentVao && GLEmulation.currentVao.id == id) GLEmulation.currentVao = null; + } + } + + + function _emscripten_glEnableVertexAttribArray(index) { + GLctx.enableVertexAttribArray(index); + } + + function _emscripten_glVertexAttribPointer(index, size, type, normalized, stride, ptr) { + GLctx.vertexAttribPointer(index, size, type, normalized, stride, ptr); + }function _emscripten_glBindVertexArray(vao) { + // undo vao-related things, wipe the slate clean, both for vao of 0 or an actual vao + GLEmulation.currentVao = null; // make sure the commands we run here are not recorded + if (GLImmediate.lastRenderer) GLImmediate.lastRenderer.cleanup(); + _emscripten_glBindBuffer(GLctx.ARRAY_BUFFER, 0); // XXX if one was there before we were bound? + _emscripten_glBindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, 0); + for (var vaa in GLEmulation.enabledVertexAttribArrays) { + GLctx.disableVertexAttribArray(vaa); + } + GLEmulation.enabledVertexAttribArrays = {}; + GLImmediate.enabledClientAttributes = [0, 0]; + GLImmediate.totalEnabledClientAttributes = 0; + GLImmediate.modifiedClientAttributes = true; + if (vao) { + // replay vao + var info = GLEmulation.vaos[vao]; + _emscripten_glBindBuffer(GLctx.ARRAY_BUFFER, info.arrayBuffer); // XXX overwrite current binding? + _emscripten_glBindBuffer(GLctx.ELEMENT_ARRAY_BUFFER, info.elementArrayBuffer); + for (var vaa in info.enabledVertexAttribArrays) { + _emscripten_glEnableVertexAttribArray(vaa); + } + for (var vaa in info.vertexAttribPointers) { + _glVertexAttribPointer.apply(null, info.vertexAttribPointers[vaa]); + } + for (var attrib in info.enabledClientStates) { + _emscripten_glEnableClientState(attrib|0); + } + GLEmulation.currentVao = info; // set currentVao last, so the commands we ran here were not recorded + } + } + + function _emscripten_glMatrixMode(mode) { + if (mode == 0x1700 /* GL_MODELVIEW */) { + GLImmediate.currentMatrix = 0/*m*/; + } else if (mode == 0x1701 /* GL_PROJECTION */) { + GLImmediate.currentMatrix = 1/*p*/; + } else if (mode == 0x1702) { // GL_TEXTURE + GLImmediate.useTextureMatrix = true; + GLImmediate.currentMatrix = 2/*t*/ + GLImmediate.clientActiveTexture; + } else { + throw "Wrong mode " + mode + " passed to glMatrixMode"; + } + } + + function _emscripten_glLoadIdentity() { + GLImmediate.matricesModified = true; + GLImmediate.matrixVersion[GLImmediate.currentMatrix] = (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1)|0; + GLImmediate.matrixLib.mat4.identity(GLImmediate.matrix[GLImmediate.currentMatrix]); + } + + function _emscripten_glLoadMatrixf(matrix) { + GLImmediate.matricesModified = true; + GLImmediate.matrixVersion[GLImmediate.currentMatrix] = (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1)|0; + GLImmediate.matrixLib.mat4.set(HEAPF32.subarray((matrix)>>2,(matrix+64)>>2), GLImmediate.matrix[GLImmediate.currentMatrix]); + } + + function _emscripten_glFrustum(left, right, bottom, top_, nearVal, farVal) { + GLImmediate.matricesModified = true; + GLImmediate.matrixVersion[GLImmediate.currentMatrix] = (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1)|0; + GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix], + GLImmediate.matrixLib.mat4.frustum(left, right, bottom, top_, nearVal, farVal)); + } + + function _emscripten_glRotatef(angle, x, y, z) { + GLImmediate.matricesModified = true; + GLImmediate.matrixVersion[GLImmediate.currentMatrix] = (GLImmediate.matrixVersion[GLImmediate.currentMatrix] + 1)|0; + GLImmediate.matrixLib.mat4.rotate(GLImmediate.matrix[GLImmediate.currentMatrix], angle*Math.PI/180, [x, y, z]); + } + + + + function _emscripten_glDisableVertexAttribArray(index) { + GLctx.disableVertexAttribArray(index); + } + + function _emscripten_glDrawArrays(mode, first, count) { + + GLctx.drawArrays(mode, first, count); + + } + + + function _emscripten_glShaderBinary() { + GL.recordError(0x0500/*GL_INVALID_ENUM*/); + } + + function _emscripten_glReleaseShaderCompiler() { + // NOP (as allowed by GLES 2.0 spec) + } + + function _emscripten_glGetError() { + // First return any GL error generated by the emscripten library_gl.js interop layer. + if (GL.lastError) { + var error = GL.lastError; + GL.lastError = 0/*GL_NO_ERROR*/; + return error; + } else { // If there were none, return the GL error from the browser GL context. + return GLctx.getError(); + } + } + + function _emscripten_glVertexAttribDivisor(index, divisor) { + GL.instancedArraysExt.vertexAttribDivisorANGLE(index, divisor); + } + + function _emscripten_glDrawArraysInstanced(mode, first, count, primcount) { + GL.instancedArraysExt.drawArraysInstancedANGLE(mode, first, count, primcount); + } + + function _emscripten_glDrawElementsInstanced(mode, count, type, indices, primcount) { + GL.instancedArraysExt.drawElementsInstancedANGLE(mode, count, type, indices, primcount); + } + + function _emscripten_glFinish() { GLctx.finish() } + + function _emscripten_glFlush() { GLctx.flush() } + + function _emscripten_glClearDepth(x0) { GLctx.clearDepth(x0) } + + function _emscripten_glClearDepthf(x0) { GLctx.clearDepth(x0) } + + function _emscripten_glDepthFunc(x0) { GLctx.depthFunc(x0) } + + function _emscripten_glEnable(x0) { GLctx.enable(x0) } + + function _emscripten_glDisable(x0) { GLctx.disable(x0) } + + function _emscripten_glFrontFace(x0) { GLctx.frontFace(x0) } + + function _emscripten_glCullFace(x0) { GLctx.cullFace(x0) } + + function _emscripten_glClear(x0) { GLctx.clear(x0) } + + function _emscripten_glLineWidth(x0) { GLctx.lineWidth(x0) } + + function _emscripten_glClearStencil(x0) { GLctx.clearStencil(x0) } + + function _emscripten_glDepthMask(x0) { GLctx.depthMask(x0) } + + function _emscripten_glStencilMask(x0) { GLctx.stencilMask(x0) } + + function _emscripten_glCheckFramebufferStatus(x0) { return GLctx.checkFramebufferStatus(x0) } + + function _emscripten_glGenerateMipmap(x0) { GLctx.generateMipmap(x0) } + + function _emscripten_glActiveTexture(x0) { GLctx.activeTexture(x0) } + + function _emscripten_glBlendEquation(x0) { GLctx.blendEquation(x0) } + + function _emscripten_glIsEnabled(x0) { return GLctx.isEnabled(x0) } + + function _emscripten_glBlendFunc(x0, x1) { GLctx.blendFunc(x0, x1) } + + function _emscripten_glBlendEquationSeparate(x0, x1) { GLctx.blendEquationSeparate(x0, x1) } + + function _emscripten_glDepthRange(x0, x1) { GLctx.depthRange(x0, x1) } + + function _emscripten_glDepthRangef(x0, x1) { GLctx.depthRange(x0, x1) } + + function _emscripten_glStencilMaskSeparate(x0, x1) { GLctx.stencilMaskSeparate(x0, x1) } + + function _emscripten_glHint(x0, x1) { GLctx.hint(x0, x1) } + + function _emscripten_glPolygonOffset(x0, x1) { GLctx.polygonOffset(x0, x1) } + + function _emscripten_glVertexAttrib1f(x0, x1) { GLctx.vertexAttrib1f(x0, x1) } + + function _emscripten_glSampleCoverage(x0, x1) { GLctx.sampleCoverage(x0, x1) } + + function _emscripten_glTexParameteri(x0, x1, x2) { GLctx.texParameteri(x0, x1, x2) } + + function _emscripten_glTexParameterf(x0, x1, x2) { GLctx.texParameterf(x0, x1, x2) } + + function _emscripten_glVertexAttrib2f(x0, x1, x2) { GLctx.vertexAttrib2f(x0, x1, x2) } + + function _emscripten_glStencilFunc(x0, x1, x2) { GLctx.stencilFunc(x0, x1, x2) } + + function _emscripten_glStencilOp(x0, x1, x2) { GLctx.stencilOp(x0, x1, x2) } + + function _emscripten_glViewport(x0, x1, x2, x3) { GLctx.viewport(x0, x1, x2, x3) } + + function _emscripten_glClearColor(x0, x1, x2, x3) { GLctx.clearColor(x0, x1, x2, x3) } + + function _emscripten_glScissor(x0, x1, x2, x3) { GLctx.scissor(x0, x1, x2, x3) } + + function _emscripten_glVertexAttrib3f(x0, x1, x2, x3) { GLctx.vertexAttrib3f(x0, x1, x2, x3) } + + function _emscripten_glColorMask(x0, x1, x2, x3) { GLctx.colorMask(x0, x1, x2, x3) } + + function _emscripten_glRenderbufferStorage(x0, x1, x2, x3) { GLctx.renderbufferStorage(x0, x1, x2, x3) } + + function _emscripten_glBlendFuncSeparate(x0, x1, x2, x3) { GLctx.blendFuncSeparate(x0, x1, x2, x3) } + + function _emscripten_glBlendColor(x0, x1, x2, x3) { GLctx.blendColor(x0, x1, x2, x3) } + + function _emscripten_glStencilFuncSeparate(x0, x1, x2, x3) { GLctx.stencilFuncSeparate(x0, x1, x2, x3) } + + function _emscripten_glStencilOpSeparate(x0, x1, x2, x3) { GLctx.stencilOpSeparate(x0, x1, x2, x3) } + + function _emscripten_glVertexAttrib4f(x0, x1, x2, x3, x4) { GLctx.vertexAttrib4f(x0, x1, x2, x3, x4) } + + function _emscripten_glCopyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { GLctx.copyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7) } + + function _emscripten_glCopyTexSubImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { GLctx.copyTexSubImage2D(x0, x1, x2, x3, x4, x5, x6, x7) } + + function _abort() { + Module['abort'](); + } + + function _sbrk(bytes) { + // Implement a Linux-like 'memory area' for our 'process'. + // Changes the size of the memory area by |bytes|; returns the + // address of the previous top ('break') of the memory area + // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP + var self = _sbrk; + if (!self.called) { + DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned + self.called = true; + assert(Runtime.dynamicAlloc); + self.alloc = Runtime.dynamicAlloc; + Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') }; + } + var ret = DYNAMICTOP; + if (bytes != 0) self.alloc(bytes); + return ret; // Previous break location. + } + + function _sysconf(name) { + // long sysconf(int name); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html + switch(name) { + case 30: return PAGE_SIZE; + case 132: + case 133: + case 12: + case 137: + case 138: + case 15: + case 235: + case 16: + case 17: + case 18: + case 19: + case 20: + case 149: + case 13: + case 10: + case 236: + case 153: + case 9: + case 21: + case 22: + case 159: + case 154: + case 14: + case 77: + case 78: + case 139: + case 80: + case 81: + case 79: + case 82: + case 68: + case 67: + case 164: + case 11: + case 29: + case 47: + case 48: + case 95: + case 52: + case 51: + case 46: + return 200809; + case 27: + case 246: + case 127: + case 128: + case 23: + case 24: + case 160: + case 161: + case 181: + case 182: + case 242: + case 183: + case 184: + case 243: + case 244: + case 245: + case 165: + case 178: + case 179: + case 49: + case 50: + case 168: + case 169: + case 175: + case 170: + case 171: + case 172: + case 97: + case 76: + case 32: + case 173: + case 35: + return -1; + case 176: + case 177: + case 7: + case 155: + case 8: + case 157: + case 125: + case 126: + case 92: + case 93: + case 129: + case 130: + case 131: + case 94: + case 91: + return 1; + case 74: + case 60: + case 69: + case 70: + case 4: + return 1024; + case 31: + case 42: + case 72: + return 32; + case 87: + case 26: + case 33: + return 2147483647; + case 34: + case 1: + return 47839; + case 38: + case 36: + return 99; + case 43: + case 37: + return 2048; + case 0: return 2097152; + case 3: return 65536; + case 28: return 32768; + case 44: return 32767; + case 75: return 16384; + case 39: return 1000; + case 89: return 700; + case 71: return 256; + case 40: return 255; + case 2: return 100; + case 180: return 64; + case 25: return 20; + case 5: return 16; + case 6: return 6; + case 73: return 4; + case 84: return 1; + } + ___setErrNo(ERRNO_CODES.EINVAL); + return -1; + } + + + function _copysign(a, b) { + return __reallyNegative(a) === __reallyNegative(b) ? a : -a; + }var _copysignl=_copysign; + + var _fmodl=_fmod; + + + + + + + +___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; +(function() {'use strict';function n(e){throw e;}var p=void 0,aa=this;function r(e,c){var d=e.split("."),b=aa;!(d[0]in b)&&b.execScript&&b.execScript("var "+d[0]);for(var a;d.length&&(a=d.shift());)!d.length&&c!==p?b[a]=c:b=b[a]?b[a]:b[a]={}};var u="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Uint32Array;new (u?Uint8Array:Array)(256);var v;for(v=0;256>v;++v)for(var w=v,ba=7,w=w>>>1;w;w>>>=1)--ba;function x(e,c,d){var b,a="number"===typeof c?c:c=0,f="number"===typeof d?d:e.length;b=-1;for(a=f&7;a--;++c)b=b>>>8^y[(b^e[c])&255];for(a=f>>3;a--;c+=8)b=b>>>8^y[(b^e[c])&255],b=b>>>8^y[(b^e[c+1])&255],b=b>>>8^y[(b^e[c+2])&255],b=b>>>8^y[(b^e[c+3])&255],b=b>>>8^y[(b^e[c+4])&255],b=b>>>8^y[(b^e[c+5])&255],b=b>>>8^y[(b^e[c+6])&255],b=b>>>8^y[(b^e[c+7])&255];return(b^4294967295)>>>0}var z=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918E3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],y=u?new Uint32Array(z):z;function A(){}A.prototype.getName=function(){return this.name};A.prototype.getData=function(){return this.data};A.prototype.G=function(){return this.H};r("Zlib.GunzipMember",A);r("Zlib.GunzipMember.prototype.getName",A.prototype.getName);r("Zlib.GunzipMember.prototype.getData",A.prototype.getData);r("Zlib.GunzipMember.prototype.getMtime",A.prototype.G);function C(e){var c=e.length,d=0,b=Number.POSITIVE_INFINITY,a,f,g,k,m,q,t,h,l;for(h=0;hd&&(d=e[h]),e[h]>=1;for(l=q;lE;E++)switch(!0){case 143>=E:D.push([E+48,8]);break;case 255>=E:D.push([E-144+400,9]);break;case 279>=E:D.push([E-256+0,7]);break;case 287>=E:D.push([E-280+192,8]);break;default:n("invalid literal: "+E)}var ca=function(){function e(a){switch(!0){case 3===a:return[257,a-3,0];case 4===a:return[258,a-4,0];case 5===a:return[259,a-5,0];case 6===a:return[260,a-6,0];case 7===a:return[261,a-7,0];case 8===a:return[262,a-8,0];case 9===a:return[263,a-9,0];case 10===a:return[264,a-10,0];case 12>=a:return[265,a-11,1];case 14>=a:return[266,a-13,1];case 16>=a:return[267,a-15,1];case 18>=a:return[268,a-17,1];case 22>=a:return[269,a-19,2];case 26>=a:return[270,a-23,2];case 30>=a:return[271,a-27,2];case 34>=a:return[272,a-31,2];case 42>=a:return[273,a-35,3];case 50>=a:return[274,a-43,3];case 58>=a:return[275,a-51,3];case 66>=a:return[276,a-59,3];case 82>=a:return[277,a-67,4];case 98>=a:return[278,a-83,4];case 114>=a:return[279,a-99,4];case 130>=a:return[280,a-115,4];case 162>=a:return[281,a-131,5];case 194>=a:return[282,a-163,5];case 226>=a:return[283,a-195,5];case 257>=a:return[284,a-227,5];case 258===a:return[285,a-258,0];default:n("invalid length: "+a)}}var c=[],d,b;for(d=3;258>=d;d++)b=e(d),c[d]=b[2]<<24|b[1]<<16|b[0];return c}();u&&new Uint32Array(ca);function G(e,c){this.i=[];this.j=32768;this.d=this.f=this.c=this.n=0;this.input=u?new Uint8Array(e):e;this.o=!1;this.k=H;this.w=!1;if(c||!(c={}))c.index&&(this.c=c.index),c.bufferSize&&(this.j=c.bufferSize),c.bufferType&&(this.k=c.bufferType),c.resize&&(this.w=c.resize);switch(this.k){case I:this.a=32768;this.b=new (u?Uint8Array:Array)(32768+this.j+258);break;case H:this.a=0;this.b=new (u?Uint8Array:Array)(this.j);this.e=this.D;this.q=this.A;this.l=this.C;break;default:n(Error("invalid inflate mode"))}}var I=0,H=1;G.prototype.g=function(){for(;!this.o;){var e=J(this,3);e&1&&(this.o=!0);e>>>=1;switch(e){case 0:var c=this.input,d=this.c,b=this.b,a=this.a,f=p,g=p,k=p,m=b.length,q=p;this.d=this.f=0;f=c[d++];f===p&&n(Error("invalid uncompressed block header: LEN (first byte)"));g=f;f=c[d++];f===p&&n(Error("invalid uncompressed block header: LEN (second byte)"));g|=f<<8;f=c[d++];f===p&&n(Error("invalid uncompressed block header: NLEN (first byte)"));k=f;f=c[d++];f===p&&n(Error("invalid uncompressed block header: NLEN (second byte)"));k|=f<<8;g===~k&&n(Error("invalid uncompressed block header: length verify"));d+g>c.length&&n(Error("input buffer is broken"));switch(this.k){case I:for(;a+g>b.length;){q=m-a;g-=q;if(u)b.set(c.subarray(d,d+q),a),a+=q,d+=q;else for(;q--;)b[a++]=c[d++];this.a=a;b=this.e();a=this.a}break;case H:for(;a+g>b.length;)b=this.e({t:2});break;default:n(Error("invalid inflate mode"))}if(u)b.set(c.subarray(d,d+g),a),a+=g,d+=g;else for(;g--;)b[a++]=c[d++];this.c=d;this.a=a;this.b=b;break;case 1:this.l(da,ea);break;case 2:fa(this);break;default:n(Error("unknown BTYPE: "+e))}}return this.q()};var K=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],L=u?new Uint16Array(K):K,N=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258],O=u?new Uint16Array(N):N,P=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0],Q=u?new Uint8Array(P):P,T=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],ga=u?new Uint16Array(T):T,ha=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],U=u?new Uint8Array(ha):ha,V=new (u?Uint8Array:Array)(288),W,ia;W=0;for(ia=V.length;W=W?8:255>=W?9:279>=W?7:8;var da=C(V),X=new (u?Uint8Array:Array)(30),Y,ja;Y=0;for(ja=X.length;Y>>c;e.d=b-c;e.c=f;return g}function Z(e,c){for(var d=e.f,b=e.d,a=e.input,f=e.c,g=c[0],k=c[1],m,q,t;b>>16;e.f=d>>t;e.d=b-t;e.c=f;return q&65535}function fa(e){function c(a,c,b){var d,e,f,g;for(g=0;gf)b>=a&&(this.a=b,d=this.e(),b=this.a),d[b++]=f;else{g=f-257;m=O[g];0=a&&(this.a=b,d=this.e(),b=this.a);for(;m--;)d[b]=d[b++-k]}for(;8<=this.d;)this.d-=8,this.c--;this.a=b};G.prototype.C=function(e,c){var d=this.b,b=this.a;this.r=e;for(var a=d.length,f,g,k,m;256!==(f=Z(this,e));)if(256>f)b>=a&&(d=this.e(),a=d.length),d[b++]=f;else{g=f-257;m=O[g];0a&&(d=this.e(),a=d.length);for(;m--;)d[b]=d[b++-k]}for(;8<=this.d;)this.d-=8,this.c--;this.a=b};G.prototype.e=function(){var e=new (u?Uint8Array:Array)(this.a-32768),c=this.a-32768,d,b,a=this.b;if(u)e.set(a.subarray(32768,e.length));else{d=0;for(b=e.length;dd;++d)a[d]=a[c+d];this.a=32768;return a};G.prototype.D=function(e){var c,d=this.input.length/this.c+1|0,b,a,f,g=this.input,k=this.b;e&&("number"===typeof e.t&&(d=e.t),"number"===typeof e.z&&(d+=e.z));2>d?(b=(g.length-this.c)/this.r[2],f=258*(b/2)|0,a=fc&&(this.b.length=c),e=this.b);return this.buffer=e};function $(e){this.input=e;this.c=0;this.m=[];this.s=!1}$.prototype.F=function(){this.s||this.g();return this.m.slice()};$.prototype.g=function(){for(var e=this.input.length;this.c>>0;x(a,p,p)!==t&&n(Error("invalid CRC-32 checksum: 0x"+x(a,p,p).toString(16)+" / 0x"+t.toString(16)));c.L=d=(h[l++]|h[l++]<<8|h[l++]<<16|h[l++]<<24)>>>0;(a.length&4294967295)!==d&&n(Error("invalid input size: "+(a.length&4294967295)+" / "+d));this.m.push(c);this.c=l}this.s=!0;var F=this.m,s,M,R=0,S=0,B;s=0;for(M=F.length;s>2]=1;e=20453244+(a*12|0)|0;f=c[e>>2]|0;c[e>>2]=f+1;do{if((f|0)==0){if((a|0)==335|(a|0)==175|(a|0)==129){break}c[7094374]=(c[7094374]|0)+1;g=4}else{g=4}}while(0);do{if((g|0)==4){if((c[5113718]|0)!=0&(a|0)==13){nt(143648,+((bt(143648)|0)==0|0));i=d;return}if((a|0)!=340){if(!((c[5113724]|0)!=0&(a|0)==27)){break}}Ol();c[7094374]=0;f=0;do{if(!((f|0)==335|(f|0)==175|(f|0)==129)){e=20453240+(f*12|0)|0;if((c[e>>2]|0)!=0){co(f,0)}c[e>>2]=0;c[20453244+(f*12|0)>>2]=0}f=f+1|0;}while((f|0)<341);i=d;return}}while(0);do{if((a|0)<128|(a|0)==178){if(!(((c[5759928]|0)!=0|(c[5720394]|0)==9)&(c[5114336]|0)==0)){g=18;break}if(!(+at(143448)==0.0)){g=18;break}kt(143176,28378656)}else{g=18}}while(0);do{if((g|0)==18){if((a|0)==27){break}$n(a,1,b);f=c[5114336]|0;if((f&1|0)!=0){Fn(a);i=d;return}if((f&2|0)!=0){e=c[236124]|0;if((e|0)==0){i=d;return}oD(e,3,(h=i,i=i+16|0,c[h>>2]=a,c[h+8>>2]=1,h)|0)|0;i=h;i=d;return}if((f&8|0)!=0){e=c[6924864]|0;if((e|0)==0){i=d;return}oD(e,6,(h=i,i=i+16|0,c[h>>2]=a,c[h+8>>2]=1,h)|0)|0;i=h;i=d;return}if((f&4|0)!=0){Hn(a);i=d;return}if((c[5720394]|0)!=1){i=d;return}Fn(a);i=d;return}}while(0);a=c[5114336]|0;if((a&4|0)!=0){Hn(27);i=d;return}if((a&8|0)!=0){b=a&-9;if((a|0)!=(b|0)){c[7094374]=0;g=0;do{if(!((g|0)==335|(g|0)==175|(g|0)==129)){f=20453240+(g*12|0)|0;if((c[f>>2]|0)!=0){co(g,0)}c[f>>2]=0;c[20453244+(g*12|0)>>2]=0}g=g+1|0;}while((g|0)<341)}c[5114336]=b;oD(c[6924864]|0,8,(h=i,i=i+8|0,c[h>>2]=0,h)|0)|0;i=h;i=d;return}if((a&2|0)!=0){oD(c[236124]|0,3,(h=i,i=i+16|0,c[h>>2]=27,c[h+8>>2]=1,h)|0)|0;i=h;i=d;return}a=c[5720394]|0;if(!((a|0)!=8|(c[5759928]|0)!=0)){oD(c[236124]|0,7,(h=i,i=i+8|0,c[h>>2]=2,h)|0)|0;i=h;i=d;return}if((a|0)==1){i=d;return}Ao();Ax();oD(c[236124]|0,7,(h=i,i=i+8|0,c[h>>2]=1,h)|0)|0;i=h;i=d;return}function bo(){var a=0,b=0;c[7094374]=0;a=0;do{if(!((a|0)==335|(a|0)==175|(a|0)==129)){b=20453240+(a*12|0)|0;if((c[b>>2]|0)!=0){co(a,0)}c[b>>2]=0;c[20453244+(a*12|0)>>2]=0}a=a+1|0;}while((a|0)<341);return}function co(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;c[20453244+(a*12|0)>>2]=0;c[20453240+(a*12|0)>>2]=0;if((a|0)==335|(a|0)==175|(a|0)==129){e=c[7094374]|0}else{f=(c[7094374]|0)-1|0;c[7094374]=f;e=f}if((e|0)<0){c[7094374]=0}if((a|0)==340){i=d;return}if((a|0)==27&(c[5113724]|0)!=0){i=d;return}$n(a,0,b);b=c[5114336]|0;e=c[236124]|0;if((b&2|0)!=0&(e|0)!=0){oD(e,3,(g=i,i=i+16|0,c[g>>2]=a,c[g+8>>2]=0,g)|0)|0;i=g;i=d;return}e=c[6924864]|0;if(!((b&8|0)!=0&(e|0)!=0)){i=d;return}oD(e,6,(g=i,i=i+16|0,c[g>>2]=a,c[g+8>>2]=0,g)|0)|0;i=g;i=d;return}function eo(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)==0){co(a,c);return}else{ao(a,c);return}}function fo(a){a=a|0;var b=0,d=0,e=0;b=i;if((a|0)==127){i=b;return}d=c[5114336]|0;if((d&1|0)!=0){Dn(20492144,a);i=b;return}if((d&2|0)!=0){oD(c[236124]|0,3,(e=i,i=i+16|0,c[e>>2]=a|1024,c[e+8>>2]=1,e)|0)|0;i=e;i=b;return}if((d&4|0)!=0){Dn(27699184,a);i=b;return}if((c[5720394]|0)!=1){i=b;return}Dn(20492144,a);i=b;return}function go(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=i;i=i+16|0;d=b|0;e=b+8|0;f=cu(142848,e,0)|0;c[5425942]=f;g=c[e>>2]|0;if((g|0)==0){Sr(142504,(h=i,i=i+8|0,c[h>>2]=142848,h)|0);i=h;i=b;return}do{if((f|0)<1025){j=fu(21703776,f,g)|0;if((j|0)!=(c[5425942]|0)){k=15;break}c[d>>2]=21703776;j=31;l=0;while(1){m=bC(d)|0;if((a[m]|0)==0){n=j;o=l;break}c[20462608+(j*268|0)>>2]=oj(m|0)|0;m=bC(d)|0;if((a[m]|0)==0){n=j;o=l;break}c[20462612+(j*268|0)>>2]=oj(m|0)|0;m=bC(d)|0;if((a[m]|0)==0){n=j;o=l;break}p=oj(m|0)|0;m=c[d>>2]|0;q=m+1|0;c[d>>2]=q;if(p>>>0>((o$(21703776)|0)+21703776-q|0)>>>0){k=10;break}m$(20462620+(j*268|0)|0,q|0,p)|0;a[20462620+(j*268|0)+p|0]=0;c[d>>2]=m+(p+1);p=l+1|0;m=j-1|0;if((j|0)>0){j=m;l=p}else{n=m;o=p;break}}if((k|0)==10){Tr(142336,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;n=j;o=l}s$(20462608,20462608+((n+1|0)*268|0)|0,o*268|0|0)|0;if((o|0)<32){p=o;do{Ns(20462608+(p*268|0)|0);p=p+1|0;}while((p|0)<32)}c[4939840]=o;c[5115650]=o}else{k=15}}while(0);if((k|0)==15){Sr(142504,(h=i,i=i+8|0,c[h>>2]=142848,h)|0);i=h}Yt(c[e>>2]|0);i=b;return}function ho(){c[5497074]=1;return}function io(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[5721690]|0;f=e-(c[5721691]|0)|0;g=(b|0)!=0;do{if(!(g&(f|0)>64)){if((f|0)>63&(g^1)){break}b=e+1|0;c[5721690]=b;TB(22886768+((b&63)<<10)|0,a,1024);i=d;return}}while(0);if((c[5458544]|0)==0){Ur(1,141040,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a}else{i=d;return}}function jo(){var a=0,b=0,d=0,e=0;a=i;i=i+8|0;b=a|0;if((c[5759927]|0)==0){Sr(175248,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=a;return}else{c[b>>2]=-1;e=b;gu(e,4,c[5759931]|0)|0;gu(e,4,c[5759931]|0)|0;Yt(c[5759931]|0);c[5759931]=0;c[5759927]=0;c[5759926]=0;Sr(148264,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=a;return}}function ko(){var a=0,b=0,d=0,e=0,f=0,g=0,h=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=i;i=i+20728|0;b=a+20480|0;d=a+20512|0;e=a+20520|0;f=a|0;g=a+4096|0;h=e;if((nr()|0)>2){Sr(119568,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=208;l=0;m=16384;n=0;o=4096;p=0;i=a;return}if((c[5759927]|0)!=0){if((c[5759926]|0)!=0){k=208;l=0;m=16384;n=0;o=4096;p=0;i=a;return}Sr(108776,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=208;l=0;m=16384;n=0;o=4096;p=0;i=a;return}if((c[5720394]|0)!=8){Sr(99432,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=208;l=0;m=16384;n=0;o=4096;p=0;i=a;return}do{if((aw(22885688)|0)!=0){if(+at(57456)!=0.0){break}Sr(50848,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}}while(0);if((nr()|0)==2){TB(21543848,or(1)|0,64);q=c[(c[5457224]|0)+32>>2]|0;$B(f,4096,45864,(j=i,i=i+24|0,c[j>>2]=21543848,c[j+8>>2]=185024,c[j+16>>2]=q,j)|0)|0;i=j}else{q=0;do{r=(q|0)/1e3|0;s=(r*-1e3|0)+q|0;t=(s|0)/100|0;u=s+(t*-100|0)|0;s=(u|0)/10|0;$B(21543848,64,130048,(j=i,i=i+32|0,c[j>>2]=r,c[j+8>>2]=t,c[j+16>>2]=s,c[j+24>>2]=u+(s*-10|0),j)|0)|0;i=j;s=c[(c[5457224]|0)+32>>2]|0;$B(f,4096,45864,(j=i,i=i+24|0,c[j>>2]=21543848,c[j+8>>2]=185024,c[j+16>>2]=s,j)|0)|0;i=j;q=q+1|0;}while((Ut(f)|0)!=0&(q|0)<1e4)}Sr(181192,(j=i,i=i+8|0,c[j>>2]=f,j)|0);i=j;q=Zt(f)|0;c[5759931]=q;if((q|0)==0){Sr(176408,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=208;l=0;m=16384;n=0;o=4096;p=0;i=a;return}c[5759927]=1;c[5759926]=+at(172976)!=0.0;TB(23039640,21543848,64);c[5759929]=1;hv(b,g,16384);kv(b);sv(b,c[5721690]|0);pv(b,2);sv(b,c[5738077]|0);g=0;do{j=c[23247696+(g<<2)>>2]|0;if((j|0)!=0){pv(b,3);rv(b,g);uv(b,23251792+j|0)}g=g+1|0;}while((g|0)<1024);n$(h|0,0,208)|0;h=0;do{g=23287176+(h*208|0)|0;if((c[g>>2]|0)!=0){pv(b,4);Gv(b,e,g,1)}h=h+1|0;}while((h|0)<1024);pv(b,8);sv(b,c[5720395]|0);sv(b,c[5721689]|0);pv(b,8);c[d>>2]=(c[5738076]|0)-1;h=d;gu(h,4,c[5759931]|0)|0;e=b+20|0;c[d>>2]=c[e>>2];gu(h,4,c[5759931]|0)|0;gu(c[b+12>>2]|0,c[e>>2]|0,c[5759931]|0)|0;k=208;l=0;m=16384;n=0;o=4096;p=0;i=a;return}function lo(){var b=0,e=0,f=0,g=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0.0,y=0.0;b=i;i=i+1024|0;e=b|0;f=c[5769186]|0;if((f|0)==0){mo(1);no();g=1024;j=0;i=b;return}if((c[f+32>>2]|0)==0){mo(1);no();g=1024;j=0;i=b;return}f=wf()|0;k=f-(c[5759933]|0)|0;if((k|0)<=0){mo(1);no();g=1024;j=0;i=b;return}f=c[5759932]|0;l=+(k|0);m=l/1.0e3;n=+(f|0)*1.0e3/l;o=c[5759936]|0;l=+(k|0)/+(f|0);k=c[5759937]|0;p=f-1|0;q=(p|0)>4096?4096:p;if((q|0)>0){r=0.0;p=0;do{r=r+ +(d[23039752+p|0]|0);p=p+1|0;}while((p|0)<(q|0));s=+(q|0);t=r/s;r=0.0;p=0;while(1){u=+((d[23039752+p|0]|0)>>>0)-t;v=r+u*u;w=p+1|0;if((w|0)<(q|0)){r=v;p=w}else{x=v;y=s;break}}}else{x=0.0;y=+(q|0)}s=+T(x/y);$B(e,1024,169816,(q=i,i=i+56|0,c[q>>2]=f,h[q+8>>3]=m,h[q+16>>3]=n,c[q+24>>2]=o,h[q+32>>3]=l,c[q+40>>2]=k,h[q+48>>3]=s,q)|0)|0;i=q;Sr(166448,(q=i,i=i+8|0,c[q>>2]=e,q)|0);i=q;k=c[5769184]|0;if((k|0)==0){mo(1);no();g=1024;j=0;i=b;return}o=c[k+4>>2]|0;if((a[o]|0)==0){mo(1);no();g=1024;j=0;i=b;return}k=(c[5759932]|0)-1|0;f=(k|0)>4096?4096:k;k=Zt(o)|0;if((k|0)==0){Sr(155272,(q=i,i=i+8|0,c[q>>2]=c[(c[5769184]|0)+4>>2],q)|0);i=q;mo(1);no();g=1024;j=0;i=b;return}hu(k,163200,(q=i,i=i+8|0,c[q>>2]=e,q)|0);i=q;if((f|0)>0){e=0;do{hu(k,160416,(q=i,i=i+8|0,c[q>>2]=d[23039752+e|0]|0,q)|0);i=q;e=e+1|0;}while((e|0)<(f|0))}Yt(k);Sr(157784,(q=i,i=i+8|0,c[q>>2]=c[(c[5769184]|0)+4>>2],q)|0);i=q;mo(1);no();g=1024;j=0;i=b;return}function mo(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d|0;f=d+8|0;g=c[5458838]|0;if((g|0)==0){i=d;return}if((c[g+32>>2]|0)==0){i=d;return}kt(126768,125520);if((c[5759927]|0)!=0){g=f;c[f>>2]=-1;gu(g,4,c[5759931]|0)|0;gu(g,4,c[5759931]|0)|0;Yt(c[5759931]|0);c[5759931]=0;c[5759927]=0;c[5759926]=0;Sr(148264,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}g=c[5757535]|0;if((g|0)!=0){Yt(g);c[5757535]=0}a[23034240]=0;a[23030144]=0;kt(124600,28378632);g=c[5759931]|0;if((g|0)!=0){Yt(g);c[5759931]=0}g=c[236124]|0;if(!((g|0)==0|(b|0)==0)){oD(g,7,(h=i,i=i+8|0,c[h>>2]=0,h)|0)|0;i=h}Il();Lx();if((c[5720394]|0)>>>0>4>>>0){g=c[5721690]|0;do{if((g-(c[5721691]|0)|0)>64){if((c[5458544]|0)!=0){break}Ur(1,141040,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}else{b=g+1|0;c[5721690]=b;TB(22886768+((b&63)<<10)|0,123720,1024)}}while(0);wn();wn();wn()}Pu(28378632,28378632);n$(23247128,0,1956976)|0;n$(22881576,0,195132)|0;c[5720394]=1;kt(122952,125520);c[5811764]=0;if((cq()|0)!=0){Sp();bq()|0}g=Wt(132216,e)|0;Yt(c[e>>2]|0);if((g|0)==2048){kt(140216,gv(132216,2048,0,0)|0);i=d;return}else{kt(140216,28378632);i=d;return}}function no(){var b=0,d=0,e=0,f=0,g=0;b=i;i=i+1024|0;d=b|0;e=d|0;TB(e,ct(134304)|0,1024);a[d+1023|0]=0;Tr(132800,(d=i,i=i+8|0,c[d>>2]=e,d)|0);i=d;if((a[e]|0)==0){f=1024;g=0;i=b;return}kt(134304,28378632);qr(e);qr(130576);tr();f=1024;g=0;i=b;return}function oo(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0;a=i;i=i+16424|0;b=a|0;d=a+16416|0;e=c[5759931]|0;if((e|0)==0){lo();f=16384;g=0;i=a;return}if((fu(d,4,e)|0)!=4){lo();f=16384;g=0;i=a;return}c[5738076]=c[d>>2];hv(b,a+32|0,16384);d=b+20|0;if((fu(d,4,c[5759931]|0)|0)!=4){lo();f=16384;g=0;i=a;return}e=c[d>>2]|0;if((e|0)==-1){lo();f=16384;g=0;i=a;return}if((e|0)>(c[b+16>>2]|0)){Ur(1,153272,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}j=fu(c[b+12>>2]|0,e,c[5759931]|0)|0;if((j|0)==(c[d>>2]|0)){c[5720397]=c[5497082];c[b+24>>2]=0;Ep(b);f=16384;g=0;i=a;return}else{Sr(151304,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;lo();f=16384;g=0;i=a;return}}function po(){var a=0;a=c[5720394]|0;if((c[5759928]|0)==0|a>>>0>6>>>0){return}a:do{if(a>>>0<6>>>0){while(1){oo();if((c[6924866]|0)!=0){break}if(!((c[5720394]|0)>>>0<6>>>0)){break a}}return}}while(0);c[5759930]=0;return}function qo(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+8192|0;d=b+4096|0;e=b|0;f=d|0;if((nr()|0)!=2){Sr(149e3,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;h=4096;j=0;k=4096;l=0;i=b;return}kt(146440,144096);m=or(1)|0;mo(1);n=ge(m|0,46)|0;a:do{if((n|0)==0){o=11}else{if((jC(n+1|0,185024,3)|0)!=0){o=11;break}p=oj(n+4|0)|0;q=0;while(1){r=c[30576+(q<<2)>>2]|0;s=(r|0)==0;if(s|(r|0)==(p|0)){break}else{q=q+1|0}}do{if(s){if((p|0)==(c[(c[5457224]|0)+32>>2]|0)){break}Sr(139128,(g=i,i=i+8|0,c[g>>2]=p,g)|0);i=g;q=n-m|0;r=q>>>0>4095>>>0?4095:q;TB(f,m,r+1|0);a[d+r|0]=0;ro(f,e);break a}}while(0);$B(e,4096,141400,(g=i,i=i+8|0,c[g>>2]=m,g)|0)|0;i=g;cu(e,23039724,1)|0}}while(0);if((o|0)==11){ro(m,e)}if((c[5759931]|0)==0){Ur(1,137216,(g=i,i=i+8|0,c[g>>2]=e,g)|0);i=g}TB(23039640,m,64);hm();c[5720394]=5;c[5759928]=1;TB(22881592,m,4096);m=c[5720394]|0;if((c[5759928]|0)==0|m>>>0>6>>>0){h=4096;j=0;k=4096;l=0;i=b;return}b:do{if(m>>>0<6>>>0){while(1){oo();if((c[6924866]|0)!=0){break}if(!((c[5720394]|0)>>>0<6>>>0)){break b}}h=4096;j=0;k=4096;l=0;i=b;return}}while(0);c[5759930]=0;h=4096;j=0;k=4096;l=0;i=b;return}function ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;c[5759931]=0;e=c[(c[5457224]|0)+32>>2]|0;$B(b,4096,45864,(f=i,i=i+24|0,c[f>>2]=a,c[f+8>>2]=185024,c[f+16>>2]=e,f)|0)|0;i=f;cu(b,23039724,1)|0;if((c[5759931]|0)!=0){Sr(131144,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;i=d;return}Sr(131e3,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;e=c[7644]|0;if((e|0)==0){i=d;return}else{g=0;h=e}while(1){e=(c[5457224]|0)+32|0;do{}while((h|0)==(c[e>>2]|0));$B(b,4096,45864,(f=i,i=i+24|0,c[f>>2]=a,c[f+8>>2]=185024,c[f+16>>2]=h,f)|0)|0;i=f;cu(b,23039724,1)|0;if((c[5759931]|0)!=0){break}Sr(131e3,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;e=g+1|0;j=c[30576+(e<<2)>>2]|0;if((j|0)==0){k=9;break}else{g=e;h=j}}if((k|0)==9){i=d;return}Sr(131144,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;i=d;return}function so(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+8|0;d=b|0;if((cq()|0)!=0){bq()|0}if((c[5759927]|0)!=0){e=d;c[d>>2]=-1;gu(e,4,c[5759931]|0)|0;gu(e,4,c[5759931]|0)|0;Yt(c[5759931]|0);c[5759931]=0;c[5759927]=0;c[5759926]=0;Sr(148264,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}Ix();rl();Vp();e=c[4917244]|0;d=(e|0)==0;do{if((a|0)==0){if(d){break}vk[e&511](0)}else{if(!d){vk[e&511](1)}n$(19668976,0,124)|0}}while(0);c[5497078]=0;c[5497079]=0;c[5497075]=0;c[5497077]=0;i=b;return}function to(){so(0);if((c[(c[5451068]|0)+32>>2]|0)==0){ms();lq();uo(0);return}else{ps();uo(0);return}}function uo(a){a=a|0;var b=0;b=c[5458838]|0;if((b|0)==0){return}if((c[b+32>>2]|0)==0){return}if((c[5497075]|0)==0){c[5497075]=1;vk[c[4917245]&511](22870084);c[5720354]=jk[c[4917248]&255](174448)|0;c[5720355]=jk[c[4917248]&255](174248)|0;c[5720356]=jk[c[4917248]&255](174040)|0;b=((c[5720347]|0)/8|0)-2|0;c[5174]=b;c[5123038]=b}if((a|0)!=0){return}if((c[5497076]|0)==0){c[5497076]=1;Rx()}if((c[5497077]|0)==0){c[5497077]=1;Jx()}if((c[5497078]|c[(c[5458548]|0)+32>>2]|0)!=0){return}c[5497078]=1;Wp();return}function vo(){if((c[(c[5458548]|0)+32>>2]|0)!=0){c[5720394]=1;In(1);return}if((c[(c[5458838]|0)+32>>2]|0)==0){return}hm();In(0);do{if((c[5720394]|0)>>>0>4>>>0){if((VB(22881592,129264)|0)!=0){break}c[5720394]=5;n$(22869028,0,1024)|0;n$(22885728,0,1024)|0;n$(23247696,0,20100)|0;c[5720396]=-9999;Sp();return}}while(0);kt(128184,28378632);mo(1);TB(22881592,129264,4096);c[5720394]=4;In(0);Sp();c[5721430]=-3e3;Uv(22881592,22885688,7)|0;wo();return}function wo(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;b=i;i=i+2048|0;d=b|0;e=b+1024|0;f=d|0;g=e|0;if((c[5759928]|0)!=0){h=1024;j=0;k=1024;l=0;i=b;return}m=c[5720394]|0;if((m-3|0)>>>0>1>>>0){h=1024;j=0;k=1024;l=0;i=b;return}n=c[5497082]|0;if((n-(c[5721430]|0)|0)<3e3){h=1024;j=0;k=1024;l=0;i=b;return}c[5721430]=n;c[5721431]=(c[5721431]|0)+1;if((m|0)==3){n=c[(c[5457508]|0)+4>>2]|0;$B(g,1024,47136,(o=i,i=i+16|0,c[o>>2]=c[5721688],c[o+8>>2]=n,o)|0)|0;i=o;Sv(0,22885688,166448,(o=i,i=i+8|0,c[o>>2]=g,o)|0);i=o;h=1024;j=0;k=1024;l=0;i=b;return}else if((m|0)==4){m=~~+at(46800);TB(f,Dt(2)|0,1024);n=pC(46048,(o=i,i=i+8|0,c[o>>2]=c[(c[5457224]|0)+32>>2],o)|0)|0;i=o;vC(f,46496,n);n=pC(46048,(o=i,i=i+8|0,c[o>>2]=m,o)|0)|0;i=o;vC(f,45440,n);n=pC(46048,(o=i,i=i+8|0,c[o>>2]=c[5721688],o)|0)|0;i=o;vC(f,45e3,n);n=e;c[n>>2]=1852731235;c[n+4>>2]=544498533;a[e+8|0]=34;n=a[f]|0;a:do{if(n<<24>>24==0){p=0}else{m=0;q=n;while(1){a[e+(m+9)|0]=q;r=m+1|0;if(!(r>>>0<(o$(f|0)|0)>>>0)){p=r;break a}m=r;q=a[d+r|0]|0}}}while(0);a[e+(p+9)|0]=34;d=p+10|0;a[e+d|0]=0;Tv(0,22885688,g,d);c[5389062]=c[5389062]&-3;h=1024;j=0;k=1024;l=0;i=b;return}else{Ur(0,44128,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o}}function xo(){n$(23247128|0,0|0,1956976|0)|0;return}function yo(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=or(0)|0;f=a[e]|0;if(f<<24>>24==45){i=d;return}if((c[5759928]|0)!=0|(c[5720394]|0)>>>0<5>>>0|f<<24>>24==43){Sr(122048,(g=i,i=i+8|0,c[g>>2]=e,g)|0);i=g;i=d;return}f=(nr()|0)>1;h=c[5721690]|0;j=(h-(c[5721691]|0)|0)>63;if(f){if(!j){f=h+1|0;c[5721690]=f;TB(22886768+((f&63)<<10)|0,b,1024);i=d;return}if((c[5458544]|0)==0){Ur(1,141040,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}else{i=d;return}}else{if(!j){j=h+1|0;c[5721690]=j;TB(22886768+((j&63)<<10)|0,e,1024);i=d;return}if((c[5458544]|0)==0){Ur(1,141040,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}else{i=d;return}}}function zo(){var a=0,b=0,d=0,e=0,f=0;a=i;if((c[5720394]|0)!=8|(c[5759928]|0)!=0){Sr(121168,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}if((nr()|0)<=1){i=a;return}d=xr()|0;e=c[5721690]|0;if((e-(c[5721691]|0)|0)<=63){f=e+1|0;c[5721690]=f;TB(22886768+((f&63)<<10)|0,d,1024);i=a;return}if((c[5458544]|0)==0){Ur(1,141040,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}else{i=a;return}}function Ao(){var a=0,b=0;a=i;Il();kt(120032,118640);b=c[5720394]|0;if((b|0)==9|(b|0)==1){i=a;return}else{Ur(3,117496,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a}}function Bo(){var b=0,d=0,e=0;b=i;if((a[23208720]|0)==0){i=b;return}kt(120032,118640);d=pC(116384,(e=i,i=i+8|0,c[e>>2]=23208720,e)|0)|0;i=e;qr(d);i=b;return}function Co(){var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+16|0;e=d|0;f=d+8|0;g=nr()|0;if((g-2|0)>>>0>1>>>0){Sr(114952,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;i=d;return}j=or(1)|0;if((g|0)==2){k=7;l=j}else{do{if((k$(j,113736)|0)==0){m=4}else{if((k$(or(1)|0,112808)|0)==0){m=5;break}Sr(111928,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;m=7}}while(0);k=m;l=or(2)|0}TB(23208720,xr()|0,4096);kt(120032,118640);a[22885728]=0;do{if((c[(c[5451068]|0)+32>>2]|0)!=0){if((k$(l,129264)|0)!=0){break}MA(111144)}}while(0);kt(146440,125520);WA(0);mo(1);hm();TB(22881592,l,4096);if((Uv(22881592,22885688,k)|0)==0){Sr(110416,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;c[5720394]=1;i=d;return}if((b[11442856]|0)==0){b[11442856]=YB(27960)|0}k=_v(22885688)|0;Sr(109136,(h=i,i=i+16|0,c[h>>2]=22881592,c[h+8>>2]=k,h)|0);i=h;do{if((c[(c[5811744]|0)+32>>2]|0)==0){h=Wt(132216,f)|0;Yt(c[f>>2]|0);if((h|0)==2048){kt(140216,gv(132216,2048,0,0)|0);break}else{kt(140216,28378632);break}}else{h=o$(k|0)|0;m=Wt(132216,e)|0;Yt(c[e>>2]|0);if((m|0)==2048){kt(140216,gv(132216,2048,k,h)|0);break}else{kt(140216,28378632);break}}}while(0);if((aw(22885688)|0)==0){c[5720394]=3;k=(v$()|0)<<16;e=k^(v$()|0);c[5721688]=e^(Bs()|0)}else{c[5720394]=4}In(0);c[5721430]=-99999;c[5721431]=0;kt(108064,l);i=d;return}function Do(){var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+1056|0;e=d|0;f=d+1024|0;g=e|0;if((c[(c[4917282]|0)+4>>2]|0)==0){Sr(107160,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=1024;k=0;i=d;return}c[e>>2]=-1;a[e+4|0]=0;XB(g,1024,106112);XB(g,1024,c[(c[4917282]|0)+4>>2]|0);XB(g,1024,105288);XB(g,1024,(Br()|0)+5|0);do{if((c[5720394]|0)>>>0>4>>>0){m$(f|0,23043864,32)|0}else{e=c[(c[4917284]|0)+4>>2]|0;if((a[e]|0)==0){Sr(104408,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=1024;k=0;i=d;return}else{Uv(e,f,7)|0;e=f+24|0;if((b[e>>1]|0)!=0){break}b[e>>1]=YB(27960)|0;break}}}while(0);Nv(0,(o$(g|0)|0)+1|0,g,f);j=1024;k=0;i=d;return}function Eo(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;a=i;i=i+1024|0;b=a|0;d=c[5817473]|0;e=Mu()|0;$B(b,1024,103472,(f=i,i=i+16|0,c[f>>2]=d,c[f+8>>2]=e,f)|0)|0;i=f;e=c[5721690]|0;if((e-(c[5721691]|0)|0)<=63){d=e+1|0;c[5721690]=d;TB(22886768+((d&63)<<10)|0,b,1024);g=1024;h=0;i=a;return}if((c[5458544]|0)==0){Ur(1,141040,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{g=1024;h=0;i=a;return}}function Fo(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=c[a>>2]|0;if((e|0)!=0){W_(e)}W_(a);c[6924866]=(c[6924866]|0)-1;if((b|0)!=0){i=d;return}if((c[(c[5451068]|0)+32>>2]|0)==0){ms()}else{ps()}Vp();rl();b=c[4917244]|0;if((b|0)!=0){vk[b&511](1)}n$(19668976,0,124)|0;b=c[5721690]|0;do{if((b-(c[5721691]|0)|0)>63){if((c[5458544]|0)!=0){break}Ur(1,141040,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a}else{a=b+1|0;c[5721690]=a;TB(22886768+((a&63)<<10)|0,102688,1024)}}while(0);Ou(6);c[5497075]=0;c[5497078]=0;c[5497079]=0;c[5497077]=0;kt(101760,118640);Go();uo(0);switch(c[5720394]|0){case 9:case 5:case 4:case 3:case 2:case 1:case 0:{i=d;return};default:{}}c[5497079]=1;tl();i=d;return}function Go(){var a=0,b=0,d=0,e=0;a=i;i=i+160|0;b=a|0;Sr(173800,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;c[b+52>>2]=130;c[b+56>>2]=96;c[b+60>>2]=34;c[b+64>>2]=130;c[b+68>>2]=172;c[b>>2]=66;c[b+4>>2]=84;c[b+8>>2]=6;c[b+24>>2]=84;c[b+28>>2]=280;c[b+12>>2]=76;c[b+16>>2]=6;c[b+20>>2]=270;c[b+72>>2]=88;c[b+76>>2]=312;c[b+84>>2]=18;c[b+88>>2]=230;c[b+100>>2]=106;c[b+96>>2]=276;c[b+92>>2]=22;c[b+80>>2]=122;c[b+104>>2]=76;c[b+32>>2]=28;c[b+36>>2]=166;c[b+40>>2]=10;c[b+44>>2]=4;c[b+48>>2]=24;c[b+108>>2]=20;c[b+112>>2]=4;c[b+116>>2]=132;c[b+120>>2]=116;c[b+124>>2]=182;c[b+128>>2]=74;c[b+132>>2]=408;c[b+136>>2]=4;c[b+140>>2]=162;c[b+144>>2]=376;c[b+148>>2]=126;c[b+152>>2]=24;e=aS(8,b)|0;Sr(173536,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;if((e|0)==0){Ur(0,173080,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}else{m$(19668976,e|0,124)|0;kt(101760,118640);i=a;return}}function Ho(){var a=0,b=0,d=0,e=0,f=0,h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;a=i;i=i+8|0;b=a|0;if((k$(or(1)|0,100920)|0)!=0){if((cq()|0)!=0){bq()|0}if((c[5759927]|0)!=0){d=b;c[b>>2]=-1;gu(d,4,c[5759931]|0)|0;gu(d,4,c[5759931]|0)|0;Yt(c[5759931]|0);c[5759931]=0;c[5759927]=0;c[5759926]=0;Sr(148264,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}Ax();d=c[5721689]|0;Wu(d,1,Pr(36,0)|0);i=a;return}vk[c[4917274]&511](22870084);d=c[5720357]|0;a:do{if((d|0)!=0){b=c[d+11304>>2]|0;f=c[d+11308>>2]|0;m$(d|0,22870084,11332)|0;h=+(b|0);j=h*.0015625;k=+(f|0);l=k*.0020833333333333333;if((b*480|0|0)>(f*640|0|0)){m=(h-k*1.3333333333333333)*.5}else{m=0.0}f=c[5720347]|0;k=+(f|0);h=k*.0015625;b=c[5720348]|0;n=+(b|0);o=n*.0020833333333333333;if((f*480|0|0)>(b*640|0|0)){p=(k-n*1.3333333333333333)*.5}else{p=0.0}b=c[5720374]|0;do{if((b|0)==0){f=c[5720357]|0;q=f+11460|0;r=f-61968|0;f=0;s=0;t=0;u=0;while(1){if((f|0)!=0){v=u;w=t;x=s;y=20;break}z=r;A=0;do{B=0;C=0;D=0;E=0;while(1){F=c[186944+(A*12|0)+(B<<2)>>2]|0;if((F|0)==1){G=z+(B<<2)|0;if(+S(+(+g[G>>2]-j))<.0010000000474974513){H=G;I=D;J=C}else{K=C;L=D;M=G;N=0;O=1;break}}else if((F|0)==3){G=z+(B<<2)|0;if(+S(+(+g[G>>2]-m))<.0010000000474974513){H=E;I=D;J=G}else{K=G;L=D;M=E;N=0;O=1;break}}else if((F|0)==2){F=z+(B<<2)|0;if(+S(+(+g[F>>2]-l))<.0010000000474974513){H=E;I=F;J=C}else{K=C;L=F;M=E;N=0;O=1;break}}else{H=E;I=D;J=C}F=B+1|0;if(F>>>0>2>>>0){K=J;L=I;M=H;N=1;O=0;break}else{B=F;C=J;D=I;E=H}}A=A+1|0;}while((A|0)<4&O);A=r+1|0;if((A|0)!=(q|0)&O){r=A;f=N;s=M;t=L;u=K}else{y=19;break}}if((y|0)==19){if(!O){v=K;w=L;x=M;y=20}}do{if((y|0)==20){if((x|0)!=0){c[5720358]=1;u=c[5720374]|0;c[22881436+(u<<3)>>2]=x;c[5720374]=u+1;Sr(99776,(e=i,i=i+8|0,c[e>>2]=x,e)|0);i=e}if((w|0)!=0){c[22881432+(c[5720374]<<3)>>2]=2;u=c[5720374]|0;c[22881436+(u<<3)>>2]=w;c[5720374]=u+1;Sr(92528,(e=i,i=i+8|0,c[e>>2]=w,e)|0);i=e}if((v|0)==0){break}c[22881432+(c[5720374]<<3)>>2]=3;u=c[5720374]|0;c[22881436+(u<<3)>>2]=v;c[5720374]=u+1;Sr(63912,(e=i,i=i+8|0,c[e>>2]=v,e)|0);i=e}}while(0);u=c[5720374]|0;if((u|0)!=0){P=u;break}Sr(61912,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;break a}else{P=b}}while(0);b=0;while(1){u=c[22881432+(b<<3)>>2]|0;if((u|0)==2){g[c[22881436+(b<<3)>>2]>>2]=o}else if((u|0)==1){g[c[22881436+(b<<3)>>2]>>2]=h}else if((u|0)==3){g[c[22881436+(b<<3)>>2]>>2]=p}else{break}b=b+1|0;if(!(b>>>0

>>0)){break a}}Ur(0,62784,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}}while(0);P=c[5720375]|0;if((P|0)==0){i=a;return}v=c[P+11304>>2]|0;w=c[P+11308>>2]|0;m$(P|0,22870084,11332)|0;p=+(v|0)/640.0;m=+(w|0)/480.0;h=+(c[5720347]|0)/640.0;o=+(c[5720348]|0)/480.0;w=c[5720393]|0;do{if((w|0)==0){v=c[5720375]|0;P=v+11460|0;x=c[5720376]|0;M=P>>>0>>0?x:P;P=v+11332|0;do{v=P+4|0;do{if(+S(+(+g[P>>2]-p))<.0010000000474974513){if(!(+S(+(+g[v>>2]-m))<.0010000000474974513)){Q=P;break}c[22881508+(c[5720393]<<3)>>2]=1;x=c[5720393]|0;c[22881512+(x<<3)>>2]=P;c[5720393]=x+1;Sr(61128,(e=i,i=i+8|0,c[e>>2]=P,e)|0);i=e;c[22881508+(c[5720393]<<3)>>2]=2;x=c[5720393]|0;c[22881512+(x<<3)>>2]=v;c[5720393]=x+1;Sr(60440,(e=i,i=i+8|0,c[e>>2]=v,e)|0);i=e;Q=P+3|0}else{Q=P}}while(0);P=Q+1|0;}while((P|0)!=(M|0));M=c[5720393]|0;if((M|0)!=0){R=M;break}Sr(59176,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=a;return}else{R=w}}while(0);w=0;while(1){Q=c[22881508+(w<<3)>>2]|0;if((Q|0)==2){g[c[22881512+(w<<3)>>2]>>2]=o}else if((Q|0)==1){g[c[22881512+(w<<3)>>2]>>2]=h}else{y=47;break}Q=w+1|0;if(Q>>>0>>0){w=Q}else{y=55;break}}if((y|0)==47){Ur(0,59768,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}else if((y|0)==55){i=a;return}}function Io(){Sx();c[5497076]=0;Ho();return}function Jo(){var a=0,b=0,d=0;a=i;b=Ju()|0;Sr(58624,(d=i,i=i+8|0,c[d>>2]=b,d)|0);i=d;i=a;return}function Ko(){var a=0,b=0,d=0;a=i;b=Nu()|0;Sr(57728,(d=i,i=i+8|0,c[d>>2]=b,d)|0);i=d;i=a;return}function Lo(){var a=0,b=0,d=0,e=0;a=i;if((c[5720394]|0)==8){b=0}else{Sr(121168,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=a;return}do{e=c[23247696+(b<<2)>>2]|0;if((e|0)!=0){Sr(56776,(d=i,i=i+16|0,c[d>>2]=b,c[d+8>>2]=23251792+e,d)|0);i=d}b=b+1|0;}while((b|0)<1024);i=a;return}function Mo(){var a=0,b=0;a=i;Sr(56048,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;Sr(55056,(b=i,i=i+8|0,c[b>>2]=c[5720394],b)|0);i=b;Sr(54352,(b=i,i=i+8|0,c[b>>2]=22881592,b)|0);i=b;Sr(53824,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;_r(Dt(2)|0);Sr(53352,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}function No(a,b){a=a|0;b=b|0;var d=0;b=i;d=c[a>>2]|0;if((d|0)!=0){W_(d)}W_(a);c[6924866]=(c[6924866]|0)-1;a=c[5721690]|0;if((a-(c[5721691]|0)|0)<=63){d=a+1|0;c[5721690]=d;TB(22886768+((d&63)<<10)|0,52912,1024);i=b;return}if((c[5458544]|0)==0){Ur(1,141040,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}else{i=b;return}}function Oo(){var a=0;if((c[5759909]|0)!=0){c[5759909]=0;a=c[5721689]|0;Uu(a,Pr(32,0)|0);return}c[5720394]=6;As()|0;if((c[5720394]|0)!=6){return}kt(126768,118640);so(0);if((c[(c[5451068]|0)+32>>2]|0)==0){ms();lq()}else{ps()}uo(0);c[5497079]=1;tl();return}function Po(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;Tr(52280,(e=i,i=i+16|0,c[e>>2]=a,c[e+8>>2]=b,e)|0);i=e;TB(23034240,a,4096);$B(23030144,4096,51816,(e=i,i=i+8|0,c[e>>2]=a,e)|0)|0;i=e;kt(124600,b);kt(51176,118640);kt(50320,118640);nt(49616,+(c[5497082]|0));c[5759650]=0;c[5759651]=0;a=pC(48864,(e=i,i=i+8|0,c[e>>2]=b,e)|0)|0;i=e;b=c[5721690]|0;if((b-(c[5721691]|0)|0)<=63){f=b+1|0;c[5721690]=f;TB(22886768+((f&63)<<10)|0,a,1024);i=d;return}if((c[5458544]|0)==0){Ur(1,141040,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}else{i=d;return}}function Qo(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;do{if((a[23034240]|0)!=0){d=Rt(ct(48384)|0,23034240,28378632)|0;a[d+((o$(d|0)|0)-1)|0]=0;if((pu(d)|0)!=0){break}Ur(1,47872,(e=i,i=i+8|0,c[e>>2]=23034240,e)|0);i=e}}while(0);a[23034240]=0;a[23030144]=0;kt(124600,28378632);d=a[23038612]|0;if((d<<24>>24|0)==64){f=23038613}else if((d<<24>>24|0)==0){Oo();i=b;return}else{f=23038612}d=sg(f|0,64)|0;if((d|0)==0){Oo();i=b;return}g=d+1|0;a[d]=0;h=sg(g|0,64)|0;if((h|0)==0){j=d+((o$(g|0)|0)+1)|0}else{a[h]=0;j=h+1|0}h=c[(c[5811778]|0)+32>>2]|0;if((h&4|0)!=0){Ur(1,47480,(e=i,i=i+8|0,c[e>>2]=h,e)|0);i=e}Po(g,f);c[5759909]=1;s$(23038612,j|0,(o$(j|0)|0)+1|0)|0;i=b;return}function Ro(){Oo();return}function So(e,f,g){e=e|0;f=f|0;g=g|0;var h=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;h=i;i=i+8192|0;j=h|0;Sr(43752,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;if((c[5502589]|0)==-1){c[5502589]=0;c[5678718]=0}l=c[f+12>>2]|0;m=l+(c[f+20>>2]|0)|0;f=(g|0)==0;a:do{if(f){g=l;while(1){if((a[g]|0)==92){n=g;break a}o=g+1|0;if(o>>>0>>0){g=o}else{n=o;break}}}else{g=l;while(1){o=a[g]|0;if((o<<24>>24|0)==92|(o<<24>>24|0)==47){n=g;break a}o=g+1|0;if(o>>>0>>0){g=o}else{n=o;break}}}}while(0);l=m;g=e+28|0;b:do{if(f){e=n;o=0;while(1){p=e+1|0;if(!(p>>>0>>0)){q=o;break b}if((a[e]|0)!=92){q=o;break b}if((l-p|0)>>>0<7>>>0){q=o;break b}a[j+(o<<5)+4|0]=a[p]|0;a[j+(o<<5)+5|0]=a[e+2|0]|0;a[j+(o<<5)+6|0]=a[e+3|0]|0;a[j+(o<<5)+7|0]=a[e+4|0]|0;c[j+(o<<5)>>2]=4;p=d[e+5|0]<<8;r=j+(o<<5)+24|0;b[r>>1]=p;s=e+7|0;t=p|d[e+6|0];b[r>>1]=t;b[r>>1]=YB(t)|0;t=a[s]|0;if(!((t<<24>>24|0)==92|(t<<24>>24|0)==47)){q=o;break b}t=o+1|0;if((o|0)>254){q=t;break}else{e=s;o=t}}}else{o=n;e=0;while(1){t=o+1|0;if(!(t>>>0>>0)){q=e;break b}s=a[o]|0;if((s<<24>>24|0)==47){if((l-t|0)>>>0<19>>>0){q=e;break b}a[j+(e<<5)+8|0]=a[t]|0;a[j+(e<<5)+9|0]=a[o+2|0]|0;a[j+(e<<5)+10|0]=a[o+3|0]|0;a[j+(e<<5)+11|0]=a[o+4|0]|0;a[j+(e<<5)+12|0]=a[o+5|0]|0;a[j+(e<<5)+13|0]=a[o+6|0]|0;a[j+(e<<5)+14|0]=a[o+7|0]|0;a[j+(e<<5)+15|0]=a[o+8|0]|0;a[j+(e<<5)+16|0]=a[o+9|0]|0;a[j+(e<<5)+17|0]=a[o+10|0]|0;a[j+(e<<5)+18|0]=a[o+11|0]|0;a[j+(e<<5)+19|0]=a[o+12|0]|0;a[j+(e<<5)+20|0]=a[o+13|0]|0;a[j+(e<<5)+21|0]=a[o+14|0]|0;a[j+(e<<5)+22|0]=a[o+15|0]|0;a[j+(e<<5)+23|0]=a[o+16|0]|0;c[j+(e<<5)>>2]=5;c[j+(e<<5)+28>>2]=c[g>>2];u=o+17|0}else if((s<<24>>24|0)==92){if((l-t|0)>>>0<7>>>0){q=e;break b}a[j+(e<<5)+4|0]=a[t]|0;a[j+(e<<5)+5|0]=a[o+2|0]|0;a[j+(e<<5)+6|0]=a[o+3|0]|0;a[j+(e<<5)+7|0]=a[o+4|0]|0;c[j+(e<<5)>>2]=4;u=o+5|0}else{q=e;break b}t=d[u]<<8;s=j+(e<<5)+24|0;b[s>>1]=t;r=u+2|0;p=t|d[u+1|0];b[s>>1]=p;b[s>>1]=YB(p)|0;p=a[r]|0;if(!((p<<24>>24|0)==92|(p<<24>>24|0)==47)){q=e;break b}p=e+1|0;if((e|0)>254){q=p;break}else{o=r;e=p}}}}while(0);u=c[5502589]|0;if((q|0)>0&(u|0)<4096){l=u;g=0;while(1){m=22010360+(l*172|0)|0;n=j+(g<<5)|0;c:do{if((l|0)>0){f=0;while(1){e=f+1|0;if(($v(22010360+(f*172|0)|0,n)|0)!=0){v=l;break c}if((e|0)<(l|0)){f=e}else{w=26;break}}}else{w=26}}while(0);if((w|0)==26){w=0;m$(m|0,n|0,32)|0;a[22010392+(l*172|0)|0]=0;a[22010424+(l*172|0)|0]=0;n$(22010496+(l*172|0)|0,0,16)|0;c[22010512+(l*172|0)>>2]=-1;a[22010456+(l*172|0)|0]=0;c[22010492+(l*172|0)>>2]=0;c[22010488+(l*172|0)>>2]=0;c[22010520+(l*172|0)>>2]=0;c[22010524+(l*172|0)>>2]=0;c[22010528+(l*172|0)>>2]=0;v=l+1|0}f=g+1|0;if((f|0)<(q|0)&(v|0)<4096){l=v;g=f}else{x=v;y=f;break}}}else{x=u;y=0}u=c[5678718]|0;if((x|0)>4095&(u|0)<4096&(y|0)<(q|0)){z=y;A=u}else{B=u;c[5502589]=x;C=B+x|0;Sr(43424,(k=i,i=i+16|0,c[k>>2]=q,c[k+8>>2]=C,k)|0);i=k;D=8192;E=0;i=h;return}while(1){c[5678718]=A+1;m$(22714876+(A<<5)|0,j+(z<<5)|0,32)|0;u=z+1|0;y=c[5678718]|0;if((u|0)<(q|0)&(y|0)<4096){z=u;A=y}else{B=y;break}}c[5502589]=x;C=B+x|0;Sr(43424,(k=i,i=i+16|0,c[k>>2]=q,c[k+8>>2]=C,k)|0);i=k;D=8192;E=0;i=h;return}function To(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;f=b;b=i;i=i+32|0;m$(b,f,32)|0;lv(d);xv(d)|0;Dr(Av(d)|0);f=or(0)|0;g=_v(b)|0;Tr(43128,(h=i,i=i+16|0,c[h>>2]=g,c[h+8>>2]=f,h)|0);i=h;if((VB(f,185960)|0)==0){if((c[5720394]|0)!=3){Tr(185688,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;i=e;return}g=or(2)|0;if((a[g]|0)==0){j=0}else{j=oj(g|0)|0}k=or(3)|0;do{if((a[k]|0)!=0){l=oj(k|0)|0;m=c[(c[5457224]|0)+32>>2]|0;if((l|0)==(m|0)){break}Sr(185160,(h=i,i=i+16|0,c[h>>2]=l,c[h+8>>2]=m,h)|0);i=h}}while(0);if((a[g]|0)!=0&(j|0)==(c[5721688]|0)){j=oj(or(1)|0)|0;c[5721688]=j;c[5720394]=4;c[5721431]=0;c[5721430]=-99999;m$(22885688,b|0,32)|0;Tr(184064,(h=i,i=i+8|0,c[h>>2]=j,h)|0);i=h;i=e;return}else{Sr(184512,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;i=e;return}}if((VB(f,183608)|0)==0){j=c[5720394]|0;if(j>>>0>4>>>0){Sr(183280,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;i=e;return}if((j|0)!=4){Sr(182840,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;i=e;return}if(($v(b,22885688)|0)==0){Sr(182544,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;i=e;return}j=or(1)|0;if((a[j]|0)==0){Sr(182312,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;i=e;return}g=oj(j|0)|0;if((g|0)==(c[5721688]|0)){g=~~+at(46800);Lv(0,23043856,b,g,c[5721688]|0,0);c[5720394]=5;c[5720396]=-9999;i=e;return}else{Sr(182064,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;i=e;return}}if((VB(f,181744)|0)==0){Uo(b,d);i=e;return}if((VB(f,181320)|0)==0){Vo(b,d);i=e;return}if((VB(f,180728)|0)==0){g=or(1)|0;Sv(0,b,166448,(h=i,i=i+8|0,c[h>>2]=g,h)|0);i=h;i=e;return}if((VB(f,180328)|0)==0){i=e;return}if((VB(f,179880)|0)==0){i=e;return}if((VB(f,179312)|0)==0){g=yv(d)|0;TB(22885728,g,1024);Sr(166448,(h=i,i=i+8|0,c[h>>2]=g,h)|0);i=h;i=e;return}if((kC(f,178816,18)|0)==0){So(b,d,0);i=e;return}if((kC(f,178424,21)|0)==0){So(b,d,1);i=e;return}else{Tr(177968,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;i=e;return}}function Uo(d,e){d=d|0;e=e|0;var f=0,g=0,h=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;f=i;i=i+1024|0;g=d;d=i;i=i+32|0;m$(d,g,32)|0;g=f|0;h=g|0;j=yv(e)|0;k=rC(j,139080)|0;do{if((a[k]|0)!=0){if((k$(k,c[(c[5457508]|0)+4>>2]|0)|0)!=0){break}l=oj(rC(j,46496)|0)|0;if((l|0)==(c[(c[5457224]|0)+32>>2]|0)){m=0}else{Tr(138304,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n;o=1024;p=0;i=f;return}a:while(1){l=23212832+(m*1064|0)|0;do{if((b[23212856+(m*1064|0)>>1]|0)!=0){q=23212868+(m*1064|0)|0;if((c[q>>2]|0)!=0){break}if(($v(d,l)|0)!=0){r=9;break a}}}while(0);l=m+1|0;if((l|0)<32){m=l}else{break}}if((r|0)==9){l=wf()|0;s=l-(c[23212864+(m*1064|0)>>2]|0)|0;c[q>>2]=s;l=Zv(d)|0;Tr(138216,(n=i,i=i+16|0,c[n>>2]=s,c[n+8>>2]=l,n)|0);i=n;l=23212872+(m*1064|0)|0;TB(l,j,1024);s=c[d>>2]|0;if((s|0)==5){t=2}else if((s|0)==3|(s|0)==4){t=1}else{t=0}s=pC(137944,(n=i,i=i+8|0,c[n>>2]=t,n)|0)|0;i=n;vC(l,138056,s);np(d,j,c[q>>2]|0);o=1024;p=0;i=f;return}if((c[5716992]|0)==0){u=0}else{o=1024;p=0;i=f;return}while(1){if((b[21988364+(u*172|0)>>1]|0)==0){v=u;break}s=u+1|0;if(($v(d,21988340+(u*172|0)|0)|0)!=0){r=24;break}if((s|0)<128){u=s}else{v=s;break}}if((r|0)==24){o=1024;p=0;i=f;return}if((v|0)==128){Tr(137872,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;o=1024;p=0;i=f;return}c[5497084]=v+1;m$(21988340+(v*172|0)|0,d|0,32)|0;a[21988372+(v*172|0)|0]=0;a[21988404+(v*172|0)|0]=0;n$(21988476+(v*172|0)|0,0,16)|0;c[21988492+(v*172|0)>>2]=-1;a[21988436+(v*172|0)|0]=0;c[21988472+(v*172|0)>>2]=0;c[21988468+(v*172|0)>>2]=0;c[21988500+(v*172|0)>>2]=0;c[21988504+(v*172|0)>>2]=0;c[21988508+(v*172|0)>>2]=0;TB(h,yv(e)|0,1024);if((a[h]|0)==0){o=1024;p=0;i=f;return}s=o$(h|0)|0;if((a[g+(s-1)|0]|0)!=10){l=g+s|0;z=10;a[l]=z;z=z>>8;a[l+1|0]=z}l=_v(d)|0;Sr(137792,(n=i,i=i+16|0,c[n>>2]=l,c[n+8>>2]=h,n)|0);i=n;o=1024;p=0;i=f;return}}while(0);Tr(138656,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n;o=1024;p=0;i=f;return}function Vo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+1040|0;f=b;b=i;i=i+32|0;m$(b,f,32)|0;f=e|0;g=e+1024|0;h=e+1032|0;j=f|0;k=0;while(1){l=23084992+(k*8244|0)|0;m=k+1|0;if(($v(b,l)|0)!=0){break}if((m|0)<16){k=m}else{n=27;break}}if((n|0)==27){o=1024;p=0;i=e;return}n=23076800+(k*8244|0)|0;if((n|0)==0){o=1024;p=0;i=e;return}m=Av(d)|0;q=n|0;$B(q,8192,166448,(n=i,i=i+8|0,c[n>>2]=m,n)|0)|0;i=n;r=23085036+(k*8244|0)|0;a:do{if((c[r>>2]|0)!=0){Sr(137240,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;s=a[m]|0;if(s<<24>>24==0){break}else{t=m;u=0;v=s}b:while(1){if((v<<24>>24|0)==0){break a}else if((v<<24>>24|0)==92){s=t+1|0;w=0;x=s;y=a[s]|0}else{w=0;x=t;y=v}while(1){if(y<<24>>24==0){z=w;A=x;break}s=w+1|0;a[f+w|0]=y;if((w|0)>1021){z=s;A=x;break}B=x+1|0;C=a[B]|0;if(C<<24>>24==92){z=s;A=B;break}else{w=s;x=B;y=C}}a[f+z|0]=0;do{if((u|0)==0){Sr(136880,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n;D=u+1|0}else{Sr(137168,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n;C=u+1|0;if((C|0)<2){D=C;break}C=a[A]|0;if(C<<24>>24==0){break a}else{t=A;u=0;v=C;continue b}}}while(0);t=A;u=D;v=a[A]|0}}}while(0);A=o$(q|0)|0;$B(23076800+(k*8244|0)+A|0,8192-A|0,136680,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0)|0;i=n;if((c[r>>2]|0)!=0){Sr(136608,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;Sr(136400,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}A=Av(d)|0;v=(a[A]|0)==0;D=o$(q|0)|0;u=23076800+(k*8244|0)+D|0;t=8192-D|0;if(v){E=u;F=t}else{v=A;A=0;D=u;u=t;while(1){$B(D,u,136352,(n=i,i=i+8|0,c[n>>2]=v,n)|0)|0;i=n;if((c[r>>2]|0)!=0){c[h>>2]=0;c[g>>2]=0;qi(v|0,136344,(n=i,i=i+16|0,c[n>>2]=g,c[n+8>>2]=h,n)|0)|0;i=n;t=sg(v|0,32)|0;if((t|0)==0){G=0}else{G=sg(t+1|0,32)|0}t=c[g>>2]|0;j=c[h>>2]|0;Sr(136176,(n=i,i=i+32|0,c[n>>2]=A,c[n+8>>2]=t,c[n+16>>2]=j,c[n+24>>2]=(G|0)==0?136208:G+1|0,n)|0);i=n}j=Av(d)|0;t=(a[j]|0)==0;z=o$(q|0)|0;f=23076800+(k*8244|0)+z|0;y=8192-z|0;if(t){E=f;F=y;break}else{v=j;A=A+1|0;D=f;u=y}}}$B(E,F,136680,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0)|0;i=n;c[23085024+(k*8244|0)>>2]=Bs()|0;m$(l|0,b|0,32)|0;c[23085032+(k*8244|0)>>2]=0;if((c[r>>2]|0)==0){o=1024;p=0;i=e;return}c[23085040+(k*8244|0)>>2]=1;o=1024;p=0;i=e;return}function Wo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+8|0;e=a;a=i;i=i+32|0;m$(a,e,32)|0;e=d|0;c[5720397]=c[5497082];f=b+20|0;g=c[f>>2]|0;do{if((g|0)>3){if(!((c[c[b+12>>2]>>2]|0)==-1)){break}To(a,b);i=d;return}}while(0);if((c[5720394]|0)>>>0<5>>>0){i=d;return}if((g|0)<4){g=_v(a)|0;Sr(177472,(h=i,i=i+8|0,c[h>>2]=g,h)|0);i=h;i=d;return}if(($v(a,23043864)|0)==0){g=_v(a)|0;Tr(177032,(h=i,i=i+8|0,c[h>>2]=g,h)|0);i=h;i=d;return}if((xp(23043856,b)|0)==0){i=d;return}h=c[b+24>>2]|0;g=b+12|0;c[5738076]=c[c[g>>2]>>2];c[5720397]=c[5497082];Ep(b);if((c[5759927]|0)==0|(c[5759929]|0)!=0){i=d;return}b=e;c[e>>2]=c[5738076];gu(b,4,c[5759931]|0)|0;a=(c[f>>2]|0)-h|0;c[e>>2]=a;gu(b,4,c[5759931]|0)|0;gu((c[g>>2]|0)+h|0,a,c[5759931]|0)|0;i=d;return}function Xo(){var a=0;a=c[5811720]|0;if((c[a+32>>2]|0)==0){return(c[a+20>>2]|0)!=0|0}else{return 1}return 0}function Yo(){var a=0,b=0,d=0,e=0,f=0;a=i;if((c[5720394]|0)>>>0<5>>>0){i=a;return}b=c[5811720]|0;if((c[b+32>>2]|0)!=0){i=a;return}if((c[b+20>>2]|0)!=0){i=a;return}b=c[5389062]|0;if((b&2|0)==0){i=a;return}c[5389062]=b&-3;b=Dt(2)|0;d=pC(176040,(e=i,i=i+8|0,c[e>>2]=b,e)|0)|0;i=e;b=c[5721690]|0;if((b-(c[5721691]|0)|0)<=63){f=b+1|0;c[5721690]=f;TB(22886768+((f&63)<<10)|0,d,1024);i=a;return}if((c[5458544]|0)==0){Ur(1,141040,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}else{i=a;return}}function Zo(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=i;i=i+4208|0;e=d|0;f=d+8|0;h=d+48|0;j=d+112|0;if((c[(c[5458838]|0)+32>>2]|0)==0){i=d;return}k=c[6924864]|0;do{if((k|0)!=0){if((rD(k)|0)==0){break}if((sD(c[6924864]|0)|0)==-559038737){i=d;return}if((c[5720394]|0)!=6){break}ul()}}while(0);do{if((c[5497074]|0)==0){if((c[5720394]|0)!=1){break}if(((Jn()|0)&2|0)!=0){break}if(!((c[(c[5451068]|0)+32>>2]|0)==0&(c[236124]|0)!=0)){break}Ax();oD(c[236124]|0,7,(l=i,i=i+8|0,c[l>>2]=1,l)|0)|0;i=l}else{c[5497074]=0;oD(c[236124]|0,7,(l=i,i=i+8|0,c[l>>2]=3,l)|0)|0;i=l}}while(0);do{if((cq()|0)==0){m=b}else{k=c[5811772]|0;if((c[k+32>>2]|0)==0|(b|0)==0){m=b;break}if((c[5720394]|0)!=8){if((c[(c[5811756]|0)+32>>2]|0)==0){m=b;break}}n=+g[k+28>>2]*+g[(c[5451064]|0)+28>>2];o=1.0e3/(n<1.0e3?n:1.0e3);n=+g[5760962]+(o>1.0?o:1.0);aq();k=~~n;g[5760962]=n- +(k|0);m=k}}while(0);do{if((c[(c[5811774]|0)+32>>2]|0)!=0){b=(c[5720394]|0)!=8;k=(c[5759927]|0)!=0;if(b|k|(c[5759928]|0)!=0){if(!(b&k)){break}k=e;c[e>>2]=-1;gu(k,4,c[5759931]|0)|0;gu(k,4,c[5759931]|0)|0;Yt(c[5759931]|0);c[5759931]=0;c[5759927]=0;c[5759926]=0;Sr(148264,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;break}k=h|0;b=j|0;cs(f)|0;p=(c[f+16>>2]|0)+1|0;q=c[f+12>>2]|0;r=c[f+8>>2]|0;s=c[f+4>>2]|0;t=c[f>>2]|0;u=pC(175688,(l=i,i=i+48|0,c[l>>2]=(c[f+20>>2]|0)+1900,c[l+8>>2]=p,c[l+16>>2]=q,c[l+24>>2]=r,c[l+32>>2]=s,c[l+40>>2]=t,l)|0)|0;i=l;TB(b,22881592,4096);t=sg(b|0,58)|0;if((t|0)!=0){a[t]=46}TB(k,QB(23267796)|0,64);SB(k,k,64);t=pC(174848,(l=i,i=i+24|0,c[l>>2]=u,c[l+8>>2]=b,c[l+16>>2]=k,l)|0)|0;i=l;rr(0,t);}}while(0);c[5497083]=m;c[5497081]=m;c[5497082]=(c[5497082]|0)+m;if((c[(c[5769182]|0)+32>>2]|0)!=0){Op(+(m|0)*.25)}Yo();m=c[5811720]|0;do{if((c[m+32>>2]|0)==0){if((c[m+20>>2]|0)!=0){v=29;break}switch(c[5720394]|0){case 9:case 4:case 3:case 2:case 1:case 0:{v=35;break};default:{v=32}}}else{v=29}}while(0);do{if((v|0)==29){if((c[(c[453916]|0)+32>>2]|0)!=0){v=35;break}switch(c[5720394]|0){case 9:case 4:case 3:case 2:case 1:case 0:{v=35;break};default:{v=32}}}}while(0);do{if((v|0)==32){if(!(+((c[5497082]|0)-(c[5720397]|0)|0)>+g[(c[5769180]|0)+28>>2]*1.0e3)){v=35;break}m=c[5811782]|0;c[5811782]=m+1;if((m|0)<=4){break}Sr(176600,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;mo(1)}}while(0);if((v|0)==35){c[5811782]=0}xn();wo();yl();Sp();Hx();Jl();dm();c[5497080]=(c[5497080]|0)+1;i=d;return}function _o(a){a=a|0;return fs(a,3)|0}function $o(){var a=0.0;a=+(wf()|0);return~~(a*+g[(c[5451064]|0)+28>>2])|0}function ap(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+4112|0;f=e|0;g=e+16|0;h=f;c[h>>2]=d;c[h+4>>2]=0;Xe(g|0,4096,b|0,f|0)|0;if((a|0)==1){Tr(131200,(j=i,i=i+8|0,c[j>>2]=g,j)|0);i=j}else if((a|0)==0){Sr(166448,(j=i,i=i+8|0,c[j>>2]=g,j)|0);i=j}else if((a|0)==2){Sr(131304,(j=i,i=i+8|0,c[j>>2]=g,j)|0);i=j}i=e;return}function bp(){var b=0,d=0,e=0,f=0,g=0,h=0;b=i;i=i+256|0;d=b|0;e=or(1)|0;if((a[e]|0)==0){dt(172680,d,256);Sr(171728,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f;g=256;h=0;i=b;return}else{kt(172680,e);kt(172184,e);g=256;h=0;i=b;return}}function cp(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;a=i;i=i+4096|0;b=a|0;if((c[5759928]|0)==0){Sr(171384,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;e=4096;f=0;i=a;return}do{if((nr()|0)==2){g=or(1)|0;$B(b,4096,171152,(d=i,i=i+8|0,c[d>>2]=g,d)|0)|0;i=d}else{g=0;while(1){h=(g|0)/1e3|0;j=(h*-1e3|0)+g|0;k=(j|0)/100|0;l=j+(k*-100|0)|0;j=(l|0)/10|0;$B(b,4096,170968,(d=i,i=i+32|0,c[d>>2]=h,c[d+8>>2]=k,c[d+16>>2]=j,c[d+24>>2]=l+(j*-10|0),d)|0)|0;i=d;j=g+1|0;if((Ut(b)|0)==0){m=7;break}if((j|0)<1e4){g=j}else{break}}if((m|0)==7){if((g|0)<=9999){break}}Sr(170752,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;e=4096;f=0;i=a;return}}while(0);Zp(b)|0;e=4096;f=0;i=a;return}function dp(){bq()|0;return}function ep(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;a=i;i=i+2064|0;b=a+2048|0;d=a+2056|0;Sr(170536,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;Zl();if((c[5457512]|0)==0){n$(23247128,0,1956976)|0;c[5720394]=1}c[5497082]=0;yn();c[5811726]=gt(170384,118640,0)|0;c[5769180]=gt(170032,169480,0)|0;c[5769188]=gt(169224,118640,256)|0;c[5769190]=gt(168920,118640,256)|0;c[5769194]=gt(168544,118640,256)|0;c[5769192]=gt(168136,118640,256)|0;c[5811752]=gt(167984,118640,256)|0;c[4917282]=gt(167656,28378632,256)|0;c[5811780]=gt(167512,28378632,256)|0;c[5769186]=gt(167288,118640,0)|0;c[5769184]=gt(166560,28378632,1)|0;c[5811774]=gt(166064,118640,1)|0;c[5811772]=gt(165736,165432,1)|0;c[5811770]=gt(165144,125520,1)|0;c[5811756]=gt(164808,118640,0)|0;c[4917284]=gt(164392,28378632,0)|0;c[5769178]=gt(164184,164072,1)|0;c[5803206]=gt(163712,164072,1)|0;c[5811776]=gt(163296,162872,0)|0;c[5811738]=gt(162544,162312,1)|0;c[5811722]=gt(162032,125520,1)|0;c[5802178]=gt(161808,125520,1)|0;c[5802176]=gt(161544,161392,1)|0;c[5811734]=gt(161184,118640,1)|0;c[5811754]=gt(160976,125520,1)|0;c[5811730]=gt(160544,118640,1)|0;f=gt(160104,161392,1)|0;c[5811732]=f;Gt(f,.0010000000474974513,5.0e4,0);c[5769196]=gt(159800,118640,0)|0;c[5811778]=gt(159304,118640,1)|0;c[5811768]=gt(158976,118640,0)|0;c[5811742]=gt(158792,125520,1)|0;c[5769198]=gt(158680,158520,0)|0;gt(158400,125520,1)|0;c[4954642]=gt(158296,157920,1)|0;c[4954638]=gt(157464,157920,1)|0;c[4954644]=gt(157136,156944,1)|0;c[4954640]=gt(156560,156944,1)|0;c[4954646]=gt(156384,118640,1)|0;c[5114352]=gt(156224,157920,1)|0;c[5114340]=gt(156032,155952,1)|0;c[5114356]=gt(155704,155424,1)|0;c[5114348]=gt(155e3,156944,1)|0;c[5114344]=gt(154832,125520,1)|0;c[5114350]=gt(154600,154424,1)|0;c[5114338]=gt(154192,154088,1)|0;c[5114354]=gt(153992,125520,1)|0;c[5114346]=gt(153840,118640,1)|0;c[5114342]=gt(153712,144096,1)|0;Gt(c[5114350]|0,0.0,15.0,1);Gt(c[5114338]|0,0.0,15.0,1);Gt(c[5114354]|0,0.0,15.0,1);Gt(c[5114346]|0,0.0,15.0,1);Gt(c[5114342]|0,0.0,15.0,1);c[5811736]=gt(153376,28378632,64)|0;gt(153024,152864,1)|0;c[5811740]=gt(152656,125520,1)|0;c[5811744]=gt(152472,125520,1)|0;c[5811762]=gt(152376,152264,1)|0;gt(152104,151992,3)|0;c[5803204]=gt(151832,151480,3)|0;gt(151e3,150712,3)|0;gt(172680,150464,3)|0;gt(172184,150464,3)|0;gt(150200,150072,3)|0;gt(149928,149784,3)|0;gt(149576,149448,5)|0;gt(149088,148720,5)|0;gt(148512,154088,3)|0;gt(148296,161392,3)|0;gt(147944,147736,3)|0;gt(147576,118640,2)|0;gt(147400,147184,3)|0;gt(146880,118640,3)|0;gt(146536,28378632,2)|0;gt(146184,125520,3)|0;gt(145944,147736,1)|0;gt(145624,118640,64)|0;Gr(145400,242);Gr(145216,82);Gr(145096,12);Gr(144848,40);Gr(144688,6);Gr(123720,24);Gr(144480,282);Gr(144152,102);Hr(144152,98);Gr(143752,388);Gr(143560,374);Gr(143328,88);Gr(142904,86);Gr(142576,190);Gr(142408,114);Gr(142200,134);Hr(142200,20);Gr(142128,84);Gr(141912,108);Gr(141432,322);Gr(141144,298);Gr(140968,288);Gr(172680,382);Gr(140832,70);Gr(140744,244);Go();Qp();kt(140536,125520);f=a|0;g=Wt(132216,b)|0;Yt(c[b>>2]|0);do{if((g|0)==2048){Sr(132152,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}else{if((g|0)>0){Sr(132112,(e=i,i=i+8|0,c[e>>2]=2048,e)|0);i=e}Sr(131984,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;Ws(f,2048);h=Vt(132216)|0;c[b>>2]=h;if((h|0)==0){Sr(131800,(e=i,i=i+8|0,c[e>>2]=132216,e)|0);i=e;break}else{gu(f,2048,h)|0;Yt(c[b>>2]|0);Sr(131600,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;break}}}while(0);gt(140216,28378632,66)|0;b=Wt(132216,d)|0;Yt(c[d>>2]|0);if((b|0)==2048){kt(140216,gv(132216,2048,0,0)|0);j=4;k=0;Sr(139928,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=a;return}else{kt(140216,28378632);j=4;k=0;Sr(139928,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=a;return}}function fp(a,b){a=a|0;b=b|0;var d=0,e=0;a=i;i=i+16|0;if((b|0)!=2){i=a;return}b=a|0;d=c[(c[5457224]|0)+32>>2]|0;$B(b,16,131496,(e=i,i=i+16|0,c[e>>2]=185024,c[e+8>>2]=d,e)|0)|0;i=e;Ss(131424,b,1,1);i=a;return}function gp(){var a=0,d=0,e=0,f=0,g=0;a=i;i=i+32|0;d=a|0;Sr(135952,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;c[5497084]=0;c[5716992]=0;e=0;do{f=21988496+(e*172|0)|0;g=c[f>>2]|0;n$(21988340+(e*172|0)|0,0,172)|0;c[f>>2]=g;e=e+1|0;}while((e|0)<128);n$(d|0,0,32)|0;e=d+24|0;g=d|0;b[e>>1]=YB(27960)|0;c[g>>2]=3;Nv(0,15,135736,d);c[g>>2]=6;Nv(0,15,135736,d);b[e>>1]=YB(27961)|0;c[g>>2]=3;Nv(0,15,135736,d);c[g>>2]=6;Nv(0,15,135736,d);b[e>>1]=YB(27962)|0;c[g>>2]=3;Nv(0,15,135736,d);c[g>>2]=6;Nv(0,15,135736,d);b[e>>1]=YB(27963)|0;c[g>>2]=3;Nv(0,15,135736,d);c[g>>2]=6;Nv(0,15,135736,d);b[e>>1]=YB(27960)|0;c[g>>2]=3;Nv(0,15,135736,d);c[g>>2]=6;Nv(0,15,135736,d);b[e>>1]=YB(27961)|0;c[g>>2]=3;Nv(0,15,135736,d);c[g>>2]=6;Nv(0,15,135736,d);b[e>>1]=YB(27962)|0;c[g>>2]=3;Nv(0,15,135736,d);c[g>>2]=6;Nv(0,15,135736,d);b[e>>1]=YB(27963)|0;c[g>>2]=3;Nv(0,15,135736,d);c[g>>2]=6;Nv(0,15,135736,d);i=a;return}function hp(){var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;i=i+1056|0;e=d|0;f=d+32|0;g=nr()|0;do{if((g|0)>=3){h=oj(or(1)|0)|0;if(h>>>0>4>>>0){break}fe(f|0,135232,(j=i,i=i+8|0,c[j>>2]=h+1,j)|0)|0;i=j;h=ct(f)|0;if((a[h]|0)==0){Sr(135120,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=1024;l=0;i=d;return}m=Uv(h,e,7)|0;if((m|0)==0){Sr(134944,(j=i,i=i+8|0,c[j>>2]=h,j)|0);i=j;k=1024;l=0;i=d;return}else if((m|0)==2){b[e+24>>1]=YB(27950)|0}Sr(134864,(j=i,i=i+8|0,c[j>>2]=h,j)|0);i=j;c[5502589]=-1;c[5716992]=2;do{if(((c[e>>2]|0)-5|0)>>>0<2>>>0){h=((bt(134848)|0)&1|0)==0;m=c[(c[5457508]|0)+4>>2]|0;n=or(2)|0;if(h){$B(f,1024,134720,(j=i,i=i+16|0,c[j>>2]=m,c[j+8>>2]=n,j)|0)|0;i=j;break}else{$B(f,1024,134752,(j=i,i=i+16|0,c[j>>2]=m,c[j+8>>2]=n,j)|0)|0;i=j;break}}else{if((VB(c[(c[5457508]|0)+4>>2]|0,134504)|0)==0){n=or(2)|0;$B(f,1024,134288,(j=i,i=i+8|0,c[j>>2]=n,j)|0)|0;i=j;break}else{n=c[(c[5457508]|0)+4>>2]|0;m=or(2)|0;$B(f,1024,134024,(j=i,i=i+16|0,c[j>>2]=n,c[j+8>>2]=m,j)|0)|0;i=j;break}}}while(0);if((g|0)>3){m=3;do{XB(f,1024,105288);XB(f,1024,or(m)|0);m=m+1|0;}while((m|0)<(g|0))}Sv(1,e,166448,(j=i,i=i+8|0,c[j>>2]=f,j)|0);i=j;k=1024;l=0;i=d;return}}while(0);Sr(135432,(j=i,i=i+8|0,c[j>>2]=4,j)|0);i=j;k=1024;l=0;i=d;return}function ip(a,b){a=a|0;b=b|0;if((b|0)!=2){return}b=yC(a,1,105288)|0;if(!(b>>>0>a>>>0)){return}Ts(b,1,1);return}function jp(){var a=0,d=0,e=0,f=0,g=0,h=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;i=i+32|0;d=a|0;e=nr()|0;if((e-2|0)>>>0>1>>>0){Sr(133640,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=a;return}g=or(1)|0;if((e|0)==2){h=7;j=g}else{do{if((k$(g,113736)|0)==0){k=4}else{if((k$(or(1)|0,112808)|0)==0){k=5;break}Sr(111928,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;k=7}}while(0);h=k;j=or(2)|0}k=d;n$(k|0,0,32)|0;if((Uv(j,d,h)|0)==0){i=a;return}else{l=23212832;m=0}while(1){n=l+24|0;if((b[n>>1]|0)==0){o=13;break}h=c[l+36>>2]|0;if((h|0)==0){j=wf()|0;if((j-(c[l+32>>2]|0)|0)>=500){o=13;break}}else{if((h|0)>=500){o=13;break}}h=m+1|0;if((h|0)<32){l=l+1064|0;m=h}else{p=23212832;q=23212832;r=-2147483648;s=0;o=15;break}}if((o|0)==13){b[n>>1]=0;t=l}else if((o|0)==15){while(1){o=0;l=wf()|0;n=l-(c[p+32>>2]|0)|0;l=(n|0)>(r|0);m=l?p:q;h=s+1|0;if((h|0)<32){p=p+1064|0;q=m;r=l?n:r;s=h;o=15}else{t=m;break}}}m$(t|0,k|0,32)|0;c[t+32>>2]=wf()|0;c[t+36>>2]=0;np(t|0,0,0);Sv(0,d,133536,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=a;return}function kp(){var a=0,b=0,d=0,e=0,f=0,g=0,h=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=i;i=i+64|0;b=a|0;d=a+32|0;e=nr()|0;do{if((e-2|0)>>>0>1>>>0){if(!((c[5720394]|0)!=8|(c[5759928]|0)!=0)){f=22885688;break}Sr(121168,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;Sr(133344,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;i=a;return}else{n$(d|0,0,32)|0;h=or(1)|0;if((e|0)==2){j=7;k=h}else{do{if((k$(h,113736)|0)==0){l=4}else{if((k$(or(1)|0,112808)|0)==0){l=5;break}Sr(111928,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;l=7}}while(0);j=l;k=or(2)|0}if((Uv(k,d,j)|0)!=0){f=d;break}i=a;return}}while(0);Sv(0,f,137744,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;g=f;m$(b|0,g|0,32)|0;f=0;while(1){d=f+1|0;if(($v(b,23084992+(f*8244|0)|0)|0)!=0){m=13;break}if((d|0)<16){f=d}else{n=0;m=15;break}}do{if((m|0)==13){o=23076800+(f*8244|0)|0}else if((m|0)==15){while(1){m=0;b=n+1|0;if((c[23085040+(n*8244|0)>>2]|0)!=0){m=16;break}if((b|0)<16){n=b;m=15}else{p=0;q=-1;r=0;s=1;break}}if((m|0)==16){o=23076800+(n*8244|0)|0;break}while(1){b=c[23085028+(p*8244|0)>>2]|0;d=s|(b|0)<(r|0);t=d?p:q;j=p+1|0;u=(t|0)==-1;if((j|0)<16){p=j;q=t;r=d?b:r;s=u}else{break}}if(u){b=(c[542752]|0)+1|0;c[542752]=b;o=23076800+((b&15)*8244|0)|0;break}else{o=23076800+(t*8244|0)|0;break}}}while(0);m$(o+8192|0,g|0,32)|0;c[o+8236>>2]=1;c[o+8232>>2]=1;i=a;return}function lp(){ew();return}function mp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;e=i;f=c[5458838]|0;if((f|0)==0){i=e;return}if((c[f+32>>2]|0)==0){i=e;return}Sr(139792,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;if(a[186992]|0){Sr(139712,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=e;return}a[186992]=1;if((d|0)!=0){mo(1)}so(1);if((c[(c[5451068]|0)+32>>2]|0)==0){ms();lq()}else{ps()}Sx();c[5497076]=0;Ir(145400);Ir(145216);Ir(145096);Ir(144848);Ir(144688);Ir(123720);Ir(144480);Ir(144152);Ir(143752);Ir(143560);Ir(143328);Ir(142904);Ir(142576);Ir(142408);Ir(142200);Ir(142128);Ir(141912);Ir(141432);Ir(141144);Ir(140968);Ir(172680);Ir(140832);Ir(140744);zn();_l();kt(140536,118640);a[186992]=0;n$(21988296,0,893280)|0;In(0);Sr(139384,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=e;return}function np(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=i;e=a;a=i;i=i+32|0;m$(a,e,32)|0;e=0;while(1){f=21988340+(e*172|0)|0;if(($v(a,f|0)|0)!=0){vp(f,b,c)}f=e+1|0;if((f|0)<128){e=f}else{g=0;break}}while(1){e=22010360+(g*172|0)|0;if(($v(a,e|0)|0)!=0){vp(e,b,c)}e=g+1|0;if((e|0)<4096){g=e}else{h=0;break}}do{g=22845952+(h*172|0)|0;if(($v(a,g|0)|0)!=0){vp(g,b,c)}h=h+1|0;}while((h|0)<128);i=d;return}function op(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=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=i;i=i+64|0;g=f|0;h=f+32|0;if((a|0)==0){b[11542508]=0;c[5771260]=1;b[11546630]=0;c[5773321]=1;b[11550752]=0;c[5775382]=1;b[11554874]=0;c[5777443]=1;b[11558996]=0;c[5779504]=1;b[11563118]=0;c[5781565]=1;b[11567240]=0;c[5783626]=1;b[11571362]=0;c[5785687]=1;b[11575484]=0;c[5787748]=1;b[11579606]=0;c[5789809]=1;b[11583728]=0;c[5791870]=1;b[11587850]=0;c[5793931]=1;b[11591972]=0;c[5795992]=1;b[11596094]=0;c[5798053]=1;b[11600216]=0;c[5800114]=1;b[11604338]=0;c[5802175]=1;j=0;i=f;return j|0}if((Uv(a,h,7)|0)==0){j=0;i=f;return j|0}a=h;m$(g|0,a|0,32)|0;k=0;while(1){l=k+1|0;if(($v(g,23084992+(k*8244|0)|0)|0)!=0){m=7;break}if((l|0)<16){k=l}else{n=0;m=9;break}}do{if((m|0)==7){o=23076800+(k*8244|0)|0}else if((m|0)==9){while(1){m=0;g=n+1|0;if((c[23085040+(n*8244|0)>>2]|0)!=0){m=10;break}if((g|0)<16){n=g;m=9}else{p=0;q=-1;r=0;s=1;break}}if((m|0)==10){o=23076800+(n*8244|0)|0;break}while(1){g=c[23085028+(p*8244|0)>>2]|0;l=s|(g|0)<(r|0);t=l?p:q;u=p+1|0;v=(t|0)==-1;if((u|0)<16){p=u;q=t;r=l?g:r;s=v}else{break}}if(v){g=(c[542752]|0)+1|0;c[542752]=g;o=23076800+((g&15)*8244|0)|0;break}else{o=23076800+(t*8244|0)|0;break}}}while(0);if((d|0)==0){c[o+8240>>2]=1;j=0;i=f;return j|0}t=o+8192|0;if(($v(h,t)|0)==0){v=o+8240|0;if((c[v>>2]|0)==0){j=0;i=f;return j|0}m$(t|0,a|0,32)|0;c[o+8236>>2]=0;c[o+8232>>2]=1;c[v>>2]=0;c[o+8228>>2]=Bs()|0;c[o+8224>>2]=0;Sv(0,h,137744,(w=i,i=i+1|0,i=i+7&-8,c[w>>2]=0,w)|0);i=w;j=0;i=f;return j|0}v=o+8232|0;if((c[v>>2]|0)==0){TB(d,o|0,e);c[o+8240>>2]=1;c[o+8228>>2]=0;j=1;i=f;return j|0}e=o+8228|0;d=c[e>>2]|0;a=Bs()|0;if((d|0)>=(a-(c[(c[5769198]|0)+32>>2]|0)|0)){j=0;i=f;return j|0}c[o+8236>>2]=0;c[v>>2]=1;c[o+8240>>2]=0;c[o+8224>>2]=0;c[e>>2]=Bs()|0;Sv(0,h,137744,(w=i,i=i+1|0,i=i+7&-8,c[w>>2]=0,w)|0);i=w;j=0;i=f;return j|0}function pp(d,e,f,g){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;do{if(!(d>>>0>31>>>0)){h=23212832+(d*1064|0)|0;if((b[23212856+(d*1064|0)>>1]|0)==0){break}TB(e,_v(h)|0,f);i=23212868+(d*1064|0)|0;j=c[i>>2]|0;if((j|0)==0){k=wf()|0;l=k-(c[23212864+(d*1064|0)>>2]|0)|0;k=bt(153024)|0;m=(l|0)<(((k|0)<100?100:k)|0)?0:l;n=c[i>>2]|0}else{m=j;n=j}np(h,23212872+(d*1064|0)|0,n);o=m;c[g>>2]=o;return}}while(0);a[e]=0;o=0;c[g>>2]=o;return}function qp(c,d,e){c=c|0;d=d|0;e=e|0;do{if(!(c>>>0>31>>>0)){if((b[23212856+(c*1064|0)>>1]|0)==0){break}TB(d,23212872+(c*1064|0)|0,e);return}}while(0);if((e|0)==0){return}a[d]=0;return}function rp(a){a=a|0;if(a>>>0>31>>>0){return}b[23212856+(a*1064|0)>>1]=0;return}function sp(){var a=0,c=0,d=0,e=0,f=0;a=0;c=0;d=23212832;while(1){e=((b[d+24>>1]|0)!=0)+c|0;f=a+1|0;if((f|0)<32){a=f;c=e;d=d+1064|0}else{break}}return e|0}function tp(d){d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+1032|0;f=e+1024|0;g=e|0;if(d>>>0>3>>>0){h=0;j=1024;k=0;i=e;return h|0}c[5716992]=d;l=0;m=0;n=23212832;while(1){o=((b[n+24>>1]|0)!=0)+m|0;p=l+1|0;if((p|0)<32){l=p;m=o;n=n+1064|0}else{break}}a:do{if((o|0)<32){if((d|0)==2){q=22010360;r=22010356}else if((d|0)==3){q=22845952;r=22845948}else if((d|0)==0){q=21988340;r=21988336}else{h=0;j=1024;k=0;i=e;return h|0}n=c[r>>2]|0;if((n|0)<=0){s=0;t=o;break}m=(d|0)==2;l=o;p=0;u=0;while(1){v=q+(p*172|0)|0;do{if((c[q+(p*172|0)+156>>2]|0)==0){w=u;x=l}else{y=q+(p*172|0)+152|0;z=c[y>>2]|0;if((z|0)==0){A=c[5678718]|0;if(!(m&(A|0)>0)){w=u;x=l;break}B=A-1|0;c[5678718]=B;m$(v|0,22714876+(B<<5)|0,32)|0;a[q+(p*172|0)+32|0]=0;a[q+(p*172|0)+64|0]=0;n$(q+(p*172|0)+136|0,0,16)|0;c[y>>2]=-1;a[q+(p*172|0)+96|0]=0;c[q+(p*172|0)+132>>2]=0;c[q+(p*172|0)+128>>2]=0;c[q+(p*172|0)+160>>2]=0;c[q+(p*172|0)+164>>2]=0;c[q+(p*172|0)+168>>2]=0;w=u;x=l;break}else if((z|0)!=(-1|0)){w=u;x=l;break}if((l|0)>31){s=u;t=l;break a}z=v|0;y=0;while(1){if((b[23212856+(y*1064|0)>>1]|0)!=0){if(($v(23212832+(y*1064|0)|0,z)|0)!=0){C=17;break}}B=y+1|0;if((B|0)<32){y=B}else{D=0;break}}if((C|0)==17){C=0;if((y|0)>31){D=0}else{w=u;x=l;break}}while(1){z=D+1|0;if((b[23212856+(D*1064|0)>>1]|0)==0){E=D;break}if((z|0)<32){D=z}else{E=z;break}}y=23212832+(E*1064|0)|0;m$(y|0,v|0,32)|0;c[23212864+(E*1064|0)>>2]=wf()|0;c[23212868+(E*1064|0)>>2]=0;Sv(0,y|0,133536,(y=i,i=i+1|0,i=i+7&-8,c[y>>2]=0,y)|0);i=y;w=1;x=l+1|0}}while(0);v=p+1|0;if((v|0)<(n|0)){l=x;p=v;u=w}else{s=w;t=x;break}}}else{s=0;t=o}}while(0);o=0;x=(t|0)==0?s:1;while(1){s=23212856+(o*1064|0)|0;do{if((b[s>>1]|0)==0){F=x}else{pp(o,g,1024,f);if((c[f>>2]|0)==0){F=x;break}b[s>>1]=0;F=1}}while(0);s=o+1|0;if((s|0)<32){o=s;x=F}else{h=F;break}}j=1024;k=0;i=e;return h|0}function up(a,b){a=a|0;b=b|0;return 1}function vp(a,b,d){a=a|0;b=b|0;d=d|0;if((a|0)==0){return}if((b|0)!=0){c[a+136>>2]=oj(rC(b,133336)|0)|0;TB(a+32|0,rC(b,133320)|0,32);TB(a+64|0,rC(b,133176)|0,32);c[a+140>>2]=oj(rC(b,133160)|0)|0;TB(a+96|0,rC(b,132992)|0,32);c[a+132>>2]=oj(rC(b,132784)|0)|0;c[a+128>>2]=oj(rC(b,138056)|0)|0;c[a+144>>2]=oj(rC(b,132616)|0)|0;c[a+148>>2]=oj(rC(b,132480)|0)|0;c[a+160>>2]=oj(rC(b,132400)|0)|0;c[a+164>>2]=oj(rC(b,132240)|0)|0;c[a+168>>2]=oj(rC(b,132224)|0)|0}c[a+152>>2]=d;return}function wp(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;pv(b,5);Ov(a,c[b+20>>2]|0,c[b+12>>2]|0);b=a+16444|0;if((c[b>>2]|0)==0){i=d;return}do{Mv(a);Tr(102240,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;}while((c[b>>2]|0)!=0);i=d;return}function xp(a,b){a=a|0;b=b|0;return(Pv(a,b)|0)!=0|0}function yp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;c[d+532>>2]=c[5816965];f=d+528|0;c[f>>2]=0;do{if((b|0)==0){g=99999;h=0}else{if((c[b+528>>2]|0)<1){g=99999;h=0;break}d=23500168+((c[b+532>>2]&8191)*208|0)|0;g=c[d>>2]|0;h=d}}while(0);d=ov(a,10)|0;j=a+24|0;a:do{if((d|0)==1023){k=h;l=0;m=g;n=b+528|0;o=b+532|0}else{p=a+20|0;q=b+528|0;r=b+532|0;s=h;t=0;u=g;v=d;while(1){if((c[j>>2]|0)>(c[p>>2]|0)){break}else{w=u;x=t;y=s}b:while(1){z=y;A=w;B=x;while(1){if((A|0)>=(v|0)){break b}if((c[(c[5769190]|0)+32>>2]|0)==3){Sr(174968,(C=i,i=i+16|0,c[C>>2]=c[j>>2],c[C+8>>2]=A,C)|0);i=C}D=23500168+((c[5816965]&8191)*208|0)|0;m$(D|0,z|0,208)|0;if((c[D>>2]|0)!=1023){c[5816965]=(c[5816965]|0)+1;c[f>>2]=(c[f>>2]|0)+1}E=B+1|0;if((E|0)<(c[q>>2]|0)){break}else{A=99999;B=E}}z=23500168+(((c[r>>2]|0)+E&8191)*208|0)|0;w=c[z>>2]|0;x=E;y=z}do{if((A|0)==(v|0)){if((c[(c[5769190]|0)+32>>2]|0)==3){Sr(171464,(C=i,i=i+16|0,c[C>>2]=c[j>>2],c[C+8>>2]=v,C)|0);i=C}z=23500168+((c[5816965]&8191)*208|0)|0;Hv(a,y,z,v);if((c[z>>2]|0)!=1023){c[5816965]=(c[5816965]|0)+1;c[f>>2]=(c[f>>2]|0)+1}z=B+1|0;if((z|0)>=(c[q>>2]|0)){F=99999;G=z;H=y;break}D=23500168+(((c[r>>2]|0)+z&8191)*208|0)|0;F=c[D>>2]|0;G=z;H=D}else{if((A|0)<=(v|0)){F=A;G=B;H=y;break}if((c[(c[5769190]|0)+32>>2]|0)==3){Sr(168608,(C=i,i=i+16|0,c[C>>2]=c[j>>2],c[C+8>>2]=v,C)|0);i=C}D=23500168+((c[5816965]&8191)*208|0)|0;Hv(a,23287176+(v*208|0)|0,D,v);if((c[D>>2]|0)==1023){F=A;G=B;H=y;break}c[5816965]=(c[5816965]|0)+1;c[f>>2]=(c[f>>2]|0)+1;F=A;G=B;H=y}}while(0);D=ov(a,10)|0;if((D|0)==1023){k=H;l=G;m=F;n=q;o=r;break a}else{s=H;t=G;u=F;v=D}}Ur(1,179376,(C=i,i=i+1|0,i=i+7&-8,c[C>>2]=0,C)|0);i=C}}while(0);F=m;m=l;l=k;c:while(1){k=l;G=F;H=m;while(1){if((G|0)==99999){break c}if((c[(c[5769190]|0)+32>>2]|0)==3){Sr(174968,(C=i,i=i+16|0,c[C>>2]=c[j>>2],c[C+8>>2]=G,C)|0);i=C}a=23500168+((c[5816965]&8191)*208|0)|0;m$(a|0,k|0,208)|0;if((c[a>>2]|0)!=1023){c[5816965]=(c[5816965]|0)+1;c[f>>2]=(c[f>>2]|0)+1}I=H+1|0;if((I|0)<(c[n>>2]|0)){break}else{G=99999;H=I}}H=23500168+(((c[o>>2]|0)+I&8191)*208|0)|0;F=c[H>>2]|0;m=I;l=H}i=e;return}function zp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=i;i=i+544|0;d=b|0;e=d;n$(e|0,0,536)|0;c[d+536>>2]=c[5738077];c[d+8>>2]=xv(a)|0;c[(c[5811720]|0)+20>>2]=0;f=d+12|0;c[f>>2]=c[5738076];g=vv(a)|0;if((g|0)==0){c[d+16>>2]=-1}else{c[d+16>>2]=(c[f>>2]|0)-g}c[d+4>>2]=vv(a)|0;g=c[d+16>>2]|0;do{if((g|0)<1){c[d>>2]=1;c[5759929]=0;h=0}else{j=g&31;k=23269896+(j*540|0)|0;if((c[k>>2]|0)==0){Sr(165168,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;h=k;break}if((c[23269908+(j*540|0)>>2]|0)!=(g|0)){Sr(162064,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;h=k;break}if(((c[5816965]|0)-(c[23270428+(j*540|0)>>2]|0)|0)>7936){Sr(159064,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;h=k;break}else{c[d>>2]=1;h=k;break}}}while(0);g=vv(a)|0;if(g>>>0>32>>>0){Ur(1,156648,(l=i,i=i+8|0,c[l>>2]=g,l)|0);i=l}Bv(a,d+24|0,g);if((c[(c[5769190]|0)+32>>2]|0)>1){Sr(183392,(l=i,i=i+16|0,c[l>>2]=(c[a+24>>2]|0)-1,c[l+8>>2]=154480,l)|0);i=l}if((h|0)==0){Jv(a,0,d+60|0)}else{Jv(a,h+60|0,d+60|0)}if((c[(c[5769190]|0)+32>>2]|0)>1){Sr(183392,(l=i,i=i+16|0,c[l>>2]=(c[a+24>>2]|0)-1,c[l+8>>2]=152536,l)|0);i=l}yp(a,h,d);if((c[d>>2]|0)==0){m=540;n=0;i=b;return}d=(c[5811786]|0)+1|0;h=c[f>>2]|0;f=(h-d|0)>31?h-31|0:d;if((f|0)<(h|0)){d=f;do{c[23269896+((d&31)*540|0)>>2]=0;d=d+1|0;}while((d|0)<(h|0))}m$(23247132,e|0,540)|0;c[5811788]=999;e=c[5760976]|0;h=c[5811798]|0;d=0;do{o=31-d+e&31;d=d+1|0;if((h|0)>=(c[23269500+(o*12|0)>>2]|0)){p=28;break}}while((d|0)<32);if((p|0)==28){c[5811788]=(c[5497082]|0)-(c[23269504+(o*12|0)>>2]|0)}m$(23269896+((c[5811786]&31)*540|0)|0,23247132,540)|0;if((c[(c[5769190]|0)+32>>2]|0)==3){o=c[5811787]|0;p=c[5811788]|0;Sr(150304,(l=i,i=i+24|0,c[l>>2]=c[5811786],c[l+8>>2]=o,c[l+16>>2]=p,l)|0);i=l}c[5811923]=1;m=540;n=0;i=b;return}function Ap(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+16392|0;d=b|0;e=b+8|0;f=b+8200|0;g=23251792+(c[5811925]|0)|0;c[5817473]=oj(rC(g,148152)|0)|0;if((c[5759928]|0)!=0){h=8192;j=0;k=8192;l=0;i=b;return}m=rC(g,145464)|0;c[d>>2]=m;n=oj(m|0)|0;c[5811766]=n;if((n|0)==0){rt()}c[d>>2]=rC(g,143112)|0;n=rC(g,140680)|0;Pu(c[d>>2]|0,n);c[d>>2]=rC(g,138144)|0;n=rC(g,136504)|0;Qu(c[d>>2]|0,n);c[d>>2]=g;g=0;while(1){sC(d,e,f);if((a[e]|0)==0){o=g;break}do{if((VB(e,135080)|0)==0){if((Fu(f)|0)==0){p=1;q=10;break}Sr(133432,(r=i,i=i+8|0,c[r>>2]=f,r)|0);i=r;s=g}else{p=g;q=10}}while(0);do{if((q|0)==10){q=0;n=et(e)|0;if((n|0)==-2147483648){gt(e,f,2112)|0;s=p;break}if((n&2184|0)==0){Sr(132328,(r=i,i=i+16|0,c[r>>2]=e,c[r+8>>2]=f,r)|0);i=r;s=p;break}else{lt(e,f);s=p;break}}}while(0);if((c[d>>2]|0)==0){o=s;break}else{g=s}}do{if((o|0)==0){if((a[ct(135080)|0]|0)==0){break}kt(135080,28378624)}}while(0);c[5811764]=~~+at(129944);h=8192;j=0;k=8192;l=0;i=b;return}function Bp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;b=i;i=i+272|0;d=b|0;e=d;f=b+208|0;hm();c[5721431]=0;xo();c[5738077]=xv(a)|0;c[5816948]=1;while(1){g=vv(a)|0;if((g|0)==4){h=ov(a,10)|0;if(h>>>0>1023>>>0){j=9;break}n$(e|0,0,208)|0;Hv(a,d,23287176+(h*208|0)|0,h);continue}else if((g|0)==8){j=12;break}else if((g|0)!=3){j=11;break}g=wv(a)|0;if(g>>>0>1023>>>0){j=4;break}k=zv(a)|0;l=(o$(k|0)|0)+1|0;m=c[5816948]|0;if((l+m|0)>16e3){j=6;break}c[23247696+(g<<2)>>2]=m;m$(23251792+(c[5816948]|0)|0,k|0,l)|0;c[5816948]=(c[5816948]|0)+l}if((j|0)==4){Ur(1,128648,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}else if((j|0)==6){Ur(1,127680,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}else if((j|0)==9){Ur(1,126344,(n=i,i=i+8|0,c[n>>2]=h,n)|0);i=n}else if((j|0)==11){Ur(1,125072,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}else if((j|0)==12){c[5720395]=xv(a)|0;c[5721689]=xv(a)|0;dt(135080,f,64);f=23251792+(c[5811924]|0)|0;c[5759584]=oj(rC(f,106696)|0)|0;TB(23038340,rC(f,105784)|0,256);TB(23017852,rC(f,104976)|0,4096);TB(23021948,rC(f,103984)|0,8192);Ap();if(!((c[(c[5811774]|0)+32>>2]|0)!=0&(c[5759927]|0)!=0)){o=c[5721689]|0;p=Pr(138,0)|0;Wu(o,0,p);q=64;r=0;s=208;t=0;i=b;return}jo();o=c[5721689]|0;p=Pr(138,0)|0;Wu(o,0,p);q=64;r=0;s=208;t=0;i=b;return}}function Cp(a,b){a=a|0;b=b|0;b=c[a>>2]|0;if((b|0)!=0){W_(b)}W_(a);c[6924866]=(c[6924866]|0)-1;Ro();kt(108632,107592);return}function Dp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;i=i+16384|0;e=d|0;if((a[23030144]|0)==0){Sr(124152,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;io(123328,0);g=16384;h=0;i=d;return}j=wv(b)|0;do{if(!((j&65535)<<16>>16!=0|(c[5759650]|0)!=0)){k=xv(b)|0;c[5759652]=k;nt(122504,+(k|0));if((c[5759652]|0)>=0){break}k=yv(b)|0;Ur(1,121632,(f=i,i=i+8|0,c[f>>2]=k,f)|0);i=f}}while(0);k=wv(b)|0;if((k|0)<0|k>>>0>16384>>>0){Ur(1,120672,(f=i,i=i+8|0,c[f>>2]=k,f)|0);i=f}Bv(b,e,k);b=c[5759650]&65535;l=j&65535;if((b|0)!=(l|0)){Tr(119400,(f=i,i=i+16|0,c[f>>2]=b,c[f+8>>2]=l,f)|0);i=f;g=16384;h=0;i=d;return}l=c[5757535]|0;do{if((l|0)==0){b=Vt(23030144)|0;c[5757535]=b;if((b|0)!=0){m=b;break}Sr(118096,(f=i,i=i+8|0,c[f>>2]=23030144,f)|0);i=f;io(123328,0);Qo();g=16384;h=0;i=d;return}else{m=l}}while(0);if((k|0)==0){n=0}else{gu(e,k,m)|0;n=1}m=pC(117120,(f=i,i=i+8|0,c[f>>2]=c[5759650],f)|0)|0;i=f;io(m,0);c[5759650]=(c[5759650]|0)+1;m=(c[5759651]|0)+k|0;c[5759651]=m;nt(115920,+(m|0));if(n){g=16384;h=0;i=d;return}n=c[5757535]|0;if((n|0)!=0){Yt(n);c[5757535]=0;Xt(23030144,23034240,0)}wn();wn();Qo();g=16384;h=0;i=d;return}function Ep(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;d=c[(c[5769190]|0)+32>>2]|0;do{if((d|0)==1){Sr(114392,(e=i,i=i+8|0,c[e>>2]=c[a+20>>2],e)|0);i=e}else{if((d|0)<=1){break}Sr(113296,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}}while(0);kv(a);d=xv(a)|0;f=c[5721690]|0;c[5721691]=(d|0)<(f-64|0)?f:d;d=a+24|0;f=a+20|0;if((c[d>>2]|0)>(c[f>>2]|0)){Ur(1,112376,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}a:while(1){g=vv(a)|0;h=(c[(c[5769190]|0)+32>>2]|0)>1;if((g|0)==8){j=8;break}b:do{if(h){do{if((g|0)>=0){k=c[1808+(g<<2)>>2]|0;if((k|0)==0){break}Sr(183392,(e=i,i=i+16|0,c[e>>2]=(c[d>>2]|0)-1,c[e+8>>2]=k,e)|0);i=e;break b}}while(0);Sr(110848,(e=i,i=i+16|0,c[e>>2]=(c[d>>2]|0)-1,c[e+8>>2]=g,e)|0);i=e}}while(0);c:do{switch(g|0){case 6:{Dp(a);break};case 1:case 9:{break};case 2:{Bp(a);break};case 5:{k=xv(a)|0;l=yv(a)|0;if((c[5738077]|0)>=(k|0)){break c}c[5738077]=k;TB(22952316+((k&63)<<10)|0,l,1024);break};case 7:{zp(a);break};default:{j=17;break a}}}while(0);if((c[d>>2]|0)>(c[f>>2]|0)){j=6;break}}if((j|0)==6){Ur(1,112376,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}else if((j|0)==8){if(!h){i=b;return}Sr(183392,(e=i,i=i+16|0,c[e>>2]=(c[d>>2]|0)-1,c[e+8>>2]=111576,e)|0);i=e;i=b;return}else if((j|0)==17){Ur(1,109992,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}}function Fp(){return 23017852}function Gp(){return 23021948}function Hp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0;f=+(c[5720347]|0)/640.0;h=+(c[5720348]|0)/480.0;if((a|0)!=0){g[a>>2]=f*+g[a>>2]}if((b|0)!=0){g[b>>2]=h*+g[b>>2]}if((d|0)!=0){g[d>>2]=f*+g[d>>2]}if((e|0)==0){return}g[e>>2]=h*+g[e>>2];return}function Ip(a,b,d,e,f){a=+a;b=+b;d=+d;e=+e;f=f|0;var g=0.0,h=0.0;vk[c[4917260]&511](f);g=+(c[5720347]|0)/640.0;h=+(c[5720348]|0)/480.0;kk[c[4917261]&7](g*a,h*b,g*d,h*e,0.0,0.0,0.0,0.0,c[5720355]|0);vk[c[4917260]&511](0);return}function Jp(a,b,d,e,f){a=+a;b=+b;d=+d;e=+e;f=f|0;var g=0.0,h=0.0;g=+(c[5720347]|0)/640.0;h=+(c[5720348]|0)/480.0;kk[c[4917261]&7](g*a,h*b,g*d,h*e,0.0,0.0,1.0,1.0,f);return}function Kp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0;e=d&255;if((e|0)==32|(b|0)<-16){return}f=+(e>>>4|0)*.0625;g=+(d&15|0)*.0625;kk[c[4917261]&7](+(a|0),+(b|0),8.0,16.0,g,f,g+.0625,f+.0625,c[5720354]|0);return}function Lp(b,d,e,f,h,j,k){b=b|0;d=d|0;e=+e;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0,K=0,L=0;l=i;i=i+16|0;m=l|0;g[m+8>>2]=0.0;g[m+4>>2]=0.0;n=m|0;g[n>>2]=0.0;o=h+12|0;p=m+12|0;g[p>>2]=+g[o>>2];vk[c[4917260]&511](n);q=a[f]|0;a:do{if(!(q<<24>>24==0)){r=(k|0)==0;s=+(d+2|0);t=s<-0.0-e;u=f;v=b;w=q;while(1){b:do{if(r){x=u;y=w;while(1){if(!((x|0)!=0&y<<24>>24==94)){z=x;A=y;break b}B=a[x+1|0]|0;if(B<<24>>24==0){z=x;A=94;break b}C=x+2|0;if((Fe(B<<24>>24|0)|0)==0){break}B=a[C]|0;if(B<<24>>24==0){break a}else{x=C;y=B}}z=x;A=a[x]|0}else{z=u;A=w}}while(0);y=A<<24>>24;B=y&255;if(!((B|0)==32|t)){D=+(c[5720347]|0)/640.0;E=+(c[5720348]|0)/480.0;F=+(B>>>4|0)*.0625;G=+(y&15|0)*.0625;kk[c[4917261]&7](+(v+2|0)*D,s*E,D*e,E*e,G,F,G+.0625,F+.0625,c[5720354]|0)}y=z+1|0;B=a[y]|0;if(B<<24>>24==0){break}else{u=y;v=~~(+(v|0)+e);w=B}}}}while(0);vk[c[4917260]&511](h);h=a[f]|0;if(h<<24>>24==0){H=c[4917260]|0;vk[H&511](0);i=l;return}z=(j|0)==0;j=m;m=(k|0)==0;s=+(d|0);d=s<-0.0-e;k=f;f=b;b=h;c:while(1){d:do{if(z){if(m){h=k;A=b;while(1){if(!((h|0)!=0&A<<24>>24==94)){I=h;break d}q=h+1|0;w=a[q]|0;if(w<<24>>24==0){I=h;break d}if((Fe(w<<24>>24|0)|0)==0){I=h;break d}w=20704+((a[q]&7)<<4)|0;c[j>>2]=c[w>>2];c[j+4>>2]=c[w+4>>2];c[j+8>>2]=c[w+8>>2];g[p>>2]=+g[o>>2];vk[c[4917260]&511](n);w=h+2|0;q=a[w]|0;if(q<<24>>24==0){J=35;break c}else{h=w;A=q}}}else{if(!((k|0)!=0&b<<24>>24==94)){I=k;break}A=k+1|0;h=a[A]|0;if(h<<24>>24==0){I=k;break}if((Fe(h<<24>>24|0)|0)==0){I=k;break}h=20704+((a[A]&7)<<4)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];g[p>>2]=+g[o>>2];vk[c[4917260]&511](n);I=k;break}}else{if(m){K=k;L=b}else{if(!((k|0)!=0&b<<24>>24==94)){I=k;break}h=a[k+1|0]|0;if(h<<24>>24==0){I=k;break}Fe(h<<24>>24|0)|0;I=k;break}while(1){if(!((K|0)!=0&L<<24>>24==94)){I=K;break d}h=a[K+1|0]|0;if(h<<24>>24==0){I=K;break d}if((Fe(h<<24>>24|0)|0)==0){I=K;break d}h=K+2|0;A=a[h]|0;if(A<<24>>24==0){J=35;break c}else{K=h;L=A}}}}while(0);A=a[I]|0;h=A&255;if(!((h|0)==32|d)){F=+(c[5720347]|0)/640.0;G=+(c[5720348]|0)/480.0;E=+(h>>>4|0)*.0625;D=+(A&15|0)*.0625;kk[c[4917261]&7](+(f|0)*F,s*G,F*e,G*e,D,E,D+.0625,E+.0625,c[5720354]|0)}A=I+1|0;h=a[A]|0;if(h<<24>>24==0){J=35;break}else{k=A;f=~~(+(f|0)+e);b=h}}if((J|0)==35){H=c[4917260]|0;vk[H&511](0);i=l;return}}function Mp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0,h=0,j=0;f=i;i=i+16|0;h=f|0;g[h+8>>2]=1.0;g[h+4>>2]=1.0;j=h|0;g[j>>2]=1.0;g[h+12>>2]=d;Lp(a,b,16.0,c,j,0,e);i=f;return}function Np(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0.0,x=0.0;k=i;i=i+16|0;l=k|0;vk[c[4917260]&511](f);m=a[e]|0;if(m<<24>>24==0){n=c[4917260]|0;vk[n&511](0);i=k;return}o=(h|0)==0;h=l;p=f+12|0;f=l+12|0;q=l|0;l=(j|0)==0;j=(d|0)<-16;r=+(d|0);d=e;e=b;b=m;a:while(1){m=d;s=b;while(1){if(!((m|0)!=0&s<<24>>24==94)){break}t=m+1|0;u=a[t]|0;if(u<<24>>24==0){break}if((Fe(u<<24>>24|0)|0)==0){break}if(o){u=20704+((a[t]&7)<<4)|0;c[h>>2]=c[u>>2];c[h+4>>2]=c[u+4>>2];c[h+8>>2]=c[u+8>>2];g[f>>2]=+g[p>>2];vk[c[4917260]&511](q)}u=m+2|0;if(!l){break}t=a[u]|0;if(t<<24>>24==0){v=14;break a}else{m=u;s=t}}s=a[m]|0;t=s&255;if(!((t|0)==32|j)){w=+(t>>>4|0)*.0625;x=+(s&15|0)*.0625;kk[c[4917261]&7](+(e|0),r,8.0,16.0,x,w,x+.0625,w+.0625,c[5720354]|0)}s=m+1|0;t=a[s]|0;if(t<<24>>24==0){v=14;break}else{d=s;e=e+8|0;b=t}}if((v|0)==14){n=c[4917260]|0;vk[n&511](0);i=k;return}}function Op(a){a=+a;var b=0;b=c[5425932]|0;g[876392+(b<<2)>>2]=a;c[5425932]=b+1&1023;return}function Pp(){var a=0,b=0,d=0,e=0,f=0,h=0.0,i=0,j=0.0,k=0;a=c[5720347]|0;b=c[5720348]|0;vk[c[4917260]&511](20704);d=c[(c[5811750]|0)+32>>2]|0;kk[c[4917261]&7](0.0,+(b-d|0),+(a|0),+(d|0),0.0,0.0,0.0,0.0,c[5720355]|0);vk[c[4917260]&511](0);if((a|0)<=0){return}d=a-1|0;e=0;f=0;while(1){h=+g[876392+((f+1023+(c[5425932]|0)&1023)<<2)>>2]*+(c[(c[5811748]|0)+32>>2]|0)+ +(c[(c[5811746]|0)+32>>2]|0);i=c[(c[5811750]|0)+32>>2]|0;if(h<0.0){j=h+ +(da(~~((-0.0-h)/+(i|0))+1|0,i)|0)}else{j=h}k=(~~j|0)%(i|0)|0;kk[c[4917261]&7](+(d+f|0),+(b-k|0),1.0,+(k|0),0.0,0.0,0.0,0.0,c[5720355]|0);k=e+1|0;i=~e;if((k|0)<(a|0)){e=k;f=i}else{break}}return}function Qp(){c[5769182]=gt(161864,138048,512)|0;c[5811758]=gt(124968,138048,512)|0;c[5811750]=gt(114344,104936,512)|0;c[5811748]=gt(61568,54072,512)|0;c[5811746]=gt(48048,138048,512)|0;c[552998]=1;return}function Rp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+1024|0;d=b|0;vk[c[4917264]&511](a);e=c[236124]|0;if((e|0)==0){f=0}else{g=oD(e,6,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0)|0;i=h;f=(g|0)!=0}do{if(f|(c[5720394]|0)>>>0<6>>>0){if(((c[5720347]|0)*480|0|0)<=((c[5720348]|0)*640|0|0)){break}vk[c[4917260]&511](20704);kk[c[4917261]&7](0.0,0.0,+(c[5720347]|0),+(c[5720348]|0),0.0,0.0,0.0,0.0,c[5720355]|0);vk[c[4917260]&511](0)}}while(0);g=c[236124]|0;a:do{if(!((g|0)==0|f)){switch(c[5720394]|0){case 3:case 4:case 5:{oD(g,5,(h=i,i=i+8|0,c[h>>2]=c[5497082],h)|0)|0;i=h;oD(c[236124]|0,9,(h=i,i=i+8|0,c[h>>2]=0,h)|0)|0;i=h;break a;break};case 9:{Kl();break a;break};case 6:case 7:{wl(a);oD(c[236124]|0,5,(h=i,i=i+8|0,c[h>>2]=c[5497082],h)|0)|0;i=h;oD(c[236124]|0,9,(h=i,i=i+8|0,c[h>>2]=1,h)|0)|0;i=h;break a;break};case 1:{Ax();oD(c[236124]|0,7,(h=i,i=i+8|0,c[h>>2]=1,h)|0)|0;i=h;break a;break};case 8:{wl(a);e=d|0;if(!((c[5759927]|0)!=0&(c[5759926]|0)==0)){break a}j=(ju(c[5759931]|0)|0)/1024|0;fe(e|0,61480,(h=i,i=i+16|0,c[h>>2]=23039640,c[h+8>>2]=j,h)|0)|0;i=h;Lp(320-((o$(e|0)|0)<<2)|0,20,8.0,e,20816,1,0);break a;break};default:{Ur(0,43904,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}}}}while(0);d=((Jn()|0)&2|0)!=0;a=c[236124]|0;if(d&(a|0)!=0){oD(a,5,(h=i,i=i+8|0,c[h>>2]=c[5497082],h)|0)|0;i=h}cm();do{if((c[(c[5811758]|0)+32>>2]|0)==0){if((c[(c[5769182]|0)+32>>2]|0)!=0){break}if((c[(c[5811760]|0)+32>>2]|0)!=0){break}i=b;return}}while(0);Pp();i=b;return}function Sp(){var a=0,b=0,d=0;a=i;if((c[552998]|0)==0){i=a;return}b=c[7096182]|0;c[7096182]=b+1;if((b|0)>1){Ur(0,183016,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}c[7096182]=1;if((c[236124]|0)==0){if((c[(c[5458548]|0)+32>>2]|0)!=0){d=6}}else{d=6}do{if((d|0)==6){b=bt(178976)|0;if((c[5720352]|b|0)==0){Rp(0)}else{Rp(1);Rp(2)}b=c[4917265]|0;if((c[(c[5451072]|0)+32>>2]|0)==0){hk[b&255](0,0);break}else{hk[b&255](1217360,1217368);break}}}while(0);c[7096182]=0;i=a;return}function Tp(){var a=0,b=0,d=0;a=i;i=i+16|0;b=a|0;d=a+8|0;c[5711487]=0;c[5502589]=0;c[5678718]=0;if((Wt(59304,d)|0)==0){i=a;return}fu(22010356,4,c[d>>2]|0)|0;fu(22845948,4,c[d>>2]|0)|0;fu(b,4,c[d>>2]|0)|0;if((c[b>>2]|0)==726528){fu(22010360,704512,c[d>>2]|0)|0;fu(22845952,22016,c[d>>2]|0)|0}else{c[5711487]=0;c[5502589]=0;c[5678718]=0}Yt(c[d>>2]|0);i=a;return}function Up(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,S=0,U=0,X=0,Y=0,Z=0,_=0;d=i;i=i+1096|0;e=d|0;f=d+32|0;h=d+64|0;j=d+72|0;l=c[b>>2]|0;switch(l|0){case 45:{m=c[b+4>>2]|0;n=mD(c[b+8>>2]|0)|0;o=c[b+12>>2]|0;if(m>>>0>1023>>>0){p=0;i=d;return p|0}q=c[23247696+(m<<2)>>2]|0;if((q|0)!=0){TB(n,23251792+q|0,o);p=1;i=d;return p|0}if((o|0)==0){p=0;i=d;return p|0}a[n]=0;p=0;i=d;return p|0};case 15:{gu(mD(c[b+4>>2]|0)|0,c[b+8>>2]|0,c[b+12>>2]|0)|0;p=0;i=d;return p|0};case 33:{n=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;q=c[b+12>>2]|0;TB(o,On(n)|0,q);p=0;i=d;return p|0};case 56:{q=c[4917268]|0;n=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;m=mD(c[b+12>>2]|0)|0;Tk[q&255](n,o,m);p=0;i=d;return p|0};case 39:{bo();p=0;i=d;return p|0};case 40:{p=Jn()|0;i=d;return p|0};case 31:{p=Kx(mD(c[b+4>>2]|0)|0,c[b+8>>2]|0)|0;i=d;return p|0};case 51:{It(mD(c[b+4>>2]|0)|0);p=0;i=d;return p|0};case 12:{m=b+4|0;o=c[m>>2]|0;n=b+8|0;a:do{if((o|0)==0){do{if((l$(mD(c[n>>2]|0)|0,137776,11)|0)!=0){if((l$(mD(c[n>>2]|0)|0,124880,11)|0)==0){break}if((l$(mD(c[n>>2]|0)|0,114192,5)|0)==0){break}r=c[m>>2]|0;break a}}while(0);q=mD(c[n>>2]|0)|0;Sr(104792,(s=i,i=i+8|0,c[s>>2]=q,s)|0);i=s;c[m>>2]=1;r=1}else{r=o}}while(0);rr(r,mD(c[n>>2]|0)|0);p=0;i=d;return p|0};case 1:{n=mD(c[b+4>>2]|0)|0;Sr(161200,(s=i,i=i+8|0,c[s>>2]=n,s)|0);i=s;p=0;i=d;return p|0};case 32:{wx(c[b+4>>2]|0,c[b+8>>2]|0);p=0;i=d;return p|0};case 0:{n=mD(c[b+4>>2]|0)|0;Ur(1,161200,(s=i,i=i+8|0,c[s>>2]=n,s)|0);i=s;return 0};case 26:{n=c[4917260]|0;r=mD(c[b+4>>2]|0)|0;vk[n&511](r);p=0;i=d;return p|0};case 8:{r=mD(c[b+4>>2]|0)|0;Ht(0,r,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0);p=0;i=d;return p|0};case 11:{r=c[b+4>>2]|0;yr(r,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0);p=0;i=d;return p|0};case 7:{pt(mD(c[b+4>>2]|0)|0);p=0;i=d;return p|0};case 3:{lt(mD(c[b+4>>2]|0)|0,mD(c[b+8>>2]|0)|0);p=0;i=d;return p|0};case 41:{In(c[b+4>>2]|(Jn()|0)&1);p=0;i=d;return p|0};case 42:{r=mD(c[b+4>>2]|0)|0;n=c[b+8>>2]|0;o=ve()|0;if((o|0)==0){a[r]=0;p=0;i=d;return p|0}else{TB(r,o,n);es(o);p=0;i=d;return p|0}break};case 86:{p=iu(c[b+4>>2]|0,c[b+8>>2]|0,c[b+12>>2]|0)|0;i=d;return p|0};case 37:{p=Kn()|0;i=d;return p|0};case 38:{Ln(c[b+4>>2]|0);p=0;i=d;return p|0};case 34:{o=c[b+4>>2]|0;n=mD(c[b+8>>2]|0)|0;r=c[b+12>>2]|0;m=Qn(o)|0;if((m|0)==0){a[n]=0;p=0;i=d;return p|0}else{TB(n,m,r);p=0;i=d;return p|0}break};case 9:{r=c[b+4>>2]|0;Ft(r,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0);p=0;i=d;return p|0};case 50:{r=mD(c[b+4>>2]|0)|0;m=mD(c[b+8>>2]|0)|0;Ht(r,m,mD(c[b+12>>2]|0)|0,c[b+16>>2]|0);p=0;i=d;return p|0};case 29:{m=c[4917267]|0;r=mD(c[b+4>>2]|0)|0;n=c[b+8>>2]|0;o=c[b+12>>2]|0;q=c[b+16>>2]|0;t=+g[b+20>>2];u=mD(c[b+24>>2]|0)|0;Bk[m&7](r,n,o,q,t,u)|0;p=0;i=d;return p|0};case 4:{t=+at(mD(c[b+4>>2]|0)|0);p=(g[k>>2]=t,c[k>>2]|0);i=d;return p|0};case 44:{u=mD(c[b+4>>2]|0)|0;c[u+4>>2]=c[5721431];c[u>>2]=c[5720394];TB(u+12|0,22881592,1024);TB(u+1036|0,22869028,1024);TB(u+2060|0,22885728,1024);c[u+8>>2]=c[5811833];p=0;i=d;return p|0};case 43:{u=b+4|0;c[5720357]=mD(c[u>>2]|0)|0;m$(mD(c[u>>2]|0)|0,22870084,11332)|0;p=0;i=d;return p|0};case 28:{Sp();p=0;i=d;return p|0};case 16:{Yt(c[b+4>>2]|0);p=0;i=d;return p|0};case 14:{eu(mD(c[b+4>>2]|0)|0,c[b+8>>2]|0,c[b+12>>2]|0)|0;p=0;i=d;return p|0};case 5:{u=mD(c[b+4>>2]|0)|0;dt(u,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0);p=0;i=d;return p|0};case 72:{u=Vt(59304)|0;gu(22010356,4,u)|0;gu(22845948,4,u)|0;c[h>>2]=726528;gu(h,4,u)|0;gu(22010360,704512,u)|0;gu(22845952,22016,u)|0;Yt(u);p=0;i=d;return p|0};case 73:{u=c[b+4>>2]|0;h=mD(c[b+8>>2]|0)|0;q=mD(c[b+12>>2]|0)|0;o=f;if((u|0)==1|(u|0)==2){v=22010360;w=22010356;x=4096}else if((u|0)==3){v=22845952;w=22845948;x=128}else if((u|0)==0){v=21988340;w=21988336;x=128}else{p=-1;i=d;return p|0}if((c[w>>2]|0)>=(x|0)){p=-1;i=d;return p|0}Uv(q,f,7)|0;q=c[w>>2]|0;b:do{if((q|0)>0){x=0;while(1){u=($v(v+(x*172|0)|0,f)|0)==0;n=x+1|0;r=c[w>>2]|0;if(!u){y=x;z=r;break b}if((n|0)<(r|0)){x=n}else{y=n;z=r;break}}}else{y=0;z=q}}while(0);if((y|0)<(z|0)){p=0;i=d;return p|0}m$(v+(z*172|0)|0,o|0,32)|0;TB(v+(z*172|0)+32|0,h,32);h=c[w>>2]|0;c[v+(h*172|0)+156>>2]=1;c[w>>2]=h+1;p=1;i=d;return p|0};case 27:{t=+g[b+4>>2];A=+g[b+8>>2];B=+g[b+12>>2];C=+g[b+16>>2];D=+g[b+20>>2];E=+g[b+24>>2];F=+g[b+28>>2];kk[c[4917261]&7](t,A,B,C,D,E,F,+g[b+32>>2],c[b+36>>2]|0);p=0;i=d;return p|0};case 17:{h=mD(c[b+4>>2]|0)|0;w=mD(c[b+8>>2]|0)|0;v=mD(c[b+12>>2]|0)|0;p=uu(h,w,v,c[b+16>>2]|0)|0;i=d;return p|0};case 6:{v=mD(c[b+4>>2]|0)|0;ot(v,+g[b+8>>2]);p=0;i=d;return p|0};case 18:{v=c[4917246]|0;w=mD(c[b+4>>2]|0)|0;p=jk[v&255](w)|0;i=d;return p|0};case 19:{w=c[4917247]|0;v=mD(c[b+4>>2]|0)|0;p=jk[w&255](v)|0;i=d;return p|0};case 20:{v=c[4917249]|0;w=mD(c[b+4>>2]|0)|0;p=jk[v&255](w)|0;i=d;return p|0};case 21:{Uk[c[4917253]&511]();p=0;i=d;return p|0};case 22:{w=c[4917254]|0;v=mD(c[b+4>>2]|0)|0;vk[w&511](v);p=0;i=d;return p|0};case 23:{v=c[4917255]|0;w=c[b+4>>2]|0;h=c[b+8>>2]|0;z=mD(c[b+12>>2]|0)|0;Yk[v&255](w,h,z,1);p=0;i=d;return p|0};case 24:{z=c[4917257]|0;h=mD(c[b+4>>2]|0)|0;F=+g[b+8>>2];E=+g[b+12>>2];D=+g[b+16>>2];sk[z&15](h,F,E,D,+g[b+20>>2]);p=0;i=d;return p|0};case 71:{Tp();p=0;i=d;return p|0};case 67:{h=c[b+4>>2]|0;z=c[b+8>>2]|0;w=mD(c[b+12>>2]|0)|0;v=c[b+16>>2]|0;o=j|0;a[o]=0;do{if((h|0)==0){if(!(z>>>0<128>>>0)){G=108;break}H=21988340+(z*172|0)|0;G=109}else if((h|0)==1|(h|0)==2){if(!(z>>>0<4096>>>0)){G=108;break}H=22010360+(z*172|0)|0;G=109}else if((h|0)==3){if(!(z>>>0<128>>>0)){G=108;break}H=22845952+(z*172|0)|0;G=109}else{G=108}}while(0);if((G|0)==108){if((w|0)==0){p=0;i=d;return p|0}a[w]=0;p=0;i=d;return p|0}else if((G|0)==109){if((w|0)==0){p=0;i=d;return p|0}a[w]=0;vC(o,174504,H+32|0);vC(o,171184,H+64|0);z=pC(164848,(s=i,i=i+8|0,c[s>>2]=c[H+136>>2],s)|0)|0;i=s;vC(o,168256,z);z=pC(164848,(s=i,i=i+8|0,c[s>>2]=c[H+140>>2],s)|0)|0;i=s;vC(o,161832,z);z=pC(164848,(s=i,i=i+8|0,c[s>>2]=c[H+152>>2],s)|0)|0;i=s;vC(o,158816,z);z=pC(164848,(s=i,i=i+8|0,c[s>>2]=c[H+144>>2],s)|0)|0;i=s;vC(o,156464,z);z=pC(164848,(s=i,i=i+8|0,c[s>>2]=c[H+148>>2],s)|0)|0;i=s;vC(o,154304,z);vC(o,152392,H+96|0);z=pC(164848,(s=i,i=i+8|0,c[s>>2]=c[H+132>>2],s)|0)|0;i=s;vC(o,150080,z);z=pC(164848,(s=i,i=i+8|0,c[s>>2]=c[H+128>>2],s)|0)|0;i=s;vC(o,147800,z);vC(o,145232,_v(H|0)|0);z=pC(164848,(s=i,i=i+8|0,c[s>>2]=c[H+160>>2],s)|0)|0;i=s;vC(o,142776,z);z=pC(164848,(s=i,i=i+8|0,c[s>>2]=c[H+168>>2],s)|0)|0;i=s;vC(o,140432,z);z=pC(164848,(s=i,i=i+8|0,c[s>>2]=c[H+164>>2],s)|0)|0;i=s;vC(o,138032,z);TB(w,o,v);p=0;i=d;return p|0}break};case 2:{p=wf()|0;i=d;return p|0};case 10:{p=nr()|0;i=d;return p|0};case 35:{v=c[b+4>>2]|0;Pn(v,mD(c[b+8>>2]|0)|0);p=0;i=d;return p|0};case 36:{p=Mn(c[b+4>>2]|0)|0;i=d;return p|0};case 83:{v=c[b+4>>2]|0;o=c[b+8>>2]|0;do{if((v|0)==0){if(o>>>0<128>>>0){I=21988340+(o*172|0)|0;break}else{p=-1;i=d;return p|0}}else if((v|0)==1|(v|0)==2){if(o>>>0<4096>>>0){I=22010360+(o*172|0)|0;break}else{p=-1;i=d;return p|0}}else if((v|0)==3){if(o>>>0<128>>>0){I=22845952+(o*172|0)|0;break}else{p=-1;i=d;return p|0}}else{p=-1;i=d;return p|0}}while(0);p=c[I+152>>2]|0;i=d;return p|0};case 68:{I=c[b+4>>2]|0;o=c[b+8>>2]|0;v=c[b+12>>2]|0;if((o|0)==-1){if((I|0)==1|(I|0)==2){J=22010360;K=4096}else if((I|0)==3){J=22845952;K=128}else if((I|0)==0){J=21988340;K=128}else{p=0;i=d;return p|0}w=0;while(1){c[J+(w*172|0)+156>>2]=v;z=w+1|0;if((z|0)<(K|0)){w=z}else{p=0;break}}i=d;return p|0}if((I|0)==0){if(!(o>>>0<128>>>0)){p=0;i=d;return p|0}c[21988496+(o*172|0)>>2]=v;p=0;i=d;return p|0}else if((I|0)==1|(I|0)==2){if(!(o>>>0<4096>>>0)){p=0;i=d;return p|0}c[22010516+(o*172|0)>>2]=v;p=0;i=d;return p|0}else if((I|0)==3){if(!(o>>>0<128>>>0)){p=0;i=d;return p|0}c[22846108+(o*172|0)>>2]=v;p=0;i=d;return p|0}else{p=0;i=d;return p|0}break};case 74:{v=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;if((v|0)==1|(v|0)==2){L=22010360;M=22010356}else if((v|0)==3){L=22845952;M=22845948}else if((v|0)==0){L=21988340;M=21988336}else{p=0;i=d;return p|0}Uv(o,e,7)|0;if((c[M>>2]|0)>0){N=0}else{p=0;i=d;return p|0}while(1){o=($v(e,L+(N*172|0)|0)|0)==0;v=N+1|0;O=c[M>>2]|0;if(!o){break}if((v|0)<(O|0)){N=v}else{p=0;G=201;break}}if((G|0)==201){i=d;return p|0}e=O-1|0;if((N|0)<(e|0)){O=N;while(1){N=O+1|0;m$(L+(O*172|0)|0,L+(N*172|0)|0,172)|0;if((N|0)<(e|0)){O=N}else{break}}}c[M>>2]=e;p=0;i=d;return p|0};case 46:{p=sp()|0;i=d;return p|0};case 47:{rp(c[b+4>>2]|0);p=0;i=d;return p|0};case 48:{e=c[b+4>>2]|0;M=mD(c[b+8>>2]|0)|0;O=c[b+12>>2]|0;pp(e,M,O,mD(c[b+16>>2]|0)|0);p=0;i=d;return p|0};case 49:{O=c[b+4>>2]|0;M=mD(c[b+8>>2]|0)|0;qp(O,M,c[b+12>>2]|0);p=0;i=d;return p|0};case 65:{M=c[b+4>>2]|0;if((M|0)==0){p=c[5497084]|0;i=d;return p|0}else if((M|0)==1|(M|0)==2){p=c[5502589]|0;i=d;return p|0}else if((M|0)==3){p=c[5711487]|0;i=d;return p|0}else{p=0;i=d;return p|0}break};case 66:{M=c[b+4>>2]|0;O=c[b+8>>2]|0;e=mD(c[b+12>>2]|0)|0;L=c[b+16>>2]|0;do{if((M|0)==0){if(!(O>>>0<128>>>0)){break}TB(e,_v(21988340+(O*172|0)|0)|0,L);p=0;i=d;return p|0}else if((M|0)==1|(M|0)==2){if(!(O>>>0<4096>>>0)){break}TB(e,_v(22010360+(O*172|0)|0)|0,L);p=0;i=d;return p|0}else if((M|0)==3){if(!(O>>>0<128>>>0)){break}TB(e,_v(22845952+(O*172|0)|0)|0,L);p=0;i=d;return p|0}}while(0);a[e]=0;p=0;i=d;return p|0};case 25:{e=c[4917259]|0;L=mD(c[b+4>>2]|0)|0;vk[e&511](L);p=0;i=d;return p|0};case 13:{L=mD(c[b+4>>2]|0)|0;e=mD(c[b+8>>2]|0)|0;p=Yu(L,e,c[b+12>>2]|0)|0;i=d;return p|0};case 84:{e=c[b+4>>2]|0;L=c[b+8>>2]|0;if((e|0)==0){if(!(L>>>0<128>>>0)){p=0;i=d;return p|0}p=c[21988496+(L*172|0)>>2]|0;i=d;return p|0}else if((e|0)==1|(e|0)==2){if(!(L>>>0<4096>>>0)){p=0;i=d;return p|0}p=c[22010516+(L*172|0)>>2]|0;i=d;return p|0}else if((e|0)==3){if(!(L>>>0<128>>>0)){p=0;i=d;return p|0}p=c[22846108+(L*172|0)>>2]|0;i=d;return p|0}else{p=0;i=d;return p|0}break};case 69:{p=tp(c[b+4>>2]|0)|0;i=d;return p|0};case 70:{L=c[b+4>>2]|0;if((L|0)==1|(L|0)==2){P=22010360;Q=4096}else if((L|0)==3){P=22845952;Q=128}else if((L|0)==0){P=21988340;Q=128}else{p=0;i=d;return p|0}L=0;while(1){c[P+(L*172|0)+152>>2]=-1;e=L+1|0;if((e|0)<(Q|0)){L=e}else{p=0;break}}i=d;return p|0};case 82:{L=mD(c[b+4>>2]|0)|0;Q=mD(c[b+8>>2]|0)|0;p=op(L,Q,c[b+12>>2]|0)|0;i=d;return p|0};case 85:{Q=c[b+4>>2]|0;L=c[b+8>>2]|0;P=c[b+12>>2]|0;e=c[b+16>>2]|0;O=c[b+20>>2]|0;do{if((Q|0)==0){if(e>>>0<128>>>0){S=21988340+(e*172|0)|0}else{S=0}if(O>>>0<128>>>0){U=21988340+(O*172|0)|0;X=S;break}else{p=0;i=d;return p|0}}else if((Q|0)==1|(Q|0)==2){if(!(e>>>0<4096>>>0)){Y=0;G=154;break}Y=22010360+(e*172|0)|0;G=154}else if((Q|0)==3){if(e>>>0<128>>>0){Z=22845952+(e*172|0)|0}else{Z=0}if(O>>>0<128>>>0){U=22845952+(O*172|0)|0;X=Z;break}else{p=0;i=d;return p|0}}else{Y=0;G=154}}while(0);do{if((G|0)==154){if((Q-1|0)>>>0<2>>>0&O>>>0<4096>>>0){U=22010360+(O*172|0)|0;X=Y;break}else{p=0;i=d;return p|0}}}while(0);if((X|0)==0){p=0;i=d;return p|0}c:do{switch(L|0){case 0:{_=VB(X+32|0,U+32|0)|0;break};case 1:{_=VB(X+64|0,U+64|0)|0;break};case 2:{Y=c[X+136>>2]|0;O=c[U+136>>2]|0;if((Y|0)<(O|0)){_=-1;break c}_=(Y|0)>(O|0)|0;break};case 3:{O=c[X+132>>2]|0;Y=c[U+132>>2]|0;if((O|0)<(Y|0)){_=-1;break c}_=(O|0)>(Y|0)|0;break};case 4:{Y=c[X+152>>2]|0;O=c[U+152>>2]|0;if((Y|0)<(O|0)){_=-1;break c}_=(Y|0)>(O|0)|0;break};default:{_=0}}}while(0);if((P|0)==0){p=_;i=d;return p|0}if((_|0)<0){p=1;i=d;return p|0}p=((_|0)>0)<<31>>31;i=d;return p|0};case 52:{p=ns()|0;i=d;return p|0};case 53:{a[mD(c[b+4>>2]|0)|0]=0;p=0;i=d;return p|0};case 55:{_=c[4917269]|0;P=mD(c[b+4>>2]|0)|0;U=c[b+8>>2]|0;X=mD(c[b+12>>2]|0)|0;Tk[_&255](P,U,X);p=0;i=d;return p|0};case 100:{X=mD(c[b+4>>2]|0)|0;n$(X|0,c[b+8>>2]&255|0,c[b+12>>2]|0)|0;p=0;i=d;return p|0};case 101:{X=mD(c[b+4>>2]|0)|0;U=mD(c[b+8>>2]|0)|0;m$(X|0,U|0,c[b+12>>2]|0)|0;p=0;i=d;return p|0};case 102:{U=b+4|0;X=mD(c[U>>2]|0)|0;P=mD(c[b+8>>2]|0)|0;q$(X|0,P|0,c[b+12>>2]|0)|0;p=c[U>>2]|0;i=d;return p|0};case 103:{D=+W(+g[b+4>>2]);p=(g[k>>2]=D,c[k>>2]|0);i=d;return p|0};case 104:{D=+V(+g[b+4>>2]);p=(g[k>>2]=D,c[k>>2]|0);i=d;return p|0};case 105:{D=+g[b+4>>2];E=+$(+D,+(+g[b+8>>2]));p=(g[k>>2]=E,c[k>>2]|0);i=d;return p|0};case 106:{E=+T(+g[b+4>>2]);p=(g[k>>2]=E,c[k>>2]|0);i=d;return p|0};case 107:{E=+R(+g[b+4>>2]);p=(g[k>>2]=E,c[k>>2]|0);i=d;return p|0};case 108:{E=+ca(+g[b+4>>2]);p=(g[k>>2]=E,c[k>>2]|0);i=d;return p|0};case 57:{U=c[(c[7092486]|0)+500>>2]|0;P=mD(c[b+4>>2]|0)|0;p=jk[U&255](P)|0;i=d;return p|0};case 58:{P=c[(c[7092486]|0)+504>>2]|0;U=mD(c[b+4>>2]|0)|0;p=jk[P&255](U)|0;i=d;return p|0};case 59:{p=jk[c[(c[7092486]|0)+508>>2]&255](c[b+4>>2]|0)|0;i=d;return p|0};case 60:{U=c[(c[7092486]|0)+512>>2]|0;P=c[b+4>>2]|0;X=mD(c[b+8>>2]|0)|0;p=Kk[U&255](P,X)|0;i=d;return p|0};case 61:{X=c[(c[7092486]|0)+516>>2]|0;P=c[b+4>>2]|0;U=mD(c[b+8>>2]|0)|0;_=mD(c[b+12>>2]|0)|0;p=rk[X&63](P,U,_)|0;i=d;return p|0};case 62:{yx();p=0;i=d;return p|0};case 63:{_=mD(c[b+4>>2]|0)|0;xx(_,mD(c[b+8>>2]|0)|0);p=0;i=d;return p|0};case 64:{p=cs(mD(c[b+4>>2]|0)|0)|0;i=d;return p|0};case 75:{Tr(61448,(s=i,i=i+1|0,i=i+7&-8,c[s>>2]=0,s)|0);i=s;_=mD(c[b+4>>2]|0)|0;p=Dl(_,c[b+8>>2]|0,c[b+12>>2]|0,c[b+16>>2]|0,c[b+20>>2]|0,c[b+24>>2]|0)|0;i=d;return p|0};case 76:{p=Al(c[b+4>>2]|0)|0;i=d;return p|0};case 77:{p=Cl(c[b+4>>2]|0)|0;i=d;return p|0};case 78:{Gl(c[b+4>>2]|0);p=0;i=d;return p|0};case 79:{El(c[b+4>>2]|0,c[b+8>>2]|0,c[b+12>>2]|0,c[b+16>>2]|0,c[b+20>>2]|0);p=0;i=d;return p|0};case 80:{_=c[4917270]|0;U=mD(c[b+4>>2]|0)|0;P=mD(c[b+8>>2]|0)|0;X=mD(c[b+12>>2]|0)|0;Tk[_&255](U,P,X);p=0;i=d;return p|0};case 81:{X=mD(c[b+4>>2]|0)|0;p=up(X,mD(c[b+8>>2]|0)|0)|0;i=d;return p|0};case 54:case 87:{p=0;i=d;return p|0};default:{Ur(1,54024,(s=i,i=i+8|0,c[s>>2]=l,s)|0);i=s;return 0}}return 0}function Vp(){var a=0,b=0;a=i;In((Jn()|0)&-3);c[5497078]=0;b=c[236124]|0;if((b|0)==0){i=a;return}oD(b,2,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0)|0;i=b;gD(c[236124]|0);c[236124]=0;c[5720357]=0;c[5720374]=0;i=a;return}function Wp(){var a=0,b=0,d=0,e=0,f=0,g=0;a=i;b=~~+at(47992);if((c[5811764]|0)==0){d=b}else{d=(b-1|0)>>>0>1>>>0?2:b}b=iD(43848,4,d)|0;c[236124]=b;if((b|0)==0){Ur(0,182936,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}d=oD(b,0,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0)|0;i=e;if((d|0)==4){b=c[5720394]|0;if(b>>>0>1>>>0){f=b>>>0<8>>>0|0}else{f=0}oD(c[236124]|0,1,(e=i,i=i+8|0,c[e>>2]=f,e)|0)|0;i=e;i=a;return}f=c[236124]|0;if((d|0)!=6){gD(f);c[236124]=0;Ur(1,178856,(e=i,i=i+16|0,c[e>>2]=d,c[e+8>>2]=6,e)|0);i=e}d=c[5720394]|0;if(d>>>0>1>>>0){g=d>>>0<8>>>0|0}else{g=0}oD(f,1,(e=i,i=i+8|0,c[e>>2]=g,e)|0)|0;i=e;i=a;return}function Xp(){var a=0,b=0,d=0,e=0;a=i;b=c[236124]|0;if((b|0)==0){d=0;i=a;return d|0}e=oD(b,8,(b=i,i=i+8|0,c[b>>2]=c[5497082],b)|0)|0;i=b;d=e;i=a;return d|0}function Yp(){var d=0,e=0,f=0,g=0,h=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,A=0,B=0,C=0,D=0,E=0,F=0;d=i;c[7094418]=0;c[6924894]=1179011410;c[6924895]=0;c[6924896]=541677121;c[7094419]=12;c[7094434]=2;c[6924897]=1414744396;c[6924898]=0;c[6924899]=1819436136;c[6924900]=1751742049;a[27699604]=56;a[27699605]=0;a[27699606]=0;a[27699607]=0;e=c[7094404]|0;a[27699608]=e;a[27699609]=e>>>8;a[27699610]=e>>>16;a[27699611]=e>>>24;e=c[7094408]|0;f=c[7094403]|0;g=da(f,e)|0;a[27699612]=g;a[27699613]=g>>>8;a[27699614]=g>>>16;a[27699615]=g>>>24;c[6924904]=0;a[27699620]=16;a[27699621]=1;a[27699622]=0;a[27699623]=0;g=c[7094407]|0;h=g&255;a[27699624]=h;j=g>>>8&255;a[27699625]=j;k=g>>>16&255;a[27699626]=k;l=g>>>24&255;a[27699627]=l;c[6924907]=0;c[6925406]=56;g=(c[7094410]|0)==0;a[27699632]=g?1:2;a[27699633]=0;a[27699634]=0;a[27699635]=0;m=e&255;a[27699636]=m;n=e>>>8&255;a[27699637]=n;o=e>>>16&255;a[27699638]=o;p=e>>>24&255;a[27699639]=p;e=c[7094405]|0;q=e&255;a[27699640]=q;r=e>>>8&255;a[27699641]=r;s=e>>>16&255;a[27699642]=s;t=e>>>24&255;a[27699643]=t;u=c[7094406]|0;v=u&255;a[27699644]=v;w=u>>>8&255;a[27699645]=w;x=u>>>16&255;a[27699646]=x;y=u>>>24&255;a[27699647]=y;c[6924912]=0;c[6924913]=0;c[6924914]=0;c[6924915]=0;c[7094420]=88;c[7094434]=3;c[6924916]=1414744396;c[6924917]=0;c[6924918]=1819440243;c[6924919]=1752331379;a[27699680]=56;a[27699681]=0;a[27699682]=0;a[27699683]=0;c[6924921]=1935960438;c[6925406]=112;A=(c[7094409]|0)==0;c[6924922]=A?0:1196444237;c[6924923]=0;c[6924924]=0;c[6924925]=0;a[27699704]=1;a[27699705]=0;a[27699706]=0;a[27699707]=0;a[27699708]=f;a[27699709]=f>>>8;a[27699710]=f>>>16;a[27699711]=f>>>24;c[6924928]=0;a[27699716]=h;a[27699717]=j;a[27699718]=k;a[27699719]=l;a[27699720]=m;a[27699721]=n;a[27699722]=o;a[27699723]=p;c[6924931]=-1;c[6924932]=0;a[27699732]=0;a[27699733]=0;a[27699734]=0;a[27699735]=0;a[27699736]=q;a[27699737]=r;a[27699738]=v;a[27699739]=w;c[6924935]=1718776947;a[27699744]=40;a[27699745]=0;a[27699746]=0;a[27699747]=0;a[27699748]=40;a[27699749]=0;a[27699750]=0;a[27699751]=0;a[27699752]=q;a[27699753]=r;a[27699754]=s;a[27699755]=t;a[27699756]=v;a[27699757]=w;a[27699758]=x;a[27699759]=y;a[27699760]=1;a[27699761]=0;a[27699762]=24;a[27699763]=0;c[6925406]=188;if(A){c[6924941]=0;c[6925406]=192;A=da(e*3|0,u)|0;a[27699768]=A;a[27699769]=A>>>8;B=A>>>24&255;C=A>>>16&255}else{c[6924941]=1196444237;c[6925406]=192;A=da(u,e)|0;a[27699768]=A;a[27699769]=A>>>8;B=A>>>24&255;C=A>>>16&255}a[27699770]=C;a[27699771]=B;c[6924943]=0;c[6924944]=0;c[6924945]=0;c[6924946]=0;c[7094434]=2;a[27699668]=116;a[27699669]=0;a[27699670]=0;a[27699671]=0;c[6925406]=212;do{if(g){D=2;E=212}else{c[7094420]=212;c[7094434]=3;c[6924947]=1414744396;c[6924948]=0;c[6924949]=1819440243;c[6924950]=1752331379;a[27699804]=56;a[27699805]=0;a[27699806]=0;a[27699807]=0;c[6924952]=1935963489;c[6924953]=0;c[6924954]=0;c[6924955]=0;c[6924956]=0;B=c[7094415]|0;C=B&255;a[27699828]=C;A=B>>>8&255;a[27699829]=A;e=B>>>16&255;a[27699830]=e;u=B>>>24&255;a[27699831]=u;y=c[7094411]|0;x=da(y,B)|0;a[27699832]=x;a[27699833]=x>>>8;a[27699834]=x>>>16;a[27699835]=x>>>24;c[6924959]=0;x=(c[7094416]|0)/(B|0)|0;a[27699840]=x;a[27699841]=x>>>8;a[27699842]=x>>>16;a[27699843]=x>>>24;c[6924961]=0;c[6924962]=-1;a[27699852]=C;a[27699853]=A;a[27699854]=e;a[27699855]=u;a[27699856]=0;a[27699857]=0;a[27699858]=0;a[27699859]=0;a[27699860]=0;a[27699861]=0;a[27699862]=0;a[27699863]=0;c[6924966]=1718776947;a[27699868]=18;a[27699869]=0;a[27699870]=0;a[27699871]=0;u=c[7094412]|0;a[27699872]=u;a[27699873]=u>>>8;u=c[7094413]|0;a[27699874]=u;a[27699875]=u>>>8;a[27699876]=y;a[27699877]=y>>>8;a[27699878]=y>>>16;a[27699879]=y>>>24;u=c[7094415]|0;e=da(y,u)|0;a[27699880]=e;a[27699881]=e>>>8;a[27699882]=e>>>16;a[27699883]=e>>>24;a[27699884]=u;a[27699885]=u>>>8;u=c[7094414]|0;a[27699886]=u;a[27699887]=u>>>8;a[27699888]=0;a[27699889]=0;c[6925406]=314;u=c[7094434]|0;if((u|0)<1){Ur(1,136360,(F=i,i=i+1|0,i=i+7&-8,c[F>>2]=0,F)|0);i=F}e=u-1|0;c[7094434]=e;y=c[28377672+(e<<2)>>2]|0;A=310-y-4|0;a[y+27699580|0]=A;a[y+27699581|0]=A>>>8;a[y+27699582|0]=A>>>16;a[y+27699583|0]=A>>>24;c[6925406]=314;if((u|0)>=2){D=e;E=314;break}Ur(1,136360,(F=i,i=i+1|0,i=i+7&-8,c[F>>2]=0,F)|0);i=F}}while(0);g=D-1|0;c[7094434]=g;D=28377672+(g<<2)|0;e=c[D>>2]|0;u=e+4|0;A=E-u-4|0;a[27699576+u|0]=A;a[e+27699581|0]=A>>>8;a[e+27699582|0]=A>>>16;a[e+27699583|0]=A>>>24;c[6925406]=E;c[7094399]=E;if((g|0)==16){Ur(1,134904,(F=i,i=i+1|0,i=i+7&-8,c[F>>2]=0,F)|0);i=F}else{c[D>>2]=E;c[7094434]=(c[7094434]|0)+1;D=27699576+E|0;z=1414744396;b[D>>1]=z;b[D+2>>1]=z>>16;a[E+27699580|0]=0;a[E+27699581|0]=0;a[E+27699582|0]=0;a[E+27699583|0]=0;D=E+27699584|0;z=1769369453;b[D>>1]=z;b[D+2>>1]=z>>16;c[6925406]=E+12;i=d;return}}function Zp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;if((c[7094380]|0)!=0){d=0;i=b;return d|0}n$(28377520,0,228)|0;if((c[(c[5811772]|0)+32>>2]|0)<1){Sr(174464,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;d=0;i=b;return d|0}f=Zt(a)|0;c[7094381]=f;if((f|0)<1){d=0;i=b;return d|0}f=pC(171168,(e=i,i=i+8|0,c[e>>2]=a,e)|0)|0;i=e;g=Zt(f)|0;c[7094401]=g;if((g|0)<1){Yt(c[7094381]|0);d=0;i=b;return d|0}TB(28377528,a,64);a=c[(c[5811772]|0)+32>>2]|0;c[7094403]=a;c[7094404]=~~(1.0e6/+(a|0));a=c[5720347]|0;c[7094405]=a;g=c[5720348]|0;c[7094406]=g;c[7094409]=(c[(c[5811770]|0)+32>>2]|0)!=0;c[7094435]=gs((da((a*3|0)+15|0,g)|0)+15|0)|0;c[7094436]=gs(da(((c[7094405]|0)*3|0)+3&-4,c[7094406]|0)|0)|0;g=c[5385960]|0;c[7094411]=g;c[7094412]=1;a=c[5385956]|0;c[7094413]=a;f=c[5385959]|0;c[7094414]=f;c[7094415]=da(a,(f|0)/8|0)|0;f=c[7094403]|0;if(((g|0)%(f|0)|0|0)!=0){a=f;while(1){if((a|0)>0&((g|0)%(a|0)|0|0)!=0){a=a-1|0}else{break}}Sr(168176,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e}do{if((bt(164824)|0)==0){c[7094410]=0}else{if((VB(ct(161816)|0,158808)|0)==0){c[7094410]=0;Sr(154208,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;break}a=c[7094414]|0;g=c[7094413]|0;if((a|0)!=16|(g|0)!=2){Sr(156400,(e=i,i=i+16|0,c[e>>2]=a,c[e+8>>2]=g,e)|0);i=e;c[7094410]=0;break}else{c[7094410]=1;break}}}while(0);Yp();g=c[6925406]|0;if((gu(27699576,g,c[7094381]|0)|0)<(g|0)){Ur(1,138e3,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;return 0}c[7094398]=c[6925406];c[6925406]=0;g=c[7094434]|0;if((g|0)==16){Ur(1,134904,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;return 0}c[28377672+(g<<2)>>2]=0;c[7094434]=(c[7094434]|0)+1;c[6924894]=829973609;c[6924895]=0;c[6925406]=8;if((gu(27699576,8,c[7094401]|0)|0)<8){Ur(1,138e3,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;return 0}c[7094400]=4;c[7094380]=1;d=1;i=b;return d|0}function _p(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;i=i+8|0;f=e|0;g=c[7094398]|0;h=g-(c[7094399]|0)-8|0;j=d+1&-2;k=j-d|0;c[f>>2]=0;if((c[7094380]|0)==0){i=e;return}if((d+14+g+(c[7094402]<<4)|0)<0){bq()|0;g=pC(140424,(l=i,i=i+8|0,c[l>>2]=28377528,l)|0)|0;i=l;Zp(g)|0;i=e;return}c[6924894]=1667510320;g=d&255;a[27699580]=g;m=d>>>8&255;a[27699581]=m;n=d>>>16&255;a[27699582]=n;o=d>>>24&255;a[27699583]=o;c[6925406]=8;if((gu(27699576,8,c[7094381]|0)|0)<8){Ur(1,138e3,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l}if((gu(b,d,c[7094381]|0)|0)<(d|0)){Ur(1,138e3,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l}if((gu(f,k,c[7094381]|0)|0)<(k|0)){Ur(1,138e3,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l}k=j+8|0;c[7094398]=(c[7094398]|0)+k;c[7094407]=(c[7094407]|0)+1;c[7094400]=(c[7094400]|0)+k;if((c[7094408]|0)<(d|0)){c[7094408]=d}c[6924894]=1667510320;a[27699580]=16;a[27699581]=0;a[27699582]=0;a[27699583]=0;a[27699584]=h;a[27699585]=h>>>8;a[27699586]=h>>>16;a[27699587]=h>>>24;a[27699588]=g;a[27699589]=m;a[27699590]=n;a[27699591]=o;c[6925406]=16;if((gu(27699576,16,c[7094401]|0)|0)<16){Ur(1,138e3,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l}c[7094402]=(c[7094402]|0)+1;i=e;return}function $p(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+8|0;f=e|0;if(!((c[7094410]|0)!=0&(c[7094380]|0)!=0)){i=e;return}g=c[7584140]|0;if((d+14+g+(c[7094398]|0)+(c[7094402]<<4)|0)<0){bq()|0;h=pC(140424,(j=i,i=i+8|0,c[j>>2]=28377528,j)|0)|0;i=j;Zp(h)|0;i=e;return}if((g+d|0)>44100){Sr(147744,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;h=c[7584140]|0;k=44100-h|0;l=h}else{k=d;l=g}m$(30292456+l|0,b|0,k)|0;b=l+k|0;c[7584140]=b;k=~~+ca(+(c[7094411]|0)/+(c[7094403]|0));if((b|0)<(da(k,c[7094415]|0)|0)){i=e;return}k=(c[7094398]|0)-(c[7094399]|0)-8|0;l=b+1&-2;g=l-b|0;c[f>>2]=0;c[6924894]=1651978544;a[27699580]=b;a[27699581]=b>>>8;a[27699582]=b>>>16;a[27699583]=b>>>24;c[6925406]=8;if((gu(27699576,8,c[7094381]|0)|0)<8){Ur(1,138e3,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}b=c[7584140]|0;if((gu(30292456,b,c[7094381]|0)|0)<(b|0)){Ur(1,138e3,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}if((gu(f,g,c[7094381]|0)|0)<(g|0)){Ur(1,138e3,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}g=l+8|0;c[7094398]=(c[7094398]|0)+g;c[7094417]=(c[7094417]|0)+1;c[7094400]=(c[7094400]|0)+g;g=c[7584140]|0;c[7094416]=(c[7094416]|0)+g;c[6924894]=1651978544;c[6924895]=0;a[27699584]=k;a[27699585]=k>>>8;a[27699586]=k>>>16;a[27699587]=k>>>24;a[27699588]=g;a[27699589]=g>>>8;a[27699590]=g>>>16;a[27699591]=g>>>24;c[6925406]=16;if((gu(27699576,16,c[7094401]|0)|0)<16){Ur(1,138e3,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}c[7094402]=(c[7094402]|0)+1;c[7584140]=0;i=e;return}function aq(){if((c[7094380]|0)==0){return}fk[c[4917273]&127](c[7094405]|0,c[7094406]|0,c[7094435]|0,c[7094436]|0,c[7094409]|0);return}function bq(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;d=c[7094402]|0;e=pC(171168,(f=i,i=i+8|0,c[f>>2]=28377528,f)|0)|0;i=f;if((c[7094380]|0)==0){g=0;i=b;return g|0}c[7094380]=0;iu(c[7094401]|0,4,2)|0;a[27699576]=d<<4;a[27699577]=d>>>4;a[27699578]=d>>>12;a[27699579]=d>>>20;c[6925406]=4;if((gu(27699576,4,c[7094401]|0)|0)<4){Ur(1,138e3,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}Yt(c[7094401]|0);d=cu(e,28377604,1)|0;if((d|0)<1){Yt(c[7094381]|0);g=0;i=b;return g|0}h=c[7094401]|0;a:do{if((d|0)>2048){j=d;k=h;while(1){fu(27699576,2048,k)|0;if((gu(27699576,2048,c[7094381]|0)|0)<2048){break}c[7094398]=(c[7094398]|0)+2048;l=j-2048|0;m=c[7094401]|0;if((l|0)>2048){j=l;k=m}else{n=l;o=m;break a}}Ur(1,138e3,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}else{n=d;o=h}}while(0);fu(27699576,n,o)|0;if((gu(27699576,n,c[7094381]|0)|0)<(n|0)){Ur(1,138e3,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}c[7094398]=(c[7094398]|0)+n;Yt(c[7094401]|0);Tt(e);iu(c[7094381]|0,0,2)|0;Yp();e=(c[7094398]|0)-8|0;a[27699580]=e;a[27699581]=e>>>8;a[27699582]=e>>>16;a[27699583]=e>>>24;e=c[7094399]|0;n=c[7094400]|0;a[e+27699580|0]=n;a[e+27699581|0]=n>>>8;a[e+27699582|0]=n>>>16;a[e+27699583|0]=n>>>24;n=e+8|0;c[6925406]=n;if((gu(27699576,n,c[7094381]|0)|0)<(n|0)){Ur(1,138e3,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}es(c[7094435]|0);es(c[7094436]|0);Yt(c[7094381]|0);n=c[7094417]|0;Sr(142720,(f=i,i=i+24|0,c[f>>2]=c[7094407],c[f+8>>2]=n,c[f+16>>2]=28377528,f)|0);i=f;g=1;i=b;return g|0}function cq(){return c[7094380]|0}function dq(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0;b=i;d=(c[5458858]|0)+(c[a>>2]|0)|0;e=c[a+4>>2]|0;if(((e>>>0)%40|0|0)!=0){Ur(1,136568,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}a=(e>>>0)/40|0;if(e>>>0<40>>>0){Ur(1,124256,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}h=rs(a*48|0,0)|0;c[5497055]=h;c[5497054]=a;if(e>>>0>10279>>>0){Ur(1,113360,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{j=0;k=d;l=h}while(1){g[l+(j*48|0)>>2]=+g[k>>2]+-1.0;g[l+(j*48|0)+12>>2]=+g[k+12>>2]+1.0;g[l+(j*48|0)+4>>2]=+g[k+4>>2]+-1.0;g[l+(j*48|0)+16>>2]=+g[k+16>>2]+1.0;g[l+(j*48|0)+8>>2]=+g[k+8>>2]+-1.0;g[l+(j*48|0)+20>>2]=+g[k+20>>2]+1.0;do{if((j|0)!=0){h=c[k+36>>2]|0;d=l+(j*48|0)+36|0;c[d>>2]=h;f=rs(h<<2,0)|0;h=f;c[l+(j*48|0)+32>>2]=f-(c[5497051]|0)>>2;if((c[d>>2]|0)>0){f=k+32|0;e=0;do{c[h+(e<<2)>>2]=(c[f>>2]|0)+e;e=e+1|0;}while((e|0)<(c[d>>2]|0))}d=c[k+28>>2]|0;e=l+(j*48|0)+44|0;c[e>>2]=d;f=rs(d<<2,0)|0;d=f;c[l+(j*48|0)+40>>2]=f-(c[5497053]|0)>>2;if((c[e>>2]|0)<=0){break}f=k+24|0;h=0;do{c[d+(h<<2)>>2]=(c[f>>2]|0)+h;h=h+1|0;}while((h|0)<(c[e>>2]|0))}}while(0);e=j+1|0;if((e|0)>=(a|0)){break}j=e;k=k+40|0;l=c[5497055]|0}i=b;return}function eq(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0;b=i;d=c[a+4>>2]|0;if(((d>>>0)%12|0|0)!=0){Ur(1,104064,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}f=c[a>>2]|0;a=c[5458858]|0;h=(d>>>0)/12|0;j=rs((h*44|0)+44|0,0)|0;c[5497057]=j;c[5497056]=h;if(!(d>>>0>11>>>0)){i=b;return}d=j;j=0;k=a+f|0;while(1){f=c[5497043]|0;a=c[k>>2]|0;l=f+(a*12|0)|0;c[d+36>>2]=l;c[d+32>>2]=c[k+4>>2];m=c[k+8>>2]|0;c[d>>2]=m;if(!((m|0)>-1&(m|0)<(c[5497040]|0))){n=6;break}c[d+4>>2]=c[(c[5497041]|0)+(m*72|0)+68>>2];g[d+8>>2]=-0.0- +g[(c[l>>2]|0)+12>>2];g[d+20>>2]=+g[(c[f+((a+1|0)*12|0)>>2]|0)+12>>2];g[d+12>>2]=-0.0- +g[(c[f+((a+2|0)*12|0)>>2]|0)+12>>2];g[d+24>>2]=+g[(c[f+((a+3|0)*12|0)>>2]|0)+12>>2];g[d+16>>2]=-0.0- +g[(c[f+((a+4|0)*12|0)>>2]|0)+12>>2];g[d+28>>2]=+g[(c[f+((a+5|0)*12|0)>>2]|0)+12>>2];a=j+1|0;if((a|0)<(h|0)){d=d+44|0;j=a;k=k+12|0}else{n=8;break}}if((n|0)==6){Ur(1,53576,(e=i,i=i+8|0,c[e>>2]=m,e)|0);i=e}else if((n|0)==8){i=b;return}}function fq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;d=(c[5458858]|0)+(c[a>>2]|0)|0;e=c[a+4>>2]|0;if(((e>>>0)%48|0|0)!=0){Ur(1,104064,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}a=(e>>>0)/48|0;if(e>>>0<48>>>0){Ur(1,47712,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}f=rs((a*24|0)+48|0,0)|0;c[5497049]=f;c[5497048]=a;e=f;f=d;d=0;while(1){g=c[f>>2]|0;c[e>>2]=g;h=c[f+4>>2]|0;j=e+4|0;c[j>>2]=h;c[e+8>>2]=c[f+40>>2];c[e+12>>2]=c[f+44>>2];c[e+16>>2]=c[f+32>>2];c[e+20>>2]=c[f+36>>2];if((g|0)<(c[5497058]|0)){k=h}else{c[5497058]=g+1;k=c[j>>2]|0}j=c[5497064]|0;if((k|0)<(j|0)){l=j}else{j=k+1|0;c[5497064]=j;l=j}j=d+1|0;if((j|0)<(a|0)){e=e+24|0;f=f+48|0;d=j}else{break}}c[5497065]=rs(l<<3,0)|0;l=c[5497064]|0;c[5497066]=rs(da(l<<2,l)|0,0)|0;i=b;return}function gq(b){b=b|0;var d=0,e=0,f=0,h=0,j=0.0,k=0,l=0.0,m=0,n=0.0,o=0,p=0;d=i;e=(c[5458858]|0)+(c[b>>2]|0)|0;f=c[b+4>>2]|0;if((f&15|0)!=0){Ur(1,104064,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}b=f>>>4;if((b|0)==0){Ur(1,43608,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}h=rs((b*20|0)+240|0,0)|0;c[5497045]=h;c[5497044]=b;f=h;h=e;e=0;while(1){j=+g[h>>2];g[f>>2]=j;k=j<0.0|0;l=+g[h+4>>2];g[f+4>>2]=l;m=l<0.0?k|2:k;n=+g[h+8>>2];g[f+8>>2]=n;if(n<0.0){o=(m|4)&255}else{o=m&255}g[f+12>>2]=+g[h+12>>2];do{if(j==1.0){p=0}else{if(l==1.0){p=1;break}p=n==1.0?2:3}}while(0);a[f+16|0]=p;a[f+17|0]=o;m=e+1|0;if((m|0)<(b|0)){f=f+20|0;h=h+16|0;e=m}else{break}}i=d;return}function hq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;d=c[a+4>>2]|0;if((d&7|0)!=0){Ur(1,104064,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}f=c[a>>2]|0;a=c[5458858]|0;g=d>>>3;d=rs((g*12|0)+72|0,0)|0;c[5497043]=d;c[5497042]=g;if((g|0)==0){i=b;return}h=a+f|0;f=d;d=0;while(1){c[f>>2]=(c[5497045]|0)+((c[h>>2]|0)*20|0);j=c[h+4>>2]|0;c[f+8>>2]=j;if(!((j|0)>-1&(j|0)<(c[5497040]|0))){k=6;break}c[f+4>>2]=c[(c[5497041]|0)+(j*72|0)+64>>2];a=d+1|0;if((a|0)<(g|0)){h=h+8|0;f=f+12|0;d=a}else{k=8;break}}if((k|0)==6){Ur(1,182704,(e=i,i=i+8|0,c[e>>2]=j,e)|0);i=e}else if((k|0)==8){i=b;return}}function iq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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;d=i;i=i+12288|0;e=d|0;f=c[a+4>>2]|0;if(((f>>>0)%104|0|0)!=0){Ur(1,104064,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}j=(c[5458858]|0)+(c[a>>2]|0)|0;a=(f>>>0)/104|0;c[5497067]=a;c[5497068]=rs(a<<2,0)|0;k=(c[5458858]|0)+(c[b>>2]|0)|0;if((((c[b+4>>2]|0)>>>0)%44|0|0)!=0){Ur(1,104064,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}if(!(f>>>0>103>>>0)){l=12288;m=0;i=d;return}f=e|0;b=0;n=j;while(1){if((c[n+8>>2]|0)==2){j=rs(16,0)|0;c[(c[5497068]|0)+(b<<2)>>2]=j;o=c[n+96>>2]|0;p=c[n+100>>2]|0;q=da(p,o)|0;if((q|0)>1024){r=9;break}if((q|0)>0){s=0;t=k+((c[n+12>>2]|0)*44|0)|0;while(1){g[e+(s*12|0)>>2]=+g[t>>2];g[e+(s*12|0)+4>>2]=+g[t+4>>2];g[e+(s*12|0)+8>>2]=+g[t+8>>2];u=s+1|0;if((u|0)<(q|0)){s=u;t=t+44|0}else{break}}}t=c[n>>2]|0;s=c[5497041]|0;c[j+8>>2]=c[s+(t*72|0)+68>>2];c[j+4>>2]=c[s+(t*72|0)+64>>2];c[j+12>>2]=yq(o,p,f)|0}t=b+1|0;if((t|0)<(a|0)){b=t;n=n+104|0}else{r=15;break}}if((r|0)==9){Ur(1,178560,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}else if((r|0)==15){l=12288;m=0;i=d;return}}function jq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;i=i+152|0;g=f|0;h=f+8|0;if((b|0)==0){Ur(1,174352,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}if((a[b]|0)==0){Ur(1,174352,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}c[5497022]=gt(171080,168064,512)|0;c[5497020]=gt(164648,168064,512)|0;c[5497018]=gt(161648,158736,513)|0;Tr(156304,(j=i,i=i+16|0,c[j>>2]=b,c[j+8>>2]=d,j)|0);i=j;k=(d|0)==0;if(!((k$(21988096,b)|0)!=0|k)){c[e>>2]=c[7573108];l=144;m=0;i=f;return}n$(21988096,0,188)|0;uq();if((a[b]|0)==0){c[5497048]=1;c[5497058]=1;c[5497064]=1;c[5497055]=rs(48,0)|0;c[e>>2]=0;l=144;m=0;i=f;return}d=g;n=mu(b,d)|0;o=g|0;g=c[o>>2]|0;if((g|0)==0){Ur(1,154144,(j=i,i=i+8|0,c[j>>2]=b,j)|0);i=j}p=cv(g,n)|0;c[7573108]=p;c[e>>2]=p;p=c[o>>2]|0;m$(h|0,p|0,144)|0;o=c[h+4>>2]|0;if((o|0)!=46){Ur(1,152288,(j=i,i=i+24|0,c[j>>2]=b,c[j+8>>2]=o,c[j+16>>2]=46,j)|0);i=j}c[5458858]=p;o=p+(c[h+16>>2]|0)|0;p=c[h+20>>2]|0;if(((p>>>0)%72|0|0)!=0){Ur(1,54632,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}e=(p>>>0)/72|0;if(p>>>0<72>>>0){Ur(1,159152,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}p=e*72|0;n=rs(p,0)|0;c[5497041]=n;c[5497040]=e;m$(n|0,o|0,p)|0;fq(h+40|0);p=c[h+60>>2]|0;if((p&3|0)!=0){Ur(1,104064,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}o=c[h+56>>2]|0;n=c[5458858]|0;e=p>>>2;p=rs((e<<2)+4|0,0)|0;c[5497051]=p;c[5497050]=e;if((e|0)!=0){g=p;p=n+o|0;o=0;while(1){c[g>>2]=c[p>>2];n=o+1|0;if((n|0)<(e|0)){g=g+4|0;p=p+4|0;o=n}else{break}}}o=c[h+52>>2]|0;if((o&3|0)!=0){Ur(1,104064,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}p=c[h+48>>2]|0;g=c[5458858]|0;e=o>>>2;o=rs(e<<2,0)|0;c[5497053]=o;c[5497052]=e;if((e|0)!=0){n=o;o=g+p|0;p=0;while(1){c[n>>2]=c[o>>2];g=p+1|0;if((g|0)<(e|0)){n=n+4|0;o=o+4|0;p=g}else{break}}}gq(h+24|0);hq(h+80|0);eq(h+72|0);dq(h+64|0);p=(c[5458858]|0)+(c[h+32>>2]|0)|0;o=c[h+36>>2]|0;if(((o>>>0)%36|0|0)!=0){Ur(1,104064,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}n=(o>>>0)/36|0;if(o>>>0<36>>>0){Ur(1,60904,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}j=rs(n*12|0,0)|0;c[5497047]=j;c[5497046]=n;o=j;j=0;e=p;while(1){c[o>>2]=(c[5497045]|0)+((c[e>>2]|0)*20|0);c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];p=j+1|0;if((p|0)<(n|0)){o=o+12|0;j=p;e=e+36|0}else{break}}e=h+12|0;j=rs(c[e>>2]|0,0)|0;c[5497063]=j;o=c[e>>2]|0;c[5497062]=o;m$(j|0,(c[5458858]|0)+(c[h+8>>2]|0)|0,o)|0;o=c[h+140>>2]|0;if((o|0)==0){j=(c[5497058]|0)+31&-32;c[5497059]=j;e=rs(j,0)|0;c[5497060]=e;n$(e|0,-1|0,c[5497059]|0)|0}else{e=c[5458858]|0;j=c[h+136>>2]|0;c[5497061]=1;n=rs(o,0)|0;c[5497060]=n;c[5497058]=c[e+j>>2];c[5497059]=c[e+(j+4)>>2];m$(n|0,e+(j+8)|0,o-8|0)|0}iq(h+112|0,h+88|0);nu(c[d>>2]|0);kq();Vq();if(!k){l=144;m=0;i=f;return}TB(21988096,b,64);l=144;m=0;i=f;return}function kq(){var b=0,d=0,e=0,f=0,h=0;c[7092324]=(c[5497045]|0)+((c[5497044]|0)*20|0);b=c[5497056]|0;d=c[5497057]|0;c[7092338]=d+(b*44|0);c[d+(b*44|0)+32>>2]=6;c[d+(b*44|0)+36>>2]=(c[5497043]|0)+((c[5497042]|0)*12|0);c[(c[7092338]|0)+4>>2]=33554432;c[7092335]=1;b=c[5497050]|0;c[7092334]=b;c[(c[5497051]|0)+(b<<2)>>2]=c[5497056];b=0;do{d=(c[5497042]|0)+b|0;e=c[5497043]|0;f=b<<1;c[e+(d*12|0)>>2]=(c[5497045]|0)+(((b&1|f)+(c[5497044]|0)|0)*20|0);c[e+(d*12|0)+4>>2]=0;d=c[7092324]|0;e=b>>1;a[d+(f*20|0)+16|0]=e;a[d+(f*20|0)+17|0]=0;g[d+(f*20|0)+8>>2]=0.0;g[d+(f*20|0)+4>>2]=0.0;g[d+(f*20|0)>>2]=0.0;g[d+(f*20|0)+(e<<2)>>2]=1.0;d=f|1;f=c[7092324]|0;h=f+(d*20|0)|0;a[f+(d*20|0)+16|0]=e+3;a[f+(d*20|0)+17|0]=0;g[f+(d*20|0)+8>>2]=0.0;g[f+(d*20|0)+4>>2]=0.0;g[h>>2]=0.0;g[f+(d*20|0)+(e<<2)>>2]=-1.0;HB(h);b=b+1|0;}while((b|0)<6);return}function lq(){n$(21988096|0,0|0,188|0)|0;uq();return}function mq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if((a|0)<0){Ur(1,149992,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;return 0}e=c[5497054]|0;if((e|0)>(a|0)){f=(c[5497055]|0)+(a*48|0)|0;i=b;return f|0}if((a|0)==255){f=28369304;i=b;return f|0}if((a|0)<256){Ur(1,147624,(d=i,i=i+24|0,c[d>>2]=e,c[d+8>>2]=a,c[d+16>>2]=256,d)|0);i=d;return 0}else{Ur(1,149992,(d=i,i=i+8|0,c[d>>2]=a+256,d)|0);i=d;return 0}return 0}function nq(a){a=a|0;if((a|0)>-1&(c[5497054]|0)>(a|0)){i=i;return a|0}else{Ur(1,145136,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a;return 0}return 0}function oq(){return c[5497054]|0}function pq(){return c[5497063]|0}function qq(a){a=a|0;if((a|0)>-1&(c[5497048]|0)>(a|0)){i=i;return c[(c[5497049]|0)+(a*24|0)>>2]|0}else{Ur(1,142528,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a;return 0}return 0}function rq(a){a=a|0;if((a|0)>-1&(c[5497048]|0)>(a|0)){i=i;return c[(c[5497049]|0)+(a*24|0)+4>>2]|0}else{Ur(1,140312,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a;return 0}return 0}function sq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;g[7092326]=+g[a>>2];e=a+4|0;g[7092327]=+g[e>>2];f=a+8|0;g[7092328]=+g[f>>2];g[7092329]=+g[b>>2];h=b+4|0;g[7092330]=+g[h>>2];i=b+8|0;g[7092331]=+g[i>>2];if((d|0)!=0){j=254;return j|0}d=c[7092324]|0;g[d+12>>2]=+g[b>>2];g[d+32>>2]=-0.0- +g[b>>2];g[d+52>>2]=+g[a>>2];g[d+72>>2]=-0.0- +g[a>>2];g[d+92>>2]=+g[h>>2];g[d+112>>2]=-0.0- +g[h>>2];g[d+132>>2]=+g[e>>2];g[d+152>>2]=-0.0- +g[e>>2];g[d+172>>2]=+g[i>>2];g[d+192>>2]=-0.0- +g[i>>2];g[d+212>>2]=+g[f>>2];g[d+232>>2]=-0.0- +g[f>>2];d=c[7092338]|0;g[d+8>>2]=+g[a>>2];g[d+12>>2]=+g[e>>2];g[d+16>>2]=+g[f>>2];g[d+20>>2]=+g[b>>2];g[d+24>>2]=+g[h>>2];g[d+28>>2]=+g[i>>2];j=255;return j|0}function tq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0;e=i;if((a|0)<0){Ur(1,149992,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f}h=c[5497054]|0;do{if((h|0)>(a|0)){j=(c[5497055]|0)+(a*48|0)|0}else{if((a|0)==255){j=28369304;break}if((a|0)<256){Ur(1,147624,(f=i,i=i+24|0,c[f>>2]=h,c[f+8>>2]=a,c[f+16>>2]=256,f)|0);i=f}else{Ur(1,149992,(f=i,i=i+8|0,c[f>>2]=a+256,f)|0);i=f}}}while(0);g[b>>2]=+g[j>>2];g[b+4>>2]=+g[j+4>>2];g[b+8>>2]=+g[j+8>>2];g[d>>2]=+g[j+12>>2];g[d+4>>2]=+g[j+16>>2];g[d+8>>2]=+g[j+20>>2];i=e;return}function uq(){c[5389054]=0;c[5389056]=0;return}function vq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0;e=+g[a>>2];f=+g[b>>2];do{if(+S(+(e-f))<1.0e-4){if(!(+S(+(+g[a+4>>2]- +g[b+4>>2]))<1.0e-4)){break}if(!(+S(+(+g[a+8>>2]- +g[b+8>>2]))<1.0e-4)){break}if(!(+S(+(+g[a+12>>2]- +g[b+12>>2]))<.02)){break}c[d>>2]=0;h=1;return h|0}}while(0);if(!(+S(+(f+e))<1.0e-4)){h=0;return h|0}if(!(+S(+(+g[b+4>>2]+ +g[a+4>>2]))<1.0e-4)){h=0;return h|0}if(!(+S(+(+g[b+8>>2]+ +g[a+8>>2]))<1.0e-4)){h=0;return h|0}if(!(+S(+(+g[b+12>>2]+ +g[a+12>>2]))<.02)){h=0;return h|0}c[d>>2]=1;h=1;return h|0}function wq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0;d=i;e=c[4938830]|0;do{if((e|0)>0){f=0;while(1){h=f+1|0;if((vq(19680408+(f*20|0)|0,a,b)|0)!=0){j=f;k=7;break}l=c[4938830]|0;if((h|0)<(l|0)){f=h}else{break}}if((k|0)==7){i=d;return j|0}if((l|0)!=2048){m=l;break}Ur(1,52776,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}else{m=e}}while(0);g[19680408+(m*20|0)>>2]=+g[a>>2];e=a+4|0;g[19680412+(m*20|0)>>2]=+g[e>>2];l=a+8|0;g[19680416+(m*20|0)>>2]=+g[l>>2];g[19680420+(m*20|0)>>2]=+g[a+12>>2];k=+g[a>>2]<0.0|0;a=+g[e>>2]<0.0?k|2:k;c[19680424+(m*20|0)>>2]=+g[l>>2]<0.0?a|4:a;c[4938830]=m+1;c[b>>2]=0;j=(c[4938830]|0)-1|0;i=d;return j|0}function xq(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.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.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0.0,N=0,O=0,P=0,Q=0,R=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.0,fa=0;b=i;i=i+120|0;d=b|0;e=b+8|0;f=b+24|0;h=b+40|0;j=b+48|0;k=b+56|0;l=b+72|0;m=b+88|0;n=b+104|0;o=a|0;p=c[o>>2]|0;q=e|0;g[q>>2]=+g[19680408+(p*20|0)>>2];r=e+4|0;g[r>>2]=+g[19680412+(p*20|0)>>2];s=e+8|0;g[s>>2]=+g[19680416+(p*20|0)>>2];t=+g[19680420+(p*20|0)>>2];p=e+12|0;g[p>>2]=t;u=Kq(q,t)|0;c[h>>2]=u;v=a+4|0;w=c[v>>2]|0;x=(u|0)==0;a:do{if((w|0)>0){y=0;z=x;A=w;B=u;while(1){if(z){break}C=c[a+8+(y<<2)>>2]|0;if((C|0)==(c[o>>2]|0)){D=A;E=B}else{t=+g[19680408+(C*20|0)>>2];g[q>>2]=t;F=+g[19680412+(C*20|0)>>2];g[r>>2]=F;G=+g[19680416+(C*20|0)>>2];g[s>>2]=G;H=+g[19680420+(C*20|0)>>2];g[p>>2]=H;if((c[a+112+(y<<2)>>2]|0)==0){g[q>>2]=+g[219094]-t;g[r>>2]=+g[219095]-F;g[s>>2]=+g[219096]-G;G=-0.0-H;g[p>>2]=G;I=G}else{I=H}Mq(h,q,I,.10000000149011612);D=c[v>>2]|0;E=c[h>>2]|0}C=y+1|0;J=(E|0)==0;if((C|0)<(D|0)){y=C;z=J;A=D;B=E}else{K=E;L=J;break a}}i=b;return}else{K=u;L=x}}while(0);if(L){i=b;return}Jq(K,k|0,l|0);K=0;do{L=e+(K<<2)|0;x=l+(K<<2)|0;u=k+(K<<2)|0;E=-1;while(1){g[s>>2]=0.0;g[r>>2]=0.0;g[q>>2]=0.0;g[L>>2]=+(E|0);if((E|0)==1){M=+g[x>>2]}else{M=-0.0- +g[u>>2]}g[p>>2]=M;D=c[o>>2]|0;I=+g[19680408+(D*20|0)>>2];H=+g[q>>2];do{if(+S(+(I-H))<1.0e-4){if(!(+S(+(+g[19680412+(D*20|0)>>2]- +g[r>>2]))<1.0e-4)){N=21;break}if(!(+S(+(+g[19680416+(D*20|0)>>2]- +g[s>>2]))<1.0e-4)){N=21;break}if(!(+S(+(+g[19680420+(D*20|0)>>2]-M))<.02)){N=21;break}c[d>>2]=0}else{N=21}}while(0);b:do{if((N|0)==21){N=0;G=+g[s>>2];do{if(+S(+(I+H))<1.0e-4){if(!(+S(+(+g[r>>2]+ +g[19680412+(D*20|0)>>2]))<1.0e-4)){break}if(!(+S(+(G+ +g[19680416+(D*20|0)>>2]))<1.0e-4)){break}if(!(+S(+(M+ +g[19680420+(D*20|0)>>2]))<.02)){break}c[d>>2]=1;break b}}while(0);w=c[v>>2]|0;c:do{if((w|0)>0){F=+g[r>>2];B=0;d:while(1){A=c[a+8+(B<<2)>>2]|0;t=+g[19680408+(A*20|0)>>2];do{if(+S(+(t-H))<1.0e-4){if(!(+S(+(+g[19680412+(A*20|0)>>2]-F))<1.0e-4)){break}if(!(+S(+(+g[19680416+(A*20|0)>>2]-G))<1.0e-4)){break}if(+S(+(+g[19680420+(A*20|0)>>2]-M))<.02){O=0;break d}}}while(0);do{if(+S(+(t+H))<1.0e-4){if(!(+S(+(F+ +g[19680412+(A*20|0)>>2]))<1.0e-4)){break}if(!(+S(+(G+ +g[19680416+(A*20|0)>>2]))<1.0e-4)){break}if(+S(+(M+ +g[19680420+(A*20|0)>>2]))<.02){O=1;break d}}}while(0);A=B+1|0;if((A|0)<(w|0)){B=A}else{P=A;break c}}c[d>>2]=O;P=B}else{P=0}}while(0);if((P|0)!=(w|0)){break}if((w|0)>26){Sr(158464,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q}A=wq(q,d)|0;c[a+8+(c[v>>2]<<2)>>2]=A;c[a+216+(c[v>>2]<<2)>>2]=0;c[a+112+(c[v>>2]<<2)>>2]=c[d>>2];c[v>>2]=(c[v>>2]|0)+1}}while(0);if((E|0)<0){E=E+2|0}else{break}}K=K+1|0;}while((K|0)<3);K=c[h>>2]|0;P=c[K>>2]|0;if((P|0)>0){O=m|0;k=m+4|0;l=m+8|0;e=n+8|0;E=n+4|0;u=n|0;x=f|0;L=f+4|0;D=f+8|0;A=f+12|0;f=0;z=K;y=P;while(1){P=f+1|0;J=(P|0)%(y|0)|0;g[O>>2]=+g[z+4+(f*12|0)>>2]- +g[z+4+(J*12|0)>>2];g[k>>2]=+g[z+4+(f*12|0)+4>>2]- +g[z+4+(J*12|0)+4>>2];g[l>>2]=+g[z+4+(f*12|0)+8>>2]- +g[z+4+(J*12|0)+8>>2];e:do{if(!(+wB(O)<.5)){J=0;while(1){R=m+(J<<2)|0;M=+g[R>>2];if(+S(+(M+-1.0))<1.0e-4){N=48;break}C=J+1|0;if(+S(+(M+1.0))<1.0e-4){N=50;break}if((C|0)<3){J=C}else{T=0;break}}if((N|0)==48){N=0;g[l>>2]=0.0;g[k>>2]=0.0;g[O>>2]=0.0;g[R>>2]=1.0;T=0}else if((N|0)==50){N=0;g[l>>2]=0.0;g[k>>2]=0.0;g[O>>2]=0.0;g[R>>2]=-1.0;T=0}while(1){M=+g[m+(T<<2)>>2];J=T+1|0;if(M==-1.0|M==1.0){break e}if((J|0)<3){T=J}else{U=0;break}}do{J=n+(U<<2)|0;C=-1;while(1){g[e>>2]=0.0;g[E>>2]=0.0;g[u>>2]=0.0;g[J>>2]=+(C|0);M=+g[k>>2];H=+g[e>>2];I=+g[l>>2];G=+g[E>>2];g[q>>2]=M*H-I*G;F=+g[u>>2];t=+g[O>>2];g[r>>2]=I*F-t*H;g[s>>2]=t*G-M*F;f:do{if(!(+wB(q)<.5)){V=c[h>>2]|0;F=+g[q>>2];M=+g[r>>2];G=+g[s>>2];t=+g[V+4+(f*12|0)>>2]*F+ +g[V+4+(f*12|0)+4>>2]*M+ +g[V+4+(f*12|0)+8>>2]*G;g[p>>2]=t;W=c[V>>2]|0;g:do{if((W|0)>0){X=0;while(1){Y=X+1|0;if(+g[V+4+(X*12|0)>>2]*F+ +g[V+4+(X*12|0)+4>>2]*M+ +g[V+4+(X*12|0)+8>>2]*G-t>.1){Z=X;break g}if((Y|0)<(W|0)){X=Y}else{Z=Y;break}}}else{Z=0}}while(0);if((Z|0)<(W|0)){break}V=c[o>>2]|0;H=+g[19680408+(V*20|0)>>2];do{if(+S(+(H-F))<1.0e-4){if(!(+S(+(+g[19680412+(V*20|0)>>2]-M))<1.0e-4)){break}if(!(+S(+(+g[19680416+(V*20|0)>>2]-G))<1.0e-4)){break}if(!(+S(+(+g[19680420+(V*20|0)>>2]-t))<.02)){break}c[d>>2]=0;break f}}while(0);do{if(+S(+(H+F))<1.0e-4){if(!(+S(+(M+ +g[19680412+(V*20|0)>>2]))<1.0e-4)){break}if(!(+S(+(G+ +g[19680416+(V*20|0)>>2]))<1.0e-4)){break}if(!(+S(+(t+ +g[19680420+(V*20|0)>>2]))<.02)){break}c[d>>2]=1;break f}}while(0);V=c[v>>2]|0;h:do{if((V|0)>0){W=0;i:while(1){X=c[a+8+(W<<2)>>2]|0;H=+g[19680408+(X*20|0)>>2];do{if(+S(+(H-F))<1.0e-4){if(!(+S(+(+g[19680412+(X*20|0)>>2]-M))<1.0e-4)){break}if(!(+S(+(+g[19680416+(X*20|0)>>2]-G))<1.0e-4)){break}if(+S(+(+g[19680420+(X*20|0)>>2]-t))<.02){_=0;break i}}}while(0);do{if(+S(+(H+F))<1.0e-4){if(!(+S(+(M+ +g[19680412+(X*20|0)>>2]))<1.0e-4)){break}if(!(+S(+(G+ +g[19680416+(X*20|0)>>2]))<1.0e-4)){break}if(+S(+(t+ +g[19680420+(X*20|0)>>2]))<.02){_=1;break i}}}while(0);X=W+1|0;if((X|0)<(V|0)){W=X}else{$=X;break h}}c[d>>2]=_;$=W}else{$=0}}while(0);if(($|0)!=(V|0)){break}if((V|0)>26){Sr(158464,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q}X=wq(q,d)|0;c[a+8+(c[v>>2]<<2)>>2]=X;X=c[v>>2]|0;if((X|0)>0){Y=0;aa=X;while(1){if((c[a+8+(aa<<2)>>2]|0)==(c[a+8+(Y<<2)>>2]|0)){Sr(136248,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ba=c[v>>2]|0}else{ba=aa}ca=Y+1|0;if((ca|0)<(ba|0)){Y=ca;aa=ba}else{da=ba;break}}}else{da=X}c[a+216+(da<<2)>>2]=0;c[a+112+(c[v>>2]<<2)>>2]=c[d>>2];c[j>>2]=Lq(c[h>>2]|0)|0;aa=c[v>>2]|0;Y=c[a+8+(aa<<2)>>2]|0;t=+g[19680408+(Y*20|0)>>2];g[x>>2]=t;G=+g[19680412+(Y*20|0)>>2];g[L>>2]=G;M=+g[19680416+(Y*20|0)>>2];g[D>>2]=M;F=+g[19680420+(Y*20|0)>>2];g[A>>2]=F;if((c[a+112+(aa<<2)>>2]|0)==0){g[x>>2]=-0.0-t;g[L>>2]=-0.0-G;g[D>>2]=-0.0-M;M=-0.0-F;g[A>>2]=M;ea=M}else{ea=F}Mq(j,x,ea,.10000000149011612);aa=c[j>>2]|0;if((aa|0)==0){Tr(124056,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;break}else{Iq(aa);c[v>>2]=(c[v>>2]|0)+1;break}}}while(0);if((C|0)<0){C=C+2|0}else{break}}U=U+1|0;}while((U|0)<3)}}while(0);C=c[h>>2]|0;J=c[C>>2]|0;if((P|0)<(J|0)){f=P;z=C;y=J}else{fa=C;break}}}else{fa=K}Iq(fa);c[a+8+(c[v>>2]<<2)>>2]=c[o>>2];c[a+216+(c[v>>2]<<2)>>2]=0;c[a+112+(c[v>>2]<<2)>>2]=1;c[v>>2]=(c[v>>2]|0)+1;i=b;return}function yq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.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,_=0,$=0,aa=0,ba=0,ca=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.0,wa=0.0,xa=0,ya=0,za=0.0,Aa=0.0,Ba=0,Ca=0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0,Ia=0,Ja=0.0,Ka=0.0,La=0,Ma=0,Na=0.0,Oa=0.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,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0;e=i;i=i+332856|0;f=e|0;h=e+16|0;j=e+133144|0;if((a|0)<3|(b|0)<3|(d|0)==0){Ur(1,113176,(k=i,i=i+24|0,c[k>>2]=a,c[k+8>>2]=b,c[k+16>>2]=d,k)|0);i=k;return 0}if((a&1|0)==0){Ur(1,103784,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;return 0}if((b&1|0)==0){Ur(1,103784,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;return 0}if((a|0)>129|(b|0)>129){Ur(1,60736,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;return 0}l=j|0;c[l>>2]=a;m=j+4|0;c[m>>2]=b;n=j+8|0;c[n>>2]=0;o=j+12|0;c[o>>2]=0;do{if((a|0)>0){if((b|0)>0){p=0}else{q=0;r=b;break}do{s=0;do{t=(da(s,a)|0)+p|0;g[j+16+(p*1548|0)+(s*12|0)>>2]=+g[d+(t*12|0)>>2];g[j+16+(p*1548|0)+(s*12|0)+4>>2]=+g[d+(t*12|0)+4>>2];g[j+16+(p*1548|0)+(s*12|0)+8>>2]=+g[d+(t*12|0)+8>>2];s=s+1|0;}while((s|0)<(b|0));p=p+1|0;}while((p|0)<(a|0));u=c[m>>2]|0;v=14}else{u=b;v=14}}while(0);a:do{if((v|0)==14){if((u|0)<=0){q=0;r=u;break}b=(c[l>>2]|0)-1|0;a=0;while(1){p=0;while(1){w=+g[j+16+(a*12|0)+(p<<2)>>2]- +g[j+16+(b*1548|0)+(a*12|0)+(p<<2)>>2];d=p+1|0;if(w<-.1|w>.1){x=p;break}if((d|0)<3){p=d}else{x=d;break}}p=a+1|0;if((x|0)!=3){q=a;r=u;break a}if((p|0)<(u|0)){a=p}else{q=p;r=u;break}}}}while(0);c[n>>2]=(q|0)==(r|0);zq(j);Aq(j);r=c[l>>2]|0;q=c[m>>2]|0;do{if((r|0)>(q|0)){if((q|0)>0){y=0;z=r;A=q}else{B=r;C=q;break}while(1){u=y+1|0;if((u|0)<(z|0)){x=u;a=A;while(1){if((x|0)<(a|0)){b=j+16+(y*1548|0)+(x*12|0)|0;w=+g[b>>2];p=j+16+(y*1548|0)+(x*12|0)+4|0;D=+g[p>>2];d=j+16+(y*1548|0)+(x*12|0)+8|0;E=+g[d>>2];s=j+16+(x*1548|0)+(y*12|0)|0;g[b>>2]=+g[s>>2];b=j+16+(x*1548|0)+(y*12|0)+4|0;g[p>>2]=+g[b>>2];p=j+16+(x*1548|0)+(y*12|0)+8|0;g[d>>2]=+g[p>>2];g[s>>2]=w;g[b>>2]=D;g[p>>2]=E}else{g[j+16+(y*1548|0)+(x*12|0)>>2]=+g[j+16+(x*1548|0)+(y*12|0)>>2];g[j+16+(y*1548|0)+(x*12|0)+4>>2]=+g[j+16+(x*1548|0)+(y*12|0)+4>>2];g[j+16+(y*1548|0)+(x*12|0)+8>>2]=+g[j+16+(x*1548|0)+(y*12|0)+8>>2]}p=x+1|0;b=c[l>>2]|0;s=c[m>>2]|0;if((p|0)<(b|0)){x=p;a=s}else{F=b;G=s;break}}}else{F=z;G=A}if((u|0)<(G|0)){y=u;z=F;A=G}else{B=F;C=G;break}}}else{if((r|0)>0){H=0;I=q;J=r}else{B=r;C=q;break}while(1){a=H+1|0;if((a|0)<(I|0)){x=a;s=J;while(1){if((x|0)<(s|0)){b=j+16+(x*1548|0)+(H*12|0)|0;E=+g[b>>2];p=j+16+(x*1548|0)+(H*12|0)+4|0;D=+g[p>>2];d=j+16+(x*1548|0)+(H*12|0)+8|0;w=+g[d>>2];t=j+16+(H*1548|0)+(x*12|0)|0;g[b>>2]=+g[t>>2];b=j+16+(H*1548|0)+(x*12|0)+4|0;g[p>>2]=+g[b>>2];p=j+16+(H*1548|0)+(x*12|0)+8|0;g[d>>2]=+g[p>>2];g[t>>2]=E;g[b>>2]=D;g[p>>2]=w}else{g[j+16+(x*1548|0)+(H*12|0)>>2]=+g[j+16+(H*1548|0)+(x*12|0)>>2];g[j+16+(x*1548|0)+(H*12|0)+4>>2]=+g[j+16+(H*1548|0)+(x*12|0)+4>>2];g[j+16+(x*1548|0)+(H*12|0)+8>>2]=+g[j+16+(H*1548|0)+(x*12|0)+8>>2]}p=x+1|0;b=c[m>>2]|0;t=c[l>>2]|0;if((p|0)<(b|0)){x=p;s=t}else{K=b;L=t;break}}}else{K=I;L=J}if((a|0)<(L|0)){H=a;I=K;J=L}else{B=L;C=K;break}}}}while(0);c[l>>2]=C;c[m>>2]=B;K=c[n>>2]|0;c[n>>2]=c[o>>2];c[o>>2]=K;b:do{if((B|0)>0){K=C-1|0;L=0;while(1){J=0;while(1){w=+g[j+16+(L*12|0)+(J<<2)>>2]- +g[j+16+(K*1548|0)+(L*12|0)+(J<<2)>>2];I=J+1|0;if(w<-.1|w>.1){M=J;break}if((I|0)<3){J=I}else{M=I;break}}J=L+1|0;if((M|0)!=3){N=L;break b}if((J|0)<(B|0)){L=J}else{N=J;break}}}else{N=0}}while(0);c[n>>2]=(N|0)==(B|0);zq(j);Aq(j);B=rs(40,0)|0;N=B;M=B;C=B+12|0;KB(M,C);L=c[l>>2]|0;K=c[m>>2]|0;if((L|0)>0){J=0;a=K;I=L;while(1){if((a|0)>0){H=0;do{LB(j+16+(J*1548|0)+(H*12|0)|0,M,C);H=H+1|0;O=c[m>>2]|0;}while((H|0)<(O|0));P=O;Q=c[l>>2]|0}else{P=a;Q=I}H=J+1|0;if((H|0)<(Q|0)){J=H;a=P;I=Q}else{R=Q;S=P;break}}}else{R=L;S=K}K=R-1|0;L=da(S-1|0,K)|0;c[6924878]=L+(c[6924878]|0);c[4938830]=0;c[4938836]=0;if((K|0)>0){K=0;L=S;P=R;while(1){Q=K+1|0;if((L-1|0)>0){I=0;while(1){a=j+16+(K*1548|0)+(I*12|0)|0;J=I+1|0;O=j+16+(Q*1548|0)+(J*12|0)|0;c[h+(K*1032|0)+(I<<3)>>2]=Fq(a,j+16+(Q*1548|0)+(I*12|0)|0,O)|0;c[h+(K*1032|0)+(I<<3)+4>>2]=Fq(O,j+16+(K*1548|0)+(J*12|0)|0,a)|0;T=c[m>>2]|0;if((J|0)<(T-1|0)){I=J}else{break}}U=T;V=c[l>>2]|0}else{U=L;V=P}if((Q|0)<(V-1|0)){K=Q;L=U;P=V}else{W=V;X=U;break}}}else{W=R;X=S}if((W-1|0)<=0){Y=c[4938830]|0;Z=B+24|0;_=Z;c[_>>2]=Y;$=c[4938836]|0;aa=B+32|0;ba=aa;c[ba>>2]=$;ca=c[4938836]|0;ea=ca*320|0;fa=rs(ea,0)|0;ga=fa;ha=B+36|0;ia=ha;c[ia>>2]=ga;ja=c[4938836]|0;ka=ja*320|0;m$(fa|0,20589392,ka)|0;la=c[4938830]|0;ma=la*20|0;na=rs(ma,0)|0;oa=na;pa=B+28|0;qa=pa;c[qa>>2]=oa;ra=c[4938830]|0;sa=ra*20|0;m$(na|0,19680408,sa)|0;ta=133128;ua=0;va=+g[M>>2];wa=va+-1.0;g[M>>2]=wa;xa=B+4|0;ya=xa;za=+g[ya>>2];Aa=za+-1.0;g[ya>>2]=Aa;Ba=B+8|0;Ca=Ba;Da=+g[Ca>>2];Ea=Da+-1.0;g[Ca>>2]=Ea;Fa=+g[C>>2];Ga=Fa+1.0;g[C>>2]=Ga;Ha=B+16|0;Ia=Ha;Ja=+g[Ia>>2];Ka=Ja+1.0;g[Ia>>2]=Ka;La=B+20|0;Ma=La;Na=+g[Ma>>2];Oa=Na+1.0;g[Ma>>2]=Oa;Pa=199708;Qa=0;i=e;return N|0}S=f|0;R=f+4|0;U=f+8|0;f=0;V=X;X=W;c:while(1){W=f+1|0;if((V-1|0)>0){P=(f|0)>0;L=f-1|0;K=h+(f*1032|0)|0;T=0;I=V;do{do{if((T|0)>0){Ra=T-1|0;v=62}else{if((c[o>>2]|0)==0){J=h+(f*1032|0)+(T<<3)|0;a=c[J>>2]|0;Sa=J;Ta=(a|0)==-1|0;Ua=a;v=63;break}else{Ra=I-2|0;v=62;break}}}while(0);if((v|0)==62){v=0;a=c[h+(f*1032|0)+(Ra<<3)+4>>2]|0;J=h+(f*1032|0)+(T<<3)|0;O=c[J>>2]|0;H=(a|0)==(O|0);q=H&1;if((a|0)==-1|H){Sa=J;Ta=q;Ua=O;v=63}else{Va=a;Wa=J;Xa=q;Ya=I}}if((v|0)==63){v=0;q=j+16+(f*1548|0)+(T*12|0)|0;J=j+16+(W*1548|0)+(T*12|0)|0;do{if((Ua|0)==-1){a=c[h+(f*1032|0)+(T<<3)+4>>2]|0;if(!((a|0)==-1)){Za=a;break}Sr(156248,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;Za=-1}else{Za=Ua}}while(0);g[S>>2]=+g[q>>2]+ +g[19680408+(Za*20|0)>>2]*4.0;g[R>>2]=+g[j+16+(f*1548|0)+(T*12|0)+4>>2]+ +g[19680412+(Za*20|0)>>2]*4.0;g[U>>2]=+g[j+16+(f*1548|0)+(T*12|0)+8>>2]+ +g[19680416+(Za*20|0)>>2]*4.0;a=Fq(q,J,S)|0;Va=a;Wa=Sa;Xa=Ta;Ya=c[m>>2]|0}do{if((T|0)<(Ya-2|0)){_a=h+(f*1032|0)+(T+1<<3)|0;v=71}else{if((c[o>>2]|0)!=0){_a=K;v=71;break}a=h+(f*1032|0)+(T<<3)+4|0;O=c[a>>2]|0;$a=a;ab=(O|0)==-1|0;bb=O;v=72}}while(0);if((v|0)==71){v=0;J=c[_a>>2]|0;q=h+(f*1032|0)+(T<<3)+4|0;O=c[q>>2]|0;a=(J|0)==(O|0);H=a&1;if((J|0)==-1|a){$a=q;ab=H;bb=O;v=72}else{cb=J;db=q;eb=H}}if((v|0)==72){v=0;H=T+1|0;q=j+16+(f*1548|0)+(H*12|0)|0;J=j+16+(W*1548|0)+(H*12|0)|0;do{if((bb|0)==-1){O=c[h+(f*1032|0)+(T<<3)>>2]|0;if(!((O|0)==-1)){fb=O;break}Sr(156248,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;fb=-1}else{fb=bb}}while(0);g[S>>2]=+g[q>>2]+ +g[19680408+(fb*20|0)>>2]*4.0;g[R>>2]=+g[j+16+(f*1548|0)+(H*12|0)+4>>2]+ +g[19680412+(fb*20|0)>>2]*4.0;g[U>>2]=+g[j+16+(f*1548|0)+(H*12|0)+8>>2]+ +g[19680416+(fb*20|0)>>2]*4.0;cb=Fq(J,q,S)|0;db=$a;eb=ab}do{if(P){gb=L;v=80}else{if((c[n>>2]|0)==0){hb=(c[db>>2]|0)==-1|0;v=81;break}else{gb=(c[l>>2]|0)-2|0;v=80;break}}}while(0);if((v|0)==80){v=0;q=c[h+(gb*1032|0)+(T<<3)>>2]|0;J=(q|0)==(c[db>>2]|0);H=J&1;if((q|0)==-1|J){hb=H;v=81}else{ib=q;jb=H}}if((v|0)==81){v=0;H=j+16+(f*1548|0)+(T*12|0)|0;q=j+16+(f*1548|0)+((T+1|0)*12|0)|0;J=c[h+(f*1032|0)+(T<<3)+4>>2]|0;do{if((J|0)==-1){O=c[h+(f*1032|0)+(T<<3)>>2]|0;if(!((O|0)==-1)){kb=O;break}Sr(156248,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;kb=-1}else{kb=J}}while(0);g[S>>2]=+g[H>>2]+ +g[19680408+(kb*20|0)>>2]*4.0;g[R>>2]=+g[j+16+(f*1548|0)+(T*12|0)+4>>2]+ +g[19680412+(kb*20|0)>>2]*4.0;g[U>>2]=+g[j+16+(f*1548|0)+(T*12|0)+8>>2]+ +g[19680416+(kb*20|0)>>2]*4.0;ib=Fq(q,H,S)|0;jb=hb}do{if((f|0)<((c[l>>2]|0)-2|0)){lb=h+(W*1032|0)+(T<<3)+4|0;v=90}else{if((c[n>>2]|0)==0){mb=(c[Wa>>2]|0)==-1|0;v=91;break}else{lb=h+(T<<3)+4|0;v=90;break}}}while(0);if((v|0)==90){v=0;H=c[lb>>2]|0;q=(H|0)==(c[Wa>>2]|0);J=q&1;if((H|0)==-1|q){mb=J;v=91}else{nb=H;ob=J}}if((v|0)==91){v=0;J=j+16+(W*1548|0)+(T*12|0)|0;H=j+16+(W*1548|0)+((T+1|0)*12|0)|0;q=c[h+(f*1032|0)+(T<<3)>>2]|0;do{if((q|0)==-1){O=c[h+(f*1032|0)+(T<<3)+4>>2]|0;if(!((O|0)==-1)){pb=O;break}Sr(156248,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;pb=-1}else{pb=q}}while(0);g[S>>2]=+g[J>>2]+ +g[19680408+(pb*20|0)>>2]*4.0;g[R>>2]=+g[j+16+(W*1548|0)+(T*12|0)+4>>2]+ +g[19680412+(pb*20|0)>>2]*4.0;g[U>>2]=+g[j+16+(W*1548|0)+(T*12|0)+8>>2]+ +g[19680416+(pb*20|0)>>2]*4.0;nb=Fq(J,H,S)|0;ob=mb}q=c[4938836]|0;if((q|0)==1024){v=96;break c}O=20589392+(q*320|0)|0;n$(O|0,0,320)|0;a=c[Wa>>2]|0;do{if((a|0)==(c[db>>2]|0)){if((a|0)==-1){break}c[O>>2]=a;c[20589396+(q*320|0)>>2]=4;c[20589400+(q*320|0)>>2]=Va;c[20589608+(q*320|0)>>2]=Xa;c[20589404+(q*320|0)>>2]=nb;c[20589612+(q*320|0)>>2]=ob;c[20589408+(q*320|0)>>2]=cb;c[20589616+(q*320|0)>>2]=eb;c[20589412+(q*320|0)>>2]=ib;c[20589620+(q*320|0)>>2]=jb;Gq(O,j,f,T,-1);if((Hq(O)|0)==0){break}xq(O);c[4938836]=(c[4938836]|0)+1}else{c[O>>2]=a;c[20589396+(q*320|0)>>2]=3;c[20589400+(q*320|0)>>2]=Va;c[20589608+(q*320|0)>>2]=Xa;c[20589404+(q*320|0)>>2]=nb;c[20589612+(q*320|0)>>2]=ob;r=c[db>>2]|0;G=20589408+(q*320|0)|0;c[G>>2]=r;do{if((r|0)==-1){c[G>>2]=cb;if(!((cb|0)==-1)){break}F=T+1|0;A=j+16+(W*1548|0)+(F*12|0)|0;z=j+16+(f*1548|0)+(T*12|0)|0;y=c[h+(f*1032|0)+(T<<3)>>2]|0;do{if((y|0)==-1){s=c[h+(f*1032|0)+(T<<3)+4>>2]|0;if(!((s|0)==-1)){qb=s;break}Sr(156248,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;qb=-1}else{qb=y}}while(0);g[S>>2]=+g[A>>2]+ +g[19680408+(qb*20|0)>>2]*4.0;g[R>>2]=+g[j+16+(W*1548|0)+(F*12|0)+4>>2]+ +g[19680412+(qb*20|0)>>2]*4.0;g[U>>2]=+g[j+16+(W*1548|0)+(F*12|0)+8>>2]+ +g[19680416+(qb*20|0)>>2]*4.0;c[G>>2]=Fq(A,z,S)|0}}while(0);Gq(O,j,f,T,0);if((Hq(O)|0)==0){rb=c[4938836]|0}else{xq(O);G=(c[4938836]|0)+1|0;c[4938836]=G;rb=G}if((rb|0)==1024){v=111;break c}G=20589392+(rb*320|0)|0;n$(G|0,0,320)|0;c[G>>2]=c[db>>2];c[20589396+(rb*320|0)>>2]=3;c[20589400+(rb*320|0)>>2]=cb;c[20589608+(rb*320|0)>>2]=eb;c[20589404+(rb*320|0)>>2]=ib;c[20589612+(rb*320|0)>>2]=jb;r=c[Wa>>2]|0;y=20589408+(rb*320|0)|0;c[y>>2]=r;do{if((r|0)==-1){c[y>>2]=Va;if(!((Va|0)==-1)){break}s=j+16+(f*1548|0)+(T*12|0)|0;x=j+16+(W*1548|0)+((T+1|0)*12|0)|0;u=c[h+(f*1032|0)+(T<<3)+4>>2]|0;do{if((u|0)==-1){t=c[h+(f*1032|0)+(T<<3)>>2]|0;if(!((t|0)==-1)){sb=t;break}Sr(156248,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;sb=-1}else{sb=u}}while(0);g[S>>2]=+g[s>>2]+ +g[19680408+(sb*20|0)>>2]*4.0;g[R>>2]=+g[j+16+(f*1548|0)+(T*12|0)+4>>2]+ +g[19680412+(sb*20|0)>>2]*4.0;g[U>>2]=+g[j+16+(f*1548|0)+(T*12|0)+8>>2]+ +g[19680416+(sb*20|0)>>2]*4.0;c[y>>2]=Fq(s,x,S)|0}}while(0);Gq(G,j,f,T,1);if((Hq(G)|0)==0){break}xq(G);c[4938836]=(c[4938836]|0)+1}}while(0);T=T+1|0;I=c[m>>2]|0;}while((T|0)<(I-1|0));tb=I;ub=c[l>>2]|0}else{tb=V;ub=X}if((W|0)<(ub-1|0)){f=W;V=tb;X=ub}else{v=123;break}}if((v|0)==96){Ur(1,168032,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;return 0}else if((v|0)==111){Ur(1,168032,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;return 0}else if((v|0)==123){Y=c[4938830]|0;Z=B+24|0;_=Z;c[_>>2]=Y;$=c[4938836]|0;aa=B+32|0;ba=aa;c[ba>>2]=$;ca=c[4938836]|0;ea=ca*320|0;fa=rs(ea,0)|0;ga=fa;ha=B+36|0;ia=ha;c[ia>>2]=ga;ja=c[4938836]|0;ka=ja*320|0;m$(fa|0,20589392,ka)|0;la=c[4938830]|0;ma=la*20|0;na=rs(ma,0)|0;oa=na;pa=B+28|0;qa=pa;c[qa>>2]=oa;ra=c[4938830]|0;sa=ra*20|0;m$(na|0,19680408,sa)|0;ta=133128;ua=0;va=+g[M>>2];wa=va+-1.0;g[M>>2]=wa;xa=B+4|0;ya=xa;za=+g[ya>>2];Aa=za+-1.0;g[ya>>2]=Aa;Ba=B+8|0;Ca=Ba;Da=+g[Ca>>2];Ea=Da+-1.0;g[Ca>>2]=Ea;Fa=+g[C>>2];Ga=Fa+1.0;g[C>>2]=Ga;Ha=B+16|0;Ia=Ha;Ja=+g[Ia>>2];Ka=Ja+1.0;g[Ia>>2]=Ka;La=B+20|0;Ma=La;Na=+g[Ma>>2];Oa=Na+1.0;g[Ma>>2]=Oa;Pa=199708;Qa=0;i=e;return N|0}return 0} + + + +function cw(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=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=i;i=i+128|0;h=f;f=i;i=i+32|0;m$(f,h,32)|0;h=g|0;j=h;k=c[f>>2]|0;if(!((k-3|0)>>>0<4>>>0)){Ur(0,58208,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l}m=c[4908]|0;do{if((m|0)==-1){if(!((k-3|0)>>>0<2>>>0)){break}n=128;o=0;i=g;return}}while(0);p=c[4910]|0;do{if((p|0)==-1){if(!((k-5|0)>>>0<2>>>0)){q=10;break}n=128;o=0;i=g;return}else{if((k|0)!=6){q=10;break}if((c[(c[4939866]|0)+32>>2]&8|0)==0){n$(j|0,0,128)|0;r=h;b[h>>1]=10;s=h+8|0;c[s>>2]=c[5425934];c[s+4>>2]=c[5425935];c[s+8>>2]=c[5425936];c[s+12>>2]=c[5425937];s=b[f+24>>1]|0;b[r+2>>1]=s;t=0;u=s;v=10;w=6;x=r;break}else{n=128;o=0;i=g;return}}}while(0);do{if((q|0)==10){n$(j|0,0,128)|0;r=h;if((k|0)==4){b[h>>1]=2;s=c[f+4>>2]|0;c[h+4>>2]=s;y=b[f+24>>1]|0;b[r+2>>1]=y;t=s;u=y;v=2;w=4;x=r;break}else if((k|0)==3){b[h>>1]=2;y=b[f+24>>1]|0;b[r+2>>1]=y;c[h+4>>2]=-1;t=-1;u=y;v=2;w=3;x=r;break}else if((k|0)==5){b[h>>1]=10;y=h+8|0;s=f+8|0;c[y>>2]=c[s>>2];c[y+4>>2]=c[s+4>>2];c[y+8>>2]=c[s+8>>2];c[y+12>>2]=c[s+12>>2];s=b[f+24>>1]|0;b[r+2>>1]=s;c[h+24>>2]=c[f+28>>2];t=0;u=s;v=10;w=5;x=r;break}else{t=0;u=0;v=0;w=k;x=r;break}}}while(0);do{if(a[1168]&(w|0)==4){a[2156496]=0;a[2156497]=0;a[2156498]=0;a[2156499]=1;c[539125]=t;b[1078252]=u;m$(2156506,e|0,d)|0;z=Ud(m|0,2156496,d+10|0,0,2156480,16)|0;q=19}else{if((v<<16>>16|0)==2){z=Ud(m|0,e|0,d|0,0,x|0,16)|0;q=19;break}else if((v<<16>>16|0)==10){z=Ud(p|0,e|0,d|0,0,x|0,28)|0;q=19;break}else{break}}}while(0);do{if((q|0)==19){if((z|0)==-1){break}n=128;o=0;i=g;return}}while(0);z=c[(Fc()|0)>>2]|0;if((z|0)==11){n=128;o=0;i=g;return}else if((z|0)==99){q=21}do{if((q|0)==21){if((w|0)!=3){break}n=128;o=0;i=g;return}}while(0);w=Gc(z|0)|0;Sr(51536,(l=i,i=i+8|0,c[l>>2]=w,l)|0);i=l;n=128;o=0;i=g;return}function dw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;e=b;b=i;i=i+32|0;m$(b,e,32)|0;e=c[b>>2]|0;do{if((e|0)==5){f=a[b+8|0]|0;if(f<<24>>24==-2){if((a[b+9|0]&-64)<<24>>24==-128){g=1}else{break}i=d;return g|0}else{if((f&-2)<<24>>24==-4){g=1}else{break}i=d;return g|0}}else if((e|0)==2){g=1;i=d;return g|0}else if((e|0)==4){f=a[b+4|0]|0;if((f<<24>>24|0)==(-64|0)){if((a[b+5|0]|0)==-88){g=1}else{break}i=d;return g|0}else if((f<<24>>24|0)==(-84|0)){if((a[b+5|0]&-16)<<24>>24==16){g=1}else{break}i=d;return g|0}else if((f<<24>>24|0)==10|(f<<24>>24|0)==127){g=1;i=d;return g|0}else{break}}}while(0);f=c[4938834]|0;if((f|0)<=0){g=0;i=d;return g|0}if((e|0)==4){h=0;a:while(1){b:do{if((c[19928088+(h*280|0)>>2]|0)==4){j=19928100+(h*280|0)|0;k=19928228+(h*280|0)|0;l=0;while(1){m=l+1|0;if(!(((a[b+4+l|0]^a[j+l|0])&a[k+l|0])<<24>>24==0)){break b}if((m|0)<4){l=m}else{g=1;n=20;break a}}}}while(0);l=h+1|0;if((l|0)<(f|0)){h=l}else{g=0;n=20;break}}if((n|0)==20){i=d;return g|0}}else{h=0;c:while(1){d:do{if((c[19928088+(h*280|0)>>2]|0)==(e|0)){l=0;while(1){k=l+1|0;if(!(((a[b+8+l|0]^a[19928104+(h*280|0)+l|0])&a[19928232+(h*280|0)+l|0])<<24>>24==0)){break d}if((k|0)<16){l=k}else{g=1;n=20;break c}}}}while(0);l=h+1|0;if((l|0)<(f|0)){h=l}else{g=0;n=20;break}}if((n|0)==20){i=d;return g|0}}return 0}function ew(){var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+48|0;e=d|0;if((c[4938834]|0)>0){f=0}else{g=48;h=0;i=d;return}do{j=19928096+(f*280|0)|0;if((Pi(j|0,((b[j>>1]|0)==10?28:16)|0,e|0,48,0,0,1)|0)!=0){a[e]=0}j=c[19928088+(f*280|0)>>2]|0;if((j|0)==5){Sr(185448,(k=i,i=i+8|0,c[k>>2]=e,k)|0);i=k}else if((j|0)==4){Sr(46304,(k=i,i=i+8|0,c[k>>2]=e,k)|0);i=k}f=f+1|0;}while((f|0)<(c[4938834]|0));g=48;h=0;i=d;return}function fw(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=i;i=i+32|0;h=g|0;j=g+16|0;k=g+24|0;c[j>>2]=1;c[k>>2]=1;c[f>>2]=0;l=(d|0)!=0;if(l){Sr(181520,(m=i,i=i+16|0,c[m>>2]=d,c[m+8>>2]=e,m)|0);i=m}else{Sr(176808,(m=i,i=i+8|0,c[m>>2]=e,m)|0);i=m}n=Ti(2,2,17)|0;if((n|0)==-1){o=Fc()|0;c[f>>2]=c[o>>2];p=Gc(c[o>>2]|0)|0;Sr(173296,(m=i,i=i+8|0,c[m>>2]=p,m)|0);i=m;q=-1;i=g;return q|0}p=id(n|0,21537,(m=i,i=i+8|0,c[m>>2]=j,m)|0)|0;i=m;if((p|0)==-1){p=Fc()|0;j=Gc(c[p>>2]|0)|0;Sr(170176,(m=i,i=i+8|0,c[m>>2]=j,m)|0);i=m;c[f>>2]=c[p>>2];qg(n|0)|0;q=-1;i=g;return q|0}if((Cg(n|0,1,6,k|0,4)|0)==-1){k=Gc(c[(Fc()|0)>>2]|0)|0;Sr(167120,(m=i,i=i+8|0,c[m>>2]=k,m)|0);i=m}do{if(l){if((a[d]|0)==0){r=12;break}if((Wv(d,h,16,2)|0)!=0){break}qg(n|0)|0;q=-1;i=g;return q|0}else{r=12}}while(0);if((r|0)==12){b[h>>1]=2;c[h+4>>2]=0}if((e|0)==-1){b[h+2>>1]=0}else{b[h+2>>1]=Hj(e&65535|0)|0}if(!((Ve(n|0,h|0,16)|0)==-1)){q=n;i=g;return q|0}h=Fc()|0;e=Gc(c[h>>2]|0)|0;Sr(163504,(m=i,i=i+8|0,c[m>>2]=e,m)|0);i=m;c[f>>2]=c[h>>2];qg(n|0)|0;q=-1;i=g;return q|0}function gw(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;h=i;i=i+48|0;j=h|0;k=h+32|0;l=h+40|0;c[k>>2]=1;c[g>>2]=0;m=(d|0)!=0;do{if(m){if((oC(d,58)|0)==0){Sr(158152,(n=i,i=i+16|0,c[n>>2]=d,c[n+8>>2]=e,n)|0);i=n;break}else{Sr(160736,(n=i,i=i+16|0,c[n>>2]=d,c[n+8>>2]=e,n)|0);i=n;break}}else{Sr(155624,(n=i,i=i+8|0,c[n>>2]=e,n)|0);i=n}}while(0);o=Ti(10,2,17)|0;if((o|0)==-1){p=Fc()|0;c[g>>2]=c[p>>2];q=Gc(c[p>>2]|0)|0;Sr(153608,(n=i,i=i+8|0,c[n>>2]=q,n)|0);i=n;s=-1;i=h;return s|0}q=id(o|0,21537,(n=i,i=i+8|0,c[n>>2]=k,n)|0)|0;i=n;if((q|0)==-1){q=Fc()|0;k=Gc(c[q>>2]|0)|0;Sr(151728,(n=i,i=i+8|0,c[n>>2]=k,n)|0);i=n;c[g>>2]=c[q>>2];qg(o|0)|0;s=-1;i=h;return s|0}c[l>>2]=1;if((Cg(o|0,41,26,l|0,4)|0)==-1){l=Gc(c[(Fc()|0)>>2]|0)|0;Tr(149368,(n=i,i=i+8|0,c[n>>2]=l,n)|0);i=n}do{if(m){if((a[d]|0)==0){t=14;break}if((Wv(d,j,28,10)|0)!=0){break}qg(o|0)|0;s=-1;i=h;return s|0}else{t=14}}while(0);if((t|0)==14){b[j>>1]=10;t=j+8|0;c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2]}if((e|0)==-1){b[j+2>>1]=0}else{b[j+2>>1]=Hj(e&65535|0)|0}e=j;if((Ve(o|0,j|0,28)|0)==-1){j=Fc()|0;t=Gc(c[j>>2]|0)|0;Sr(146800,(n=i,i=i+8|0,c[n>>2]=t,n)|0);i=n;c[g>>2]=c[j>>2];qg(o|0)|0;s=-1;i=h;return s|0}if((f|0)==0){s=o;i=h;return s|0}j=f;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[j+16>>2]=c[e+16>>2];c[j+20>>2]=c[e+20>>2];c[j+24>>2]=c[e+24>>2];s=o;i=h;return s|0}function hw(){var b=0,d=0,e=0,f=0,g=0,h=0;b=i;i=i+32|0;d=b|0;e=c[4939860]|0;f=c[e+4>>2]|0;do{if((a[f]|0)==0){g=e}else{if((Wv(f,d,28,10)|0)==0){g=c[4939860]|0;break}h=d+8|0;c[5425934]=c[h>>2];c[5425935]=c[h+4>>2];c[5425936]=c[h+8>>2];c[5425937]=c[h+12>>2];h=c[(c[4939858]|0)+4>>2]|0;if((a[h]|0)==0){c[5425938]=0;i=b;return}else{c[5425938]=sf(h|0)|0;i=b;return}}}while(0);Sr(144360,(d=i,i=i+8|0,c[d>>2]=c[g>>2],d)|0);i=d;d=c[4939866]|0;nt(c[d>>2]|0,+(c[d+32>>2]|8|0));i=b;return}function iw(){var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+8|0;e=d|0;f=c[4910]|0;if((f|0)==-1|(c[2762]|0)!=-1){i=d;return}if((c[(c[4939866]|0)+32>>2]&8|0)!=0){i=d;return}do{if((a[28369368]|0)==-1){g=5}else{if((c[7092343]|c[7092342]|c[7092344]|c[7092345]|0)==0){g=5;break}h=c[(c[4939860]|0)+4>>2]|0;j=gw(h,(Hj(b[14184681]|0)|0)&65535,0,e)|0;c[2762]=j;if(!((j|0)==-1)){k=j;break}j=c[4910]|0;c[2762]=j;k=j}}while(0);if((g|0)==5){c[2762]=f;k=f}do{if((c[5425938]|0)==0){l=k}else{if((Cg(k|0,41,17,21703752,4)|0)>=0){l=c[2762]|0;break}f=Gc(c[(Fc()|0)>>2]|0)|0;Sr(141776,(m=i,i=i+8|0,c[m>>2]=f,m)|0);i=m;f=c[2762]|0;if((f|0)==(c[4910]|0)){l=f;break}qg(f|0)|0;c[2762]=-1;i=d;return}}while(0);if((Cg(l|0,41,20,21703736,20)|0)==0){i=d;return}l=Gc(c[(Fc()|0)>>2]|0)|0;Sr(139488,(m=i,i=i+8|0,c[m>>2]=l,m)|0);i=m;m=c[2762]|0;if((m|0)==(c[4910]|0)){i=d;return}qg(m|0)|0;c[2762]=-1;i=d;return}function jw(){var a=0;a=c[2762]|0;if((a|0)==-1){return}if((a|0)==(c[4910]|0)){Cg(a|0,41,21,21703736,20)|0}else{qg(a|0)|0}c[2762]=-1;return}function kw(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;i=i+80|0;f=e|0;g=e+16|0;h=g|0;a[1168]=0;Sr(137584,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=Ti(2,1,6)|0;c[1140]=k;if((k|0)==-1){k=Gc(c[(Fc()|0)>>2]|0)|0;Sr(136080,(j=i,i=i+8|0,c[j>>2]=k,j)|0);i=j;l=64;m=0;i=e;return}k=hd(c[(c[4939846]|0)+4>>2]|0)|0;if((k|0)==0){n=Gc(c[(Fc()|0)>>2]|0)|0;Sr(134600,(j=i,i=i+8|0,c[j>>2]=n,j)|0);i=j;l=64;m=0;i=e;return}if((c[k+8>>2]|0)!=2){Sr(133032,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;l=64;m=0;i=e;return}b[f>>1]=2;c[f+4>>2]=c[c[c[k+16>>2]>>2]>>2];b[f+2>>1]=Hj(c[(c[4939848]|0)+32>>2]&65535|0)|0;if(($d(c[1140]|0,f|0,16)|0)==-1){f=Gc(c[(Fc()|0)>>2]|0)|0;Sr(132024,(j=i,i=i+8|0,c[j>>2]=f,j)|0);i=j;l=64;m=0;i=e;return}if((a[c[(c[4939844]|0)+4>>2]|0]|0)==0){o=(a[c[(c[4939850]|0)+4>>2]|0]|0)!=0}else{o=1}a[h]=5;f=g+1|0;a[f]=o?2:1;k=g+2|0;a[k]=o?2:0;if((rb(c[1140]|0,h|0,(o?4:3)|0,0)|0)==-1){o=Gc(c[(Fc()|0)>>2]|0)|0;Sr(130832,(j=i,i=i+8|0,c[j>>2]=o,j)|0);i=j;l=64;m=0;i=e;return}o=ne(c[1140]|0,h|0,64,0)|0;if((o|0)==2){p=15}else if((o|0)==(-1|0)){o=Gc(c[(Fc()|0)>>2]|0)|0;Sr(129472,(j=i,i=i+8|0,c[j>>2]=o,j)|0);i=j;l=64;m=0;i=e;return}do{if((p|0)==15){if((a[h]|0)!=5){break}o=a[f]|0;n=o&255;if(!((n|0)==0|(n|0)==2)){Sr(127104,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;l=64;m=0;i=e;return}a:do{if(o<<24>>24==2){n=(c[4939844]|0)+4|0;q=o$(c[n>>2]|0)|0;r=(c[4939850]|0)+4|0;s=o$(c[r>>2]|0)|0;a[h]=1;a[f]=q;if((q|0)!=0){m$(k|0,c[n>>2]|0,q)|0}a[g+(q+2)|0]=s;n=q+3|0;if((s|0)!=0){m$(g+n|0,c[r>>2]|0,s)|0}if((rb(c[1140]|0,h|0,n+s|0,0)|0)==-1){s=Gc(c[(Fc()|0)>>2]|0)|0;Sr(130832,(j=i,i=i+8|0,c[j>>2]=s,j)|0);i=j;l=64;m=0;i=e;return}s=ne(c[1140]|0,h|0,64,0)|0;if((s|0)==(-1|0)){n=Gc(c[(Fc()|0)>>2]|0)|0;Sr(129472,(j=i,i=i+8|0,c[j>>2]=n,j)|0);i=j;l=64;m=0;i=e;return}else if((s|0)==2){p=28}do{if((p|0)==28){if((a[h]|0)!=1){break}if((a[f]|0)==0){break a}Sr(125720,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;l=64;m=0;i=e;return}}while(0);Sr(128320,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;l=64;m=0;i=e;return}}while(0);a[h]=5;a[f]=3;a[k]=0;o=g+3|0;a[o]=1;s=g+4|0;c[s>>2]=0;n=g+8|0;b[n>>1]=Hj(d&65535|0)|0;if((rb(c[1140]|0,h|0,10,0)|0)==-1){r=Gc(c[(Fc()|0)>>2]|0)|0;Sr(130832,(j=i,i=i+8|0,c[j>>2]=r,j)|0);i=j;l=64;m=0;i=e;return}r=ne(c[1140]|0,h|0,64,0)|0;if((r|0)==-1){q=Gc(c[(Fc()|0)>>2]|0)|0;Sr(129472,(j=i,i=i+8|0,c[j>>2]=q,j)|0);i=j;l=64;m=0;i=e;return}if(!((r|0)>1&(a[h]|0)==5)){Sr(128320,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;l=64;m=0;i=e;return}r=a[f]|0;if(!(r<<24>>24==0)){Sr(124800,(j=i,i=i+8|0,c[j>>2]=r&255,j)|0);i=j;l=64;m=0;i=e;return}r=a[o]|0;if(r<<24>>24==1){b[1078240]=2;c[539121]=c[s>>2];b[1078241]=b[n>>1]|0;n=2156488;s=n|0;z=0;b[s>>1]=z;b[s+2>>1]=z>>16;s=n+4|0;z=0;b[s>>1]=z;b[s+2>>1]=z>>16;a[1168]=1;l=64;m=0;i=e;return}else{Sr(123944,(j=i,i=i+8|0,c[j>>2]=r&255,j)|0);i=j;l=64;m=0;i=e;return}}}while(0);Sr(128320,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;l=64;m=0;i=e;return}function lw(){var d=0,e=0,f=0,g=0,h=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=i;i=i+400|0;e=d|0;f=d+304|0;g=d+336|0;h=d+344|0;j=d+360|0;k=d+392|0;l=c[(c[4939856]|0)+32>>2]|0;m=c[(c[4939854]|0)+32>>2]|0;n=h;o=j;p=d+48|0;c[g>>2]=0;c[4938834]=0;do{if(!((Xg(p|0,256)|0)==-1)){Sr(64024,(q=i,i=i+8|0,c[q>>2]=p,q)|0);i=q;n$(f|0,0,32)|0;c[f+8>>2]=2;do{if((hb(p|0,0,f|0,g|0)|0)==0){n$(n|0,0,16)|0;n$(o|0,0,28)|0;b[h>>1]=2;c[h+4>>2]=-1;b[j>>1]=10;n$(j+8|0,-1|0,16)|0;r=c[g>>2]|0;if((r|0)!=0){s=r;do{r=c[s+4>>2]|0;do{if((r|0)==2){t=c[s+20>>2]|0;if((t|0)==0){break}u=b[t>>1]|0;v=c[4938834]|0;if((v|0)>=32){break}if((u<<16>>16|0)==2){c[19928088+(v*280|0)>>2]=4;w=16}else if((u<<16>>16|0)==10){c[19928088+(v*280|0)>>2]=5;w=28}else{break}TB(19928072+(v*280|0)|0,28378576,16);v=c[4938834]|0;b[19928092+(v*280|0)>>1]=u;m$(19928096+(v*280|0)|0,t|0,w)|0;m$(19928224+(v*280|0)|0,n|0,w)|0;c[4938834]=v+1}else if((r|0)==10){v=c[s+20>>2]|0;if((v|0)==0){break}t=b[v>>1]|0;u=c[4938834]|0;if((u|0)>=32){break}if((t<<16>>16|0)==10){c[19928088+(u*280|0)>>2]=5;x=28}else if((t<<16>>16|0)==2){c[19928088+(u*280|0)>>2]=4;x=16}else{break}TB(19928072+(u*280|0)|0,28378576,16);u=c[4938834]|0;b[19928092+(u*280|0)>>1]=t;m$(19928096+(u*280|0)|0,v|0,x)|0;m$(19928224+(u*280|0)|0,o|0,x)|0;c[4938834]=u+1}}while(0);s=c[s+28>>2]|0;}while((s|0)!=0)}s=e|0;if((c[4938834]|0)>0){y=0}else{break}do{r=19928096+(y*280|0)|0;if((Pi(r|0,((b[r>>1]|0)==10?28:16)|0,s|0,48,0,0,1)|0)!=0){a[s]=0}r=c[19928088+(y*280|0)>>2]|0;if((r|0)==4){Sr(46304,(q=i,i=i+8|0,c[q>>2]=s,q)|0);i=q}else if((r|0)==5){Sr(185448,(q=i,i=i+8|0,c[q>>2]=s,q)|0);i=q}y=y+1|0;}while((y|0)<(c[4938834]|0))}}while(0);s=c[g>>2]|0;if((s|0)==0){break}Ai(s|0)}}while(0);do{if((c[(c[4939866]|0)+32>>2]&2|0)!=0){g=0;do{z=g+m|0;y=gw(c[(c[4939862]|0)+4>>2]|0,z,28369360,k)|0;c[4910]=y;if(!((y|0)==-1)){A=30;break}g=g+1|0;}while((c[k>>2]|0)!=97&(g|0)<10);if((A|0)==30){nt(123152,+(z|0));if(!((c[4910]|0)==-1)){break}}Sr(122272,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q}}while(0);if((c[(c[4939866]|0)+32>>2]&1|0)==0){i=d;return}else{B=0}do{C=B+l|0;z=fw(c[(c[4939864]|0)+4>>2]|0,C,k)|0;c[4908]=z;if(!((z|0)==-1)){A=34;break}B=B+1|0;}while((c[k>>2]|0)!=97&(B|0)<10);do{if((A|0)==34){nt(121496,+(C|0));if((c[(c[4939852]|0)+32>>2]|0)==0){break}kw(C)}}while(0);if(!((c[4908]|0)==-1)){i=d;return}Sr(120304,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;i=d;return}function mw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+8|0;d=b|0;e=gt(116688,115360,33)|0;c[4939866]=e;f=e+20|0;e=c[f>>2]|0;c[f>>2]=0;f=gt(114112,113112,32)|0;c[4939864]=f;g=f+20|0;f=(c[g>>2]|0)+e|0;c[g>>2]=0;g=gt(112168,111416,32)|0;c[4939862]=g;e=g+20|0;g=f+(c[e>>2]|0)|0;c[e>>2]=0;Ws(d,4);e=c[d>>2]&65535;c[d>>2]=e;f=pC(110696,(h=i,i=i+8|0,c[h>>2]=e,h)|0)|0;i=h;e=gt(121496,f,32)|0;c[4939856]=e;f=e+20|0;e=g+(c[f>>2]|0)|0;c[f>>2]=0;f=pC(110696,(h=i,i=i+8|0,c[h>>2]=c[d>>2],h)|0)|0;i=h;h=gt(123152,f,32)|0;c[4939854]=h;f=h+20|0;h=e+(c[f>>2]|0)|0;c[f>>2]=0;f=gt(109440,108216,33)|0;c[4939860]=f;e=f+20|0;f=h+(c[e>>2]|0)|0;c[e>>2]=0;e=gt(107352,28378576,33)|0;c[4939858]=e;h=e+20|0;e=f+(c[h>>2]|0)|0;c[h>>2]=0;h=gt(105456,104664,33)|0;c[4939852]=h;f=h+20|0;h=e+(c[f>>2]|0)|0;c[f>>2]=0;f=gt(103680,28378576,33)|0;c[4939846]=f;e=f+20|0;f=h+(c[e>>2]|0)|0;c[e>>2]=0;e=gt(102872,102016,33)|0;c[4939848]=e;h=e+20|0;e=f+(c[h>>2]|0)|0;c[h>>2]=0;h=gt(101184,28378576,33)|0;c[4939844]=h;f=h+20|0;h=e+(c[f>>2]|0)|0;c[f>>2]=0;f=gt(100016,28378576,33)|0;c[4939850]=f;e=f+20|0;f=c[e>>2]|0;c[e>>2]=0;c[4939868]=gt(98624,28378576,256)|0;e=(c[(c[4939866]|0)+32>>2]|0)==0?0:a;a=(e|0)==(c[4939842]|0);if(a&(h|0)==(-f|0)){i=b;return}f=(e|0)!=0;h=f&1;if(a){j=h}else{c[4939842]=e;j=h^1}do{if((j|0)!=0){h=c[4908]|0;if(!((h|0)==-1)){qg(h|0)|0;c[4908]=-1}h=c[2762]|0;if(!((h|0)==-1)){if((h|0)!=(c[4910]|0)){qg(h|0)|0}c[2762]=-1}h=c[4910]|0;if(!((h|0)==-1)){qg(h|0)|0;c[4910]=-1}h=c[1140]|0;if((h|0)==-1){break}qg(h|0)|0;c[1140]=-1}}while(0);if(!f){i=b;return}if((c[(c[4939866]|0)+32>>2]|0)==0){i=b;return}lw();hw();i=b;return}function nw(){mw(1);Gr(118904,390);return}function ow(){mw(1);return}function pw(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0.0,l=0,m=0;b=i;i=i+16456|0;d=b+16392|0;e=b+16424|0;f=b|0;hv(e,f,16385);if((bw(d,e,a)|0)==0){h=16385;j=0;i=b;return}do{k=+g[(c[4939868]|0)+28>>2];if(k<=0.0|k>100.0){l=5}else{m=v$()|0;if((m|0)>=(~~(+g[(c[4939868]|0)+28>>2]*21474836.47)|0)){l=5}}do{if((l|0)==5){l=0;if((c[(c[5451068]|0)+32>>2]|0)==0){Wo(d,e);break}else{zs(d,e);break}}}while(0);hv(e,f,16385);}while((bw(d,e,a)|0)!=0);h=16385;j=0;i=b;return}function qw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+136|0;d=b|0;e=b+8|0;n$(e|0,0,128)|0;f=(a|0)<0?0:a;a=c[4908]|0;if((a|0)==-1){g=-1}else{h=e+(a>>>5<<2)|0;c[h>>2]=c[h>>2]|1<<(a&31);g=a}a=c[4910]|0;if((a|0)==-1){j=g}else{h=e+(a>>>5<<2)|0;c[h>>2]=c[h>>2]|1<<(a&31);j=(g|0)==-1|(a|0)>(g|0)?a:g}c[d>>2]=(f|0)/1e3|0;c[d+4>>2]=((f|0)%1e3|0)*1e3|0;f=oc(j+1|0,e|0,0,0,d|0)|0;if((f|0)==-1){d=Gc(c[(Fc()|0)>>2]|0)|0;Sr(117704,(j=i,i=i+8|0,c[j>>2]=d,j)|0);i=j;k=128;l=0;i=b;return}if((f|0)<=0){k=128;l=0;i=b;return}pw(e);k=128;l=0;i=b;return}function rw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=c[f>>2]|0;c[7092716]=g;if((g&7|0)==0){a[e+(g>>3)|0]=0;h=c[7092716]|0}else{h=g}g=e+(h>>3)|0;a[g]=d[g]|0|b<<(h&7);h=(c[7092716]|0)+1|0;c[7092716]=h;c[f>>2]=h;return}function sw(a,b){a=a|0;b=b|0;var e=0,f=0;e=c[b>>2]|0;c[7092716]=e;f=(d[a+(e>>3)|0]|0)>>>((e&7)>>>0)&1;a=e+1|0;c[7092716]=a;c[b>>2]=a;return f|0}function tw(a,b){a=a|0;b=b|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;d=b&255;b=a+20+(d<<2)|0;e=c[b>>2]|0;if((e|0)!=0){uw(a,e);return}e=a|0;f=c[e>>2]|0;g=f+1|0;h=a+1052+(f<<5)|0;c[e>>2]=f+2;e=a+1052+(g<<5)|0;c[a+1052+(g<<5)+28>>2]=257;c[a+1052+(g<<5)+24>>2]=1;i=a+12|0;j=(c[i>>2]|0)+12|0;c[a+1052+(g<<5)+12>>2]=c[j>>2];k=c[j>>2]|0;do{if((k|0)==0){j=a+1048|0;l=c[j>>2]|0;if((l|0)==0){m=a+4|0;n=c[m>>2]|0;c[m>>2]=n+1;o=a+25628+(n<<2)|0}else{c[j>>2]=c[l>>2];o=l}c[a+1052+(g<<5)+20>>2]=o;c[o>>2]=e}else{c[k+16>>2]=e;l=c[(c[i>>2]|0)+12>>2]|0;if((c[l+24>>2]|0)==1){c[a+1052+(g<<5)+20>>2]=c[l+20>>2];break}l=a+1048|0;j=c[l>>2]|0;if((j|0)==0){n=a+4|0;m=c[n>>2]|0;c[n>>2]=m+1;p=a+25628+(m<<2)|0}else{c[l>>2]=c[j>>2];p=j}c[a+1052+(g<<5)+20>>2]=p;c[p>>2]=e}}while(0);c[(c[i>>2]|0)+12>>2]=e;c[a+1052+(g<<5)+16>>2]=c[i>>2];c[a+1052+(f<<5)+28>>2]=d;c[a+1052+(f<<5)+24>>2]=1;d=(c[i>>2]|0)+12|0;c[a+1052+(f<<5)+12>>2]=c[d>>2];p=c[d>>2]|0;do{if((p|0)==0){d=a+1048|0;k=c[d>>2]|0;if((k|0)==0){o=a+4|0;j=c[o>>2]|0;c[o>>2]=j+1;q=a+25628+(j<<2)|0}else{c[d>>2]=c[k>>2];q=k}c[a+1052+(f<<5)+20>>2]=q;c[q>>2]=h}else{c[p+16>>2]=h;k=c[(c[i>>2]|0)+12>>2]|0;if((c[k+24>>2]|0)==1){c[a+1052+(f<<5)+20>>2]=c[k+20>>2];break}k=a+1048|0;d=c[k>>2]|0;if((d|0)==0){j=a+4|0;o=c[j>>2]|0;c[j>>2]=o+1;r=a+25628+(o<<2)|0}else{c[k>>2]=c[d>>2];r=d}c[a+1052+(f<<5)+20>>2]=r;c[r>>2]=e}}while(0);c[(c[i>>2]|0)+12>>2]=h;c[a+1052+(f<<5)+16>>2]=c[i>>2];c[a+1052+(f<<5)+4>>2]=0;c[h>>2]=0;r=c[i>>2]|0;p=c[r+8>>2]|0;do{if((p|0)==0){c[a+8>>2]=e}else{q=p|0;if((c[q>>2]|0)==(r|0)){c[q>>2]=e;break}else{c[p+4>>2]=e;break}}}while(0);c[a+1052+(g<<5)+4>>2]=h;p=c[i>>2]|0;c[e>>2]=p;i=p+8|0;p=a+1052+(g<<5)+8|0;c[p>>2]=c[i>>2];c[a+1052+(f<<5)+8>>2]=e;c[i>>2]=e;c[b>>2]=h;uw(a,c[p>>2]|0);return}function uw(a,b){a=a|0;b=b|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;if((b|0)==0){return}d=b+12|0;e=c[d>>2]|0;do{if((e|0)!=0){if((c[e+24>>2]|0)!=(c[b+24>>2]|0)){break}f=c[c[b+20>>2]>>2]|0;g=b+8|0;h=c[g>>2]|0;if((f|0)==(h|0)){i=e}else{j=f+8|0;k=c[j>>2]|0;do{if((k|0)==0){c[a+8>>2]=b}else{l=k|0;if((c[l>>2]|0)==(f|0)){c[l>>2]=b;break}else{c[k+4>>2]=b;break}}}while(0);do{if((h|0)==0){c[a+8>>2]=f}else{l=h|0;if((c[l>>2]|0)==(b|0)){c[l>>2]=f;break}else{c[h+4>>2]=f;break}}}while(0);c[j>>2]=h;c[g>>2]=k;i=c[d>>2]|0}l=f+12|0;m=c[l>>2]|0;c[l>>2]=i;c[d>>2]=m;m=f+16|0;n=c[m>>2]|0;o=b+16|0;c[m>>2]=c[o>>2];c[o>>2]=n;n=c[l>>2]|0;if((n|0)==(f|0)){c[l>>2]=b;p=b}else{p=n}n=c[d>>2]|0;if((n|0)==(b|0)){c[d>>2]=f;q=c[l>>2]|0;r=f}else{q=p;r=n}if((q|0)==0){s=r}else{c[q+16>>2]=f;s=c[d>>2]|0}if((s|0)!=0){c[s+16>>2]=b}n=c[m>>2]|0;if((n|0)!=0){c[n+12>>2]=f}n=c[o>>2]|0;if((n|0)==0){break}c[n+12>>2]=b}}while(0);s=b+16|0;q=c[s>>2]|0;do{if((q|0)==0){t=c[b+24>>2]|0;u=32}else{r=c[q+24>>2]|0;p=c[b+24>>2]|0;if((r|0)!=(p|0)){t=p;u=32;break}c[c[b+20>>2]>>2]=q;v=r}}while(0);if((u|0)==32){q=b+20|0;c[c[q>>2]>>2]=0;r=c[q>>2]|0;q=a+1048|0;c[r>>2]=c[q>>2];c[q>>2]=r;v=t}t=v+1|0;c[b+24>>2]=t;v=c[d>>2]|0;do{if((v|0)==0){u=36}else{if((c[v+24>>2]|0)!=(t|0)){u=36;break}c[b+20>>2]=c[v+20>>2]}}while(0);if((u|0)==36){u=a+1048|0;v=c[u>>2]|0;if((v|0)==0){t=a+4|0;r=c[t>>2]|0;c[t>>2]=r+1;w=a+25628+(r<<2)|0}else{c[u>>2]=c[v>>2];w=v}c[b+20>>2]=w;c[w>>2]=b}w=b+8|0;v=c[w>>2]|0;if((v|0)==0){return}uw(a,v);v=c[s>>2]|0;if((v|0)!=(c[w>>2]|0)){return}a=c[d>>2]|0;u=v+12|0;c[d>>2]=c[u>>2];c[u>>2]=a;a=c[s>>2]|0;r=v+16|0;c[s>>2]=c[r>>2];c[r>>2]=a;a=c[d>>2]|0;if((a|0)==(b|0)){c[d>>2]=v;x=v}else{x=a}a=c[u>>2]|0;if((a|0)==(v|0)){c[u>>2]=b;y=c[d>>2]|0;z=b}else{y=x;z=a}if((y|0)==0){A=z}else{c[y+16>>2]=b;A=c[u>>2]|0}if((A|0)!=0){c[A+16>>2]=v}A=c[s>>2]|0;if((A|0)!=0){c[A+12>>2]=b}A=c[r>>2]|0;if((A|0)!=0){c[A+12>>2]=v}v=c[b+20>>2]|0;if((c[v>>2]|0)!=(b|0)){return}c[v>>2]=c[w>>2];return}function vw(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[f>>2]|0;c[7092716]=g;a:do{if((a|0)!=0){h=a;i=g;while(1){j=c[h+28>>2]|0;if((j|0)!=257){break}k=d[e+(i>>3)|0]|0;l=i+1|0;c[7092716]=l;m=c[((k&1<<(i&7)|0)==0?h|0:h+4|0)>>2]|0;if((m|0)==0){break a}else{h=m;i=l}}c[b>>2]=j;c[f>>2]=c[7092716];return}}while(0);c[b>>2]=0;return}function ww(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[b+20+(e<<2)>>2]|0;if((g|0)!=0){xw(g,0,f);return}ww(b,256,f);b=7;g=c[7092716]|0;while(1){if((g&7|0)==0){a[f+(g>>3)|0]=0;h=c[7092716]|0}else{h=g}i=f+(h>>3)|0;a[i]=d[i]|0|(e>>>(b>>>0)&1)<<(h&7);i=(c[7092716]|0)+1|0;c[7092716]=i;if((b|0)>0){b=b-1|0;g=i}else{break}}return}function xw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=c[b+8>>2]|0;if((g|0)!=0){xw(g,b,f)}if((e|0)==0){return}g=c[7092716]|0;h=(g&7|0)==0;if((c[b+4>>2]|0)==(e|0)){if(h){a[f+(g>>3)|0]=0;i=c[7092716]|0}else{i=g}e=f+(i>>3)|0;a[e]=d[e]|0|1<<(i&7);c[7092716]=(c[7092716]|0)+1;return}else{if(h){a[f+(g>>3)|0]=0;j=c[7092716]|0}else{j=g}c[7092716]=j+1;return}}function yw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[7092716]=c[e>>2];xw(c[a+20+(b<<2)>>2]|0,0,d);c[e>>2]=c[7092716];return}function zw(b,e){b=b|0;e=e|0;var f=0,g=0,h=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;f=i;i=i+94240|0;g=f|0;h=f+65536|0;j=g|0;k=b+20|0;l=(c[k>>2]|0)-e|0;m=b+12|0;n=c[m>>2]|0;if((l|0)<1){o=28700;p=0;q=65536;r=0;i=f;return}n$(h|0,0,28700)|0;c[h>>2]=1;s=h+1052|0;c[h+1044>>2]=s;c[h+16>>2]=s;c[h+12>>2]=s;t=h+8|0;c[t>>2]=s;c[h+1080>>2]=256;c[h+1076>>2]=0;c[h+1068>>2]=0;c[h+1064>>2]=0;c[h+1056>>2]=0;c[s>>2]=0;c[h+1060>>2]=0;s=(d[n+e|0]|0)<<8|(d[n+(e+1)|0]|0);u=(c[b+16>>2]|0)-e|0;b=(s|0)>(u|0)?u:s;c[7092716]=16;a:do{if((b|0)>0){s=0;u=16;while(1){if((u>>3|0)>(l|0)){break}v=c[t>>2]|0;b:do{if((v|0)==0){w=0}else{x=v;y=u;while(1){z=c[x+28>>2]|0;A=z&255;if((z|0)==256){break}else if((z|0)!=257){w=A;break b}A=d[n+((y>>3)+e)|0]|0;z=y+1|0;c[7092716]=z;B=c[((A&1<<(y&7)|0)==0?x|0:x+4|0)>>2]|0;if((B|0)==0){w=0;break b}else{x=B;y=z}}x=(d[n+((y>>3)+e)|0]|0)>>>((y&7)>>>0);z=y+1|0;c[7092716]=z;B=(d[n+((z>>3)+e)|0]|0)>>>((z&7)>>>0)&1;z=y+2|0;c[7092716]=z;A=(d[n+((z>>3)+e)|0]|0)>>>((z&7)>>>0)&1;z=y+3|0;c[7092716]=z;C=(d[n+((z>>3)+e)|0]|0)>>>((z&7)>>>0)&1;z=y+4|0;c[7092716]=z;D=(d[n+((z>>3)+e)|0]|0)>>>((z&7)>>>0)&1;z=y+5|0;c[7092716]=z;E=(d[n+((z>>3)+e)|0]|0)>>>((z&7)>>>0)&1;z=y+6|0;c[7092716]=z;F=(d[n+((z>>3)+e)|0]|0)>>>((z&7)>>>0)&1;z=y+7|0;c[7092716]=z;G=(d[n+((z>>3)+e)|0]|0)>>>((z&7)>>>0)&1;c[7092716]=y+8;w=(G|(F|(E|(D|(C|(A|(B|x<<1&2)<<1)<<1)<<1)<<1)<<1)<<1)&255}}while(0);a[g+s|0]=w;tw(h,w);v=s+1|0;if((v|0)>=(b|0)){break a}s=v;u=c[7092716]|0}a[g+s|0]=0}}while(0);c[k>>2]=b+e;m$((c[m>>2]|0)+e|0,j|0,b)|0;o=28700;p=0;q=65536;r=0;i=f;return}function Aw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;i=i+94240|0;f=e|0;g=e+65536|0;h=f|0;j=b+20|0;k=(c[j>>2]|0)-d|0;l=b+12|0;b=c[l>>2]|0;if((k|0)<1){m=28700;n=0;o=65536;p=0;i=e;return}n$(g|0,0,28700)|0;c[g>>2]=1;q=g+1052|0;c[g+1044>>2]=q;c[g+12>>2]=q;c[g+8>>2]=q;c[g+1080>>2]=256;c[g+1076>>2]=0;c[g+1068>>2]=0;c[g+1064>>2]=0;c[g+1056>>2]=0;c[q>>2]=0;c[g+1060>>2]=0;a[h]=k>>>8;a[f+1|0]=k;c[7092716]=16;f=0;do{q=a[b+(f+d)|0]|0;ww(g,q&255,h);tw(g,q);f=f+1|0;}while((f|0)<(k|0));k=c[l>>2]|0;l=(c[7092716]|0)+8|0;c[7092716]=l;c[j>>2]=(l>>3)+d;m$(k+d|0,h|0,c[7092716]>>3)|0;m=28700;n=0;o=65536;p=0;i=e;return}function Bw(a){a=a|0;var b=0;n$(a|0,0,57400)|0;c[a+28700>>2]=1;b=a+29752|0;c[a+29744>>2]=b;c[a+28716>>2]=b;c[a+28712>>2]=b;c[a+28708>>2]=b;c[a+29780>>2]=256;c[a+29776>>2]=0;c[a+29768>>2]=0;c[a+29764>>2]=0;c[a+29756>>2]=0;c[b>>2]=0;c[a+29760>>2]=0;c[a>>2]=1;b=a+1052|0;c[a+1044>>2]=b;c[a+12>>2]=b;c[a+8>>2]=b;c[a+1080>>2]=256;c[a+1076>>2]=0;c[a+1068>>2]=0;c[a+1064>>2]=0;c[a+1056>>2]=0;c[b>>2]=0;c[a+1060>>2]=0;return}function Cw(d,e,f,g){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,B=0,C=0,D=0,E=0,F=0;h=g|0;i=b[h>>1]|0;j=g+2|0;g=a[j]|0;k=g<<24>>24;if((f|0)<=0){l=g;m=i;b[h>>1]=m;a[j]=l;return}g=e;e=d;d=f;f=c[2832+(k<<2)>>2]|0;n=i<<16>>16;i=k;k=0;o=1;while(1){p=(b[e>>1]|0)-n|0;q=(p|0)<0;r=q?-p|0:p;s=f>>3;if((r|0)<(f|0)){t=s;u=r;v=0}else{t=s+f|0;u=r-f|0;v=4}r=f>>1;if((u|0)<(r|0)){w=t;x=u;y=v}else{w=t+r|0;x=u-r|0;y=v|2}r=f>>2;if((x|0)<(r|0)){z=w;A=y}else{z=w+r|0;A=y|1}r=(q?-z|0:z)+n|0;if((r|0)>32767){B=32767}else{B=(r|0)<-32768?-32768:r}r=A|p>>31&8;p=(c[20456+(r<<2)>>2]|0)+i|0;q=(p|0)<0?0:p;C=(q|0)>88?88:q;q=c[2832+(C<<2)>>2]|0;D=(o|0)!=0;if(D){E=r<<4&240;F=g}else{a[g]=r&15|k;E=k;F=g+1|0}r=d-1|0;if((r|0)>0){g=F;e=e+2|0;d=r;f=q;n=B;i=C;k=E;o=D&1^1}else{break}}o=C&255;C=B&65535;if(!D){l=o;m=C;b[h>>1]=m;a[j]=l;return}a[F]=E;l=o;m=C;b[h>>1]=m;a[j]=l;return}function Dw(d,e,f,g){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;h=g|0;i=b[h>>1]|0;j=g+2|0;g=a[j]|0;k=g<<24>>24;if((f|0)<=0){l=i;m=g;b[h>>1]=l;a[j]=m;return}g=d;d=0;n=f;f=c[2832+(k<<2)>>2]|0;o=i<<16>>16;i=k;k=0;p=0;while(1){q=(p|0)!=0;if(q){r=k;s=k;t=g}else{u=a[g]|0;r=u;s=u>>>4;t=g+1|0}u=(c[20456+((s&15)<<2)>>2]|0)+i|0;v=(u|0)<0?0:u;w=(v|0)>88?88:v;v=((s&4|0)==0?0:f)+(f>>3)|0;if((s&2|0)==0){x=v}else{x=v+(f>>1)|0}if((s&1|0)==0){y=x}else{y=x+(f>>2)|0}v=((s&8|0)==0?y:-y|0)+o|0;if((v|0)>32767){z=32767}else{z=(v|0)<-32768?-32768:v}v=c[2832+(w<<2)>>2]|0;A=z&65535;b[e+(d<<1)>>1]=A;u=n-1|0;if((u|0)>0){g=t;d=d+1|0;n=u;f=v;o=z;i=w;k=r;p=q&1^1}else{break}}l=A;m=w&255;b[h>>1]=l;a[j]=m;return}function Ew(c,d){c=c|0;d=d|0;var e=0,f=0;e=i;i=i+8|0;f=e|0;a[f+2|0]=a[c+2058|0]|0;b[f>>1]=b[c+2056>>1]|0;Dw(c,d,4096,f);i=e;return}function Fw(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+8|0;g=f|0;h=c[d+20>>2]|0;j=g+2|0;a[j]=0;k=g|0;b[k>>1]=b[e>>1]|0;if((h|0)==0){i=f;return}l=d|0;d=h;h=0;m=0;while(1){n=(d|0)>4096?4096:d;o=hx()|0;do{if((c[l>>2]|0)==0){c[l>>2]=o}else{if((h|0)==0){break}c[h+2048>>2]=o}}while(0);a[o+2058|0]=a[j]|0;b[o+2056>>1]=b[k>>1]|0;Cw(e+(m<<1)|0,o,n,g);if((d|0)==(n|0)){break}else{d=d-n|0;h=o;m=m+n|0}}i=f;return}function Gw(){var b=0,d=0;b=i;Sr(157976,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;if(!(a[9176]|0)){Sr(178448,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;Sr(185424,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=b;return}Sr(149944,(d=i,i=i+8|0,c[d>>2]=(c[5385956]|0)-1,d)|0);i=d;Sr(131208,(d=i,i=i+8|0,c[d>>2]=c[5385957],d)|0);i=d;Sr(120616,(d=i,i=i+8|0,c[d>>2]=c[5385959],d)|0);i=d;Sr(109888,(d=i,i=i+8|0,c[d>>2]=c[5385958],d)|0);i=d;Sr(100320,(d=i,i=i+8|0,c[d>>2]=c[5385960],d)|0);i=d;Sr(58192,(d=i,i=i+8|0,c[d>>2]=c[5385961],d)|0);i=d;if((c[4886280]|0)==0){Sr(46280,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;Sr(185424,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=b;return}else{Sr(51512,(d=i,i=i+8|0,c[d>>2]=19545192,d)|0);i=d;Sr(185424,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=b;return}}function Hw(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=i;i=i+96|0;d=b|0;e=b+64|0;f=d|0;a[f]=a[181512]|0;a[f+1|0]=a[181513]|0;a[f+2|0]=a[181514]|0;a[f+3|0]=a[181515]|0;a[f+4|0]=a[181516]|0;a[f+5|0]=a[181517]|0;f=d+16|0;a[f]=a[176800]|0;a[f+1|0]=a[176801]|0;a[f+2|0]=a[176802]|0;a[f+3|0]=a[176803]|0;a[f+4|0]=a[176804]|0;a[f+5|0]=a[176805]|0;f=d+32|0;a[f]=a[173288]|0;a[f+1|0]=a[173289]|0;a[f+2|0]=a[173290]|0;a[f+3|0]=a[173291]|0;a[f+4|0]=a[173292]|0;a[f+5|0]=a[173293]|0;f=d+48|0;a[f]=a[170168]|0;a[f+1|0]=a[170169]|0;a[f+2|0]=a[170170]|0;a[f+3|0]=a[170171]|0;a[f+4|0]=a[170172]|0;a[f+5|0]=a[170173]|0;m$(e|0,167104,10)|0;m$(e+16|0,163488,10)|0;if((c[4780712]|0)>0){g=19124952;h=0;j=0}else{k=0;Sr(158128,(l=i,i=i+8|0,c[l>>2]=k,l)|0);i=l;lx();m=64;n=0;i=b;return}while(1){f=c[g+20>>2]|0;o=f+j|0;p=d+(c[g+16>>2]<<4)|0;q=e+(c[g+8>>2]<<4)|0;Sr(160712,(l=i,i=i+32|0,c[l>>2]=f,c[l+8>>2]=p,c[l+16>>2]=g+28,c[l+24>>2]=q,l)|0);i=l;q=h+1|0;if((q|0)<(c[4780712]|0)){g=g+100|0;h=q;j=o}else{k=o;break}}Sr(158128,(l=i,i=i+8|0,c[l>>2]=k,l)|0);i=l;lx();m=64;n=0;i=b;return}function Iw(){Jw();a[9184]=1;return}function Jw(){var b=0,d=0,e=0,f=0;b=i;if(!(a[9176]|0)){i=b;return}d=c[4886280]|0;do{if((d|0)!=0){Yx(d);c[4886280]=0;c[4780580]=0;if(a[9176]|0){break}i=b;return}}while(0);n$(19869688,0,57344)|0;n$(19863544,0,6144)|0;c[4938832]=0;n$(19538976,0,6144)|0;d=19545120;e=19545056;while(1){c[e>>2]=d-128;f=e-64|0;if(f>>>0>19538976>>>0){d=e;e=f}else{break}}c[4884744]=0;c[5145154]=19545056;Tr(155592,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;n$(19122320,0,516)|0;e=c[5385959]|0;DL();d=c[5385961]|0;if((d|0)!=0){n$(d|0,((e|0)==8?-128:0)|0,(da(c[5385959]|0,c[5385957]|0)|0)/8|0|0)|0}CL();i=b;return}function Kw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;if(!(a[9176]|0)){e=0;i=d;return e|0}if((b|0)==0){Ur(0,113088,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}g=a[b]|0;if(g<<24>>24==0){Sr(112136,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;e=0;i=d;return e|0}if((o$(b|0)|0)>>>0>63>>>0){Sr(111376,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;e=0;i=d;return e|0}if(g<<24>>24==42){Sr(110640,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;e=0;i=d;return e|0}else{h=0;j=0;k=g}while(1){g=(t$(k<<24>>24|0)|0)&255;if((g<<24>>24|0)==46){l=j;break}else if((g<<24>>24|0)==92){m=47}else{m=g}g=(da(m<<24>>24,h+119|0)|0)+j|0;n=h+1|0;o=a[b+n|0]|0;if(o<<24>>24==0){l=g;break}else{h=n;j=g;k=o}}k=2170496+((l&127)<<2)|0;l=c[k>>2]|0;a:do{if((l|0)==0){p=15}else{j=l;while(1){if((VB(j+28|0,b)|0)==0){q=j;break a}h=c[j+96>>2]|0;if((h|0)==0){p=15;break}else{j=h}}}}while(0);do{if((p|0)==15){l=c[4780712]|0;b:do{if((l|0)>0){j=0;while(1){h=j+1|0;if((a[19124980+(j*100|0)|0]|0)==0){r=j;break b}if((h|0)<(l|0)){j=h}else{r=h;break}}}else{r=0}}while(0);do{if((r|0)==(l|0)){if((l|0)==4096){Ur(0,109408,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}else{c[4780712]=l+1;break}}}while(0);l=19124952+(r*100|0)|0;n$(l|0,0,100)|0;r$(19124980+(r*100|0)|0,b|0)|0;c[19125048+(r*100|0)>>2]=c[k>>2];c[k>>2]=l;if((l|0)==0){e=0}else{q=l;break}i=d;return e|0}}while(0);if((c[q>>2]|0)!=0){if((c[q+4>>2]|0)==0){e=(q-19124952|0)/100|0;i=d;return e|0}else{Sr(153560,(f=i,i=i+8|0,c[f>>2]=q+28,f)|0);i=f;e=0;i=d;return e|0}}k=q+8|0;c[k>>2]=0;c[q+12>>2]=0;r=q+4|0;do{if((kx(q)|0)==0){c[r>>2]=1;c[k>>2]=1}else{b=(c[r>>2]|0)==0;c[k>>2]=1;if(!b){break}e=(q-19124952|0)/100|0;i=d;return e|0}}while(0);Sr(153560,(f=i,i=i+8|0,c[f>>2]=q+28,f)|0);i=f;e=0;i=d;return e|0}function Lw(){a[9184]=0;if((c[4780712]|0)!=0){return}ix();n$(19124952,0,409600)|0;n$(2170496,0,512)|0;Kw(151704,0)|0;return}function Mw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;f=i;i=i+32|0;h=f|0;j=f+16|0;k=h|0;g[k>>2]=+g[a>>2]- +g[4984258];g[h+4>>2]=+g[a+4>>2]- +g[4984259];g[h+8>>2]=+g[a+8>>2]- +g[4984260];l=+wB(k)+-80.0;a=l<0.0;m=l*.0007999999797903001;FB(k,19937056,j|0);do{if((c[5385956]|0)==1){n=1.0;o=1.0}else{l=-0.0- +g[j+4>>2];p=(l+1.0)*.5;q=(1.0-l)*.5;l=p<0.0?0.0:p;if(!(q<0.0)){n=l;o=q;break}n=l;o=0.0}}while(0);l=1.0-(a?0.0:m);m=+(b|0);b=~~(m*l*n);c[e>>2]=(b|0)<0?0:b;b=~~(m*l*o);c[d>>2]=(b|0)<0?0:b;i=f;return}function Nw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ow(a,b,c,d,0);return}function Ow(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;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.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;j=i;if(a[9184]|a[9176]^1){i=j;return}k=(b|0)!=0;if(d>>>0>1023>>>0&(k^1)){Ur(1,117672,(l=i,i=i+8|0,c[l>>2]=d,l)|0);i=l}if(!((f|0)>-1&(c[4780712]|0)>(f|0))){Sr(116648,(l=i,i=i+8|0,c[l>>2]=f,l)|0);i=l;i=j;return}m=19124952+(f*100|0)|0;n=19124960+(f*100|0)|0;if((c[n>>2]|0)==0){if((kx(m)|0)==0){c[19124956+(f*100|0)>>2]=1}c[n>>2]=1}if((c[(c[553494]|0)+32>>2]|0)==1){Sr(115344,(l=i,i=i+16|0,c[l>>2]=c[4780710],c[l+8>>2]=19124980+(f*100|0),l)|0);i=l}n=Bs()|0;o=c[4984262]|0;p=(o|0)==(d|0);q=p?8:4;do{if((h|0)==0){if((b|0)==0){r=19869688+(d*56|0)|0;s=19869692+(d*56|0)|0;t=19869696+(d*56|0)|0}else{r=b;s=b+4|0;t=b+8|0}if(!p){u=0;break}v=+g[4984258]- +g[r>>2];w=+g[4984259]- +g[s>>2];x=+g[4984260]- +g[t>>2];if(v*v+w*w+x*x<=2304.0){y=18}else{u=0}}else{y=18}}while(0);if((y|0)==18){u=1}t=0;s=19538976;r=0;a:while(1){do{if((c[s+8>>2]|0)==(d|0)){if((c[s+52>>2]|0)!=(m|0)){z=r;break}if((n-(c[s>>2]|0)|0)<50){y=47;break a}z=r+1|0}else{z=r}}while(0);p=t+1|0;if((p|0)<96){t=p;s=s+64|0;r=z}else{break}}if((y|0)==47){i=j;return}if((z|0)>(q|0)){i=j;return}c[19125044+(f*100|0)>>2]=n;f=c[5145154]|0;if((f|0)==0){q=0;z=n;y=-1;r=19538976;while(1){s=c[r+8>>2]|0;do{if((s|0)!=(o|0)&(s|0)==(d|0)){t=c[r>>2]|0;if((t|0)>=(z|0)){A=y;B=z;break}p=(c[r+12>>2]|0)==7;A=p?y:q;B=p?z:t}else{A=y;B=z}}while(0);s=q+1|0;if((s|0)<96){q=s;z=B;y=A;r=r+64|0}else{break}}do{if((A|0)==-1){r=0;y=B;z=-1;q=19538976;while(1){do{if((c[q+8>>2]|0)==(o|0)){C=z;D=y}else{s=c[q>>2]|0;if((s|0)>=(y|0)){C=z;D=y;break}t=(c[q+12>>2]|0)==7;C=t?z:r;D=t?y:s}}while(0);s=r+1|0;if((s|0)<96){r=s;y=D;z=C;q=q+64|0}else{break}}if(!((C|0)==-1)){E=C;break}if((c[4884746]|0)==(o|0)){q=0;z=D;y=-1;r=19538976;while(1){s=c[r>>2]|0;t=(s|0)<(z|0);F=t?q:y;p=q+1|0;if((p|0)<96){q=p;z=t?s:z;y=F;r=r+64|0}else{break}}if(!((F|0)==-1)){E=F;break}}Sr(114096,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;i=j;return}else{E=A}}while(0);A=19538976+(E<<6)|0;c[A>>2]=n;G=A}else{c[5145154]=c[f>>2];c[f>>2]=Bs()|0;G=f}if(k){g[G+36>>2]=+g[b>>2];g[G+40>>2]=+g[b+4>>2];g[G+44>>2]=+g[b+8>>2];c[G+48>>2]=1}else{c[G+48>>2]=0}c[G+24>>2]=127;c[G+8>>2]=d;c[G+52>>2]=m;c[G+4>>2]=2147483647;c[G+12>>2]=e;c[G+16>>2]=127;c[G+20>>2]=127;c[G+56>>2]=0;c[G+60>>2]=u;i=j;return}function Pw(b,d){b=b|0;d=d|0;var e=0;e=i;if(a[9184]|a[9176]^1){i=e;return}if((b|0)>-1&(c[4780712]|0)>(b|0)){Ow(0,c[4984262]|0,d,b,1);i=e;return}else{Sr(149320,(d=i,i=i+8|0,c[d>>2]=b,d)|0);i=d;i=e;return}}function Qw(){var b=0,d=0,e=0,f=0;b=i;if(!(a[9176]|0)){i=b;return}n$(19869688,0,57344)|0;n$(19863544,0,6144)|0;c[4938832]=0;n$(19538976,0,6144)|0;d=19545120;e=19545056;while(1){c[e>>2]=d-128;f=e-64|0;if(f>>>0>19538976>>>0){d=e;e=f}else{break}}c[4884744]=0;c[5145154]=19545056;Tr(155592,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;n$(19122320,0,516)|0;e=c[5385959]|0;DL();d=c[5385961]|0;if((d|0)!=0){n$(d|0,((e|0)==8?-128:0)|0,(da(c[5385959]|0,c[5385957]|0)|0)/8|0|0)|0}CL();i=b;return}function Rw(){var a=0;a=c[4886280]|0;if((a|0)==0){return}Yx(a);c[4886280]=0;c[4780580]=0;return}function Sw(a){a=a|0;c[19869720+(a*56|0)>>2]=0;c[19869724+(a*56|0)>>2]=0;return}function Tw(a){a=a|0;var b=0,d=0,e=0;if((a|0)==0){b=0}else{a=0;do{c[19869720+(a*56|0)>>2]=0;c[19869724+(a*56|0)>>2]=0;a=a+1|0;}while((a|0)<1024);c[4938832]=0;return}do{a=19869724+(b*56|0)|0;do{if((c[a>>2]|0)==1){d=5}else{e=c[19869712+(b*56|0)>>2]|0;if((e|0)==0){break}if((c[e+20>>2]|0)==0){d=5}}}while(0);if((d|0)==5){d=0;c[19869720+(b*56|0)>>2]=0;c[a>>2]=0}b=b+1|0;}while((b|0)<1024);c[4938832]=0;return}function Uw(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;h=i;if(a[9184]|a[9176]^1){i=h;return}if(!((f|0)>-1&(c[4780712]|0)>(f|0))){Sr(146752,(j=i,i=i+8|0,c[j>>2]=f,j)|0);i=j;i=h;return}k=19124952+(f*100|0)|0;l=19124960+(f*100|0)|0;if((c[l>>2]|0)==0){if((kx(k)|0)==0){c[19124956+(f*100|0)>>2]=1}c[l>>2]=1}if((c[19124972+(f*100|0)>>2]|0)==0){Ur(1,144344,(j=i,i=i+8|0,c[j>>2]=19124980+(f*100|0),j)|0);i=j}m=+g[d>>2];g[19869688+(b*56|0)>>2]=m;n=+g[d+4>>2];g[19869692+(b*56|0)>>2]=n;o=+g[d+8>>2];g[19869696+(b*56|0)>>2]=o;p=+g[e>>2];g[19869700+(b*56|0)>>2]=p;d=e+4|0;q=+g[d>>2];g[19869704+(b*56|0)>>2]=q;j=e+8|0;r=+g[j>>2];g[19869708+(b*56|0)>>2]=r;c[19869720+(b*56|0)>>2]=1;c[19869724+(b*56|0)>>2]=1;f=19869728+(b*56|0)|0;c[f>>2]=0;l=19869736+(b*56|0)|0;g[l>>2]=1.0;s=19869732+(b*56|0)|0;g[s>>2]=1.0;c[19869712+(b*56|0)>>2]=k;do{if((c[(c[4883770]|0)+32>>2]|0)!=0){t=+g[e>>2];u=+g[d>>2];v=+g[j>>2];if(!(t*t+u*u+v*v>0.0)){break}c[f>>2]=1;k=c[4984262]|0;v=+g[19869688+(k*56|0)>>2];u=+g[19869692+(k*56|0)>>2];t=+g[19869696+(k*56|0)>>2];w=m-v;x=n-u;y=o-t;z=m+p-v;v=n+q-u;u=o+r-t;g[l>>2]=1.0;t=(z*z+v*v+u*u)/((w*w+x*x+y*y)*100.0);g[s>>2]=t;if(!(t>1.0)){c[f>>2]=0;break}if(!(t>50.0)){break}g[s>>2]=50.0}}while(0);c[19869740+(b*56|0)>>2]=c[5497080];i=h;return}function Vw(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0;h=i;if(a[9184]|a[9176]^1){i=h;return}if(!((f|0)>-1&(c[4780712]|0)>(f|0))){Sr(141720,(j=i,i=i+8|0,c[j>>2]=f,j)|0);i=j;i=h;return}k=19124952+(f*100|0)|0;l=19124960+(f*100|0)|0;if((c[l>>2]|0)==0){if((kx(k)|0)==0){c[19124956+(f*100|0)>>2]=1}c[l>>2]=1}if((c[19124972+(f*100|0)>>2]|0)==0){Ur(1,144344,(j=i,i=i+8|0,c[j>>2]=19124980+(f*100|0),j)|0);i=j}g[19869688+(b*56|0)>>2]=+g[d>>2];g[19869692+(b*56|0)>>2]=+g[d+4>>2];g[19869696+(b*56|0)>>2]=+g[d+8>>2];g[19869700+(b*56|0)>>2]=+g[e>>2];g[19869704+(b*56|0)>>2]=+g[e+4>>2];g[19869708+(b*56|0)>>2]=+g[e+8>>2];c[19869712+(b*56|0)>>2]=k;c[19869720+(b*56|0)>>2]=1;c[19869724+(b*56|0)>>2]=0;c[19869728+(b*56|0)>>2]=0;i=h;return}function Ww(){var a=0,b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=i;i=i+32|0;b=a|0;d=a+8|0;e=a+16|0;f=a+24|0;c[4938832]=0;h=Bs()|0;c[7095832]=(c[7095832]|0)+1;j=0;a:while(1){b:do{if((c[19869720+(j*56|0)>>2]|0)!=0){if((c[19869716+(j*56|0)>>2]|0)==(c[7095832]|0)){break}k=19869688+(j*56|0)|0;if((c[19869724+(j*56|0)>>2]|0)==0){Mw(k,90,b,d)}else{Mw(k,127,b,d)}k=19869712+(j*56|0)|0;c[(c[k>>2]|0)+92>>2]=h;l=j+1|0;if((l|0)<1024){m=l;do{do{if((c[19869720+(m*56|0)>>2]|0)!=0){if((c[19869728+(m*56|0)>>2]|0)!=0){break}l=19869712+(m*56|0)|0;if((c[l>>2]|0)!=(c[k>>2]|0)){break}c[19869716+(m*56|0)>>2]=c[7095832];n=19869688+(m*56|0)|0;if((c[19869724+(m*56|0)>>2]|0)==0){Mw(n,90,e,f)}else{Mw(n,127,e,f)}c[(c[l>>2]|0)+92>>2]=h;c[b>>2]=(c[b>>2]|0)+(c[e>>2]|0);c[d>>2]=(c[d>>2]|0)+(c[f>>2]|0)}}while(0);m=m+1|0;}while((m|0)<1024)}m=c[b>>2]|0;do{if((m|0)==0){if((c[d>>2]|0)==0){break b}o=0;p=c[4938832]|0}else{l=c[4938832]|0;if((m|0)<=255){o=m;p=l;break}c[b>>2]=255;o=255;p=l}}while(0);m=c[d>>2]|0;if((m|0)>255){c[d>>2]=255;q=255}else{q=m}c[19863568+(p<<6)>>2]=127;c[19863560+(p<<6)>>2]=o;c[19863564+(p<<6)>>2]=q;c[19863596+(p<<6)>>2]=c[k>>2];c[19863600+(p<<6)>>2]=c[19869728+(j*56|0)>>2];g[19863572+(p<<6)>>2]=+g[19869732+(j*56|0)>>2];g[19863576+(p<<6)>>2]=+g[19869736+(j*56|0)>>2];c[19863604+(p<<6)>>2]=0;m=p+1|0;c[4938832]=m;if((m|0)==96){r=25;break a}}}while(0);m=j+1|0;if((m|0)<1024){j=m}else{r=25;break}}if((r|0)==25){i=a;return}}function Xw(e,f,h,j,k,l,m,n){e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=+m;n=n|0;var o=0,p=0,q=0,r=0.0,s=0.0,t=0.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,J=0,K=0,L=0,M=0;o=i;i=i+16|0;p=o|0;q=o+8|0;if(a[9184]|a[9176]^1|e>>>0>128>>>0){i=o;return}if((c[(c[4781226]|0)+32>>2]|0)==0){if(n>>>0<1024>>>0){Mw(19869688+(n*56|0)|0,256,p,q);r=+(c[p>>2]|0);s=+(c[q>>2]|0)}else{c[q>>2]=256;c[p>>2]=256;r=256.0;s=256.0}t=+g[(c[553082]|0)+28>>2];u=~~(t*s*m);v=~~(r*m*t)}else{u=0;v=0}p=19122320+(e<<2)|0;q=c[p>>2]|0;n=c[553086]|0;if((q|0)<(n|0)){Tr(139440,(w=i,i=i+16|0,c[w>>2]=q,c[w+8>>2]=n,w)|0);i=w;x=c[553086]|0;c[p>>2]=x;y=x;z=x}else{y=q;z=n}t=+(h|0)/+(c[5385960]|0);h=(k|0)==2;n=(j|0)==2;a:do{if(h&n){if(t==1.0){if((f|0)<=0){A=y;break}q=l;x=0;B=y;while(1){C=B&16383;D=x<<1;c[2214032+(e<<17)+(C<<3)>>2]=da(b[q+(D<<1)>>1]|0,v)|0;c[2214032+(e<<17)+(C<<3)+4>>2]=da(b[q+((D|1)<<1)>>1]|0,u)|0;D=x+1|0;if((D|0)<(f|0)){x=D;B=B+1|0}else{break}}B=y+f|0;c[p>>2]=B;A=B;break}else{B=~~(t*0.0);if((B|0)>=(f|0)){A=y;break}x=l;q=0;D=B;B=y;do{C=B&16383;B=B+1|0;E=D<<1;c[2214032+(e<<17)+(C<<3)>>2]=da(b[x+(E<<1)>>1]|0,v)|0;c[2214032+(e<<17)+(C<<3)+4>>2]=da(b[x+((E|1)<<1)>>1]|0,u)|0;q=q+1|0;D=~~(t*+(q|0));}while((D|0)<(f|0));c[p>>2]=B;A=B;break}}else{D=(k|0)==1;if(D&n){q=~~(t*0.0);if((q|0)>=(f|0)){A=y;break}x=l;E=0;C=q;q=y;do{F=q&16383;q=q+1|0;G=b[x+(C<<1)>>1]|0;c[2214032+(e<<17)+(F<<3)>>2]=da(G,v)|0;c[2214032+(e<<17)+(F<<3)+4>>2]=da(G,u)|0;E=E+1|0;C=~~(t*+(E|0));}while((C|0)<(f|0));c[p>>2]=q;A=q;break}C=(j|0)==1;if(h&C){E=v<<8;x=u<<8;B=~~(t*0.0);if((B|0)<(f|0)){H=0;I=B;J=y}else{A=y;break}while(1){B=J&16383;G=J+1|0;c[p>>2]=G;F=I<<1;c[2214032+(e<<17)+(B<<3)>>2]=da(E,a[l+F|0]|0)|0;c[2214032+(e<<17)+(B<<3)+4>>2]=da(x,a[l+(F|1)|0]|0)|0;F=H+1|0;B=~~(t*+(F|0));if((B|0)<(f|0)){H=F;I=B;J=G}else{A=G;break a}}}if(!(D&C)){A=y;break}x=v<<8;E=u<<8;q=~~(t*0.0);if((q|0)<(f|0)){K=0;L=q;M=y}else{A=y;break}while(1){q=M&16383;G=M+1|0;c[p>>2]=G;B=l+L|0;c[2214032+(e<<17)+(q<<3)>>2]=da(x,(d[B]|0)-128|0)|0;c[2214032+(e<<17)+(q<<3)+4>>2]=da(E,(d[B]|0)-128|0)|0;B=K+1|0;q=~~(t*+(B|0));if((q|0)<(f|0)){K=B;L=q;M=G}else{A=G;break}}}}while(0);if((A|0)<=(z+16384|0)){i=o;return}Tr(137544,(w=i,i=i+16|0,c[w>>2]=A,c[w+8>>2]=z,w)|0);i=w;i=o;return}function Yw(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if(a>>>0>1023>>>0){Ur(1,136032,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e}else{g[19869688+(a*56|0)>>2]=+g[b>>2];g[19869692+(a*56|0)>>2]=+g[b+4>>2];g[19869696+(a*56|0)>>2]=+g[b+8>>2];i=d;return}}function Zw(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0;f=i;i=i+16|0;h=f|0;if(a[9184]|a[9176]^1){i=f;return}c[4984262]=b;g[4984258]=+g[d>>2];g[4984259]=+g[d+4>>2];g[4984260]=+g[d+8>>2];g[4984264]=+g[e>>2];g[4984265]=+g[e+4>>2];g[4984266]=+g[e+8>>2];g[4984267]=+g[e+12>>2];g[4984268]=+g[e+16>>2];g[4984269]=+g[e+20>>2];g[4984270]=+g[e+24>>2];g[4984271]=+g[e+28>>2];g[4984272]=+g[e+32>>2];e=h|0;d=h+4|0;b=h+8|0;h=0;j=19538976;while(1){do{if((c[j+52>>2]|0)!=0){if((c[j+60>>2]|0)!=0){k=c[j+24>>2]|0;c[j+16>>2]=k;c[j+20>>2]=k;break}if((c[j+48>>2]|0)==0){k=c[j+8>>2]|0;g[e>>2]=+g[19869688+(k*56|0)>>2];g[d>>2]=+g[19869692+(k*56|0)>>2];l=19869696+(k*56|0)|0}else{g[e>>2]=+g[j+36>>2];g[d>>2]=+g[j+40>>2];l=j+44|0}g[b>>2]=+g[l>>2];Mw(e,c[j+24>>2]|0,j+16|0,j+20|0)}}while(0);k=h+1|0;if((k|0)<96){h=k;j=j+64|0}else{break}}Ww();i=f;return}function _w(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;if(a[9184]|a[9176]^1){i=b;return}if((c[(c[553494]|0)+32>>2]|0)==2){d=0;e=0;f=19538976;while(1){g=c[f+52>>2]|0;do{if((g|0)==0){h=e}else{j=c[f+16>>2]|0;k=c[f+20>>2]|0;if((j|k|0)==0){h=e;break}Sr(134584,(l=i,i=i+24|0,c[l>>2]=j,c[l+8>>2]=k,c[l+16>>2]=g+28,l)|0);i=l;h=e+1|0}}while(0);g=d+1|0;if((g|0)<96){d=g;e=h;f=f+64|0}else{break}}f=c[4780710]|0;Sr(133e3,(l=i,i=i+16|0,c[l>>2]=h,c[l+8>>2]=f,l)|0);i=l}$w();ax();i=b;return}function $w(){var b=0,d=0,e=0,f=0,h=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;b=i;i=i+3e4|0;d=b|0;e=c[4886280]|0;if((e|0)==0){f=3e4;h=0;i=b;return}if(!(+g[(c[4781232]|0)+28>>2]>0.0)){f=3e4;h=0;i=b;return}j=c[4780580]|0;k=c[553086]|0;do{if((j|0)<(k|0)){c[4780580]=k;l=k;m=k;n=e}else{if((j|0)<(k+16384|0)){l=j;m=k;n=e;break}f=3e4;h=0;i=b;return}}while(0);while(1){e=da(c[n+8>>2]|0,16384-l+m|0)|0;k=(e|0)/(c[5385960]|0)|0;if((k|0)==0){o=26;break}e=da(c[n+16>>2]|0,c[n+12>>2]|0)|0;j=da(e,k)|0;if(j>>>0>3e4>>>0){p=3e4/(e|0)|0;q=3e4}else{p=k;q=j}j=Zx(n,q,d)|0;if((j|0)<(q|0)){k=c[4886280]|0;r=(j|0)/(da(c[k+16>>2]|0,c[k+12>>2]|0)|0)|0}else{r=p}if((j|0)>0){j=c[4886280]|0;Xw(0,r,c[j+8>>2]|0,c[j+12>>2]|0,c[j+16>>2]|0,d,+g[(c[4781232]|0)+28>>2],-1)}else{s=c[4886280]|0;t=(s|0)==0;if((a[19545192]|0)==0){o=24;break}if(!t){Yx(s);c[4886280]=0}j=Xx(19545192)|0;c[4886280]=j;do{if((j|0)==0){Sr(120264,(u=i,i=i+8|0,c[u>>2]=19545192,u)|0);i=u}else{if((c[j+16>>2]|0)==2){if((c[j+8>>2]|0)==22050){break}}Sr(118856,(u=i,i=i+8|0,c[u>>2]=19545192,u)|0);i=u}}while(0);if((c[4886280]|0)==0){o=26;break}}j=c[4780580]|0;k=c[553086]|0;if((j|0)>=(k+16384|0)){o=26;break}l=j;m=k;n=c[4886280]|0}if((o|0)==24){if(t){f=3e4;h=0;i=b;return}Yx(s);c[4886280]=0;c[4780580]=0;f=3e4;h=0;i=b;return}else if((o|0)==26){f=3e4;h=0;i=b;return}}function ax(){var b=0.0,d=0,e=0,f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0;if(a[9184]|a[9176]^1){return}b=+(Bs()|0);bx();d=c[553086]|0;if((d|0)==(c[46590]|0)){return}c[46590]=d;d=19538976;e=0;while(1){f=d+52|0;h=c[f>>2]|0;do{if((h|0)!=0){i=d+4|0;j=c[i>>2]|0;if((j|0)==2147483647){c[i>>2]=c[4780710];break}if(((c[h+20>>2]|0)+j|0)>(c[4780710]|0)){break}c[f>>2]=0;c[d>>2]=c[5145154];c[5145154]=d}}while(0);f=e+1|0;if((f|0)<96){d=d+64|0;e=f}else{break}}k=b- +g[46592];l=+(c[5385960]|0);m=+g[(c[4781234]|0)+28>>2]*l;n=+g[(c[4781236]|0)+28>>2]+(k<11.0?11.0:k)*l*.01;e=c[553086]|0;d=c[5385958]|0;f=d-1+~~(+(e|0)+(n>(c[5385956]|0)-1;DL();rx((f-e|0)>>>0>d>>>0?d+e|0:f);CL();g[46592]=b;return}function bx(){var a=0,b=0.0,d=0.0,e=0,f=0;a=(c[5385957]|0)/(c[5385956]|0)|0;if((cq()|0)!=0){b=+g[(c[5811772]|0)+28>>2];d=+(c[5385960]|0)/(b<1.0e3?b:1.0e3);b=+g[5760963]+(d>1.0?d:1.0);e=~~b;c[553086]=e+(c[553086]|0);g[5760963]=b- +(e|0);return}e=AL()|0;do{if((e|0)<(c[7095828]|0)){c[7095830]=(c[7095830]|0)+1;if((c[4780710]|0)<=1073741824){break}c[7095830]=0;c[4780710]=a;Jw()}}while(0);c[7095828]=e;f=da(c[7095830]|0,a)|0;a=((e|0)/(c[5385956]|0)|0)+f|0;c[553086]=a;f=c[5385958]|0;if((f|0)<256){c[4780710]=~~(+(a|0)+ +g[(c[4781236]|0)+28>>2]*+(c[5385960]|0));return}else{c[4780710]=a+f;return}}function cx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;f=(b|0)==0?28378640:b;if((d|0)==0){g=3}else{if((a[d]|0)==0){g=3}else{h=d}}if((g|0)==3){h=f}Tr(130792,(g=i,i=i+16|0,c[g>>2]=f,c[g+8>>2]=h,g)|0);i=g;if((a[f]|0)==0){d=c[4886280]|0;if((d|0)==0){i=e;return}Yx(d);c[4886280]=0;c[4780580]=0;i=e;return}TB(19545192,h,64);h=c[4886280]|0;if((h|0)!=0){Yx(h);c[4886280]=0}h=Xx(f)|0;c[4886280]=h;if((h|0)==0){Sr(120264,(g=i,i=i+8|0,c[g>>2]=f,g)|0);i=g;i=e;return}do{if((c[h+16>>2]|0)==2){if((c[h+8>>2]|0)!=22050){break}i=e;return}}while(0);Sr(118856,(g=i,i=i+8|0,c[g>>2]=f,g)|0);i=g;i=e;return}function dx(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;a=i;b=Bs()|0;d=c[4780712]|0;if((d|0)>1){e=b;b=0;f=1;while(1){if((c[19124960+(f*100|0)>>2]|0)==0){g=b;h=e}else{j=c[19125044+(f*100|0)>>2]|0;k=(j|0)<(e|0);g=k?f:b;h=k?j:e}j=f+1|0;if((j|0)<(d|0)){e=h;b=g;f=j}else{l=g;break}}}else{l=0}Tr(129432,(g=i,i=i+8|0,c[g>>2]=19124980+(l*100|0),g)|0);i=g;g=19124952+(l*100|0)|0;f=c[g>>2]|0;if((f|0)==0){m=19124960+(l*100|0)|0;c[m>>2]=0;c[g>>2]=0;i=a;return}else{n=f}while(1){f=c[n+2048>>2]|0;gx(n);if((f|0)==0){break}else{n=f}}m=19124960+(l*100|0)|0;c[m>>2]=0;c[g>>2]=0;i=a;return}function ex(){if(!(a[9176]|0)){return}BL();jx();a[9176]=0;c[4780712]=0;Ir(128312);return}function fx(b){b=b|0;var d=0;if((b|0)==0){d=0;return d|0}c[4781234]=gt(127088,125712,1)|0;c[4781236]=gt(124784,123936,1)|0;c[553494]=gt(123144,122264,512)|0;c[553084]=gt(121480,122264,512)|0;if((yL()|0)==0){d=0;return d|0}a[9176]=1;a[9184]=1;n$(2170496,0,512)|0;c[553086]=0;c[4780710]=0;Jw();c[b>>2]=56;c[b+4>>2]=108;c[b+8>>2]=34;c[b+12>>2]=74;c[b+16>>2]=346;c[b+20>>2]=6;c[b+24>>2]=68;c[b+28>>2]=170;c[b+32>>2]=94;c[b+36>>2]=44;c[b+40>>2]=246;c[b+44>>2]=10;c[b+48>>2]=96;c[b+52>>2]=352;c[b+56>>2]=62;c[b+60>>2]=216;c[b+64>>2]=146;c[b+68>>2]=256;c[b+72>>2]=100;c[b+76>>2]=378;d=1;return d|0}function gx(a){a=a|0;c[a>>2]=c[5145152];c[5145152]=a;c[5115572]=(c[5115572]|0)+2060;return}function hx(){var a=0,b=0,d=0;a=c[5145152]|0;if((a|0)==0){while(1){dx();b=c[5145152]|0;if((b|0)!=0){d=b;break}}}else{d=a}c[5115572]=(c[5115572]|0)-2060;c[304336]=(c[304336]|0)+2060;c[5145152]=c[d>>2];c[d+2048>>2]=0;return d|0}function ix(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;a=i;b=c[(gt(156232,178152,33)|0)+32>>2]|0;d=b*1536|0;e=da(b,3164160)|0;b=V_(e)|0;c[6924892]=b;c[542622]=V_(8192)|0;c[542618]=0;c[5115572]=e;e=d-1|0;f=b+(e*2060|0)|0;if((e|0)>0){e=b+(d*2060|0)|0;d=f;while(1){c[d>>2]=e-4120;g=d-2060|0;if(g>>>0>b>>>0){e=d;d=g}else{h=g;break}}}else{h=f}c[h>>2]=0;c[5145152]=f;Sr(149856,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=a;return}function jx(){W_(c[542622]|0);W_(c[6924892]|0);return}function kx(a){a=a|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.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;e=i;i=i+24|0;f=e|0;g=a+28|0;h=Vx(g,f)|0;if((h|0)==0){j=0;i=e;return j|0}k=f+4|0;if((c[k>>2]|0)==1){Tr(131160,(l=i,i=i+8|0,c[l>>2]=g,l)|0);i=l}m=f|0;if((c[m>>2]|0)!=22050){Tr(120568,(l=i,i=i+8|0,c[l>>2]=g,l)|0);i=l}l=f+8|0;g=f+12|0;n=ss(da(c[l>>2]<<2,c[g>>2]|0)|0)|0;o=n;c[a+92>>2]=(Bs()|0)+1;p=c[l>>2]|0;do{if((p|0)==1){if((c[a+12>>2]|0)!=1){q=13;break}c[a+16>>2]=1;c[a>>2]=0;r=c[f+20>>2]|0;s=+(c[m>>2]|0)/+(c[5385960]|0);t=~~(+(c[g>>2]|0)/s);u=~~(s*256.0);if((t|0)>0){v=h+r|0;if((c[k>>2]|0)==2){w=0;x=0;while(1){b[o+(x<<1)>>1]=b[v+(w>>8<<1)>>1]|0;y=x+1|0;if((y|0)<(t|0)){w=w+u|0;x=y}else{break}}}else{x=0;w=0;while(1){b[o+(w<<1)>>1]=(d[h+((x>>8)+r)|0]|0)<<8^-32768;v=w+1|0;if((v|0)<(t|0)){x=x+u|0;w=v}else{break}}}}c[a+20>>2]=t;Fw(a,o)}else{q=13}}while(0);if((q|0)==13){c[a+16>>2]=0;q=a|0;c[q>>2]=0;o=c[f+20>>2]|0;s=+(c[m>>2]|0)/+(c[5385960]|0);m=~~(+(c[g>>2]|0)/s);g=~~(+(p|0)*s*256.0);if((m|0)>0){f=(p|0)>0;w=(c[k>>2]|0)==2;k=h+o|0;u=0;x=0;r=0;while(1){v=u>>8;y=u+g|0;if(f){z=da(r,p)|0;A=0;B=x;while(1){C=A+v|0;if(w){D=b[k+(C<<1)>>1]|0}else{D=(d[h+(C+o)|0]|0)<<8^-32768}C=A+z&1023;do{if((C|0)==0){E=c[5145152]|0;if((E|0)==0){while(1){dx();F=c[5145152]|0;if((F|0)!=0){G=F;break}}}else{G=E}c[5115572]=(c[5115572]|0)-2060;c[304336]=(c[304336]|0)+2060;c[5145152]=c[G>>2];c[G+2048>>2]=0;if((B|0)==0){c[q>>2]=G;H=G;break}else{c[B+2048>>2]=G;H=G;break}}else{H=B}}while(0);b[H+(C<<1)>>1]=D;F=A+1|0;if((F|0)<(p|0)){A=F;B=H}else{I=H;break}}}else{I=x}B=r+1|0;if((B|0)<(m|0)){u=y;x=I;r=B}else{break}}}c[a+20>>2]=m}c[a+24>>2]=c[l>>2];ts(n);ts(h);j=1;i=e;return j|0}function lx(){var a=0,b=0,d=0;a=i;b=c[304336]|0;Sr(109832,(d=i,i=i+16|0,c[d>>2]=c[5115572],c[d+8>>2]=b,d)|0);i=d;i=a;return}function mx(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;c[540150]=19722400;e=c[4780710]|0;if((e|0)<(d|0)){f=e}else{return}do{e=c[5385957]>>1;g=e-1&f;h=a+(g<<2)|0;c[540152]=h;i=e-g|0;g=((i+f|0)>(d|0)?d-f|0:i)<<1;c[540154]=g;i=c[540150]|0;if((g|0)>0){e=0;do{j=c[i+(e<<2)>>2]>>8;do{if((j|0)>32767){b[h+(e<<1)>>1]=32767}else{if((j|0)<-32768){b[h+(e<<1)>>1]=-32768;break}else{b[h+(e<<1)>>1]=j;break}}}while(0);j=e|1;k=c[i+(j<<2)>>2]>>8;do{if((k|0)>32767){b[h+(j<<1)>>1]=32767}else{if((k|0)<-32768){b[h+(j<<1)>>1]=-32768;break}else{b[h+(j<<1)>>1]=k;break}}}while(0);e=e+2|0;}while((e|0)<(g|0))}c[540150]=i+(g<<2);f=(g>>1)+f|0;if((cq()|0)!=0){$p(c[540152]|0,c[540154]<<1)}}while((f|0)<(d|0));return}function nx(d){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,q=0,r=0,s=0,t=0;e=c[5385961]|0;f=e;do{if((c[(c[553084]|0)+32>>2]|0)!=0){g=c[4780710]|0;h=d-g|0;if((h|0)>0){i=0}else{break}do{j=~~(+W(+(g+i|0)*.1)*2.0e4*256.0);c[19722404+(i<<3)>>2]=j;c[19722400+(i<<3)>>2]=j;i=i+1|0;}while((i|0)<(h|0))}}while(0);i=c[5385959]|0;h=(i|0)==16;g=c[5385956]|0;if(h&(g|0)==2){mx(f,d);return}f=c[4780710]|0;j=da(d-f|0,g)|0;d=(c[5385957]|0)-1|0;k=d&(da(f,g)|0);f=3-g|0;if(h){h=e;if((j|0)==0){return}else{l=19722400;m=k;n=j}while(1){g=n-1|0;o=c[l>>2]>>8;if((o|0)>32767){p=32767}else{p=(o|0)<-32768?-32768:o&65535}b[h+(m<<1)>>1]=p;if((g|0)==0){break}else{l=l+(f<<2)|0;m=m+1&d;n=g}}return}else{if((i|0)!=8|(j|0)==0){return}else{q=19722400;r=k;s=j}while(1){j=s-1|0;k=c[q>>2]>>8;if((k|0)>32767){t=-1}else{t=(k|0)<-32768?0:(k>>>8)+128&255}a[e+r|0]=t;if((j|0)==0){break}else{q=q+(f<<2)|0;r=r+1&d;s=j}}return}}function ox(a,d,e,f,g){a=a|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;h=c[540148]|0;i=da(h,c[a+16>>2]|0)|0;j=da(c[a+20>>2]|0,h)|0;h=c[d>>2]|0;if((f|0)>2047){a=f-2048|0;k=a>>>11;l=k<<11;m=f;n=h;do{m=m-2048|0;n=c[n+2048>>2]|0;}while((m|0)>2047);o=k+1|0;p=a-l|0;q=n}else{o=0;p=f;q=h}if(!((o|0)==(c[542620]|0)&(c[542618]|0)==(d|0))){Ew(q,c[542622]|0);c[542620]=o;c[542618]=d}d=c[542622]|0;if((e|0)>0){r=0;s=q;t=p}else{return}while(1){p=t+1|0;q=b[d+(t<<1)>>1]|0;o=(da(i,q)|0)>>8;h=r+g|0;f=19722400+(h<<3)|0;c[f>>2]=o+(c[f>>2]|0);f=(da(j,q)|0)>>8;q=19722404+(h<<3)|0;c[q>>2]=f+(c[q>>2]|0);if((p|0)==2048){q=c[s+2048>>2]|0;ux(q,c[542622]|0);c[542620]=(c[542620]|0)+1;u=0;v=q}else{u=p;v=s}p=r+1|0;if((p|0)<(e|0)){r=p;s=v;t=u}else{break}}return}function px(a,d,e,f,h){a=a|0;d=d|0;e=e|0;f=f|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,w=0;i=c[540148]|0;j=da(i,c[a+16>>2]|0)|0;k=da(c[a+20>>2]|0,i)|0;i=c[d>>2]|0;if((c[a+56>>2]|0)==0){l=f}else{l=~~(+(f|0)*+g[a+32>>2])}if((l|0)>4095){a=l-4096|0;f=a>>>12;m=f<<12;n=i;o=l;do{n=c[n+2048>>2]|0;o=o-4096|0;}while((o|0)>4095);p=f+1|0;q=n;r=a-m|0}else{p=0;q=i;r=l}if(!((p|0)==(c[542620]|0)&(c[542618]|0)==(d|0))){Ew(q,c[542622]|0);c[542620]=p;c[542618]=d}d=c[542622]|0;if((e|0)>0){s=0;t=q;u=r}else{return}while(1){r=u+1|0;q=b[d+(u<<1)>>1]|0;p=(da(j,q)|0)>>8;l=s+h|0;i=19722400+(l<<3)|0;c[i>>2]=p+(c[i>>2]|0);i=(da(k,q)|0)>>8;q=19722404+(l<<3)|0;c[q>>2]=i+(c[q>>2]|0);if((r|0)==4096){q=c[t+2048>>2]|0;Ew(q,c[542622]|0);c[542620]=(c[542620]|0)+1;v=0;w=q}else{v=r;w=t}r=s+1|0;if((r|0)<(e|0)){s=r;t=w;u=v}else{break}}return}function qx(a,e,f,h,i){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0;j=c[540148]|0;k=da(j,c[a+16>>2]|0)|0;l=da(c[a+20>>2]|0,j)|0;j=c[e>>2]|0;if((h|0)>2047){e=h;m=j;do{n=c[m+2048>>2]|0;e=e-2048|0;m=(n|0)==0?j:n;}while((e|0)>2047);o=h&2047;p=m}else{o=h;p=j}h=(f|0)>0;if((c[a+56>>2]|0)!=0){if(!h){return}q=+g[a+28>>2];a=0;m=p;e=p;r=+(o|0);while(1){n=b[19759512+(d[e+~~r|0]<<1)>>1]|0;s=r+q;t=(da(n,k)|0)>>8;u=a+i|0;v=19722400+(u<<3)|0;c[v>>2]=t+(c[v>>2]|0);v=(da(n,l)|0)>>8;n=19722404+(u<<3)|0;c[n>>2]=(c[n>>2]|0)+v;if(s<2048.0){w=s;x=e;y=m}else{v=c[m+2048>>2]|0;n=(v|0)==0?j:v;w=0.0;x=n;y=n}n=a+1|0;if((n|0)<(f|0)){a=n;m=y;e=x;r=w}else{break}}return}if(!h){return}h=0;x=p;e=p+o|0;while(1){o=b[19759512+(d[e]<<1)>>1]|0;p=(da(o,k)|0)>>8;y=h+i|0;m=19722400+(y<<3)|0;c[m>>2]=p+(c[m>>2]|0);m=(da(o,l)|0)>>8;o=19722404+(y<<3)|0;c[o>>2]=m+(c[o>>2]|0);o=e+1|0;do{if((x|0)==0){z=o;A=0}else{m=x+2048|0;if((o|0)!=(m|0)){z=o;A=x;break}y=c[m>>2]|0;z=y;A=y}}while(0);o=h+1|0;if((o|0)<(f|0)){h=o;x=A;e=z}else{break}}return}function rx(a){a=a|0;var b=0,d=0,e=0,f=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((c[(c[4781226]|0)+32>>2]|0)==0){b=~~(+g[(c[553082]|0)+28>>2]*255.0)}else{b=0}c[540148]=b;b=c[4780710]|0;if((b|0)<(a|0)){d=b}else{return}while(1){b=(a-d|0)>4096?d+4096|0:a;n$(19722400,0,32768)|0;e=0;while(1){f=c[19122320+(e<<2)>>2]|0;do{if((f|0)>=(d|0)){h=(b|0)<(f|0)?b:f;if((d|0)<(h|0)){i=d}else{break}do{j=i&16383;k=i-d|0;l=19722400+(k<<3)|0;c[l>>2]=(c[l>>2]|0)+(c[2214032+(e<<17)+(j<<3)>>2]|0);l=19722404+(k<<3)|0;c[l>>2]=(c[l>>2]|0)+(c[2214032+(e<<17)+(j<<3)+4>>2]|0);i=i+1|0;}while((i|0)<(h|0))}}while(0);f=e+1|0;if((f|0)<129){e=f}else{m=19538976;n=0;break}}while(1){e=c[m+52>>2]|0;do{if((e|0)!=0){if((c[m+16>>2]|0)<1){if((c[m+20>>2]|0)<1){break}}f=c[4780710]|0;h=f-(c[m+4>>2]|0)|0;j=b-f|0;f=c[e+20>>2]|0;l=(h+j|0)>(f|0)?f-h|0:j;if((l|0)<=0){break}j=c[e+16>>2]|0;if((j|0)==2){ox(m,e,l,h,0);break}else if((j|0)==3){qx(m,e,l,h,0);break}else if((j|0)==1){px(m,e,l,h,0);break}else{sx(m,e,l,h,0);break}}}while(0);e=n+1|0;if((e|0)<96){m=m+64|0;n=e}else{break}}e=c[4938832]|0;if((e|0)>0){h=19863544;l=0;j=e;while(1){e=c[h+52>>2]|0;do{if((e|0)==0){o=j}else{if((c[h+16>>2]|0)==0){if((c[h+20>>2]|0)==0){o=j;break}}if((c[e>>2]|0)==0){o=j;break}f=e+20|0;k=c[f>>2]|0;if((k|0)==0){o=j;break}p=e+16|0;q=c[4780710]|0;r=k;while(1){k=(q|0)%(r|0)|0;s=b-q|0;t=(k+s|0)>(r|0)?r-k|0:s;if((t|0)>0){s=c[p>>2]|0;do{if((s|0)==2){ox(h,e,t,k,q-(c[4780710]|0)|0)}else if((s|0)==1){px(h,e,t,k,q-(c[4780710]|0)|0)}else{u=q-(c[4780710]|0)|0;if((s|0)==3){qx(h,e,t,k,u);break}else{sx(h,e,t,k,u);break}}}while(0);v=t+q|0}else{v=q}if((v|0)>=(b|0)){break}q=v;r=c[f>>2]|0}o=c[4938832]|0}}while(0);e=l+1|0;if((e|0)<(o|0)){h=h+64|0;l=e;j=o}else{break}}}nx(b);c[4780710]=b;if((b|0)<(a|0)){d=b}else{break}}return}function sx(a,d,e,f,h){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0.0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0,R=0,S=0.0,T=0,U=0,V=0,W=0,X=0;i=(c[a+56>>2]|0)==0;if(i){j=f}else{j=~~(+(f|0)*+g[a+32>>2])}f=d+24|0;k=c[f>>2]|0;l=j<<((k|0)==2);j=c[d>>2]|0;if((l|0)>1023){d=j;m=l;do{n=c[d+2048>>2]|0;m=m-1024|0;d=(n|0)==0?j:n;}while((m|0)>1023);o=d;p=l&1023}else{o=j;p=l}do{if(!i){q=+g[a+28>>2];if(q==1.0){break}l=c[540148]|0;r=+(da(l,c[a+16>>2]|0)|0);s=+(da(c[a+20>>2]|0,l)|0);if((e|0)<=0){return}l=o;d=o|0;t=+(p|0);m=0;n=k;while(1){u=~~t;v=t+q*+(n|0);w=~~v;if((u|0)<(w|0)){if((n|0)==2){x=u;y=l;z=d;A=v;B=0.0;C=0.0;while(1){if((x|0)==1024){D=c[y+2048>>2]|0;E=(D|0)==0?j:D;F=A+-1024.0;G=E|0;H=E}else{F=A;G=z;H=y}I=C+ +(b[G+((x&1023)<<1)>>1]|0);J=B+ +(b[G+((x+1&1023)<<1)>>1]|0);E=x+2|0;if((E|0)<(w|0)){x=E;y=H;z=G;A=F;B=J;C=I}else{K=H;L=G;M=F;N=J;O=I;break}}}else{z=u;y=l;x=d;C=v;B=0.0;A=0.0;while(1){if((z|0)==1024){E=c[y+2048>>2]|0;D=(E|0)==0?j:E;P=C+-1024.0;Q=D|0;R=D}else{P=C;Q=x;R=y}I=+(b[Q+((z&1023)<<1)>>1]|0);J=A+I;S=B+I;D=z+n|0;if((D|0)<(w|0)){z=D;y=R;x=Q;C=P;B=S;A=J}else{K=R;L=Q;M=P;N=S;O=J;break}}}}else{K=l;L=d;M=v;N=0.0;O=0.0}A=+((w-u<<8|0)/(n|0)|0|0);x=m+h|0;y=19722400+(x<<3)|0;c[y>>2]=~~(r*O/A+ +(c[y>>2]|0));y=19722404+(x<<3)|0;c[y>>2]=~~(s*N/A+ +(c[y>>2]|0));y=m+1|0;if((y|0)>=(e|0)){break}l=K;d=L;t=M;m=y;n=c[f>>2]|0}return}}while(0);L=c[540148]|0;K=da(L,c[a+16>>2]|0)|0;Q=da(c[a+20>>2]|0,L)|0;if((e|0)<=0){return}L=o;a=o|0;o=0;R=p;while(1){p=R+1|0;j=b[a+(R<<1)>>1]|0;G=(da(K,j)|0)>>8;H=o+h|0;k=19722400+(H<<3)|0;c[k>>2]=G+(c[k>>2]|0);if((c[f>>2]|0)==2){T=R+2|0;U=b[a+(p<<1)>>1]|0}else{T=p;U=j}j=(da(Q,U)|0)>>8;p=19722404+(H<<3)|0;c[p>>2]=(c[p>>2]|0)+j;if((T|0)==1024){j=c[L+2048>>2]|0;V=0;W=j|0;X=j}else{V=T;W=a;X=L}j=o+1|0;if((j|0)<(e|0)){L=X;a=W;o=j;R=V}else{break}}return}function tx(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0.0,D=0;d=i;i=i+16392|0;e=d|0;n$(e|0,0,16388)|0;if(b>>>0<4>>>0){f=16388;h=0;i=d;return}j=b>>>1;do{if((c|0)>-1){k=b-3|0;l=+g[a>>2];m=a+4|0;if((k|0)==0){n=1}else{o=1;p=1;q=l;r=+g[m>>2];while(1){s=q;t=r;u=p+2|0;v=+g[a+(p+1<<2)>>2];w=v;x=+g[a+(u<<2)>>2];y=x;g[e+(o<<2)>>2]=s*.4829629131445341+t*.8365163037378079+w*.2241438680420134+y*-.1294095225512604;g[e+(o+j<<2)>>2]=s*-.1294095225512604-t*.2241438680420134+w*.8365163037378079-y*.4829629131445341;z=o+1|0;if(u>>>0>k>>>0){n=z;break}else{o=z;p=u;q=v;r=x}}}r=+g[a+(b-2<<2)>>2];q=+g[a+(b-1<<2)>>2];x=l;v=+g[m>>2];g[e+(n<<2)>>2]=r*.4829629131445341+q*.8365163037378079+x*.2241438680420134+v*-.1294095225512604;g[e+(n+j<<2)>>2]=r*-.1294095225512604-q*.2241438680420134+x*.8365163037378079-v*.4829629131445341}else{v=+g[a+(j-1<<2)>>2];x=+g[a+(b-1<<2)>>2];q=+g[a>>2];r=q;y=+g[a+(j<<2)>>2];g[e+4>>2]=v*.2241438680420134+x*.8365163037378079+r*.4829629131445341+y*-.1294095225512604;g[e+8>>2]=v*-.1294095225512604-x*.4829629131445341+r*.8365163037378079-y*.2241438680420134;if(b>>>0>3>>>0){A=1;B=3;C=q}else{break}while(1){q=C;p=A+j|0;y=+g[a+(p-1<<2)>>2];o=A+1|0;r=+g[a+(A<<2)>>2];x=r;v=+g[a+(p<<2)>>2];g[e+(B<<2)>>2]=q*.2241438680420134+y*.8365163037378079+x*.4829629131445341+v*-.1294095225512604;g[e+(B+1<<2)>>2]=q*-.1294095225512604-y*.4829629131445341+x*.8365163037378079-v*.2241438680420134;if(o>>>0>>0){A=o;B=B+2|0;C=r}else{break}}}}while(0);if((b|0)==0){f=16388;h=0;i=d;return}else{D=1}do{g[a+(D-1<<2)>>2]=+g[e+(D<<2)>>2];D=D+1|0;}while(!(D>>>0>b>>>0));f=16388;h=0;i=d;return}function ux(a,e){a=a|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;i=i+16392|0;h=f|0;j=c[a+2052>>2]|0;k=a;a=(j|0)>0;if(a){l=0;do{g[h+(l<<2)>>2]=+(b[19759512+(d[k+l|0]<<1)>>1]|0);l=l+1|0;}while((l|0)<(j|0))}l=h|0;k=j>>>2;if(!(k>>>0>j>>>0)){m=k;do{tx(l,m,-1);m=m<<1;}while(!(m>>>0>j>>>0))}if((e|0)==0|a^1){n=16388;o=0;i=f;return}else{p=0}do{b[e+(p<<1)>>1]=~~+g[h+(p<<2)>>2];p=p+1|0;}while((p|0)<(j|0));n=16388;o=0;i=f;return}function vx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[540185]|0;if((f|0)==0){return}Yk[f&255](a,b,d,e);return}function wx(a,b){a=a|0;b=b|0;var d=0;d=c[540186]|0;if((d|0)==0){return}hk[d&255](a,b);return}function xx(a,b){a=a|0;b=b|0;var d=0;d=c[540187]|0;if((d|0)==0){return}hk[d&255](a,b);return}function yx(){var a=0;a=c[540188]|0;if((a|0)==0){return}Uk[a&511]();return}function zx(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;i=i|0;var j=0;j=c[540189]|0;if((j|0)==0){return}dk[j&7](a,b,d,e,f,g,h,i);return}function Ax(){var a=0;a=c[540190]|0;if((a|0)==0){return}Uk[a&511]();return}function Bx(a){a=a|0;var b=0;b=c[540191]|0;if((b|0)==0){return}vk[b&511](a);return}function Cx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[540192]|0;if((f|0)==0){return}Yk[f&255](a,b,d,e);return}function Dx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[540193]|0;if((f|0)==0){return}Yk[f&255](a,b,d,e);return}function Ex(a){a=a|0;var b=0;b=c[540194]|0;if((b|0)==0){return}vk[b&511](a);return}function Fx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[540195]|0;if((f|0)==0){return}Yk[f&255](a,b,d,e);return}function Gx(a,b){a=a|0;b=b|0;var d=0;d=c[540196]|0;if((d|0)==0){return}hk[d&255](a,b);return}function Hx(){var a=0,b=0,d=0,e=0;a=c[4781226]|0;b=a+32|0;d=(c[(c[4781230]|0)+32>>2]|0)!=0;do{if((c[b>>2]|0)==0){if(d){if((c[(c[5457486]|0)+32>>2]|0)==0){e=9}}else{e=9}if((e|0)==9){if((c[(c[4781228]|0)+32>>2]|0)==0){break}if((c[(c[5450804]|0)+32>>2]|0)==0){break}}c[b>>2]=1;c[a+20>>2]=1}else{if(d){if((c[(c[5457486]|0)+32>>2]|0)!=0){break}}if((c[(c[4781228]|0)+32>>2]|0)!=0){if((c[(c[5450804]|0)+32>>2]|0)!=0){break}}c[b>>2]=0;c[a+20>>2]=1}}while(0);a=c[540197]|0;if((a|0)==0){return}Uk[a&511]();return}function Ix(){var a=0;a=c[540198]|0;if((a|0)==0){return}Uk[a&511]();return}function Jx(){var a=0;a=c[540199]|0;if((a|0)==0){return}Uk[a&511]();return}function Kx(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[540200]|0;if((d|0)==0){e=0;return e|0}e=Kk[d&255](a,b)|0;return e|0}function Lx(){var a=0;a=c[540201]|0;if((a|0)==0){return}Uk[a&511]();return}function Mx(){var a=0;a=c[540202]|0;if((a|0)==0){return}Uk[a&511]();return}function Nx(){var a=0;a=c[540203]|0;if((a|0)==0){return}Uk[a&511]();return}function Ox(){var a=0,b=0,d=0,e=0,f=0,g=0;a=i;if(!((c[540200]|0)!=0&(c[540186]|0)!=0)){i=a;return}b=nr()|0;if((b|0)<2){Sr(155800,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=a;return}else{e=1}do{d=c[540200]|0;f=or(e)|0;g=Kk[d&255](f,0)|0;if((g|0)!=0){hk[c[540186]&255](g,6)}e=e+1|0;}while((e|0)<(b|0));i=a;return}function Px(){var a=0,b=0,d=0,e=0,f=0;a=i;if((c[540187]|0)==0){i=a;return}b=nr()|0;if((b|0)==3){d=c[540187]|0;e=or(1)|0;f=or(2)|0;hk[d&255](e,f);i=a;return}else if((b|0)==2){b=c[540187]|0;f=or(1)|0;hk[b&255](f,0);i=a;return}else{Sr(178104,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=a;return}}function Qx(){var a=0;a=c[540188]|0;if((a|0)==0){return}Uk[a&511]();return}function Rx(){var a=0,b=0,d=0,e=0;a=i;Sr(149800,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;c[553082]=gt(131128,120552,1)|0;c[4781232]=gt(109816,100312,1)|0;c[4781226]=gt(58184,51504,64)|0;c[4883770]=gt(46264,185416,1)|0;c[4886314]=gt(181464,28378712,64)|0;c[4781230]=gt(173264,51504,1)|0;c[4781228]=gt(170144,51504,1)|0;if((c[(gt(167088,185416,0)|0)+32>>2]|0)==0){Sr(163464,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;Sr(134520,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}Tx();Gr(160704,38);Gr(158120,78);Gr(155576,122);Gr(153552,276);Gr(151664,92);Gr(149312,104);if((c[(gt(146736,185416,1)|0)+32>>2]|0)==0){d=5}else{e=qy(2160736)|0;kt(181464,144336);if((e|0)==0){d=5}}do{if((d|0)==5){e=fx(2160736)|0;kt(181464,141712);if((e|0)!=0){break}Sr(136e3,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;Sr(134520,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}}while(0);d=c[540202]|0;if((c[540184]|0)==0|(c[540185]|0)==0|(c[540186]|0)==0|(c[540187]|0)==0|(c[540188]|0)==0|(c[540189]|0)==0|(c[540190]|0)==0|(c[540191]|0)==0|(c[540192]|0)==0|(c[540193]|0)==0|(c[540194]|0)==0|(c[540195]|0)==0|(c[540196]|0)==0|(c[540197]|0)==0|(c[540198]|0)==0|(c[540199]|0)==0|(c[540200]|0)==0|(c[540201]|0)==0|(d|0)==0|(c[540203]|0)==0){Ur(0,139416,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}Uk[d&511]();Sr(137504,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;Sr(134520,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}function Sx(){var a=0;a=c[540184]|0;if((a|0)!=0){Uk[a&511]()}n$(2160736|0,0|0,80|0)|0;Ir(160704);Ir(158120);Ir(155576);Ir(153552);Ir(151664);Ir(149312);Ux();return}function Tx(){c[2693]=0;c[291]=10752;c[5458856]=1144;return}function Ux(){c[5458856]=0;return}function Vx(a,b){a=a|0;b=b|0;return Wx(a,b)|0}function Wx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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=i;i=i+128|0;f=e|0;g=e+64|0;TB(f,b,64);h=RB(f)|0;a:do{if((a[h]|0)==0){j=0;k=0;l=10}else{m=c[5458856]|0;if((m|0)==0){break}else{n=m}while(1){if((VB(h,c[n>>2]|0)|0)==0){break}m=c[n+20>>2]|0;if((m|0)==0){j=0;k=0;l=10;break a}else{n=m}}if((d|0)==0){o=jk[c[n+8>>2]&255](f)|0}else{o=Kk[c[n+4>>2]&255](f,d)|0}if((o|0)==0){SB(b,f,64);j=1;k=n;l=10;break}else{p=o;q=64;r=0;s=64;t=0;i=e;return p|0}}}while(0);b:do{if((l|0)==10){o=c[5458856]|0;if((o|0)==0){break}c:do{if((d|0)==0){n=o;while(1){if((n|0)!=(k|0)){h=c[n>>2]|0;$B(g,64,177664,(u=i,i=i+16|0,c[u>>2]=f,c[u+8>>2]=h,u)|0)|0;i=u;h=jk[c[n+8>>2]&255](g)|0;if((h|0)!=0){v=h;break c}}n=c[n+20>>2]|0;if((n|0)==0){break b}}}else{n=o;while(1){if((n|0)!=(k|0)){h=c[n>>2]|0;$B(g,64,177664,(u=i,i=i+16|0,c[u>>2]=f,c[u+8>>2]=h,u)|0)|0;i=u;h=Kk[c[n+4>>2]&255](g,d)|0;if((h|0)!=0){v=h;break c}}n=c[n+20>>2]|0;if((n|0)==0){break b}}}}while(0);if((j|0)==0){p=v;q=64;r=0;s=64;t=0;i=e;return p|0}Tr(149720,(u=i,i=i+16|0,c[u>>2]=b,c[u+8>>2]=g,u)|0);i=u;p=v;q=64;r=0;s=64;t=0;i=e;return p|0}}while(0);Sr(131024,(u=i,i=i+16|0,c[u>>2]=(d|0)!=0?120544:109784,c[u+8>>2]=b,u)|0);i=u;p=0;q=64;r=0;s=64;t=0;i=e;return p|0}function Xx(a){a=a|0;return Wx(a,0)|0}function Yx(a){a=a|0;vk[c[(c[a>>2]|0)+16>>2]&511](a);return}function Zx(a,b,d){a=a|0;b=b|0;d=d|0;return rk[c[(c[a>>2]|0)+12>>2]&63](a,b,d)|0}function _x(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+8|0;e=d|0;f=cu(a,e,1)|0;if((c[e>>2]|0)==0){Tr(154096,(g=i,i=i+8|0,c[g>>2]=a,g)|0);i=g;h=0;i=d;return h|0}g=gs(44)|0;if((g|0)==0){Yt(c[e>>2]|0);h=0;i=d;return h|0}else{c[g>>2]=b;c[g+4>>2]=c[e>>2];c[g+32>>2]=f;h=g;i=d;return h|0}return 0}function $x(a){a=a|0;Yt(c[(c[a>>2]|0)+4>>2]|0);es(c[a>>2]|0);c[a>>2]=0;return}function ay(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+8|0;e=d|0;cu(a,e,1)|0;f=c[e>>2]|0;if((f|0)==0){g=0;i=d;return g|0}if((ey(f,b)|0)==0){Yt(c[e>>2]|0);Sr(177592,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;g=0;i=d;return g|0}f=b+16|0;b=ss(c[f>>2]|0)|0;if((b|0)==0){Yt(c[e>>2]|0);Sr(149664,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;g=0;i=d;return g|0}else{fu(b,c[f>>2]|0,c[e>>2]|0)|0;Yt(c[e>>2]|0);g=b;i=d;return g|0}return 0}function by(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+8|0;d=b|0;e=_x(a,1144)|0;c[d>>2]=e;do{if((e|0)==0){f=0}else{if((ey(c[e+4>>2]|0,e+8|0)|0)==0){$x(d);f=0;break}else{f=c[d>>2]|0;break}}}while(0);i=b;return f|0}function cy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=a+36|0;f=c[e>>2]|0;g=(c[a+24>>2]|0)-f|0;if((g|0)<1){h=0;return h|0}i=(g|0)<(b|0)?g:b;c[e>>2]=i+f;fu(d,i,c[a+4>>2]|0)|0;h=i;return h|0}function dy(a){a=a|0;var b=0,d=0;b=i;i=i+8|0;d=b|0;c[d>>2]=a;$x(d);i=b;return}function ey(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+64|0;f=e|0;g=e+24|0;h=e+32|0;fu(e+48|0,12,a)|0;j=fy(a,130992)|0;if((j|0)<0){Sr(120488,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=0;i=e;return l|0}fu(e+40|0,2,a)|0;fu(h,2,a)|0;m=d+8|0;c[m>>2]=b[h>>1]|0;fu(g,4,a)|0;c[d>>2]=c[g>>2];fu(e+16|0,4,a)|0;fu(e+8|0,2,a)|0;fu(f,2,a)|0;g=b[f>>1]|0;if(g<<16>>16<8){Sr(109664,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=0;i=e;return l|0}f=d+4|0;c[f>>2]=(g<<16>>16|0)/8|0;c[d+20>>2]=0;if((j|0)>16){iu(a,j-16|0,0)|0}j=fy(a,100248)|0;c[d+16>>2]=j;if((j|0)<0){Sr(58136,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=0;i=e;return l|0}else{c[d+12>>2]=((j|0)/(c[f>>2]|0)|0|0)/(c[m>>2]|0)|0;l=1;i=e;return l|0}return 0}function fy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+16|0;f=e|0;g=e+8|0;h=g|0;j=g+4|0;a[j]=0;if((fu(h,4,b)|0)!=4){k=-1;i=e;return k|0}g=f;while(1){fu(g,4,b)|0;l=c[f>>2]|0;if((l|0)<0){m=4;break}if((kC(h,d,4)|0)==0){k=l;m=7;break}iu(b,l+1&-2,0)|0;a[j]=0;if((fu(h,4,b)|0)!=4){k=-1;m=7;break}}if((m|0)==4){Sr(51456,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;k=-1;i=e;return k|0}else if((m|0)==7){i=e;return k|0}return 0}function gy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;i=i+24|0;e=d|0;f=d+8|0;g=d+16|0;if((a|0)==0|(b|0)==0){h=0;i=d;return h|0}j=hy(a)|0;if((j|0)==0){h=0;i=d;return h|0}c[b>>2]=c[j+8>>2];a=j+12|0;c[b+4>>2]=c[a>>2];k=j+16|0;c[b+8>>2]=c[k>>2];c[b+12>>2]=c[j+20>>2];l=c[j+24>>2]|0;m=b+16|0;c[m>>2]=l;c[b+20>>2]=c[j+28>>2];b=ss(l)|0;if((b|0)==0){c[g>>2]=j;hO(c[j+40>>2]|0);$x(g);h=0;i=d;return h|0}g=c[m>>2]|0;do{if((g|0)>=1){m=c[k>>2]|0;l=((g|0)/(m|0)|0|0)/(c[a>>2]|0)|0;n=b;if((l|0)<1){break}o=j+40|0;p=nO(c[o>>2]|0,n,da(l,m)|0,0)|0;a:do{if((p|0)<1){q=0}else{m=l;r=0;s=p;while(1){t=s+r|0;u=m-s|0;if((u|0)<1){q=t;break a}v=c[k>>2]|0;w=nO(c[o>>2]|0,n+((da(t,v)|0)<<1)|0,da(u,v)|0,0)|0;if((w|0)<1){q=t;break}else{m=u;r=t;s=w}}}}while(0);n=da(c[k>>2]|0,q)|0;if((da(n,c[a>>2]|0)|0)<1){break}c[e>>2]=j;hO(c[o>>2]|0);$x(e);h=b;i=d;return h|0}}while(0);ts(b);c[f>>2]=j;hO(c[j+40>>2]|0);$x(f);h=0;i=d;return h|0}function hy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;i=i+8|0;d=b|0;if((a|0)==0){e=0;i=b;return e|0}f=_x(a,10752)|0;c[d>>2]=f;if((f|0)==0){e=0;i=b;return e|0}a=fO(f,186376,0,0,0)|0;if((a|0)==0){$x(d);e=0;i=b;return e|0}if((jO(a)|0)==0){hO(a);$x(d);e=0;i=b;return e|0}f=kO(a,-1)|0;if((f|0)==0){hO(a);$x(d);e=0;i=b;return e|0}if((c[f+24>>2]|0)!=1){hO(a);$x(d);Sr(177520,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;e=0;i=b;return e|0}h=f+4|0;if(((c[h>>2]|0)-1|0)>>>0<2>>>0){f=lO(a,-1)|0;j=c[d>>2]|0;c[j+8>>2]=48e3;c[j+12>>2]=2;k=c[h>>2]|0;c[j+16>>2]=k;h=f;c[j+20>>2]=h;c[j+24>>2]=(da(k,h)|0)<<1;c[j+28>>2]=0;c[j+36>>2]=0;c[j+40>>2]=a;e=c[d>>2]|0;i=b;return e|0}else{hO(a);$x(d);Sr(149608,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;e=0;i=b;return e|0}return 0}function iy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if((a|0)==0|(d|0)==0|(b|0)<1){e=0;return e|0}f=a+16|0;g=c[f>>2]|0;h=a+12|0;i=((b|0)/(g|0)|0|0)/(c[h>>2]|0)|0;b=d;if((i|0)<1){e=0;return e|0}d=a+40|0;a=0;j=i;i=g;while(1){g=nO(c[d>>2]|0,b+((da(i,a)|0)<<1)|0,da(i,j)|0,0)|0;if((g|0)<1){k=a;break}l=g+a|0;m=j-g|0;if((m|0)<1){k=l;break}a=l;j=m;i=c[f>>2]|0}i=da(c[f>>2]|0,k)|0;e=da(i,c[h>>2]|0)|0;return e|0}function jy(a){a=a|0;var b=0,d=0;b=i;i=i+8|0;d=b|0;c[d>>2]=a;if((a|0)==0){i=b;return}hO(c[a+40>>2]|0);$x(d);i=b;return}function ky(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((b|0)==0){c[(Fc()|0)>>2]=14;e=-1;return e|0}if((d|0)==0){c[(Fc()|0)>>2]=0;e=0;return e|0}if((d|0)<0){c[(Fc()|0)>>2]=22;e=-1;return e|0}if((a|0)==0){c[(Fc()|0)>>2]=9;e=-1;return e|0}else{f=fu(b,d,c[a+4>>2]|0)|0;d=a+36|0;c[d>>2]=(c[d>>2]|0)+f;e=f;return e|0}return 0}function ly(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((a|0)==0){c[(Fc()|0)>>2]=9;f=-1;return f|0}do{if((e|0)==2){d=b;g=iu(c[a+4>>2]|0,d,1)|0;if((g|0)<0){f=g;return f|0}else{g=(c[a+32>>2]|0)+d|0;c[a+36>>2]=g;h=g;break}}else if((e|0)==1){g=b;d=iu(c[a+4>>2]|0,g,0)|0;if((d|0)<0){f=d;return f|0}else{d=a+36|0;i=(c[d>>2]|0)+g|0;c[d>>2]=i;h=i;break}}else if((e|0)==0){i=b;d=iu(c[a+4>>2]|0,i,2)|0;if((d|0)<0){f=d;return f|0}else{c[a+36>>2]=i;h=i;break}}else{c[(Fc()|0)>>2]=22;f=-1;return f|0}}while(0);b=(h|0)<0?0:h;h=c[a+32>>2]|0;c[a+36>>2]=(b|0)>(h|0)?h:b;f=0;return f|0}function my(a){a=a|0;return 0}function ny(a){a=a|0;var b=0,d=0,e=0;if((a|0)==0){c[(Fc()|0)>>2]=9;b=-1;d=-1;return(H=b,d)|0}else{e=ju(c[a+4>>2]|0)|0;b=(e|0)<0|0?-1:0;d=e;return(H=b,d)|0}return 0}function oy(a){a=a|0;return 1}function py(){return}function qy(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=i;i=i+16384|0;e=d|0;if((b|0)==0){f=0;i=d;return f|0}n$(2127760,-1|0,516)|0;n$(2128280,0,516)|0;n$(2127240,0,516)|0;n$(2128800,0,516)|0;n$(2139640,0,516)|0;c[4886320]=gt(153648,177512,1)|0;c[4886330]=gt(149592,130984,1)|0;c[4886316]=gt(120472,109656,1)|0;c[4886336]=gt(100224,130984,1)|0;c[4886334]=gt(58112,51448,1)|0;c[4886322]=gt(46240,185392,512)|0;c[4886324]=gt(181440,176776,512)|0;c[4886318]=gt(173232,170120,512)|0;c[4886328]=gt(167024,163440,512)|0;c[4886332]=gt(160672,158088,33)|0;c[4886326]=gt(155544,28378664,33)|0;c[4886338]=gt(151632,28378664,33)|0;do{if((oy(c[(c[4886332]|0)+4>>2]|0)|0)==0){Sr(149272,(h=i,i=i+8|0,c[h>>2]=c[(c[4886332]|0)+4>>2],h)|0);i=h;if((VB(c[(c[4886332]|0)+4>>2]|0,158088)|0)==0){f=0;i=d;return f|0}if((oy(158088)|0)==0){f=0}else{break}i=d;return f|0}}while(0);j=c[(c[4886338]|0)+4>>2]|0;if((j|0)==0){k=0}else{k=(a[j]|0)==0?0:j}c[5312730]=(Od(0,146656)|0)<<24>>24;j=Od(0,144296)|0;c[5312728]=j<<24>>24;l=c[5312730]|0;if(j<<24>>24!=0|(l|0)!=0){j=e|0;n$(j|0,0,16384)|0;if((l|0)==0){l=Id(0,4101)|0;c[5312728]=1;m=l}else{m=Id(0,4115)|0}do{if((m|0)!=0){l=o$(m|0)|0;if((l|0)==0){break}else{n=m;o=l}do{XB(j,16384,n);XB(j,16384,141688);n=n+(o+1)|0;o=o$(n|0)|0;}while((o|0)!=0)}}while(0);c[4886340]=gt(139360,j,1088)|0;}j=Mi(k|0)|0;c[7094376]=j;if((j|0)!=0|(k|0)==0){p=j}else{Sr(137416,(h=i,i=i+8|0,c[h>>2]=k,h)|0);i=h;k=Mi(0)|0;c[7094376]=k;p=k}if((p|0)==0){py();Sr(135920,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;f=0;i=d;return f|0}k=ze(p|0,0)|0;c[7094378]=k;if((k|0)==0){py();Ae(c[7094376]|0)|0;Sr(134464,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;f=0;i=d;return f|0}zi(k|0)|0;if(!(a[42992]|0)){n$(19945336,0,507904)|0;c[4938828]=0;k=Ly(56224)|0;c[5385978]=k;if((a[19945336+(k*124|0)|0]|0)==0){q=k}else{do{if((c[19945436+(k*124|0)>>2]|0)==0){if((c[19945428+(k*124|0)>>2]|0)!=0){break}My(k,1)}}while(0);c[19945444+(k*124|0)>>2]=wf()|0;q=c[5385978]|0}c[19945440+(q*124|0)>>2]=1;a[42992]=1}n$(2145968,0,10240)|0;c[539052]=0;c[539054]=0;q=c[(c[4886316]|0)+32>>2]|0;if((q|0)>128){r=128}else{r=(q|0)<16?16:q}q=si()|0;if((q|0)==40962){s=120240;t=36}else if((q|0)==40963){s=118840;t=36}else if((q|0)==40964){s=117648;t=36}else if((q|0)==40965){s=116632;t=36}else if((q|0)==40961){s=121408;t=36}else if((q|0)!=0){s=115328;t=36}if((t|0)==36){Sr(113048,(h=i,i=i+8|0,c[h>>2]=s,h)|0);i=h}a:do{if((r|0)>0){s=0;do{mh(1,2145968+(s*80|0)|0);if((si()|0)!=0){break a}c[539052]=(c[539052]|0)+1;s=s+1|0;}while((s|0)<(r|0))}}while(0);Sr(56904,(h=i,i=i+8|0,c[h>>2]=c[539052],h)|0);i=h;a[42984]=1;ah(53250);Ze(+(+g[(c[4886336]|0)+28>>2]));$c(+(+g[(c[4886334]|0)+28>>2]));c[b>>2]=80;c[b+4>>2]=82;c[b+8>>2]=182;c[b+12>>2]=88;c[b+16>>2]=240;c[b+20>>2]=4;c[b+24>>2]=338;c[b+28>>2]=26;c[b+32>>2]=58;c[b+36>>2]=46;c[b+40>>2]=260;c[b+44>>2]=24;c[b+48>>2]=118;c[b+52>>2]=206;c[b+56>>2]=130;c[b+60>>2]=272;c[b+64>>2]=32;c[b+68>>2]=290;c[b+72>>2]=178;c[b+76>>2]=66;f=1;i=d;return f|0}function ry(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=i;d=0;do{e=2127760+(d<<2)|0;if(!((c[e>>2]|0)==-1)){c[2128280+(d<<2)>>2]=0;f=2127240+(d<<2)|0;nc(c[f>>2]|0);gi(c[f>>2]|0,4105,0);g=2128800+(d<<2)|0;h=c[g>>2]|0;if((h|0)>0){ng(h|0,2129320+(d*80|0)|0);c[g>>2]=0}g=c[e>>2]|0;c[2146e3+(g*80|0)>>2]=0;Py(g);c[f>>2]=0;c[e>>2]=-1}d=d+1|0;}while((d|0)<129);vy();if(a[42984]|0){if((c[539052]|0)>0){d=0;do{if((c[2146e3+(d*80|0)>>2]|0)!=0){Tr(57928,(j=i,i=i+8|0,c[j>>2]=d,j)|0);i=j}e=c[2145984+(d*80|0)>>2]|0;if((e|0)>0){c[21250948+(e*36|0)>>2]=0}e=2145968+(d*80|0)|0;nc(c[e>>2]|0);vh(1,e|0);d=d+1|0;}while((d|0)<(c[539052]|0))}n$(2145968,0,10240)|0;a[42984]=0}if(!(a[42992]|0)){k=c[7094378]|0;ig(k|0);l=c[7094376]|0;m=Ae(l|0)|0;n$(2127760,-1|0,516)|0;n$(2128280,0,516)|0;n$(2127240,0,516)|0;py();i=b;return}c[19945440+((c[5385978]|0)*124|0)>>2]=0;d=c[4938828]|0;if((d|0)>0){e=0;f=d;while(1){d=19945336+(e*124|0)|0;do{if((a[d]|0)==0){n=f}else{g=19945436+(e*124|0)|0;if((c[g>>2]|0)==0){n=f;break}h=si()|0;if((h|0)==40964){o=117648;p=25}else if((h|0)==40965){o=116632;p=25}else if((h|0)==40962){o=120240;p=25}else if((h|0)==40963){o=118840;p=25}else if((h|0)==40961){o=121408;p=25}else if((h|0)!=0){o=115328;p=25}if((p|0)==25){p=0;Sr(113048,(j=i,i=i+8|0,c[j>>2]=o,j)|0);i=j}ng(1,19945400+(e*124|0)|0);if((si()|0)!=0){Sr(114048,(j=i,i=i+8|0,c[j>>2]=d,j)|0);i=j}c[g>>2]=0;n=c[4938828]|0}}while(0);d=e+1|0;if((d|0)<(n|0)){e=d;f=n}else{break}}}c[4938828]=0;a[42992]=0;k=c[7094378]|0;ig(k|0);l=c[7094376]|0;m=Ae(l|0)|0;n$(2127760,-1|0,516)|0;n$(2128280,0,516)|0;n$(2127240,0,516)|0;py();i=b;return}function sy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0;f=i;i=i+16|0;h=f|0;j=(a|0)!=0;do{if(j){if((e|0)>-1&(c[4938828]|0)>(e|0)){k=+g[a>>2];g[h>>2]=k;l=+g[a+4>>2];g[h+4>>2]=l;g[h+8>>2]=+g[a+8>>2];m=k;n=l;break}Sr(61320,(o=i,i=i+8|0,c[o>>2]=e,o)|0);i=o;i=f;return}else{if(b>>>0>1023>>>0){Ur(1,62080,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o}if(!((e|0)>-1&(c[4938828]|0)>(e|0))){Sr(61320,(o=i,i=i+8|0,c[o>>2]=e,o)|0);i=o;i=f;return}l=+g[21250936+(b*36|0)>>2];k=+g[21250940+(b*36|0)>>2];p=+g[21250944+(b*36|0)>>2];do{if((c[3586]|0)==(b|0)){q=+g[4986330]-l;r=+g[4986331]-k;s=+g[4986332]-p;if(!(q*q+r*r+s*s<=2304.0)){break}t=Uy(3)|0;if((t|0)==-1){i=f;return}Ry(t,e,3,-1,d,1);c[2145996+(t*80|0)>>2]=1;Ub(c[2145968+(t*80|0)>>2]|0);i=f;return}}while(0);g[h>>2]=l;g[h+4>>2]=k;g[h+8>>2]=p;m=l;n=k}}while(0);a=h|0;t=h+4|0;do{if((NB(m)|0)==0){if((NB(n)|0)!=0){u=17;break}if((NB(+g[h+8>>2])|0)!=0){u=17}}else{u=17}}while(0);if((u|0)==17){Tr(96520,(o=i,i=i+16|0,c[o>>2]=63992,c[o+8>>2]=1269,o)|0);i=o;g[h+8>>2]=0.0;g[t>>2]=0.0;g[a>>2]=0.0}do{if((c[539054]|0)>(((c[539052]|0)*5|0|0)/3|0|0)){n=+g[4986330]- +g[a>>2];m=+g[4986331]- +g[t>>2];s=+g[4986332]- +g[h+8>>2];r=+g[(c[4886324]|0)+28>>2]+ +g[(c[4886328]|0)+28>>2];if(n*n+m*m+s*s>2]=1}j=d|0;Kg(c[j>>2]|0,4100,a|0);Sy(d,a);c[2145996+(h*80|0)>>2]=1;Ub(c[j>>2]|0);i=f;return}function ty(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if(!((a|0)>-1&(c[4938828]|0)>(a|0))){Sr(61320,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;i=d;return}e=Uy(3)|0;if((e|0)==-1){i=d;return}Ry(e,a,3,-1,b,1);c[2145996+(e*80|0)>>2]=1;Ub(c[2145968+(e*80|0)>>2]|0);i=d;return}function uy(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0;vy();e=(b|0)!=0;if(e){if((a[b]|0)==0){f=3}}else{f=3}do{if((f|0)==3){if((d|0)==0){return}if((a[d]|0)!=0){break}return}}while(0);h=Uy(4)|0;c[2758]=h;if((h|0)==-1){return}c[2146e3+(h*80|0)>>2]=1;i=c[2145968+(h*80|0)>>2]|0;c[4939870]=i;g[2146020+(h*80|0)>>2]=0.0;Pb(i|0,4100,+0.0,+0.0,+0.0);Pb(c[4939870]|0,4102,+0.0,+0.0,+0.0);Pb(c[4939870]|0,4101,+0.0,+0.0,+0.0);hi(c[4939870]|0,4129,+0.0);gi(c[4939870]|0,514,1);if((c[2758]|0)==-1){return}a:do{if((d|0)==0){j=b;f=12}else{if((a[d]|0)==0){j=b;f=12;break}do{if(e){if((a[b]|0)==0){break}if((k$(b,d)|0)==0){j=d;f=12;break a}}}while(0);q$(19545128,d|0,64)|0;k=Xx(b)|0}}while(0);if((f|0)==12){q$(19545128,j|0,64)|0;k=0}c[5114360]=k;k=Xx(19545128)|0;c[4939876]=k;if((k|0)==0){k=c[5114360]|0;do{if((k|0)!=0){Yx(k);c[5114360]=0;j=c[4939876]|0;if((j|0)==0){break}Yx(j);c[4939876]=0}}while(0);k=c[2758]|0;c[2146e3+(k*80|0)>>2]=0;Py(k);c[4939870]=0;c[2758]=-1;return}if((Ny(4,19759488,58816)|0)==0){return}Oy(c[4939872]|0);Oy(c[4939873]|0);Oy(c[4939874]|0);Oy(c[4939875]|0);Md(c[4939870]|0,4,19759488);k=c[4939870]|0;if((c[(c[4781226]|0)+32>>2]|0)==0){hi(k|0,4106,+(+g[(c[4781232]|0)+28>>2]*+g[(c[4886330]|0)+28>>2]))}else{hi(k|0,4106,+0.0)}Ub(c[4939870]|0);a[11040]=1;return}function vy(){var b=0;if(!(a[11040]|0)){return}nc(c[4939870]|0);gi(c[4939870]|0,4105,0);ng(4,19759488);b=c[2758]|0;c[2146e3+(b*80|0)>>2]=0;Py(b);c[4939870]=0;c[2758]=-1;b=c[5114360]|0;if((b|0)!=0){Yx(b);c[5114360]=0}b=c[4939876]|0;if((b|0)!=0){Yx(b);c[4939876]=0}a[11040]=0;return}function wy(a,b,d,e,f,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=+j;k=k|0;var 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;l=i;i=i+96|0;m=l|0;n=l+8|0;o=l+16|0;if(a>>>0>128>>>0){i=l;return}do{if((e|0)==1){if((f|0)==1){p=4352;break}p=(f|0)==2?4354:4353}else if((e|0)==2){p=(f|0)==2?4355:4353}else{p=4353}}while(0);q=2127760+(a<<2)|0;do{if((c[q>>2]|0)==-1){do{if((k|0)>-1){r=Uy(1)|0;if((r|0)<0){break}Ry(r,-1,1,k,0,0);s=c[2145968+(r*80|0)>>2]|0;c[2146008+(r*80|0)>>2]=1;c[2146012+(r*80|0)>>2]=1;t=s;u=r;v=12}else{r=Uy(4)|0;if((r|0)<0){break}s=c[2145968+(r*80|0)>>2]|0;c[2146e3+(r*80|0)>>2]=1;g[2146020+(r*80|0)>>2]=0.0;gi(s|0,4105,0);gi(s|0,4103,0);Pb(s|0,4100,+0.0,+0.0,+0.0);Pb(s|0,4102,+0.0,+0.0,+0.0);Pb(s|0,4101,+0.0,+0.0,+0.0);hi(s|0,4129,+0.0);gi(s|0,514,1);t=s;u=r;v=12}}while(0);if((v|0)==12){c[q>>2]=u;c[2127240+(a<<2)>>2]=t;c[2128800+(a<<2)>>2]=0;c[2139640+(a<<2)>>2]=0}if(!((c[q>>2]|0)==-1)){break}Sr(60616,(w=i,i=i+1|0,i=i+7&-8,c[w>>2]=0,w)|0);i=w;i=l;return}}while(0);q=2127240+(a<<2)|0;Bc(c[q>>2]|0,4117,m|0);t=c[m>>2]|0;if((t|0)==20){Tr(59912,(w=i,i=i+1|0,i=i+7&-8,c[w>>2]=0,w)|0);i=w;i=l;return}w=2128800+(a<<2)|0;m=c[w>>2]|0;if((t|0)==(m|0)){if((Ny(1,n,59296)|0)==0){i=l;return}m$(o|0,2129320+(a*80|0)|0,80)|0;t=c[w>>2]|0;u=2139640+(a<<2)|0;if((t|0)>0){v=c[u>>2]|0;r=0;do{c[2129320+(a*80|0)+(r<<2)>>2]=c[o+(((v+r|0)%(t|0)|0)<<2)>>2];r=r+1|0;}while((r|0)<(t|0))}r=c[n>>2]|0;c[2129320+(a*80|0)+(t<<2)>>2]=r;c[u>>2]=t;u=t+1|0;c[w>>2]=u;x=u;y=t;z=r}else{r=c[2139640+(a<<2)>>2]|0;x=m;y=r;z=c[2129320+(a*80|0)+(r<<2)>>2]|0}c[n>>2]=z;c[2139640+(a<<2)>>2]=(y+1|0)%(x|0)|0;Yc(z|0,p|0,h|0,da(da(e,b)|0,f)|0,d|0);Md(c[q>>2]|0,1,n|0);do{if((k|0)<0){n=c[q>>2]|0;if((c[(c[4781226]|0)+32>>2]|0)==0){hi(n|0,4106,+(+g[(c[553082]|0)+28>>2]*j*+g[(c[4886330]|0)+28>>2]));break}else{hi(n|0,4106,+0.0);break}}}while(0);k=2128280+(a<<2)|0;if((c[k>>2]|0)!=0){i=l;return}Ub(c[q>>2]|0);c[k>>2]=1;i=l;return}function xy(){var a=0,b=0,d=0,e=0,f=0;if((c[539052]|0)>0){a=0;do{Py(a);a=a+1|0;}while((a|0)<(c[539052]|0))}vy();a=0;do{b=2127760+(a<<2)|0;if(!((c[b>>2]|0)==-1)){c[2128280+(a<<2)>>2]=0;d=2127240+(a<<2)|0;nc(c[d>>2]|0);gi(c[d>>2]|0,4105,0);e=2128800+(a<<2)|0;f=c[e>>2]|0;if((f|0)>0){ng(f|0,2129320+(a*80|0)|0);c[e>>2]=0}e=c[b>>2]|0;c[2146e3+(e*80|0)>>2]=0;Py(e);c[d>>2]=0;c[b>>2]=-1}a=a+1|0;}while((a|0)<129);return}function yy(a){a=a|0;var b=0,d=0;a=c[539052]|0;if((a|0)>0){b=0}else{return}do{do{if((c[2146004+(b*80|0)>>2]|0)!=0){d=c[2145984+(b*80|0)>>2]|0;if((d|0)==-1){break}c[21250956+(d*36|0)>>2]=0}}while(0);b=b+1|0;}while((b|0)<(a|0));return}function zy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ty(1,d,b,c,a);return}function Ay(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ty(0,d,b,c,a);return}function By(a){a=a|0;if((c[21250948+(a*36|0)>>2]|0)==0){return}Py(c[21250952+(a*36|0)>>2]|0);return}function Cy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0.0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0;e=i;i=i+40|0;f=e|0;h=e+24|0;j=+g[b>>2];k=h|0;g[k>>2]=j;l=+g[b+4>>2];m=h+4|0;g[m>>2]=l;n=h+8|0;g[n>>2]=+g[b+8>>2];do{if((NB(j)|0)==0){if((NB(l)|0)!=0){o=4;break}if((NB(+g[n>>2])|0)!=0){o=4}}else{o=4}}while(0);if((o|0)==4){Tr(96520,(p=i,i=i+16|0,c[p>>2]=63992,c[p+8>>2]=2251,p)|0);i=p;g[n>>2]=0.0;g[m>>2]=0.0;g[k>>2]=0.0}b=d|0;h=d+4|0;do{if((NB(+g[b>>2])|0)==0){if((NB(+g[h>>2])|0)!=0){o=8;break}if((NB(+g[d+8>>2])|0)!=0){o=8}}else{o=8}}while(0);if((o|0)==8){Tr(96520,(p=i,i=i+16|0,c[p>>2]=63992,c[p+8>>2]=2253,p)|0);i=p;g[d+8>>2]=0.0;g[h>>2]=0.0;g[b>>2]=0.0}q=d+12|0;r=d+16|0;do{if((NB(+g[q>>2])|0)==0){if((NB(+g[r>>2])|0)!=0){o=12;break}if((NB(+g[d+20>>2])|0)!=0){o=12}}else{o=12}}while(0);if((o|0)==12){Tr(96520,(p=i,i=i+16|0,c[p>>2]=63992,c[p+8>>2]=2254,p)|0);i=p;g[d+20>>2]=0.0;g[r>>2]=0.0;g[q>>2]=0.0}q=d+24|0;r=d+28|0;do{if((NB(+g[q>>2])|0)==0){if((NB(+g[r>>2])|0)!=0){o=17;break}s=d+32|0;if((NB(+g[s>>2])|0)!=0){o=17;break}t=+g[q>>2];u=+g[r>>2];v=+g[s>>2]}else{o=17}}while(0);if((o|0)==17){Tr(96520,(p=i,i=i+16|0,c[p>>2]=63992,c[p+8>>2]=2255,p)|0);i=p;g[d+32>>2]=0.0;g[r>>2]=0.0;g[q>>2]=0.0;t=0.0;u=0.0;v=0.0}q=f|0;g[q>>2]=+g[b>>2];g[f+4>>2]=+g[h>>2];g[f+8>>2]=+g[d+8>>2];g[f+12>>2]=t;g[f+16>>2]=u;g[f+20>>2]=v;c[3586]=a;g[4986330]=+g[k>>2];g[4986331]=+g[m>>2];g[4986332]=+g[n>>2];fh(4100,k|0);fh(4102,876376);fh(4111,q|0);i=e;return}function Dy(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,h=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0;d=i;e=+g[b>>2];f=+g[b+4>>2];h=+g[b+8>>2];do{if((NB(e)|0)==0){if((NB(f)|0)!=0){j=4;break}if((NB(h)|0)==0){k=e;l=f;m=h}else{j=4}}else{j=4}}while(0);if((j|0)==4){Tr(96520,(n=i,i=i+16|0,c[n>>2]=63992,c[n+8>>2]=1179,n)|0);i=n;k=0.0;l=0.0;m=0.0}if(a>>>0>1023>>>0){Ur(1,99936,(n=i,i=i+8|0,c[n>>2]=a,n)|0);i=n}else{g[21250936+(a*36|0)>>2]=k;g[21250940+(a*36|0)>>2]=l;g[21250944+(a*36|0)>>2]=m;i=d;return}}function Ey(){var b=0,d=0,e=0,f=0,h=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.0,z=0.0,A=0,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=i;i=i+64|0;d=b|0;e=b+8|0;f=b+16|0;h=b+24|0;j=b+32|0;k=b+40|0;l=b+48|0;m=b+56|0;n=c[4781226]|0;if((c[n+20>>2]|0)!=0){if((c[539052]|0)>0){o=0;do{do{if((c[2145992+(o*80|0)>>2]|0)!=0){p=c[2145968+(o*80|0)>>2]|0;if((c[(c[4781226]|0)+32>>2]|0)==0){hi(p|0,4106,+(+g[2146020+(o*80|0)>>2]));break}else{hi(p|0,4106,+0.0);break}}}while(0);o=o+1|0;}while((o|0)<(c[539052]|0));q=c[4781226]|0}else{q=n}c[q+20>>2]=0}if((c[539052]|0)>0){q=0;do{n=2145968+(q*80|0)|0;o=c[2145984+(q*80|0)>>2]|0;a:do{if((c[2146e3+(q*80|0)>>2]|0)==0){p=2145992+(q*80|0)|0;if((c[p>>2]|0)==0){break}r=c[4886330]|0;s=c[553082]|0;if((c[r+20>>2]|0)==0){if((c[s+20>>2]|0)!=0){t=15}}else{t=15}if((t|0)==15){t=0;g[2146016+(q*80|0)>>2]=+g[r+28>>2]*+g[s+28>>2]}s=c[4886318]|0;do{if((c[s+20>>2]|0)!=0){if((c[2146044+(q*80|0)>>2]|0)!=0){break}hi(c[n>>2]|0,4129,+(+g[s+28>>2]))}}while(0);s=c[4886322]|0;if((c[s+20>>2]|0)!=0){hi(c[n>>2]|0,4128,+(+g[s+28>>2]))}s=2146004+(q*80|0)|0;if((c[s>>2]|0)==0){r=n|0;do{if((c[2146012+(q*80|0)>>2]|0)==0){Bc(c[r>>2]|0,4112,l|0);if((c[l>>2]|0)!=4116){break}c[2145996+(q*80|0)>>2]=0;Py(q);break a}}while(0);Bc(c[r>>2]|0,514,l|0);if((c[2146008+(q*80|0)>>2]|0)==0){break}if((c[l>>2]|0)!=0){break}u=21250936+(o*36|0)|0;Kg(c[r>>2]|0,4100,u|0);Sy(n,u);break}if((c[21250956+(o*36|0)>>2]|0)==0){if((c[2145980+(q*80|0)>>2]|0)!=0){Py(q);break}u=2145996+(q*80|0)|0;if((c[u>>2]|0)==0){break}Qy(n,0);nc(c[n>>2]|0);c[u>>2]=0;break}u=21250968+(o*36|0)|0;v=(c[u>>2]|0)==0;do{if((c[p>>2]|0)==0){if(!v){t=29;break}w=c[2145972+(q*80|0)>>2]|0}else{if(!v){t=29;break}x=c[2145972+(q*80|0)>>2]|0;if((x|0)==(c[21250964+(o*36|0)>>2]|0)){w=x;break}Qy(n,1);c[2145996+(q*80|0)>>2]=0;x=n|0;nc(c[x>>2]|0);gi(c[x>>2]|0,4105,0);c[u>>2]=1;t=29}}while(0);if((t|0)==29){t=0;Ry(q,c[21250964+(o*36|0)>>2]|0,c[21250960+(o*36|0)>>2]|0,o,-1,c[2146044+(q*80|0)>>2]|0);c[s>>2]=1;v=c[2145972+(q*80|0)>>2]|0;p=19945448+(v*124|0)|0;c[p>>2]=(c[p>>2]|0)+1;c[u>>2]=0;w=v}Sy(n,2146032+(q*80|0)|0);v=2145996+(q*80|0)|0;p=(c[v>>2]|0)!=0;if(!(+g[2146020+(q*80|0)>>2]!=0.0)){if(p){Qy(n,0);nc(c[n>>2]|0);c[v>>2]=0;break}if((c[19945452+(w*124|0)>>2]|0)!=0){break}r=19945456+(w*124|0)|0;if((c[r>>2]|0)>=0){break}c[r>>2]=q;break}r=n|0;if(!p){gi(c[r>>2]|0,4103,1);c[v>>2]=1;Ub(c[r>>2]|0);b:do{if((c[2145980+(q*80|0)>>2]|0)==0){if((c[19945452+(w*124|0)>>2]|0)==0){v=19945456+(w*124|0)|0;do{if((c[19945448+(w*124|0)>>2]|0)!=0){p=c[v>>2]|0;if(!((p|0)>-1)){break}y=+g[2146024+(p*80|0)>>2];if(!(y<0.0)){x=wf()|0;z=+Td(+(y+ +(x-(c[2146028+(p*80|0)>>2]|0)|0)/1.0e3),+(+(c[19945416+(w*124|0)>>2]|0)/+(c[19945404+(w*124|0)>>2]|0)));hi(c[r>>2]|0,4132,+z)}c[v>>2]=q;break b}}while(0);c[v>>2]=q;break}p=si()|0;if((p|0)==40961){A=121408;t=45}else if((p|0)==40962){A=120240;t=45}else if((p|0)==40963){A=118840;t=45}else if((p|0)==40964){A=117648;t=45}else if((p|0)==40965){A=116632;t=45}else if((p|0)!=0){A=115328;t=45}if((t|0)==45){t=0;Sr(113048,(B=i,i=i+8|0,c[B>>2]=A,B)|0);i=B}Bc(c[2145968+((c[19945456+(w*124|0)>>2]|0)*80|0)>>2]|0,4133,m|0);p=si()|0;if((p|0)==40962){break}else if((p|0)==40963){C=118840}else if((p|0)==40964){C=117648}else if((p|0)==40965){C=116632}else if((p|0)==40961){C=121408}else if((p|0)==0){gi(c[r>>2]|0,4133,c[m>>2]|0);break}else{C=115328}Sr(101112,(B=i,i=i+16|0,c[B>>2]=q,c[B+8>>2]=C,B)|0);i=B}else{z=+g[2146024+(q*80|0)>>2];if(z<0.0){break}p=wf()|0;y=+Td(+(z+ +(p-(c[2146028+(q*80|0)>>2]|0)|0)/1.0e3),+(+(c[19945416+(w*124|0)>>2]|0)/+(c[19945404+(w*124|0)>>2]|0)));hi(c[r>>2]|0,4132,+y)}}while(0);u=19945452+(w*124|0)|0;c[u>>2]=(c[u>>2]|0)+1}u=c[r>>2]|0;if((c[2146044+(q*80|0)>>2]|0)==0){gi(u|0,514,0);hi(c[r>>2]|0,4129,+(+g[(c[4886318]|0)+28>>2]));break}else{gi(u|0,514,1);hi(c[r>>2]|0,4129,+0.0);break}}}while(0);q=q+1|0;}while((q|0)<(c[539052]|0))}q=0;do{w=2127760+(q<<2)|0;do{if(!((c[w>>2]|0)==-1)){C=2127240+(q<<2)|0;Bc(c[C>>2]|0,4118,h|0);m=c[h>>2]|0;c[h>>2]=m-1;A=c[C>>2]|0;if((m|0)==0){D=A}else{m=A;while(1){yc(m|0,1,k|0);A=c[h>>2]|0;c[h>>2]=A-1;l=c[C>>2]|0;if((A|0)==0){D=l;break}else{m=l}}}Bc(D|0,4117,h|0);Bc(c[C>>2]|0,4112,j|0);m=2128280+(q<<2)|0;do{if((c[j>>2]|0)==4116){c[m>>2]=0;if((c[h>>2]|0)!=0){break}gi(c[C>>2]|0,4105,0);r=2128800+(q<<2)|0;l=c[r>>2]|0;if((l|0)>0){ng(l|0,2129320+(q*80|0)|0);c[r>>2]=0}r=c[w>>2]|0;c[2146e3+(r*80|0)>>2]=0;Py(r);c[C>>2]=0;c[w>>2]=-1;t=85}else{t=85}}while(0);if((t|0)==85){t=0;if((c[m>>2]|0)!=0){break}if((c[h>>2]|0)==0){break}}Ub(c[C>>2]|0);c[m>>2]=1}}while(0);q=q+1|0;}while((q|0)<129);do{if(a[11040]|0){Bc(c[4939870]|0,4118,d|0);q=c[d>>2]|0;c[d>>2]=q-1;h=c[4939870]|0;if((q|0)==0){E=h}else{q=h;while(1){yc(q|0,1,f|0);Oy(c[f>>2]|0);Md(c[4939870]|0,1,f|0);h=c[d>>2]|0;c[d>>2]=h-1;t=c[4939870]|0;if((h|0)==0){E=t;break}else{q=t}}}Bc(E|0,4112,e|0);Bc(c[4939870]|0,4117,d|0);do{if((c[e>>2]|0)==4116){if((c[d>>2]|0)==0){break}Tr(103648,(B=i,i=i+1|0,i=i+7&-8,c[B>>2]=0,B)|0);i=B;Ub(c[4939870]|0)}}while(0);q=c[4939870]|0;if((c[(c[4781226]|0)+32>>2]|0)==0){hi(q|0,4106,+(+g[(c[4781232]|0)+28>>2]*+g[(c[4886330]|0)+28>>2]));break}else{hi(q|0,4106,+0.0);break}}}while(0);if((c[(c[4883770]|0)+20>>2]|0)!=0){c[(c[4886336]|0)+20>>2]=1;c[(c[4883770]|0)+20>>2]=0}B=c[4886336]|0;if((c[B+20>>2]|0)!=0){if((c[(c[4883770]|0)+32>>2]|0)==0){Ze(+0.0)}else{Ze(+(+g[B+28>>2]))}c[(c[4886336]|0)+20>>2]=0}B=c[4886334]|0;if((c[B+20>>2]|0)==0){F=c[4886330]|0;G=F+20|0;c[G>>2]=0;H=c[553082]|0;I=H+20|0;c[I>>2]=0;J=c[4781232]|0;K=J+20|0;c[K>>2]=0;L=c[4886322]|0;M=L+20|0;c[M>>2]=0;N=c[4886318]|0;O=N+20|0;c[O>>2]=0;i=b;return}$c(+(+g[B+28>>2]));c[(c[4886334]|0)+20>>2]=0;F=c[4886330]|0;G=F+20|0;c[G>>2]=0;H=c[553082]|0;I=H+20|0;c[I>>2]=0;J=c[4781232]|0;K=J+20|0;c[K>>2]=0;L=c[4886322]|0;M=L+20|0;c[M>>2]=0;N=c[4886318]|0;O=N+20|0;c[O>>2]=0;i=b;return}function Fy(){xy();return}function Gy(){var b=0,d=0;if((c[4938828]|0)!=0){return}if(a[42992]|0){return}n$(19945336,0,507904)|0;c[4938828]=0;b=Ly(56224)|0;c[5385978]=b;if((a[19945336+(b*124|0)|0]|0)==0){d=b}else{do{if((c[19945436+(b*124|0)>>2]|0)==0){if((c[19945428+(b*124|0)>>2]|0)!=0){break}My(b,1)}}while(0);c[19945444+(b*124|0)>>2]=wf()|0;d=c[5385978]|0}c[19945440+(d*124|0)>>2]=1;a[42992]=1;return}function Hy(a,b){a=a|0;b=b|0;b=Ly(a)|0;a=19945428+(b*124|0)|0;do{if((c[19945436+(b*124|0)>>2]|0)==0){if((c[a>>2]|0)!=0){break}My(b,c[(c[4886320]|0)+32>>2]|0)}}while(0);c[19945444+(b*124|0)>>2]=Bs()|0;return((c[a>>2]|0)==0?b:0)|0}function Iy(){return}function Jy(){var a=0,b=0,d=0;a=i;Sr(132976,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;d=pj(45057)|0;Sr(131960,(b=i,i=i+8|0,c[b>>2]=d,b)|0);i=b;d=pj(45058)|0;Sr(130768,(b=i,i=i+8|0,c[b>>2]=d,b)|0);i=b;d=pj(45059)|0;Sr(129408,(b=i,i=i+8|0,c[b>>2]=d,b)|0);i=b;d=pj(45060)|0;Sr(128288,(b=i,i=i+8|0,c[b>>2]=d,b)|0);i=b;d=Id(c[7094376]|0,4102)|0;Sr(127064,(b=i,i=i+8|0,c[b>>2]=d,b)|0);i=b;do{if((c[5312730]|0)==0){if((c[5312728]|0)==0){break}d=Id(c[7094376]|0,4101)|0;Sr(125688,(b=i,i=i+8|0,c[b>>2]=d,b)|0);i=b}else{d=Id(c[7094376]|0,4115)|0;Sr(125688,(b=i,i=i+8|0,c[b>>2]=d,b)|0);i=b}}while(0);if((c[5312728]|c[5312730]|0)==0){i=a;return}Sr(124760,(b=i,i=i+8|0,c[b>>2]=c[(c[4886340]|0)+4>>2],b)|0);i=b;i=a;return}function Ky(){return}function Ly(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;if((b|0)==0){Ur(0,108192,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;return 0}f=a[b]|0;if(f<<24>>24==0){Sr(107320,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;g=0;i=d;return g|0}if((o$(b|0)|0)>>>0>63>>>0){Sr(106384,(e=i,i=i+8|0,c[e>>2]=b,e)|0);i=e;g=0;i=d;return g|0}if(f<<24>>24==42){Sr(105400,(e=i,i=i+8|0,c[e>>2]=b,e)|0);i=e;g=0;i=d;return g|0}a:do{if((c[4938828]|0)>0){f=0;while(1){h=f+1|0;if((VB(19945336+(f*124|0)|0,b)|0)==0){break}if((h|0)<(c[4938828]|0)){f=h}else{j=0;break a}}if((f|0)==-1){j=0;break}else{g=f}i=d;return g|0}else{j=0}}while(0);while(1){k=19945336+(j*124|0)|0;l=j+1|0;if((a[k]|0)==0){break}if((l|0)<4096){j=l}else{m=17;break}}if((m|0)==17){Ur(0,104616,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;return 0}if((j|0)>=(c[4938828]|0)){c[4938828]=l}n$(k|0,0,124)|0;c[19945456+(j*124|0)>>2]=-1;r$(k|0,b|0)|0;g=j;i=d;return g|0}function My(d,e){d=d|0;e=e|0;var f=0,g=0,h=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;f=i;i=i+32|0;g=f|0;h=f+24|0;j=19945336+(d*124|0)|0;if((a[j]|0)==0){i=f;return}k=19945436+(d*124|0)|0;if((c[k>>2]|0)!=0){i=f;return}l=19945428+(d*124|0)|0;if((c[l>>2]|0)!=0){i=f;return}m=(e|0)!=0;do{if(!m){if((c[19945432+(d*124|0)>>2]|0)==0){break}i=f;return}}while(0);e=Vx(j,g)|0;if((e|0)==0){if((c[5385978]|0)==(d|0)){Ur(0,110552,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n}Sr(109336,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n;c[l>>2]=1;c[19945400+(d*124|0)>>2]=c[19945400+((c[5385978]|0)*124|0)>>2];i=f;return}c[19945432+(d*124|0)>>2]=1;if(!m){ts(e);i=f;return}m=c[g+4>>2]|0;o=c[g+8>>2]|0;do{if((m|0)==1){if((o|0)==1){p=4352;break}p=(o|0)==2?4354:4353}else if((m|0)==2){p=(o|0)==2?4355:4353}else{p=4353}}while(0);o=19945400+(d*124|0)|0;if((Ny(1,o,j)|0)==0){if((c[5385978]|0)==(d|0)){Ur(0,110552,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n}Sr(109336,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n;c[l>>2]=1;c[o>>2]=c[19945400+((c[5385978]|0)*124|0)>>2];ts(e);i=f;return}m=g+16|0;q=c[m>>2]|0;if((q|0)==0){b[h>>1]=0;Yc(c[o>>2]|0,4353,h|0,2,22050);r=g|0}else{h=g|0;Yc(c[o>>2]|0,p|0,e|0,q|0,c[h>>2]|0);r=h}h=si()|0;while(1){if((h|0)==0){s=57;break}else if((h|0)!=40965){s=47;break}q=wf()|0;t=c[4938828]|0;if((t|0)>0){u=0;v=-1;w=q}else{s=43;break}while(1){do{if((a[19945336+(u*124|0)|0]|0)==0){x=w;y=v}else{if((c[19945436+(u*124|0)>>2]|0)==0){x=w;y=v;break}q=c[19945444+(u*124|0)>>2]|0;z=(q|0)<(w|0);x=z?q:w;y=z?u:v}}while(0);z=u+1|0;if((z|0)<(t|0)){u=z;v=y;w=x}else{break}}if(!((y|0)>-1)){s=43;break}t=19945336+(y*124|0)|0;do{if((a[t]|0)!=0){z=19945436+(y*124|0)|0;if((c[z>>2]|0)==0){break}q=si()|0;if((q|0)==40962){A=120240;s=39}else if((q|0)==40963){A=118840;s=39}else if((q|0)==40964){A=117648;s=39}else if((q|0)==40965){A=116632;s=39}else if((q|0)==40961){A=121408;s=39}else if((q|0)!=0){A=115328;s=39}if((s|0)==39){s=0;Sr(113048,(n=i,i=i+8|0,c[n>>2]=A,n)|0);i=n}ng(1,19945400+(y*124|0)|0);if((si()|0)!=0){Sr(114048,(n=i,i=i+8|0,c[n>>2]=t,n)|0);i=n}c[z>>2]=0}}while(0);Yc(c[o>>2]|0,p|0,e|0,c[m>>2]|0,c[r>>2]|0);h=si()|0}if((s|0)==43){ng(1,o|0);if((c[5385978]|0)==(d|0)){Ur(0,110552,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n}Sr(109336,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n;c[l>>2]=1;c[o>>2]=c[19945400+((c[5385978]|0)*124|0)>>2];ts(e);Sr(123896,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n;i=f;return}else if((s|0)==47){ng(1,o|0);if((c[5385978]|0)==(d|0)){Ur(0,110552,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n}Sr(109336,(n=i,i=i+8|0,c[n>>2]=j,n)|0);i=n;c[l>>2]=1;c[o>>2]=c[19945400+((c[5385978]|0)*124|0)>>2];ts(e);if((h|0)==40961){B=121408}else if((h|0)==40962){B=120240}else if((h|0)==40963){B=118840}else if((h|0)==40964){B=117648}else if((h|0)==40965){B=116632}else if((h|0)==0){B=122248}else{B=115328}Sr(123096,(n=i,i=i+16|0,c[n>>2]=j,c[n+8>>2]=B,n)|0);i=n;i=f;return}else if((s|0)==57){s=19945404+(d*124|0)|0;d=g;c[s>>2]=c[d>>2];c[s+4>>2]=c[d+4>>2];c[s+8>>2]=c[d+8>>2];c[s+12>>2]=c[d+12>>2];c[s+16>>2]=c[d+16>>2];c[s+20>>2]=c[d+20>>2];ts(e);c[k>>2]=1;i=f;return}}function Ny(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;f=i;g=si()|0;if((g|0)==40964){h=117648;j=7}else if((g|0)==40965){h=116632;j=7}else if((g|0)==40962){h=120240;j=7}else if((g|0)==40961){h=121408;j=7}else if((g|0)==40963){h=118840;j=7}else if((g|0)!=0){h=115328;j=7}if((j|0)==7){Sr(113048,(k=i,i=i+8|0,c[k>>2]=h,k)|0);i=k}Tc(b|0,d|0);h=si()|0;while(1){if((h|0)==40964){j=37;break}else if((h|0)==40965){j=38;break}else if((h|0)==40961){j=40;break}else if((h|0)==40962){l=120240;break}else if((h|0)==0){m=1;j=42;break}else if((h|0)!=40963){j=39;break}g=wf()|0;n=c[4938828]|0;if((n|0)>0){o=0;p=-1;q=g}else{j=28;break}while(1){do{if((a[19945336+(o*124|0)|0]|0)==0){r=q;s=p}else{if((c[19945436+(o*124|0)>>2]|0)==0){r=q;s=p;break}g=c[19945444+(o*124|0)>>2]|0;t=(g|0)<(q|0);r=t?g:q;s=t?o:p}}while(0);t=o+1|0;if((t|0)<(n|0)){o=t;p=s;q=r}else{break}}if(!((s|0)>-1)){j=28;break}n=19945336+(s*124|0)|0;do{if((a[n]|0)!=0){t=19945436+(s*124|0)|0;if((c[t>>2]|0)==0){break}g=si()|0;if((g|0)==40962){u=120240;j=24}else if((g|0)==40963){u=118840;j=24}else if((g|0)==40964){u=117648;j=24}else if((g|0)==40965){u=116632;j=24}else if((g|0)==40961){u=121408;j=24}else if((g|0)!=0){u=115328;j=24}if((j|0)==24){j=0;Sr(113048,(k=i,i=i+8|0,c[k>>2]=u,k)|0);i=k}ng(1,19945400+(s*124|0)|0);if((si()|0)!=0){Sr(114048,(k=i,i=i+8|0,c[k>>2]=n,k)|0);i=k}c[t>>2]=0}}while(0);n=si()|0;if((n|0)==40962){v=120240;j=35}else if((n|0)==40963){v=118840;j=35}else if((n|0)==40964){v=117648;j=35}else if((n|0)==40965){v=116632;j=35}else if((n|0)==40961){v=121408;j=35}else if((n|0)!=0){v=115328;j=35}if((j|0)==35){j=0;Sr(113048,(k=i,i=i+8|0,c[k>>2]=v,k)|0);i=k}Tc(b|0,d|0);h=si()|0}if((j|0)==28){Sr(112104,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;m=0;i=f;return m|0}else if((j|0)==37){l=117648}else if((j|0)==38){l=116632}else if((j|0)==39){l=115328}else if((j|0)==40){l=121408}else if((j|0)==42){i=f;return m|0}Sr(111320,(k=i,i=i+16|0,c[k>>2]=e,c[k+8>>2]=l,k)|0);i=k;m=0;i=f;return m|0}function Oy(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;i=i+8|0;e=d|0;f=si()|0;if((f|0)==40963){g=118840;h=7}else if((f|0)==40962){g=120240;h=7}else if((f|0)==40961){g=121408;h=7}else if((f|0)==40964){g=117648;h=7}else if((f|0)==40965){g=116632;h=7}else if((f|0)!=0){g=115328;h=7}if((h|0)==7){Sr(113048,(j=i,i=i+8|0,c[j>>2]=g,j)|0);i=j}g=c[5114360]|0;h=(g|0)==0?c[4939876]|0:g;if((h|0)==0){i=d;return}g=Zx(h,4096,21543920)|0;do{if((g|0)==0){Yx(h);if((c[5114360]|0)==0){f=Xx(19545128)|0;c[4939876]=f;k=f}else{c[5114360]=0;k=c[4939876]|0}if((k|0)!=0){l=k;m=Zx(k,4096,21543920)|0;break}vy();i=d;return}else{l=h;m=g}}while(0);g=c[l+12>>2]|0;h=c[l+16>>2]|0;do{if((g|0)==2){n=(h|0)==2?4355:4353}else if((g|0)==1){if((h|0)==1){n=4352;break}n=(h|0)==2?4354:4353}else{n=4353}}while(0);if((m|0)==0){b[e>>1]=0;Yc(a|0,4353,e|0,2,22050)}else{Yc(a|0,n|0,21543920,m|0,c[l+8>>2]|0)}l=si()|0;if((l|0)==0){i=d;return}vy();switch(l|0){case 40961:{o=121408;break};case 40962:{o=120240;break};case 40963:{o=118840;break};case 40964:{o=117648;break};case 40965:{o=116632;break};default:{o=115328}}Sr(102816,(j=i,i=i+8|0,c[j>>2]=o,j)|0);i=j;i=d;return}function Py(a){a=a|0;var b=0,d=0,e=0,f=0;b=2145968+(a*80|0)|0;d=2146e3+(a*80|0)|0;if((c[d>>2]|0)!=0){return}e=2146004+(a*80|0)|0;if((c[e>>2]|0)!=0){c[e>>2]=0;e=c[2145984+(a*80|0)>>2]|0;if(!((e|0)==-1)){c[21250948+(e*36|0)>>2]=0;c[21250952+(e*36|0)>>2]=-1;c[21250956+(e*36|0)>>2]=0;c[21250968+(e*36|0)>>2]=0}Qy(b,1)}e=2145996+(a*80|0)|0;f=b|0;if((c[e>>2]|0)!=0){nc(c[f>>2]|0);c[e>>2]=0}gi(c[f>>2]|0,4105,0);c[2145972+(a*80|0)>>2]=0;c[2145976+(a*80|0)>>2]=0;c[2145980+(a*80|0)>>2]=0;c[2145984+(a*80|0)>>2]=-1;c[2145988+(a*80|0)>>2]=-1;f=2145992+(a*80|0)|0;if((c[f>>2]|0)!=0){c[f>>2]=0;c[539054]=(c[539054]|0)-1}c[d>>2]=0;c[2146008+(a*80|0)>>2]=0;c[2146044+(a*80|0)>>2]=0;return}function Qy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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=i;e=a+4|0;f=c[e>>2]|0;h=a+28|0;if((c[h>>2]|0)!=0){j=19945452+(f*124|0)|0;c[j>>2]=(c[j>>2]|0)-1}j=(b|0)!=0;b=19945448+(f*124|0)|0;k=c[b>>2]|0;if(j){l=k-1|0;c[b>>2]=l;m=l}else{m=k}if((m|0)==0){c[19945456+(f*124|0)>>2]=-1;i=d;return}if((c[a+12>>2]|0)==1){if(j){i=d;return}if((c[h>>2]|0)==0){i=d;return}m=c[a>>2]|0;k=si()|0;if((k|0)==40964){n=117648;o=15}else if((k|0)==40961){n=121408;o=15}else if((k|0)==40962){n=120240;o=15}else if((k|0)==40965){n=116632;o=15}else if((k|0)==40963){n=118840;o=15}else if((k|0)!=0){n=115328;o=15}if((o|0)==15){Sr(113048,(p=i,i=i+8|0,c[p>>2]=n,p)|0);i=p}n=a+56|0;Ac(m|0,4132,n|0);k=si()|0;if((k|0)==40965){q=116632;o=21}else if((k|0)==40964){q=117648;o=21}else if((k|0)==0){c[a+60>>2]=wf()|0;i=d;return}else if((k|0)==40963){q=118840;o=21}else if((k|0)==40961){q=121408;o=21}else if((k|0)!=40962){q=115328;o=21}if((o|0)==21){Sr(101952,(p=i,i=i+16|0,c[p>>2]=m,c[p+8>>2]=q,p)|0);i=p}g[n>>2]=-1.0;i=d;return}n=19945456+(f*124|0)|0;if((2145968+((c[n>>2]|0)*80|0)|0)!=(a|0)){i=d;return}if(j){o=27}else{if((c[19945452+(f*124|0)>>2]|0)==0){r=-1}else{o=27}}a:do{if((o|0)==27){q=c[539052]|0;if((q|0)<=0){r=-1;break}m=c[e>>2]|0;k=0;l=-1;b:while(1){do{if((c[2145972+(k*80|0)>>2]|0)!=(m|0)|(2145968+(k*80|0)|0)==(a|0)){s=l}else{if((c[2145992+(k*80|0)>>2]|0)==0){s=l;break}if((c[2146004+(k*80|0)>>2]|0)==0){s=l;break}if((c[2145980+(k*80|0)>>2]|0)!=0){s=l;break}if((c[2145996+(k*80|0)>>2]|0)!=0){break b}s=(l|0)<0?k:l}}while(0);b=k+1|0;if((b|0)<(q|0)){k=b;l=s}else{r=s;break a}}c[n>>2]=k;r=l}}while(0);if((c[19945452+(f*124|0)>>2]|0)!=0){i=d;return}do{if((r|0)<0){if(!j){t=a;break}c[n>>2]=-1;i=d;return}else{t=2145968+(r*80|0)|0}}while(0);if((c[h>>2]|0)==0){g[t+56>>2]=+g[a+56>>2];c[t+60>>2]=c[a+60>>2];i=d;return}h=c[a>>2]|0;a=si()|0;if((a|0)==40962){u=120240;o=49}else if((a|0)==40963){u=118840;o=49}else if((a|0)==40964){u=117648;o=49}else if((a|0)==40965){u=116632;o=49}else if((a|0)==40961){u=121408;o=49}else if((a|0)!=0){u=115328;o=49}if((o|0)==49){Sr(113048,(p=i,i=i+8|0,c[p>>2]=u,p)|0);i=p}u=t+56|0;Ac(h|0,4132,u|0);a=si()|0;if((a|0)==40961){v=121408;o=55}else if((a|0)==0){c[t+60>>2]=wf()|0;i=d;return}else if((a|0)==40963){v=118840;o=55}else if((a|0)==40964){v=117648;o=55}else if((a|0)==40965){v=116632;o=55}else if((a|0)!=40962){v=115328;o=55}if((o|0)==55){Sr(101952,(p=i,i=i+16|0,c[p>>2]=h,c[p+8>>2]=v,p)|0);i=p}g[u>>2]=-1.0;i=d;return}function Ry(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0.0,l=0;j=2145968+(b*80|0)|0;c[2145976+(b*80|0)>>2]=wf()|0;c[2145972+(b*80|0)>>2]=d;c[2145980+(b*80|0)>>2]=e;c[2145984+(b*80|0)>>2]=f;c[2145988+(b*80|0)>>2]=h;n$(2145996+(b*80|0)|0,0,20)|0;k=+g[(c[4886330]|0)+28>>2]*+g[(c[553082]|0)+28>>2];h=2146016+(b*80|0)|0;g[h>>2]=k;g[2146020+(b*80|0)>>2]=k;c[2146044+(b*80|0)>>2]=i;if((d|0)>-1){if((a[19945336+(d*124|0)|0]|0)!=0){do{if((c[19945436+(d*124|0)>>2]|0)==0){if((c[19945428+(d*124|0)>>2]|0)!=0){break}My(d,1)}}while(0);c[19945444+(d*124|0)>>2]=wf()|0}b=j|0;gi(c[b>>2]|0,4105,c[19945400+(d*124|0)>>2]|0);l=b}else{l=j|0}hi(c[l>>2]|0,4099,+1.0);j=c[l>>2]|0;if((c[(c[4781226]|0)+32>>2]|0)==0){hi(j|0,4106,+(+g[h>>2]))}else{hi(j|0,4106,+0.0)}Kg(c[l>>2]|0,4100,876376);Kg(c[l>>2]|0,4102,876376);gi(c[l>>2]|0,4103,0);hi(c[l>>2]|0,4128,+(+g[(c[4886322]|0)+28>>2]));j=c[l>>2]|0;if((i|0)==0){gi(j|0,514,0);hi(c[l>>2]|0,4129,+(+g[(c[4886318]|0)+28>>2]));return}else{gi(j|0,514,1);hi(c[l>>2]|0,4129,+0.0);return}}function Sy(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0;do{if((c[a+76>>2]|0)==0){d=+g[4986330]- +g[b>>2];e=+g[4986331]- +g[b+4>>2];f=+g[4986332]- +g[b+8>>2];h=+T(d*d+e*e+f*f);f=h- +g[(c[4886324]|0)+28>>2];if(!(f>0.0)){break}h=+g[(c[4886328]|0)+28>>2];if(f>2];j=a+52|0;if(!(+g[j>>2]!=h)){return}g[j>>2]=h;j=c[a>>2]|0;if((c[(c[4781226]|0)+32>>2]|0)==0){hi(j|0,4106,+h);return}else{hi(j|0,4106,+0.0);return}}}while(0);b=a+52|0;i=+g[a+48>>2];if(!(+g[b>>2]!=i)){return}g[b>>2]=i;b=c[a>>2]|0;if((c[(c[4781226]|0)+32>>2]|0)==0){hi(b|0,4106,+i);return}else{hi(b|0,4106,+0.0);return}}function Ty(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0,u=0.0,v=0,w=0.0,x=0.0,y=0.0;h=i;i=i+32|0;j=h|0;k=h+16|0;if(f>>>0>1023>>>0){Ur(1,62080,(l=i,i=i+8|0,c[l>>2]=f,l)|0);i=l}if(!((b|0)>-1&(c[4938828]|0)>(b|0))){Sr(61320,(l=i,i=i+8|0,c[l>>2]=b,l)|0);i=l;i=h;return}m=21250948+(f*36|0)|0;do{if((c[m>>2]|0)==0){n=Uy(a)|0;if(!((n|0)==-1)){c[21250968+(f*36|0)>>2]=1;g[2146024+(n*80|0)>>2]=-1.0;c[2146028+(n*80|0)>>2]=wf()|0;o=n;p=21250952+(f*36|0)|0;break}Tr(62992,(l=i,i=i+16|0,c[l>>2]=b,c[l+8>>2]=f,l)|0);i=l;i=h;return}else{n=21250952+(f*36|0)|0;o=c[n>>2]|0;p=n}}while(0);n=2145968+(o*80|0)|0;c[m>>2]=1;c[p>>2]=o;c[21250960+(f*36|0)>>2]=a;c[21250964+(f*36|0)>>2]=b;c[21250956+(f*36|0)>>2]=1;c[2145984+(o*80|0)>>2]=f;c[2146004+(o*80|0)>>2]=1;do{if((c[3586]|0)==(f|0)){q=+g[4986330]- +g[21250936+(f*36|0)>>2];r=+g[4986331]- +g[21250940+(f*36|0)>>2];s=+g[4986332]- +g[21250944+(f*36|0)>>2];b=2146044+(o*80|0)|0;if(!(q*q+r*r+s*s<=2304.0)){t=b;break}c[b>>2]=1;g[j+8>>2]=0.0;g[j+4>>2]=0.0;b=j|0;g[b>>2]=0.0;a=n|0;Kg(c[a>>2]|0,4100,b|0);Kg(c[a>>2]|0,4102,876376);i=h;return}else{t=2146044+(o*80|0)|0}}while(0);c[t>>2]=0;if((d|0)==0){s=+g[21250936+(f*36|0)>>2];g[j>>2]=s;g[j+4>>2]=+g[21250940+(f*36|0)>>2];g[j+8>>2]=+g[21250944+(f*36|0)>>2];u=s}else{s=+g[d>>2];g[j>>2]=s;g[j+4>>2]=+g[d+4>>2];g[j+8>>2]=+g[d+8>>2];u=s}d=j|0;f=j+4|0;do{if((NB(u)|0)==0){if((NB(+g[f>>2])|0)!=0){v=21;break}t=j+8|0;if((NB(+g[t>>2])|0)!=0){v=21;break}w=+g[d>>2];x=+g[f>>2];y=+g[t>>2]}else{v=21}}while(0);if((v|0)==21){Tr(96520,(l=i,i=i+16|0,c[l>>2]=63992,c[l+8>>2]=1390,l)|0);i=l;g[j+8>>2]=0.0;g[f>>2]=0.0;g[d>>2]=0.0;w=0.0;x=0.0;y=0.0}g[2146032+(o*80|0)>>2]=w;g[2146036+(o*80|0)>>2]=x;g[2146040+(o*80|0)>>2]=y;a:do{if((e|0)==0){g[k+8>>2]=0.0;g[k+4>>2]=0.0;g[k>>2]=0.0}else{y=+g[e>>2];o=k|0;g[o>>2]=y;f=k+4|0;g[f>>2]=+g[e+4>>2];j=k+8|0;g[j>>2]=+g[e+8>>2];do{if((NB(y)|0)==0){if((NB(+g[f>>2])|0)!=0){break}if((NB(+g[j>>2])|0)==0){break a}}}while(0);Tr(96520,(l=i,i=i+16|0,c[l>>2]=63992,c[l+8>>2]=1397,l)|0);i=l;g[j>>2]=0.0;g[f>>2]=0.0;g[o>>2]=0.0}}while(0);l=n|0;Kg(c[l>>2]|0,4100,d|0);Kg(c[l>>2]|0,4102,k|0);i=h;return}function Uy(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0.0,x=0.0;b=wf()|0;d=c[539052]|0;a:do{if((d|0)>0){e=-1;f=b;h=999;i=1.0e3;j=1;k=0;l=0;while(1){b:do{if((c[2146e3+(l*80|0)>>2]|0)==0){if((c[2145992+(l*80|0)>>2]|0)==0){m=l;n=e;break a}if((c[2145996+(l*80|0)>>2]|0)==0){o=c[19945448+((c[2145972+(l*80|0)>>2]|0)*124|0)>>2]|0;do{if(!((e|0)<0|(o|0)>(k|0))){if((c[2145980+(l*80|0)>>2]|0)>>>0>>0){break}if((c[2145976+(l*80|0)>>2]|0)>=(f|0)){p=k;q=0;r=i;s=h;t=f;u=e;break b}}}while(0);p=o;q=0;r=i;s=c[2145980+(l*80|0)>>2]|0;t=c[2145976+(l*80|0)>>2]|0;u=l;break}if((j|0)==0){p=k;q=0;r=i;s=h;t=f;u=e;break}v=c[2145980+(l*80|0)>>2]|0;if(!(v>>>0>>0)){p=k;q=j;r=i;s=h;t=f;u=e;break}do{if(v>>>0>>0){w=+g[2146020+(l*80|0)>>2]}else{if((c[2146004+(l*80|0)>>2]|0)!=0){p=k;q=j;r=i;s=h;t=f;u=e;break b}x=+g[2146020+(l*80|0)>>2];if(x>2]|0)<(f|0)){w=x}else{p=k;q=j;r=i;s=h;t=f;u=e;break b}}}while(0);p=k;q=j;r=w;s=v;t=c[2145976+(l*80|0)>>2]|0;u=l}else{p=k;q=j;r=i;s=h;t=f;u=e}}while(0);o=l+1|0;if((o|0)<(d|0)){e=u;f=t;h=s;i=r;j=q;k=p;l=o}else{m=-1;n=u;break}}}else{m=-1;n=-1}}while(0);u=(m|0)==-1?n:m;if(!((u|0)>-1)){return u|0}Py(u);c[2145992+(u*80|0)>>2]=1;c[539054]=(c[539054]|0)+1;return u|0}function Vy(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a=c[422837]|0;b=c[(c[453930]|0)+32>>2]|0;a:do{if((b|0)>0){d=0;e=a;while(1){if((c[e>>2]|0)==0){f=d;g=e;break a}h=d+1|0;i=e+121936|0;if((h|0)<(b|0)){d=h;e=i}else{f=h;g=i;break}}}else{f=0;g=a}}while(0);if((f|0)==(b|0)){j=-1;return j|0}b=rA(f)|0;c[g+67644>>2]=b;c[b>>2]=f;c[g>>2]=4;c[g+68168>>2]=c[422835];c[g+84984>>2]=1;c[g+84960>>2]=16384;j=f;return j|0}function Wy(b){b=b|0;var d=0,e=0,f=0;d=i;do{if((b|0)>=0){if((c[(c[453930]|0)+32>>2]|0)<=(b|0)){break}e=c[422837]|0;c[e+(b*121936|0)>>2]=0;a[e+(b*121936|0)+67648|0]=0;f=c[e+(b*121936|0)+67644>>2]|0;if((f|0)==0){i=d;return}e=f+424|0;c[e>>2]=c[e>>2]&-9;i=d;return}}while(0);Ur(1,152112,(d=i,i=i+8|0,c[d>>2]=b,d)|0);i=d}function Xy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[5387004]|0)==0){return}b=c[7586196]|0;if((b|0)==0){d=gt(177232,149544,0)|0;c[7586196]=d;e=d}else{e=b}do{if((c[7092712]|0)!=0){if((c[e+32>>2]|0)==0){break}if((c[7586190]|0)==0){c[7586190]=gt(130960,149544,0)|0}b=c[7586194]|0;if((b|0)==0){d=gt(120456,109544,0)|0;c[7586194]=d;f=d}else{f=b}b=c[7586192]|0;if((b|0)==0){d=gt(100136,149544,0)|0;c[7586192]=d;g=c[7586194]|0;h=d}else{g=f;h=b}b=c[(c[422837]|0)+66604>>2]&1;d=(c[(c[7586190]|0)+32>>2]|0)==0?b:b|2;b=(c[g+32>>2]|0)==0?d:d|4;Kk[c[(c[7092486]|0)+492>>2]&255](100136,c[h+4>>2]|0)|0;d=c[(c[422837]|0)+67644>>2]|0;Wk[c[(c[7092486]|0)+532>>2]&63](b,0,d+488|0,d+500|0)|0}}while(0);h=c[7092710]|0;if((h|0)>0){i=0;j=h}else{return}while(1){h=c[5387004]|0;if((c[h+(i*1548|0)>>2]|0)==0){k=j}else{Tk[a&255](c[h+(i*1548|0)+4>>2]|0,c[h+(i*1548|0)+8>>2]|0,h+(i*1548|0)+12|0);k=c[7092710]|0}h=i+1|0;if((h|0)<(k|0)){i=h;j=k}else{break}}return}function Yy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=c[5387004]|0;if((e|0)==0){f=0;return f|0}g=c[7092710]|0;a:do{if((g|0)>1){h=1;while(1){i=h+1|0;if((c[e+(h*1548|0)>>2]|0)==0){j=h;break a}if((i|0)<(g|0)){h=i}else{j=i;break}}}else{j=1}}while(0);if((j|0)>=(g|0)){f=0;return f|0}c[e+(j*1548|0)>>2]=1;c[e+(j*1548|0)+4>>2]=a;c[e+(j*1548|0)+8>>2]=b;m$(e+(j*1548|0)+12|0,d|0,b*12|0)|0;f=j;return f|0}function Zy(a){a=a|0;var b=0;b=c[5387004]|0;if((b|0)==0){return}c[b+(a*1548|0)>>2]=0;return}function _y(a){a=a|0;var b=0,d=0;b=i;d=c[5120100]|0;if(!((c[7092712]|0)!=0&(d|0)!=0)){i=b;return}oD(d,10,(d=i,i=i+8|0,c[d>>2]=a,d)|0)|0;i=d;i=b;return}function $y(){var a=0,b=0,d=0,e=0;a=i;if((c[7092712]|0)==0){b=0;i=a;return b|0}d=c[7092486]|0;if((d|0)==0){Sr(58056,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;b=-1;i=a;return b|0}else{Kk[c[d+492>>2]&255](51392,c[(c[5458848]|0)+4>>2]|0)|0;b=Ok[c[(c[7092486]|0)+484>>2]&63]()|0;i=a;return b|0}return 0}function az(){var a=0,b=0;a=c[7092486]|0;if((a|0)==0){b=-1;return b|0}b=Ok[c[a+488>>2]&63]()|0;return b|0}function bz(){gt(46192,109544,0)|0;gt(185352,149544,512)|0;gt(177232,149544,512)|0;gt(181400,176728,0)|0;gt(120456,109544,0)|0;gt(130960,149544,0)|0;gt(173200,149544,512)|0;gt(170080,149544,0)|0;gt(166808,149544,0)|0;gt(163384,149544,0)|0;gt(160640,149544,0)|0;gt(158008,149544,0)|0;gt(155528,153528,512)|0;gt(151608,149544,0)|0;gt(149256,149544,0)|0;gt(146640,149544,0)|0;gt(144280,149544,512)|0;gt(141600,149544,512)|0;gt(139312,149544,0)|0;gt(137400,149544,0)|0;gt(135904,149544,512)|0;gt(134448,149544,512)|0;gt(132960,149544,0)|0;gt(131944,109544,0)|0;gt(130752,149544,0)|0;gt(129392,149544,0)|0;gt(128264,28378608,512)|0;gt(125664,124752,512)|0;gt(123872,123088,512)|0;gt(122224,28378608,512)|0;return}function cz(){var a=0,b=0,d=0;a=i;i=i+88|0;b=a|0;d=c[5387004]|0;if((d|0)!=0){es(d)}d=bt(181400)|0;c[7092710]=d;c[5387004]=gs(d*1548|0)|0;c[b>>2]=140;c[b+4>>2]=6;c[b+8>>2]=26;c[b+12>>2]=114;c[b+16>>2]=118;c[b+20>>2]=38;c[b+24>>2]=52;c[b+28>>2]=78;c[b+32>>2]=124;c[b+36>>2]=298;c[b+40>>2]=40;c[b+44>>2]=14;c[b+48>>2]=12;c[b+52>>2]=50;c[b+56>>2]=8;c[b+60>>2]=224;c[b+64>>2]=26;c[b+68>>2]=16;c[b+72>>2]=200;c[b+76>>2]=40;c[b+80>>2]=40;c[b+84>>2]=240;c[7092486]=NJ(2,b)|0;i=a;return}function dz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+2064|0;f=e+2048|0;g=e|0;h=f;c[h>>2]=d;c[h+4>>2]=0;Xe(g|0,2048,b|0,f|0)|0;switch(a|0){case 5:{Ur(1,115312,(j=i,i=i+8|0,c[j>>2]=g,j)|0);i=j;break};case 3:{Sr(117632,(j=i,i=i+8|0,c[j>>2]=g,j)|0);i=j;k=2048;l=0;i=e;return};case 2:{Sr(118824,(j=i,i=i+8|0,c[j>>2]=g,j)|0);i=j;k=2048;l=0;i=e;return};case 4:{Sr(116560,(j=i,i=i+8|0,c[j>>2]=g,j)|0);i=j;k=2048;l=0;i=e;return};case 1:{Sr(120232,(j=i,i=i+8|0,c[j>>2]=g,j)|0);i=j;k=2048;l=0;i=e;return};default:{Sr(114024,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=2048;l=0;i=e;return}}}function ez(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0;l=i;i=i+56|0;m=l|0;rB(m,d,e,f,h,j,k,0);c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];g[b+8>>2]=+g[m+8>>2];g[b+12>>2]=+g[m+12>>2];g[b+16>>2]=+g[m+16>>2];g[b+20>>2]=+g[m+20>>2];g[b+36>>2]=+g[m+36>>2];g[b+24>>2]=+g[m+24>>2];g[b+28>>2]=+g[m+28>>2];g[b+32>>2]=+g[m+32>>2];a[b+41|0]=a[m+41|0]|0;a[b+40|0]=a[m+40|0]|0;c[b+72>>2]=c[m+44>>2];c[b+80>>2]=c[m+52>>2];g[b+44>>2]=0.0;c[b+48>>2]=0;c[b+76>>2]=0;i=l;return}function fz(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0;l=i;i=i+56|0;m=l|0;qB(m,d,e,f,h,j,k,0);c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];g[b+8>>2]=+g[m+8>>2];g[b+12>>2]=+g[m+12>>2];g[b+16>>2]=+g[m+16>>2];g[b+20>>2]=+g[m+20>>2];g[b+36>>2]=+g[m+36>>2];g[b+24>>2]=+g[m+24>>2];g[b+28>>2]=+g[m+28>>2];g[b+32>>2]=+g[m+32>>2];a[b+41|0]=a[m+41|0]|0;a[b+40|0]=a[m+40|0]|0;c[b+72>>2]=c[m+44>>2];c[b+80>>2]=c[m+52>>2];g[b+44>>2]=0.0;c[b+48>>2]=0;c[b+76>>2]=0;i=l;return}function gz(a){a=a|0;return sB(a,-1)|0}function hz(a,b){a=a|0;b=b|0;return wA(a,b)|0}function iz(){return pq()|0}function jz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;f=i;i=i+32|0;h=f|0;j=f+16|0;k=h|0;l=j|0;tq(nq(a)|0,k,l);do{if(+g[b>>2]!=0.0){m=4}else{if(+g[b+4>>2]!=0.0){m=4;break}if(+g[b+8>>2]!=0.0){m=4}}}while(0);if((m|0)==4){n=+JB(k,l);o=-0.0-n;g[k>>2]=o;g[l>>2]=n;g[h+4>>2]=o;g[j+4>>2]=n;g[h+8>>2]=o;g[j+8>>2]=n}if((c|0)!=0){g[c>>2]=+g[k>>2];g[c+4>>2]=+g[h+4>>2];g[c+8>>2]=+g[h+8>>2]}if((d|0)!=0){g[d>>2]=+g[l>>2];g[d+4>>2]=+g[j+4>>2];g[d+8>>2]=+g[j+8>>2]}if((e|0)==0){i=f;return}g[e+8>>2]=0.0;g[e+4>>2]=0.0;g[e>>2]=0.0;i=f;return}function kz(a,b){a=a|0;b=b|0;eA((c[422837]|0)+(a*121936|0)|0,b,1);return}function lz(a){a=a|0;return fs(a,2)|0}function mz(a){a=a|0;es(a);return}function nz(a){a=a|0;var b=0,d=0;b=i;if((qs()|0)==0){d=rs(a,0)|0;i=b;return d|0}else{Ur(1,121360,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;return 0}return 0}function oz(){var a=0,b=0,d=0,e=0,f=0,g=0;a=c[5387004]|0;if((a|0)==0){b=0;return b|0}d=c[7092710]|0;a:do{if((d|0)>1){e=1;while(1){f=e+1|0;if((c[a+(e*1548|0)>>2]|0)==0){g=e;break a}if((f|0)<(d|0)){e=f}else{g=f;break}}}else{g=1}}while(0);if((g|0)>=(d|0)){b=0;return b|0}c[a+(g*1548|0)>>2]=1;c[a+(g*1548|0)+4>>2]=0;c[a+(g*1548|0)+8>>2]=0;b=g;return b|0}function pz(a){a=a|0;var b=0;b=c[5387004]|0;if((b|0)==0){return}c[b+(a*1548|0)>>2]=0;return}function qz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0;f=i;i=i+32|0;h=f|0;j=f+16|0;k=+g[b>>2];l=+g[b+4>>2];m=+g[b+8>>2];n=+g[d>>2];o=+g[d+4>>2];p=+g[d+8>>2];d=h|0;g[d>>2]=n-k;b=h+4|0;g[b>>2]=o-l;q=h+8|0;g[q>>2]=p-m;+wB(d);r=+g[d>>2];s=r*0.0;t=+g[b>>2];u=t*0.0;v=+g[q>>2];w=v+(s+u);q=j|0;if(w>.99|w<-.99){g[q>>2]=1.0;g[j+4>>2]=0.0;g[j+8>>2]=0.0}else{w=v*0.0;g[q>>2]=t-w;g[j+4>>2]=w-r;g[j+8>>2]=s-u}+wB(q);u=+g[q>>2];s=u*2.0;r=+g[j+4>>2];w=r*2.0;t=+g[j+8>>2];v=t*2.0;x=u*-2.0;u=r*-2.0;r=t*-2.0;j=c[5387004]|0;if((j|0)==0){i=f;return}c[j+(a*1548|0)>>2]=1;c[j+(a*1548|0)+4>>2]=e;c[j+(a*1548|0)+8>>2]=4;g[j+(a*1548|0)+12>>2]=k+s;g[j+(a*1548|0)+16>>2]=l+w;g[j+(a*1548|0)+20>>2]=m+v;g[j+(a*1548|0)+24>>2]=k+x;g[j+(a*1548|0)+28>>2]=l+u;g[j+(a*1548|0)+32>>2]=m+r;g[j+(a*1548|0)+36>>2]=n+x;g[j+(a*1548|0)+40>>2]=o+u;g[j+(a*1548|0)+44>>2]=p+r;g[j+(a*1548|0)+48>>2]=n+s;g[j+(a*1548|0)+52>>2]=o+w;g[j+(a*1548|0)+56>>2]=p+v;i=f;return}function rz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=c[422837]|0;c[f+(b*121936|0)+68168>>2]=c[422835];g=f+(b*121936|0)+66568|0;h=c[g>>2]|0;if((h|0)==(c[f+(b*121936|0)+66564>>2]|0)){i=0;return i|0}j=h+1|0;c[g>>2]=j;g=f+(b*121936|0)+1028+((j&63)<<10)|0;if((a[g]|0)==0){i=0;return i|0}TB(d,g,e);i=1;return i|0}function sz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[422837]|0;e=c[d+(a*121936|0)+85024>>2]&31;if((b|0)<0){f=-1;return f|0}if((c[d+(a*121936|0)+68188+(e*524|0)+504>>2]|0)<=(b|0)){f=-1;return f|0}f=c[(c[422840]|0)+((((c[d+(a*121936|0)+68188+(e*524|0)+508>>2]|0)+b|0)%(c[422838]|0)|0)*208|0)>>2]|0;return f|0}function tz(){c[422841]=-9999999;return}function uz(){if(a[186392]|0){return}a[186392]=1;Gr(150720,368);Gr(177024,138);Gr(149472,140);Gr(130880,236);Gr(120376,28);Gr(109480,28);Gr(100080,146);Gr(58016,176);Gr(51368,292);Gr(46168,364);Gr(185320,316);Gr(181360,204);Gr(176688,306);Hr(176688,80);Gr(173168,306);Hr(173168,80);Gr(170072,306);Hr(170072,80);Gr(166792,306);Hr(166792,80);Gr(163368,286);if((c[(c[5458548]|0)+32>>2]|0)!=0){Gr(160632,172);Gr(158e3,210)}Gr(155512,384);Gr(153512,150);Gr(151600,158);Gr(149240,404);Gr(146624,396);Gr(144264,50);Gr(141584,312);return}function vz(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;a=i;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}if((nr()|0)!=2){Sr(185992,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}d=Wz()|0;if((d|0)!=0){if((c[d+84984>>2]|0)==2){Sr(43464,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}else{Zz(d,43192);c[d+68168>>2]=c[422835];i=a;return}}if((VB(or(1)|0,185744)|0)==0){d=c[453930]|0;if((c[d+32>>2]|0)<=0){i=a;return}b=c[422837]|0;e=0;f=d;while(1){do{if((c[b>>2]|0)==0){g=f}else{if((c[b+84984>>2]|0)==2){g=f;break}Zz(b,43192);c[b+68168>>2]=c[422835];g=c[453930]|0}}while(0);d=e+1|0;if((d|0)<(c[g+32>>2]|0)){b=b+121936|0;e=d;f=g}else{break}}i=a;return}if((VB(or(1)|0,185296)|0)!=0){i=a;return}g=c[453930]|0;if((c[g+32>>2]|0)<=0){i=a;return}f=c[422837]|0;e=0;b=g;while(1){do{if((c[f>>2]|0)==0){h=b}else{if((c[f+84984>>2]|0)!=1){h=b;break}Zz(f,43192);c[f+68168>>2]=c[422835];h=c[453930]|0}}while(0);g=e+1|0;if((g|0)<(c[h+32>>2]|0)){f=f+121936|0;e=g;b=h}else{break}}i=a;return}function wz(){var a=0,b=0,d=0,e=0,f=0,g=0;a=i;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}b=c[453930]|0;if((c[b+32>>2]|0)<=0){i=a;return}d=c[422837]|0;e=0;f=b;while(1){do{if((c[d>>2]|0)==0){g=f}else{if((c[d+84984>>2]|0)!=1){g=f;break}Zz(d,43192);c[d+68168>>2]=c[422835];g=c[453930]|0}}while(0);b=e+1|0;if((b|0)<(c[g+32>>2]|0)){d=d+121936|0;e=b;f=g}else{break}}i=a;return}function xz(){var a=0,b=0,d=0,e=0,f=0,g=0;a=i;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}b=c[453930]|0;if((c[b+32>>2]|0)<=0){i=a;return}d=c[422837]|0;e=0;f=b;while(1){do{if((c[d>>2]|0)==0){g=f}else{if((c[d+84984>>2]|0)==2){g=f;break}Zz(d,43192);c[d+68168>>2]=c[422835];g=c[453930]|0}}while(0);b=e+1|0;if((b|0)<(c[g+32>>2]|0)){d=d+121936|0;e=b;f=g}else{break}}i=a;return}function yz(){var a=0,b=0,d=0;a=i;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}if((nr()|0)!=2){d=or(0)|0;Sr(43792,(b=i,i=i+8|0,c[b>>2]=d,b)|0);i=b;i=a;return}d=Uz()|0;if((d|0)==0){i=a;return}if((c[d+84984>>2]|0)==2){Sr(43464,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}else{Zz(d,43192);c[d+68168>>2]=c[422835];i=a;return}}function zz(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0;a=i;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}Sr(51336,(b=i,i=i+8|0,c[b>>2]=c[(c[453944]|0)+4>>2],b)|0);i=b;Sr(50440,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;Sr(49696,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;d=c[453930]|0;if((c[d+32>>2]|0)>0){e=c[422837]|0;f=0;g=d;while(1){d=e|0;if((c[d>>2]|0)==0){h=g}else{Sr(48976,(b=i,i=i+8|0,c[b>>2]=f,b)|0);i=b;j=c[(sA(f)|0)+248>>2]|0;Sr(48488,(b=i,i=i+8|0,c[b>>2]=j,b)|0);i=b;j=c[d>>2]|0;if((j|0)==2){Sr(47960,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}else if((j|0)==1){Sr(47624,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}else{j=c[e+84956>>2]|0;Sr(47224,(b=i,i=i+8|0,c[b>>2]=(j|0)<9999?j:9999,b)|0);i=b}j=e+67648|0;Sr(46840,(b=i,i=i+8|0,c[b>>2]=j,b)|0);i=b;Sr(46536,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;d=14-(o$(j|0)|0)|0;j=0;do{Sr(46128,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;j=j+1|0;}while((j|0)<(d|0));Sr(45480,(b=i,i=i+8|0,c[b>>2]=(c[422835]|0)-(c[e+68168>>2]|0),b)|0);i=b;d=Zv(e+84984|0)|0;Sr(46840,(b=i,i=i+8|0,c[b>>2]=d,b)|0);i=b;j=22-(o$(d|0)|0)|0;d=0;do{Sr(46128,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;d=d+1|0;}while((d|0)<(j|0));Sr(45024,(b=i,i=i+8|0,c[b>>2]=c[e+85016>>2],b)|0);i=b;Sr(44616,(b=i,i=i+8|0,c[b>>2]=c[e+84960>>2],b)|0);i=b;Sr(44240,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;h=c[453930]|0}j=f+1|0;if((j|0)<(c[h+32>>2]|0)){e=e+121936|0;f=j;g=h}else{break}}}Sr(44240,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}function Az(){var a=0,b=0;a=i;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}else{Sr(51984,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;_r(Dt(4)|0);i=a;return}}function Bz(){var a=0,b=0;a=i;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}else{Sr(52448,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;_r(Et(8)|0);i=a;return}}function Cz(){var a=0,b=0,d=0;a=i;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}if((nr()|0)!=2){Sr(54464,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}d=Wz()|0;if((d|0)==0){i=a;return}Sr(53920,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;Sr(53432,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;_r(d+4|0);i=a;return}function Dz(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a=i;i=i+64|0;b=a|0;if((c[5457514]|0)==(c[453970]|0)){i=a;return}if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=a;return}if((c[531807]|0)!=0){i=a;return}if((nr()|0)>1){e=oj(or(1)|0)|0;if((e|0)==0){f=0}else{g=e;h=7}}else{g=5;h=7}do{if((h|0)==7){if(+at(62928)!=0.0){f=g;break}e=(c[531808]|0)+(g*1e3|0)|0;c[531807]=e;j=pC(59288,(d=i,i=i+8|0,c[d>>2]=e,d)|0)|0;i=d;DA(5,j);i=a;return}}while(0);do{if((c[(c[453930]|0)+20>>2]|0)==0){if((c[(c[453956]|0)+20>>2]|0)!=0){break}c[422836]=c[422836]^4;g=c[5457514]|0;c[453970]=g;h=pC(59288,(d=i,i=i+8|0,c[d>>2]=g,d)|0)|0;i=d;kt(56872,h);h=(c[453930]|0)+32|0;g=c[h>>2]|0;if((g|0)>0){j=c[422837]|0;e=0;k=g;while(1){if((c[j+(e*121936|0)>>2]|0)==3){c[j+(e*121936|0)+117836>>2]=c[531807];l=c[h>>2]|0}else{l=k}g=e+1|0;if((g|0)<(l|0)){e=g;k=l}else{break}}}c[453968]=1;c[453969]=1;zA();oD(c[5120100]|0,8,(d=i,i=i+8|0,c[d>>2]=c[531808],d)|0)|0;i=d;k=(c[531808]|0)+100|0;c[531808]=k;c[422835]=(c[422835]|0)+100;oD(c[5120100]|0,8,(d=i,i=i+8|0,c[d>>2]=k,d)|0)|0;i=d;k=(c[531808]|0)+100|0;c[531808]=k;c[422835]=(c[422835]|0)+100;oD(c[5120100]|0,8,(d=i,i=i+8|0,c[d>>2]=k,d)|0)|0;i=d;k=(c[531808]|0)+100|0;c[531808]=k;c[422835]=(c[422835]|0)+100;c[453968]=2;c[453969]=0;if((c[(c[453930]|0)+32>>2]|0)>0){e=0;do{h=c[422837]|0;j=h+(e*121936|0)|0;g=j|0;do{if(!((c[g>>2]|0)>>>0<2>>>0)){m=(c[h+(e*121936|0)+84984>>2]|0)==1|0;NA(j,56208);n=c[5120100]|0;o=oD(n,2,(d=i,i=i+24|0,c[d>>2]=e,c[d+8>>2]=0,c[d+16>>2]=m,d)|0)|0;i=d;m=nD(n,o)|0;if((m|0)!=0){Zz(j,m);Sr(55280,(d=i,i=i+16|0,c[d>>2]=f,c[d+8>>2]=e,d)|0);i=d;break}if((c[g>>2]|0)==4){aA(j,h+(e*121936|0)+66588|0);break}else{aA(j,0);break}}}while(0);e=e+1|0;}while((e|0)<(c[(c[453930]|0)+32>>2]|0));p=c[531808]|0}else{p=k}oD(c[5120100]|0,8,(d=i,i=i+8|0,c[d>>2]=p,d)|0)|0;i=d;c[531808]=(c[531808]|0)+100;c[422835]=(c[422835]|0)+100;i=a;return}}while(0);p=b|0;Sr(58784,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;TB(p,ct(57920)|0,64);IA(p,0,0);i=a;return}function Ez(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;a=i;i=i+128|0;b=a|0;d=a+64|0;e=or(1)|0;if((e|0)==0){f=64;g=0;h=64;j=0;i=a;return}$B(b,64,103632,(k=i,i=i+8|0,c[k>>2]=e,k)|0)|0;i=k;do{if((mu(b,0)|0)==-1){$B(b,64,102808,(k=i,i=i+8|0,c[k>>2]=e,k)|0)|0;i=k;if((ii(ct(101928)|0,b|0)|0)!=0){break}Sr(101088,(k=i,i=i+8|0,c[k>>2]=e,k)|0);i=k;f=64;g=0;h=64;j=0;i=a;return}}while(0);gt(99920,96496,38)|0;k=or(0)|0;do{if((jC(k,63984,2)|0)==0){nt(99920,2.0);nt(62928,0.0);mt(62064,61312);l=1;m=(VB(k+2|0,173168)|0)==0|0}else{b=(VB(k,173168)|0)==0|0;if((c[(c[453956]|0)+32>>2]|0)!=2){l=b;m=b;break}nt(99920,0.0);l=b;m=b}}while(0);TB(d,e,64);e=Pr(86,4)|0;c[c[e>>2]>>2]=m;IA(d,l,e);f=64;g=0;h=64;j=0;i=a;return}function Fz(a,b){a=a|0;b=b|0;if((b|0)!=2){return}Ss(105392,104608,1,0);return}function Gz(){MA(163368);return}function Hz(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;i=i+1024|0;d=b|0;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;f=1024;g=0;i=b;return}if((nr()|0)<2){f=1024;g=0;i=b;return}m$(d|0,106304,10)|0;h=xr()|0;if((a[h]|0)==34){j=h+1|0;a[h+(o$(j|0)|0)|0]=0;k=j}else{k=h}p$(d|0,k|0)|0;OA(0,107304,(e=i,i=i+8|0,c[e>>2]=d,e)|0);i=e;f=1024;g=0;i=b;return}function Iz(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+1024|0;d=b|0;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;f=1024;g=0;i=b;return}if((nr()|0)<3){Sr(109296,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;f=1024;g=0;i=b;return}h=Uz()|0;if((h|0)==0){f=1024;g=0;i=b;return}m$(d|0,108160,15)|0;j=zr(2)|0;if((a[j]|0)==34){k=j+1|0;a[j+(o$(k|0)|0)|0]=0;l=k}else{l=j}p$(d|0,l|0)|0;OA(h,107304,(e=i,i=i+8|0,c[e>>2]=d,e)|0);i=e;f=1024;g=0;i=b;return}function Jz(){var b=0,d=0,e=0,f=0,g=0,h=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;b=i;i=i+72|0;d=b|0;e=b+8|0;if((c[(c[5451068]|0)+32>>2]|0)==0){f=64;g=0;i=b;return}c[542754]=0;h=c[(c[453964]|0)+4>>2]|0;if((h|0)==0){f=64;g=0;i=b;return}if((a[h]|0)==0){f=64;g=0;i=b;return}h=_u()|0;j=c[(c[453964]|0)+4>>2]|0;$B(e,64,135896,(k=i,i=i+16|0,c[k>>2]=h,c[k+8>>2]=j,k)|0)|0;i=k;k=Wt(e,d)|0;if(!((k|0)>-1)){f=64;g=0;i=b;return}if((k|0)<2){Yt(c[d>>2]|0);f=64;g=0;i=b;return}e=gs(k)|0;j=fu(e,k,c[d>>2]|0)|0;Yt(c[d>>2]|0);d=e+j|0;j=e;k=0;a:while(1){h=j+2|0;if(h>>>0>>0){l=h}else{m=k;break}while(1){n=l+1|0;if((a[l]|0)==32){o=l;break}if(n>>>0>>0){l=n}else{o=n;break}}n=o+1|0;if(!(n>>>0>>0)){m=k;break}a[o]=0;p=n;while(1){q=p+1|0;if((a[p]|0)==10){break}if(q>>>0>>0){p=q}else{m=k;break a}}a[p]=0;r=2171024+(k*40|0)|0;do{if((Uv(h,r|0,7)|0)!=0){c[2171060+(k*40|0)>>2]=(a[j]|0)!=48;s=oj(n|0)|0;t=2171056+(k*40|0)|0;c[t>>2]=s;u=c[r>>2]|0;if((u|0)==5){if(!((s-1|0)>>>0>127>>>0)){break}c[t>>2]=128;break}else if((u|0)==4){if(!((s-1|0)>>>0>31>>>0)){break}c[t>>2]=32;break}else{break}}}while(0);r=k+1|0;if((r|0)<1024){j=q;k=r}else{m=r;break}}c[542754]=m;es(e);f=64;g=0;i=b;return}function Kz(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a=i;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}d=c[542754]|0;if((d|0)>0){e=0;f=0;g=d}else{i=a;return}while(1){if((c[2171060+(e*40|0)>>2]|0)==0){d=f+1|0;h=Zv(2171024+(e*40|0)|0)|0;j=c[2171056+(e*40|0)>>2]|0;Sr(111304,(b=i,i=i+24|0,c[b>>2]=d,c[b+8>>2]=h,c[b+16>>2]=j,b)|0);i=b;k=d;l=c[542754]|0}else{k=f;l=g}d=e+1|0;if((d|0)<(l|0)){e=d;f=k;g=l}else{break}}if((l|0)>0){m=0;n=0;o=l}else{i=a;return}while(1){if((c[2171060+(m*40|0)>>2]|0)==0){p=n;q=o}else{l=n+1|0;g=Zv(2171024+(m*40|0)|0)|0;k=c[2171056+(m*40|0)>>2]|0;Sr(110528,(b=i,i=i+24|0,c[b>>2]=l,c[b+8>>2]=g,c[b+16>>2]=k,b)|0);i=b;p=l;q=c[542754]|0}l=m+1|0;if((l|0)<(q|0)){m=l;n=p;o=q}else{break}}i=a;return}function Lz(){Tz(0);return}function Mz(){Tz(1);return}function Nz(){Sz(0);return}function Oz(){Sz(1);return}function Pz(){var a=0,b=0;a=i;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}else{c[542754]=0;Rz();Sr(137352,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}}function Qz(){return}function Rz(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;b=i;i=i+192|0;d=b|0;e=c[(c[453964]|0)+4>>2]|0;if((e|0)==0){f=64;g=0;i=b;return}if((a[e]|0)==0){f=64;g=0;i=b;return}e=_u()|0;h=c[(c[453964]|0)+4>>2]|0;$B(d,64,135896,(j=i,i=i+16|0,c[j>>2]=e,c[j+8>>2]=h,j)|0)|0;i=j;h=Vt(d)|0;if((h|0)==0){f=64;g=0;i=b;return}d=b+64|0;if((c[542754]|0)>0){e=0;do{k=c[2171060+(e*40|0)>>2]|0;l=Zv(2171024+(e*40|0)|0)|0;m=c[2171056+(e*40|0)>>2]|0;$B(d,128,134432,(j=i,i=i+24|0,c[j>>2]=k,c[j+8>>2]=l,c[j+16>>2]=m,j)|0)|0;i=j;gu(d,o$(d|0)|0,h)|0;e=e+1|0;}while((e|0)<(c[542754]|0))}Yt(h);f=64;g=0;i=b;return} + + + +function QI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0;d=b+8|0;do{if((oK(a,118304)|0)==0){c[d>>2]=0;e=b+12|0;if((PI(a,e)|0)==0){f=0;return f|0}else{h=+g[e>>2];g[b+16>>2]=h;g[b+20>>2]=h;break}}else{c[d>>2]=1;if((NK(a,107776)|0)==0){f=0;return f|0}if((PI(a,b+12|0)|0)==0){f=0;return f|0}if((NK(a,64688)|0)==0){f=0;return f|0}if((PI(a,b+16|0)|0)==0){f=0;return f|0}if((NK(a,64688)|0)==0){f=0;return f|0}if((PI(a,b+20|0)|0)==0){f=0;return f|0}if((NK(a,56616)|0)==0){f=0}else{break}return f|0}}while(0);f=(NK(a,50152)|0)!=0|0;return f|0}function RI(a){a=a|0;var b=0;if((a|0)==0){return}b=c[a+24>>2]|0;if((b|0)!=0){RI(b)}b=c[a+28>>2]|0;if((b|0)!=0){RI(b)}bK(a);return}function SI(a){a=a|0;var b=0,d=0,e=0;if(!(+RJ(45304)!=0.0)){return}b=a|0;if((c[b>>2]|0)>0){d=0;do{RI(c[a+4+(d<<3)+4>>2]|0);e=c[a+4+(d<<3)>>2]|0;if((e|0)!=0){bK(e)}d=d+1|0;}while((d|0)<(c[b>>2]|0))}bK(a);return}function TI(a){a=a|0;var b=0,d=0,e=0,f=0,h=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;b=i;i=i+1064|0;d=b|0;e=d|0;do{if((NK(a,107776)|0)==0){f=0}else{if((OK(a,3,4096,d)|0)==0){f=0;break}h=d+1032|0;j=c[h>>2]|0;if((NK(a,56616)|0)==0){f=0;break}if((NK(a,184392)|0)==0){f=0;break}if((PK(a,d)|0)==0){f=0;break}else{k=0;l=0;m=0}while(1){n=(k$(e,180600)|0)==0;if(!n){if((k$(e,175944)|0)!=0){o=33;break}}p=_J(32)|0;q=p;c[p>>2]=j;if((l|0)==0){r=q}else{c[l+28>>2]=q;r=k}if(n){if((m|0)!=0){o=12;break}c[p+4>>2]=999999;s=1}else{if((OK(a,3,4096,d)|0)==0){o=15;break}c[p+4>>2]=c[h>>2];s=m}if((NK(a,169368)|0)==0){o=19;break}if((PK(a,d)|0)==0){o=19;break}if((k$(e,184392)|0)==0){if((PK(a,d)|0)==0){o=22;break}else{t=1}}else{t=0}if((k$(e,165968)|0)==0){if((QI(a,q)|0)==0){o=25;break}}else{if((k$(e,162808)|0)!=0){o=29;break}n=TI(a)|0;c[p+24>>2]=n;if((n|0)==0){o=28;break}}if((t|0)!=0){if((NK(a,157432)|0)==0){o=32;break}}if((PK(a,d)|0)==0){o=35;break}if((k$(e,157432)|0)==0){o=37;break}else{k=r;l=q;m=s}}if((o|0)==12){fK(a,172528,(u=i,i=i+1|0,i=i+7&-8,c[u>>2]=0,u)|0);i=u;RI(r);f=0;break}else if((o|0)==15){RI(r);f=0;break}else if((o|0)==19){RI(r);f=0;break}else if((o|0)==22){RI(r);f=0;break}else if((o|0)==25){RI(r);f=0;break}else if((o|0)==28){RI(r);f=0;break}else if((o|0)==29){fK(a,160024,(u=i,i=i+8|0,c[u>>2]=e,u)|0);i=u;f=0;break}else if((o|0)==32){RI(r);f=0;break}else if((o|0)==33){RI(k);fK(a,160024,(u=i,i=i+8|0,c[u>>2]=e,u)|0);i=u;f=0;break}else if((o|0)==35){RI(r);f=0;break}else if((o|0)==37){if((s|0)!=0){f=r;break}gK(a,154976,(u=i,i=i+1|0,i=i+7&-8,c[u>>2]=0,u)|0);i=u;h=_J(32)|0;q=h;c[h>>2]=j;c[h+4>>2]=999999;g[h+12>>2]=0.0;c[h+28>>2]=0;c[h+24>>2]=0;if((p|0)==0){f=q;break}c[p+28>>2]=q;f=r;break}}}while(0);i=b;return f|0}function UI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;b=i;i=i+1064|0;d=b|0;e=d|0;do{if(+RJ(45304)!=0.0){f=0}else{g=-1;h=0;while(1){j=c[187208+(h<<2)>>2]|0;if((j|0)==0){k=(g|0)==-1?h:g}else{if((k$(a,j+1028|0)|0)==0){l=j;m=86;break}else{k=g}}j=h+1|0;if((j|0)<128){g=k;h=j}else{break}}if((m|0)==86){n=1060;o=0;i=b;return l|0}if(!((k|0)==-1)){f=k;break}Tk[c[7092490]&255](3,152976,(p=i,i=i+8|0,c[p>>2]=a,p)|0);i=p;l=0;n=1060;o=0;i=b;return l|0}}while(0);XK(151008);k=RK(a)|0;if((k|0)==0){Tk[c[7092490]&255](3,148728,(p=i,i=i+8|0,c[p>>2]=a,p)|0);i=p;l=0;n=1060;o=0;i=b;return l|0}h=_J(1092)|0;g=h;j=h;c[j>>2]=0;TB(h+1028|0,a,64);a:do{if((MK(k,d)|0)!=0){q=h+4|0;while(1){if((k$(e,146200)|0)!=0){m=77;break}if((c[j>>2]|0)>127){m=14;break}if((OK(k,1,0,d)|0)==0){m=16;break}gL(e);r=_J((o$(e|0)|0)+1|0)|0;c[q+(c[j>>2]<<3)>>2]=r;r$(r|0,e|0)|0;if((PK(k,d)|0)==0){m=24;break}if((k$(e,184392)|0)==0){if((PK(k,d)|0)==0){m=33;break}else{s=1}}else{s=0}if((k$(e,162808)|0)==0){r=TI(k)|0;if((r|0)==0){m=42;break}c[q+(c[j>>2]<<3)+4>>2]=r}else{if((k$(e,165968)|0)!=0){m=60;break}t=_J(32)|0;r=t;c[t>>2]=0;c[t+4>>2]=999999;c[t+28>>2]=0;c[t+24>>2]=0;if((QI(k,r)|0)==0){m=52;break}c[q+(c[j>>2]<<3)+4>>2]=r}if((s|0)!=0){if((NK(k,157432)|0)==0){m=69;break}}c[j>>2]=(c[j>>2]|0)+1;if((MK(k,d)|0)==0){break a}}if((m|0)==14){gK(k,143808,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;break}else if((m|0)==16){if(+RJ(45304)!=0.0){if((c[j>>2]|0)>0){q=0;do{RI(c[g+4+(q<<3)+4>>2]|0);r=c[g+4+(q<<3)>>2]|0;if((r|0)!=0){bK(r)}q=q+1|0;}while((q|0)<(c[j>>2]|0))}bK(h)}SK(k);l=0;n=1060;o=0;i=b;return l|0}else if((m|0)==24){if(+RJ(45304)!=0.0){if((c[j>>2]|0)>0){q=0;do{RI(c[g+4+(q<<3)+4>>2]|0);r=c[g+4+(q<<3)>>2]|0;if((r|0)!=0){bK(r)}q=q+1|0;}while((q|0)<(c[j>>2]|0))}bK(h)}SK(k);l=0;n=1060;o=0;i=b;return l|0}else if((m|0)==33){if(+RJ(45304)!=0.0){if((c[j>>2]|0)>0){q=0;do{RI(c[g+4+(q<<3)+4>>2]|0);r=c[g+4+(q<<3)>>2]|0;if((r|0)!=0){bK(r)}q=q+1|0;}while((q|0)<(c[j>>2]|0))}bK(h)}SK(k);l=0;n=1060;o=0;i=b;return l|0}else if((m|0)==42){if(+RJ(45304)!=0.0){if((c[j>>2]|0)>0){q=0;do{RI(c[g+4+(q<<3)+4>>2]|0);r=c[g+4+(q<<3)>>2]|0;if((r|0)!=0){bK(r)}q=q+1|0;}while((q|0)<(c[j>>2]|0))}bK(h)}SK(k);l=0;n=1060;o=0;i=b;return l|0}else if((m|0)==52){bK(t);if(+RJ(45304)!=0.0){if((c[j>>2]|0)>0){q=0;do{RI(c[g+4+(q<<3)+4>>2]|0);r=c[g+4+(q<<3)>>2]|0;if((r|0)!=0){bK(r)}q=q+1|0;}while((q|0)<(c[j>>2]|0))}bK(h)}SK(k);l=0;n=1060;o=0;i=b;return l|0}else if((m|0)==60){fK(k,160024,(p=i,i=i+8|0,c[p>>2]=e,p)|0);i=p;if(+RJ(45304)!=0.0){if((c[j>>2]|0)>0){q=0;do{RI(c[g+4+(q<<3)+4>>2]|0);r=c[g+4+(q<<3)>>2]|0;if((r|0)!=0){bK(r)}q=q+1|0;}while((q|0)<(c[j>>2]|0))}bK(h)}SK(k);l=0;n=1060;o=0;i=b;return l|0}else if((m|0)==69){if(+RJ(45304)!=0.0){if((c[j>>2]|0)>0){q=0;do{RI(c[g+4+(q<<3)+4>>2]|0);r=c[g+4+(q<<3)>>2]|0;if((r|0)!=0){bK(r)}q=q+1|0;}while((q|0)<(c[j>>2]|0))}bK(h)}SK(k);l=0;n=1060;o=0;i=b;return l|0}else if((m|0)==77){fK(k,160024,(p=i,i=i+8|0,c[p>>2]=e,p)|0);i=p;if(+RJ(45304)!=0.0){if((c[j>>2]|0)>0){q=0;do{RI(c[g+4+(q<<3)+4>>2]|0);r=c[g+4+(q<<3)>>2]|0;if((r|0)!=0){bK(r)}q=q+1|0;}while((q|0)<(c[j>>2]|0))}bK(h)}SK(k);l=0;n=1060;o=0;i=b;return l|0}}}while(0);SK(k);Tk[c[7092490]&255](1,141184,(p=i,i=i+8|0,c[p>>2]=a,p)|0);i=p;if(+RJ(45304)!=0.0){l=g;n=1060;o=0;i=b;return l|0}c[187208+(f<<2)>>2]=g;l=g;n=1060;o=0;i=b;return l|0}function VI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a>>2]|0;if((d|0)>0){e=0}else{f=-1;return f|0}while(1){g=e+1|0;if((k$(c[a+4+(e<<3)>>2]|0,b)|0)==0){f=e;h=4;break}if((g|0)<(d|0)){e=g}else{f=-1;h=4;break}}if((h|0)==4){return f|0}return 0}function WI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0;d=b;while(1){e=c[a+(c[d>>2]<<2)>>2]|0;f=c[d+4>>2]|0;if((e|0)<(f|0)){b=c[d+24>>2]|0;if((b|0)==0){h=4;break}else{d=b;continue}}i=c[d+28>>2]|0;if((i|0)==0){h=15;break}j=c[i+4>>2]|0;if((e|0)<(j|0)){h=7;break}else{d=i}}if((h|0)==4){k=+g[d+12>>2];return+k}else if((h|0)==7){b=c[d+24>>2]|0;if((b|0)==0){l=+g[d+12>>2]}else{l=+WI(a,b)}b=c[i+24>>2]|0;if((b|0)==0){m=+g[i+12>>2]}else{m=+WI(a,b)}if((j|0)==999999){k=m;return+k}n=+(e-f|0)/+(j-f|0);k=m*n+l*(1.0-n);return+k}else if((h|0)==15){k=+g[d+12>>2];return+k}return 0.0}function XI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0;d=b;while(1){e=d|0;b=c[a+(c[e>>2]<<2)>>2]|0;f=d+4|0;if((b|0)<(c[f>>2]|0)){h=c[d+24>>2]|0;if((h|0)==0){i=4;break}else{d=h;continue}}j=d+28|0;h=c[j>>2]|0;if((h|0)==0){i=15;break}if((b|0)<(c[h+4>>2]|0)){i=7;break}else{d=h}}if((i|0)==4){h=d+16|0;k=+g[h>>2];l=+((v$()|0)&32767|0)/32767.0;m=k+l*(+g[d+20>>2]- +g[h>>2]);return+m}else if((i|0)==7){h=c[d+24>>2]|0;if((h|0)==0){b=d+16|0;l=+g[b>>2];k=+((v$()|0)&32767|0)/32767.0;n=l+k*(+g[d+20>>2]- +g[b>>2])}else{n=+XI(a,h)}h=c[j>>2]|0;b=c[h+24>>2]|0;if((b|0)==0){k=+g[h+16>>2];l=+((v$()|0)&32767|0)/32767.0;o=c[j>>2]|0;p=k+l*(+g[o+20>>2]- +g[o+16>>2]);q=o}else{p=+WI(a,b);q=h}h=c[q+4>>2]|0;if((h|0)==999999){m=p;return+m}q=c[f>>2]|0;l=+((c[a+(c[e>>2]<<2)>>2]|0)-q|0)/+(h-q|0);m=p*l+n*(1.0-l);return+m}else if((i|0)==15){m=+g[d+12>>2];return+m}return 0.0}function YI(a,b,d){a=a|0;b=b|0;d=d|0;return+(+WI(a,c[b+4+(d<<3)+4>>2]|0))}function ZI(a,b,d){a=a|0;b=b|0;d=d|0;return+(+XI(a,c[b+4+(d<<3)+4>>2]|0))}function _I(a){a=a|0;var b=0,d=0,e=0.0,f=0,h=0.0,i=0,j=0.0,k=0.0,l=0.0;b=a;do{a=c[b+24>>2]|0;do{if((a|0)==0){if((c[b+8>>2]|0)!=1){break}d=+((v$()|0)&32767|0)/32767.0<.01;e=(+((v$()|0)&32767|0)/32767.0+-.5)*2.0;f=b+20|0;h=+g[f>>2];i=b+16|0;j=+g[i>>2];k=e*(h-j);if(d){d=b+12|0;e=k+ +g[d>>2];g[d>>2]=e;l=e}else{d=b+12|0;e=k*.5+ +g[d>>2];g[d>>2]=e;l=e}if(l>2]=l;break}if(!(l>h)){break}g[f>>2]=l}else{_I(a)}}while(0);b=c[b+28>>2]|0;}while((b|0)!=0);return}function $I(a){a=a|0;var b=0,d=0;b=a|0;if((c[b>>2]|0)>0){d=0}else{return}do{_I(c[a+4+(d<<3)+4>>2]|0);d=d+1|0;}while((d|0)<(c[b>>2]|0));return}function aJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,h=0,j=0,k=0,l=0;e=i;a:do{if((c[a+24>>2]|0)==0){if((c[a+8>>2]|0)!=1){break}do{if((c[b+8>>2]|0)==1){if((c[d+8>>2]|0)!=1){break}f=(+g[a+12>>2]+ +g[b+12>>2])*.5;g[d+12>>2]=f;h=d+20|0;if(f>+g[h>>2]){g[h>>2]=f}h=d+16|0;if(!(f>+g[h>>2])){break a}g[h>>2]=f;break a}}while(0);Tk[c[7092490]&255](3,136976,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=0;i=e;return k|0}else{h=c[b+24>>2]|0;do{if((h|0)!=0){l=c[d+24>>2]|0;if((l|0)==0){break}if((aJ(h,h,l)|0)==0){k=0}else{break a}i=e;return k|0}}while(0);Tk[c[7092490]&255](3,138800,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=0;i=e;return k|0}}while(0);h=c[a+28>>2]|0;b:do{if((h|0)!=0){a=c[b+28>>2]|0;do{if((a|0)!=0){l=c[d+28>>2]|0;if((l|0)==0){break}if((aJ(h,a,l)|0)==0){k=0}else{break b}i=e;return k|0}}while(0);Tk[c[7092490]&255](3,135560,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=0;i=e;return k|0}}while(0);k=1;i=e;return k|0}function bJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;f=a|0;g=c[f>>2]|0;do{if((g|0)==(c[b>>2]|0)){if((g|0)!=(c[d>>2]|0)){break}if((g|0)>0){h=0}else{i=e;return}do{aJ(c[a+4+(h<<3)+4>>2]|0,c[b+4+(h<<3)+4>>2]|0,c[d+4+(h<<3)+4>>2]|0)|0;h=h+1|0;}while((h|0)<(c[f>>2]|0));i=e;return}}while(0);Tk[c[7092490]&255](3,134096,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=e;return}function cJ(){var a=0,b=0,d=0,e=0,f=0,g=0;a=0;do{b=187208+(a<<2)|0;d=c[b>>2]|0;if((d|0)!=0){e=d|0;if((c[e>>2]|0)>0){f=0;do{RI(c[d+4+(f<<3)+4>>2]|0);g=c[d+4+(f<<3)>>2]|0;if((g|0)!=0){bK(g)}f=f+1|0;}while((f|0)<(c[e>>2]|0))}bK(d);c[b>>2]=0}a=a+1|0;}while((a|0)<128);return}function dJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[7092497]|0;f=pC(126448,(g=i,i=i+8|0,c[g>>2]=b,g)|0)|0;i=g;hk[e&255](a,f);i=d;return}function eJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[7092497]|0;f=pC(171672,(g=i,i=i+8|0,c[g>>2]=b,g)|0)|0;i=g;hk[e&255](a,f);i=d;return}function fJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|131072;return}function gJ(a,b){a=a|0;b=b|0;hk[c[7092497]&255](a,b);return}function hJ(a,b){a=a|0;b=b|0;c[(c[7092488]|0)+(a*40|0)+36>>2]=b;return}function iJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|1;return}function jJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|65536;return}function kJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|2;return}function lJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|8;return}function mJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;a=c[b>>2]|0;c[b>>2]=(a&268435456|0)==0?a|16:a&-17;return}function nJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;a=c[b>>2]|0;c[b>>2]=(a&268435456|0)==0?a|32768:a&-32769;return}function oJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|128;return}function pJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|524288;return}function qJ(a,b){a=a|0;b=b|0;var d=0;d=(c[7092488]|0)+(a*40|0)+32|0;c[d>>2]=c[d>>2]|b;return}function rJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|32;return}function sJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|256;return}function tJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|512;return}function uJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|2048;return}function vJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|4096;return}function wJ(a){a=a|0;var b=0;b=(c[7092488]|0)+(a*40|0)+32|0;c[b>>2]=c[b>>2]|8192;return}function xJ(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0.0;e=c[7092488]|0;g[e+(a*40|0)+4>>2]=+g[b>>2];g[e+(a*40|0)+8>>2]=+g[b+4>>2];g[e+(a*40|0)+12>>2]=+g[b+8>>2];do{if(d>400.0){f=400.0}else{if(!(d<-400.0)){f=d;break}f=-400.0}}while(0);g[e+(a*40|0)+16>>2]=f;return}function yJ(a,b){a=a|0;b=b|0;var d=0;d=c[7092488]|0;g[d+(a*40|0)+20>>2]=+g[b>>2];g[d+(a*40|0)+24>>2]=+g[b+4>>2];g[d+(a*40|0)+28>>2]=+g[b+8>>2];return}function zJ(a,b){a=a|0;b=+b;return}function AJ(a,b,d){a=a|0;b=+b;d=d|0;var e=0;e=(c[7092488]|0)+(a*40|0)|0;g[e>>2]=b;m$(d|0,e|0,40)|0;return}function BJ(a){a=a|0;var b=0,d=0;b=c[7092488]|0;d=b+(a*40|0)+32|0;n$(b+(a*40|0)|0,0,20)|0;c[d>>2]=c[d>>2]<<24&268435456;return}function CJ(){c[7092488]=aK((c[7092484]|0)*40|0)|0;return 0}function DJ(){bK(c[7092488]|0);c[7092488]=0;return}function EJ(){return((Qb()|0)*1e3|0|0)/1e6|0|0}function FJ(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+4096|0;d=~~+RJ(128752);c[7092714]=d;n$(28369928,0,16)|0;if((d|0)!=0){d=b|0;e=QJ(118192)|0;f=QJ(107712)|0;g=QJ(64376)|0;do{if((a[e]|0)==0){$B(d,4096,45248,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0)|0;i=h}else{if((a[f]|0)!=0){$B(d,4096,56544,(h=i,i=i+32|0,c[h>>2]=e,c[h+8>>2]=47,c[h+16>>2]=f,c[h+24>>2]=47,h)|0)|0;i=h;break}if((a[g]|0)==0){$B(d,4096,50064,(h=i,i=i+24|0,c[h>>2]=e,c[h+8>>2]=47,c[h+16>>2]=47,h)|0)|0;i=h;break}else{$B(d,4096,56544,(h=i,i=i+32|0,c[h>>2]=e,c[h+8>>2]=47,c[h+16>>2]=g,c[h+24>>2]=47,h)|0)|0;i=h;break}}}while(0);WJ(d);}Tk[c[7092490]&255](1,184320,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;c[7092484]=~~+UJ(180552,175904);c[7092483]=~~+UJ(172376,169336);h=pE()|0;if((h|0)!=0){j=h;i=b;return j|0}h=CJ()|0;if((h|0)!=0){j=h;i=b;return j|0}h=NI()|0;if((h|0)!=0){j=h;i=b;return j|0}h=MH()|0;if((h|0)!=0){j=h;i=b;return j|0}h=eH()|0;if((h|0)!=0){j=h;i=b;return j|0}h=EI()|0;if((h|0)!=0){j=h;i=b;return j|0}c[7092480]=1;c[7092482]=1;j=0;i=b;return j|0}function GJ(){var a=0,b=0,d=0;a=i;if((c[7092482]|0)==0){Tk[c[7092490]&255](3,145504,(b=i,i=i+8|0,c[b>>2]=165880,b)|0);i=b;d=1;i=a;return d|0}else{fH();FI();NH();OI();cJ();uG();qE();DJ();PJ();rK();XJ();c[7092480]=0;c[7092482]=0;YK();d=0;i=a;return d|0}return 0}function HJ(a,b){a=a|0;b=b|0;VJ(a,b);return 0}function IJ(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=d-1|0;q$(c|0,QJ(b)|0,e|0)|0;a[c+e|0]=0;return 0}function JJ(a){a=+a;var b=0,d=0,e=0;b=i;if((c[7092482]|0)==0){Tk[c[7092490]&255](3,145504,(d=i,i=i+8|0,c[d>>2]=162712,d)|0);i=d;e=1;i=b;return e|0}else{e=lE(a)|0;i=b;return e|0}return 0}function KJ(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=c[7092490]|0;if((c[7092482]|0)==0){Tk[d&255](3,145504,(e=i,i=i+8|0,c[e>>2]=159984,e)|0);i=e;f=1;i=b;return f|0}Tk[d&255](1,157360,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;d=oE(a)|0;if((d|0)!=0){f=d;i=b;return f|0}mH();UH();Tk[c[7092490]&255](1,154912,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;f=0;i=b;return f|0}function LJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;if((c[7092482]|0)==0){Tk[c[7092490]&255](3,145504,(e=i,i=i+8|0,c[e>>2]=152928,e)|0);i=e;f=1;i=d;return f|0}g=c[7092483]|0;if((a|0)<0|(g|0)<(a|0)){Tk[c[7092490]&255](3,171536,(e=i,i=i+24|0,c[e>>2]=152928,c[e+8>>2]=a,c[e+16>>2]=g,e)|0);i=e;f=2;i=d;return f|0}else{f=VD(a,b)|0;i=d;return f|0}return 0}function MJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function NJ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;m$(28369960,b|0,88)|0;n$(28374968,0,536)|0;if((a|0)==2){c[7093742]=108;c[7093743]=8;c[7093744]=72;c[7093745]=4;c[7093746]=68;c[7093747]=66;c[7093748]=4;c[7093749]=32;c[7093750]=42;c[7093751]=72;c[7093752]=28;c[7093753]=8;c[7093754]=18;c[7093755]=10;c[7093756]=14;c[7093757]=38;c[7093758]=4;c[7093759]=24;c[7093760]=4;c[7093761]=4;c[7093762]=16;c[7093763]=4;c[7093764]=170;c[7093765]=122;c[7093766]=180;c[7093767]=26;c[7093768]=142;c[7093769]=222;c[7093770]=256;c[7093771]=316;c[7093772]=216;c[7093779]=122;c[7093773]=310;c[7093774]=116;c[7093775]=166;c[7093776]=84;c[7093777]=188;c[7093778]=202;c[7093780]=158;c[7093781]=328;c[7093782]=100;c[7093783]=6;c[7093784]=48;c[7093786]=4;c[7093785]=12;c[7093787]=302;c[7093788]=4;c[7093789]=104;c[7093790]=4;c[7093791]=4;c[7093792]=8;c[7093793]=28;c[7093794]=80;c[7093795]=30;c[7093796]=258;c[7093797]=154;c[7093798]=6;c[7093799]=56;c[7093800]=112;c[7093801]=4;c[7093802]=52;c[7093803]=4;c[7093804]=42;c[7093805]=126;c[7093806]=42;c[7093807]=34;c[7093808]=4;c[7093809]=104;c[7093810]=326;c[7093811]=52;c[7093812]=38;c[7093813]=8;c[7093814]=32;c[7093815]=94;c[7093816]=198;c[7093817]=82;c[7093818]=154;c[7093819]=180;c[7093820]=264;c[7093821]=102;c[7093822]=88;c[7093823]=56;c[7093824]=26;c[7093825]=46;c[7093826]=22;c[7093827]=4;c[7093828]=130;c[7093829]=16;c[7093830]=46;c[7093831]=72;c[7093832]=94;c[7093833]=6;c[7093834]=4;c[7093835]=96;c[7093836]=400;c[7093837]=82;c[7093838]=68;c[7093839]=88;c[7093840]=124;c[7093841]=6;c[7093842]=136;c[7093843]=46;c[7093844]=132;c[7093845]=28;c[7093846]=4;c[7093847]=140;c[7093848]=236;c[7093849]=60;c[7093850]=4;c[7093851]=8;c[7093852]=18;c[7093853]=266;c[7093854]=40;c[7093855]=4;c[7093856]=48;c[7093857]=46;c[7093858]=36;c[7093859]=12;c[7093860]=6;c[7093861]=158;c[7093862]=6;c[7093863]=36;c[7093864]=10;c[7093865]=108;c[7093866]=24;c[7093867]=120;c[7093868]=82;c[7093869]=110;c[7093870]=64;c[7093871]=30;c[7093872]=6;c[7093873]=138;c[7093874]=90;c[7093875]=10;e=28374968;i=d;return e|0}else{Tk[c[7092490]&255](3,150864,(b=i,i=i+16|0,c[b>>2]=2,c[b+8>>2]=a,b)|0);i=b;e=0;i=d;return e|0}return 0}function OJ(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0,i=0;if((c|0)>0){e=-1;f=0}else{g=-1;return g|0}while(1){h=b[31416+(((d[a+f|0]|0)^(e&65535)>>>8)<<1)>>1]^e<<8;i=f+1|0;if((i|0)<(c|0)){e=h;f=i}else{g=h;break}}return g|0}function PJ(){var a=0,b=0;a=c[4984274]|0;if((a|0)==0){c[4984274]=0;return}else{b=a}do{c[4984274]=c[b+20>>2];a=c[b+4>>2]|0;if((a|0)!=0){bK(a)}bK(c[b>>2]|0);bK(b);b=c[4984274]|0;}while((b|0)!=0);c[4984274]=0;return}function QJ(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[4984274]|0;if((b|0)==0){d=28378592;return d|0}else{e=b}while(1){if((VB(c[e>>2]|0,a)|0)==0){break}b=c[e+20>>2]|0;if((b|0)==0){d=28378592;f=5;break}else{e=b}}if((f|0)==5){return d|0}d=c[e+4>>2]|0;return d|0}function RJ(a){a=a|0;var b=0,d=0.0,e=0,f=0;b=c[4984274]|0;if((b|0)==0){d=0.0;return+d}else{e=b}while(1){if((VB(c[e>>2]|0,a)|0)==0){break}b=c[e+20>>2]|0;if((b|0)==0){d=0.0;f=5;break}else{e=b}}if((f|0)==5){return+d}d=+g[e+16>>2];return+d}function SJ(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0;e=c[4984274]|0;a:do{if((e|0)!=0){f=e;while(1){if((VB(c[f>>2]|0,b)|0)==0){h=f;break}f=c[f+20>>2]|0;if((f|0)==0){break a}}return h|0}}while(0);e=ZJ(24)|0;f=e;n$(e|0,0,24)|0;i=ZJ((o$(b|0)|0)+1|0)|0;c[e>>2]=i;r$(i|0,b|0)|0;c[e+20>>2]=c[4984274];c[4984274]=f;b=ZJ((o$(d|0)|0)+1|0)|0;i=e+4|0;c[i>>2]=b;r$(b|0,d|0)|0;d=c[i>>2]|0;i=a[d]|0;b:do{if(i<<24>>24==0){j=0.0}else{b=d;k=0;l=0.0;m=i;while(1){n=(k|0)==0;do{if((m-48&255)>>>0>9>>>0){if(!(n&m<<24>>24==46)){j=0.0;break b}o=b+1|0;p=o;q=10;r=a[o]|0;s=9}else{if(!n){p=b;q=k;r=m;s=9;break}t=l*10.0+ +((m<<24>>24)-48|0);u=0;v=b}}while(0);if((s|0)==9){s=0;t=l+ +((r<<24>>24)-48|0)/+(q|0);u=q*10|0;v=p}n=v+1|0;o=a[n]|0;if(o<<24>>24==0){j=t;break}else{b=n;k=u;l=t;m=o}}}}while(0);g[e+16>>2]=j;c[e+12>>2]=1;h=f;return h|0}function TJ(a,b){a=a|0;b=b|0;return c[(SJ(a,b)|0)+4>>2]|0}function UJ(a,b){a=a|0;b=b|0;return+(+g[(SJ(a,b)|0)+16>>2])}function VJ(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0;e=c[4984274]|0;a:do{if((e|0)==0){f=5}else{h=e;while(1){if((VB(c[h>>2]|0,b)|0)==0){break}i=c[h+20>>2]|0;if((i|0)==0){f=5;break a}else{h=i}}bK(c[h+4>>2]|0);j=h}}while(0);if((f|0)==5){e=ZJ(24)|0;i=e;n$(e|0,0,24)|0;k=ZJ((o$(b|0)|0)+1|0)|0;c[e>>2]=k;r$(k|0,b|0)|0;c[e+20>>2]=c[4984274];c[4984274]=i;j=i}i=ZJ((o$(d|0)|0)+1|0)|0;e=j+4|0;c[e>>2]=i;r$(i|0,d|0)|0;d=c[e>>2]|0;e=a[d]|0;if(e<<24>>24==0){l=0.0;m=j+16|0;g[m>>2]=l;n=j+12|0;c[n>>2]=1;return}else{o=d;p=0;q=0.0;r=e}b:while(1){e=(p|0)==0;do{if((r-48&255)>>>0>9>>>0){if(!(e&r<<24>>24==46)){l=0.0;f=14;break b}d=o+1|0;s=d;t=10;u=a[d]|0;f=11}else{if(!e){s=o;t=p;u=r;f=11;break}v=q*10.0+ +((r<<24>>24)-48|0);w=0;x=o}}while(0);if((f|0)==11){f=0;v=q+ +((u<<24>>24)-48|0)/+(t|0);w=t*10|0;x=s}e=x+1|0;h=a[e]|0;if(h<<24>>24==0){l=v;f=14;break}else{o=e;p=w;q=v;r=h}}if((f|0)==14){m=j+16|0;g[m>>2]=l;n=j+12|0;c[n>>2]=1;return}}function WJ(b){b=b|0;var d=0,e=0,f=0;d=i;if(!(+UJ(125480,171448)!=0.0)){i=d;return}do{if((b|0)!=0){if((a[b]|0)==0){break}if((c[4982014]|0)!=0){Tk[c[7092490]&255](3,128688,(e=i,i=i+8|0,c[e>>2]=19927032,e)|0);i=e;i=d;return}f=dj(b|0,118144)|0;c[4982014]=f;if((f|0)==0){Tk[c[7092490]&255](3,107640,(e=i,i=i+8|0,c[e>>2]=b,e)|0);i=e;i=d;return}else{q$(19927032,b|0,1024)|0;Tk[c[7092490]&255](1,64304,(e=i,i=i+8|0,c[e>>2]=19927032,e)|0);i=e;i=d;return}}}while(0);Tk[c[7092490]&255](1,145440,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=d;return}function XJ(){var a=0,b=0,d=0;a=i;b=c[4982014]|0;if((b|0)==0){i=a;return}if((kb(b|0)|0)==0){c[4982014]=0;Tk[c[7092490]&255](1,50048,(d=i,i=i+8|0,c[d>>2]=19927032,d)|0);i=d;i=a;return}else{Tk[c[7092490]&255](3,56472,(d=i,i=i+8|0,c[d>>2]=19927032,d)|0);i=d;i=a;return}}function YJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d|0;if((c[4982014]|0)==0){i=d;return}f=e;c[f>>2]=b;c[f+4>>2]=0;Hf(c[4982014]|0,a|0,e|0)|0;Yh(c[4982014]|0)|0;i=d;return}function ZJ(a){a=a|0;var b=0,d=0;b=jk[c[7092498]&255](a+4|0)|0;if((b|0)==0){d=0;return d|0}c[b>>2]=305419896;d=b+4|0;return d|0}function _J(a){a=a|0;var b=0,d=0;b=jk[c[7092498]&255](a+4|0)|0;if((b|0)==0){d=0}else{c[b>>2]=305419896;d=b+4|0}n$(d|0,0,a|0)|0;return d|0}function $J(a){a=a|0;var b=0,d=0;b=jk[c[7092501]&255](a+4|0)|0;if((b|0)==0){d=0;return d|0}c[b>>2]=-2023406815;d=b+4|0;return d|0}function aK(a){a=a|0;var b=0,d=0;b=jk[c[7092501]&255](a+4|0)|0;if((b|0)==0){d=0}else{c[b>>2]=-2023406815;d=b+4|0}n$(d|0,0,a|0)|0;return d|0}function bK(a){a=a|0;var b=0;b=a-4|0;if((c[b>>2]|0)!=305419896){return}vk[c[7092499]&511](b);return}function cK(){return Ok[c[7092500]&63]()|0}function dK(){return}function eK(){return}function fK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+1040|0;f=e+1024|0;g=e|0;h=f;c[h>>2]=d;c[h+4>>2]=0;Xe(g|0,1024,b|0,f|0)|0;f=c[a+2052>>2]|0;a=c[f+1052>>2]|0;Tk[c[7092490]&255](3,125008,(b=i,i=i+24|0,c[b>>2]=f,c[b+8>>2]=a,c[b+16>>2]=g,b)|0);i=b;i=e;return}function gK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+1040|0;f=e+1024|0;g=e|0;h=f;c[h>>2]=d;c[h+4>>2]=0;Xe(g|0,1024,b|0,f|0)|0;f=c[a+2052>>2]|0;a=c[f+1052>>2]|0;Tk[c[7092490]&255](2,125008,(b=i,i=i+24|0,c[b>>2]=f,c[b+8>>2]=a,c[b+16>>2]=g,b)|0);i=b;i=e;return}function hK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;e=a+2056|0;f=c[e>>2]|0;a:do{if((f|0)==0){g=a+2052|0;h=a+2068|0;j=a+2072|0;while(1){if((eL(c[g>>2]|0,b)|0)!=0){k=1;l=13;break}b:do{if((jL(c[g>>2]|0)|0)!=0){m=c[h>>2]|0;if((m|0)==0){break}else{n=m}while(1){if((c[n+8>>2]|0)!=(c[g>>2]|0)){break b}gK(a,128592,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;m=c[h>>2]|0;if((m|0)==0){break b}if((c[m+8>>2]|0)!=(c[g>>2]|0)){n=m;continue}c[h>>2]=c[m+12>>2];c[j>>2]=(c[j>>2]|0)-(c[m+4>>2]|0);bK(m);n=c[h>>2]|0;if((n|0)==0){break}}}}while(0);m=c[g>>2]|0;o=c[m+2136>>2]|0;if((o|0)==0){k=0;l=13;break}c[g>>2]=o;mL(m);m=c[e>>2]|0;if((m|0)!=0){p=m;break a}}if((l|0)==13){i=d;return k|0}}else{p=f}}while(0);m$(b|0,p|0,1060)|0;p=c[e>>2]|0;c[e>>2]=c[p+1056>>2];bK(p|0);c[4938812]=(c[4938812]|0)-1;k=1;i=d;return k|0}function iK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;f=i;g=i;i=i+1060|0;i=i+7&-8;h=g|0;if((hK(a,g)|0)==0){fK(a,118072,(j=i,i=i+8|0,c[j>>2]=c[b>>2],j)|0);i=j;k=0;l=1060;m=0;i=f;return k|0}n=b+12|0;o=c[n>>2]|0;if((o|0)>(e|0)){fK(a,107552,(j=i,i=i+8|0,c[j>>2]=e,j)|0);i=j;k=0;l=1060;m=0;i=f;return k|0}if((o|0)>0){n$(d|0,0,((o|0)>1?o<<2:4)|0)|0}if((k$(h,64248)|0)==0){p=0;q=0}else{o=ZJ(1060)|0;if((o|0)==0){Ur(0,145312,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;return 0}m$(o|0,h|0,1056)|0;r=o+1056|0;c[r>>2]=0;c[4938812]=(c[4938812]|0)+1;s=a+2056|0;c[r>>2]=c[s>>2];c[s>>2]=o;fK(a,118072,(j=i,i=i+8|0,c[j>>2]=c[b>>2],j)|0);i=j;k=0;l=1060;m=0;i=f;return k|0}a:while(1){if((p|0)>=(e|0)){t=12;break}if((p|0)>=(c[n>>2]|0)){t=14;break}o=d+(p<<2)|0;c[o>>2]=0;s=0;r=1;u=q;b:while(1){v=r;w=u;while(1){if((hK(a,g)|0)==0){t=24;break a}if((k$(h,184280)|0)==0&(w|0)<1){break b}if((k$(h,64248)|0)==0){v=0;w=w+1|0;continue}if((k$(h,175864)|0)==0){if((w|0)<2){t=27;break a}else{x=w-1|0}}else{x=w}if((p|0)<(c[n>>2]|0)){break}else{v=0;w=x}}y=ZJ(1060)|0;if((y|0)==0){t=30;break a}z=y;m$(y|0,h|0,1056)|0;c[4938812]=(c[4938812]|0)+1;c[y+1056>>2]=0;if((s|0)==0){c[o>>2]=z;s=z;r=0;u=x;continue}else{c[s+1056>>2]=z;s=z;r=0;u=x;continue}}if((v|0)!=0){gK(a,180472,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}p=p+1|0;q=w}if((t|0)==12){fK(a,56416,(j=i,i=i+8|0,c[j>>2]=c[b>>2],j)|0);i=j;k=0;l=1060;m=0;i=f;return k|0}else if((t|0)==14){gK(a,49968,(j=i,i=i+8|0,c[j>>2]=c[b>>2],j)|0);i=j;k=0;l=1060;m=0;i=f;return k|0}else if((t|0)==24){fK(a,45184,(j=i,i=i+8|0,c[j>>2]=c[b>>2],j)|0);i=j;k=0;l=1060;m=0;i=f;return k|0}else if((t|0)==27){if((c[d+((c[n>>2]|0)-1<<2)>>2]|0)!=0){k=1;l=1060;m=0;i=f;return k|0}gK(a,172352,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=1;l=1060;m=0;i=f;return k|0}else if((t|0)==30){Ur(0,145312,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;return 0}return 0}function jK(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+8|0;k=j|0;l=ZJ(1060)|0;if((l|0)==0){Ur(0,145312,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;return 0}n=l;m$(l|0,d|0,1056)|0;c[l+1056>>2]=0;c[4938812]=(c[4938812]|0)+1;o=c[e+8>>2]|0;if((o|0)==3){c[k>>2]=Xj(0)|0;e=ji(k|0)|0;p=l;z=34;a[p]=z;z=z>>8;a[p+1|0]=z;Wc(l|0,e+4|0,7)|0;Wc(l+7|0,e+20|0,4)|0;p=n+(o$(l|0)|0)|0;z=34;a[p]=z;z=z>>8;a[p+1|0]=z;W_(e);c[l+1024>>2]=4;c[l+1028>>2]=o$(l|0)|0;c[f>>2]=n;c[h>>2]=n;i=j;return 1}else if((o|0)==2){r$(l|0,c[b+2052>>2]|0)|0;c[l+1024>>2]=4;c[l+1028>>2]=o$(l|0)|0;c[f>>2]=n;c[h>>2]=n;i=j;return 1}else if((o|0)==4){c[k>>2]=Xj(0)|0;b=ji(k|0)|0;k=l;z=34;a[k]=z;z=z>>8;a[k+1|0]=z;Wc(l|0,b+11|0,8)|0;k=n+(o$(l|0)|0)|0;z=34;a[k]=z;z=z>>8;a[k+1|0]=z;W_(b);c[l+1024>>2]=4;c[l+1028>>2]=o$(l|0)|0;c[f>>2]=n;c[h>>2]=n;i=j;return 1}else if((o|0)==1){o=d+1048|0;fe(l|0,148688,(m=i,i=i+8|0,c[m>>2]=c[o>>2],m)|0)|0;i=m;m=c[o>>2]|0;c[l+1032>>2]=m;g[l+1036>>2]=+(m|0);c[l+1024>>2]=3;c[l+1028>>2]=4104;c[f>>2]=n;c[h>>2]=n;i=j;return 1}else{c[f>>2]=0;c[h>>2]=0;i=j;return 1}return 0}function kK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=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,A=0,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,_=0,$=0,aa=0,ba=0;h=i;i=i+1576|0;j=h|0;k=h+512|0;n$(j|0,0,512)|0;l=k|0;if((c[e+8>>2]|0)!=0){jK(b,d,e,f,g)|0;m=1;n=1060;o=0;p=512;q=0;i=h;return m|0}d=e+12|0;do{if((c[d>>2]|0)!=0){if((iK(b,e,j|0,128)|0)==0){m=0}else{break}n=1060;o=0;p=512;q=0;i=h;return m|0}}while(0);r=c[e+20>>2]|0;a:do{if((r|0)==0){s=0;t=0}else{u=e+16|0;v=k+1024|0;w=k+1040|0;x=k+1044|0;y=0;A=0;B=r;b:while(1){C=B|0;c:do{if((c[B+1024>>2]|0)==4){D=c[u>>2]|0;if((D|0)==0){E=19;break}else{F=0;G=D}while(1){if((k$(G|0,C)|0)==0){break}D=c[G+1056>>2]|0;if((D|0)==0){E=19;break c}else{F=F+1|0;G=D}}if(!((F|0)>-1)){E=19;break}D=c[j+(F<<2)>>2]|0;if((D|0)==0){H=A;I=y;J=B;break}else{K=y;L=A;M=D}while(1){D=ZJ(1060)|0;if((D|0)==0){E=15;break b}N=D;m$(D|0,M|0,1056)|0;c[4938812]=(c[4938812]|0)+1;c[D+1056>>2]=0;if((L|0)==0){O=N}else{c[L+1056>>2]=N;O=K}D=c[M+1056>>2]|0;if((D|0)==0){H=N;I=O;J=B;break}else{K=O;L=N;M=D}}}else{E=19}}while(0);d:do{if((E|0)==19){E=0;e:do{if((a[C]|0)==35){if((a[B+1|0]|0)!=0){E=32;break}D=c[B+1056>>2]|0;f:do{if((D|0)!=0){N=D|0;P=c[u>>2]|0;if((P|0)==0){break}else{Q=0;R=P}while(1){if((k$(R|0,N)|0)==0){break}P=c[R+1056>>2]|0;if((P|0)==0){break f}else{Q=Q+1|0;R=P}}if(!((Q|0)>-1)){break}N=c[j+(Q<<2)>>2]|0;c[v>>2]=1;c[w>>2]=0;c[x>>2]=0;a[l]=0;P=k+(o$(l|0)|0)|0;z=34;a[P]=z;z=z>>8;a[P+1|0]=z;if((N|0)!=0){P=N;do{Wc(l|0,P|0,1023-(o$(l|0)|0)|0)|0;P=c[P+1056>>2]|0;}while((P|0)!=0)}Wc(l|0,169328,1023-(o$(l|0)|0)|0)|0;P=ZJ(1060)|0;if((P|0)==0){E=29;break b}m$(P|0,l|0,1056)|0;c[P+1056>>2]=0;S=D;T=P;break e}}while(0);gK(b,143696,(U=i,i=i+1|0,i=i+7&-8,c[U>>2]=0,U)|0);i=U;H=A;I=y;J=B;break d}else{E=32}}while(0);if((E|0)==32){E=0;D=ZJ(1060)|0;if((D|0)==0){E=33;break b}m$(D|0,C|0,1056)|0;c[D+1056>>2]=0;S=B;T=D}D=T;c[4938812]=(c[4938812]|0)+1;c[T+1056>>2]=0;if((A|0)==0){H=D;I=D;J=S;break}c[A+1056>>2]=D;H=D;I=y;J=S}}while(0);C=c[J+1056>>2]|0;if((C|0)==0){E=7;break}else{y=I;A=H;B=C}}if((E|0)==7){if((I|0)==0){s=H;t=0;break}else{V=I;W=H}g:while(1){B=V+1056|0;A=V+1024|0;X=V|0;y=W;while(1){Y=c[B>>2]|0;if((Y|0)==0){s=y;t=I;break a}if((a[Y|0]|0)!=35){V=Y;W=y;continue g}if((a[Y+1|0]|0)!=35){break}Z=c[Y+1056>>2]|0;if((Z|0)==0){V=Y;W=y;continue g}x=c[A>>2]|0;if((x|0)==4){if(!(((c[Z+1024>>2]|0)-3|0)>>>0<2>>>0)){break g}w=Z|0;p$(X|0,w|0)|0;_=w}else if((x|0)==1){if((c[Z+1024>>2]|0)!=1){break g}a[V+((o$(X|0)|0)-1)|0]=0;p$(X|0,Z+1|0)|0;_=Z|0}else{break g}bK(c[B>>2]|0);c[4938812]=(c[4938812]|0)-1;c[B>>2]=c[Z+1056>>2];bK(_);c[4938812]=(c[4938812]|0)-1;y=(Z|0)==(y|0)?V:y}if((Y|0)==0){s=y;t=I;break a}else{V=Y;W=y}}fK(b,141096,(U=i,i=i+16|0,c[U>>2]=X,c[U+8>>2]=Z,U)|0);i=U;m=0;n=1060;o=0;p=512;q=0;i=h;return m|0}else if((E|0)==15){Ur(0,145312,(U=i,i=i+1|0,i=i+7&-8,c[U>>2]=0,U)|0);i=U;return 0}else if((E|0)==29){Ur(0,145312,(U=i,i=i+1|0,i=i+7&-8,c[U>>2]=0,U)|0);i=U;return 0}else if((E|0)==33){Ur(0,145312,(U=i,i=i+1|0,i=i+7&-8,c[U>>2]=0,U)|0);i=U;return 0}}}while(0);c[f>>2]=t;c[g>>2]=s;s=c[d>>2]|0;if((s|0)>0){$=0;aa=s}else{m=1;n=1060;o=0;p=512;q=0;i=h;return m|0}while(1){s=c[j+($<<2)>>2]|0;if((s|0)==0){ba=aa}else{g=s;while(1){s=c[g+1056>>2]|0;bK(g|0);c[4938812]=(c[4938812]|0)-1;if((s|0)==0){break}else{g=s}}ba=c[d>>2]|0}g=$+1|0;if((g|0)<(ba|0)){$=g;aa=ba}else{m=1;break}}n=1060;o=0;p=512;q=0;i=h;return m|0}function lK(b){b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;i=i+1128|0;e=d|0;f=e|0;g=d+1064|0;if((c[b+2072>>2]|0)>0){h=1;j=64;k=0;l=1060;m=0;i=d;return h|0}if((hK(b,e)|0)==0){fK(b,138728,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;h=0;j=64;k=0;l=1060;m=0;i=d;return h|0}o=e+1052|0;if((c[o>>2]|0)>0){fK(b,138728,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;h=0;j=64;k=0;l=1060;m=0;i=d;return h|0}p=e+1024|0;q=c[p>>2]|0;do{if((q|0)==5){if((a[f]|0)!=60){r=38;break}r$(g|0,b+1024|0)|0;a:do{if((hK(b,e)|0)==0){r=26}else{while(1){if((c[o>>2]|0)>0){break}if((c[p>>2]|0)==5){if((a[f]|0)==62){break a}}Wc(g|0,f|0,63)|0;if((hK(b,e)|0)==0){r=26;break a}}s=ZJ(1060)|0;if((s|0)==0){Ur(0,145312,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;return 0}else{m$(s|0,f|0,1056)|0;t=s+1056|0;c[t>>2]=0;c[4938812]=(c[4938812]|0)+1;u=b+2056|0;c[t>>2]=c[u>>2];c[u>>2]=s;r=26;break}}}while(0);do{if((r|0)==26){if((a[f]|0)==62){break}gK(b,136912,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}}while(0);if((a[g]|0)==0){fK(b,135520,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;h=0;j=64;k=0;l=1060;m=0;i=d;return h|0}else{v=g}b:while(1){s=v+1|0;while(1){u=a[v]|0;if((u<<24>>24|0)==0){w=g;break b}else if(!((u<<24>>24|0)==92|(u<<24>>24|0)==47)){v=s;continue b}u=a[s]|0;if(!((u<<24>>24|0)==92|(u<<24>>24|0)==47)){v=s;continue b}s$(v|0,s|0,o$(v|0)|0)|0}}while(1){s=a[w]|0;if((s<<24>>24|0)==0){break}else if((s<<24>>24|0)==47|(s<<24>>24|0)==92){a[w]=47}w=w+1|0}x=kL(g)|0;r=39}else if((q|0)==1){gL(f);s=f;c:while(1){u=s+1|0;while(1){t=a[s]|0;if((t<<24>>24|0)==0){y=f;break c}else if(!((t<<24>>24|0)==92|(t<<24>>24|0)==47)){s=u;continue c}t=a[u]|0;if(!((t<<24>>24|0)==92|(t<<24>>24|0)==47)){s=u;continue c}s$(s|0,u|0,o$(s|0)|0)|0}}while(1){s=a[y]|0;if((s<<24>>24|0)==47|(s<<24>>24|0)==92){a[y]=47}else if((s<<24>>24|0)==0){break}y=y+1|0}s=kL(f)|0;if((s|0)!=0){z=s;break}r$(g|0,b+1024|0)|0;p$(g|0,f|0)|0;x=kL(g)|0;r=39}else{r=38}}while(0);if((r|0)==38){fK(b,138728,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;h=0;j=64;k=0;l=1060;m=0;i=d;return h|0}do{if((r|0)==39){if((x|0)!=0){z=x;break}fK(b,134072,(n=i,i=i+8|0,c[n>>2]=g,n)|0);i=n;h=0;j=64;k=0;l=1060;m=0;i=d;return h|0}}while(0);g=b+2052|0;x=c[g>>2]|0;do{if((x|0)==0){A=0}else{f=z|0;y=x;while(1){if((VB(y|0,f)|0)==0){break}q=c[y+2136>>2]|0;if((q|0)==0){r=46;break}else{y=q}}if((r|0)==46){A=c[g>>2]|0;break}fK(b,171248,(n=i,i=i+8|0,c[n>>2]=f,n)|0);i=n;h=1;j=64;k=0;l=1060;m=0;i=d;return h|0}}while(0);c[z+2136>>2]=A;c[g>>2]=z;h=1;j=64;k=0;l=1060;m=0;i=d;return h|0}function mK(b){b=b|0;var d=0,e=0,f=0,g=0,h=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=i;i=i+1064|0;e=d|0;f=e|0;if((c[b+2072>>2]|0)>0){g=1;h=1060;j=0;i=d;return g|0}k=e+1052|0;l=0;while(1){if((hK(b,e)|0)==0){break}if((c[k>>2]|0)>(l|0)){m=5;break}if((k$(f,132648)|0)==0){l=1}else{m=10;break}}do{if((m|0)==5){l=ZJ(1060)|0;if((l|0)==0){Ur(0,145312,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;return 0}else{m$(l|0,f|0,1056)|0;k=l+1056|0;c[k>>2]=0;c[4938812]=(c[4938812]|0)+1;o=b+2056|0;c[k>>2]=c[o>>2];c[o>>2]=l;break}}else if((m|0)==10){if((c[e+1024>>2]|0)!=4){l=ZJ(1060)|0;if((l|0)==0){Ur(0,145312,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;return 0}m$(l|0,f|0,1056)|0;o=l+1056|0;c[o>>2]=0;c[4938812]=(c[4938812]|0)+1;k=b+2056|0;c[o>>2]=c[k>>2];c[k>>2]=l;fK(b,130344,(n=i,i=i+8|0,c[n>>2]=f,n)|0);i=n;g=0;h=1060;j=0;i=d;return g|0}l=a[f]|0;if(l<<24>>24==0){p=0}else{k=0;o=0;q=l;while(1){l=(da(o+119|0,q<<24>>24)|0)+k|0;r=o+1|0;s=a[e+r|0]|0;if(s<<24>>24==0){p=l;break}else{k=l;o=r;q=s}}}q=(c[b+2064>>2]|0)+(((p>>>10^p^p>>>20)&1023)<<2)|0;o=c[q>>2]|0;if((o|0)==0){g=1;h=1060;j=0;i=d;return g|0}else{t=0;u=o}while(1){v=u|0;if((k$(c[v>>2]|0,f)|0)==0){break}o=c[u+28>>2]|0;if((o|0)==0){g=1;m=29;break}else{t=u;u=o}}if((m|0)==29){h=1060;j=0;i=d;return g|0}if((c[u+4>>2]&1|0)!=0){gK(b,129048,(n=i,i=i+8|0,c[n>>2]=f,n)|0);i=n;g=1;h=1060;j=0;i=d;return g|0}o=c[u+28>>2]|0;if((t|0)==0){c[q>>2]=o}else{c[t+28>>2]=o}o=c[u+16>>2]|0;if((o|0)!=0){k=o;while(1){o=c[k+1056>>2]|0;bK(k|0);c[4938812]=(c[4938812]|0)-1;if((o|0)==0){break}else{k=o}}}k=c[u+20>>2]|0;if((k|0)!=0){q=k;while(1){k=c[q+1056>>2]|0;bK(q|0);c[4938812]=(c[4938812]|0)-1;if((k|0)==0){break}else{q=k}}}bK(c[v>>2]|0);bK(u);g=1;h=1060;j=0;i=d;return g|0}}while(0);fK(b,131664,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;g=0;h=1060;j=0;i=d;return g|0}function nK(b){b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;i=i+2128|0;e=d|0;f=d+1064|0;g=f|0;if((c[b+2072>>2]|0)>0){h=1;j=1060;k=0;i=d;return h|0}l=f+1052|0;m=0;while(1){if((hK(b,f)|0)==0){break}if((c[l>>2]|0)>(m|0)){n=5;break}if((k$(g,132648)|0)==0){m=1}else{n=10;break}}do{if((n|0)==5){m=ZJ(1060)|0;if((m|0)==0){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}else{m$(m|0,g|0,1056)|0;p=m+1056|0;c[p>>2]=0;c[4938812]=(c[4938812]|0)+1;q=b+2056|0;c[p>>2]=c[q>>2];c[q>>2]=m;break}}else if((n|0)==10){m=f+1024|0;if((c[m>>2]|0)!=4){q=ZJ(1060)|0;if((q|0)==0){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}m$(q|0,g|0,1056)|0;p=q+1056|0;c[p>>2]=0;c[4938812]=(c[4938812]|0)+1;r=b+2056|0;c[p>>2]=c[r>>2];c[r>>2]=q;fK(b,126592,(o=i,i=i+8|0,c[o>>2]=g,o)|0);i=o;h=0;j=1060;k=0;i=d;return h|0}q=b+2064|0;r=c[q>>2]|0;p=a[g]|0;if(p<<24>>24==0){s=0}else{t=0;u=0;v=p;while(1){p=(da(u+119|0,v<<24>>24)|0)+t|0;w=u+1|0;x=a[f+w|0]|0;if(x<<24>>24==0){s=p;break}else{t=p;u=w;v=x}}}v=c[r+(((s>>>10^s^s>>>20)&1023)<<2)>>2]|0;a:do{if((v|0)!=0){u=v;while(1){if((k$(c[u>>2]|0,g)|0)==0){break}t=c[u+28>>2]|0;if((t|0)==0){break a}else{u=t}}if((c[u+4>>2]&1|0)!=0){fK(b,125376,(o=i,i=i+8|0,c[o>>2]=g,o)|0);i=o;h=0;j=1060;k=0;i=d;return h|0}gK(b,124440,(o=i,i=i+8|0,c[o>>2]=g,o)|0);i=o;t=ZJ(1060)|0;if((t|0)==0){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}m$(t|0,g|0,1056)|0;x=t+1056|0;c[x>>2]=0;c[4938812]=(c[4938812]|0)+1;w=b+2056|0;c[x>>2]=c[w>>2];c[w>>2]=t;if((mK(b)|0)==0){h=0}else{break}j=1060;k=0;i=d;return h|0}}while(0);v=ZJ(32)|0;r=v;n$(v|0,0,32)|0;t=ZJ((o$(g|0)|0)+1|0)|0;w=v;c[w>>2]=t;r$(t|0,g|0)|0;t=c[q>>2]|0;x=c[w>>2]|0;p=a[x]|0;if(p<<24>>24==0){y=0}else{z=0;A=0;B=p;while(1){p=(da(A+119|0,B<<24>>24)|0)+z|0;C=A+1|0;D=a[x+C|0]|0;if(D<<24>>24==0){y=p;break}else{z=p;A=C;B=D}}}B=t+(((y>>>10^y^y>>>20)&1023)<<2)|0;c[v+28>>2]=c[B>>2];c[B>>2]=r;B=0;while(1){if((hK(b,f)|0)==0){h=1;n=99;break}if((c[l>>2]|0)>(B|0)){n=29;break}if((k$(g,132648)|0)==0){B=1}else{n=33;break}}if((n|0)==29){B=ZJ(1060)|0;if((B|0)==0){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}m$(B|0,g|0,1056)|0;r=B+1056|0;c[r>>2]=0;c[4938812]=(c[4938812]|0)+1;t=b+2056|0;c[r>>2]=c[t>>2];c[t>>2]=B;h=1;j=1060;k=0;i=d;return h|0}else if((n|0)==33){b:do{if(((c[f+1044>>2]|0)-(c[f+1040>>2]|0)|0)<=0){if((k$(g,64248)|0)!=0){break}B=e|0;do{if((MK(b,e)|0)==0){n=40}else{if((k$(B,175864)|0)==0){E=0;break}t=ZJ(1060)|0;if((t|0)==0){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}else{m$(t|0,B|0,1056)|0;r=t+1056|0;c[r>>2]=0;c[4938812]=(c[4938812]|0)+1;A=b+2056|0;c[r>>2]=c[A>>2];c[A>>2]=t;n=40;break}}}while(0);c:do{if((n|0)==40){B=v+16|0;u=v+12|0;t=0;d:while(1){A=0;while(1){if((hK(b,f)|0)==0){n=48;break d}if((c[l>>2]|0)>(A|0)){n=44;break d}if((k$(g,132648)|0)==0){A=1}else{break}}if((c[m>>2]|0)!=4){n=50;break}A=c[B>>2]|0;e:do{if((A|0)!=0){r=0;z=A;while(1){if((k$(z|0,g)|0)==0){break}x=c[z+1056>>2]|0;if((x|0)==0){break e}else{r=r+1|0;z=x}}if((r|0)>-1){n=55;break d}}}while(0);A=ZJ(1060)|0;if((A|0)==0){n=57;break}z=A;m$(A|0,g|0,1056)|0;c[4938812]=(c[4938812]|0)+1;c[A+1040>>2]=0;c[A+1044>>2]=0;c[A+1052>>2]=0;c[A+1056>>2]=0;if((t|0)==0){c[B>>2]=z}else{c[t+1056>>2]=z}c[u>>2]=(c[u>>2]|0)+1;A=0;while(1){if((hK(b,f)|0)==0){n=68;break d}if((c[l>>2]|0)>(A|0)){n=64;break d}if((k$(g,132648)|0)==0){A=1}else{break}}if((k$(g,175864)|0)==0){E=0;break c}if((k$(g,184280)|0)==0){t=z}else{n=71;break}}do{if((n|0)==44){t=ZJ(1060)|0;if((t|0)==0){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}else{m$(t|0,g|0,1056)|0;u=t+1056|0;c[u>>2]=0;c[4938812]=(c[4938812]|0)+1;B=b+2056|0;c[u>>2]=c[B>>2];c[B>>2]=t;n=48;break}}else if((n|0)==50){fK(b,122752,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;h=0;j=1060;k=0;i=d;return h|0}else if((n|0)==55){fK(b,121864,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;h=0;j=1060;k=0;i=d;return h|0}else if((n|0)==57){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}else if((n|0)==64){t=ZJ(1060)|0;if((t|0)==0){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}else{m$(t|0,g|0,1056)|0;B=t+1056|0;c[B>>2]=0;c[4938812]=(c[4938812]|0)+1;u=b+2056|0;c[B>>2]=c[u>>2];c[u>>2]=t;n=68;break}}else if((n|0)==71){fK(b,119848,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;h=0;j=1060;k=0;i=d;return h|0}}while(0);if((n|0)==48){fK(b,123600,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;h=0;j=1060;k=0;i=d;return h|0}else if((n|0)==68){fK(b,121016,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;h=0;j=1060;k=0;i=d;return h|0}}}while(0);while(1){if((hK(b,f)|0)==0){h=1;n=99;break}if((c[l>>2]|0)>(E|0)){break}if((k$(g,132648)|0)==0){E=1}else{break b}}if((n|0)==99){j=1060;k=0;i=d;return h|0}t=ZJ(1060)|0;if((t|0)==0){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}m$(t|0,g|0,1056)|0;u=t+1056|0;c[u>>2]=0;c[4938812]=(c[4938812]|0)+1;B=b+2056|0;c[u>>2]=c[B>>2];c[B>>2]=t;h=1;j=1060;k=0;i=d;return h|0}}while(0);m=ZJ(1060)|0;if((m|0)==0){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}t=v+20|0;B=0;u=m;f:while(1){m=u;m$(u|0,g|0,1056)|0;A=u+1056|0;c[A>>2]=0;c[4938812]=(c[4938812]|0)+1;do{if((c[u+1024>>2]|0)==4){if((k$(u,c[w>>2]|0)|0)!=0){n=85;break}fK(b,118464,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;F=B}else{n=85}}while(0);do{if((n|0)==85){n=0;c[u+1040>>2]=0;c[u+1044>>2]=0;c[u+1052>>2]=0;c[A>>2]=0;if((B|0)==0){c[t>>2]=m;F=m;break}else{c[B+1056>>2]=m;F=m;break}}}while(0);m=0;while(1){if((hK(b,f)|0)==0){break f}if((c[l>>2]|0)>(m|0)){n=91;break f}if((k$(g,132648)|0)==0){m=1}else{break}}m=ZJ(1060)|0;if((m|0)==0){n=81;break}else{B=F;u=m}}if((n|0)==81){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}do{if((n|0)==91){u=ZJ(1060)|0;if((u|0)==0){Ur(0,145312,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;return 0}else{m$(u|0,g|0,1056)|0;B=u+1056|0;c[B>>2]=0;c[4938812]=(c[4938812]|0)+1;w=b+2056|0;c[B>>2]=c[w>>2];c[w>>2]=u;break}}}while(0);if((F|0)==0){h=1;j=1060;k=0;i=d;return h|0}do{if((k$(c[t>>2]|0,117448)|0)!=0){if((k$(F|0,117448)|0)==0){break}else{h=1}j=1060;k=0;i=d;return h|0}}while(0);fK(b,116248,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;h=0;j=1060;k=0;i=d;return h|0}else if((n|0)==99){j=1060;k=0;i=d;return h|0}}}while(0);fK(b,128048,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;h=0;j=1060;k=0;i=d;return h|0}function oK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+1064|0;e=d|0;f=e|0;if((MK(a,e)|0)==0){g=0;h=1060;j=0;i=d;return g|0}if((k$(f,b)|0)==0){g=1;h=1060;j=0;i=d;return g|0}b=ZJ(1060)|0;if((b|0)==0){Ur(0,145312,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;return 0}m$(b|0,f|0,1056)|0;f=b+1056|0;c[f>>2]=0;c[4938812]=(c[4938812]|0)+1;e=a+2056|0;c[f>>2]=c[e>>2];c[e>>2]=b;g=0;h=1060;j=0;i=d;return g|0}function pK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;b=i;i=i+3136|0;d=b|0;e=d|0;f=lL(a,o$(a|0)|0,114704)|0;n$(e|0,0,3136)|0;q$(e|0,114704,64)|0;c[d+2052>>2]=f;e=d+2064|0;c[e>>2]=_J(4096)|0;a=nK(d)|0;g=d+2056|0;h=c[g>>2]|0;if((h|0)!=0){j=h;do{c[g>>2]=c[j+1056>>2];bK(j|0);c[4938812]=(c[4938812]|0)-1;j=c[g>>2]|0;}while((j|0)!=0)}j=c[e>>2]|0;e=0;while(1){g=c[j+(e<<2)>>2]|0;h=e+1|0;if((g|0)!=0){k=g;break}if((h|0)<1024){e=h}else{k=0;break}}bK(j);mL(f);if((a|0)>0){l=k;m=3136;n=0;i=b;return l|0}if((c[d+2060>>2]|0)==0){l=0;m=3136;n=0;i=b;return l|0}d=c[k+16>>2]|0;if((d|0)!=0){a=d;while(1){d=c[a+1056>>2]|0;bK(a|0);c[4938812]=(c[4938812]|0)-1;if((d|0)==0){break}else{a=d}}}a=c[k+20>>2]|0;if((a|0)!=0){d=a;while(1){a=c[d+1056>>2]|0;bK(d|0);c[4938812]=(c[4938812]|0)-1;if((a|0)==0){break}else{d=a}}}bK(c[k>>2]|0);bK(k);l=0;m=3136;n=0;i=b;return l|0}function qK(a){a=a|0;var b=0,d=0;b=pK(a)|0;if((b|0)==0){d=0;return d|0}c[b+24>>2]=c[5120102];c[5120102]=b;d=1;return d|0}function rK(){var a=0,b=0,d=0;a=c[5120102]|0;if((a|0)==0){return}else{b=a}do{c[5120102]=c[b+24>>2];a=c[b+16>>2]|0;if((a|0)!=0){d=a;while(1){a=c[d+1056>>2]|0;bK(d|0);c[4938812]=(c[4938812]|0)-1;if((a|0)==0){break}else{d=a}}}d=c[b+20>>2]|0;if((d|0)!=0){a=d;while(1){d=c[a+1056>>2]|0;bK(a|0);c[4938812]=(c[4938812]|0)-1;if((d|0)==0){break}else{a=d}}}bK(c[b>>2]|0);bK(b);b=c[5120102]|0;}while((b|0)!=0);return}function sK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a=i;d=ZJ(32)|0;e=d;f=b|0;g=ZJ((o$(c[f>>2]|0)|0)+1|0)|0;c[d>>2]=g;r$(g|0,c[f>>2]|0)|0;c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+24>>2]=0;c[d+28>>2]=0;f=d+20|0;c[f>>2]=0;g=c[b+20>>2]|0;a:do{if((g|0)!=0){h=0;j=g;while(1){k=ZJ(1060)|0;if((k|0)==0){break}l=k;m$(k|0,j|0,1056)|0;c[4938812]=(c[4938812]|0)+1;c[k+1056>>2]=0;if((h|0)==0){c[f>>2]=l}else{c[h+1056>>2]=l}k=c[j+1056>>2]|0;if((k|0)==0){break a}else{h=l;j=k}}Ur(0,145312,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;return 0}}while(0);f=d+16|0;c[f>>2]=0;d=c[b+16>>2]|0;if((d|0)==0){i=a;return e|0}else{n=0;o=d}while(1){d=ZJ(1060)|0;if((d|0)==0){p=10;break}b=d;m$(d|0,o|0,1056)|0;c[4938812]=(c[4938812]|0)+1;c[d+1056>>2]=0;if((n|0)==0){c[f>>2]=b}else{c[n+1056>>2]=b}d=c[o+1056>>2]|0;if((d|0)==0){p=15;break}else{n=b;o=d}}if((p|0)==10){Ur(0,145312,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;return 0}else if((p|0)==15){i=a;return e|0}return 0}function tK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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=i;i=i+1064|0;f=e|0;g=f|0;h=f+1052|0;j=0;while(1){if((hK(b,f)|0)==0){break}if((c[h>>2]|0)>(j|0)){k=4;break}if((k$(g,132648)|0)==0){j=1}else{k=9;break}}do{if((k|0)==4){j=ZJ(1060)|0;if((j|0)==0){Ur(0,145312,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;return 0}else{m$(j|0,g|0,1056)|0;h=j+1056|0;c[h>>2]=0;c[4938812]=(c[4938812]|0)+1;m=b+2056|0;c[h>>2]=c[m>>2];c[m>>2]=j;break}}else if((k|0)==9){if((c[f+1024>>2]|0)!=4){j=ZJ(1060)|0;if((j|0)==0){Ur(0,145312,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;return 0}m$(j|0,g|0,1056)|0;m=j+1056|0;c[m>>2]=0;c[4938812]=(c[4938812]|0)+1;h=b+2056|0;c[m>>2]=c[h>>2];c[h>>2]=j;fK(b,112728,(l=i,i=i+8|0,c[l>>2]=g,l)|0);i=l;n=0;o=1060;p=0;i=e;return n|0}j=c[b+2064>>2]|0;h=a[g]|0;if(h<<24>>24==0){q=0}else{m=0;r=0;s=h;while(1){h=(da(r+119|0,s<<24>>24)|0)+m|0;t=r+1|0;u=a[f+t|0]|0;if(u<<24>>24==0){q=h;break}else{m=h;r=t;s=u}}}s=c[j+(((q>>>10^q^q>>>20)&1023)<<2)>>2]|0;a:do{if((s|0)==0){v=0}else{r=s;while(1){if((k$(c[r>>2]|0,g)|0)==0){v=r;break a}m=c[r+28>>2]|0;if((m|0)==0){v=0;break}else{r=m}}}}while(0);s=ZJ(16)|0;c[s>>2]=d;c[s+8>>2]=c[b+2052>>2];j=((d|0)==8^(v|0)==0)&1^1;c[s+4>>2]=j;r=b+2072|0;c[r>>2]=j+(c[r>>2]|0);r=b+2068|0;c[s+12>>2]=c[r>>2];c[r>>2]=s;n=1;o=1060;p=0;i=e;return n|0}}while(0);fK(b,113656,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;n=0;o=1060;p=0;i=e;return n|0}function uK(a){a=a|0;return tK(a,8)|0}function vK(a){a=a|0;return tK(a,16)|0}function wK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;d=a+2068|0;e=c[d>>2]|0;do{if((e|0)!=0){f=a+2052|0;if((c[e+8>>2]|0)!=(c[f>>2]|0)){break}g=c[e>>2]|0;h=c[e+4>>2]|0;c[d>>2]=c[e+12>>2];j=a+2072|0;c[j>>2]=(c[j>>2]|0)-h;bK(e);if((g|0)==0){break}else if((g|0)==2){fK(a,111064,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=0;i=b;return l|0}else{g=ZJ(16)|0;c[g>>2]=2;c[g+8>>2]=c[f>>2];f=(h|0)==0|0;c[g+4>>2]=f;c[j>>2]=(c[j>>2]|0)+f;c[g+12>>2]=c[d>>2];c[d>>2]=g;l=1;i=b;return l|0}}}while(0);fK(a,111824,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=0;i=b;return l|0}function xK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=a+2068|0;e=c[d>>2]|0;do{if((e|0)!=0){if((c[e+8>>2]|0)!=(c[a+2052>>2]|0)){break}f=c[e>>2]|0;c[d>>2]=c[e+12>>2];g=a+2072|0;c[g>>2]=(c[g>>2]|0)-(c[e+4>>2]|0);bK(e);if((f|0)==0){break}else{h=1}i=b;return h|0}}while(0);fK(a,110320,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a;h=0;i=b;return h|0}function yK(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;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,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,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0.0,ia=0,ja=0,ka=0,la=0,ma=0,na=0.0,oa=0,pa=0,qa=0.0,ra=0,sa=0,ta=0.0,ua=0,va=0,wa=0.0,xa=0,ya=0,za=0.0,Aa=0.0,Ba=0,Ca=0,Da=0,Ea=0.0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0;j=i;i=i+2560|0;k=j|0;l=j+1280|0;m=(e|0)!=0;if(m){c[e>>2]=0}n=(f|0)!=0;if(n){g[f>>2]=0.0}a:do{if((d|0)==0){o=0;p=0;q=86}else{r=b+2064|0;s=(h|0)==0;t=0;u=0;v=0;w=0;x=d;y=0;z=0;A=0;B=0;C=0;b:while(1){D=c[x+1024>>2]|0;do{if((D|0)==5){if((A|0)!=0){q=42;break b}E=x+1028|0;F=c[E>>2]|0;if((F|0)==44){G=C;H=B;I=0;J=z;K=y+1|0;L=x;M=w;N=v;O=u;P=t;break}else if((F|0)==45){if((y|0)<1){q=46;break b}else{G=C;H=B;I=0;J=z;K=y-1|0;L=x;M=w;N=v;O=u;P=t;break}}else{if(s){switch(F|0){case 16:case 17:{q=53;break};case 30:{q=54;break};case 35:case 28:case 21:case 22:case 32:case 33:case 34:{q=49;break b;break};case 36:{q=51;break};case 26:case 27:case 29:case 5:case 6:case 7:case 8:case 9:case 10:case 37:case 38:case 42:case 43:{q=55;break};default:{q=57;break b}}}else{switch(F|0){case 16:case 17:{q=53;break};case 30:{q=54;break};case 36:case 35:{q=51;break};case 26:case 27:case 28:case 29:case 5:case 6:case 7:case 8:case 9:case 10:case 37:case 38:case 21:case 22:case 32:case 33:case 34:case 42:case 43:{q=55;break};default:{q=57;break b}}}if((q|0)==51){q=0;if((z|0)!=0){q=52;break b}}else if((q|0)==53){q=0;fK(b,99688,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q}else if((q|0)==54){q=0;if((z|0)==0){G=C;H=B;I=1;J=0;K=y;L=x;M=w;N=v;O=u;P=t;break}}else if((q|0)==55){q=0;if((z|0)==0){q=56;break b}}if((B|0)>63){q=59;break b}F=B+1|0;R=k+(B*20|0)|0;c[R>>2]=c[E>>2];switch(c[E>>2]|0){case 6:{S=6;break};case 7:{S=12;break};case 8:{S=12;break};case 9:{S=11;break};case 10:{S=11;break};case 36:{S=16;break};case 35:{S=16;break};case 42:{S=5;break};case 43:{S=5;break};case 26:case 27:case 28:{S=15;break};case 37:{S=12;break};case 38:{S=12;break};case 21:{S=13;break};case 22:{S=13;break};case 32:{S=10;break};case 33:{S=8;break};case 34:{S=9;break};case 29:{S=14;break};case 30:{S=14;break};case 5:{S=7;break};default:{S=0}}c[k+(B*20|0)+4>>2]=S;c[k+(B*20|0)+8>>2]=y;c[k+(B*20|0)+16>>2]=0;c[k+(B*20|0)+12>>2]=u;if((u|0)==0){G=C;H=F;I=0;J=0;K=y;L=x;M=w;N=v;O=R;P=R;break}c[u+16>>2]=R;G=C;H=F;I=0;J=0;K=y;L=x;M=w;N=v;O=R;P=t;break}}else if((D|0)==3){if((z|0)!=0){q=33;break b}if((C|0)>63){q=35;break b}R=C+1|0;F=l+(C*20|0)|0;E=c[x+1032>>2]|0;if((A|0)==0){c[F>>2]=E;g[l+(C*20|0)+4>>2]=+g[x+1036>>2]}else{c[F>>2]=-E;g[l+(C*20|0)+4>>2]=-0.0- +g[x+1036>>2]}c[l+(C*20|0)+8>>2]=y;c[l+(C*20|0)+16>>2]=0;c[l+(C*20|0)+12>>2]=w;if((w|0)==0){G=R;H=B;I=0;J=1;K=y;L=x;M=F;N=F;O=u;P=t;break}c[w+16>>2]=F;G=R;H=B;I=0;J=1;K=y;L=x;M=F;N=v;O=u;P=t}else if((D|0)==4){if((A|z|0)!=0){q=9;break b}T=x|0;if((k$(T,107984)|0)!=0){q=11;break b}F=c[x+1056>>2]|0;if((k$(F|0,64248)|0)==0){U=1;V=c[F+1056>>2]|0}else{U=0;V=F}if((V|0)==0){q=16;break b}if((c[V+1024>>2]|0)!=4){q=16;break b}if((C|0)>63){q=18;break b}F=C+1|0;R=l+(C*20|0)|0;E=c[r>>2]|0;W=V|0;X=a[W]|0;if(X<<24>>24==0){Y=0}else{Z=0;_=0;$=X;while(1){X=(da(_+119|0,$<<24>>24)|0)+Z|0;aa=_+1|0;ba=a[V+aa|0]|0;if(ba<<24>>24==0){Y=X;break}else{Z=X;_=aa;$=ba}}}$=c[E+(((Y>>>10^Y^Y>>>20)&1023)<<2)>>2]|0;c:do{if(($|0)==0){q=25}else{_=$;while(1){if((k$(c[_>>2]|0,W)|0)==0){break}Z=c[_+28>>2]|0;if((Z|0)==0){q=25;break c}else{_=Z}}c[R>>2]=1;g[l+(C*20|0)+4>>2]=1.0}}while(0);if((q|0)==25){q=0;c[R>>2]=0;g[l+(C*20|0)+4>>2]=0.0}c[l+(C*20|0)+8>>2]=y;c[l+(C*20|0)+16>>2]=0;c[l+(C*20|0)+12>>2]=w;if((w|0)==0){ca=R}else{c[w+16>>2]=R;ca=v}if((U|0)==0){G=F;H=B;I=A;J=1;K=y;L=V;M=R;N=ca;O=u;P=t;break}W=c[V+1056>>2]|0;if((W|0)==0){q=31;break b}if((k$(W|0,175864)|0)==0){G=F;H=B;I=A;J=1;K=y;L=W;M=R;N=ca;O=u;P=t}else{q=31;break b}}else{q=83;break b}}while(0);D=c[L+1056>>2]|0;if((D|0)==0){q=85;break}else{t=P;u=O;v=N;w=M;x=D;y=K;z=J;A=I;B=H;C=G}}if((q|0)==9){fK(b,109024,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==11){fK(b,107104,(Q=i,i=i+8|0,c[Q>>2]=T,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==16){fK(b,106056,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==18){fK(b,105232,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==31){fK(b,104280,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=t;ga=ca;break}else if((q|0)==33){fK(b,109024,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==35){fK(b,105232,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==42){fK(b,103352,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==46){fK(b,102576,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==49){fK(b,101672,(Q=i,i=i+8|0,c[Q>>2]=x,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==52){fK(b,100752,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==56){fK(b,72024,(Q=i,i=i+8|0,c[Q>>2]=x,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==57){fK(b,63872,(Q=i,i=i+8|0,c[Q>>2]=x,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==59){fK(b,62752,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==83){fK(b,61872,(Q=i,i=i+8|0,c[Q>>2]=x,Q)|0);i=Q;ea=1;fa=t;ga=v;break}else if((q|0)==85){if((J|0)==0){o=N;p=P;q=86;break}if((K|0)!=0){fK(b,60416,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=P;ga=N;break}if((P|0)==0){ea=0;fa=P;ga=N;break}C=(h|0)==0;B=P;A=N;z=0;ha=0.0;y=0;d:while(1){w=B+16|0;u=c[w>>2]|0;e:do{if((u|0)==0){ia=A;ja=B;ka=w}else{r=A;s=B;D=w;W=u;$=c[B+8>>2]|0;while(1){E=c[W+8>>2]|0;if(($|0)>(E|0)){ia=r;ja=s;ka=D;break e}if(($|0)==(E|0)){if((c[s+4>>2]|0)>=(c[W+4>>2]|0)){ia=r;ja=s;ka=D;break e}}if(((c[s>>2]|0)-35|0)>>>0<2>>>0){la=r}else{la=c[r+16>>2]|0}if((la|0)==0){q=99;break d}_=W+16|0;Z=c[_>>2]|0;if((Z|0)==0){ia=la;ja=W;ka=_;break}else{r=la;s=W;D=_;W=Z;$=E}}}}while(0);u=c[ia+16>>2]|0;w=c[ja>>2]|0;f:do{switch(w|0){case 37:{$=ia|0;c[$>>2]=(c[$>>2]|0)>(c[u>>2]|0);$=ia+4|0;g[$>>2]=+(+g[$>>2]>+g[u+4>>2]|0);ma=y;na=ha;oa=z;q=146;break};case 38:{$=ia|0;c[$>>2]=(c[$>>2]|0)<(c[u>>2]|0);$=ia+4|0;g[$>>2]=+(+g[$>>2]<+g[u+4>>2]|0);ma=y;na=ha;oa=z;q=146;break};case 21:{$=ia|0;c[$>>2]=c[$>>2]>>c[u>>2];ma=y;na=ha;oa=z;q=146;break};case 22:{$=ia|0;c[$>>2]=c[$>>2]<>2];ma=y;na=ha;oa=z;q=146;break};case 34:{$=ia|0;c[$>>2]=c[$>>2]^c[u>>2];ma=y;na=ha;oa=z;q=146;break};case 42:{if((y|0)==0){q=136;break d}if(C){if(ha!=0.0){pa=z;qa=ha;ra=0;q=145;break f}g[ia+4>>2]=+g[u+4>>2];pa=z;qa=ha;ra=0;q=145;break f}else{if((z|0)!=0){pa=z;qa=ha;ra=0;q=145;break f}c[ia>>2]=c[u>>2];pa=0;qa=ha;ra=0;q=145;break f}break};case 43:{if((y|0)!=0){q=143;break d}pa=c[ia>>2]|0;qa=+g[ia+4>>2];ra=1;q=145;break};case 6:{$=ia|0;if((c[$>>2]|0)==0){sa=(c[u>>2]|0)!=0|0}else{sa=1}c[$>>2]=sa;$=ia+4|0;if(+g[$>>2]!=0.0){ta=1.0}else{ta=+(+g[u+4>>2]!=0.0|0)}g[$>>2]=ta;pa=z;qa=ha;ra=y;q=145;break};case 32:{$=ia|0;c[$>>2]=c[$>>2]&c[u>>2];ma=y;na=ha;oa=z;q=146;break};case 33:{$=ia|0;c[$>>2]=c[$>>2]|c[u>>2];ma=y;na=ha;oa=z;q=146;break};case 36:{$=ia|0;c[$>>2]=(c[$>>2]|0)==0;$=ia+4|0;g[$>>2]=+(+g[$>>2]==0.0|0);ua=A;va=y;wa=ha;xa=z;break};case 28:{$=c[u>>2]|0;if(($|0)==0){q=110;break d}W=ia|0;c[W>>2]=(c[W>>2]|0)%($|0)|0;pa=z;qa=ha;ra=y;q=145;break};case 29:{$=ia|0;c[$>>2]=(c[$>>2]|0)+(c[u>>2]|0);$=ia+4|0;g[$>>2]=+g[u+4>>2]+ +g[$>>2];ma=y;na=ha;oa=z;q=146;break};case 30:{$=ia|0;c[$>>2]=(c[$>>2]|0)-(c[u>>2]|0);$=ia+4|0;g[$>>2]=+g[$>>2]- +g[u+4>>2];ma=y;na=ha;oa=z;q=146;break};case 5:{$=ia|0;if((c[$>>2]|0)==0){ya=0}else{ya=(c[u>>2]|0)!=0|0}c[$>>2]=ya;$=ia+4|0;if(+g[$>>2]!=0.0){za=+(+g[u+4>>2]!=0.0|0)}else{za=0.0}g[$>>2]=za;pa=z;qa=ha;ra=y;q=145;break};case 35:{$=ia|0;c[$>>2]=~c[$>>2];ua=A;va=y;wa=ha;xa=z;break};case 26:{$=ia|0;c[$>>2]=da(c[$>>2]|0,c[u>>2]|0)|0;$=ia+4|0;g[$>>2]=+g[u+4>>2]*+g[$>>2];ma=y;na=ha;oa=z;q=146;break};case 27:{$=c[u>>2]|0;if(($|0)==0){q=107;break d}Aa=+g[u+4>>2];if(!(Aa!=0.0)){q=107;break d}W=ia|0;c[W>>2]=(c[W>>2]|0)/($|0)|0;$=ia+4|0;g[$>>2]=+g[$>>2]/Aa;pa=z;qa=ha;ra=y;q=145;break};case 7:{$=ia|0;c[$>>2]=(c[$>>2]|0)>=(c[u>>2]|0);$=ia+4|0;g[$>>2]=+(+g[$>>2]>=+g[u+4>>2]|0);ma=y;na=ha;oa=z;q=146;break};case 8:{$=ia|0;c[$>>2]=(c[$>>2]|0)<=(c[u>>2]|0);$=ia+4|0;g[$>>2]=+(+g[$>>2]<=+g[u+4>>2]|0);ma=y;na=ha;oa=z;q=146;break};case 9:{$=ia|0;c[$>>2]=(c[$>>2]|0)==(c[u>>2]|0);$=ia+4|0;g[$>>2]=+(+g[$>>2]==+g[u+4>>2]|0);ma=y;na=ha;oa=z;q=146;break};case 10:{$=ia|0;c[$>>2]=(c[$>>2]|0)!=(c[u>>2]|0);$=ia+4|0;g[$>>2]=+(+g[$>>2]!=+g[u+4>>2]|0);ma=y;na=ha;oa=z;q=146;break};default:{pa=z;qa=ha;ra=y;q=145}}}while(0);if((q|0)==145){q=0;if((w|0)==36|(w|0)==35){ua=A;va=ra;wa=qa;xa=pa}else if((w|0)==43){Ba=ia;Ca=u;Da=ra;Ea=qa;Fa=pa;q=147}else{ma=ra;na=qa;oa=pa;q=146}}if((q|0)==146){q=0;Ba=u;Ca=c[u+16>>2]|0;Da=ma;Ea=na;Fa=oa;q=147}do{if((q|0)==147){q=0;$=Ba+12|0;W=c[$>>2]|0;if((W|0)==0){Ga=Ca;Ha=Ca}else{c[W+16>>2]=Ca;Ga=A;Ha=c[Ba+16>>2]|0}if((Ha|0)==0){ua=Ga;va=Da;wa=Ea;xa=Fa;break}c[Ha+12>>2]=c[$>>2];ua=Ga;va=Da;wa=Ea;xa=Fa}}while(0);u=ja+12|0;w=c[u>>2]|0;$=c[ka>>2]|0;if((w|0)==0){Ia=$;Ja=$}else{c[w+16>>2]=$;Ia=B;Ja=c[ka>>2]|0}if((Ja|0)!=0){c[Ja+12>>2]=c[u>>2]}if((Ia|0)==0){ea=0;fa=0;ga=ua;break a}else{B=Ia;A=ua;z=xa;ha=wa;y=va}}if((q|0)==99){fK(b,59736,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=B;ga=A;break}else if((q|0)==107){fK(b,59144,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=B;ga=A;break}else if((q|0)==110){fK(b,59144,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=B;ga=A;break}else if((q|0)==136){fK(b,58592,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=B;ga=A;break}else if((q|0)==143){fK(b,57664,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=B;ga=A;break}}}}while(0);if((q|0)==86){fK(b,61096,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;ea=1;fa=p;ga=o}o=(ga|0)==0;do{if(!o){if(m){c[e>>2]=c[ga>>2]}if(!n){break}g[f>>2]=+g[ga+4>>2]}}while(0);if((fa|0)!=0){p=fa;do{p=c[p+16>>2]|0;}while((p|0)!=0)}if(!o){o=ga;do{o=c[o+16>>2]|0;}while((o|0)!=0)}if((ea|0)==0){Ka=1;La=1280;Ma=0;Na=1280;Oa=0;i=j;return Ka|0}if(m){c[e>>2]=0}if(!n){Ka=0;La=1280;Ma=0;Na=1280;Oa=0;i=j;return Ka|0}g[f>>2]=0.0;Ka=0;La=1280;Ma=0;Na=1280;Oa=0;i=j;return Ka|0}function zK(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=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,J=0,K=0,L=0,M=0;h=i;i=i+1080|0;j=h|0;k=h+8|0;l=h+16|0;m=l|0;if((d|0)!=0){c[d>>2]=0}if((e|0)!=0){g[e>>2]=0.0}n=l+1052|0;o=0;while(1){if((hK(b,l)|0)==0){break}if((c[n>>2]|0)>(o|0)){p=8;break}if((k$(m,132648)|0)==0){o=1}else{p=12;break}}do{if((p|0)==8){o=ZJ(1060)|0;if((o|0)==0){Ur(0,145312,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;return 0}else{m$(o|0,m|0,1056)|0;r=o+1056|0;c[r>>2]=0;c[4938812]=(c[4938812]|0)+1;s=b+2056|0;c[r>>2]=c[s>>2];c[s>>2]=o;break}}else if((p|0)==12){o=l+1024|0;s=b+2064|0;r=b+2056|0;t=0;u=0;v=0;a:while(1){w=c[o>>2]|0;do{if((w|0)==4){if((t|0)!=0){x=ZJ(1060)|0;if((x|0)==0){p=17;break a}y=x;m$(x|0,m|0,1056)|0;c[4938812]=(c[4938812]|0)+1;c[x+1056>>2]=0;if((v|0)==0){z=0;A=y;B=y;break}c[v+1056>>2]=y;z=0;A=u;B=y;break}if((k$(m,107984)|0)==0){y=ZJ(1060)|0;if((y|0)==0){p=22;break a}x=y;m$(y|0,m|0,1056)|0;c[4938812]=(c[4938812]|0)+1;c[y+1056>>2]=0;if((v|0)==0){z=1;A=x;B=x;break}c[v+1056>>2]=x;z=1;A=u;B=x;break}x=c[s>>2]|0;y=a[m]|0;if(y<<24>>24==0){C=0}else{D=0;E=0;F=y;while(1){y=(da(E+119|0,F<<24>>24)|0)+D|0;G=E+1|0;H=a[l+G|0]|0;if(H<<24>>24==0){C=y;break}else{D=y;E=G;F=H}}}F=c[x+(((C>>>10^C^C>>>20)&1023)<<2)>>2]|0;if((F|0)==0){p=30;break a}else{I=F}while(1){if((k$(c[I>>2]|0,m)|0)==0){break}F=c[I+28>>2]|0;if((F|0)==0){p=30;break a}else{I=F}}x=(kK(b,l,I,j,k)|0)==0;F=c[j>>2]|0;if(x|(F|0)==0){J=0;p=49;break a}x=c[k>>2]|0;if((x|0)==0){J=0;p=49;break a}c[x+1056>>2]=c[r>>2];c[r>>2]=F;z=0;A=u;B=v}else if((w|0)==3|(w|0)==5){F=ZJ(1060)|0;if((F|0)==0){p=35;break a}x=F;m$(F|0,m|0,1056)|0;c[4938812]=(c[4938812]|0)+1;c[F+1056>>2]=0;if((v|0)==0){z=t;A=x;B=x;break}c[v+1056>>2]=x;z=t;A=u;B=x}else{p=38;break a}}while(0);w=0;while(1){if((hK(b,l)|0)==0){break a}if((c[n>>2]|0)>(w|0)){p=42;break a}if((k$(m,132648)|0)==0){w=1}else{t=z;u=A;v=B;continue a}}}do{if((p|0)==17){Ur(0,145312,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;return 0}else if((p|0)==22){Ur(0,145312,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;return 0}else if((p|0)==30){fK(b,56016,(q=i,i=i+8|0,c[q>>2]=m,q)|0);i=q;J=0;K=1060;L=0;i=h;return J|0}else if((p|0)==35){Ur(0,145312,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;return 0}else if((p|0)==38){fK(b,55032,(q=i,i=i+8|0,c[q>>2]=m,q)|0);i=q;J=0;K=1060;L=0;i=h;return J|0}else if((p|0)==42){v=ZJ(1060)|0;if((v|0)==0){Ur(0,145312,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;return 0}else{m$(v|0,m|0,1056)|0;u=v+1056|0;c[u>>2]=0;c[4938812]=(c[4938812]|0)+1;c[u>>2]=c[r>>2];c[r>>2]=v;break}}else if((p|0)==49){K=1060;L=0;i=h;return J|0}}while(0);if((yK(b,A,d,e,f)|0)==0){J=0;K=1060;L=0;i=h;return J|0}if((A|0)==0){J=1;K=1060;L=0;i=h;return J|0}else{M=A}while(1){r=c[M+1056>>2]|0;bK(M|0);c[4938812]=(c[4938812]|0)-1;if((r|0)==0){J=1;break}else{M=r}}K=1060;L=0;i=h;return J|0}}while(0);fK(b,56736,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;J=0;K=1060;L=0;i=h;return J|0}function AK(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0;h=i;i=i+1080|0;j=h|0;k=h+8|0;l=h+16|0;m=l|0;if((d|0)!=0){c[d>>2]=0}if((e|0)!=0){g[e>>2]=0.0}if((hK(b,l)|0)==0){fK(b,54312,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;o=0;p=1060;q=0;i=h;return o|0}if((hK(b,l)|0)==0){fK(b,53800,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;o=0;p=1060;q=0;i=h;return o|0}r=l+1024|0;s=b+2064|0;t=b+2056|0;u=1;v=0;w=0;x=0;a:while(1){y=c[r>>2]|0;do{if((y|0)==4){if((x|0)!=0){z=ZJ(1060)|0;if((z|0)==0){A=13;break a}B=z;m$(z|0,m|0,1056)|0;c[4938812]=(c[4938812]|0)+1;c[z+1056>>2]=0;if((v|0)==0){C=u;D=B;E=B;F=0;break}c[v+1056>>2]=B;C=u;D=B;E=w;F=0;break}if((k$(m,107984)|0)==0){B=ZJ(1060)|0;if((B|0)==0){A=18;break a}z=B;m$(B|0,m|0,1056)|0;c[4938812]=(c[4938812]|0)+1;c[B+1056>>2]=0;if((v|0)==0){C=u;D=z;E=z;F=1;break}c[v+1056>>2]=z;C=u;D=z;E=w;F=1;break}z=c[s>>2]|0;B=a[m]|0;if(B<<24>>24==0){G=0}else{H=0;I=0;J=B;while(1){B=(da(I+119|0,J<<24>>24)|0)+H|0;K=I+1|0;L=a[l+K|0]|0;if(L<<24>>24==0){G=B;break}else{H=B;I=K;J=L}}}J=c[z+(((G>>>10^G^G>>>20)&1023)<<2)>>2]|0;if((J|0)==0){A=26;break a}else{M=J}while(1){if((k$(c[M>>2]|0,m)|0)==0){break}J=c[M+28>>2]|0;if((J|0)==0){A=26;break a}else{M=J}}z=(kK(b,l,M,j,k)|0)==0;J=c[j>>2]|0;if(z|(J|0)==0){o=0;A=43;break a}z=c[k>>2]|0;if((z|0)==0){o=0;A=43;break a}c[z+1056>>2]=c[t>>2];c[t>>2]=J;C=u;D=v;E=w;F=0}else if((y|0)==3|(y|0)==5){J=a[m]|0;if((J<<24>>24|0)==41){N=u-1|0}else if((J<<24>>24|0)==40){N=u+1|0}else{N=u}if((N|0)<1){O=w;A=40;break a}J=ZJ(1060)|0;if((J|0)==0){A=35;break a}z=J;m$(J|0,m|0,1056)|0;c[4938812]=(c[4938812]|0)+1;c[J+1056>>2]=0;if((v|0)==0){C=N;D=z;E=z;F=x;break}c[v+1056>>2]=z;C=N;D=z;E=w;F=x}else{A=38;break a}}while(0);if((hK(b,l)|0)==0){O=E;A=40;break}else{u=C;v=D;w=E;x=F}}if((A|0)==13){Ur(0,145312,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;return 0}else if((A|0)==18){Ur(0,145312,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;return 0}else if((A|0)==26){fK(b,56016,(n=i,i=i+8|0,c[n>>2]=m,n)|0);i=n;o=0;p=1060;q=0;i=h;return o|0}else if((A|0)==35){Ur(0,145312,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;return 0}else if((A|0)==38){fK(b,55032,(n=i,i=i+8|0,c[n>>2]=m,n)|0);i=n;o=0;p=1060;q=0;i=h;return o|0}else if((A|0)==40){if((yK(b,O,d,e,f)|0)==0){o=0;p=1060;q=0;i=h;return o|0}if((O|0)==0){o=1;p=1060;q=0;i=h;return o|0}else{P=O}while(1){O=c[P+1056>>2]|0;bK(P|0);c[4938812]=(c[4938812]|0)-1;if((O|0)==0){o=1;break}else{P=O}}p=1060;q=0;i=h;return o|0}else if((A|0)==43){p=1060;q=0;i=h;return o|0}return 0}function BK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+8|0;d=b|0;e=a+2068|0;f=c[e>>2]|0;do{if((f|0)!=0){g=a+2052|0;if((c[f+8>>2]|0)!=(c[g>>2]|0)){break}h=c[f>>2]|0;c[e>>2]=c[f+12>>2];j=a+2072|0;c[j>>2]=(c[j>>2]|0)-(c[f+4>>2]|0);bK(f);if((h&-3|0)==0){break}if((zK(a,d,0,1)|0)==0){k=0;i=b;return k|0}h=(c[d>>2]|0)==0;l=ZJ(16)|0;c[l>>2]=4;c[l+8>>2]=c[g>>2];g=h&1;c[l+4>>2]=g;c[j>>2]=(c[j>>2]|0)+g;c[l+12>>2]=c[e>>2];c[e>>2]=l;k=1;i=b;return k|0}}while(0);fK(a,53336,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a;k=0;i=b;return k|0}function CK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+8|0;d=b|0;if((zK(a,d,0,1)|0)==0){e=0;i=b;return e|0}f=(c[d>>2]|0)==0;d=ZJ(16)|0;c[d>>2]=1;c[d+8>>2]=c[a+2052>>2];g=f&1;c[d+4>>2]=g;f=a+2072|0;c[f>>2]=(c[f>>2]|0)+g;g=a+2068|0;c[d+12>>2]=c[g>>2];c[g>>2]=d;e=1;i=b;return e|0}function DK(a){a=a|0;var b=0;b=i;fK(a,52880,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a;i=b;return 0}function EK(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+1064|0;e=d|0;f=e|0;a[f]=0;hK(b,e)|0;fK(b,51792,(b=i,i=i+8|0,c[b>>2]=f,b)|0);i=b;i=d;return 0}function FK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+1064|0;d=b|0;e=d|0;gK(a,51128,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;g=d+1052|0;a:while(1){h=0;while(1){if((hK(a,d)|0)==0){j=9;break a}if((c[g>>2]|0)>(h|0)){break a}if((k$(e,132648)|0)==0){h=1}else{continue a}}}if((j|0)==9){k=1060;l=0;i=b;return 1}j=ZJ(1060)|0;if((j|0)==0){Ur(0,145312,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}m$(j|0,e|0,1056)|0;e=j+1056|0;c[e>>2]=0;c[4938812]=(c[4938812]|0)+1;f=a+2056|0;c[e>>2]=c[f>>2];c[f>>2]=j;k=1060;l=0;i=b;return 1}function GK(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;i=i+2096|0;e=d+1024|0;f=d+1032|0;g=f|0;if((zK(a,e,0,1)|0)==0){h=0;j=1060;k=0;i=d;return h|0}l=a+2052|0;m=c[l>>2]|0;c[f+1048>>2]=c[m+1052>>2];n=c[m+1028>>2]|0;c[f+1040>>2]=n;c[f+1044>>2]=n;c[f+1052>>2]=0;n=c[e>>2]|0;fe(g|0,148688,(m=i,i=i+8|0,c[m>>2]=(n|0)>-1?n:-n|0,m)|0)|0;i=m;c[f+1024>>2]=3;c[f+1028>>2]=12296;f=ZJ(1060)|0;if((f|0)==0){Ur(0,145312,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;return 0}m$(f|0,g|0,1056)|0;g=f+1056|0;c[g>>2]=0;c[4938812]=(c[4938812]|0)+1;n=a+2056|0;c[g>>2]=c[n>>2];c[n>>2]=f;if((c[e>>2]|0)>=0){h=1;j=1060;k=0;i=d;return h|0}e=c[l>>2]|0;l=c[e+1052>>2]|0;f=c[e+1028>>2]|0;e=ZJ(1060)|0;if((e|0)==0){Ur(0,145312,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;return 0}b[e>>1]=45;m$(e+2|0,d|0,1022)|0;c[e+1024>>2]=5;c[e+1028>>2]=30;c[e+1040>>2]=f;c[e+1044>>2]=f;c[e+1048>>2]=l;c[e+1052>>2]=0;l=e+1056|0;c[l>>2]=0;c[4938812]=(c[4938812]|0)+1;c[l>>2]=c[n>>2];c[n>>2]=e;h=1;j=1060;k=0;i=d;return h|0}function HK(a){a=a|0;var d=0,e=0,f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;d=i;i=i+2096|0;e=d+1024|0;f=d+1032|0;j=f|0;if((zK(a,0,e,0)|0)==0){k=0;l=1060;m=0;i=d;return k|0}n=a+2052|0;o=c[n>>2]|0;c[f+1048>>2]=c[o+1052>>2];p=c[o+1028>>2]|0;c[f+1040>>2]=p;c[f+1044>>2]=p;c[f+1052>>2]=0;q=+S(+(+g[e>>2]));fe(j|0,49608,(p=i,i=i+8|0,h[p>>3]=q,p)|0)|0;i=p;c[f+1024>>2]=3;c[f+1028>>2]=10248;f=ZJ(1060)|0;if((f|0)==0){Ur(0,145312,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;return 0}m$(f|0,j|0,1056)|0;j=f+1056|0;c[j>>2]=0;c[4938812]=(c[4938812]|0)+1;o=a+2056|0;c[j>>2]=c[o>>2];c[o>>2]=f;if(!(+g[e>>2]<0.0)){k=1;l=1060;m=0;i=d;return k|0}e=c[n>>2]|0;n=c[e+1052>>2]|0;f=c[e+1028>>2]|0;e=ZJ(1060)|0;if((e|0)==0){Ur(0,145312,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;return 0}b[e>>1]=45;m$(e+2|0,d|0,1022)|0;c[e+1024>>2]=5;c[e+1028>>2]=30;c[e+1040>>2]=f;c[e+1044>>2]=f;c[e+1048>>2]=n;c[e+1052>>2]=0;n=e+1056|0;c[n>>2]=0;c[4938812]=(c[4938812]|0)+1;c[n>>2]=c[o>>2];c[o>>2]=e;k=1;l=1060;m=0;i=d;return k|0}function IK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;i=i+1064|0;d=b|0;e=d|0;if((hK(a,d)|0)==0){fK(a,43104,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;g=0;h=1060;j=0;i=b;return g|0}if((c[d+1052>>2]|0)>0){k=ZJ(1060)|0;if((k|0)==0){Ur(0,145312,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}m$(k|0,e|0,1056)|0;l=k+1056|0;c[l>>2]=0;c[4938812]=(c[4938812]|0)+1;m=a+2056|0;c[l>>2]=c[m>>2];c[m>>2]=k;fK(a,185936,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;g=0;h=1060;j=0;i=b;return g|0}a:do{if((c[d+1024>>2]|0)==4){k=c[7604]|0;if((k|0)==0){break}else{n=0;o=k}while(1){k=n+1|0;if((k$(o,e)|0)==0){break}m=c[30416+(k<<3)>>2]|0;if((m|0)==0){break a}else{n=k;o=m}}g=jk[c[30420+(n<<3)>>2]&255](a)|0;h=1060;j=0;i=b;return g|0}}while(0);fK(a,185648,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;g=0;h=1060;j=0;i=b;return g|0}function JK(a){a=a|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;i=i+2096|0;e=d+1024|0;f=d+1032|0;h=f|0;if((AK(a,e,0,1)|0)==0){j=0;k=1060;l=0;i=d;return j|0}m=a+2052|0;n=c[m>>2]|0;c[f+1048>>2]=c[n+1052>>2];o=c[n+1028>>2]|0;c[f+1040>>2]=o;c[f+1044>>2]=o;c[f+1052>>2]=0;o=c[e>>2]|0;fe(h|0,148688,(n=i,i=i+8|0,c[n>>2]=(o|0)>-1?o:-o|0,n)|0)|0;i=n;c[f+1024>>2]=3;c[f+1028>>2]=12296;o=c[e>>2]|0;p=(o|0)>-1?o:-o|0;c[f+1032>>2]=p;g[f+1036>>2]=+(p>>>0>>>0);p=ZJ(1060)|0;if((p|0)==0){Ur(0,145312,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;return 0}m$(p|0,h|0,1056)|0;h=p+1056|0;c[h>>2]=0;c[4938812]=(c[4938812]|0)+1;f=a+2056|0;c[h>>2]=c[f>>2];c[f>>2]=p;if((c[e>>2]|0)>=0){j=1;k=1060;l=0;i=d;return j|0}e=c[m>>2]|0;m=c[e+1052>>2]|0;p=c[e+1028>>2]|0;e=ZJ(1060)|0;if((e|0)==0){Ur(0,145312,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;return 0}b[e>>1]=45;m$(e+2|0,d|0,1022)|0;c[e+1024>>2]=5;c[e+1028>>2]=30;c[e+1040>>2]=p;c[e+1044>>2]=p;c[e+1048>>2]=m;c[e+1052>>2]=0;m=e+1056|0;c[m>>2]=0;c[4938812]=(c[4938812]|0)+1;c[m>>2]=c[f>>2];c[f>>2]=e;j=1;k=1060;l=0;i=d;return j|0}function KK(a){a=a|0;var d=0,e=0,f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;d=i;i=i+2096|0;e=d+1024|0;f=d+1032|0;j=f|0;if((AK(a,0,e,0)|0)==0){k=0;l=1060;m=0;i=d;return k|0}n=a+2052|0;o=c[n>>2]|0;c[f+1048>>2]=c[o+1052>>2];p=c[o+1028>>2]|0;c[f+1040>>2]=p;c[f+1044>>2]=p;c[f+1052>>2]=0;q=+S(+(+g[e>>2]));fe(j|0,49608,(p=i,i=i+8|0,h[p>>3]=q,p)|0)|0;i=p;c[f+1024>>2]=3;c[f+1028>>2]=10248;q=+S(+(+g[e>>2]));g[f+1036>>2]=q;c[f+1032>>2]=~~q;f=ZJ(1060)|0;if((f|0)==0){Ur(0,145312,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;return 0}m$(f|0,j|0,1056)|0;j=f+1056|0;c[j>>2]=0;c[4938812]=(c[4938812]|0)+1;o=a+2056|0;c[j>>2]=c[o>>2];c[o>>2]=f;if(!(+g[e>>2]<0.0)){k=1;l=1060;m=0;i=d;return k|0}e=c[n>>2]|0;n=c[e+1052>>2]|0;f=c[e+1028>>2]|0;e=ZJ(1060)|0;if((e|0)==0){Ur(0,145312,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;return 0}b[e>>1]=45;m$(e+2|0,d|0,1022)|0;c[e+1024>>2]=5;c[e+1028>>2]=30;c[e+1040>>2]=f;c[e+1044>>2]=f;c[e+1048>>2]=n;c[e+1052>>2]=0;n=e+1056|0;c[n>>2]=0;c[4938812]=(c[4938812]|0)+1;c[n>>2]=c[o>>2];c[o>>2]=e;k=1;l=1060;m=0;i=d;return k|0}function LK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;i=i+1064|0;d=b|0;e=d|0;if((hK(a,d)|0)==0){fK(a,184472,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;g=0;h=1060;j=0;i=b;return g|0}if((c[d+1052>>2]|0)>0){k=ZJ(1060)|0;if((k|0)==0){Ur(0,145312,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}m$(k|0,e|0,1056)|0;l=k+1056|0;c[l>>2]=0;c[4938812]=(c[4938812]|0)+1;m=a+2056|0;c[l>>2]=c[m>>2];c[m>>2]=k;fK(a,184040,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;g=0;h=1060;j=0;i=b;return g|0}a:do{if((c[d+1024>>2]|0)==4){k=c[7562]|0;if((k|0)==0){break}else{n=0;o=k}while(1){k=n+1|0;if((k$(o,e)|0)==0){break}m=c[30248+(k<<3)>>2]|0;if((m|0)==0){break a}else{n=k;o=m}}g=jk[c[30252+(n<<3)>>2]&255](a)|0;h=1060;j=0;i=b;return g|0}}while(0);n=ZJ(1060)|0;if((n|0)==0){Ur(0,145312,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}m$(n|0,e|0,1056)|0;o=n+1056|0;c[o>>2]=0;c[4938812]=(c[4938812]|0)+1;d=a+2056|0;c[o>>2]=c[d>>2];c[d>>2]=n;fK(a,185648,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;g=0;h=1060;j=0;i=b;return g|0}function MK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+1080|0;f=e|0;g=e+8|0;h=e+16|0;if((hK(b,d)|0)==0){j=0;i=e;return j|0}k=d+1024|0;l=d|0;m=h|0;n=h+1024|0;o=h+1|0;p=b+2056|0;q=b+2072|0;r=b+2064|0;a:while(1){s=c[k>>2]|0;do{if((s|0)==1){t=8}else if((s|0)==5){u=a[l]|0;if((u<<24>>24|0)==35){if((IK(b)|0)==0){j=0;t=28;break a}else{break}}else if((u<<24>>24|0)==36){if((LK(b)|0)==0){j=0;t=28;break a}else{break}}else{if((s|0)==1){t=8;break}else{t=16;break}}}else{t=16}}while(0);do{if((t|0)==8){t=0;if((MK(b,h)|0)==0){t=16;break}if((c[n>>2]|0)==1){a[d+((o$(l|0)|0)-1)|0]=0;s=o$(l|0)|0;if((s+1+(o$(o|0)|0)|0)>>>0>1023>>>0){t=11;break a}p$(l|0,o|0)|0;t=16;break}else{s=ZJ(1060)|0;if((s|0)==0){t=14;break a}m$(s|0,m|0,1056)|0;u=s+1056|0;c[u>>2]=0;c[4938812]=(c[4938812]|0)+1;c[u>>2]=c[p>>2];c[p>>2]=s;t=16;break}}}while(0);do{if((t|0)==16){t=0;if((c[q>>2]|0)!=0){break}if((c[k>>2]|0)!=4){t=27;break a}s=c[r>>2]|0;u=a[l]|0;if(u<<24>>24==0){v=0}else{w=0;x=0;y=u;while(1){u=(da(x+119|0,y<<24>>24)|0)+w|0;z=x+1|0;A=a[d+z|0]|0;if(A<<24>>24==0){v=u;break}else{w=u;x=z;y=A}}}y=c[s+(((v>>>10^v^v>>>20)&1023)<<2)>>2]|0;if((y|0)==0){t=27;break a}else{B=y}while(1){if((k$(c[B>>2]|0,l)|0)==0){break}y=c[B+28>>2]|0;if((y|0)==0){t=27;break a}else{B=y}}s=(kK(b,d,B,f,g)|0)==0;y=c[f>>2]|0;if(s|(y|0)==0){j=0;t=28;break a}s=c[g>>2]|0;if((s|0)==0){j=0;t=28;break a}c[s+1056>>2]=c[p>>2];c[p>>2]=y;}}while(0);if((hK(b,d)|0)==0){j=0;t=28;break}}if((t|0)==11){fK(b,183576,(C=i,i=i+8|0,c[C>>2]=1024,C)|0);i=C;j=0;i=e;return j|0}else if((t|0)==14){Ur(0,145312,(C=i,i=i+1|0,i=i+7&-8,c[C>>2]=0,C)|0);i=C;return 0}else if((t|0)==27){m$(b+2076|0,l|0,1060)|0;j=1;i=e;return j|0}else if((t|0)==28){i=e;return j|0}return 0}function NK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+1064|0;e=d|0;f=e|0;do{if((MK(a,e)|0)==0){fK(a,183248,(g=i,i=i+8|0,c[g>>2]=b,g)|0);i=g;h=0}else{if((k$(f,b)|0)==0){h=1;break}fK(a,182816,(g=i,i=i+16|0,c[g>>2]=b,c[g+8>>2]=f,g)|0);i=g;h=0}}while(0);i=d;return h|0}function OK(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+1024|0;h=g|0;j=h|0;if((MK(b,f)|0)==0){fK(b,182512,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=0;m=1024;n=0;i=g;return l|0}if((c[f+1024>>2]|0)!=(d|0)){a[j]=0;switch(d|0){case 1:{a[j]=a[182304]|0;a[j+1|0]=a[182305]|0;a[j+2|0]=a[182306]|0;a[j+3|0]=a[182307]|0;a[j+4|0]=a[182308]|0;a[j+5|0]=a[182309]|0;a[j+6|0]=a[182310]|0;break};case 3:{a[j]=a[181736]|0;a[j+1|0]=a[181737]|0;a[j+2|0]=a[181738]|0;a[j+3|0]=a[181739]|0;a[j+4|0]=a[181740]|0;a[j+5|0]=a[181741]|0;a[j+6|0]=a[181742]|0;break};case 4:{a[j]=a[181312]|0;a[j+1|0]=a[181313]|0;a[j+2|0]=a[181314]|0;a[j+3|0]=a[181315]|0;a[j+4|0]=a[181316]|0;break};case 2:{o=h;c[o>>2]=1702127980;c[o+4>>2]=7102834;break};case 5:{m$(j|0,180712,12)|0;break};default:{}}fK(b,180304,(k=i,i=i+16|0,c[k>>2]=j,c[k+8>>2]=f,k)|0);i=k;l=0;m=1024;n=0;i=g;return l|0}if((d|0)==5){if((c[f+1028>>2]|0)==(e|0)){l=1;m=1024;n=0;i=g;return l|0}fK(b,176056,(k=i,i=i+8|0,c[k>>2]=f,k)|0);i=k;l=0;m=1024;n=0;i=g;return l|0}else if((d|0)==3){if((c[f+1028>>2]&e|0)==(e|0)){l=1;m=1024;n=0;i=g;return l|0}if((e&8|0)!=0){d=h;c[d>>2]=1768121700;c[d+4>>2]=7102829}if((e&256|0)!=0){c[h>>2]=7890280}if((e&512|0)!=0){a[j]=a[178808]|0;a[j+1|0]=a[178809]|0;a[j+2|0]=a[178810]|0;a[j+3|0]=a[178811]|0;a[j+4|0]=a[178812]|0;a[j+5|0]=a[178813]|0}if((e&1024|0)!=0){a[j]=a[178416]|0;a[j+1|0]=a[178417]|0;a[j+2|0]=a[178418]|0;a[j+3|0]=a[178419]|0;a[j+4|0]=a[178420]|0;a[j+5|0]=a[178421]|0;a[j+6|0]=a[178422]|0}if((e&8192|0)!=0){d=h+(o$(j|0)|0)|0;a[d]=a[177960]|0;a[d+1|0]=a[177961]|0;a[d+2|0]=a[177962]|0;a[d+3|0]=a[177963]|0;a[d+4|0]=a[177964]|0;a[d+5|0]=a[177965]|0}if((e&16384|0)!=0){m$(h+(o$(j|0)|0)|0,177496,10)|0}if((e&2048|0)!=0){d=h+(o$(j|0)|0)|0;a[d]=a[177072]|0;a[d+1|0]=a[177073]|0;a[d+2|0]=a[177074]|0;a[d+3|0]=a[177075]|0;a[d+4|0]=a[177076]|0;a[d+5|0]=a[177077]|0;a[d+6|0]=a[177078]|0}if((e&4096|0)!=0){m$(h+(o$(j|0)|0)|0,176632,9)|0}fK(b,182816,(k=i,i=i+16|0,c[k>>2]=j,c[k+8>>2]=f,k)|0);i=k;l=0;m=1024;n=0;i=g;return l|0}else{l=1;m=1024;n=0;i=g;return l|0}return 0}function PK(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if((MK(a,b)|0)!=0){e=1;i=d;return e|0}fK(a,182512,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a;e=0;i=d;return e|0}function QK(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=ZJ(1060)|0;if((d|0)==0){Ur(0,145312,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}else{m$(d|0,a+2076|0,1056)|0;e=d+1056|0;c[e>>2]=0;c[4938812]=(c[4938812]|0)+1;f=a+2056|0;c[e>>2]=c[f>>2];c[f>>2]=d;i=b;return}}function RK(b){b=b|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;d=kL(b)|0;if((d|0)==0){e=0;return e|0}c[d+2136>>2]=0;f=ZJ(3136)|0;g=f;n$(f|0,0,3136)|0;q$(f|0,b|0,64)|0;c[f+2052>>2]=d;c[f+2056>>2]=0;c[f+2060>>2]=0;c[f+2068>>2]=0;c[f+2072>>2]=0;d=f+2064|0;c[d>>2]=_J(4096)|0;f=c[5120102]|0;if((f|0)==0){e=g;return e|0}else{h=f}while(1){f=sK(0,h)|0;b=c[d>>2]|0;i=c[f>>2]|0;j=a[i]|0;if(j<<24>>24==0){k=0}else{l=0;m=0;n=j;while(1){j=(da(m+119|0,n<<24>>24)|0)+l|0;o=m+1|0;p=a[i+o|0]|0;if(p<<24>>24==0){k=j;break}else{l=j;m=o;n=p}}}n=b+(((k>>>10^k^k>>>20)&1023)<<2)|0;c[f+28>>2]=c[n>>2];c[n>>2]=f;n=c[h+24>>2]|0;if((n|0)==0){e=g;break}else{h=n}}return e|0}function SK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;b=a+2052|0;d=c[b>>2]|0;if((d|0)!=0){e=d;do{c[b>>2]=c[e+2136>>2];mL(e);e=c[b>>2]|0;}while((e|0)!=0)}e=a+2056|0;b=c[e>>2]|0;if((b|0)!=0){d=b;do{c[e>>2]=c[d+1056>>2];bK(d|0);c[4938812]=(c[4938812]|0)-1;d=c[e>>2]|0;}while((d|0)!=0)}d=a+2064|0;e=0;b=c[d>>2]|0;while(1){f=b+(e<<2)|0;g=c[f>>2]|0;if((g|0)==0){h=b}else{i=f;f=g;while(1){c[i>>2]=c[f+28>>2];g=c[f+16>>2]|0;if((g|0)!=0){j=g;while(1){g=c[j+1056>>2]|0;bK(j|0);c[4938812]=(c[4938812]|0)-1;if((g|0)==0){break}else{j=g}}}j=c[f+20>>2]|0;if((j|0)!=0){g=j;while(1){j=c[g+1056>>2]|0;bK(g|0);c[4938812]=(c[4938812]|0)-1;if((j|0)==0){break}else{g=j}}}bK(c[f>>2]|0);bK(f);g=c[d>>2]|0;j=g+(e<<2)|0;k=c[j>>2]|0;if((k|0)==0){h=g;break}else{i=j;f=k}}}f=e+1|0;if((f|0)<1024){e=f;b=h}else{break}}b=a+2068|0;e=c[b>>2]|0;if((e|0)==0){l=h}else{h=e;do{c[b>>2]=c[h+12>>2];bK(h);h=c[b>>2]|0;}while((h|0)!=0);l=c[d>>2]|0}if((l|0)==0){m=a|0;bK(m);return}bK(l);m=a|0;bK(m);return}function TK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=1;while(1){d=2156224+(b<<2)|0;e=b+1|0;if((c[d>>2]|0)==0){f=4;break}if((e|0)<64){b=e}else{g=0;break}}do{if((f|0)==4){if((b|0)>63){g=0;break}nL(28378560);e=RK(a)|0;if((e|0)==0){g=0;break}c[d>>2]=e;g=b}}while(0);return g|0}function UK(a){a=a|0;var b=0,d=0,e=0;do{if((a-1|0)>>>0>62>>>0){b=0}else{d=2156224+(a<<2)|0;e=c[d>>2]|0;if((e|0)==0){b=0;break}SK(e);c[d>>2]=0;b=1}}while(0);return b|0}function VK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0;d=i;i=i+1064|0;e=d|0;f=e|0;do{if((a-1|0)>>>0>62>>>0){h=0}else{j=c[2156224+(a<<2)>>2]|0;if((j|0)==0){h=0;break}k=MK(j,e)|0;j=b+16|0;r$(j|0,f|0)|0;l=c[e+1024>>2]|0;c[b>>2]=l;c[b+4>>2]=c[e+1028>>2];c[b+8>>2]=c[e+1032>>2];g[b+12>>2]=+g[e+1036>>2];if((l|0)!=1){h=k;break}gL(j);h=k}}while(0);i=d;return h|0}function WK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((a-1|0)>>>0>62>>>0){e=0;return e|0}f=2156224+(a<<2)|0;a=c[f>>2]|0;if((a|0)==0){e=0;return e|0}r$(b|0,a|0)|0;a=c[(c[f>>2]|0)+2052>>2]|0;if((a|0)==0){g=0}else{g=c[a+1052>>2]|0}c[d>>2]=g;e=1;return e|0}function XK(a){a=a|0;nL(a);return}function YK(){var a=0,b=0,d=0,e=0;a=i;b=1;do{d=c[2156224+(b<<2)>>2]|0;if((d|0)!=0){Tk[c[7092490]&255](3,175272,(e=i,i=i+8|0,c[e>>2]=c[d+2052>>2],e)|0);i=e}b=b+1|0;}while((b|0)<64);i=a;return}function ZK(b,d){b=b|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;e=b+1072|0;b=c[e>>2]|0;if((b|0)==0){f=ZJ(1024)|0;c[e>>2]=f;g=f}else{g=b}n$(g|0,0,1024)|0;g=d|0;b=c[g>>2]|0;if((b|0)==0){return}else{h=0;i=g;j=b}do{b=i;g=c[(c[e>>2]|0)+(a[j]<<2)>>2]|0;do{if((g|0)==0){c[d+(h*12|0)+8>>2]=0;k=14}else{f=o$(j|0)|0;l=0;m=g;while(1){if((o$(c[m>>2]|0)|0)>>>0>>0){break}n=c[m+8>>2]|0;if((n|0)==0){k=12;break}else{l=m;m=n}}if((k|0)==12){k=0;c[d+(h*12|0)+8>>2]=0;if((m|0)==0){k=14;break}c[m+8>>2]=b;break}c[d+(h*12|0)+8>>2]=m;if((l|0)==0){c[(c[e>>2]|0)+(a[c[i>>2]|0]<<2)>>2]=b;break}else{c[l+8>>2]=b;break}}}while(0);if((k|0)==14){k=0;c[(c[e>>2]|0)+(a[c[i>>2]|0]<<2)>>2]=b}h=h+1|0;i=d+(h*12|0)|0;j=c[i>>2]|0;}while((j|0)!=0);return}function _K(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+1040|0;f=e+1024|0;g=e|0;if((c[a+1064>>2]&1|0)!=0){h=1024;j=0;i=e;return}k=f;c[k>>2]=d;c[k+4>>2]=0;Xe(g|0,1024,b|0,f|0)|0;f=c[a+1052>>2]|0;Tk[c[7092490]&255](3,107960,(b=i,i=i+24|0,c[b>>2]=a,c[b+8>>2]=f,c[b+16>>2]=g,b)|0);i=b;h=1024;j=0;i=e;return}function $K(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+1040|0;f=e+1024|0;g=e|0;if((c[a+1064>>2]&2|0)!=0){h=1024;j=0;i=e;return}k=f;c[k>>2]=d;c[k+4>>2]=0;Xe(g|0,1024,b|0,f|0)|0;f=c[a+1052>>2]|0;Tk[c[7092490]&255](2,107960,(b=i,i=i+24|0,c[b>>2]=a,c[b+8>>2]=f,c[b+16>>2]=g,b)|0);i=b;h=1024;j=0;i=e;return}function aL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;f=b+1028|0;g=c[f>>2]|0;h=g+1|0;c[f>>2]=h;j=a[h]|0;a:do{switch(j<<24>>24|0){case 120:{k=0;l=g+2|0;b:while(1){c[f>>2]=l;m=a[l]|0;n=m<<24>>24;do{if((m-48&255)>>>0<10>>>0){o=n-48|0}else{if((m-65&255)>>>0<26>>>0){o=n-55|0;break}if(!((m-97&255)>>>0<26>>>0)){break b}o=n-87|0}}while(0);k=o+(k<<4)|0;l=l+1|0}c[f>>2]=l-1;if((k|0)<=255){p=k&255;break a}$K(b,107064,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;p=-1;break};case 39:{p=39;break};case 114:{p=13;break};case 97:{p=7;break};case 34:{p=34;break};case 92:{p=92;break};case 110:{p=10;break};case 118:{p=11;break};case 98:{p=8;break};case 102:{p=12;break};case 63:{p=63;break};case 116:{p=9;break};default:{if((j-48&255)>>>0>9>>>0){_K(b,106032,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;n=c[f>>2]|0;r=n;s=a[n]|0}else{r=h;s=j}if((s-48&255)>>>0<10>>>0){t=0;u=r;v=s}else{c[f>>2]=r-1;p=0;break a}while(1){w=(t*10|0)-48+(v<<24>>24)|0;n=u+1|0;c[f>>2]=n;m=a[n]|0;if((m-48&255)>>>0<10>>>0){t=w;u=n;v=m}else{break}}c[f>>2]=u;if((w|0)<=255){p=w&255;break a}$K(b,107064,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;p=-1}}}while(0);c[f>>2]=(c[f>>2]|0)+1;a[d]=p;i=e;return 1}function bL(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;f=i;c[d+1024>>2]=(e|0)==34?1:2;g=b+1028|0;h=c[g>>2]|0;c[g>>2]=h+1;j=d|0;a[j]=a[h]|0;h=b+1064|0;k=b+1052|0;l=1;a:while(1){m=c[g>>2]|0;while(1){n=a[m]|0;if(n<<24>>24==92){if((c[h>>2]&8|0)==0){o=6;break}}if((n<<24>>24|0)!=(e|0)){o=30;break}p=m+1|0;c[g>>2]=p;if((c[h>>2]&4|0)!=0){break a}q=c[k>>2]|0;r=p;s=q;while(1){t=a[r]|0;if(t<<24>>24<33){if((t<<24>>24|0)==0){o=26;break a}else if((t<<24>>24|0)==10){u=s+1|0;c[k>>2]=u;v=u}else{v=s}u=r+1|0;c[g>>2]=u;r=u;s=v;continue}if(!(t<<24>>24==47)){break}u=r+1|0;w=a[u]|0;if((w<<24>>24|0)==47){c[g>>2]=u;x=u;while(1){y=x+1|0;c[g>>2]=y;z=a[y]|0;if((z<<24>>24|0)==0){o=26;break a}else if((z<<24>>24|0)==10){break}else{x=y}}y=s+1|0;c[k>>2]=y;z=x+2|0;c[g>>2]=z;if((a[z]|0)==0){o=26;break a}else{r=z;s=y;continue}}else if((w<<24>>24|0)!=42){break}c[g>>2]=u;y=u;z=s;while(1){A=y+1|0;c[g>>2]=A;B=a[A]|0;if((B<<24>>24|0)==0){o=26;break a}else if((B<<24>>24|0)==10){C=z+1|0;c[k>>2]=C;D=a[A]|0;E=C}else{D=B;E=z}if(!(D<<24>>24==42)){y=A;z=E;continue}F=y+2|0;if((a[F]|0)==47){break}else{y=A;z=E}}c[g>>2]=F;if((a[F]|0)==0){o=26;break a}z=y+3|0;c[g>>2]=z;if((a[z]|0)==0){o=26;break a}else{r=z;s=E}}if((t<<24>>24|0)!=(e|0)){o=28;break a}s=r+1|0;c[g>>2]=s;m=s}if((o|0)==6){o=0;aL(b,d+l|0)|0}else if((o|0)==30){o=0;if((n<<24>>24|0)==0){o=31;break}else if((n<<24>>24|0)==10){o=32;break}c[g>>2]=m+1;a[d+l|0]=a[m]|0}if((l|0)>1020){o=3;break}else{l=l+1|0}}if((o|0)==3){_K(b,105192,(G=i,i=i+8|0,c[G>>2]=1024,G)|0);i=G;H=0;i=f;return H|0}else if((o|0)==26){c[g>>2]=p;c[k>>2]=q}else if((o|0)==28){c[g>>2]=p;c[k>>2]=q}else if((o|0)==31){a[d+l|0]=0;_K(b,104256,(G=i,i=i+1|0,i=i+7&-8,c[G>>2]=0,G)|0);i=G;H=0;i=f;return H|0}else if((o|0)==32){a[d+l|0]=0;_K(b,103320,(G=i,i=i+8|0,c[G>>2]=j,G)|0);i=G;H=0;i=f;return H|0}G=l+1|0;a[d+l|0]=e;a[d+G|0]=0;c[d+1028>>2]=G;H=1;i=f;return H|0}function cL(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0.0;c[e>>2]=0;g[f>>2]=0.0;if((d&2048|0)!=0){h=0;i=b;j=0.0;a:while(1){k=a[i]|0;do{if((k<<24>>24|0)==0){break a}else if((k<<24>>24|0)==46){if((h|0)!=0){l=34;break a}m=i+1|0;n=10;l=6}else{if((h|0)!=0){m=i;n=h;l=6;break}o=j*10.0+ +((k<<24>>24)-48|0);g[f>>2]=o;p=0;q=i;r=o}}while(0);if((l|0)==6){l=0;o=j+ +((a[m]|0)-48|0)/+(n>>>0>>>0);g[f>>2]=o;p=n*10|0;q=m;r=o}h=p;i=q+1|0;j=r}if((l|0)==34){return}c[e>>2]=~~j;return}if((d&8|0)!=0){l=a[b]|0;if(l<<24>>24==0){s=0.0}else{q=b;i=l;l=0;do{q=q+1|0;l=(i<<24>>24)-48+(l*10|0)|0;c[e>>2]=l;i=a[q]|0;}while(!(i<<24>>24==0));s=+(l>>>0>>>0)}g[f>>2]=s;return}if((d&256|0)!=0){l=b+2|0;if((a[l]|0)==0){t=0}else{i=l;l=0;while(1){q=l<<4;c[e>>2]=q;p=a[i]|0;h=p<<24>>24;do{if((p-97&255)>>>0<6>>>0){m=q-87+h|0;c[e>>2]=m;u=m}else{if((p-65&255)>>>0<6>>>0){m=q-55+h|0;c[e>>2]=m;u=m;break}else{m=q-48+h|0;c[e>>2]=m;u=m;break}}}while(0);h=i+1|0;if((a[h]|0)==0){t=u;break}else{i=h;l=u}}}g[f>>2]=+(t>>>0>>>0);return}if((d&512|0)!=0){t=b+1|0;u=a[t]|0;if(u<<24>>24==0){v=0.0}else{l=t;t=u;u=0;do{u=(t<<24>>24)-48+(u<<3)|0;c[e>>2]=u;l=l+1|0;t=a[l]|0;}while(!(t<<24>>24==0));v=+(u>>>0>>>0)}g[f>>2]=v;return}if((d&1024|0)==0){return}d=b+2|0;b=a[d]|0;if(b<<24>>24==0){w=0.0}else{u=d;d=b;b=0;do{u=u+1|0;b=(d<<24>>24)-48+(b<<1)|0;c[e>>2]=b;d=a[u]|0;}while(!(d<<24>>24==0));w=+(b>>>0>>>0)}g[f>>2]=w;return}function dL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;c[d+1024>>2]=3;f=b+1028|0;g=c[f>>2]|0;h=a[g]|0;j=h<<24>>24==48;do{if(j){k=g+1|0;l=a[k]|0;if((l<<24>>24|0)==120|(l<<24>>24|0)==88){c[f>>2]=k;a[d|0]=a[g]|0;k=c[f>>2]|0;c[f>>2]=k+1;a[d+1|0]=a[k]|0;k=c[f>>2]|0;l=a[k]|0;a:do{if((l-48&255)>>>0<10>>>0|(l-97&255)>>>0<6>>>0|l<<24>>24==65){m=2;n=k;while(1){c[f>>2]=n+1;a[d+m|0]=a[n]|0;o=m+1|0;if((m|0)>1022){break}p=c[f>>2]|0;q=a[p]|0;if((q-48&255)>>>0<10>>>0|(q-97&255)>>>0<6>>>0|q<<24>>24==65){m=o;n=p}else{r=o;s=p;break a}}_K(b,101624,(t=i,i=i+8|0,c[t>>2]=1024,t)|0);i=t;u=0;i=e;return u|0}else{r=2;s=k}}while(0);k=d+1028|0;l=c[k>>2]|256;c[k>>2]=l;v=r;w=l;x=s;break}l=g+1|0;k=a[l]|0;if(!((k<<24>>24|0)==98|(k<<24>>24|0)==66)){y=14;break}c[f>>2]=l;a[d|0]=a[g]|0;l=c[f>>2]|0;c[f>>2]=l+1;a[d+1|0]=a[l]|0;l=c[f>>2]|0;b:do{if(((a[l]|0)-48&255)>>>0<2>>>0){k=2;n=l;while(1){c[f>>2]=n+1;a[d+k|0]=a[n]|0;m=k+1|0;if((k|0)>1022){break}p=c[f>>2]|0;if(((a[p]|0)-48&255)>>>0<2>>>0){k=m;n=p}else{z=m;A=p;break b}}_K(b,100704,(t=i,i=i+8|0,c[t>>2]=1024,t)|0);i=t;u=0;i=e;return u|0}else{z=2;A=l}}while(0);l=d+1028|0;n=c[l>>2]|1024;c[l>>2]=n;v=z;w=n;x=A}else{y=14}}while(0);do{if((y|0)==14){A=0;z=j&1;s=0;r=g;n=h;while(1){if((n<<24>>24|0)==46){B=1;C=z}else if((n<<24>>24|0)==56|(n<<24>>24|0)==57){B=A;C=0}else{if((n-48&255)>>>0>9>>>0){y=21;break}else{B=A;C=z}}c[f>>2]=r+1;a[d+s|0]=a[r]|0;if((s|0)>1021){y=20;break}l=c[f>>2]|0;A=B;z=C;s=s+1|0;r=l;n=a[l]|0}if((y|0)==20){_K(b,99608,(t=i,i=i+8|0,c[t>>2]=1024,t)|0);i=t;u=0;i=e;return u|0}else if((y|0)==21){n=d+1028|0;l=c[n>>2]|((z|0)==0?8:512);c[n>>2]=l;if((A|0)==0){v=s;w=l;x=r;break}k=l|2048;c[n>>2]=k;v=s;w=k;x=r;break}}}while(0);t=d+1028|0;b=a[x]|0;do{if((b<<24>>24|0)==117|(b<<24>>24|0)==85){y=27}else if((b<<24>>24|0)==108|(b<<24>>24|0)==76){if((w&8192|0)==0){C=x+1|0;c[f>>2]=C;B=w|8192;c[t>>2]=B;D=B;E=C;break}else{if(b<<24>>24==85){y=27;break}else{D=w;E=x;break}}}else{D=w;E=x}}while(0);do{if((y|0)==27){if((w&18432|0)!=0){D=w;E=x;break}b=x+1|0;c[f>>2]=b;C=w|16384;c[t>>2]=C;D=C;E=b}}while(0);w=a[E]|0;do{if((w<<24>>24|0)==108|(w<<24>>24|0)==76){if((D&8192|0)==0){c[f>>2]=E+1;c[t>>2]=D|8192;break}else{if(w<<24>>24==85){y=34;break}else{break}}}else if((w<<24>>24|0)==117|(w<<24>>24|0)==85){y=34}}while(0);do{if((y|0)==34){if((D&18432|0)!=0){break}c[f>>2]=E+1;c[t>>2]=D|16384}}while(0);a[d+v|0]=0;cL(d|0,c[t>>2]|0,d+1032|0,d+1036|0);d=c[t>>2]|0;if((d&2048|0)!=0){u=1;i=e;return u|0}c[t>>2]=d|4096;u=1;i=e;return u|0}function eL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;f=b+1060|0;if((c[f>>2]|0)!=0){c[f>>2]=0;m$(d|0,b+1076|0,1060)|0;g=1;i=e;return g|0}f=b+1028|0;c[b+1036>>2]=c[f>>2];h=b+1052|0;j=b+1056|0;c[j>>2]=c[h>>2];k=d|0;n$(k|0,0,1060)|0;l=c[f>>2]|0;c[b+1040>>2]=l;c[d+1040>>2]=l;l=c[f>>2]|0;a:while(1){m=a[l]|0;if(m<<24>>24<33){if((m<<24>>24|0)==0){g=0;n=49;break}else if((m<<24>>24|0)==10){c[h>>2]=(c[h>>2]|0)+1}o=l+1|0;c[f>>2]=o;l=o;continue}if(!(m<<24>>24==47)){n=20;break}m=l+1|0;o=a[m]|0;if((o<<24>>24|0)==47){c[f>>2]=m;p=m;while(1){q=p+1|0;c[f>>2]=q;r=a[q]|0;if((r<<24>>24|0)==10){break}else if((r<<24>>24|0)==0){g=0;n=49;break a}else{p=q}}c[h>>2]=(c[h>>2]|0)+1;q=p+2|0;c[f>>2]=q;if((a[q]|0)==0){g=0;n=49;break}else{l=q;continue}}else if((o<<24>>24|0)!=42){n=20;break}c[f>>2]=m;q=m;while(1){r=q+1|0;c[f>>2]=r;s=a[r]|0;if((s<<24>>24|0)==10){c[h>>2]=(c[h>>2]|0)+1;t=a[r]|0}else if((s<<24>>24|0)==0){g=0;n=49;break a}else{t=s}if(!(t<<24>>24==42)){q=r;continue}u=q+2|0;if((a[u]|0)==47){break}else{q=r}}c[f>>2]=u;if((a[u]|0)==0){g=0;n=49;break}m=q+3|0;c[f>>2]=m;if((a[m]|0)==0){g=0;n=49;break}else{l=m}}if((n|0)==20){c[b+1044>>2]=l;c[d+1044>>2]=l;c[d+1048>>2]=c[h>>2];c[d+1052>>2]=(c[h>>2]|0)-(c[j>>2]|0);j=c[f>>2]|0;h=a[j]|0;b:do{if((h<<24>>24|0)==34){if((bL(b,d,34)|0)==0){g=0}else{break}i=e;return g|0}else if((h<<24>>24|0)==39){if((bL(b,d,39)|0)==0){g=0}else{break}i=e;return g|0}else{do{if(!((h-48&255)>>>0<10>>>0)){if(h<<24>>24==46){if(((a[j+1|0]|0)-48&255)>>>0<10>>>0){break}}if((c[b+1064>>2]&16|0)!=0){c:do{if(h<<24>>24>32&h<<24>>24!=59){l=0;u=j;while(1){if((l|0)>1023){break}c[f>>2]=u+1;t=l+1|0;a[d+l|0]=a[u]|0;m=c[f>>2]|0;o=a[m]|0;if(o<<24>>24>32&o<<24>>24!=59){l=t;u=m}else{v=t;break c}}_K(b,62704,(w=i,i=i+8|0,c[w>>2]=1024,w)|0);i=w;g=0;i=e;return g|0}else{v=0}}while(0);a[d+v|0]=0;m$(b+1076|0,k|0,1060)|0;g=1;i=e;return g|0}do{if(!((h-97&255)>>>0<26>>>0)){if((h-65&255)>>>0<26>>>0|h<<24>>24==95){break}u=c[(c[b+1072>>2]|0)+(h<<24>>24<<2)>>2]|0;d:do{if((u|0)!=0){l=c[b+1032>>2]|0;t=u;while(1){x=c[t>>2]|0;y=o$(x|0)|0;if(!((j+y|0)>>>0>l>>>0)){if((l$(j,x,y)|0)==0){break}}m=c[t+8>>2]|0;if((m|0)==0){break d}else{t=m}}q$(k|0,x|0,1024)|0;c[f>>2]=(c[f>>2]|0)+y;c[d+1024>>2]=5;c[d+1028>>2]=c[t+4>>2];break b}}while(0);_K(b,61848,(w=i,i=i+1|0,i=i+7&-8,c[w>>2]=0,w)|0);i=w;g=0;i=e;return g|0}}while(0);c[d+1024>>2]=4;c[f>>2]=j+1;a[k]=a[j]|0;u=1;while(1){l=c[f>>2]|0;m=a[l]|0;if(!((m-97&255)>>>0<26>>>0|(m-65&255)>>>0<26>>>0)){if(!((m-48&255)>>>0<10>>>0|m<<24>>24==95)){n=40;break}}c[f>>2]=l+1;a[d+u|0]=a[l]|0;if((u|0)>1022){break}else{u=u+1|0}}if((n|0)==40){a[d+u|0]=0;c[d+1028>>2]=u;break b}_K(b,102544,(w=i,i=i+8|0,c[w>>2]=1024,w)|0);i=w;g=0;i=e;return g|0}}while(0);if((dL(b,d)|0)==0){g=0}else{break}i=e;return g|0}}while(0);m$(b+1076|0,k|0,1060)|0;g=1;i=e;return g|0}else if((n|0)==49){i=e;return g|0}return 0}function fL(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+1024|0;h=g|0;j=h|0;if((eL(b,f)|0)==0){_K(b,59704,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=0;m=1024;n=0;i=g;return l|0}if((c[f+1024>>2]|0)!=(d|0)){switch(d|0){case 2:{o=h;c[o>>2]=1702127980;c[o+4>>2]=7102834;break};case 5:{m$(j|0,56e3,12)|0;break};case 3:{a[j]=a[57624]|0;a[j+1|0]=a[57625]|0;a[j+2|0]=a[57626]|0;a[j+3|0]=a[57627]|0;a[j+4|0]=a[57628]|0;a[j+5|0]=a[57629]|0;a[j+6|0]=a[57630]|0;break};case 4:{a[j]=a[56728]|0;a[j+1|0]=a[56729]|0;a[j+2|0]=a[56730]|0;a[j+3|0]=a[56731]|0;a[j+4|0]=a[56732]|0;break};case 1:{a[j]=a[59136]|0;a[j+1|0]=a[59137]|0;a[j+2|0]=a[59138]|0;a[j+3|0]=a[59139]|0;a[j+4|0]=a[59140]|0;a[j+5|0]=a[59141]|0;a[j+6|0]=a[59142]|0;break};default:{}}_K(b,55008,(k=i,i=i+16|0,c[k>>2]=j,c[k+8>>2]=f,k)|0);i=k;l=0;m=1024;n=0;i=g;return l|0}if((d|0)==5){if((e|0)<0){_K(b,49576,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=0;m=1024;n=0;i=g;return l|0}if((c[f+1028>>2]|0)==(e|0)){l=1;m=1024;n=0;i=g;return l|0}_K(b,60392,(k=i,i=i+16|0,c[k>>2]=c[(c[b+1068>>2]|0)+(e*12|0)>>2],c[k+8>>2]=f,k)|0);i=k;l=0;m=1024;n=0;i=g;return l|0}else if((d|0)==3){if((c[f+1028>>2]&e|0)==(e|0)){l=1;m=1024;n=0;i=g;return l|0}if((e&8|0)!=0){d=h;c[d>>2]=1768121700;c[d+4>>2]=7102829}if((e&256|0)!=0){c[h>>2]=7890280}if((e&512|0)!=0){a[j]=a[53328]|0;a[j+1|0]=a[53329]|0;a[j+2|0]=a[53330]|0;a[j+3|0]=a[53331]|0;a[j+4|0]=a[53332]|0;a[j+5|0]=a[53333]|0}if((e&1024|0)!=0){a[j]=a[52872]|0;a[j+1|0]=a[52873]|0;a[j+2|0]=a[52874]|0;a[j+3|0]=a[52875]|0;a[j+4|0]=a[52876]|0;a[j+5|0]=a[52877]|0;a[j+6|0]=a[52878]|0}if((e&8192|0)!=0){d=h+(o$(j|0)|0)|0;a[d]=a[52272]|0;a[d+1|0]=a[52273]|0;a[d+2|0]=a[52274]|0;a[d+3|0]=a[52275]|0;a[d+4|0]=a[52276]|0;a[d+5|0]=a[52277]|0}if((e&16384|0)!=0){m$(h+(o$(j|0)|0)|0,51776,10)|0}if((e&2048|0)!=0){d=h+(o$(j|0)|0)|0;a[d]=a[51080]|0;a[d+1|0]=a[51081]|0;a[d+2|0]=a[51082]|0;a[d+3|0]=a[51083]|0;a[d+4|0]=a[51084]|0;a[d+5|0]=a[51085]|0;a[d+6|0]=a[51086]|0}if((e&4096|0)!=0){m$(h+(o$(j|0)|0)|0,50264,9)|0}_K(b,60392,(k=i,i=i+16|0,c[k>>2]=j,c[k+8>>2]=f,k)|0);i=k;l=0;m=1024;n=0;i=g;return l|0}else{l=1;m=1024;n=0;i=g;return l|0}return 0}function gL(b){b=b|0;var c=0;if((a[b]|0)==34){s$(b|0,b+1|0,o$(b|0)|0)|0}c=b+((o$(b|0)|0)-1)|0;if((a[c]|0)!=34){return}a[c]=0;return}function hL(b){b=b|0;var c=0;if((a[b]|0)==39){s$(b|0,b+1|0,o$(b|0)|0)|0}c=b+((o$(b|0)|0)-1)|0;if((a[c]|0)!=39){return}a[c]=0;return}function iL(a,b){a=a|0;b=b|0;c[a+1064>>2]=b;return}function jL(a){a=a|0;return(c[a+1028>>2]|0)>>>0>=(c[a+1032>>2]|0)>>>0|0}function kL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+72|0;e=d|0;f=d+8|0;if((a[28375504]|0)==0){$B(f,64,46784,(g=i,i=i+8|0,c[g>>2]=b,g)|0)|0;i=g}else{$B(f,64,47120,(g=i,i=i+16|0,c[g>>2]=28375504,c[g+8>>2]=b,g)|0)|0;i=g}g=rk[c[7092502]&63](f,e,0)|0;if((c[e>>2]|0)==0){h=0;j=64;k=0;i=d;return h|0}f=_J(g+2141|0)|0;l=f;n$(f|0,0,2140)|0;r$(f|0,b|0)|0;b=f+1024|0;c[b>>2]=f+2140;a[f+(g+2140)|0]=0;c[f+1048>>2]=g;m=c[b>>2]|0;c[f+1028>>2]=m;c[f+1036>>2]=m;c[f+1032>>2]=m+g;c[f+1060>>2]=0;c[f+1052>>2]=1;c[f+1056>>2]=1;ZK(l,30624);c[f+1068>>2]=30624;rk[c[7092503]&63](c[b>>2]|0,g,c[e>>2]|0)|0;vk[c[7092505]&511](c[e>>2]|0);h=l;j=64;k=0;i=d;return h|0}function lL(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=_J(d+2141|0)|0;g=f;n$(f|0,0,2140)|0;r$(f|0,e|0)|0;e=f+1024|0;c[e>>2]=f+2140;a[f+(d+2140)|0]=0;c[f+1048>>2]=d;h=c[e>>2]|0;c[f+1028>>2]=h;c[f+1036>>2]=h;c[f+1032>>2]=h+d;c[f+1060>>2]=0;c[f+1052>>2]=1;c[f+1056>>2]=1;ZK(g,30624);c[f+1068>>2]=30624;m$(c[e>>2]|0,b|0,d)|0;return g|0}function mL(a){a=a|0;var b=0;b=c[a+1072>>2]|0;if((b|0)!=0){bK(b)}bK(a|0);return}function nL(a){a=a|0;var b=0,d=0;b=i;$B(28375504,64,46784,(d=i,i=i+8|0,c[d>>2]=a,d)|0)|0;i=d;i=b;return}function oL(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0;f=i;i=i+1064|0;j=f|0;k=j|0;a:do{if((PK(b,j)|0)==0){l=0}else{m=j+1024|0;n=c[m>>2]|0;if((n|0)==5){if((c[d+8>>2]&1024|0)!=0){fK(b,122880,(o=i,i=i+8|0,c[o>>2]=k,o)|0);i=o;l=0;break}if((k$(k,170824)|0)!=0){fK(b,144920,(o=i,i=i+8|0,c[o>>2]=k,o)|0);i=o;l=0;break}if((PK(b,j)|0)==0){l=0;break}p=1;q=c[m>>2]|0}else{p=0;q=n}if((q|0)!=3){fK(b,128536,(o=i,i=i+8|0,c[o>>2]=k,o)|0);i=o;l=0;break}if((c[j+1028>>2]&2048|0)!=0){n=c[d+8>>2]|0;if((n&255|0)!=3){fK(b,118016,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;l=0;break}r=+g[j+1036>>2];if((p|0)==0){s=r}else{s=-0.0-r}do{if((n&512|0)!=0){r=+g[d+16>>2];t=+g[d+20>>2];if(!(st)){break}}fK(b,107496,(o=i,i=i+16|0,h[o>>3]=r,h[o+8>>3]=t,o)|0);i=o;l=0;break a}}while(0);g[e>>2]=s;l=1;break}n=c[j+1032>>2]|0;m=(p|0)==0?n:-n|0;n=c[d+8>>2]|0;u=n&255;do{if((u|0)==3){if((n&512|0)==0){break}t=+(m|0);r=+g[d+16>>2];v=+g[d+20>>2];if(!(tv)){w=31;break}fK(b,56352,(o=i,i=i+24|0,c[o>>2]=m,h[o+8>>3]=r,h[o+16>>3]=v,o)|0);i=o;l=0;break a}else if((u|0)==2){x=n&1024;y=(x|0)==0?-32768:0;z=x<<5|32767;w=24}else if((u|0)==1){x=n&1024;y=(x|0)==0?-128:0;z=x>>>3|127;w=24}else{l=1;break a}}while(0);do{if((w|0)==24){if((n&512|0)==0){A=z;B=y}else{v=+(y|0);r=+g[d+16>>2];t=+(z|0);C=+g[d+20>>2];A=~~(tr?v:r)}if(!((m|0)<(B|0)|(m|0)>(A|0))){w=31;break}fK(b,64184,(o=i,i=i+24|0,c[o>>2]=m,c[o+8>>2]=B,c[o+16>>2]=A,o)|0);i=o;l=0;break a}}while(0);do{if((w|0)==31){if((u|0)==1){a[e]=m;l=1;break a}else if((u|0)==2){c[e>>2]=m;l=1;break a}else if((u|0)==3){break}else{l=1;break a}}}while(0);g[e>>2]=+(m|0);l=1}}while(0);i=f;return l|0}function pL(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+1064|0;g=f|0;h=g|0;do{if((PK(b,g)|0)==0){j=0}else{if((c[g+1024>>2]|0)==2){hL(h);a[e]=a[h]|0}else{QK(b);if((oL(b,d,e)|0)==0){j=0;break}}j=1}}while(0);i=f;return j|0}function qL(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;c=i;i=i+1064|0;e=c|0;f=e|0;if((OK(b,1,0,e)|0)==0){g=0}else{gL(f);q$(d|0,f|0,80)|0;a[d+79|0]=0;g=1}i=c;return g|0}function rL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+1064|0;f=e|0;g=f|0;a:do{if((NK(a,49936)|0)==0){h=0}else{if((PK(a,f)|0)==0){h=0;break}j=b+4|0;b:while(1){if((k$(g,45136)|0)==0){h=1;break a}k=c[j>>2]|0;l=c[k>>2]|0;if((l|0)==0){m=10;break}else{n=0;o=k;p=l}while(1){l=n+1|0;if((k$(p,g)|0)==0){break}q=k+(l*28|0)|0;r=c[q>>2]|0;if((r|0)==0){m=10;break b}else{n=l;o=q;p=r}}if((o|0)==0){m=10;break}k=o+8|0;if((c[k>>2]&256|0)==0){s=1;m=14}else{r=c[o+12>>2]|0;if((NK(a,49936)|0)==0){h=0;break a}if((r|0)>0){s=r;m=14}}c:do{if((m|0)==14){m=0;r=o+24|0;q=d+(c[o+4>>2]|0)|0;l=s;while(1){t=l-1|0;u=c[k>>2]|0;if((u&256|0)==0){v=u}else{if((oK(a,45136)|0)!=0){break c}v=c[k>>2]|0}switch(v&255|0){case 6:{u=c[r>>2]|0;if((u|0)==0){m=28;break b}rL(a,u,q)|0;w=q+(c[c[r>>2]>>2]|0)|0;break};case 2:{if((oL(a,o,q)|0)==0){h=0;break a}w=q+4|0;break};case 3:{if((oL(a,o,q)|0)==0){h=0;break a}w=q+4|0;break};case 1:{if((pL(a,o,q)|0)==0){h=0;break a}w=q+1|0;break};case 4:{if((qL(a,0,q)|0)==0){h=0;break a}w=q+80|0;break};default:{w=q}}if((c[k>>2]&256|0)!=0){if((PK(a,f)|0)==0){h=0;break a}if((k$(g,45136)|0)==0){break c}if((k$(g,175824)|0)!=0){m=35;break b}}if((t|0)>0){q=w;l=t}else{break c}}}}while(0);if((PK(a,f)|0)==0){h=0;break a}}if((m|0)==10){fK(a,184216,(x=i,i=i+8|0,c[x>>2]=g,x)|0);i=x;h=0;break}else if((m|0)==28){fK(a,180416,(x=i,i=i+1|0,i=i+7&-8,c[x>>2]=0,x)|0);i=x;h=0;break}else if((m|0)==35){fK(a,172296,(x=i,i=i+8|0,c[x>>2]=g,x)|0);i=x;h=0;break}}}while(0);i=e;return h|0}function sL(){var b=0,e=0,f=0,h=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.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;b=i;i=i+192|0;e=b|0;f=b+48|0;h=b+96|0;j=b+104|0;k=b+136|0;l=b+168|0;m=b+176|0;n=b+184|0;o=l;c[l>>2]=0;if((c[535074]|0)!=0){Ff();p=mb(c[535074]|0)|0;do{if((p|0)>0){q=0;r=0;s=0;do{c[m>>2]=0;c[n>>2]=0;tc(c[535074]|0,s|0,m|0,n|0)|0;q=(c[m>>2]|0)+q|0;r=(c[n>>2]|0)+r|0;s=s+1|0;}while((s|0)<(p|0));if((r|q|0)==0){break}ws(0,3,q<<((((q|0)>-1?q:-q|0)|0)>1),r<<((((r|0)>-1?r:-r|0)|0)>1),0,0)}}while(0);p=$i(c[535074]|0)|0;do{if((p|0)>0){n=p>>>0>16>>>0?16:p;if((n|0)>0){t=0}else{break}do{m=(Kf(c[535074]|0,t|0)|0)<<24>>24!=0|0;s=2140160+(t<<2)|0;if((m|0)!=(c[s>>2]|0)){ws(0,1,t+185|0,m,0,0);c[s>>2]=m}t=t+1|0;}while((t|0)<(n|0))}}while(0);t=wd(c[535074]|0)|0;do{if((t|0)>0){p=(t|0)>4?4:t;if((p|0)>0){u=0}else{v=0;w=0;break}do{a[o+u|0]=Eg(c[535074]|0,u|0)|0;u=u+1|0;}while((u|0)<(p|0));p=c[l>>2]|0;v=p;w=p&255}else{v=0;w=0}}while(0);l=c[535073]|0;a:do{if((v|0)!=(l|0)){u=0;t=w;p=l&255;while(1){b:do{if(!(t<<24>>24==p<<24>>24)){switch(p&255|0){case 1:{ws(0,1,c[20616+(u<<2<<2)>>2]|0,0,0,0);break};case 2:{ws(0,1,c[20616+((u<<2|1)<<2)>>2]|0,0,0,0);break};case 4:{ws(0,1,c[20616+((u<<2|2)<<2)>>2]|0,0,0,0);break};case 8:{ws(0,1,c[20616+((u<<2|3)<<2)>>2]|0,0,0,0);break};case 3:{n=u<<2;ws(0,1,c[20616+(n<<2)>>2]|0,0,0,0);ws(0,1,c[20616+((n|1)<<2)>>2]|0,0,0,0);break};case 12:{n=u<<2;ws(0,1,c[20616+((n|2)<<2)>>2]|0,0,0,0);ws(0,1,c[20616+((n|3)<<2)>>2]|0,0,0,0);break};case 9:{n=u<<2;ws(0,1,c[20616+(n<<2)>>2]|0,0,0,0);ws(0,1,c[20616+((n|3)<<2)>>2]|0,0,0,0);break};case 6:{n=u<<2;ws(0,1,c[20616+((n|2)<<2)>>2]|0,0,0,0);ws(0,1,c[20616+((n|1)<<2)>>2]|0,0,0,0);break};default:{}}switch(t&255|0){case 1:{ws(0,1,c[20616+(u<<2<<2)>>2]|0,1,0,0);break b;break};case 12:{n=u<<2;ws(0,1,c[20616+((n|2)<<2)>>2]|0,1,0,0);ws(0,1,c[20616+((n|3)<<2)>>2]|0,1,0,0);break b;break};case 6:{n=u<<2;ws(0,1,c[20616+((n|2)<<2)>>2]|0,1,0,0);ws(0,1,c[20616+((n|1)<<2)>>2]|0,1,0,0);break b;break};case 3:{n=u<<2;ws(0,1,c[20616+(n<<2)>>2]|0,1,0,0);ws(0,1,c[20616+((n|1)<<2)>>2]|0,1,0,0);break b;break};case 4:{ws(0,1,c[20616+((u<<2|2)<<2)>>2]|0,1,0,0);break b;break};case 9:{n=u<<2;ws(0,1,c[20616+(n<<2)>>2]|0,1,0,0);ws(0,1,c[20616+((n|3)<<2)>>2]|0,1,0,0);break b;break};case 2:{ws(0,1,c[20616+((u<<2|1)<<2)>>2]|0,1,0,0);break b;break};case 8:{ws(0,1,c[20616+((u<<2|3)<<2)>>2]|0,1,0,0);break b;break};default:{break b}}}}while(0);n=u+1|0;if((n|0)>=4){break a}u=n;t=a[o+n|0]|0;p=a[2140292+n|0]|0}}}while(0);c[535073]=v;v=Ci(c[535074]|0)|0;c:do{if((v|0)>0){o=(v|0)>16?16:v;l=(o|0)>0;if((c[(c[5115448]|0)+32>>2]|0)!=0){if(l){x=0}else{y=0;break}while(1){w=If(c[535074]|0,x|0)|0;p=w<<16>>16;t=+((w<<16>>16>-1?p:-p|0)|0)/32767.0<+g[(c[5115450]|0)+28>>2]?0:p;p=2140228+(x<<2)|0;if((t|0)!=(c[p>>2]|0)){ws(0,4,x,t,0,0);c[p>>2]=t}t=x+1|0;if((t|0)<(o|0)){x=t}else{y=0;break c}}}if(l){z=0;A=0}else{y=0;break}while(1){B=+((If(c[535074]|0,z|0)|0)<<16>>16|0)/32767.0;C=+g[(c[5115450]|0)+28>>2];do{if(B<-0.0-C){D=1<<(z<<1)|A}else{if(!(B>C)){D=A;break}D=1<<(z<<1|1)|A}}while(0);t=z+1|0;if((t|0)<(o|0)){z=t;A=D}else{y=D;break}}}else{y=0}}while(0);D=c[535056]|0;d:do{if((y|0)!=(D|0)){A=0;z=D;while(1){x=1<>2]|0,0,0,0)}else{if(!v){break}ws(0,1,c[19304+(A<<2)>>2]|0,1,0,0)}}while(0);v=A+1|0;if((v|0)>=16){break d}A=v;z=c[535056]|0}}}while(0);c[535056]=y}y=j|0;j=k|0;c[h>>2]=0;do{if((ei(32)|0)!=0){k=(Jn()|0)==0;D=a[16104]|0;do{if(k&D){ti(0,0)|0;a[16104]=0}else{if(D){break}ti(500,30)|0;a[16104]=1}}while(0);if((hj(f|0)|0)==0){break}D=f|0;k=f+12|0;z=f+20|0;A=f+24|0;v=f+8|0;x=v;o=f+4|0;l=v;v=f+5|0;t=o;do{p=c[D>>2]|0;do{if((p|0)==769){xL(k,h,0);w=c[h>>2]|0;if((w|0)==0){break}ws(0,1,w,0,0,0)}else if((p|0)==1024){if(!(a[12088]|0)){break}ws(0,3,c[z>>2]|0,c[A>>2]|0,0,0)}else if((p|0)==768){xL(k,h,1);w=c[h>>2]|0;if((w|0)!=0){ws(0,1,w,1,0,0)}ws(0,2,a[30211848]|0,0,0,0)}else if((p|0)==1025|(p|0)==1026){w=d[x]|0;switch(w|0){case 2:{E=180;break};case 3:{E=179;break};case 4:{E=184;break};case 5:{E=183;break};case 1:{E=178;break};default:{E=((w-4|0)%16|0)+217|0}}ws(0,1,E,(p|0)==1025|0,0,0)}else if((p|0)==256){rr(0,126560)}else if((p|0)==28673){$B(y,32,125360,(w=i,i=i+8|0,c[w>>2]=c[o>>2],w)|0)|0;i=w;$B(j,32,125360,(w=i,i=i+8|0,c[w>>2]=c[l>>2],w)|0)|0;i=w;kt(124416,y);kt(123576,j);kt(122736,121848);c[219092]=(wf()|0)+1e3}else if((p|0)==28672){w=a[v]|0;if((w&2)==0){F=w}else{nt(172280,+((a[t]|0)==0|0));F=a[v]|0}if((F&4)==0){break}nt(169280,+((a[t]|0)==0|0))}}while(0);}while((hj(f|0)|0)!=0)}}while(0);f=c[5720394]|0;do{if((bt(122560)|0)==0){if(((Jn()|0)&1|0)==0){G=91;break}tL()}else{G=91}}while(0);e:do{if((G|0)==91){do{if((bt(122560)|0)==0){if((f|0)==8|(f|0)==1){break}tL();break e}}while(0);if(((wc()|0)&2)==0){tL();break}if((c[4954362]|0)==0){break}if((ei(32)|0)==0){break}if(!(a[12088]|0)){ob(0)|0;H;Zf();F=e|0;do{}while((Hi(F|0,1,2,1024,1024)|0)!=0)}do{if((bt(122560)|0)==0){F=c[5115410]|0;if((c[F+20>>2]|0)==0&a[12088]){break}if((c[F+32>>2]|0)==0){I}else{J}c[(c[5115410]|0)+20>>2]=0}}while(0);a[12088]=1}}while(0);J=c[219092]|0;if((J|0)==0){i=b;return}if((J|0)>=(wf()|0)){i=b;return}c[219092]=0;qr(170696);i=b;return}function tL(){var b=0,d=0,e=0;b=i;i=i+48|0;if((ei(32)|0)==0){i=b;return}if((bt(122560)|0)==0){ob(1)|0}if(!((c[4954362]|0)!=0&a[12088])){i=b;return}Zf();d=b|0;do{}while((Hi(d|0,1,2,1024,1024)|0)!=0);e;if(!(((wc()|0)&1)==0)){Cd(((c[5720347]|0)/2|0)&65535|0,((c[5720348]|0)/2|0)&65535|0)}a[12088]=0;i=b;return}function uL(){var b=0,e=0,f=0,h=0,j=0,k=0,l=0;b=i;i=i+16384|0;if((ei(32)|0)==0){Ur(0,144792,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}Tr(128488,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;c[5115446]=gt(117992,107488,1)|0;c[5115424]=gt(64168,56344,1)|0;c[5115410]=gt(49920,107488,1)|0;c[5115456]=gt(45120,107488,33)|0;c[5115454]=gt(184192,107488,256)|0;c[5115450]=gt(180400,175816,1)|0;Kc(1)|0;ti(500,30)|0;a[16104]=1;c[4954362]=+g[(c[5115424]|0)+28>>2]!=0.0;tL();f=(wc()|0)&255;nt(172280,+(f>>>1&1^1|0));nt(169280,+(f>>>2&1^1|0));f=ae(0)|0;c[5114315]=d[f+1095|0]|0;c[5113835]=d[f+1107|0]|0;c[5113697]=d[f+1081|0]|0;f=b|0;n$(f|0,0,16384)|0;h=c[535074]|0;if((h|0)!=0){og(h|0)}c[535074]=0;n$(2140160,0,136)|0;do{if((ei(512)|0)==0){Tr(162648,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;if(!((Vi(512)|0)==-1)){Tr(157312,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;break}h=zc()|0;Tr(159912,(e=i,i=i+8|0,c[e>>2]=h,e)|0);i=e;j=16384;k=0;Tr(165816,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=b;return}}while(0);h=Vf()|0;Tr(154880,(e=i,i=i+8|0,c[e>>2]=h,e)|0);i=e;if((h|0)>0){l=0;do{XB(f,16384,ri(l|0)|0);XB(f,16384,152912);l=l+1|0;}while((l|0)<(h|0))}gt(150832,f,64)|0;if((c[(c[5115456]|0)+32>>2]|0)==0){Tr(148608,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;rh(512);j=16384;k=0;Tr(165816,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=b;return}f=gt(146112,107488,1)|0;c[5115452]=f;l=c[f+32>>2]|0;if(!((l|0)>-1&(l|0)<(h|0))){kt(146112,107488)}c[5115448]=gt(143664,107488,1)|0;h=xd(c[(c[5115452]|0)+32>>2]|0)|0;c[535074]=h;if((h|0)==0){Tr(141064,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;j=16384;k=0;Tr(165816,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=b;return}else{Tr(138696,(e=i,i=i+8|0,c[e>>2]=c[(c[5115452]|0)+32>>2],e)|0);i=e;h=ri(c[(c[5115452]|0)+32>>2]|0)|0;Tr(136888,(e=i,i=i+8|0,c[e>>2]=h,e)|0);i=e;h=Ci(c[535074]|0)|0;Tr(135496,(e=i,i=i+8|0,c[e>>2]=h,e)|0);i=e;h=wd(c[535074]|0)|0;Tr(134048,(e=i,i=i+8|0,c[e>>2]=h,e)|0);i=e;h=$i(c[535074]|0)|0;Tr(132624,(e=i,i=i+8|0,c[e>>2]=h,e)|0);i=e;h=mb(c[535074]|0)|0;Tr(131616,(e=i,i=i+8|0,c[e>>2]=h,e)|0);i=e;Tr(130280,(e=i,i=i+8|0,c[e>>2]=(c[(c[5115448]|0)+32>>2]|0)!=0?129032:128032,e)|0);i=e;Qj(-1|0)|0;j=16384;k=0;Tr(165816,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=b;return}}function vL(){var a=0;tL();c[4954362]=0;a=c[535074]|0;if((a|0)==0){rh(512);return}og(a|0);c[535074]=0;rh(512);return}function wL(){var a=0;a=c[535074]|0;if((a|0)!=0){og(a|0);c[535074]=0}rh(512);uL();return}function xL(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=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;g=i;i=i+8|0;h=g|0;a[30211848]=0;c[e>>2]=0;j=d+4|0;k=c[j>>2]|0;a:do{if((k-32|0)>>>0<95>>>0){c[e>>2]=k;l=k}else{switch(k|0){case 27:{c[e>>2]=27;l=27;break a;break};case 1106:{c[e>>2]=132;l=132;break a;break};case 1104:{c[e>>2]=134;l=134;break a;break};case 1115:{c[e>>2]=168;l=168;break a;break};case 1116:{c[e>>2]=163;l=163;break a;break};case 1099:{c[e>>2]=142;l=142;break a;break};case 1120:{c[e>>2]=161;l=161;break a;break};case 1112:{c[e>>2]=169;l=169;break a;break};case 1121:{c[e>>2]=162;l=162;break a;break};case 1114:{c[e>>2]=167;l=167;break a;break};case 13:{c[e>>2]=13;l=13;break a;break};case 9:{c[e>>2]=9;l=9;break a;break};case 1082:{c[e>>2]=145;l=145;break a;break};case 1083:{c[e>>2]=146;l=146;break a;break};case 1084:{c[e>>2]=147;l=147;break a;break};case 1085:{c[e>>2]=148;l=148;break a;break};case 1086:{c[e>>2]=149;l=149;break a;break};case 1087:{c[e>>2]=150;l=150;break a;break};case 1088:{c[e>>2]=151;l=151;break a;break};case 1089:{c[e>>2]=152;l=152;break a;break};case 1090:{c[e>>2]=153;l=153;break a;break};case 1091:{c[e>>2]=154;l=154;break a;break};case 1092:{c[e>>2]=155;l=155;break a;break};case 1093:{c[e>>2]=156;l=156;break a;break};case 1128:{c[e>>2]=157;l=157;break a;break};case 1129:{c[e>>2]=158;l=158;break a;break};case 1130:{c[e>>2]=159;l=159;break a;break};case 8:{c[e>>2]=127;l=127;break a;break};case 1123:{c[e>>2]=171;l=171;break a;break};case 127:{c[e>>2]=140;l=140;break a;break};case 1096:{c[e>>2]=131;l=131;break a;break};case 1249:case 1253:{c[e>>2]=138;l=138;break a;break};case 1248:case 1252:{c[e>>2]=137;l=137;break a;break};case 1255:case 1251:{c[e>>2]=128;l=128;break a;break};case 1254:case 1250:{c[e>>2]=136;l=136;break a;break};case 311:case 312:{c[e>>2]=329;l=329;break a;break};case 1117:{c[e>>2]=164;l=164;break a;break};case 1097:{c[e>>2]=139;l=139;break a;break};case 1122:{c[e>>2]=170;l=170;break a;break};case 1109:{c[e>>2]=176;l=176;break a;break};case 1111:{c[e>>2]=174;l=174;break a;break};case 1110:{c[e>>2]=173;l=173;break a;break};case 1108:{c[e>>2]=172;l=172;break a;break};case 1281:{c[e>>2]=331;l=331;break a;break};case 1125:{c[e>>2]=330;l=330;break a;break};case 1141:{c[e>>2]=332;l=332;break a;break};case 1094:{c[e>>2]=333;l=333;break a;break};case 1178:{c[e>>2]=334;l=334;break a;break};case 1144:{c[e>>2]=336;l=336;break a;break};case 1142:{c[e>>2]=337;l=337;break a;break};case 1126:{c[e>>2]=130;l=130;break a;break};case 1146:{c[e>>2]=339;l=339;break a;break};case 1095:{c[e>>2]=335;l=335;break a;break};case 1107:{c[e>>2]=175;l=175;break a;break};case 1081:{c[e>>2]=129;l=129;break a;break};case 1105:{c[e>>2]=133;l=133;break a;break};case 1119:{c[e>>2]=160;l=160;break a;break};case 1103:{c[e>>2]=135;l=135;break a;break};case 1118:{c[e>>2]=165;l=165;break a;break};case 1113:{c[e>>2]=166;l=166;break a;break};case 1098:{c[e>>2]=143;l=143;break a;break};case 1102:{c[e>>2]=141;l=141;break a;break};case 1101:{c[e>>2]=144;l=144;break a;break};default:{if(!((k-160|0)>>>0<96>>>0)){l=0;break a}m=k+73|0;c[e>>2]=m;l=m;break a}}}}while(0);k=(f|0)!=0;do{if(k){m=c[d+12>>2]|0;if(!((m|0)!=0&(m&65280|0)==0)){break}if((m&255|0)!=127|(l|0)==140){a[30211848]=m;break}else{a[30211848]=8;break}}}while(0);if((c[(c[5115446]|0)+32>>2]|0)!=0){if((f|0)==0){Sr(118448,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}else{Sr(119800,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}f=c[d>>2]|0;m=bf(c[j>>2]|0)|0;Sr(117424,(n=i,i=i+16|0,c[n>>2]=f,c[n+8>>2]=m,n)|0);i=n;m=d+8|0;f=b[m>>1]|0;if((f&1)==0){o=f}else{Sr(116208,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;o=b[m>>1]|0}if((o&2)==0){p=o}else{Sr(114680,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;p=b[m>>1]|0}if((p&64)==0){q=p}else{Sr(113600,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;q=b[m>>1]|0}if((q&128)==0){r=q}else{Sr(112704,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;r=b[m>>1]|0}if((r&256)==0){s=r}else{Sr(111800,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;s=b[m>>1]|0}if((s&512)==0){t=s}else{Sr(111040,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;t=b[m>>1]|0}if((t&1024)==0){u=t}else{Sr(110296,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;u=b[m>>1]|0}if((u&2048)==0){v=u}else{Sr(109e3,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;v=b[m>>1]|0}if((v&4096)==0){w=v}else{Sr(107944,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;w=b[m>>1]|0}if((w&8192)==0){x=w}else{Sr(107048,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;x=b[m>>1]|0}if((x&16384)==0){y=x}else{Sr(106016,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;y=b[m>>1]|0}if(y<<16>>16<0){Sr(105176,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}y=On(l)|0;Sr(104240,(n=i,i=i+16|0,c[n>>2]=l,c[n+8>>2]=y,n)|0);i=n;y=d+12|0;l=c[y>>2]|0;do{if((l|0)!=0){Sr(103304,(n=i,i=i+8|0,c[n>>2]=l,n)|0);i=n;m=c[y>>2]|0;if(!((m-33|0)>>>0<93>>>0)){break}Sr(102536,(n=i,i=i+8|0,c[n>>2]=m<<24>>24,n)|0);i=n}}while(0);Sr(152912,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}do{if(k){if((o$(On(c[e>>2]|0)|0)|0)!=1){break}if((c[d+12>>2]|0)!=0){break}if((c[(c[5115446]|0)+32>>2]|0)!=0){Sr(120976,(n=i,i=i+8|0,c[n>>2]=c[e>>2],n)|0);i=n}c[e>>2]=0}}while(0);n=c[e>>2]|0;d=a[30211848]|0;k=(c[5811762]|0)+20|0;b:do{if((c[k>>2]|0)!=0){c[k>>2]=0;c[h>>2]=c[(c[5811762]|0)+4>>2];c[7552964]=0;y=0;while(1){l=bC(h)|0;if((a[l]|0)==0){break b}do{if((o$(l|0)|0)==4){m=gC(l)|0;x=30211864+(y<<3)|0;if((m|0)<=0){z=x;A=120;break}c[x>>2]=1;a[30211868+(y<<3)|0]=m;A=121}else{z=30211864+(y<<3)|0;A=120}}while(0);do{if((A|0)==120){A=0;c[z>>2]=0;m=Nn(l)|0;c[30211868+(y<<3)>>2]=m;if((m|0)!=0){A=121;break}B=c[7552964]|0}}while(0);if((A|0)==121){A=0;l=(c[7552964]|0)+1|0;c[7552964]=l;B=l}if((B|0)<16){y=B}else{break}}}}while(0);B=(d&255|0)==(n|0)?0:n;n=c[7552964]|0;c:do{if((n|0)>0){d:do{if((B|0)==0){A=0;while(1){if((c[30211864+(A<<3)>>2]|0)==1){if((a[30211868+(A<<3)|0]|0)==d<<24>>24){break d}}A=A+1|0;if((A|0)>=(n|0)){break c}}}else{A=0;while(1){z=c[30211864+(A<<3)>>2]|0;if((z|0)==0){if((c[30211868+(A<<3)>>2]|0)==(B|0)){break d}}else if((z|0)==1){if((a[30211868+(A<<3)|0]|0)==d<<24>>24){break d}}A=A+1|0;if((A|0)>=(n|0)){break c}}}}while(0);c[e>>2]=340;a[30211848]=0;i=g;return}}while(0);if((a[30211848]|0)>=0){i=g;return}a[30211848]=0;i=g;return}function yL(){var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0;f=i;i=i+176|0;h=f+128|0;j=f+152|0;k=f|0;if((c[540156]|0)!=0){l=1;m=128;n=0;i=f;return l|0}if((c[553506]|0)==0){c[553506]=gt(122160,170576,1)|0;c[553498]=gt(144752,128480,1)|0;c[553504]=gt(117888,107440,1)|0;c[553502]=gt(64104,128480,1)|0;c[553500]=gt(56296,128480,1)|0}Sr(49880,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;do{if((ei(16)|0)==0){if(!((Vi(16)|0)==-1)){break}p=zc()|0;Sr(45096,(o=i,i=i+8|0,c[o>>2]=p,o)|0);i=o;l=0;m=128;n=0;i=f;return l|0}}while(0);Sr(184176,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;if((Mb(k|0,128)|0)==0){m$(k|0,180376,10)|0}Sr(175768,(o=i,i=i+8|0,c[o>>2]=k,o)|0);i=o;n$(h|0,0,24)|0;n$(j|0,0,24)|0;k=~~+g[(c[553506]|0)+28>>2];p=~~+g[(c[553498]|0)+28>>2];q=(p|0)==0?22050:p;c[h>>2]=q;b[h+4>>1]=(k|0)!=16&(k|0)!=8|(k|0)==16?-32752:8;r=+g[(c[553502]|0)+28>>2];do{if(r!=0.0){b[h+8>>1]=~~r}else{if((q|0)<11026){b[h+8>>1]=256;break}if((q|0)<22051){b[h+8>>1]=512;break}k=h+8|0;if((q|0)<44101){b[k>>1]=1024;break}else{b[k>>1]=2048;break}}}while(0);a[h+6|0]=~~+g[(c[553504]|0)+28>>2];c[h+16>>2]=144;if((We(h|0,j|0)|0)==-1){h=zc()|0;Sr(172232,(o=i,i=i+8|0,c[o>>2]=h,o)|0);i=o;rh(16);l=0;m=128;n=0;i=f;return l|0}Sr(154856,(o=i,i=i+8|0,c[o>>2]=169248,o)|0);i=o;h=j+4|0;q=b[h>>1]|0;do{if(q<<16>>16==8){s=141024;t=22}else{if(q<<16>>16==-32760){s=138640;t=22;break}if(q<<16>>16==16){s=136864;t=22;break}if(q<<16>>16==-32752){s=135416;t=22;break}if(q<<16>>16==4112){s=134008;t=22;break}if(q<<16>>16==-28656){s=132600;t=22;break}Sr(150800,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o}}while(0);if((t|0)==22){Sr(152880,(o=i,i=i+8|0,c[o>>2]=s,o)|0);i=o}s=j|0;Sr(148576,(o=i,i=i+8|0,c[o>>2]=c[s>>2],o)|0);i=o;t=j+8|0;Sr(146072,(o=i,i=i+8|0,c[o>>2]=e[t>>1]|0,o)|0);i=o;q=j+6|0;Sr(143632,(o=i,i=i+8|0,c[o>>2]=d[q]|0,o)|0);i=o;j=~~+g[(c[553500]|0)+28>>2];if((j|0)==0){u=da((e[t>>1]|0)*10|0,d[q]|0)|0}else{u=j}if((u-1&u|0)==0){v=u}else{j=1;while(1){if((j|0)<(u|0)){j=j<<1}else{v=j;break}}}c[5385954]=0;j=b[h>>1]&255;c[5385959]=j;c[5385956]=d[q]|0;c[5385957]=v;c[5385958]=1;c[5385960]=c[s>>2];s=da(j>>>3,v)|0;c[5385952]=s;c[5385961]=X_(1,s)|0;Sr(165768,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;bg(0);Sr(162608,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;c[540156]=1;l=1;m=128;n=0;i=f;return l|0}function zL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a=da((c[5385959]|0)/8|0,c[5385954]|0)|0;e=c[5385952]|0;if((a|0)<(e|0)){f=a}else{c[5385954]=0;f=0}if((c[540156]|0)==0){n$(b|0,0,d|0)|0;return}a=e-f|0;e=(a|0)<(d|0);g=e?a:d;h=e?d-a|0:0;m$(b|0,(c[5385961]|0)+f|0,g)|0;if((h|0)<1){i=(c[5385954]|0)+((g|0)/((c[5385959]|0)/8|0|0)|0)|0;j=c[5385952]|0;k=(i|0)<(j|0);l=k?i:0;c[5385954]=l;return}else{m$(b+g|0,c[5385961]|0,h)|0;i=(h|0)/((c[5385959]|0)/8|0|0)|0;j=c[5385952]|0;k=(i|0)<(j|0);l=k?i:0;c[5385954]=l;return}}function AL(){return c[5385954]|0}function BL(){var a=0,b=0;a=i;Sr(159864,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;bg(1);pg();rh(16);W_(c[5385961]|0);c[5385961]=0;c[5385952]=0;c[5385954]=0;c[540156]=0;Sr(157264,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}function CL(){return}function DL(){return}function EL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=o$(b|0)|0;e=c[4917210]|0;f=c[46800]|0;g=f+32768|0;h=e>>>0>f>>>0?g:f;if((e+32767-h|0)>>>0>=d>>>0|(h|0)==(e|0)){i=e}else{h=e;while(1){if((a[21704800+h|0]|0)==10){e=h+1&32767;c[4917210]=e;j=e}else{e=h+1&32767;c[4917210]=e;if(((h>>>0>f>>>0?g:f)-h|0)>>>0>1>>>0){h=e;continue}else{j=e}}e=j>>>0>f>>>0?g:f;if((j+32767-e|0)>>>0>=d>>>0|(e|0)==(j|0)){i=j;break}else{h=j}}}if((i+32767-(i>>>0>f>>>0?g:f)|0)>>>0>>0){k=0;return k|0}g=f+d|0;if(g>>>0>32768>>>0){i=32768-f|0;l=d-i|0;m=i}else{l=0;m=d}m$(21704800+f|0,b|0,m)|0;m$(21704800,b+m|0,l)|0;c[46800]=g&32767;k=d;return k|0}function FL(){var b=0;if((a[20457448]|0)==0){b=xg()|0}else{b=20457448}return b|0}function GL(){wL();return}function HL(){return YL()|0}function IL(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;i=i+64|0;d=vc()|0;if((a[d]|0)==0){e=0;i=b;return e|0}f=pC(128024,(g=i,i=i+16|0,c[g>>2]=d,c[g+8>>2]=126544,g)|0)|0;i=g;if((f|0)==0){e=0;i=b;return e|0}d=dj(f|0,121680)|0;do{if((d|0)==0){h=0}else{j=b|0;n$(j|0,0,64)|0;k=Dj(j|0,1,63,d|0)|0;kb(d|0)|0;if((k|0)<=0){h=1;break}h=(tj(oj(j|0)|0)|0)==0|0}}while(0);d=dj(f|0,170488)|0;if((d|0)==0){Sr(128456,(g=i,i=i+8|0,c[g>>2]=f,g)|0);i=g;e=h;i=b;return e|0}else{f=Gi()|0;Rc(d|0,144624,(g=i,i=i+8|0,c[g>>2]=f,g)|0)|0;i=g;kb(d|0)|0;e=h;i=b;return e|0}return 0}function JL(){KL(0)}function KL(b){b=b|0;var d=0,e=0,f=0;WL();Te();do{if((b|0)<2){d=vc()|0;if((a[d]|0)==0){break}e=pC(128024,(f=i,i=i+16|0,c[f>>2]=d,c[f+8>>2]=126544,f)|0)|0;i=f;if((e|0)==0){break}cg(e|0)|0}}while(0);bh();Ji(b|0)}function LL(){var a=0,b=0,c=0;a=(rg()|0)!=0|0;b=(vj()|0)==0;c=b?a:a|2;a=(vj()|0)==0;b=a?c:c|4;c=(_h()|0)==0;a=c?b:b|8;b=(_h()|0)==0;c=b?a:a|16;a=(eh()|0)==0;b=a?c:c|32;c=(Ui()|0)==0;a=c?b:b|64;b=(Hd()|0)==0;return(b?a:a|128)|0}function ML(){Gr(117872,148);kt(107432,64088);kt(56280,cd()|0);return}function NL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0;d=i;e=a[b]|0;if(e<<24>>24==0){i=d;return}f=c[p>>2]|0;g=b;b=0;h=e;a:while(1){do{if((g|0)!=0&h<<24>>24==94){e=a[g+1|0]|0;if(e<<24>>24==0){j=94;k=14;break}if((Fe(e<<24>>24|0)|0)!=0){k=8;break}l=a[g]|0;k=7}else{l=h;k=7}}while(0);if((k|0)==7){k=0;if(l<<24>>24==10){k=8}else{j=l;k=14}}do{if((k|0)==8){k=0;if((b|0)>0){a[28379216+b|0]=0;Sf(28379216,f|0)|0;m=0}else{m=b}if((a[g]|0)==10){Ad(49872,5,1,f|0)|0;n=m;o=g+1|0;break}else{$B(28379216,4096,45088,(e=i,i=i+8|0,c[e>>2]=c[186328+((a[g+1|0]&7)<<2)>>2],e)|0)|0;i=e;Sf(28379216,f|0)|0;n=m;o=g+2|0;break}}else if((k|0)==14){k=0;if((b|0)>4094){q=b;r=f;break a}a[28379216+b|0]=j;n=b+1|0;o=g+1|0}}while(0);e=a[o]|0;if(e<<24>>24==0){k=16;break}else{g=o;b=n;h=e}}do{if((k|0)==16){if((n|0)>0){q=n;r=c[p>>2]|0;break}else{i=d;return}}}while(0);a[28379216+q|0]=0;Sf(28379216,r|0)|0;i=d;return}function OL(a){a=a|0;EL(a)|0;ZL(a);return}function PL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+1040|0;e=d|0;f=d+16|0;d=e;c[d>>2]=b;c[d+4>>2]=0;Xe(f|0,1024,a|0,e|0)|0;Xf(f|0);KL(3)}function QL(a){a=a|0;var b=0,d=0;b=i;if((a|0)==0){Sr(184152,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=b;return}else{_f(a|0)|0;i=b;return}}function RL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;Sr(159840,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;g=dc(a|0,2)|0;if((g|0)==0){h=ub()|0;Sr(157224,(f=i,i=i+16|0,c[f>>2]=a,c[f+8>>2]=h,f)|0);i=f;j=0;i=e;return j|0}h=Oc(g|0,154840)|0;k=Oc(g|0,152872)|0;c[b>>2]=k;if((k|0)==0|(h|0)==0){b=ub()|0;Sr(150736,(f=i,i=i+16|0,c[f>>2]=a,c[f+8>>2]=b,f)|0);i=f;_f(g|0)|0;j=0;i=e;return j|0}else{Sr(148520,(f=i,i=i+16|0,c[f>>2]=a,c[f+8>>2]=k,f)|0);i=f;vk[h&511](d);j=g;i=e;return j|0}return 0}function SL(b){b=b|0;var d=0,e=0;if(a[186320]|0){Rc(c[p>>2]|0,136808,(d=i,i=i+8|0,c[d>>2]=b,d)|0)|0;i=d}else{a[186320]=1;kD();e=pC(135392,(d=i,i=i+8|0,c[d>>2]=b,d)|0)|0;i=d;mp(e,1,1);e=pC(135392,(d=i,i=i+8|0,c[d>>2]=b,d)|0)|0;i=d;MA(e);lD()}if((b|0)==15|(b|0)==2){KL(1)}else{KL(2)}}function TL(){if((c[6924866]|0)!=0){return}sL();Ms();return}function UL(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,s=0;e=i;i=i+1024|0;f=e|0;n$(f|0,0,1024)|0;g=qf()|0;h=d[g|0]|0;j=d[g+1|0]|0;k=d[g+2|0]|0;if(((j*100|0)+(h*1e3|0)+k|0)<1210){g=pC(133848,(l=i,i=i+24|0,c[l>>2]=h,c[l+8>>2]=j,c[l+16>>2]=k,l)|0)|0;i=l;vi(2,g|0,132576)|0;KL(1);return 0}uc();wf()|0;do{if((a|0)==2){g=c[b+4>>2]|0;if((k$(g,146056)|0)==0){m=c[q>>2]|0;n=Rc(m|0,138592,(l=i,i=i+8|0,c[l>>2]=141008,l)|0)|0;i=l;KL(0);return 0}if((k$(g,143624)|0)!=0){break}m=c[q>>2]|0;n=Rc(m|0,138592,(l=i,i=i+8|0,c[l>>2]=141008,l)|0)|0;i=l;KL(0);return 0}}while(0);TB(28370872,Pj(c[b>>2]|0)|0,4096);TB(20457448,131592,4096);if((a|0)>1){o=1}else{p=Pr(100,0)|0;Hs(f,p);ee();r=1024;s=0;i=e;return 0}do{l=b+(o<<2)|0;m=c[l>>2]|0;if((sg(m|0,32)|0)==0){XB(f,1024,m)}else{XB(f,1024,130272);XB(f,1024,c[l>>2]|0);XB(f,1024,130272)}XB(f,1024,129024);o=o+1|0;}while((o|0)<(a|0));p=Pr(100,0)|0;Hs(f,p);ee();r=1024;s=0;i=e;return 0}function VL(a,b){a=a|0;b=b|0;b=c[a>>2]|0;if((b|0)!=0){W_(b)}W_(a);c[6924866]=(c[6924866]|0)-1;nw();XL();mi(4,48)|0;mi(8,48)|0;mi(11,48)|0;mi(15,48)|0;mi(2,48)|0;ed(10,0,0);return}function WL(){return}function XL(){return}function YL(){return 0}function ZL(a){a=a|0;var b=0;b=c[5458850]|0;do{if((b|0)!=0){if((c[b+32>>2]|0)==0){break}NL(a);return}}while(0);Sf(a|0,c[p>>2]|0)|0;return}function _L(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+8|0;d=b|0;if((a-1|0)>>>0>1>>>0){e=0;i=b;return e|0}if((vN(d)|0)!=0){e=0;i=b;return e|0}c[d>>2]=(c[d>>2]|0)+3&-4;f=vM(a)|0;e=f+76+(c[d>>2]|0)|0;i=b;return e|0}function $L(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+16|0;f=e|0;g=e+8|0;if(!((b|0)==48e3|(b|0)==24e3|(b|0)==16e3|(b|0)==12e3|(b|0)==8e3)){h=-1;i=e;return h|0}if((d-1|0)>>>0>1>>>0){h=-1;i=e;return h|0}j=a;if((vN(f)|0)==0){c[f>>2]=(c[f>>2]|0)+3&-4;k=vM(d)|0;l=k+76+(c[f>>2]|0)|0}else{l=0}n$(j|0,0,l|0)|0;if((vN(g)|0)!=0){h=-3;i=e;return h|0}l=(c[g>>2]|0)+3&-4;c[g>>2]=l;c[a+4>>2]=76;g=l+76|0;c[a>>2]=g;l=j+g|0;c[a+8>>2]=d;c[a+44>>2]=d;c[a+12>>2]=b;c[a+24>>2]=b;c[a+16>>2]=d;if((wN(a+76|0)|0)!=0){h=-3;i=e;return h|0}if((wM(l,b,d)|0)!=0){h=-3;i=e;return h|0}AM(l,10016,(l=i,i=i+8|0,c[l>>2]=0,l)|0)|0;i=l;c[a+56>>2]=0;c[a+60>>2]=(b|0)/400|0;h=0;i=e;return h|0}function aM(e,f,g,h,i,j,k){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var 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,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,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0;if((j|0)==0){l=-1;return l|0}m=a[e]|0;n=m&255;do{if((n&128|0)==0){if((n&96|0)==96){o=(n&8|0)==0?480:960;break}p=n>>>3&3;if((p|0)==3){o=2880;break}o=(48e3<>>3&3)|0)/400|0}}while(0);p=e+1|0;q=f-1|0;r=n&3;a:do{if((r|0)==0){s=p;t=q;u=q;v=0;w=1;x=45}else if((r|0)==2){if((f|0)<2){b[j>>1]=-1;l=-4;return l|0}n=a[p]|0;y=n&255;do{if((n&255)>>>0<252>>>0){z=1;A=y;B=y}else{if((f|0)>=3){C=(d[e+2|0]<<2)+y&65535;z=2;A=C;B=C;break}b[j>>1]=-1;l=-4;return l|0}}while(0);b[j>>1]=B;y=q-z|0;n=A<<16>>16;if(A<<16>>16<0|(n|0)>(y|0)){l=-4;return l|0}else{s=e+(z+1)|0;t=y-n|0;u=y;v=0;w=2;x=45;break}}else if((r|0)==1){if((g|0)!=0){D=2;E=1;F=q;G=q;H=p;x=46;break}if((q&1|0)==0){y=(q|0)/2|0;b[j>>1]=y;s=p;t=y;u=q;v=1;w=2;x=45;break}else{l=-4;return l|0}}else{if((f|0)<2){l=-4;return l|0}y=e+2|0;n=d[p]|0;C=n&63;if((C|0)==0){l=-4;return l|0}if((da(C,o)|0)>5760){l=-4;return l|0}I=f-2|0;b:do{if((n&64|0)==0){J=y;K=I}else{L=y;M=I;while(1){if((M|0)<1){l=-4;break}N=L+1|0;O=a[L]|0;P=O<<24>>24==-1;Q=M-1+(P?-254:-(O&255)|0)|0;if(P){L=N;M=Q}else{J=N;K=Q;break b}}return l|0}}while(0);if((K|0)<0){l=-4;return l|0}I=n>>>7^1;if((n&128|0)==0){if((g|0)!=0){D=C;E=I;F=K;G=q;H=J;x=46;break}y=(K|0)/(C|0)|0;if((da(y,C)|0)!=(K|0)){l=-4;return l|0}M=C-1|0;if((M|0)<=0){s=J;t=y;u=K;v=I;w=C;x=45;break}L=y&65535;Q=0;while(1){b[j+(Q<<1)>>1]=L;N=Q+1|0;if((N|0)<(M|0)){Q=N}else{s=J;t=y;u=K;v=I;w=C;x=45;break a}}}y=C-1|0;c:do{if((y|0)>0){Q=0;M=K;L=K;n=J;while(1){R=j+(Q<<1)|0;if((M|0)<1){x=31;break}N=a[n]|0;P=N&255;if((N&255)>>>0<252>>>0){S=1;T=P;U=P}else{if((M|0)<2){x=35;break}N=(d[n+1|0]<<2)+P&65535;S=2;T=N;U=N}b[R>>1]=U;N=M-S|0;P=T<<16>>16;if(T<<16>>16<0|(P|0)>(N|0)){l=-4;x=68;break}O=n+S|0;V=L-S-P|0;P=Q+1|0;if((P|0)<(y|0)){Q=P;M=N;L=V;n=O}else{W=N;X=V;Y=O;break c}}if((x|0)==31){b[R>>1]=-1;l=-4;return l|0}else if((x|0)==35){b[R>>1]=-1;l=-4;return l|0}else if((x|0)==68){return l|0}}else{W=K;X=K;Y=J}}while(0);if((X|0)<0){l=-4}else{s=Y;t=X;u=W;v=I;w=C;x=45;break}return l|0}}while(0);do{if((x|0)==45){if((g|0)!=0){D=w;E=v;F=u;G=t;H=s;x=46;break}if((t|0)>1275){l=-4;return l|0}else{b[j+(w-1<<1)>>1]=t;Z=s;_=w;break}}}while(0);d:do{if((x|0)==46){w=D-1|0;s=j+(w<<1)|0;if((F|0)<1){b[s>>1]=-1;l=-4;return l|0}t=a[H]|0;u=t&255;do{if((t&255)>>>0<252>>>0){$=1;aa=u;ba=u}else{if((F|0)>=2){v=(d[H+1|0]<<2)+u&65535;$=2;aa=v;ba=v;break}b[s>>1]=-1;l=-4;return l|0}}while(0);b[s>>1]=ba;u=F-$|0;t=aa<<16>>16;if(aa<<16>>16<0|(t|0)>(u|0)){l=-4;return l|0}C=H+$|0;if((E|0)==0){if((t|0)>(G|0)){l=-4}else{Z=C;_=D;break}return l|0}if((da(t,D)|0)>(u|0)){l=-4;return l|0}if((w|0)>0){ca=0;ea=aa}else{Z=C;_=D;break}while(1){b[j+(ca<<1)>>1]=ea;u=ca+1|0;if((u|0)>=(w|0)){Z=C;_=D;break d}ca=u;ea=b[s>>1]|0}}}while(0);if((i|0)!=0&(_|0)>0){ea=0;ca=Z;while(1){c[i+(ea<<2)>>2]=ca;D=ca+(b[j+(ea<<1)>>1]|0)|0;aa=ea+1|0;if((aa|0)<(_|0)){ea=aa;ca=D}else{fa=D;break}}}else{fa=Z}if((h|0)!=0){a[h]=m}if((k|0)==0){l=_;return l|0}c[k>>2]=fa-e;l=_;return l|0}function bM(d,e,f,g,h,j,k,l){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var 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,J=0;m=i;i=i+112|0;n=m|0;o=m+8|0;p=m+16|0;if(j>>>0>1>>>0){q=-1;i=m;return q|0}r=(j|0)!=0;j=(f|0)==0;s=(e|0)==0;do{if(r|j|s){if(((h|0)%((c[d+12>>2]|0)/400|0|0)|0|0)==0){break}else{q=-1}i=m;return q|0}}while(0);if(j|s){s=d+8|0;j=g;t=0;do{u=cM(d,0,0,j,h-t|0,0)|0;if((u|0)<0){q=u;v=47;break}j=j+((da(c[s>>2]|0,u)|0)<<2)|0;t=u+t|0;}while((t|0)<(h|0));if((v|0)==47){i=m;return q|0}c[d+68>>2]=t;q=t;i=m;return q|0}if((f|0)<0){q=-1;i=m;return q|0}t=a[e]|0;s=t&255;do{if((s&128|0)==0){j=(s&96|0)==96?1001:1e3;if((s&96|0)==96){u=d+12|0;w=s>>>4&1|1104;x=u;y=u}else{u=d+12|0;w=(s>>>5&3)+1101|0;x=u;y=u}u=c[y>>2]|0;if((s&96|0)==96){if((s&8|0)==0){z=(u|0)/100|0;A=j;B=w;C=x;break}else{z=(u|0)/50|0;A=j;B=w;C=x;break}}else{D=s>>>3&3;if((D|0)==3){z=(u*60|0|0)/1e3|0;A=j;B=w;C=x;break}else{z=(u<>>5&3;D=d+12|0;z=(c[D>>2]<<(s>>>3&3)|0)/400|0;A=1002;B=(j|0)==0?1101:j+1102|0;C=D}}while(0);s=(t&4)!=0?2:1;t=p|0;x=aM(e,f,k,o,0,t,n)|0;o=c[n>>2]|0;n=e+o|0;if(!r){if((x|0)<0){q=x;i=m;return q|0}if((da(x,z)|0)>(h|0)){q=-2;i=m;return q|0}c[d+52>>2]=A;c[d+48>>2]=B;c[d+60>>2]=z;c[d+44>>2]=s;a:do{if((x|0)>0){r=d+8|0;e=o;k=0;f=0;w=g;y=n;while(1){D=p+(f<<1)|0;j=cM(d,y,b[D>>1]|0,w,h-k|0,0)|0;if((j|0)<0){q=j;break}u=b[D>>1]|0;D=u+e|0;E=w+((da(c[r>>2]|0,j)|0)<<2)|0;F=j+k|0;j=f+1|0;if((j|0)<(x|0)){e=D;k=F;f=j;w=E;y=y+u|0}else{G=D;H=F;break a}}i=m;return q|0}else{G=o;H=0}}while(0);if((l|0)!=0){c[l>>2]=G}c[d+68>>2]=H;q=H;i=m;return q|0}do{if(!((z|0)>=(h|0)|(A|0)==1002)){H=d+52|0;if((c[H>>2]|0)==1002){break}G=d+68|0;l=c[G>>2]|0;o=h-z|0;b:do{if(((o|0)%((c[C>>2]|0)/400|0|0)|0|0)==0){x=d+8|0;p=g;y=0;do{w=cM(d,0,0,p,o-y|0,0)|0;if((w|0)<0){I=w;break b}J=c[x>>2]|0;p=p+((da(J,w)|0)<<2)|0;y=w+y|0;}while((y|0)<(o|0));c[G>>2]=y;if((y|0)<0){I=y;break}c[H>>2]=A;c[d+48>>2]=B;c[d+60>>2]=z;c[d+44>>2]=s;p=cM(d,n,b[t>>1]|0,g+((da(J,o)|0)<<2)|0,z,1)|0;if((p|0)<0){q=p;i=m;return q|0}c[G>>2]=h;q=h;i=m;return q|0}else{I=-1}}while(0);c[G>>2]=l;q=I;i=m;return q|0}}while(0);if(((h|0)%((c[C>>2]|0)/400|0|0)|0|0)!=0){q=-1;i=m;return q|0}C=d+8|0;I=g;g=0;do{z=cM(d,0,0,I,h-g|0,0)|0;if((z|0)<0){q=z;v=47;break}I=I+((da(c[C>>2]|0,z)|0)<<2)|0;g=z+g|0;}while((g|0)<(h|0));if((v|0)==47){i=m;return q|0}c[d+68>>2]=g;q=g;i=m;return q|0} + + + +function zq(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,U=0,V=0,W=0;b=a|0;d=c[b>>2]|0;if((d-2|0)<=0){return}e=a+4|0;f=0;h=d;d=c[e>>2]|0;a:while(1){i=f+1|0;j=f+2|0;k=f+3|0;l=d;m=h;n=d;while(1){o=(l|0)>0;b:do{if(o){p=0;while(1){q=+g[a+16+(f*1548|0)+(p*12|0)>>2];r=+g[a+16+(j*1548|0)+(p*12|0)>>2];s=+g[a+16+(f*1548|0)+(p*12|0)+4>>2];t=+g[a+16+(j*1548|0)+(p*12|0)+4>>2];u=+g[a+16+(f*1548|0)+(p*12|0)+8>>2];v=+g[a+16+(j*1548|0)+(p*12|0)+8>>2];w=+g[a+16+(i*1548|0)+(p*12|0)>>2];x=+g[a+16+(i*1548|0)+(p*12|0)+4>>2];y=+g[a+16+(i*1548|0)+(p*12|0)+8>>2];z=((q+w)*.5+(r+w)*.5)*.5-(q+r)*.5;r=((s+x)*.5+(t+x)*.5)*.5-(s+t)*.5;t=((u+y)*.5+(v+y)*.5)*.5-(u+v)*.5;A=p+1|0;if(!(+T(z*z+r*r+t*t)<16.0)){B=p;break b}if((A|0)<(l|0)){p=A}else{B=A;break}}}else{B=0}}while(0);if((B|0)==(l|0)){break}if(o){p=0;A=m;while(1){t=+g[a+16+(f*1548|0)+(p*12|0)>>2];r=+g[a+16+(f*1548|0)+(p*12|0)+4>>2];z=+g[a+16+(f*1548|0)+(p*12|0)+8>>2];C=a+16+(i*1548|0)+(p*12|0)|0;v=+g[C>>2];D=a+16+(i*1548|0)+(p*12|0)+4|0;u=+g[D>>2];E=a+16+(i*1548|0)+(p*12|0)+8|0;y=+g[E>>2];F=a+16+(j*1548|0)+(p*12|0)|0;s=+g[F>>2];G=a+16+(j*1548|0)+(p*12|0)+4|0;x=+g[G>>2];H=a+16+(j*1548|0)+(p*12|0)+8|0;q=+g[H>>2];I=A-1|0;if((I|0)>(i|0)){J=A;K=I;while(1){I=J+1|0;g[a+16+(I*1548|0)+(p*12|0)>>2]=+g[a+16+(K*1548|0)+(p*12|0)>>2];g[a+16+(I*1548|0)+(p*12|0)+4>>2]=+g[a+16+(K*1548|0)+(p*12|0)+4>>2];g[a+16+(I*1548|0)+(p*12|0)+8>>2]=+g[a+16+(K*1548|0)+(p*12|0)+8>>2];I=K-1|0;if((I|0)>(i|0)){J=K;K=I}else{break}}}w=(t+v)*.5;g[C>>2]=w;L=(v+s)*.5;g[a+16+(k*1548|0)+(p*12|0)>>2]=L;g[F>>2]=(L+w)*.5;w=(r+u)*.5;g[D>>2]=w;L=(u+x)*.5;g[a+16+(k*1548|0)+(p*12|0)+4>>2]=L;g[G>>2]=(L+w)*.5;w=(z+y)*.5;g[E>>2]=w;L=(y+q)*.5;g[a+16+(k*1548|0)+(p*12|0)+8>>2]=L;g[H>>2]=(L+w)*.5;K=p+1|0;J=c[e>>2]|0;I=c[b>>2]|0;if((K|0)<(J|0)){p=K;A=I}else{M=J;N=I;O=J;break}}}else{M=l;N=m;O=n}A=N+2|0;c[b>>2]=A;if((f|0)<(N|0)){l=M;m=A;n=O}else{P=19;break a}}if(o){k=0;A=m;p=l;J=n;while(1){if((j|0)<(A|0)){I=j;do{K=I-1|0;g[a+16+(K*1548|0)+(k*12|0)>>2]=+g[a+16+(I*1548|0)+(k*12|0)>>2];g[a+16+(K*1548|0)+(k*12|0)+4>>2]=+g[a+16+(I*1548|0)+(k*12|0)+4>>2];g[a+16+(K*1548|0)+(k*12|0)+8>>2]=+g[a+16+(I*1548|0)+(k*12|0)+8>>2];I=I+1|0;Q=c[b>>2]|0;}while((I|0)<(Q|0));I=c[e>>2]|0;R=Q;S=I;U=I}else{R=A;S=p;U=J}I=k+1|0;if((I|0)<(S|0)){k=I;A=R;p=S;J=U}else{V=R;W=U;break}}}else{V=m;W=n}J=V-1|0;c[b>>2]=J;if((i|0)<(V-3|0)){f=i;h=J;d=W}else{P=19;break}}if((P|0)==19){return}}function Aq(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.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;b=a|0;d=c[b>>2]|0;if((d-1|0)<=0){return}e=a+4|0;f=0;h=c[e>>2]|0;i=d;while(1){d=(h|0)>0;a:do{if(d){j=f+1|0;k=0;while(1){l=+g[a+16+(f*1548|0)+(k*12|0)>>2]- +g[a+16+(j*1548|0)+(k*12|0)>>2];if(l<-.1|l>.1){m=k;break a}l=+g[a+16+(f*1548|0)+(k*12|0)+4>>2]- +g[a+16+(j*1548|0)+(k*12|0)+4>>2];if(l<-.1|l>.1){m=k;break a}l=+g[a+16+(f*1548|0)+(k*12|0)+8>>2]- +g[a+16+(j*1548|0)+(k*12|0)+8>>2];n=k+1|0;if(l<-.1|l>.1){m=k;break a}if((n|0)<(h|0)){k=n}else{m=n;break}}}else{m=0}}while(0);if((m|0)==(h|0)){if(d){k=f+2|0;j=0;n=i;o=h;while(1){if((k|0)<(n|0)){p=k;do{q=p-1|0;g[a+16+(q*1548|0)+(j*12|0)>>2]=+g[a+16+(p*1548|0)+(j*12|0)>>2];g[a+16+(q*1548|0)+(j*12|0)+4>>2]=+g[a+16+(p*1548|0)+(j*12|0)+4>>2];g[a+16+(q*1548|0)+(j*12|0)+8>>2]=+g[a+16+(p*1548|0)+(j*12|0)+8>>2];p=p+1|0;r=c[b>>2]|0;}while((p|0)<(r|0));s=r;t=c[e>>2]|0}else{s=n;t=o}p=j+1|0;if((p|0)<(t|0)){j=p;n=s;o=t}else{u=t;v=s;break}}}else{u=h;v=i}o=v-1|0;c[b>>2]=o;w=f-1|0;x=u;y=o}else{w=f;x=h;y=i}o=w+1|0;if((o|0)<(y-1|0)){f=o;h=x;i=y}else{break}}return}function Bq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.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,_=0;d=i;i=i+16384|0;e=d|0;f=d+8192|0;if((c[(c[5497018]|0)+32>>2]|0)==0){h=8192;j=0;k=8192;l=0;i=d;return}if((c[a+200>>2]|0)==0){h=8192;j=0;k=8192;l=0;i=d;return}m=b+28|0;n=c[b+24>>2]|0;if((n|0)>0){o=+g[a>>2];p=+g[a+4>>2];q=+g[a+8>>2];r=+g[a+12>>2];s=+g[a+16>>2];t=+g[a+20>>2];u=0;v=c[m>>2]|0;while(1){w=c[v+16>>2]|0;x=+g[v>>2];y=+g[v+4>>2];z=+g[v+8>>2];A=+g[a+48+(w*12|0)>>2]*x+ +g[a+48+(w*12|0)+4>>2]*y+ +g[a+48+(w*12|0)+8>>2]*z;B=+g[v+12>>2];C=A+(x*o+y*p+z*q-B);D=A+(x*r+y*s+z*t-B);c[e+(u<<2)>>2]=C>0.0;do{if(C==D){g[f+(u<<2)>>2]=99999.0}else{B=C/(C-D);w=f+(u<<2)|0;g[w>>2]=B;if(B>0.0){break}g[w>>2]=99999.0}}while(0);w=u+1|0;if((w|0)<(n|0)){u=w;v=v+20|0}else{break}}}v=b+32|0;u=c[v>>2]|0;if((u|0)<=0){h=8192;j=0;k=8192;l=0;i=d;return}n=a+212|0;w=a|0;E=a+4|0;F=a+8|0;G=a+12|0;H=a+16|0;I=a+20|0;J=a+228|0;K=a+232|0;L=a+236|0;M=a+240|0;N=c[b+36>>2]|0;O=0;P=u;while(1){u=N|0;Q=c[u>>2]|0;do{if((c[e+(Q<<2)>>2]|0)==0){R=P}else{t=+g[f+(Q<<2)>>2];if(t<0.0){R=P;break}if(t>+g[n>>2]){R=P;break}S=c[N+4>>2]|0;a:do{if((S|0)>0){T=0;while(1){U=c[N+8+(T<<2)>>2]|0;s=+g[f+(U<<2)>>2];if((c[e+(U<<2)>>2]|0)==(c[N+112+(T<<2)>>2]|0)){if(st){V=T;break a}}U=T+1|0;if((U|0)<(S|0)){T=U}else{V=U;break}}}else{V=0}}while(0);if((V|0)!=(S|0)){R=P;break}T=c[7573106]|0;if((T|0)==0){U=gt(53504,47664,0)|0;c[7573106]=U;W=U}else{W=T}if((c[W+32>>2]|0)!=0){c[5389054]=b;c[5389056]=N}T=c[u>>2]|0;U=c[m>>2]|0;X=c[U+(T*20|0)+16>>2]|0;Y=U+(T*20|0)|0;t=+g[Y>>2];Z=U+(T*20|0)+4|0;s=+g[Z>>2];_=U+(T*20|0)+8|0;r=+g[_>>2];q=+g[a+48+(X*12|0)>>2]*t+ +g[a+48+(X*12|0)+4>>2]*s+ +g[a+48+(X*12|0)+8>>2]*r;X=U+(T*20|0)+12|0;p=+g[X>>2];o=q+(t*+g[w>>2]+s*+g[E>>2]+r*+g[F>>2]-p);D=(o+-.125)/(o-(q+(t*+g[G>>2]+s*+g[H>>2]+r*+g[I>>2]-p)));g[n>>2]=D<0.0?0.0:D;g[J>>2]=+g[Y>>2];g[K>>2]=+g[Z>>2];g[L>>2]=+g[_>>2];g[M>>2]=+g[X>>2];R=c[v>>2]|0}}while(0);u=O+1|0;if((u|0)<(R|0)){N=N+320|0;O=u;P=R}else{break}}h=8192;j=0;k=8192;l=0;i=d;return}function Cq(a,b){a=a|0;b=b|0;var d=0,e=0,f=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.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ba=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0,va=0,wa=0.0,xa=0.0,ya=0.0,za=0.0,Aa=0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0.0,La=0,Ma=0,Na=0.0,Oa=0.0,Pa=0.0,Qa=0.0,Ra=0.0,Sa=0.0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0,Xa=0.0,Ya=0.0,Za=0.0,_a=0;if((Zq(a+160|0,a+172|0,b|0,b+12|0)|0)==0){return}if((c[a+200>>2]|0)!=0){Bq(a,b);return}d=b+32|0;e=c[d>>2]|0;if((e|0)<=0){return}f=b+28|0;h=a+260|0;i=a|0;j=a+4|0;k=a+8|0;l=a+12|0;m=a+16|0;n=a+20|0;o=a+212|0;p=a+228|0;q=a+232|0;r=a+236|0;s=a+240|0;t=a+264|0;u=a+272|0;v=a+276|0;w=a+280|0;x=1;y=c[b+36>>2]|0;z=0.0;A=0.0;B=0.0;C=0.0;D=e;while(1){e=c[y>>2]|0;E=c[f>>2]|0;F=+g[E+(e*20|0)>>2];G=+g[E+(e*20|0)+4>>2];H=+g[E+(e*20|0)+8>>2];I=+g[E+(e*20|0)+12>>2];J=(c[h>>2]|0)==0;do{if(J){K=c[E+(e*20|0)+16>>2]|0;L=+g[i>>2];M=+g[j>>2];N=+g[k>>2];O=+g[l>>2];P=+g[m>>2];Q=+g[n>>2];R=O;T=P;U=Q;V=L;W=M;X=N;Y=I-(F*+g[a+48+(K*12|0)>>2]+G*+g[a+48+(K*12|0)+4>>2]+H*+g[a+48+(K*12|0)+8>>2]);Z=L;_=M;$=N;aa=O;ba=P;ca=Q}else{Q=I+ +g[t>>2];P=+g[u>>2];O=+g[v>>2];N=+g[w>>2];M=+g[i>>2];if(F*P+G*O+H*N>0.0){L=+g[j>>2];da=+g[k>>2];ea=+g[l>>2];fa=+g[m>>2];ga=+g[n>>2];R=ea-P;T=fa-O;U=ga-N;V=M-P;W=L-O;X=da-N;Y=Q;Z=M;_=L;$=da;aa=ea;ba=fa;ca=ga;break}else{ga=+g[j>>2];fa=+g[k>>2];ea=+g[l>>2];da=+g[m>>2];L=+g[n>>2];R=P+ea;T=O+da;U=N+L;V=P+M;W=O+ga;X=N+fa;Y=Q;Z=M;_=ga;$=fa;aa=ea;ba=da;ca=L;break}}}while(0);I=H*X+(G*W+F*V)-Y;L=H*U+(G*T+F*R)-Y;if(I>0.0){if(L<.125&L0.0|L>0.0){da=I;if(I>L){ea=(da+-.125)/(I-L);fa=ea<0.0?0.0:ea;if(fa>-1.0){na=F;oa=G;pa=H;qa=Y;ra=1.0;sa=fa;break}else{ta=1.0;ha=18;break}}fa=(da+.125)/(I-L);da=fa>1.0?1.0:fa;if(!(da<1.0)){ta=1.0;ha=18;break}ta=da;ha=18}else{ta=1.0;ha=18}}while(0);if((ha|0)==18){ha=0;na=C;oa=B;pa=A;qa=z;ra=ta;sa=-1.0}e=c[y+4>>2]|0;a:do{if((e|0)>0){da=sa;fa=ra;K=0;ua=-1;ea=qa;ga=pa;M=oa;Q=na;while(1){va=c[y+8+(K<<2)>>2]|0;N=+g[E+(va*20|0)>>2];if((c[y+112+(K<<2)>>2]|0)==0){wa=+g[E+(va*20|0)+12>>2];xa=N;ya=+g[E+(va*20|0)+4>>2];za=+g[E+(va*20|0)+8>>2]}else{wa=-0.0- +g[E+(va*20|0)+12>>2];xa=-0.0-N;ya=-0.0- +g[E+(va*20|0)+4>>2];za=-0.0- +g[E+(va*20|0)+8>>2]}do{if(J){Aa=c[E+(va*20|0)+16>>2]|0;Ba=aa;Ca=ba;Da=ca;Ea=Z;Fa=_;Ga=$;Ha=wa+ +S(+(xa*+g[a+48+(Aa*12|0)>>2]+ya*+g[a+48+(Aa*12|0)+4>>2]+za*+g[a+48+(Aa*12|0)+8>>2]))}else{N=wa+ +g[t>>2];O=+g[u>>2];P=+g[v>>2];Ia=+g[w>>2];if(xa*O+ya*P+za*Ia>0.0){Ba=aa-O;Ca=ba-P;Da=ca-Ia;Ea=Z-O;Fa=_-P;Ga=$-Ia;Ha=N;break}else{Ba=O+aa;Ca=P+ba;Da=Ia+ca;Ea=O+Z;Fa=P+_;Ga=Ia+$;Ha=N;break}}}while(0);N=za*Ga+(ya*Fa+xa*Ea)-Ha;Ia=za*Da+(ya*Ca+xa*Ba)-Ha;if(N>0.0){if(!(Ia<.125&Ia0.0|Ia>0.0){P=N;if(N>Ia){O=(P+-.125)/(N-Ia);Ra=O<0.0?0.0:O;if(Ra>da){Sa=xa;Ta=ya;Ua=za;Va=Ha;Wa=K;Xa=Ra;Ya=fa;break}else{Za=fa;ha=35;break}}Ra=(P+.125)/(N-Ia);P=Ra>1.0?1.0:Ra;if(!(P=0.0)){ia=Qa;ja=Pa;ka=Oa;la=Na;ma=D;break}if(!(Ja<+g[o>>2])){ia=Qa;ja=Pa;ka=Oa;la=Na;ma=D;break}Q=Ja<0.0?0.0:Ja;ua=c[7573104]|0;if((ua|0)==0){K=gt(53504,47664,0)|0;c[7573104]=K;if((K|0)!=0){_a=K;ha=42}}else{_a=ua;ha=42}do{if((ha|0)==42){ha=0;if((c[_a+32>>2]|0)==0){break}c[5389054]=b;c[5389056]=y}}while(0);g[o>>2]=Q;g[p>>2]=Qa;g[q>>2]=Pa;g[r>>2]=Oa;g[s>>2]=Na;ia=Qa;ja=Pa;ka=Oa;la=Na;ma=c[d>>2]|0}}while(0);if((x|0)>=(ma|0)){break}x=x+1|0;y=y+320|0;z=la;A=ka;B=ja;C=ia;D=ma}return}function Dq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0,R=0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0;if((c[a+200>>2]|0)!=0){d=0;return d|0}e=c[b+32>>2]|0;if((e|0)<=0){d=0;return d|0}f=c[b+28>>2]|0;h=(c[a+260>>2]|0)==0;i=a|0;j=a+4|0;k=a+8|0;l=a+264|0;m=a+272|0;n=a+276|0;o=a+280|0;p=0;q=c[b+36>>2]|0;while(1){b=c[q>>2]|0;r=+g[f+(b*20|0)>>2];s=+g[f+(b*20|0)+4>>2];t=+g[f+(b*20|0)+8>>2];u=+g[f+(b*20|0)+12>>2];do{if(h){v=c[f+(b*20|0)+16>>2]|0;w=+g[i>>2];x=+g[j>>2];y=+g[k>>2];z=w;A=x;B=y;C=u-(r*+g[a+48+(v*12|0)>>2]+s*+g[a+48+(v*12|0)+4>>2]+t*+g[a+48+(v*12|0)+8>>2]);D=w;E=x;F=y}else{y=u+ +g[l>>2];x=+g[m>>2];w=+g[n>>2];G=+g[o>>2];H=+g[i>>2];if(r*x+s*w+t*G>0.0){I=+g[j>>2];J=+g[k>>2];z=H-x;A=I-w;B=J-G;C=y;D=H;E=I;F=J;break}else{J=+g[j>>2];I=+g[k>>2];z=x+H;A=w+J;B=G+I;C=y;D=H;E=J;F=I;break}}}while(0);if(!(t*B+(s*A+r*z)-C>0.0)){b=c[q+4>>2]|0;a:do{if((b|0)>0){if(h){v=0;while(1){K=c[q+8+(v<<2)>>2]|0;u=+g[f+(K*20|0)>>2];if((c[q+112+(v<<2)>>2]|0)==0){L=u;M=+g[f+(K*20|0)+4>>2];N=+g[f+(K*20|0)+8>>2];O=+g[f+(K*20|0)+12>>2]}else{L=-0.0-u;M=-0.0- +g[f+(K*20|0)+4>>2];N=-0.0- +g[f+(K*20|0)+8>>2];O=-0.0- +g[f+(K*20|0)+12>>2]}P=c[f+(K*20|0)+16>>2]|0;K=v+1|0;if(N*F+(M*E+L*D)-(O+ +S(+(L*+g[a+48+(P*12|0)>>2]+M*+g[a+48+(P*12|0)+4>>2]+N*+g[a+48+(P*12|0)+8>>2])))>0.0){Q=v;break a}if((K|0)<(b|0)){v=K}else{Q=K;break a}}}else{R=0}while(1){v=c[q+8+(R<<2)>>2]|0;u=+g[f+(v*20|0)>>2];if((c[q+112+(R<<2)>>2]|0)==0){T=u;U=+g[f+(v*20|0)+4>>2];V=+g[f+(v*20|0)+8>>2];W=+g[f+(v*20|0)+12>>2]}else{T=-0.0-u;U=-0.0- +g[f+(v*20|0)+4>>2];V=-0.0- +g[f+(v*20|0)+8>>2];W=-0.0- +g[f+(v*20|0)+12>>2]}u=+g[m>>2];I=+g[n>>2];J=+g[o>>2];if(T*u+U*I+V*J>0.0){X=D-u;Y=E-I;Z=F-J}else{X=u+D;Y=I+E;Z=J+F}v=R+1|0;if(V*Z+(U*Y+T*X)-(W+ +g[l>>2])>0.0){Q=R;break a}if((v|0)<(b|0)){R=v}else{Q=v;break}}}else{Q=0}}while(0);if((Q|0)>=(b|0)){d=1;_=27;break}}v=p+1|0;if((v|0)<(e|0)){p=v;q=q+320|0}else{d=0;_=27;break}}if((_|0)==27){return d|0}return 0}function Eq(a){a=a|0;var b=0,d=0,e=0,f=0,h=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.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0,ba=0,ca=0;b=i;i=i+64|0;d=b|0;e=b+8|0;f=b+24|0;h=c[7573110]|0;if((h|0)==0){j=gt(43560,182648,0)|0;c[7573110]=j;k=j}else{k=h}h=c[k+32>>2]|0;if((h|0)!=1){Xy(a,h);i=b;return}h=c[5389054]|0;if((h|0)==0){i=b;return}if((c[7573112]|0)==0){c[7573112]=gt(178536,174328,0)|0;l=c[5389054]|0}else{l=h}h=l+32|0;k=c[h>>2]|0;if((k|0)>0){j=l+28|0;m=e|0;n=e+4|0;o=e+8|0;p=e+12|0;e=c[l+36>>2]|0;l=0;q=k;while(1){k=e+4|0;r=c[k>>2]|0;if((r|0)>-1){s=e|0;t=0;u=r;while(1){if((t|0)<(u|0)){v=(c[e+112+(t<<2)>>2]|0)!=0;w=e+8+(t<<2)|0}else{v=0;w=s}r=c[w>>2]|0;x=c[j>>2]|0;y=+g[x+(r*20|0)>>2];g[m>>2]=y;z=+g[x+(r*20|0)+4>>2];g[n>>2]=z;A=+g[x+(r*20|0)+8>>2];g[o>>2]=A;B=+g[x+(r*20|0)+12>>2];g[p>>2]=B;if(v){C=+g[219094]-y;g[m>>2]=C;D=+g[219095]-z;g[n>>2]=D;E=+g[219096]-A;g[o>>2]=E;F=-0.0-B;g[p>>2]=F;G=F;H=C;I=D;J=E}else{G=B;H=y;I=z;J=A}A=+g[(c[7573112]|0)+28>>2]+G;g[p>>2]=A;z=+S(+(-0.0-I*(I>0.0?15.0:-15.0)-H*(H>0.0?15.0:-15.0)-J*(J>0.0?28.0:-28.0)))+A;g[p>>2]=z;x=Kq(m,z)|0;c[d>>2]=x;K=c[k>>2]|0;L=(x|0)==0;a:do{if((K|0)>-1){M=0;N=K;O=L;P=x;while(1){if(O){Q=30;break a}if((M|0)<(N|0)){R=c[e+112+(M<<2)>>2]|0;T=e+8+(M<<2)|0}else{R=0;T=s}U=c[T>>2]|0;if((U|0)==(r|0)){V=N;W=P}else{X=c[j>>2]|0;z=+g[X+(U*20|0)>>2];g[m>>2]=z;A=+g[X+(U*20|0)+4>>2];g[n>>2]=A;y=+g[X+(U*20|0)+8>>2];g[o>>2]=y;B=+g[X+(U*20|0)+12>>2];g[p>>2]=B;if((R|0)==0){E=+g[219094]-z;g[m>>2]=E;D=+g[219095]-A;g[n>>2]=D;C=+g[219096]-y;g[o>>2]=C;F=-0.0-B;g[p>>2]=F;Y=F;Z=E;_=D;$=C}else{Y=B;Z=z;_=A;$=y}y=Y- +g[(c[7573112]|0)+28>>2];g[p>>2]=y;A=y- +S(+(-0.0-_*(_>0.0?15.0:-15.0)-Z*(Z>0.0?15.0:-15.0)-$*($>0.0?28.0:-28.0)));g[p>>2]=A;Mq(d,m,A,.10000000149011612);V=c[k>>2]|0;W=c[d>>2]|0}U=(W|0)==0;if((M|0)<(V|0)){M=M+1|0;N=V;O=U;P=W}else{aa=W;ba=U;Q=25;break}}}else{aa=x;ba=L;Q=25}}while(0);do{if((Q|0)==25){Q=0;if(ba){Q=30;break}L=c[aa>>2]|0;x=aa+4|0;if((e|0)==(c[5389056]|0)){Tk[a&255](4,L,x)}else{Tk[a&255](1,L,x)}Iq(c[d>>2]|0)}}while(0);if((Q|0)==30){Q=0;Sr(171024,(x=i,i=i+1|0,i=i+7&-8,c[x>>2]=0,x)|0);i=x}x=c[k>>2]|0;if((t|0)<(x|0)){t=t+1|0;u=x}else{break}}ca=c[h>>2]|0}else{ca=q}u=l+1|0;if((u|0)<(ca|0)){e=e+320|0;l=u;q=ca}else{break}}}ca=f|0;g[ca>>2]=+g[7848];q=f+4|0;g[q>>2]=+g[7846];l=f+8|0;g[l>>2]=+g[7844];e=f+12|0;g[e>>2]=+g[7842];h=f+16|0;g[h>>2]=+g[7840];Q=f+20|0;g[Q>>2]=+g[7838];d=f+24|0;g[d>>2]=+g[7836];aa=f+28|0;g[aa>>2]=+g[7834];ba=f+32|0;g[ba>>2]=+g[7832];Tk[a&255](2,3,ca);g[ca>>2]=+g[7836];g[q>>2]=+g[7834];g[l>>2]=+g[7832];g[e>>2]=+g[7830];g[h>>2]=+g[7828];g[Q>>2]=+g[7826];g[d>>2]=+g[7848];g[aa>>2]=+g[7846];g[ba>>2]=+g[7844];Tk[a&255](2,3,ca);i=b;return}function Fq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0;e=i;i=i+16|0;f=e|0;h=f|0;j=b+4|0;k=b+8|0;l=d+4|0;m=d+8|0;n=+g[a>>2];o=+g[b>>2]-n;p=a+4|0;q=+g[p>>2];r=+g[j>>2]-q;s=a+8|0;t=+g[s>>2];u=+g[k>>2]-t;v=+g[d>>2]-n;n=+g[l>>2]-q;q=+g[m>>2]-t;g[h>>2]=n*u-r*q;w=f+4|0;g[w>>2]=o*q-v*u;x=f+8|0;g[x>>2]=v*r-o*n;if(+wB(h)==0.0){y=-1;i=e;return y|0}n=+g[a>>2];o=+g[h>>2];r=+g[p>>2];v=+g[w>>2];u=+g[s>>2];q=+g[x>>2];t=n*o+r*v+u*q;g[f+12>>2]=t;f=c[4938830]|0;do{if((f|0)>0){x=0;a:do{z=+g[19680408+(x*20|0)>>2];A=+g[19680412+(x*20|0)>>2];B=+g[19680416+(x*20|0)>>2];do{if(!(o*z+v*A+q*B<0.0)){C=+g[19680420+(x*20|0)>>2];D=z*n+A*r+B*u-C;if(D<-.1|D>.1){break}D=z*+g[b>>2]+A*+g[j>>2]+B*+g[k>>2]-C;if(D<-.1|D>.1){break}D=z*+g[d>>2]+A*+g[l>>2]+B*+g[m>>2]-C;if(!(D<-.1|D>.1)){y=x;E=11;break a}}}while(0);x=x+1|0;}while((x|0)<(f|0));if((E|0)==11){i=e;return y|0}if((f|0)!=2048){break}Ur(1,52776,(x=i,i=i+1|0,i=i+7&-8,c[x>>2]=0,x)|0);i=x;return 0}}while(0);g[19680408+(f*20|0)>>2]=o;g[19680412+(f*20|0)>>2]=v;g[19680416+(f*20|0)>>2]=q;g[19680420+(f*20|0)>>2]=t;E=o<0.0|0;m=v<0.0?E|2:E;c[19680424+(f*20|0)>>2]=q<0.0?m|4:m;c[4938830]=f+1;y=f;i=e;return y|0}function Gq(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;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,J=0,K=0.0,L=0;j=i;i=i+16|0;k=j|0;if((h|0)==(-1|0)){c[k>>2]=d+16+(e*1548|0)+(f*12|0);l=e+1|0;c[k+4>>2]=d+16+(l*1548|0)+(f*12|0);m=f+1|0;c[k+8>>2]=d+16+(l*1548|0)+(m*12|0);c[k+12>>2]=d+16+(e*1548|0)+(m*12|0);n=4}else if((h|0)==0){c[k>>2]=d+16+(e*1548|0)+(f*12|0);m=e+1|0;c[k+4>>2]=d+16+(m*1548|0)+(f*12|0);c[k+8>>2]=d+16+(m*1548|0)+((f+1|0)*12|0);n=3}else if((h|0)==1){h=f+1|0;c[k>>2]=d+16+((e+1|0)*1548|0)+(h*12|0);c[k+4>>2]=d+16+(e*1548|0)+(h*12|0);c[k+8>>2]=d+16+(e*1548|0)+(f*12|0);n=3}else{Ur(0,164520,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o}h=b+4|0;if((c[h>>2]|0)<=0){i=j;return}m=d+16+(e*1548|0)+(f*12|0)|0;l=d+16+(e*1548|0)+(f*12|0)+4|0;p=d+16+(e*1548|0)+(f*12|0)+8|0;q=e+1|0;r=d+16+(q*1548|0)+(f*12|0)|0;s=d+16+(q*1548|0)+(f*12|0)+4|0;t=d+16+(q*1548|0)+(f*12|0)+8|0;u=f+1|0;f=d+16+(q*1548|0)+(u*12|0)|0;v=d+16+(q*1548|0)+(u*12|0)+4|0;w=d+16+(q*1548|0)+(u*12|0)+8|0;q=d+16+(e*1548|0)+(u*12|0)|0;x=d+16+(e*1548|0)+(u*12|0)+4|0;y=d+16+(e*1548|0)+(u*12|0)+8|0;u=0;do{e=b+8+(u<<2)|0;d=c[e>>2]|0;z=19680408+(d*20|0)|0;A=19680412+(d*20|0)|0;B=19680416+(d*20|0)|0;C=19680420+(d*20|0)|0;do{if((d|0)==-1){D=0;while(1){E=D+1|0;if((E|0)<(n|0)){D=E}else{F=0;G=0;H=17;break}}}else{D=0;E=0;I=0;do{J=c[k+(D<<2)>>2]|0;K=+g[J>>2]*+g[z>>2]+ +g[J+4>>2]*+g[A>>2]+ +g[J+8>>2]*+g[B>>2]- +g[C>>2];if(K>.1){L=0}else{L=K<-.1?1:2}E=((L|0)==0)+E|0;I=((L|0)==1)+I|0;D=D+1|0;}while((D|0)<(n|0));D=(E|0)!=0;J=(I|0)==0;if(D&J){c[b+112+(u<<2)>>2]=1;break}if(D|J){F=E;G=I;H=17;break}c[b+112+(u<<2)>>2]=0}}while(0);do{if((H|0)==17){H=0;if((G|F|0)==0){c[e>>2]=-1;break}Tr(161560,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;c[b+112+(u<<2)>>2]=0;if(a[31400]|0){break}a[31400]=1;g[7848]=+g[m>>2];g[7846]=+g[l>>2];g[7844]=+g[p>>2];g[7842]=+g[r>>2];g[7840]=+g[s>>2];g[7838]=+g[t>>2];g[7836]=+g[f>>2];g[7834]=+g[v>>2];g[7832]=+g[w>>2];g[7830]=+g[q>>2];g[7828]=+g[x>>2];g[7826]=+g[y>>2]}}while(0);u=u+1|0;}while((u|0)<(c[h>>2]|0));i=j;return}function Hq(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0;b=i;i=i+48|0;d=b|0;e=b+16|0;f=b+24|0;h=c[a>>2]|0;if((h|0)==-1){j=0;i=b;return j|0}k=d|0;g[k>>2]=+g[19680408+(h*20|0)>>2];l=d+4|0;g[l>>2]=+g[19680412+(h*20|0)>>2];m=d+8|0;g[m>>2]=+g[19680416+(h*20|0)>>2];n=+g[19680420+(h*20|0)>>2];h=d+12|0;g[h>>2]=n;d=Kq(k,n)|0;c[e>>2]=d;o=a+4|0;p=(d|0)==0;a:do{if((c[o>>2]|0)>0){q=0;r=d;s=p;while(1){if(s){j=0;t=13;break}u=c[a+8+(q<<2)>>2]|0;if((u|0)==-1){break}n=+g[19680408+(u*20|0)>>2];g[k>>2]=n;v=+g[19680412+(u*20|0)>>2];g[l>>2]=v;w=+g[19680416+(u*20|0)>>2];g[m>>2]=w;x=+g[19680420+(u*20|0)>>2];g[h>>2]=x;if((c[a+112+(q<<2)>>2]|0)==0){g[k>>2]=+g[219094]-n;g[l>>2]=+g[219095]-v;g[m>>2]=+g[219096]-w;w=-0.0-x;g[h>>2]=w;y=w}else{y=x}Mq(e,k,y,.10000000149011612);u=q+1|0;z=c[e>>2]|0;A=(z|0)==0;if((u|0)<(c[o>>2]|0)){q=u;r=z;s=A}else{B=z;C=A;break a}}if((t|0)==13){i=b;return j|0}Iq(r);j=0;i=b;return j|0}else{B=d;C=p}}while(0);if(C){j=0;i=b;return j|0}Jq(B,f|0,f+12|0);Iq(c[e>>2]|0);e=0;while(1){y=+g[f+12+(e<<2)>>2];x=+g[f+(e<<2)>>2];B=e+1|0;if(!(y-x<=65535.0&x<65535.0&y>-65535.0)){j=0;t=13;break}if((B|0)<3){e=B}else{j=1;t=13;break}}if((t|0)==13){i=b;return j|0}return 0}function Iq(a){a=a|0;var b=0,d=0,e=0;b=i;d=a|0;if((c[d>>2]|0)==-559030611){Ur(0,158048,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}else{c[d>>2]=-559030611;c[6924890]=(c[6924890]|0)-1;es(a);i=b;return}}function Jq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0.0;e=b+8|0;g[e>>2]=65535.0;f=b+4|0;g[f>>2]=65535.0;g[b>>2]=65535.0;h=d+8|0;g[h>>2]=-65535.0;i=d+4|0;g[i>>2]=-65535.0;g[d>>2]=-65535.0;j=c[a>>2]|0;if((j|0)>0){k=0}else{return}do{l=+g[a+4+(k*12|0)>>2];if(l<+g[b>>2]){g[b>>2]=l}if(l>+g[d>>2]){g[d>>2]=l}l=+g[a+4+(k*12|0)+4>>2];if(l<+g[f>>2]){g[f>>2]=l}if(l>+g[i>>2]){g[i>>2]=l}l=+g[a+4+(k*12|0)+8>>2];if(l<+g[e>>2]){g[e>>2]=l}if(l>+g[h>>2]){g[h>>2]=l}k=k+1|0;}while((k|0)<(j|0));return}function Kq(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,h=0.0,j=0,k=0.0,l=0,m=0.0,n=0,o=0,p=0.0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0;d=i;i=i+16|0;e=d|0;f=+g[a>>2];h=+S(+f);j=h>-65535.0;k=j?h:-65535.0;l=a+4|0;h=+g[l>>2];m=+S(+h);n=m>k;o=a+8|0;p=+g[o>>2];q=+S(+p)>(n?m:k);r=q?2:n?1:(j^1)<<31>>31;if((r|0)==-1){Ur(1,135856,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;return 0}k=+g[219094];j=e|0;g[j>>2]=k;m=+g[219095];n=e+4|0;g[n>>2]=m;s=+g[219096];q=e+8|0;g[q>>2]=s;if((r|0)==0|(r|0)==1){g[q>>2]=1.0;t=k;u=1.0}else if((r|0)==2){g[j>>2]=1.0;t=1.0;u=s}else{t=k;u=s}s=-0.0-(t*f+m*h+u*p);g[j>>2]=t+f*s;g[n>>2]=m+h*s;g[q>>2]=u+p*s;+MB(j,j);s=+g[a>>2];p=s*b;u=+g[l>>2];h=u*b;m=+g[o>>2];f=m*b;b=+g[n>>2];t=+g[q>>2];k=+g[j>>2];g[j>>2]=k*65535.0;g[n>>2]=b*65535.0;g[q>>2]=t*65535.0;v=(m*b-u*t)*65535.0;w=(s*t-m*k)*65535.0;m=(u*k-s*b)*65535.0;c[6924874]=(c[6924874]|0)+1;c[6924872]=(c[6924872]|0)+4;o=c[6924890]|0;l=o+1|0;c[6924890]=l;if((o|0)>=(c[6924882]|0)){c[6924882]=l}l=gs(52)|0;n$(l|0,0,52)|0;b=p-v;o=l+4|0;g[o>>2]=b;s=h-w;a=l+8|0;g[a>>2]=s;k=f-m;r=l+12|0;g[r>>2]=k;g[o>>2]=b+ +g[j>>2];g[a>>2]=s+ +g[n>>2];g[r>>2]=k+ +g[q>>2];u=p+v;r=l+16|0;g[r>>2]=u;v=h+w;a=l+20|0;g[a>>2]=v;w=f+m;o=l+24|0;g[o>>2]=w;g[r>>2]=u+ +g[j>>2];g[a>>2]=v+ +g[n>>2];g[o>>2]=w+ +g[q>>2];o=l+28|0;g[o>>2]=u;a=l+32|0;g[a>>2]=v;r=l+36|0;g[r>>2]=w;g[o>>2]=u- +g[j>>2];g[a>>2]=v- +g[n>>2];g[r>>2]=w- +g[q>>2];r=l+40|0;g[r>>2]=b;a=l+44|0;g[a>>2]=s;o=l+48|0;g[o>>2]=k;g[r>>2]=b- +g[j>>2];g[a>>2]=s- +g[n>>2];g[o>>2]=k- +g[q>>2];c[l>>2]=4;i=d;return l|0}function Lq(a){a=a|0;var b=0,d=0,e=0,f=0;b=a|0;d=c[b>>2]|0;c[6924874]=(c[6924874]|0)+1;c[6924872]=(c[6924872]|0)+d;e=c[6924890]|0;f=e+1|0;c[6924890]=f;if((e|0)>=(c[6924882]|0)){c[6924882]=f}f=(d*12|0)+4|0;d=gs(f)|0;n$(d|0,0,f|0)|0;m$(d|0,a|0,4+((c[b>>2]|0)*12|0)|0)|0;return d|0}function Mq(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0.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,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0,R=0;f=i;i=i+560|0;h=f|0;j=f+272|0;k=f+544|0;n$(h|0,0,272)|0;n$(j|0,0,272)|0;l=c[a>>2]|0;c[k+8>>2]=0;m=k+4|0;c[m>>2]=0;n=k|0;c[n>>2]=0;o=l|0;p=c[o>>2]|0;do{if((p|0)>0){q=b+4|0;r=b+8|0;s=-0.0-e;t=0;do{u=+g[l+4+(t*12|0)>>2]*+g[b>>2]+ +g[l+4+(t*12|0)+4>>2]*+g[q>>2]+ +g[l+4+(t*12|0)+8>>2]*+g[r>>2]-d;g[46732]=u;g[h+(t<<2)>>2]=u;do{if(u>e){c[j+(t<<2)>>2]=0;v=0}else{w=j+(t<<2)|0;if(u>2]=1;v=1;break}else{c[w>>2]=2;v=2;break}}}while(0);w=k+(v<<2)|0;c[w>>2]=(c[w>>2]|0)+1;t=t+1|0;}while((t|0)<(p|0));s=+g[h>>2];r=(c[n>>2]|0)==0;c[j+(t<<2)>>2]=c[j>>2];g[h+(t<<2)>>2]=s;if(r){break}if((c[m>>2]|0)==0){x=272;y=0;z=272;A=0;i=f;return}r=p+4|0;c[6924874]=(c[6924874]|0)+1;c[6924872]=(c[6924872]|0)+r;q=c[6924890]|0;w=q+1|0;c[6924890]=w;if((q|0)>=(c[6924882]|0)){c[6924882]=w}w=(r*12|0)+4|0;q=gs(w)|0;B=q;n$(q|0,0,w|0)|0;w=c[o>>2]|0;if((w|0)>0){s=-0.0-d;C=q;D=0;while(1){E=l+4+(D*12|0)|0;F=c[j+(D<<2)>>2]|0;if((F|0)==0){g[B+4+((c[C>>2]|0)*12|0)>>2]=+g[E>>2];g[B+4+((c[C>>2]|0)*12|0)+4>>2]=+g[l+4+(D*12|0)+4>>2];g[B+4+((c[C>>2]|0)*12|0)+8>>2]=+g[l+4+(D*12|0)+8>>2];c[C>>2]=(c[C>>2]|0)+1;G=23}else if((F|0)==2){g[B+4+((c[C>>2]|0)*12|0)>>2]=+g[E>>2];g[B+4+((c[C>>2]|0)*12|0)+4>>2]=+g[l+4+(D*12|0)+4>>2];g[B+4+((c[C>>2]|0)*12|0)+8>>2]=+g[l+4+(D*12|0)+8>>2];c[C>>2]=(c[C>>2]|0)+1;H=D+1|0}else{G=23}do{if((G|0)==23){G=0;I=D+1|0;J=c[j+(I<<2)>>2]|0;if((J|0)==2|(J|0)==(F|0)){H=I;break}J=(I|0)%(c[o>>2]|0)|0;u=+g[h+(D<<2)>>2];K=u/(u- +g[h+(I<<2)>>2]);g[46732]=K;u=+g[b>>2];do{if(u==1.0){L=d}else{if(u==-1.0){L=s;break}M=+g[E>>2];L=M+K*(+g[l+4+(J*12|0)>>2]-M)}}while(0);u=+g[b+4>>2];do{if(u==1.0){N=d}else{if(u==-1.0){N=s;break}M=+g[l+4+(D*12|0)+4>>2];N=M+K*(+g[l+4+(J*12|0)+4>>2]-M)}}while(0);u=+g[b+8>>2];do{if(u==1.0){O=d}else{if(u==-1.0){O=s;break}M=+g[l+4+(D*12|0)+8>>2];O=M+K*(+g[l+4+(J*12|0)+8>>2]-M)}}while(0);g[B+4+((c[C>>2]|0)*12|0)>>2]=L;g[B+4+((c[C>>2]|0)*12|0)+4>>2]=N;g[B+4+((c[C>>2]|0)*12|0)+8>>2]=O;c[C>>2]=(c[C>>2]|0)+1;H=I}}while(0);E=c[o>>2]|0;if((H|0)<(E|0)){D=H}else{P=E;Q=C;break}}}else{P=w;Q=q}C=c[Q>>2]|0;if((C|0)>(r|0)){Ur(1,123784,(R=i,i=i+1|0,i=i+7&-8,c[R>>2]=0,R)|0);i=R}if((C|0)>64){Ur(1,112928,(R=i,i=i+1|0,i=i+7&-8,c[R>>2]=0,R)|0);i=R}if((P|0)==-559030611){Ur(0,158048,(R=i,i=i+1|0,i=i+7&-8,c[R>>2]=0,R)|0);i=R}c[o>>2]=-559030611;c[6924890]=(c[6924890]|0)-1;es(l);c[a>>2]=B;x=272;y=0;z=272;A=0;i=f;return}else{c[j>>2]=0;g[h>>2]=0.0}}while(0);if((p|0)==-559030611){Ur(0,158048,(R=i,i=i+1|0,i=i+7&-8,c[R>>2]=0,R)|0);i=R}c[o>>2]=-559030611;c[6924890]=(c[6924890]|0)-1;es(l);c[a>>2]=0;x=272;y=0;z=272;A=0;i=f;return}function Nq(b){b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0;if((c[5497046]|0)==0){d=0;return d|0}e=c[5497047]|0;f=b+4|0;h=b+8|0;i=0;do{j=c[e+(i*12|0)>>2]|0;k=a[j+16|0]|0;if((k&255)>>>0<3>>>0){l=+g[b+((k&255)<<2)>>2]- +g[j+12>>2]}else{l=+g[j>>2]*+g[b>>2]+ +g[j+4>>2]*+g[f>>2]+ +g[j+8>>2]*+g[h>>2]- +g[j+12>>2]}if(l<0.0){m=e+(i*12|0)+8|0}else{m=e+(i*12|0)+4|0}i=c[m>>2]|0;}while((i|0)>-1);c[6924880]=(c[6924880]|0)+1;d=~i;return d|0}function Oq(a,b){a=a|0;b=b|0;var d=0,e=0;d=~b;if(!((c[(c[5497049]|0)+(d*24|0)>>2]|0)==-1)){c[a+40>>2]=d}b=a|0;e=c[b>>2]|0;if((e|0)<(c[a+4>>2]|0)){c[b>>2]=e+1;c[(c[a+12>>2]|0)+(e<<2)>>2]=d;return}else{c[a+8>>2]=1;return}}function Pq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;if((b|0)<0){d=b}else{e=a+16|0;f=a+28|0;g=b;while(1){b=c[5497047]|0;h=IB(e,f,c[b+(g*12|0)>>2]|0)|0;if((h|0)==2){i=b+(g*12|0)+8|0}else if((h|0)==1){i=b+(g*12|0)+4|0}else{Pq(a,c[b+(g*12|0)+4>>2]|0);i=b+(g*12|0)+8|0}b=c[i>>2]|0;if((b|0)<0){d=b;break}else{g=b}}}hk[c[a+44>>2]&255](a,d);return}function Qq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0;h=i;i=i+48|0;j=h|0;c[5497070]=(c[5497070]|0)+1;g[j+16>>2]=+g[a>>2];g[j+20>>2]=+g[a+4>>2];g[j+24>>2]=+g[a+8>>2];g[j+28>>2]=+g[b>>2];g[j+32>>2]=+g[b+4>>2];g[j+36>>2]=+g[b+8>>2];b=j|0;c[b>>2]=0;c[j+4>>2]=e;c[j+12>>2]=d;c[j+44>>2]=144;d=j+40|0;c[d>>2]=0;c[j+8>>2]=0;Pq(j,0);c[f>>2]=c[d>>2];i=h;return c[b>>2]|0}function Rq(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0;if((c[5497046]|0)==0){e=0;return e|0}if((d|0)==0){f=c[5497047]|0;h=b+4|0;i=b+8|0;j=0;do{k=c[f+(j*12|0)>>2]|0;l=a[k+16|0]|0;if((l&255)>>>0<3>>>0){m=+g[b+((l&255)<<2)>>2]- +g[k+12>>2]}else{m=+g[k>>2]*+g[b>>2]+ +g[k+4>>2]*+g[h>>2]+ +g[k+8>>2]*+g[i>>2]- +g[k+12>>2]}if(m<0.0){n=f+(j*12|0)+8|0}else{n=f+(j*12|0)+4|0}j=c[n>>2]|0;}while((j|0)>-1);c[6924880]=(c[6924880]|0)+1;o=(c[5497049]|0)+(~j*24|0)|0}else{o=(mq(d)|0)+24|0}d=c[o+12>>2]|0;if((d|0)<=0){e=0;return e|0}j=c[o+8>>2]|0;o=c[5497051]|0;n=c[5497057]|0;m=+g[b>>2];p=m;q=p+-.125;f=b+4|0;i=b+8|0;r=p+.125;b=0;h=0;while(1){k=c[o+(j+b<<2)>>2]|0;l=n+(k*44|0)+8|0;do{if(+g[n+(k*44|0)+20>>2]>2];t=p;if(+g[n+(k*44|0)+24>>2]>2];v=u;if(+g[n+(k*44|0)+28>>2]>2]>r){s=h;break}if(+g[n+(k*44|0)+12>>2]>t+.125){s=h;break}if(+g[n+(k*44|0)+16>>2]>v+.125){s=h;break}w=c[n+(k*44|0)+32>>2]|0;a:do{if((w|0)>0){x=c[n+(k*44|0)+36>>2]|0;y=0;while(1){z=c[x+(y*12|0)>>2]|0;A=y+1|0;if(m*+g[z>>2]+p*+g[z+4>>2]+u*+g[z+8>>2]>+g[z+12>>2]){B=y;break a}if((A|0)<(w|0)){y=A}else{B=A;break}}}else{B=0}}while(0);if((B|0)!=(w|0)){s=h;break}s=c[n+(k*44|0)+4>>2]|h}}while(0);k=b+1|0;if((k|0)<(d|0)){b=k;h=s}else{e=s;break}}return e|0}function Sq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0,r=0;e=i;i=i+64|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=+g[a>>2]- +g[c>>2];m=f|0;g[m>>2]=l;n=+g[a+4>>2]- +g[c+4>>2];o=f+4|0;g[o>>2]=n;p=+g[a+8>>2]- +g[c+8>>2];c=f+8|0;g[c>>2]=p;if((b|0)==255){q=Rq(m,b)|0;i=e;return q|0}do{if(!(+g[d>>2]!=0.0)){if(+g[d+4>>2]!=0.0){break}if(+g[d+8>>2]!=0.0){break}q=Rq(m,b)|0;i=e;return q|0}}while(0);f=h|0;a=j|0;r=k|0;BB(d,f,a,r);g[m>>2]=l*+g[f>>2]+n*+g[h+4>>2]+p*+g[h+8>>2];g[o>>2]=-0.0-(l*+g[a>>2]+n*+g[j+4>>2]+p*+g[j+8>>2]);g[c>>2]=l*+g[r>>2]+n*+g[k+4>>2]+p*+g[k+8>>2];q=Rq(m,b)|0;i=e;return q|0}function Tq(a){a=a|0;var b=0;do{if((a|0)>=0){if(!((c[5497058]|0)>(a|0)&(c[5497061]|0)!=0)){break}b=(c[5497060]|0)+(da(c[5497059]|0,a)|0)|0;return b|0}}while(0);b=c[5497060]|0;return b|0}function Uq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;e=c[5497065]|0;f=e+(a<<3)+4|0;g=e+(a<<3)|0;if((c[f>>2]|0)==(c[5497069]|0)){if((c[g>>2]|0)==(b|0)){i=d;return}else{Ur(1,49848,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}}c[g>>2]=b;c[f>>2]=c[5497069];f=c[5497066]|0;g=c[5497064]|0;e=da(g,a)|0;if((g|0)>0){h=0;j=g}else{i=d;return}while(1){if((c[f+(h+e<<2)>>2]|0)>0){Uq(h,b);k=c[5497064]|0}else{k=j}g=h+1|0;if((g|0)<(k|0)){h=g;j=k}else{break}}i=d;return}function Vq(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0;a=(c[5497069]|0)+1|0;c[5497069]=a;b=c[5497064]|0;if((b|0)>0){d=0;e=0;f=b;g=a}else{return}while(1){if((c[(c[5497065]|0)+(d<<3)+4>>2]|0)==(g|0)){h=e;i=f}else{a=e+1|0;Uq(d,a);h=a;i=c[5497064]|0}a=d+1|0;if((a|0)>=(i|0)){break}d=a;e=h;f=i;g=c[5497069]|0}return}function Wq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;if((b|a|0)<0){i=e;return}f=c[5497064]|0;if(!((f|0)>(a|0)&(f|0)>(b|0))){Ur(1,157152,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}h=(da(f,a)|0)+b|0;f=c[5497066]|0;j=f+(h<<2)|0;h=c[j>>2]|0;do{if((d|0)==0){c[j>>2]=h-1;k=f+((da(c[5497064]|0,b)|0)+a<<2)|0;c[k>>2]=(c[k>>2]|0)-1;k=c[5497064]|0;if((c[f+((da(k,b)|0)+a<<2)>>2]|0)>=0){l=k;break}Ur(1,135336,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}else{c[j>>2]=h+1;k=f+((da(c[5497064]|0,b)|0)+a<<2)|0;c[k>>2]=(c[k>>2]|0)+1;l=c[5497064]|0}}while(0);a=(c[5497069]|0)+1|0;c[5497069]=a;if((l|0)>0){m=0;n=0;o=l;p=a}else{i=e;return}while(1){if((c[(c[5497065]|0)+(m<<3)+4>>2]|0)==(p|0)){q=n;r=o}else{a=n+1|0;Uq(m,a);q=a;r=c[5497064]|0}a=m+1|0;if((a|0)>=(r|0)){break}m=a;n=q;o=r;p=c[5497069]|0}i=e;return}function Xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;if((c[(c[5497022]|0)+32>>2]|0)!=0){e=1;i=d;return e|0}if((b|a|0)<0){e=0;i=d;return e|0}f=c[5497064]|0;if(!((f|0)>(a|0)&(f|0)>(b|0))){Ur(1,123552,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}f=c[5497065]|0;e=(c[f+(a<<3)>>2]|0)==(c[f+(b<<3)>>2]|0)|0;i=d;return e|0}function Yq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=c[5497064]|0;g=f+7>>3;if((c[(c[5497022]|0)+32>>2]|0)!=0|(e|0)==-1){n$(b|0,-1|0,g|0)|0;return g|0}h=c[5497065]|0;i=c[h+(e<<3)>>2]|0;if((f|0)>0){j=0;k=f;l=h}else{return g|0}while(1){if((c[l+(j<<3)>>2]|0)==(i|0)){h=b+(j>>3)|0;a[h]=d[h]|0|1<<(j&7);m=c[5497064]|0}else{m=k}h=j+1|0;if((h|0)>=(m|0)){break}j=h;k=m;l=c[5497065]|0}return g|0}function Zq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(+g[b>>2]<+g[c>>2]+-.125){e=0;return e|0}if(+g[b+4>>2]<+g[c+4>>2]+-.125){e=0;return e|0}if(+g[b+8>>2]<+g[c+8>>2]+-.125){e=0;return e|0}if(+g[a>>2]>+g[d>>2]+.125){e=0;return e|0}if(+g[a+4>>2]>+g[d+4>>2]+.125){e=0;return e|0}if(+g[a+8>>2]>+g[d+8>>2]+.125){e=0;return e|0}e=1;return e|0}function _q(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0.0,y=0,z=0,A=0.0;e=i;i=i+16|0;f=e|0;h=+g[a>>2];j=+g[b>>2];k=+g[a+4>>2];l=b+4|0;m=+g[l>>2];n=+g[a+8>>2];o=+g[b+8>>2];p=n-o;q=+g[d>>2];r=+g[d+4>>2];s=+g[d+8>>2];t=(h-j)*q+(k-m)*r+p*s;u=j+q*t;g[f>>2]=u;q=m+r*t;g[f+4>>2]=q;r=o+s*t;g[f+8>>2]=r;d=0;t=u;s=j;while(1){if(t>s){j=+g[c+(d<<2)>>2];if(t>j){v=j;break}}if(t>2];if(t=3){w=11;break}d=a;t=+g[f+(a<<2)>>2];s=+g[b+(a<<2)>>2]}if((w|0)==11){j=h-u;u=k-q;q=n-r;x=j*j+u*u+q*q;i=e;return+x}if(+S(+(t-s))<+S(+(t-v))){y=b;z=l;A=p}else{y=c;z=c+4|0;A=n- +g[c+8>>2]}n=k- +g[z>>2];k=h- +g[y>>2];x=A*A+(n*n+k*k);i=e;return+x}function $q(a,b){a=a|0;b=b|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0;e=c[b+32>>2]|0;if((e|0)==0){return}if(+g[a+160>>2]>+g[b+20>>2]){return}if(+g[a+164>>2]>+g[b+24>>2]){return}if(+g[a+168>>2]>+g[b+28>>2]){return}if(+g[a+172>>2]<+g[b+8>>2]){return}if(+g[a+176>>2]<+g[b+12>>2]){return}if(+g[a+180>>2]<+g[b+16>>2]){return}f=(e|0)>6;a:do{if((c[a+260>>2]|0)==0){if(!f){break}h=c[b+36>>2]|0;i=+g[a>>2];j=+g[a+4>>2];k=+g[a+8>>2];l=6;while(1){m=c[h+(l*12|0)>>2]|0;n=d[m+17|0]|0;o=+g[m>>2];p=+g[m+4>>2];q=+g[m+8>>2];l=l+1|0;if(o*i+p*j+q*k-(+g[m+12>>2]-(+g[a+48+(n*12|0)>>2]*o+ +g[a+48+(n*12|0)+4>>2]*p+ +g[a+48+(n*12|0)+8>>2]*q))>0.0){break}if((l|0)>=(e|0)){break a}}return}else{if(!f){break}l=c[b+36>>2]|0;k=+g[a+264>>2];j=+g[a+272>>2];i=+g[a+276>>2];q=+g[a+280>>2];p=+g[a>>2];o=p-j;h=a+4|0;n=a+8|0;r=j+p;m=6;while(1){s=c[l+(m*12|0)>>2]|0;p=+g[s>>2];t=+g[s+4>>2];u=+g[s+8>>2];v=+g[h>>2];if(p*j+t*i+u*q>0.0){w=o;x=v-i;y=+g[n>>2]-q}else{w=r;x=i+v;y=q+ +g[n>>2]}m=m+1|0;if(w*p+x*t+y*u-(+g[s+12>>2]+k)>0.0){break}if((m|0)>=(e|0)){break a}}return}}while(0);c[a+204>>2]=1;c[a+208>>2]=1;g[a+212>>2]=0.0;c[a+252>>2]=c[b+4>>2];return}function ar(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=b+12|0;a:do{if((c[d>>2]|0)>0){e=b+8|0;f=a+196|0;h=a+204|0;i=0;b:while(1){j=c[(c[5497051]|0)+((c[e>>2]|0)+i<<2)>>2]|0;k=c[5497057]|0;l=k+(j*44|0)|0;m=k+(j*44|0)+40|0;n=c[5497070]|0;do{if((c[m>>2]|0)!=(n|0)){c[m>>2]=n;if((c[f>>2]&c[k+(j*44|0)+4>>2]|0)==0){break}$q(a,l);if((c[h>>2]|0)!=0){break b}}}while(0);i=i+1|0;if((i|0)>=(c[d>>2]|0)){break a}}return}}while(0);if((c[(c[5497020]|0)+32>>2]|0)!=0){return}d=b+20|0;if((c[d>>2]|0)<=0){return}i=b+16|0;b=a+196|0;h=0;c:while(1){f=c[(c[5497068]|0)+(c[(c[5497053]|0)+((c[i>>2]|0)+h<<2)>>2]<<2)>>2]|0;do{if((f|0)!=0){e=f|0;l=c[5497070]|0;if((c[e>>2]|0)==(l|0)){break}c[e>>2]=l;o=f+8|0;if((c[b>>2]&c[o>>2]|0)==0){break}if((Dq(a,c[f+12>>2]|0)|0)!=0){break c}}}while(0);f=h+1|0;if((f|0)<(c[d>>2]|0)){h=f}else{p=16;break}}if((p|0)==16){return}c[a+204>>2]=1;c[a+208>>2]=1;g[a+212>>2]=0.0;c[a+252>>2]=c[o>>2];return}function br(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0;d=i;i=i+32|0;e=d|0;f=d+16|0;h=e|0;j=f|0;tq(b,h,j);k=+g[a>>2];l=+g[a+272>>2];m=+g[a+4>>2];n=+g[a+276>>2];o=+g[a+8>>2];p=+g[a+280>>2];q=o+p;r=+g[j>>2];s=(+g[h>>2]+r)*.5;t=r-s;r=(+g[e+4>>2]+ +g[f+4>>2])*.5;u=+g[f+8>>2];v=(+g[e+8>>2]+u)*.5;w=u-v;u=k+l;x=m+n;y=o-p;p=t>w?w:t;t=w-p;w=+g[a+264>>2]+p;p=w*w;w=t+v;o=s-u;z=r-x;A=w-q;B=o*o+z*z;if(B+A*A>2]=1;c[a+208>>2]=1;g[a+212>>2]=0.0}A=s-(k-l);l=r-(m-n);n=w-y;m=A*A+l*l;if(m+n*n>2]=1;c[a+208>>2]=1;g[a+212>>2]=0.0}n=v-t;t=n-q;if(B+t*t>2]=1;c[a+208>>2]=1;g[a+212>>2]=0.0}t=n-y;if(m+t*t>2]=1;c[a+208>>2]=1;g[a+212>>2]=0.0}do{if(qn){if(!(yn)){break}i=d;return}}while(0);n=u-s;s=x-r;if(!(n*n+s*s+0.0>2]=1;c[a+208>>2]=1;g[a+212>>2]=0.0;i=d;return}function cr(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;b=i;i=i+4144|0;d=b|0;e=b+4096|0;f=+g[a>>2];h=+g[a+4>>2];j=h+ +g[a+28>>2];k=+g[a+8>>2];l=k+ +g[a+32>>2];m=f+ +g[a+36>>2];n=h+ +g[a+40>>2];h=k+ +g[a+44>>2];g[e+16>>2]=f+ +g[a+24>>2]+-1.0;g[e+28>>2]=m+1.0;g[e+20>>2]=j+-1.0;g[e+32>>2]=n+1.0;g[e+24>>2]=l+-1.0;g[e+36>>2]=h+1.0;o=e|0;c[o>>2]=0;c[e+4>>2]=1024;c[e+12>>2]=d;c[e+44>>2]=144;c[e+40>>2]=0;c[e+8>>2]=0;c[5497070]=(c[5497070]|0)+1;Pq(e,0);c[5497070]=(c[5497070]|0)+1;if((c[o>>2]|0)<=0){p=48;q=0;r=4096;s=0;i=b;return}e=a+204|0;t=0;while(1){ar(a,(c[5497049]|0)+((c[d+(t<<2)>>2]|0)*24|0)|0);u=t+1|0;if((c[e>>2]|0)!=0){v=5;break}if((u|0)<(c[o>>2]|0)){t=u}else{v=5;break}}if((v|0)==5){p=48;q=0;r=4096;s=0;i=b;return}}function dr(a,b){a=a|0;b=b|0;var e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,Q=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0,aa=0,ba=0,ca=0,da=0.0,ea=0.0,fa=0;e=b+32|0;if((c[e>>2]|0)==0){return}c[6924888]=(c[6924888]|0)+1;f=c[e>>2]|0;e=(f|0)>0;a:do{if((c[a+260>>2]|0)==0){if(!e){h=28;break}i=c[b+36>>2]|0;j=+g[a>>2];k=+g[a+4>>2];l=+g[a+8>>2];m=+g[a+12>>2];n=+g[a+16>>2];o=+g[a+20>>2];p=0;q=-1.0;r=1.0;s=0;t=0;u=0;v=0;while(1){w=i+(v*12|0)|0;x=c[w>>2]|0;y=d[x+17|0]|0;z=+g[x>>2];A=+g[x+4>>2];B=+g[x+8>>2];C=+g[x+12>>2]-(+g[a+48+(y*12|0)>>2]*z+ +g[a+48+(y*12|0)+4>>2]*A+ +g[a+48+(y*12|0)+8>>2]*B);D=z*j+A*k+B*l-C;E=z*m+A*n+B*o-C;y=E>0.0?1:s;F=D>0.0;G=F?1:t;if(F){if(!(E<.125&E0.0|E>0.0){C=D;if(D>E){B=(C+-.125)/(D-E);A=B<0.0?0.0:B;if(!(A>q)){H=u;I=r;J=q;K=p;break}H=w;I=r;J=A;K=x;break}else{A=(C+.125)/(D-E);C=A>1.0?1.0:A;if(!(C>2]|0;r=+g[a+264>>2];q=+g[a+272>>2];o=+g[a+276>>2];n=+g[a+280>>2];m=+g[a>>2];l=m-q;u=a+4|0;t=a+8|0;s=a+12|0;p=a+16|0;i=a+20|0;k=q+m;x=0;m=-1.0;j=1.0;w=0;F=0;R=0;S=0;while(1){T=v+(S*12|0)|0;U=c[T>>2]|0;E=+g[U+12>>2]+r;D=+g[U>>2];C=+g[U+4>>2];A=+g[U+8>>2];B=+g[u>>2];if(D*q+C*o+A*n>0.0){V=+g[s>>2]-q;W=+g[p>>2]-o;X=+g[i>>2]-n;Y=l;Z=B-o;_=+g[t>>2]-n}else{V=q+ +g[s>>2];W=o+ +g[p>>2];X=n+ +g[i>>2];Y=k;Z=o+B;_=n+ +g[t>>2]}B=Y*D+Z*C+_*A-E;z=V*D+W*C+X*A-E;$=z>0.0?1:w;aa=B>0.0;ba=aa?1:F;if(aa){if(!(z<.125&z0.0|z>0.0){E=B;if(B>z){A=(E+-.125)/(B-z);C=A<0.0?0.0:A;if(!(C>m)){ca=R;da=j;ea=m;fa=x;break}ca=T;da=j;ea=C;fa=U;break}else{C=(E+.125)/(B-z);E=C>1.0?1.0:C;if(!(E>2]=1}else if((h|0)==29){if((M|0)==0){c[a+208>>2]=1;if((N|0)==0){break}return}if(!(P-1.0)){return}fa=a+212|0;if(!(P<+g[fa>>2])){return}g[fa>>2]=P<0.0?0.0:P;if((Q|0)!=0){fa=a+228|0;ca=Q;c[fa>>2]=c[ca>>2];c[fa+4>>2]=c[ca+4>>2];c[fa+8>>2]=c[ca+8>>2];c[fa+12>>2]=c[ca+12>>2];c[fa+16>>2]=c[ca+16>>2]}if((L|0)!=0){c[a+248>>2]=c[L+4>>2]}c[a+252>>2]=c[b+4>>2];return}}while(0);c[a+204>>2]=1;g[a+212>>2]=0.0;c[a+252>>2]=c[b+4>>2];return}function er(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;d=b+12|0;a:do{if((c[d>>2]|0)>0){e=b+8|0;f=a+196|0;h=a+160|0;i=a+172|0;j=a+212|0;k=0;b:while(1){l=c[(c[5497051]|0)+((c[e>>2]|0)+k<<2)>>2]|0;m=c[5497057]|0;n=m+(l*44|0)|0;o=m+(l*44|0)+40|0;p=c[5497070]|0;do{if((c[o>>2]|0)!=(p|0)){c[o>>2]=p;if((c[f>>2]&c[m+(l*44|0)+4>>2]|0)==0){break}if((Zq(h,i,m+(l*44|0)+8|0,m+(l*44|0)+20|0)|0)==0){break}dr(a,n);if(!(+g[j>>2]!=0.0)){break b}}}while(0);k=k+1|0;if((k|0)>=(c[d>>2]|0)){break a}}return}}while(0);if((c[(c[5497020]|0)+32>>2]|0)!=0){return}d=b+20|0;if((c[d>>2]|0)<=0){return}k=b+16|0;b=a+196|0;j=a+212|0;i=a+248|0;h=a+252|0;f=0;c:while(1){e=c[(c[5497068]|0)+(c[(c[5497053]|0)+((c[k>>2]|0)+f<<2)>>2]<<2)>>2]|0;do{if((e|0)!=0){n=e|0;l=c[5497070]|0;if((c[n>>2]|0)==(l|0)){break}c[n>>2]=l;l=e+8|0;if((c[b>>2]&c[l>>2]|0)==0){break}c[6924884]=(c[6924884]|0)+1;q=+g[j>>2];Cq(a,c[e+12>>2]|0);r=+g[j>>2];if(r>2]=c[e+4>>2];c[h>>2]=c[l>>2]}if(!(r!=0.0)){s=18;break c}}}while(0);e=f+1|0;if((e|0)<(c[d>>2]|0)){f=e}else{s=18;break}}if((s|0)==18){return}}function fr(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,j=0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0;h=i;i=i+16|0;j=h|0;l=+g[e>>2];m=l- +g[b>>2];n=j|0;g[n>>2]=m;o=e+4|0;p=+g[o>>2];q=b+4|0;r=p- +g[q>>2];s=j+4|0;g[s>>2]=r;t=e+8|0;u=+g[t>>2];v=b+8|0;w=u- +g[v>>2];x=j+8|0;g[x>>2]=w;y=d*d;if(w*w+(m*m+r*r)>2]=0.0;c[a+208>>2]=1;r=+g[f>>2]- +g[b>>2];g[n>>2]=r;m=+g[f+4>>2]- +g[q>>2];g[s>>2]=m;w=+g[f+8>>2]- +g[v>>2];g[x>>2]=w;if(!(w*w+(r*r+m*m)>2]=1;i=h;return}g[n>>2]=+g[f>>2]-l;j=f+4|0;g[s>>2]=+g[j>>2]-p;z=f+8|0;g[x>>2]=+g[z>>2]-u;u=+wB(n);p=+_q(b,e,f,n);l=+g[b>>2];m=+g[f>>2]-l;r=+g[q>>2];w=+g[j>>2]-r;A=+g[v>>2];B=+g[z>>2]-A;do{if(!(pC*C)){break}i=h;return}}while(0);B=+g[e>>2]-l;l=+g[o>>2]-r;r=+g[t>>2]-A;A=(B*+g[n>>2]+l*+g[s>>2]+r*+g[x>>2])*2.0;w=d+1.0;d=A*A-(B*B+l*l+r*r-w*w)*4.0;if(!(d>0.0)){i=h;return}r=d*.5;l=(c[k>>2]=1597463007-((g[k>>2]=d,c[k>>2]|0)>>1),+g[k>>2]);B=l*(1.5-l*r*l);l=(-0.0-A-d*B*(1.5-B*r*B))*.5;if(l<0.0){D=0.0}else{D=l/u}E=a+212|0;if(!(D<+g[E>>2])){i=h;return}g[E>>2]=D;u=+g[e>>2];l=+g[o>>2];B=+g[t>>2];r=u+D*(+g[f>>2]-u);u=l+D*(+g[j>>2]-l);l=D*(+g[z>>2]-B)+B;B=u- +g[q>>2];D=l- +g[v>>2];d=1.0/w;w=d*(r- +g[b>>2]);g[n>>2]=w;A=d*B;g[s>>2]=A;B=d*D;g[x>>2]=B;g[a+228>>2]=w;g[a+232>>2]=A;g[a+236>>2]=B;g[a+240>>2]=B*(l+ +g[a+192>>2])+((r+ +g[a+184>>2])*w+(u+ +g[a+188>>2])*A);c[a+252>>2]=33554432;i=h;return}function gr(a,b,d,e,f,h){a=a|0;b=b|0;d=+d;e=+e;f=f|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0,y=0.0,z=0.0,A=0,B=0.0,C=0,D=0,E=0,F=0.0,G=0.0,H=0,I=0.0,J=0,K=0,L=0.0,M=0.0;j=i;i=i+64|0;l=j|0;m=j+16|0;n=j+32|0;o=j+48|0;p=+g[f>>2];q=m|0;g[q>>2]=p;r=f+4|0;s=+g[r>>2];g[m+4>>2]=s;g[m+8>>2]=0.0;t=+g[h>>2];m=n|0;g[m>>2]=t;u=h+4|0;v=+g[u>>2];g[n+4>>2]=v;g[n+8>>2]=0.0;w=+g[b>>2];n=o|0;g[n>>2]=w;x=b+4|0;y=+g[x>>2];g[o+4>>2]=y;g[o+8>>2]=0.0;o=f+8|0;z=+g[o>>2];A=b+8|0;B=+g[A>>2];do{if(z>B+e|z>2]=G;I=s-y;J=l+4|0;g[J>>2]=I;K=l+8|0;g[K>>2]=0.0;L=d*d;if(!(G*G+I*I+0.0>2]=0.0;c[a+208>>2]=1;I=t-w;g[H>>2]=I;G=v-y;g[J>>2]=G;g[K>>2]=0.0;if(!(I*I+G*G+0.0>2]=1;i=j;return}}while(0);g[C>>2]=t-p;g[D>>2]=v-s;g[E>>2]=0.0;s=+wB(C);p=t-w;w=v-y;do{if(!(+_q(n,q,m,C)y*y)){break}i=j;return}}while(0);w=+g[f>>2];p=w- +g[b>>2];F=+g[r>>2];y=F- +g[x>>2];v=(p*+g[C>>2]+y*+g[D>>2])*2.0;t=d+1.0;d=v*v-(p*p+y*y-t*t)*4.0;if(!(d>0.0)){i=j;return}y=d*.5;p=(c[k>>2]=1597463007-((g[k>>2]=d,c[k>>2]|0)>>1),+g[k>>2]);B=p*(1.5-p*y*p);p=(-0.0-v-d*B*(1.5-B*y*B))*.5;if(p<0.0){M=0.0}else{M=p/s}r=a+212|0;if(!(M<+g[r>>2])){i=j;return}s=+g[h>>2]-w;g[C>>2]=s;p=+g[u>>2]-F;g[D>>2]=p;B=+g[o>>2];y=+g[h+8>>2]-B;g[E>>2]=y;d=w+M*s;s=F+M*p;p=M*y+B;B=+g[A>>2];if(p>B+e|p>2]=M;M=s- +g[x>>2];e=1.0/t;t=e*(d- +g[b>>2]);g[C>>2]=t;B=e*M;g[D>>2]=B;M=e*0.0;g[E>>2]=M;g[a+228>>2]=t;g[a+232>>2]=B;g[a+236>>2]=M;g[a+240>>2]=M*(p+ +g[a+192>>2])+((d+ +g[a+184>>2])*t+(s+ +g[a+188>>2])*B);c[a+252>>2]=33554432;i=j;return}function hr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;c=i;i=i+144|0;d=c|0;e=c+16|0;f=c+32|0;h=c+48|0;j=c+64|0;k=c+80|0;l=c+96|0;m=c+112|0;n=c+128|0;o=d|0;p=e|0;tq(b,o,p);q=+g[p>>2];if(+g[a+160>>2]>q+1.0){i=c;return}r=+g[e+4>>2];if(+g[a+164>>2]>r+1.0){i=c;return}s=+g[e+8>>2];if(+g[a+168>>2]>s+1.0){i=c;return}t=+g[o>>2];if(+g[a+172>>2]>2];if(+g[a+176>>2]>2];if(+g[a+180>>2]>2];x=+g[a+272>>2];o=j|0;g[o>>2]=w+x;y=+g[a+4>>2];z=+g[a+276>>2];g[j+4>>2]=y+z;A=+g[a+8>>2];B=+g[a+280>>2];g[j+8>>2]=A+B;j=k|0;g[j>>2]=w-x;g[k+4>>2]=y-z;g[k+8>>2]=A-B;k=a+12|0;A=+g[k>>2];e=l|0;g[e>>2]=A+x;w=+g[a+16>>2];g[l+4>>2]=w+z;C=+g[a+20>>2];g[l+8>>2]=C+B;l=m|0;g[l>>2]=A-x;g[m+4>>2]=w-z;g[m+8>>2]=C-B;B=(t+q)*.5;m=n|0;g[m>>2]=B;t=q-B;q=(u+r)*.5;g[n+4>>2]=q;r=(v+s)*.5;g[n+8>>2]=r;v=s-r;s=t>v?v:t;t=v-s;n=f|0;g[n>>2]=B;g[f+4>>2]=q;g[f+8>>2]=r+t;f=h|0;g[f>>2]=B;g[h+4>>2]=q;g[h+8>>2]=r-t;t=s+ +g[a+264>>2];do{if(+g[d>>2]!=A|y!=w){s=v+ +g[a+268>>2]-t;if(!(s>0.0)){break}gr(a,m,t,s,d,k)}}while(0);fr(a,n,t,j,l);fr(a,f,t,o,e);i=c;return}function ir(b,d,e,f,h,j){b=b|0;d=d|0;e=+e;f=+f;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0.0,z=0.0,A=0,B=0,C=0,D=0;k=i;i=i+16|0;l=k|0;if(!(+g[b+212>>2]>e)){i=k;return}if((d|0)<0){er(b,(c[5497049]|0)+(~d*24|0)|0);i=k;return}m=c[5497047]|0;n=c[m+(d*12|0)>>2]|0;o=a[n+16|0]|0;p=o&255;if((o&255)>>>0<3>>>0){q=+g[n+12>>2];r=+g[b+148+(p<<2)>>2];s=+g[j+(p<<2)>>2]-q;t=+g[h+(p<<2)>>2]-q}else{q=+g[n>>2];u=+g[n+4>>2];v=+g[n+8>>2];w=+g[n+12>>2];r=(c[b+200>>2]|0)==0?2048.0:0.0;s=q*+g[j>>2]+u*+g[j+4>>2]+v*+g[j+8>>2]-w;t=q*+g[h>>2]+u*+g[h+4>>2]+v*+g[h+8>>2]-w}w=r+1.0;if(!(t>2]|0,e,f,h,j);i=k;return}w=-1.0-r;if(t>2]|0,e,f,h,j);i=k;return}do{if(ts)){x=0;y=0.0;z=1.0;break}w=1.0/(t-s);x=0;y=(t-r+-.125)*w;z=(t+r+.125)*w}}while(0);r=z<0.0?0.0:z;z=r>1.0?1.0:r;r=f-e;t=+g[h>>2];n=l|0;g[n>>2]=t+z*(+g[j>>2]-t);p=h+4|0;t=+g[p>>2];o=j+4|0;A=l+4|0;g[A>>2]=t+z*(+g[o>>2]-t);B=h+8|0;t=+g[B>>2];C=j+8|0;D=l+8|0;g[D>>2]=t+z*(+g[C>>2]-t);ir(b,c[m+(d*12|0)+4+(x<<2)>>2]|0,e,r*z+e,h,n);z=y<0.0?0.0:y;y=z>1.0?1.0:z;z=+g[h>>2];g[n>>2]=z+y*(+g[j>>2]-z);z=+g[p>>2];g[A>>2]=z+y*(+g[o>>2]-z);z=+g[B>>2];g[D>>2]=z+y*(+g[C>>2]-z);ir(b,c[m+(d*12|0)+4+((x^1)<<2)>>2]|0,r*y+e,f,n,j);i=k;return}function jr(a,b,d,e,f,h,j,k,l,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0.0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0.0,M=0,N=0,O=0.0,P=0.0,Q=0,R=0.0,T=0.0,U=0.0,V=0,W=0.0,X=0,Y=0,Z=0.0,_=0.0,$=0,aa=0,ba=0,ca=0.0,da=0.0,ea=0,fa=0;n=i;i=i+320|0;o=n|0;p=n+16|0;q=n+32|0;r=mq(h)|0;c[5497070]=(c[5497070]|0)+1;c[6924876]=(c[6924876]|0)+1;n$(q|0,0,284)|0;s=q+204|0;t=q+212|0;g[t>>2]=1.0;g[q+184>>2]=+g[j>>2];g[q+188>>2]=+g[j+4>>2];g[q+192>>2]=+g[j+8>>2];if((c[5497046]|0)==0){m$(a|0,s|0,56)|0;u=284;v=0;i=n;return}j=(e|0)==0?876376:e;e=(f|0)==0?876376:f;c[q+196>>2]=k;w=+g[j>>2];x=+g[e>>2];y=(w+x)*.5;z=w-y;k=q+24|0;g[k>>2]=z;w=x-y;f=q+36|0;g[f>>2]=w;x=+g[b>>2];A=x+y;B=q|0;g[B>>2]=A;C=+g[d>>2];D=C+y;E=q+12|0;g[E>>2]=D;y=+g[j+4>>2];F=+g[e+4>>2];G=(y+F)*.5;H=y-G;I=q+28|0;g[I>>2]=H;y=F-G;J=q+40|0;g[J>>2]=y;K=b+4|0;F=+g[K>>2];L=F+G;M=q+4|0;g[M>>2]=L;N=d+4|0;O=+g[N>>2];P=O+G;Q=q+16|0;g[Q>>2]=P;G=+g[j+8>>2];R=+g[e+8>>2];T=(G+R)*.5;U=G-T;e=q+32|0;g[e>>2]=U;G=R-T;j=q+44|0;g[j>>2]=G;V=b+8|0;R=+g[V>>2];W=R+T;X=q+8|0;g[X>>2]=W;Y=d+8|0;Z=+g[Y>>2];_=Z+T;$=q+20|0;g[$>>2]=_;if((m|0)==0){c[q+260>>2]=l;T=w>G?G:w;g[q+264>>2]=T;g[q+268>>2]=G;g[q+272>>2]=0.0;g[q+276>>2]=0.0;g[q+280>>2]=G-T;aa=l}else{l=q+260|0;ba=m;c[l>>2]=c[ba>>2];c[l+4>>2]=c[ba+4>>2];c[l+8>>2]=c[ba+8>>2];c[l+12>>2]=c[ba+12>>2];c[l+16>>2]=c[ba+16>>2];c[l+20>>2]=c[ba+20>>2];aa=c[q+260>>2]|0}g[q+144>>2]=w+y+G;g[q+48>>2]=z;g[q+52>>2]=H;g[q+56>>2]=U;g[q+60>>2]=w;g[q+64>>2]=H;g[q+68>>2]=U;g[q+72>>2]=z;g[q+76>>2]=y;g[q+80>>2]=U;g[q+84>>2]=w;g[q+88>>2]=y;g[q+92>>2]=U;g[q+96>>2]=z;g[q+100>>2]=H;g[q+104>>2]=G;g[q+108>>2]=w;g[q+112>>2]=H;g[q+116>>2]=G;g[q+120>>2]=z;g[q+124>>2]=y;g[q+128>>2]=G;g[q+132>>2]=w;g[q+136>>2]=y;g[q+140>>2]=G;ba=q+260|0;a:do{if((aa|0)==0){if(A>2]=A+z;g[q+172>>2]=D+w}else{g[q+160>>2]=D+z;g[q+172>>2]=A+w}if(L>2]=L+H;g[q+176>>2]=P+y}else{g[q+164>>2]=P+H;g[q+176>>2]=L+y}if(W<_){g[q+168>>2]=W+U;g[q+180>>2]=_+G;break}else{g[q+168>>2]=_+U;g[q+180>>2]=W+G;break}}else{l=q+264|0;m=0;T=A;ca=D;while(1){if(T>2]));g[q+160+(m<<2)>>2]=T-da- +g[l>>2];g[q+172+(m<<2)>>2]=ca+da+ +g[l>>2]}else{da=+S(+(+g[q+272+(m<<2)>>2]));g[q+160+(m<<2)>>2]=ca-da- +g[l>>2];g[q+172+(m<<2)>>2]=T+da+ +g[l>>2]}ea=m+1|0;if((ea|0)>=3){break a}m=ea;T=+g[q+(ea<<2)>>2];ca=+g[q+12+(ea<<2)>>2]}}}while(0);do{if(x==C&F==O&R==Z){if((h|0)==254){if((c[ba>>2]|0)==0){aa=o|0;m=p|0;tq(254,aa,m);D=+g[m>>2];A=(+g[aa>>2]+D)*.5;G=D-A;g[B>>2]=+g[B>>2]-A;g[E>>2]=+g[E>>2]-A;A=(+g[o+4>>2]+ +g[p+4>>2])*.5;g[M>>2]=+g[M>>2]-A;g[Q>>2]=+g[Q>>2]-A;A=+g[p+8>>2];D=(+g[o+8>>2]+A)*.5;W=A-D;g[X>>2]=+g[X>>2]-D;g[$>>2]=+g[$>>2]-D;c[ba>>2]=1;D=G>W?W:G;g[q+264>>2]=D;g[q+268>>2]=W;g[q+272>>2]=0.0;g[q+276>>2]=0.0;g[q+280>>2]=W-D;ar(q,(mq(sq(k,f,0)|0)|0)+24|0);break}else{br(q,254);break}}else if((h|0)==0){cr(q);break}else{ar(q,r+24|0);break}}else{do{if(+g[k>>2]==0.0){if(!(+g[I>>2]==0.0)){fa=28;break}if(!(+g[e>>2]==0.0)){fa=28;break}c[q+200>>2]=1;g[q+156>>2]=0.0;g[q+152>>2]=0.0;g[q+148>>2]=0.0}else{fa=28}}while(0);if((fa|0)==28){c[q+200>>2]=0;g[q+148>>2]=+g[f>>2];g[q+152>>2]=+g[J>>2];g[q+156>>2]=+g[j>>2]}if((h|0)==0){ir(q,0,0.0,1.0,B,E);break}else if((h|0)==254){if((c[ba>>2]|0)==0){aa=o|0;m=p|0;tq(254,aa,m);D=+g[m>>2];W=(+g[aa>>2]+D)*.5;G=D-W;g[B>>2]=+g[B>>2]-W;g[E>>2]=+g[E>>2]-W;W=(+g[o+4>>2]+ +g[p+4>>2])*.5;g[M>>2]=+g[M>>2]-W;g[Q>>2]=+g[Q>>2]-W;W=+g[p+8>>2];D=(+g[o+8>>2]+W)*.5;A=W-D;g[X>>2]=+g[X>>2]-D;g[$>>2]=+g[$>>2]-D;c[ba>>2]=1;D=G>A?A:G;g[q+264>>2]=D;g[q+268>>2]=A;g[q+272>>2]=0.0;g[q+276>>2]=0.0;g[q+280>>2]=A-D;er(q,(mq(sq(k,f,0)|0)|0)+24|0);break}else{hr(q,254);break}}else{er(q,r+24|0);break}}}while(0);Z=+g[t>>2];if(Z==1.0){g[q+216>>2]=+g[d>>2];g[q+220>>2]=+g[N>>2];g[q+224>>2]=+g[Y>>2]}else{R=+g[b>>2];g[q+216>>2]=R+Z*(+g[d>>2]-R);R=+g[K>>2];g[q+220>>2]=R+Z*(+g[N>>2]-R);R=+g[V>>2];g[q+224>>2]=R+Z*(+g[Y>>2]-R)}m$(a|0,s|0,56)|0;u=284;v=0;i=n;return}function kr(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;jr(a,b,c,d,e,f,876376,g,h,0);return}function lr(a,b,d,e,f,h,j,k,l,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0.0,C=0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ba=0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0.0,ra=0.0,sa=0.0,ta=0,ua=0.0;n=i;i=i+176|0;o=n|0;p=n+56|0;q=n+72|0;r=n+88|0;s=n+112|0;t=n+152|0;u=o;v=(e|0)==0?876376:e;e=(f|0)==0?876376:f;w=+g[v>>2];x=+g[e>>2];y=(w+x)*.5;f=r|0;g[f>>2]=w-y;w=x-y;z=r+12|0;g[z>>2]=w;x=+g[b>>2]+y;A=p|0;B=+g[d>>2]+y;C=q|0;y=+g[v+4>>2];D=+g[e+4>>2];E=(y+D)*.5;g[r+4>>2]=y-E;g[r+16>>2]=D-E;F=b+4|0;D=+g[F>>2]+E;G=p+4|0;H=d+4|0;y=+g[H>>2]+E;I=q+4|0;E=+g[v+8>>2];J=+g[e+8>>2];K=(E+J)*.5;g[r+8>>2]=E-K;E=J-K;g[r+20>>2]=E;r=b+8|0;J=+g[r>>2]+K;e=p+8|0;p=d+8|0;L=+g[p>>2]+K;v=q+8|0;K=+g[k>>2];M=x-K;g[A>>2]=M;x=+g[k+4>>2];N=D-x;g[G>>2]=N;D=+g[k+8>>2];O=J-D;g[e>>2]=O;J=B-K;g[C>>2]=J;K=y-x;g[I>>2]=K;x=L-D;g[v>>2]=x;do{if((h|0)==255){P=5}else{if(+g[l>>2]!=0.0){Q=1;break}if(+g[l+4>>2]!=0.0){Q=1;break}if(+g[l+8>>2]!=0.0){Q=1}else{P=5}}}while(0);if((P|0)==5){Q=0}c[t>>2]=m;D=w>E?E:w;g[t+4>>2]=D;g[t+8>>2]=E;w=E-D;if(!Q){g[t+12>>2]=0.0;g[t+16>>2]=0.0;g[t+20>>2]=w;jr(o,A,C,f,z,h,k,j,m,t);R=+g[o+8>>2];S=+g[b>>2];T=+g[d>>2];U=T-S;V=R*U;W=S+V;X=o+12|0;g[X>>2]=W;Y=+g[F>>2];Z=+g[H>>2];_=Z-Y;$=R*_;aa=Y+$;ba=o+16|0;g[ba>>2]=aa;ca=+g[r>>2];da=+g[p>>2];ea=da-ca;fa=R*ea;ga=ca+fa;ha=o+20|0;g[ha>>2]=ga;ia=a;m$(ia|0,u|0,56)|0;ja=36;ka=0;la=56;ma=0;i=n;return}Q=s|0;P=s+12|0;q=s+24|0;BB(l,Q,P,q);D=-0.0- +g[P>>2];g[P>>2]=D;l=s+16|0;E=-0.0- +g[l>>2];g[l>>2]=E;na=s+20|0;L=-0.0- +g[na>>2];g[na>>2]=L;y=+g[Q>>2];oa=s+4|0;B=+g[oa>>2];pa=s+8|0;qa=+g[pa>>2];g[A>>2]=M*y+N*B+O*qa;g[G>>2]=M*D+N*E+O*L;ra=+g[q>>2];G=s+28|0;sa=+g[G>>2];ta=s+32|0;ua=+g[ta>>2];g[e>>2]=M*ra+N*sa+O*ua;g[C>>2]=J*y+K*B+x*qa;g[I>>2]=J*D+K*E+x*L;g[v>>2]=J*ra+K*sa+x*ua;g[t+12>>2]=w*qa;g[t+16>>2]=-0.0-w*L;g[t+20>>2]=w*ua;jr(o,A,C,f,z,h,k,j,m,t);ua=+g[o+8>>2];if(!(ua!=1.0)){R=ua;S=+g[b>>2];T=+g[d>>2];U=T-S;V=R*U;W=S+V;X=o+12|0;g[X>>2]=W;Y=+g[F>>2];Z=+g[H>>2];_=Z-Y;$=R*_;aa=Y+$;ba=o+16|0;g[ba>>2]=aa;ca=+g[r>>2];da=+g[p>>2];ea=da-ca;fa=R*ea;ga=ca+fa;ha=o+20|0;g[ha>>2]=ga;ia=a;m$(ia|0,u|0,56)|0;ja=36;ka=0;la=56;ma=0;i=n;return}w=+g[oa>>2];L=+g[l>>2];qa=+g[G>>2];x=+g[pa>>2];sa=+g[na>>2];K=+g[ta>>2];ta=o+24|0;ra=+g[ta>>2];na=o+28|0;J=+g[na>>2];pa=o+32|0;E=+g[pa>>2];g[ta>>2]=+g[Q>>2]*ra+ +g[P>>2]*J+ +g[q>>2]*E;g[na>>2]=w*ra+L*J+qa*E;g[pa>>2]=x*ra+sa*J+K*E;R=ua;S=+g[b>>2];T=+g[d>>2];U=T-S;V=R*U;W=S+V;X=o+12|0;g[X>>2]=W;Y=+g[F>>2];Z=+g[H>>2];_=Z-Y;$=R*_;aa=Y+$;ba=o+16|0;g[ba>>2]=aa;ca=+g[r>>2];da=+g[p>>2];ea=da-ca;fa=R*ea;ga=ca+fa;ha=o+20|0;g[ha>>2]=ga;ia=a;m$(ia|0,u|0,56)|0;ja=36;ka=0;la=56;ma=0;i=n;return}function mr(){var a=0,b=0;if((c[5497016]|0)==2){a=oj(c[5495993]|0)|0;b=(a|0)<0?1:a}else{b=1}c[5458860]=b;return}function nr(){return c[5497016]|0}function or(a){a=a|0;var b=0;if(!((c[5497016]|0)>>>0>a>>>0)){b=28378552;return b|0}b=c[21983968+(a<<2)>>2]|0;return b|0}function pr(){c[5493934]=21844664;c[5493935]=131072;c[5493936]=0;return}function qr(a){a=a|0;var b=0,d=0,e=0;b=i;d=o$(a|0)|0;e=c[5493936]|0;if((e+d|0)<(c[5493935]|0)){m$((c[5493934]|0)+e|0,a|0,d)|0;c[5493936]=(c[5493936]|0)+d;i=b;return}else{Sr(48576,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=b;return}}function rr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;if((b|0)==1){f=o$(d|0)|0;g=f+1|0;h=c[5493936]|0;if((g+h|0)>(c[5493935]|0)){Sr(156760,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;i=e;return}k=c[5493934]|0;if((h|0)>0){l=h;h=k;while(1){m=l-1|0;a[h+(l+f)|0]=a[h+m|0]|0;n=c[5493934]|0;if((m|0)>0){l=m;h=n}else{o=n;break}}}else{o=k}m$(o|0,d|0,f)|0;a[(c[5493934]|0)+f|0]=10;c[5493936]=(c[5493936]|0)+g;i=e;return}else if((b|0)==0){g=c[6924866]|0;do{if((d|0)==0){p=5}else{if((a[d]|0)==0){p=5;break}Tr(135104,(j=i,i=i+8|0,c[j>>2]=d,j)|0);i=j;sr(d)}}while(0);if((p|0)==5){tr();Tr(135104,(j=i,i=i+8|0,c[j>>2]=c[5493934],j)|0);i=j}if((c[6924866]|0)==(g|0)){i=e;return}else{Ur(1,123352,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}}else if((b|0)==2){b=o$(d|0)|0;g=c[5493936]|0;if((g+b|0)<(c[5493935]|0)){m$((c[5493934]|0)+g|0,d|0,b)|0;c[5493936]=(c[5493936]|0)+b;i=e;return}else{Sr(48576,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;i=e;return}}else{Ur(0,112456,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}}function sr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;Er(a,0);if((c[5497016]|0)==0){return}else{b=21975768}while(1){d=c[b>>2]|0;if((d|0)==0){break}e=d|0;if((VB(c[5495992]|0,c[d+4>>2]|0)|0)==0){f=4;break}else{b=e}}do{if((f|0)==4){c[b>>2]=c[e>>2];c[e>>2]=c[5493942];c[5493942]=d;g=c[d+8>>2]|0;if((g|0)==0){break}Uk[g&511]();return}}while(0);if((st()|0)!=0){return}d=c[5458838]|0;do{if((d|0)!=0){if((c[d+32>>2]|0)==0){break}if((vl()|0)==0){break}return}}while(0);d=c[5451068]|0;do{if((d|0)!=0){if((c[d+32>>2]|0)==0){break}if((BA()|0)==0){break}return}}while(0);d=c[5458838]|0;do{if((d|0)!=0){if((c[d+32>>2]|0)==0){break}if((Xp()|0)==0){break}return}}while(0);yo(a);return}function tr(){var b=0,d=0,e=0,f=0,g=0,h=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;b=i;i=i+1024|0;d=b|0;e=d|0;f=c[5493936]|0;if((f|0)!=0&(c[6924866]|0)==0){g=0;h=0;j=f}else{k=1024;l=0;i=b;return}while(1){m=c[5458860]|0;if((m|0)>0){break}f=c[5493934]|0;a:do{if((j|0)>0){n=0;o=0;p=g;q=h;while(1){r=a[f+n|0]|0;s=(r<<24>>24==34)+o|0;b:do{if((s&1|0)==0){do{if((n|0)<(j-1|0)){t=(p|0)!=0;u=t^1;v=r<<24>>24==47;if(v&u){if((a[f+(n+1)|0]|0)==47){w=1;x=p;break b}}if(!((q|0)!=0|v^1)){v=(a[f+(n+1)|0]|0)==42;y=0;z=v|u?v?1:p:p;break}if(!t){y=q;z=0;break}if(!(r<<24>>24==42)){y=q;z=p;break}t=n+1|0;if((a[f+t|0]|0)==47){A=q;B=0;C=t;break a}else{y=q;z=p}}else{y=q;z=p}}while(0);if((y|z|0)==0&r<<24>>24==59){A=y;B=z;C=n;break a}else{w=y;x=z}}else{w=q;x=p}}while(0);if((x|0)==0){if((r<<24>>24|0)==10|(r<<24>>24|0)==13){A=0;B=0;C=n;break a}}t=n+1|0;if((t|0)<(j|0)){n=t;o=s;p=x;q=w}else{A=w;B=x;C=t;break}}}else{A=h;B=g;C=0}}while(0);q=(C|0)<1023?C:1023;m$(e|0,f|0,q)|0;a[d+q|0]=0;if((q|0)==(j|0)){c[5493936]=0}else{p=q+1|0;q=j-p|0;c[5493936]=q;s$(f|0,f+p|0,q|0)|0}sr(e);q=c[5493936]|0;if((q|0)!=0&(c[6924866]|0)==0){g=B;h=A;j=q}else{D=22;break}}if((D|0)==22){k=1024;l=0;i=b;return}c[5458860]=m-1;k=1024;l=0;i=b;return}function ur(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=i;i=i+72|0;d=b|0;e=b+8|0;f=(VB((c[5497016]|0)!=0?c[5495992]|0:28378552,103096)|0)==0;if((c[5497016]|0)!=2){Sr(60120,(g=i,i=i+16|0,c[g>>2]=f?53136:28378552,c[g+8>>2]=f?43304:28378552,g)|0);i=g;h=64;j=0;i=b;return}TB(e,c[5495993]|0,64);WB(e,64,182432);mu(e,d)|0;k=c[d>>2]|0;if((k|0)==0){Sr(178160,(g=i,i=i+8|0,c[g>>2]=e,g)|0);i=g;h=64;j=0;i=b;return}if(f){l=k}else{Sr(174168,(g=i,i=i+8|0,c[g>>2]=e,g)|0);i=g;l=c[d>>2]|0}e=o$(l|0)|0;k=e+1|0;f=c[5493936]|0;if((k+f|0)>(c[5493935]|0)){Sr(156760,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}else{g=c[5493934]|0;if((f|0)>0){m=f;f=g;while(1){n=m-1|0;a[f+(m+e)|0]=a[f+n|0]|0;o=c[5493934]|0;if((n|0)>0){m=n;f=o}else{p=o;break}}}else{p=g}m$(p|0,l|0,e)|0;a[(c[5493934]|0)+e|0]=10;c[5493936]=(c[5493936]|0)+k}nu(c[d>>2]|0);h=64;j=0;i=b;return}function vr(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;b=i;if((c[5497016]|0)!=2){Sr(170856,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=b;return}e=ct(c[5495993]|0)|0;f=pC(167848,(d=i,i=i+8|0,c[d>>2]=e,d)|0)|0;i=d;e=o$(f|0)|0;g=e+1|0;h=c[5493936]|0;if((g+h|0)>(c[5493935]|0)){Sr(156760,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=b;return}d=c[5493934]|0;if((h|0)>0){j=h;h=d;while(1){k=j-1|0;a[h+(j+e)|0]=a[h+k|0]|0;l=c[5493934]|0;if((k|0)>0){j=k;h=l}else{m=l;break}}}else{m=d}m$(m|0,f|0,e)|0;a[(c[5493934]|0)+e|0]=10;c[5493936]=(c[5493936]|0)+g;i=b;return}function wr(){var b=0,d=0,e=0,f=0;b=i;a[30283200]=0;if((c[5497016]|0)>1){d=1;do{p$(30283200,c[21983968+(d<<2)>>2]|0)|0;e=c[5497016]|0;if((d|0)!=(e-1|0)){f=30283200+(o$(30283200)|0)|0;z=32;a[f]=z;z=z>>8;a[f+1|0]=z}d=d+1|0;}while((d|0)<(e|0))}Sr(167848,(d=i,i=i+8|0,c[d>>2]=30283200,d)|0);i=d;i=b;return}function xr(){var b=0,d=0,e=0;a[30283200]=0;if((c[5497016]|0)>1){b=1}else{return 30283200}do{p$(30283200,c[21983968+(b<<2)>>2]|0)|0;d=c[5497016]|0;if((b|0)!=(d-1|0)){e=30283200+(o$(30283200)|0)|0;z=32;a[e]=z;z=z>>8;a[e+1|0]=z}b=b+1|0;}while((b|0)<(d|0));return 30283200}function yr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[5497016]|0)>>>0>a>>>0){e=c[21983968+(a<<2)>>2]|0}else{e=28378552}TB(b,e,d);return}function zr(b){b=b|0;var d=0,e=0;a[30284224]=0;d=(b|0)<0?0:b;if((d|0)<(c[5497016]|0)){e=d}else{return 30284224}do{p$(30284224,c[21983968+(e<<2)>>2]|0)|0;d=c[5497016]|0;if((e|0)!=(d-1|0)){b=30284224+(o$(30284224)|0)|0;z=32;a[b]=z;z=z>>8;a[b+1|0]=z}e=e+1|0;}while((e|0)<(d|0));return 30284224}function Ar(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;a[30283200]=0;if((c[5497016]|0)>1){e=1}else{TB(b,30283200,d);return}do{p$(30283200,c[21983968+(e<<2)>>2]|0)|0;f=c[5497016]|0;if((e|0)!=(f-1|0)){g=30283200+(o$(30283200)|0)|0;z=32;a[g]=z;z=z>>8;a[g+1|0]=z}e=e+1|0;}while((e|0)<(f|0));TB(b,30283200,d);return}function Br(){return 21975776}function Cr(){var b=0,d=0,e=0;if((c[5497016]|0)>1){b=1}else{return}do{d=c[21983968+(b<<2)>>2]|0;if((o$(d|0)|0)>>>0>255>>>0){a[d+255|0]=0}e=tf(d|0,161464)|0;if((e|0)!=0){d=e;do{a[d]=32;d=tf(d+1|0,161464)|0;}while((d|0)!=0)}b=b+1|0;}while((b|0)<(c[5497016]|0));return}function Dr(a){a=a|0;Er(a,0);return}function Er(b,d){b=b|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,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[5497016]=0;if((b|0)==0){return}TB(21975776,b,8192);e=c[5497016]|0;if((e|0)==1024){return}f=(d|0)!=0;d=21835448;g=b;b=e;a:while(1){e=g;while(1){h=a[e]|0;if(h<<24>>24<33&h<<24>>24!=0){e=e+1|0;continue}if((h<<24>>24|0)==0){i=32;break a}else if((h<<24>>24|0)!=47){break}if((a[e+1|0]|0)==47){i=32;break a}if((a[e+1|0]|0)==42){j=e;k=47}else{break}while(1){if((k<<24>>24|0)==0){i=32;break a}else if((k<<24>>24|0)==42){l=a[j+1|0]|0;if(l<<24>>24==47){break}else{m=l}}else{m=a[j+1|0]|0}j=j+1|0;k=m}e=j+2|0}c[21983968+(b<<2)>>2]=d;c[5497016]=b+1;if(h<<24>>24==34&(f^1)){l=d;n=e;while(1){o=n+1|0;p=a[o]|0;if((p<<24>>24|0)==0|(p<<24>>24|0)==34){break}a[l]=p;l=l+1|0;n=o}a[l]=0;if((a[o]|0)==0){i=32;break}p=c[5497016]|0;if((p|0)==1024){i=32;break}else{d=l+1|0;g=n+2|0;b=p;continue}}p=a[e]|0;b:do{if(p<<24>>24>32){if(f){q=e;r=d;s=p;while(1){t=q+1|0;if(s<<24>>24==47){if((a[t]|0)==47){u=q;v=r;break b}w=q+1|0;if((a[w]|0)==42){u=q;v=r;break b}else{x=w}}else{x=t}t=r+1|0;a[r]=s;w=a[x]|0;if(w<<24>>24>32){q=x;r=t;s=w}else{u=x;v=t;break b}}}else{y=e;z=d;A=p}while(1){if((A<<24>>24|0)==47){if((a[y+1|0]|0)==47){u=y;v=z;break b}s=y+1|0;if((a[s]|0)==42){u=y;v=z;break b}else{B=s}}else if((A<<24>>24|0)==34){u=y;v=z;break b}else{B=y+1|0}s=z+1|0;a[z]=A;r=a[B]|0;if(r<<24>>24>32){y=B;z=s;A=r}else{u=B;v=s;break}}}else{u=e;v=d}}while(0);a[v]=0;e=c[5497016]|0;if((a[u]|0)==0|(e|0)==1024){i=32;break}else{d=v+1|0;g=u;b=e}}if((i|0)==32){return}}function Fr(a){a=a|0;Er(a,1);return}function Gr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=c[5493942]|0;a:do{if((e|0)!=0){f=e;while(1){if((VB(a,c[f+4>>2]|0)|0)==0){break}f=c[f>>2]|0;if((f|0)==0){break a}}if((b|0)==0){i=d;return}Sr(158584,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;i=d;return}}while(0);e=hs(16)|0;c[e+4>>2]=is(a)|0;c[e+8>>2]=b;c[e+12>>2]=0;c[e>>2]=c[5493942];c[5493942]=e;i=d;return}function Hr(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[5493942]|0;if((d|0)==0){return}else{e=d}do{if((VB(a,c[e+4>>2]|0)|0)==0){c[e+12>>2]=b}e=c[e>>2]|0;}while((e|0)!=0);return}function Ir(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=21975768;while(1){d=c[b>>2]|0;if((d|0)==0){e=7;break}f=d+4|0;g=d|0;if((k$(a,c[f>>2]|0)|0)==0){break}else{b=g}}if((e|0)==7){return}c[b>>2]=c[g>>2];g=c[f>>2]|0;if((g|0)!=0){es(g)}es(d);return}function Jr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;d=c[5493942]|0;if((d|0)==0){i=b;return}else{e=d}while(1){if((VB(a,c[e+4>>2]|0)|0)==0){break}d=c[e>>2]|0;if((d|0)==0){f=11;break}else{e=d}}if((f|0)==11){i=b;return}if((c[e+8>>2]|0)==0){g=21975768}else{Ur(1,156088,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e}while(1){h=c[g>>2]|0;if((h|0)==0){f=11;break}j=h+4|0;k=h|0;if((k$(a,c[j>>2]|0)|0)==0){break}else{g=k}}if((f|0)==11){i=b;return}c[g>>2]=c[k>>2];k=c[j>>2]|0;if((k|0)!=0){es(k)}es(h);i=b;return}function Kr(a){a=a|0;var b=0,d=0;b=c[5493942]|0;if((b|0)==0){return}else{d=b}do{vk[a&511](c[d+4>>2]|0);d=c[d>>2]|0;}while((d|0)!=0);return}function Lr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[5493942]|0;if((e|0)==0){return}else{f=e}do{do{if((VB(a,c[f+4>>2]|0)|0)==0){e=c[f+12>>2]|0;if((e|0)==0){break}hk[e&255](b,d)}}while(0);f=c[f>>2]|0;}while((f|0)!=0);return}function Mr(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;a=i;b=(c[5497016]|0)>1?c[5495993]|0:0;d=c[5493942]|0;a:do{if((d|0)==0){e=0}else{if((b|0)==0){f=0;g=d;while(1){Sr(167848,(h=i,i=i+8|0,c[h>>2]=c[g+4>>2],h)|0);i=h;j=f+1|0;k=c[g>>2]|0;if((k|0)==0){e=j;break a}else{f=j;g=k}}}else{l=0;m=d}while(1){g=m+4|0;if((as(b,c[g>>2]|0,0)|0)==0){n=l}else{Sr(167848,(h=i,i=i+8|0,c[h>>2]=c[g>>2],h)|0);i=h;n=l+1|0}g=c[m>>2]|0;if((g|0)==0){e=n;break}else{l=n;m=g}}}}while(0);Sr(154040,(h=i,i=i+8|0,c[h>>2]=e,h)|0);i=h;i=a;return}function Nr(a,b){a=a|0;b=b|0;if((b|0)!=2){return}Ss(28378552,152184,0,1);return}function Or(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a=i;b=c[5493942]|0;a:do{if((b|0)==0){d=5}else{e=b;while(1){if((VB(149888,c[e+4>>2]|0)|0)==0){break}f=c[e>>2]|0;if((f|0)==0){d=5;break a}else{e=f}}Sr(158584,(g=i,i=i+8|0,c[g>>2]=149888,g)|0);i=g;h=c[5493942]|0}}while(0);if((d|0)==5){b=hs(16)|0;e=b;c[b+4>>2]=is(149888)|0;c[b+8>>2]=294;c[b+12>>2]=0;c[b>>2]=c[5493942];c[5493942]=e;h=e}b:do{if((h|0)==0){d=10}else{e=h;while(1){if((VB(147552,c[e+4>>2]|0)|0)==0){break}b=c[e>>2]|0;if((b|0)==0){d=10;break b}else{e=b}}Sr(158584,(g=i,i=i+8|0,c[g>>2]=147552,g)|0);i=g;j=c[5493942]|0}}while(0);if((d|0)==10){h=hs(16)|0;e=h;c[h+4>>2]=is(147552)|0;c[h+8>>2]=180;c[h+12>>2]=0;c[h>>2]=c[5493942];c[5493942]=e;j=e}c:do{if((j|0)==0){d=15}else{e=j;while(1){if((VB(103096,c[e+4>>2]|0)|0)==0){break}h=c[e>>2]|0;if((h|0)==0){d=15;break c}else{e=h}}Sr(158584,(g=i,i=i+8|0,c[g>>2]=103096,g)|0);i=g;k=c[5493942]|0}}while(0);if((d|0)==15){j=hs(16)|0;e=j;c[j+4>>2]=is(103096)|0;c[j+8>>2]=180;c[j+12>>2]=0;c[j>>2]=c[5493942];c[5493942]=e;k=e}d:do{if((k|0)==0){d=28}else{e=k;do{if((VB(147552,c[e+4>>2]|0)|0)==0){c[e+12>>2]=136}e=c[e>>2]|0;}while((e|0)!=0);e=c[5493942]|0;if((e|0)==0){d=28;break}else{l=e}do{if((VB(103096,c[l+4>>2]|0)|0)==0){c[l+12>>2]=136}l=c[l>>2]|0;}while((l|0)!=0);e=c[5493942]|0;if((e|0)==0){d=28;break}else{m=e}while(1){if((VB(144976,c[m+4>>2]|0)|0)==0){break}e=c[m>>2]|0;if((e|0)==0){d=28;break d}else{m=e}}Sr(158584,(g=i,i=i+8|0,c[g>>2]=144976,g)|0);i=g;n=c[5493942]|0}}while(0);if((d|0)==28){m=hs(16)|0;l=m;c[m+4>>2]=is(144976)|0;c[m+8>>2]=156;c[m+12>>2]=0;c[m>>2]=c[5493942];c[5493942]=l;n=l}e:do{if((n|0)==0){d=37}else{l=n;do{if((VB(144976,c[l+4>>2]|0)|0)==0){c[l+12>>2]=160}l=c[l>>2]|0;}while((l|0)!=0);l=c[5493942]|0;if((l|0)==0){d=37;break}else{o=l}while(1){if((VB(142376,c[o+4>>2]|0)|0)==0){break}l=c[o>>2]|0;if((l|0)==0){d=37;break e}else{o=l}}Sr(158584,(g=i,i=i+8|0,c[g>>2]=142376,g)|0);i=g;p=c[5493942]|0}}while(0);if((d|0)==37){d=hs(16)|0;o=d;c[d+4>>2]=is(142376)|0;c[d+8>>2]=302;c[d+12>>2]=0;c[d>>2]=c[5493942];c[5493942]=o;p=o}f:do{if((p|0)!=0){o=p;while(1){if((VB(139976,c[o+4>>2]|0)|0)==0){break}o=c[o>>2]|0;if((o|0)==0){break f}}Sr(158584,(g=i,i=i+8|0,c[g>>2]=139976,g)|0);i=g;i=a;return}}while(0);g=hs(16)|0;c[g+4>>2]=is(139976)|0;c[g+8>>2]=246;c[g+12>>2]=0;c[g>>2]=c[5493942];c[5493942]=g;i=a;return}function Pr(a,b){a=a|0;b=b|0;var d=0;d=X_(1,8)|0;c[d+4>>2]=a;if((b|0)!=0){c[d>>2]=X_(b,1)|0}c[6924866]=(c[6924866]|0)+1;return d|0}function Qr(b,d,e){b=b|0;d=d|0;e=e|0;if((b|0)==0|(d|0)==0|(e|0)==0){return}c[4917280]=b;c[4917278]=d;c[4917276]=e;a[b]=0;return}function Rr(){var a=0;a=c[4917276]|0;if((a|0)!=0){vk[a&511](c[4917280]|0)}c[4917280]=0;c[4917278]=0;c[4917276]=0;return}function Sr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;i=i+4120|0;f=e|0;g=e+4112|0;h=e+16|0;j=f;c[j>>2]=d;c[j+4>>2]=0;Xe(h|0,4096,b|0,f|0)|0;f=c[4917280]|0;if((f|0)!=0){b=o$(h|0)|0;j=(o$(f|0)|0)+b|0;b=c[4917278]|0;if(j>>>0>(b-1|0)>>>0){vk[c[4917276]&511](f);a[c[4917280]|0]=0;k=c[4917280]|0;l=c[4917278]|0}else{k=f;l=b}XB(k,l,h);m=4096;n=0;i=e;return}$l(h);OL(h);l=c[5457494]|0;if((l|0)==0){m=4096;n=0;i=e;return}if((c[l+32>>2]|0)==0){m=4096;n=0;i=e;return}do{if((c[4982016]|0)==0){l=(Lt()|0)==0;if(!(l|a[186912])){a[186912]=1;Xj(g|0)|0;l=yb(g|0)|0;k=Zt(46136)|0;c[4982016]=k;do{if((k|0)==0){Sr(134384,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o;nt(123e3,0.0)}else{b=Ki(l|0)|0;Sr(155448,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o;if((c[(c[5457494]|0)+32>>2]|0)<=1){break}Pt(c[4982016]|0)}}while(0);a[186912]=0}if((c[4982016]|0)!=0){break}m=4096;n=0;i=e;return}}while(0);if((Lt()|0)==0){m=4096;n=0;i=e;return}o=o$(h|0)|0;gu(h,o,c[4982016]|0)|0;m=4096;n=0;i=e;return}function Tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+4112|0;e=d|0;f=d+16|0;g=c[5458546]|0;if((g|0)==0){h=4096;j=0;i=d;return}if((c[g+32>>2]|0)==0){h=4096;j=0;i=d;return}g=e;c[g>>2]=b;c[g+4>>2]=0;Xe(f|0,4096,a|0,e|0)|0;Sr(111992,(e=i,i=i+8|0,c[e>>2]=f,e)|0);i=e;h=4096;j=0;i=d;return}function Ur(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e|0;if((c[5458544]|0)!=0){PL(102744,(g=i,i=i+8|0,c[g>>2]=21830080,g)|0);i=g}c[5458544]=1;e=pC(52976,(g=i,i=i+8|0,c[g>>2]=a,g)|0)|0;i=g;kt(59792,e);e=c[5458844]|0;if((e|0)==0){h=a}else{h=(c[e+32>>2]|0)==0?a:0}a=wf()|0;if((a-(c[7570794]|0)|0)<100){e=c[7570796]|0;c[7570796]=e+1;j=(e|0)>2?0:h}else{c[7570796]=0;j=h}c[7570794]=a;a=f;c[a>>2]=d;c[a+4>>2]=0;Xe(21830080,4096,b|0,f|0)|0;if((j-3|0)>>>0>1>>>0){kt(47184,21830080)}if((j&-2|0)==2){kD();MA(43168);mo(1);to();lD();Pu(28378728,28378728);c[5458544]=0;Gh(28377752,-1|0)}if((j|0)==1){Sr(178008,(g=i,i=i+8|0,c[g>>2]=21830080,g)|0);i=g;kD();f=pC(174048,(g=i,i=i+8|0,c[g>>2]=21830080,g)|0)|0;i=g;MA(f);mo(1);to();lD();Pu(28378728,28378728);c[5458544]=0;Gh(28377752,-1|0)}kD();if((j|0)==4){MA(170800);j=c[5458838]|0;do{if((j|0)!=0){if((c[j+32>>2]|0)==0){break}mo(1);to();lD();ho();Pu(28378728,28378728);c[5458544]=0;Gh(28377752,-1|0)}}while(0);Sr(167672,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;lD();Pu(28378728,28378728);c[5458544]=0;Gh(28377752,-1|0)}j=pC(164200,(g=i,i=i+8|0,c[g>>2]=21830080,g)|0)|0;i=g;mp(j,1,1);j=pC(161400,(g=i,i=i+8|0,c[g>>2]=21830080,g)|0)|0;i=g;MA(j);lD();j=c[4982016]|0;if((j|0)!=0){Yt(j);c[4982016]=0}j=c[5457498]|0;if((j|0)!=0){Yt(j);c[5457498]=0}j=c[4930342]|0;if((j|0)==0){PL(111992,(g=i,i=i+8|0,c[g>>2]=21830080,g)|0);i=g}Yt(j);Tt(c[(c[5457226]|0)+4>>2]|0);PL(111992,(g=i,i=i+8|0,c[g>>2]=21830080,g)|0);i=g}function Vr(a){a=a|0;var b=0,d=0,e=0,f=0;b=1;d=0;e=i;i=i+168|0;c[e>>2]=0;while(1)switch(b|0){case 1:f=w$(28377752,b,e)|0;b=4;break;case 4:if((f|0)==0){b=2;break}else{b=3;break};case 2:ra(c[a+4>>2]|0,a|0,0);if((u|0)!=0&(v|0)!=0){d=x$(c[u>>2]|0,e)|0;if((d|0)>0){b=-1;break}else return}u=v=0;b=3;break;case 3:return;case-1:if((d|0)==1){f=v;b=4}u=v=0;break}}function Wr(){var b=0;b=xr()|0;if((c[5458544]|0)!=0){JL()}kD();MA((a[b]|0)!=0?b:158528);mp((a[b]|0)!=0?b:156040,1,1);lD();b=c[4982016]|0;if((b|0)!=0){Yt(b);c[4982016]=0}b=c[5457498]|0;if((b|0)!=0){Yt(b);c[5457498]=0}b=c[4930342]|0;if((b|0)!=0){Yt(b);Tt(c[(c[5457226]|0)+4>>2]|0)}b=X_(1,8)|0;c[b+4>>2]=44;c[6924866]=(c[6924866]|0)+1;Hu(1,b);return}function Xr(a,b){a=a|0;b=b|0;b=c[a>>2]|0;if((b|0)!=0){W_(b)}W_(a);c[6924866]=(c[6924866]|0)-1;JL()}function Yr(){var b=0,d=0,e=0,f=0,g=0;if((c[5457484]|0)>0){b=0}else{d=0;return d|0}while(1){e=21834200+(b<<2)|0;Dr(c[e>>2]|0);if((VB(or(0)|0,154008)|0)==0){break}f=b+1|0;if((VB(or(0)|0,152152)|0)==0){break}if((f|0)<(c[5457484]|0)){b=f}else{d=0;g=6;break}}if((g|0)==6){return d|0}a[c[e>>2]|0]=0;d=1;return d|0}function Zr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[5457484]|0)<=0){return}if((a|0)==0){b=0;do{Dr(c[21834200+(b<<2)>>2]|0);do{if((k$(or(0)|0,149792)|0)==0){d=or(1)|0;e=(et(d)|0)==-2147483648;f=or(2)|0;if(e){gt(d,f,128)|0;break}else{it(d,f,0)|0;break}}}while(0);b=b+1|0;}while((b|0)<(c[5457484]|0));return}else{g=0}do{Dr(c[21834200+(g<<2)>>2]|0);do{if((k$(or(0)|0,149792)|0)==0){b=or(1)|0;if((k$(b,a)|0)!=0){break}f=(et(b)|0)==-2147483648;d=or(2)|0;if(f){gt(b,d,128)|0;break}else{it(b,d,0)|0;break}}}while(0);g=g+1|0;}while((g|0)<(c[5457484]|0));return}function _r(b){b=b|0;var d=0,e=0,f=0,g=0,h=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=i;i=i+16384|0;e=d|0;f=e|0;g=d+8192|0;h=(a[b]|0)==92?b+1|0:b;b=a[h]|0;if(b<<24>>24==0){j=8192;k=0;l=8192;m=0;i=d;return}n=e;o=e+20|0;e=h;h=f;p=b;while(1){if(!((p<<24>>24|0)==0|(p<<24>>24|0)==92)){b=e+1|0;a[h]=p;e=b;h=h+1|0;p=a[b]|0;continue}b=h-n|0;if((b|0)<20){n$(h|0,32,20-b|0)|0;a[o]=0}else{a[h]=0}Sr(144912,(q=i,i=i+8|0,c[q>>2]=f,q)|0);i=q;if((a[e]|0)==0){break}else{r=e;s=g}while(1){t=r+1|0;b=a[t]|0;if((b<<24>>24|0)==0|(b<<24>>24|0)==92){break}a[s]=b;r=t;s=s+1|0}a[s]=0;b=(a[t]|0)==0?t:r+2|0;Sr(139920,(q=i,i=i+8|0,c[q>>2]=g,q)|0);i=q;u=a[b]|0;if(u<<24>>24==0){v=13;break}else{e=b;h=f;p=u}}if((v|0)==13){j=8192;k=0;l=8192;m=0;i=d;return}Sr(142216,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;j=8192;k=0;l=8192;m=0;i=d;return}function $r(b,c,d){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;e=o$(b|0)|0;f=e-(o$(c|0)|0)|0;if((f|0)<0){g=0;return g|0}e=(d|0)==0;d=b;b=0;a:while(1){h=a[c]|0;if(h<<24>>24==0){g=d;i=13;break}b:do{if(e){j=0;k=c;while(1){l=Rg(a[d+j|0]|0)|0;if((l|0)!=(Rg(a[k]|0)|0)){break}l=j+1|0;m=c+l|0;if((a[m]|0)==0){g=d;i=13;break a}else{j=l;k=m}}n=a[k]|0}else{j=0;m=h;while(1){if(!((a[d+j|0]|0)==m<<24>>24)){n=m;break b}l=j+1|0;o=a[c+l|0]|0;if(o<<24>>24==0){g=d;i=13;break a}else{j=l;m=o}}}}while(0);if(n<<24>>24==0){g=d;i=13;break}if((b|0)>=(f|0)){g=0;i=13;break}d=d+1|0;b=b+1|0}if((i|0)==13){return g|0}return 0}function as(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+1024|0;f=e|0;g=f|0;h=(d|0)==0;j=b;b=c;a:while(1){c=j;while(1){k=a[c]|0;if((k<<24>>24|0)==91){l=c+1|0;m=a[l]|0;if((m<<24>>24|0)==91){c=l;continue}else if((m<<24>>24|0)==0){n=0;o=38;break a}else{p=l;q=m;o=11;break}}else if((k<<24>>24|0)==42){r=0;s=c}else if((k<<24>>24|0)==0){n=1;o=38;break a}else if((k<<24>>24|0)==63){o=9;break}else{o=34;break}while(1){t=s+1|0;m=a[t]|0;if((m<<24>>24|0)==0|(m<<24>>24|0)==42|(m<<24>>24|0)==63){break}a[f+r|0]=m;r=r+1|0;s=t}a[f+r|0]=0;if((a[g]|0)==0){c=t}else{o=7;break}}if((o|0)==7){o=0;m=$r(b,g,d)|0;if((m|0)==0){n=0;o=38;break}j=t;b=m+(o$(g|0)|0)|0;continue}else if((o|0)==9){o=0;j=c+1|0;b=b+1|0;continue}else if((o|0)==11){while(1){o=0;m=a[p+1|0]|0;do{if(q<<24>>24==93){if(!(m<<24>>24==93)){n=0;o=38;break a}u=p+1|0;o=24}else{l=p+1|0;if(!(m<<24>>24==45)){u=l;o=24;break}v=p+2|0;w=a[v]|0;if((w<<24>>24|0)==93){if((a[p+3|0]|0)!=93){u=l;o=24;break}}else if((w<<24>>24|0)==0){u=l;o=24;break}l=a[b]|0;do{if(h){x=Rg(l<<24>>24|0)|0;if((x|0)<(Rg(a[p]|0)|0)){y=0;break}x=Rg(a[b]|0)|0;y=(x|0)<=(Rg(a[v]|0)|0)|0}else{if(l<<24>>24>24){y=0;break}y=l<<24>>24<=w<<24>>24|0}}while(0);z=y;A=p+3|0}}while(0);do{if((o|0)==24){o=0;if(h){m=Rg(q<<24>>24|0)|0;z=(m|0)==(Rg(a[b]|0)|0)|0;A=u;break}else{z=q<<24>>24==(a[b]|0)|0;A=u;break}}}while(0);B=a[A]|0;C=(z|0)==0;if(B<<24>>24!=0&C){p=A;q=B;o=11}else{break}}if(C){n=0;o=38;break}else{D=A;E=B}while(1){if((E<<24>>24|0)==93){m=D+1|0;if((a[m]|0)==93){F=93}else{G=m;break}}else if((E<<24>>24|0)==0){o=29;break}else{F=a[D+1|0]|0}D=D+1|0;E=F}if((o|0)==29){o=0;G=D+1|0}j=G;b=b+1|0;continue}else if((o|0)==34){o=0;if(h){m=Rg(k<<24>>24|0)|0;if((m|0)!=(Rg(a[b]|0)|0)){n=0;o=38;break}}else{if(!(k<<24>>24==(a[b]|0))){n=0;o=38;break}}j=c+1|0;b=b+1|0;continue}}if((o|0)==38){i=e;return n|0}return 0}function bs(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+128|0;f=e|0;g=e+64|0;h=f|0;j=g|0;k=0;while(1){l=a[b+k|0]|0;if((l<<24>>24|0)==92|(l<<24>>24|0)==58){a[f+k|0]=47}else if((l<<24>>24|0)==0){m=k;break}else{a[f+k|0]=l}l=k+1|0;if((l|0)<63){k=l}else{m=l;break}}a[f+m|0]=0;m=0;while(1){f=a[c+m|0]|0;if((f<<24>>24|0)==0){n=m;break}else if((f<<24>>24|0)==92|(f<<24>>24|0)==58){a[g+m|0]=47}else{a[g+m|0]=f}f=m+1|0;if((f|0)<63){m=f}else{n=f;break}}a[g+n|0]=0;n=as(h,j,d)|0;i=e;return n|0}function cs(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+8|0;d=b|0;e=Xj(0)|0;c[d>>2]=e;if((a|0)==0){f=e;i=b;return f|0}e=yb(d|0)|0;if((e|0)!=0){c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];c[a+12>>2]=c[e+12>>2];c[a+16>>2]=c[e+16>>2];c[a+20>>2]=c[e+20>>2];c[a+24>>2]=c[e+24>>2];c[a+28>>2]=c[e+28>>2];c[a+32>>2]=c[e+32>>2]}f=c[d>>2]|0;i=b;return f|0}function ds(){var a=0;a=c[4954636]|0;return(c[a>>2]|0)-(c[a+4>>2]|0)|0}function es(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;if((a|0)==0){Ur(1,137848,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}e=a-20|0;f=e;if((c[a-4>>2]|0)!=1919505){Ur(0,136296,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}g=a-16|0;h=c[g>>2]|0;if((h|0)==0){Ur(0,134816,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}else if((h|0)==5){i=b;return}else{j=e;e=c[j>>2]|0;if((c[a+(e-24)>>2]|0)!=1919505){Ur(0,133264,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}d=c[((h|0)==4?2160632:19818544)>>2]|0;h=d+4|0;c[h>>2]=(c[h>>2]|0)-e;e=c[j>>2]|0;n$(a|0,-86|0,e-20|0)|0;c[g>>2]=0;g=c[a-8>>2]|0;do{if((c[g+4>>2]|0)==0){j=g|0;c[j>>2]=(c[j>>2]|0)+e;j=c[a-12>>2]|0;c[g+8>>2]=j;c[j+12>>2]=g;j=d+28|0;if((f|0)!=(c[j>>2]|0)){k=g;l=j;break}c[j>>2]=g;k=g;l=j}else{k=f;l=d+28|0}}while(0);c[l>>2]=k;l=k+8|0;d=c[l>>2]|0;if((c[d+4>>2]|0)!=0){i=b;return}f=k|0;c[f>>2]=(c[f>>2]|0)+(c[d>>2]|0);f=c[d+8>>2]|0;c[l>>2]=f;c[f+12>>2]=k;i=b;return}}function fs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;if((b|0)==4){e=2160632}else if((b|0)==0){Ur(0,132176,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}else{e=19818544}g=c[e>>2]|0;e=a+27&-4;a=g+28|0;h=c[a>>2]|0;j=c[h+12>>2]|0;if((h|0)==(j|0)){k=c[540158]|0;l=(g|0)==(k|0);m=l?129696:128528;Ur(0,131064,(f=i,i=i+16|0,c[f>>2]=e,c[f+8>>2]=m,f)|0);i=f;return 0}else{n=h;o=h}while(1){h=c[n+8>>2]|0;p=(c[n+4>>2]|0)==0?o:h;q=p+4|0;if((c[q>>2]|0)==0){r=p|0;s=c[r>>2]|0;if((s|0)>=(e|0)){break}}if((h|0)==(j|0)){t=5;break}else{n=h;o=p}}if((t|0)==5){k=c[540158]|0;l=(g|0)==(k|0);m=l?129696:128528;Ur(0,131064,(f=i,i=i+16|0,c[f>>2]=e,c[f+8>>2]=m,f)|0);i=f;return 0}f=s-e|0;if((f|0)>64){m=p;l=m+e|0;k=l;c[l>>2]=f;c[m+(e+4)>>2]=0;c[m+(e+12)>>2]=p;c[m+(e+16)>>2]=1919505;f=p+8|0;l=c[f>>2]|0;c[m+(e+8)>>2]=l;c[l+12>>2]=k;c[f>>2]=k;c[r>>2]=e;u=e;v=k;w=m}else{u=s;v=c[p+8>>2]|0;w=p}c[q>>2]=b;c[a>>2]=v;v=g+4|0;c[v>>2]=(c[v>>2]|0)+u;c[p+16>>2]=1919505;c[w+((c[r>>2]|0)-4)>>2]=1919505;i=d;return p+20|0}function gs(a){a=a|0;var b=0;b=fs(a,1)|0;n$(b|0,0,a|0)|0;return b|0}function hs(a){a=a|0;return fs(a,4)|0}function is(b){b=b|0;var c=0,d=0;c=a[b]|0;if(c<<24>>24==0){d=29668;return d|0}do{if((a[b+1|0]|0)==0){if(!((c-48&255)>>>0<10>>>0)){break}d=10796+(((c<<24>>24)-48|0)*24|0)|0;return d|0}}while(0);c=fs((o$(b|0)|0)+1|0,4)|0;r$(c|0,b|0)|0;d=c;return d|0}function js(){var a=0,b=0,d=0,e=0,f=0,g=0,h=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;a=i;b=0;d=0;e=0;f=0;g=(c[4954636]|0)+16|0;while(1){h=c[g>>2]|0;if((nr()|0)==1){j=h+4|0}else{k=c[h>>2]|0;l=h+4|0;m=c[l>>2]|0;Sr(119144,(n=i,i=i+24|0,c[n>>2]=h,c[n+8>>2]=k,c[n+16>>2]=m,n)|0);i=n;j=l}l=c[j>>2]|0;do{if((l|0)==0){o=b;p=d;q=e;r=f}else{m=c[h>>2]|0;k=m+f|0;s=e+1|0;if((l|0)==2){o=b;p=m+d|0;q=s;r=k;break}else if((l|0)==3){o=m+b|0;p=d;q=s;r=k;break}else{o=b;p=d;q=s;r=k;break}}}while(0);l=h+8|0;k=c[l>>2]|0;if((k|0)==((c[4954636]|0)+8|0)){break}if((h+(c[h>>2]|0)|0)==(k|0)){t=k}else{Sr(117936,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;t=c[l>>2]|0}if((c[t+12>>2]|0)!=(h|0)){Sr(116840,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}if((c[j>>2]|0)!=0){b=o;d=p;e=q;f=r;g=l;continue}if((c[(c[l>>2]|0)+4>>2]|0)!=0){b=o;d=p;e=q;f=r;g=l;continue}Sr(115576,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;b=o;d=p;e=q;f=r;g=l}g=c[540158]|0;f=g+8|0;e=0;d=c[g+16>>2]|0;while(1){if((c[d+4>>2]|0)==0){u=e}else{u=(c[d>>2]|0)+e|0}g=c[d+8>>2]|0;if((g|0)==(f|0)){break}else{e=u;d=g}}Sr(114296,(n=i,i=i+8|0,c[n>>2]=c[4883702],n)|0);i=n;Sr(113248,(n=i,i=i+8|0,c[n>>2]=c[553002],n)|0);i=n;Sr(147448,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;Sr(112336,(n=i,i=i+8|0,c[n>>2]=c[5115642],n)|0);i=n;Sr(111536,(n=i,i=i+8|0,c[n>>2]=c[5115643],n)|0);i=n;d=c[5115644]|0;if((d|0)!=(c[5115643]|0)){Sr(110816,(n=i,i=i+8|0,c[n>>2]=d,n)|0);i=n}Sr(109792,(n=i,i=i+8|0,c[n>>2]=c[5115645],n)|0);i=n;Sr(147448,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;Sr(108376,(n=i,i=i+8|0,c[n>>2]=c[5115646],n)|0);i=n;Sr(107464,(n=i,i=i+8|0,c[n>>2]=c[5115647],n)|0);i=n;d=c[5115648]|0;if((d|0)!=(c[5115647]|0)){Sr(106520,(n=i,i=i+8|0,c[n>>2]=d,n)|0);i=n}Sr(105616,(n=i,i=i+8|0,c[n>>2]=c[5115649],n)|0);i=n;Sr(147448,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;Sr(104856,(n=i,i=i+8|0,c[n>>2]=(c[5115647]|0)+(c[5115643]|0),n)|0);i=n;d=c[5115645]|0;e=c[5115643]|0;f=(d|0)>(e|0)?d-e|0:0;e=c[5115649]|0;d=c[5115647]|0;if((e|0)<=(d|0)){v=f;Sr(103872,(n=i,i=i+8|0,c[n>>2]=v,n)|0);i=n;Sr(147448,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;Sr(103008,(n=i,i=i+16|0,c[n>>2]=r,c[n+8>>2]=q,n)|0);i=n;Sr(102200,(n=i,i=i+8|0,c[n>>2]=p,n)|0);i=n;Sr(101320,(n=i,i=i+8|0,c[n>>2]=o,n)|0);i=n;w=r-p|0;x=w-o|0;Sr(100272,(n=i,i=i+8|0,c[n>>2]=x,n)|0);i=n;Sr(99064,(n=i,i=i+8|0,c[n>>2]=u,n)|0);i=n;i=a;return}v=e-d+f|0;Sr(103872,(n=i,i=i+8|0,c[n>>2]=v,n)|0);i=n;Sr(147448,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;Sr(103008,(n=i,i=i+16|0,c[n>>2]=r,c[n+8>>2]=q,n)|0);i=n;Sr(102200,(n=i,i=i+8|0,c[n>>2]=p,n)|0);i=n;Sr(101320,(n=i,i=i+8|0,c[n>>2]=o,n)|0);i=n;w=r-p|0;x=w-o|0;Sr(100272,(n=i,i=i+8|0,c[n>>2]=x,n)|0);i=n;Sr(99064,(n=i,i=i+8|0,c[n>>2]=u,n)|0);i=n;i=a;return}function ks(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;a=i;b=c[4954636]|0;d=c[b+16>>2]|0;e=c[d+8>>2]|0;f=b+8|0;a:do{if((e|0)!=(f|0)){b=d;g=e;while(1){if((b+(c[b>>2]|0)|0)!=(g|0)){h=3;break}if((c[g+12>>2]|0)!=(b|0)){h=5;break}if((c[b+4>>2]|0)==0){if((c[g+4>>2]|0)==0){h=9;break}}j=c[g+8>>2]|0;if((j|0)==(f|0)){break a}else{b=g;g=j}}if((h|0)==3){Ur(0,127264,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k}else if((h|0)==5){Ur(0,125992,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k}else if((h|0)==9){Ur(0,124904,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k}}}while(0);h=wf()|0;f=c[5115643]>>2;if((f|0)>0){e=0;do{e=e+64|0;}while((e|0)<(f|0))}f=c[5115647]|0;e=(c[4883702]|0)-f>>2;d=f>>2;if((e|0)<(d|0)){f=e;do{f=f+64|0;}while((f|0)<(d|0))}d=c[4954636]|0;f=d+8|0;e=c[d+16>>2]|0;do{b:do{if((c[e+4>>2]|0)!=0){d=c[e>>2]>>2;if((d|0)>0){l=64}else{break}while(1){if((l|0)>=(d|0)){break b}l=l+64|0}}}while(0);e=c[e+8>>2]|0;}while((e|0)!=(f|0));f=(wf()|0)-h|0;Sr(64136,(k=i,i=i+8|0,c[k>>2]=f,k)|0);i=k;i=a;return}function ls(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0;a=i;if((Ot()|0)!=0){Ur(0,57112,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}d=gt(56328,55520,33)|0;e=c[5458548]|0;if((e|0)==0){f=5}else{if((c[e+32>>2]|0)==0){f=5}else{g=55424;h=1}}if((f|0)==5){g=54568;h=56}f=c[d+32>>2]|0;if((f|0)<(h|0)){c[4883702]=h<<20;Sr(g,(b=i,i=i+16|0,c[b>>2]=h,c[b+8>>2]=h,b)|0);i=b;j=c[4883702]|0}else{h=f<<20;c[4883702]=h;j=h}h=X_(j+31|0,1)|0;c[4883704]=h;if((h|0)==0){Ur(0,53984,(b=i,i=i+8|0,c[b>>2]=(j|0)/1048576|0,b)|0);i=b}else{c[4883704]=h+31&-32;rl();Vp();yA();zl();n$(20462568,0,16)|0;n$(20462584,0,16)|0;c[5115640]=20462568;c[5115638]=20462584;Sr(53080,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;jD();Gr(53496,356);i=a;return}}function ms(){var a=0,b=0;a=i;rl();Vp();yA();zl();n$(20462568|0,0|0,16|0)|0;n$(20462584|0,0|0,16|0)|0;c[5115640]=20462568;c[5115638]=20462584;Sr(53080,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;jD();i=a;return}function ns(){var a=0,b=0,d=0,e=0;a=c[5115643]|0;b=c[5115644]|0;d=c[5115647]|0;e=c[5115648]|0;return(c[4883702]|0)-((a|0)>(b|0)?a:b)-((d|0)>(e|0)?d:e)|0}function os(){c[5115642]=c[5115643];c[5115646]=c[5115647];return}function ps(){var a=0;a=c[5115642]|0;c[5115644]=a;c[5115643]=a;a=c[5115646]|0;c[5115648]=a;c[5115647]=a;return}function qs(){return(c[5115646]|c[5115642]|0)!=0|0}function rs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;e=c[4883704]|0;if((e|0)==0){Ur(0,52512,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}g=c[5115638]|0;h=c[g+8>>2]|0;j=c[g+4>>2]|0;do{if((b|0)!=2&(h|0)==(j|0)){k=c[5115640]|0;if((b|0)==1&(k|0)!=20462568){if(((c[g+12>>2]|0)-h|0)<=((c[k+12>>2]|0)-(c[k+4>>2]|0)|0)){break}c[5115638]=k;c[5115640]=g;break}if(!((b|0)==0&(k|0)!=20462584)){break}if(((c[g+12>>2]|0)-h|0)<=((c[k+12>>2]|0)-(c[k+4>>2]|0)|0)){break}c[5115638]=k;c[5115640]=g}else{if((h|0)!=(j|0)){break}k=c[5115640]|0;if(((c[g+12>>2]|0)-j|0)<=((c[k+12>>2]|0)-(c[k+4>>2]|0)|0)){break}c[5115638]=k;c[5115640]=g}}while(0);g=a+31&-32;if(((c[5115644]|0)+g+(c[5115648]|0)|0)>(c[4883702]|0)){Ur(1,52080,(f=i,i=i+8|0,c[f>>2]=g,f)|0);i=f;return 0}f=c[5115640]|0;if((f|0)==20462568){a=c[5115643]|0;j=a+g|0;c[5115643]=j;l=a;m=20462568;n=j;o=e+l|0;p=m+8|0;c[p>>2]=n;n$(o|0,0,g|0)|0;i=d;return o|0}else{j=f+4|0;a=(c[j>>2]|0)+g|0;c[j>>2]=a;l=(c[4883702]|0)-a|0;m=f;n=a;o=e+l|0;p=m+8|0;c[p>>2]=n;n$(o|0,0,g|0)|0;i=d;return o|0}return 0}function ss(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;d=c[4883704]|0;if((d|0)==0){e=fs(a,1)|0;n$(e|0,0,a|0)|0;f=e;i=b;return f|0}e=c[5115638]|0;g=c[e+8>>2]|0;do{if((g|0)==(c[e+4>>2]|0)){h=c[5115640]|0;j=c[h+4>>2]|0;if(((c[e+12>>2]|0)-g|0)<=((c[h+12>>2]|0)-j|0)){k=e;l=j;m=g;break}c[5115638]=h;c[5115640]=e;k=h;l=g;m=c[h+8>>2]|0}else{k=e;l=c[(c[5115640]|0)+4>>2]|0;m=g}}while(0);g=a+11&-4;a=m+g|0;if((a+l|0)>(c[4883702]|0)){Ur(1,51408,(l=i,i=i+8|0,c[l>>2]=g,l)|0);i=l;return 0}c[k+8>>2]=a;if((k|0)==20462568){n=m;o=20462568}else{n=(c[4883702]|0)-a|0;o=k}k=o+12|0;if((a|0)>(c[k>>2]|0)){c[k>>2]=a}c[d+n>>2]=-1991018350;c[d+(n+4)>>2]=g;f=d+(n+8)|0;i=b;return f|0}function ts(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=c[4883704]|0;if((d|0)==0){es(a);i=b;return}e=a-8|0;f=e;if(!((c[f>>2]|0)==-1991018350)){Ur(0,50616,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}c[f>>2]=-1991018349;f=c[5115638]|0;if((f|0)==20462568){h=(c[5115644]|0)-(c[a-4>>2]|0)|0;if((e|0)==(d+h|0)){c[5115644]=h;i=b;return}else{Sr(49800,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;i=b;return}}else{h=f+8|0;f=c[h>>2]|0;if((e|0)==(d+((c[4883702]|0)-f)|0)){c[h>>2]=f-(c[a-4>>2]|0);i=b;return}else{Sr(49800,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;i=b;return}}}function us(){var a=0;if((c[4883704]|0)==0){return}a=c[5115638]|0;c[a+8>>2]=c[a+4>>2];return}function vs(){var a=0,b=0,d=0,e=0;a=i;Zr(49088);b=gt(49088,48560,16)|0;c[5457502]=b;d=c[b+32>>2]|0;if((d|0)==1){Sr(48e3,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;c[5457498]=Zt(47648)|0;c[5457500]=Zt(47248)|0}else if((d|0)==2){Sr(46864,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;cu(47648,21829992,1)|0;cu(47248,2183e4,1)|0}else if((d|0)==0){i=a;return}if((c[5457498]|0)!=0&(c[5457500]|0)!=0){i=a;return}kt(46576,48560);c[5457498]=0;c[5457500]=0;Sr(46208,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=a;return}function ws(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;j=c[5312726]|0;k=j&255;if((j-(c[5311188]|0)|0)>255){Sr(45600,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;l=c[21244780+(k*24|0)>>2]|0;if((l|0)!=0){es(l)}c[5311188]=(c[5311188]|0)+1;m=c[5312726]|0}else{m=j}c[5312726]=m+1;if((a|0)==0){n=wf()|0}else{n=a}c[21244760+(k*24|0)>>2]=n;c[21244764+(k*24|0)>>2]=b;c[21244768+(k*24|0)>>2]=d;c[21244772+(k*24|0)>>2]=e;c[21244776+(k*24|0)>>2]=f;c[21244780+(k*24|0)>>2]=g;i=h;return}function xs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;b=i;i=i+24|0;d=b|0;e=c[5311188]|0;if((c[5312726]|0)>(e|0)){c[5311188]=e+1;f=a;g=21244760+((e&255)*24|0)|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[f+16>>2]=c[g+16>>2];c[f+20>>2]=c[g+20>>2];i=b;return}g=HL()|0;if((g|0)!=0){f=(o$(g|0)|0)+1|0;e=fs(f,1)|0;n$(e|0,0,f|0)|0;r$(e|0,g|0)|0;g=c[5312726]|0;h=g&255;if((g-(c[5311188]|0)|0)>255){Sr(45600,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;j=21244780+(h*24|0)|0;k=c[j>>2]|0;if((k|0)!=0){es(k)}c[5311188]=(c[5311188]|0)+1;l=c[5312726]|0;m=j}else{l=g;m=21244780+(h*24|0)|0}c[5312726]=l+1;c[21244760+(h*24|0)>>2]=wf()|0;c[21244764+(h*24|0)>>2]=5;c[21244768+(h*24|0)>>2]=0;c[21244772+(h*24|0)>>2]=0;c[21244776+(h*24|0)>>2]=f;c[m>>2]=e}e=c[5311188]|0;if((c[5312726]|0)>(e|0)){c[5311188]=e+1;m=a;f=21244760+((e&255)*24|0)|0;c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[m+16>>2]=c[f+16>>2];c[m+20>>2]=c[f+20>>2];i=b;return}else{f=d;n$(f|0,0,20)|0;c[a>>2]=wf()|0;d=a+4|0;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];i=b;return}}function ys(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+48|0;d=b|0;e=b+24|0;do{if((c[(c[5457502]|0)+32>>2]|0)==2){if((fu(d,24,c[5457498]|0)|0)!=24){Ur(0,45056,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}g=d+16|0;h=c[g>>2]|0;if((h|0)==0){break}j=fs(h,1)|0;n$(j|0,0,h|0)|0;c[d+20>>2]=j;h=fu(j,c[g>>2]|0,c[5457498]|0)|0;if((h|0)==(c[g>>2]|0)){break}Ur(0,45056,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{xs(e);g=d;h=e;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];if((c[(c[5457502]|0)+32>>2]|0)!=1){break}if((gu(g,24,c[5457498]|0)|0)!=24){Ur(0,44664,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}g=d+16|0;h=c[g>>2]|0;if((h|0)==0){break}j=gu(c[d+20>>2]|0,h,c[5457498]|0)|0;if((j|0)==(c[g>>2]|0)){break}Ur(0,44664,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}}while(0);f=a;a=d;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];i=b;return}function zs(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if((c[(c[5451072]|0)+32>>2]|0)==0){e=0}else{e=wf()|0}UA(a,b);if((c[(c[5451072]|0)+32>>2]|0)==0){i=d;return}b=wf()|0;if((c[(c[5451072]|0)+32>>2]|0)!=3){i=d;return}Sr(43856,(a=i,i=i+8|0,c[a>>2]=b-e,a)|0);i=a;i=d;return}function As(){var a=0,b=0,d=0,e=0,f=0,g=0,h=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=i;i=i+16472|0;b=a|0;d=a+16416|0;e=a+16448|0;hv(d,a+32|0,16384);f=e;g=e|0;h=e+4|0;j=e+8|0;k=e+12|0;l=e+20|0;a:while(1){m=c[5451076]|0;if((c[5451078]|0)>(m|0)){c[5451076]=m+1;n=21804320+((m&1023)*24|0)|0;c[f>>2]=c[n>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+12>>2];c[f+16>>2]=c[n+16>>2];c[f+20>>2]=c[n+20>>2]}else{ys(e)}o=c[g>>2]|0;p=c[h>>2]|0;n=c[j>>2]|0;m=c[k>>2]|0;q=c[l>>2]|0;switch(p|0){case 0:{break a;break};case 5:{qr(q);qr(147448);break};case 2:{fo(n);break};case 3:{qn(n,m,o);break};case 4:{rn(n,m,o);break};case 1:{eo(n,m,o);break};default:{r=22;break a}}if((q|0)==0){continue}es(q)}if((r|0)==22){Ur(0,43520,(s=i,i=i+8|0,c[s>>2]=p,s)|0);i=s;return 0}p=(Qv(0,b,d)|0)!=0;if(p&(c[6924866]|0)==0){do{Wo(b,d);p=(Qv(0,b,d)|0)!=0;}while(p&(c[6924866]|0)==0)}p=(Qv(1,b,d)|0)!=0;if(!(p&(c[6924866]|0)==0)){t=16384;u=0;i=a;return o|0}do{do{if((c[(c[5451068]|0)+32>>2]|0)!=0){if((c[(c[5451072]|0)+32>>2]|0)==0){v=0}else{v=wf()|0}UA(b,d);if((c[(c[5451072]|0)+32>>2]|0)==0){break}p=wf()|0;if((c[(c[5451072]|0)+32>>2]|0)!=3){break}Sr(43856,(s=i,i=i+8|0,c[s>>2]=p-v,s)|0);i=s}}while(0);p=(Qv(1,b,d)|0)!=0;}while(p&(c[6924866]|0)==0);t=16384;u=0;i=a;return o|0}function Bs(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;i=i+40|0;d=b+16|0;e=d|0;f=d+4|0;g=d+8|0;h=b|0;while(1){ys(d);j=c[e>>2]|0;k=c[f>>2]|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];if((k|0)==0){break}l=c[5451078]|0;m=l&1023;if((l-(c[5451076]|0)|0)>1023){if(!(a[186904]|0)){a[186904]=1;Sr(44320,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}n=c[21804340+(m*24|0)>>2]|0;if((n|0)!=0){es(n)}c[5451076]=(c[5451076]|0)+1;o=c[5451078]|0}else{a[186904]=0;o=l}c[21804320+(m*24|0)>>2]=j;c[21804324+(m*24|0)>>2]=k;k=21804328+(m*24|0)|0;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];c[k+12>>2]=c[h+12>>2];c[5451078]=o+1}i=b;return j|0}function Cs(){var a=0,b=0,d=0,e=0;a=i;b=nr()|0;d=or(1)|0;if((b|0)>2){ic(d|0,zr(2)|0);i=a;return}if((b|0)!=2){i=a;return}b=mj(d|0)|0;if((b|0)==0){Sr(186112,(e=i,i=i+8|0,c[e>>2]=d,e)|0);i=e;i=a;return}else{Sr(43256,(e=i,i=i+16|0,c[e>>2]=d,c[e+8>>2]=b,e)|0);i=e;i=a;return}}function Ds(){var b=0,d=0;rr(0,185824);tr();a:do{if((c[5457484]|0)>0){b=0;while(1){d=21834200+(b<<2)|0;Dr(c[d>>2]|0);if((VB(or(0)|0,154008)|0)==0){break}b=b+1|0;if((VB(or(0)|0,152152)|0)==0){break}if((b|0)>=(c[5457484]|0)){break a}}a[c[d>>2]|0]=0;return}}while(0);rr(0,185368);tr();rr(0,184712);tr();return}function Es(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!((c[5457510]|0)==0&(c[5457512]|0)!=0)){return}e=X_(1,8)|0;f=e;c[e+4>>2]=190;g=X_(4,1)|0;c[e>>2]=g;c[6924866]=(c[6924866]|0)+1;c[g>>2]=b;e=c[(c[5458838]|0)+32>>2]|0;h=g+4|0;c[h>>2]=e;c[g+8>>2]=d;c[5457510]=1;if((c[(c[5451068]|0)+32>>2]|0)==0){i=e}else{MA(184128);i=c[h>>2]|0}if((i|0)!=0){if((b|0)!=0){mo(0)}mp(184128,b,0)}Uu(a,f);return}function Fs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;b=c[a>>2]|0;d=c[b+8>>2]|0;e=c[b>>2]|0;f=c[b+4>>2]|0;if((b|0)!=0){W_(b)}W_(a);c[6924866]=(c[6924866]|0)-1;Bt(1);Ds();if((e|0)!=0){ow()}if((f|0)!=0){ep();uo(0)}c[5457510]=0;if((d|0)==0){return}hk[c[d+4>>2]&255](d,0);return}function Gs(){var a=0;a=or(1)|0;if((au(a,c[(c[5458848]|0)+4>>2]|0)|0)==0){kt(183720,28378728);Es(0,1,0);return}else{kt(183720,or(1)|0);Es(0,1,0);return}}function Hs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;e=i;i=i+8|0;f=1;g=0;j=i;i=i+168|0;c[j>>2]=0;while(1)switch(f|0){case 1:k=e|0;ra(192,183400,(l=i,i=i+24|0,c[l>>2]=182960,c[l+8>>2]=182632,c[l+16>>2]=182376,l)|0);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;i=l;m=w$(28377752,f,j)|0;f=24;break;case 24:if((m|0)==(-2|0)){f=23;break}else if((m|0)==0){f=3;break}else{f=2;break};case 2:ra(72,182144,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;i=l;case 3:n$(21244760,0,6144)|0;n=Ua(40,k|0,4)|0;if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;if((n|0)==0){f=5;break}else{f=4;break};case 4:Fa(186,c[k>>2]|0);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;f=6;break;case 5:n=ta(126,0)|0;if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;Fa(186,n|0);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;f=6;break;case 6:n$(21804320,0,24576)|0;c[5451078]=0;c[5451076]=0;a[9192]=1;o=Ua(142,524288,1)|0;if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;c[540158]=o;if((o|0)==0){f=7;break}else{f=8;break};case 7:bb(84,0,63272,(l=i,i=i+8|0,h[l>>3]=.5,l)|0);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;i=l;case 8:n=o+32|0;p=n;q=o+8|0;c[o+20>>2]=p;c[o+16>>2]=p;c[o+12>>2]=1;c[o+24>>2]=0;c[q>>2]=0;c[o+28>>2]=p;c[o>>2]=524288;c[o+4>>2]=0;p=q;c[o+40>>2]=p;c[o+44>>2]=p;c[o+36>>2]=0;c[o+48>>2]=1919505;c[n>>2]=524256;cb(4);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;bb(6,21834328,b|0,1024);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;c[5458550]=21834328;c[5457484]=1;r=0;s=21834328;f=9;break;case 9:t=(r|0)==0;if(t){w=s;f=10;break}else{x=s;f=13;break};case 10:switch(a[w]|0){case 43:case 10:case 13:{f=11;break};case 34:{y=w;f=14;break};case 0:{f=18;break};default:{z=r;A=w;f=15;break}}break;case 11:B=c[5457484]|0;if((B|0)==32){f=18;break}else{f=12;break};case 12:n=w+1|0;c[21834200+(B<<2)>>2]=n;c[5457484]=B+1;a[w]=0;w=n;f=10;break;case 13:n=a[x]|0;if((n<<24>>24|0)==34){y=x;f=14;break}else if((n<<24>>24|0)==10|(n<<24>>24|0)==13){f=16;break}else if((n<<24>>24|0)==0){f=18;break}else{z=r;A=x;f=15;break};case 14:z=t&1;A=y;f=15;break;case 15:r=z;s=A+1|0;f=9;break;case 16:C=c[5457484]|0;if((C|0)==32){f=18;break}else{f=17;break};case 17:n=x+1|0;c[21834200+(C<<2)>>2]=n;c[5457484]=C+1;a[x]=0;x=n;f=13;break;case 18:cb(160);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;Fa(22,0);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;n=Ba(28,62320,61520,33)|0;if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;p=c[n+32>>2]|0;D=(p|0)<24?25165824:p<<20;c[553002]=D;E=Ua(142,D|0,1)|0;if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;c[4954636]=E;if((E|0)==0){f=19;break}else{f=20;break};case 19:bb(84,0,60808,(l=i,i=i+8|0,c[l>>2]=(D|0)/1048576|0,l)|0);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;i=l;case 20:p=E+32|0;n=p;q=E+8|0;c[E+20>>2]=n;c[E+16>>2]=n;c[E+12>>2]=1;c[E+24>>2]=0;c[q>>2]=0;c[E+28>>2]=n;c[E>>2]=D;c[E+4>>2]=0;n=q;c[E+40>>2]=n;c[E+44>>2]=n;c[E+36>>2]=0;c[E+48>>2]=1919505;c[p>>2]=D-32;cb(402);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;p=Ba(28,181864,48560,256)|0;if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;c[5458546]=p;cb(26);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;p=Ba(28,181424,48560,64)|0;if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;c[5451070]=p;p=Ba(28,180912,180368,16)|0;if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;c[5458848]=p;p=Ba(28,179976,28378728,16)|0;if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;c[5457506]=p;if((a[c[(c[5458848]|0)+4>>2]|0]|0)==0){f=21;break}else{f=22;break};case 21:Fa(108,180912);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;f=22;break;case 22:p=Ua(142,1,8)|0;if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;n=p;c[p+4>>2]=90;q=Ua(142,4,1)|0;if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;c[p>>2]=q;c[6924866]=(c[6924866]|0)+1;c[q>>2]=d;Fa(80,n|0);if((u|0)!=0&(v|0)!=0){g=x$(c[u>>2]|0,j)|0;if((g|0)>0){f=-1;break}else return}u=v=0;f=23;break;case 23:i=e;return;case-1:if((g|0)==1){m=v;f=24}u=v=0;break}}function Is(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;i=i+8|0;e=d|0;f=c[b>>2]|0;g=c[f>>2]|0;if((f|0)!=0){W_(f)}W_(b);c[6924866]=(c[6924866]|0)-1;vs();Gr(171512,344);b=c[5458546]|0;do{if((b|0)!=0){if((c[b+32>>2]|0)==0){break}Gr(171192,220);Gr(171016,264);Gr(170832,110)}}while(0);Gr(170584,372);Gr(170440,18);Gr(170104,270);Hr(170104,136);Gr(169592,20);Ds();Zr(0);b=gt(176184,48560,32)|0;c[5458548]=b;Gt(b,0.0,2.0,1);ls();c[5389062]=c[5389062]&-2;c[5458852]=gt(171816,169240,1)|0;c[5457492]=gt(168984,168664,1)|0;c[5458846]=gt(168264,169240,1)|0;c[5457494]=gt(123e3,48560,256)|0;c[5451064]=gt(168016,169240,520)|0;c[5457518]=gt(167696,48560,512)|0;c[5451074]=gt(167528,48560,512)|0;c[5451072]=gt(167400,48560,0)|0;c[5451066]=gt(166832,48560,512)|0;c[5458840]=gt(166216,48560,512)|0;c[5811720]=gt(165752,48560,64)|0;c[453916]=gt(165472,48560,64)|0;c[5811724]=gt(165248,48560,512)|0;c[453920]=gt(164904,48560,512)|0;c[5451068]=gt(164504,48560,64)|0;c[5458838]=gt(164232,48560,64)|0;c[5458844]=gt(164080,48560,0)|0;c[5458850]=gt(163912,48560,1)|0;c[5450804]=gt(163400,48560,64)|0;c[5457488]=gt(163032,48560,1)|0;c[5457486]=gt(162592,48560,64)|0;c[5457490]=gt(162352,48560,1)|0;c[5458854]=gt(162120,48560,64)|0;c[5458842]=gt(161848,48560,1)|0;gt(47184,28378728,1088)|0;c[5457504]=gt(161608,48560,1)|0;b=pC(161432,(f=i,i=i+24|0,c[f>>2]=182960,c[f+8>>2]=182632,c[f+16>>2]=182376,f)|0)|0;i=f;c[5450802]=gt(161208,b,68)|0;c[5457508]=gt(161056,160656,20)|0;b=pC(52976,(f=i,i=i+8|0,c[f>>2]=71,f)|0)|0;i=f;h=gt(160296,b,20)|0;c[5457224]=h;gt(159824,c[h+4>>2]|0,64)|0;ML();do{if((IL()|0)!=0){if((vi(3,159360,159128)|0)!=0){break}kt(162120,169240)}}while(0);h=e;if((Jc(h|0,4)|0)==0){Sr(174280,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;a[h]=(v$()|0)%255|0;a[h+1|0]=(v$()|0)%255|0;a[h+2|0]=(v$()|0)%255|0;a[h+3|0]=(v$()|0)%255|0}Kv(c[e>>2]&65535);aD();KA();c[(c[5458548]|0)+20>>2]=0;ep();c[5457514]=Bs()|0;if((c[5457484]|0)>0){e=0;h=0;while(1){b=21834200+(e<<2)|0;j=c[b>>2]|0;do{if((j|0)==0){k=h}else{if((a[j]|0)==0){k=h;break}if((jC(j,149792,3)|0)==0){k=h;break}qr(c[b>>2]|0);qr(147448);k=1}}while(0);b=e+1|0;if((b|0)<(c[5457484]|0)){e=b;h=k}else{break}}if((k|0)==0){l=18}}else{l=18}do{if((l|0)==18){if((c[(c[5458548]|0)+32>>2]|0)!=0){break}qr(158824);k=c[5457504]|0;if((c[k+32>>2]|0)!=0){break}kt(c[k>>2]|0,169240);kt(158712,158544)}}while(0);kt(158416,169240);uo(0);kt(158320,48560);c[5457512]=1;do{if((c[(c[5458852]|0)+32>>2]|0)!=0){if(a[186920]|0){m=c[7570798]|0}else{l=(LL()|0)&128;c[7570798]=l;a[186920]=1;m=l}if((m|0)!=0){break}kt(171816,48560)}}while(0);m=gt(158032,28378728,33)|0;c[5457226]=m;l=c[m+4>>2]|0;if((a[l]|0)==0){Sr(157592,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;n=g+4|0;o=c[n>>2]|0;hk[o&255](g,0);i=d;return}c[4930342]=$t(l)|0;Sr(157592,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;n=g+4|0;o=c[n>>2]|0;hk[o&255](g,0);i=d;return}function Js(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;b=c[4930342]|0;if((b|0)==0){return}d=c[7570778]|0;e=fu(30282088+d|0,1023-d|0,b)|0;if((e|0)>0){f=e}else{return}do{e=c[7570778]|0;b=e+f|0;do{if((f|0)>0){d=e;g=0;while(1){h=30282088+d|0;i=a[h]|0;if((i<<24>>24|0)==10|(i<<24>>24|0)==13){j=8}else if((i<<24>>24|0)==0){a[h]=10;j=8}else{k=g;l=d+1|0}if((j|0)==8){j=0;h=d+1|0;k=30282088+h|0;l=h}if((l|0)<(b|0)){d=l;g=k}else{break}}a[30282088+b|0]=0;c[7570778]=b;if((k|0)==0){j=12;break}g=a[k]|0;a[k]=0;rr(2,30282088);a[k]=g;g=(c[7570778]|0)+(30282088-k)|0;c[7570778]=g;s$(30282088,k|0,g+1|0)|0;m=g}else{a[30282088+b|0]=0;c[7570778]=b;j=12}}while(0);do{if((j|0)==12){j=0;if(!(b>>>0>1022>>>0)){m=b;break}rr(2,30282088);c[7570778]=0;m=0}}while(0);f=fu(30282088+m|0,1023-m|0,c[4930342]|0)|0;}while((f|0)>0);return}function Ks(){var a=0,b=0,d=0;a=i;if((c[5457512]|0)==0){i=a;return}b=c[5389062]|0;if((b&1|0)==0){i=a;return}c[5389062]=b&-2;b=Zt(178512)|0;if((b|0)==0){Sr(179440,(d=i,i=i+8|0,c[d>>2]=178512,d)|0);i=d;i=a;return}else{hu(b,178928,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;Vn(b);xt(b);Yt(b);i=a;return}}function Ls(){var a=0,b=0,d=0,e=0,f=0,g=0;a=i;i=i+64|0;b=a|0;if((nr()|0)!=2){Sr(178072,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;e=64;f=0;i=a;return}TB(b,or(1)|0,64);WB(b,64,177584);Sr(177200,(d=i,i=i+8|0,c[d>>2]=b,d)|0);i=d;g=Zt(b)|0;if((g|0)==0){Sr(179440,(d=i,i=i+8|0,c[d>>2]=b,d)|0);i=d;e=64;f=0;i=a;return}else{hu(g,178928,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;Vn(g);xt(g);Yt(g);e=64;f=0;i=a;return}}function Ms(){var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;b=i;d=1;e=0;f=i;i=i+168|0;c[f>>2]=0;while(1)switch(d|0){case 1:h=c[6924866]|0;j=w$(28377752,d,f)|0;d=63;break;case 63:if((j|0)==0){d=2;break}else{d=62;break};case 2:cb(54);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;if((c[(c[5451072]|0)+32>>2]|0)==0){k=0;d=4;break}else{d=3;break};case 3:l=Ya(4)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;k=l;d=4;break;case 4:if((c[(c[5451066]|0)+32>>2]|0)==0){d=5;break}else{m=1;d=16;break};case 5:if((c[(c[5458548]|0)+32>>2]|0)==0){d=7;break}else{d=6;break};case 6:l=Ya(14)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;m=l;d=16;break;case 7:if((c[(c[5457486]|0)+32>>2]|0)==0){d=10;break}else{d=8;break};case 8:n=c[(c[5457490]|0)+32>>2]|0;if((n|0)>0){d=9;break}else{d=10;break};case 9:o=1e3/(n|0)|0;d=15;break;case 10:if((c[(c[5450804]|0)+32>>2]|0)==0){d=13;break}else{d=11;break};case 11:p=c[(c[5457488]|0)+32>>2]|0;if((p|0)>0){d=12;break}else{d=13;break};case 12:o=1e3/(p|0)|0;d=15;break;case 13:q=c[(c[5457492]|0)+32>>2]|0;if((q|0)>0){d=14;break}else{o=1;d=15;break};case 14:o=1e3/(q|0)|0;d=15;break;case 15:l=(c[5457514]|0)-o-(c[7570790]|0)+(c[7570792]|0)|0;r=(l|0)>(o|0)?o:l;c[7570792]=r;m=o-r|0;d=16;break;case 16:d=17;break;case 17:if((c[(c[5451068]|0)+32>>2]|0)==0){d=19;break}else{d=18;break};case 18:r=Ya(32)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;l=Ya(4)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;s=l-(c[5457514]|0)|0;l=(s|0)<(m|0)?m-s|0:0;t=(r|0)<(l|0)?r:l;d=20;break;case 19:l=Ya(4)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;r=l-(c[5457514]|0)|0;t=(r|0)<(m|0)?m-r|0:0;d=20;break;case 20:if((c[(c[5458842]|0)+32>>2]|0)!=0|(t|0)<1){d=21;break}else{d=22;break};case 21:Fa(154,0);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;d=23;break;case 22:Fa(154,t-1|0);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;d=23;break;case 23:r=Ya(4)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;w=c[5457514]|0;if((r-w|0)<(m|0)){d=17;break}else{d=24;break};case 24:c[7570790]=w;r=Ya(28)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;c[5457514]=r;x=r-(c[7570790]|0)|0;cb(304);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;if((c[6924866]|0)==(h|0)){d=25;break}else{d=62;break};case 25:y=c[5458852]|0;if((c[y+20>>2]|0)==0){d=33;break}else{d=26;break};case 26:if((c[y+32>>2]|0)==0){d=32;break}else{d=27;break};case 27:if(a[186920]|0){d=29;break}else{d=28;break};case 28:r=Ya(20)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;l=r&128;c[7570798]=l;a[186920]=1;z=l;d=30;break;case 29:z=c[7570798]|0;d=30;break;case 30:if((z|0)==0){d=31;break}else{d=32;break};case 31:ra(166,171816,48560);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;d=32;break;case 32:c[(c[5458852]|0)+20>>2]=0;d=33;break;case 33:l=c[(c[5457518]|0)+32>>2]|0;if((l|0)==0){d=34;break}else{A=l;d=38;break};case 34:B=+g[(c[5451064]|0)+28>>2];if(B!=0.0){d=35;break}else{d=36;break};case 35:A=~~(+(x|0)*B);d=38;break;case 36:if((c[(c[5458840]|0)+32>>2]|0)==0){A=x;d=38;break}else{d=37;break};case 37:A=~~(+(x|0)*B);d=38;break;case 38:if((A|0)<1){d=39;break}else{C=A;d=41;break};case 39:if(+g[(c[5451064]|0)+28>>2]!=0.0){d=40;break}else{C=A;d=41;break};case 40:C=1;d=41;break;case 41:D=(c[(c[5451068]|0)+32>>2]|0)!=0;if((c[(c[5458548]|0)+32>>2]|0)==0){d=44;break}else{d=42;break};case 42:if(D&(C|0)>500){d=43;break}else{E=5e3;d=45;break};case 43:ra(192,176736,(F=i,i=i+8|0,c[F>>2]=C,F)|0);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;i=F;E=5e3;d=45;break;case 44:E=D?200:5e3;d=45;break;case 45:G=(C|0)>(E|0)?E:C;if((c[(c[5451072]|0)+32>>2]|0)==0){H=0;d=47;break}else{d=46;break};case 46:l=Ya(4)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;H=l;d=47;break;case 47:Fa(126,G|0);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;if((c[(c[5458548]|0)+20>>2]|0)==0){d=50;break}else{d=48;break};case 48:Ba(28,176184,48560,0)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;c[(c[5458548]|0)+20>>2]=0;if((c[(c[5458548]|0)+32>>2]|0)==0){d=49;break}else{d=50;break};case 49:Fa(288,175744);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;cb(184);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;d=50;break;case 50:if((c[(c[5451072]|0)+32>>2]|0)==0){I=0;d=52;break}else{d=51;break};case 51:l=Ya(4)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;I=l;d=52;break;case 52:Ya(28)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;cb(304);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;if((c[6924866]|0)==(h|0)){d=53;break}else{d=62;break};case 53:if((c[(c[5451072]|0)+32>>2]|0)==0){J=0;d=55;break}else{d=54;break};case 54:l=Ya(4)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;J=l;d=55;break;case 55:Fa(238,G|0);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;if((c[(c[5451072]|0)+32>>2]|0)==0){K=0;d=57;break}else{d=56;break};case 56:l=Ya(4)|0;if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;K=l;d=57;break;case 57:cb(34);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;if((c[(c[5451072]|0)+32>>2]|0)==0){d=59;break}else{d=58;break};case 58:l=c[304338]|0;r=c[304340]|0;s=c[304342]|0;ra(192,175344,(F=i,i=i+64|0,c[F>>2]=c[5457516],c[F+8>>2]=K-H,c[F+16>>2]=I-H-l,c[F+24>>2]=H-k-I+J,c[F+32>>2]=K-J-r-s,c[F+40>>2]=l,c[F+48>>2]=r,c[F+56>>2]=s,F)|0);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;i=F;d=59;break;case 59:if((c[(c[5451074]|0)+32>>2]|0)==0){d=61;break}else{d=60;break};case 60:s=c[6924888]|0;r=c[6924884]|0;l=c[6924880]|0;ra(192,174992,(F=i,i=i+32|0,c[F>>2]=c[6924876],c[F+8>>2]=s,c[F+16>>2]=r,c[F+24>>2]=l,F)|0);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;i=F;c[6924876]=0;c[6924888]=0;c[6924884]=0;c[6924880]=0;d=61;break;case 61:cb(366);if((u|0)!=0&(v|0)!=0){e=x$(c[u>>2]|0,f)|0;if((e|0)>0){d=-1;break}else return}u=v=0;c[5457516]=(c[5457516]|0)+1;d=62;break;case 62:i=b;return;case-1:if((e|0)==1){j=v;d=63}u=v=0;break}}function Ns(a){a=a|0;n$(a+12|0,0,256)|0;c[a>>2]=0;c[a+4>>2]=0;return}function Os(){c[4954632]=0;a[2160832]=0;Xn(172);if((Qs()|0)!=0){return}Xn(38);return}function Ps(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[5450798]|0;if((jC(b,d,o$(d|0)|0)|0)!=0){return}d=c[4954632]|0;c[4954632]=d+1;if((d|0)==0){TB(2160832,b,1024);return}d=a[2160832]|0;if(d<<24>>24==0){return}else{e=0;f=2160832;g=d}while(1){if(!(e>>>0<(o$(b|0)|0)>>>0)){break}d=t$(g<<24>>24|0)|0;if((d|0)!=(t$(a[b+e|0]|0)|0)){a[f]=0}d=e+1|0;h=2160832+d|0;i=a[h]|0;if(i<<24>>24==0){j=10;break}else{e=d;f=h;g=i}}if((j|0)==10){return}a[f]=0;return}function Qs(){var a=0,b=0,d=0,e=0,f=0;a=i;if((c[4954632]|0)==0){b=1;i=a;return b|0}d=c[5450800]|0;e=o$(d+12|0)|0;f=e-(o$(c[5450798]|0)|0)|0;TB(d+12+f|0,2160832,256-f|0);f=c[5450800]|0;d=f+12|0;c[f>>2]=o$(d|0)|0;if((c[4954632]|0)==1){XB(d,256,172728);f=c[5450800]|0;c[f>>2]=(c[f>>2]|0)+1;b=1;i=a;return b|0}else{Sr(172224,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f;b=0;i=a;return b|0}return 0}function Rs(a){a=a|0;var b=0,d=0;b=i;if((jC(a,2160832,o$(2160832)|0)|0)!=0){i=b;return}Sr(173224,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}function Ss(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;c[4954632]=0;a[2160832]=0;Zu(b,d,e,172,f);if((Qs()|0)!=0){return}Zu(b,d,e,38,f);return}function Ts(b,d,e){b=b|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;f=e;e=d;d=b;a:while(1){g=xC(d,174520)|0;Fr(g);b=nr()|0;if((a[g+((o$(g|0)|0)-1)|0]|0)==32){c[5450798]=28378728;h=b+1|0}else{c[5450798]=or(b-1|0)|0;h=b}b=c[5450800]|0;i=b+12|0;j=a[i]|0;if((j<<24>>24|0)==47){k=b;l=8}else if(!((j<<24>>24|0)==0|(j<<24>>24|0)==92)){j=(o$(i|0)|0)+1|0;if(j>>>0>255>>>0){l=31;break}s$(b+13|0,i|0,j|0)|0;j=c[5450800]|0;i=j|0;c[i>>2]=(c[i>>2]|0)+1;k=j;l=8}if((l|0)==8){l=0;a[k+12|0]=92}if((h|0)<=1){l=19;break}j=or(0)|0;i=a[j]|0;if((i<<24>>24|0)==92|(i<<24>>24|0)==47){m=j+1|0}else{m=j}j=a[g]|0;if((j<<24>>24|0)==0){l=18;break}else if((j<<24>>24|0)==59){n=0}else{j=o$(g|0)|0;i=1;while(1){if(!(i>>>0>>0)){l=18;break a}if((a[g+i|0]|0)==59){n=i;break}else{i=i+1|0}}}if((g+n|0)==0){l=18;break}f=1;e=1;d=g+(n+1)|0}if((l|0)==18){Lr(m,g,h);return}else if((l|0)==19){h=c[5450798]|0;g=a[h]|0;if((g<<24>>24|0)==92|(g<<24>>24|0)==47){g=h+1|0;c[5450798]=g;o=g}else{o=h}c[4954632]=0;a[2160832]=0;if((a[o]|0)==0){return}o=(e|0)!=0;if(o){Kr(172)}e=(f|0)!=0;if(e){ft(172)}if((Qs()|0)!=0){return}if(o){Kr(38)}if(!e){return}ft(134);return}else if((l|0)==31){return}}function Us(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+64|0;d=b|0;if((jC(a,2160832,o$(2160832)|0)|0)!=0){e=64;f=0;i=b;return}qC(d,ct(a)|0);Sr(173648,(g=i,i=i+16|0,c[g>>2]=a,c[g+8>>2]=d,g)|0);i=g;e=64;f=0;i=b;return}function Vs(a){a=a|0;c[5450800]=a;Ts(a+12|0,1,1);return}function Ws(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;if((Jc(b|0,d|0)|0)!=0){i=e;return}Sr(174280,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;if((d|0)>0){g=0}else{i=e;return}do{a[b+g|0]=(v$()|0)%255|0;g=g+1|0;}while((g|0)<(d|0));i=e;return}function Xs(){var b=0,c=0;b=Fp()|0;if((a[b]|0)!=0){c=b;return c|0}c=ct(174144)|0;return c|0}function Ys(){var b=0,c=0;b=Gp()|0;if((a[b]|0)!=0){c=b;return c|0}c=ct(173840)|0;return c|0}function Zs(){var a=0;if((nr()|0)>1){Ur(1,156984,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a}else{Ur(0,156736,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a}}function _s(){ea(0);return}function $s(){var a=0,b=0,d=0.0,e=0.0;a=i;if((nr()|0)!=2){Sr(157200,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}d=+h$(or(1)|0);b=Bs()|0;e=d;do{}while(!(+((Bs()|0)-b|0)*.001>e));i=a;return}function at(b){b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0.0,k=0,l=0;d=a[b]|0;if(d<<24>>24==0){e=0}else{f=0;h=0;i=d;do{f=(da((t$(i<<24>>24|0)|0)<<24>>24,h+119|0)|0)+f|0;h=h+1|0;i=a[b+h|0]|0;}while(!(i<<24>>24==0));e=f&255}f=c[20479376+(e<<2)>>2]|0;if((f|0)==0){j=0.0;return+j}else{k=f}while(1){if((VB(b,c[k>>2]|0)|0)==0){break}f=c[k+60>>2]|0;if((f|0)==0){j=0.0;l=8;break}else{k=f}}if((l|0)==8){return+j}j=+g[k+28>>2];return+j}function bt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=a[b]|0;if(d<<24>>24==0){e=0}else{f=0;g=0;h=d;do{f=(da((t$(h<<24>>24|0)|0)<<24>>24,g+119|0)|0)+f|0;g=g+1|0;h=a[b+g|0]|0;}while(!(h<<24>>24==0));e=f&255}f=c[20479376+(e<<2)>>2]|0;if((f|0)==0){i=0;return i|0}else{j=f}while(1){if((VB(b,c[j>>2]|0)|0)==0){break}f=c[j+60>>2]|0;if((f|0)==0){i=0;k=8;break}else{j=f}}if((k|0)==8){return i|0}i=c[j+32>>2]|0;return i|0}function ct(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=a[b]|0;if(d<<24>>24==0){e=0}else{f=0;g=0;h=d;do{f=(da((t$(h<<24>>24|0)|0)<<24>>24,g+119|0)|0)+f|0;g=g+1|0;h=a[b+g|0]|0;}while(!(h<<24>>24==0));e=f&255}f=c[20479376+(e<<2)>>2]|0;if((f|0)==0){i=28378720;return i|0}else{j=f}while(1){if((VB(b,c[j>>2]|0)|0)==0){break}f=c[j+60>>2]|0;if((f|0)==0){i=28378720;k=8;break}else{j=f}}if((k|0)==8){return i|0}i=c[j+4>>2]|0;return i|0}function dt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=a[b]|0;if(f<<24>>24==0){g=0}else{h=0;i=0;j=f;do{h=(da((t$(j<<24>>24|0)|0)<<24>>24,i+119|0)|0)+h|0;i=i+1|0;j=a[b+i|0]|0;}while(!(j<<24>>24==0));g=h&255}h=c[20479376+(g<<2)>>2]|0;a:do{if((h|0)!=0){g=h;while(1){if((VB(b,c[g>>2]|0)|0)==0){break}j=c[g+60>>2]|0;if((j|0)==0){break a}else{g=j}}TB(d,c[g+4>>2]|0,e);return}}while(0);a[d]=0;return}function et(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=a[b]|0;if(d<<24>>24==0){e=0}else{f=0;g=0;h=d;do{f=(da((t$(h<<24>>24|0)|0)<<24>>24,g+119|0)|0)+f|0;g=g+1|0;h=a[b+g|0]|0;}while(!(h<<24>>24==0));e=f&255}f=c[20479376+(e<<2)>>2]|0;if((f|0)==0){return-2147483648|0}else{i=f}while(1){if((VB(b,c[i>>2]|0)|0)==0){j=7;break}f=c[i+60>>2]|0;if((f|0)==0){j=8;break}else{i=f}}if((j|0)==7){b=c[i+16>>2]|0;return((c[i+20>>2]|0)==0?b:b|1073741824)|0}else if((j|0)==8){return-2147483648|0}return 0}function ft(a){a=a|0;var b=0,d=0;b=c[5389058]|0;if((b|0)==0){return}else{d=b}do{b=c[d>>2]|0;if((b|0)!=0){vk[a&511](b)}d=c[d+52>>2]|0;}while((d|0)!=0);return}function gt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=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;f=i;if((b|0)==0|(d|0)==0){Ur(0,181480,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;return 0}do{if((sg(b|0,92)|0)==0){if((sg(b|0,34)|0)!=0){j=6;break}if((sg(b|0,59)|0)==0){k=b}else{j=6}}else{j=6}}while(0);if((j|0)==6){Sr(151672,(h=i,i=i+8|0,c[h>>2]=b,h)|0);i=h;k=132016}b=a[k]|0;if(b<<24>>24==0){l=0}else{m=0;n=0;o=b;do{m=(da((t$(o<<24>>24|0)|0)<<24>>24,n+119|0)|0)+m|0;n=n+1|0;o=a[k+n|0]|0;}while(!(o<<24>>24==0));l=m&255}m=c[20479376+(l<<2)>>2]|0;a:do{if((m|0)==0){p=0}else{l=m;while(1){if((VB(k,c[l>>2]|0)|0)==0){break}o=c[l+60>>2]|0;if((o|0)==0){p=0;break a}else{l=o}}o=ht(l,d,0)|0;n=l+16|0;b=c[n>>2]|0;do{if((b&4096|0)==0){if((b&128|0)!=0){q=e;r=b;break}q=(e&4096|0)==0?e:e&-4097;r=b}else{if((e&4096|0)!=0){q=e;r=b;break}s=b&-4097;c[n>>2]=s;q=e;r=s}}while(0);do{if((r&128|0)!=0){c[n>>2]=r&-129;b=l+8|0;es(c[b>>2]|0);c[b>>2]=is(o)|0;if((q&64|0)==0){break}b=l+12|0;s=c[b>>2]|0;if((s|0)!=0){es(s)}c[b>>2]=is(o)|0}}while(0);b=c[n>>2]|0;s=(q&2048|0)!=0;do{if((b&2048|0)==0){t=s?q&-2049:q;u=b}else{if(s){t=q;u=b;break}v=b&-2049;c[n>>2]=v;t=q;u=v}}while(0);c[n>>2]=u|t;b=l+8|0;s=c[b>>2]|0;do{if((a[s]|0)==0){es(s);c[b>>2]=is(o)|0}else{if((a[o]|0)==0){break}if((k$(s,o)|0)==0){break}Tr(121424,(h=i,i=i+24|0,c[h>>2]=k,c[h+8>>2]=s,c[h+16>>2]=o,h)|0);i=h}}while(0);o=l+12|0;s=c[o>>2]|0;if((s|0)!=0){c[o>>2]=0;it(k,s,1)|0;es(s)}c[5389062]=c[5389062]|t;w=l;i=f;return w|0}}while(0);while(1){x=p+1|0;if((c[21556256+(p*72|0)>>2]|0)==0){j=37;break}if((x|0)<2048){p=x}else{break}}do{if((j|0)==37){if((p|0)>2047){break}t=21556256+(p*72|0)|0;if((p|0)>=(c[5389060]|0)){c[5389060]=x}c[t>>2]=is(k)|0;u=is(d)|0;c[21556260+(p*72|0)>>2]=u;c[21556276+(p*72|0)>>2]=1;c[21556280+(p*72|0)>>2]=1;g[21556284+(p*72|0)>>2]=+h$(u);c[21556288+(p*72|0)>>2]=oj(u|0)|0;c[21556264+(p*72|0)>>2]=is(d)|0;c[21556292+(p*72|0)>>2]=0;u=c[5389058]|0;c[21556308+(p*72|0)>>2]=u;if((u|0)!=0){c[u+56>>2]=t}c[21556312+(p*72|0)>>2]=0;c[5389058]=t;c[21556272+(p*72|0)>>2]=e;c[5389062]=c[5389062]|e;u=a[k]|0;if(u<<24>>24==0){y=0}else{q=0;r=0;m=u;do{q=(da((t$(m<<24>>24|0)|0)<<24>>24,r+119|0)|0)+q|0;r=r+1|0;m=a[k+r|0]|0;}while(!(m<<24>>24==0));y=q&255}c[21556324+(p*72|0)>>2]=y;m=20479376+(y<<2)|0;r=c[m>>2]|0;c[21556316+(p*72|0)>>2]=r;if((r|0)!=0){c[r+64>>2]=t}c[21556320+(p*72|0)>>2]=0;c[m>>2]=t;w=t;i=f;return w|0}}while(0);if((c[5458544]|0)==0){Ur(0,110592,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;return 0}else{w=0;i=f;return w|0}return 0}function ht(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,j=0,k=0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0;e=i;if((c[a+36>>2]|0)==0|(b|0)==0){f=b;i=e;return f|0}do{if((hC(b)|0)==0){if((d|0)!=0){Sr(102088,(j=i,i=i+8|0,c[j>>2]=c[a>>2],j)|0);i=j}k=1;l=+h$(c[a+8>>2]|0)}else{m=+h$(b);if((c[a+40>>2]|0)==0){k=0;l=m;break}if((iC(m)|0)!=0){k=0;l=m;break}if((d|0)!=0){Sr(102952,(j=i,i=i+8|0,c[j>>2]=c[a>>2],j)|0);i=j}k=1;l=+(~~m|0)}}while(0);n=a+44|0;do{if(l<+g[n>>2]){do{if((d|0)!=0){if((k|0)==0){Sr(100112,(j=i,i=i+8|0,c[j>>2]=c[a>>2],j)|0);i=j}else{Sr(101296,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}o=(iC(+g[n>>2])|0)==0;m=+g[n>>2];if(o){Sr(64064,(j=i,i=i+8|0,h[j>>3]=m,j)|0);i=j;break}else{Sr(98992,(j=i,i=i+8|0,c[j>>2]=~~m,j)|0);i=j;break}}}while(0);p=+g[n>>2]}else{o=a+48|0;if(!(l>+g[o>>2])){if((k|0)==0){f=b}else{p=l;break}i=e;return f|0}do{if((d|0)!=0){if((k|0)==0){Sr(100112,(j=i,i=i+8|0,c[j>>2]=c[a>>2],j)|0);i=j}else{Sr(101296,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}q=(iC(+g[o>>2])|0)==0;m=+g[o>>2];if(q){Sr(62264,(j=i,i=i+8|0,h[j>>3]=m,j)|0);i=j;break}else{Sr(63184,(j=i,i=i+8|0,c[j>>2]=~~m,j)|0);i=j;break}}}while(0);p=+g[o>>2]}}while(0);if((iC(p)|0)==0){l=p;$B(30271592,256,158312,(j=i,i=i+8|0,h[j>>3]=l,j)|0)|0;i=j;if((d|0)==0){f=30271592;i=e;return f|0}Sr(60712,(j=i,i=i+8|0,h[j>>3]=l,j)|0);i=j;f=30271592;i=e;return f|0}else{a=~~p;$B(30271592,256,149528,(j=i,i=i+8|0,c[j>>2]=a,j)|0)|0;i=j;if((d|0)==0){f=30271592;i=e;return f|0}Sr(61424,(j=i,i=i+8|0,c[j>>2]=a,j)|0);i=j;f=30271592;i=e;return f|0}return 0}function it(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=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;f=i;do{if((b|0)==0){h=5}else{if((sg(b|0,92)|0)!=0){h=5;break}if((sg(b|0,34)|0)!=0){h=5;break}if((sg(b|0,59)|0)==0){j=b}else{h=5}}}while(0);if((h|0)==5){Sr(151672,(k=i,i=i+8|0,c[k>>2]=b,k)|0);i=k;j=132016}b=a[j]|0;if(b<<24>>24==0){l=0}else{m=0;n=0;o=b;do{m=(da((t$(o<<24>>24|0)|0)<<24>>24,n+119|0)|0)+m|0;n=n+1|0;o=a[j+n|0]|0;}while(!(o<<24>>24==0));l=m&255}m=c[20479376+(l<<2)>>2]|0;a:do{if((m|0)!=0){l=m;while(1){if((VB(j,c[l>>2]|0)|0)==0){break}o=c[l+60>>2]|0;if((o|0)==0){break a}else{l=o}}if((d|0)==0){p=c[l+8>>2]|0}else{p=d}o=ht(l,p,1)|0;n=l+16|0;b=c[n>>2]|0;do{if((b&32|0)==0){h=23}else{q=l+12|0;r=c[q>>2]|0;if((r|0)==0){h=23;break}s=c[l+4>>2]|0;if((k$(o,s)|0)==0){es(r);c[q>>2]=0;t=l;i=f;return t|0}else{if((k$(o,r)|0)==0){t=l}else{u=s;break}i=f;return t|0}}}while(0);do{if((h|0)==23){s=c[l+4>>2]|0;if((k$(o,s)|0)==0){t=l}else{u=s;break}i=f;return t|0}}while(0);c[5389062]=c[5389062]|b;do{if((e|0)==0){s=c[n>>2]|0;if((s&64|0)!=0){Sr(181816,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;t=l;i=f;return t|0}if((s&16|0)!=0){Sr(177120,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;t=l;i=f;return t|0}if((s&32|0)==0){if((s&512|0)==0){v=u;break}if((c[(c[5425928]|0)+32>>2]|0)!=0){v=u;break}Sr(170416,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;t=l;i=f;return t|0}s=l+12|0;r=c[s>>2]|0;do{if((r|0)==0){if((k$(o,u)|0)==0){t=l}else{break}i=f;return t|0}else{if((k$(o,r)|0)==0){t=l;i=f;return t|0}else{es(r);break}}}while(0);Sr(173608,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;c[s>>2]=is(o)|0;c[l+20>>2]=1;r=l+24|0;c[r>>2]=(c[r>>2]|0)+1;t=l;i=f;return t|0}else{r=l+12|0;q=c[r>>2]|0;if((q|0)==0){v=u;break}es(q);c[r>>2]=0;v=c[l+4>>2]|0}}while(0);n=l+4|0;if((k$(o,v)|0)==0){t=l;i=f;return t|0}c[l+20>>2]=1;b=l+24|0;c[b>>2]=(c[b>>2]|0)+1;es(c[n>>2]|0);b=is(o)|0;c[n>>2]=b;g[l+28>>2]=+h$(b);c[l+32>>2]=oj(b|0)|0;t=l;i=f;return t|0}}while(0);if((d|0)==0){t=0;i=f;return t|0}if((e|0)==0){t=gt(j,d,128)|0;i=f;return t|0}else{t=gt(j,d,0)|0;i=f;return t|0}return 0}function jt(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+4|0;e=c[d>>2]|0;Sr(101168,(f=i,i=i+16|0,c[f>>2]=c[a>>2],c[f+8>>2]=e,f)|0);i=f;do{if((c[a+16>>2]&64|0)==0){e=a+8|0;if((VB(c[d>>2]|0,c[e>>2]|0)|0)==0){Sr(58824,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;break}else{Sr(52008,(f=i,i=i+8|0,c[f>>2]=c[e>>2],f)|0);i=f;break}}}while(0);Sr(46552,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;d=c[a+12>>2]|0;if((d|0)==0){i=b;return}Sr(185760,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f;i=b;return}function kt(a,b){a=a|0;b=b|0;it(a,b,1)|0;return}function lt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;f=a[b]|0;if(f<<24>>24==0){g=0}else{h=0;j=0;k=f;do{h=(da((t$(k<<24>>24|0)|0)<<24>>24,j+119|0)|0)+h|0;j=j+1|0;k=a[b+j|0]|0;}while(!(k<<24>>24==0));g=h&255}h=c[20479376+(g<<2)>>2]|0;if((h|0)==0){l=it(b,d,1)|0;i=e;return}else{m=h}while(1){if((VB(b,c[m>>2]|0)|0)==0){break}h=c[m+60>>2]|0;if((h|0)==0){n=11;break}else{m=h}}if((n|0)==11){l=it(b,d,1)|0;i=e;return}n=c[m+16>>2]|0;h=(c[m+20>>2]|0)==0?n:n|1073741824;if((h|0)==-2147483648|(h&8192|0)==0){l=it(b,d,1)|0;i=e;return}if((d|0)==0){Ur(1,163872,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o}else{Ur(1,167352,(o=i,i=i+16|0,c[o>>2]=b,c[o+8>>2]=d,o)|0);i=o}}function mt(a,b){a=a|0;b=b|0;it(a,b,0)|0;return}function nt(a,b){a=a|0;b=+b;var d=0,e=0,f=0,g=0,j=0;d=i;i=i+32|0;e=~~b;f=d|0;if(+(e|0)==b){$B(f,32,161032,(g=i,i=i+8|0,c[g>>2]=e,g)|0)|0;i=g;j=it(a,f,1)|0;i=d;return}else{$B(f,32,158312,(g=i,i=i+8|0,h[g>>3]=b,g)|0)|0;i=g;j=it(a,f,1)|0;i=d;return}}function ot(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=i;i=i+32|0;e=d|0;if((iC(b)|0)==0){$B(e,32,158312,(f=i,i=i+8|0,h[f>>3]=b,f)|0)|0;i=f;lt(a,e);i=d;return}else{$B(e,32,161032,(f=i,i=i+8|0,c[f>>2]=~~b,f)|0)|0;i=f;lt(a,e);i=d;return}}function pt(a){a=a|0;it(a,0,0)|0;return}function qt(a){a=a|0;it(a,0,1)|0;return}function rt(){var a=0,b=0,d=0;a=c[5389058]|0;if((a|0)==0){return}else{b=a}do{do{if((c[b+16>>2]&512|0)!=0){a=b+12|0;d=c[a>>2]|0;if((d|0)!=0){es(d);c[a>>2]=0}a=c[b+8>>2]|0;if((k$(a,c[b+4>>2]|0)|0)==0){break}it(c[b>>2]|0,a,1)|0}}while(0);b=c[b+52>>2]|0;}while((b|0)!=0);return}function st(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=or(0)|0;d=a[b]|0;if(d<<24>>24==0){e=0}else{f=0;g=0;h=d;do{f=(da((t$(h<<24>>24|0)|0)<<24>>24,g+119|0)|0)+f|0;g=g+1|0;h=a[b+g|0]|0;}while(!(h<<24>>24==0));e=f&255}f=c[20479376+(e<<2)>>2]|0;if((f|0)==0){i=0;return i|0}else{j=f}while(1){k=j|0;if((VB(b,c[k>>2]|0)|0)==0){break}f=c[j+60>>2]|0;if((f|0)==0){i=0;l=10;break}else{j=f}}if((l|0)==10){return i|0}if((nr()|0)==1){jt(j);i=1;return i|0}else{j=c[k>>2]|0;it(j,xr()|0,0)|0;i=1;return i|0}return 0}function tt(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;if((nr()|0)!=2){Sr(155752,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=b;return}e=or(1)|0;f=a[e]|0;if(f<<24>>24==0){g=0}else{h=0;j=0;k=f;do{h=(da((t$(k<<24>>24|0)|0)<<24>>24,j+119|0)|0)+h|0;j=j+1|0;k=a[e+j|0]|0;}while(!(k<<24>>24==0));g=h&255}h=c[20479376+(g<<2)>>2]|0;a:do{if((h|0)!=0){g=h;while(1){if((VB(e,c[g>>2]|0)|0)==0){break}k=c[g+60>>2]|0;if((k|0)==0){break a}else{g=k}}jt(g);i=b;return}}while(0);Sr(153760,(d=i,i=i+8|0,c[d>>2]=e,d)|0);i=d;i=b;return} + + + +function ut(){var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;d=nr()|0;if((d|0)<2){Sr(151864,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=b;return}if((d|0)==2){f=or(1)|0;h=or(1)|0;j=a[h]|0;if(j<<24>>24==0){k=0}else{l=0;m=0;n=j;do{l=(da((t$(n<<24>>24|0)|0)<<24>>24,m+119|0)|0)+l|0;m=m+1|0;n=a[h+m|0]|0;}while(!(n<<24>>24==0));k=l&255}l=c[20479376+(k<<2)>>2]|0;a:do{if((l|0)==0){o=1}else{k=l;while(1){if((VB(h,c[k>>2]|0)|0)==0){break}n=c[k+60>>2]|0;if((n|0)==0){o=1;break a}else{k=n}}o=+g[k+28>>2]==0.0|0}}while(0);h=pC(149528,(e=i,i=i+8|0,c[e>>2]=o,e)|0)|0;i=e;it(f,h,0)|0;i=b;return}else if((d|0)==3){Sr(147032,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=b;return}else{e=or(1)|0;h=a[e]|0;if(h<<24>>24==0){p=0}else{f=0;o=0;l=h;do{f=(da((t$(l<<24>>24|0)|0)<<24>>24,o+119|0)|0)+f|0;o=o+1|0;l=a[e+o|0]|0;}while(!(l<<24>>24==0));p=f&255}f=c[20479376+(p<<2)>>2]|0;b:do{if((f|0)==0){q=28378720}else{p=f;while(1){if((VB(e,c[p>>2]|0)|0)==0){break}l=c[p+60>>2]|0;if((l|0)==0){q=28378720;break b}else{p=l}}q=c[p+4>>2]|0}}while(0);e=2;while(1){r=e+1|0;if((r|0)>=(d|0)){s=24;break}if((k$(q,or(e)|0)|0)==0){s=23;break}else{e=r}}if((s|0)==23){e=or(1)|0;it(e,or(r)|0,0)|0;i=b;return}else if((s|0)==24){s=or(1)|0;it(s,or(2)|0,0)|0;i=b;return}}}function vt(){var b=0,d=0,e=0,f=0,g=0;b=i;d=nr()|0;e=or(0)|0;if((d|0)<2){Sr(144576,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;i=b;return}if((d|0)==2){tt();i=b;return}d=or(1)|0;f=it(d,zr(2)|0,0)|0;if((f|0)==0){i=b;return}d=a[e+3|0]|0;if((d|0)==97){e=f+16|0;g=c[e>>2]|0;if((g&1|0)!=0){i=b;return}c[e>>2]=g|1;c[5389062]=c[5389062]|1;i=b;return}else if((d|0)==117){g=f+16|0;e=c[g>>2]|0;if((e&2|0)!=0){i=b;return}c[g>>2]=e|2;c[5389062]=c[5389062]|2;i=b;return}else if((d|0)==115){d=f+16|0;f=c[d>>2]|0;if((f&4|0)!=0){i=b;return}c[d>>2]=f|4;c[5389062]=c[5389062]|4;i=b;return}else{i=b;return}}function wt(){var a=0,b=0;a=i;if((nr()|0)==2){it(or(1)|0,0,0)|0;i=a;return}else{Sr(142016,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}}function xt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;i=i+1024|0;d=b|0;e=c[5389058]|0;if((e|0)==0){f=1024;g=0;i=b;return}else{h=e}do{e=h|0;j=c[e>>2]|0;a:do{if((j|0)!=0){if((VB(j,139696)|0)==0){break}if((c[h+16>>2]&1|0)==0){break}k=c[h+12>>2]|0;l=c[e>>2]|0;m=o$(l|0)|0;do{if((k|0)==0){n=c[h+4>>2]|0;if((m+10+(o$(n|0)|0)|0)>>>0>1024>>>0){Sr(137680,(o=i,i=i+8|0,c[o>>2]=l,o)|0);i=o;break a}else{$B(d,1024,136160,(o=i,i=i+16|0,c[o>>2]=l,c[o+8>>2]=n,o)|0)|0;i=o;break}}else{if((m+10+(o$(k|0)|0)|0)>>>0>1024>>>0){Sr(137680,(o=i,i=i+8|0,c[o>>2]=l,o)|0);i=o;break a}else{$B(d,1024,136160,(o=i,i=i+16|0,c[o>>2]=l,c[o+8>>2]=k,o)|0)|0;i=o;break}}}while(0);gu(d,o$(d|0)|0,a)|0}}while(0);h=c[h+52>>2]|0;}while((h|0)!=0);f=1024;g=0;i=b;return}function yt(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;a=i;if((nr()|0)>1){b=or(1)|0}else{b=0}d=c[5389058]|0;if((d|0)==0){e=0;Sr(122360,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;g=c[5389060]|0;Sr(121568,(f=i,i=i+8|0,c[f>>2]=g,f)|0);i=f;i=a;return}h=(b|0)==0;j=0;k=d;while(1){d=k|0;l=c[d>>2]|0;do{if((l|0)!=0){if(!h){if((as(b,l,0)|0)==0){break}}m=k+16|0;if((c[m>>2]&4|0)==0){Sr(133136,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{Sr(134680,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}if((c[m>>2]&8|0)==0){Sr(133136,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{Sr(132096,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}if((c[m>>2]&2|0)==0){Sr(133136,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{Sr(130944,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}if((c[m>>2]&64|0)==0){Sr(133136,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{Sr(129608,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}if((c[m>>2]&16|0)==0){Sr(133136,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{Sr(128432,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}if((c[m>>2]&1|0)==0){Sr(133136,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{Sr(127168,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}if((c[m>>2]&32|0)==0){Sr(133136,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{Sr(125896,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}if((c[m>>2]&512|0)==0){Sr(133136,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{Sr(124872,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}if((c[m>>2]&128|0)==0){Sr(133136,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}else{Sr(124040,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}m=c[k+4>>2]|0;Sr(123232,(f=i,i=i+16|0,c[f>>2]=c[d>>2],c[f+8>>2]=m,f)|0);i=f}}while(0);d=j+1|0;l=c[k+52>>2]|0;if((l|0)==0){e=d;break}else{j=d;k=l}}Sr(122360,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;g=c[5389060]|0;Sr(121568,(f=i,i=i+8|0,c[f>>2]=g,f)|0);i=f;i=a;return}function zt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+52|0;d=c[b>>2]|0;e=c[a>>2]|0;if((e|0)!=0){es(e)}e=c[a+4>>2]|0;if((e|0)!=0){es(e)}e=c[a+12>>2]|0;if((e|0)!=0){es(e)}e=c[a+8>>2]|0;if((e|0)!=0){es(e)}e=a+56|0;f=c[e>>2]|0;g=c[b>>2]|0;if((f|0)==0){c[5389058]=g}else{c[f+52>>2]=g}g=c[b>>2]|0;if((g|0)!=0){c[g+56>>2]=c[e>>2]}e=a+64|0;g=c[e>>2]|0;b=a+60|0;f=c[b>>2]|0;if((g|0)==0){c[20479376+(c[a+68>>2]<<2)>>2]=f}else{c[g+60>>2]=f}f=c[b>>2]|0;if((f|0)==0){h=a;n$(h|0,0,72)|0;return d|0}c[f+64>>2]=c[e>>2];h=a;n$(h|0,0,72)|0;return d|0}function At(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;b=i;if((nr()|0)!=2){d=or(0)|0;Sr(120432,(e=i,i=i+8|0,c[e>>2]=d,e)|0);i=e;i=b;return}d=or(1)|0;f=a[d]|0;if(f<<24>>24==0){g=0}else{h=0;j=0;k=f;do{h=(da((t$(k<<24>>24|0)|0)<<24>>24,j+119|0)|0)+h|0;j=j+1|0;k=a[d+j|0]|0;}while(!(k<<24>>24==0));g=h&255}h=c[20479376+(g<<2)>>2]|0;if((h|0)==0){i=b;return}else{l=h}while(1){m=l|0;if((VB(d,c[m>>2]|0)|0)==0){break}h=c[l+60>>2]|0;if((h|0)==0){n=12;break}else{l=h}}if((n|0)==12){i=b;return}if((c[l+16>>2]&128|0)==0){n=or(0)|0;d=c[m>>2]|0;Sr(119040,(e=i,i=i+16|0,c[e>>2]=n,c[e+8>>2]=d,e)|0);i=e;i=b;return}else{zt(l)|0;i=b;return}}function Bt(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[5389058]|0;if((b|0)==0){return}if((a|0)==0){a=b;while(1){d=c[a+16>>2]|0;if((d&128|0)==0){if((d&1104|0)==0){it(c[a>>2]|0,c[a+8>>2]|0,0)|0}e=c[a+52>>2]|0}else{e=zt(a)|0}if((e|0)==0){break}else{a=e}}return}else{e=b;while(1){b=c[e+16>>2]|0;if((b&4224|0)==0){if((b&1104|0)==0){it(c[e>>2]|0,c[e+8>>2]|0,0)|0}f=c[e+52>>2]|0}else{f=zt(e)|0}if((f|0)==0){break}else{e=f}}return}}function Ct(){var a=0,b=0,d=0;a=c[5389058]|0;if((a|0)==0){return}else{b=a}while(1){a=c[b+16>>2]|0;if((a&128|0)==0){if((a&1104|0)==0){it(c[b>>2]|0,c[b+8>>2]|0,0)|0}d=c[b+52>>2]|0}else{d=zt(b)|0}if((d|0)==0){break}else{b=d}}return}function Dt(b){b=b|0;var d=0,e=0;a[30271848]=0;d=c[5389058]|0;if((d|0)==0){return 30271848}else{e=d}do{d=c[e>>2]|0;do{if((d|0)!=0){if((c[e+16>>2]&b|0)==0){break}vC(30271848,d,c[e+4>>2]|0)}}while(0);e=c[e+52>>2]|0;}while((e|0)!=0);return 30271848}function Et(b){b=b|0;var d=0,e=0;a[30272872]=0;d=c[5389058]|0;if((d|0)==0){return 30272872}else{e=d}do{d=c[e>>2]|0;do{if((d|0)!=0){if((c[e+16>>2]&b|0)==0){break}wC(30272872,d,c[e+4>>2]|0)}}while(0);e=c[e+52>>2]|0;}while((e|0)!=0);return 30272872}function Ft(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;a[30271848]=0;f=c[5389058]|0;if((f|0)==0){TB(d,30271848,e);return}else{g=f}do{f=c[g>>2]|0;do{if((f|0)!=0){if((c[g+16>>2]&b|0)==0){break}vC(30271848,f,c[g+4>>2]|0)}}while(0);g=c[g+52>>2]|0;}while((g|0)!=0);TB(d,30271848,e);return}function Gt(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;c[a+36>>2]=1;g[a+44>>2]=b;g[a+48>>2]=d;c[a+40>>2]=e;it(c[a>>2]|0,c[a+4>>2]|0,1)|0;return}function Ht(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if((e&65|0)==65){Tr(117784,(g=i,i=i+8|0,c[g>>2]=b,g)|0);i=g;h=e&-65}else{h=e}e=gt(b,d,h|4096)|0;if((a|0)==0){i=f;return}c[a>>2]=(e-21556256|0)/72|0;c[a+4>>2]=-1;It(a);i=f;return}function It(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0;b=i;d=c[a>>2]|0;if(!(d>>>0<(c[5389060]|0)>>>0)){Ur(1,116752,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}f=c[21556280+(d*72|0)>>2]|0;h=a+4|0;if((f|0)==(c[h>>2]|0)){i=b;return}j=c[21556260+(d*72|0)>>2]|0;if((j|0)==0){i=b;return}c[h>>2]=f;f=o$(j|0)|0;if((f+1|0)>>>0>256>>>0){Ur(1,115480,(e=i,i=i+16|0,c[e>>2]=j,c[e+8>>2]=f,e)|0);i=e}TB(a+16|0,j,256);g[a+8>>2]=+g[21556284+(d*72|0)>>2];c[a+12>>2]=c[21556288+(d*72|0)>>2];i=b;return}function Jt(a,b){a=a|0;b=b|0;if((b|0)!=2){return}b=yC(a,1,133136)|0;if(!(b>>>0>a>>>0)){return}Ts(b,0,1);return}function Kt(){n$(21556256|0,0|0,147456|0)|0;n$(20479376|0,0|0,1024|0)|0;c[5425928]=gt(114176,113168,72)|0;Gr(112232,118);Gr(111480,262);Hr(111480,160);Gr(110776,142);Hr(110776,160);Gr(109536,142);Hr(109536,160);Gr(108304,142);Hr(108304,160);Gr(107424,142);Hr(107424,160);Gr(106472,168);Hr(106472,160);Gr(105568,132);Hr(105568,160);Gr(104776,260);Gr(103768,64);return}function Lt(){return(c[5144096]|0)!=0|0}function Mt(b){b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;i=i+8192|0;e=d+4096|0;$B(e,4096,173680,(f=i,i=i+16|0,c[f>>2]=b+12288,c[f+8>>2]=b+8192,f)|0)|0;i=f;b=d|0;g=0;a:while(1){$B(b,4096,49784,(f=i,i=i+16|0,c[f>>2]=180928,c[f+8>>2]=g,f)|0)|0;i=f;h=b;j=e;while(1){k=a[j]|0;l=k<<24>>24;m=a[h]|0;n=m<<24>>24;o=(k-97&255)>>>0<26>>>0?l-32|0:l;l=(m-97&255)>>>0<26>>>0?n-32|0:n;if((o|0)==92|(o|0)==58){p=47}else{p=o}if((l|0)==92|(l|0)==58){q=47}else{q=l}if((p|0)!=(q|0)){break}if((p|0)==0){r=10;break a}else{h=h+1|0;j=j+1|0}}j=g+1|0;if((j|0)<9){g=j}else{break}}do{if((r|0)==10){if((g|0)<9){s=1}else{break}t=4096;u=0;i=d;return s|0}}while(0);XB(e,4096,151136);s=(ii(Ys()|0,e|0)|0)!=0|0;t=4096;u=0;i=d;return s|0}function Nt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=i;i=i+4096|0;g=f|0;h=0;a:while(1){$B(g,4096,49784,(j=i,i=i+16|0,c[j>>2]=d,c[j+8>>2]=h,j)|0)|0;i=j;j=g;k=b;while(1){l=a[k]|0;m=l<<24>>24;n=a[j]|0;o=n<<24>>24;p=(l-97&255)>>>0<26>>>0?m-32|0:m;m=(n-97&255)>>>0<26>>>0?o-32|0:o;if((p|0)==92|(p|0)==58){q=47}else{q=p}if((m|0)==92|(m|0)==58){r=47}else{r=m}if((q|0)!=(r|0)){break}if((q|0)==0){s=h;t=10;break a}else{j=j+1|0;k=k+1|0}}k=h+1|0;if((k|0)<9){h=k}else{s=k;t=10;break}}if((t|0)==10){i=f;return(s|0)<(e|0)|0}return 0}function Ot(){return c[5144108]|0}function Pt(a){a=a|0;var b=0,d=0,e=0;b=i;if((a-1|0)>>>0>62>>>0){Ur(1,176696,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}if((c[20492440+(a*288|0)>>2]|0)==1){Ur(1,176136,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}e=c[20492416+(a*288|0)>>2]|0;if((e|0)==0){Ur(1,175720,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}else{Vj(e|0,0,2,0)|0;i=b;return}}function Qt(a){a=a|0;var b=0,d=0,e=0;b=i;if((a-1|0)>>>0>62>>>0){Ur(1,176696,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;return 0}if((c[20492440+(a*288|0)>>2]|0)==1){Ur(1,176136,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;return 0}e=c[20492416+(a*288|0)>>2]|0;if((e|0)==0){Ur(1,175720,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;return 0}else{d=Ii(e|0)|0;hf(e|0,0,2)|0;a=Ii(e|0)|0;hf(e|0,d|0,0)|0;i=b;return a|0}return 0}function Rt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+4096|0;g=f|0;c[7565848]=c[7565848]^1;if((d|0)==0){h=3}else{if((a[d]|0)==0){h=3}else{j=d}}if((h|0)==3){j=20576464}$B(g,4096,131760,(h=i,i=i+16|0,c[h>>2]=j,c[h+8>>2]=e,h)|0)|0;i=h;e=0;j=g;a:while(1){d=a[j]|0;do{if((d<<24>>24|0)==47|(d<<24>>24|0)==92){if((e|0)==0){a[j]=47;k=1;break}else{s$(j|0,j+1|0,o$(j|0)|0)|0;k=e;break}}else if((d<<24>>24|0)==0){break a}else{k=0}}while(0);e=k;j=j+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(h=i,i=i+16|0,c[h>>2]=b,c[h+8>>2]=g,h)|0)|0;i=h;i=f;return 30263400+(c[7565848]<<12)|0}function St(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;i=i+4096|0;e=d|0;do{if((ii(b|0,110392)|0)==0){if((ii(b|0,100928)|0)!=0){break}TB(e,b,4096);f=0;g=e;a:while(1){h=a[g]|0;do{if((h<<24>>24|0)==47|(h<<24>>24|0)==92){if((f|0)==0){a[g]=47;j=1;break}else{s$(g|0,g+1|0,o$(g|0)|0)|0;j=f;break}}else if((h<<24>>24|0)==0){break a}else{j=0}}while(0);f=j;g=g+1|0}g=sg(e|0,47)|0;while(1){f=g+1|0;h=a[f]|0;if((h<<24>>24|0)==0){k=0;l=15;break}else if((h<<24>>24|0)!=47){g=f;continue}a[f]=0;if((ui(e|0)|0)==0){l=13;break}a[f]=47;g=f}if((l|0)==13){Ur(0,51880,(m=i,i=i+8|0,c[m>>2]=e,m)|0);i=m;return 0}else if((l|0)==15){n=4096;o=0;i=d;return k|0}}}while(0);Sr(58648,(m=i,i=i+8|0,c[m>>2]=b,m)|0);i=m;k=1;n=4096;o=0;i=d;return k|0}function Tt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+4096|0;e=d|0;do{if((UB(b,178064)|0)==0){if((UB(b,177576)|0)!=0){break}if((UB(b,151136)|0)!=0){break}f=c[(c[5144112]|0)+4>>2]|0;g=e|0;c[7565848]=c[7565848]^1;$B(g,4096,131760,(h=i,i=i+16|0,c[h>>2]=20576464,c[h+8>>2]=b,h)|0)|0;i=h;j=0;k=g;a:while(1){l=a[k]|0;do{if((l<<24>>24|0)==0){break a}else if((l<<24>>24|0)==47|(l<<24>>24|0)==92){if((j|0)==0){a[k]=47;m=1;break}else{s$(k|0,k+1|0,o$(k|0)|0)|0;m=j;break}}else{m=0}}while(0);j=m;k=k+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(h=i,i=i+16|0,c[h>>2]=f,c[h+8>>2]=g,h)|0)|0;i=h;cg(30263400+(c[7565848]<<12)|0)|0;i=d;return}}while(0);d=RB(b)|0;Ur(0,177144,(h=i,i=i+24|0,c[h>>2]=186232,c[h+8>>2]=b,c[h+16>>2]=d,h)|0);i=h}function Ut(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+4096|0;e=c[(c[5144112]|0)+4>>2]|0;f=d|0;c[7565848]=c[7565848]^1;$B(f,4096,131760,(g=i,i=i+16|0,c[g>>2]=20576464,c[g+8>>2]=b,g)|0)|0;i=g;b=0;h=f;a:while(1){j=a[h]|0;do{if((j<<24>>24|0)==47|(j<<24>>24|0)==92){if((b|0)==0){a[h]=47;k=1;break}else{s$(h|0,h+1|0,o$(h|0)|0)|0;k=b;break}}else if((j<<24>>24|0)==0){break a}else{k=0}}while(0);b=k;h=h+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(g=i,i=i+16|0,c[g>>2]=e,c[g+8>>2]=f,g)|0)|0;i=g;g=Zj(30263400+(c[7565848]<<12)|0,46528)|0;if((g|0)==0){l=0;i=d;return l|0}kb(g|0)|0;l=1;i=d;return l|0}function Vt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;i=i+4096|0;if((c[5144096]|0)==0){Ur(0,181760,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;return 0}f=c[(c[5144112]|0)+4>>2]|0;g=d|0;c[7565848]=c[7565848]^1;if((b|0)==0){h=5}else{if((a[b]|0)==0){h=5}else{j=b}}if((h|0)==5){j=20576464}$B(g,4096,131760,(e=i,i=i+16|0,c[e>>2]=j,c[e+8>>2]=28378736,e)|0)|0;i=e;j=0;k=g;a:while(1){l=a[k]|0;do{if((l<<24>>24|0)==47|(l<<24>>24|0)==92){if((j|0)==0){a[k]=47;m=1;break}else{s$(k|0,k+1|0,o$(k|0)|0)|0;m=j;break}}else if((l<<24>>24|0)==0){break a}else{m=0}}while(0);j=m;k=k+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(e=i,i=i+16|0,c[e>>2]=f,c[e+8>>2]=g,e)|0)|0;i=e;g=c[7565848]|0;f=30263400+(g<<12)|0;a[(o$(f|0)|0)-1+(30263400+(g<<12))|0]=0;g=1;while(1){n=20492416+(g*288|0)|0;k=g+1|0;if((c[n>>2]|0)==0){break}if((k|0)<64){g=k}else{h=15;break}}if((h|0)==15){Ur(1,178480,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;return 0}c[20492440+(g*288|0)>>2]=0;if((c[(c[5145140]|0)+32>>2]|0)!=0){Sr(177080,(e=i,i=i+8|0,c[e>>2]=f,e)|0);i=e}if((UB(f,178064)|0)!=0){o=RB(f)|0;Ur(0,177144,(e=i,i=i+24|0,c[e>>2]=186208,c[e+8>>2]=f,c[e+16>>2]=o,e)|0);i=e;return 0}if((UB(f,177576)|0)!=0){o=RB(f)|0;Ur(0,177144,(e=i,i=i+24|0,c[e>>2]=186208,c[e+8>>2]=f,c[e+16>>2]=o,e)|0);i=e;return 0}if((UB(f,151136)|0)!=0){o=RB(f)|0;Ur(0,177144,(e=i,i=i+24|0,c[e>>2]=186208,c[e+8>>2]=f,c[e+16>>2]=o,e)|0);i=e;return 0}if((St(f)|0)!=0){p=0;i=d;return p|0}Tr(173576,(e=i,i=i+8|0,c[e>>2]=f,e)|0);i=e;c[n>>2]=Zj(f|0,170400)|0;TB(20492448+(g*288|0)|0,b,256);c[20492424+(g*288|0)>>2]=0;p=(c[n>>2]|0)==0?0:g;i=d;return p|0}function Wt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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=i;i=i+4096|0;f=e|0;if((c[5144096]|0)==0){Ur(0,181760,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}else{h=1}while(1){j=20492416+(h*288|0)|0;k=h+1|0;if((c[j>>2]|0)==0){break}if((k|0)<64){h=k}else{l=5;break}}if((l|0)==5){Ur(1,178480,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}c[20492440+(h*288|0)>>2]=0;TB(20492448+(h*288|0)|0,b,256);Lx();k=c[(c[5144112]|0)+4>>2]|0;m=f|0;c[7565848]=c[7565848]^1;f=(b|0)==0;if(f){l=8}else{if((a[b]|0)==0){l=8}else{n=b}}if((l|0)==8){n=20576464}$B(m,4096,131760,(g=i,i=i+16|0,c[g>>2]=n,c[g+8>>2]=28378736,g)|0)|0;i=g;n=0;o=m;a:while(1){p=a[o]|0;do{if((p<<24>>24|0)==47|(p<<24>>24|0)==92){if((n|0)==0){a[o]=47;q=1;break}else{s$(o|0,o+1|0,o$(o|0)|0)|0;q=n;break}}else if((p<<24>>24|0)==0){break a}else{q=0}}while(0);n=q;o=o+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(g=i,i=i+16|0,c[g>>2]=k,c[g+8>>2]=m,g)|0)|0;i=g;k=c[7565848]|0;o=30263400+(k<<12)|0;a[(o$(o|0)|0)-1+(30263400+(k<<12))|0]=0;if((c[(c[5145140]|0)+32>>2]|0)!=0){Sr(167304,(g=i,i=i+8|0,c[g>>2]=o,g)|0);i=g}k=Zj(o|0,46528)|0;c[j>>2]=k;o=20492424+(h*288|0)|0;c[o>>2]=0;if((k|0)==0){if((VB(c[(c[5144112]|0)+4>>2]|0,c[(c[5145148]|0)+4>>2]|0)|0)==0){r=c[j>>2]|0}else{k=c[(c[5145148]|0)+4>>2]|0;c[7565848]=c[7565848]^1;if(f){l=22}else{if((a[b]|0)==0){l=22}else{s=b}}if((l|0)==22){s=20576464}$B(m,4096,131760,(g=i,i=i+16|0,c[g>>2]=s,c[g+8>>2]=28378736,g)|0)|0;i=g;s=0;l=m;b:while(1){b=a[l]|0;do{if((b<<24>>24|0)==0){break b}else if((b<<24>>24|0)==47|(b<<24>>24|0)==92){if((s|0)==0){a[l]=47;t=1;break}else{s$(l|0,l+1|0,o$(l|0)|0)|0;t=s;break}}else{t=0}}while(0);s=t;l=l+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(g=i,i=i+16|0,c[g>>2]=k,c[g+8>>2]=m,g)|0)|0;i=g;m=c[7565848]|0;k=30263400+(m<<12)|0;a[(o$(k|0)|0)-1+(30263400+(m<<12))|0]=0;if((c[(c[5145140]|0)+32>>2]|0)!=0){Sr(163776,(g=i,i=i+8|0,c[g>>2]=k,g)|0);i=g}g=Zj(k|0,46528)|0;c[j>>2]=g;c[o>>2]=0;r=g}u=(r|0)==0?0:h}else{u=h}c[d>>2]=u;if((u|0)==0){v=-1;i=e;return v|0}v=Qt(u)|0;i=e;return v|0}function Xt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+4096|0;if((c[5144096]|0)==0){Ur(0,181760,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}Lx();h=c[(c[5144112]|0)+4>>2]|0;j=f|0;c[7565848]=c[7565848]^1;if((b|0)==0){k=5}else{if((a[b]|0)==0){k=5}else{l=b}}if((k|0)==5){l=20576464}$B(j,4096,131760,(g=i,i=i+16|0,c[g>>2]=l,c[g+8>>2]=28378736,g)|0)|0;i=g;l=0;b=j;a:while(1){m=a[b]|0;do{if((m<<24>>24|0)==0){break a}else if((m<<24>>24|0)==47|(m<<24>>24|0)==92){if((l|0)==0){a[b]=47;n=1;break}else{s$(b|0,b+1|0,o$(b|0)|0)|0;n=l;break}}else{n=0}}while(0);l=n;b=b+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(g=i,i=i+16|0,c[g>>2]=h,c[g+8>>2]=j,g)|0)|0;i=g;h=c[7565848]|0;b=30263400+(h<<12)|0;n=c[(c[5144112]|0)+4>>2]|0;c[7565848]=h^1;if((d|0)==0){k=14}else{if((a[d]|0)==0){k=14}else{o=d}}if((k|0)==14){o=20576464}$B(j,4096,131760,(g=i,i=i+16|0,c[g>>2]=o,c[g+8>>2]=28378736,g)|0)|0;i=g;o=0;k=j;b:while(1){d=a[k]|0;do{if((d<<24>>24|0)==47|(d<<24>>24|0)==92){if((o|0)==0){a[k]=47;p=1;break}else{s$(k|0,k+1|0,o$(k|0)|0)|0;p=o;break}}else if((d<<24>>24|0)==0){break b}else{p=0}}while(0);o=p;k=k+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(g=i,i=i+16|0,c[g>>2]=n,c[g+8>>2]=j,g)|0)|0;i=g;j=c[7565848]|0;n=30263400+(j<<12)|0;a[(o$(b|0)|0)-1+(30263400+(h<<12))|0]=0;a[(o$(n|0)|0)-1+(30263400+(j<<12))|0]=0;if((c[(c[5145140]|0)+32>>2]|0)!=0){Sr(160992,(g=i,i=i+16|0,c[g>>2]=b,c[g+8>>2]=n,g)|0);i=g}if((e|0)==0){q=qh(b|0,n|0)|0;i=f;return}if((UB(n,178064)|0)!=0){r=RB(n)|0;Ur(0,177144,(g=i,i=i+24|0,c[g>>2]=186192,c[g+8>>2]=n,c[g+16>>2]=r,g)|0);i=g}if((UB(n,177576)|0)!=0){r=RB(n)|0;Ur(0,177144,(g=i,i=i+24|0,c[g>>2]=186192,c[g+8>>2]=n,c[g+16>>2]=r,g)|0);i=g}if((UB(n,151136)|0)==0){q=qh(b|0,n|0)|0;i=f;return}else{r=RB(n)|0;Ur(0,177144,(g=i,i=i+24|0,c[g>>2]=186192,c[g+8>>2]=n,c[g+16>>2]=r,g)|0);i=g}}function Yt(a){a=a|0;var b=0,d=0,e=0;b=i;if((c[5144096]|0)==0){Ur(0,181760,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}d=20492416+(a*288|0)|0;if((c[20492440+(a*288|0)>>2]|0)==1){e=d;EC(c[e>>2]|0)|0;if((c[20492420+(a*288|0)>>2]|0)!=0){DC(c[e>>2]|0)|0}n$(d|0,0,288)|0;i=b;return}else{e=c[d>>2]|0;if((e|0)!=0){kb(e|0)|0}n$(d|0,0,288)|0;i=b;return}}function Zt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;i=i+4096|0;e=d|0;if((c[5144096]|0)==0){Ur(0,181760,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}else{g=1}while(1){h=20492416+(g*288|0)|0;j=g+1|0;if((c[h>>2]|0)==0){break}if((j|0)<64){g=j}else{k=5;break}}if((k|0)==5){Ur(1,178480,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}c[20492440+(g*288|0)>>2]=0;k=c[(c[5144112]|0)+4>>2]|0;j=e|0;c[7565848]=c[7565848]^1;$B(j,4096,131760,(f=i,i=i+16|0,c[f>>2]=20576464,c[f+8>>2]=b,f)|0)|0;i=f;e=0;l=j;a:while(1){m=a[l]|0;do{if((m<<24>>24|0)==0){break a}else if((m<<24>>24|0)==47|(m<<24>>24|0)==92){if((e|0)==0){a[l]=47;n=1;break}else{s$(l|0,l+1|0,o$(l|0)|0)|0;n=e;break}}else{n=0}}while(0);e=n;l=l+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(f=i,i=i+16|0,c[f>>2]=k,c[f+8>>2]=j,f)|0)|0;i=f;j=30263400+(c[7565848]<<12)|0;if((c[(c[5145140]|0)+32>>2]|0)!=0){Sr(155720,(f=i,i=i+8|0,c[f>>2]=j,f)|0);i=f}do{if((UB(j,178064)|0)==0){if((UB(j,177576)|0)!=0){break}if((UB(j,151136)|0)!=0){break}if((St(j)|0)!=0){o=0;i=d;return o|0}c[h>>2]=Zj(j|0,170400)|0;TB(20492448+(g*288|0)|0,b,256);c[20492424+(g*288|0)>>2]=0;o=(c[h>>2]|0)==0?0:g;i=d;return o|0}}while(0);o=RB(j)|0;Ur(0,177144,(f=i,i=i+24|0,c[f>>2]=186248,c[f+8>>2]=j,c[f+16>>2]=o,f)|0);i=f;return 0}function _t(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;i=i+4096|0;e=d|0;if((c[5144096]|0)==0){Ur(0,181760,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}else{g=1}while(1){h=20492416+(g*288|0)|0;j=g+1|0;if((c[h>>2]|0)==0){break}if((j|0)<64){g=j}else{k=5;break}}if((k|0)==5){Ur(1,178480,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}c[20492440+(g*288|0)>>2]=0;TB(20492448+(g*288|0)|0,b,256);Lx();k=c[(c[5144112]|0)+4>>2]|0;j=e|0;c[7565848]=c[7565848]^1;$B(j,4096,131760,(f=i,i=i+16|0,c[f>>2]=20576464,c[f+8>>2]=b,f)|0)|0;i=f;b=0;e=j;a:while(1){l=a[e]|0;do{if((l<<24>>24|0)==0){break a}else if((l<<24>>24|0)==47|(l<<24>>24|0)==92){if((b|0)==0){a[e]=47;m=1;break}else{s$(e|0,e+1|0,o$(e|0)|0)|0;m=b;break}}else{m=0}}while(0);b=m;e=e+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(f=i,i=i+16|0,c[f>>2]=k,c[f+8>>2]=j,f)|0)|0;i=f;j=30263400+(c[7565848]<<12)|0;if((c[(c[5145140]|0)+32>>2]|0)!=0){Sr(153728,(f=i,i=i+8|0,c[f>>2]=j,f)|0);i=f}do{if((UB(j,178064)|0)==0){if((UB(j,177576)|0)!=0){break}if((UB(j,151136)|0)!=0){break}if((St(j)|0)!=0){n=0;i=d;return n|0}k=Zj(j|0,151840)|0;c[h>>2]=k;c[20492424+(g*288|0)>>2]=0;n=(k|0)==0?0:g;i=d;return n|0}}while(0);n=RB(j)|0;Ur(0,177144,(f=i,i=i+24|0,c[f>>2]=186272,c[f+8>>2]=j,c[f+16>>2]=n,f)|0);i=f;return 0}function $t(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;i=i+4096|0;e=d|0;if((c[5144096]|0)==0){Ur(0,181760,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}else{g=1}while(1){h=20492416+(g*288|0)|0;j=g+1|0;if((c[h>>2]|0)==0){break}if((j|0)<64){g=j}else{k=5;break}}if((k|0)==5){Ur(1,178480,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}c[20492440+(g*288|0)>>2]=0;TB(20492448+(g*288|0)|0,b,256);Lx();k=c[(c[5144112]|0)+4>>2]|0;j=e|0;c[7565848]=c[7565848]^1;$B(j,4096,131760,(f=i,i=i+16|0,c[f>>2]=20576464,c[f+8>>2]=b,f)|0)|0;i=f;b=0;e=j;a:while(1){l=a[e]|0;do{if((l<<24>>24|0)==0){break a}else if((l<<24>>24|0)==47|(l<<24>>24|0)==92){if((b|0)==0){a[e]=47;m=1;break}else{s$(e|0,e+1|0,o$(e|0)|0)|0;m=b;break}}else{m=0}}while(0);b=m;e=e+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(f=i,i=i+16|0,c[f>>2]=k,c[f+8>>2]=j,f)|0)|0;i=f;j=30263400+(c[7565848]<<12)|0;if((c[(c[5145140]|0)+32>>2]|0)!=0){Sr(149488,(f=i,i=i+8|0,c[f>>2]=j,f)|0);i=f}if((UB(j,178064)|0)!=0){n=RB(j)|0;Ur(0,177144,(f=i,i=i+24|0,c[f>>2]=186296,c[f+8>>2]=j,c[f+16>>2]=n,f)|0);i=f;return 0}if((UB(j,177576)|0)!=0){n=RB(j)|0;Ur(0,177144,(f=i,i=i+24|0,c[f>>2]=186296,c[f+8>>2]=j,c[f+16>>2]=n,f)|0);i=f;return 0}if((UB(j,151136)|0)!=0){n=RB(j)|0;Ur(0,177144,(f=i,i=i+24|0,c[f>>2]=186296,c[f+8>>2]=j,c[f+16>>2]=n,f)|0);i=f;return 0}n=Gf(j|0)|0;if((n|0)==0){Sr(146944,(f=i,i=i+8|0,c[f>>2]=j,f)|0);i=f;o=0;i=d;return o|0}else{c[h>>2]=n;c[20492424+(g*288|0)>>2]=0;o=g;i=d;return o|0}return 0}function au(b,c){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=c;c=b;while(1){b=a[c]|0;e=b<<24>>24;f=a[d]|0;g=f<<24>>24;h=(b-97&255)>>>0<26>>>0?e-32|0:e;e=(f-97&255)>>>0<26>>>0?g-32|0:g;if((h|0)==92|(h|0)==58){i=47}else{i=h}if((e|0)==92|(e|0)==58){j=47}else{j=e}if((i|0)!=(j|0)){k=1;l=8;break}if((i|0)==0){k=0;l=8;break}else{d=d+1|0;c=c+1|0}}if((l|0)==8){return k|0}return 0}function bu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;h=i;i=i+4096|0;j=h|0;if((b|0)==0){Ur(0,141960,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;return 0}l=a[b]|0;if((l<<24>>24|0)==47|(l<<24>>24|0)==92){m=b+1|0}else{m=b}do{if((ii(m|0,110392)|0)==0){if((ii(m|0,100928)|0)!=0){break}do{if((c[5457512]|0)!=0){if((ii(m|0,139640)|0)==0){break}if((e|0)==0){n=0;i=h;return n|0}c[e>>2]=0;n=-1;i=h;return n|0}}while(0);if((e|0)==0){b=d+4|0;l=c[b>>2]|0;if((l|0)==0){o=c[d+8>>2]|0;if((o|0)==0){n=0;i=h;return n|0}p=o+8192|0;q=j|0;c[7565848]=c[7565848]^1;$B(q,4096,131760,(k=i,i=i+16|0,c[k>>2]=(a[p]|0)==0?20576464:p,c[k+8>>2]=m,k)|0)|0;i=k;p=0;r=q;a:while(1){s=a[r]|0;do{if((s<<24>>24|0)==47|(s<<24>>24|0)==92){if((p|0)==0){a[r]=47;t=1;break}else{s$(r|0,r+1|0,o$(r|0)|0)|0;t=p;break}}else if((s<<24>>24|0)==0){break a}else{t=0}}while(0);p=t;r=r+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(k=i,i=i+16|0,c[k>>2]=o,c[k+8>>2]=q,k)|0)|0;i=k;r=Zj(30263400+(c[7565848]<<12)|0,46528)|0;if((r|0)==0){n=0;i=h;return n|0}p=Ii(r|0)|0;hf(r|0,0,2)|0;s=Ii(r|0)|0;hf(r|0,p|0,0)|0;kb(r|0)|0;n=(s|0)==0?1:s;i=h;return n|0}s=c[l+16404>>2]|0;r=a[m]|0;if(r<<24>>24==0){u=0;v=l}else{p=0;w=0;x=r;while(1){r=(t$(x<<24>>24|0)|0)&255;if((r<<24>>24|0)==92){y=47}else if((r<<24>>24|0)==46){z=w;break}else{y=r}r=(da(y<<24>>24,p+119|0)|0)+w|0;A=p+1|0;B=a[m+A|0]|0;if(B<<24>>24==0){z=r;break}else{p=A;w=r;x=B}}u=z;v=c[b>>2]|0}x=c[(c[v+16408>>2]|0)+(((u>>10^u^u>>20)&s-1)<<2)>>2]|0;if((x|0)==0){n=0;i=h;return n|0}else{C=x}b:while(1){x=m;w=c[C>>2]|0;while(1){p=a[w]|0;l=p<<24>>24;q=a[x]|0;o=q<<24>>24;B=(p-97&255)>>>0<26>>>0?l-32|0:l;l=(q-97&255)>>>0<26>>>0?o-32|0:o;if((B|0)==92|(B|0)==58){D=47}else{D=B}if((l|0)==92|(l|0)==58){E=47}else{E=l}if((D|0)!=(E|0)){break}if((D|0)==0){break b}else{x=x+1|0;w=w+1|0}}w=c[C+12>>2]|0;if((w|0)==0){n=0;F=121;break}else{C=w}}if((F|0)==121){i=h;return n|0}s=c[C+8>>2]|0;n=(s|0)==0?1:s;i=h;return n|0}else{G=1}while(1){s=G+1|0;if((c[20492416+(G*288|0)>>2]|0)==0){break}if((s|0)<64){G=s}else{F=41;break}}if((F|0)==41){Ur(1,178480,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;return 0}c[e>>2]=G;c[20492420+(G*288|0)>>2]=f;s=d+4|0;b=c[s>>2]|0;if((b|0)==0){w=d+8|0;if((c[w>>2]|0)==0){n=-1;i=h;return n|0}x=o$(m|0)|0;c:do{if((g|0)==0&(c[5144104]|0)!=0){l=(x|0)<4;do{if(!l){if((VB(m+(x-4)|0,134672)|0)==0){break c}if((x|0)>=5){if((VB(m+(x-5)|0,129600)|0)==0){break c}if((VB(m+(x-5)|0,122352)|0)==0){break c}}if(l){break}if((VB(m+(x-4)|0,121560)|0)==0){break c}}}while(0);l=ge(m|0,46)|0;do{if((l|0)!=0){if((jC(l+1|0,144568,3)|0)!=0){break}B=oj(l+4|0)|0;if((B|0)==(c[(c[5457224]|0)+32>>2]|0)){break c}o=c[7644]|0;if((o|0)==0){break}else{H=0;I=o}do{H=H+1|0;if((I|0)==(B|0)){break c}I=c[30576+(H<<2)>>2]|0;}while((I|0)!=0)}}while(0);c[e>>2]=0;n=-1;i=h;return n|0}}while(0);x=c[w>>2]|0;l=x+8192|0;B=j|0;c[7565848]=c[7565848]^1;$B(B,4096,131760,(k=i,i=i+16|0,c[k>>2]=(a[l]|0)==0?20576464:l,c[k+8>>2]=m,k)|0)|0;i=k;o=0;q=B;d:while(1){p=a[q]|0;do{if((p<<24>>24|0)==47|(p<<24>>24|0)==92){if((o|0)==0){a[q]=47;J=1;break}else{s$(q|0,q+1|0,o$(q|0)|0)|0;J=o;break}}else if((p<<24>>24|0)==0){break d}else{J=0}}while(0);o=J;q=q+1|0}q=x|0;$B(30263400+(c[7565848]<<12)|0,4096,121104,(k=i,i=i+16|0,c[k>>2]=q,c[k+8>>2]=B,k)|0)|0;i=k;o=Zj(30263400+(c[7565848]<<12)|0,46528)|0;if((o|0)==0){c[e>>2]=0;n=-1;i=h;return n|0}TB(20492448+((c[e>>2]|0)*288|0)|0,m,256);c[20492440+((c[e>>2]|0)*288|0)>>2]=0;if((c[(c[5145140]|0)+32>>2]|0)!=0){Sr(120384,(k=i,i=i+32|0,c[k>>2]=m,c[k+8>>2]=q,c[k+16>>2]=47,c[k+24>>2]=l,k)|0);i=k}c[20492416+((c[e>>2]|0)*288|0)>>2]=o;q=Ii(o|0)|0;hf(o|0,0,2)|0;w=Ii(o|0)|0;hf(o|0,q|0,0)|0;n=w;i=h;return n|0}w=c[b+16404>>2]|0;q=a[m]|0;if(q<<24>>24==0){K=0;L=b}else{o=0;p=0;r=q;while(1){q=(t$(r<<24>>24|0)|0)&255;if((q<<24>>24|0)==92){M=47}else if((q<<24>>24|0)==46){N=p;break}else{M=q}q=(da(M<<24>>24,o+119|0)|0)+p|0;A=o+1|0;O=a[m+A|0]|0;if(O<<24>>24==0){N=q;break}else{o=A;p=q;r=O}}K=N;L=c[s>>2]|0}r=(K>>10^K^K>>20)&w-1;if((c[(c[L+16408>>2]|0)+(r<<2)>>2]|0)==0){n=-1;i=h;return n|0}e:do{if((g|0)==0){p=c[5144104]|0;if((p|0)==0){break}if((p|0)>0){o=c[L+16388>>2]|0;b=0;while(1){l=b+1|0;if((o|0)==(c[20543616+(b<<2)>>2]|0)){break e}if((l|0)<(p|0)){b=l}else{break}}}c[e>>2]=0;n=-1;i=h;return n|0}}while(0);if((Mt(L)|0)==0){c[e>>2]=0;n=-1;i=h;return n|0}w=c[s>>2]|0;b=c[(c[w+16408>>2]|0)+(r<<2)>>2]|0;f:while(1){p=m;o=c[b>>2]|0;while(1){l=a[o]|0;B=l<<24>>24;x=a[p]|0;O=x<<24>>24;q=(l-97&255)>>>0<26>>>0?B-32|0:B;B=(x-97&255)>>>0<26>>>0?O-32|0:O;if((q|0)==92|(q|0)==58){P=47}else{P=q}if((B|0)==92|(B|0)==58){Q=47}else{Q=B}if((P|0)!=(Q|0)){break}if((P|0)==0){break f}else{p=p+1|0;o=o+1|0}}o=c[b+12>>2]|0;if((o|0)==0){n=-1;F=121;break}else{b=o}}if((F|0)==121){i=h;return n|0}r=o$(m|0)|0;s=w+16400|0;g:do{if((c[s>>2]&1|0)==0){o=(r|0)<7;if(!o){if((VB(m+(r-7)|0,137672)|0)==0){break}}p=(r|0)<4;if(!p){if((VB(m+(r-4)|0,136152)|0)==0){break}if((VB(m+(r-4)|0,134672)|0)==0){break}}if(!o){if((VB(m+(r-7)|0,133128)|0)==0){break}}do{if(!p){if((VB(m+(r-4)|0,132088)|0)==0){break g}if((r|0)>=6){if((VB(m+(r-6)|0,130896)|0)==0){break g}}if((r|0)<5){break}if((VB(m+(r-5)|0,129600)|0)==0){break g}}}while(0);if((VB(m,128416)|0)==0){break}if((ii(m|0,127152)|0)!=0){break}c[s>>2]=c[s>>2]|1}}while(0);if((ii(m|0,125848)|0)!=0){c[s>>2]=c[s>>2]|4}if((ii(m|0,124864)|0)!=0){c[s>>2]=c[s>>2]|2}do{if((f|0)==0){r=c[e>>2]|0;c[20492416+(r*288|0)>>2]=c[w+16384>>2];R=r}else{r=w+4096|0;p=CC(r)|0;o=c[e>>2]|0;c[20492416+(o*288|0)>>2]=p;if((p|0)!=0){R=o;break}Ur(0,124016,(k=i,i=i+8|0,c[k>>2]=r,k)|0);i=k;return 0}}while(0);TB(20492448+(R*288|0)|0,m,256);c[20492440+((c[e>>2]|0)*288|0)>>2]=1;s=b+4|0;OC(c[20492416+((c[e>>2]|0)*288|0)>>2]|0,c[s>>2]|0)|0;KC(c[20492416+((c[e>>2]|0)*288|0)>>2]|0)|0;c[20492432+((c[e>>2]|0)*288|0)>>2]=c[s>>2];s=b+8|0;r=c[s>>2]|0;c[20492436+((c[e>>2]|0)*288|0)>>2]=r;if((c[(c[5145140]|0)+32>>2]|0)==0){n=r;i=h;return n|0}Sr(123192,(k=i,i=i+16|0,c[k>>2]=m,c[k+8>>2]=w+4096,k)|0);i=k;n=c[s>>2]|0;i=h;return n|0}}while(0);if((e|0)==0){n=0;i=h;return n|0}c[e>>2]=0;n=-1;i=h;return n|0}function cu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;f=c[5144096]|0;if((f|0)==0){Ur(0,181760,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}a:do{if((b|0)==0){g=f;while(1){h=bu(a,g,0,d,0)|0;if((h|0)>0){j=h;break}g=c[g>>2]|0;if((g|0)==0){break a}}i=e;return j|0}else{g=f;while(1){h=bu(a,g,b,d,0)|0;if((h|0)>-1){if((c[b>>2]|0)!=0){j=h;break}}g=c[g>>2]|0;if((g|0)==0){break a}}i=e;return j|0}}while(0);if((b|0)==0){j=0;i=e;return j|0}c[b>>2]=0;j=-1;i=e;return j|0}function du(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=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;h=i;i=i+12288|0;j=h+4096|0;k=h+8192|0;if((c[5144096]|0)==0){Ur(0,181760,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;return 0}m=(g|0)!=0;if(m){$B(j,4096,119032,(l=i,i=i+8|0,c[l>>2]=f,l)|0)|0;i=l}$B(k,4096,117768,(l=i,i=i+8|0,c[l>>2]=f,l)|0)|0;i=l;f=c[b>>2]|0;g=(f|0)==0;if(g){n=20576384}else{n=f}o=c[n>>2]|0;if((o|0)==0){p=-1;q=4096;r=0;s=4096;t=0;i=h;return p|0}n=f+4|0;f=h|0;u=o;a:while(1){o=c[u+8>>2]|0;b:do{if((o|0)==0|(c[5144104]|0)!=0){v=c[u+4>>2]|0;if((v|0)==0){break}c:do{if(!g){w=c[n>>2]|0;if((w|0)==0){break}x=v|0;y=w|0;while(1){w=a[y]|0;z=w<<24>>24;A=a[x]|0;B=A<<24>>24;C=(w-97&255)>>>0<26>>>0?z-32|0:z;z=(A-97&255)>>>0<26>>>0?B-32|0:B;if((C|0)==92|(C|0)==58){D=47}else{D=C}if((z|0)==92|(z|0)==58){E=47}else{E=z}if((D|0)!=(E|0)){break c}if((D|0)==0){break b}else{x=x+1|0;y=y+1|0}}}}while(0);if((bu(k,u,0,0,0)|0)>0){F=33;break a}}else{if(m){v=o+8192|0;c[7565848]=c[7565848]^1;$B(f,4096,131760,(l=i,i=i+16|0,c[l>>2]=(a[v]|0)==0?20576464:v,c[l+8>>2]=j,l)|0)|0;i=l;v=0;y=f;d:while(1){x=a[y]|0;do{if((x<<24>>24|0)==0){break d}else if((x<<24>>24|0)==47|(x<<24>>24|0)==92){if((v|0)==0){a[y]=47;G=1;break}else{s$(y|0,y+1|0,o$(y|0)|0)|0;G=v;break}}else{G=0}}while(0);v=G;y=y+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(l=i,i=i+16|0,c[l>>2]=o,c[l+8>>2]=f,l)|0)|0;i=l;H=30263400+(c[7565848]<<12)|0;I=Zj(H|0,46528)|0;if((I|0)!=0){F=18;break a}}if((bu(k,u,0,0,0)|0)>0){F=20;break a}}}while(0);o=c[u>>2]|0;if((o|0)==0){p=-1;F=34;break}else{u=o}}if((F|0)==18){kb(I|0)|0;TB(d,H,e);c[b>>2]=u;p=0;q=4096;r=0;s=4096;t=0;i=h;return p|0}else if((F|0)==20){c[b>>2]=u;p=2;q=4096;r=0;s=4096;t=0;i=h;return p|0}else if((F|0)==33){c[b>>2]=u;p=2;q=4096;r=0;s=4096;t=0;i=h;return p|0}else if((F|0)==34){q=4096;r=0;s=4096;t=0;i=h;return p|0}return 0}function eu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;if((c[5144096]|0)==0){Ur(0,181760,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}if((d|0)==0){g=0;i=e;return g|0}f=20492444+(d*288|0)|0;if((c[f>>2]|0)==0){g=fu(a,b,d)|0;i=e;return g|0}else{c[f>>2]=0;h=fu(a,b,d)|0;c[f>>2]=1;g=h;i=e;return g|0}return 0}function fu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;if((c[5144096]|0)==0){Ur(0,181760,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}if((d|0)==0){g=0;i=e;return g|0}c[5144098]=(c[5144098]|0)+b;h=20492416+(d*288|0)|0;if((c[20492440+(d*288|0)>>2]|0)!=0){g=LC(c[h>>2]|0,a,b)|0;i=e;return g|0}if((b|0)==0){g=0;i=e;return g|0}d=h|0;h=b;j=a;a=0;while(1){k=Dj(j|0,1,h|0,c[d>>2]|0)|0;if((k|0)==0){if((a|0)==0){l=1}else{m=9;break}}else if((k|0)==(-1|0)){m=10;break}else{l=a}if((h|0)==(k|0)){g=b;m=13;break}else{h=h-k|0;j=j+k|0;a=l}}if((m|0)==9){g=b-h|0;i=e;return g|0}else if((m|0)==10){Ur(0,116728,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}else if((m|0)==13){i=e;return g|0}return 0}function gu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;if((c[5144096]|0)==0){Ur(0,181760,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}if((d|0)==0){g=0;i=e;return g|0}if((d-1|0)>>>0>62>>>0){Ur(1,176696,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}if((c[20492440+(d*288|0)>>2]|0)==1){Ur(1,176136,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}h=c[20492416+(d*288|0)>>2]|0;if((h|0)==0){Ur(1,175720,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}a:do{if((b|0)!=0){j=b;k=a;l=0;while(1){m=Ad(k|0,1,j|0,h|0)|0;if((m|0)==0){if((l|0)==0){n=1}else{o=13;break}}else if((m|0)==(-1|0)){o=14;break}else{n=l}if((j|0)==(m|0)){break a}else{j=j-m|0;k=k+m|0;l=n}}if((o|0)==13){Sr(115448,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;g=0;i=e;return g|0}else if((o|0)==14){Sr(114144,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;g=0;i=e;return g|0}}}while(0);if((c[20492424+(d*288|0)>>2]|0)==0){g=b;i=e;return g|0}Yh(h|0)|0;g=b;i=e;return g|0}function hu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+4112|0;f=e|0;g=e+16|0;h=f;c[h>>2]=d;c[h+4>>2]=0;Xe(g|0,4096,b|0,f|0)|0;gu(g,o$(g|0)|0,a)|0;i=e;return}function iu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;i=i+65536|0;f=e|0;if((c[5144096]|0)==0){Ur(0,181760,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}h=20492416+(a*288|0)|0;j=20492444+(a*288|0)|0;if((c[j>>2]|0)!=0){c[j>>2]=0;k=iu(a,b,d)|0;c[j>>2]=1;l=k;i=e;return l|0}if((c[20492440+(a*288|0)>>2]|0)!=1){if((a-1|0)>>>0>62>>>0){Ur(1,176696,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}k=c[20492416+(a*288|0)>>2]|0;if((k|0)==0){Ur(1,175720,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}if((d|0)==1){m=2}else if((d|0)==2){m=0}else if((d|0)==0){m=1}else{Ur(0,113144,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}l=hf(k|0,b|0,m|0)|0;i=e;return l|0}m=f|0;f=MC(c[20492416+(a*288|0)>>2]|0)|0;do{if((b|0)<0){if((d|0)==1){n=(c[20492436+(a*288|0)>>2]|0)+b|0}else if((d|0)==0){n=f+b|0}else{n=0}o=(n|0)<0?0:n;p=13}else{if((d|0)==1){q=b-f+(c[20492436+(a*288|0)>>2]|0)|0;break}else if((d|0)==2){o=b;p=13;break}else if((d|0)==0){q=b;break}else{Ur(0,113144,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}}}while(0);do{if((p|0)==13){if((o|0)==(f|0)){l=b;i=e;return l|0}else{g=h;OC(c[g>>2]|0,c[20492432+(a*288|0)>>2]|0)|0;KC(c[g>>2]|0)|0;q=o;break}}}while(0);if((q|0)>65536){o=q-65537&-65536;h=q;do{fu(m,65536,a)|0;h=h-65536|0;}while((h|0)>65536);r=q-65536-o|0}else{r=q}fu(m,r,a)|0;l=b;i=e;return l|0}function ju(a){a=a|0;var b=0,d=0;b=20492416+(a*288|0)|0;if((c[20492440+(a*288|0)>>2]|0)==1){d=MC(c[b>>2]|0)|0;return d|0}else{d=Ii(c[b>>2]|0)|0;return d|0}return 0}function ku(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;f=c[5144096]|0;if((f|0)==0){Ur(0,181760,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}if((b|0)==0){Ur(0,141960,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}g=a[b]|0;if((g<<24>>24|0)==47|(g<<24>>24|0)==92){h=b+1|0}else{h=b}if((ii(h|0,110392)|0)!=0){j=-1;i=e;return j|0}if((ii(h|0,100928)|0)==0){k=f}else{j=-1;i=e;return j|0}a:while(1){f=k+4|0;b=c[f>>2]|0;b:do{if((b|0)!=0){g=c[b+16404>>2]|0;l=a[h]|0;if(l<<24>>24==0){m=0;n=b}else{o=0;p=0;q=l;while(1){l=(t$(q<<24>>24|0)|0)&255;if((l<<24>>24|0)==92){r=47}else if((l<<24>>24|0)==46){s=p;break}else{r=l}l=(da(r<<24>>24,o+119|0)|0)+p|0;t=o+1|0;u=a[h+t|0]|0;if(u<<24>>24==0){s=l;break}else{o=t;p=l;q=u}}m=s;n=c[f>>2]|0}q=(m>>10^m^m>>20)&g-1;if((n|0)==0){break}if((c[(c[n+16408>>2]|0)+(q<<2)>>2]|0)==0){break}p=c[5144104]|0;c:do{if((p|0)!=0){if((p|0)<=0){break b}o=c[n+16388>>2]|0;u=0;while(1){l=u+1|0;if((o|0)==(c[20543616+(u<<2)>>2]|0)){break c}if((l|0)<(p|0)){u=l}else{break b}}}}while(0);if((Mt(n)|0)==0){break}v=c[f>>2]|0;p=c[(c[v+16408>>2]|0)+(q<<2)>>2]|0;do{g=h;u=c[p>>2]|0;while(1){o=a[u]|0;l=o<<24>>24;t=a[g]|0;w=t<<24>>24;x=(o-97&255)>>>0<26>>>0?l-32|0:l;l=(t-97&255)>>>0<26>>>0?w-32|0:w;if((x|0)==92|(x|0)==58){y=47}else{y=x}if((l|0)==92|(l|0)==58){z=47}else{z=l}if((y|0)!=(z|0)){break}if((y|0)==0){break a}else{g=g+1|0;u=u+1|0}}p=c[p+12>>2]|0;}while((p|0)!=0)}}while(0);f=c[k>>2]|0;if((f|0)==0){j=-1;A=35;break}else{k=f}}if((A|0)==35){i=e;return j|0}if((d|0)==0){j=1;i=e;return j|0}c[d>>2]=c[v+16392>>2];j=1;i=e;return j|0}function lu(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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=i;i=i+16|0;h=g|0;j=g+8|0;k=c[5144096]|0;if((k|0)==0){Ur(0,181760,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;return 0}if((b|0)==0){Ur(0,112200,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;return 0}if((a[b]|0)==0){Ur(0,112200,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;return 0}do{if((ii(b|0,134672)|0)==0){m=0}else{n=c[5457502]|0;if((n|0)==0){m=1;break}if((c[n+32>>2]|0)!=2){m=1;break}Tr(111448,(l=i,i=i+8|0,c[l>>2]=b,l)|0);i=l;if((fu(j,4,c[5457500]|0)|0)!=4){if((f|0)==0){o=-1;i=g;return o|0}c[f>>2]=0;o=-1;i=g;return o|0}n=c[j>>2]|0;p=(f|0)==0;if((n|0)==0){if(p){o=1;i=g;return o|0}c[f>>2]=0;o=-1;i=g;return o|0}if(p){o=n;i=g;return o|0}p=ss(n+1|0)|0;c[f>>2]=p;n=fu(p,c[j>>2]|0,c[5457500]|0)|0;if((n|0)!=(c[j>>2]|0)){Ur(0,110736,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;return 0}c[5144110]=(c[5144110]|0)+1;c[5144108]=(c[5144108]|0)+1;a[p+n|0]=0;o=c[j>>2]|0;i=g;return o|0}}while(0);do{if((d|0)==0){n=k;while(1){q=bu(b,n,h,0,0)|0;r=c[h>>2]|0;if(!((q|0)<0|(r|0)==0)){s=21;break}p=c[n>>2]|0;if((p|0)==0){s=23;break}else{n=p}}if((s|0)==21){c[j>>2]=q;if((f|0)==0){t=r;s=31;break}else{u=q;s=44;break}}else if((s|0)==23){c[h>>2]=0;c[j>>2]=-1;if((f|0)==0){break}else{s=26;break}}}else{n=bu(b,d,h,0,e)|0;p=c[h>>2]|0;c[j>>2]=n;v=(f|0)!=0;if((p|0)==0){if(v){s=26;break}else{break}}else{if(v){u=n;s=44;break}else{t=p;s=31;break}}}}while(0);if((s|0)==26){c[f>>2]=0}else if((s|0)==31){e=c[5457502]|0;do{if((m|0)!=0&(e|0)!=0){if((c[e+32>>2]|0)!=1){w=t;break}Tr(108264,(l=i,i=i+8|0,c[l>>2]=b,l)|0);i=l;gu(j,4,c[5457500]|0)|0;Yh(c[20492416+((c[5457500]|0)*288|0)>>2]|0)|0;w=c[h>>2]|0}else{w=t}}while(0);if((c[5144096]|0)==0){Ur(0,181760,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;return 0}t=20492416+(w*288|0)|0;if((c[20492440+(w*288|0)>>2]|0)==1){e=t;EC(c[e>>2]|0)|0;if((c[20492420+(w*288|0)>>2]|0)!=0){DC(c[e>>2]|0)|0}n$(t|0,0,288)|0}else{e=c[t>>2]|0;if((e|0)!=0){kb(e|0)|0}n$(t|0,0,288)|0}o=c[j>>2]|0;i=g;return o|0}else if((s|0)==44){c[5144110]=(c[5144110]|0)+1;c[5144108]=(c[5144108]|0)+1;s=ss(u+1|0)|0;c[f>>2]=s;fu(s,c[j>>2]|0,c[h>>2]|0)|0;a[s+(c[j>>2]|0)|0]=0;f=c[h>>2]|0;if((c[5144096]|0)==0){Ur(0,181760,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;return 0}h=20492416+(f*288|0)|0;if((c[20492440+(f*288|0)>>2]|0)==1){u=h;EC(c[u>>2]|0)|0;if((c[20492420+(f*288|0)>>2]|0)!=0){DC(c[u>>2]|0)|0}n$(h|0,0,288)|0}else{u=c[h>>2]|0;if((u|0)!=0){kb(u|0)|0}n$(h|0,0,288)|0}h=c[5457502]|0;do{if((m|0)!=0&(h|0)!=0){if((c[h+32>>2]|0)!=1){break}Tr(107392,(l=i,i=i+8|0,c[l>>2]=b,l)|0);i=l;gu(j,4,c[5457500]|0)|0;gu(s,c[j>>2]|0,c[5457500]|0)|0;Yh(c[20492416+((c[5457500]|0)*288|0)>>2]|0)|0}}while(0);o=c[j>>2]|0;i=g;return o|0}s=c[5457502]|0;if(!((m|0)!=0&(s|0)!=0)){o=-1;i=g;return o|0}if((c[s+32>>2]|0)!=1){o=-1;i=g;return o|0}Tr(109496,(l=i,i=i+8|0,c[l>>2]=b,l)|0);i=l;c[j>>2]=0;gu(j,4,c[5457500]|0)|0;Yh(c[20492416+((c[5457500]|0)*288|0)>>2]|0)|0;o=-1;i=g;return o|0}function mu(a,b){a=a|0;b=b|0;return lu(a,0,0,b)|0}function nu(a){a=a|0;var b=0,d=0;b=i;if((c[5144096]|0)==0){Ur(0,181760,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}if((a|0)==0){Ur(0,106448,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}c[5144108]=(c[5144108]|0)-1;ts(a);if((c[5144108]|0)!=0){i=b;return}us();i=b;return}function ou(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;if((c[5144096]|0)==0){Ur(0,181760,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}if((a|0)==0|(b|0)==0){Ur(0,105536,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}g=Zt(a)|0;if((g|0)==0){Sr(104752,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;i=e;return}gu(b,d,g)|0;if((c[5144096]|0)==0){Ur(0,181760,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}f=20492416+(g*288|0)|0;if((c[20492440+(g*288|0)>>2]|0)==1){d=f;EC(c[d>>2]|0)|0;if((c[20492420+(g*288|0)>>2]|0)!=0){DC(c[d>>2]|0)|0}n$(f|0,0,288)|0;i=e;return}else{d=c[f>>2]|0;if((d|0)!=0){kb(d|0)|0}n$(f|0,0,288)|0;i=e;return}}function pu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=qu(a,28378736)|0;if((b|0)==0){d=0;return d|0}a=c[b+16388>>2]|0;DC(c[b+16384>>2]|0)|0;es(c[b+16412>>2]|0);es(b|0);b=c[5144102]|0;if((b|0)>0){e=0}else{d=0;return d|0}while(1){f=e+1|0;if((a|0)==(c[20510848+(e<<2)>>2]|0)){d=1;g=5;break}if((f|0)<(b|0)){e=f}else{d=0;g=5;break}}if((g|0)==5){return d|0}return 0}function qu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0;e=i;i=i+344|0;f=e|0;g=e+8|0;h=e+264|0;j=g|0;k=CC(b)|0;if((FC(k,f)|0)!=0){l=0;m=80;n=0;o=256;p=0;i=e;return l|0}BC(k)|0;q=f|0;a:do{if((c[q>>2]|0)==0){r=0;s=0}else{f=0;t=0;while(1){if((GC(k,h,j,256,0,0,0,0)|0)!=0){break}u=t+1+(o$(j|0)|0)|0;IC(k)|0;v=f+1|0;w=c[q>>2]|0;if(v>>>0>>0){f=v;t=u}else{r=u;s=w;break a}}r=t;s=c[q>>2]|0}}while(0);f=gs((s<<4)+r|0)|0;r=f;s=c[q>>2]|0;w=f+(s<<4)|0;f=gs((s<<2)+4|0)|0;s=f;c[s>>2]=c[5145144];u=c[q>>2]|0;v=1;while(1){x=v<<1;if(v>>>0>u>>>0){y=v;break}if((x|0)<1025){v=x}else{y=x;break}}v=gs((y<<2)+16416|0)|0;u=v;x=v+16404|0;c[x>>2]=y;z=v+16416|0;A=v+16408|0;c[A>>2]=z;b:do{if((y|0)>0){B=0;C=z;while(1){c[C+(B<<2)>>2]=0;D=B+1|0;if((D|0)>=(y|0)){break b}B=D;C=c[A>>2]|0}}}while(0);TB(v+4096|0,b,4096);b=v+8192|0;TB(b,d,4096);d=o$(b|0)|0;do{if(d>>>0>4>>>0){if((VB(v+(d+8188)|0,151136)|0)!=0){break}a[v+((o$(b|0)|0)+8188)|0]=0}}while(0);c[v+16384>>2]=k;c[v+16396>>2]=c[q>>2];BC(k)|0;c:do{if((c[q>>2]|0)==0){E=1}else{b=h+28|0;d=h+20|0;y=0;z=1;C=w;while(1){if((GC(k,h,j,256,0,0,0,0)|0)!=0){E=z;break c}if((c[b>>2]|0)==0){F=z}else{c[s+(z<<2)>>2]=c[d>>2];F=z+1|0}lC(j)|0;B=c[x>>2]|0;t=a[j]|0;d:do{if(t<<24>>24==0){G=0}else{D=0;H=0;I=t;while(1){J=(t$(I<<24>>24|0)|0)&255;if((J<<24>>24|0)==92){K=47}else if((J<<24>>24|0)==46){G=H;break d}else{K=J}J=(da(K<<24>>24,D+119|0)|0)+H|0;L=D+1|0;M=a[g+L|0]|0;if(M<<24>>24==0){G=J;break}else{D=L;H=J;I=M}}}}while(0);t=(G>>10^G^G>>20)&B-1;I=r+(y<<4)|0;c[I>>2]=C;r$(C|0,j|0)|0;H=C+((o$(j|0)|0)+1)|0;c[r+(y<<4)+4>>2]=NC(k)|0;c[r+(y<<4)+8>>2]=c[b>>2];c[r+(y<<4)+12>>2]=c[(c[A>>2]|0)+(t<<2)>>2];c[(c[A>>2]|0)+(t<<2)>>2]=I;IC(k)|0;I=y+1|0;if(I>>>0<(c[q>>2]|0)>>>0){y=I;z=F;C=H}else{E=F;break}}}}while(0);F=E<<2;c[v+16388>>2]=cv(f+4|0,F-4|0)|0;c[v+16392>>2]=cv(f,F)|0;es(f);c[v+16412>>2]=r;l=u;m=80;n=0;o=256;p=0;i=e;return l|0}function ru(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=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,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;h=i;i=i+20480|0;j=h|0;k=h+4096|0;l=k;m=i;i=i+256|0;n=i;i=i+4|0;i=i+7&-8;o=m|0;if((c[5144096]|0)==0){Ur(0,181760,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;return 0}if((b|0)==0){c[f>>2]=0;q=0;r=256;s=0;t=16384;u=0;i=h;return q|0}v=(d|0)==0?28378736:d;d=o$(b|0)|0;w=d-1|0;x=a[b+w|0]|0;if((x<<24>>24|0)==92|(x<<24>>24|0)==47){y=w}else{y=d}d=o$(v|0)|0;a[o]=0;w=0;x=0;z=0;while(1){A=a[b+x|0]|0;if((A<<24>>24|0)==0){break}else if((A<<24>>24|0)==47|(A<<24>>24|0)==92){B=w+1|0;C=x}else{B=w;C=z}w=B;x=x+1|0;z=C}r$(o|0,b|0)|0;a[m+z|0]=0;z=c[5144096]|0;if((z|0)==0){c[f>>2]=0;q=0;r=256;s=0;t=16384;u=0;i=h;return q|0}C=(g|0)==0;g=j|0;j=(e|0)==0;x=(y|0)==0?0:y+1|0;B=0;A=z;while(1){z=A+4|0;D=c[z>>2]|0;a:do{if((D|0)==0){E=c[A+8>>2]|0;if((E|0)==0){F=B;break}if((c[5144104]|0)!=0&C){F=B;break}G=E+8192|0;c[7565848]=c[7565848]^1;$B(g,4096,131760,(p=i,i=i+16|0,c[p>>2]=(a[G]|0)==0?20576464:G,c[p+8>>2]=b,p)|0)|0;i=p;G=0;H=g;b:while(1){I=a[H]|0;do{if((I<<24>>24|0)==47|(I<<24>>24|0)==92){if((G|0)==0){a[H]=47;J=1;break}else{s$(H|0,H+1|0,o$(H|0)|0)|0;J=G;break}}else if((I<<24>>24|0)==0){break b}else{J=0}}while(0);G=J;H=H+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(p=i,i=i+16|0,c[p>>2]=E,c[p+8>>2]=g,p)|0)|0;i=p;H=gf(30263400+(c[7565848]<<12)|0,v|0,e|0,n|0,0)|0;if((c[n>>2]|0)>0){G=0;I=B;while(1){K=c[H+(G<<2)>>2]|0;c:do{if((I|0)==4095){L=4095}else{if((I|0)>0){M=0;while(1){N=M+1|0;if((VB(K,c[k+(M<<2)>>2]|0)|0)==0){L=I;break c}if((N|0)<(I|0)){M=N}else{break}}}c[k+(I<<2)>>2]=is(K)|0;L=I+1|0}}while(0);K=G+1|0;if((K|0)<(c[n>>2]|0)){G=K;I=L}else{O=L;break}}}else{O=B}Xi(H|0);F=O}else{I=c[5144104]|0;d:do{if((I|0)!=0){if((I|0)<=0){F=B;break a}G=c[D+16388>>2]|0;E=0;while(1){K=E+1|0;if((G|0)==(c[20543616+(E<<2)>>2]|0)){break d}if((K|0)<(I|0)){E=K}else{F=B;break a}}}}while(0);if((Mt(D)|0)==0){F=B;break}I=c[z>>2]|0;H=c[I+16412>>2]|0;E=I+16396|0;if((c[E>>2]|0)>0){P=0;Q=B}else{F=B;break}while(1){I=c[H+(P<<4)>>2]|0;e:do{if(j){a[o]=0;G=0;K=0;M=0;while(1){N=a[I+K|0]|0;if((N<<24>>24|0)==0){break}else if((N<<24>>24|0)==47|(N<<24>>24|0)==92){R=G+1|0;S=K}else{R=G;S=M}G=R;K=K+1|0;M=S}r$(o|0,I|0)|0;a[m+M|0]=0;if((G-w|0)>2|(y|0)>(M|0)){T=Q;break}if((jC(I,b,y)|0)!=0){T=Q;break}K=o$(I|0)|0;if((K|0)<(d|0)){T=Q;break}if((VB(I+(K-d)|0,v)|0)!=0){T=Q;break}K=I+x|0;if((Q|0)==4095){T=4095;break}if((Q|0)>0){N=0;while(1){U=N+1|0;if((VB(K,c[k+(N<<2)>>2]|0)|0)==0){T=Q;break e}if((U|0)<(Q|0)){N=U}else{break}}}c[k+(Q<<2)>>2]=is(K)|0;T=Q+1|0}else{if((bs(e,I,0)|0)==0){T=Q;break}if((Q|0)==4095){T=4095;break}if((Q|0)>0){N=0;while(1){M=N+1|0;if((VB(I,c[k+(N<<2)>>2]|0)|0)==0){T=Q;break e}if((M|0)<(Q|0)){N=M}else{break}}}c[k+(Q<<2)>>2]=is(I)|0;T=Q+1|0}}while(0);I=P+1|0;if((I|0)<(c[E>>2]|0)){P=I;Q=T}else{F=T;break}}}}while(0);z=c[A>>2]|0;if((z|0)==0){break}else{B=F;A=z}}c[f>>2]=F;if((F|0)==0){q=0;r=256;s=0;t=16384;u=0;i=h;return q|0}f=F<<2;A=gs(f+4|0)|0;B=A;if((F|0)>0){m$(A|0,l|0,f)|0;V=F}else{V=0}c[B+(V<<2)>>2]=0;q=B;r=256;s=0;t=16384;u=0;i=h;return q|0}function su(a,b,c){a=a|0;b=b|0;c=c|0;return ru(a,b,0,c,0)|0}function tu(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if((c[5144096]|0)==0){Ur(0,181760,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}if((a|0)==0){i=b;return}d=c[a>>2]|0;if((d|0)!=0){e=0;f=d;do{es(f);e=e+1|0;f=c[a+(e<<2)>>2]|0;}while((f|0)!=0)}es(a);i=b;return}function uu(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;i=i+8|0;h=g|0;a[e]=0;c[h>>2]=0;if((VB(b,103752)|0)==0){j=vu(e,f)|0;i=g;return j|0}k=ru(b,d,0,h,0)|0;d=c[h>>2]|0;a:do{if((d|0)>0){b=e;l=0;m=0;while(1){n=c[k+(l<<2)>>2]|0;o=(o$(n|0)|0)+1|0;p=o+m|0;if((p+1|0)>=(f|0)){break}r$(b|0,n|0)|0;n=l+1|0;if((n|0)<(d|0)){b=b+o|0;l=n;m=p}else{q=d;break a}}c[h>>2]=l;q=l}else{q=d}}while(0);if((c[5144096]|0)==0){Ur(0,181760,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;return 0}if((k|0)==0){j=q;i=g;return j|0}d=c[k>>2]|0;if((d|0)!=0){h=0;f=d;do{es(f);h=h+1|0;f=c[k+(h<<2)>>2]|0;}while((f|0)!=0)}es(k);j=q;i=g;return j|0}function vu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;e=i;i=i+8216|0;f=e|0;g=e+4096|0;h=e+4104|0;j=e+8200|0;k=e+8208|0;l=h|0;a[b]=0;m=gf(c[(c[5144112]|0)+4>>2]|0,0,0,k|0,1)|0;n=gf(c[(c[5145148]|0)+4>>2]|0,0,0,k|0,1)|0;do{if((m|0)==0){o=0}else{if((c[m>>2]|0)==0){o=0;break}else{p=m;q=0}while(1){k=p+4|0;r=q+1|0;if((c[k>>2]|0)==0){o=r;break}else{p=k;q=r}}}}while(0);do{if((n|0)==0){s=0}else{if((c[n>>2]|0)==0){s=0;break}else{t=n;u=0}while(1){q=t+4|0;p=u+1|0;if((c[q>>2]|0)==0){s=p;break}else{t=q;u=p}}}}while(0);u=gs((s+o<<2)+4|0)|0;o=u;s=(m|0)!=0;do{if(s){t=c[m>>2]|0;if((t|0)==0){v=o;break}else{w=o;x=m;y=t}while(1){c[w>>2]=y;t=x+4|0;p=w+4|0;q=c[t>>2]|0;if((q|0)==0){v=p;break}else{w=p;x=t;y=q}}}else{v=o}}while(0);y=(n|0)!=0;do{if(y){x=c[n>>2]|0;if((x|0)==0){z=v;break}else{A=v;B=n;C=x}while(1){c[A>>2]=C;x=B+4|0;w=A+4|0;q=c[x>>2]|0;if((q|0)==0){z=w;break}else{A=w;B=x;C=q}}}else{z=v}}while(0);c[z>>2]=0;if(s){es(m)}if(y){es(n)}if((u|0)==0){D=0;Xi(o|0);E=4096;F=0;i=e;return D|0}if((c[o>>2]|0)==0){D=0;Xi(o|0);E=4096;F=0;i=e;return D|0}else{G=o;H=0}while(1){u=G+4|0;I=H+1|0;if((c[u>>2]|0)==0){break}else{G=u;H=I}}if(!((H|0)>-1)){D=0;Xi(o|0);E=4096;F=0;i=e;return D|0}H=f|0;f=0;G=0;u=0;n=0;y=b;a:while(1){b=c[o+(G<<2)>>2]|0;b:do{if((G|0)==0){if((u|0)==0){J=27}else{K=y;L=n;M=f;N=u}}else{if((G|0)>0){O=0}else{J=27;break}while(1){m=O+1|0;if((VB(c[o+(O<<2)>>2]|0,b)|0)==0){K=y;L=n;M=f;N=1;break b}if((m|0)<(G|0)){O=m}else{J=27;break}}}}while(0);do{if((J|0)==27){J=0;if((VB(b,c[(c[5458848]|0)+4>>2]|0)|0)==0){K=y;L=n;M=f;N=0;break}if((jC(b,102944,1)|0)==0){K=y;L=n;M=f;N=0;break}m=c[(c[5145148]|0)+4>>2]|0;c[7565848]=c[7565848]^1;s=(b|0)==0;if(s){J=31}else{if((a[b]|0)==0){J=31}else{P=b}}if((J|0)==31){J=0;P=20576464}$B(H,4096,131760,(Q=i,i=i+16|0,c[Q>>2]=P,c[Q+8>>2]=28378736,Q)|0)|0;i=Q;z=0;v=H;c:while(1){C=a[v]|0;do{if((C<<24>>24|0)==47|(C<<24>>24|0)==92){if((z|0)==0){a[v]=47;R=1;break}else{s$(v|0,v+1|0,o$(v|0)|0)|0;R=z;break}}else if((C<<24>>24|0)==0){break c}else{R=0}}while(0);z=R;v=v+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(Q=i,i=i+16|0,c[Q>>2]=m,c[Q+8>>2]=H,Q)|0)|0;i=Q;v=30263400+(c[7565848]<<12)|0;c[g>>2]=0;Xi(gf(v|0,151136,0,g|0,0)|0);if((c[g>>2]|0)<1){v=c[(c[5144112]|0)+4>>2]|0;c[7565848]=c[7565848]^1;if(s){J=41}else{if((a[b]|0)==0){J=41}else{S=b}}if((J|0)==41){J=0;S=20576464}$B(H,4096,131760,(Q=i,i=i+16|0,c[Q>>2]=S,c[Q+8>>2]=28378736,Q)|0)|0;i=Q;z=0;C=H;d:while(1){B=a[C]|0;do{if((B<<24>>24|0)==0){break d}else if((B<<24>>24|0)==47|(B<<24>>24|0)==92){if((z|0)==0){a[C]=47;T=1;break}else{s$(C|0,C+1|0,o$(C|0)|0)|0;T=z;break}}else{T=0}}while(0);z=T;C=C+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(Q=i,i=i+16|0,c[Q>>2]=v,c[Q+8>>2]=H,Q)|0)|0;i=Q;C=30263400+(c[7565848]<<12)|0;c[g>>2]=0;Xi(gf(C|0,151136,0,g|0,0)|0);if((c[g>>2]|0)<=0){K=y;L=n;M=f;N=0;break}}C=(o$(b|0)|0)+1|0;a[l]=0;r$(l|0,b|0)|0;m$(h+(o$(l|0)|0)|0,102064,17)|0;do{if((Wt(l,j)|0)>0){z=c[j>>2]|0;if((z|0)==0){J=68;break}if((z-1|0)>>>0>62>>>0){J=52;break a}s=20492440+(z*288|0)|0;if((c[s>>2]|0)==1){J=54;break a}m=c[20492416+(z*288|0)>>2]|0;if((m|0)==0){J=56;break a}n$(l|0,0,4096)|0;B=Dj(l|0,1,48,m|0)|0;if((B|0)>-1){a[h+B|0]=0}if((c[5144096]|0)==0){J=60;break a}B=20492416+(z*288|0)|0;if((c[s>>2]|0)==1){s=B;EC(c[s>>2]|0)|0;if((c[20492420+(z*288|0)>>2]|0)!=0){DC(c[s>>2]|0)|0}n$(B|0,0,288)|0;break}else{s=c[B>>2]|0;if((s|0)!=0){kb(s|0)|0}n$(B|0,0,288)|0;break}}else{J=68}}while(0);if((J|0)==68){J=0;r$(l|0,b|0)|0}v=(o$(l|0)|0)+1|0;if((f+2+C+v|0)>=(d|0)){D=n;J=72;break a}r$(y|0,b|0)|0;r$(y+C|0,l|0)|0;K=y+(v+C)|0;L=n+1|0;M=C+f+v|0;N=0}}while(0);b=G+1|0;if((b|0)<(I|0)){f=M;G=b;u=N;n=L;y=K}else{D=L;J=72;break}}if((J|0)==52){Ur(1,176696,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;return 0}else if((J|0)==54){Ur(1,176136,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;return 0}else if((J|0)==56){Ur(1,175720,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;return 0}else if((J|0)==60){Ur(0,181760,(Q=i,i=i+1|0,i=i+7&-8,c[Q>>2]=0,Q)|0);i=Q;return 0}else if((J|0)==72){Xi(o|0);E=4096;F=0;i=e;return D|0}return 0}function wu(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0;a=i;i=i+8|0;b=a|0;do{if((nr()|0)>=2){if((nr()|0)>3){break}d=(nr()|0)==2;e=or(1)|0;if(d){f=28378736}else{f=or(2)|0}Sr(100088,(g=i,i=i+16|0,c[g>>2]=e,c[g+8>>2]=f,g)|0);i=g;Sr(98968,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;d=ru(e,f,0,b,0)|0;e=c[b>>2]|0;if((e|0)>0){h=0;do{Sr(64056,(g=i,i=i+8|0,c[g>>2]=c[d+(h<<2)>>2],g)|0);i=g;h=h+1|0;}while((h|0)<(e|0))}if((c[5144096]|0)==0){Ur(0,181760,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}if((d|0)==0){i=a;return}e=c[d>>2]|0;if((e|0)!=0){h=0;j=e;do{es(j);h=h+1|0;j=c[d+(h<<2)>>2]|0;}while((j|0)!=0)}es(d);i=a;return}}while(0);Sr(101256,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;i=a;return}function xu(b,d){b=b|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,q=0,r=0,s=0,t=0,u=0;e=d<<2;f=gs(e+4|0)|0;g=f;c[g>>2]=0;if((d|0)>0){h=0}else{i=b;m$(i|0,f|0,e)|0;es(f);return}do{a:do{if((h|0)>0){j=c[b+(h<<2)>>2]|0;k=0;while(1){l=c[g+(k<<2)>>2]|0;m=j;while(1){n=a[m]|0;o=n<<24>>24;p=a[l]|0;q=p<<24>>24;r=(n-97&255)>>>0<26>>>0?o-32|0:o;o=(p-97&255)>>>0<26>>>0?q-32|0:q;if((r|0)==92|(r|0)==58){s=47}else{s=r}if((o|0)==92|(o|0)==58){t=47}else{t=o}if((s|0)<(t|0)){u=k;break a}if((s|0)>(t|0)|(s|0)==0){break}else{l=l+1|0;m=m+1|0}}m=k+1|0;if((m|0)<(h|0)){k=m}else{u=m;break}}}else{u=0}}while(0);if((h|0)>(u|0)){k=h;while(1){j=k-1|0;c[g+(k<<2)>>2]=c[g+(j<<2)>>2];if((j|0)>(u|0)){k=j}else{break}}}c[g+(u<<2)>>2]=c[b+(h<<2)>>2];h=h+1|0;}while((h|0)<(d|0));i=b;m$(i|0,f|0,e)|0;es(f);return}function yu(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;b=i;i=i+8|0;d=b|0;if((nr()|0)<2){Sr(63160,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;Sr(62232,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=b;return}f=or(1)|0;Sr(98968,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;g=ru(28378736,28378736,f,d,0)|0;f=c[d>>2]|0;xu(g,f);if((f|0)>0){h=0;while(1){j=g+(h<<2)|0;k=c[j>>2]|0;while(1){l=a[k]|0;if((l<<24>>24|0)==0){break}else if((l<<24>>24|0)==92|(l<<24>>24|0)==58){a[k]=47}k=k+1|0}Sr(64056,(e=i,i=i+8|0,c[e>>2]=c[j>>2],e)|0);i=e;k=h+1|0;l=c[d>>2]|0;if((k|0)<(l|0)){h=k}else{m=l;break}}}else{m=f}Sr(61400,(e=i,i=i+8|0,c[e>>2]=m,e)|0);i=e;if((c[5144096]|0)==0){Ur(0,181760,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}if((g|0)==0){i=b;return}e=c[g>>2]|0;if((e|0)!=0){m=0;f=e;do{es(f);m=m+1|0;f=c[g+(m<<2)>>2]|0;}while((f|0)!=0)}es(g);i=b;return}function zu(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;a=i;Sr(60688,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;d=c[5144096]|0;if((d|0)!=0){e=d;do{d=e+4|0;f=c[d>>2]|0;do{if((f|0)==0){g=c[e+8>>2]|0;Sr(56272,(b=i,i=i+24|0,c[b>>2]=g,c[b+8>>2]=47,c[b+16>>2]=g+8192,b)|0);i=b}else{g=c[f+16396>>2]|0;Sr(60008,(b=i,i=i+16|0,c[b>>2]=f+4096,c[b+8>>2]=g,b)|0);i=b;g=c[5144104]|0;a:do{if((g|0)!=0){b:do{if((g|0)>0){h=c[(c[d>>2]|0)+16388>>2]|0;j=0;while(1){k=j+1|0;if((h|0)==(c[20543616+(j<<2)>>2]|0)){break}if((k|0)<(g|0)){j=k}else{break b}}Sr(58880,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;break a}}while(0);Sr(59344,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}}while(0);if((Mt(c[d>>2]|0)|0)==0){Sr(57024,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;break}else{Sr(58032,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;break}}}while(0);e=c[e>>2]|0;}while((e|0)!=0)}Sr(55392,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;e=1;do{if((c[20492416+(e*288|0)>>2]|0)!=0){Sr(54536,(b=i,i=i+16|0,c[b>>2]=e,c[b+8>>2]=20492448+(e*288|0),b)|0);i=b}e=e+1|0;}while((e|0)<64);i=a;return}function Au(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0;a=i;i=i+8|0;b=a|0;if((nr()|0)!=2){Sr(53952,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=a;return}e=or(1)|0;f=c[5144096]|0;if((f|0)==0){Ur(0,181760,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}else{g=f}while(1){if((bu(e,g,b,0,0)|0)>-1){h=c[b>>2]|0;if((h|0)!=0){break}}f=c[g>>2]|0;if((f|0)==0){j=8;break}else{g=f}}if((j|0)==8){c[b>>2]=0;i=a;return}if((c[5144096]|0)==0){Ur(0,181760,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}d=20492416+(h*288|0)|0;if((c[20492440+(h*288|0)>>2]|0)==1){b=d;EC(c[b>>2]|0)|0;if((c[20492420+(h*288|0)>>2]|0)!=0){DC(c[b>>2]|0)|0}n$(d|0,0,288)|0;i=a;return}else{b=c[d>>2]|0;if((b|0)!=0){kb(b|0)|0}n$(d|0,0,288)|0;i=a;return}}function Bu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;if((bu(a,b,0,0,0)|0)<=0){e=0;i=d;return e|0}f=c[b+4>>2]|0;if((f|0)!=0){Sr(53464,(g=i,i=i+16|0,c[g>>2]=a,c[g+8>>2]=f+4096,g)|0);i=g;e=1;i=d;return e|0}f=c[b+8>>2]|0;if((f|0)==0){e=0;i=d;return e|0}Sr(53048,(g=i,i=i+16|0,c[g>>2]=a,c[g+8>>2]=f+4096,g)|0);i=g;e=1;i=d;return e|0}function Cu(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;d=or(1)|0;e=a[d]|0;if((e<<24>>24|0)==0){Sr(52488,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=b;return}else if((e<<24>>24|0)==47|(e<<24>>24|0)==92){g=d+1|0}else{g=d}d=c[5144096]|0;a:do{if((d|0)!=0){e=d;while(1){if((bu(g,e,0,0,0)|0)>0){h=c[e+4>>2]|0;if((h|0)!=0){j=7;break}k=c[e+8>>2]|0;if((k|0)!=0){j=9;break}}e=c[e>>2]|0;if((e|0)==0){break a}}if((j|0)==7){Sr(53464,(f=i,i=i+16|0,c[f>>2]=g,c[f+8>>2]=h+4096,f)|0);i=f;i=b;return}else if((j|0)==9){Sr(53048,(f=i,i=i+16|0,c[f>>2]=g,c[f+8>>2]=k+4096,f)|0);i=f;i=b;return}}}while(0);Sr(52056,(f=i,i=i+8|0,c[f>>2]=g,f)|0);i=f;i=b;return}function Du(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0;e=i;i=i+8216|0;f=e|0;g=e+4096|0;h=e+8200|0;j=e+8208|0;k=g|0;l=c[5144096]|0;a:do{if((l|0)!=0){m=l;b:while(1){n=m+8|0;o=c[n>>2]|0;do{if((o|0)!=0){if((VB(o|0,b)|0)!=0){break}if((VB((c[n>>2]|0)+8192|0,d)|0)==0){break b}}}while(0);m=c[m>>2]|0;if((m|0)==0){break a}}p=4097;q=0;i=e;return}}while(0);TB(20576464,d,4096);l=f|0;c[7565848]=c[7565848]^1;f=(d|0)==0;if(f){r=8}else{if((a[d]|0)==0){r=8}else{s=d}}if((r|0)==8){s=20576464}$B(l,4096,131760,(m=i,i=i+16|0,c[m>>2]=s,c[m+8>>2]=28378736,m)|0)|0;i=m;s=0;n=l;c:while(1){o=a[n]|0;do{if((o<<24>>24|0)==47|(o<<24>>24|0)==92){if((s|0)==0){a[n]=47;t=1;break}else{s$(n|0,n+1|0,o$(n|0)|0)|0;t=s;break}}else if((o<<24>>24|0)==0){break c}else{t=0}}while(0);s=t;n=n+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(m=i,i=i+16|0,c[m>>2]=b,c[m+8>>2]=l,m)|0)|0;i=m;TB(k,30263400+(c[7565848]<<12)|0,4097);a[g+((o$(k|0)|0)-1)|0]=0;g=gf(k|0,151136,0,h|0,0)|0;Ie(g|0,c[h>>2]|0,4,68);if((c[5144104]|0)==0){n=gf(k|0,51384,0,j|0,0)|0;Ie(n|0,c[j>>2]|0,4,68);u=n}else{c[j>>2]=0;u=0}n=0;t=0;d:while(1){s=g+(t<<2)|0;o=n;e:while(1){v=(o|0)<(c[j>>2]|0);if((t|0)<(c[h>>2]|0)){if(!v){r=31;break}w=c[s>>2]|0;x=c[u+(o<<2)>>2]|0;y=x;z=w;while(1){A=a[z]|0;B=A<<24>>24;C=a[y]|0;D=C<<24>>24;E=(A-97&255)>>>0<26>>>0?B-32|0:B;B=(C-97&255)>>>0<26>>>0?D-32|0:D;if((E|0)==92|(E|0)==58){F=47}else{F=E}if((B|0)==92|(B|0)==58){G=47}else{G=B}if((F|0)<(G|0)){H=w;break e}if((F|0)>(G|0)|(F|0)==0){I=x;break}else{y=y+1|0;z=z+1|0}}}else{if(!v){break d}I=c[u+(o<<2)>>2]|0}z=u+(o<<2)|0;y=o$(I|0)|0;do{if((y|0)>=7){if((VB(I+(y-7)|0,50608)|0)!=0){break}x=c[z>>2]|0;c[7565848]=c[7565848]^1;if(f){r=49}else{if((a[d]|0)==0){r=49}else{J=d}}if((r|0)==49){r=0;J=20576464}$B(l,4096,131760,(m=i,i=i+16|0,c[m>>2]=J,c[m+8>>2]=x,m)|0)|0;i=m;x=0;w=l;f:while(1){B=a[w]|0;do{if((B<<24>>24|0)==47|(B<<24>>24|0)==92){if((x|0)==0){a[w]=47;K=1;break}else{s$(w|0,w+1|0,o$(w|0)|0)|0;K=x;break}}else if((B<<24>>24|0)==0){break f}else{K=0}}while(0);x=K;w=w+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(m=i,i=i+16|0,c[m>>2]=b,c[m+8>>2]=l,m)|0)|0;i=m;w=30263400+(c[7565848]<<12)|0;x=gs(12)|0;B=gs(12288)|0;E=x+8|0;c[E>>2]=B;TB(B,k,4096);TB((c[E>>2]|0)+4096|0,w,4096);TB((c[E>>2]|0)+8192|0,c[z>>2]|0,4096);c[x>>2]=c[5144096];c[5144096]=x}}while(0);o=o+1|0}if((r|0)==31){r=0;H=c[s>>2]|0}c[7565848]=c[7565848]^1;if(f){r=34}else{if((a[d]|0)==0){r=34}else{L=d}}if((r|0)==34){r=0;L=20576464}$B(l,4096,131760,(m=i,i=i+16|0,c[m>>2]=L,c[m+8>>2]=H,m)|0)|0;i=m;z=0;y=l;g:while(1){v=a[y]|0;do{if((v<<24>>24|0)==47|(v<<24>>24|0)==92){if((z|0)==0){a[y]=47;M=1;break}else{s$(y|0,y+1|0,o$(y|0)|0)|0;M=z;break}}else if((v<<24>>24|0)==0){break g}else{M=0}}while(0);z=M;y=y+1|0}$B(30263400+(c[7565848]<<12)|0,4096,121104,(m=i,i=i+16|0,c[m>>2]=b,c[m+8>>2]=l,m)|0)|0;i=m;y=qu(30263400+(c[7565848]<<12)|0,c[s>>2]|0)|0;if((y|0)!=0){TB(y|0,k,4096);TB(y+12288|0,d,4096);c[5144100]=(c[5144100]|0)+(c[y+16396>>2]|0);z=gs(12)|0;c[z+4>>2]=y;c[z>>2]=c[5144096];c[5144096]=z}n=o;t=t+1|0}Xi(g|0);Xi(u|0);u=gs(12)|0;g=gs(12288)|0;t=u+8|0;c[t>>2]=g;TB(g,b,4096);TB((c[t>>2]|0)+4096|0,k,4096);TB((c[t>>2]|0)+8192|0,d,4096);c[u>>2]=c[5144096];c[5144096]=u;p=4097;q=0;i=e;return}function Eu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[d>>2]|0;d=c[b>>2]|0;while(1){b=a[d]|0;f=b<<24>>24;g=a[e]|0;h=g<<24>>24;i=(b-97&255)>>>0<26>>>0?f-32|0:f;f=(g-97&255)>>>0<26>>>0?h-32|0:h;if((i|0)==92|(i|0)==58){j=47}else{j=i}if((f|0)==92|(f|0)==58){k=47}else{k=f}if((j|0)<(k|0)){l=-1;m=9;break}if((j|0)>(k|0)){l=1;m=9;break}if((j|0)==0){l=0;m=9;break}else{e=e+1|0;d=d+1|0}}if((m|0)==9){return l|0}return 0}function Fu(a){a=a|0;if((ii(a|0,49032)|0)==0){return(ii(a|0,48544)|0)!=0|0}else{return 1}return 0}function Gu(a,b){a=a|0;b=b|0;var d=0;b=c[a>>2]|0;d=c[b>>2]|0;if((b|0)!=0){W_(b)}W_(a);c[6924866]=(c[6924866]|0)-1;hk[c[d+4>>2]&255](d,0);return}function Hu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;a=i;d=0;a:do{do{if((c[20492428+(d*288|0)>>2]|0)!=0){if((c[5144096]|0)==0){e=4;break a}f=20492416+(d*288|0)|0;if((c[20492440+(d*288|0)>>2]|0)==1){g=f;EC(c[g>>2]|0)|0;if((c[20492420+(d*288|0)>>2]|0)!=0){DC(c[g>>2]|0)|0}n$(f|0,0,288)|0;break}else{g=c[f>>2]|0;if((g|0)!=0){kb(g|0)|0}n$(f|0,0,288)|0;break}}}while(0);d=d+1|0;}while((d|0)<64);if((e|0)==4){Ur(0,181760,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}e=c[5144096]|0;if((e|0)==0){c[5144096]=0;Ir(46184);Ir(45592);Ir(45048);Ir(44640);Ir(44296);h=Pr(146,4)|0;j=h|0;k=c[j>>2]|0;l=k;c[l>>2]=b;Fg(h|0);i=a;return}else{m=e}while(1){e=c[m>>2]|0;d=c[m+4>>2]|0;if((d|0)!=0){DC(c[d+16384>>2]|0)|0;es(c[d+16412>>2]|0);es(d|0)}d=c[m+8>>2]|0;if((d|0)!=0){es(d|0)}es(m);if((e|0)==0){break}else{m=e}}c[5144096]=0;Ir(46184);Ir(45592);Ir(45048);Ir(44640);Ir(44296);h=Pr(146,4)|0;j=h|0;k=c[j>>2]|0;l=k;c[l>>2]=b;Fg(h|0);i=a;return}function Iu(){var b=0,d=0,e=0,f=0,g=0;b=i;a[30255200]=0;d=c[5144096]|0;if((d|0)==0){i=b;return 30255200}else{e=d}do{d=c[e+4>>2]|0;if((d|0)!=0){f=pC(43840,(g=i,i=i+8|0,c[g>>2]=c[d+16388>>2],g)|0)|0;i=g;XB(30255200,8192,f)}e=c[e>>2]|0;}while((e|0)!=0);i=b;return 30255200}function Ju(){var b=0,d=0,e=0,f=0;a[30247008]=0;b=c[5144096]|0;if((b|0)==0){return 30247008}else{d=b}do{b=d+4|0;e=c[b>>2]|0;if((e|0)!=0){if((a[30247008]|0)==0){f=e}else{XB(30247008,8192,43512);f=c[b>>2]|0}XB(30247008,8192,f+8192|0)}d=c[d>>2]|0;}while((d|0)!=0);return 30247008}function Ku(){var b=0,d=0,e=0,f=0,g=0;b=i;a[30238816]=0;d=c[5144096]|0;if((d|0)==0){i=b;return 30238816}else{e=d}do{d=c[e+4>>2]|0;if((d|0)!=0){f=pC(43840,(g=i,i=i+8|0,c[g>>2]=c[d+16392>>2],g)|0)|0;i=g;XB(30238816,8192,f)}e=c[e>>2]|0;}while((e|0)!=0);i=b;return 30238816}function Lu(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;a[30230624]=0;d=c[5144096]|0;if((d|0)==0){i=b;return 30230624}else{e=d}do{d=e+4|0;f=c[d>>2]|0;do{if((f|0)!=0){if((c[f+16400>>2]|0)==0){g=c[(c[5458848]|0)+4>>2]|0;if((jC(f+12288|0,g,o$(g|0)|0)|0)==0){break}h=c[d>>2]|0}else{h=f}g=pC(43840,(j=i,i=i+8|0,c[j>>2]=c[h+16388>>2],j)|0)|0;i=j;XB(30230624,8192,g)}}while(0);e=c[e>>2]|0;}while((e|0)!=0);i=b;return 30230624}function Mu(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;b=i;a[30214240]=0;d=4;e=0;f=c[5145144]|0;while(1){if((d&1|0)!=0){a[(o$(30214240)|0)+30214241|0]=0;a[(o$(30214240)|0)+30214242|0]=0;a[30214240+(o$(30214240)|0)|0]=64;a[30214240+(o$(30214240)|0)|0]=32}g=c[5144096]|0;a:do{if((g|0)==0){h=e;j=f}else{if((d&6|0)==0){k=e;l=f;m=g;while(1){n=m+4|0;o=c[n>>2]|0;do{if((o|0)==0){p=l;q=k}else{if((c[o+16400>>2]&d|0)==0){p=l;q=k;break}r=pC(43840,(s=i,i=i+8|0,c[s>>2]=c[o+16392>>2],s)|0)|0;i=s;XB(30214240,8192,r);p=c[(c[n>>2]|0)+16392>>2]^l;q=k+1|0}}while(0);n=c[m>>2]|0;if((n|0)==0){h=q;j=p;break}else{k=q;l=p;m=n}}}else{m=g;while(1){t=c[m+4>>2]|0;if((t|0)!=0){if((c[t+16400>>2]&d|0)!=0){break}}l=c[m>>2]|0;if((l|0)==0){h=e;j=f;break a}else{m=l}}m=pC(43840,(s=i,i=i+8|0,c[s>>2]=c[t+16392>>2],s)|0)|0;i=s;XB(30214240,8192,m);h=e;j=f;break}}}while(0);g=d>>1;if((g|0)==0){break}else{d=g;e=h;f=j}}f=pC(43840,(s=i,i=i+8|0,c[s>>2]=j^h,s)|0)|0;i=s;XB(30214240,8192,f);i=b;return 30214240}function Nu(){var b=0,d=0,e=0,f=0;a[30222432]=0;b=c[5144096]|0;if((b|0)==0){return 30222432}else{d=b}do{b=d+4|0;e=c[b>>2]|0;do{if((e|0)!=0){if((c[e+16400>>2]|0)==0){f=c[(c[5458848]|0)+4>>2]|0;if((jC(e+12288|0,f,o$(f|0)|0)|0)==0){break}}if((a[30222432]|0)!=0){XB(30222432,8192,43512)}XB(30222432,8192,(c[b>>2]|0)+12288|0);XB(30222432,8192,51384);XB(30222432,8192,(c[b>>2]|0)+8192|0)}}while(0);d=c[d>>2]|0;}while((d|0)!=0);return 30222432}function Ou(a){a=a|0;var b=0,d=0,e=0;b=c[5144096]|0;if((b|0)==0){return}d=(a|0)!=0?~a:0;a=b;do{b=c[a+4>>2]|0;if((b|0)!=0){e=b+16400|0;c[e>>2]=c[e>>2]&d}a=c[a>>2]|0;}while((a|0)!=0);return}function Pu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;Dr(b);b=nr()|0;f=(b|0)>4096?4096:b;c[5144104]=f;b=(f|0)>0;if(b){g=0;do{c[20543616+(g<<2)>>2]=oj(or(g)|0)|0;g=g+1|0;}while((g|0)<(f|0));h=c[5144104]|0}else{h=f}if((h|0)!=0){Tr(43224,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}if(b){b=0;do{h=2056e4+(b<<2)|0;g=c[h>>2]|0;if((g|0)!=0){es(g)}c[h>>2]=0;b=b+1|0;}while((b|0)<(f|0))}if((d|0)==0){i=e;return}if((a[d]|0)==0){i=e;return}Dr(d);d=nr()|0;f=(d|0)>4096?4096:d;if((f|0)>0){j=0}else{i=e;return}do{c[2056e4+(j<<2)>>2]=is(or(j)|0)|0;j=j+1|0;}while((j|0)<(f|0));i=e;return}function Qu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;Dr(b);b=nr()|0;e=(b|0)>4096?4096:b;if((e|0)>0){b=0;while(1){c[20510848+(b<<2)>>2]=oj(or(b)|0)|0;f=b+1|0;if((f|0)<(e|0)){b=f}else{g=0;break}}}else{g=0}do{b=20527232+(g<<2)|0;f=c[b>>2]|0;if((f|0)!=0){es(f)}c[b>>2]=0;g=g+1|0;}while(g>>>0<4096>>>0);do{if((d|0)==0){h=0}else{if((a[d]|0)==0){h=0;break}Dr(d);g=nr()|0;b=(g|0)>(e|0)?e:g;if((b|0)>0){i=0}else{h=b;break}while(1){c[20527232+(i<<2)>>2]=is(or(i)|0)|0;g=i+1|0;if((g|0)<(b|0)){i=g}else{h=b;break}}}}while(0);c[5144102]=(h|0)<(e|0)?h:e;return}function Ru(a,b){a=a|0;b=b|0;var d=0,e=0;b=i;d=c[a>>2]|0;e=c[d>>2]|0;if((d|0)!=0){W_(d)}W_(a);c[6924866]=(c[6924866]|0)-1;if((lu(186096,0,0,0)|0)<1){Ur(0,185792,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a}else{TB(19941216,c[(c[5145148]|0)+4>>2]|0,4096);TB(19937120,c[(c[5144114]|0)+4>>2]|0,4096);hk[c[e+4>>2]&255](e,0);i=b;return}}function Su(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;Zr(185336);Zr(184696);Zr(184120);d=ct(184120)|0;e=c[(c[5458848]|0)+4>>2]|0;f=d;while(1){d=a[f]|0;g=d<<24>>24;h=a[e]|0;i=h<<24>>24;j=(d-97&255)>>>0<26>>>0?g-32|0:g;g=(h-97&255)>>>0<26>>>0?i-32|0:i;if((j|0)==92|(j|0)==58){k=47}else{k=j}if((g|0)==92|(g|0)==58){l=47}else{l=g}if((k|0)!=(l|0)){break}if((k|0)==0){m=8;break}else{e=e+1|0;f=f+1|0}}if((m|0)==8){kt(184120,28378736)}m=Pr(186,4)|0;c[c[m>>2]>>2]=b;Tu(c[(c[5458848]|0)+4>>2]|0,m);return}function Tu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;Sr(182608,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;c[5144100]=0;c[5145140]=gt(182360,182136,0)|0;c[5145146]=gt(181856,181376,20)|0;c[5144106]=gt(180896,28378736,68)|0;c[5145142]=gt(180344,28378736,64)|0;c[5145148]=gt(185336,FL()|0,8208)|0;c[5145150]=gt(179952,28378736,16)|0;f=vc()|0;if((f|0)==0){g=3}else{if((a[f]|0)==0){g=3}else{h=f}}if((g|0)==3){h=c[(c[5145148]|0)+4>>2]|0}c[5144112]=gt(184696,h,8208)|0;c[5144114]=gt(184120,28378736,24)|0;h=Pr(76,4100)|0;g=c[h>>2]|0;TB(g,b,4096);c[g+4096>>2]=d;Ef(h|0);i=e;return}function Uu(a,b){a=a|0;b=b|0;var d=0,e=0;d=Pr(102,8)|0;e=c[d>>2]|0;c[e>>2]=a;c[e+4>>2]=b;Hu(0,d);return}function Vu(a,b){a=a|0;b=b|0;var d=0;c[5145144]=c[c[a>>2]>>2];b=c[5144096]|0;if((b|0)!=0){d=b;do{b=c[d+4>>2]|0;if((b|0)!=0){c[b+16400>>2]=0}d=c[d>>2]|0;}while((d|0)!=0)}c[a+4>>2]=150;Tu(c[(c[5458848]|0)+4>>2]|0,a);return}function Wu(b,d,e){b=b|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,t=0,u=0,v=0,w=0,x=0,y=0;f=Pr(68,8)|0;g=c[f>>2]|0;c[g+4>>2]=e;e=c[5144114]|0;h=e+20|0;if((c[h>>2]|0)!=0){i=c[e+4>>2]|0;e=i;j=19937120;while(1){k=a[j]|0;l=k<<24>>24;m=a[e]|0;n=m<<24>>24;o=(k-97&255)>>>0<26>>>0?l-32|0:l;l=(m-97&255)>>>0<26>>>0?n-32|0:n;if((o|0)==92|(o|0)==58){p=47}else{p=o}if((l|0)==92|(l|0)==58){q=47}else{q=l}if((p|0)!=(q|0)){r=9;break}if((p|0)==0){break}else{e=e+1|0;j=j+1|0}}a:do{if((r|0)==9){j=a[19937120]|0;b:do{if(j<<24>>24==0){e=c[(c[5458848]|0)+4>>2]|0;p=i;while(1){q=a[p]|0;l=q<<24>>24;o=a[e]|0;n=o<<24>>24;m=(q-97&255)>>>0<26>>>0?l-32|0:l;l=(o-97&255)>>>0<26>>>0?n-32|0:n;if((m|0)==92|(m|0)==58){s=47}else{s=m}if((l|0)==92|(l|0)==58){t=47}else{t=l}if((s|0)!=(t|0)){break b}if((s|0)==0){break a}else{e=e+1|0;p=p+1|0}}}}while(0);c:do{if((a[i]|0)==0){p=c[(c[5458848]|0)+4>>2]|0;e=19937120;l=j;while(1){m=e+1|0;n=l<<24>>24;o=a[p]|0;q=o<<24>>24;k=(l-97&255)>>>0<26>>>0?n-32|0:n;n=(o-97&255)>>>0<26>>>0?q-32|0:q;if((k|0)==92|(k|0)==58){u=47}else{u=k}if((n|0)==92|(n|0)==58){v=47}else{v=n}if((u|0)!=(v|0)){break c}if((u|0)==0){break a}p=p+1|0;e=m;l=a[m]|0}}}while(0);c[g>>2]=1;Es(b,d,f);return}}while(0);c[h>>2]=0}c[g>>2]=0;if((c[5145144]|0)!=(b|0)){g=Pr(102,8)|0;h=c[g>>2]|0;c[h>>2]=b;c[h+4>>2]=f;Hu(0,g);return}g=c[5144104]|0;do{if(!((g|0)==0|a[20832])){a[20832]=0;if((g|0)>0){w=0;x=20576384}else{break}while(1){h=c[x>>2]|0;d:do{if((h|0)==0){y=x}else{b=20543616+(w<<2)|0;d=x;u=h;while(1){v=c[u+4>>2]|0;if((v|0)!=0){if((c[b>>2]|0)==(c[v+16388>>2]|0)){break}}v=u|0;i=c[v>>2]|0;if((i|0)==0){y=x;break d}else{d=v;u=i}}a[20832]=1;b=u|0;c[d>>2]=c[b>>2];c[b>>2]=c[x>>2];c[x>>2]=u;y=b}}while(0);h=w+1|0;if((h|0)<(g|0)){w=h;x=y}else{break}}}}while(0);hk[c[f+4>>2]&255](f,0);return}function Xu(a,b){a=a|0;b=b|0;var d=0,e=0;b=c[a>>2]|0;d=c[b+4>>2]|0;e=c[b>>2]|0;if((b|0)!=0){W_(b)}W_(a);c[6924866]=(c[6924866]|0)-1;hk[c[d+4>>2]&255](d,e);return}function Yu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;a:do{if((d|0)==0){f=c[5144096]|0;if((f|0)==0){Ur(0,181760,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}h=(b|0)==0;if(h){j=f;do{k=bu(a,j,0,1,0)|0;if((k|0)>0){l=0;m=k;n=16;break a}j=c[j>>2]|0;}while((j|0)!=0)}else{j=f;do{k=bu(a,j,b,1,0)|0;if((k|0)>-1){o=c[b>>2]|0;if((o|0)!=0){p=o;q=0;r=k;n=19;break a}}j=c[j>>2]|0;}while((j|0)!=0)}if(h){s=0;i=e;return s|0}else{c[b>>2]=0;t=0;u=-1;break}}else if((d|0)==1){j=Zt(a)|0;c[b>>2]=j;v=((j|0)==0)<<31>>31;w=0;x=j;n=18}else if((d|0)==3){y=1;n=14}else if((d|0)==2){y=0;n=14}else{Ur(0,183680,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;return 0}}while(0);if((n|0)==14){g=_t(a)|0;c[b>>2]=g;l=y;m=((g|0)==0)<<31>>31;n=16}do{if((n|0)==16){if((b|0)==0){s=m;i=e;return s|0}else{v=m;w=l;x=c[b>>2]|0;n=18;break}}}while(0);if((n|0)==18){if((x|0)==0){t=w;u=v}else{p=x;q=w;r=v;n=19}}do{if((n|0)==19){c[20492428+(p*288|0)>>2]=r;c[20492444+((c[b>>2]|0)*288|0)>>2]=0;if((d|0)!=0){t=q;u=r;break}c[20492444+((c[b>>2]|0)*288|0)>>2]=1;t=q;u=r}}while(0);c[20492424+((c[b>>2]|0)*288|0)>>2]=t;s=u;i=e;return s|0}function Zu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+1032|0;j=h|0;k=h+8|0;l=ru(b,d,0,j,g)|0;g=c[j>>2]|0;xu(l,g);if((g|0)>0){if((e|0)==0){e=0;do{g=l+(e<<2)|0;d=c[g>>2]|0;while(1){b=a[d]|0;if((b<<24>>24|0)==0){break}else if((b<<24>>24|0)==92|(b<<24>>24|0)==58){a[d]=47}d=d+1|0}TB(k,c[g>>2]|0,1024);vk[f&511](k);e=e+1|0;}while((e|0)<(c[j>>2]|0))}else{e=0;do{d=l+(e<<2)|0;b=c[d>>2]|0;while(1){m=a[b]|0;if((m<<24>>24|0)==92|(m<<24>>24|0)==58){a[b]=47}else if((m<<24>>24|0)==0){break}b=b+1|0}TB(k,c[d>>2]|0,1024);SB(k,k,1024);vk[f&511](k);e=e+1|0;}while((e|0)<(c[j>>2]|0))}}if((c[5144096]|0)==0){Ur(0,181760,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}if((l|0)==0){n=1024;o=0;i=h;return}j=c[l>>2]|0;if((j|0)!=0){e=0;k=j;do{es(k);e=e+1|0;k=c[l+(e<<2)>>2]|0;}while((k|0)!=0)}es(l);n=1024;o=0;i=h;return}function _u(){var b=0,d=0;b=c[(c[5144114]|0)+4>>2]|0;if((a[b]|0)!=0){d=b;return d|0}d=c[(c[5458848]|0)+4>>2]|0;return d|0}function $u(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=i;e=c[b>>2]|0;f=c[e+4>>2]|0;if((e|0)!=0){W_(e)}W_(b);c[6924866]=(c[6924866]|0)-1;if((lu(186096,0,0,0)|0)<1){if((a[19941216]|0)==0){Ur(0,185792,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}Pu(28378736,28378736);kt(185336,19941216);kt(184120,19937120);a[19941216]=0;a[19937120]=0;c[b+4>>2]=92;e=c[5145144]|0;g=Pr(102,8)|0;h=c[g>>2]|0;c[h>>2]=e;c[h+4>>2]=b;Hu(0,g);i=d;return}do{if((VB(c[(c[5144114]|0)+4>>2]|0,19937120)|0)!=0){if((Yr()|0)!=0){break}qr(183368)}}while(0);TB(19941216,c[(c[5145148]|0)+4>>2]|0,4096);TB(19937120,c[(c[5144114]|0)+4>>2]|0,4096);hk[c[f+4>>2]&255](f,0);i=d;return}function av(a,b){a=a|0;b=b|0;b=c[a>>2]|0;if((b|0)!=0){W_(b)}W_(a);c[6924866]=(c[6924866]|0)-1;Ur(1,182912,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a}function bv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;d=i;i=i+4096|0;e=d|0;f=b|0;g=c[f>>2]|0;TB(e,g,4096);h=c[g+4096>>2]|0;g=c[f>>2]|0;if((g|0)!=0){W_(g)}W_(b);c[6924866]=(c[6924866]|0)-1;b=c[(c[5145148]|0)+4>>2]|0;if((a[b]|0)!=0){Du(b,e)}b=c[(c[5144112]|0)+4>>2]|0;do{if((a[b]|0)!=0){if((VB(b,c[(c[5145148]|0)+4>>2]|0)|0)==0){break}St(c[(c[5144112]|0)+4>>2]|0)|0;Du(c[(c[5144112]|0)+4>>2]|0,e)}}while(0);b=c[(c[5145150]|0)+4>>2]|0;do{if((a[b]|0)!=0){if((VB(b,e)|0)==0){break}g=c[(c[5145148]|0)+4>>2]|0;if((a[g]|0)!=0){Du(g,c[(c[5145150]|0)+4>>2]|0)}g=c[(c[5144112]|0)+4>>2]|0;if((a[g]|0)==0){break}if((VB(g,c[(c[5145148]|0)+4>>2]|0)|0)==0){break}Du(c[(c[5144112]|0)+4>>2]|0,c[(c[5145150]|0)+4>>2]|0)}}while(0);b=c[(c[5144114]|0)+4>>2]|0;do{if((a[b]|0)!=0){if((VB(b,e)|0)==0){break}g=c[(c[5145148]|0)+4>>2]|0;if((a[g]|0)!=0){Du(g,c[(c[5144114]|0)+4>>2]|0)}g=c[(c[5144112]|0)+4>>2]|0;if((a[g]|0)==0){break}if((VB(g,c[(c[5145148]|0)+4>>2]|0)|0)==0){break}Du(c[(c[5144112]|0)+4>>2]|0,c[(c[5144114]|0)+4>>2]|0)}}while(0);Gr(46184,386);Gr(45592,212);Gr(45048,250);Gr(44640,8);Gr(44296,296);a[20832]=0;e=c[5144104]|0;if((e|0)>0){j=0;k=20576384}else{zu();l=c[5144114]|0;m=l+20|0;c[m>>2]=0;Sr(179416,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;o=c[5144100]|0;Sr(178904,(n=i,i=i+8|0,c[n>>2]=o,n)|0);i=n;p=h+4|0;q=c[p>>2]|0;r=q;hk[r&255](h,0);s=4096;t=0;i=d;return}while(1){b=c[k>>2]|0;a:do{if((b|0)==0){u=k}else{g=20543616+(j<<2)|0;f=k;v=b;while(1){w=c[v+4>>2]|0;if((w|0)!=0){if((c[g>>2]|0)==(c[w+16388>>2]|0)){break}}w=v|0;x=c[w>>2]|0;if((x|0)==0){u=k;break a}else{f=w;v=x}}a[20832]=1;g=v|0;c[f>>2]=c[g>>2];c[g>>2]=c[k>>2];c[k>>2]=v;u=g}}while(0);b=j+1|0;if((b|0)<(e|0)){j=b;k=u}else{break}}zu();l=c[5144114]|0;m=l+20|0;c[m>>2]=0;Sr(179416,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;o=c[5144100]|0;Sr(178904,(n=i,i=i+8|0,c[n>>2]=o,n)|0);i=n;p=h+4|0;q=c[p>>2]|0;r=q;hk[r&255](h,0);s=4096;t=0;i=d;return}function cv(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=i;i=i+88|0;f=e|0;g=e+64|0;h=g|0;c[h>>2]=1732584193;j=g+4|0;c[j>>2]=-271733879;k=g+8|0;c[k>>2]=-1732584194;l=g+12|0;c[l>>2]=271733878;c[g+16>>2]=0;c[4954648]=g;do{if((b|0)==0){dv(a,0);m=a;n=0}else{if((b|0)<=63){m=a;n=b;break}o=f|0;p=b-64|0;q=a;r=b;while(1){s=0;do{t=s<<2;c[f+(s<<2)>>2]=(d[q+(t|2)|0]|0)<<16|(d[q+(t|3)|0]|0)<<24|(d[q+(t|1)|0]|0)<<8|(d[q+t|0]|0);s=s+1|0;}while((s|0)<16);ev(o);s=r-64|0;t=(c[4954648]|0)+16|0;c[t>>2]=(c[t>>2]|0)+64;if((s|0)>63){q=q+64|0;r=s}else{break}}r=p&-64;m=a+(r+64)|0;n=p-r|0}}while(0);dv(m,n);c[4954648]=g;i=e;return c[j>>2]^c[h>>2]^c[k>>2]^c[l>>2]|0}function dv(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=i;i=i+192|0;g=f|0;h=f+128|0;j=g|0;k=(c[4954648]|0)+16|0;l=(c[k>>2]|0)+e|0;c[k>>2]=l;k=l<<3;n$(j|0,0,128)|0;do{if((e|0)==0){a[j]=-128}else{m$(j|0,b|0,e)|0;a[g+e|0]=-128;if((e|0)<56){break}a[g+120|0]=k;a[g+121|0]=l>>>5;a[g+122|0]=l>>>13;a[g+123|0]=l>>>21;m=0;do{n=m<<2;c[h+(m<<2)>>2]=(d[g+(n|2)|0]|0)<<16|(d[g+(n|3)|0]|0)<<24|(d[g+(n|1)|0]|0)<<8|(d[g+n|0]|0);m=m+1|0;}while((m|0)<16);m=h|0;ev(m);n=0;do{o=n<<2;c[h+(n<<2)>>2]=(d[g+((o|2)+64)|0]|0)<<16|(d[g+((o|3)+64)|0]|0)<<24|(d[g+((o|1)+64)|0]|0)<<8|(d[g+(o+64)|0]|0);n=n+1|0;}while((n|0)<16);ev(m);p=64;q=0;r=128;s=0;i=f;return}}while(0);a[g+56|0]=k;a[g+57|0]=l>>>5;a[g+58|0]=l>>>13;a[g+59|0]=l>>>21;l=0;do{k=l<<2;c[h+(l<<2)>>2]=(d[g+(k|2)|0]|0)<<16|(d[g+(k|3)|0]|0)<<24|(d[g+(k|1)|0]|0)<<8|(d[g+k|0]|0);l=l+1|0;}while((l|0)<16);ev(h|0);p=64;q=0;r=128;s=0;i=f;return}function ev(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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;b=i;d=i;i=i+64|0;m$(d|0,a|0,64)|0;a=c[4954648]|0;e=c[a>>2]|0;f=c[a+4>>2]|0;g=c[a+8>>2]|0;h=c[a+12>>2]|0;a=c[d>>2]|0;j=a+e+(h&~f|g&f)|0;k=j<<3|j>>>29;j=c[d+4>>2]|0;l=j+h+(k&f|g&~k)|0;m=l<<7|l>>>25;l=c[d+8>>2]|0;n=l+g+(m&k|f&~m)|0;o=n<<11|n>>>21;n=c[d+12>>2]|0;p=n+f+(o&m|k&~o)|0;q=p<<19|p>>>13;p=c[d+16>>2]|0;r=p+k+(q&o|m&~q)|0;k=r<<3|r>>>29;r=c[d+20>>2]|0;s=m+r+(k&q|o&~k)|0;m=s<<7|s>>>25;s=c[d+24>>2]|0;t=o+s+(m&k|q&~m)|0;o=t<<11|t>>>21;t=c[d+28>>2]|0;u=q+t+(o&m|k&~o)|0;q=u<<19|u>>>13;u=c[d+32>>2]|0;v=k+u+(q&o|m&~q)|0;k=v<<3|v>>>29;v=c[d+36>>2]|0;w=m+v+(k&q|o&~k)|0;m=w<<7|w>>>25;w=c[d+40>>2]|0;x=o+w+(m&k|q&~m)|0;o=x<<11|x>>>21;x=c[d+44>>2]|0;y=q+x+(o&m|k&~o)|0;q=y<<19|y>>>13;y=c[d+48>>2]|0;z=k+y+(q&o|m&~q)|0;k=z<<3|z>>>29;z=c[d+52>>2]|0;A=m+z+(k&q|o&~k)|0;m=A<<7|A>>>25;A=c[d+56>>2]|0;B=o+A+(m&k|q&~m)|0;o=B<<11|B>>>21;B=o&m;C=c[d+60>>2]|0;d=q+C+(B|k&~o)|0;q=d<<19|d>>>13;d=q&o;D=a+1518500249+k+(q&m|B|d)|0;B=D<<3|D>>>29;D=B&q;k=p+1518500249+m+(B&o|d|D)|0;d=k<<5|k>>>27;k=d&B;m=u+1518500249+o+(d&q|D|k)|0;D=m<<9|m>>>23;m=D&d;o=y+1518500249+q+(D&B|k|m)|0;k=o<<13|o>>>19;o=k&D;q=j+1518500249+B+(k&d|m|o)|0;m=q<<3|q>>>29;q=m&k;B=r+1518500249+d+(m&D|o|q)|0;o=B<<5|B>>>27;B=o&m;d=v+1518500249+D+(o&k|q|B)|0;q=d<<9|d>>>23;d=q&o;D=z+1518500249+k+(q&m|B|d)|0;B=D<<13|D>>>19;D=B&q;k=l+1518500249+m+(B&o|d|D)|0;d=k<<3|k>>>29;k=d&B;m=s+1518500249+o+(d&q|D|k)|0;D=m<<5|m>>>27;m=D&d;o=w+1518500249+q+(D&B|k|m)|0;k=o<<9|o>>>23;o=k&D;q=A+1518500249+B+(k&d|m|o)|0;m=q<<13|q>>>19;q=m&k;B=n+1518500249+d+(m&D|o|q)|0;o=B<<3|B>>>29;B=o&m;d=t+1518500249+D+(o&k|q|B)|0;q=d<<5|d>>>27;d=q&o;D=x+1518500249+k+(q&m|B|d)|0;B=D<<9|D>>>23;D=C+1518500249+m+(B&(q|o)|d)|0;d=D<<13|D>>>19;D=a+1859775393+o+(B^q^d)|0;o=D<<3|D>>>29;D=u+1859775393+q+(d^B^o)|0;q=D<<9|D>>>23;D=p+1859775393+B+(o^d^q)|0;B=D<<11|D>>>21;D=y+1859775393+d+(q^o^B)|0;d=D<<15|D>>>17;D=l+1859775393+o+(B^q^d)|0;o=D<<3|D>>>29;D=w+1859775393+q+(d^B^o)|0;q=D<<9|D>>>23;D=s+1859775393+B+(o^d^q)|0;B=D<<11|D>>>21;D=A+1859775393+d+(q^o^B)|0;d=D<<15|D>>>17;D=j+1859775393+o+(B^q^d)|0;o=D<<3|D>>>29;D=v+1859775393+q+(d^B^o)|0;q=D<<9|D>>>23;D=r+1859775393+B+(o^d^q)|0;B=D<<11|D>>>21;D=z+1859775393+d+(q^o^B)|0;d=D<<15|D>>>17;D=n+1859775393+o+(B^q^d)|0;o=D<<3|D>>>29;D=x+1859775393+q+(d^B^o)|0;q=D<<9|D>>>23;D=t+1859775393+B+(o^d^q)|0;B=D<<11|D>>>21;D=C+1859775393+d+(q^o^B)|0;d=c[4954648]|0;c[d>>2]=o+e;c[d+4>>2]=(D<<15|D>>>17)+f;c[d+8>>2]=B+g;c[d+12>>2]=q+h;i=b;return}function fv(a,b){a=a|0;b=b|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,B=0;d=c[a>>2]|0;e=a+4|0;f=c[e>>2]|0;g=a+8|0;h=c[g>>2]|0;i=a+12|0;j=c[i>>2]|0;k=c[b>>2]|0;l=d-680876936+k+((j^h)&f^j)|0;m=(l<<7|l>>>25)+f|0;l=c[b+4>>2]|0;n=j-389564586+l+(m&(h^f)^h)|0;j=(n<<12|n>>>20)+m|0;n=c[b+8>>2]|0;o=h+606105819+n+(j&(m^f)^f)|0;h=(o<<17|o>>>15)+j|0;o=c[b+12>>2]|0;p=f-1044525330+o+(h&(j^m)^m)|0;f=(p<<22|p>>>10)+h|0;p=c[b+16>>2]|0;q=p-176418897+m+(f&(h^j)^j)|0;m=(q<<7|q>>>25)+f|0;q=c[b+20>>2]|0;r=q+1200080426+j+(m&(f^h)^h)|0;j=(r<<12|r>>>20)+m|0;r=c[b+24>>2]|0;s=r-1473231341+h+(j&(m^f)^f)|0;h=(s<<17|s>>>15)+j|0;s=c[b+28>>2]|0;t=s-45705983+f+(h&(j^m)^m)|0;f=(t<<22|t>>>10)+h|0;t=c[b+32>>2]|0;u=t+1770035416+m+(f&(h^j)^j)|0;m=(u<<7|u>>>25)+f|0;u=c[b+36>>2]|0;v=u-1958414417+j+(m&(f^h)^h)|0;j=(v<<12|v>>>20)+m|0;v=c[b+40>>2]|0;w=v-42063+h+(j&(m^f)^f)|0;h=(w<<17|w>>>15)+j|0;w=c[b+44>>2]|0;x=w-1990404162+f+(h&(j^m)^m)|0;f=(x<<22|x>>>10)+h|0;x=c[b+48>>2]|0;y=x+1804603682+m+(f&(h^j)^j)|0;m=(y<<7|y>>>25)+f|0;y=c[b+52>>2]|0;z=y-40341101+j+(m&(f^h)^h)|0;j=(z<<12|z>>>20)+m|0;z=c[b+56>>2]|0;A=z-1502002290+h+(j&(m^f)^f)|0;h=(A<<17|A>>>15)+j|0;A=c[b+60>>2]|0;b=A+1236535329+f+(h&(j^m)^m)|0;f=(b<<22|b>>>10)+h|0;b=l-165796510+m+((f^h)&j^h)|0;m=(b<<5|b>>>27)+f|0;b=r-1069501632+j+((m^f)&h^f)|0;j=(b<<9|b>>>23)+m|0;b=w+643717713+h+((j^m)&f^m)|0;h=(b<<14|b>>>18)+j|0;b=k-373897302+f+((h^j)&m^j)|0;f=(b<<20|b>>>12)+h|0;b=q-701558691+m+((f^h)&j^h)|0;m=(b<<5|b>>>27)+f|0;b=v+38016083+j+((m^f)&h^f)|0;j=(b<<9|b>>>23)+m|0;b=A-660478335+h+((j^m)&f^m)|0;h=(b<<14|b>>>18)+j|0;b=p-405537848+f+((h^j)&m^j)|0;f=(b<<20|b>>>12)+h|0;b=u+568446438+m+((f^h)&j^h)|0;m=(b<<5|b>>>27)+f|0;b=z-1019803690+j+((m^f)&h^f)|0;j=(b<<9|b>>>23)+m|0;b=o-187363961+h+((j^m)&f^m)|0;h=(b<<14|b>>>18)+j|0;b=t+1163531501+f+((h^j)&m^j)|0;f=(b<<20|b>>>12)+h|0;b=y-1444681467+m+((f^h)&j^h)|0;m=(b<<5|b>>>27)+f|0;b=n-51403784+j+((m^f)&h^f)|0;j=(b<<9|b>>>23)+m|0;b=s+1735328473+h+((j^m)&f^m)|0;h=(b<<14|b>>>18)+j|0;b=h^j;B=x-1926607734+f+(b&m^j)|0;f=(B<<20|B>>>12)+h|0;B=q-378558+m+(b^f)|0;b=(B<<4|B>>>28)+f|0;B=t-2022574463+j+(f^h^b)|0;j=(B<<11|B>>>21)+b|0;B=w+1839030562+h+(b^f^j)|0;h=(B<<16|B>>>16)+j|0;B=z-35309556+f+(j^b^h)|0;f=(B<<23|B>>>9)+h|0;B=l-1530992060+b+(h^j^f)|0;b=(B<<4|B>>>28)+f|0;B=p+1272893353+j+(f^h^b)|0;j=(B<<11|B>>>21)+b|0;B=s-155497632+h+(b^f^j)|0;h=(B<<16|B>>>16)+j|0;B=v-1094730640+f+(j^b^h)|0;f=(B<<23|B>>>9)+h|0;B=y+681279174+b+(h^j^f)|0;b=(B<<4|B>>>28)+f|0;B=k-358537222+j+(f^h^b)|0;j=(B<<11|B>>>21)+b|0;B=o-722521979+h+(b^f^j)|0;h=(B<<16|B>>>16)+j|0;B=r+76029189+f+(j^b^h)|0;f=(B<<23|B>>>9)+h|0;B=u-640364487+b+(h^j^f)|0;b=(B<<4|B>>>28)+f|0;B=x-421815835+j+(f^h^b)|0;j=(B<<11|B>>>21)+b|0;B=A+530742520+h+(b^f^j)|0;h=(B<<16|B>>>16)+j|0;B=n-995338651+f+(j^b^h)|0;f=(B<<23|B>>>9)+h|0;B=k-198630844+b+((f|~j)^h)|0;b=(B<<6|B>>>26)+f|0;B=s+1126891415+j+((b|~h)^f)|0;j=(B<<10|B>>>22)+b|0;B=z-1416354905+h+((j|~f)^b)|0;h=(B<<15|B>>>17)+j|0;B=q-57434055+f+((h|~b)^j)|0;f=(B<<21|B>>>11)+h|0;B=x+1700485571+b+((f|~j)^h)|0;b=(B<<6|B>>>26)+f|0;B=o-1894986606+j+((b|~h)^f)|0;j=(B<<10|B>>>22)+b|0;B=v-1051523+h+((j|~f)^b)|0;h=(B<<15|B>>>17)+j|0;B=l-2054922799+f+((h|~b)^j)|0;f=(B<<21|B>>>11)+h|0;B=t+1873313359+b+((f|~j)^h)|0;b=(B<<6|B>>>26)+f|0;B=A-30611744+j+((b|~h)^f)|0;j=(B<<10|B>>>22)+b|0;B=r-1560198380+h+((j|~f)^b)|0;h=(B<<15|B>>>17)+j|0;B=y+1309151649+f+((h|~b)^j)|0;f=(B<<21|B>>>11)+h|0;B=p-145523070+b+((f|~j)^h)|0;b=(B<<6|B>>>26)+f|0;B=w-1120210379+j+((b|~h)^f)|0;j=(B<<10|B>>>22)+b|0;B=n+718787259+h+((j|~f)^b)|0;h=(B<<15|B>>>17)+j|0;B=u-343485551+f+((h|~b)^j)|0;c[a>>2]=b+d;c[e>>2]=h+(c[e>>2]|0)+(B<<21|B>>>11);c[g>>2]=h+(c[g>>2]|0);c[i>>2]=j+(c[i>>2]|0);return}function gv(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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,J=0,K=0;h=i;i=i+2160|0;j=h|0;k=h+16|0;l=h+24|0;m=h+112|0;n=j|0;n$(n|0,0,16)|0;o=l;p=m|0;TB(30283120,28378688,33);q=Wt(b,k)|0;b=c[k>>2]|0;if((b|0)==0){r=2048;s=0;t=88;u=0;i=h;return 30283120}if((q|0)<1){Yt(b);r=2048;s=0;t=88;u=0;i=h;return 30283120}b=(q|0)>=(e|0)&(e|0)!=0?e:q;q=l|0;c[q>>2]=1732584193;c[l+4>>2]=-271733879;c[l+8>>2]=-1732584194;c[l+12>>2]=271733878;e=l+16|0;c[e>>2]=0;v=l+20|0;c[v>>2]=0;do{if((g|0)!=0){if((a[f]|0)==0){break}c[e>>2]=g<<3;c[v>>2]=g>>>29;w=l+24|0;x=w|0;if(g>>>0>63>>>0){y=w;w=g;z=f;while(1){m$(x|0,z|0,64)|0;fv(q,y);A=z+64|0;B=w-64|0;if(B>>>0>63>>>0){w=B;z=A}else{C=B;D=A;break}}}else{C=g;D=f}m$(x|0,D|0,C)|0}}while(0);C=l+24|0;D=C|0;f=C;C=l+24|0;g=0;do{z=eu(p,2048,c[k>>2]|0)|0;if((z|0)<1){break}w=(z+g|0)>(b|0)?b-g|0:z;g=w+g|0;z=c[e>>2]|0;y=ke(z|0,w<<3|0)|0;c[e>>2]=y;y=c[v>>2]|0;if(H){A=y+1|0;c[v>>2]=A;E=A}else{E=y}c[v>>2]=E+(w>>>29);y=z>>>3&63;do{if((y|0)==0){F=p;G=w;I=18}else{z=l+24+y|0;A=64-y|0;if(A>>>0>w>>>0){m$(z|0,p|0,w)|0;break}else{m$(z|0,p|0,A)|0;fv(q,C);F=m+A|0;G=w-A|0;I=18;break}}}while(0);if((I|0)==18){I=0;if(G>>>0>63>>>0){y=G;x=F;while(1){m$(D|0,x|0,64)|0;fv(q,f);A=x+64|0;z=y-64|0;if(z>>>0>63>>>0){y=z;x=A}else{J=z;K=A;break}}}else{J=G;K=F}m$(D|0,K|0,J)|0}}while(w>>>0>2047>>>0&(g|0)<(b|0));Yt(c[k>>2]|0);k=(c[e>>2]|0)>>>3&63;b=k+1+(l+24)|0;a[l+24+k|0]=-128;g=k^63;if(g>>>0<8>>>0){n$(b|0,0,g|0)|0;fv(q,f);n$(D|0,0,56)|0}else{n$(b|0,0,g-8|0)|0}c[l+80>>2]=c[e>>2];c[l+84>>2]=c[v>>2];fv(q,f);m$(n|0,o|0,16)|0;n$(o|0,0,88)|0;a[30283120]=0;o=0;do{n=pC(179944,(f=i,i=i+8|0,c[f>>2]=d[j+o|0]|0,f)|0)|0;i=f;XB(30283120,33,n);o=o+1|0;}while((o|0)<16);r=2048;s=0;t=88;u=0;i=h;return 30283120}function hv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if(!(a[12080]|0)){a[12080]=1;Bw(19760024);f=0;do{g=11056+(f<<2)|0;if((c[g>>2]|0)>0){h=f&255;i=0;do{tw(19760024,h);tw(19788724,h);i=i+1|0;}while((i|0)<(c[g>>2]|0))}f=f+1|0;}while((f|0)<256)}n$(b|0,0,32)|0;c[b+12>>2]=d;c[b+16>>2]=e;return}function iv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if(!(a[12080]|0)){a[12080]=1;Bw(19760024);f=0;do{g=11056+(f<<2)|0;if((c[g>>2]|0)>0){h=f&255;i=0;do{tw(19760024,h);tw(19788724,h);i=i+1|0;}while((i|0)<(c[g>>2]|0))}f=f+1|0;}while((f|0)<256)}n$(b|0,0,32)|0;c[b+12>>2]=d;c[b+16>>2]=e;c[b+8>>2]=1;return}function jv(a){a=a|0;c[a+20>>2]=0;c[a+4>>2]=0;c[a+28>>2]=0;return}function kv(a){a=a|0;c[a+8>>2]=0;return}function lv(a){a=a|0;c[a+24>>2]=0;c[a+28>>2]=0;c[a+8>>2]=1;return}function mv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=e+20|0;if((c[g>>2]|0)>(d|0)){Ur(1,166896,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}else{m$(a|0,e|0,32)|0;c[a+12>>2]=b;m$(b|0,c[e+12>>2]|0,c[g>>2]|0)|0;i=f;return}}function nv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;c[4938806]=(c[4938806]|0)+e;g=b+20|0;if(((c[b+16>>2]|0)-(c[g>>2]|0)|0)<4){c[b+4>>2]=1;i=f;return}if((e|0)==0|(e|0)<-31|(e|0)>32){Ur(1,179912,(h=i,i=i+8|0,c[h>>2]=e,h)|0);i=h}do{if((e|0)!=32){if((e|0)>0){if(!((1<>2]|0)!=0){if((j|0)==8){a[(c[b+12>>2]|0)+(c[g>>2]|0)|0]=d;c[g>>2]=(c[g>>2]|0)+1;e=b+28|0;c[e>>2]=(c[e>>2]|0)+8;i=f;return}else if((j|0)==32){e=(c[b+12>>2]|0)+(c[g>>2]|0)|0;z=d;a[e]=z;z=z>>8;a[e+1|0]=z;z=z>>8;a[e+2|0]=z;z=z>>8;a[e+3|0]=z;c[g>>2]=(c[g>>2]|0)+4;e=b+28|0;c[e>>2]=(c[e>>2]|0)+32;i=f;return}else if((j|0)==16){e=(c[b+12>>2]|0)+(c[g>>2]|0)|0;z=d&65535;a[e]=z;z=z>>8;a[e+1|0]=z;c[g>>2]=(c[g>>2]|0)+2;e=b+28|0;c[e>>2]=(c[e>>2]|0)+16;i=f;return}else{Ur(1,150504,(h=i,i=i+8|0,c[h>>2]=j,h)|0);i=h}}h=-1>>>((32-j|0)>>>0)&d;d=j&7;if((d|0)==0){k=h;l=j}else{e=b+12|0;m=b+28|0;n=0;o=h;do{rw(o&1,c[e>>2]|0,m);o=o>>1;n=n+1|0;}while((n|0)<(d|0));k=o;l=j-d|0}if((l|0)>0){d=b+12|0;j=b+28|0;o=0;n=k;while(1){yw(19760024,n&255,c[d>>2]|0,j);k=o+8|0;if((k|0)<(l|0)){o=k;n=n>>8}else{break}}}c[g>>2]=(c[b+28>>2]>>3)+1;i=f;return}function ov(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=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;e=i;i=i+8|0;f=e|0;g=(b|0)<0?-b|0:b;do{if((c[a+8>>2]|0)==0){h=g&7;if((h|0)==0){j=g;k=0;l=0}else{m=a+12|0;n=a+28|0;o=0;p=0;do{o=(sw(c[m>>2]|0,n)|0)<0){p=a+12|0;n=a+28|0;m=l;q=0;while(1){vw(c[4947183]|0,f,c[p>>2]|0,n);r=c[f>>2]<<(q|k)|m;s=q+8|0;if((s|0)<(j|0)){m=r;q=s}else{t=r;break}}}else{t=l}c[a+24>>2]=(c[a+28>>2]>>3)+1;u=j;v=t}else{if((g|0)==16){q=a+24|0;m=c[q>>2]|0;n=(c[a+12>>2]|0)+m|0;p=(d[n]|d[n+1|0]<<8)<<16>>16<<16>>16;c[q>>2]=m+2;m=a+28|0;c[m>>2]=(c[m>>2]|0)+16;u=16;v=p;break}else if((g|0)==8){p=a+24|0;m=c[p>>2]|0;q=d[(c[a+12>>2]|0)+m|0]|0;c[p>>2]=m+1;m=a+28|0;c[m>>2]=(c[m>>2]|0)+8;u=8;v=q;break}else if((g|0)==32){q=a+24|0;m=c[q>>2]|0;p=(c[a+12>>2]|0)+m|0;n=d[p]|d[p+1|0]<<8|d[p+2|0]<<16|d[p+3|0]<<24|0;c[q>>2]=m+4;m=a+28|0;c[m>>2]=(c[m>>2]|0)+32;u=32;v=n;break}else{Ur(1,131456,(n=i,i=i+8|0,c[n>>2]=g,n)|0);i=n;return 0}}}while(0);if((b|0)>-1){w=v;i=e;return w|0}if((1<0){e=0}else{return}do{nv(a,d[b+e|0]|0,8);e=e+1|0;}while((e|0)<(c|0));return}function rv(a,b){a=a|0;b=b|0;nv(a,b,16);return}function sv(a,b){a=a|0;b=b|0;nv(a,b,32);return}function tv(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+1024|0;g=f|0;if((e|0)==0){nv(b,0,8);i=f;return}h=o$(e|0)|0;if((h|0)>1023){Sr(110160,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;nv(b,0,8);i=f;return}TB(g|0,e,1024);if((h|0)>0){e=0;do{j=g+e|0;k=a[j]|0;if(k<<24>>24<0|k<<24>>24==37){a[j]=46}e=e+1|0;}while((e|0)<(h|0))}if((h|0)>-1){l=0}else{i=f;return}while(1){nv(b,d[g+l|0]|0,8);if((l|0)<(h|0)){l=l+1|0}else{break}}i=f;return}function uv(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+8192|0;g=f|0;if((e|0)==0){nv(b,0,8);i=f;return}h=o$(e|0)|0;if((h|0)>8191){Sr(100560,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;nv(b,0,8);i=f;return}TB(g|0,e,8192);if((h|0)>0){e=0;do{j=g+e|0;k=a[j]|0;if(k<<24>>24<0|k<<24>>24==37){a[j]=46}e=e+1|0;}while((e|0)<(h|0))}if((h|0)>-1){l=0}else{i=f;return}while(1){nv(b,d[g+l|0]|0,8);if((l|0)<(h|0)){l=l+1|0}else{break}}i=f;return}function vv(a){a=a|0;var b=0;b=(ov(a,8)|0)&255;return((c[a+24>>2]|0)>(c[a+20>>2]|0)?-1:b)|0}function wv(a){a=a|0;var b=0;b=(ov(a,16)|0)<<16>>16;return((c[a+24>>2]|0)>(c[a+20>>2]|0)?-1:b)|0}function xv(a){a=a|0;var b=0;b=ov(a,32)|0;return((c[a+24>>2]|0)>(c[a+20>>2]|0)?-1:b)|0}function yv(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=b+24|0;e=b+20|0;f=0;while(1){g=(ov(b,8)|0)&255;h=(c[d>>2]|0)>(c[e>>2]|0)?-1:g;if((h|0)==(-1|0)|(h|0)==0){i=f;j=5;break}else if((h|0)==37){k=46}else{k=h}a[30185208+f|0]=(k|0)>127?46:k&255;h=f+1|0;if(h>>>0<1023>>>0){f=h}else{i=h;j=5;break}}if((j|0)==5){a[30185208+i|0]=0;return 30185208}return 0}function zv(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=b+24|0;e=b+20|0;f=0;while(1){g=(ov(b,8)|0)&255;h=(c[d>>2]|0)>(c[e>>2]|0)?-1:g;if((h|0)==37){i=46}else if((h|0)==(-1|0)|(h|0)==0){j=f;k=5;break}else{i=h}a[30187256+f|0]=(i|0)>127?46:i&255;h=f+1|0;if(h>>>0<8191>>>0){f=h}else{j=h;k=5;break}}if((k|0)==5){a[30187256+j|0]=0;return 30187256}return 0}function Av(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=b+24|0;e=b+20|0;f=0;while(1){g=(ov(b,8)|0)&255;h=(c[d>>2]|0)>(c[e>>2]|0)?-1:g;if((h|0)==(-1|0)|(h|0)==10|(h|0)==0){i=f;j=5;break}else if((h|0)==37){k=46}else{k=h}a[30186232+f|0]=(k|0)>127?46:k&255;h=f+1|0;if(h>>>0<1023>>>0){f=h}else{i=h;j=5;break}}if((j|0)==5){a[30186232+i|0]=0;return 30186232}return 0}function Bv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((e|0)<=0){return}f=b+24|0;g=b+20|0;h=0;do{i=ov(b,8)|0;a[d+h|0]=(c[f>>2]|0)>(c[g>>2]|0)?-1:i&255;h=h+1|0;}while((h|0)<(e|0));return}function Cv(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;a:do{if((c|0)>0){d=0;e=0;while(1){f=a[b+e|0]|0;g=f<<24>>24;if(f<<24>>24==0){h=d;break a}if((g&128|0)!=0|f<<24>>24==37){i=(e*46|0)+5474|0}else{i=da(g,e+119|0)|0}g=i+d|0;f=e+1|0;if((f|0)<(c|0)){d=g;e=f}else{h=g;break}}}else{h=0}}while(0);return h>>10^h^h>>20|0}function Dv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=f|0;h=e|0;if(((c[g>>2]|0)-(c[h>>2]|0)|0)<256){nv(b,1,1);nv(b,(c[g>>2]|0)-(c[h>>2]|0)|0,8)}else{nv(b,0,1);nv(b,c[g>>2]|0,32)}h=e+4|0;i=f+4|0;do{if((c[h>>2]|0)==(c[i>>2]|0)){if((c[e+8>>2]|0)!=(c[f+8>>2]|0)){break}if((c[e+12>>2]|0)!=(c[f+12>>2]|0)){break}if((a[e+21|0]|0)!=(a[f+21|0]|0)){break}if((a[e+22|0]|0)!=(a[f+22|0]|0)){break}if((a[e+23|0]|0)!=(a[f+23|0]|0)){break}if((c[e+16>>2]|0)!=(c[f+16>>2]|0)){break}if((a[e+20|0]|0)!=(a[f+20|0]|0)){break}nv(b,0,1);c[4938806]=(c[4938806]|0)+7;return}}while(0);j=c[g>>2]^d;nv(b,1,1);d=c[i>>2]|0;if((c[h>>2]|0)==(d|0)){nv(b,0,1)}else{nv(b,1,1);nv(b,d^j,16)}d=c[f+8>>2]|0;if((c[e+8>>2]|0)==(d|0)){nv(b,0,1)}else{nv(b,1,1);nv(b,d^j,16)}d=c[f+12>>2]|0;if((c[e+12>>2]|0)==(d|0)){nv(b,0,1)}else{nv(b,1,1);nv(b,d^j,16)}d=a[f+21|0]|0;if((a[e+21|0]|0)==d<<24>>24){nv(b,0,1)}else{nv(b,1,1);nv(b,d<<24>>24^j,8)}d=a[f+22|0]|0;if((a[e+22|0]|0)==d<<24>>24){nv(b,0,1)}else{nv(b,1,1);nv(b,d<<24>>24^j,8)}d=a[f+23|0]|0;if((a[e+23|0]|0)==d<<24>>24){nv(b,0,1)}else{nv(b,1,1);nv(b,d<<24>>24^j,8)}d=c[f+16>>2]|0;if((c[e+16>>2]|0)==(d|0)){nv(b,0,1)}else{nv(b,1,1);nv(b,d^j,16)}d=a[f+20|0]|0;if((a[e+20|0]|0)==d<<24>>24){nv(b,0,1);return}else{nv(b,1,1);nv(b,d&255^j,8);return}}function Ev(b,d,e,f){b=b|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;if((ov(b,1)|0)==0){c[f>>2]=ov(b,32)|0}else{g=c[e>>2]|0;c[f>>2]=(ov(b,8)|0)+g}if((ov(b,1)|0)==0){c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];a[f+21|0]=a[e+21|0]|0;a[f+22|0]=a[e+22|0]|0;a[f+23|0]=a[e+23|0]|0;c[f+16>>2]=c[e+16>>2];a[f+20|0]=a[e+20|0]|0;return}g=c[f>>2]^d;d=c[e+4>>2]|0;if((ov(b,1)|0)==0){h=d}else{d=ov(b,16)|0;h=c[4043]&g^d}c[f+4>>2]=h;h=c[e+8>>2]|0;if((ov(b,1)|0)==0){i=h}else{h=ov(b,16)|0;i=c[4043]&g^h}c[f+8>>2]=i;i=c[e+12>>2]|0;if((ov(b,1)|0)==0){j=i}else{i=ov(b,16)|0;j=c[4043]&g^i}c[f+12>>2]=j;j=a[e+21|0]|0;if((ov(b,1)|0)==0){k=j}else{j=ov(b,8)|0;k=(c[4035]&g^j)&255}a[f+21|0]=k<<24>>24==-128?-127:k;k=a[e+22|0]|0;if((ov(b,1)|0)==0){l=k}else{k=ov(b,8)|0;l=(c[4035]&g^k)&255}a[f+22|0]=l<<24>>24==-128?-127:l;l=a[e+23|0]|0;if((ov(b,1)|0)==0){m=l}else{l=ov(b,8)|0;m=(c[4035]&g^l)&255}a[f+23|0]=m<<24>>24==-128?-127:m;m=c[e+16>>2]|0;if((ov(b,1)|0)==0){n=m}else{m=ov(b,16)|0;n=c[4043]&g^m}c[f+16>>2]=n;n=a[e+20|0]|0;if((ov(b,1)|0)==0){o=n}else{n=ov(b,8)|0;o=(c[4035]&g^n)&255}a[f+20|0]=o;return}function Fv(){var a=0,b=0,d=0,e=0;a=i;b=0;do{d=c[19721376+(b<<2)>>2]|0;if((d|0)!=0){Sr(58432,(e=i,i=i+16|0,c[e>>2]=b,c[e+8>>2]=d,e)|0);i=e}b=b+1|0;}while((b|0)<256);i=a;return}function Gv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0;f=i;if((d|0)==0){if((b|0)==0){i=f;return}nv(a,c[b>>2]|0,10);nv(a,1,1);i=f;return}h=c[d>>2]|0;if(h>>>0>1023>>>0){Ur(0,102896,(j=i,i=i+8|0,c[j>>2]=h,j)|0);i=j}j=b;b=d;d=29032;k=0;l=0;while(1){m=c[d+4>>2]|0;n=l+1|0;o=(c[j+m>>2]|0)==(c[b+m>>2]|0)?k:n;if((n|0)<51){d=d+12|0;k=o;l=n}else{break}}if((o|0)==0){if((e|0)==0){i=f;return}nv(a,h,10);nv(a,0,1);nv(a,0,1);i=f;return}nv(a,h,10);nv(a,0,1);nv(a,1,1);nv(a,o,8);c[4938806]=(c[4938806]|0)+51;if((o|0)>0){p=29032;q=0}else{i=f;return}while(1){h=c[p+4>>2]|0;e=b+h|0;l=e;a:do{if((c[j+h>>2]|0)==(c[l>>2]|0)){nv(a,0,1)}else{nv(a,1,1);k=p+8|0;if((c[k>>2]|0)!=0){if((c[l>>2]|0)==0){nv(a,0,1);break}else{nv(a,1,1);nv(a,c[l>>2]|0,c[k>>2]|0);break}}r=+g[e>>2];k=~~r;if(r==0.0){nv(a,0,1);c[4938806]=(c[4938806]|0)+13;break}nv(a,1,1);do{if(+(k|0)==r){d=k+4096|0;if(!(d>>>0<8192>>>0)){break}nv(a,0,1);nv(a,d,13);break a}}while(0);nv(a,1,1);nv(a,c[l>>2]|0,32)}}while(0);l=q+1|0;if((l|0)<(o|0)){p=p+12|0;q=l}else{break}}i=f;return}function Hv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,j=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,A=0,B=0;f=i;if(e>>>0>1023>>>0){Ur(1,102032,(j=i,i=i+8|0,c[j>>2]=e,j)|0);i=j}l=a+28|0;m=c[l>>2]|0;n=a+24|0;o=c[n>>2]<<3;if((m|0)==0){p=o}else{p=m-8+o|0}if((ov(a,1)|0)==1){n$(d|0,0,208)|0;c[d>>2]=1023;o=c[5769190]|0;if((o|0)==0){i=f;return}m=c[o+32>>2]|0;if(!((m|0)>1|(m|0)==-1)){i=f;return}Sr(101232,(j=i,i=i+16|0,c[j>>2]=c[n>>2],c[j+8>>2]=e,j)|0);i=j;i=f;return}if((ov(a,1)|0)==0){m$(d|0,b|0,208)|0;c[d>>2]=e;i=f;return}m=(ov(a,8)|0)&255;o=c[n>>2]|0;q=(o|0)>(c[a+20>>2]|0)?-1:m;if(q>>>0>51>>>0){Ur(1,100048,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}m=c[5769190]|0;do{if((m|0)==0){r=0}else{s=c[m+32>>2]|0;if(!((s|0)>1|(s|0)==-1)){r=0;break}s=c[d>>2]|0;Sr(98936,(j=i,i=i+16|0,c[j>>2]=o,c[j+8>>2]=s,j)|0);i=j;r=1}}while(0);c[d>>2]=e;if((q|0)>0){e=d;o=b;if((r|0)==0){m=0;s=29032;while(1){t=c[s+4>>2]|0;u=e+t|0;v=u;do{if((ov(a,1)|0)==0){c[v>>2]=c[o+t>>2]}else{w=s+8|0;x=(c[w>>2]|0)==0;y=(ov(a,1)|0)==0;if(!x){if(y){c[v>>2]=0;break}else{c[v>>2]=ov(a,c[w>>2]|0)|0;break}}if(y){g[u>>2]=0.0;break}if((ov(a,1)|0)==0){g[u>>2]=+((ov(a,13)|0)-4096|0);break}else{c[v>>2]=ov(a,32)|0;break}}}while(0);v=m+1|0;if((v|0)<(q|0)){m=v;s=s+12|0}else{break}}}else{s=0;m=29032;while(1){v=c[m+4>>2]|0;u=e+v|0;t=u;do{if((ov(a,1)|0)==0){c[t>>2]=c[o+v>>2]}else{y=m+8|0;w=(c[y>>2]|0)==0;x=(ov(a,1)|0)==0;if(!w){if(x){c[t>>2]=0;break}else{w=ov(a,c[y>>2]|0)|0;c[t>>2]=w;Sr(64048,(j=i,i=i+16|0,c[j>>2]=c[m>>2],c[j+8>>2]=w,j)|0);i=j;break}}if(x){g[u>>2]=0.0;break}if((ov(a,1)|0)==0){x=(ov(a,13)|0)-4096|0;g[u>>2]=+(x|0);Sr(64048,(j=i,i=i+16|0,c[j>>2]=c[m>>2],c[j+8>>2]=x,j)|0);i=j;break}else{x=ov(a,32)|0;c[t>>2]=x;z=(c[k>>2]=x,+g[k>>2]);Sr(63152,(j=i,i=i+16|0,c[j>>2]=c[m>>2],h[j+8>>3]=z,j)|0);i=j;break}}}while(0);t=s+1|0;if((t|0)<(q|0)){s=t;m=m+12|0}else{break}}}if((q|0)<51){A=43}}else{A=43}if((A|0)==43){A=b;b=d;d=q;m=29032+(q*12|0)|0;while(1){q=c[m+4>>2]|0;c[b+q>>2]=c[A+q>>2];q=d+1|0;if((q|0)<51){d=q;m=m+12|0}else{break}}}if((r|0)==0){i=f;return}r=c[l>>2]|0;l=c[n>>2]<<3;if((r|0)==0){B=l}else{B=r-8+l|0}Sr(62216,(j=i,i=i+8|0,c[j>>2]=B-p,j)|0);i=j;i=f;return}function Iv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.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;e=i;i=i+472|0;f=e|0;if((b|0)==0){n$(f|0,0,468)|0;h=f}else{h=b}b=h;f=d;j=10056;k=0;l=0;while(1){m=c[j+4>>2]|0;n=k+1|0;o=(c[b+m>>2]|0)==(c[f+m>>2]|0)?l:n;if((n|0)<48){j=j+12|0;k=n;l=o}else{break}}nv(a,o,8);c[4938806]=48-o+(c[4938806]|0);if((o|0)>0){l=10056;k=0;while(1){j=c[l+4>>2]|0;n=f+j|0;m=n;a:do{if((c[b+j>>2]|0)==(c[m>>2]|0)){nv(a,0,1)}else{nv(a,1,1);p=c[l+8>>2]|0;if((p|0)!=0){nv(a,c[m>>2]|0,p);break}q=+g[n>>2];p=~~q;do{if(+(p|0)==q){r=p+4096|0;if(!(r>>>0<8192>>>0)){break}nv(a,0,1);nv(a,r,13);break a}}while(0);nv(a,1,1);nv(a,c[m>>2]|0,32)}}while(0);m=k+1|0;if((m|0)<(o|0)){l=l+12|0;k=m}else{s=0;t=0;break}}}else{s=0;t=0}while(1){if((c[d+184+(t<<2)>>2]|0)==(c[h+184+(t<<2)>>2]|0)){u=s}else{u=1<>2]|0)==(c[h+248+(w<<2)>>2]|0)){x=v}else{x=1<>2]|0)==(c[h+376+(z<<2)>>2]|0)){A=y}else{A=1<>2]|0)==(c[h+312+(C<<2)>>2]|0)){D=B}else{D=1<>2]|0,16)}C=C+1|0;}while((C|0)<16)}else{nv(a,0,1)}if(B){nv(a,0,1)}else{nv(a,1,1);nv(a,x,16);B=0;do{if((1<>2]|0,16)}B=B+1|0;}while((B|0)<16)}if(h){nv(a,0,1)}else{nv(a,1,1);nv(a,A,16);h=0;do{if((1<>2]|0,16)}h=h+1|0;}while((h|0)<16)}if(z){nv(a,0,1);E=468;F=0;i=e;return}nv(a,1,1);nv(a,D,16);z=0;do{if((1<>2]|0,32)}z=z+1|0;}while((z|0)<16);E=468;F=0;i=e;return}function Jv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,j=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,A=0,B=0,C=0,D=0;e=i;i=i+472|0;f=e|0;if((b|0)==0){n$(f|0,0,468)|0;j=f}else{j=b}b=d;f=j;m$(b|0,f|0,468)|0;j=a+28|0;l=c[j>>2]|0;m=a+24|0;n=c[m>>2]|0;o=n<<3;if((l|0)==0){p=o}else{p=l-8+o|0}o=c[5769190]|0;do{if((o|0)==0){q=0}else{l=c[o+32>>2]|0;if(!((l|0)>1|(l|0)==-2)){q=0;break}Sr(184096,(r=i,i=i+8|0,c[r>>2]=n,r)|0);i=r;q=1}}while(0);n=(ov(a,8)|0)&255;o=a+20|0;l=(c[m>>2]|0)>(c[o>>2]|0)?-1:n;if(l>>>0>48>>>0){Ur(1,183648,(r=i,i=i+1|0,i=i+7&-8,c[r>>2]=0,r)|0);i=r}if((l|0)>0){n=(q|0)==0;s=0;t=10056;while(1){u=c[t+4>>2]|0;v=b+u|0;w=v;do{if((ov(a,1)|0)==0){c[w>>2]=c[f+u>>2]}else{x=c[t+8>>2]|0;if((x|0)!=0){y=ov(a,x)|0;c[w>>2]=y;if(n){break}Sr(64048,(r=i,i=i+16|0,c[r>>2]=c[t>>2],c[r+8>>2]=y,r)|0);i=r;break}if((ov(a,1)|0)==0){y=(ov(a,13)|0)-4096|0;g[v>>2]=+(y|0);if(n){break}Sr(64048,(r=i,i=i+16|0,c[r>>2]=c[t>>2],c[r+8>>2]=y,r)|0);i=r;break}else{y=ov(a,32)|0;c[w>>2]=y;if(n){break}z=(c[k>>2]=y,+g[k>>2]);Sr(63152,(r=i,i=i+16|0,c[r>>2]=c[t>>2],h[r+8>>3]=z,r)|0);i=r;break}}}while(0);w=s+1|0;if((w|0)<(l|0)){s=w;t=t+12|0}else{break}}if((l|0)<48){A=24}}else{A=24}if((A|0)==24){A=l;t=10056+(l*12|0)|0;while(1){l=c[t+4>>2]|0;c[b+l>>2]=c[f+l>>2];l=A+1|0;if((l|0)<48){A=l;t=t+12|0}else{break}}}do{if((ov(a,1)|0)!=0){if((ov(a,1)|0)!=0){t=c[5769190]|0;do{if((t|0)!=0){if((c[t+32>>2]|0)!=4){break}Sr(183360,(r=i,i=i+8|0,c[r>>2]=182896,r)|0);i=r}}while(0);t=ov(a,16)|0;A=0;do{if((1<>16;c[d+184+(A<<2)>>2]=(c[m>>2]|0)>(c[o>>2]|0)?-1:f}A=A+1|0;}while((A|0)<16)}if((ov(a,1)|0)!=0){A=c[5769190]|0;do{if((A|0)!=0){if((c[A+32>>2]|0)!=4){break}Sr(183360,(r=i,i=i+8|0,c[r>>2]=182592,r)|0);i=r}}while(0);A=ov(a,16)|0;t=0;do{if((1<>16;c[d+248+(t<<2)>>2]=(c[m>>2]|0)>(c[o>>2]|0)?-1:f}t=t+1|0;}while((t|0)<16)}if((ov(a,1)|0)!=0){t=c[5769190]|0;do{if((t|0)!=0){if((c[t+32>>2]|0)!=4){break}Sr(183360,(r=i,i=i+8|0,c[r>>2]=182352,r)|0);i=r}}while(0);t=ov(a,16)|0;A=0;do{if((1<>16;c[d+376+(A<<2)>>2]=(c[m>>2]|0)>(c[o>>2]|0)?-1:f}A=A+1|0;}while((A|0)<16)}if((ov(a,1)|0)==0){break}A=c[5769190]|0;do{if((A|0)!=0){if((c[A+32>>2]|0)!=4){break}Sr(183360,(r=i,i=i+8|0,c[r>>2]=182120,r)|0);i=r}}while(0);A=ov(a,16)|0;t=0;do{if((1<>2]=(c[m>>2]|0)>(c[o>>2]|0)?-1:f}t=t+1|0;}while((t|0)<16)}}while(0);if((q|0)==0){B=468;C=0;i=e;return}q=c[j>>2]|0;j=c[m>>2]<<3;if((q|0)==0){D=j}else{D=q-8+j|0}Sr(62216,(r=i,i=i+8|0,c[r>>2]=D-p,r)|0);i=r;B=468;C=0;i=e;return}function Kv(a){a=a|0;var b=0,d=0,e=0;b=i;c[540204]=gt(161792,179008,256)|0;c[540206]=gt(150128,179008,256)|0;d=pC(120664,(e=i,i=i+8|0,c[e>>2]=a&65535,e)|0)|0;i=e;c[4919930]=gt(131328,d,16)|0;i=b;return}function Lv(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;g=i;h=d;d=i;i=i+32|0;m$(d,h,32)|0;n$(b|0,0,32852)|0;c[b>>2]=a;m$(b+8|0,d|0,32)|0;c[b+40>>2]=e;c[b+44>>2]=0;c[b+48>>2]=1;c[b+32840>>2]=f;i=g;return}function Mv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;i=i+1432|0;d=b|0;iv(d,b+32|0,1400);e=a+48|0;sv(d,c[e>>2]|-2147483648);f=a|0;if((c[f>>2]|0)==0){rv(d,c[(c[4919930]|0)+32>>2]|0)}g=c[a+32840>>2]|0;sv(d,(da(c[e>>2]|0,g)|0)^g);g=a+16448|0;h=c[g>>2]|0;j=a+16452|0;k=c[j>>2]|0;l=(h+1300|0)>(k|0)?k-h|0:1300;rv(d,h);rv(d,l);qv(d,(c[g>>2]|0)+(a+16456)|0,l);h=d+20|0;Nv(c[f>>2]|0,c[h>>2]|0,c[d+12>>2]|0,a+8|0);c[a+32844>>2]=wf()|0;d=c[h>>2]|0;c[a+32848>>2]=d;if((c[(c[540204]|0)+32>>2]|0)!=0){h=c[e>>2]|0;k=c[g>>2]|0;Sr(109952,(m=i,i=i+40|0,c[m>>2]=c[11024+(c[f>>2]<<2)>>2],c[m+8>>2]=d,c[m+16>>2]=h,c[m+24>>2]=k,c[m+32>>2]=l,m)|0);i=m}m=(c[g>>2]|0)+l|0;c[g>>2]=m;if((m|0)!=(c[j>>2]|0)|(l|0)==1300){n=1400;o=0;i=b;return}c[e>>2]=(c[e>>2]|0)+1;c[a+16444>>2]=0;n=1400;o=0;i=b;return}function Nv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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;f=i;i=i+64|0;h=e;e=i;i=i+32|0;m$(e,h,32)|0;h=f|0;j=f+32|0;do{if((c[(c[540204]|0)+32>>2]|0)!=0){if(!((c[d>>2]|0)==-1)){break}Sr(167200,(k=i,i=i+8|0,c[k>>2]=b,k)|0);i=k}}while(0);k=c[e>>2]|0;if((k|0)==2){l=a^1;m=19841068+(l*22472|0)|0;n=c[m>>2]|0;o=n&15;c[m>>2]=n+1;m$(19818600+(l*22472|0)+(o*1404|0)|0,d|0,b)|0;c[19818600+(l*22472|0)+(o*1404|0)+1400>>2]=b;i=f;return}else if((k|0)==1|(k|0)==0){i=f;return}else{do{if((a|0)==1){k=c[(c[453920]|0)+32>>2]|0;if((k|0)<=0){break}o=j;m$(o|0,e|0,32)|0;l=c[4938792]|0;n=hs(48)|0;m=n;p=hs(b)|0;c[n+8>>2]=p;m$(p|0,d|0,b)|0;c[n+4>>2]=b;m$(n+12|0,o|0,32)|0;o=wf()|0;c[n+44>>2]=~~(((k|0)>999?999.0:+(k|0))/+g[(c[5451064]|0)+28>>2])+o;c[n>>2]=0;if((c[4938792]|0)==0){c[4938792]=m;i=f;return}else{q=l}do{if((q|0)==0){r=20;break}s=q|0;q=c[s>>2]|0;}while((q|0)!=0);if((r|0)==20){i=f;return}c[s>>2]=m;i=f;return}else if((a|0)==0){l=c[(c[5811724]|0)+32>>2]|0;if((l|0)<=0){break}n=h;m$(n|0,e|0,32)|0;o=c[4938792]|0;k=hs(48)|0;p=k;t=hs(b)|0;c[k+8>>2]=t;m$(t|0,d|0,b)|0;c[k+4>>2]=b;m$(k+12|0,n|0,32)|0;n=wf()|0;c[k+44>>2]=~~(((l|0)>999?999.0:+(l|0))/+g[(c[5451064]|0)+28>>2])+n;c[k>>2]=0;if((c[4938792]|0)==0){c[4938792]=p;i=f;return}else{u=o}do{if((u|0)==0){r=20;break}v=u|0;u=c[v>>2]|0;}while((u|0)!=0);if((r|0)==20){i=f;return}c[v>>2]=p;i=f;return}}while(0);cw(b,d,e);i=f;return}}function Ov(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+1432|0;f=e|0;if((b|0)>16384){Ur(1,100384,(g=i,i=i+8|0,c[g>>2]=b,g)|0);i=g}c[a+16448>>2]=0;if((b|0)>1299){c[a+16444>>2]=1;c[a+16452>>2]=b;m$(a+16456|0,d|0,b)|0;Mv(a);h=1400;j=0;i=e;return}iv(f,e+32|0,1400);k=a+48|0;sv(f,c[k>>2]|0);l=a|0;if((c[l>>2]|0)==0){rv(f,c[(c[4919930]|0)+32>>2]|0)}m=c[a+32840>>2]|0;sv(f,(da(c[k>>2]|0,m)|0)^m);c[k>>2]=(c[k>>2]|0)+1;qv(f,d,b);b=f+20|0;Nv(c[l>>2]|0,c[b>>2]|0,c[f+12>>2]|0,a+8|0);c[a+32844>>2]=wf()|0;f=c[b>>2]|0;c[a+32848>>2]=f;if((c[(c[540204]|0)+32>>2]|0)==0){h=1400;j=0;i=e;return}b=(c[k>>2]|0)-1|0;k=c[a+44>>2]|0;Sr(58272,(g=i,i=i+32|0,c[g>>2]=c[11024+(c[l>>2]<<2)>>2],c[g+8>>2]=f,c[g+16>>2]=b,c[g+24>>2]=k,g)|0);i=g;h=1400;j=0;i=e;return}function Pv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;lv(b);e=xv(b)|0;f=(e|0)<0;g=f?e&2147483647:e;e=a|0;if((c[e>>2]|0)==1){wv(b)|0}h=xv(b)|0;j=c[a+32840>>2]|0;if(((da(j,g)|0)^j|0)!=(h|0)){k=0;i=d;return k|0}if(f){h=wv(b)|0;l=wv(b)|0;m=h}else{l=0;m=0}do{if((c[(c[540204]|0)+32>>2]|0)!=0){h=c[11024+(c[e>>2]<<2)>>2]|0;j=c[b+20>>2]|0;if(f){Sr(51576,(n=i,i=i+40|0,c[n>>2]=h,c[n+8>>2]=j,c[n+16>>2]=g,c[n+24>>2]=m,c[n+32>>2]=l,n)|0);i=n;break}else{Sr(46336,(n=i,i=i+24|0,c[n>>2]=h,c[n+8>>2]=j,c[n+16>>2]=g,n)|0);i=n;break}}}while(0);e=a+44|0;j=c[e>>2]|0;if((g|0)<=(j|0)){do{if((c[(c[540206]|0)+32>>2]|0)==0){if((c[(c[540204]|0)+32>>2]|0)==0){k=0}else{break}i=d;return k|0}}while(0);h=Zv(a+8|0)|0;o=c[e>>2]|0;Sr(185480,(n=i,i=i+24|0,c[n>>2]=h,c[n+8>>2]=g,c[n+16>>2]=o,n)|0);i=n;k=0;i=d;return k|0}o=g-1-j|0;j=a+4|0;c[j>>2]=o;do{if((o|0)>0){if((c[(c[540206]|0)+32>>2]|0)==0){if((c[(c[540204]|0)+32>>2]|0)==0){break}}h=Zv(a+8|0)|0;p=c[j>>2]|0;Sr(181576,(n=i,i=i+24|0,c[n>>2]=h,c[n+8>>2]=p,c[n+16>>2]=g,n)|0);i=n}}while(0);if(!f){c[e>>2]=g;k=1;i=d;return k|0}f=a+52|0;if((g|0)==(c[f>>2]|0)){q=c[a+56>>2]|0}else{c[f>>2]=g;c[a+56>>2]=0;q=0}f=a+56|0;if((m|0)!=(q|0)){do{if((c[(c[540206]|0)+32>>2]|0)==0){if((c[(c[540204]|0)+32>>2]|0)==0){k=0}else{break}i=d;return k|0}}while(0);q=Zv(a+8|0)|0;Sr(176856,(n=i,i=i+8|0,c[n>>2]=q,n)|0);i=n;k=0;i=d;return k|0}do{if((l|0)>=0){q=b+24|0;j=c[q>>2]|0;o=b+20|0;if((j+l|0)>(c[o>>2]|0)){break}if((m+l|0)>>>0>16384>>>0){break}p=b+12|0;m$(a+60+m|0,(c[p>>2]|0)+j|0,l)|0;j=(c[f>>2]|0)+l|0;c[f>>2]=j;if((l|0)==1300){k=0;i=d;return k|0}if((j|0)>(c[b+16>>2]|0)){j=Zv(a+8|0)|0;h=c[f>>2]|0;Sr(170240,(n=i,i=i+16|0,c[n>>2]=j,c[n+8>>2]=h,n)|0);i=n;k=0;i=d;return k|0}else{h=c[p>>2]|0;c[h>>2]=g;m$(h+4|0,a+60|0,c[f>>2]|0)|0;c[o>>2]=(c[f>>2]|0)+4;c[f>>2]=0;c[q>>2]=4;c[b+28>>2]=32;c[e>>2]=g;k=1;i=d;return k|0}}}while(0);do{if((c[(c[540206]|0)+32>>2]|0)==0){if((c[(c[540204]|0)+32>>2]|0)==0){k=0}else{break}i=d;return k|0}}while(0);g=Zv(a+8|0)|0;Sr(173368,(n=i,i=i+8|0,c[n>>2]=g,n)|0);i=n;k=0;i=d;return k|0}function Qv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=c[19841068+(a*22472|0)>>2]|0;f=19841064+(a*22472|0)|0;g=c[f>>2]|0;do{if((e-g|0)>16){h=e-16|0;c[f>>2]=h;i=h}else{if((g|0)<(e|0)){i=g;break}else{j=0}return j|0}}while(0);g=i&15;c[f>>2]=i+1;i=19818600+(a*22472|0)+(g*1404|0)+1400|0;m$(c[d+12>>2]|0,19818600+(a*22472|0)+(g*1404|0)|0,c[i>>2]|0)|0;c[d+20>>2]=c[i>>2];n$(b|0,0,32)|0;c[b>>2]=2;j=1;return j|0}function Rv(){var a=0,b=0,d=0;if((c[4938792]|0)==0){return}while(1){a=wf()|0;b=c[4938792]|0;if((c[b+44>>2]|0)>=(a|0)){d=4;break}cw(c[b+4>>2]|0,c[b+8>>2]|0,b+12|0);b=c[4938792]|0;c[4938792]=c[b>>2];es(c[b+8>>2]|0);es(b);if((c[4938792]|0)==0){d=4;break}}if((d|0)==4){return}}function Sv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16400|0;g=b;b=i;i=i+32|0;m$(b,g,32)|0;g=f|0;h=f+16|0;j=h|0;k=g;c[h>>2]=-1;c[k>>2]=e;c[k+4>>2]=0;Xe(h+4|0,16380,d|0,g|0)|0;Nv(a,o$(j|0)|0,j,b);i=f;return}function Tv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+32800|0;g=b;b=i;i=i+32|0;m$(b,g,32)|0;g=f|0;h=f+32768|0;c[g>>2]=-1;if((e|0)>0){m$(g+4|0,d|0,e)|0}d=h+12|0;c[d>>2]=g;g=h+20|0;c[g>>2]=e+4;Aw(h,12);Nv(a,c[g>>2]|0,c[d>>2]|0,b);i=f;return}function Uv(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;i=i+1024|0;h=g|0;j=h|0;if((k$(d,163560)|0)==0){n$(e|0,0,32)|0;c[e>>2]=2;k=1;l=1024;m=0;i=g;return k|0}TB(j,d,1024);do{if((a[j]|0)==91){n=5}else{if((oC(j,58)|0)>1){n=5;break}d=sg(j|0,58)|0;if((d|0)==0){o=0;p=j;break}a[d]=0;o=d+1|0;p=j}}while(0);if((n|0)==5){n=sg(j|0,93)|0;if((n|0)==0){q=0}else{a[n]=0;q=(a[n+1|0]|0)==58?n+2|0:0}o=q;p=(a[j]|0)==91?h+1|0:j}if((Vv(p,e,f)|0)==0){c[e>>2]=0;k=0;l=1024;m=0;i=g;return k|0}if((o|0)==0){b[e+24>>1]=YB(27960)|0;k=2;l=1024;m=0;i=g;return k|0}else{b[e+24>>1]=YB((oj(o|0)|0)&65535)|0;k=1;l=1024;m=0;i=g;return k|0}return 0}function Vv(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+128|0;g=f|0;if((e|0)==4){h=2}else if((e|0)==5){h=10}else{h=0}e=g;do{if((Wv(a,e,128,h)|0)==0){j=0}else{k=b[g>>1]|0;if((k<<16>>16|0)==10){c[d>>2]=5;m$(d+8|0,g+8|0,16)|0;b[d+24>>1]=b[e+2>>1]|0;c[d+28>>2]=c[g+24>>2];j=1;break}else if((k<<16>>16|0)==2){c[d>>2]=4;c[d+4>>2]=c[g+4>>2];b[d+24>>1]=b[e+2>>1]|0;j=1;break}else{j=1;break}}}while(0);i=f;return j|0}function Wv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;f=i;i=i+40|0;g=f|0;h=f+32|0;c[h>>2]=0;j=b;n$(j|0,0,16)|0;n$(g|0,0,32)|0;b=e&65535;c[g+4>>2]=b;c[g+8>>2]=2;k=hb(a|0,0,g|0,h|0)|0;do{if((k|0)==0){a:do{if(e<<16>>16==0){g=c[(c[4939866]|0)+32>>2]|0;if((g&4|0)==0){do{if((g&1|0)!=0){l=c[h>>2]|0;if((l|0)==0){break}else{m=l}do{if((c[m+4>>2]|0)==2){n=m;o=l;break a}m=c[m+28>>2]|0;}while((m|0)!=0)}}while(0);if((g&2|0)==0){p=26;break}l=c[h>>2]|0;if((l|0)==0){p=26;break}else{q=l}while(1){if((c[q+4>>2]|0)==10){n=q;o=l;break a}r=c[q+28>>2]|0;if((r|0)==0){p=26;break}else{q=r}}}else{do{if((g&2|0)!=0){l=c[h>>2]|0;if((l|0)==0){break}else{s=l}do{if((c[s+4>>2]|0)==10){n=s;o=l;break a}s=c[s+28>>2]|0;}while((s|0)!=0)}}while(0);if((g&1|0)==0){p=26;break}l=c[h>>2]|0;if((l|0)==0){p=26;break}else{t=l}while(1){if((c[t+4>>2]|0)==2){n=t;o=l;break a}r=c[t+28>>2]|0;if((r|0)==0){p=26;break}else{t=r}}}}else{l=c[h>>2]|0;if((l|0)==0){p=26;break}else{u=l}while(1){if((c[u+4>>2]|0)==(b|0)){n=u;o=l;break a}g=c[u+28>>2]|0;if((g|0)==0){p=26;break}else{u=g}}}}while(0);if((p|0)==26){Sr(63064,(v=i,i=i+8|0,c[v>>2]=a,v)|0);i=v;break}l=n+16|0;g=c[l>>2]|0;if(g>>>0>d>>>0){c[l>>2]=d;w=d}else{w=g}m$(j|0,c[n+20>>2]|0,w)|0;Ai(o|0);x=1;i=f;return x|0}else{g=gh(k|0)|0;Sr(62128,(v=i,i=i+16|0,c[v>>2]=a,c[v+8>>2]=g,v)|0);i=v}}while(0);v=c[h>>2]|0;if((v|0)==0){x=0;i=f;return x|0}Ai(v|0);x=0;i=f;return x|0}function Xv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;g=b;b=i;i=i+32|0;m$(b,g,32)|0;g=d;d=i;i=i+32|0;m$(d,g,32)|0;g=c[b>>2]|0;if((g|0)!=(c[d>>2]|0)){h=0;i=f;return h|0}if((g|0)==5){j=d+8|0;k=b+8|0;l=e>>>0>128>>>0?128:e}else if((g|0)==4){j=d+4|0;k=b+4|0;l=e>>>0>32>>>0?32:e}else if((g|0)==2){h=1;i=f;return h|0}else{Sr(160872,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;h=0;i=f;return h|0}g=l>>3;do{if((g|0)!=0){if((j$(k,j,g)|0)==0){break}else{h=0}i=f;return h|0}}while(0);e=l&7;if((e|0)==0){h=1;i=f;return h|0}h=(((1<>2]|0;if((b|0)!=(c[e>>2]|0)){g=0;i=d;return g|0}if((b|0)==5){h=e+8|0;j=f+8|0;k=16}else if((b|0)==2){g=1;i=d;return g|0}else if((b|0)==4){h=e+4|0;j=f+4|0;k=4}else{Sr(160872,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;g=0;i=d;return g|0}g=(j$(j,h,k)|0)==0|0;i=d;return g|0}function Zv(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+128|0;f=d;d=i;i=i+32|0;m$(d,f,32)|0;f=e|0;g=c[d>>2]|0;if((g|0)==1){$B(29475352,48,150096,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0)|0;i=h;i=e;return 29475352}else if((g|0)==2){$B(29475352,48,178840,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0)|0;i=h;i=e;return 29475352}else if((g|0)==4|(g|0)==5){n$(f|0,0,128)|0;h=f;if((g|0)==5){b[f>>1]=10;j=f+8|0;k=d+8|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];b[h+2>>1]=b[d+24>>1]|0;c[f+24>>2]=c[d+28>>2];l=28}else if((g|0)==4){b[f>>1]=2;c[f+4>>2]=c[d+4>>2];b[h+2>>1]=b[d+24>>1]|0;l=16}else{l=16}if((Pi(h|0,l|0,29475352,48,0,0,1)|0)==0){i=e;return 29475352}a[29475352]=0;i=e;return 29475352}else{i=e;return 29475352}return 0}function _v(e){e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;i=i+256|0;g=e;e=i;i=i+32|0;m$(e,g,32)|0;g=f|0;h=f+128|0;j=c[e>>2]|0;if((j|0)==2){$B(29475304,48,178840,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0)|0;i=k;i=f;return 29475304}else if((j|0)==4){l=e+4|0;m=d[l]|d[l+1|0]<<8|d[l+2|0]<<16|d[l+3|0]<<24|0;l=e+24|0;n=(d[l]|d[l+1|0]<<8)<<16>>16;n$(h|0,0,128)|0;l=h;b[h>>1]=2;c[h+4>>2]=m;b[l+2>>1]=n;if((Pi(l|0,16,29475352,48,0,0,1)|0)!=0){a[29475352]=0}l=(Hj(n|0)|0)&65535;$B(29475304,48,131240,(k=i,i=i+16|0,c[k>>2]=29475352,c[k+8>>2]=l,k)|0)|0;i=k;i=f;return 29475304}else if((j|0)==5){l=e+24|0;n=(d[l]|d[l+1|0]<<8)<<16>>16;l=e+28|0;m=d[l]|d[l+1|0]<<8|d[l+2|0]<<16|d[l+3|0]<<24|0;n$(g|0,0,128)|0;l=g;b[g>>1]=10;m$(g+8|0,e+8|0,16)|0;b[l+2>>1]=n;c[g+24>>2]=m;if((Pi(l|0,28,29475352,48,0,0,1)|0)!=0){a[29475352]=0}l=(Hj(n|0)|0)&65535;$B(29475304,48,120632,(k=i,i=i+16|0,c[k>>2]=29475352,c[k+8>>2]=l,k)|0)|0;i=k;i=f;return 29475304}else if((j|0)==1){$B(29475304,48,150096,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0)|0;i=k;i=f;return 29475304}else{i=f;return 29475304}return 0}function $v(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+64|0;f=a;a=i;i=i+32|0;m$(a,f,32)|0;f=d;d=i;i=i+32|0;m$(d,f,32)|0;f=e|0;g=e+32|0;m$(g|0,a|0,32)|0;m$(f|0,d|0,32)|0;h=c[g>>2]|0;if((h|0)!=(c[f>>2]|0)){j=0;i=e;return j|0}if((h|0)==4){k=f+4|0;l=g+4|0;m=4;n=6}else if((h|0)==5){k=f+8|0;l=g+8|0;m=16;n=6}else if((h|0)!=2){Sr(160872,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=0;i=e;return j|0}do{if((n|0)==6){if((j$(l,k,m)|0)==0){break}else{j=0}i=e;return j|0}}while(0);if(!(((c[a>>2]|0)-4|0)>>>0<2>>>0)){j=1;i=e;return j|0}j=(b[a+24>>1]|0)==(b[d+24>>1]|0)|0;i=e;return j|0}function aw(a){a=a|0;var b=0,d=0;b=i;d=a;a=i;i=i+32|0;m$(a,d,32)|0;i=b;return(c[a>>2]|0)==2|0}function bw(e,f,g){e=e|0;f=f|0;g=g|0;var h=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,J=0,K=0;h=i;i=i+568|0;j=h|0;k=h+128|0;l=h+144|0;m=h+272|0;n=h+288|0;o=h+416|0;p=h+432|0;q=h+560|0;r=p;s=c[4908]|0;do{if(!((s|0)==-1)){if((c[g+(s>>>5<<2)>>2]&1<<(s&31)|0)==0){break}c[q>>2]=128;t=f+12|0;u=f+16|0;v=p;w=Fb(s|0,c[t>>2]|0,c[u>>2]|0,0,v|0,q|0)|0;if((w|0)==-1){x=c[(Fc()|0)>>2]|0;if((x|0)==104|(x|0)==11){break}y=Gc(x|0)|0;Sr(109912,(z=i,i=i+8|0,c[z>>2]=y,z)|0);i=z;break}y=p+8|0;c[y>>2]=0;c[y+4>>2]=0;do{if(a[1168]|0){if((j$(r,2156480,c[q>>2]|0)|0)!=0){A=14;break}if((w|0)<10){B=0;C=128;D=0;i=h;return B|0}y=c[t>>2]|0;if((a[y]|0)!=0){B=0;C=128;D=0;i=h;return B|0}if((a[y+1|0]|0)!=0){B=0;C=128;D=0;i=h;return B|0}if((a[y+2|0]|0)!=0){B=0;C=128;D=0;i=h;return B|0}if((a[y+3|0]|0)==1){c[e>>2]=4;a[e+4|0]=a[(c[t>>2]|0)+4|0]|0;a[e+5|0]=a[(c[t>>2]|0)+5|0]|0;a[e+6|0]=a[(c[t>>2]|0)+6|0]|0;a[e+7|0]=a[(c[t>>2]|0)+7|0]|0;b[e+24>>1]=b[(c[t>>2]|0)+8>>1]|0;c[f+24>>2]=10;break}else{B=0;C=128;D=0;i=h;return B|0}}else{A=14}}while(0);if((A|0)==14){t=b[p>>1]|0;if((t<<16>>16|0)==2){c[e>>2]=4;c[e+4>>2]=c[p+4>>2];b[e+24>>1]=b[v+2>>1]|0}else if((t<<16>>16|0)==10){c[e>>2]=5;m$(e+8|0,p+8|0,16)|0;b[e+24>>1]=b[v+2>>1]|0;c[e+28>>2]=c[p+24>>2]}c[f+24>>2]=0}if((w|0)<(c[u>>2]|0)){c[f+20>>2]=w;B=1;C=128;D=0;i=h;return B|0}t=e|0;y=d[t]|d[t+1|0]<<8|d[t+2|0]<<16|d[t+3|0]<<24|0;t=e+4|0;x=d[t]|d[t+1|0]<<8|d[t+2|0]<<16|d[t+3|0]<<24|0;t=o|0;m$(t|0,e+8|0,16)|0;E=e+24|0;F=(d[E]|d[E+1|0]<<8)<<16>>16;E=e+28|0;G=d[E]|d[E+1|0]<<8|d[E+2|0]<<16|d[E+3|0]<<24|0;do{if((y|0)==2){$B(29475352,48,178840,(z=i,i=i+1|0,i=i+7&-8,c[z>>2]=0,z)|0)|0;i=z}else if((y|0)==4|(y|0)==5){n$(n|0,0,128)|0;E=n;if((y|0)==5){b[n>>1]=10;H=n+8|0;c[H>>2]=c[t>>2];c[H+4>>2]=c[t+4>>2];c[H+8>>2]=c[t+8>>2];c[H+12>>2]=c[t+12>>2];b[E+2>>1]=F;c[n+24>>2]=G;I=28}else if((y|0)==4){b[n>>1]=2;c[n+4>>2]=x;b[E+2>>1]=F;I=16}else{I=16}if((Pi(E|0,I|0,29475352,48,0,0,1)|0)==0){break}a[29475352]=0}else if((y|0)==1){$B(29475352,48,150096,(z=i,i=i+1|0,i=i+7&-8,c[z>>2]=0,z)|0)|0;i=z}}while(0);Sr(100336,(z=i,i=i+8|0,c[z>>2]=29475352,z)|0);i=z;B=0;C=128;D=0;i=h;return B|0}}while(0);I=c[4910]|0;do{if(!((I|0)==-1)){if((c[g+(I>>>5<<2)>>2]&1<<(I&31)|0)==0){break}c[q>>2]=128;n=f+16|0;o=p;A=Fb(I|0,c[f+12>>2]|0,c[n>>2]|0,0,o|0,q|0)|0;if((A|0)==-1){r=c[(Fc()|0)>>2]|0;if((r|0)==104|(r|0)==11){break}s=Gc(r|0)|0;Sr(109912,(z=i,i=i+8|0,c[z>>2]=s,z)|0);i=z;break}s=b[p>>1]|0;if((s<<16>>16|0)==2){c[e>>2]=4;c[e+4>>2]=c[p+4>>2];b[e+24>>1]=b[o+2>>1]|0}else if((s<<16>>16|0)==10){c[e>>2]=5;m$(e+8|0,p+8|0,16)|0;b[e+24>>1]=b[o+2>>1]|0;c[e+28>>2]=c[p+24>>2]}c[f+24>>2]=0;if((A|0)<(c[n>>2]|0)){c[f+20>>2]=A;B=1;C=128;D=0;i=h;return B|0}A=e|0;n=d[A]|d[A+1|0]<<8|d[A+2|0]<<16|d[A+3|0]<<24|0;A=e+4|0;o=d[A]|d[A+1|0]<<8|d[A+2|0]<<16|d[A+3|0]<<24|0;A=m|0;m$(A|0,e+8|0,16)|0;s=e+24|0;r=(d[s]|d[s+1|0]<<8)<<16>>16;s=e+28|0;y=d[s]|d[s+1|0]<<8|d[s+2|0]<<16|d[s+3|0]<<24|0;do{if((n|0)==2){$B(29475352,48,178840,(z=i,i=i+1|0,i=i+7&-8,c[z>>2]=0,z)|0)|0;i=z}else if((n|0)==1){$B(29475352,48,150096,(z=i,i=i+1|0,i=i+7&-8,c[z>>2]=0,z)|0)|0;i=z}else if((n|0)==4|(n|0)==5){n$(l|0,0,128)|0;s=l;if((n|0)==4){b[l>>1]=2;c[l+4>>2]=o;b[s+2>>1]=r;J=16}else if((n|0)==5){b[l>>1]=10;F=l+8|0;c[F>>2]=c[A>>2];c[F+4>>2]=c[A+4>>2];c[F+8>>2]=c[A+8>>2];c[F+12>>2]=c[A+12>>2];b[s+2>>1]=r;c[l+24>>2]=y;J=28}else{J=16}if((Pi(s|0,J|0,29475352,48,0,0,1)|0)==0){break}a[29475352]=0}}while(0);Sr(100336,(z=i,i=i+8|0,c[z>>2]=29475352,z)|0);i=z;B=0;C=128;D=0;i=h;return B|0}}while(0);J=c[2762]|0;if((J|0)==-1|(J|0)==(c[4910]|0)){B=0;C=128;D=0;i=h;return B|0}if((c[g+(J>>>5<<2)>>2]&1<<(J&31)|0)==0){B=0;C=128;D=0;i=h;return B|0}c[q>>2]=128;g=f+16|0;l=p;m=Fb(J|0,c[f+12>>2]|0,c[g>>2]|0,0,l|0,q|0)|0;if((m|0)==-1){q=c[(Fc()|0)>>2]|0;if((q|0)==104|(q|0)==11){B=0;C=128;D=0;i=h;return B|0}J=Gc(q|0)|0;Sr(109912,(z=i,i=i+8|0,c[z>>2]=J,z)|0);i=z;B=0;C=128;D=0;i=h;return B|0}J=b[p>>1]|0;if((J<<16>>16|0)==2){c[e>>2]=4;c[e+4>>2]=c[p+4>>2];b[e+24>>1]=b[l+2>>1]|0}else if((J<<16>>16|0)==10){c[e>>2]=5;m$(e+8|0,p+8|0,16)|0;b[e+24>>1]=b[l+2>>1]|0;c[e+28>>2]=c[p+24>>2]}c[f+24>>2]=0;if((m|0)<(c[g>>2]|0)){c[f+20>>2]=m;B=1;C=128;D=0;i=h;return B|0}m=e|0;f=d[m]|d[m+1|0]<<8|d[m+2|0]<<16|d[m+3|0]<<24|0;m=e+4|0;g=d[m]|d[m+1|0]<<8|d[m+2|0]<<16|d[m+3|0]<<24|0;m=k|0;m$(m|0,e+8|0,16)|0;k=e+24|0;p=(d[k]|d[k+1|0]<<8)<<16>>16;k=e+28|0;e=d[k]|d[k+1|0]<<8|d[k+2|0]<<16|d[k+3|0]<<24|0;do{if((f|0)==2){$B(29475352,48,178840,(z=i,i=i+1|0,i=i+7&-8,c[z>>2]=0,z)|0)|0;i=z}else if((f|0)==1){$B(29475352,48,150096,(z=i,i=i+1|0,i=i+7&-8,c[z>>2]=0,z)|0)|0;i=z}else if((f|0)==4|(f|0)==5){n$(j|0,0,128)|0;k=j;if((f|0)==4){b[j>>1]=2;c[j+4>>2]=g;b[k+2>>1]=p;K=16}else if((f|0)==5){b[j>>1]=10;l=j+8|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];b[k+2>>1]=p;c[j+24>>2]=e;K=28}else{K=16}if((Pi(k|0,K|0,29475352,48,0,0,1)|0)==0){break}a[29475352]=0}}while(0);Sr(100336,(z=i,i=i+8|0,c[z>>2]=29475352,z)|0);i=z;B=0;C=128;D=0;i=h;return B|0} + + + +function Sz(b){b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;i=i+32|0;e=d|0;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=d;return}if((nr()|0)!=2){g=or(0)|0;Sr(132928,(f=i,i=i+8|0,c[f>>2]=g,f)|0);i=f;i=d;return}g=or(1)|0;a:do{if((sg(g|0,46)|0)==0){if((sg(g|0,58)|0)!=0){h=7;break}j=oj(or(1)|0)|0;k=c[542754]|0;if((j|0)<1|(j|0)>(k|0)){Sr(126952,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=d;return}if((k|0)>0){l=0;m=0}else{break}while(1){if((c[2171060+(m*40|0)>>2]|0)==(b|0)){n=l+1|0;if((n|0)==(j|0)){break}else{o=n}}else{o=l}n=m+1|0;if((n|0)<(k|0)){l=o;m=n}else{break a}}k=Zv(2171024+(m*40|0)|0)|0;j=c[2171056+(m*40|0)>>2]|0;Sr(130728,(f=i,i=i+24|0,c[f>>2]=(b|0)!=0?129360:128256,c[f+8>>2]=k,c[f+16>>2]=j,f)|0);i=f;j=c[542754]|0;k=j-1|0;if((k|0)!=(m|0)){if(!(m>>>0<1023>>>0)){break}s$(2171024+(m*40|0)|0,2171024+((m+1|0)*40|0)|0,((j-m|0)*40|0)-40|0)|0}c[542754]=k}else{h=7}}while(0);b:do{if((h|0)==7){m=sg(g|0,47)|0;if((m|0)==0){p=0}else{a[m]=0;p=m+1|0}if((Uv(g,e,7)|0)==0){Sr(131912,(f=i,i=i+8|0,c[f>>2]=g,f)|0);i=f;i=d;return}do{if((p|0)==0){q=(c[e>>2]|0)==4?32:128}else{m=oj(p|0)|0;o=m-1|0;if((c[e>>2]|0)==4){q=o>>>0>31>>>0?32:m;break}else{q=o>>>0>127>>>0?128:m;break}}}while(0);m=c[542754]|0;if((m|0)<=0){break}o=(b|0)!=0?129360:128256;l=0;k=m;while(1){m=2171060+(l*40|0)|0;j=2171056+(l*40|0)|0;n=2171024+(l*40|0)|0;r=l>>>0<1023>>>0;s=2171024+(l*40|0)|0;t=l+1|0;u=2171024+(t*40|0)|0;v=k;while(1){if((c[m>>2]|0)!=(b|0)){w=v;break}if((c[j>>2]|0)<(q|0)){w=v;break}if((Xv(n,e,q)|0)==0){h=21;break}x=Zv(n)|0;y=c[j>>2]|0;Sr(130728,(f=i,i=i+24|0,c[f>>2]=o,c[f+8>>2]=x,c[f+16>>2]=y,f)|0);i=f;y=c[542754]|0;x=y-1|0;do{if((x|0)==(l|0)){h=26}else{if(!r){z=y;break}s$(s|0,u|0,((y-l|0)*40|0)-40|0)|0;h=26}}while(0);if((h|0)==26){h=0;c[542754]=x;z=x}if((l|0)<(z|0)){v=z}else{break b}}if((h|0)==21){h=0;w=c[542754]|0}if((t|0)<(w|0)){l=t;k=w}else{break}}}}while(0);Rz();i=d;return}function Tz(b){b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;i=i+80|0;e=d+48|0;f=d|0;if((c[(c[5451068]|0)+32>>2]|0)==0){Sr(139288,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;h=48;j=0;i=d;return}k=nr()|0;if((k-2|0)>>>0>1>>>0){l=or(0)|0;Sr(125616,(g=i,i=i+8|0,c[g>>2]=l,g)|0);i=g;h=48;j=0;i=d;return}if((c[542754]|0)>>>0>1024>>>0){Sr(124696,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;h=48;j=0;i=d;return}l=or(1)|0;do{if((sg(l|0,46)|0)==0){if((sg(l|0,58)|0)!=0){m=9;break}n=Uz()|0;if((n|0)==0){o=or(1)|0;Sr(123832,(g=i,i=i+8|0,c[g>>2]=o,g)|0);i=g;h=48;j=0;i=d;return}m$(e|0,n+84984|0,32)|0;if((k|0)!=3){n=c[e>>2]|0;p=(n|0)==5?128:32;q=n;m=25;break}n=oj(or(2)|0)|0;o=c[e>>2]|0;r=n-1|0;if((o|0)==4){s=r>>>0>31>>>0?32:n;break}else{p=r>>>0>127>>>0?128:n;q=o;m=25;break}}else{m=9}}while(0);do{if((m|0)==9){k=sg(l|0,47)|0;if((k|0)==0){t=0}else{a[k]=0;t=k+1|0}if((Uv(l,e,7)|0)==0){Sr(131912,(g=i,i=i+8|0,c[g>>2]=l,g)|0);i=g;h=48;j=0;i=d;return}if((t|0)==0){k=c[e>>2]|0;p=(k|0)==4?32:128;q=k;m=25;break}k=oj(t|0)|0;o=c[e>>2]|0;n=k-1|0;if((o|0)==4){s=n>>>0>31>>>0?32:k;break}else{p=n>>>0>127>>>0?128:k;q=o;m=25;break}}}while(0);do{if((m|0)==25){if((q-4|0)>>>0<2>>>0){s=p;break}Sr(123024,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;h=48;j=0;i=d;return}}while(0);p=c[542754]|0;a:do{if((p|0)>0){q=(b|0)!=0;t=(b|0)==0;l=0;b:while(1){o=2171024+(l*40|0)|0;u=2171056+(l*40|0)|0;k=c[u>>2]|0;do{if((k|0)>(s|0)){v=k}else{w=2171060+(l*40|0)|0;if(!((c[w>>2]|0)!=0|t)){v=k;break}x=o|0;if((Xv(x,e,k)|0)!=0){m=35;break b}v=c[u>>2]|0}}while(0);do{if((v|0)>=(s|0)){y=2171060+(l*40|0)|0;if((c[y>>2]|0)!=0|q^1){break}z=o|0;if((Xv(z,e,s)|0)!=0){m=39;break b}}}while(0);o=l+1|0;A=c[542754]|0;if((o|0)<(A|0)){l=o}else{m=29;break}}if((m|0)==29){if((A|0)<=0){B=A;break}l=(b|0)==0;t=0;while(1){o=2171056+(t*40|0)|0;k=2171060+(t*40|0)|0;n=2171024+(t*40|0)|0;r=t>>>0<1023>>>0;C=2171024+(t*40|0)|0;D=t+1|0;E=2171024+(D*40|0)|0;c:do{if(l){if(r){while(1){if((c[o>>2]|0)<=(s|0)){break c}if((c[k>>2]|0)!=0){break c}if((Xv(n,e,s)|0)==0){break c}F=c[542754]|0;G=F-1|0;if((G|0)!=(t|0)){s$(C|0,E|0,((F-t|0)*40|0)-40|0)|0}c[542754]=G;if((t|0)>=(G|0)){B=G;break a}}}else{while(1){if((c[o>>2]|0)<=(s|0)){break c}if((c[k>>2]|0)!=0){break c}if((Xv(n,e,s)|0)==0){break c}G=c[542754]|0;F=G-1|0;if((F|0)==(t|0)){c[542754]=F;H=F}else{H=G}if((t|0)>=(H|0)){B=H;break a}}}}else{if(r){while(1){if((c[o>>2]|0)<=(s|0)){break c}if((Xv(n,e,s)|0)==0){break c}G=c[542754]|0;F=G-1|0;if((F|0)!=(t|0)){s$(C|0,E|0,((G-t|0)*40|0)-40|0)|0}c[542754]=F;if((t|0)>=(F|0)){B=F;break a}}}else{while(1){if((c[o>>2]|0)<=(s|0)){break c}if((Xv(n,e,s)|0)==0){break c}F=c[542754]|0;G=F-1|0;if((G|0)==(t|0)){c[542754]=G;I=G}else{I=F}if((t|0)>=(I|0)){B=I;break a}}}}}while(0);n=c[542754]|0;if((D|0)<(n|0)){t=D}else{B=n;break}}}else if((m|0)==35){TB(f,Zv(e)|0,48);t=(c[w>>2]|0)!=0?121344:120224;l=Zv(x)|0;n=c[u>>2]|0;Sr(122184,(g=i,i=i+48|0,c[g>>2]=t,c[g+8>>2]=l,c[g+16>>2]=n,c[g+24>>2]=q?129360:128256,c[g+32>>2]=f,c[g+40>>2]=s,g)|0);i=g;h=48;j=0;i=d;return}else if((m|0)==39){TB(f,Zv(z)|0,48);n=Zv(e)|0;l=(c[y>>2]|0)!=0?129360:128256;t=c[u>>2]|0;Sr(118760,(g=i,i=i+48|0,c[g>>2]=121344,c[g+8>>2]=n,c[g+16>>2]=s,c[g+24>>2]=l,c[g+32>>2]=f,c[g+40>>2]=t,g)|0);i=g;h=48;j=0;i=d;return}}else{B=p}}while(0);m$(2171024+(B*40|0)|0,e|0,32)|0;c[2171056+(B*40|0)>>2]=s;c[2171060+(B*40|0)>>2]=b;c[542754]=B+1;Rz();B=Zv(e)|0;Sr(117608,(g=i,i=i+24|0,c[g>>2]=(b|0)!=0?116544:128256,c[g+8>>2]=B,c[g+16>>2]=s,g)|0);i=g;h=48;j=0;i=d;return}function Uz(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;if((c[(c[5451068]|0)+32>>2]|0)==0){d=0;i=b;return d|0}if((nr()|0)<2){Sr(115288,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;d=0;i=b;return d|0}f=or(1)|0;g=a[f]|0;a:do{if(!(g<<24>>24==0)){h=0;j=g;while(1){h=h+1|0;if((j-48&255)>>>0>9>>>0){break}j=a[f+h|0]|0;if(j<<24>>24==0){break a}}Sr(114e3,(e=i,i=i+8|0,c[e>>2]=f,e)|0);i=e;d=0;i=b;return d|0}}while(0);g=oj(f|0)|0;do{if((g|0)>=0){if((g|0)>=(c[(c[453930]|0)+32>>2]|0)){break}f=(c[422837]|0)+(g*121936|0)|0;if((c[f>>2]|0)!=0){d=f;i=b;return d|0}Sr(112072,(e=i,i=i+8|0,c[e>>2]=g,e)|0);i=e;d=0;i=b;return d|0}}while(0);Sr(113024,(e=i,i=i+8|0,c[e>>2]=g,e)|0);i=e;d=0;i=b;return d|0}function Vz(a,b){a=a|0;b=b|0;var d=0;b=c[a>>2]|0;d=c[b>>2]|0;if((b|0)!=0){W_(b)}W_(a);c[6924866]=(c[6924866]|0)-1;if((d|0)==0){kt(60600,96496);return}else{kt(60600,59904);return}}function Wz(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=i;i=i+64|0;d=b|0;if((c[(c[5451068]|0)+32>>2]|0)==0){e=0;f=64;g=0;i=b;return e|0}if((nr()|0)<2){Sr(115288,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;e=0;f=64;g=0;i=b;return e|0}j=or(1)|0;k=0;while(1){l=a[j+k|0]|0;if((l-48&255)>>>0<10>>>0){k=k+1|0}else{break}}do{if(l<<24>>24==0){k=oj(j|0)|0;if(!((k|0)>-1)){break}if((k|0)>=(c[(c[453930]|0)+32>>2]|0)){break}m=(c[422837]|0)+(k*121936|0)|0;if((c[m>>2]|0)==0){break}else{e=m}f=64;g=0;i=b;return e|0}}while(0);l=c[453930]|0;a:do{if((c[l+32>>2]|0)>0){m=0;k=c[422837]|0;n=l;while(1){if((c[k>>2]|0)==0){o=n}else{p=k+67648|0;if((VB(p,j)|0)==0){e=k;q=18;break}TB(d,p,64);nC(d)|0;if((VB(d,j)|0)==0){e=k;q=18;break}o=c[453930]|0}p=m+1|0;if((p|0)<(c[o+32>>2]|0)){m=p;k=k+121936|0;n=o}else{break a}}if((q|0)==18){f=64;g=0;i=b;return e|0}}}while(0);Sr(53e3,(h=i,i=i+8|0,c[h>>2]=j,h)|0);i=h;e=0;f=64;g=0;i=b;return e|0}function Xz(b){b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;e=b;b=i;i=i+32|0;m$(b,e,32)|0;if(+at(148400)==2.0){i=d;return}if(+at(176560)!=0.0){i=d;return}if((SA(b,10,1e3)|0)!=0){e=Zv(b)|0;Tr(149120,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;i=d;return}if((RA(19755184,10,100)|0)!=0){Tr(130608,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=d;return}e=or(2)|0;g=c[(c[5457508]|0)+4>>2]|0;do{if((a[e]|0)!=0){if((k$(e,g)|0)!=0){break}h=oj(or(1)|0)|0;j=2147483647;k=1691368;l=0;m=0;n=0;while(1){if((c[k+56>>2]|0)==0){o=($v(b,k|0)|0)==0;p=o?l:1}else{p=l}if((p|0)!=0&(n|0)>1023){q=m;r=16;break}o=c[k+40>>2]|0;s=(o|0)<(j|0);t=s?n:m;u=n+1|0;v=k+60|0;if((u|0)<2048){j=s?o:j;k=v;l=p;m=t;n=u}else{r=15;break}}if((r|0)==15){if((u|0)==2048){q=t;r=16}else{w=v}}if((r|0)==16){n=1691368+(q*60|0)|0;c[1691404+(q*60|0)>>2]=h;m$(n|0,b|0,32)|0;c[1691416+(q*60|0)>>2]=c[422835];c[1691424+(q*60|0)>>2]=0;w=n}n=(v$()|0)<<16;m=n^(v$()|0);n=m^c[422835];c[w+32>>2]=n;c[w+52>>2]=0;c[w+40>>2]=c[422835];c[w+44>>2]=c[422835];m=c[(c[5457224]|0)+32>>2]|0;Sv(1,w|0,109240,(f=i,i=i+24|0,c[f>>2]=n,c[f+8>>2]=h,c[f+16>>2]=m,f)|0);i=f;i=d;return}}while(0);Sv(1,b,120096,(f=i,i=i+8|0,c[f>>2]=g,f)|0);i=f;i=d;return}function Yz(a){a=a|0;var d=0,e=0,f=0,h=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.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;d=i;i=i+122960|0;e=a;a=i;i=i+32|0;m$(a,e,32)|0;e=d|0;f=d+1024|0;Tr(99848,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=c[542754]|0;a:do{if((j|0)>0){k=0;l=j;while(1){if((c[2171060+(k*40|0)>>2]|0)==1){if((Xv(2171024+(k*40|0)|0,a,c[2171056+(k*40|0)>>2]|0)|0)!=0){break a}m=c[542754]|0}else{m=l}n=k+1|0;if((n|0)<(m|0)){k=n;l=m}else{break}}if((m|0)>0){o=0;p=m}else{break}while(1){if((c[2171060+(o*40|0)>>2]|0)==0){if((Xv(2171024+(o*40|0)|0,a,c[2171056+(o*40|0)>>2]|0)|0)!=0){break}q=c[542754]|0}else{q=p}l=o+1|0;if((l|0)<(q|0)){o=l;p=q}else{break a}}Sv(1,a,57784,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;r=121936;s=0;t=1024;u=0;i=d;return}}while(0);TB(e,or(1)|0,1024);q=oj(rC(e,51264)|0)|0;p=c[(c[5457224]|0)+32>>2]|0;if((q|0)!=(p|0)){Sv(1,a,46072,(h=i,i=i+16|0,c[h>>2]=p,c[h+8>>2]=q,h)|0);i=h;Tr(185256,(h=i,i=i+8|0,c[h>>2]=q,h)|0);i=h;r=121936;s=0;t=1024;u=0;i=d;return}q=oj(rC(e,181344)|0)|0;p=oj(rC(e,176680)|0)|0;b:do{if((c[(c[453930]|0)+32>>2]|0)>0){o=a+24|0;m=c[422837]|0;j=0;c:while(1){do{if((c[m>>2]|0)!=0){if((Yv(a,m+84984|0)|0)==0){break}if((c[m+85016>>2]|0)==(p|0)){break c}if((b[o>>1]|0)==(b[m+85008>>1]|0)){break c}}}while(0);l=j+1|0;if((l|0)<(c[(c[453930]|0)+32>>2]|0)){m=m+121936|0;j=l}else{break b}}if(((c[422835]|0)-(c[m+68172>>2]|0)|0)>=((c[(c[453906]|0)+32>>2]|0)*1e3|0|0)){break}j=Zv(a)|0;Tr(173128,(h=i,i=i+8|0,c[h>>2]=j,h)|0);i=h;r=121936;s=0;t=1024;u=0;i=d;return}}while(0);if((aw(a)|0)==0){v=Zv(a)|0}else{v=170056}j=o$(v|0)|0;if((j+4+(o$(e|0)|0)|0)>>>0>1023>>>0){Sv(1,a,166632,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;r=121936;s=0;t=1024;u=0;i=d;return}vC(e,163328,v);if((aw(a)|0)==0){v=0;while(1){if(($v(a,1691368+(v*60|0)|0)|0)!=0){if((q|0)==(c[1691400+(v*60|0)>>2]|0)){w=v;break}}j=v+1|0;if((j|0)<2048){v=j}else{w=j;break}}if((w|0)==2048){Sv(1,a,160584,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;r=121936;s=0;t=1024;u=0;i=d;return}v=1691420+(w*60|0)|0;if((c[v>>2]|0)!=0){r=121936;s=0;t=1024;u=0;i=d;return}j=(c[422835]|0)-(c[1691412+(w*60|0)>>2]|0)|0;do{if((dw(a)|0)==0){x=+g[(c[453926]|0)+28>>2];do{if(x!=0.0){if(!(+(j|0)>2]=0,h)|0);i=h;Tr(155472,(h=i,i=i+8|0,c[h>>2]=w,h)|0);i=h;c[v>>2]=1;r=121936;s=0;t=1024;u=0;i=d;return}}while(0);x=+g[(c[453936]|0)+28>>2];if(!(x!=0.0)){break}if(!(+(j|0)>x)){break}Sv(1,a,153472,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;Tr(151560,(h=i,i=i+8|0,c[h>>2]=w,h)|0);i=h;c[v>>2]=1;r=121936;s=0;t=1024;u=0;i=d;return}}while(0);Sr(149192,(h=i,i=i+16|0,c[h>>2]=w,c[h+8>>2]=j,h)|0);i=h;c[1691424+(w*60|0)>>2]=1}n$(f|0,0,121936)|0;w=c[422837]|0;d:do{if((c[(c[453930]|0)+32>>2]|0)>0){j=a+24|0;v=w;m=0;e:while(1){do{if((c[v>>2]|0)!=0){if((Yv(a,v+84984|0)|0)==0){break}if((c[v+85016>>2]|0)==(p|0)){break e}if((b[j>>1]|0)==(b[v+85008>>1]|0)){break e}}}while(0);o=m+1|0;l=v+121936|0;if((o|0)<(c[(c[453930]|0)+32>>2]|0)){v=l;m=o}else{y=l;z=50;break d}}m=Zv(a)|0;Sr(146608,(h=i,i=i+8|0,c[h>>2]=m,h)|0);i=h;A=v}else{y=w;z=50}}while(0);if((z|0)==50){w=rC(e,144248)|0;if((k$(w,c[(c[453912]|0)+4>>2]|0)|0)==0){B=0}else{B=c[(c[453914]|0)+32>>2]|0}w=c[(c[453930]|0)+32>>2]|0;f:do{if((B|0)<(w|0)){m=c[422837]|0;j=B;while(1){C=m+(j*121936|0)|0;l=j+1|0;if((c[C>>2]|0)==0){break}if((l|0)<(w|0)){j=l}else{D=C;z=57;break f}}if((C|0)==0){D=0;z=57}else{E=C;F=C}}else{D=y;z=57}}while(0);do{if((z|0)==57){if((aw(a)|0)==0){Sv(1,a,137328,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;Tr(135832,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;r=121936;s=0;t=1024;u=0;i=d;return}y=c[(c[453930]|0)+32>>2]|0;if((B|0)<(y|0)){C=c[422837]|0;w=B+1|0;j=(y|0)>(w|0)?y:w;w=0;m=B;do{w=((c[C+(m*121936|0)+84984>>2]|0)==1)+w|0;m=m+1|0;}while((m|0)<(y|0));G=w;H=C+((j-1|0)*121936|0)|0}else{G=0;H=D}if((G|0)<(y-B|0)){Ur(0,139208,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}else{Zz((c[422837]|0)+((y-1|0)*121936|0)|0,141520);E=H;F=(c[422837]|0)+(((c[(c[453930]|0)+32>>2]|0)-1|0)*121936|0)|0;break}}}while(0);c[E+66568>>2]=0;c[E+66564>>2]=0;A=F}m$(A|0,f|0,121936)|0;f=(A-(c[422837]|0)|0)/121936|0;c[A+67644>>2]=rA(f)|0;c[A+66584>>2]=q;Lv(1,A+84976|0,a,p,q,0);c[A+117832>>2]=A+117828;TB(A+4|0,e,1024);e=oD(c[5120100]|0,2,(h=i,i=i+24|0,c[h>>2]=f,c[h+8>>2]=1,c[h+16>>2]=0,h)|0)|0;i=h;if((e|0)!=0){f=nD(c[5120100]|0,e)|0;Sv(1,a,134416,(h=i,i=i+8|0,c[h>>2]=f,h)|0);i=h;Tr(132888,(h=i,i=i+8|0,c[h>>2]=f,h)|0);i=h;r=121936;s=0;t=1024;u=0;i=d;return}_z(A);Sv(1,a,131888,(h=i,i=i+8|0,c[h>>2]=q,h)|0);i=h;Tr(130680,(h=i,i=i+8|0,c[h>>2]=A+67648,h)|0);i=h;c[A>>2]=2;c[A+68176>>2]=0;c[A+68168>>2]=c[422835];c[A+68172>>2]=c[422835];c[A+66580>>2]=-1;A=c[(c[453930]|0)+32>>2]|0;if((A|0)>0){h=c[422837]|0;q=0;a=0;while(1){f=((c[h+(a*121936|0)>>2]|0)>>>0>1>>>0)+q|0;e=a+1|0;if((e|0)<(A|0)){q=f;a=e}else{I=f;break}}}else{I=0}if(!((I|0)==1|(I|0)==(A|0))){r=121936;s=0;t=1024;u=0;i=d;return}tz();r=121936;s=0;t=1024;u=0;i=d;return}function Zz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;f=b+84984|0;g=(c[f>>2]|0)==1;h=b|0;if((c[h>>2]|0)==1){i=e;return}a:do{if(!g){j=1691368;k=0;while(1){if(($v(f,j|0)|0)!=0){break}l=k+1|0;if((l|0)<2048){j=j+60|0;k=l}else{break a}}n$(j|0,0,60)|0}}while(0);_A(b);f=b+67744|0;k=c[f>>2]|0;if((k|0)!=0){Yt(k)}c[f>>2]=0;a[b+67680|0]=0;f=0;do{k=b+67768+(f<<2)|0;l=c[k>>2]|0;if((l|0)!=0){es(l);c[k>>2]=0}f=f+1|0;}while((f|0)<48);f=b+67648|0;OA(0,129336,(k=i,i=i+16|0,c[k>>2]=f,c[k+8>>2]=d,k)|0);i=k;l=b;oD(c[5120100]|0,5,(k=i,i=i+8|0,c[k>>2]=(l-(c[422837]|0)|0)/121936|0,k)|0)|0;i=k;OA(b,128240,(k=i,i=i+8|0,c[k>>2]=d,k)|0);i=k;d=(l-(c[422837]|0)|0)/121936|0;if(g){Wy(d);FA((l-(c[422837]|0)|0)/121936|0,28378600);m=0}else{FA(d,28378600);Tr(125560,(k=i,i=i+8|0,c[k>>2]=f,k)|0);i=k;m=1}c[h>>2]=m;m=c[(c[453930]|0)+32>>2]|0;b:do{if((m|0)>0){h=c[422837]|0;k=0;while(1){f=k+1|0;if((c[h+(k*121936|0)>>2]|0)>>>0>1>>>0){n=k;break b}if((f|0)<(m|0)){k=f}else{n=f;break}}}else{n=0}}while(0);if((n|0)!=(m|0)){i=e;return}tz();i=e;return}function _z(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=b+4|0;TB(b+67648|0,rC(d,109288)|0,32);e=b+84984|0;do{if((dw(e)|0)==0){f=5}else{if((c[(c[5458548]|0)+32>>2]|0)==2){f=5;break}if((c[(c[453948]|0)+32>>2]|0)!=1){f=5;break}c[b+84960>>2]=99999}}while(0);do{if((f|0)==5){g=rC(d,108152)|0;if((a[g]|0)==0){c[b+84960>>2]=3e3;break}h=oj(g|0)|0;g=b+84960|0;c[g>>2]=h;if((h|0)<1e3){c[g>>2]=1e3;break}if((h|0)<=9e4){break}c[g>>2]=9e4}}while(0);f=rC(d,107288)|0;do{if((a[f]|0)!=0){if(!(((oj(f|0)|0)-1|0)>>>0>99>>>0)){if(!((o$(f|0)|0)>>>0>4>>>0)){break}}vC(d,107288,106264)}}while(0);f=rC(d,105368)|0;if((a[f]|0)==0){i=50}else{g=oj(f|0)|0;if((g|0)<1){j=1}else{f=c[(c[453958]|0)+32>>2]|0;j=(g|0)>(f|0)?f:g}i=1e3/(j|0)|0}j=b+84964|0;if((i|0)!=(c[j>>2]|0)){c[b+68176>>2]=0;c[j>>2]=i}if((aw(e)|0)==0){k=Zv(e)|0}else{k=170056}e=rC(d,163328)|0;i=(a[e]|0)==0;j=o$(k|0)|0;if(i){l=j+4+(o$(d|0)|0)|0}else{i=j-(o$(e|0)|0)|0;l=i+(o$(d|0)|0)|0}if((l|0)>1023){Zz(b,104576);return}else{vC(d,163328,k);return}}function $z(b){b=b|0;var d=0,e=0,f=0;_A(b);d=b+67744|0;e=c[d>>2]|0;if((e|0)!=0){Yt(e)}c[d>>2]=0;a[b+67680|0]=0;d=0;do{e=b+67768+(d<<2)|0;f=c[e>>2]|0;if((f|0)!=0){es(f);c[e>>2]=0}d=d+1|0;}while((d|0)<48);return}function aA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;Tr(124648,(e=i,i=i+8|0,c[e>>2]=a+67648,e)|0);i=e;c[a>>2]=4;CA(a);f=a;g=(f-(c[422837]|0)|0)/121936|0;h=rA(g)|0;c[h>>2]=g;c[a+67644>>2]=h;c[a+68160>>2]=-1;c[a+68176>>2]=0;h=a+66588|0;if((b|0)==0){n$(h|0,0,24)|0}else{a=b;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];c[h+16>>2]=c[a+16>>2];c[h+20>>2]=c[a+20>>2]}oD(c[5120100]|0,3,(e=i,i=i+8|0,c[e>>2]=(f-(c[422837]|0)|0)/121936|0,e)|0)|0;i=e;i=d;return}function bA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+1088|0;f=e|0;g=e+1024|0;h=b+67680|0;if((a[h]|0)==0){j=0;k=64;l=0;m=1024;n=0;i=e;return j|0}o=b+67744|0;a:do{if((c[o>>2]|0)==0){$B(g,64,123824,(p=i,i=i+8|0,c[p>>2]=h,p)|0)|0;i=p;q=ge(g|0,46)|0;b:do{if((q|0)==0){r=1;s=0}else{a[q]=0;if((VB(q+1|0,123016)|0)!=0){r=1;s=0;break}Fr(Nu()|0);t=nr()|0;if((t|0)>0){u=0}else{r=1;s=0;break}while(1){v=u+1|0;if((au(or(u)|0,g)|0)==0){break}if((v|0)<(t|0)){u=v}else{r=1;s=0;break b}}r=(Nt(g,122176,9)|0)==0;s=1}}while(0);c[o>>2]=0;do{if((c[(c[453966]|0)+32>>2]&5|0)==1&r&s){q=Wt(h,o)|0;c[b+67748>>2]=q;if((q|0)<0){break}Sr(111264,(p=i,i=i+16|0,c[p>>2]=(b-(c[422837]|0)|0)/121936|0,c[p+8>>2]=h,p)|0);i=p;c[b+68152>>2]=0;n$(b+67752|0,0,16)|0;w=0;x=0;break a}}while(0);do{if(s){if(!r){Sr(118704,(p=i,i=i+16|0,c[p>>2]=(b-(c[422837]|0)|0)/121936|0,c[p+8>>2]=h,p)|0);i=p;$B(f,1024,117568,(p=i,i=i+8|0,c[p>>2]=h,p)|0)|0;i=p;break}q=(b-(c[422837]|0)|0)/121936|0;if((c[(c[453966]|0)+32>>2]&5|0)==1){Sr(112968,(p=i,i=i+16|0,c[p>>2]=q,c[p+8>>2]=h,p)|0);i=p;$B(f,1024,112016,(p=i,i=i+8|0,c[p>>2]=h,p)|0)|0;i=p;break}Sr(116456,(p=i,i=i+16|0,c[p>>2]=q,c[p+8>>2]=h,p)|0);i=p;if((c[(c[453910]|0)+32>>2]|0)==0){$B(f,1024,113776,(p=i,i=i+8|0,c[p>>2]=h,p)|0)|0;i=p;break}else{$B(f,1024,115064,(p=i,i=i+8|0,c[p>>2]=h,p)|0)|0;i=p;break}}else{Sr(121272,(p=i,i=i+16|0,c[p>>2]=(b-(c[422837]|0)|0)/121936|0,c[p+8>>2]=h,p)|0);i=p;$B(f,1024,120168,(p=i,i=i+8|0,c[p>>2]=h,p)|0)|0;i=p}}while(0);pv(d,6);rv(d,0);sv(d,-1);tv(d,f);a[h]=0;q=c[o>>2]|0;if((q|0)==0){j=0;k=64;l=0;m=1024;n=0;i=e;return j|0}Yt(q);j=0;k=64;l=0;m=1024;n=0;i=e;return j|0}else{w=c[b+67760>>2]|0;x=c[b+67756>>2]|0}}while(0);h=b+67760|0;f=b+67756|0;c:do{if((w-x|0)<48){r=b+67748|0;s=b+67752|0;g=w;u=c[s>>2]|0;while(1){if((c[r>>2]|0)==(u|0)){y=u;z=r;A=33;break c}q=(g|0)%48|0;t=b+67768+(q<<2)|0;v=c[t>>2]|0;if((v|0)==0){B=gs(1024)|0;c[t>>2]=B;C=B}else{C=v}v=fu(C,1024,c[o>>2]|0)|0;c[b+67960+(q<<2)>>2]=v;if((v|0)<0){break}q=(c[s>>2]|0)+v|0;c[s>>2]=q;v=(c[h>>2]|0)+1|0;c[h>>2]=v;if((v-(c[f>>2]|0)|0)<48){g=v;u=q}else{y=q;z=r;A=33;break c}}c[s>>2]=c[r>>2];D=b+67748|0;A=34}else{y=c[b+67752>>2]|0;z=b+67748|0;A=33}}while(0);if((A|0)==33){o=b+67748|0;if((y|0)==(c[z>>2]|0)){D=o;A=34}else{E=o}}do{if((A|0)==34){o=b+68152|0;if((c[o>>2]|0)!=0){E=D;break}z=c[h>>2]|0;if((z-(c[f>>2]|0)|0)>=48){E=D;break}c[b+67960+(((z|0)%48|0)<<2)>>2]=0;c[h>>2]=(c[h>>2]|0)+1;c[o>>2]=1;E=D}}while(0);D=c[f>>2]|0;f=c[h>>2]|0;if((D|0)==(f|0)){j=0;k=64;l=0;m=1024;n=0;i=e;return j|0}h=b+67764|0;A=c[h>>2]|0;do{if((A|0)==(f|0)){if(((c[422835]|0)-(c[b+68156>>2]|0)|0)>1e3){c[h>>2]=D;F=D;break}else{j=0;k=64;l=0;m=1024;n=0;i=e;return j|0}}else{F=A}}while(0);A=(F|0)%48|0;pv(d,6);rv(d,c[h>>2]|0);if((c[h>>2]|0)==0){sv(d,c[E>>2]|0)}E=b+67960+(A<<2)|0;rv(d,c[E>>2]|0);F=c[E>>2]|0;if((F|0)!=0){qv(d,c[b+67768+(A<<2)>>2]|0,F)}F=c[h>>2]|0;Tr(110488,(p=i,i=i+16|0,c[p>>2]=(b-(c[422837]|0)|0)/121936|0,c[p+8>>2]=F,p)|0);i=p;c[h>>2]=(c[h>>2]|0)+1;c[b+68156>>2]=c[422835];j=1;k=64;l=0;m=1024;n=0;i=e;return j|0}function cA(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;if((c[(c[453930]|0)+32>>2]|0)>0){a=-1;b=0}else{d=-1;return d|0}while(1){e=(c[422837]|0)+(b*121936|0)|0;do{if((c[e>>2]|0)==0){f=a}else{g=XA(e)|0;if((g|0)==0){h=$A(e)|0}else{h=g}if(!((h|0)>-1)){f=a;break}f=(a|0)==-1|(a|0)>(h|0)?h:a}}while(0);e=b+1|0;if((e|0)<(c[(c[453930]|0)+32>>2]|0)){a=f;b=e}else{d=f;break}}return d|0}function dA(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;i=i+16416|0;d=b|0;e=b+32|0;if((c[(c[453930]|0)+32>>2]|0)>0){f=0;g=0}else{h=0;j=16384;k=0;i=b;return h|0}while(1){l=c[422837]|0;m=l+(g*121936|0)|0;do{if((c[m>>2]|0)==0){n=f}else{if((a[l+(g*121936|0)+67680|0]|0)==0){n=f;break}hv(d,e,16384);sv(d,c[l+(g*121936|0)+66616>>2]|0);o=bA(m,d)|0;if((o|0)==0){n=f;break}pv(d,8);aB(m,d);n=o+f|0}}while(0);m=g+1|0;if((m|0)<(c[(c[453930]|0)+32>>2]|0)){f=n;g=m}else{h=n;break}}j=16384;k=0;i=b;return h|0}function eA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;Dr(b);b=1680;while(1){f=or(0)|0;if((k$(f,c[b>>2]|0)|0)==0){g=4;break}f=b+8|0;if((c[f>>2]|0)==0){h=0;j=f;break}else{b=f}}if((g|0)==4){vk[c[b+4>>2]&511](a);h=1;j=b}if((d|0)==0){if((h|0)!=0){i=e;return}h=or(0)|0;Tr(103600,(k=i,i=i+16|0,c[k>>2]=a+67648,c[k+8>>2]=h,k)|0);i=k;i=e;return}if(!((c[j>>2]|0)==0&(c[453968]|0)==2)){i=e;return}if(!(((c[a>>2]|0)-3|0)>>>0<2>>>0)){i=e;return}Cr();oD(c[5120100]|0,6,(k=i,i=i+8|0,c[k>>2]=(a-(c[422837]|0)|0)/121936|0,k)|0)|0;i=k;i=e;return}function fA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;e=a+66588|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];c[e+16>>2]=c[f+16>>2];c[e+20>>2]=c[f+20>>2];if((c[a>>2]|0)!=4){i=d;return}oD(c[5120100]|0,7,(f=i,i=i+8|0,c[f>>2]=(a-(c[422837]|0)|0)/121936|0,f)|0)|0;i=f;i=d;return}function gA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;kv(d);f=xv(d)|0;g=xv(d)|0;h=b+66576|0;c[h>>2]=g;if((g|0)<0){i=e;return}g=xv(d)|0;j=b+66568|0;c[j>>2]=g;k=c[b+66564>>2]|0;if((g|0)<(k-64|0)){c[j>>2]=k;i=e;return}k=c[453970]|0;j=(f|0)==(k|0);do{if(j){l=11}else{if((a[b+67680|0]|0)!=0){l=12;break}if((ii(b+66620|0,102800)|0)!=0){l=11;break}if((f|0)>=(c[453971]|0)&(f|0)<(k|0)){Tr(101864,(m=i,i=i+8|0,c[m>>2]=b+67648,m)|0);i=m;i=e;return}if((c[h>>2]|0)<=(c[b+66580>>2]|0)){i=e;return}Tr(101048,(m=i,i=i+8|0,c[m>>2]=b+67648,m)|0);i=m;hA(b);i=e;return}}while(0);do{if((l|0)==11){h=b+117836|0;if(!((c[h>>2]|0)!=0&j)){l=12;break}k=b+67648|0;Tr(99888,(m=i,i=i+8|0,c[m>>2]=k,m)|0);i=m;c[h>>2]=0;n=k}}while(0);if((l|0)==12){n=b+67648|0}j=b+66616|0;k=b|0;h=b+68164|0;f=b+66620|0;while(1){g=vv(d)|0;if((g|0)==3){l=26;break}else if((g|0)==2){l=25;break}else if((g|0)==5){l=28;break}else if((g|0)!=4){l=27;break}o=xv(d)|0;g=yv(d)|0;if((c[j>>2]|0)<(o|0)){Tr(60568,(m=i,i=i+24|0,c[m>>2]=n,c[m+8>>2]=o,c[m+16>>2]=g,m)|0);i=m;p=c[j>>2]|0;if((o|0)>(p+1|0)){l=23;break}do{if((c[(c[5458838]|0)+32>>2]|0)==0){if(!((c[k>>2]|0)>>>0>3>>>0)){q=1;break}if((c[(c[453960]|0)+32>>2]|0)==0){q=1;break}q=(c[422835]|0)>=(c[h>>2]|0)|0}else{q=1}}while(0);c[h>>2]=(c[422835]|0)+1e3;eA(b,g,q);c[j>>2]=o;$B(f,1024,123824,(m=i,i=i+8|0,c[m>>2]=g,m)|0)|0;i=m}if((c[k>>2]|0)==1){l=28;break}}if((l|0)==23){Sr(59864,(m=i,i=i+16|0,c[m>>2]=n,c[m+8>>2]=o+1-p,m)|0);i=m;Zz(b,59264);i=e;return}else if((l|0)==25){iA(b,d,1);i=e;return}else if((l|0)==26){iA(b,d,0);i=e;return}else if((l|0)==27){Sr(96448,(m=i,i=i+8|0,c[m>>2]=(b-(c[422837]|0)|0)/121936|0,m)|0);i=m;i=e;return}else if((l|0)==28){i=e;return}}function hA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+16624|0;e=d|0;f=d+208|0;g=e;h=b+67648|0;Tr(58744,(j=i,i=i+8|0,c[j>>2]=h,j)|0);i=j;Tr(57872,(j=i,i=i+8|0,c[j>>2]=h,j)|0);i=j;c[b>>2]=3;c[b+84968>>2]=0;c[b+84972>>2]=0;c[b+66580>>2]=c[b+85024>>2];hv(f,d+240|0,16384);sv(f,c[b+66616>>2]|0);cB(b,f);pv(f,2);sv(f,c[b+66564>>2]|0);j=0;do{h=1815908+(j<<2)|0;if((a[c[h>>2]|0]|0)!=0){pv(f,3);rv(f,j);uv(f,c[h>>2]|0)}j=j+1|0;}while((j|0)<1024);n$(g|0,0,208)|0;g=0;do{j=1820012+(g*300|0)|0;if((c[j>>2]|0)!=0){pv(f,4);Gv(f,e,j,1)}g=g+1|0;}while((g|0)<1024);pv(f,8);sv(f,(b-(c[422837]|0)|0)/121936|0);sv(f,c[453972]|0);dB(f,b);i=d;return}function iA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;i=i+792|0;f=e|0;g=e+24|0;h=g;if((d|0)==0){c[a+68160>>2]=-1}else{c[a+68160>>2]=c[a+66576>>2]}d=vv(b)|0;if((d|0)<1){Sr(63968,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=768;l=0;i=e;return}if((d|0)>32){Sr(62848,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=768;l=0;i=e;return}m=a+66576|0;n=c[m>>2]^c[453972];o=n^(Cv(a+1028+((c[a+66568>>2]&63)<<10)|0,32)|0);n$(f|0,0,24)|0;n=0;p=f;while(1){f=g+(n*24|0)|0;Ev(b,o,p,f);q=n+1|0;if((q|0)<(d|0)){n=q;p=f}else{break}}c[a+68188+((c[m>>2]&31)*524|0)+516>>2]=c[422835];m=c[(c[453910]|0)+32>>2]|0;do{if((m|0)!=0){if((c[a+84968>>2]|0)!=0){break}if((c[a+84972>>2]|0)!=0){break}if((c[a>>2]|0)!=4){k=768;l=0;i=e;return}Tr(62008,(j=i,i=i+8|0,c[j>>2]=a+67648,j)|0);i=j;hA(a);k=768;l=0;i=e;return}}while(0);p=a|0;if((c[p>>2]|0)==3){Tr(124648,(j=i,i=i+8|0,c[j>>2]=a+67648,j)|0);i=j;c[p>>2]=4;CA(a);n=a;o=(n-(c[422837]|0)|0)/121936|0;b=rA(o)|0;c[b>>2]=o;c[a+67644>>2]=b;c[a+68160>>2]=-1;c[a+68176>>2]=0;b=a+66588|0;c[b>>2]=c[h>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];c[b+16>>2]=c[h+16>>2];c[b+20>>2]=c[h+20>>2];oD(c[5120100]|0,3,(j=i,i=i+8|0,c[j>>2]=(n-(c[422837]|0)|0)/121936|0,j)|0)|0;i=j;r=c[(c[453910]|0)+32>>2]|0}else{r=m}do{if((r|0)!=0){if((c[a+84968>>2]|0)!=0){break}Zz(a,61280);k=768;l=0;i=e;return}}while(0);if((c[p>>2]|0)!=4){c[a+68160>>2]=-1;k=768;l=0;i=e;return}r=g+((d-1|0)*24|0)|0;m=a+66588|0;n=a+66588|0;h=a;a=0;do{b=g+(a*24|0)|0;o=c[b>>2]|0;do{if((o|0)<=(c[r>>2]|0)){if((o|0)<=(c[m>>2]|0)){break}f=b;c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];c[n+16>>2]=c[f+16>>2];c[n+20>>2]=c[f+20>>2];if((c[p>>2]|0)!=4){break}oD(c[5120100]|0,7,(j=i,i=i+8|0,c[j>>2]=(h-(c[422837]|0)|0)/121936|0,j)|0)|0;i=j}}while(0);a=a+1|0;}while((a|0)<(d|0));k=768;l=0;i=e;return}function jA(a){a=a|0;var b=0,d=0;b=i;TB(a+4|0,or(1)|0,1024);_z(a);oD(c[5120100]|0,4,(d=i,i=i+8|0,c[d>>2]=(a-(c[422837]|0)|0)/121936|0,d)|0)|0;i=d;i=b;return}function kA(a){a=a|0;Zz(a,47208);return}function lA(b){b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;i=i+8208|0;e=d|0;f=d+8|0;g=d+16|0;h=d+4112|0;if((c[(c[453910]|0)+32>>2]|0)==0){j=4096;k=0;l=4096;m=0;i=d;return}c[f>>2]=0;c[e>>2]=0;if((ku(48960,e)|0)==1){n=(ku(48440,f)|0)==1|0}else{n=0}o=nr()|0;p=or(1)|0;a:do{if((p|0)==0){q=34}else{r=oj(p|0)|0;if((r|0)<(c[453973]|0)){Tr(47912,(r=i,i=i+8|0,c[r>>2]=b+67648,r)|0);i=r;j=4096;k=0;l=4096;m=0;i=d;return}if((n|0)==0|(o|0)<6){q=34;break}r=or(2)|0;if((r|0)==0){q=34;break}if((a[r]|0)==64){q=34;break}s=oj(r|0)|0;if((s|0)!=(c[e>>2]|0)){q=34;break}s=or(3)|0;if((s|0)==0){q=34;break}if((a[s]|0)==64){q=34;break}r=oj(s|0)|0;if((r|0)!=(c[f>>2]|0)){q=34;break}if((a[or(4)|0]|0)!=64){q=34;break}b:do{if((o|0)>5){r=0;s=5;while(1){t=s+1|0;c[g+(r<<2)>>2]=oj(or(s)|0)|0;if((t|0)<(o|0)){r=r+1|0;s=t}else{break}}s=o-6|0;r=(s|0)>0;if(r){u=0}else{v=s;w=0;break}c:while(1){t=g+(u<<2)|0;x=0;do{if((u|0)!=(x|0)){if((c[t>>2]|0)==(c[g+(x<<2)>>2]|0)){break c}}x=x+1|0;}while((x|0)<(s|0));x=u+1|0;if((x|0)<(s|0)){u=x}else{v=s;w=r;break b}}c[b+84972>>2]=1;y=b+84968|0;break a}else{v=-1;w=0}}while(0);Dr(Ku()|0);r=nr()|0;s=(r|0)>1024?1024:r;r=(s|0)>0;if(r){x=0;do{c[h+(x<<2)>>2]=oj(or(x)|0)|0;x=x+1|0;}while((x|0)<(s|0))}do{if(w){if(r){z=0}else{q=34;break a}do{x=c[g+(z<<2)>>2]|0;t=0;while(1){A=t+1|0;if((x|0)==(c[h+(t<<2)>>2]|0)){break}if((A|0)<(s|0)){t=A}else{q=34;break a}}z=z+1|0;}while((z|0)<(v|0));t=c[453972]|0;c[e>>2]=t;if(w){B=0;C=t}else{D=t;break}do{C=C^c[g+(B<<2)>>2];B=B+1|0;}while((B|0)<(v|0));c[e>>2]=C;D=C}else{t=c[453972]|0;c[e>>2]=t;D=t}}while(0);s=D^v;c[e>>2]=s;r=c[g+(v<<2)>>2]|0;c[b+84972>>2]=1;t=b+84968|0;if((s|0)!=(r|0)){y=t;break}c[t>>2]=1;j=4096;k=0;l=4096;m=0;i=d;return}}while(0);if((q|0)==34){c[b+84972>>2]=1;y=b+84968|0}c[y>>2]=0;c[b+68176>>2]=0;c[b>>2]=4;eB(b);Zz(b,47568);j=4096;k=0;l=4096;m=0;i=d;return}function mA(a){a=a|0;c[a+84968>>2]=0;c[a+84972>>2]=0;return}function nA(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+67744|0;e=c[d>>2]|0;if((e|0)!=0){Yt(e)}c[d>>2]=0;d=b+67680|0;a[d]=0;e=0;do{f=b+67768+(e<<2)|0;g=c[f>>2]|0;if((g|0)!=0){es(g);c[f>>2]=0}e=e+1|0;}while((e|0)<48);TB(d,or(1)|0,64);return}function oA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;e=oj(or(1)|0)|0;f=b+67756|0;if((e|0)!=(c[f>>2]|0)){Zz(b,49680);i=d;return}g=b;Tr(51280,(h=i,i=i+16|0,c[h>>2]=(g-(c[422837]|0)|0)/121936|0,c[h+8>>2]=e,h)|0);i=h;e=c[f>>2]|0;if((c[b+67960+(((e|0)%48|0)<<2)>>2]|0)!=0){c[b+68156>>2]=c[422835];c[f>>2]=e+1;i=d;return}e=b+67680|0;Sr(50392,(h=i,i=i+16|0,c[h>>2]=(g-(c[422837]|0)|0)/121936|0,c[h+8>>2]=e,h)|0);i=h;h=b+67744|0;g=c[h>>2]|0;if((g|0)!=0){Yt(g)}c[h>>2]=0;a[e]=0;e=0;do{h=b+67768+(e<<2)|0;g=c[h>>2]|0;if((g|0)!=0){es(g);c[h>>2]=0}e=e+1|0;}while((e|0)<48);i=d;return}function pA(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;e=b+67680|0;if((a[e]|0)!=0){Tr(51944,(f=i,i=i+16|0,c[f>>2]=(b-(c[422837]|0)|0)/121936|0,c[f+8>>2]=e,f)|0);i=f}f=b+67744|0;g=c[f>>2]|0;if((g|0)!=0){Yt(g)}c[f>>2]=0;a[e]=0;e=0;do{f=b+67768+(e<<2)|0;g=c[f>>2]|0;if((g|0)!=0){es(g);c[f>>2]=0}e=e+1|0;}while((e|0)<48);i=d;return}function qA(a){a=a|0;var b=0,d=0;b=i;if((c[a>>2]|0)==4){i=b;return}Tr(52416,(d=i,i=i+8|0,c[d>>2]=a+67648,d)|0);i=d;hA(a);i=b;return}function rA(a){a=a|0;return(c[531802]|0)+(da(c[531803]|0,a)|0)|0}function sA(a){a=a|0;return(c[531805]|0)+(da(c[531806]|0,a)|0)|0}function tA(a){a=a|0;var b=0,d=0;b=i;do{if((a|0)!=0){d=c[a>>2]|0;if(d>>>0>1023>>>0){break}i=b;return 1820004+(d*300|0)|0}}while(0);Ur(1,145992,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;return 0}function uA(a){a=a|0;return(c[531802]|0)+(da(c[531803]|0,(a-1820004|0)/300|0)|0)|0}function vA(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;f=e|0;h=e+16|0;if((d|0)==0){Ur(1,148768,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}if((a[d]|0)==42){k=oj(d+1|0)|0;c[b+160>>2]=k;l=f|0;m=h|0;tq(nq(k)|0,l,m);g[b+436>>2]=+g[l>>2];g[b+440>>2]=+g[f+4>>2];g[b+444>>2]=+g[f+8>>2];g[b+448>>2]=+g[m>>2];g[b+452>>2]=+g[h+4>>2];g[b+456>>2]=+g[h+8>>2];c[b+432>>2]=1;c[b+460>>2]=-1;nB(b);i=e;return}else{Ur(1,130384,(j=i,i=i+8|0,c[j>>2]=d,j)|0);i=j}}function wA(a,b){a=a|0;b=b|0;var c=0,e=0,f=0,g=0;c=Nq(a)|0;a=qq(c)|0;e=rq(c)|0;c=Tq(a)|0;a=Nq(b)|0;b=qq(a)|0;f=rq(a)|0;do{if((c|0)!=0){if(((d[c+(b>>3)|0]|0)&1<<(b&7)|0)==0){g=0}else{break}return g|0}}while(0);g=(Xq(e,f)|0)!=0|0;return g|0}function xA(b){b=b|0;var e=0,f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0;e=i;i=i+112|0;f=e|0;h=e+56|0;j=c[b>>2]|0;switch(j|0){case 0:{l=mD(c[b+4>>2]|0)|0;Sr(175984,(m=i,i=i+8|0,c[m>>2]=l,m)|0);i=m;n=0;i=e;return n|0};case 19:{l=c[b+4>>2]|0;EA(l,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0);n=0;i=e;return n|0};case 21:{FA(c[b+4>>2]|0,mD(c[b+8>>2]|0)|0);n=0;i=e;return n|0};case 38:{l=mD(c[b+4>>2]|0)|0;o=mD(c[b+8>>2]|0)|0;n=uu(l,o,mD(c[b+12>>2]|0)|0,c[b+16>>2]|0)|0;i=e;return n|0};case 31:{mB(mD(c[b+4>>2]|0)|0);n=0;i=e;return n|0};case 32:{o=mD(c[b+4>>2]|0)|0;l=mD(c[b+8>>2]|0)|0;n=oB(o,l,mD(c[b+12>>2]|0)|0,c[b+16>>2]|0)|0;i=e;return n|0};case 1:{l=mD(c[b+4>>2]|0)|0;Ur(1,175984,(m=i,i=i+8|0,c[m>>2]=l,m)|0);i=m;return 0};case 11:{eu(mD(c[b+4>>2]|0)|0,c[b+8>>2]|0,c[b+12>>2]|0)|0;n=0;i=e;return n|0};case 2:{n=wf()|0;i=e;return n|0};case 22:{l=mD(c[b+4>>2]|0)|0;o=c[b+8>>2]|0;if((o|0)<1){Ur(1,119888,(m=i,i=i+8|0,c[m>>2]=o,m)|0);i=m;return 0}TB(l,Dt(4)|0,o);n=0;i=e;return n|0};case 4:{It(mD(c[b+4>>2]|0)|0);n=0;i=e;return n|0};case 5:{lt(mD(c[b+4>>2]|0)|0,mD(c[b+8>>2]|0)|0);n=0;i=e;return n|0};case 9:{o=c[b+4>>2]|0;yr(o,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0);n=0;i=e;return n|0};case 3:{o=mD(c[b+4>>2]|0)|0;l=mD(c[b+8>>2]|0)|0;Ht(o,l,mD(c[b+12>>2]|0)|0,c[b+16>>2]|0);n=0;i=e;return n|0};case 13:{Yt(c[b+4>>2]|0);n=0;i=e;return n|0};case 45:{n=iu(c[b+4>>2]|0,c[b+8>>2]|0,c[b+12>>2]|0)|0;i=e;return n|0};case 14:{rr(c[b+4>>2]|0,mD(c[b+8>>2]|0)|0);n=0;i=e;return n|0};case 33:{l=mD(c[b+4>>2]|0)|0;o=mD(c[b+8>>2]|0)|0;p=mD(c[b+12>>2]|0)|0;lr(h,876376,876376,l,o,iB(p)|0,-1,p+488|0,p+500|0,0);n=c[h+4>>2]|0;i=e;return n|0};case 24:{h=mD(c[b+4>>2]|0)|0;p=mD(c[b+8>>2]|0)|0;o=mD(c[b+12>>2]|0)|0;l=mD(c[b+16>>2]|0)|0;rB(h,p,o,l,mD(c[b+20>>2]|0)|0,c[b+24>>2]|0,c[b+28>>2]|0,0);n=0;i=e;return n|0};case 8:{n=nr()|0;i=e;return n|0};case 6:{n=bt(mD(c[b+4>>2]|0)|0)|0;i=e;return n|0};case 28:{l=mD(c[b+4>>2]|0)|0;o=c[b+8>>2]|0;if((l|0)==0){Ur(1,145992,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;return 0}p=c[l>>2]|0;if(p>>>0>1023>>>0){Ur(1,145992,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;return 0}l=c[1820296+(p*300|0)>>2]|0;if((l|0)==-1){n=0;i=e;return n|0}Wq(c[1820292+(p*300|0)>>2]|0,l,o);n=0;i=e;return n|0};case 30:{nB(mD(c[b+4>>2]|0)|0);n=0;i=e;return n|0};case 7:{o=mD(c[b+4>>2]|0)|0;dt(o,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0);n=0;i=e;return n|0};case 12:{gu(mD(c[b+4>>2]|0)|0,c[b+8>>2]|0,c[b+12>>2]|0)|0;n=0;i=e;return n|0};case 29:{n=Xq(c[b+4>>2]|0,c[b+8>>2]|0)|0;i=e;return n|0};case 34:{n=Vy()|0;i=e;return n|0};case 35:{Wy(c[b+4>>2]|0);n=0;i=e;return n|0};case 18:{DA(c[b+4>>2]|0,mD(c[b+8>>2]|0)|0);n=0;i=e;return n|0};case 26:{n=wA(mD(c[b+4>>2]|0)|0,mD(c[b+8>>2]|0)|0)|0;i=e;return n|0};case 25:{n=sB(mD(c[b+4>>2]|0)|0,c[b+8>>2]|0)|0;i=e;return n|0};case 23:{vA(mD(c[b+4>>2]|0)|0,mD(c[b+8>>2]|0)|0);n=0;i=e;return n|0};case 43:{o=mD(c[b+4>>2]|0)|0;l=mD(c[b+8>>2]|0)|0;p=mD(c[b+12>>2]|0)|0;h=mD(c[b+16>>2]|0)|0;rB(o,l,p,h,mD(c[b+20>>2]|0)|0,c[b+24>>2]|0,c[b+28>>2]|0,1);n=0;i=e;return n|0};case 39:{n=Yy(c[b+4>>2]|0,c[b+8>>2]|0,mD(c[b+12>>2]|0)|0)|0;i=e;return n|0};case 40:{Zy(c[b+4>>2]|0);n=0;i=e;return n|0};case 41:{n=cs(mD(c[b+4>>2]|0)|0)|0;i=e;return n|0};case 42:{h=mD(c[b+4>>2]|0)|0;p=h;g[p>>2]=+Ib(+(+g[p>>2]));p=h+4|0;g[p>>2]=+Ib(+(+g[p>>2]));p=h+8|0;g[p>>2]=+Ib(+(+g[p>>2]));n=0;i=e;return n|0};case 200:{n=$y()|0;i=e;return n|0};case 201:{n=az()|0;i=e;return n|0};case 202:{p=c[(c[7092486]|0)+492>>2]|0;h=mD(c[b+4>>2]|0)|0;l=mD(c[b+8>>2]|0)|0;n=Kk[p&255](h,l)|0;i=e;return n|0};case 203:{l=c[(c[7092486]|0)+496>>2]|0;h=mD(c[b+4>>2]|0)|0;p=mD(c[b+8>>2]|0)|0;n=rk[l&63](h,p,c[b+12>>2]|0)|0;i=e;return n|0};case 204:{p=c[(c[7092486]|0)+500>>2]|0;h=mD(c[b+4>>2]|0)|0;n=jk[p&255](h)|0;i=e;return n|0};case 578:{h=c[(c[7092486]|0)+504>>2]|0;p=mD(c[b+4>>2]|0)|0;n=jk[h&255](p)|0;i=e;return n|0};case 579:{n=jk[c[(c[7092486]|0)+508>>2]&255](c[b+4>>2]|0)|0;i=e;return n|0};case 44:{p=mD(c[b+4>>2]|0)|0;h=mD(c[b+8>>2]|0)|0;l=mD(c[b+12>>2]|0)|0;lr(f,876376,876376,p,h,iB(l)|0,-1,l+488|0,l+500|0,1);n=c[f+4>>2]|0;i=e;return n|0};case 36:{f=c[b+4>>2]|0;l=mD(c[b+8>>2]|0)|0;if((f|0)<0){Ur(1,109072,(m=i,i=i+8|0,c[m>>2]=f,m)|0);i=m;return 0}if((c[(c[453930]|0)+32>>2]|0)<=(f|0)){Ur(1,109072,(m=i,i=i+8|0,c[m>>2]=f,m)|0);i=m;return 0}h=(c[422837]|0)+(f*121936|0)+66588|0;c[l>>2]=c[h>>2];c[l+4>>2]=c[h+4>>2];c[l+8>>2]=c[h+8>>2];c[l+12>>2]=c[h+12>>2];c[l+16>>2]=c[h+16>>2];c[l+20>>2]=c[h+20>>2];n=0;i=e;return n|0};case 37:{h=bC(2127204)|0;TB(mD(c[b+4>>2]|0)|0,h,c[b+8>>2]|0);do{if((c[531801]|0)==0){if((a[h]|0)==0){n=0}else{break}i=e;return n|0}}while(0);n=1;i=e;return n|0};case 16:{h=c[b+4>>2]|0;l=mD(c[b+8>>2]|0)|0;if((h|0)<0){n=0;i=e;return n|0}if((c[(c[453930]|0)+32>>2]|0)<=(h|0)){n=0;i=e;return n|0}Zz((c[422837]|0)+(h*121936|0)|0,l);n=0;i=e;return n|0};case 10:{l=mD(c[b+4>>2]|0)|0;n=Yu(l,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0)|0;i=e;return n|0};case 20:{l=c[b+4>>2]|0;GA(l,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0);n=0;i=e;return n|0};case 581:{l=c[(c[7092486]|0)+516>>2]|0;h=c[b+4>>2]|0;f=mD(c[b+8>>2]|0)|0;p=mD(c[b+12>>2]|0)|0;n=rk[l&63](h,f,p)|0;i=e;return n|0};case 205:{n=qk[c[(c[7092486]|0)+520>>2]&7](+g[b+4>>2])|0;i=e;return n|0};case 206:{p=c[(c[7092486]|0)+524>>2]|0;f=mD(c[b+4>>2]|0)|0;n=jk[p&255](f)|0;i=e;return n|0};case 207:{f=c[(c[7092486]|0)+528>>2]|0;p=c[b+4>>2]|0;h=mD(c[b+8>>2]|0)|0;n=Kk[f&255](p,h)|0;i=e;return n|0};case 208:{h=c[(c[7092486]|0)+532>>2]|0;p=c[b+4>>2]|0;f=mD(c[b+8>>2]|0)|0;l=mD(c[b+12>>2]|0)|0;o=mD(c[b+16>>2]|0)|0;n=Wk[h&63](p,f,l,o)|0;i=e;return n|0};case 209:{n=sz(c[b+4>>2]|0,c[b+8>>2]|0)|0;i=e;return n|0};case 210:{o=c[b+4>>2]|0;n=rz(o,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0)|0;i=e;return n|0};case 27:{o=mD(c[b+4>>2]|0)|0;l=mD(c[b+8>>2]|0)|0;f=Tq(qq(Nq(o)|0)|0)|0;o=qq(Nq(l)|0)|0;do{if((f|0)!=0){if((d[f+(o>>3)|0]&1<<(o&7)|0)==0){n=0}else{break}i=e;return n|0}}while(0);n=1;i=e;return n|0};case 17:{o=c[b+4>>2]|0;f=mD(c[b+8>>2]|0)|0;if((o|0)==-1){OA(0,175984,(m=i,i=i+8|0,c[m>>2]=f,m)|0);i=m;n=0;i=e;return n|0}if((o|0)<0){n=0;i=e;return n|0}if((c[(c[453930]|0)+32>>2]|0)<=(o|0)){n=0;i=e;return n|0}OA((c[422837]|0)+(o*121936|0)|0,175984,(m=i,i=i+8|0,c[m>>2]=f,m)|0);i=m;n=0;i=e;return n|0};case 580:{f=c[(c[7092486]|0)+512>>2]|0;o=c[b+4>>2]|0;l=mD(c[b+8>>2]|0)|0;n=Kk[f&255](o,l)|0;i=e;return n|0};case 15:{l=mD(c[b+4>>2]|0)|0;o=c[b+8>>2]|0;f=c[b+12>>2]|0;p=mD(c[b+16>>2]|0)|0;h=c[b+20>>2]|0;c[531802]=l;c[531803]=f;c[531804]=o;c[531805]=p;c[531806]=h;n=0;i=e;return n|0};case 211:{fA((c[422837]|0)+((c[b+4>>2]|0)*121936|0)|0,mD(c[b+8>>2]|0)|0);n=0;i=e;return n|0};case 301:{h=c[(c[7092486]|0)+28>>2]|0;p=mD(c[b+4>>2]|0)|0;o=mD(c[b+8>>2]|0)|0;f=mD(c[b+12>>2]|0)|0;n=Wk[h&63](p,o,f,c[b+16>>2]|0)|0;i=e;return n|0};case 302:{f=c[(c[7092486]|0)+32>>2]|0;o=c[b+4>>2]|0;p=mD(c[b+8>>2]|0)|0;n=Kk[f&255](o,p)|0;i=e;return n|0};case 575:{p=c[(c[7092486]|0)+76>>2]|0;o=mD(c[b+4>>2]|0)|0;f=c[b+8>>2]|0;h=mD(c[b+12>>2]|0)|0;l=c[b+16>>2]|0;q=c[b+20>>2]|0;r=mD(c[b+24>>2]|0)|0;n=Vk[p&7](o,f,h,l,q,r,c[b+28>>2]|0,c[b+32>>2]|0)|0;i=e;return n|0};case 303:{r=c[c[7092486]>>2]|0;q=c[b+4>>2]|0;l=mD(c[b+8>>2]|0)|0;hk[r&255](q,l);n=0;i=e;return n|0};case 304:{n=Ok[c[(c[7092486]|0)+4>>2]&63]()|0;i=e;return n|0};case 305:{l=c[(c[7092486]|0)+8>>2]|0;q=c[b+4>>2]|0;r=mD(c[b+8>>2]|0)|0;h=mD(c[b+12>>2]|0)|0;Tk[l&255](q,r,h);n=0;i=e;return n|0};case 306:{s=+Nk[c[(c[7092486]|0)+12>>2]&7]();n=(g[k>>2]=s,c[k>>2]|0);i=e;return n|0};case 307:{h=c[(c[7092486]|0)+16>>2]|0;r=mD(c[b+4>>2]|0)|0;n=jk[h&255](r)|0;i=e;return n|0};case 577:{r=c[(c[7092486]|0)+20>>2]|0;h=mD(c[b+4>>2]|0)|0;n=jk[r&255](h)|0;i=e;return n|0};case 308:{h=c[(c[7092486]|0)+24>>2]|0;r=mD(c[b+4>>2]|0)|0;q=mD(c[b+8>>2]|0)|0;l=mD(c[b+12>>2]|0)|0;f=mD(c[b+16>>2]|0)|0;n=Rk[h&15](r,q,l,f,c[b+20>>2]|0)|0;i=e;return n|0};case 309:{f=c[(c[7092486]|0)+36>>2]|0;l=mD(c[b+4>>2]|0)|0;n=jk[f&255](l)|0;i=e;return n|0};case 310:{n=jk[c[(c[7092486]|0)+40>>2]&255](c[b+4>>2]|0)|0;i=e;return n|0};case 311:{l=c[(c[7092486]|0)+44>>2]|0;f=c[b+4>>2]|0;q=mD(c[b+8>>2]|0)|0;r=mD(c[b+12>>2]|0)|0;n=Wk[l&63](f,q,r,c[b+16>>2]|0)|0;i=e;return n|0};case 312:{r=c[(c[7092486]|0)+48>>2]|0;q=c[b+4>>2]|0;f=mD(c[b+8>>2]|0)|0;l=mD(c[b+12>>2]|0)|0;n=rk[r&63](q,f,l)|0;i=e;return n|0};case 313:{l=c[(c[7092486]|0)+52>>2]|0;f=c[b+4>>2]|0;q=mD(c[b+8>>2]|0)|0;r=mD(c[b+12>>2]|0)|0;n=rk[l&63](f,q,r)|0;i=e;return n|0};case 314:{r=c[(c[7092486]|0)+56>>2]|0;q=c[b+4>>2]|0;f=mD(c[b+8>>2]|0)|0;l=mD(c[b+12>>2]|0)|0;n=rk[r&63](q,f,l)|0;i=e;return n|0};case 315:{n=jk[c[(c[7092486]|0)+60>>2]&255](c[b+4>>2]|0)|0;i=e;return n|0};case 316:{l=c[(c[7092486]|0)+64>>2]|0;f=c[b+4>>2]|0;q=mD(c[b+8>>2]|0)|0;n=Wk[l&63](f,q,c[b+12>>2]|0,c[b+16>>2]|0)|0;i=e;return n|0};case 300:{n=Kk[c[(c[7092486]|0)+68>>2]&255](c[b+4>>2]|0,c[b+8>>2]|0)|0;i=e;return n|0};case 576:{q=c[(c[7092486]|0)+72>>2]|0;f=mD(c[b+4>>2]|0)|0;l=c[b+8>>2]|0;r=mD(c[b+12>>2]|0)|0;n=tk[q&7](f,l,r,c[b+16>>2]|0,c[b+20>>2]|0,c[b+24>>2]|0,c[b+28>>2]|0,c[b+32>>2]|0,c[b+36>>2]|0,c[b+40>>2]|0,c[b+44>>2]|0)|0;i=e;return n|0};case 317:{r=c[(c[7092486]|0)+80>>2]|0;l=mD(c[b+4>>2]|0)|0;n=jk[r&255](l)|0;i=e;return n|0};case 318:{l=c[(c[7092486]|0)+84>>2]|0;r=mD(c[b+4>>2]|0)|0;f=c[b+8>>2]|0;q=mD(c[b+12>>2]|0)|0;h=c[b+16>>2]|0;o=c[b+20>>2]|0;p=mD(c[b+24>>2]|0)|0;t=mD(c[b+28>>2]|0)|0;n=gk[l&7](r,f,q,h,o,p,t,c[b+32>>2]|0,c[b+36>>2]|0,+g[b+40>>2],c[b+44>>2]|0,c[b+48>>2]|0,c[b+52>>2]|0)|0;i=e;return n|0};case 400:{t=c[(c[7092486]|0)+92>>2]|0;p=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;hk[t&255](p,o);n=0;i=e;return n|0};case 401:{o=c[(c[7092486]|0)+96>>2]|0;p=c[b+4>>2]|0;t=mD(c[b+8>>2]|0)|0;hk[o&255](p,t);n=0;i=e;return n|0};case 402:{t=c[(c[7092486]|0)+88>>2]|0;p=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;hk[t&255](p,o);n=0;i=e;return n|0};case 403:{hk[c[(c[7092486]|0)+100>>2]&255](c[b+4>>2]|0,c[b+8>>2]|0);n=0;i=e;return n|0};case 404:{vk[c[(c[7092486]|0)+104>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 405:{vk[c[(c[7092486]|0)+108>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 406:{vk[c[(c[7092486]|0)+112>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 407:{vk[c[(c[7092486]|0)+116>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 408:{vk[c[(c[7092486]|0)+120>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 409:{vk[c[(c[7092486]|0)+148>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 410:{vk[c[(c[7092486]|0)+124>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 411:{vk[c[(c[7092486]|0)+128>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 412:{vk[c[(c[7092486]|0)+132>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 413:{vk[c[(c[7092486]|0)+136>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 414:{vk[c[(c[7092486]|0)+140>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 415:{vk[c[(c[7092486]|0)+144>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 416:{hk[c[(c[7092486]|0)+152>>2]&255](c[b+4>>2]|0,c[b+8>>2]|0);n=0;i=e;return n|0};case 417:{vk[c[(c[7092486]|0)+156>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 418:{vk[c[(c[7092486]|0)+160>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 419:{o=c[(c[7092486]|0)+164>>2]|0;p=c[b+4>>2]|0;t=mD(c[b+8>>2]|0)|0;Xk[o&15](p,t,+g[b+12>>2]);n=0;i=e;return n|0};case 420:{t=c[(c[7092486]|0)+168>>2]|0;p=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;hk[t&255](p,o);n=0;i=e;return n|0};case 421:{ck[c[(c[7092486]|0)+172>>2]&15](c[b+4>>2]|0,+g[b+8>>2]);n=0;i=e;return n|0};case 422:{o=c[(c[7092486]|0)+176>>2]|0;p=c[b+4>>2]|0;s=+g[b+8>>2];t=mD(c[b+12>>2]|0)|0;wk[o&7](p,s,t);n=0;i=e;return n|0};case 423:{vk[c[(c[7092486]|0)+180>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 500:{t=c[(c[7092486]|0)+184>>2]|0;p=mD(c[b+4>>2]|0)|0;n=Fk[t&7](p,+g[b+8>>2])|0;i=e;return n|0};case 501:{vk[c[(c[7092486]|0)+188>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 502:{s=+yk[c[(c[7092486]|0)+192>>2]&7](c[b+4>>2]|0,c[b+8>>2]|0);n=(g[k>>2]=s,c[k>>2]|0);i=e;return n|0};case 503:{s=+Hk[c[(c[7092486]|0)+196>>2]&7](c[b+4>>2]|0,c[b+8>>2]|0,+g[b+12>>2],+g[b+16>>2]);n=(g[k>>2]=s,c[k>>2]|0);i=e;return n|0};case 504:{n=Kk[c[(c[7092486]|0)+200>>2]&255](c[b+4>>2]|0,c[b+8>>2]|0)|0;i=e;return n|0};case 505:{n=Wk[c[(c[7092486]|0)+204>>2]&63](c[b+4>>2]|0,c[b+8>>2]|0,c[b+12>>2]|0,c[b+16>>2]|0)|0;i=e;return n|0};case 506:{p=c[(c[7092486]|0)+208>>2]|0;t=c[b+4>>2]|0;o=c[b+8>>2]|0;h=mD(c[b+12>>2]|0)|0;Yk[p&255](t,o,h,c[b+16>>2]|0);n=0;i=e;return n|0};case 507:{n=Ok[c[(c[7092486]|0)+212>>2]&63]()|0;i=e;return n|0};case 508:{vk[c[(c[7092486]|0)+216>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 509:{h=c[(c[7092486]|0)+220>>2]|0;o=c[b+4>>2]|0;t=c[b+8>>2]|0;p=mD(c[b+12>>2]|0)|0;Tk[h&255](o,t,p);n=0;i=e;return n|0};case 510:{hk[c[(c[7092486]|0)+224>>2]&255](c[b+4>>2]|0,c[b+8>>2]|0);n=0;i=e;return n|0};case 511:{p=c[(c[7092486]|0)+228>>2]|0;t=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;n=Kk[p&255](t,o)|0;i=e;return n|0};case 512:{n=jk[c[(c[7092486]|0)+232>>2]&255](c[b+4>>2]|0)|0;i=e;return n|0};case 513:{o=c[(c[7092486]|0)+236>>2]|0;t=c[b+4>>2]|0;p=mD(c[b+8>>2]|0)|0;h=c[b+12>>2]|0;q=mD(c[b+16>>2]|0)|0;f=mD(c[b+20>>2]|0)|0;r=mD(c[b+24>>2]|0)|0;l=mD(c[b+28>>2]|0)|0;u=mD(c[b+32>>2]|0)|0;v=mD(c[b+36>>2]|0)|0;w=mD(c[b+40>>2]|0)|0;x=mD(c[b+44>>2]|0)|0;lk[o&7](t,p,h,q,f,r,l,u,v,w,x);n=0;i=e;return n|0};case 569:{x=c[(c[7092486]|0)+240>>2]|0;w=c[b+4>>2]|0;v=mD(c[b+8>>2]|0)|0;n=Kk[x&255](w,v)|0;i=e;return n|0};case 514:{v=c[(c[7092486]|0)+244>>2]|0;w=c[b+4>>2]|0;x=mD(c[b+8>>2]|0)|0;u=c[b+12>>2]|0;l=c[b+16>>2]|0;r=mD(c[b+20>>2]|0)|0;f=mD(c[b+24>>2]|0)|0;q=mD(c[b+28>>2]|0)|0;h=mD(c[b+32>>2]|0)|0;p=mD(c[b+36>>2]|0)|0;t=mD(c[b+40>>2]|0)|0;o=mD(c[b+44>>2]|0)|0;y=mD(c[b+48>>2]|0)|0;n=Dk[v&7](w,x,u,l,r,f,q,h,p,t,o,y)|0;i=e;return n|0};case 515:{n=jk[c[(c[7092486]|0)+248>>2]&255](c[b+4>>2]|0)|0;i=e;return n|0};case 516:{Tk[c[(c[7092486]|0)+252>>2]&255](c[b+4>>2]|0,c[b+8>>2]|0,c[b+12>>2]|0);n=0;i=e;return n|0};case 570:{y=c[(c[7092486]|0)+256>>2]|0;o=c[b+4>>2]|0;t=mD(c[b+8>>2]|0)|0;Tk[y&255](o,t,c[b+12>>2]|0);n=0;i=e;return n|0};case 517:{t=c[(c[7092486]|0)+260>>2]|0;o=mD(c[b+4>>2]|0)|0;y=mD(c[b+8>>2]|0)|0;n=rk[t&63](o,y,c[b+12>>2]|0)|0;i=e;return n|0};case 518:{y=c[(c[7092486]|0)+264>>2]|0;o=mD(c[b+4>>2]|0)|0;t=mD(c[b+8>>2]|0)|0;n=rk[y&63](o,t,c[b+12>>2]|0)|0;i=e;return n|0};case 519:{t=c[(c[7092486]|0)+268>>2]|0;o=mD(c[b+4>>2]|0)|0;y=c[b+8>>2]|0;p=mD(c[b+12>>2]|0)|0;Yk[t&255](o,y,p,c[b+16>>2]|0);n=0;i=e;return n|0};case 520:{p=c[(c[7092486]|0)+272>>2]|0;y=mD(c[b+4>>2]|0)|0;vk[p&511](y);n=0;i=e;return n|0};case 521:{y=c[(c[7092486]|0)+276>>2]|0;p=mD(c[b+4>>2]|0)|0;hk[y&255](p,c[b+8>>2]|0);n=0;i=e;return n|0};case 522:{p=c[(c[7092486]|0)+280>>2]|0;y=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;t=mD(c[b+12>>2]|0)|0;n=rk[p&63](y,o,t)|0;i=e;return n|0};case 523:{hk[c[(c[7092486]|0)+284>>2]&255](c[b+4>>2]|0,c[b+8>>2]|0);n=0;i=e;return n|0};case 524:{t=c[(c[7092486]|0)+288>>2]|0;o=c[b+4>>2]|0;y=mD(c[b+8>>2]|0)|0;Tk[t&255](o,y,c[b+12>>2]|0);n=0;i=e;return n|0};case 525:{vk[c[(c[7092486]|0)+292>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 526:{vk[c[(c[7092486]|0)+296>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 571:{hk[c[(c[7092486]|0)+300>>2]&255](c[b+4>>2]|0,c[b+8>>2]|0);n=0;i=e;return n|0};case 527:{y=c[(c[7092486]|0)+304>>2]|0;o=c[b+4>>2]|0;t=mD(c[b+8>>2]|0)|0;hk[y&255](o,t);n=0;i=e;return n|0};case 528:{vk[c[(c[7092486]|0)+308>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 529:{vk[c[(c[7092486]|0)+312>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 530:{vk[c[(c[7092486]|0)+316>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 531:{vk[c[(c[7092486]|0)+320>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 532:{t=c[(c[7092486]|0)+324>>2]|0;o=c[b+4>>2]|0;y=mD(c[b+8>>2]|0)|0;Tk[t&255](o,y,c[b+12>>2]|0);n=0;i=e;return n|0};case 533:{y=c[(c[7092486]|0)+328>>2]|0;o=c[b+4>>2]|0;t=mD(c[b+8>>2]|0)|0;n=Kk[y&255](o,t)|0;i=e;return n|0};case 534:{t=c[(c[7092486]|0)+332>>2]|0;o=c[b+4>>2]|0;y=mD(c[b+8>>2]|0)|0;n=Kk[t&255](o,y)|0;i=e;return n|0};case 535:{y=c[(c[7092486]|0)+336>>2]|0;o=c[b+4>>2]|0;t=mD(c[b+8>>2]|0)|0;p=mD(c[b+12>>2]|0)|0;n=Wk[y&63](o,t,p,c[b+16>>2]|0)|0;i=e;return n|0};case 536:{p=c[(c[7092486]|0)+340>>2]|0;t=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;y=mD(c[b+12>>2]|0)|0;h=c[b+16>>2]|0;q=mD(c[b+20>>2]|0)|0;n=bk[p&7](t,o,y,h,q,+g[b+24>>2])|0;i=e;return n|0};case 537:{q=c[(c[7092486]|0)+344>>2]|0;h=mD(c[b+4>>2]|0)|0;y=mD(c[b+8>>2]|0)|0;n=Kk[q&255](h,y)|0;i=e;return n|0};case 538:{y=c[(c[7092486]|0)+348>>2]|0;h=c[b+4>>2]|0;q=mD(c[b+8>>2]|0)|0;o=mD(c[b+12>>2]|0)|0;t=mD(c[b+16>>2]|0)|0;n=Wk[y&63](h,q,o,t)|0;i=e;return n|0};case 539:{t=c[(c[7092486]|0)+352>>2]|0;o=c[b+4>>2]|0;q=mD(c[b+8>>2]|0)|0;h=mD(c[b+12>>2]|0)|0;n=rk[t&63](o,q,h)|0;i=e;return n|0};case 567:{h=c[(c[7092486]|0)+356>>2]|0;q=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;n=Kk[h&255](q,o)|0;i=e;return n|0};case 568:{o=c[(c[7092486]|0)+360>>2]|0;q=mD(c[b+4>>2]|0)|0;h=mD(c[b+8>>2]|0)|0;n=Kk[o&255](q,h)|0;i=e;return n|0};case 540:{s=+yk[c[(c[7092486]|0)+364>>2]&7](c[b+4>>2]|0,c[b+8>>2]|0);n=(g[k>>2]=s,c[k>>2]|0);i=e;return n|0};case 573:{Xk[c[(c[7092486]|0)+368>>2]&15](c[b+4>>2]|0,c[b+8>>2]|0,+g[b+12>>2]);n=0;i=e;return n|0};case 541:{Uk[c[(c[7092486]|0)+372>>2]&511]();n=0;i=e;return n|0};case 542:{Uk[c[(c[7092486]|0)+376>>2]&511]();n=0;i=e;return n|0};case 543:{h=c[(c[7092486]|0)+380>>2]|0;q=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;n=Kk[h&255](q,o)|0;i=e;return n|0};case 544:{vk[c[(c[7092486]|0)+384>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 565:{Tk[c[(c[7092486]|0)+388>>2]&255](c[b+4>>2]|0,c[b+8>>2]|0,c[b+12>>2]|0);n=0;i=e;return n|0};case 545:{o=c[(c[7092486]|0)+392>>2]|0;q=c[b+4>>2]|0;h=mD(c[b+8>>2]|0)|0;hk[o&255](q,h);n=0;i=e;return n|0};case 566:{ck[c[(c[7092486]|0)+396>>2]&15](c[b+4>>2]|0,+g[b+8>>2]);n=0;i=e;return n|0};case 546:{n=jk[c[(c[7092486]|0)+400>>2]&255](c[b+4>>2]|0)|0;i=e;return n|0};case 547:{vk[c[(c[7092486]|0)+404>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 548:{vk[c[(c[7092486]|0)+408>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 574:{h=c[(c[7092486]|0)+452>>2]|0;q=c[b+4>>2]|0;o=mD(c[b+8>>2]|0)|0;mk[h&7](q,o,+g[b+12>>2],c[b+16>>2]|0);n=0;i=e;return n|0};case 549:{o=c[(c[7092486]|0)+412>>2]|0;q=mD(c[b+4>>2]|0)|0;h=c[b+8>>2]|0;t=mD(c[b+12>>2]|0)|0;Yk[o&255](q,h,t,c[b+16>>2]|0);n=0;i=e;return n|0};case 550:{t=c[(c[7092486]|0)+416>>2]|0;h=c[b+4>>2]|0;q=mD(c[b+8>>2]|0)|0;n=pk[t&7](h,q,+g[b+12>>2],c[b+16>>2]|0)|0;i=e;return n|0};case 551:{vk[c[(c[7092486]|0)+420>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 552:{vk[c[(c[7092486]|0)+424>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 553:{q=c[(c[7092486]|0)+428>>2]|0;h=mD(c[b+4>>2]|0)|0;n=Kk[q&255](h,c[b+8>>2]|0)|0;i=e;return n|0};case 554:{h=c[(c[7092486]|0)+432>>2]|0;q=c[b+4>>2]|0;t=mD(c[b+8>>2]|0)|0;o=c[b+12>>2]|0;s=+g[b+16>>2];y=mD(c[b+20>>2]|0)|0;n=Ek[h&7](q,t,o,s,y)|0;i=e;return n|0};case 572:{y=c[(c[7092486]|0)+436>>2]|0;o=mD(c[b+4>>2]|0)|0;t=c[b+8>>2]|0;q=mD(c[b+12>>2]|0)|0;h=c[b+16>>2]|0;p=mD(c[b+20>>2]|0)|0;n=Rk[y&15](o,t,q,h,p)|0;i=e;return n|0};case 555:{n=Ok[c[(c[7092486]|0)+440>>2]&63]()|0;i=e;return n|0};case 556:{vk[c[(c[7092486]|0)+444>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 557:{p=c[(c[7092486]|0)+448>>2]|0;h=c[b+4>>2]|0;q=mD(c[b+8>>2]|0)|0;hk[p&255](h,q);n=0;i=e;return n|0};case 558:{q=c[(c[7092486]|0)+456>>2]|0;h=c[b+4>>2]|0;p=mD(c[b+8>>2]|0)|0;n=Kk[q&255](h,p)|0;i=e;return n|0};case 559:{p=c[(c[7092486]|0)+460>>2]|0;h=c[b+4>>2]|0;q=c[b+8>>2]|0;t=mD(c[b+12>>2]|0)|0;Tk[p&255](h,q,t);n=0;i=e;return n|0};case 560:{t=c[(c[7092486]|0)+464>>2]|0;q=c[b+4>>2]|0;h=mD(c[b+8>>2]|0)|0;n=Kk[t&255](q,h)|0;i=e;return n|0};case 561:{n=Ok[c[(c[7092486]|0)+468>>2]&63]()|0;i=e;return n|0};case 562:{vk[c[(c[7092486]|0)+472>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 563:{vk[c[(c[7092486]|0)+476>>2]&511](c[b+4>>2]|0);n=0;i=e;return n|0};case 564:{h=c[(c[7092486]|0)+480>>2]|0;q=c[b+4>>2]|0;t=mD(c[b+8>>2]|0)|0;p=mD(c[b+12>>2]|0)|0;o=mD(c[b+16>>2]|0)|0;y=mD(c[b+20>>2]|0)|0;n=Rk[h&15](q,t,p,o,y)|0;i=e;return n|0};case 100:{n$(mD(c[b+4>>2]|0)|0,c[b+8>>2]&255|0,c[b+12>>2]|0)|0;n=0;i=e;return n|0};case 101:{y=mD(c[b+4>>2]|0)|0;m$(y|0,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0)|0;n=0;i=e;return n|0};case 102:{y=b+4|0;o=mD(c[y>>2]|0)|0;q$(o|0,mD(c[b+8>>2]|0)|0,c[b+12>>2]|0)|0;n=c[y>>2]|0;i=e;return n|0};case 103:{s=+W(+g[b+4>>2]);n=(g[k>>2]=s,c[k>>2]|0);i=e;return n|0};case 104:{s=+V(+g[b+4>>2]);n=(g[k>>2]=s,c[k>>2]|0);i=e;return n|0};case 105:{s=+$(+(+g[b+4>>2]),+(+g[b+8>>2]));n=(g[k>>2]=s,c[k>>2]|0);i=e;return n|0};case 106:{s=+T(+g[b+4>>2]);n=(g[k>>2]=s,c[k>>2]|0);i=e;return n|0};case 107:{y=mD(c[b+4>>2]|0)|0;zB(y,mD(c[b+8>>2]|0)|0,mD(c[b+12>>2]|0)|0);n=0;i=e;return n|0};case 108:{y=mD(c[b+4>>2]|0)|0;o=mD(c[b+8>>2]|0)|0;BB(y,o,mD(c[b+12>>2]|0)|0,mD(c[b+16>>2]|0)|0);n=0;i=e;return n|0};case 109:{yB(mD(c[b+4>>2]|0)|0,mD(c[b+8>>2]|0)|0);n=0;i=e;return n|0};case 110:{s=+R(+g[b+4>>2]);n=(g[k>>2]=s,c[k>>2]|0);i=e;return n|0};case 111:{s=+ca(+g[b+4>>2]);n=(g[k>>2]=s,c[k>>2]|0);i=e;return n|0};default:{Ur(1,99720,(m=i,i=i+8|0,c[m>>2]=j,m)|0);i=m;return 0}}return 0}function yA(){var a=0,b=0;a=i;b=c[5120100]|0;if((b|0)==0){i=a;return}oD(b,1,(b=i,i=i+8|0,c[b>>2]=0,b)|0)|0;i=b;gD(c[5120100]|0);c[5120100]=0;i=a;return}function zA(){var a=0,b=0,d=0,e=0,f=0;a=i;b=c[5120100]|0;if((b|0)==0){i=a;return}oD(b,1,(b=i,i=i+8|0,c[b>>2]=1,b)|0)|0;i=b;d=hD(c[5120100]|0,1)|0;c[5120100]=d;if((d|0)==0){Ur(0,57688,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}c[531801]=pq()|0;if((c[(c[453930]|0)+32>>2]|0)>0){d=0;do{c[(c[422837]|0)+(d*121936|0)+67644>>2]=0;d=d+1|0;}while((d|0)<(c[(c[453930]|0)+32>>2]|0))}d=c[5120100]|0;e=c[531808]|0;f=Bs()|0;oD(d,0,(b=i,i=i+24|0,c[b>>2]=e,c[b+8>>2]=f,c[b+16>>2]=1,b)|0)|0;i=b;i=a;return}function AA(){var a=0,b=0,d=0,e=0,f=0;a=i;b=gt(51160,46040,32)|0;if((b|0)==0){d=0}else{d=c[b+32>>2]|0}c[7092712]=d;d=iD(185240,70,~~+at(181336))|0;c[5120100]=d;if((d|0)==0){Ur(0,176648,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}c[531801]=pq()|0;if((c[(c[453930]|0)+32>>2]|0)>0){d=0;do{c[(c[422837]|0)+(d*121936|0)+67644>>2]=0;d=d+1|0;}while((d|0)<(c[(c[453930]|0)+32>>2]|0))}d=c[5120100]|0;b=c[531808]|0;f=Bs()|0;oD(d,0,(e=i,i=i+24|0,c[e>>2]=b,c[e+8>>2]=f,c[e+16>>2]=0,e)|0)|0;i=e;i=a;return}function BA(){var a=0,b=0,d=0,e=0;a=i;if((c[453968]|0)!=2){b=0;i=a;return b|0}d=oD(c[5120100]|0,9,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0)|0;i=e;b=d;i=a;return b|0}function CA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;i=i+1024|0;d=a+67644|0;e=b|0;f=0;a:while(1){g=a+117840+(f<<2)|0;if((c[g>>2]|0)!=0){do{if((f|0)==0){h=c[d>>2]|0;if((h|0)==0){break}if((c[h+424>>2]&512|0)==0){break}f=f+1|0;continue a}}while(0);h=1815908+(f<<2)|0;j=c[h>>2]|0;k=o$(j|0)|0;if((k|0)>999){l=0;m=k;while(1){if((l|0)==0){n=53896}else{n=(m|0)<1e3?53416:52984}TB(e,(c[h>>2]|0)+l|0,1e3);OA(a,52400,(o=i,i=i+24|0,c[o>>2]=n,c[o+8>>2]=f,c[o+16>>2]=e,o)|0);i=o;k=m-999|0;if((k|0)>0){l=l+999|0;m=k}else{break}}}else{OA(a,51928,(o=i,i=i+16|0,c[o>>2]=f,c[o+8>>2]=j,o)|0);i=o}c[g>>2]=0}f=f+1|0;if((f|0)>=1024){break}}i=b;return}function DA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=i;i=i+1024|0;if(a>>>0>1023>>>0){Ur(1,145240,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e}f=(b|0)==0?28378704:b;b=1815908+(a<<2)|0;g=c[b>>2]|0;if((k$(f,g)|0)==0){i=d;return}es(g);c[b>>2]=is(f)|0;if(!((c[453968]|0)==2|(c[453969]|0)!=0)){i=d;return}f=c[422837]|0;if((c[(c[453930]|0)+32>>2]|0)<=0){i=d;return}g=d|0;if((a|0)==0){h=0;j=f}else{k=0;l=f;while(1){f=c[l>>2]|0;do{if(f>>>0<4>>>0){if((f|0)!=3){break}c[l+117840+(a<<2)>>2]=1}else{m=c[b>>2]|0;n=o$(m|0)|0;if((n|0)>999){o=0;p=n}else{OA(l,51928,(e=i,i=i+16|0,c[e>>2]=a,c[e+8>>2]=m,e)|0);i=e;break}while(1){if((o|0)==0){q=53896}else{q=(p|0)<1e3?53416:52984}TB(g,(c[b>>2]|0)+o|0,1e3);OA(l,52400,(e=i,i=i+24|0,c[e>>2]=q,c[e+8>>2]=a,c[e+16>>2]=g,e)|0);i=e;m=p-999|0;if((m|0)>0){o=o+999|0;p=m}else{break}}}}while(0);f=k+1|0;if((f|0)<(c[(c[453930]|0)+32>>2]|0)){k=f;l=l+121936|0}else{break}}i=d;return}while(1){l=c[j>>2]|0;do{if(l>>>0<4>>>0){if((l|0)!=3){break}c[j+117840>>2]=1}else{k=c[j+67644>>2]|0;if((k|0)!=0){if((c[k+424>>2]&512|0)!=0){break}}k=c[b>>2]|0;p=o$(k|0)|0;if((p|0)>999){r=0;s=p}else{OA(j,51928,(e=i,i=i+16|0,c[e>>2]=0,c[e+8>>2]=k,e)|0);i=e;break}while(1){if((r|0)==0){t=53896}else{t=(s|0)<1e3?53416:52984}TB(g,(c[b>>2]|0)+r|0,1e3);OA(j,52400,(e=i,i=i+24|0,c[e>>2]=t,c[e+8>>2]=0,c[e+16>>2]=g,e)|0);i=e;k=s-999|0;if((k|0)>0){r=r+999|0;s=k}else{break}}}}while(0);l=h+1|0;if((l|0)<(c[(c[453930]|0)+32>>2]|0)){h=l;j=j+121936|0}else{break}}i=d;return}function EA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;if((e|0)<1){Ur(1,148648,(g=i,i=i+8|0,c[g>>2]=e,g)|0);i=g}if(b>>>0>1023>>>0){Ur(1,130304,(g=i,i=i+8|0,c[g>>2]=b,g)|0);i=g}g=c[1815908+(b<<2)>>2]|0;if((g|0)==0){a[d]=0;i=f;return}else{TB(d,g,e);i=f;return}}function FA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;do{if((a|0)>=0){if((c[(c[453930]|0)+32>>2]|0)<=(a|0)){break}e=(b|0)==0?28378704:b;TB((c[422837]|0)+(a*121936|0)+4|0,e,1024);f=(c[422837]|0)+(a*121936|0)+67648|0;TB(f,rC(e,109016)|0,32);i=d;return}}while(0);Ur(1,119816,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d}function GA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if((d|0)<1){Ur(1,99648,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f}do{if((a|0)>=0){if((c[(c[453930]|0)+32>>2]|0)<=(a|0)){break}TB(b,(c[422837]|0)+(a*121936|0)+4|0,d);i=e;return}}while(0);Ur(1,57632,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f}function HA(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;a=i;b=c[(c[453930]|0)+32>>2]|0;if((b|0)>0){d=c[422837]|0;e=0;f=0;while(1){g=(c[d+(e*121936|0)>>2]|0)>>>0>1>>>0&(e|0)>(f|0)?e:f;h=e+1|0;if((h|0)<(b|0)){e=h;f=g}else{j=g;break}}}else{j=0}f=j+1|0;gt(139192,137320,0)|0;c[(c[453930]|0)+20>>2]=0;e=c[(c[453930]|0)+32>>2]|0;do{if((e|0)<(f|0)){d=pC(58736,(k=i,i=i+8|0,c[k>>2]=f,k)|0)|0;i=k;kt(139192,d)}else{if((e|0)<=64){break}d=pC(58736,(k=i,i=i+8|0,c[k>>2]=64,k)|0)|0;i=k;kt(139192,d)}}while(0);if((c[(c[453930]|0)+32>>2]|0)==(b|0)){i=a;return}b=ss(f*121936|0)|0;k=b;e=(j|0)>-1;j=c[422837]|0;if(e){d=0;g=j;while(1){h=g+(d*121936|0)|0;l=k+(d*121936|0)|0;if((c[h>>2]|0)>>>0>1>>>0){m$(l|0,h|0,121936)|0}else{n$(l|0,0,121936)|0}l=d+1|0;h=c[422837]|0;if((l|0)<(f|0)){d=l;g=h}else{m=h;break}}}else{m=j}es(m);m=gs((c[(c[453930]|0)+32>>2]|0)*121936|0)|0;c[422837]=m;n$(m|0,0,(c[(c[453930]|0)+32>>2]|0)*121936|0|0)|0;if(e){e=0;do{m=k+(e*121936|0)|0;if((c[m>>2]|0)>>>0>1>>>0){m$((c[422837]|0)+(e*121936|0)|0,m|0,121936)|0}e=e+1|0;}while((e|0)<(f|0))}ts(b);b=c[(c[453930]|0)+32>>2]|0;if((c[(c[5458548]|0)+32>>2]|0)==0){c[422838]=b<<10;i=a;return}else{c[422838]=b<<13;i=a;return}}function IA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;yA();Sr(51088,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;Sr(46016,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;vo();so(0);ms();lq();do{if(+at(185136)!=0.0){if((c[(c[453930]|0)+20>>2]|0)==0){break}HA()}else{if((c[422834]|0)!=0){Ur(0,54416,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}gt(139192,137320,0)|0;c[(c[453930]|0)+20>>2]=0;g=c[(c[453930]|0)+32>>2]|0;do{if((g|0)<1){h=pC(58736,(f=i,i=i+8|0,c[f>>2]=1,f)|0)|0;i=f;kt(139192,h)}else{if((g|0)<=64){break}h=pC(58736,(f=i,i=i+8|0,c[f>>2]=64,f)|0)|0;i=f;kt(139192,h)}}while(0);c[422837]=gs((c[(c[453930]|0)+32>>2]|0)*121936|0)|0;c[422838]=c[(c[453930]|0)+32>>2]<<((c[(c[5458548]|0)+32>>2]|0)==0?10:13);c[422834]=1;if((c[(c[453950]|0)+32>>2]|0)!=0){kt(102784,170048)}kt(185136,126848);iw()}}while(0);Ou(0);c[422840]=rs((c[422838]|0)*208|0,0)|0;c[422839]=0;c[422836]=c[422836]^4;kt(181304,176584);f=(c[453930]|0)+32|0;g=c[f>>2]|0;if((g|0)>0){h=c[422837]|0;j=0;k=g;while(1){if((c[h+(j*121936|0)>>2]|0)>>>0>1>>>0){c[h+(j*121936|0)+117836>>2]=c[531808];l=c[f>>2]|0}else{l=k}g=j+1|0;if((g|0)<(l|0)){j=g;k=l}else{m=0;break}}}else{m=0}do{l=c[1815908+(m<<2)>>2]|0;if((l|0)!=0){es(l)}m=m+1|0;}while((m|0)<1024);n$(1815872,0,311364)|0;m=0;do{c[1815908+(m<<2)>>2]=is(28378704)|0;m=m+1|0;}while((m|0)<1024);kt(173112,170048);kt(166576,a);m=(v$()|0)<<16;l=m^(v$()|0);c[453972]=l^(Bs()|0);l=Pr(200,72)|0;m=c[l>>2]|0;TB(m,a,64);c[m+64>>2]=b;c[m+68>>2]=d;Uu(c[453972]|0,l);i=e;return}function JA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;d=i;i=i+16528|0;e=d|0;f=d+8|0;g=d+72|0;h=d+80|0;j=d+16464|0;k=b|0;l=c[k>>2]|0;TB(j,l,64);m=c[l+64>>2]|0;n=c[l+68>>2]|0;l=c[k>>2]|0;if((l|0)!=0){W_(l)}W_(b);c[6924866]=(c[6924866]|0)-1;b=pC(59248,(l=i,i=i+8|0,c[l>>2]=j,l)|0)|0;i=l;jq(b,0,g);b=pC(58736,(l=i,i=i+8|0,c[l>>2]=c[g>>2],l)|0)|0;i=l;kt(101848,b);b=c[5457514]|0;c[453970]=b;c[453971]=b;c[453973]=b;g=pC(58736,(l=i,i=i+8|0,c[l>>2]=b,l)|0)|0;i=l;kt(124632,g);kB();c[453968]=1;AA();c[(c[453956]|0)+20>>2]=0;oD(c[5120100]|0,8,(l=i,i=i+8|0,c[l>>2]=c[531808],l)|0)|0;i=l;_y(c[531808]|0);g=(c[531808]|0)+100|0;c[531808]=g;c[422835]=(c[422835]|0)+100;oD(c[5120100]|0,8,(l=i,i=i+8|0,c[l>>2]=g,l)|0)|0;i=l;_y(c[531808]|0);g=(c[531808]|0)+100|0;c[531808]=g;c[422835]=(c[422835]|0)+100;oD(c[5120100]|0,8,(l=i,i=i+8|0,c[l>>2]=g,l)|0)|0;i=l;_y(c[531808]|0);c[531808]=(c[531808]|0)+100;c[422835]=(c[422835]|0)+100;if((c[531804]|0)>1){g=1;do{b=rA(g)|0;if((c[b+416>>2]|0)!=0){c[b>>2]=g;m$(1820012+(g*300|0)|0,b|0,208)|0}g=g+1|0;}while((g|0)<(c[531804]|0))}if((c[(c[453930]|0)+32>>2]|0)>0){g=(m|0)==0;m=0;do{b=c[422837]|0;j=b+(m*121936|0)|0;do{if((c[j>>2]|0)>>>0>1>>>0){k=(c[b+(m*121936|0)+84984>>2]|0)!=1;if(!(k|g)){Zz(j,28378704);break}o=c[5120100]|0;p=oD(o,2,(l=i,i=i+24|0,c[l>>2]=m,c[l+8>>2]=0,c[l+16>>2]=k&1^1,l)|0)|0;i=l;q=nD(o,p)|0;if((q|0)!=0){Zz((c[422837]|0)+(m*121936|0)|0,q);break}q=c[422837]|0;p=q+(m*121936|0)|0;if(k){c[p>>2]=2;break}else{c[p>>2]=4;p=rA(m)|0;c[p>>2]=m;c[q+(m*121936|0)+67644>>2]=p;c[q+(m*121936|0)+68160>>2]=-1;c[q+(m*121936|0)+68176>>2]=0;oD(c[5120100]|0,3,(l=i,i=i+8|0,c[l>>2]=m,l)|0)|0;i=l;break}}}while(0);m=m+1|0;}while((m|0)<(c[(c[453930]|0)+32>>2]|0))}oD(c[5120100]|0,8,(l=i,i=i+8|0,c[l>>2]=c[531808],l)|0)|0;i=l;_y(c[531808]|0);c[531808]=(c[531808]|0)+100;c[422835]=(c[422835]|0)+100;do{if((c[(c[453910]|0)+32>>2]|0)==0){kt(123008,28378704);kt(122144,28378704)}else{m=Iu()|0;kt(123008,m);if((a[m]|0)==0){Sr(57824,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l}kt(122144,Ju()|0);if((c[(c[5458548]|0)+32>>2]|0)==0){break}m=f|0;$B(m,64,56176,(l=i,i=i+8|0,c[l>>2]=55192,l)|0)|0;i=l;cu(m,e,0)|0;m=c[e>>2]|0;if((m|0)==0){break}Yt(m)}}while(0);kt(121248,Lu()|0);kt(120144,Nu()|0);TB(h,Et(8)|0,16384);c[5389062]=c[5389062]&-9;DA(1,h);DA(0,Dt(4)|0);c[5389062]=c[5389062]&-5;c[453968]=2;tz();os();if((c[(c[5458548]|0)+32>>2]|0)!=0){uo(1)}Sr(56816,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;if((n|0)==0){r=64;s=0;t=16384;u=0;i=d;return}hk[c[n+4>>2]&255](n,0);r=64;s=0;t=16384;u=0;i=d;return}function KA(){var a=0,b=0,d=0;a=i;uz();gt(163320,170048,4)|0;gt(160568,157928,4)|0;gt(155432,170048,4)|0;c[453956]=gt(153456,170048,36)|0;gt(151544,28378704,4)|0;c[453944]=gt(166576,149184,68)|0;c[453914]=gt(146584,170048,4)|0;c[453952]=gt(144232,141488,5)|0;c[453930]=gt(139192,137320,36)|0;c[453924]=gt(135800,170048,5)|0;c[453934]=gt(134368,170048,5)|0;c[453962]=gt(132872,131880,5)|0;c[453926]=gt(130664,170048,5)|0;c[453936]=gt(129320,170048,5)|0;c[453960]=gt(128224,126848,5)|0;gt(125544,126848,72)|0;c[453904]=gt(124632,170048,72)|0;c[453910]=gt(123768,126848,8)|0;gt(123008,28378704,72)|0;gt(122144,28378704,72)|0;gt(121248,28378704,72)|0;gt(120144,28378704,72)|0;c[453908]=gt(118688,28378704,256)|0;c[453912]=gt(117544,28378704,256)|0;c[453958]=gt(116448,157928,256)|0;c[453900]=gt(115048,113768,256)|0;c[453578]=gt(112912,112008,256)|0;gt(181304,28378704,256)|0;c[453966]=gt(111240,170048,4)|0;gt(110472,28378704,5)|0;c[453938]=gt(109272,108128,0)|0;b=pC(107272,(d=i,i=i+8|0,c[d>>2]=2,d)|0)|0;i=d;c[453939]=gt(b,28378704,1)|0;b=pC(107272,(d=i,i=i+8|0,c[d>>2]=3,d)|0)|0;i=d;c[453940]=gt(b,28378704,1)|0;b=pC(107272,(d=i,i=i+8|0,c[d>>2]=4,d)|0)|0;i=d;c[453941]=gt(b,28378704,1)|0;b=pC(107272,(d=i,i=i+8|0,c[d>>2]=5,d)|0)|0;i=d;c[453942]=gt(b,28378704,1)|0;c[453906]=gt(106240,105360,0)|0;c[453902]=gt(104560,170048,0)|0;c[453918]=gt(103536,170048,0)|0;c[453950]=gt(102784,170048,0)|0;c[453946]=gt(101848,28378704,64)|0;c[453948]=gt(101032,126848,1)|0;c[453964]=gt(99872,96288,1)|0;bz();cz();qr(63952);i=a;return}function LA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;d=c[453930]|0;if((c[d+32>>2]|0)<=0){i=b;return}e=0;f=c[422837]|0;g=d;while(1){if((c[f>>2]|0)>>>0>1>>>0){if((c[f+84984>>2]|0)!=2){OA(f,62832,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;OA(f,61992,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h}c[f+68176>>2]=0;eB(f);j=c[453930]|0}else{j=g}d=e+1|0;k=c[j+32>>2]|0;if((d|0)<(k|0)){e=d;f=f+121936|0;g=j}else{break}}if((k|0)<=0){i=b;return}k=0;g=c[422837]|0;f=j;while(1){if((c[g>>2]|0)>>>0>1>>>0){if((c[g+84984>>2]|0)!=2){OA(g,62832,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;OA(g,61992,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h}c[g+68176>>2]=0;eB(g);l=c[453930]|0}else{l=f}j=k+1|0;if((j|0)<(c[l+32>>2]|0)){k=j;g=g+121936|0;f=l}else{break}}i=b;return}function MA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;d=c[5451068]|0;if((d|0)==0){i=b;return}if((c[d+32>>2]|0)==0){i=b;return}Sr(61240,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;jw();if(!((c[422837]|0)==0|(c[5458544]|0)!=0)){LA(a)}Qz();QA();yA();a=0;do{e=c[1815908+(a<<2)>>2]|0;if((e|0)!=0){es(e)}a=a+1|0;}while((a|0)<1024);n$(1815872,0,311364)|0;a=c[422837]|0;if((a|0)!=0){if((c[(c[453930]|0)+32>>2]|0)>0){e=0;f=a;while(1){$z(f+(e*121936|0)|0);g=e+1|0;h=c[422837]|0;if((g|0)<(c[(c[453930]|0)+32>>2]|0)){e=g;f=h}else{j=h;break}}}else{j=a}es(j)}n$(1691336,0,122976)|0;kt(185136,170048);kt(60544,170048);Sr(59832,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;if((c[(c[453950]|0)+32>>2]|0)==2){i=b;return}mo(0);i=b;return}function NA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;if((c[a>>2]|0)>>>0<3>>>0){i=d;return}e=a+66564|0;f=(c[e>>2]|0)+1|0;c[e>>2]=f;g=a+66568|0;if((f-(c[g>>2]|0)|0)!=65){TB(a+1028+((f&63)<<10)|0,b,1024);i=d;return}Sr(142680,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;h=c[g>>2]|0;g=h+1|0;if((h|0)<(c[e>>2]|0)){h=g;while(1){Sr(175488,(f=i,i=i+16|0,c[f>>2]=h,c[f+8>>2]=a+1028+((h&63)<<10),f)|0);i=f;j=h+1|0;if((h|0)<(c[e>>2]|0)){h=j}else{k=j;break}}}else{k=g}Sr(175488,(f=i,i=i+16|0,c[f>>2]=k,c[f+8>>2]=b,f)|0);i=f;Zz(a,148416);i=d;return}function OA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+16400|0;g=f|0;h=f+16|0;j=g;c[j>>2]=e;c[j+4>>2]=0;Xe(h|0,16384,d|0,g|0)|0;if((o$(h|0)|0)>>>0>1022>>>0){k=16384;l=0;i=f;return}if((b|0)!=0){NA(b,h);k=16384;l=0;i=f;return}do{if((c[(c[5458548]|0)+32>>2]|0)!=0){if((l$(h,130192,5)|0)!=0){break}b=a[h]|0;if(b<<24>>24==0){m=0}else{g=h;d=0;j=b;while(1){if(j<<24>>24==10){b=d+1|0;a[28383664+d|0]=92;a[28383664+b|0]=110;n=b}else{a[28383664+d|0]=j;n=d}b=n+1|0;e=g+1|0;o=a[e]|0;if(o<<24>>24!=0&b>>>0<1021>>>0){g=e;d=b;j=o}else{m=b;break}}}a[28383664+m|0]=0;Sr(119688,(j=i,i=i+8|0,c[j>>2]=28383664,j)|0);i=j}}while(0);if((c[(c[453930]|0)+32>>2]|0)<=0){k=16384;l=0;i=f;return}m=c[422837]|0;n=0;while(1){NA(m,h);j=n+1|0;if((j|0)<(c[(c[453930]|0)+32>>2]|0)){m=m+121936|0;n=j}else{break}}k=16384;l=0;i=f;return}function PA(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=i;f=bt(108912)|0;g=c[5458548]|0;if((g|0)==0){i=e;return}if((c[g+32>>2]|0)!=2){i=e;return}if((f&3|0)==0){i=e;return}if((c[422835]|0)<(c[422841]|0)){i=e;return}g=(VB(c[(c[5457508]|0)+4>>2]|0,99568)|0)==0;h=g?57584:d;c[422841]=(c[422835]|0)+3e5;d=(f&1|0)==0;g=(f&2|0)==0;f=0;do{j=1815752+(f<<2)|0;k=c[j>>2]|0;a:do{if((a[c[k+4>>2]|0]|0)!=0){l=k+20|0;do{if((c[l>>2]|0)==0){if((c[28383344+(f<<6)>>2]|0)!=0){break}if((c[28383376+(f<<6)>>2]|0)==0){m=10}}else{m=10}}while(0);do{if((m|0)==10){m=0;c[l>>2]=0;b:do{if(!d){Sr(51032,(n=i,i=i+8|0,c[n>>2]=c[(c[j>>2]|0)+4>>2],n)|0);i=n;o=28383344+(f<<6)|0;p=Uv(c[(c[j>>2]|0)+4>>2]|0,o,4)|0;do{if((p|0)==2){b[28383368+(f<<6)>>1]=YB(27950)|0;q=c[(c[j>>2]|0)+4>>2]|0}else{r=c[(c[j>>2]|0)+4>>2]|0;if((p|0)!=0){q=r;break}Sr(185104,(n=i,i=i+8|0,c[n>>2]=r,n)|0);i=n;break b}}while(0);p=_v(o)|0;Sr(45936,(n=i,i=i+16|0,c[n>>2]=q,c[n+8>>2]=p,n)|0);i=n}}while(0);c:do{if(!g){Sr(181280,(n=i,i=i+8|0,c[n>>2]=c[(c[j>>2]|0)+4>>2],n)|0);i=n;p=28383376+(f<<6)|0;r=Uv(c[(c[j>>2]|0)+4>>2]|0,p,5)|0;do{if((r|0)==2){b[28383400+(f<<6)>>1]=YB(27950)|0;s=c[(c[j>>2]|0)+4>>2]|0}else{t=c[(c[j>>2]|0)+4>>2]|0;if((r|0)!=0){s=t;break}Sr(176528,(n=i,i=i+8|0,c[n>>2]=t,n)|0);i=n;break c}}while(0);r=_v(p)|0;Sr(45936,(n=i,i=i+16|0,c[n>>2]=s,c[n+8>>2]=r,n)|0);i=n}}while(0);if((c[28383344+(f<<6)>>2]|0)!=0){break}if((c[28383376+(f<<6)>>2]|0)!=0){break}Sr(173048,(n=i,i=i+8|0,c[n>>2]=c[(c[j>>2]|0)+4>>2],n)|0);i=n;kt(c[c[j>>2]>>2]|0,28378696);c[(c[j>>2]|0)+20>>2]=0;break a}}while(0);Sr(166504,(n=i,i=i+8|0,c[n>>2]=c[(c[j>>2]|0)+4>>2],n)|0);i=n;l=28383344+(f<<6)|0;if((c[l>>2]|0)!=0){Sv(1,l|0,163280,(n=i,i=i+8|0,c[n>>2]=h,n)|0);i=n}l=28383376+(f<<6)|0;if((c[l>>2]|0)==0){break}Sv(1,l,163280,(n=i,i=i+8|0,c[n>>2]=h,n)|0);i=n}}while(0);f=f+1|0;}while((f|0)<5);i=e;return}function QA(){c[422841]=-9999;PA(160528);c[422841]=-9999;PA(160528);return}function RA(b,d,e){b=b|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;if((b|0)==0){f=1;return f|0}g=wf()|0;h=b+20|0;i=g-(c[h>>2]|0)|0;j=(i|0)/(e|0)|0;k=b+24|0;b=a[k]|0;if((j|0)>(b|0)){a[k]=0;l=g;m=0}else{n=b-j&255;a[k]=n;l=g-((i|0)%(e|0)|0)|0;m=n}c[h>>2]=l;if((m<<24>>24|0)>=(d|0)){f=1;return f|0}a[k]=m+1;f=0;return f|0}function SA(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;g=i;i=i+32|0;h=b;b=i;i=i+32|0;m$(b,h,32)|0;h=g|0;m$(h|0,b|0,32)|0;b=c[h>>2]|0;if((b|0)==4){j=4;k=h+4|0;l=4}else if((b|0)==5){j=16;k=h+8|0;l=4}else{m=0}if((l|0)==4){n=0;o=0;while(1){p=(da(d[k+n|0]|0,n+119|0)|0)+o|0;q=n+1|0;if(q>>>0>>0){n=q;o=p}else{m=p;break}}}o=(m>>>10^m^m>>>20)&1023;m=wf()|0;n=28356992+(o<<2)|0;j=c[n>>2]|0;a:do{if((j|0)==0){l=8}else{k=h+4|0;p=h+8|0;q=j;while(1){r=c[q>>2]|0;if((r|0)==5){if((j$(q+4|0,p,16)|0)==0){s=q;break a}}else if((r|0)==4){if((j$(q+4|0,k,4)|0)==0){s=q;break a}}r=c[q+36>>2]|0;if((r|0)==0){l=8;break}else{q=r}}}}while(0);if((l|0)==8){j=da(f,e)|0;q=0;while(1){t=27701632+(q*40|0)|0;u=27701652+(q*40|0)|0;k=c[u>>2]|0;p=m-k|0;do{if((k|0)>0){if(!((p|0)>(j|0)|(p|0)<0)){break}r=27701664+(q*40|0)|0;v=c[r>>2]|0;w=27701668+(q*40|0)|0;x=c[w>>2]|0;if((v|0)==0){c[28356992+(c[27701660+(q*40|0)>>2]<<2)>>2]=x;y=x}else{c[v+36>>2]=x;y=c[w>>2]|0}if((y|0)!=0){c[y+32>>2]=c[r>>2]}n$(t|0,0,40)|0}}while(0);z=t|0;p=q+1|0;if((c[z>>2]|0)==0){break}if((p|0)<16384){q=p}else{A=1;l=35;break}}if((l|0)==35){i=g;return A|0}c[z>>2]=b;if((b|0)==5){z=27701636+(q*40|0)|0;l=h+8|0;c[z>>2]=c[l>>2];c[z+4>>2]=c[l+4>>2];c[z+8>>2]=c[l+8>>2];c[z+12>>2]=c[l+12>>2]}else if((b|0)==4){c[27701636+(q*40|0)>>2]=c[h+4>>2]}c[u>>2]=m;a[27701656+(q*40|0)|0]=0;c[27701660+(q*40|0)>>2]=o;o=c[n>>2]|0;c[27701668+(q*40|0)>>2]=o;if((o|0)!=0){c[o+32>>2]=t}c[27701664+(q*40|0)>>2]=0;c[n>>2]=t;s=t}if((s|0)==0){A=1;i=g;return A|0}t=wf()|0;n=s+20|0;q=t-(c[n>>2]|0)|0;o=(q|0)/(f|0)|0;m=s+24|0;s=a[m]|0;if((o|0)>(s|0)){a[m]=0;B=t;C=0}else{u=s-o&255;a[m]=u;B=t-((q|0)%(f|0)|0)|0;C=u}c[n>>2]=B;if((C<<24>>24|0)>=(e|0)){A=1;i=g;return A|0}a[m]=C+1;A=0;i=g;return A|0}function TA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=i;i=i+1024|0;e=b;b=i;i=i+32|0;m$(b,e,32)|0;e=d|0;if(+at(157904)==2.0){f=1024;g=0;i=d;return}if(+at(155400)!=0.0){f=1024;g=0;i=d;return}if((SA(b,10,1e3)|0)!=0){h=Zv(b)|0;Tr(153392,(j=i,i=i+8|0,c[j>>2]=h,j)|0);i=j;f=1024;g=0;i=d;return}h=wf()|0;k=h-(c[4938801]|0)|0;l=(k|0)/100|0;m=a[19755208]|0;do{if((l|0)>(m|0)){a[19755208]=0;c[4938801]=h;n=0}else{o=m-l&255;a[19755208]=o;c[4938801]=h-((k|0)%100|0);if(o<<24>>24<10){n=o;break}Tr(151488,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;f=1024;g=0;i=d;return}}while(0);a[19755208]=n+1;if((o$(or(1)|0)|0)>>>0>128>>>0){f=1024;g=0;i=d;return}n=c[(c[453914]|0)+32>>2]|0;k=c[(c[453930]|0)+32>>2]|0;if((n|0)<(k|0)){h=c[422837]|0;l=0;m=0;o=n;while(1){if((c[h+(o*121936|0)>>2]|0)>>>0>1>>>0){p=((c[h+(o*121936|0)+84984>>2]|0)!=1)+m|0;q=l+1|0}else{p=m;q=l}n=o+1|0;if((n|0)<(k|0)){l=q;m=p;o=n}else{r=q;s=p;break}}}else{r=0;s=0}a[e]=0;vC(e,149104,or(1)|0);vC(e,146568,c[(c[5457508]|0)+4>>2]|0);p=pC(141456,(j=i,i=i+8|0,c[j>>2]=c[(c[5457224]|0)+32>>2],j)|0)|0;i=j;vC(e,144216,p);vC(e,139176,c[(c[453952]|0)+4>>2]|0);vC(e,137312,c[(c[453944]|0)+4>>2]|0);p=pC(141456,(j=i,i=i+8|0,c[j>>2]=r,j)|0)|0;i=j;vC(e,135792,p);p=pC(141456,(j=i,i=i+8|0,c[j>>2]=s,j)|0)|0;i=j;vC(e,134352,p);p=pC(141456,(j=i,i=i+8|0,c[j>>2]=(c[(c[453930]|0)+32>>2]|0)-(c[(c[453914]|0)+32>>2]|0),j)|0)|0;i=j;vC(e,132856,p);p=pC(141456,(j=i,i=i+8|0,c[j>>2]=c[(c[453956]|0)+32>>2],j)|0)|0;i=j;vC(e,131864,p);p=pC(141456,(j=i,i=i+8|0,c[j>>2]=c[(c[453910]|0)+32>>2],j)|0)|0;i=j;vC(e,130600,p);p=bt(129304)|0;s=pC(128216,(j=i,i=i+8|0,c[j>>2]=p,j)|0)|0;i=j;vC(e,129304,s);s=c[(c[453926]|0)+32>>2]|0;if((s|0)!=0){p=pC(141456,(j=i,i=i+8|0,c[j>>2]=s,j)|0)|0;i=j;vC(e,126816,p)}p=c[(c[453936]|0)+32>>2]|0;if((p|0)!=0){s=pC(141456,(j=i,i=i+8|0,c[j>>2]=p,j)|0)|0;i=j;vC(e,125536,s)}s=ct(124624)|0;if((a[s]|0)!=0){vC(e,123760,s)}Sv(1,b,122984,(j=i,i=i+8|0,c[j>>2]=e,j)|0);i=j;f=1024;g=0;i=d;return}function UA(d,e){d=d|0;e=e|0;var f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0;f=i;i=i+19536|0;g=d;d=i;i=i+32|0;m$(d,g,32)|0;g=f|0;h=f+1008|0;j=f+1040|0;k=f+2064|0;l=f+18448|0;m=f+19472|0;n=f+19504|0;do{if((c[e+20>>2]|0)>3){o=e+12|0;if(!((c[c[o>>2]>>2]|0)==-1)){break}p=n;m$(p|0,d|0,32)|0;q=h;r=m;lv(e);xv(e)|0;if((kC(102776,(c[o>>2]|0)+4|0,7)|0)==0){zw(e,12)}o=Av(e)|0;Dr(o);s=or(0)|0;t=Zv(n)|0;Tr(101824,(u=i,i=i+16|0,c[u>>2]=t,c[u+8>>2]=s,u)|0);i=u;if((VB(s,101016)|0)==0){c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];c[r+16>>2]=c[p+16>>2];c[r+20>>2]=c[p+20>>2];c[r+24>>2]=c[p+24>>2];c[r+28>>2]=c[p+28>>2];r=j|0;t=k|0;v=l|0;if(+at(157904)==2.0){i=f;return}if(+at(155400)!=0.0){i=f;return}if((SA(m,10,1e3)|0)!=0){w=Zv(m)|0;Tr(56112,(u=i,i=i+8|0,c[u>>2]=w,u)|0);i=u;i=f;return}w=wf()|0;x=w-(c[4938801]|0)|0;y=(x|0)/100|0;z=a[19755208]|0;do{if((y|0)>(z|0)){a[19755208]=0;c[4938801]=w;A=0}else{B=z-y&255;a[19755208]=B;c[4938801]=w-((x|0)%100|0);if(B<<24>>24<10){A=B;break}Tr(55096,(u=i,i=i+1|0,i=i+7&-8,c[u>>2]=0,u)|0);i=u;i=f;return}}while(0);a[19755208]=A+1;if((o$(or(1)|0)|0)>>>0>128>>>0){i=f;return}r$(v|0,Dt(4)|0)|0;vC(v,149104,or(1)|0);a[t]=0;x=c[453930]|0;a:do{if((c[x+32>>2]|0)>0){w=0;y=0;z=x;while(1){B=c[422837]|0;if((c[B+(y*121936|0)>>2]|0)>>>0>1>>>0){C=c[(sA(y)|0)+248>>2]|0;D=c[B+(y*121936|0)+84956>>2]|0;$B(r,1024,54400,(u=i,i=i+24|0,c[u>>2]=C,c[u+8>>2]=D,c[u+16>>2]=B+(y*121936|0)+67648,u)|0)|0;i=u;B=(o$(r|0)|0)+w|0;if(B>>>0>16383>>>0){break a}r$(k+w|0,r|0)|0;E=B;F=c[453930]|0}else{E=w;F=z}B=y+1|0;if((B|0)<(c[F+32>>2]|0)){w=E;y=B;z=F}else{break}}}}while(0);Sv(1,m,53872,(u=i,i=i+16|0,c[u>>2]=v,c[u+8>>2]=t,u)|0);i=u;i=f;return}if((VB(s,99840)|0)==0){TA(n);i=f;return}if((VB(s,96272)|0)==0){Xz(n);i=f;return}if((VB(s,102776)|0)==0){Yz(n);i=f;return}if((VB(s,63944)|0)!=0){if((VB(s,62808)|0)==0){i=f;return}r=Zv(n)|0;Tr(61952,(u=i,i=i+16|0,c[u>>2]=r,c[u+8>>2]=o,u)|0);i=u;i=f;return}c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];c[q+16>>2]=c[p+16>>2];c[q+20>>2]=c[p+20>>2];c[q+24>>2]=c[p+24>>2];c[q+28>>2]=c[p+28>>2];r=j|0;x=g|0;if((SA(h,10,1e3)|0)!=0){z=Zv(h)|0;Tr(61168,(u=i,i=i+8|0,c[u>>2]=z,u)|0);i=u;i=f;return}do{if((a[c[(c[453908]|0)+4>>2]|0]|0)==0){G=32}else{z=or(1)|0;if((k$(z,c[(c[453908]|0)+4>>2]|0)|0)!=0){G=32;break}z=Zv(h)|0;y=zr(2)|0;Sr(59224,(u=i,i=i+16|0,c[u>>2]=z,c[u+8>>2]=y,u)|0);i=u;H=1}}while(0);if((G|0)==32){p=wf()|0;o=p-(c[7096177]|0)|0;s=(o|0)/1e3|0;t=a[28384712]|0;do{if((s|0)>(t|0)){a[28384712]=0;c[7096177]=p;I=0}else{v=t-s&255;a[28384712]=v;c[7096177]=p-((o|0)%1e3|0);if(v<<24>>24<10){I=v;break}Tr(60480,(u=i,i=i+1|0,i=i+7&-8,c[u>>2]=0,u)|0);i=u;i=f;return}}while(0);a[28384712]=I+1;o=Zv(h)|0;p=zr(2)|0;Sr(59808,(u=i,i=i+16|0,c[u>>2]=o,c[u+8>>2]=p,u)|0);i=u;H=0}m$(1814248,q|0,32)|0;Qr(x,1008,18);do{if((a[c[(c[453908]|0)+4>>2]|0]|0)==0){Sr(58696,(u=i,i=i+1|0,i=i+7&-8,c[u>>2]=0,u)|0);i=u}else{if((H|0)==0){Sr(57760,(u=i,i=i+1|0,i=i+7&-8,c[u>>2]=0,u)|0);i=u;break}a[r]=0;p=(Br()|0)+4|0;while(1){o=a[p]|0;if(o<<24>>24==32){p=p+1|0}else{J=p;K=o;break}}while(1){if((K<<24>>24|0)==0){L=J;break}else if((K<<24>>24|0)==32){M=J;G=46;break}p=J+1|0;J=p;K=a[p]|0}if((G|0)==46){while(1){G=0;p=M+1|0;if((a[p]|0)==32){M=p;G=46}else{L=p;break}}}XB(r,1024,L);sr(r)}}while(0);Rr();i=f;return}}while(0);lv(e);xv(e)|0;L=(wv(e)|0)&65535;if((c[(c[453930]|0)+32>>2]|0)<=0){i=f;return}M=c[422837]|0;K=0;b:while(1){N=M|0;do{if((c[N>>2]|0)!=0){if((Yv(d,M+84984|0)|0)==0){break}if((c[M+85016>>2]|0)==(L|0)){break b}}}while(0);J=K+1|0;if((J|0)<(c[(c[453930]|0)+32>>2]|0)){M=M+121936|0;K=J}else{G=62;break}}if((G|0)==62){i=f;return}G=M+85008|0;K=d+24|0;if((b[G>>1]|0)!=(b[K>>1]|0)){Sr(122096,(u=i,i=i+1|0,i=i+7&-8,c[u>>2]=0,u)|0);i=u;b[G>>1]=b[K>>1]|0}if((bB(M,e)|0)==0){i=f;return}if((c[N>>2]|0)==1){i=f;return}c[M+68168>>2]=c[422835];gA(M,e);i=f;return}function VA(){var a=0,b=0;a=c[453958]|0;if((a|0)==0){return 1}else{b=~~(1.0e3/+g[a+28>>2]);a=c[453975]|0;return((b|0)<(a|0)?0:b-a|0)|0}return 0}function WA(a){a=a|0;var b=0,d=0,e=0,f=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;b=i;if((c[(c[453950]|0)+32>>2]|0)!=0){MA(121224);kt(120080,118648);i=b;return}if((c[(c[5451068]|0)+32>>2]|0)==0){i=b;return}a:do{if((c[(c[5811720]|0)+32>>2]|0)!=0){d=c[(c[453930]|0)+32>>2]|0;do{if((d|0)>0){e=0;f=c[422837]|0;j=0;while(1){if((c[f>>2]|0)>>>0>1>>>0){k=((c[f+84984>>2]|0)!=1)+e|0}else{k=e}l=j+1|0;if((l|0)<(d|0)){e=k;f=f+121936|0;j=l}else{break}}j=(c[(c[453916]|0)+32>>2]|0)!=0;if((k|0)>1){if(!j){break a}kt(104544,118648);break a}else{if(!j){break}i=b;return}}else{if((c[(c[453916]|0)+32>>2]|0)==0){break}i=b;return}}while(0);kt(104544,103528);i=b;return}}while(0);k=c[(c[453958]|0)+32>>2]|0;if((k|0)<1){kt(117536,116416);m=c[(c[453958]|0)+32>>2]|0}else{m=k}k=~~(+(1e3/(m|0)|0|0)*+g[(c[5451064]|0)+28>>2]);if((k|0)<1){d=pC(113760,(n=i,i=i+8|0,h[n>>3]=+(m|0)/1.0e3,n)|0)|0;i=n;kt(115032,d);o=1}else{o=k}k=(c[453975]|0)+a|0;c[453975]=k;if((c[(c[5458548]|0)+32>>2]|0)==0){_y((c[531808]|0)+k|0)}if((c[422835]|0)>1879048192){MA(112872);k=ct(137312)|0;a=pC(112e3,(n=i,i=i+8|0,c[n>>2]=k,n)|0)|0;i=n;qr(a);i=b;return}if((c[422839]|0)>=(2147483646-(c[422838]|0)|0)){MA(111184);a=ct(137312)|0;k=pC(112e3,(n=i,i=i+8|0,c[n>>2]=a,n)|0)|0;i=n;qr(k);i=b;return}k=c[531807]|0;if(!((k|0)==0|(c[531808]|0)<(k|0))){c[531807]=0;qr(110456);i=b;return}k=c[5389062]|0;if((k&4|0)==0){p=k}else{DA(0,Dt(4)|0);k=c[5389062]&-5;c[5389062]=k;p=k}if((p&8|0)!=0){DA(1,Et(8)|0);c[5389062]=c[5389062]&-9}if((c[(c[5451072]|0)+32>>2]|0)==0){q=0}else{q=wf()|0}p=c[453930]|0;if((c[p+32>>2]|0)>0){k=0;a=p;while(1){p=c[422837]|0;do{if((c[p+(k*121936|0)>>2]|0)==4){d=c[p+(k*121936|0)+67644>>2]|0;if((d|0)==0){c[p+(k*121936|0)+84956>>2]=999;r=a;break}if((c[d+424>>2]&8|0)==0){s=0;t=0;u=0}else{c[p+(k*121936|0)+84956>>2]=0;r=a;break}while(1){d=c[p+(k*121936|0)+68188+(u*524|0)+516>>2]|0;if((d|0)<1){v=t;w=s}else{v=t+1|0;w=d+s-(c[p+(k*121936|0)+68188+(u*524|0)+512>>2]|0)|0}d=u+1|0;if((d|0)<32){s=w;t=v;u=d}else{break}}if((v|0)==0){c[p+(k*121936|0)+84956>>2]=999}else{d=(w|0)/(v|0)|0;c[p+(k*121936|0)+84956>>2]=(d|0)>999?999:d}d=sA(k)|0;c[d+452>>2]=c[p+(k*121936|0)+84956>>2];r=c[453930]|0}else{c[p+(k*121936|0)+84956>>2]=999;r=a}}while(0);p=k+1|0;if((p|0)<(c[r+32>>2]|0)){k=p;a=r}else{break}}}if((c[(c[5458548]|0)+32>>2]|0)!=0){_y(c[531808]|0)}r=c[453975]|0;if((r|0)>=(o|0)){a=r;do{c[453975]=a-o;c[422835]=(c[422835]|0)+o;r=(c[531808]|0)+o|0;c[531808]=r;oD(c[5120100]|0,8,(n=i,i=i+8|0,c[n>>2]=r,n)|0)|0;i=n;a=c[453975]|0;}while((a|0)>=(o|0))}if((c[(c[5451072]|0)+32>>2]|0)!=0){c[304338]=(wf()|0)-q}q=c[422835]|0;o=((c[(c[453900]|0)+32>>2]|0)*-1e3|0)+q|0;a=((c[(c[453578]|0)+32>>2]|0)*-1e3|0)+q|0;b:do{if((c[(c[453930]|0)+32>>2]|0)>0){r=c[422837]|0;k=0;v=q;while(1){w=r+68168|0;u=c[w>>2]|0;if((u|0)>(v|0)){c[w>>2]=v;x=v}else{x=u}u=r|0;w=c[u>>2]|0;do{if((w|0)==1){if((x|0)>=(a|0)){y=65;break}Tr(106168,(n=i,i=i+8|0,c[n>>2]=k,n)|0);i=n;c[u>>2]=0}else{if(!(w>>>0>1>>>0&(x|0)<(o|0))){y=65;break}t=r+68184|0;s=c[t>>2]|0;c[t>>2]=s+1;if((s|0)<=4){break}Zz(r,105344);c[u>>2]=0}}while(0);if((y|0)==65){y=0;c[r+68184>>2]=0}u=k+1|0;if((u|0)>=(c[(c[453930]|0)+32>>2]|0)){break b}r=r+121936|0;k=u;v=c[422835]|0}}}while(0);fB();PA(160528);i=b;return}function XA(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0;b=c[a+117824>>2]|0;d=c[a+84960>>2]|0;e=c[(c[453934]|0)+32>>2]|0;if((e|0)==0){f=d}else{if((e|0)<1e3){kt(109224,108120);h=c[(c[453934]|0)+32>>2]|0}else{h=e}f=(h|0)<(d|0)?h:d}d=c[(c[453924]|0)+32>>2]|0;if((d|0)==0){i=f}else{if((d|0)<1e3){kt(107256,108120);j=c[(c[453924]|0)+32>>2]|0}else{j=d}i=(j|0)>(f|0)?j:f}f=((((c[a+84984>>2]|0)==5?48:28)+b|0)*1e3|0|0)/(~~(+(i|0)*+g[(c[5451064]|0)+28>>2])|0)|0;i=wf()|0;b=i-(c[a+117820>>2]|0)|0;return((b|0)>(f|0)?0:f-b|0)|0}function YA(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;a=cA()|0;b=(a|0)>-1?a:2147483647;if((c[(c[453962]|0)+32>>2]|0)==0){a=(dA()|0)==0;d=a?b:0;return d|0}a=wf()|0;e=(c[7095834]|0)-a|0;if((e|0)>0){d=(e|0)<(b|0)?e+1|0:b;return d|0}e=dA()|0;if((e|0)==0){d=b;return d|0}f=wf()|0;g=f-a|0;h=(e*1024e3|0|0)/(c[(c[453962]|0)+32>>2]<<10|0)|0;if((h|0)>(g+1|0)){c[7095834]=h+a;a=h-g|0;return((a|0)<(b|0)?a:b)|0}c[7095834]=f+1;d=(b|0)>2?2:b;return d|0}function ZA(a){a=a|0;var b=0,d=0;b=i;Sv(1,1814248,56800,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}function _A(a){a=a|0;var b=0,d=0,e=0;b=a+117828|0;d=c[b>>2]|0;if((d|0)!=0){e=d;while(1){d=c[e+16416>>2]|0;es(e);if((d|0)==0){break}else{e=d}}}c[b>>2]=0;c[a+117832>>2]=b;return}function $A(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;if((c[a+101420>>2]|0)!=0){Mv(a+84976|0);d=XA(a)|0;i=b;return d|0}e=a+117828|0;if((c[e>>2]|0)==0){d=-1;i=b;return d|0}Tr(138896,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;g=c[e>>2]|0;Ov(a+84976|0,c[g+20>>2]|0,c[g+12>>2]|0);h=c[g+16416>>2]|0;c[e>>2]=h;if((h|0)==0){Tr(174864,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;c[a+117832>>2]=e}else{Tr(148088,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}es(g);d=XA(a)|0;i=b;return d|0}function aB(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;pv(b,8);e=a+84976|0;do{if((c[a+101420>>2]|0)==0){if((c[a+117828>>2]|0)!=0){break}Ov(e,c[b+20>>2]|0,c[b+12>>2]|0);i=d;return}}while(0);Tr(129952,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;e=gs(16420)|0;mv(e,e+32|0,16384,b);c[e+16416>>2]=0;b=a+117832|0;c[c[b>>2]>>2]=e;c[b>>2]=(c[c[b>>2]>>2]|0)+16416;i=d;return}function bB(a,b){a=a|0;b=b|0;return(Pv(a+84976|0,b)|0)!=0|0}function cB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[a+66568>>2]|0;e=a+66564|0;f=c[e>>2]|0;if((d|0)<(f|0)){g=d}else{h=f;i=a+66572|0;c[i>>2]=h;return}while(1){f=g+1|0;pv(b,5);sv(b,f);tv(b,a+1028+((f&63)<<10)|0);d=c[e>>2]|0;if((f|0)<(d|0)){g=f}else{h=d;break}}i=a+66572|0;c[i>>2]=h;return}function dB(a,b){a=a|0;b=b|0;var d=0;d=b+85024|0;c[b+68188+((c[d>>2]&31)*524|0)+520>>2]=c[a+20>>2];c[b+68188+((c[d>>2]&31)*524|0)+512>>2]=c[422835];c[b+68188+((c[d>>2]&31)*524|0)+516>>2]=-1;aB(b,a);return}function eB(a){a=a|0;var b=0,d=0,e=0,f=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;b=i;i=i+17464|0;d=b|0;e=b+16|0;f=b+17432|0;h=b+1048|0;c[453974]=(c[453974]|0)+1;j=a+85024|0;k=c[j>>2]&31;l=a+68188+(k*524|0)|0;m=e|0;c[m>>2]=0;n=a+68188+(k*524|0)+4|0;n$(n|0,0,32)|0;o=a+68188+(k*524|0)+504|0;c[o>>2]=0;p=a+67644|0;a:do{if((c[p>>2]|0)!=0){if((c[a>>2]|0)==1){break}q=sA((a-(c[422837]|0)|0)/121936|0)|0;m$(a+68188+(k*524|0)+36|0,q|0,468)|0;r=c[a+68188+(k*524|0)+176>>2]|0;if(r>>>0>1023>>>0){Ur(1,129888,(s=i,i=i+1|0,i=i+7&-8,c[s>>2]=0,s)|0);i=s}c[1820300+(r*300|0)>>2]=c[453974];r=d|0;g[r>>2]=+g[q+20>>2];g[d+4>>2]=+g[q+24>>2];g[d+8>>2]=+g[q+28>>2]+ +(c[q+164>>2]|0);gB(r,l,e);Ie(e+4|0,c[m>>2]|0,4,92);r=n;c[r>>2]=~c[r>>2];r=a+68188+(k*524|0)+8|0;c[r>>2]=~c[r>>2];r=a+68188+(k*524|0)+12|0;c[r>>2]=~c[r>>2];r=a+68188+(k*524|0)+16|0;c[r>>2]=~c[r>>2];r=a+68188+(k*524|0)+20|0;c[r>>2]=~c[r>>2];r=a+68188+(k*524|0)+24|0;c[r>>2]=~c[r>>2];r=a+68188+(k*524|0)+28|0;c[r>>2]=~c[r>>2];r=a+68188+(k*524|0)+32|0;c[r>>2]=~c[r>>2];c[o>>2]=0;c[a+68188+(k*524|0)+508>>2]=c[422839];if((c[m>>2]|0)>0){t=0}else{break}while(1){r=rA(c[e+4+(t<<2)>>2]|0)|0;m$((c[422840]|0)+(((c[422839]|0)%(c[422838]|0)|0)*208|0)|0,r|0,208)|0;r=c[422839]|0;c[422839]=r+1;if((r|0)>2147483644){break}c[o>>2]=(c[o>>2]|0)+1;t=t+1|0;if((t|0)>=(c[m>>2]|0)){break a}}Ur(0,119448,(s=i,i=i+1|0,i=i+7&-8,c[s>>2]=0,s)|0);i=s}}while(0);m=c[p>>2]|0;do{if((m|0)!=0){if((c[m+424>>2]&8|0)==0){break}u=16384;v=0;i=b;return}}while(0);hv(f,h,16384);c[f>>2]=1;sv(f,c[a+66616>>2]|0);h=c[a+66568>>2]|0;m=a+66564|0;p=c[m>>2]|0;if((h|0)<(p|0)){t=h;while(1){h=t+1|0;pv(f,5);sv(f,h);tv(f,a+1028+((h&63)<<10)|0);o=c[m>>2]|0;if((h|0)<(o|0)){t=h}else{w=o;break}}}else{w=p}c[a+66572>>2]=w;w=c[j>>2]|0;p=w&31;t=c[a+68160>>2]|0;do{if((t|0)<1){x=0;y=0}else{if((c[a>>2]|0)!=4){x=0;y=0;break}m=w-t|0;if((m|0)>28){Tr(174776,(s=i,i=i+8|0,c[s>>2]=a+67648,s)|0);i=s;x=0;y=0;break}o=t&31;if((c[a+68188+(o*524|0)+508>>2]|0)>((c[422839]|0)-(c[422838]|0)|0)){x=m;y=a+68188+(o*524|0)|0;break}Tr(147960,(s=i,i=i+8|0,c[s>>2]=a+67648,s)|0);i=s;x=0;y=0}}while(0);pv(f,7);t=c[a+117836>>2]|0;w=c[531808]|0;if((t|0)==0){sv(f,w)}else{sv(f,w+t|0)}pv(f,x);x=(c[a+68180>>2]|0)!=0|c[422836];pv(f,(c[a>>2]|0)==4?x:x|2);x=a+68188+(p*524|0)|0;pv(f,c[x>>2]|0);qv(f,a+68188+(p*524|0)+4|0,c[x>>2]|0);if((y|0)==0){Iv(f,0,a+68188+(p*524|0)+36|0);z=0}else{Iv(f,y+36|0,a+68188+(p*524|0)+36|0);z=c[y+504>>2]|0}x=a+68188+(p*524|0)+504|0;t=(c[x>>2]|0)>0;w=(z|0)>0;o=a+68188+(p*524|0)+508|0;p=y+508|0;b:do{if(t|w){y=0;m=0;h=0;e=0;k=t;n=w;while(1){l=y;d=m;r=e;q=k;c:while(1){A=c[422838]|0;B=c[422840]|0;do{if(q){C=B+((((c[o>>2]|0)+r|0)%(A|0)|0)*208|0)|0;D=c[C>>2]|0;if(n){E=B+((((c[p>>2]|0)+h|0)%(A|0)|0)*208|0)|0;F=c[E>>2]|0;if((D|0)==(F|0)){G=C;H=E;I=38;break c}if((D|0)<(F|0)){J=C;K=D;L=E;break}else{I=32;break c}}else{if((D|0)==9999){G=C;H=l;I=38;break c}if((D|0)<9999){J=C;K=D;L=l;break}else{M=C;N=l;I=41;break c}}}else{if(!n){G=d;H=l;I=38;break c}O=B+((((c[p>>2]|0)+h|0)%(A|0)|0)*208|0)|0;P=c[O>>2]|0;if((P|0)==9999){G=d;H=O;I=38;break c}if((P|0)>9999){J=d;K=9999;L=O}else{M=d;N=O;I=41;break c}}}while(0);Gv(f,1820012+(K*300|0)|0,J,1);A=r+1|0;B=(A|0)<(c[x>>2]|0);if(B|n){l=L;d=J;r=A;q=B}else{break b}}if((I|0)==32){I=0;if((D|0)>(F|0)){M=C;N=E;I=41}else{break}}else if((I|0)==38){I=0;Gv(f,H,G,0);Q=r+1|0;R=G;S=H}if((I|0)==41){I=0;Gv(f,N,0,1);Q=r;R=M;S=N}q=h+1|0;d=(Q|0)<(c[x>>2]|0);l=(q|0)<(z|0);if(d|l){y=S;m=R;h=q;e=Q;k=d;n=l}else{break b}}while(1){}}}while(0);nv(f,1023,10);if((c[(c[453918]|0)+32>>2]|0)>0){Q=0;do{pv(f,1);Q=Q+1|0;}while((Q|0)<(c[(c[453918]|0)+32>>2]|0))}if((c[f+4>>2]|0)!=0){Sr(138520,(s=i,i=i+8|0,c[s>>2]=a+67648,s)|0);i=s;jv(f)}c[a+68188+((c[j>>2]&31)*524|0)+520>>2]=c[f+20>>2];c[a+68188+((c[j>>2]&31)*524|0)+512>>2]=c[422835];c[a+68188+((c[j>>2]&31)*524|0)+516>>2]=-1;aB(a,f);u=16384;v=0;i=b;return}function fB(){var b=0,d=0,e=0,f=0;if((c[(c[453930]|0)+32>>2]|0)>0){b=0}else{return}do{d=c[422837]|0;e=d+(b*121936|0)|0;a:do{if((c[e>>2]|0)!=0){if((a[d+(b*121936|0)+67680|0]|0)!=0){break}do{if((c[d+(b*121936|0)+101420>>2]|0)==0){if((c[d+(b*121936|0)+117828>>2]|0)!=0){break}f=d+(b*121936|0)+84984|0;do{if((c[f>>2]|0)!=2){if((c[(c[453948]|0)+32>>2]|0)!=0){if((dw(f)|0)!=0){break}}if(+((c[422835]|0)-(c[d+(b*121936|0)+68176>>2]|0)|0)<+(c[d+(b*121936|0)+84964>>2]|0)*+g[(c[5451064]|0)+28>>2]){break a}if((XA(e)|0)<=0){break}c[d+(b*121936|0)+68180>>2]=1;break a}}while(0);eB(e);c[d+(b*121936|0)+68176>>2]=c[422835];c[d+(b*121936|0)+68180>>2]=0;break a}}while(0);c[d+(b*121936|0)+68180>>2]=1}}while(0);b=b+1|0;}while((b|0)<(c[(c[453930]|0)+32>>2]|0));return}function gB(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,h=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.0,E=0.0,F=0.0,G=0.0;f=i;if((c[453968]|0)==0){i=f;return}h=Nq(a)|0;j=rq(h)|0;k=qq(h)|0;c[b>>2]=Yq(b+4|0,j)|0;h=Tq(k)|0;if((c[531804]|0)<=0){i=f;return}k=a+4|0;l=a+8|0;m=e|0;n=b+176|0;o=0;a:while(1){p=rA(o)|0;do{if((c[p+416>>2]|0)!=0){q=p|0;if((c[q>>2]|0)!=(o|0)){Tr(99288,(r=i,i=i+1|0,i=i+7&-8,c[r>>2]=0,r)|0);i=r;c[q>>2]=o}s=p+424|0;t=c[s>>2]|0;if((t&1|0)!=0){break}if((t&256|0)!=0){if((c[p+428>>2]|0)!=(c[n>>2]|0)){break}}if((t&2048|0)!=0){if((c[p+428>>2]|0)==(c[n>>2]|0)){break}}if((t&2|0)!=0){t=c[n>>2]|0;if((t|0)>31){u=14;break a}if((c[p+428>>2]&1<>2]|0)==(w|0)){break}if((c[s>>2]&32|0)!=0){c[v>>2]=w;w=c[m>>2]|0;if((w|0)==256){break}c[e+4+(w<<2)>>2]=c[q>>2];c[m>>2]=(c[m>>2]|0)+1;break}if((Xq(j,c[t+288>>2]|0)|0)==0){if((Xq(j,c[t+292>>2]|0)|0)==0){break}}w=c[t+216>>2]|0;if((w|0)==0){break}b:do{if((w|0)>0){x=0;while(1){y=c[t+220+(x<<2)>>2]|0;z=x+1|0;if(((d[h+(y>>3)|0]|0)&1<<(y&7)|0)!=0){A=y;B=x;break b}if((z|0)<(w|0)){x=z}else{A=y;B=z;break}}}else{A=0;B=0}}while(0);if((B|0)==(w|0)){x=c[t+284>>2]|0;if((x|0)==0){break}c:do{if((A|0)>(x|0)){C=A}else{z=A;while(1){y=z+1|0;if(((d[h+(z>>3)|0]|0)&1<<(z&7)|0)!=0){C=z;break c}if((z|0)<(x|0)){z=y}else{C=y;break}}}}while(0);if((C|0)==(x|0)){break}}t=c[453974]|0;do{if((c[v>>2]|0)!=(t|0)){c[v>>2]=t;w=c[m>>2]|0;if((w|0)==256){break}c[e+4+(w<<2)>>2]=c[q>>2];c[m>>2]=(c[m>>2]|0)+1}}while(0);if((c[s>>2]&64|0)==0){break}q=c[p+204>>2]|0;if((q|0)!=0){D=+g[p+92>>2]- +g[a>>2];E=+g[p+96>>2]- +g[k>>2];F=+g[p+100>>2]- +g[l>>2];G=+(q|0);if(D*D+E*E+F*F>G*G){break}}gB(p+104|0,b,e)}}while(0);p=o+1|0;if((p|0)<(c[531804]|0)){o=p}else{u=40;break}}if((u|0)==14){Ur(1,57376,(r=i,i=i+1|0,i=i+7&-8,c[r>>2]=0,r)|0);i=r}else if((u|0)==40){i=f;return}}function hB(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=c[a>>2]|0;a=c[b>>2]|0;if((e|0)==(a|0)){Ur(1,108648,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;return 0}else{i=d;return((e|0)<(a|0)?-1:1)|0}return 0}function iB(a){a=a|0;var b=0,d=0,e=0;if((c[a+432>>2]|0)!=0){b=nq(c[a+160>>2]|0)|0;return b|0}d=a+436|0;e=a+448|0;if((c[a+424>>2]&1024|0)==0){b=sq(d,e,0)|0;return b|0}else{b=sq(d,e,1)|0;return b|0}return 0}function jB(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;a=i;b=0;do{d=c[1814336+(b*20|0)>>2]|0;if((d|0)==0){e=0}else{f=0;g=d;while(1){d=f+1|0;h=c[g+4>>2]|0;if((h|0)==0){e=d;break}else{f=d;g=h}}}Sr(138192,(g=i,i=i+16|0,c[g>>2]=b,c[g+8>>2]=e,g)|0);i=g;b=b+1|0;}while((b|0)<64);i=a;return}function kB(){var a=0,b=0,d=0;a=i;i=i+32|0;n$(1814320,0,1280)|0;c[453922]=0;b=a|0;d=a+16|0;tq(nq(0)|0,b,d);lB(0,b,d)|0;i=a;return}function lB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0.0,u=0.0;e=i;i=i+64|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=c[453922]|0;m=1814320+(l*20|0)|0;c[453922]=l+1;if((a|0)==4){c[m>>2]=-1;c[1814332+(l*20|0)>>2]=0;c[1814328+(l*20|0)>>2]=0;i=e;return m|0}else{n=d+4|0;o=b+4|0;p=+g[d>>2]- +g[b>>2]<=+g[n>>2]- +g[o>>2]|0;c[m>>2]=p;q=(+g[d+(p<<2)>>2]+ +g[b+(p<<2)>>2])*.5;g[1814324+(l*20|0)>>2]=q;r=+g[b>>2];s=f|0;g[s>>2]=r;t=+g[o>>2];g[f+4>>2]=t;u=+g[b+8>>2];g[f+8>>2]=u;f=j|0;g[f>>2]=r;g[j+4>>2]=t;g[j+8>>2]=u;u=+g[d>>2];b=h|0;g[b>>2]=u;t=+g[n>>2];g[h+4>>2]=t;r=+g[d+8>>2];g[h+8>>2]=r;d=k|0;g[d>>2]=u;g[k+4>>2]=t;g[k+8>>2]=r;g[j+(p<<2)>>2]=q;g[h+(p<<2)>>2]=q;p=a+1|0;c[1814328+(l*20|0)>>2]=lB(p,f,d)|0;c[1814332+(l*20|0)>>2]=lB(p,s,b)|0;i=e;return m|0}return 0}function mB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=tA(a)|0;c[a+416>>2]=0;a=d|0;e=c[a>>2]|0;if((e|0)==0){i=b;return}c[a>>2]=0;a=e+16|0;e=c[a>>2]|0;if((e|0)==(d|0)){c[a>>2]=c[d+4>>2];i=b;return}else{f=e}while(1){if((f|0)==0){g=7;break}h=f+4|0;e=c[h>>2]|0;if((e|0)==(d|0)){g=6;break}else{f=e}}if((g|0)==6){c[h>>2]=c[d+4>>2];i=b;return}else if((g|0)==7){Sr(174632,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;i=b;return}}function nB(a){a=a|0;var b=0,d=0,e=0,f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.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=i;i=i+520|0;d=b|0;e=b+512|0;f=tA(a)|0;j=f|0;do{if((c[j>>2]|0)!=0){k=tA(a)|0;c[a+416>>2]=0;l=k|0;m=c[l>>2]|0;if((m|0)==0){break}c[l>>2]=0;l=m+16|0;m=c[l>>2]|0;if((m|0)==(k|0)){c[l>>2]=c[k+4>>2];break}else{n=m}while(1){if((n|0)==0){o=8;break}p=n+4|0;m=c[p>>2]|0;if((m|0)==(k|0)){o=7;break}else{n=m}}if((o|0)==7){c[p>>2]=c[k+4>>2];break}else if((o|0)==8){Sr(174632,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;break}}}while(0);a:do{if((c[a+432>>2]|0)==0){if((c[a+460>>2]&33554433|0)==0){c[a+176>>2]=0;r=a+488|0;o=17;break}else{p=~~+g[a+448>>2];n=(p|0)<1?1:p;p=~~(-0.0- +g[a+444>>2]);m=(p|0)<1?1:p;p=~~(+g[a+456>>2]+32.0);l=(p|0)<1?1:p;c[a+176>>2]=((m|0)>255?65280:m<<8)|((n|0)>255?255:n)|((l|0)>255?16711680:l<<16);r=a+488|0;o=17;break}}else{c[a+176>>2]=16777215;l=a+488|0;do{if(!(+g[a+500>>2]!=0.0)){if(+g[a+504>>2]!=0.0){break}if(!(+g[a+508>>2]!=0.0)){r=l;o=17;break a}}}while(0);s=+JB(a+436|0,a+448|0);t=+g[l>>2];u=t-s;g[a+464>>2]=u;v=s+t;g[a+476>>2]=v;t=+g[a+492>>2];w=t-s;g[a+468>>2]=w;x=s+t;g[a+480>>2]=x;t=+g[a+496>>2];y=t-s;g[a+472>>2]=y;z=s+t;g[a+484>>2]=z;A=u;B=w;C=y;D=v;E=x;F=z}}while(0);if((o|0)==17){z=+g[r>>2];x=z+ +g[a+436>>2];g[a+464>>2]=x;v=+g[a+492>>2];y=v+ +g[a+440>>2];g[a+468>>2]=y;w=+g[a+496>>2];u=w+ +g[a+444>>2];g[a+472>>2]=u;t=z+ +g[a+448>>2];g[a+476>>2]=t;z=v+ +g[a+452>>2];g[a+480>>2]=z;v=w+ +g[a+456>>2];g[a+484>>2]=v;A=x;B=y;C=u;D=t;E=z;F=v}r=a+464|0;g[r>>2]=A+-1.0;o=a+468|0;g[o>>2]=B+-1.0;k=a+472|0;g[k>>2]=C+-1.0;n=a+476|0;g[n>>2]=D+1.0;g[a+480>>2]=E+1.0;g[a+484>>2]=F+1.0;m=f+216|0;c[m>>2]=0;p=f+284|0;c[p>>2]=0;G=f+288|0;c[G>>2]=-1;H=f+292|0;c[H>>2]=-1;I=Qq(r,n,d|0,128,e)|0;if((I|0)==0){J=512;K=0;i=b;return}n=(I|0)>0;b:do{if(n){L=a|0;M=0;do{N=rq(c[d+(M<<2)>>2]|0)|0;do{if(!((N|0)==-1)){O=c[G>>2]|0;if((O|0)==-1|(O|0)==(N|0)){c[G>>2]=N;break}O=c[H>>2]|0;do{if(!((O|0)==-1)){if(!((O|0)!=(N|0)&(c[453968]|0)==1)){break}F=+g[r>>2];E=+g[o>>2];D=+g[k>>2];Tr(147840,(q=i,i=i+32|0,c[q>>2]=c[L>>2],h[q+8>>3]=F,h[q+16>>3]=E,h[q+24>>3]=D,q)|0);i=q}}while(0);c[H>>2]=N}}while(0);M=M+1|0;}while((M|0)<(I|0));c[m>>2]=0;if(n){P=0}else{Q=0;break}while(1){M=qq(c[d+(P<<2)>>2]|0)|0;if(!((M|0)==-1)){L=c[m>>2]|0;c[m>>2]=L+1;c[f+220+(L<<2)>>2]=M;if((c[m>>2]|0)==16){Q=P;break b}}M=P+1|0;if((M|0)<(I|0)){P=M}else{Q=M;break}}}else{c[m>>2]=0;Q=0}}while(0);if((Q|0)!=(I|0)){c[p>>2]=qq(c[e>>2]|0)|0}e=a+420|0;c[e>>2]=(c[e>>2]|0)+1;e=c[453580]|0;c:do{if((e|0)==-1){R=1814320}else{p=1814320;I=e;while(1){D=+g[p+4>>2];if(+g[a+464+(I<<2)>>2]>D){S=p+8|0}else{if(!(+g[a+476+(I<<2)>>2]>2]|0;m=c[Q>>2]|0;if((m|0)==-1){R=Q;break}else{p=Q;I=m}}}}while(0);c[j>>2]=R;j=R+16|0;c[f+4>>2]=c[j>>2];c[j>>2]=f;c[a+416>>2]=1;J=512;K=0;i=b;return}function oB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+24|0;g=f|0;c[g>>2]=a;c[g+4>>2]=b;c[g+8>>2]=d;d=g+12|0;c[d>>2]=0;c[g+16>>2]=e;pB(1814320,g);i=f;return c[d>>2]|0}function pB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0.0;d=i;e=b+4|0;f=b|0;h=b+12|0;j=b+16|0;k=b+8|0;l=a;a:while(1){a=c[l+16>>2]|0;if((a|0)!=0){m=a;while(1){a=c[m+4>>2]|0;n=uA(m)|0;o=c[e>>2]|0;do{if(!(+g[n+464>>2]>+g[o>>2])){if(+g[n+468>>2]>+g[o+4>>2]){break}if(+g[n+472>>2]>+g[o+8>>2]){break}p=c[f>>2]|0;if(+g[n+476>>2]<+g[p>>2]){break}if(+g[n+480>>2]<+g[p+4>>2]){break}if(+g[n+484>>2]<+g[p+8>>2]){break}p=c[h>>2]|0;if((p|0)==(c[j>>2]|0)){q=11;break a}c[(c[k>>2]|0)+(p<<2)>>2]=(m-1820004|0)/300|0;c[h>>2]=(c[h>>2]|0)+1}}while(0);if((a|0)==0){break}else{m=a}}}m=l|0;n=c[m>>2]|0;if((n|0)==-1){q=18;break}o=l+4|0;r=+g[o>>2];if(+g[(c[e>>2]|0)+(n<<2)>>2]>r){pB(c[l+8>>2]|0,b);s=c[m>>2]|0;t=+g[o>>2]}else{s=n;t=r}if(!(+g[(c[f>>2]|0)+(s<<2)>>2]>2]|0}if((q|0)==11){Sr(129856,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;i=d;return}else if((q|0)==18){i=d;return}}function qB(a,b,d,e,f,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0;k=rA(h)|0;n$(a|0,0,56)|0;if((c[k+460>>2]&i|0)==0){g[a+8>>2]=1.0;return}h=k+432|0;do{if((c[h>>2]|0)==0){l=k+436|0;m=k+448|0;if((c[k+424>>2]&1024|0)==0){n=sq(l,m,0)|0;break}else{n=sq(l,m,1)|0;break}}else{n=nq(c[k+160>>2]|0)|0}}while(0);lr(a,b,f,d,e,n,i,k+488|0,(c[h>>2]|0)!=0?k+500|0:876376,j);if(!(+g[a+8>>2]<1.0)){return}c[a+52>>2]=c[k>>2];return}function rB(a,b,d,e,f,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0,A=0,B=0.0,C=0.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;l=i;i=i+4296|0;m=l|0;n=l+24|0;o=l+4120|0;p=l+4176|0;q=(d|0)==0?876376:d;d=(e|0)==0?876376:e;n$(p|0,0,116)|0;e=p+48|0;kr(e,b,f,q,d,0,j,k);r=p+56|0;s=+g[r>>2];c[p+100>>2]=s!=1.0?1022:1023;if(s==0.0){m$(a|0,e|0,56)|0;t=116;u=0;i=l;return}v=p+108|0;c[v>>2]=j;j=p+32|0;c[j>>2]=b;s=+g[f>>2];w=p+36|0;g[w>>2]=s;x=+g[f+4>>2];g[p+40>>2]=x;y=+g[f+8>>2];g[p+44>>2]=y;f=p+24|0;c[f>>2]=q;z=p+28|0;c[z>>2]=d;A=p+104|0;c[A>>2]=h;h=p+112|0;c[h>>2]=k;B=+g[b>>2];C=+g[q>>2];if(s>B){g[p>>2]=B+C+-1.0;g[p+12>>2]=s+ +g[d>>2]+1.0}else{g[p>>2]=s+C+-1.0;g[p+12>>2]=B+ +g[d>>2]+1.0}k=b+4|0;B=+g[k>>2];C=+g[q+4>>2];if(x>B){g[p+4>>2]=B+C+-1.0;g[p+16>>2]=x+ +g[d+4>>2]+1.0}else{g[p+4>>2]=x+C+-1.0;g[p+16>>2]=+g[k>>2]+ +g[d+4>>2]+1.0}k=b+8|0;C=+g[k>>2];x=+g[q+8>>2];if(y>C){g[p+8>>2]=C+x+-1.0;g[p+20>>2]=y+ +g[d+8>>2]+1.0}else{g[p+8>>2]=y+x+-1.0;g[p+20>>2]=+g[k>>2]+ +g[d+8>>2]+1.0}d=o;c[m>>2]=p;c[m+4>>2]=p+12;c[m+8>>2]=n;k=m+12|0;c[k>>2]=0;c[m+16>>2]=1024;pB(1814320,m);m=c[k>>2]|0;k=c[A>>2]|0;if((k|0)==1023){D=-1}else{q=c[(rA(k)|0)+512>>2]|0;D=(q|0)==1023?-1:q}q=e|0;a:do{if((m|0)>0){k=o|0;b=o+4|0;E=p+52|0;F=o+52|0;G=o+8|0;H=e;I=0;while(1){if((c[q>>2]|0)!=0){J=H;break a}K=n+(I<<2)|0;L=rA(c[K>>2]|0)|0;M=c[A>>2]|0;do{if((M|0)==1023){N=15}else{if((c[K>>2]|0)==(M|0)){break}O=c[L+512>>2]|0;if(!((O|0)==(M|0)|(O|0)==(D|0))){N=15}}}while(0);do{if((N|0)==15){N=0;if((c[L+460>>2]&c[v>>2]|0)==0){break}M=L+432|0;do{if((c[M>>2]|0)==0){K=L+436|0;O=L+448|0;if((c[L+424>>2]&1024|0)==0){P=sq(K,O,0)|0;break}else{P=sq(K,O,1)|0;break}}else{P=nq(c[L+160>>2]|0)|0}}while(0);lr(o,c[j>>2]|0,w,c[f>>2]|0,c[z>>2]|0,P,c[v>>2]|0,L+488|0,(c[M>>2]|0)!=0?L+500|0:876376,c[h>>2]|0);do{if((c[k>>2]|0)==0){if((c[b>>2]|0)==0){break}c[E>>2]=1;c[F>>2]=c[L>>2]}else{c[q>>2]=1;c[F>>2]=c[L>>2]}}while(0);if(!(+g[G>>2]<+g[r>>2])){break}M=c[E>>2]|0;c[F>>2]=c[L>>2];m$(H|0,d|0,56)|0;c[E>>2]=c[E>>2]|M}}while(0);L=I+1|0;if((L|0)<(m|0)){I=L}else{J=H;break}}}else{J=e}}while(0);m$(a|0,J|0,56)|0;t=116;u=0;i=l;return}function sB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+4120|0;e=d|0;f=d+24|0;g=Rq(a,0)|0;c[e>>2]=a;c[e+4>>2]=a;c[e+8>>2]=f;h=e+12|0;c[h>>2]=0;c[e+16>>2]=1024;pB(1814320,e);e=c[h>>2]|0;if((e|0)>0){j=g;k=0}else{l=g;m=4096;n=0;i=d;return l|0}while(1){g=c[f+(k<<2)>>2]|0;if((g|0)==(b|0)){o=j}else{h=rA(g)|0;g=h+432|0;do{if((c[g>>2]|0)==0){p=h+436|0;q=h+448|0;if((c[h+424>>2]&1024|0)==0){r=sq(p,q,0)|0;break}else{r=sq(p,q,1)|0;break}}else{r=nq(c[h+160>>2]|0)|0}}while(0);o=Sq(a,r,h+488|0,(c[g>>2]|0)!=0?h+500|0:876376)|0|j}q=k+1|0;if((q|0)<(e|0)){j=o;k=q}else{l=o;break}}m=4096;n=0;i=d;return l|0}function tB(a){a=a|0;if((a|0)<-128){return-128|0}else{return((a|0)>127?127:a&255)|0}return 0}function uB(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return(~~(b*255.0)&255)<<8|~~(a*255.0)&255|(~~(c*255.0)&255)<<16|(~~(d*255.0)&255)<<24|0}function vB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,h=0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0;e=+g[b>>2];f=+g[c>>2]-e;h=b+4|0;i=+g[h>>2];j=+g[c+4>>2]-i;k=b+8|0;l=+g[k>>2];m=+g[c+8>>2]-l;n=+g[d>>2]-e;e=+g[d+4>>2]-i;i=+g[d+8>>2]-l;l=m*e-j*i;g[a>>2]=l;o=f*i-m*n;d=a+4|0;g[d>>2]=o;m=j*n-f*e;c=a+8|0;g[c>>2]=m;e=m*m+(l*l+o*o);if(e!=0.0){f=1.0/+T(e);n=l*f;g[a>>2]=n;j=o*f;g[d>>2]=j;i=m*f;g[c>>2]=i;p=e*f;q=n;r=j;s=i}else{p=e;q=l;r=o;s=m}if(p==0.0){t=0;return t|0}g[a+12>>2]=+g[b>>2]*q+ +g[h>>2]*r+ +g[k>>2]*s;t=1;return t|0}function wB(a){a=a|0;var b=0.0,c=0,d=0.0,e=0,f=0.0,h=0.0,i=0.0,j=0.0;b=+g[a>>2];c=a+4|0;d=+g[c>>2];e=a+8|0;f=+g[e>>2];h=b*b+d*d+f*f;if(!(h!=0.0)){i=h;return+i}j=1.0/+T(h);g[a>>2]=b*j;g[c>>2]=j*d;g[e>>2]=j*f;i=h*j;return+i}function xB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,h=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0;e=i;i=i+16|0;f=e|0;h=+g[b>>2];j=+g[b+4>>2];k=+g[b+8>>2];l=f|0;yB(l,b);m=+g[f+4>>2];n=+g[f+8>>2];o=k*m-j*n;p=+g[l>>2];q=h*n-k*p;r=j*p-h*m;s=d*3.141592653589793/180.0;d=+V(s);t=+W(s);s=-0.0-t;u=h*0.0;v=u+(p*d+o*s);w=u+(o*d+p*t);u=h+(p*0.0+o*0.0);x=j*0.0;y=x+(m*d+q*s);z=x+(q*d+m*t);x=j+(m*0.0+q*0.0);A=k*0.0;B=A+(n*d+r*s);s=A+(r*d+n*t);t=k+(n*0.0+r*0.0);l=c+4|0;f=c+8|0;g[a>>2]=(h*u+(o*w+p*v))*+g[c>>2]+(j*u+(q*w+m*v))*+g[l>>2]+(k*u+(r*w+n*v))*+g[f>>2];g[a+4>>2]=(h*x+(o*z+p*y))*+g[c>>2]+(j*x+(q*z+m*y))*+g[l>>2]+(k*x+(r*z+n*y))*+g[f>>2];g[a+8>>2]=(h*t+(o*s+p*B))*+g[c>>2]+(j*t+(q*s+m*B))*+g[l>>2]+(k*t+(r*s+n*B))*+g[f>>2];i=e;return}function yB(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,h=0.0,j=0.0,k=0,l=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0;c=i;i=i+16|0;d=c|0;e=+g[b>>2];f=+S(+e);h=f<1.0?f:1.0;f=+g[b+4>>2];j=+S(+f);k=j>2];b=+S(+l)<(k?j:h);m=d+8|0;g[m>>2]=0.0;n=d+4|0;g[n>>2]=0.0;o=d|0;g[o>>2]=0.0;g[d+((b?2:k&1)<<2)>>2]=1.0;h=1.0/(e*e+f*f+l*l);j=+g[o>>2];p=+g[n>>2];q=+g[m>>2];r=h*(e*j+f*p+l*q);s=j-e*h*r;g[a>>2]=s;e=p-f*h*r;m=a+4|0;g[m>>2]=e;f=q-l*h*r;n=a+8|0;g[n>>2]=f;r=s*s+e*e+f*f;if(!(r!=0.0)){i=c;return}h=1.0/+T(r);g[a>>2]=s*h;g[m>>2]=e*h;g[n>>2]=f*h;i=c;return}function zB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=a|0;e=b|0;f=a+4|0;h=b+12|0;i=a+8|0;j=b+24|0;g[c>>2]=+g[d>>2]*+g[e>>2]+ +g[f>>2]*+g[h>>2]+ +g[i>>2]*+g[j>>2];k=b+4|0;l=b+16|0;m=b+28|0;g[c+4>>2]=+g[d>>2]*+g[k>>2]+ +g[f>>2]*+g[l>>2]+ +g[i>>2]*+g[m>>2];n=b+8|0;o=b+20|0;p=b+32|0;g[c+8>>2]=+g[d>>2]*+g[n>>2]+ +g[f>>2]*+g[o>>2]+ +g[i>>2]*+g[p>>2];i=a+12|0;f=a+16|0;d=a+20|0;g[c+12>>2]=+g[i>>2]*+g[e>>2]+ +g[f>>2]*+g[h>>2]+ +g[d>>2]*+g[j>>2];g[c+16>>2]=+g[i>>2]*+g[k>>2]+ +g[f>>2]*+g[l>>2]+ +g[d>>2]*+g[m>>2];g[c+20>>2]=+g[i>>2]*+g[n>>2]+ +g[f>>2]*+g[o>>2]+ +g[d>>2]*+g[p>>2];d=a+24|0;f=a+28|0;i=a+32|0;g[c+24>>2]=+g[d>>2]*+g[e>>2]+ +g[f>>2]*+g[h>>2]+ +g[i>>2]*+g[j>>2];g[c+28>>2]=+g[d>>2]*+g[k>>2]+ +g[f>>2]*+g[l>>2]+ +g[i>>2]*+g[m>>2];g[c+32>>2]=+g[d>>2]*+g[n>>2]+ +g[f>>2]*+g[o>>2]+ +g[i>>2]*+g[p>>2];return}function AB(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;c=+g[a+4>>2];d=+g[a>>2];do{if(c==0.0&d==0.0){e=+g[a+8>>2]>0.0?90.0:270.0;f=0.0}else{do{if(d!=0.0){h=+$(+c,+d)*180.0/3.141592653589793;if(!(h<0.0)){i=h;break}i=h+360.0}else{i=c>0.0?90.0:270.0}}while(0);h=+T(d*d+c*c);j=+$(+(+g[a+8>>2]),+h)*180.0/3.141592653589793;if(!(j<0.0)){e=j;f=i;break}e=j+360.0;f=i}}while(0);g[b>>2]=-0.0-e;g[b+4>>2]=f;g[b+8>>2]=0.0;return}function BB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,h=0.0;e=+g[a+4>>2]*.017453292519943295;g[46758]=+W(e);f=+V(e);g[46764]=f;e=+g[a>>2]*.017453292519943295;g[46762]=+W(e);h=+V(e);g[46768]=h;e=+g[a+8>>2]*.017453292519943295;g[46760]=+W(e);g[46766]=+V(e);if((b|0)!=0){g[b>>2]=h*f;g[b+4>>2]=+g[46768]*+g[46758];g[b+8>>2]=-0.0- +g[46762]}if((c|0)!=0){g[c>>2]=+g[46760]*-1.0*+g[46762]*+g[46764]- +g[46758]*+g[46766]*-1.0;g[c+4>>2]=+g[46760]*-1.0*+g[46762]*+g[46758]+ +g[46766]*-1.0*+g[46764];g[c+8>>2]=+g[46760]*-1.0*+g[46768]}if((d|0)==0){return}g[d>>2]=+g[46766]*+g[46762]*+g[46764]+ +g[46760]*+g[46758];g[d+4>>2]=+g[46766]*+g[46762]*+g[46758]- +g[46760]*+g[46764];g[d+8>>2]=+g[46766]*+g[46768];return}function CB(a){a=a|0;g[a>>2]=1.0;g[a+4>>2]=0.0;g[a+8>>2]=0.0;g[a+12>>2]=0.0;g[a+16>>2]=1.0;g[a+20>>2]=0.0;g[a+24>>2]=0.0;g[a+28>>2]=0.0;g[a+32>>2]=1.0;return}function DB(a,b){a=a|0;b=b|0;g[b>>2]=+g[a>>2];g[b+4>>2]=+g[a+4>>2];g[b+8>>2]=+g[a+8>>2];g[b+12>>2]=+g[a+12>>2];g[b+16>>2]=+g[a+16>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+24>>2];g[b+28>>2]=+g[a+28>>2];g[b+32>>2]=+g[a+32>>2];return}function EB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,h=0,i=0.0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;d=+g[a>>2];e=-0.0-d;f=b+4|0;g[f>>2]=e;h=a+4|0;i=+g[h>>2];j=b+8|0;g[j>>2]=i;k=a+8|0;l=+g[k>>2];g[b>>2]=l;m=+g[a>>2];n=-0.0-(l*m+ +g[h>>2]*e+i*+g[k>>2]);e=l+m*n;g[b>>2]=e;m=+g[h>>2]*n-d;g[f>>2]=m;d=i+ +g[k>>2]*n;g[j>>2]=d;n=d*d+(e*e+m*m);if(n!=0.0){i=1.0/+T(n);g[b>>2]=e*i;e=m*i;g[f>>2]=e;n=d*i;g[j>>2]=n;o=e;p=n}else{o=m;p=d}g[c>>2]=o*+g[k>>2]-p*+g[h>>2];g[c+4>>2]=+g[j>>2]*+g[a>>2]- +g[b>>2]*+g[k>>2];g[c+8>>2]=+g[b>>2]*+g[h>>2]- +g[f>>2]*+g[a>>2];return}function FB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+4|0;e=a+8|0;g[c>>2]=+g[a>>2]*+g[b>>2]+ +g[d>>2]*+g[b+4>>2]+ +g[e>>2]*+g[b+8>>2];g[c+4>>2]=+g[a>>2]*+g[b+12>>2]+ +g[d>>2]*+g[b+16>>2]+ +g[e>>2]*+g[b+20>>2];g[c+8>>2]=+g[a>>2]*+g[b+24>>2]+ +g[d>>2]*+g[b+28>>2]+ +g[e>>2]*+g[b+32>>2];return}function GB(a){a=+a;var b=0.0;b=(c[k>>2]=1597463007-((g[k>>2]=a,c[k>>2]|0)>>1),+g[k>>2]);return+(b*(1.5-b*a*.5*b))}function HB(b){b=b|0;var c=0,d=0,e=0,f=0;c=+g[b>>2]<0.0|0;d=+g[b+4>>2]<0.0?c|2:c;if(!(+g[b+8>>2]<0.0)){e=d&255;f=b+17|0;a[f]=e;return}e=(d|4)&255;f=b+17|0;a[f]=e;return}function IB(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;e=i;i=i+8|0;f=e|0;h=a[d+16|0]|0;j=h&255;if((h&255)>>>0<3>>>0){k=+g[d+12>>2];if(!(k>+g[b+(j<<2)>>2])){l=1;i=e;return l|0}l=k<+g[c+(j<<2)>>2]?3:2;i=e;return l|0}else{j=f+4|0;g[j>>2]=0.0;h=f|0;g[h>>2]=0.0;m=a[d+17|0]|0;if((m&255)>>>0<8>>>0){n=m&255;m=n&1;k=+g[d>>2];o=f+(m<<2)|0;g[o>>2]=+g[o>>2]+k*+g[c>>2];o=f+((m^1)<<2)|0;g[o>>2]=+g[o>>2]+k*+g[b>>2];o=n>>>1&1;k=+g[d+4>>2];m=f+(o<<2)|0;g[m>>2]=+g[m>>2]+k*+g[c+4>>2];m=f+((o^1)<<2)|0;g[m>>2]=+g[m>>2]+k*+g[b+4>>2];m=n>>>2&1;k=+g[d+8>>2];n=f+(m<<2)|0;g[n>>2]=+g[n>>2]+k*+g[c+8>>2];c=f+((m^1)<<2)|0;g[c>>2]=+g[c>>2]+k*+g[b+8>>2];p=+g[h>>2];q=+g[j>>2]}else{p=0.0;q=0.0}k=+g[d+12>>2];d=p>=k|0;l=q>2]));d=+S(+(+g[b>>2]));e=c>d?c:d;d=+S(+(+g[a+4>>2]));c=+S(+(+g[b+4>>2]));f=d>c?d:c;c=+S(+(+g[a+8>>2]));d=+S(+(+g[b+8>>2]));h=c>d?c:d;return+(+T(e*e+f*f+h*h))}function KB(a,b){a=a|0;b=b|0;g[a+8>>2]=99999.0;g[a+4>>2]=99999.0;g[a>>2]=99999.0;g[b+8>>2]=-99999.0;g[b+4>>2]=-99999.0;g[b>>2]=-99999.0;return}function LB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,h=0,i=0.0,j=0.0;d=+g[a>>2];if(d<+g[b>>2]){g[b>>2]=d;e=+g[a>>2]}else{e=d}if(e>+g[c>>2]){g[c>>2]=e}f=a+4|0;e=+g[f>>2];h=b+4|0;if(e<+g[h>>2]){g[h>>2]=e;i=+g[f>>2]}else{i=e}f=c+4|0;if(i>+g[f>>2]){g[f>>2]=i}f=a+8|0;i=+g[f>>2];a=b+8|0;if(i<+g[a>>2]){g[a>>2]=i;j=+g[f>>2]}else{j=i}f=c+8|0;if(!(j>+g[f>>2])){return}g[f>>2]=j;return}function MB(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0,h=0.0,i=0.0,j=0.0;c=+g[a>>2];d=a+4|0;e=+g[d>>2];f=a+8|0;h=+g[f>>2];i=c*c+e*e+h*h;if(i!=0.0){h=1.0/+T(i);g[b>>2]=c*h;g[b+4>>2]=h*+g[d>>2];g[b+8>>2]=h*+g[f>>2];j=i*h;return+j}else{g[b+8>>2]=0.0;g[b+4>>2]=0.0;g[b>>2]=0.0;j=i;return+j}return 0.0}function NB(a){a=+a;return(2139095040-((g[k>>2]=a,c[k>>2]|0)&2147483647)|0)>>>31|0}function OB(a){a=+a;var b=0.0,c=0.0;b=+Y(a);a=b;if(a>3.141592653589793){c=3.1415927410125732;return+c}c=a<-3.141592653589793?3.1415927410125732:b;return+c}function PB(a,b,c){a=+a;b=+b;c=+c;var d=0.0;if(cb?b:c}return+d}function QB(b){b=b|0;var c=0,d=0,e=0;c=b;d=b;while(1){b=a[d]|0;if((b<<24>>24|0)==47){e=d+1|0;c=e;d=e;continue}else if((b<<24>>24|0)==0){break}else{c=c;d=d+1|0;continue}}return c|0}function RB(a){a=a|0;var b=0,c=0;b=ge(a|0,46)|0;if((b|0)==0){return 28378648}else{c=ge(a|0,47)|0;return((c|0)==0|c>>>0>>0?b+1|0:28378648)|0}return 0}function SB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;g=ge(b|0,46)|0;do{if((g|0)==0){h=e}else{j=ge(b|0,47)|0;if(!((j|0)==0|j>>>0>>0)){h=e;break}j=g-b|0;h=(j|0)<(e|0)?j+1|0:e}}while(0);if((b|0)==(d|0)&(h|0)>1){a[b+(h-1)|0]=0;i=f;return}if((d|0)==0){Ur(0,57328,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k}if((b|0)==0){Ur(0,50776,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k}if((h|0)<1){Ur(0,45768,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k}k=h-1|0;q$(d|0,b|0,k|0)|0;a[d+k|0]=0;i=f;return}function TB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;if((b|0)==0){Ur(0,57328,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}if((d|0)==0){Ur(0,50776,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}if((e|0)<1){Ur(0,45768,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}else{g=e-1|0;q$(b|0,d|0,g|0)|0;a[b+g|0]=0;i=f;return}}function UB(b,c){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;d=o$(b|0)|0;e=o$(c|0)|0;if((e|0)>(d|0)){f=0;return f|0}g=b+(d-e)|0;if((g|0)==0|(c|0)==0){f=0;return f|0}else{h=99999;i=c;j=g}while(1){g=j+1|0;c=a[j]|0;e=c<<24>>24;d=i+1|0;b=a[i]|0;k=b<<24>>24;l=h-1|0;if((h|0)==0){f=1;m=7;break}if(c<<24>>24==b<<24>>24){n=e}else{o=(c-97&255)>>>0<26>>>0?e-32|0:e;if((o|0)==(((b-97&255)>>>0<26>>>0?k-32|0:k)|0)){n=o}else{f=0;m=7;break}}if((n|0)==0){f=1;m=7;break}else{h=l;i=d;j=g}}if((m|0)==7){return f|0}return 0}function VB(b,c){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;if((b|0)==0|(c|0)==0){d=-1;return d|0}else{e=99999;f=c;g=b}while(1){b=g+1|0;c=a[g]|0;h=c<<24>>24;i=f+1|0;j=a[f]|0;k=j<<24>>24;l=e-1|0;if((e|0)==0){d=0;m=7;break}if(c<<24>>24==j<<24>>24){n=h}else{o=(c-97&255)>>>0<26>>>0?h-32|0:h;p=(j-97&255)>>>0<26>>>0?k-32|0:k;if((o|0)==(p|0)){n=o}else{m=5;break}}if((n|0)==0){d=0;m=7;break}else{e=l;f=i;g=b}}if((m|0)==5){d=(o|0)<(p|0)?-1:1;return d|0}else if((m|0)==7){return d|0}return 0}function WB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=ge(a|0,46)|0;do{if((d|0)!=0){e=ge(a|0,47)|0;if(!((e|0)==0|e>>>0>>0)){break}return}}while(0);XB(a,b,c);return}function XB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;g=o$(b|0)|0;if((g|0)>=(d|0)){Ur(0,184904,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}j=b+g|0;k=d-g|0;if((j|0)==0){Ur(0,57328,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}if((e|0)==0){Ur(0,50776,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}if((k|0)<1){Ur(0,45768,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}else{q$(j|0,e|0,k-1|0)|0;a[b+(d-1)|0]=0;i=f;return}}function YB(a){a=a|0;return Wj(a|0)|0}function ZB(a){a=a|0;return Ue(a|0)|0}function _B(a){a=a|0;var b=0,d=0;b=i;c[5457496]=1;c[5450806]=0;$B(21828912,1024,174496,(d=i,i=i+8|0,c[d>>2]=a,d)|0)|0;i=d;i=b;return}function $B(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f|0;h=g;c[h>>2]=e;c[h+4>>2]=0;h=Xe(a|0,b|0,d|0,g|0)|0;if((h|0)<(b|0)){i=f;return h|0}Sr(181056,(g=i,i=i+16|0,c[g>>2]=b,c[g+8>>2]=h+1,g)|0);i=g;i=f;return h|0}function aC(){var a=0;a=c[5450806]|0;return((a|0)==0?c[5457496]|0:a)|0}function bC(a){a=a|0;cC(a,1)|0;return 21803232}function cC(b,d){b=b|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,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;e=c[b>>2]|0;a[21803232]=0;c[5450806]=0;if((e|0)==0){c[b>>2]=0;return 21803232}a:do{if((d|0)==0){f=e;b:while(1){g=a[f]|0;if(g<<24>>24<33){h=f;i=g;j=0;while(1){if((i<<24>>24|0)==10){c[5457496]=(c[5457496]|0)+1;k=1}else if((i<<24>>24|0)==0){l=26;break a}else{k=j}m=h+1|0;n=a[m]|0;if(n<<24>>24<33){h=m;i=n;j=k}else{break}}if((k|0)==0){o=n;p=m}else{break}}else{if((f|0)==0){l=26;break a}else{o=g;p=f}}if(!(o<<24>>24==47)){q=p;r=o;l=40;break a}j=a[p+1|0]|0;if((j<<24>>24|0)==47){i=p+2|0;while(1){h=a[i]|0;if((h<<24>>24|0)==0|(h<<24>>24|0)==10){f=i;continue b}i=i+1|0}}else if((j<<24>>24|0)!=42){s=p;l=33;break a}i=p+2|0;while(1){g=a[i]|0;if((g<<24>>24|0)==42){if((a[i+1|0]|0)==47){t=0;break}}else if((g<<24>>24|0)==0){t=1;break}else if((g<<24>>24|0)==10){c[5457496]=(c[5457496]|0)+1}i=i+1|0}f=t?i:i+2|0}c[b>>2]=m;return 21803232}else{f=e;c:while(1){j=a[f]|0;if(j<<24>>24<33){g=f;h=j;while(1){if((h<<24>>24|0)==10){c[5457496]=(c[5457496]|0)+1}else if((h<<24>>24|0)==0){l=26;break a}u=g+1|0;v=a[u]|0;if(v<<24>>24<33){g=u;h=v}else{w=u;x=v;break}}}else{if((f|0)==0){l=26;break a}else{w=f;x=j}}if(!(x<<24>>24==47)){q=w;r=x;l=40;break a}h=a[w+1|0]|0;if((h<<24>>24|0)==47){g=w+2|0;while(1){i=a[g]|0;if((i<<24>>24|0)==0|(i<<24>>24|0)==10){f=g;continue c}g=g+1|0}}else if((h<<24>>24|0)!=42){s=w;l=33;break a}g=w+2|0;while(1){j=a[g]|0;if((j<<24>>24|0)==42){if((a[g+1|0]|0)==47){y=0;break}}else if((j<<24>>24|0)==10){c[5457496]=(c[5457496]|0)+1}else if((j<<24>>24|0)==0){y=1;break}g=g+1|0}f=y?g:g+2|0}}}while(0);do{if((l|0)==26){c[b>>2]=0;return 21803232}else if((l|0)==33){c[5450806]=c[5457496];z=s;A=0;B=47}else if((l|0)==40){y=c[5457496]|0;c[5450806]=y;if(!(r<<24>>24==34)){z=q;A=0;B=r;break}w=q+1|0;x=0;e=y;while(1){if((x|0)>=1023){C=w;D=e;l=45;break}y=w+1|0;m=a[w]|0;if((m<<24>>24|0)==10){t=e+1|0;c[5457496]=t;E=t}else if((m<<24>>24|0)==34|(m<<24>>24|0)==0){F=y;break}else{E=e}a[21803232+x|0]=m;w=y;x=x+1|0;e=E}d:do{if((l|0)==45){while(1){l=0;e=C+1|0;w=a[C]|0;if((w<<24>>24|0)==34|(w<<24>>24|0)==0){F=e;break d}else if((w<<24>>24|0)!=10){C=e;D=D;l=45;continue}w=D+1|0;c[5457496]=w;C=e;D=w;l=45}}}while(0);a[21803232+x|0]=0;c[b>>2]=F;return 21803232}}while(0);while(1){if((A|0)<1023){a[21803232+A|0]=B;G=A+1|0}else{G=A}H=z+1|0;F=a[H]|0;if(F<<24>>24>32){z=H;A=G;B=F}else{break}}a[21803232+G|0]=0;c[b>>2]=H;return 21803232}function dC(b){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;if((b|0)==0){c=0;d=c;e=b;f=d-e|0;return f|0}else{g=b;h=b}a:while(1){i=0;j=0;k=h;b:while(1){l=i;m=k;c:while(1){n=m;d:while(1){o=a[n]|0;switch(o<<24>>24){case 32:case 9:{break d;break};case 47:{break};case 13:case 10:{break c;break};case 0:{break a;break};default:{p=o;break b}}o=a[n+1|0]|0;if((o<<24>>24|0)==42){q=n;r=47}else if((o<<24>>24|0)==47){o=n;s=47;while(1){if((s<<24>>24|0)==0|(s<<24>>24|0)==10){n=o;continue d}t=o+1|0;o=t;s=a[t]|0}}else{p=47;break b}while(1){if((r<<24>>24|0)==42){s=a[q+1|0]|0;if(s<<24>>24==47){break}else{u=s}}else if((r<<24>>24|0)==0){break}else{u=a[q+1|0]|0}q=q+1|0;r=u}n=r<<24>>24==0?q:q+2|0}l=1;m=n+1|0}i=l;j=1;k=n+1|0}do{if((j|0)==0){if((l|0)==0){v=g;break}a[g]=32;v=g+1|0}else{a[g]=10;v=g+1|0}}while(0);a[v]=p;if(p<<24>>24==34){w=v;x=n}else{g=v+1|0;h=n+1|0;continue}while(1){y=w+1|0;j=x+1|0;k=a[j]|0;if((k<<24>>24|0)==0){g=y;h=j;continue a}else if((k<<24>>24|0)==34){break}a[y]=k;w=y;x=j}a[y]=34;g=w+2|0;h=x+2|0}a[g]=0;c=g;d=c;e=b;f=d-e|0;return f|0}function eC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=d;while(1){cC(b,1)|0;do{if((a[21803233]|0)==0){d=a[21803232]|0;if((d<<24>>24|0)==123){f=e+1|0;break}else if((d<<24>>24|0)==125){f=e-1|0;break}else{f=e;break}}else{f=e}}while(0);if((f|0)==0){g=1;h=8;break}if((c[b>>2]|0)==0){g=0;h=8;break}else{e=f}}if((h|0)==8){return g|0}return 0}function fC(b){b=b|0;var d=0,e=0,f=0,g=0;d=c[b>>2]|0;while(1){e=d+1|0;f=a[d]|0;if((f<<24>>24|0)==0){g=4;break}else if((f<<24>>24|0)==10){break}else{d=e}}if((g|0)==4){c[b>>2]=e;return}c[5457496]=(c[5457496]|0)+1;c[b>>2]=e;return}function gC(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if((b|0)==0){c=-1;return c|0}if((a[b]|0)!=48){c=-1;return c|0}if((a[b+1|0]|0)!=120){c=-1;return c|0}if((o$(b|0)|0)>>>0>2>>>0){d=2;e=0}else{c=0;return c|0}while(1){f=e<<4;g=(t$(a[b+d|0]|0)|0)<<24;h=g>>24;if((g-788529153|0)>>>0<184549375>>>0){i=h+208&255}else{if(!((g-1610612737|0)>>>0<117440511>>>0)){c=-1;j=10;break}i=h+169&255}h=(i<<24>>24)+f|0;f=d+1|0;if(f>>>0<(o$(b|0)|0)>>>0){d=f;e=h}else{c=h;j=10;break}}if((j|0)==10){return c|0}return 0}function hC(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+8|0;e=d|0;if((a[b]|0)==0){f=0;i=d;return f|0}+i$(b,e);f=(a[c[e>>2]|0]|0)==0|0;i=d;return f|0}function iC(a){a=+a;return+(~~a|0)==a|0}function jC(b,c,d){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;e=(c|0)==0;if((b|0)==0){f=(e^1)<<31>>31;return f|0}if(e){f=1;return f|0}else{g=d;h=c;i=b}while(1){b=i+1|0;c=a[i]|0;d=c<<24>>24;e=h+1|0;j=a[h]|0;k=j<<24>>24;l=g-1|0;if((g|0)==0){f=0;m=9;break}if(c<<24>>24==j<<24>>24){n=d}else{o=(c-97&255)>>>0<26>>>0?d-32|0:d;p=(j-97&255)>>>0<26>>>0?k-32|0:k;if((o|0)==(p|0)){n=o}else{m=7;break}}if((n|0)==0){f=0;m=9;break}else{g=l;h=e;i=b}}if((m|0)==7){f=(o|0)<(p|0)?-1:1;return f|0}else if((m|0)==9){return f|0}return 0}function kC(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=b;b=d;d=c;while(1){f=a[e]|0;g=a[d]|0;if((b|0)==0){h=0;i=6;break}if(!(f<<24>>24==g<<24>>24)){i=4;break}if(f<<24>>24==0){h=0;i=6;break}else{e=e+1|0;b=b-1|0;d=d+1|0}}if((i|0)==4){h=f<<24>>24>24?-1:1;return h|0}else if((i|0)==6){return h|0}return 0}function lC(b){b=b|0;var c=0,d=0,e=0;c=a[b]|0;if(c<<24>>24==0){return b|0}else{d=b;e=c}do{a[d]=t$(e<<24>>24|0)|0;d=d+1|0;e=a[d]|0;}while(!(e<<24>>24==0));return b|0}function mC(b,c){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;d=c+1|0;e=a[c]|0;if(e<<24>>24==0){f=b;return f|0}c=(e-97&255)>>>0<26>>>0?e-32&255:e;e=o$(d|0)|0;g=a[b]|0;if(g<<24>>24==0){f=0;return f|0}else{h=b;i=g}a:while(1){g=h+1|0;b:do{if(((i-97&255)>>>0<26>>>0?i-32&255:i)<<24>>24==c<<24>>24){b=e;j=d;k=g;while(1){l=k+1|0;m=a[k]|0;n=m<<24>>24;o=j+1|0;p=a[j]|0;q=p<<24>>24;r=b-1|0;if((b|0)==0){f=h;s=9;break a}if(m<<24>>24==p<<24>>24){t=n}else{u=(m-97&255)>>>0<26>>>0?n-32|0:n;if((u|0)==(((p-97&255)>>>0<26>>>0?q-32|0:q)|0)){t=u}else{break b}}if((t|0)==0){f=h;s=9;break a}else{b=r;j=o;k=l}}}}while(0);k=a[g]|0;if(k<<24>>24==0){f=0;s=9;break}else{h=g;i=k}}if((s|0)==9){return f|0}return 0}function nC(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=a[b]|0;if(c<<24>>24==0){d=b;a[d]=0;return b|0}else{e=b;f=b;g=c}while(1){do{if((e|0)!=0&g<<24>>24==94){c=e+1|0;h=a[c]|0;if(h<<24>>24==0){i=5;break}if((Fe(h<<24>>24|0)|0)==0){i=5}else{j=f;k=c}}else{i=5}}while(0);do{if((i|0)==5){i=0;if(!(g<<24>>24>31&g<<24>>24!=127)){j=f;k=e;break}a[f]=g;j=f+1|0;k=e}}while(0);c=k+1|0;h=a[c]|0;if(h<<24>>24==0){d=j;break}else{e=c;f=j;g=h}}a[d]=0;return b|0}function oC(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a[b]|0;if(d<<24>>24==0){e=0;return e|0}else{f=b;g=0;h=d}while(1){d=(h<<24>>24==c<<24>>24)+g|0;b=f+1|0;i=a[b]|0;if(i<<24>>24==0){e=d;break}else{f=b;g=d;h=i}}return e|0}function pC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d|0;f=c[236122]|0;g=880488+((f&1)*32e3|0)|0;c[236122]=f+1;f=e;c[f>>2]=b;c[f+4>>2]=0;Xe(g|0,32e3,a|0,e|0)|0;i=d;return g|0}function qC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=o$(d|0)|0;g=(b|0)==0;if((f|0)<65){if(g){Ur(0,57328,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}if((d|0)==0){Ur(0,50776,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}q$(b|0,d|0,63)|0;a[b+63|0]=0;i=e;return}if(g){Ur(0,57328,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}if((d|0)==0){Ur(0,50776,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}q$(b|0,d|0,28)|0;a[b+28|0]=0;g=o$(b|0)|0;if((g|0)>=64){Ur(0,184904,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}j=b+g|0;k=64-g|0;if((j|0)==0){Ur(0,57328,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}if((k|0)<1){Ur(0,45768,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}q$(j|0,176352,k-1|0)|0;a[b+63|0]=0;XB(b,64,d+(f-29)|0);i=e;return} + + + +function dF(a,d){a=a|0;d=d|0;var e=0,f=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.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=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.0,ka=0.0,la=0.0,ma=0.0,na=0,oa=0,pa=0;e=i;i=i+496|0;f=e|0;j=e+80|0;k=e+168|0;l=e+208|0;m=e+224|0;n=e+240|0;o=e+256|0;p=e+272|0;q=e+288|0;r=e+328|0;s=e+416|0;t=e+456|0;u=j;v=k;n$(l|0,0,12)|0;if((c[(c[7094533]|0)+(a*28|0)+4>>2]&5|0)==0){w=36;x=0;y=84;z=0;A=80;B=0;i=e;return 0}if(((YF(a)|0)&2|0)==0){w=36;x=0;y=84;z=0;A=80;B=0;i=e;return 0}if((c[(c[7094533]|0)+(a*28|0)+4>>2]&4|0)!=0){w=36;x=0;y=84;z=0;A=80;B=0;i=e;return 0}C=c[7094531]|0;if(+g[C+(d*48|0)+32>>2]<+g[C+(a*48|0)+20>>2]){w=36;x=0;y=84;z=0;A=80;B=0;i=e;return 0}D=n|0;g[D>>2]=+g[C+(a*48|0)+36>>2];E=n+4|0;g[E>>2]=+g[C+(a*48|0)+40>>2];F=n+8|0;g[F>>2]=+g[C+(a*48|0)+44>>2];if((WF(D)|0)==0){G=+g[D>>2];H=+g[E>>2];I=+g[F>>2];YJ(118576,(J=i,i=i+32|0,c[J>>2]=a,h[J+8>>3]=G,h[J+16>>3]=H,h[J+24>>3]=I,J)|0);i=J}n=o|0;g[n>>2]=+g[D>>2];g[o+4>>2]=+g[E>>2];g[o+8>>2]=+g[F>>2]+-1.0e3;$F(q,D,n,4,-1);m$(v|0,q|0,36)|0;if((c[k>>2]|0)!=0){w=36;x=0;y=84;z=0;A=80;B=0;i=e;return 0}g[l>>2]=+g[k+8>>2];g[l+4>>2]=+g[k+12>>2];g[l+8>>2]=+g[k+16>>2];q=C+(d*48|0)+4|0;if((c[q>>2]|0)<=0){w=36;x=0;y=84;z=0;A=80;B=0;i=e;return 0}n=C+(d*48|0)+8|0;d=l|0;C=p|0;K=l+4|0;L=p+4|0;M=l+8|0;l=p+8|0;p=m|0;N=m+8|0;O=m+4|0;m=o|0;P=o+4|0;Q=o+8|0;o=r;R=j+68|0;S=j+8|0;U=j+12|0;V=j+16|0;W=j+20|0;j=s;X=k+8|0;Y=k+12|0;Z=k+16|0;_=t;$=k+4|0;k=f|0;aa=0;a:while(1){ba=c[(c[7094529]|0)+((c[n>>2]|0)+aa<<2)>>2]|0;ca=(ba|0)>-1?ba:-ba|0;da=c[7094527]|0;b:do{if((c[da+(ca*24|0)+4>>2]&1|0)!=0){ea=c[(c[7094525]|0)+(c[da+(ca*24|0)+12>>2]<<2)>>2]|0;fa=c[(c[7094523]|0)+(((ea|0)>-1?ea:-ea|0)<<3)>>2]|0;ea=c[7094519]|0;I=+g[ea+(fa*12|0)>>2]- +g[d>>2];g[C>>2]=I;H=+g[ea+(fa*12|0)+4>>2]- +g[K>>2];g[L>>2]=H;G=+g[ea+(fa*12|0)+8>>2]- +g[M>>2];g[l>>2]=G;fa=da+(ca*24|0)|0;ea=c[fa>>2]|0;ga=c[7094521]|0;if(+g[ga+(ea*20|0)>>2]*I+ +g[ga+(ea*20|0)+4>>2]*H+G*+g[ga+(ea*20|0)+8>>2]>0.0){break}RE(ba,p);G=+g[N>>2];H=+g[M>>2];if(G>2]|0;fa=c[7094521]|0;ga=fa+(ea*20|0)|0;ha=fa+(ea*20|0)+4|0;ia=fa+(ea*20|0)+8|0;if(+g[ga>>2]*0.0+ +g[ha>>2]*0.0+ +g[ia>>2]*-1.0<0.0){break}I=+g[p>>2];ja=I- +g[d>>2];g[C>>2]=ja;ka=+g[O>>2];la=ka- +g[K>>2];g[L>>2]=la;g[l>>2]=0.0;ma=+T(ja*ja+la*la+0.0);if(ma==0.0|ma>2.0e3){break}if((G-H)/ma<.2679491924311227){break}g[D>>2]=I;g[E>>2]=ka;g[F>>2]=G;g[m>>2]=I+ +g[ga>>2]*-500.0;g[P>>2]=ka+ +g[ha>>2]*-500.0;g[Q>>2]=G+ +g[ia>>2]*-500.0;xD(r,D,0,0,m,0,1);m$(u|0,o|0,84)|0;if((c[R>>2]&4|0)!=0){break}if(+g[S>>2]*500.0>32.0){break}g[C>>2]=I- +g[d>>2];g[L>>2]=ka- +g[K>>2];g[l>>2]=G- +g[M>>2];+wB(C);g[D>>2]=+g[d>>2]+ +g[C>>2]*4.0;g[E>>2]=+g[K>>2]+ +g[L>>2]*4.0;g[F>>2]=+g[M>>2]+ +g[l>>2]*4.0;g[m>>2]=+g[U>>2];g[P>>2]=+g[V>>2];g[Q>>2]=+g[W>>2];$F(s,D,m,2,-1);m$(v|0,j|0,36)|0;ma=+g[X>>2];H=ma-I;g[C>>2]=H;I=+g[Y>>2];la=I-ka;g[L>>2]=la;ka=+g[Z>>2];ja=ka-G;g[l>>2]=ja;if(+T(ja*ja+(H*H+la*la))>24.0){break}g[D>>2]=ma;g[E>>2]=I;g[F>>2]=ka;g[m>>2]=ma;g[P>>2]=I;I=+g[7094603];ma=547.7225341796875/I;g[Q>>2]=ka- +(~~(ma*I*.5*ma)|0);$F(t,D,m,2,-1);m$(v|0,_|0,36)|0;if(!(+g[$>>2]<1.0)){break}ia=WF(X)|0;ha=c[7094533]|0;if((c[ha+(ia*28|0)>>2]&6|0)!=0|(ia|0)==(a|0)){break}ga=c[(c[7094372]|0)+(a<<2)>>2]|0;if((ga|0)!=0){ea=ga;do{if((c[ea>>2]|0)==(ia|0)){break b}ea=c[ea+44>>2]|0;}while((ea|0)!=0)}if((c[ha+(ia*28|0)+4>>2]&1|0)==0){break}ea=aG(d,U,k,0,20)|0;if((ea|0)>19){break}if((ea|0)>0){ga=c[7094533]|0;fa=0;while(1){na=fa+1|0;if((c[ga+((c[f+(fa<<2)>>2]|0)*28|0)>>2]&8|0)!=0){break b}if((na|0)<(ea|0)){fa=na}else{break}}}fa=c[4939838]|0;if((fa|0)==0){oa=36;break a}ea=c[fa+44>>2]|0;if((ea|0)==0){hE(169608,(J=i,i=i+1|0,i=i+7&-8,c[J>>2]=0,J)|0);i=J;ga=c[4939838]|0;c[4939838]=c[ga+44>>2];c[4938816]=(c[4938816]|0)+1;if((ga|0)==0){oa=36;break a}else{pa=ga}}else{c[4939838]=ea;c[4938816]=(c[4938816]|0)+1;pa=fa}c[pa>>2]=ia;c[pa+4>>2]=ba;c[pa+8>>2]=0;ma=+g[d>>2];g[pa+12>>2]=ma;fa=pa+16|0;g[fa>>2]=+g[K>>2];ea=pa+20|0;g[ea>>2]=+g[M>>2];I=+g[U>>2];g[pa+24>>2]=I;ga=pa+28|0;g[ga>>2]=+g[V>>2];ha=pa+32|0;g[ha>>2]=+g[W>>2];c[pa+36>>2]=14;ka=I-ma;g[C>>2]=ka;ma=+g[ga>>2]- +g[fa>>2];g[L>>2]=ma;I=+g[ha>>2]- +g[ea>>2];g[l>>2]=I;b[pa+40>>1]=~~(+g[7094624]+ +T(I*I+(ka*ka+ma*ma))*.25);c[pa+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=pa;c[4917234]=(c[4917234]|0)+1}}while(0);ba=aa+1|0;if((ba|0)<(c[q>>2]|0)){aa=ba}else{oa=36;break}}if((oa|0)==36){w=36;x=0;y=84;z=0;A=80;B=0;i=e;return 0}return 0}function eF(){var a=0,b=0,d=0,e=0,f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;a=i;i=i+184|0;b=a|0;d=a+16|0;e=a+32|0;f=a+48|0;j=b;c[j>>2]=c[46788];c[j+4>>2]=c[46789];c[j+8>>2]=c[46790];j=d;c[j>>2]=c[46792];c[j+4>>2]=c[46793];c[j+8>>2]=c[46794];j=a+56|0;k=DD(0)|0;if((k|0)==0){l=0}else{m=e|0;n=b|0;b=d|0;d=e+4|0;o=e+8|0;e=k;k=0;while(1){a:do{if((ED(e,184736,j,128)|0)==0){p=k}else{do{if((k$(j,117480)|0)!=0){if((k$(j,116360)|0)==0){break}if((k$(j,114928)|0)==0){break}if((k$(j,113712)|0)==0){break}if((k$(j,112784)|0)==0){break}if((k$(j,111904)|0)==0){break}if((k$(j,111120)|0)==0){break}if((k$(j,110400)|0)==0){break}if((k$(j,109160)|0)==0){break}if((k$(j,108088)|0)==0){break}if((k$(j,107224)|0)==0){break}if((k$(j,106120)|0)!=0){p=k;break a}}}while(0);if((FD(e,99016,m)|0)==0){p=k;break}c[f>>2]=0;HD(e,122920,f)|0;do{if((c[f>>2]&1|0)==0){if((rE(m,n,b)|0)!=0){break}q=+g[m>>2];r=+g[d>>2];s=+g[o>>2];Tk[c[7092490]&255](1,105296,(t=i,i=i+32|0,c[t>>2]=j,h[t+8>>3]=q,h[t+16>>3]=r,h[t+24>>3]=s,t)|0);i=t}}while(0);u=QE(m,n,b,m)|0;v=(c[7094533]|0)+(u*28|0)+4|0;c[v>>2]=c[v>>2]|8192;p=k+1|0}}while(0);v=DD(e)|0;if((v|0)==0){l=p;break}else{e=v;k=p}}}p=c[7094530]|0;if((p|0)<=1){w=l;x=c[7092490]|0;Tk[x&255](1,104496,(t=i,i=i+8|0,c[t>>2]=w,t)|0);i=t;y=128;z=0;i=a;return}k=c[7094533]|0;e=1;m=l;l=p;while(1){if((c[k+(e*28|0)>>2]&128|0)==0){A=m;B=l}else{p=k+(e*28|0)+4|0;c[p>>2]=c[p>>2]|8192;A=m+1|0;B=c[7094530]|0}p=e+1|0;if((p|0)<(B|0)){e=p;m=A;l=B}else{w=A;break}}x=c[7092490]|0;Tk[x&255](1,104496,(t=i,i=i+8|0,c[t>>2]=w,t)|0);i=t;y=128;z=0;i=a;return}function fF(a,d){a=a|0;d=d|0;var e=0,f=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.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;e=i;i=i+232|0;f=e|0;j=e+8|0;k=e+24|0;l=e+40|0;m=e+56|0;n=e+72|0;o=e+88|0;p=e+104|0;q=e+192|0;r=c[7094533]|0;if((c[r+(a*28|0)+4>>2]&5|0)!=1){s=0;t=84;u=0;i=e;return s|0}if((c[r+(d*28|0)+4>>2]&8193|0)!=8193){s=0;t=84;u=0;i=e;return s|0}r=c[7094531]|0;if(+g[r+(d*48|0)+32>>2]<+g[r+(a*48|0)+20>>2]){s=0;t=84;u=0;i=e;return s|0}v=l|0;g[v>>2]=+g[r+(a*48|0)+36>>2];w=l+4|0;g[w>>2]=+g[r+(a*48|0)+40>>2];x=l+8|0;g[x>>2]=+g[r+(a*48|0)+44>>2];if((WF(v)|0)==0){y=+g[v>>2];z=+g[w>>2];A=+g[x>>2];YJ(118576,(B=i,i=i+32|0,c[B>>2]=a,h[B+8>>3]=y,h[B+16>>3]=z,h[B+24>>3]=A,B)|0);i=B}l=m|0;g[l>>2]=+g[v>>2];g[m+4>>2]=+g[w>>2];g[m+8>>2]=+g[x>>2]+-1.0e3;$F(q,v,l,4,-1);if((c[q>>2]|0)!=0){s=0;t=84;u=0;i=e;return s|0}A=+g[q+16>>2];z=+g[q+12>>2];l=j|0;g[l>>2]=+g[q+8>>2];q=j+4|0;g[q>>2]=z;v=j+8|0;g[v>>2]=A;j=r+(d*48|0)+4|0;if((c[j>>2]|0)<=0){s=0;t=84;u=0;i=e;return s|0}x=r+(d*48|0)+8|0;r=k|0;m=k+8|0;w=k+4|0;k=n|0;C=n+4|0;D=n+8|0;n=o|0;E=o+4|0;F=o+8|0;o=p+80|0;G=p+68|0;H=0;a:while(1){I=c[(c[7094529]|0)+((c[x>>2]|0)+H<<2)>>2]|0;do{if((c[(c[7094527]|0)+(((I|0)>-1?I:-I|0)*24|0)+4>>2]&4|0)!=0){RE(I,r);if(+g[m>>2]<+g[v>>2]+64.0){break}A=+zE(l);if((DE(A,l,r,f)|0)==0){break}z=+g[f>>2];if(!(z<300.0)){break}y=+g[w>>2]- +g[q>>2];g[k>>2]=z*(+g[r>>2]- +g[l>>2]);g[C>>2]=y*z;g[D>>2]=z*0.0;g[n>>2]=0.0;g[E>>2]=0.0;g[F>>2]=A;xE(p,-1,l,2,1,n,k,30,30,.10000000149011612,1213,d,0)|0;if((c[o>>2]|0)>=30){break}J=c[G>>2]|0;if(!((J&56|0)!=0|(J&1152|0)==0)){break a}}}while(0);I=H+1|0;if((I|0)<(c[j>>2]|0)){H=I}else{s=0;K=21;break}}if((K|0)==21){t=84;u=0;i=e;return s|0}K=c[4939838]|0;if((K|0)==0){s=0;t=84;u=0;i=e;return s|0}H=c[K+44>>2]|0;do{if((H|0)==0){hE(169608,(B=i,i=i+1|0,i=i+7&-8,c[B>>2]=0,B)|0);i=B;j=c[4939838]|0;c[4939838]=c[j+44>>2];c[4938816]=(c[4938816]|0)+1;if((j|0)==0){s=0}else{L=j;break}t=84;u=0;i=e;return s|0}else{c[4939838]=H;c[4938816]=(c[4938816]|0)+1;L=K}}while(0);c[L>>2]=d;c[L+4>>2]=0;c[L+8>>2]=0;g[L+12>>2]=+g[l>>2];g[L+16>>2]=+g[q>>2];g[L+20>>2]=+g[v>>2];g[L+24>>2]=+g[r>>2];g[L+28>>2]=+g[w>>2];g[L+32>>2]=+g[m>>2];c[L+36>>2]=12;b[L+40>>1]=~~+g[7094627];c[L+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=L;c[4917226]=(c[4917226]|0)+1;s=1;t=84;u=0;i=e;return s|0}function gF(a){a=a|0;var d=0,e=0,f=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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.0,va=0.0,wa=0.0,xa=0.0,ya=0,za=0.0,Aa=0,Ba=0,Ca=0,Da=0;d=i;i=i+168|0;e=d|0;f=d+40|0;h=d+56|0;j=d+72|0;k=d+88|0;l=d+128|0;m=k;if((c[(c[7094533]|0)+(a*28|0)+4>>2]&5|0)!=1){n=36;o=0;p=40;q=0;i=d;return}r=c[7094531]|0;s=r+(a*48|0)+4|0;t=c[s>>2]|0;if((t|0)<=0){n=36;o=0;p=40;q=0;i=d;return}u=r+(a*48|0)+8|0;r=h|0;v=h+4|0;w=h+8|0;h=f|0;x=f+4|0;y=f+8|0;f=j|0;z=j+4|0;A=j+8|0;j=l;B=k|0;C=k+8|0;D=e|0;E=k+16|0;F=k+12|0;k=0;G=t;while(1){t=c[(c[7094529]|0)+((c[u>>2]|0)+k<<2)>>2]|0;H=(t|0)>-1?t:-t|0;t=c[7094527]|0;do{if((c[t+(H*24|0)+4>>2]&4|0)==0){I=G}else{J=t+(H*24|0)+8|0;K=c[J>>2]|0;if((K|0)<=0){I=G;break}L=t+(H*24|0)+12|0;M=t+(H*24|0)|0;N=0;O=G;P=K;while(1){K=c[(c[7094525]|0)+((c[L>>2]|0)+N<<2)>>2]|0;if((O|0)>0){Q=(K|0)>-1?K:-K|0;R=K>>>31;U=R^1;V=0;do{W=c[(c[7094529]|0)+((c[u>>2]|0)+V<<2)>>2]|0;X=(W|0)>-1?W:-W|0;W=c[7094527]|0;a:do{if((c[W+(X*24|0)+4>>2]&4|0)==0){Y=W+(X*24|0)+8|0;Z=c[Y>>2]|0;if((Z|0)<=0){break}_=W+(X*24|0)+12|0;$=W+(X*24|0)+16|0;aa=W+(X*24|0)+20|0;ba=0;ca=Z;while(1){Z=c[7094525]|0;da=c[Z+((c[_>>2]|0)+ba<<2)>>2]|0;if((Q|0)==(((da|0)>-1?da:-da|0)|0)){da=c[$>>2]|0;if((da|0)==(a|0)){ea=c[aa>>2]|0}else{ea=da}da=c[7094531]|0;if((c[(c[7094533]|0)+(ea*28|0)+4>>2]&1|0)!=0){fa=c[da+(ea*48|0)+4>>2]|0;if((fa|0)<=0){break a}ga=c[da+(ea*48|0)+8>>2]|0;da=c[7094529]|0;ha=c[7094527]|0;ia=0;ja=0;while(1){ka=c[da+(ga+ja<<2)>>2]|0;la=(ka|0)>-1?ka:-ka|0;if((la|0)==(X|0)){ma=ia}else{ka=c[ha+(la*24|0)+8>>2]|0;b:do{if((ka|0)>0){na=c[ha+(la*24|0)+12>>2]|0;oa=0;while(1){pa=c[Z+(na+oa<<2)>>2]|0;qa=oa+1|0;if((((pa|0)>-1?pa:-pa|0)|0)==(Q|0)){break}if((qa|0)<(ka|0)){oa=qa}else{ra=ia;sa=qa;break b}}na=c[ha+(la*24|0)+4>>2]|0;if((na&1|0)==0){ra=1;sa=oa;break}ra=na>>>2&1^1;sa=oa}else{ra=ia;sa=0}}while(0);if((sa|0)<(ka|0)){ta=ra;break}else{ma=ra}}la=ja+1|0;if((la|0)<(fa|0)){ia=ma;ja=la}else{ta=ma;break}}if((ta|0)==0){break a}}ja=c[7094523]|0;ia=c[ja+(Q<<3)+(R<<2)>>2]|0;fa=c[7094519]|0;ha=fa+(ia*12|0)|0;Z=c[ja+(Q<<3)+(U<<2)>>2]|0;ja=fa+(Z*12|0)|0;ga=c[M>>2]|0;da=c[7094521]|0;ua=+g[ja>>2]- +g[ha>>2];la=fa+(Z*12|0)+4|0;na=fa+(ia*12|0)+4|0;va=+g[la>>2]- +g[na>>2];qa=fa+(Z*12|0)+8|0;Z=fa+(ia*12|0)+8|0;wa=+g[qa>>2]- +g[Z>>2];ia=da+(ga*20|0)|0;fa=da+(ga*20|0)+4|0;pa=da+(ga*20|0)+8|0;g[r>>2]=+g[fa>>2]*wa-va*+g[pa>>2];g[v>>2]=ua*+g[pa>>2]-wa*+g[ia>>2];g[w>>2]=va*+g[ia>>2]-ua*+g[fa>>2];+wB(r);ua=+g[ha>>2]+ +g[ja>>2];g[h>>2]=ua;va=+g[na>>2]+ +g[la>>2];g[x>>2]=va;wa=(+g[Z>>2]+ +g[qa>>2])*.5;xa=ua*.5+ +g[r>>2]*8.0;g[h>>2]=xa;ua=va*.5+ +g[v>>2]*8.0;g[x>>2]=ua;va=wa+ +g[w>>2]*8.0;g[y>>2]=va;g[f>>2]=xa;g[z>>2]=ua;g[A>>2]=va+-1.0e3;$F(l,h,f,4,-1);m$(m|0,j|0,36)|0;if((c[B>>2]|0)!=0){break a}qa=WF(C)|0;if((qa|0)==(a|0)){break a}Z=c[(c[7094372]|0)+(a<<2)>>2]|0;if((Z|0)!=0){la=Z;do{if((c[la>>2]|0)==(qa|0)){break a}la=c[la+44>>2]|0;}while((la|0)!=0)}la=c[7094533]|0;if((c[la+(qa*28|0)+4>>2]&5|0)==0){break a}if((c[la+(qa*28|0)>>2]&6|0)!=0){break a}la=aG(h,f,D,0,10)|0;if((la|0)>0){Z=c[7094533]|0;na=0;while(1){ja=na+1|0;if((c[Z+((c[e+(na<<2)>>2]|0)*28|0)>>2]&8|0)!=0){break a}if((ja|0)<(la|0)){na=ja}else{break}}}va=+g[7094635];if(va!=0.0){if(+S(+(+g[y>>2]- +g[E>>2]))>va){break a}}na=c[4939838]|0;if((na|0)==0){break a}la=c[na+44>>2]|0;if((la|0)==0){hE(169608,(Z=i,i=i+1|0,i=i+7&-8,c[Z>>2]=0,Z)|0);i=Z;Z=c[4939838]|0;c[4939838]=c[Z+44>>2];c[4938816]=(c[4938816]|0)+1;if((Z|0)==0){break a}else{ya=Z}}else{c[4939838]=la;c[4938816]=(c[4938816]|0)+1;ya=na}c[ya>>2]=qa;c[ya+4>>2]=0;c[ya+8>>2]=K;g[ya+12>>2]=+g[h>>2];g[ya+16>>2]=+g[x>>2];g[ya+20>>2]=+g[y>>2];g[ya+24>>2]=+g[C>>2];g[ya+28>>2]=+g[F>>2];g[ya+32>>2]=+g[E>>2];c[ya+36>>2]=7;va=+S(+(+g[y>>2]- +g[E>>2]));ua=+g[7094603];xa=ua;na=~~(+g[7094625]+va*50.0/xa);la=ya+40|0;b[la>>1]=na;Z=c[7094533]|0;do{if((c[Z+(qa*28|0)+4>>2]&4|0)==0){if((c[Z+(qa*28|0)>>2]&128|0)!=0){break}wa=ua*+T(va*2.0/xa);za=wa*wa*1.0e-4;if(za>+g[7094618]){b[la>>1]=~~(+((na&65535)>>>0)+ +g[7094633]);break}if(!(za>+g[7094619])){break}b[la>>1]=~~(+((na&65535)>>>0)+ +g[7094634])}}while(0);c[ya+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=ya;c[4917216]=(c[4917216]|0)+1;Aa=c[Y>>2]|0}else{Aa=ca}na=ba+1|0;if((na|0)<(Aa|0)){ba=na;ca=Aa}else{break}}}}while(0);V=V+1|0;Ba=c[s>>2]|0;}while((V|0)<(Ba|0));Ca=Ba;Da=c[J>>2]|0}else{Ca=O;Da=P}V=N+1|0;if((V|0)<(Da|0)){N=V;O=Ca;P=Da}else{I=Ca;break}}}}while(0);H=k+1|0;if((H|0)<(I|0)){k=H;G=I}else{break}}n=36;o=0;p=40;q=0;i=d;return}function hF(){var a=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a=c[7094535]|0;if((a|0)!=0){bK(a)}a=_J(((c[4938816]|0)*44|0)+440|0)|0;c[7094535]=a;c[7094534]=1;if((c[7094530]|0)<=0){return}d=c[7094533]|0;e=c[7094372]|0;f=0;h=1;do{i=d+(f*28|0)+24|0;c[i>>2]=h;j=d+(f*28|0)+20|0;c[j>>2]=0;k=c[e+(f<<2)>>2]|0;a:do{if((k|0)==0){l=0}else{m=k;n=0;o=h;while(1){p=n+o|0;c[a+(p*44|0)>>2]=c[m>>2];c[a+(p*44|0)+4>>2]=c[m+4>>2];c[a+(p*44|0)+8>>2]=c[m+8>>2];g[a+(p*44|0)+12>>2]=+g[m+12>>2];g[a+(p*44|0)+16>>2]=+g[m+16>>2];g[a+(p*44|0)+20>>2]=+g[m+20>>2];g[a+(p*44|0)+24>>2]=+g[m+24>>2];g[a+(p*44|0)+28>>2]=+g[m+28>>2];g[a+(p*44|0)+32>>2]=+g[m+32>>2];c[a+(p*44|0)+36>>2]=c[m+36>>2];b[a+(p*44|0)+40>>1]=b[m+40>>1]|0;p=(c[j>>2]|0)+1|0;c[j>>2]=p;q=c[m+44>>2]|0;if((q|0)==0){l=p;break a}m=q;n=p;o=c[i>>2]|0}}}while(0);h=(c[7094534]|0)+l|0;c[7094534]=h;f=f+1|0;}while((f|0)<(c[7094530]|0));return}function iF(a){a=+a;var b=0,d=0,e=0,f=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=i;if((c[7094478]|0)==0){d=0;i=b;return d|0}e=c[7094544]|0;if((e|0)>=((c[7094530]|0)+2|0)){d=0;i=b;return d|0}if((e|0)==1){Tk[c[7092490]&255](1,103488,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;c[7586200]=0;g[46798]=2.0e3;g[46796]=1.0e3;j=c[7094544]|0;k=2e3}else{j=e;k=~~+g[46798]}e=k+j|0;j=EJ()|0;k=c[7094544]|0;l=c[7094530]|0;a:do{if((k|0)<(l|0)&(k|0)<(e|0)){m=k;n=l;o=k;b:while(1){c[7094544]=o+1;p=c[(c[7094533]|0)+(m*28|0)>>2]|0;do{if((p&128|0)==0){if((n|0)>1){q=1;do{c:do{if((m|0)!=(q|0)){r=c[7094533]|0;if((c[r+(m*28|0)>>2]&192|0)!=0){if((c[r+(q*28|0)>>2]&192|0)==0){break}}r=c[(c[7094372]|0)+(m<<2)>>2]|0;if((r|0)!=0){s=r;do{if((c[s>>2]|0)==(q|0)){break c}s=c[s+44>>2]|0;}while((s|0)!=0)}if((UE(m,q)|0)!=0){break}if((VE(m,q)|0)!=0){break}if((WE(m,q)|0)!=0){break}if((ZE(m,q)|0)!=0){break}YE(m,q)|0}}while(0);q=q+1|0;t=c[7094530]|0;}while((q|0)<(t|0));u=t;v=c[(c[7094533]|0)+(m*28|0)>>2]|0}else{u=n;v=p}if((v&192|0)!=0){w=u;break}if((u|0)>1){q=1;s=u;while(1){d:do{if((m|0)==(q|0)){x=s}else{r=c[(c[7094372]|0)+(m<<2)>>2]|0;if((r|0)!=0){y=r;do{if((c[y>>2]|0)==(q|0)){x=s;break d}y=c[y+44>>2]|0;}while((y|0)!=0)}if((c[6924870]|0)!=0){dF(m,q)|0}fF(m,q)|0;x=c[7094530]|0}}while(0);y=q+1|0;if((y|0)<(x|0)){q=y;s=x}else{break}}}s=(EJ()|0)-j|0;if((s|0)>(~~+g[46796]|0)){break b}s=c[7094530]|0;if((((c[7094544]|0)*1e3|0|0)/(s|0)|0|0)>(c[7586200]|0)){z=s;break a}else{w=s}}else{w=n}}while(0);p=m+1|0;if(!((p|0)<(w|0)&(p|0)<(e|0))){z=w;break a}m=p;n=w;o=c[7094544]|0}z=c[7094530]|0}else{z=l}}while(0);l=c[7094544]|0;if((l|0)==(z|0)){Tk[c[7092490]&255](1,102696,(f=i,i=i+8|0,h[f>>3]=100.0,f)|0);i=f;Tk[c[7092490]&255](1,101776,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;c[7094544]=(c[7094544]|0)+1;d=1;i=b;return d|0}if((l|0)!=(z+1|0)){w=(l*1e3|0|0)/(z|0)|0;c[7586200]=w;Tk[c[7092490]&255](1,102696,(f=i,i=i+8|0,h[f>>3]=+(w|0)/10.0,f)|0);i=f;d=1;i=b;return d|0}if((z|0)>1){w=1;l=z;while(1){if((c[(c[7094533]|0)+(w*28|0)>>2]&128|0)==0){gF(w);A=c[7094530]|0}else{A=l}z=w+1|0;if((z|0)<(A|0)){w=z;l=A}else{break}}}cF();_E();$E();bF();hF();bK(c[4917212]|0);c[4938816]=0;bK(c[7094372]|0);c[7094544]=(c[7094544]|0)+1;Tk[c[7092490]&255](1,100936,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;d=1;i=b;return d|0}function jF(){var a=0,b=0,d=0,e=0;if((c[7094478]|0)==0){return}do{if((c[7094534]|0)!=0){if((~~+RJ(99816)|0)!=0){break}c[7094544]=(c[7094530]|0)+2;return}}while(0);c[6924870]=~~+RJ(92568);c[7094480]=1;c[7094544]=1;a=_J(3145728)|0;c[4917212]=a;b=0;d=a;while(1){a=b+1|0;c[d+(b*48|0)+44>>2]=d+(a*48|0);e=c[4917212]|0;if((a|0)<65535){b=a;d=e}else{break}}c[e+3145724>>2]=0;c[4939838]=c[4917212];c[4938816]=0;c[7094372]=_J(c[7094530]<<2)|0;eF();return}function kF(){var a=0,b=0;a=i;Tk[c[7092490]&255](1,131632,(b=i,i=i+8|0,c[b>>2]=c[4938824],b)|0);i=b;Tk[c[7092490]&255](1,173504,(b=i,i=i+8|0,c[b>>2]=c[4938814],b)|0);i=b;Tk[c[7092490]&255](1,146912,(b=i,i=i+8|0,c[b>>2]=c[4886342],b)|0);i=b;i=a;return}function lF(a){a=a|0;var b=0,d=0;b=a&16777215;if(b>>>0>31>>>0){d=1;return d|0}d=c[28378212+(b<<2)>>2]|a<<3&402653184;return d|0}function mF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=c[7094591]|0;if((b|0)==0){return}d=(c[7094543]|0)+(a<<4)|0;e=c[d>>2]|0;if((e|0)>0){f=0;g=e;h=b}else{return}while(1){b=c[h+(a<<2)>>2]|0;e=c[b+(f<<2)>>2]|0;if((e|0)==0){i=b;j=g}else{b=e;while(1){e=c[b+44>>2]|0;k=b+52|0;l=c[k>>2]|0;m=b+48|0;n=c[m>>2]|0;if((l|0)==0){c[7094594]=n}else{c[l+48>>2]=n}n=c[m>>2]|0;l=c[k>>2]|0;if((n|0)==0){c[7094593]=l}else{c[n+52>>2]=l}c[k>>2]=0;c[m>>2]=0;c[4886342]=(c[4886342]|0)-(c[b+8>>2]|0);bK(b|0);if((e|0)==0){break}else{b=e}}i=c[(c[7094591]|0)+(a<<2)>>2]|0;j=c[d>>2]|0}c[i+(f<<2)>>2]=0;b=f+1|0;if((b|0)>=(j|0)){break}f=b;g=j;h=c[7094591]|0}return}function nF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=c[(c[7094533]|0)+(a*28|0)+12>>2]|0;if((b|0)>0){mF(b)}else{a=-b|0;mF(c[(c[7094539]|0)+(a*20|0)+4>>2]|0);mF(c[(c[7094539]|0)+(a*20|0)+8>>2]|0)}a=c[7094530]|0;if((a|0)>0){d=0;e=a}else{return}while(1){a=c[7094592]|0;b=c[a+(d<<2)>>2]|0;if((b|0)==0){f=a;g=e}else{a=b;while(1){b=c[a+44>>2]|0;h=a+52|0;i=c[h>>2]|0;j=a+48|0;k=c[j>>2]|0;if((i|0)==0){c[7094594]=k}else{c[i+48>>2]=k}k=c[j>>2]|0;i=c[h>>2]|0;if((k|0)==0){c[7094593]=i}else{c[k+52>>2]=i}c[h>>2]=0;c[j>>2]=0;c[4886342]=(c[4886342]|0)-(c[a+8>>2]|0);bK(a|0);if((b|0)==0){break}else{a=b}}f=c[7094592]|0;g=c[7094530]|0}c[f+(d<<2)>>2]=0;a=d+1|0;if((a|0)<(g|0)){d=a;e=g}else{break}}return}function oF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;if(!((a|0)>0&(c[7094530]|0)>(a|0))){if((c[7092714]|0)==0){e=0;i=d;return e|0}Tk[c[7092490]&255](3,129552,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;e=0;i=d;return e|0}f=(c[7094533]|0)+(a*28|0)+4|0;g=c[f>>2]|0;h=g&8;if((b|0)<0){e=h>>>3^1;i=d;return e|0}j=(b|0)==0?g|8:g&-9;c[f>>2]=j;if((h|0)!=(j&8|0)){nF(a)}e=h>>>3^1;i=d;return e|0}function pF(a){a=a|0;return c[(c[7094585]|0)+(a<<2)>>2]|0}function qF(){var a=0,b=0,d=0,e=0,f=0,g=0;a=c[7094585]|0;if((a|0)!=0){bK(a)}a=_J(c[7094530]<<2)|0;c[7094585]=a;if((c[7094530]|0)<=0){return}b=c[7094533]|0;d=0;do{e=c[b+(d*28|0)>>2]|0;do{if((e&1|0)==0){if((e&4|0)!=0){f=2097152;break}f=(e&2|0)==0?524288:4194304}else{f=1048576}}while(0);g=e<<16;c[a+(d<<2)>>2]=g&134217728|e<<15&8388608|g&268435456|f|c[b+(d*28|0)+4>>2]<<22&67108864;d=d+1|0;}while((d|0)<(c[7094530]|0));return}function rF(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a=i;b=c[7094589]|0;if((b|0)!=0){bK(b)}b=_J(((c[7094534]|0)*12|0)+(c[7094530]<<3)|0)|0;c[7094589]=b;d=c[7094530]|0;if((d|0)<=1){i=a;return}e=1;f=b+(d<<3)|0;while(1){d=c[7094533]|0;b=d+(e*28|0)+20|0;g=c[b>>2]|0;if((g|0)>127){Tk[c[7092490]&255](2,118984,(h=i,i=i+8|0,c[h>>2]=e,h)|0);i=h;j=c[b>>2]|0}else{j=g}if((j|0)>0){g=d+(e*28|0)+24|0;d=0;h=f;k=c[7094589]|0;while(1){l=(c[g>>2]|0)+d|0;m=c[7094535]|0;n=h+12|0;c[h+4>>2]=e;c[h>>2]=(c[g>>2]|0)+d;o=c[m+(l*44|0)>>2]|0;c[h+8>>2]=c[k+(o<<3)+4>>2];c[(c[7094589]|0)+(o<<3)+4>>2]=h;l=c[7094589]|0;m=l+(o<<3)|0;c[m>>2]=(c[m>>2]|0)+1;m=d+1|0;if((m|0)<(c[b>>2]|0)&(m|0)<128){d=m;h=n;k=l}else{p=n;break}}}else{p=f}k=e+1|0;if((k|0)<(c[7094530]|0)){e=k;f=p}else{break}}i=a;return}function sF(){var a=0,d=0,e=0,f=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.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0;a=c[7094590]|0;if((a|0)!=0){bK(a)}a=c[7094530]|0;d=a<<2;if((a|0)>0){e=c[7094589]|0;f=c[7094533]|0;h=d;i=0;while(1){j=(da((c[e+(i<<3)>>2]<<1)+6&-8|4,c[f+(i*28|0)+20>>2]|0)|0)+h|0;k=i+1|0;if((k|0)<(a|0)){h=j;i=k}else{l=j;break}}}else{l=d}d=_J(l)|0;l=d;c[7094590]=l;i=c[7094530]|0;if((i|0)<=0){return}h=d+(i<<2)|0;d=0;a=i;i=l;while(1){l=c[7094589]|0;f=c[7094533]|0;c[i+(d<<2)>>2]=h;e=f+(d*28|0)+20|0;j=c[e>>2]|0;k=h+(j<<2)|0;if((j|0)>0){m=l+(d<<3)|0;n=f+(d*28|0)+24|0;f=l+(d<<3)+4|0;l=0;o=k;p=j;while(1){c[(c[(c[7094590]|0)+(d<<2)>>2]|0)+(l<<2)>>2]=o;q=o+((c[m>>2]<<1)+6&-8)|0;j=(c[n>>2]|0)+l|0;r=c[7094535]|0;s=c[f>>2]|0;if((s|0)==0){t=p}else{u=r+(j*44|0)+12|0;v=r+(j*44|0)+16|0;w=r+(j*44|0)+20|0;j=0;x=s;s=r;while(1){r=c[x>>2]|0;y=+g[s+(r*44|0)+24>>2]- +g[u>>2];z=+g[s+(r*44|0)+28>>2]- +g[v>>2];A=+g[s+(r*44|0)+32>>2]- +g[w>>2];B=+T(y*y+z*z+A*A);do{if((SE(d)|0)==0){if((LE(d)|0)!=0){C=B;break}C=B*.33000001311302185}else{C=B*1.2999999523162842}}while(0);r=~~C;b[(c[(c[(c[7094590]|0)+(d<<2)>>2]|0)+(l<<2)>>2]|0)+(j<<1)>>1]=(r|0)<1?1:r&65535;r=c[x+8>>2]|0;if((r|0)==0){break}j=j+1|0;x=r;s=c[7094535]|0}t=c[e>>2]|0}s=l+1|0;if((s|0)<(t|0)){l=s;o=q;p=t}else{break}}D=q;E=c[7094530]|0}else{D=k;E=a}p=d+1|0;if((p|0)>=(E|0)){break}h=D;d=p;a=E;i=c[7094590]|0}return}function tF(){var a=0,b=0,d=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;a=c[7094595]|0;if((a|0)!=0){bK(a)}a=_J(c[7094538]<<2)|0;c[7094595]=a;if((c[7094538]|0)<=0){return}b=c[7094539]|0;d=c[7094533]|0;f=0;do{g=c[b+(f*20|0)>>2]|0;h=c[d+(g*28|0)+20>>2]|0;do{if((h|0)>0){i=c[(c[7094589]|0)+(g<<3)+4>>2]|0;if((i|0)==0){j=0;break}k=c[(c[7094590]|0)+(g<<2)>>2]|0;l=0;m=0;while(1){n=c[k+(m<<2)>>2]|0;o=l;p=0;q=i;while(1){r=e[n+(p<<1)>>1]|0;s=(r|0)>(o|0)?r:o;r=c[q+8>>2]|0;if((r|0)==0){break}else{o=s;p=p+1|0;q=r}}q=m+1|0;if((q|0)<(h|0)){l=s;m=q}else{j=s;break}}}else{j=0}}while(0);c[a+(f<<2)>>2]=j;f=f+1|0;}while((f|0)<(c[7094538]|0));return}function uF(){var b=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=c[7094593]|0;if((b|0)==0){d=0;return d|0}e=c[7094533]|0;f=b;while(1){g=f|0;if((a[g]|0)!=1){h=14;break}i=c[f+16>>2]|0;j=c[e+(i*28|0)+12>>2]|0;if((j|0)>=0){h=6;break}b=c[f+52>>2]|0;if((b|0)==0){d=0;h=26;break}else{f=b}}do{if((h|0)==6){b=f+12|0;if((j|0)>0){k=e+(i*28|0)+16|0}else{l=-j|0;m=c[7094539]|0;k=m+(l*20|0)+12+(((c[m+(l*20|0)+4>>2]|0)!=(c[b>>2]|0))<<2)|0}l=f+40|0;m=c[l>>2]|0;n=f+44|0;o=c[n>>2]|0;if((m|0)==0){c[(c[(c[7094591]|0)+(c[b>>2]<<2)>>2]|0)+(c[k>>2]<<2)>>2]=o}else{c[m+44>>2]=o}o=c[n>>2]|0;if((o|0)==0){break}c[o+40>>2]=c[l>>2]}else if((h|0)==14){l=f+40|0;o=c[l>>2]|0;n=f+44|0;m=c[n>>2]|0;if((o|0)==0){c[(c[7094592]|0)+(c[f+16>>2]<<2)>>2]=m}else{c[o+44>>2]=m}m=c[n>>2]|0;if((m|0)==0){break}c[m+40>>2]=c[l>>2]}else if((h|0)==26){return d|0}}while(0);h=f+52|0;k=c[h>>2]|0;j=f+48|0;i=c[j>>2]|0;if((k|0)==0){c[7094594]=i}else{c[k+48>>2]=i}i=c[j>>2]|0;k=c[h>>2]|0;if((i|0)==0){c[7094593]=k}else{c[i+52>>2]=k}c[h>>2]=0;c[j>>2]=0;c[4886342]=(c[4886342]|0)-(c[f+8>>2]|0);bK(g);d=1;return d|0}function vF(){var a=0,b=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=c[7094591]|0;if((a|0)==0){return}b=c[7094542]|0;if((b|0)>0){d=0;e=b;while(1){b=(c[7094543]|0)+(d<<4)|0;f=c[b>>2]|0;if((f|0)>0){g=0;h=f;while(1){f=c[(c[7094591]|0)+(d<<2)>>2]|0;i=c[f+(g<<2)>>2]|0;if((i|0)==0){j=f;k=h}else{f=i;while(1){i=c[f+44>>2]|0;l=f+52|0;m=c[l>>2]|0;n=f+48|0;o=c[n>>2]|0;if((m|0)==0){c[7094594]=o}else{c[m+48>>2]=o}o=c[n>>2]|0;m=c[l>>2]|0;if((o|0)==0){c[7094593]=m}else{c[o+52>>2]=m}c[l>>2]=0;c[n>>2]=0;c[4886342]=(c[4886342]|0)-(c[f+8>>2]|0);bK(f|0);if((i|0)==0){break}else{f=i}}j=c[(c[7094591]|0)+(d<<2)>>2]|0;k=c[b>>2]|0}c[j+(g<<2)>>2]=0;f=g+1|0;if((f|0)<(k|0)){g=f;h=k}else{break}}p=c[7094542]|0}else{p=e}h=d+1|0;if((h|0)<(p|0)){d=h;e=p}else{break}}q=c[7094591]|0}else{q=a}bK(q);c[7094591]=0;return}function wF(){var a=0,b=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[7094592]|0;if((a|0)==0){return}b=c[7094530]|0;if((b|0)>0){d=0;e=a;f=b;while(1){b=c[e+(d<<2)>>2]|0;if((b|0)==0){g=e;h=f}else{i=b;while(1){b=c[i+44>>2]|0;j=i+52|0;k=c[j>>2]|0;l=i+48|0;m=c[l>>2]|0;if((k|0)==0){c[7094594]=m}else{c[k+48>>2]=m}m=c[l>>2]|0;k=c[j>>2]|0;if((m|0)==0){c[7094593]=k}else{c[m+52>>2]=k}c[j>>2]=0;c[l>>2]=0;c[4886342]=(c[4886342]|0)-(c[i+8>>2]|0);bK(i|0);if((b|0)==0){break}else{i=b}}g=c[7094592]|0;h=c[7094530]|0}c[g+(d<<2)>>2]=0;i=d+1|0;b=c[7094592]|0;if((i|0)<(h|0)){d=i;e=b;f=h}else{n=b;break}}}else{n=a}bK(n);c[7094592]=0;return}function xF(){var a=0,b=0,d=0,e=0,f=0,g=0;a=c[7094586]|0;if((a|0)!=0){bK(a)}a=c[7094542]|0;if((a|0)>0){b=c[7094543]|0;d=0;e=0;do{f=c[b+(d<<4)+4>>2]|0;e=(f|0)>(e|0)?f:e;d=d+1|0;}while((d|0)<(a|0));g=e*40|0}else{g=0}c[7094586]=_J(g)|0;g=c[7094587]|0;if((g|0)!=0){bK(g)}c[7094587]=_J(((c[7094538]|0)*40|0)+40|0)|0;return}function yF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f|0;h=(IF(a,b,d,e,g,f+8|0)|0)==0;i=f;return(h?0:c[g>>2]|0)|0}function zF(){var a=0,b=0,d=0,e=0,f=0,g=0,h=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;a=i;i=i+104|0;b=a|0;d=a+72|0;e=a+8|0;f=c[7094530]|0;if((f|0)>0){g=c[7094592]|0;h=0;j=0;while(1){k=c[g+(h<<2)>>2]|0;if((k|0)==0){l=j}else{m=j;n=k;while(1){k=m+1|0;o=c[n+44>>2]|0;if((o|0)==0){l=k;break}else{m=k;n=o}}}n=h+1|0;if((n|0)<(f|0)){h=n;j=l}else{p=l;break}}}else{p=0}l=c[7094542]|0;if((l|0)>0){j=c[7094543]|0;h=c[7094591]|0;f=0;g=0;while(1){n=c[j+(f<<4)>>2]|0;if((n|0)>0){m=c[h+(f<<2)>>2]|0;o=0;k=g;while(1){q=c[m+(o<<2)>>2]|0;if((q|0)==0){r=k}else{s=k;t=q;while(1){q=s+1|0;u=c[t+44>>2]|0;if((u|0)==0){r=q;break}else{s=q;t=u}}}t=o+1|0;if((t|0)<(n|0)){o=t;k=r}else{v=r;break}}}else{v=g}k=f+1|0;if((k|0)<(l|0)){f=k;g=v}else{w=v;break}}}else{w=0}$B(e,64,98952,(v=i,i=i+8|0,c[v>>2]=28378e3,v)|0)|0;i=v;rk[c[7092502]&63](e,b,1)|0;if((c[b>>2]|0)==0){hE(56992,(v=i,i=i+8|0,c[v>>2]=e,v)|0);i=v;x=64;y=0;i=a;return}c[d>>2]=1129465165;c[d+4>>2]=2;g=c[7094530]|0;c[d+8>>2]=g;c[d+12>>2]=c[7094542];c[d+16>>2]=(OJ(c[7094531]|0,g*48|0)|0)&65535;c[d+20>>2]=(OJ(c[7094543]|0,c[7094542]<<4)|0)&65535;c[d+24>>2]=p;c[d+28>>2]=w;rk[c[7092504]&63](d,32,c[b>>2]|0)|0;d=c[7094530]|0;if((d|0)>0){w=0;p=0;g=d;while(1){d=c[(c[7094592]|0)+(w<<2)>>2]|0;if((d|0)==0){z=p;A=g}else{f=p;l=d;do{d=l+8|0;rk[c[7092504]&63](l|0,c[d>>2]|0,c[b>>2]|0)|0;f=(c[d>>2]|0)+f|0;l=c[l+44>>2]|0;}while((l|0)!=0);z=f;A=c[7094530]|0}l=w+1|0;if((l|0)<(A|0)){w=l;p=z;g=A}else{B=z;break}}}else{B=0}z=c[7094542]|0;if((z|0)>0){A=0;g=B;p=z;while(1){z=(c[7094543]|0)+(A<<4)|0;w=c[z>>2]|0;if((w|0)>0){l=0;d=g;r=w;while(1){w=c[(c[(c[7094591]|0)+(A<<2)>>2]|0)+(l<<2)>>2]|0;if((w|0)==0){C=d;D=r}else{h=d;j=w;do{w=j+8|0;rk[c[7092504]&63](j|0,c[w>>2]|0,c[b>>2]|0)|0;h=(c[w>>2]|0)+h|0;j=c[j+44>>2]|0;}while((j|0)!=0);C=h;D=c[z>>2]|0}j=l+1|0;if((j|0)<(D|0)){l=j;d=C;r=D}else{break}}E=C;F=c[7094542]|0}else{E=g;F=p}r=A+1|0;if((r|0)<(F|0)){A=r;g=E;p=F}else{G=E;break}}}else{G=B}vk[c[7092505]&511](c[b>>2]|0);Tk[c[7092490]&255](1,50576,(v=i,i=i+8|0,c[v>>2]=e,v)|0);i=v;Tk[c[7092490]&255](1,45552,(v=i,i=i+8|0,c[v>>2]=G,v)|0);i=v;x=64;y=0;i=a;return}function AF(){var a=0,b=0,d=0,e=0,f=0,g=0,h=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=i;i=i+120|0;b=a|0;d=a+8|0;e=a+16|0;f=a+88|0;g=a+24|0;$B(g,64,98952,(h=i,i=i+8|0,c[h>>2]=28378e3,h)|0)|0;i=h;rk[c[7092502]&63](g,e,0)|0;j=c[e>>2]|0;if((j|0)==0){k=0;l=64;m=0;i=a;return k|0}rk[c[7092503]&63](f,32,j)|0;if((c[f>>2]|0)!=1129465165){hE(184664,(h=i,i=i+8|0,c[h>>2]=g,h)|0);i=h;k=0;l=64;m=0;i=a;return k|0}g=c[f+4>>2]|0;if((g|0)!=2){hE(180840,(h=i,i=i+16|0,c[h>>2]=g,c[h+8>>2]=2,h)|0);i=h;k=0;l=64;m=0;i=a;return k|0}h=c[f+8>>2]|0;if((h|0)!=(c[7094530]|0)){k=0;l=64;m=0;i=a;return k|0}if((c[f+12>>2]|0)!=(c[7094542]|0)){k=0;l=64;m=0;i=a;return k|0}g=c[f+16>>2]|0;if((g|0)!=((OJ(c[7094531]|0,h*48|0)|0)&65535|0)){k=0;l=64;m=0;i=a;return k|0}h=c[f+20>>2]|0;if((h|0)!=((OJ(c[7094543]|0,c[7094542]<<4)|0)&65535|0)){k=0;l=64;m=0;i=a;return k|0}h=f+24|0;if((c[h>>2]|0)>0){g=d;j=0;do{n=c[e>>2]|0;rk[c[7092503]&63](g,4,n)|0;o=ZJ(c[d>>2]|0)|0;p=o;c[o+8>>2]=c[d>>2];rk[c[7092503]&63](o+4|0,(c[d>>2]|0)-4|0,n)|0;c[o+56>>2]=o+((((((c[d>>2]|0)-62|0)>>>0)/3|0)<<1)+62);n=c[o+16>>2]|0;c[o+44>>2]=c[(c[7094592]|0)+(n<<2)>>2];c[o+40>>2]=0;o=c[7094592]|0;q=c[o+(n<<2)>>2]|0;if((q|0)==0){r=o}else{c[q+40>>2]=p;r=c[7094592]|0}c[r+(n<<2)>>2]=p;j=j+1|0;}while((j|0)<(c[h>>2]|0))}h=f+28|0;if((c[h>>2]|0)>0){f=b;j=0;do{r=c[e>>2]|0;rk[c[7092503]&63](f,4,r)|0;d=ZJ(c[b>>2]|0)|0;g=d;c[d+8>>2]=c[b>>2];rk[c[7092503]&63](d+4|0,(c[b>>2]|0)-4|0,r)|0;c[d+56>>2]=d+((((((c[b>>2]|0)-62|0)>>>0)/3|0)<<1)+62);r=d+12|0;p=c[d+16>>2]|0;n=c[7094533]|0;q=c[n+(p*28|0)+12>>2]|0;if((q|0)>0){s=n+(p*28|0)+16|0;t=c[r>>2]|0}else{p=c[r>>2]|0;r=-q|0;q=c[7094539]|0;s=q+(r*20|0)+12+(((c[q+(r*20|0)+4>>2]|0)!=(p|0))<<2)|0;t=p}p=c[s>>2]|0;c[d+44>>2]=c[(c[(c[7094591]|0)+(t<<2)>>2]|0)+(p<<2)>>2];c[d+40>>2]=0;d=c[(c[7094591]|0)+(t<<2)>>2]|0;r=c[d+(p<<2)>>2]|0;if((r|0)==0){u=d}else{c[r+40>>2]=g;u=c[(c[7094591]|0)+(t<<2)>>2]|0}c[u+(p<<2)>>2]=g;j=j+1|0;}while((j|0)<(c[h>>2]|0))}vk[c[7092505]&511](c[e>>2]|0);k=1;l=64;m=0;i=a;return k|0}function BF(){var a=0,b=0,d=0,e=0,f=0,h=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;a=i;i=i+160|0;b=a|0;d=a+128|0;e=a+144|0;f=c[7094597]|0;if((f|0)!=0){bK(f)}f=c[7094596]|0;if((f|0)!=0){bK(f)}c[7094597]=_J(c[7094534]<<3)|0;c[7094596]=_J(c[7094534]<<7)|0;if((c[7094534]|0)<=0){h=128;j=0;i=a;return}f=e|0;k=e+4|0;l=e+8|0;e=b|0;m=d|0;n=d+4|0;o=d+8|0;d=0;p=0;while(1){q=c[7094535]|0;r=c[q+(p*44|0)+36>>2]&16777215;if((r|0)==4|(r|0)==9){s=q+(p*44|0)+12|0;g[f>>2]=+g[s>>2];g[k>>2]=+g[q+(p*44|0)+16>>2];g[l>>2]=+g[q+(p*44|0)+20>>2];g[l>>2]=+g[q+(p*44|0)+32>>2];t=aG(s,f,e,0,32)|0;u=12}else if((r|0)==14){t=aG(q+(p*44|0)+12|0,q+(p*44|0)+24|0,e,0,32)|0;u=12}else if((r|0)==7){r=q+(p*44|0)+24|0;g[m>>2]=+g[r>>2];g[n>>2]=+g[q+(p*44|0)+28>>2];g[o>>2]=+g[q+(p*44|0)+32>>2];g[o>>2]=+g[q+(p*44|0)+20>>2];t=aG(m,r,e,0,32)|0;u=12}else{r=c[7094597]|0;c[r+(p<<3)>>2]=d;c[r+(p<<3)+4>>2]=0;v=d}do{if((u|0)==12){u=0;r=c[7094597]|0;c[r+(p<<3)>>2]=d;c[r+(p<<3)+4>>2]=t;if((t|0)<=0){v=d;break}r=c[7094596]|0;q=0;s=d;while(1){c[r+(s<<2)>>2]=c[b+(q<<2)>>2];w=q+1|0;if((w|0)<(t|0)){q=w;s=s+1|0}else{break}}v=t+d|0}}while(0);s=p+1|0;if((s|0)<(c[7094534]|0)){d=v;p=s}else{break}}h=128;j=0;i=a;return}function CF(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a=0;do{c[28378212+(a<<2)>>2]=1;a=a+1|0;}while((a|0)<32);c[7094554]=1;c[7094555]=2;c[7094556]=4;c[7094557]=8;c[7094558]=16;c[7094559]=32;c[7094560]=128;c[7094561]=256;c[7094562]=512;c[7094563]=1024;c[7094564]=2048;c[7094565]=4096;c[7094566]=8192;c[7094567]=16384;c[7094568]=32768;c[7094569]=65536;c[7094570]=131072;c[7094571]=262144;c[7094572]=16777216;qF();xF();rF();a=c[7094542]|0;if((a|0)>0){b=c[7094543]|0;d=0;e=0;while(1){f=(c[b+(d<<4)>>2]|0)+e|0;g=d+1|0;if((g|0)<(a|0)){d=g;e=f}else{h=f;break}}}else{h=0}e=_J(h+a<<2)|0;a=e;c[7094591]=a;h=c[7094542]|0;do{if((h|0)>0){d=e+(h<<2)|0;c[a>>2]=d;if((h|0)>1){i=d;j=0;k=1}else{break}while(1){d=i+(c[(c[7094543]|0)+(j<<4)>>2]<<2)|0;c[(c[7094591]|0)+(k<<2)>>2]=d;b=k+1|0;if((b|0)<(h|0)){i=d;j=k;k=b}else{break}}}}while(0);c[7094592]=_J(c[7094530]<<2)|0;sF();tF();BF();c[4938824]=0;c[4938814]=0;c[4886342]=0;c[4954622]=~~+UJ(176112,172720)<<10;AF()|0;return}function DF(){var a=0;vF();wF();a=c[7094590]|0;if((a|0)!=0){bK(a)}c[7094590]=0;a=c[7094595]|0;if((a|0)!=0){bK(a)}c[7094595]=0;a=c[7094589]|0;if((a|0)!=0){bK(a)}c[7094589]=0;a=c[7094586]|0;if((a|0)!=0){bK(a)}c[7094586]=0;a=c[7094587]|0;if((a|0)!=0){bK(a)}c[7094587]=0;a=c[7094597]|0;if((a|0)!=0){bK(a)}c[7094597]=0;a=c[7094596]|0;if((a|0)!=0){bK(a)}c[7094596]=0;a=c[7094585]|0;if((a|0)==0){c[7094585]=0;return}bK(a);c[7094585]=0;return}function EF(d){d=d|0;var e=0,f=0,h=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,J=0,K=0,L=0,M=0;e=i;i=i+256|0;f=e|0;c[4938824]=(c[4938824]|0)+1;h=d+12|0;j=c[(c[7094543]|0)+(c[h>>2]<<4)+4>>2]|0;c[7094588]=(c[7094588]|0)+1;k=~c[d+36>>2];l=c[d+16>>2]|0;m=c[7094533]|0;n=c[m+(l*28|0)+12>>2]|0;if((n|0)>0){o=m+(l*28|0)+16|0}else{m=-n|0;n=c[7094539]|0;o=n+(m*20|0)+12+(((c[n+(m*20|0)+4>>2]|0)!=(c[h>>2]|0))<<2)|0}m=c[o>>2]|0;if((m|0)>=(j|0)){p=256;q=0;i=e;return}n$(f|0,0,256)|0;o=c[7094586]|0;n=o+(m*40|0)|0;c[o+(m*40|0)+4>>2]=l;c[o+(m*40|0)+24>>2]=f;f=~~+g[d+32>>2];b[o+(m*40|0)+20>>1]=f;b[d+60+(m<<1)>>1]=f;c[o+(m*40|0)+32>>2]=0;c[o+(m*40|0)+36>>2]=0;if((n|0)==0){p=256;q=0;i=e;return}m=d+56|0;o=n;f=n;while(1){n=f+32|0;l=c[n>>2]|0;if((l|0)==0){r=0;s=0}else{c[l+36>>2]=0;r=o;s=c[n>>2]|0}c[f+28>>2]=0;n=c[(c[7094589]|0)+(c[f+4>>2]<<3)+4>>2]|0;a:do{if((n|0)==0){t=r;u=s}else{l=f+20|0;v=f+24|0;w=r;x=s;y=0;z=n;while(1){A=c[z>>2]|0;B=c[7094535]|0;C=c[B+(A*44|0)+36>>2]|0;D=C&16777215;if(D>>>0>31>>>0){E=1}else{E=c[28378212+(D<<2)>>2]|C<<3&402653184}do{if((E&k|0)==0){C=c[B+(A*44|0)>>2]|0;D=c[7094533]|0;if((c[D+(C*28|0)+4>>2]&8|0)!=0){F=x;G=w;break}if((c[(c[7094585]|0)+(C<<2)>>2]&k|0)!=0){F=x;G=w;break}C=c[z+4>>2]|0;H=c[D+(C*28|0)+12>>2]|0;I=c[h>>2]|0;if((H|0)>0){if((H|0)!=(I|0)){F=x;G=w;break}J=D+(C*28|0)+16|0}else{K=-H|0;H=c[7094539]|0;J=H+(K*20|0)+12+(((c[H+(K*20|0)+4>>2]|0)!=(I|0))<<2)|0}I=c[J>>2]|0;if((I|0)>=(j|0)){F=x;G=w;break}K=((b[(c[v>>2]|0)+(y<<1)>>1]|0)+(b[l>>1]|0)&65535)+(b[B+(A*44|0)+40>>1]|0)&65535;H=d+60+(I<<1)|0;L=b[H>>1]|0;if(!(L<<16>>16==0|(L&65535)>>>0>(K&65535)>>>0)){F=x;G=w;break}b[H>>1]=K;a[(c[m>>2]|0)+I|0]=A-(c[D+(C*28|0)+24>>2]|0);D=c[7094586]|0;H=D+(I*40|0)|0;c[D+(I*40|0)+4>>2]=C;b[D+(I*40|0)+20>>1]=K;c[D+(I*40|0)+24>>2]=c[(c[(c[7094590]|0)+(C<<2)>>2]|0)+(A-(c[(c[7094533]|0)+(C*28|0)+24>>2]|0)<<2)>>2];C=D+(I*40|0)+28|0;if((c[C>>2]|0)!=0){F=x;G=w;break}c[D+(I*40|0)+32>>2]=0;c[D+(I*40|0)+36>>2]=w;if((w|0)==0){M=H}else{c[w+32>>2]=H;M=x}c[C>>2]=1;F=M;G=H}else{F=x;G=w}}while(0);A=c[z+8>>2]|0;if((A|0)==0){t=G;u=F;break a}w=G;x=F;y=y+1|0;z=A}}}while(0);if((u|0)==0){break}else{o=t;f=u}}p=256;q=0;i=e;return}function FF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=c[7094533]|0;h=c[f+(d*28|0)+12>>2]|0;if((h|0)>0){i=f+(d*28|0)+16|0}else{f=-h|0;h=c[7094539]|0;i=h+(f*20|0)+12+(((c[h+(f*20|0)+4>>2]|0)!=(b|0))<<2)|0}f=c[i>>2]|0;i=c[(c[(c[7094591]|0)+(b<<2)>>2]|0)+(f<<2)>>2]|0;h=(i|0)==0;a:do{if(h){j=7}else{k=i;while(1){if((c[k+36>>2]|0)==(e|0)){break}l=c[k+44>>2]|0;if((l|0)==0){j=7;break a}else{k=l}}l=k+52|0;m=c[l>>2]|0;n=k+48|0;o=c[n>>2]|0;if((m|0)==0){c[7094594]=o}else{c[m+48>>2]=o}o=c[n>>2]|0;m=c[l>>2]|0;if((o|0)==0){c[7094593]=m}else{c[o+52>>2]=m}c[l>>2]=0;c[n>>2]=0;p=k}}while(0);if((j|0)==7){j=c[(c[7094543]|0)+(b<<4)+4>>2]|0;n=(j<<1)+64|0;l=n+j|0;c[4886342]=l+(c[4886342]|0);j=_J(l)|0;m=j;c[j+56>>2]=j+n;c[j+8>>2]=l;c[j+12>>2]=b;c[j+16>>2]=d;l=c[7094531]|0;g[j+20>>2]=+g[l+(d*48|0)+36>>2];g[j+24>>2]=+g[l+(d*48|0)+40>>2];g[j+28>>2]=+g[l+(d*48|0)+44>>2];g[j+32>>2]=1.0;c[j+36>>2]=e;c[j+40>>2]=0;c[j+44>>2]=i;if(!h){c[i+40>>2]=m}c[(c[(c[7094591]|0)+(b<<2)>>2]|0)+(f<<2)>>2]=m;EF(m);p=m}g[p+4>>2]=+mE();a[p|0]=1;m=c[7094594]|0;if((m|0)==0){c[7094593]=p;c[p+48>>2]=0;q=p+52|0;c[q>>2]=0;c[7094594]=p;return p|0}else{c[m+52>>2]=p;c[p+48>>2]=c[7094594];q=p+52|0;c[q>>2]=0;c[7094594]=p;return p|0}return 0}function GF(a){a=a|0;var d=0,e=0,f=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;c[4938814]=(c[4938814]|0)+1;d=c[7094538]|0;e=c[7094587]|0;f=e+(d*40|0)|0;c[f>>2]=c[a+12>>2];h=a+16|0;c[e+(d*40|0)+4>>2]=c[h>>2];i=~~+g[a+32>>2];b[e+(d*40|0)+20>>1]=i;j=c[(c[7094533]|0)+((c[h>>2]|0)*28|0)+12>>2]|0;if((j|0)<0){b[a+60+(-j<<1)>>1]=i}c[e+(d*40|0)+32>>2]=0;c[e+(d*40|0)+36>>2]=0;if((f|0)==0){return}d=a+36|0;e=f;i=f;while(1){f=e+32|0;j=c[f>>2]|0;if((j|0)==0){k=0;l=0}else{c[j+36>>2]=0;k=i;l=c[f>>2]|0}c[e+28>>2]=0;f=e|0;j=c[f>>2]|0;h=c[7094543]|0;m=e+4|0;n=FF(j,c[m>>2]|0,c[d>>2]|0)|0;o=h+(j<<4)+8|0;if((c[o>>2]|0)>0){p=h+(j<<4)+12|0;q=h+(j<<4)+4|0;j=e+20|0;h=l;r=k;s=0;while(1){t=c[(c[7094541]|0)+((c[p>>2]|0)+s<<2)>>2]|0;u=c[7094539]|0;v=u+(t*20|0)|0;w=c[v>>2]|0;do{if((w|0)==(c[m>>2]|0)){x=r;y=h}else{z=c[7094533]|0;A=c[z+(w*28|0)+12>>2]|0;if((A|0)>0){B=z+(w*28|0)+16|0}else{z=-A|0;B=u+(z*20|0)+12+(((c[u+(z*20|0)+4>>2]|0)!=(c[f>>2]|0))<<2)|0}z=c[B>>2]|0;if((z|0)>=(c[q>>2]|0)){x=r;y=h;break}A=b[n+60+(z<<1)>>1]|0;if(A<<16>>16==0){x=r;y=h;break}z=(b[j>>1]|0)+A&65535;A=a+60+(t<<1)|0;C=b[A>>1]|0;if(!(C<<16>>16==0|(C&65535)>>>0>(z&65535)>>>0)){x=r;y=h;break}b[A>>1]=z;A=c[7094587]|0;C=A+(t*40|0)|0;D=c[u+(t*20|0)+4>>2]|0;if((D|0)==(c[f>>2]|0)){c[C>>2]=c[u+(t*20|0)+8>>2]}else{c[C>>2]=D}c[A+(t*40|0)+4>>2]=c[v>>2];b[A+(t*40|0)+20>>1]=(c[(c[7094595]|0)+(t<<2)>>2]|0)+(z&65535);z=A+(t*40|0)+28|0;if((c[z>>2]|0)!=0){x=r;y=h;break}c[A+(t*40|0)+32>>2]=0;c[A+(t*40|0)+36>>2]=r;if((r|0)==0){E=C}else{c[r+32>>2]=C;E=h}c[z>>2]=1;x=C;y=E}}while(0);t=s+1|0;if((t|0)<(c[o>>2]|0)){h=y;r=x;s=t}else{F=y;G=x;break}}}else{F=l;G=k}if((F|0)==0){break}else{e=F;i=G}}return}function HF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=c[(c[7094592]|0)+(d<<2)>>2]|0;a:do{if((f|0)==0){h=4}else{i=f;while(1){if((c[i+36>>2]|0)==(e|0)){break}j=c[i+44>>2]|0;if((j|0)==0){h=4;break a}else{i=j}}j=i+52|0;k=c[j>>2]|0;l=i+48|0;m=c[l>>2]|0;if((k|0)==0){c[7094594]=m}else{c[k+48>>2]=m}m=c[l>>2]|0;k=c[j>>2]|0;if((m|0)==0){c[7094593]=k}else{c[m+52>>2]=k}c[j>>2]=0;c[l>>2]=0;n=i}}while(0);if((h|0)==4){h=c[7094538]|0;f=(h<<1)+64|0;l=f+h|0;c[4886342]=l+(c[4886342]|0);h=_J(l)|0;j=h;c[h+56>>2]=h+f;c[h+8>>2]=l;c[h+12>>2]=b;c[h+16>>2]=d;b=c[7094531]|0;g[h+20>>2]=+g[b+(d*48|0)+36>>2];g[h+24>>2]=+g[b+(d*48|0)+40>>2];g[h+28>>2]=+g[b+(d*48|0)+44>>2];g[h+32>>2]=1.0;c[h+36>>2]=e;c[h+40>>2]=0;c[h+44>>2]=c[(c[7094592]|0)+(d<<2)>>2];h=c[7094592]|0;e=c[h+(d<<2)>>2]|0;if((e|0)==0){o=h}else{c[e+40>>2]=j;o=c[7094592]|0}c[o+(d<<2)>>2]=j;GF(j);n=j}g[n+4>>2]=+mE();a[n|0]=0;j=c[7094594]|0;if((j|0)==0){c[7094593]=n;c[n+48>>2]=0;p=n+52|0;c[p>>2]=0;c[7094594]=n;return n|0}else{c[j+52>>2]=n;c[n+48>>2]=c[7094594];p=n+52|0;c[p>>2]=0;c[7094594]=n;return n|0}return 0}function IF(a,f,h,j,k,l){a=a|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;var 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.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0.0;m=i;if((c[7094479]|0)==0){n=0;i=m;return n|0}if((a|0)==(h|0)){c[k>>2]=1;c[l>>2]=0;n=1;i=m;return n|0}do{if((a|0)>=1){o=c[7094530]|0;if((o|0)<=(a|0)){break}if(!((h|0)>0&(o|0)>(h|0))){if((c[7092714]|0)==0){n=0;i=m;return n|0}Tk[c[7092490]&255](3,166152,(p=i,i=i+8|0,c[p>>2]=h,p)|0);i=p;n=0;i=m;return n|0}do{if((cK()|0)>=1048576){break}}while((uF()|0)!=0);if((TE(a)|0)==0){if((TE(h)|0)==0){q=j}else{r=15}}else{r=15}if((r|0)==15){q=j|8388608}o=c[7094533]|0;s=c[o+(a*28|0)+12>>2]|0;t=c[o+(h*28|0)+12>>2]|0;do{if((s|0)<0&(t|0)>0){o=-s|0;u=c[7094539]|0;if((c[u+(o*20|0)+4>>2]|0)!=(t|0)){if((c[u+(o*20|0)+8>>2]|0)!=(t|0)){v=t;w=s;break}}v=t;w=t}else{if(!((s|0)>0&(t|0)<0)){v=t;w=s;break}o=-t|0;u=c[7094539]|0;if((c[u+(o*20|0)+4>>2]|0)!=(s|0)){if((c[u+(o*20|0)+8>>2]|0)!=(s|0)){v=t;w=s;break}}v=s;w=s}}while(0);do{if((w|0)>0&(v|0)>0&(w|0)==(v|0)){o=FF(w,h,q)|0;u=c[7094533]|0;x=c[u+(a*28|0)+12>>2]|0;if((x|0)>0){y=u+(a*28|0)+16|0}else{z=-x|0;A=c[7094539]|0;y=A+(z*20|0)+12+(((c[A+(z*20|0)+4>>2]|0)!=(w|0))<<2)|0}z=c[y>>2]|0;if((z|0)>=(c[(c[7094543]|0)+(w<<4)+4>>2]|0)){n=0;i=m;return n|0}A=b[o+60+(z<<1)>>1]|0;if(A<<16>>16==0){B=x;C=c[u+(h*28|0)+12>>2]|0;break}x=(d[(c[o+56>>2]|0)+z|0]|0)+(c[u+(a*28|0)+24>>2]|0)|0;c[l>>2]=x;if((f|0)==0){c[k>>2]=A&65535;n=1;i=m;return n|0}u=c[7094535]|0;z=A&65535;D=+g[f>>2]- +g[u+(x*44|0)+12>>2];E=+g[f+4>>2]- +g[u+(x*44|0)+16>>2];F=+g[f+8>>2]- +g[u+(x*44|0)+20>>2];G=+T(D*D+E*E+F*F);do{if((SE(a)|0)==0){if((LE(a)|0)!=0){H=G;break}H=G*.33000001311302185}else{H=G*1.2999999523162842}}while(0);x=~~H;c[k>>2]=((x|0)<1?1:x&65535)+z;n=1;i=m;return n|0}else{B=s;C=t}}while(0);if((C|0)<0){I=c[(c[7094539]|0)+((-C|0)*20|0)+4>>2]|0}else{I=C}t=HF(I,h,q)|0;if((B|0)<0){s=-B|0;c[k>>2]=e[t+60+(s<<1)>>1]|0;c[l>>2]=(d[(c[t+56>>2]|0)+s|0]|0)+(c[(c[7094533]|0)+(a*28|0)+24>>2]|0);n=1;i=m;return n|0}s=c[7094543]|0;x=s+(B<<4)+8|0;if((c[x>>2]|0)<=0){n=0;i=m;return n|0}u=s+(B<<4)+12|0;A=s+(B<<4)+4|0;s=f+4|0;o=f+8|0;if((f|0)==0){J=0;K=-1;L=0;while(1){M=c[(c[7094541]|0)+((c[u>>2]|0)+J<<2)>>2]|0;N=t+60+(M<<1)|0;do{if((b[N>>1]|0)==0){O=L;P=K}else{Q=FF(B,c[(c[7094539]|0)+(M*20|0)>>2]|0,q)|0;R=c[7094533]|0;S=c[R+(a*28|0)+12>>2]|0;if((S|0)>0){U=R+(a*28|0)+16|0}else{R=-S|0;S=c[7094539]|0;U=S+(R*20|0)+12+(((c[S+(R*20|0)+4>>2]|0)!=(B|0))<<2)|0}R=c[U>>2]|0;if((R|0)>=(c[A>>2]|0)){O=L;P=K;break}S=b[Q+60+(R<<1)>>1]|0;if(S<<16>>16==0){O=L;P=K;break}R=((b[N>>1]|0)+S&65535)+(c[(c[7094595]|0)+(M<<2)>>2]|0)&65535;if(!(L<<16>>16==0|(R&65535)>>>0<(L&65535)>>>0)){O=L;P=K;break}O=R;P=c[l>>2]|0}}while(0);M=J+1|0;if((M|0)<(c[x>>2]|0)){J=M;K=P;L=O}else{V=P;W=O;break}}}else{L=0;K=-1;J=0;while(1){M=c[(c[7094541]|0)+((c[u>>2]|0)+L<<2)>>2]|0;N=t+60+(M<<1)|0;do{if((b[N>>1]|0)==0){X=J;Y=K}else{z=FF(B,c[(c[7094539]|0)+(M*20|0)>>2]|0,q)|0;R=c[7094533]|0;S=c[R+(a*28|0)+12>>2]|0;if((S|0)>0){Z=R+(a*28|0)+16|0}else{Q=-S|0;S=c[7094539]|0;Z=S+(Q*20|0)+12+(((c[S+(Q*20|0)+4>>2]|0)!=(B|0))<<2)|0}Q=c[Z>>2]|0;if((Q|0)>=(c[A>>2]|0)){X=J;Y=K;break}S=b[z+60+(Q<<1)>>1]|0;if(S<<16>>16==0){X=J;Y=K;break}_=((b[N>>1]|0)+S&65535)+(c[(c[7094595]|0)+(M<<2)>>2]|0)|0;S=(d[(c[z+56>>2]|0)+Q|0]|0)+(c[R+(a*28|0)+24>>2]|0)|0;c[l>>2]=S;R=c[7094535]|0;G=+g[f>>2]- +g[R+(S*44|0)+12>>2];F=+g[s>>2]- +g[R+(S*44|0)+16>>2];E=+g[o>>2]- +g[R+(S*44|0)+20>>2];D=+T(G*G+F*F+E*E);do{if((SE(a)|0)==0){if((LE(a)|0)!=0){$=D;break}$=D*.33000001311302185}else{$=D*1.2999999523162842}}while(0);S=~~$;R=((S|0)<1?1:S)+_&65535;if(!(J<<16>>16==0|(R&65535)>>>0<(J&65535)>>>0)){X=J;Y=K;break}X=R;Y=c[l>>2]|0}}while(0);M=L+1|0;if((M|0)<(c[x>>2]|0)){L=M;K=Y;J=X}else{V=Y;W=X;break}}}if((V|0)<0){n=0;i=m;return n|0}c[l>>2]=V;c[k>>2]=W&65535;n=1;i=m;return n|0}}while(0);if((c[7092714]|0)==0){n=0;i=m;return n|0}Tk[c[7092490]&255](3,169536,(p=i,i=i+8|0,c[p>>2]=a,p)|0);i=p;n=0;i=m;return n|0}function JF(a,b,d,f,h,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;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,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,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0,ja=0,ka=0,la=0.0,ma=0.0;p=i;i=i+32|0;q=p|0;r=p+8|0;s=p+16|0;t=a+16|0;c[t>>2]=0;u=a+12|0;c[u>>2]=f;v=a+20|0;c[v>>2]=0;w=a+24|0;c[w>>2]=0;x=a|0;g[x>>2]=+g[d>>2];y=d+4|0;z=a+4|0;g[z>>2]=+g[y>>2];A=d+8|0;B=a+8|0;g[B>>2]=+g[A>>2];C=a+32|0;c[C>>2]=0;a=s|0;g[a>>2]=+g[d>>2];D=s+4|0;g[D>>2]=+g[y>>2];E=s+8|0;g[E>>2]=+g[A>>2];a:do{if((b|0)==(f|0)){F=b}else{s=(j|0)==0;G=(l&2|0)==0;H=(k|0)!=0;I=(l&4|0)==0;J=(l&8|0)!=0;K=0;L=b;b:while(1){if(!((s|(K|0)<(j|0))&(K|0)<(c[7094530]|0))){F=L;break a}M=(IF(L,a,f,h,q,r)|0)==0;N=M?0:c[r>>2]|0;if((N|0)==0){O=5;break}P=c[7094535]|0;M=P+(N*44|0)|0;if(!G){Q=P+(N*44|0)+36|0;R=c[Q>>2]|0;S=R&16777215;if(S>>>0>31>>>0){U=1}else{U=c[28378212+(S<<2)>>2]|R<<3&402653184}if((U&n|0)!=0){O=10;break}V=M|0;W=c[7094585]|0;if((c[W+(c[V>>2]<<2)>>2]&n|0)!=0){O=14;break}}R=c[7094597]|0;S=c[R+(N<<3)+4>>2]|0;if((S|0)>-1){X=R+(N<<3)|0;R=c[7094596]|0;Y=c[7094533]|0;Z=M|0;_=0;while(1){$=(_|0)<(S|0);if($){aa=R+((c[X>>2]|0)+_<<2)|0}else{aa=Z}ba=c[aa>>2]|0;if(!I){ca=Y+(ba*28|0)|0;if((c[ca>>2]&m|0)!=0){O=26;break b}}if(J&(ba|0)==(o|0)){O=32;break b}if($){_=_+1|0}else{break}}}da=+g[d>>2]- +g[P+(N*44|0)+12>>2];ea=+g[y>>2]- +g[P+(N*44|0)+16>>2];fa=+g[A>>2]- +g[P+(N*44|0)+20>>2];ga=+T(da*da+ea*ea+fa*fa);do{if((SE(b)|0)==0){if((LE(b)|0)!=0){ha=ga;break}ha=ga*.33000001311302185}else{ha=ga*1.2999999523162842}}while(0);_=~~ha;Z=((_|0)<1?1:_&65535)+(c[C>>2]|0)+(e[P+(N*44|0)+40>>1]|0)|0;c[C>>2]=Z;_=M|0;c[u>>2]=c[_>>2];c[v>>2]=c[(c[7094533]|0)+((c[_>>2]|0)*28|0)>>2];X=c[P+(N*44|0)+36>>2]|0;R=X&16777215;if(R>>>0>31>>>0){ia=1}else{ia=c[28378212+(R<<2)>>2]|X<<3&402653184}c[w>>2]=ia;X=P+(N*44|0)+24|0;g[x>>2]=+g[X>>2];R=P+(N*44|0)+28|0;g[z>>2]=+g[R>>2];S=P+(N*44|0)+32|0;g[B>>2]=+g[S>>2];$=c[_>>2]|0;g[a>>2]=+g[X>>2];g[D>>2]=+g[R>>2];g[E>>2]=+g[S>>2];if(H&(Z|0)>(k|0)){F=$;break a}if(($|0)==(f|0)){F=f;break a}else{K=K+1|0;L=$}}if((O|0)==5){c[t>>2]=1;ja=0;i=p;return ja|0}else if((O|0)==10){c[t>>2]=2;c[u>>2]=L;c[v>>2]=c[(c[7094533]|0)+(L*28|0)>>2];K=c[Q>>2]|0;H=K&16777215;if(H>>>0>31>>>0){ka=1}else{ka=c[28378212+(H<<2)>>2]|K<<3&402653184}c[w>>2]=ka;g[x>>2]=+g[P+(N*44|0)+12>>2];g[z>>2]=+g[P+(N*44|0)+16>>2];g[B>>2]=+g[P+(N*44|0)+20>>2];ja=1;i=p;return ja|0}else if((O|0)==14){c[t>>2]=2;c[u>>2]=c[V>>2];c[v>>2]=c[(c[7094533]|0)+((c[V>>2]|0)*28|0)>>2];c[w>>2]=c[W+(c[V>>2]<<2)>>2];g[x>>2]=+g[P+(N*44|0)+24>>2];g[z>>2]=+g[P+(N*44|0)+28>>2];g[B>>2]=+g[P+(N*44|0)+32>>2];ga=+g[d>>2]- +g[P+(N*44|0)+12>>2];fa=+g[y>>2]- +g[P+(N*44|0)+16>>2];ea=+g[A>>2]- +g[P+(N*44|0)+20>>2];da=+T(ga*ga+fa*fa+ea*ea);do{if((SE(b)|0)==0){if((LE(b)|0)!=0){la=da;break}la=da*.33000001311302185}else{la=da*1.2999999523162842}}while(0);L=~~la;c[C>>2]=((L|0)<1?1:L&65535)+(c[C>>2]|0)+(e[P+(N*44|0)+40>>1]|0);ja=1;i=p;return ja|0}else if((O|0)==26){c[t>>2]=4;c[u>>2]=ba;c[v>>2]=c[ca>>2];g[x>>2]=+g[P+(N*44|0)+24>>2];g[z>>2]=+g[P+(N*44|0)+28>>2];g[B>>2]=+g[P+(N*44|0)+32>>2];da=+g[d>>2]- +g[P+(N*44|0)+12>>2];ea=+g[y>>2]- +g[P+(N*44|0)+16>>2];fa=+g[A>>2]- +g[P+(N*44|0)+20>>2];ga=+T(da*da+ea*ea+fa*fa);do{if((SE(b)|0)==0){if((LE(b)|0)!=0){ma=ga;break}ma=ga*.33000001311302185}else{ma=ga*1.2999999523162842}}while(0);L=~~ma;c[C>>2]=((L|0)<1?1:L&65535)+(c[C>>2]|0)+(e[P+(N*44|0)+40>>1]|0);ja=1;i=p;return ja|0}else if((O|0)==32){c[t>>2]=8;c[u>>2]=o;c[v>>2]=c[Y+(o*28|0)>>2];g[x>>2]=+g[P+(N*44|0)+12>>2];g[z>>2]=+g[P+(N*44|0)+16>>2];g[B>>2]=+g[P+(N*44|0)+20>>2];ja=1;i=p;return ja|0}}}while(0);ja=(F|0)==(f|0)|0;i=p;return ja|0}function KF(a,b){a=a|0;b=b|0;var d=0;if((c[7094479]|0)==0){n$(b|0,0,44)|0;return}d=b;if((a|0)>-1&(c[7094534]|0)>(a|0)){m$(d|0,(c[7094535]|0)+(a*44|0)|0,44)|0;return}else{n$(d|0,0,44)|0;return}}function LF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;if((c[7094479]|0)==0){e=0;i=d;return e|0}if(!((a|0)>0&(c[7094530]|0)>(a|0))){Tk[c[7092490]&255](3,162976,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;e=0;i=d;return e|0}g=c[7094533]|0;h=c[g+(a*28|0)+24>>2]|0;if((b|0)==0){e=h;i=d;return e|0}if((h|0)>(b|0)){Tk[c[7092490]&255](4,160224,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;e=0;i=d;return e|0}else{f=b+1|0;e=(f|0)<((c[g+(a*28|0)+20>>2]|0)+h|0)?f:0;i=d;return e|0}return 0}function MF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[7094534]|0;do{if((a|0)<1){e=1}else{if((d|0)>(a|0)){e=a+1|0;break}else{f=0;return f|0}}}while(0);if((e|0)>=(d|0)){f=0;return f|0}a=c[7094535]|0;g=e;while(1){e=c[a+(g*44|0)+36>>2]&16777215;if((e|0)==11){if((c[a+(g*44|0)+4>>2]|0)==(b|0)){f=g;h=10;break}}else if((e|0)==19){if((c[a+(g*44|0)+4>>2]&65535|0)==(b|0)){f=g;h=10;break}}e=g+1|0;if((e|0)<(d|0)){g=e}else{f=0;h=10;break}}if((h|0)==10){return f|0}return 0}function NF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c[(c[5497072]|0)+(c[4938822]<<2)>>2]=a;c[4938822]=(c[4938822]|0)+1;c[(c[4954620]|0)+(a<<3)>>2]=0;b=c[7094531]|0;d=b+(a*48|0)+4|0;e=c[d>>2]|0;if((e|0)<=0){return}f=b+(a*48|0)+8|0;b=0;g=e;while(1){e=c[(c[7094529]|0)+((c[f>>2]|0)+b<<2)>>2]|0;h=(e|0)>-1?e:-e|0;e=c[7094527]|0;i=c[e+(h*24|0)+16>>2]|0;if((i|0)==(a|0)){j=c[e+(h*24|0)+20>>2]|0}else{j=i}do{if((j|0)==0){k=g}else{if((c[(c[4954620]|0)+(j<<3)>>2]|0)==0){k=g;break}NF(j);k=c[d>>2]|0}}while(0);i=b+1|0;if((i|0)<(k|0)){b=i;g=k}else{break}}return}function OF(a,d,f,h,j,k,l,m){a=a|0;d=d|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.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.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0,S=0;f=i;if((d|0)==0|(h|0)==0){n=0;i=f;return n|0}o=yF(d,a,h,j)|0;n$(c[4954620]|0,0,c[7094530]<<3|0)|0;if((c[7094530]|0)<=1){n=0;i=f;return n|0}p=(m&2|0)==0;q=(m&4|0)==0;r=+(o|0);s=r*1.100000023841858;t=r*.800000011920929;if((m&1|0)==0){m=0;u=1;while(1){if(p){v=6}else{if((c[(c[7094533]|0)+(u*28|0)>>2]&8|0)==0){v=6}else{v=8}}do{if((v|0)==6){v=0;if(q){w=m;break}if((c[(c[7094533]|0)+(u*28|0)>>2]&512|0)==0){w=m}else{v=8}}}while(0);do{if((v|0)==8){v=0;if((ME(u)|0)==0){w=m;break}x=yF(d,a,u,j)|0;if((x|0)==0|+(x|0)>s){w=m;break}y=yF(u,0,h,j)|0;if((y|0)==0|+(y|0)>t){w=m;break}z=c[4954620]|0;c[z+(u<<3)>>2]=1;b[z+(u<<3)+4>>1]=x;b[z+(u<<3)+6>>1]=y;YJ(131344,(A=i,i=i+16|0,c[A>>2]=m,c[A+8>>2]=u,A)|0);i=A;w=m+1|0}}while(0);y=u+1|0;z=c[7094530]|0;if((y|0)<(z|0)){m=w;u=y}else{B=z;break}}}else{u=0;w=1;while(1){do{if((ME(w)|0)==0){C=u}else{m=yF(d,a,w,j)|0;if((m|0)==0|+(m|0)>s){C=u;break}q=yF(w,0,h,j)|0;if((q|0)==0|+(q|0)>t){C=u;break}p=c[4954620]|0;c[p+(w<<3)>>2]=1;b[p+(w<<3)+4>>1]=m;b[p+(w<<3)+6>>1]=q;YJ(131344,(A=i,i=i+16|0,c[A>>2]=u,c[A+8>>2]=w,A)|0);i=A;C=u+1|0}}while(0);q=w+1|0;p=c[7094530]|0;if((q|0)<(p|0)){u=C;w=q}else{B=p;break}}}if((B|0)<=1){n=0;i=f;return n|0}w=0;C=1;u=c[4954620]|0;A=B;while(1){if((c[u+(C<<3)>>2]|0)==0){D=w;E=u;F=A}else{c[4938822]=0;NF(C);B=c[4938822]|0;j=(B|0)>0;if(j){h=c[5497072]|0;a=c[7094531]|0;d=0;t=0.0;s=0.0;r=0.0;do{p=c[h+(d<<2)>>2]|0;r=r+ +g[a+(p*48|0)+36>>2];s=s+ +g[a+(p*48|0)+40>>2];t=t+ +g[a+(p*48|0)+44>>2];d=d+1|0;}while((d|0)<(B|0));G=t;H=s;I=r}else{G=0.0;H=0.0;I=0.0}J=1.0/+(B|0);K=I*J;L=H*J;M=G*J;if(j){d=c[5497072]|0;a=c[7094531]|0;h=0;p=0;J=999999.0;while(1){q=c[d+(p<<2)>>2]|0;N=K- +g[a+(q*48|0)+36>>2];O=L- +g[a+(q*48|0)+40>>2];P=M- +g[a+(q*48|0)+44>>2];Q=+T(N*N+O*O+P*P);m=Q>2]=+g[S+(R*48|0)+36>>2];g[k+(w*24|0)+4>>2]=+g[S+(R*48|0)+40>>2];g[k+(w*24|0)+8>>2]=+g[S+(R*48|0)+44>>2];c[k+(w*24|0)+12>>2]=R;a=c[4954620]|0;p=a+(R<<3)+4|0;b[k+(w*24|0)+16>>1]=b[p>>1]|0;h=a+(R<<3)+6|0;b[k+(w*24|0)+18>>1]=b[h>>1]|0;b[k+(w*24|0)+20>>1]=(e[p>>1]|0)-o+(e[h>>1]|0);h=w+1|0;if((h|0)>=(l|0)){n=h;v=32;break}D=h;E=a;F=c[7094530]|0}a=C+1|0;if((a|0)<(F|0)){w=D;C=a;u=E;A=F}else{n=D;v=32;break}}if((v|0)==32){i=f;return n|0}return 0}function PF(){var a=0;a=c[4954620]|0;if((a|0)!=0){bK(a)}c[4954620]=ZJ(c[7094530]<<3)|0;a=c[5497072]|0;if((a|0)!=0){bK(a)}c[5497072]=ZJ(c[7094530]<<2)|0;return}function QF(){var a=0;a=c[4954620]|0;if((a|0)!=0){bK(a)}c[4954620]=0;a=c[5497072]|0;if((a|0)!=0){bK(a)}c[5497072]=0;c[4938822]=0;return}function RF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0;e=i;i=i+80|0;f=e|0;h=e+40|0;n$(f|0,0,32)|0;g[f+12>>2]=-15.0;g[f+16>>2]=-15.0;g[f+20>>2]=-24.0;g[f+24>>2]=-15.0;g[f+28>>2]=-15.0;g[f+32>>2]=-24.0;n$(h|0,0,32)|0;g[h+12>>2]=15.0;g[h+16>>2]=15.0;g[h+20>>2]=32.0;g[h+24>>2]=15.0;g[h+28>>2]=15.0;g[h+32>>2]=8.0;if((a|0)==4){j=2}else if((a|0)==2){j=1}else{Tk[c[7092490]&255](4,131248,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a;j=2}g[b>>2]=+g[f+(j*12|0)>>2];g[b+4>>2]=+g[f+(j*12|0)+4>>2];g[b+8>>2]=+g[f+(j*12|0)+8>>2];g[d>>2]=+g[h+(j*12|0)>>2];g[d+4>>2]=+g[h+(j*12|0)+4>>2];g[d+8>>2]=+g[h+(j*12|0)+8>>2];i=e;return}function SF(){var a=0,b=0,d=0,e=0,f=0,g=0;a=c[7094547]|0;b=c[7094546]|0;if((b|0)==0){d=~~+UJ(173336,146840);e=(d|0)<0?0:d;c[7094547]=e;d=$J(e*24|0)|0;c[7094546]=d;f=e;g=d}else{f=a;g=b}c[g+12>>2]=0;g=c[7094546]|0;c[g+8>>2]=g+24;g=f-1|0;if((g|0)>1){b=1;while(1){a=c[7094546]|0;c[a+(b*24|0)+12>>2]=a+((b-1|0)*24|0);a=b+1|0;d=c[7094546]|0;c[d+(b*24|0)+8>>2]=d+(a*24|0);if((a|0)<(g|0)){b=a}else{break}}}b=c[7094546]|0;c[b+(g*24|0)+12>>2]=b+((f-2|0)*24|0);c[(c[7094546]|0)+(g*24|0)+8>>2]=0;c[7094548]=c[7094546];c[4938826]=f;return}function TF(){var a=0;a=c[7094546]|0;if((a|0)!=0){bK(a)}c[7094546]=0;c[7094547]=0;return}function UF(){var a=0;if((c[7094478]|0)==0){return}a=c[7094549]|0;if((a|0)!=0){bK(a)}c[7094549]=aK(c[7094530]<<2)|0;return}function VF(){var a=0;a=c[7094549]|0;if((a|0)!=0){bK(a)}c[7094549]=0;return}function WF(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0.0,j=0.0,k=0,l=0;b=i;if((c[7094478]|0)==0){Tk[c[7092490]&255](3,118920,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=b;return 0}d=c[7094537]|0;e=c[7094521]|0;f=+g[a>>2];h=+g[a+4>>2];j=+g[a+8>>2];a=1;do{k=c[d+(a*12|0)>>2]|0;if(f*+g[e+(k*20|0)>>2]+h*+g[e+(k*20|0)+4>>2]+j*+g[e+(k*20|0)+8>>2]- +g[e+(k*20|0)+12>>2]>0.0){l=d+(a*12|0)+4|0}else{l=d+(a*12|0)+8|0}a=c[l>>2]|0;}while((a|0)>0);i=b;return-a|0}function XF(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0;b=i;if((c[7094479]|0)==0){d=0;i=b;return d|0}if((a|0)==0){e=c[7094542]|0;if((e|0)<=0){d=0;i=b;return d|0}f=c[7094543]|0;h=0;j=0;while(1){k=(c[f+(h<<4)+4>>2]|0)+j|0;l=h+1|0;if((l|0)<(e|0)){h=l;j=k}else{d=k;break}}i=b;return d|0}if((c[7094478]|0)==0){Tk[c[7092490]&255](3,118920,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;d=0;i=b;return d|0}j=c[7094537]|0;h=c[7094521]|0;m=+g[a>>2];n=+g[a+4>>2];o=+g[a+8>>2];a=1;do{e=c[j+(a*12|0)>>2]|0;if(m*+g[h+(e*20|0)>>2]+n*+g[h+(e*20|0)+4>>2]+o*+g[h+(e*20|0)+8>>2]- +g[h+(e*20|0)+12>>2]>0.0){p=j+(a*12|0)+4|0}else{p=j+(a*12|0)+8|0}a=c[p>>2]|0;}while((a|0)>0);p=-a|0;if((a|0)==0){d=0;i=b;return d|0}if((ME(p)|0)==0){d=0;i=b;return d|0}a=c[7094533]|0;j=c[a+(p*28|0)+12>>2]|0;if((j|0)<0){h=c[7094539]|0;e=c[h+((-j|0)*20|0)+4>>2]|0;q=e;r=h+((-e|0)*20|0)+12|0}else{q=j;r=a+(p*28|0)+16|0}p=c[r>>2]|0;if((q|0)>0){r=c[7094543]|0;a=0;j=0;while(1){e=(c[r+(a<<4)+4>>2]|0)+j|0;h=a+1|0;if((h|0)<(q|0)){a=h;j=e}else{s=e;break}}}else{s=0}d=s+p|0;i=b;return d|0}function YF(a){a=a|0;var b=0,d=0;b=i;if((c[7094478]|0)==0){d=0;i=b;return d|0}if((a|0)>0&(c[7094530]|0)>(a|0)){d=c[(c[7094533]|0)+(a*28|0)+8>>2]|0;i=b;return d|0}else{Tk[c[7092490]&255](3,98640,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0);i=a;d=0;i=b;return d|0}return 0}function ZF(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0;if((c[7094478]|0)==0){b=0;return b|0}d=c[7094537]|0;e=c[7094521]|0;f=+g[a>>2];h=+g[a+4>>2];i=+g[a+8>>2];a=1;do{j=c[d+(a*12|0)>>2]|0;if(f*+g[e+(j*20|0)>>2]+h*+g[e+(j*20|0)+4>>2]+i*+g[e+(j*20|0)+8>>2]- +g[e+(j*20|0)+12>>2]>0.0){k=d+(a*12|0)+4|0}else{k=d+(a*12|0)+8|0}a=c[k>>2]|0;}while((a|0)>0);if((a|0)==0){b=1;return b|0}b=c[(c[7094533]|0)+((-a|0)*28|0)+8>>2]|0;return b|0}function _F(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;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;j=i;i=i+200|0;k=j|0;l=j+40|0;m=j+80|0;n=j+96|0;o=j+112|0;p=o;q=m|0;r=n|0;n$(k|0,0,28)|0;g[k+12>>2]=-15.0;g[k+16>>2]=-15.0;g[k+20>>2]=-24.0;g[k+24>>2]=-15.0;g[k+28>>2]=-15.0;g[k+32>>2]=-24.0;n$(l|0,0,28)|0;g[l+12>>2]=15.0;g[l+16>>2]=15.0;g[l+20>>2]=32.0;g[l+24>>2]=15.0;g[l+28>>2]=15.0;g[l+32>>2]=8.0;if((e|0)==4){s=2}else if((e|0)==2){s=1}else{Tk[c[7092490]&255](4,131248,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;s=2}g[q>>2]=+g[k+(s*12|0)>>2];g[m+4>>2]=+g[k+(s*12|0)+4>>2];g[m+8>>2]=+g[k+(s*12|0)+8>>2];g[r>>2]=+g[l+(s*12|0)>>2];g[n+4>>2]=+g[l+(s*12|0)+4>>2];g[n+8>>2]=+g[l+(s*12|0)+8>>2];n$(p|0,0,84)|0;g[o+8>>2]=1.0;p=c[(c[7094549]|0)+(a<<2)>>2]|0;if((p|0)==0){t=0;u=84;v=0;i=j;return t|0}else{w=0;x=p}while(1){p=c[x>>2]|0;if((p|0)==(f|0)){y=w}else{a=(zD(p,b,q,r,d,65537,o)|0)==0;y=a?w:1}a=c[x+8>>2]|0;if((a|0)==0){break}else{w=y;x=a}}if((y|0)==0){t=0;u=84;v=0;i=j;return t|0}c[h>>2]=c[o+4>>2];c[h+20>>2]=c[o+80>>2];g[h+8>>2]=+g[o+12>>2];g[h+12>>2]=+g[o+16>>2];g[h+16>>2]=+g[o+20>>2];c[h+28>>2]=0;c[h+32>>2]=0;t=1;u=84;v=0;i=j;return t|0}function $F(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=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,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,U=0.0,V=0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0,ba=0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0,la=0,ma=0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0,ta=0.0,ua=0.0,va=0.0,wa=0.0,xa=0.0,ya=0,za=0.0,Aa=0.0,Ba=0.0,Ca=0;h=i;i=i+4120|0;j=h|0;k=h+16|0;l=h+4080|0;m=l;n$(m|0,0,36)|0;if((c[7094478]|0)==0){m$(a|0,m|0,36)|0;n=36;o=0;p=4064;q=0;i=h;return}r=k|0;g[k>>2]=+g[b>>2];s=b+4|0;g[k+4>>2]=+g[s>>2];t=b+8|0;g[k+8>>2]=+g[t>>2];g[k+12>>2]=+g[d>>2];u=d+4|0;g[k+16>>2]=+g[u>>2];v=d+8|0;g[k+20>>2]=+g[v>>2];c[k+24>>2]=0;c[k+28>>2]=1;w=k+4064|0;x=(f|0)>-1;y=l+24|0;z=k+32|0;k=r;a:while(1){A=z-32+28|0;B=c[7094537]|0;C=k|0;D=z-32+4|0;E=z-32+8|0;F=z-32+12|0;G=z-32+16|0;H=z-32+20|0;I=c[7094521]|0;J=z>>>0>>0;K=c[A>>2]|0;b:do{if(J){L=K;while(1){if((L|0)<0){M=L;N=13;break b}if((L|0)==0){N=31;break a}O=+g[C>>2];P=+g[D>>2];Q=+g[E>>2];R=+g[F>>2];S=+g[G>>2];U=+g[H>>2];V=c[B+(L*12|0)>>2]|0;W=+g[I+(V*20|0)>>2];X=+g[I+(V*20|0)+4>>2];Y=+g[I+(V*20|0)+8>>2];Z=+g[I+(V*20|0)+12>>2];_=O*W+P*X+Q*Y-Z;$=R*W+S*X+U*Y-Z;if(!(_<0.0|$<0.0)){aa=c[B+(L*12|0)+4>>2]|0;c[A>>2]=aa;L=aa;continue}if(!(_<0.0&$<0.0)){ba=L;ca=O;da=P;ea=Q;fa=R;ga=S;ha=U;ia=_;ja=$;ka=V;N=44;break b}V=c[B+(L*12|0)+8>>2]|0;c[A>>2]=V;L=V}}else{if((K|0)<0){M=K;N=13;break}if((K|0)==0){N=31;break a}$=+g[C>>2];_=+g[D>>2];U=+g[E>>2];S=+g[F>>2];R=+g[G>>2];Q=+g[H>>2];L=c[B+(K*12|0)>>2]|0;P=+g[I+(L*20|0)>>2];O=+g[I+(L*20|0)+4>>2];Z=+g[I+(L*20|0)+8>>2];Y=+g[I+(L*20|0)+12>>2];X=$*P+_*O+U*Z-Y;W=S*P+R*O+Q*Z-Y;if(!(X<0.0|W<0.0)){N=41;break a}if(X<0.0&W<0.0){N=43;break a}else{ba=K;ca=$;da=_;ea=U;fa=S;ga=R;ha=Q;ia=X;ja=W;ka=L;N=44}}}while(0);if((N|0)==13){N=0;la=-M|0;if((c[(c[7094533]|0)+(la*28|0)+8>>2]&e|0)==0){N=14;break}if(x){if((_F(la,C,F,e,f,l)|0)!=0){N=25;break}}c[y>>2]=la;ma=k}else if((N|0)==44){N=0;H=z-32+24|0;G=c[H>>2]|0;if(ia==ja){na=ia+-.0010000000474974513}else{na=ia}L=na<0.0;W=na;if(L){oa=(W+.125)/(na-ja)}else{oa=(W+-.125)/(na-ja)}W=oa;do{if(W<0.0){pa=.0010000000474974513}else{if(!(W>1.0)){pa=W;break}pa=.9990000128746033}}while(0);W=ca+(fa-ca)*pa;X=da+(ga-da)*pa;Q=ea+(ha-ea)*pa;g[C>>2]=W;g[D>>2]=X;g[E>>2]=Q;c[H>>2]=ka;F=L&1;c[A>>2]=c[B+(ba*12|0)+4+((F^1)<<2)>>2];if(!J){N=53;break}g[z>>2]=ca;g[z+4>>2]=da;g[z+8>>2]=ea;g[z+12>>2]=W;g[z+16>>2]=X;g[z+20>>2]=Q;c[z+24>>2]=G;c[z+28>>2]=c[B+(ba*12|0)+4+(F<<2)>>2];F=z+32|0;if(F>>>0>>0){ma=F}else{N=55;break}}F=ma-32|0;if(F>>>0>>0){N=11;break}else{z=ma;k=F}}if((N|0)==11){c[l>>2]=0;g[l+4>>2]=1.0;g[l+8>>2]=+g[d>>2];g[l+12>>2]=+g[u>>2];g[l+16>>2]=+g[v>>2];c[l+20>>2]=0;c[l+28>>2]=0;c[l+32>>2]=0;m$(a|0,m|0,36)|0;n=36;o=0;p=4064;q=0;i=h;return}else if((N|0)==14){ea=+g[b>>2];do{if(+g[C>>2]==ea){da=+g[s>>2];if(!(+g[D>>2]==da)){qa=da;N=19;break}if(!(+g[E>>2]==+g[t>>2])){qa=da;N=19;break}c[l>>2]=1;g[l+4>>2]=0.0;g[j+8>>2]=0.0;g[j+4>>2]=0.0;g[j>>2]=0.0;ra=+g[C>>2];sa=I;ta=0.0;ua=0.0;va=0.0}else{qa=+g[s>>2];N=19}}while(0);if((N|0)==19){c[l>>2]=0;k=j|0;g[k>>2]=+g[d>>2]-ea;ma=j+4|0;g[ma>>2]=+g[u>>2]-qa;da=+g[t>>2];r=j+8|0;g[r>>2]=+g[v>>2]-da;ca=+g[C>>2]-ea;ea=+g[D>>2]-qa;qa=+g[E>>2]-da;da=+T(ca*ca+ea*ea+qa*qa);g[l+4>>2]=da/+wB(k);da=+g[C>>2]+ +g[k>>2]*-.125;g[C>>2]=da;g[D>>2]=+g[D>>2]+ +g[ma>>2]*-.125;g[E>>2]=+g[E>>2]+ +g[r>>2]*-.125;ra=da;sa=c[7094521]|0;ta=+g[k>>2];ua=+g[ma>>2];va=+g[r>>2]}g[l+8>>2]=ra;g[l+12>>2]=+g[D>>2];g[l+16>>2]=+g[E>>2];c[l+20>>2]=0;c[l+28>>2]=la;la=c[z-32+24>>2]|0;r=l+32|0;c[r>>2]=la;if(ta*+g[sa+(la*20|0)>>2]+ua*+g[sa+(la*20|0)+4>>2]+va*+g[sa+(la*20|0)+8>>2]>0.0){c[r>>2]=la^1}m$(a|0,m|0,36)|0;n=36;o=0;p=4064;q=0;i=h;return}else if((N|0)==25){if((c[l>>2]|0)==0){va=+g[b>>2];ua=+g[d>>2]-va;g[j>>2]=ua;ta=+g[s>>2];ra=+g[u>>2]-ta;g[j+4>>2]=ra;da=+g[t>>2];qa=+g[v>>2]-da;g[j+8>>2]=qa;ea=+g[l+8>>2]-va;va=+g[l+12>>2]-ta;ta=+g[l+16>>2]-da;g[l+4>>2]=+T(ea*ea+va*va+ta*ta)/+T(ua*ua+ra*ra+qa*qa)}m$(a|0,m|0,36)|0;n=36;o=0;p=4064;q=0;i=h;return}else if((N|0)==31){qa=+g[b>>2];do{if(+g[C>>2]==qa){ra=+g[s>>2];if(!(+g[D>>2]==ra)){wa=ra;N=36;break}if(!(+g[E>>2]==+g[t>>2])){wa=ra;N=36;break}c[l>>2]=1;g[l+4>>2]=0.0;g[j+8>>2]=0.0;g[j+4>>2]=0.0;g[j>>2]=0.0;xa=+g[C>>2];ya=I;za=0.0;Aa=0.0;Ba=0.0}else{wa=+g[s>>2];N=36}}while(0);if((N|0)==36){c[l>>2]=0;s=j|0;g[s>>2]=+g[d>>2]-qa;d=j+4|0;g[d>>2]=+g[u>>2]-wa;ra=+g[t>>2];t=j+8|0;g[t>>2]=+g[v>>2]-ra;ua=+g[C>>2]-qa;qa=+g[D>>2]-wa;wa=+g[E>>2]-ra;ra=+T(ua*ua+qa*qa+wa*wa);g[l+4>>2]=ra/+wB(s);ra=+g[C>>2]+ +g[s>>2]*-.125;g[C>>2]=ra;g[D>>2]=+g[D>>2]+ +g[d>>2]*-.125;g[E>>2]=+g[E>>2]+ +g[t>>2]*-.125;xa=ra;ya=c[7094521]|0;za=+g[s>>2];Aa=+g[d>>2];Ba=+g[t>>2]}g[l+8>>2]=xa;g[l+12>>2]=+g[D>>2];g[l+16>>2]=+g[E>>2];c[l+20>>2]=0;c[l+28>>2]=0;E=c[z-32+24>>2]|0;z=l+32|0;c[z>>2]=E;if(za*+g[ya+(E*20|0)>>2]+Aa*+g[ya+(E*20|0)+4>>2]+Ba*+g[ya+(E*20|0)+8>>2]>0.0){c[z>>2]=E^1}m$(a|0,m|0,36)|0;n=36;o=0;p=4064;q=0;i=h;return}else if((N|0)==41){c[A>>2]=c[B+(K*12|0)+4>>2];Tk[c[7092490]&255](3,56936,(Ca=i,i=i+1|0,i=i+7&-8,c[Ca>>2]=0,Ca)|0);i=Ca;m$(a|0,m|0,36)|0;n=36;o=0;p=4064;q=0;i=h;return}else if((N|0)==43){c[A>>2]=c[B+(K*12|0)+8>>2];Tk[c[7092490]&255](3,56936,(Ca=i,i=i+1|0,i=i+7&-8,c[Ca>>2]=0,Ca)|0);i=Ca;m$(a|0,m|0,36)|0;n=36;o=0;p=4064;q=0;i=h;return}else if((N|0)==53){Tk[c[7092490]&255](3,56936,(Ca=i,i=i+1|0,i=i+7&-8,c[Ca>>2]=0,Ca)|0);i=Ca;m$(a|0,m|0,36)|0;n=36;o=0;p=4064;q=0;i=h;return}else if((N|0)==55){Tk[c[7092490]&255](3,56936,(Ca=i,i=i+1|0,i=i+7&-8,c[Ca>>2]=0,Ca)|0);i=Ca;m$(a|0,m|0,36)|0;n=36;o=0;p=4064;q=0;i=h;return}}function aG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=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.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0,S=0.0,T=0;h=i;i=i+4064|0;j=h|0;c[d>>2]=0;if((c[7094478]|0)==0){k=0;l=4064;m=0;i=h;return k|0}n=j|0;g[j>>2]=+g[a>>2];g[j+4>>2]=+g[a+4>>2];g[j+8>>2]=+g[a+8>>2];g[j+12>>2]=+g[b>>2];g[j+16>>2]=+g[b+4>>2];g[j+20>>2]=+g[b+8>>2];c[j+24>>2]=0;c[j+28>>2]=1;b=c[7094537]|0;a=c[7094521]|0;o=j+4064|0;p=(e|0)==0;q=0;r=j+32|0;a:while(1){j=r-32|0;if(j>>>0>>0){k=q;s=24;break}else{t=r;u=j}b:while(1){j=t-32+28|0;v=u|0;w=t-32+4|0;x=t-32+8|0;y=t-32+12|0;z=t-32+16|0;A=t-32+20|0;B=t>>>0>>0;C=c[j>>2]|0;while(1){if((C|0)<0){break b}if((C|0)==0){D=u;break}E=+g[v>>2];F=+g[w>>2];G=+g[x>>2];H=+g[y>>2];I=+g[z>>2];J=+g[A>>2];K=c[b+(C*12|0)>>2]|0;L=+g[a+(K*20|0)>>2];M=+g[a+(K*20|0)+4>>2];N=+g[a+(K*20|0)+8>>2];O=+g[a+(K*20|0)+12>>2];P=E*L+F*M+G*N-O;Q=H*L+I*M+J*N-O;if(P>0.0&Q>0.0){R=c[b+(C*12|0)+4>>2]|0;c[j>>2]=R;if(B){C=R;continue}else{s=12;break a}}if(P>0.0|Q>0.0){s=16;break}R=c[b+(C*12|0)+8>>2]|0;c[j>>2]=R;if(B){C=R}else{s=15;break a}}if((s|0)==16){s=0;A=t-32+24|0;z=c[A>>2]|0;O=P/(P-Q);do{if(O<0.0){S=0.0}else{if(!(O>1.0)){S=O;break}S=1.0}}while(0);O=E+(H-E)*S;N=F+(I-F)*S;M=G+(J-G)*S;g[v>>2]=O;g[w>>2]=N;g[x>>2]=M;c[A>>2]=K;y=P<0.0|0;c[j>>2]=c[b+(C*12|0)+4+((y^1)<<2)>>2];if(!B){s=20;break a}g[t>>2]=E;g[t+4>>2]=F;g[t+8>>2]=G;g[t+12>>2]=O;g[t+16>>2]=N;g[t+20>>2]=M;c[t+24>>2]=z;c[t+28>>2]=c[b+(C*12|0)+4+(y<<2)>>2];y=t+32|0;if(y>>>0>>0){D=y}else{s=23;break a}}y=D-32|0;if(y>>>0>>0){k=q;s=24;break a}else{t=D;u=y}}c[d+(q<<2)>>2]=-C;if(!p){g[e+(q*12|0)>>2]=+g[v>>2];g[e+(q*12|0)+4>>2]=+g[w>>2];g[e+(q*12|0)+8>>2]=+g[x>>2]}y=q+1|0;if((y|0)<(f|0)){q=y;r=u}else{k=y;s=24;break}}if((s|0)==12){Tk[c[7092490]&255](3,50528,(T=i,i=i+1|0,i=i+7&-8,c[T>>2]=0,T)|0);i=T;k=q;l=4064;m=0;i=h;return k|0}else if((s|0)==15){Tk[c[7092490]&255](3,50528,(T=i,i=i+1|0,i=i+7&-8,c[T>>2]=0,T)|0);i=T;k=q;l=4064;m=0;i=h;return k|0}else if((s|0)==20){Tk[c[7092490]&255](3,50528,(T=i,i=i+1|0,i=i+7&-8,c[T>>2]=0,T)|0);i=T;k=q;l=4064;m=0;i=h;return k|0}else if((s|0)==23){Tk[c[7092490]&255](3,50528,(T=i,i=i+1|0,i=i+7&-8,c[T>>2]=0,T)|0);i=T;k=q;l=4064;m=0;i=h;return k|0}else if((s|0)==24){l=4064;m=0;i=h;return k|0}return 0}function bG(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0;if((c[7094478]|0)==0){e=0;return e|0}f=c[7094527]|0;h=c[f+(a*24|0)>>2]|0;i=c[7094521]|0;j=c[f+(a*24|0)+8>>2]|0;if((j|0)<=0){e=1;return e|0}k=c[f+(a*24|0)+12>>2]|0;a=c[7094525]|0;f=c[7094523]|0;l=c[7094519]|0;m=+g[b>>2];n=+g[b+4>>2];o=+g[b+8>>2];p=+g[i+(h*20|0)+8>>2];q=+g[i+(h*20|0)+4>>2];r=+g[i+(h*20|0)>>2];s=-0.0-d;h=0;while(1){i=c[a+(k+h<<2)>>2]|0;b=(i|0)>-1?i:-i|0;t=i>>>31;i=c[f+(b<<3)+(t<<2)>>2]|0;u=c[f+(b<<3)+((t^1)<<2)>>2]|0;d=+g[l+(i*12|0)>>2];v=+g[l+(u*12|0)>>2]-d;w=+g[l+(i*12|0)+4>>2];x=+g[l+(u*12|0)+4>>2]-w;y=+g[l+(i*12|0)+8>>2];z=+g[l+(u*12|0)+8>>2]-y;u=h+1|0;if((o-y)*(v*q-x*r)+((m-d)*(x*p-z*q)+(n-w)*(z*r-v*p))>2]|0;e=b+12|0;f=c[e>>2]|0;g=b+8|0;h=c[g>>2]|0;if((f|0)==0){c[(c[7094549]|0)+(c[b+4>>2]<<2)>>2]=h}else{c[f+8>>2]=h}h=c[g>>2]|0;if((h|0)!=0){c[h+12>>2]=c[e>>2]}h=c[7094548]|0;if((h|0)!=0){c[h+12>>2]=b}c[e>>2]=0;c[g>>2]=c[7094548];c[b+20>>2]=0;c[a>>2]=0;c[7094548]=b;c[4938826]=(c[4938826]|0)+1;if((d|0)==0){break}else{b=d}}return}function dG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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.0,F=0,G=0.0,H=0.0,I=0.0,J=0,K=0.0,L=0.0,M=0.0,N=0,O=0.0,P=0.0,Q=0.0,R=0,S=0,T=0,U=0;e=i;i=i+512|0;f=e|0;if((c[7094478]|0)==0){Tk[c[7092490]&255](3,45512,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=0;k=512;l=0;i=e;return j|0}m=f|0;c[f>>2]=1;n=a+4|0;o=b+4|0;p=a+8|0;q=b+8|0;r=f+508|0;s=f+4|0;f=0;t=m;a:while(1){u=s;v=t;b:while(1){w=v|0;x=c[w>>2]|0;c:do{if((x|0)<0){y=-x|0;z=c[(c[7094549]|0)+(y<<2)>>2]|0;if((z|0)==0){break b}else{A=z}while(1){if((c[A>>2]|0)==(d|0)){B=v;break c}A=c[A+8>>2]|0;if((A|0)==0){break b}}}else{if((x|0)==0){B=v;break}z=c[7094537]|0;C=c[z+(x*12|0)>>2]|0;D=c[7094521]|0;E=+g[D+(C*20|0)>>2];F=E<0.0;G=+g[a>>2];H=+g[b>>2];I=+g[D+(C*20|0)+4>>2];J=I<0.0;K=+g[n>>2];L=+g[o>>2];M=+g[D+(C*20|0)+8>>2];N=M<0.0;O=+g[p>>2];P=+g[q>>2];Q=+g[D+(C*20|0)+12>>2];C=E*(F?G:H)+I*(J?K:L)+M*(N?O:P)-Q>=0.0|0;D=E*(F?H:G)+I*(J?L:K)+M*(N?P:O)-Q<0.0?C|2:C;if((D&1|0)==0){R=v}else{c[w>>2]=c[z+(x*12|0)+4>>2];R=u}if(!(R>>>0>>0)){S=24;break a}if((D&2|0)==0){T=R}else{c[R>>2]=c[z+(x*12|0)+8>>2];T=R+4|0}if(T>>>0>>0){B=T}else{S=28;break a}}}while(0);x=B-4|0;if(x>>>0>>0){j=f;S=29;break a}else{u=B;v=x}}u=c[7094548]|0;if((u|0)==0){S=10;break}x=u+8|0;w=c[x>>2]|0;c[7094548]=w;if((w|0)!=0){c[w+12>>2]=0}c[4938826]=(c[4938826]|0)-1;c[u>>2]=d;c[u+4>>2]=y;c[u+20>>2]=0;c[u+16>>2]=f;if((f|0)!=0){c[f+20>>2]=u}c[u+12>>2]=0;c[x>>2]=c[(c[7094549]|0)+(y<<2)>>2];x=c[7094549]|0;w=c[x+(y<<2)>>2]|0;if((w|0)==0){U=x}else{c[w+12>>2]=u;U=c[7094549]|0}c[U+(y<<2)>>2]=u;w=v-4|0;if(w>>>0>>0){j=u;S=29;break}else{s=v;f=u;t=w}}if((S|0)==10){if((c[7092714]|0)==0){j=f;k=512;l=0;i=e;return j|0}Tk[c[7092490]&255](4,129504,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=f;k=512;l=0;i=e;return j|0}else if((S|0)==24){Tk[c[7092490]&255](3,184616,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=f;k=512;l=0;i=e;return j|0}else if((S|0)==28){Tk[c[7092490]&255](3,184616,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=f;k=512;l=0;i=e;return j|0}else if((S|0)==29){k=512;l=0;i=e;return j|0}return 0}function eG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;f=i;i=i+112|0;h=f|0;j=f+40|0;k=f+80|0;l=f+96|0;n$(h|0,0,28)|0;g[h+12>>2]=-15.0;g[h+16>>2]=-15.0;g[h+20>>2]=-24.0;g[h+24>>2]=-15.0;g[h+28>>2]=-15.0;g[h+32>>2]=-24.0;n$(j|0,0,28)|0;g[j+12>>2]=15.0;g[j+16>>2]=15.0;g[j+20>>2]=32.0;g[j+24>>2]=15.0;g[j+28>>2]=15.0;g[j+32>>2]=8.0;if((e|0)==4){m=2}else if((e|0)==2){m=1}else{Tk[c[7092490]&255](4,131248,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;m=2}n=+g[h+(m*12|0)>>2];o=+g[h+(m*12|0)+4>>2];p=+g[h+(m*12|0)+8>>2];q=+g[j+(m*12|0)+4>>2];r=+g[j+(m*12|0)+8>>2];h=k|0;g[h>>2]=+g[a>>2]- +g[j+(m*12|0)>>2];g[k+4>>2]=+g[a+4>>2]-q;g[k+8>>2]=+g[a+8>>2]-r;a=l|0;g[a>>2]=+g[b>>2]-n;g[l+4>>2]=+g[b+4>>2]-o;g[l+8>>2]=+g[b+8>>2]-p;b=dG(h,a,d)|0;i=f;return b|0}function fG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=dG(a,b,-1)|0;b=(f|0)==0;if(b){g=0;return g|0}else{h=f;i=0}do{c[d+(i<<2)>>2]=c[h+4>>2];i=i+1|0;if((i|0)>=(e|0)){break}h=c[h+16>>2]|0;}while((h|0)!=0);if(b){g=i;return g|0}else{j=f}while(1){f=j+16|0;b=c[f>>2]|0;h=j+12|0;e=c[h>>2]|0;d=j+8|0;a=c[d>>2]|0;if((e|0)==0){c[(c[7094549]|0)+(c[j+4>>2]<<2)>>2]=a}else{c[e+8>>2]=a}a=c[d>>2]|0;if((a|0)!=0){c[a+12>>2]=c[h>>2]}a=c[7094548]|0;if((a|0)!=0){c[a+12>>2]=j}c[h>>2]=0;c[d>>2]=c[7094548];c[j+20>>2]=0;c[f>>2]=0;c[7094548]=j;c[4938826]=(c[4938826]|0)+1;if((b|0)==0){g=i;break}else{j=b}}return g|0}function gG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;if((b|0)==0){e=0;i=d;return e|0}if((a|0)>0&(c[7094530]|0)>(a|0)){f=c[7094533]|0;c[b+12>>2]=c[f+(a*28|0)+12>>2];c[b>>2]=c[f+(a*28|0)>>2];c[b+4>>2]=c[f+(a*28|0)+4>>2];c[b+8>>2]=c[f+(a*28|0)+8>>2];f=c[7094531]|0;g[b+16>>2]=+g[f+(a*48|0)+12>>2];g[b+20>>2]=+g[f+(a*48|0)+16>>2];g[b+24>>2]=+g[f+(a*48|0)+20>>2];g[b+28>>2]=+g[f+(a*48|0)+24>>2];g[b+32>>2]=+g[f+(a*48|0)+28>>2];g[b+36>>2]=+g[f+(a*48|0)+32>>2];g[b+40>>2]=+g[f+(a*48|0)+36>>2];g[b+44>>2]=+g[f+(a*48|0)+40>>2];g[b+48>>2]=+g[f+(a*48|0)+44>>2];e=52;i=d;return e|0}else{Tk[c[7092490]&255](3,180800,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;e=0;i=d;return e|0}return 0}function hG(a){a=a|0;var b=0;if((c[7094478]|0)==0){b=0;return b|0}b=(c[7094521]|0)+(a*20|0)|0;return b|0}function iG(b){b=b|0;var d=0,e=0,f=0,j=0,k=0,l=0.0;d=i;YJ(146632,(e=i,i=i+8|0,c[e>>2]=b,e)|0);i=e;YJ(129376,(e=i,i=i+8|0,h[e>>3]=+g[b+64>>2],e)|0);i=e;YJ(118816,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;f=0;do{j=a[b+68+(f<<3)|0]|0;if((j|0)==1){k=c[b+68+(f<<3)+4>>2]|0;YJ(108176,(e=i,i=i+16|0,c[e>>2]=f,c[e+8>>2]=k,e)|0);i=e}else if((j|0)==2){l=+g[b+68+(f<<3)+4>>2];YJ(96504,(e=i,i=i+16|0,c[e>>2]=f,h[e+8>>3]=l,e)|0);i=e}else if((j|0)==3){j=c[b+68+(f<<3)+4>>2]|0;YJ(56888,(e=i,i=i+16|0,c[e>>2]=f,c[e+8>>2]=j,e)|0);i=e}f=f+1|0;}while((f|0)<80);YJ(50520,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=d;return}function jG(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;if(!(+RJ(45488)!=0.0)){i=d;return}if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130904,(e=i,i=i+8|0,c[e>>2]=b,e)|0);i=e;i=d;return}f=28370576+(b<<2)|0;g=c[f>>2]|0;if((g|0)==0){Tk[c[7092490]&255](4,173176,(e=i,i=i+8|0,c[e>>2]=b,e)|0);i=e;i=d;return}else{h=0}do{if((a[g+68+(h<<3)|0]|0)==3){bK(c[g+68+(h<<3)+4>>2]|0)}h=h+1|0;}while((h|0)<80);bK(c[f>>2]|0);c[f>>2]=0;i=d;return}function kG(b,d){b=b|0;d=d|0;var e=0,f=0,h=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;e=i;i=i+1064|0;f=e|0;h=f|0;XK(184600);j=RK(b)|0;if((j|0)==0){Tk[c[7092490]&255](3,180776,(k=i,i=i+8|0,c[k>>2]=b,k)|0);i=k;l=0;m=1060;n=0;i=e;return l|0}o=_J(716)|0;p=o;r$(o|0,b|0)|0;a:do{if((MK(j,f)|0)!=0){b=f+1032|0;b:do{if((d|0)<0){if((k$(h,176104)|0)!=0){q=72;break}if((OK(j,3,0,f)|0)==0){q=11;break}if((NK(j,172712)|0)==0){q=17}else{q=23}}else{c:while(1){if((k$(h,176104)|0)!=0){q=72;break b}if((OK(j,3,0,f)|0)==0){q=11;break b}if((NK(j,172712)|0)==0){q=17;break b}if((c[b>>2]|0)==(d|0)){q=23;break b}else{r=1}while(1){if((PK(j,f)|0)==0){break c}if((k$(h,172712)|0)==0){s=r+1|0}else{s=(((k$(h,169528)|0)==0)<<31>>31)+r|0}if((s|0)==0){break}else{r=s}}if((MK(j,f)|0)==0){break a}}SK(j);t=0;do{if((a[p+68+(t<<3)|0]|0)==3){bK(c[p+68+(t<<3)+4>>2]|0)}t=t+1|0;}while((t|0)<80);bK(o);l=0;m=1060;n=0;i=e;return l|0}}while(0);if((q|0)==11){SK(j);t=0;do{if((a[p+68+(t<<3)|0]|0)==3){bK(c[p+68+(t<<3)+4>>2]|0)}t=t+1|0;}while((t|0)<80);bK(o);l=0;m=1060;n=0;i=e;return l|0}else if((q|0)==17){SK(j);t=0;do{if((a[p+68+(t<<3)|0]|0)==3){bK(c[p+68+(t<<3)+4>>2]|0)}t=t+1|0;}while((t|0)<80);bK(o);l=0;m=1060;n=0;i=e;return l|0}else if((q|0)==23){g[o+64>>2]=+((c[b>>2]|0)>>>0>>>0);d:do{if((PK(j,f)|0)!=0){t=f+1024|0;u=f+1028|0;v=o+68|0;w=f+1036|0;e:while(1){if((k$(h,169528)|0)==0){q=82;break}if((c[t>>2]|0)!=3){q=28;break}if((c[u>>2]&4096|0)==0){q=28;break}x=c[b>>2]|0;if(x>>>0>80>>>0){q=34;break}y=v+(x<<3)|0;if((a[y]|0)!=0){q=40;break}if((PK(j,f)|0)==0){q=46;break}z=c[t>>2]|0;do{if((z|0)==1){gL(h);A=ZJ((o$(h|0)|0)+1|0)|0;c[v+(x<<3)+4>>2]=A;r$(A|0,h|0)|0;a[y]=3}else if((z|0)==3){if((c[u>>2]&2048|0)==0){c[v+(x<<3)+4>>2]=c[b>>2];a[y]=1;break}else{g[v+(x<<3)+4>>2]=+g[w>>2];a[y]=2;break}}else{q=57;break e}}while(0);if((PK(j,f)|0)==0){break d}}if((q|0)==28){fK(j,166112,(k=i,i=i+8|0,c[k>>2]=h,k)|0);i=k;SK(j);w=0;do{if((a[p+68+(w<<3)|0]|0)==3){bK(c[p+68+(w<<3)+4>>2]|0)}w=w+1|0;}while((w|0)<80);bK(o);l=0;m=1060;n=0;i=e;return l|0}else if((q|0)==34){fK(j,162928,(k=i,i=i+8|0,c[k>>2]=80,k)|0);i=k;SK(j);w=0;do{if((a[p+68+(w<<3)|0]|0)==3){bK(c[p+68+(w<<3)+4>>2]|0)}w=w+1|0;}while((w|0)<80);bK(o);l=0;m=1060;n=0;i=e;return l|0}else if((q|0)==40){fK(j,160176,(k=i,i=i+8|0,c[k>>2]=x,k)|0);i=k;SK(j);w=0;do{if((a[p+68+(w<<3)|0]|0)==3){bK(c[p+68+(w<<3)+4>>2]|0)}w=w+1|0;}while((w|0)<80);bK(o);l=0;m=1060;n=0;i=e;return l|0}else if((q|0)==46){SK(j);w=0;do{if((a[p+68+(w<<3)|0]|0)==3){bK(c[p+68+(w<<3)+4>>2]|0)}w=w+1|0;}while((w|0)<80);bK(o);l=0;m=1060;n=0;i=e;return l|0}else if((q|0)==57){fK(j,157544,(k=i,i=i+8|0,c[k>>2]=h,k)|0);i=k;SK(j);w=0;do{if((a[p+68+(w<<3)|0]|0)==3){bK(c[p+68+(w<<3)+4>>2]|0)}w=w+1|0;}while((w|0)<80);bK(o);l=0;m=1060;n=0;i=e;return l|0}else if((q|0)==82){SK(j);l=p;m=1060;n=0;i=e;return l|0}}}while(0);SK(j);l=p;m=1060;n=0;i=e;return l|0}else if((q|0)==72){fK(j,155056,(k=i,i=i+8|0,c[k>>2]=h,k)|0);i=k;SK(j);b=0;do{if((a[p+68+(b<<3)|0]|0)==3){bK(c[p+68+(b<<3)+4>>2]|0)}b=b+1|0;}while((b|0)<80);bK(o);l=0;m=1060;n=0;i=e;return l|0}}}while(0);SK(j);j=0;do{if((a[p+68+(j<<3)|0]|0)==3){bK(c[p+68+(j<<3)+4>>2]|0)}j=j+1|0;}while((j|0)<80);bK(o);l=0;m=1060;n=0;i=e;return l|0}function lG(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;f=1;while(1){j=28370576+(f<<2)|0;k=f+1|0;if((c[j>>2]|0)==0){break}if((k|0)<65){f=k}else{l=0;m=48;break}}if((m|0)==48){i=e;return l|0}if((f|0)>64){l=0;i=e;return l|0}m=(d|0)!=0;a:do{if(!m){b:do{if(b<0.0){d=1;while(1){k=c[28370576+(d<<2)>>2]|0;if((k|0)!=0){if((k$(k|0,a)|0)==0){n=d;break b}}d=d+1|0;if((d|0)>=65){break a}}}else{d=1;while(1){k=c[28370576+(d<<2)>>2]|0;do{if((k|0)!=0){if((k$(k|0,a)|0)!=0){break}if(+S(+(+g[k+64>>2]-b))<.01){n=d;break b}}}while(0);d=d+1|0;if((d|0)>=65){break a}}}}while(0);if((n|0)==0){break}Tk[c[7092490]&255](1,153136,(o=i,i=i+16|0,h[o>>3]=b,c[o+8>>2]=a,o)|0);i=o;l=n;i=e;return l|0}}while(0);n=~~(b+.5);d=kG(a,n)|0;if((d|0)!=0){c[j>>2]=d;Tk[c[7092490]&255](1,151104,(o=i,i=i+16|0,c[o>>2]=n,c[o+8>>2]=a,o)|0);i=o;l=f;i=e;return l|0}Tk[c[7092490]&255](2,148864,(o=i,i=i+16|0,c[o>>2]=n,c[o+8>>2]=a,o)|0);i=o;c:do{if(!m){d:do{if(b<0.0){d=1;while(1){k=c[28370576+(d<<2)>>2]|0;if((k|0)!=0){if((k$(k|0,146288)|0)==0){p=d;break d}}d=d+1|0;if((d|0)>=65){break c}}}else{d=1;while(1){k=c[28370576+(d<<2)>>2]|0;do{if((k|0)!=0){if((k$(k|0,146288)|0)!=0){break}if(+S(+(+g[k+64>>2]-b))<.01){p=d;break d}}}while(0);d=d+1|0;if((d|0)>=65){break c}}}}while(0);if((p|0)==0){break}Tk[c[7092490]&255](1,143896,(o=i,i=i+16|0,c[o>>2]=n,c[o+8>>2]=a,o)|0);i=o;l=p;i=e;return l|0}}while(0);p=kG(146288,n)|0;if((p|0)!=0){c[j>>2]=p;Tk[c[7092490]&255](1,141248,(o=i,i=i+16|0,c[o>>2]=n,c[o+8>>2]=a,o)|0);i=o;l=f;i=e;return l|0}e:do{if(!m){n=1;while(1){q=c[28370576+(n<<2)>>2]|0;if((q|0)!=0){if((k$(q|0,a)|0)==0){break}}p=n+1|0;if((p|0)<65){n=p}else{break e}}if((n|0)==0){break}Tk[c[7092490]&255](1,153136,(o=i,i=i+16|0,h[o>>3]=+g[q+64>>2],c[o+8>>2]=a,o)|0);i=o;l=n;i=e;return l|0}}while(0);q=kG(a,-1)|0;if((q|0)!=0){c[j>>2]=q;Tk[c[7092490]&255](1,138992,(o=i,i=i+16|0,h[o>>3]=+g[q+64>>2],c[o+8>>2]=a,o)|0);i=o;l=f;i=e;return l|0}f:do{if(!m){q=1;while(1){r=c[28370576+(q<<2)>>2]|0;if((r|0)!=0){if((k$(r|0,146288)|0)==0){break}}p=q+1|0;if((p|0)<65){q=p}else{break f}}if((q|0)==0){break}Tk[c[7092490]&255](1,137072,(o=i,i=i+16|0,h[o>>3]=+g[r+64>>2],c[o+8>>2]=a,o)|0);i=o;l=q;i=e;return l|0}}while(0);r=kG(146288,-1)|0;if((r|0)==0){Tk[c[7092490]&255](2,134184,(o=i,i=i+8|0,c[o>>2]=a,o)|0);i=o;l=0;i=e;return l|0}else{c[j>>2]=r;Tk[c[7092490]&255](1,135680,(o=i,i=i+16|0,h[o>>3]=+g[r+64>>2],c[o+8>>2]=a,o)|0);i=o;l=f;i=e;return l|0}return 0}function mG(b,d){b=b|0;d=+d;var e=0,f=0,h=0,i=0,j=0,k=0;e=lG(146288,d,0)|0;f=lG(b,d,~~+RJ(45488))|0;if((e|0)==0|(f|0)==0){return f|0}b=c[28370576+(f<<2)>>2]|0;h=c[28370576+(e<<2)>>2]|0;e=0;do{i=b+68+(e<<3)|0;do{if((a[i]|0)==0){j=a[h+68+(e<<3)|0]|0;if((j<<24>>24|0)==1){a[i]=1;c[b+68+(e<<3)+4>>2]=c[h+68+(e<<3)+4>>2];break}else if((j<<24>>24|0)==2){a[i]=2;g[b+68+(e<<3)+4>>2]=+g[h+68+(e<<3)+4>>2];break}else if((j<<24>>24|0)==3){a[i]=3;j=h+68+(e<<3)+4|0;k=ZJ((o$(c[j>>2]|0)|0)+1|0)|0;c[b+68+(e<<3)+4>>2]=k;r$(k|0,c[j>>2]|0)|0;break}else{break}}}while(0);e=e+1|0;}while((e|0)<80);return f|0}function nG(b,d,e){b=b|0;d=d|0;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;f=i;do{if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130904,(h=i,i=i+8|0,c[h>>2]=b,h)|0);i=h;j=0}else{k=c[28370576+(b<<2)>>2]|0;if((k|0)!=0){j=k;break}Tk[c[7092490]&255](4,173176,(h=i,i=i+8|0,c[h>>2]=b,h)|0);i=h;j=0}}while(0);if((d-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130904,(h=i,i=i+8|0,c[h>>2]=d,h)|0);i=h;l=0;i=f;return l|0}b=c[28370576+(d<<2)>>2]|0;if((b|0)==0){Tk[c[7092490]&255](4,173176,(h=i,i=i+8|0,c[h>>2]=d,h)|0);i=h;l=0;i=f;return l|0}if((j|0)==0){l=0;i=f;return l|0}else{m=1}while(1){n=28370576+(m<<2)|0;h=m+1|0;if((c[n>>2]|0)==0){break}if((h|0)<65){m=h}else{l=0;o=20;break}}if((o|0)==20){i=f;return l|0}if((m|0)>64){l=0;i=f;return l|0}o=_J(716)|0;g[o+64>>2]=e;r$(o|0,j|0)|0;c[n>>2]=o;p=+g[j+64>>2];q=(e-p)/(+g[b+64>>2]-p);n=o+68|0;o=0;while(1){h=a[j+68+(o<<3)|0]|0;do{if((h<<24>>24|0)==2){if((a[b+68+(o<<3)|0]|0)!=2){break}a[n+(o<<3)|0]=2;p=+g[j+68+(o<<3)+4>>2];g[n+(o<<3)+4>>2]=p+q*(+g[b+68+(o<<3)+4>>2]-p)}else if((h<<24>>24|0)==1){a[n+(o<<3)|0]=1;c[n+(o<<3)+4>>2]=c[j+68+(o<<3)+4>>2]}else if((h<<24>>24|0)==3){a[n+(o<<3)|0]=3;d=j+68+(o<<3)+4|0;k=ZJ((o$(c[d>>2]|0)|0)+1|0)|0;c[n+(o<<3)+4>>2]=k;r$(k|0,c[d>>2]|0)|0}}while(0);h=o+1|0;if((h|0)<80){o=h}else{l=m;break}}i=f;return l|0}function oG(a,b){a=a|0;b=+b;var d=0,e=0.0,f=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;do{if(b<1.0){e=1.0}else{if(b>5.0){e=5.0;break}f=b;if(b==1.0|b==4.0|b==5.0){e=b;break}a:do{if(b<0.0){j=1;do{k=c[28370576+(j<<2)>>2]|0;if((k|0)!=0){if((k$(k|0,a)|0)==0){l=j;m=13;break a}}j=j+1|0;}while((j|0)<65)}else{j=1;do{k=c[28370576+(j<<2)>>2]|0;do{if((k|0)!=0){if((k$(k|0,a)|0)!=0){break}if(+S(+(+g[k+64>>2]-b))<.01){l=j;m=13;break a}}}while(0);j=j+1|0;}while((j|0)<65)}}while(0);do{if((m|0)==13){if((l|0)==0){break}Tk[c[7092490]&255](1,153136,(j=i,i=i+16|0,h[j>>3]=f,c[j+8>>2]=a,j)|0);i=j;n=l;i=d;return n|0}}while(0);do{if(b<4.0){j=mG(a,1.0)|0;if((j|0)==0){n=0;i=d;return n|0}k=mG(a,4.0)|0;if((k|0)==0){n=j}else{o=k;p=j;break}i=d;return n|0}else{j=mG(a,4.0)|0;if((j|0)==0){n=0;i=d;return n|0}k=mG(a,5.0)|0;if((k|0)==0){n=j}else{o=k;p=j;break}i=d;return n|0}}while(0);j=nG(p,o,b)|0;if((j|0)==0){n=0;i=d;return n|0}iG(c[28370576+(j<<2)>>2]|0);n=j;i=d;return n|0}}while(0);n=mG(a,e)|0;i=d;return n|0}function pG(b,d){b=b|0;d=d|0;var e=0,f=0,h=0.0,j=0;e=i;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130904,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;h=0.0;i=e;return+h}j=c[28370576+(b<<2)>>2]|0;if((j|0)==0){Tk[c[7092490]&255](4,173176,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;h=0.0;i=e;return+h}if(d>>>0>79>>>0){Tk[c[7092490]&255](3,132696,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f;h=0.0;i=e;return+h}b=a[j+68+(d<<3)|0]|0;if((b<<24>>24|0)==0){Tk[c[7092490]&255](3,131720,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f;h=0.0;i=e;return+h}else if((b<<24>>24|0)==2){h=+g[j+68+(d<<3)+4>>2];i=e;return+h}else if((b<<24>>24|0)==1){h=+(c[j+68+(d<<3)+4>>2]|0);i=e;return+h}else{Tk[c[7092490]&255](3,130496,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f;h=0.0;i=e;return+h}return 0.0}function qG(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var j=0,k=0,l=0.0,m=0,n=0.0;j=i;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130904,(k=i,i=i+8|0,c[k>>2]=b,k)|0);i=k;l=0.0;i=j;return+l}m=c[28370576+(b<<2)>>2]|0;if((m|0)==0){Tk[c[7092490]&255](4,173176,(k=i,i=i+8|0,c[k>>2]=b,k)|0);i=k;l=0.0;i=j;return+l}if(e>f){Tk[c[7092490]&255](3,129144,(k=i,i=i+24|0,c[k>>2]=d,h[k+8>>3]=e,h[k+16>>3]=f,k)|0);i=k;l=0.0;i=j;return+l}do{if(d>>>0>79>>>0){Tk[c[7092490]&255](3,132696,(k=i,i=i+8|0,c[k>>2]=d,k)|0);i=k;n=0.0}else{b=a[m+68+(d<<3)|0]|0;if((b<<24>>24|0)==1){n=+(c[m+68+(d<<3)+4>>2]|0);break}else if((b<<24>>24|0)==2){n=+g[m+68+(d<<3)+4>>2];break}else if((b<<24>>24|0)==0){Tk[c[7092490]&255](3,131720,(k=i,i=i+8|0,c[k>>2]=d,k)|0);i=k;n=0.0;break}else{Tk[c[7092490]&255](3,130496,(k=i,i=i+8|0,c[k>>2]=d,k)|0);i=k;n=0.0;break}}}while(0);if(nf?f:n;i=j;return+l}function rG(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0;e=i;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130904,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;h=0;i=e;return h|0}j=c[28370576+(b<<2)>>2]|0;if((j|0)==0){Tk[c[7092490]&255](4,173176,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;h=0;i=e;return h|0}if(d>>>0>79>>>0){Tk[c[7092490]&255](3,132696,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f;h=0;i=e;return h|0}b=a[j+68+(d<<3)|0]|0;if((b<<24>>24|0)==2){h=~~+g[j+68+(d<<3)+4>>2];i=e;return h|0}else if((b<<24>>24|0)==0){Tk[c[7092490]&255](3,131720,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f;h=0;i=e;return h|0}else if((b<<24>>24|0)==1){h=c[j+68+(d<<3)+4>>2]|0;i=e;return h|0}else{Tk[c[7092490]&255](3,128128,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f;h=0;i=e;return h|0}return 0}function sG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0;h=i;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130904,(j=i,i=i+8|0,c[j>>2]=b,j)|0);i=j;k=0;i=h;return k|0}l=c[28370576+(b<<2)>>2]|0;if((l|0)==0){Tk[c[7092490]&255](4,173176,(j=i,i=i+8|0,c[j>>2]=b,j)|0);i=j;k=0;i=h;return k|0}if((e|0)>(f|0)){Tk[c[7092490]&255](3,126688,(j=i,i=i+24|0,c[j>>2]=d,c[j+8>>2]=e,c[j+16>>2]=f,j)|0);i=j;k=0;i=h;return k|0}do{if(d>>>0>79>>>0){Tk[c[7092490]&255](3,132696,(j=i,i=i+8|0,c[j>>2]=d,j)|0);i=j;m=0}else{b=a[l+68+(d<<3)|0]|0;if((b<<24>>24|0)==0){Tk[c[7092490]&255](3,131720,(j=i,i=i+8|0,c[j>>2]=d,j)|0);i=j;m=0;break}else if((b<<24>>24|0)==2){m=~~+g[l+68+(d<<3)+4>>2];break}else if((b<<24>>24|0)==1){m=c[l+68+(d<<3)+4>>2]|0;break}else{Tk[c[7092490]&255](3,128128,(j=i,i=i+8|0,c[j>>2]=d,j)|0);i=j;m=0;break}}}while(0);if((m|0)<(e|0)){k=e;i=h;return k|0}k=(m|0)>(f|0)?f:m;i=h;return k|0}function tG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130904,(h=i,i=i+8|0,c[h>>2]=b,h)|0);i=h;i=g;return}j=c[28370576+(b<<2)>>2]|0;if((j|0)==0){Tk[c[7092490]&255](4,173176,(h=i,i=i+8|0,c[h>>2]=b,h)|0);i=h;i=g;return}if(d>>>0>79>>>0){Tk[c[7092490]&255](3,132696,(h=i,i=i+8|0,c[h>>2]=d,h)|0);i=h;i=g;return}b=a[j+68+(d<<3)|0]|0;if((b<<24>>24|0)==0){Tk[c[7092490]&255](3,131720,(h=i,i=i+8|0,c[h>>2]=d,h)|0);i=h;i=g;return}else if((b<<24>>24|0)==3){b=f-1|0;q$(e|0,c[j+68+(d<<3)+4>>2]|0,b|0)|0;a[e+b|0]=0;i=g;return}else{Tk[c[7092490]&255](3,125440,(h=i,i=i+8|0,c[h>>2]=d,h)|0);i=h;i=g;return}}function uG(){var b=0,d=0,e=0,f=0;b=1;do{d=28370576+(b<<2)|0;e=c[d>>2]|0;if((e|0)!=0){f=0;do{if((a[e+68+(f<<3)|0]|0)==3){bK(c[e+68+(f<<3)+4>>2]|0)}f=f+1|0;}while((f|0)<80);bK(c[d>>2]|0);c[d>>2]=0}b=b+1|0;}while((b|0)<65);return}function vG(){var a=0,b=0,d=0,e=0,f=0;a=c[5425940]|0;if((a|0)!=0){bK(a)}a=~~+UJ(146552,129296);b=aK(a*276|0)|0;c[5425940]=b;c[b+268>>2]=0;b=c[5425940]|0;c[b+272>>2]=b+276;b=a-1|0;if((b|0)>1){d=1;while(1){e=c[5425940]|0;c[e+(d*276|0)+268>>2]=e+((d-1|0)*276|0);e=d+1|0;f=c[5425940]|0;c[f+(d*276|0)+272>>2]=f+(e*276|0);if((e|0)<(b|0)){d=e}else{break}}}d=c[5425940]|0;c[d+(b*276|0)+268>>2]=d+((a-2|0)*276|0);c[(c[5425940]|0)+(b*276|0)+272>>2]=0;c[5145158]=c[5425940];return}function wG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;i=d;return}f=c[28370312+(a<<2)>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,173008,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;i=d;return}e=f+300|0;a=c[e>>2]|0;while(1){if((a|0)==0){g=17;break}h=a+272|0;j=c[h>>2]|0;if((c[a>>2]|0)==(b|0)){break}else{a=j}}if((g|0)==17){i=d;return}g=a+268|0;b=c[g>>2]|0;if((j|0)==0){c[f+304>>2]=b}else{c[j+268>>2]=b}b=c[g>>2]|0;j=c[h>>2]|0;if((b|0)==0){c[e>>2]=j}else{c[b+272>>2]=j}j=c[5145158]|0;if((j|0)!=0){c[j+268>>2]=a}c[g>>2]=0;c[h>>2]=c[5145158];c[5145158]=a;a=f+308|0;c[a>>2]=(c[a>>2]|0)-1;i=d;return}function xG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0;e=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;i=e;return}h=c[28370312+(a<<2)>>2]|0;if((h|0)==0){Tk[c[7092490]&255](4,173008,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;i=e;return}a=c[5145158]|0;if((a|0)==0){Tk[c[7092490]&255](3,118656,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=e;return}f=a+272|0;j=c[f>>2]|0;c[5145158]=j;if((j|0)!=0){c[j+268>>2]=0}j=h+296|0;k=c[j>>2]|0;l=k>>>0>8191>>>0?1:k+1|0;c[j>>2]=l;c[a>>2]=l;g[a+4>>2]=+mE();c[a+8>>2]=b;q$(a+12|0,d|0,256)|0;c[f>>2]=0;f=h+304|0;d=c[f>>2]|0;if((d|0)==0){c[f>>2]=a;c[h+300>>2]=a;c[a+268>>2]=0}else{c[d+272>>2]=a;c[a+268>>2]=c[f>>2];c[f>>2]=a}a=h+308|0;c[a>>2]=(c[a>>2]|0)+1;i=e;return}function yG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0;i=d;return f|0}h=c[28370312+(a<<2)>>2]|0;if((h|0)==0){Tk[c[7092490]&255](4,173008,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0;i=d;return f|0}e=c[h+300>>2]|0;if((e|0)==0){f=0;i=d;return f|0}h=b|0;c[h>>2]=c[e>>2];g[b+4>>2]=+g[e+4>>2];c[b+8>>2]=c[e+8>>2];TB(b+12|0,e+12|0,256);f=c[h>>2]|0;i=d;return f|0}function zG(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;e=0;i=b;return e|0}f=c[28370312+(a<<2)>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,173008,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;e=0;i=b;return e|0}else{e=c[f+308>>2]|0;i=b;return e|0}return 0}function AG(b){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=a[b]|0;if(c<<24>>24==0){return}else{d=b;e=c}a:while(1){do{if(e<<24>>24==0){f=d}else{c=d;g=e;b:while(1){if((g-97&255)>>>0<26>>>0|(g-65&255)>>>0<26>>>0|(g-48&255)>>>0<10>>>0){h=c;i=g;break}switch(g<<24>>24){case 95:case 93:case 91:case 63:case 61:case 58:case 47:case 46:case 45:case 44:case 43:case 41:case 40:case 39:{h=c;i=g;break b;break};default:{}}j=c+1|0;k=a[j]|0;if(k<<24>>24==0){h=j;i=0;break}else{c=j;g=k}}if(!(h>>>0>d>>>0)){f=h;break}if(d>>>0<=b>>>0|i<<24>>24==0){l=d}else{a[d]=32;l=d+1|0}if(!(h>>>0>l>>>0)){f=h;break}s$(l|0,h|0,(o$(h|0)|0)+1|0)|0;f=h}}while(0);g=a[f]|0;if(g<<24>>24==0){m=15;break}else{n=f;o=g}while(1){if(!((o-97&255)>>>0<26>>>0|(o-65&255)>>>0<26>>>0|(o-48&255)>>>0<10>>>0)){switch(o<<24>>24){case 95:case 93:case 91:case 63:case 61:case 58:case 47:case 46:case 45:case 44:case 43:case 41:case 40:case 39:{break};case 0:{m=15;break a;break};default:{d=n;e=o;continue a}}}g=n+1|0;c=a[g]|0;if(c<<24>>24==0){m=15;break a}else{n=g;o=c}}}if((m|0)==15){return}}function BG(b,c,d){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;if((b|0)==0|(c|0)==0){e=-1;return e|0}f=o$(b|0)|0;g=f-(o$(c|0)|0)|0;if((g|0)<0){e=-1;return e|0}if((d|0)==0){d=b;f=0;a:while(1){if((a[c]|0)==0){e=f;h=16;break}else{i=0;j=c}while(1){k=Rg(a[d+i|0]|0)|0;if((k|0)!=(Rg(a[j]|0)|0)){break}k=i+1|0;l=c+k|0;if((a[l]|0)==0){e=f;h=16;break a}else{i=k;j=l}}if((a[j]|0)==0){e=f;h=16;break}if((f|0)>=(g|0)){e=-1;h=16;break}d=d+1|0;f=f+1|0}if((h|0)==16){return e|0}}else{f=a[c]|0;d=b;b=0;b:while(1){if(f<<24>>24==0){e=b;h=16;break}else{m=0;n=c;o=f}while(1){if(!((a[d+m|0]|0)==o<<24>>24)){break}j=m+1|0;i=c+j|0;l=a[i]|0;if(l<<24>>24==0){e=b;h=16;break b}else{m=j;n=i;o=l}}if((a[n]|0)==0){e=b;h=16;break}if((b|0)<(g|0)){d=d+1|0;b=b+1|0}else{e=-1;h=16;break}}if((h|0)==16){return e|0}}return 0}function CG(b,c,d){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,q=0,r=0,s=0,t=0;e=o$(b|0)|0;f=e-(o$(c|0)|0)|0;if((f|0)<0){g=0;return g|0}e=(d|0)==0;d=b;b=0;a:while(1){if((b|0)==0){h=d}else{i=d;b:while(1){switch(a[i]|0){case 0:{g=0;j=17;break a;break};case 32:case 33:case 44:case 46:{break b;break};default:{}}i=i+1|0}h=i+1|0}k=a[c]|0;c:do{if(k<<24>>24==0){l=0;j=15}else{d:do{if(e){m=0;n=c;while(1){o=Rg(a[h+m|0]|0)|0;if((o|0)!=(Rg(a[n]|0)|0)){break}o=m+1|0;p=c+o|0;if((a[p]|0)==0){l=o;j=15;break c}else{m=o;n=p}}q=m;r=a[n]|0}else{p=0;o=k;while(1){if(!((a[h+p|0]|0)==o<<24>>24)){q=p;r=o;break d}s=p+1|0;t=a[c+s|0]|0;if(t<<24>>24==0){l=s;j=15;break c}else{p=s;o=t}}}}while(0);if(r<<24>>24==0){l=q;j=15}}}while(0);if((j|0)==15){j=0;switch(a[h+l|0]|0){case 0:case 32:case 46:case 44:case 33:{g=h;j=17;break a;break};default:{}}}if((b|0)<(f|0)){d=h+1|0;b=b+1|0}else{g=0;j=17;break}}if((j|0)==17){return g|0}return 0}function DG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=CG(a,b,0)|0;if((d|0)==0){return}else{e=d}do{d=CG(a,c,0)|0;a:do{if((d|0)==0){f=6}else{g=d;while(1){if(!(g>>>0>e>>>0)){if(e>>>0<(g+(o$(c|0)|0)|0)>>>0){break a}}h=CG(g+1|0,c,0)|0;if((h|0)==0){f=6;break}else{g=h}}}}while(0);if((f|0)==6){f=0;d=e+(o$(c|0)|0)|0;g=e+(o$(b|0)|0)|0;s$(d|0,g|0,(o$(g|0)|0)+1|0)|0;m$(e|0,c|0,o$(c|0)|0)|0}e=CG(e+(o$(c|0)|0)|0,b,0)|0;}while((e|0)!=0);return}function EG(b){b=b|0;var d=0,e=0,f=0,h=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,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,_=0.0,$=0,aa=0;d=i;i=i+1192|0;e=d|0;f=d+128|0;h=f|0;j=f+1024|0;k=f+1032|0;l=f+1036|0;m=0;n=0;o=0;p=0;q=0;a:while(1){r=(m|0)==0;if(r|(n|0)==0){s=o}else{s=aK(n)|0}XK(45464);t=RK(b)|0;if((t|0)==0){u=6;break}else{v=q;w=p;x=0;y=0;z=s;A=0;B=0;C=n}b:while(1){D=A;E=B;while(1){while(1){if((MK(t,f)|0)==0){break b}F=c[j>>2]|0;if((F|0)==3){u=9;break}else if((F|0)==5){break}}if((u|0)==9){u=0;F=c[k>>2]|0;c[e+(E<<2)>>2]=F;if((E|0)>30){u=10;break a}if((NK(t,176096)|0)==0){u=13;break a}else{D=F|D;E=E+1|0;continue}}if((k$(h,172704)|0)!=0){break}F=E-1|0;if((E|0)<1){u=16;break a}D=D&~c[e+(F<<2)>>2];E=F}if((k$(h,166104)|0)!=0){u=44;break a}F=C+16|0;do{if(r|(z|0)==0){G=w;H=x;I=y;J=z}else{K=z;L=z+16|0;c[z>>2]=D;c[z+8>>2]=0;c[z+12>>2]=0;if((x|0)==0){G=K;H=K;I=K;J=L;break}c[x+12>>2]=K;G=K;H=K;I=y;J=L}}while(0);L=G+4|0;K=G+8|0;M=0;N=v;O=J;P=0;Q=F;while(1){if((NK(t,162920)|0)==0){u=25;break a}if((OK(t,1,0,f)|0)==0){u=25;break a}gL(h);if((a[h]|0)==0){u=27;break a}R=(o$(h|0)|0)+16&-4;S=R+Q|0;do{if(r|(O|0)==0){T=M;U=N;V=O}else{W=O;X=O+12|0;c[O>>2]=X;Y=O+R|0;r$(X|0,h|0)|0;if((M|0)==0){c[K>>2]=W;T=W;U=W;V=Y;break}else{c[M+8>>2]=W;T=W;U=W;V=Y;break}}}while(0);Z=P+1|0;if((NK(t,157536)|0)==0){u=35;break a}if((OK(t,3,0,f)|0)==0){u=35;break a}if((NK(t,155048)|0)==0){u=35;break a}if(!(r|(V|0)==0)){_=+g[l>>2];g[U+4>>2]=_;g[L>>2]=_+ +g[L>>2]}if((oK(t,153128)|0)!=0){break}if((NK(t,157536)|0)==0){u=40;break a}else{M=T;N=U;O=V;P=Z;Q=S}}if((Z|0)<2){u=43;break a}else{v=U;w=G;x=H;y=I;z=V;A=D;B=E;C=S}}SK(t);r=m+1|0;if((E|0)>0){u=46;break}if((r|0)<2){m=r;n=C;o=z;p=w;q=v}else{u=47;break}}if((u|0)==6){Tk[c[7092490]&255](3,184576,($=i,i=i+8|0,c[$>>2]=b,$)|0);i=$;aa=0}else if((u|0)==10){fK(t,180744,($=i,i=i+1|0,i=i+7&-8,c[$>>2]=0,$)|0);i=$;SK(t);aa=0}else if((u|0)==13){SK(t);aa=0}else if((u|0)==16){fK(t,169512,($=i,i=i+1|0,i=i+7&-8,c[$>>2]=0,$)|0);i=$;SK(t);aa=0}else if((u|0)==25){SK(t);aa=0}else if((u|0)==27){fK(t,160160,($=i,i=i+1|0,i=i+7&-8,c[$>>2]=0,$)|0);i=$;SK(t);aa=0}else if((u|0)==35){SK(t);aa=0}else if((u|0)==40){SK(t);aa=0}else if((u|0)==43){fK(t,151064,($=i,i=i+1|0,i=i+7&-8,c[$>>2]=0,$)|0);i=$;SK(t);aa=0}else if((u|0)==44){fK(t,148848,($=i,i=i+8|0,c[$>>2]=h,$)|0);i=$;SK(t);aa=0}else if((u|0)==46){fK(t,146272,($=i,i=i+1|0,i=i+7&-8,c[$>>2]=0,$)|0);i=$;aa=0}else if((u|0)==47){Tk[c[7092490]&255](1,143880,($=i,i=i+8|0,c[$>>2]=b,$)|0);i=$;aa=y}i=d;return aa|0}function FG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[422832]|0;if((d|0)==0){return}else{e=d}do{a:do{if((c[e>>2]&b|0)!=0){d=e+8|0;f=c[d>>2]|0;g=c[f+8>>2]|0;if((g|0)==0){break}else{h=g;i=f}while(1){DG(a,c[h>>2]|0,c[i>>2]|0);f=c[h+8>>2]|0;if((f|0)==0){break a}h=f;i=c[d>>2]|0}}}while(0);e=c[e+12>>2]|0;}while((e|0)!=0);return}function GG(b,d){b=b|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,q=0,r=0,s=0;e=b;f=a[b]|0;while(1){if(f<<24>>24==0){g=17;break}else{h=e;i=f}while(1){j=i<<24>>24==0;b=h+1|0;if(!(i<<24>>24<33&(j^1))){break}h=b;i=a[b]|0}if(j){g=17;break}b=c[422832]|0;a:do{if((b|0)==0){k=h}else{l=b;b:while(1){do{if((c[l>>2]&d|0)!=0){m=l+8|0;n=c[(c[m>>2]|0)+8>>2]|0;if((n|0)==0){break}else{o=n}do{p=o|0;n=CG(h,c[p>>2]|0,0)|0;if((n|0)!=0&(n|0)==(h|0)){q=c[c[m>>2]>>2]|0;n=CG(h,q,0)|0;if(!((n|0)!=0&(n|0)==(h|0))){break b}}o=c[o+8>>2]|0;}while((o|0)!=0)}}while(0);m=c[l+12>>2]|0;if((m|0)==0){k=h;break a}else{l=m}}l=h+(o$(q|0)|0)|0;m=h+(o$(c[p>>2]|0)|0)|0;s$(l|0,m|0,(o$(m|0)|0)+1|0)|0;m$(h|0,q|0,o$(q|0)|0)|0;k=h}}while(0);while(1){r=a[k]|0;s=r<<24>>24==0;if(!(r<<24>>24>32&(s^1))){break}k=k+1|0}if(s){g=17;break}else{e=k;f=r}}if((g|0)==17){return}}function HG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;i=i+1064|0;f=e|0;g=f|0;a[d]=0;h=f+1024|0;j=f+1028|0;k=f+1032|0;while(1){if((PK(b,f)|0)==0){l=0;m=17;break}n=c[h>>2]|0;if((n|0)==1){gL(g);o=o$(d|0)|0;if((o+1+(o$(g|0)|0)|0)>>>0>256>>>0){m=5;break}p$(d|0,g|0)|0}else if((n|0)==4){o=o$(d|0)|0;if((o+7|0)>>>0>256>>>0){m=12;break}fe(d+o|0,137064,(p=i,i=i+24|0,c[p>>2]=1,c[p+8>>2]=g,c[p+16>>2]=1,p)|0)|0;i=p}else if((n|0)==3){if((c[j>>2]&4096|0)==0){m=14;break}n=o$(d|0)|0;if((n+7|0)>>>0>256>>>0){m=9;break}o=c[k>>2]|0;fe(d+n|0,138976,(p=i,i=i+24|0,c[p>>2]=1,c[p+8>>2]=o,c[p+16>>2]=1,p)|0)|0;i=p}else{m=14;break}if((oK(b,134176)|0)!=0){l=1;m=17;break}if((NK(b,157536)|0)==0){l=0;m=17;break}}if((m|0)==5){fK(b,141224,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;l=0;q=1060;r=0;i=e;return l|0}else if((m|0)==9){fK(b,141224,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;l=0;q=1060;r=0;i=e;return l|0}else if((m|0)==12){fK(b,141224,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;l=0;q=1060;r=0;i=e;return l|0}else if((m|0)==14){fK(b,135648,(p=i,i=i+8|0,c[p>>2]=g,p)|0);i=p;l=0;q=1060;r=0;i=e;return l|0}else if((m|0)==17){q=1060;r=0;i=e;return l|0}return 0}function IG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;b=i;i=i+1320|0;d=b+256|0;e=b|0;f=d|0;g=d+1024|0;h=0;j=0;k=0;l=0;a:while(1){m=(k|0)==0;if(m|(h|0)==0){n=j}else{n=aK(h)|0}XK(45464);o=RK(a)|0;if((o|0)==0){p=6;break}if((MK(o,d)|0)==0){q=h;r=n;s=0;t=l}else{u=h;v=n;w=0;x=0;y=l;while(1){if((c[g>>2]|0)!=4){p=9;break a}z=(o$(f|0)|0)+20&-4;A=z+u|0;do{if(m|(v|0)==0){B=y;C=x;D=w;E=v}else{F=v;G=v+16|0;c[v>>2]=G;H=v+z|0;r$(G|0,f|0)|0;c[v+8>>2]=0;c[v+4>>2]=0;if((x|0)==0){B=F;C=F;D=F;E=H;break}c[x+12>>2]=F;B=F;C=F;D=w;E=H}}while(0);if((NK(o,128120)|0)==0){p=16;break a}if((NK(o,176096)|0)==0){p=16;break a}z=B+4|0;H=B+8|0;F=E;G=A;b:while(1){I=m|(F|0)==0;J=G;while(1){if((oK(o,172704)|0)!=0){break b}if((HG(o,e)|0)==0){p=19;break a}K=(o$(e|0)|0)+12&-4;L=K+J|0;if(I){J=L}else{break}}I=F+8|0;c[F>>2]=I;r$(I|0,e|0)|0;c[z>>2]=(c[z>>2]|0)+1;c[F+4>>2]=c[H>>2];c[H>>2]=F;F=F+K|0;G=L}if((MK(o,d)|0)==0){q=J;r=F;s=D;t=B;break}else{u=J;v=F;w=D;x=C;y=B}}}SK(o);y=k+1|0;if((y|0)<2){h=q;j=r;k=y;l=t}else{p=24;break}}if((p|0)==6){Tk[c[7092490]&255](3,184576,(M=i,i=i+8|0,c[M>>2]=a,M)|0);i=M;N=0;O=1060;P=0;Q=256;R=0;i=b;return N|0}else if((p|0)==9){fK(o,129120,(M=i,i=i+8|0,c[M>>2]=f,M)|0);i=M;SK(o);N=0;O=1060;P=0;Q=256;R=0;i=b;return N|0}else if((p|0)==16){SK(o);N=0;O=1060;P=0;Q=256;R=0;i=b;return N|0}else if((p|0)==19){SK(o);N=0;O=1060;P=0;Q=256;R=0;i=b;return N|0}else if((p|0)==24){Tk[c[7092490]&255](1,143880,(M=i,i=i+8|0,c[M>>2]=a,M)|0);i=M;N=s;O=1060;P=0;Q=256;R=0;i=b;return N|0}return 0}function JG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0;e=i;i=i+1064|0;f=e|0;g=f|0;h=f+1024|0;j=f+1028|0;k=f+1032|0;l=0;m=0;n=0;a:while(1){if((MK(b,f)|0)==0){o=m;p=46;break}q=c[h>>2]|0;do{if((q|0)==1){r=aK(16)|0;s=r;t=r+4|0;c[t>>2]=0;c[r>>2]=2;c[r+8>>2]=0;c[r+12>>2]=0;if((l|0)==0){u=s}else{c[l+12>>2]=s;u=m}r=0;v=0;while(1){if((c[t>>2]|0)!=0){if((OK(b,1,0,f)|0)==0){p=24;break a}}gL(g);w=aK((o$(g|0)|0)+9|0)|0;x=w;y=w+8|0;c[w>>2]=y;r$(y|0,g|0)|0;z=(a[g]|0)==0?1:v;c[w+4>>2]=0;if((r|0)==0){c[t>>2]=x}else{c[r+4>>2]=x}if((oK(b,125432)|0)==0){break}else{r=x;v=z}}A=s;B=u;C=(z|0)==0?0:n}else if((q|0)==3){if((c[j>>2]&4096|0)==0){p=34;break a}if((c[k>>2]|0)>>>0>7>>>0){p=6;break a}if((n|0)!=0){p=12;break a}v=aK(16)|0;r=v;c[v>>2]=1;c[v+8>>2]=c[k>>2];c[v+12>>2]=0;if((l|0)==0){A=r;B=r;C=1;break}c[l+12>>2]=r;A=r;B=m;C=1}else{p=34;break a}}while(0);if((oK(b,d)|0)!=0){o=B;p=46;break}if((NK(b,157536)|0)==0){p=41;break}else{l=A;m=B;n=C}}if((p|0)==6){fK(b,122840,(D=i,i=i+8|0,c[D>>2]=8,D)|0);i=D;SK(b);if((m|0)==0){o=0;E=1060;F=0;i=e;return o|0}else{G=m}while(1){C=c[G+12>>2]|0;do{if((c[G>>2]|0)==2){n=c[G+4>>2]|0;if((n|0)==0){break}else{H=n}while(1){n=c[H+4>>2]|0;bK(H);if((n|0)==0){break}else{H=n}}}}while(0);bK(G);if((C|0)==0){o=0;break}else{G=C}}E=1060;F=0;i=e;return o|0}else if((p|0)==12){fK(b,121920,(D=i,i=i+1|0,i=i+7&-8,c[D>>2]=0,D)|0);i=D;SK(b);if((m|0)==0){o=0;E=1060;F=0;i=e;return o|0}else{I=m}while(1){G=c[I+12>>2]|0;do{if((c[I>>2]|0)==2){H=c[I+4>>2]|0;if((H|0)==0){break}else{J=H}while(1){H=c[J+4>>2]|0;bK(J);if((H|0)==0){break}else{J=H}}}}while(0);bK(I);if((G|0)==0){o=0;break}else{I=G}}E=1060;F=0;i=e;return o|0}else if((p|0)==24){SK(b);if((u|0)==0){o=0;E=1060;F=0;i=e;return o|0}else{K=u}while(1){u=c[K+12>>2]|0;do{if((c[K>>2]|0)==2){I=c[K+4>>2]|0;if((I|0)==0){break}else{L=I}while(1){I=c[L+4>>2]|0;bK(L);if((I|0)==0){break}else{L=I}}}}while(0);bK(K);if((u|0)==0){o=0;break}else{K=u}}E=1060;F=0;i=e;return o|0}else if((p|0)==34){fK(b,121080,(D=i,i=i+8|0,c[D>>2]=g,D)|0);i=D;SK(b);if((m|0)==0){o=0;E=1060;F=0;i=e;return o|0}else{M=m}while(1){m=c[M+12>>2]|0;do{if((c[M>>2]|0)==2){D=c[M+4>>2]|0;if((D|0)==0){break}else{N=D}while(1){D=c[N+4>>2]|0;bK(N);if((D|0)==0){break}else{N=D}}}}while(0);bK(M);if((m|0)==0){o=0;break}else{M=m}}E=1060;F=0;i=e;return o|0}else if((p|0)==41){SK(b);if((B|0)==0){o=0;E=1060;F=0;i=e;return o|0}else{O=B}while(1){B=c[O+12>>2]|0;do{if((c[O>>2]|0)==2){b=c[O+4>>2]|0;if((b|0)==0){break}else{P=b}while(1){b=c[P+4>>2]|0;bK(P);if((b|0)==0){break}else{P=b}}}}while(0);bK(O);if((B|0)==0){o=0;break}else{O=B}}E=1060;F=0;i=e;return o|0}else if((p|0)==46){E=1060;F=0;i=e;return o|0}return 0}function KG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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;b=i;i=i+1064|0;d=b|0;e=d|0;XK(45464);f=RK(a)|0;if((f|0)==0){Tk[c[7092490]&255](3,184576,(g=i,i=i+8|0,c[g>>2]=a,g)|0);i=g;h=0;j=1060;k=0;i=b;return h|0}a:do{if((MK(f,d)|0)==0){l=0}else{m=d+1024|0;n=d+1028|0;o=d+1032|0;p=0;q=0;b:while(1){if((c[m>>2]|0)!=3){r=8;break}if((c[n>>2]&4096|0)==0){r=8;break}s=c[o>>2]|0;if((NK(f,176096)|0)==0){r=17;break}else{t=q;u=p}while(1){if((MK(f,d)|0)==0){break}if((k$(e,172704)|0)==0){break}QK(f);v=aK(20)|0;w=v;c[v>>2]=s;c[v+16>>2]=0;if((t|0)==0){x=w}else{c[t+16>>2]=w;x=u}y=JG(f,128120)|0;c[v+12>>2]=y;if((y|0)==0){r=30;break b}if((NK(f,162920)|0)==0){r=39;break b}if((OK(f,3,4096,d)|0)==0){r=39;break b}c[v+4>>2]=c[o>>2];if((NK(f,157536)|0)==0){r=49;break b}if((OK(f,3,4096,d)|0)==0){r=49;break b}c[v+8>>2]=c[o>>2];if((NK(f,155048)|0)==0){r=59;break b}if((NK(f,134176)|0)==0){r=59;break b}else{t=w;u=x}}if((MK(f,d)|0)==0){l=u;break a}else{p=u;q=t}}if((r|0)==8){fK(f,119944,(g=i,i=i+8|0,c[g>>2]=e,g)|0);i=g;if((p|0)!=0){q=p;while(1){o=c[q+16>>2]|0;n=c[q+12>>2]|0;if((n|0)!=0){m=n;while(1){n=c[m+12>>2]|0;do{if((c[m>>2]|0)==2){s=c[m+4>>2]|0;if((s|0)==0){break}else{z=s}while(1){s=c[z+4>>2]|0;bK(z);if((s|0)==0){break}else{z=s}}}}while(0);bK(m);if((n|0)==0){break}else{m=n}}}bK(q);if((o|0)==0){break}else{q=o}}}SK(f);h=0;j=1060;k=0;i=b;return h|0}else if((r|0)==17){if((p|0)!=0){q=p;while(1){m=c[q+16>>2]|0;s=c[q+12>>2]|0;if((s|0)!=0){w=s;while(1){s=c[w+12>>2]|0;do{if((c[w>>2]|0)==2){v=c[w+4>>2]|0;if((v|0)==0){break}else{A=v}while(1){v=c[A+4>>2]|0;bK(A);if((v|0)==0){break}else{A=v}}}}while(0);bK(w);if((s|0)==0){break}else{w=s}}}bK(q);if((m|0)==0){break}else{q=m}}}SK(f);h=0;j=1060;k=0;i=b;return h|0}else if((r|0)==30){if((x|0)==0){h=0;j=1060;k=0;i=b;return h|0}else{B=x}while(1){q=c[B+16>>2]|0;p=c[B+12>>2]|0;if((p|0)!=0){w=p;while(1){p=c[w+12>>2]|0;do{if((c[w>>2]|0)==2){o=c[w+4>>2]|0;if((o|0)==0){break}else{C=o}while(1){o=c[C+4>>2]|0;bK(C);if((o|0)==0){break}else{C=o}}}}while(0);bK(w);if((p|0)==0){break}else{w=p}}}bK(B);if((q|0)==0){h=0;break}else{B=q}}j=1060;k=0;i=b;return h|0}else if((r|0)==39){if((x|0)!=0){w=x;while(1){m=c[w+16>>2]|0;s=c[w+12>>2]|0;if((s|0)!=0){o=s;while(1){s=c[o+12>>2]|0;do{if((c[o>>2]|0)==2){n=c[o+4>>2]|0;if((n|0)==0){break}else{D=n}while(1){n=c[D+4>>2]|0;bK(D);if((n|0)==0){break}else{D=n}}}}while(0);bK(o);if((s|0)==0){break}else{o=s}}}bK(w);if((m|0)==0){break}else{w=m}}}SK(f);h=0;j=1060;k=0;i=b;return h|0}else if((r|0)==49){if((x|0)!=0){w=x;while(1){o=c[w+16>>2]|0;q=c[w+12>>2]|0;if((q|0)!=0){p=q;while(1){q=c[p+12>>2]|0;do{if((c[p>>2]|0)==2){n=c[p+4>>2]|0;if((n|0)==0){break}else{E=n}while(1){n=c[E+4>>2]|0;bK(E);if((n|0)==0){break}else{E=n}}}}while(0);bK(p);if((q|0)==0){break}else{p=q}}}bK(w);if((o|0)==0){break}else{w=o}}}SK(f);h=0;j=1060;k=0;i=b;return h|0}else if((r|0)==59){if((x|0)!=0){w=x;while(1){p=c[w+16>>2]|0;m=c[w+12>>2]|0;if((m|0)!=0){s=m;while(1){m=c[s+12>>2]|0;do{if((c[s>>2]|0)==2){n=c[s+4>>2]|0;if((n|0)==0){break}else{F=n}while(1){n=c[F+4>>2]|0;bK(F);if((n|0)==0){break}else{F=n}}}}while(0);bK(s);if((m|0)==0){break}else{s=m}}}bK(w);if((p|0)==0){break}else{w=p}}}SK(f);h=0;j=1060;k=0;i=b;return h|0}}}while(0);SK(f);Tk[c[7092490]&255](1,143880,(g=i,i=i+8|0,c[g>>2]=a,g)|0);i=g;h=l;j=1060;k=0;i=b;return h|0}function LG(b,d){b=b|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,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=d|0;do{if((b|0)==0){f=e}else{g=d;h=-1;i=e;j=b;a:while(1){k=c[j>>2]|0;if((k|0)==2){l=c[j+4>>2]|0;if((l|0)==0){m=0;n=19;break}o=(h|0)>-1;p=l;while(1){q=p|0;l=c[q>>2]|0;if((a[l]|0)==0){r=i;s=h;break}t=BG(i,l,0)|0;if((t|0)>-1){u=i+t|0;if(o){n=9;break}if((t|0)==0){r=u;s=h;break}}t=c[p+4>>2]|0;if((t|0)==0){m=0;n=19;break a}else{p=t}}if((n|0)==9){n=0;c[d+264+(h<<3)+4>>2]=u-g-(a[d+264+(h<<3)|0]|0);r=u;s=-1}if((r|0)==0){m=0;n=19;break}v=r+(o$(c[q>>2]|0)|0)|0;w=s}else if((k|0)==1){p=j+8|0;a[d+264+(c[p>>2]<<3)|0]=i-g;v=i;w=c[p>>2]|0}else{v=i;w=h}p=c[j+12>>2]|0;if((p|0)==0){n=16;break}else{h=w;i=v;j=p}}if((n|0)==16){if(!((w|0)>-1)){f=v;break}c[d+264+(w<<3)+4>>2]=o$(d+(a[d+264+(w<<3)|0]|0)|0)|0;m=1;return m|0}else if((n|0)==19){return m|0}}}while(0);m=(a[f]|0)==0|0;return m|0}function MG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=d|0;q$(f|0,b|0,256)|0;a:do{if((a[f]|0)!=0){do{b=d+((o$(f|0)|0)-1)|0;if((a[b]|0)!=10){break a}a[b]=0;}while((a[f]|0)!=0)}}while(0);f=c[4954630]|0;if((f|0)==0){g=0;return g|0}else{h=f}while(1){if((c[h>>2]&e|0)!=0){a[d+264|0]=-1;a[d+272|0]=-1;a[d+280|0]=-1;a[d+288|0]=-1;a[d+296|0]=-1;a[d+304|0]=-1;a[d+312|0]=-1;a[d+320|0]=-1;if((LG(c[h+12>>2]|0,d)|0)!=0){break}}f=c[h+16>>2]|0;if((f|0)==0){g=0;i=9;break}else{h=f}}if((i|0)==9){return g|0}c[d+256>>2]=c[h+4>>2];c[d+260>>2]=c[h+8>>2];g=1;return g|0}function NG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;if(d>>>0>7>>>0){Tk[c[7092490]&255](4,118528,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;a[e]=0;i=g;return}h=a[b+264+(d<<3)|0]|0;if(h<<24>>24>-1){j=c[b+264+(d<<3)+4>>2]|0;d=((j|0)<(f|0)?j+1|0:f)-1|0;q$(e|0,b+(h<<24>>24)|0,d|0)|0;a[e+d|0]=0;i=g;return}else{a[e]=0;i=g;return}}function OG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;e=i;i=i+256|0;f=e|0;g=f|0;h=a[b]|0;if(h<<24>>24==0){j=d;k=256;l=0;i=e;return j|0}else{m=b;n=d;o=h}a:while(1){h=(n|0)==0;d=m;p=o;b:while(1){q=d+1|0;c:do{if(p<<24>>24==1){r=a[q]|0;if((r|0)==114){s=d+2|0;t=a[s]|0;if((t&255)>>>0<2>>>0){u=s;v=0}else{w=s;s=0;x=t;while(1){t=w+1|0;a[f+s|0]=x;y=s+1|0;z=a[t]|0;if((z&255)>>>0<2>>>0){u=t;v=y;break}else{w=t;s=y;x=z}}}a[f+v|0]=0;A=(a[u]|0)==0?u:u+1|0;x=c[4917286]|0;d:do{if((x|0)!=0){s=x;while(1){if((k$(c[s>>2]|0,g)|0)==0){B=+((v$()|0)&32767|0)/32767.0;w=~~(B*+(c[s+4>>2]|0));z=c[s+8>>2]|0;y=(z|0)!=0;if((w|0)<1|y^1){C=z;D=y}else{y=w;w=z;while(1){z=c[w+4>>2]|0;t=(z|0)!=0;if((y|0)<2|t^1){C=z;D=t;break}else{y=y-1|0;w=z}}}if(D){break}}s=c[s+12>>2]|0;if((s|0)==0){break d}}if((c[C>>2]|0)!=0){E=A;break c}}}while(0);if(h){break b}else{F=n}while(1){if((k$(c[F>>2]|0,g)|0)==0){E=A;break c}F=c[F+4>>2]|0;if((F|0)==0){break b}}}else if((r|0)==118){x=d+2|0;while(1){s=a[x]|0;G=s<<24>>24==0;H=x+1|0;if(s<<24>>24!=1&(G^1)){x=H}else{break}}E=G?x:H;break}else{Tk[c[7092490]&255](4,114864,(I=i,i=i+8|0,c[I>>2]=b,I)|0);i=I;E=q;break}}else{E=q}}while(0);q=a[E]|0;if(q<<24>>24==0){j=n;J=23;break a}else{d=E;p=q}}YJ(116328,(I=i,i=i+16|0,c[I>>2]=g,c[I+8>>2]=g,I)|0);i=I;p=_J((o$(g|0)|0)+9|0)|0;d=p;h=p+8|0;c[p>>2]=h;r$(h|0,g|0)|0;c[p+4>>2]=n;p=a[A]|0;if(p<<24>>24==0){j=d;J=23;break}else{m=A;n=d;o=p}}if((J|0)==23){k=256;l=0;i=e;return j|0}return 0}function PG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;if((a|0)==0){return}else{b=a}while(1){a=c[b+16>>2]|0;d=c[b>>2]|0;if((d|0)!=0){e=d;while(1){d=c[e+12>>2]|0;f=c[e+8>>2]|0;if((f|0)!=0){g=f;while(1){f=c[g+12>>2]|0;do{if((c[g>>2]|0)==2){h=c[g+4>>2]|0;if((h|0)==0){break}else{i=h}while(1){h=c[i+4>>2]|0;bK(i);if((h|0)==0){break}else{i=h}}}}while(0);bK(g);if((f|0)==0){break}else{g=f}}}g=c[e+4>>2]|0;if((g|0)!=0){bK(g)}bK(e);if((d|0)==0){break}else{e=d}}}e=c[b+12>>2]|0;if((e|0)!=0){g=e;while(1){e=c[g+8>>2]|0;bK(g);if((e|0)==0){break}else{g=e}}}bK(b);if((a|0)==0){break}else{b=a}}return}function QG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;if((b|0)==0){e=0;f=0;g=38}else{h=1;j=0;k=0;l=b;while(1){m=l|0;n=c[m>>2]|0;do{if((n&3|0)==0){if((n&16|0)==0){o=(n&8|0)==0?k:1;p=j;q=0;r=n;break}s=c[l+8>>2]|0;if((s|0)==0){o=k;p=j;q=0;r=n;break}else{t=j;u=s}while(1){s=(c[u>>2]|0)==1?1:t;v=c[u+12>>2]|0;if((v|0)==0){o=k;p=s;q=0;r=n;break}else{t=s;u=v}}}else{if((n&9|0)!=9){o=k;p=j;q=h;r=n;break}v=l+4|0;s=b;do{a:do{if((s|0)!=(l|0)){if((c[s>>2]&18|0)!=16){break}w=c[s+8>>2]|0;if((w|0)!=0){x=w;do{w=c[x>>2]|0;do{if((w|0)==2){y=c[x+4>>2]|0;if((y|0)==0){break}else{z=y}do{if(!((BG(c[z>>2]|0,c[v>>2]|0,0)|0)==-1)){break a}z=c[z+4>>2]|0;}while((z|0)!=0)}else if((w|0)==1){break a}}while(0);x=c[x+12>>2]|0;}while((x|0)!=0)}gK(a,104320,(A=i,i=i+8|0,c[A>>2]=c[v>>2],A)|0);i=A}}while(0);s=c[s+12>>2]|0;}while((s|0)!=0);o=k;p=j;q=h;r=c[m>>2]|0}}while(0);if((r&10|0)==10){m=l+4|0;n=b;do{do{if((n|0)!=(l|0)){s=c[n>>2]|0;if((s&2|0)!=0){break}if((s&8|0)!=0){v=n+4|0;if((BG(c[v>>2]|0,c[m>>2]|0,0)|0)==-1){break}x=c[v>>2]|0;gK(a,103424,(A=i,i=i+16|0,c[A>>2]=c[m>>2],c[A+8>>2]=x,A)|0);i=A;break}if((s&16|0)==0){break}s=c[n+8>>2]|0;if((s|0)==0){break}else{B=s}do{do{if((c[B>>2]|0)==2){s=c[B+4>>2]|0;if((s|0)==0){break}else{C=s}do{s=C|0;if(!((BG(c[s>>2]|0,c[m>>2]|0,0)|0)==-1)){x=c[s>>2]|0;gK(a,102624,(A=i,i=i+16|0,c[A>>2]=c[m>>2],c[A+8>>2]=x,A)|0);i=A}C=c[C+4>>2]|0;}while((C|0)!=0)}}while(0);B=c[B+12>>2]|0;}while((B|0)!=0)}}while(0);n=c[n+12>>2]|0;}while((n|0)!=0)}n=c[l+12>>2]|0;if((n|0)==0){break}else{h=q;j=p;k=o;l=n}}if((q|0)==0){D=o;E=p}else{e=o;f=p;g=38}}if((g|0)==38){gK(a,101728,(A=i,i=i+1|0,i=i+7&-8,c[A>>2]=0,A)|0);i=A;D=e;E=f}if((E|0)==0|(D|0)==0){i=d;return}gK(a,100824,(A=i,i=i+1|0,i=i+7&-8,c[A>>2]=0,A)|0);i=A;i=d;return}function RG(b){b=b|0;var d=0,e=0,f=0,h=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,A=0,B=0,C=0,D=0,E=0;d=i;i=i+1576|0;e=d+256|0;f=d+512|0;h=d|0;j=e|0;k=f|0;XK(45464);l=RK(b)|0;a:do{if((l|0)==0){Tk[c[7092490]&255](3,184576,(m=i,i=i+8|0,c[m>>2]=b,m)|0);i=m;n=0}else{b:do{if((MK(l,f)|0)==0){o=0}else{p=f+1036|0;q=0;c:while(1){if((k$(k,166104)|0)!=0){r=7;break}s=aK(20)|0;t=s;u=s;c[u>>2]=0;c[s+16>>2]=q;do{v=aK(16)|0;w=v;c[w>>2]=0;x=v+4|0;c[x>>2]=0;y=v+8|0;c[y>>2]=0;c[v+12>>2]=c[u>>2];c[u>>2]=v;do{if((oK(l,112776)|0)==0){if((oK(l,111896)|0)==0){break}c[w>>2]=c[w>>2]|2}else{c[w>>2]=c[w>>2]|1}}while(0);do{if((oK(l,111112)|0)==0){if((oK(l,110384)|0)!=0){c[w>>2]=c[w>>2]|64;break}if((oK(l,109128)|0)!=0){c[w>>2]=c[w>>2]|128;break}if((oK(l,108056)|0)!=0){c[w>>2]=c[w>>2]|256;break}if((oK(l,162920)|0)!=0){c[w>>2]=c[w>>2]|16;v=JG(l,155048)|0;c[y>>2]=v;if((v|0)==0){r=23;break c}else{break}}v=(oK(l,86816)|0)==0;A=c[w>>2]|0;if(v){c[w>>2]=A|8;if((OK(l,1,0,f)|0)==0){r=35;break c}gL(k);v=aK((o$(k|0)|0)+1|0)|0;c[x>>2]=v;r$(v|0,k|0)|0;break}c[w>>2]=A|32;a[j]=0;do{if((OK(l,1,0,f)|0)==0){r=27;break c}gL(k);if((a[j]|0)!=0){A=e+(o$(j|0)|0)|0;z=92;a[A]=z;z=z>>8;a[A+1|0]=z}p$(j|0,k|0)|0;}while((oK(l,157536)|0)!=0);if((NK(l,62776)|0)==0){r=32;break c}A=aK((o$(j|0)|0)+1|0)|0;c[x>>2]=A;r$(A|0,j|0)|0}else{c[w>>2]=c[w>>2]|4}}while(0);oK(l,157536)|0;}while((oK(l,153128)|0)==0);QG(l,c[u>>2]|0);if((NK(l,128120)|0)==0){r=40;break}if((OK(l,3,0,f)|0)==0){r=40;break}g[s+4>>2]=+g[p>>2];if((NK(l,176096)|0)==0){r=42;break}w=s+8|0;c[w>>2]=0;if((oK(l,172704)|0)==0){x=s+12|0;do{if((HG(l,h)|0)==0){r=46;break c}y=aK((o$(h|0)|0)+13|0)|0;A=y+12|0;c[y>>2]=A;r$(A|0,h|0)|0;g[y+4>>2]=-40.0;c[y+8>>2]=c[x>>2];c[x>>2]=y;c[w>>2]=(c[w>>2]|0)+1;}while((oK(l,172704)|0)==0)}if((MK(l,f)|0)==0){o=t;break b}else{q=t}}if((r|0)==7){fK(l,99752,(m=i,i=i+8|0,c[m>>2]=k,m)|0);i=m;PG(q);SK(l);n=0;break a}else if((r|0)==23){PG(t);n=0;break a}else if((r|0)==27){PG(t);SK(l);n=0;break a}else if((r|0)==32){PG(t);SK(l);n=0;break a}else if((r|0)==35){PG(t);SK(l);n=0;break a}else if((r|0)==40){PG(t);SK(l);n=0;break a}else if((r|0)==42){PG(t);SK(l);n=0;break a}else if((r|0)==46){PG(t);SK(l);n=0;break a}}}while(0);SK(l);Tk[c[7092490]&255](1,143880,(m=i,i=i+8|0,c[m>>2]=b,m)|0);i=m;do{if((c[7092714]|0)==0){r=55}else{if((o|0)==0){break}else{B=0;C=o}while(1){p=c[C+12>>2]|0;if((p|0)==0){D=B}else{w=B;x=p;while(1){p=OG(c[x>>2]|0,w)|0;s=c[x+8>>2]|0;if((s|0)==0){D=p;break}else{w=p;x=s}}}x=c[C+16>>2]|0;if((x|0)==0){break}else{B=D;C=x}}if((D|0)==0){r=55;break}else{E=D}while(1){q=c[E+4>>2]|0;bK(E);if((q|0)==0){r=55;break}else{E=q}}}}while(0);if((r|0)==55){if((o|0)!=0){n=o;break}}Tk[c[7092490]&255](1,61896,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;n=0}}while(0);i=d;return n|0}function SG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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,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,_=0,$=0,aa=0,ba=0,ca=0;d=i;i=i+1320|0;e=d+256|0;f=d|0;h=e|0;j=0;k=0;l=0;m=0;n=0;o=0;a:while(1){p=(j|0)!=0;q=p^1;if((l|0)==0|q){r=m}else{r=_J(l)|0}XK(45464);s=RK(a)|0;if((s|0)==0){t=6;break}if(p){u=r;v=r+4|0}else{u=n;v=r}b:do{if((MK(s,e)|0)==0){w=k;x=4;y=v;z=o;t=46}else{p=u|0;A=k;B=4;C=v;D=o;while(1){while(1){if((k$(h,57720)|0)!=0){t=45;break a}if((OK(s,1,0,e)|0)==0){t=17;break a}gL(h);if((NK(s,176096)|0)==0){t=19;break a}if((VB(h,b)|0)==0){break}else{E=1}while(1){if((PK(s,e)|0)==0){t=40;break a}if((k$(h,176096)|0)==0){F=E+1|0}else{F=(((k$(h,172704)|0)==0)<<31>>31)+E|0}if((F|0)==0){break}else{E=F}}if((MK(s,e)|0)==0){w=A;x=B;y=C;z=D;t=46;break b}}if((PK(s,e)|0)==0){t=23;break a}else{G=B;H=C;I=D}while(1){if((k$(h,172704)|0)==0){break}if((k$(h,56792)|0)!=0){t=26;break a}if((OK(s,1,0,e)|0)==0){t=29;break a}if((NK(s,176096)|0)==0){t=29;break a}gL(h);if((H|0)==0|q){J=I;K=H}else{L=H;q$(H|0,h|0,32)|0;c[H+36>>2]=0;c[H+40>>2]=c[p>>2];c[p>>2]=L;J=L;K=H+44|0}L=G+44|0;if((oK(s,172704)|0)==0){M=J+36|0;N=J+32|0;O=L;P=K;while(1){if((HG(s,f)|0)==0){t=35;break a}Q=(o$(f|0)|0)+4&-4;if((P|0)==0|q){R=P}else{g[P+4>>2]=-40.0;c[P+8>>2]=c[M>>2];c[M>>2]=P;S=P+12|0;c[P>>2]=S;r$(S|0,f|0)|0;c[N>>2]=(c[N>>2]|0)+1;R=P+(Q+12)|0}S=O+12+Q|0;if((oK(s,172704)|0)==0){O=S;P=R}else{T=S;U=R;break}}}else{T=L;U=K}if((PK(s,e)|0)==0){t=23;break a}else{G=T;H=U;I=J}}if((MK(s,e)|0)==0){break}else{A=1;B=G;C=H;D=I}}SK(s);V=I;W=H;X=G;Y=1}}while(0);if((t|0)==46){t=0;SK(s);if((w|0)==0){t=47;break}else{V=z;W=y;X=x;Y=w}}q=j+1|0;if((q|0)<2){j=q;k=Y;l=X;m=W;n=u;o=V}else{t=48;break}}do{if((t|0)==6){Tk[c[7092490]&255](3,184576,(Z=i,i=i+8|0,c[Z>>2]=a,Z)|0);i=Z;_=0}else if((t|0)==17){SK(s);_=0}else if((t|0)==19){SK(s);_=0}else if((t|0)==23){SK(s);_=0}else if((t|0)==26){fK(s,56088,(Z=i,i=i+8|0,c[Z>>2]=h,Z)|0);i=Z;SK(s);_=0}else if((t|0)==29){SK(s);_=0}else if((t|0)==35){SK(s);_=0}else if((t|0)==40){SK(s);_=0}else if((t|0)==45){fK(s,55072,(Z=i,i=i+8|0,c[Z>>2]=h,Z)|0);i=Z;SK(s);_=0}else if((t|0)==47){Tk[c[7092490]&255](3,54368,(Z=i,i=i+16|0,c[Z>>2]=b,c[Z+8>>2]=a,Z)|0);i=Z;_=0}else if((t|0)==48){Tk[c[7092490]&255](1,53848,(Z=i,i=i+16|0,c[Z>>2]=b,c[Z+8>>2]=a,Z)|0);i=Z;if((c[7092714]|0)==0){_=u;break}V=c[u>>2]|0;if((V|0)==0){_=u;break}else{$=0;aa=V}while(1){V=c[aa+36>>2]|0;if((V|0)==0){ba=$}else{o=$;n=V;while(1){V=OG(c[n>>2]|0,o)|0;W=c[n+8>>2]|0;if((W|0)==0){ba=V;break}else{o=V;n=W}}}n=c[aa+40>>2]|0;if((n|0)==0){break}else{$=ba;aa=n}}if((ba|0)==0){_=u;break}else{ca=ba}while(1){n=c[ca+4>>2]|0;bK(ca);if((n|0)==0){_=u;break}else{ca=n}}}}while(0);i=d;return _|0}function TG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;g=8;i=e;return g|0}h=c[28370312+(a<<2)>>2]|0;if((h|0)==0){Tk[c[7092490]&255](4,173008,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;g=8;i=e;return g|0}a=h+312|0;j=c[a>>2]|0;if((j|0)!=0){bK(j)}c[a>>2]=0;do{if(+RJ(53392)!=0.0){k=0}else{a=0;j=-1;a:while(1){l=c[20462296+(a<<2)>>2]|0;do{if((l|0)==0){m=(j|0)==-1?a:j}else{if((k$(b,l+4|0)|0)!=0){m=j;break}if((k$(d,l+68|0)|0)==0){n=12;break a}else{m=j}}}while(0);o=a+1|0;if((o|0)<64){a=o;j=m}else{break}}if((n|0)==12){c[h+312>>2]=c[l>>2];g=0;i=e;return g|0}if(!((m|0)==-1)){k=m;break}Tk[c[7092490]&255](4,52920,(f=i,i=i+16|0,c[f>>2]=d,c[f+8>>2]=b,f)|0);i=f;g=8;i=e;return g|0}}while(0);m=SG(b,d)|0;l=h+312|0;c[l>>2]=m;if((m|0)==0){Tk[c[7092490]&255](4,52368,(f=i,i=i+16|0,c[f>>2]=d,c[f+8>>2]=b,f)|0);i=f;g=8;i=e;return g|0}if(+RJ(53392)!=0.0){g=0;i=e;return g|0}f=_J(132)|0;m=20462296+(k<<2)|0;c[m>>2]=f;c[f>>2]=c[l>>2];TB((c[m>>2]|0)+68|0,d,64);TB((c[m>>2]|0)+4|0,b,64);g=0;i=e;return g|0} + + + +function UG(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;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,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,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.0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0.0,ea=0.0,fa=0;k=i;i=i+256|0;l=k|0;m=l|0;n=l|0;o=a[d]|0;a:do{if(o<<24>>24==0){p=0;q=0}else{r=(j|0)==0;s=0;t=0;u=d;v=o;b:while(1){w=s;x=u;y=v;c:while(1){z=x;A=y;while(1){B=z+1|0;if(!(A<<24>>24==1)){C=42;break}D=a[B]|0;if((D|0)==114){break c}else if((D|0)==118){D=z+2|0;E=a[D]|0;if((E&255)>>>0<2>>>0){F=0;G=E<<24>>24==0?D:z+3|0}else{H=0;I=D;D=E;while(1){J=I+1|0;K=(H*10|0)-48+(D<<24>>24)|0;L=a[J]|0;if((L&255)>>>0<2>>>0){break}else{H=K;I=J;D=L}}if((K|0)>8){C=11;break b}else{F=K;G=L<<24>>24==0?J:I+2|0}}M=a[f+264+(F<<3)|0]|0;if(M<<24>>24>-1){C=13;break}else{N=G}}else{Tk[c[7092490]&255](4,48880,(O=i,i=i+8|0,c[O>>2]=d,O)|0);i=O;N=B}D=a[N]|0;if(D<<24>>24==0){p=w;q=t;break a}else{z=N;A=D}}if((C|0)==13){C=0;D=c[f+264+(F<<3)+4>>2]|0;if((D|0)>0){H=(D|0)>1?D:1;m$(m|0,f+(M<<24>>24)|0,H)|0;P=H}else{P=0}a[l+P|0]=0;do{if(r){H=c[422832]|0;if((H|0)==0){break}else{Q=H}do{do{if((c[Q>>2]&h|0)!=0){H=Q+8|0;D=c[H>>2]|0;E=c[D+8>>2]|0;if((E|0)==0){break}DG(n,c[E>>2]|0,c[D>>2]|0);D=c[E+8>>2]|0;if((D|0)==0){break}else{R=D}do{DG(n,c[R>>2]|0,c[c[H>>2]>>2]|0);R=c[R+8>>2]|0;}while((R|0)!=0)}}while(0);Q=c[Q+12>>2]|0;}while((Q|0)!=0)}else{GG(n,h)}}while(0);if(((o$(n|0)|0)+w|0)>>>0>255>>>0){C=24;break b}r$(b+w|0,n|0)|0;S=G;T=(o$(n|0)|0)+w|0}else if((C|0)==42){C=0;U=w+1|0;a[b+w|0]=A;if((w|0)>254){C=43;break b}else{S=B;T=U}}I=a[S]|0;if(I<<24>>24==0){p=T;q=t;break a}else{w=T;x=S;y=I}}y=z+2|0;x=a[y]|0;if((x&255)>>>0<2>>>0){V=0;W=y}else{I=0;H=y;y=x;while(1){x=H+1|0;a[l+I|0]=y;D=I+1|0;E=a[x]|0;if((E&255)>>>0<2>>>0){V=D;W=x;break}else{I=D;H=x;y=E}}}a[l+V|0]=0;y=(a[W]|0)==0?W:W+1|0;H=c[4917286]|0;if((H|0)==0){C=36;break}else{X=H}while(1){if((k$(c[X>>2]|0,n)|0)==0){Y=+((v$()|0)&32767|0)/32767.0;H=~~(Y*+(c[X+4>>2]|0));I=c[X+8>>2]|0;E=(I|0)!=0;if((H|0)<1|E^1){Z=I;_=E}else{E=H;H=I;while(1){I=c[H+4>>2]|0;x=(I|0)!=0;if((E|0)<2|x^1){Z=I;_=x;break}else{E=E-1|0;H=I}}}if(_){break}}H=c[X+12>>2]|0;if((H|0)==0){C=36;break b}else{X=H}}H=c[Z>>2]|0;if((H|0)==0){C=36;break}if(((o$(H|0)|0)+w|0)>>>0>255>>>0){C=38;break}r$(b+w|0,H|0)|0;E=(o$(H|0)|0)+w|0;H=a[y]|0;if(H<<24>>24==0){p=E;q=1;break a}else{s=E;t=1;u=y;v=H}}if((C|0)==11){Tk[c[7092490]&255](3,51824,(O=i,i=i+16|0,c[O>>2]=d,c[O+8>>2]=K,O)|0);i=O;$=0;aa=256;ba=0;i=k;return $|0}else if((C|0)==24){Tk[c[7092490]&255](3,51192,(O=i,i=i+8|0,c[O>>2]=d,O)|0);i=O;$=0;aa=256;ba=0;i=k;return $|0}else if((C|0)==36){Tk[c[7092490]&255](3,50344,(O=i,i=i+8|0,c[O>>2]=n,O)|0);i=O;$=0;aa=256;ba=0;i=k;return $|0}else if((C|0)==38){Tk[c[7092490]&255](3,49632,(O=i,i=i+8|0,c[O>>2]=d,O)|0);i=O;$=0;aa=256;ba=0;i=k;return $|0}else if((C|0)==43){Tk[c[7092490]&255](3,49632,(O=i,i=i+8|0,c[O>>2]=d,O)|0);i=O;p=U;q=t;break}}}while(0);a[b+p|0]=0;p=c[422832]|0;if((p|0)==0){$=q;aa=256;ba=0;i=k;return $|0}else{ca=p}while(1){d:do{if((c[ca>>2]&e|0)!=0){Y=+((v$()|0)&32767|0)/32767.0;da=Y*+g[ca+4>>2];if(!(da!=0.0)){break}p=c[ca+8>>2]|0;if((p|0)==0){break}else{ea=0.0;fa=p}while(1){Y=ea+ +g[fa+4>>2];if(da>2]|0;if((U|0)==0){break d}else{ea=Y;fa=U}}y=fa|0;w=p;do{if((w|0)!=(fa|0)){DG(b,c[w>>2]|0,c[y>>2]|0)}w=c[w+8>>2]|0;}while((w|0)!=0)}}while(0);t=c[ca+12>>2]|0;if((t|0)==0){$=q;break}else{ca=t}}aa=256;ba=0;i=k;return $|0}function VG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0;d=c[c[a+312>>2]>>2]|0;if((d|0)==0){e=0;return e|0}else{f=d}while(1){if((VB(f|0,b)|0)==0){break}d=c[f+40>>2]|0;if((d|0)==0){e=0;h=17;break}else{f=d}}if((h|0)==17){return e|0}b=f+36|0;f=c[b>>2]|0;if((f|0)==0){e=0;return e|0}else{i=0;j=f}do{k=+g[j+4>>2];i=(k<=+mE())+i|0;j=c[j+8>>2]|0;}while((j|0)!=0);if((i|0)<1){j=c[b>>2]|0;if((j|0)==0){e=0;return e|0}else{l=0.0;m=0;n=j}while(1){k=+g[n+4>>2];j=l==0.0|k>2]|0;if((f|0)==0){break}else{l=j?k:l;m=o;n=f}}if((o|0)==0){e=0;return e|0}e=c[o>>2]|0;return e|0}o=v$()|0;n=c[b>>2]|0;if((n|0)==0){e=0;return e|0}b=~~(+(i|0)*(+(o&32767|0)/32767.0));o=n;while(1){p=o+4|0;l=+g[p>>2];if(l>+mE()){q=b}else{if((b|0)<1){break}else{q=b-1|0}}n=c[o+8>>2]|0;if((n|0)==0){e=0;h=17;break}else{b=q;o=n}}if((h|0)==17){return e|0}g[p>>2]=+mE()+20.0;e=c[o>>2]|0;return e|0}function WG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0;i=d;return f|0}g=c[28370312+(a<<2)>>2]|0;if((g|0)==0){Tk[c[7092490]&255](4,173008,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0;i=d;return f|0}a=c[c[g+312>>2]>>2]|0;if((a|0)==0){f=0;i=d;return f|0}else{h=a}while(1){if((VB(h|0,b)|0)==0){break}a=c[h+40>>2]|0;if((a|0)==0){f=0;j=12;break}else{h=a}}if((j|0)==12){i=d;return f|0}if(+RJ(47552)!=0.0){j=h+32|0;a=c[j>>2]|0;Tk[c[7092490]&255](1,47160,(e=i,i=i+16|0,c[e>>2]=b,c[e+8>>2]=a,e)|0);i=e;Tk[c[7092490]&255](1,46816,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;k=j}else{k=h+32|0}f=c[k>>2]|0;i=d;return f|0}function XG(b,d,e,f,g,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var 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;o=i;i=i+584|0;p=o+256|0;q=p|0;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(r=i,i=i+8|0,c[r>>2]=b,r)|0);i=r;s=328;t=0;i=o;return}u=c[28370312+(b<<2)>>2]|0;if((u|0)==0){Tk[c[7092490]&255](4,173008,(r=i,i=i+8|0,c[r>>2]=b,r)|0);i=r;s=328;t=0;i=o;return}if((c[u+312>>2]|0)==0){s=328;t=0;i=o;return}b=VG(u,d)|0;if((b|0)==0){s=328;t=0;i=o;return}n$(q|0,0,328)|0;if((f|0)==0){v=0}else{p$(q|0,f|0)|0;a[p+264|0]=0;c[p+268>>2]=o$(f|0)|0;v=o$(f|0)|0}if((g|0)==0){w=v}else{p$(q|0,g|0)|0;a[p+272|0]=v;c[p+276>>2]=o$(g|0)|0;w=(o$(g|0)|0)+v|0}if((h|0)==0){x=w}else{p$(q|0,h|0)|0;a[p+280|0]=w;c[p+284>>2]=o$(h|0)|0;x=(o$(h|0)|0)+w|0}if((j|0)==0){y=x}else{p$(q|0,j|0)|0;a[p+288|0]=x;c[p+292>>2]=o$(j|0)|0;y=(o$(j|0)|0)+x|0}if((k|0)==0){z=y}else{p$(q|0,k|0)|0;a[p+296|0]=y;c[p+300>>2]=o$(k|0)|0;z=(o$(k|0)|0)+y|0}if((l|0)==0){A=z}else{p$(q|0,l|0)|0;a[p+304|0]=z;c[p+308>>2]=o$(l|0)|0;A=(o$(l|0)|0)+z|0}z=A&255;if((m|0)==0){B=z}else{p$(q|0,m|0)|0;a[p+312|0]=z;c[p+316>>2]=o$(m|0)|0;B=(o$(m|0)|0)+A&255}if((n|0)!=0){p$(q|0,n|0)|0;a[p+320|0]=B;c[p+324>>2]=o$(n|0)|0}n=o|0;r$(n|0,b|0)|0;b=u+40|0;u=0;while(1){if((UG(b,n,e,p,0,0)|0)==0){C=26;break}r$(n|0,b|0)|0;B=u+1|0;if((B|0)<10){u=B}else{break}}do{if((C|0)==26){if((u|0)>9){break}s=328;t=0;i=o;return}}while(0);Tk[c[7092490]&255](2,48400,(r=i,i=i+1|0,i=i+7&-8,c[r>>2]=0,r)|0);i=r;Tk[c[7092490]&255](2,47904,(r=i,i=i+8|0,c[r>>2]=b,r)|0);i=r;s=328;t=0;i=o;return}function YG(b,d,e,f,h,j,k,l,m,n,o,p){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var 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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0.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;q=i;i=i+912|0;r=q|0;s=q+256|0;t=q+584|0;u=s|0;v=t|0;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(w=i,i=i+8|0,c[w>>2]=b,w)|0);i=w;x=0;y=328;z=0;A=328;B=0;i=q;return x|0}C=c[28370312+(b<<2)>>2]|0;if((C|0)==0){Tk[c[7092490]&255](4,173008,(w=i,i=i+8|0,c[w>>2]=b,w)|0);i=w;x=0;y=328;z=0;A=328;B=0;i=q;return x|0}n$(u|0,0,328)|0;r$(u|0,d|0)|0;b=c[4886384]|0;if((b|0)==0){x=0;y=328;z=0;A=328;B=0;i=q;return x|0}D=C|0;E=C+8|0;F=0;G=0;H=-1;I=b;while(1){b=c[I>>2]|0;a:do{if((b|0)==0){J=H;K=G;L=F}else{M=0;N=b;while(1){O=N|0;P=c[O>>2]|0;do{if((P&4|0)==0){if((P&32|0)!=0){Q=(BG(c[N+4>>2]|0,E,0)|0)!=-1|0;break}if((P&64|0)!=0){Q=(c[D>>2]|0)==1|0;break}if((P&128|0)!=0){Q=(c[D>>2]|0)==2|0;break}if((P&256|0)!=0){Q=(c[D>>2]|0)==0|0;break}if((P&16|0)!=0){Q=LG(c[N+8>>2]|0,s)|0;break}if((P&8|0)==0){Q=0;break}Q=(CG(d,c[N+4>>2]|0,0)|0)!=0|0}else{Q=(BG(d,E,0)|0)!=-1|0}}while(0);P=c[O>>2]|0;do{if((P&1|0)==0){R=(Q|0)!=0;if((P&2|0)==0){S=R?1:M;break}else{if(R){J=H;K=G;L=F;break a}else{S=M;break}}}else{if((Q|0)==0){J=H;K=G;L=F;break a}else{S=M}}}while(0);P=c[N+12>>2]|0;if((P|0)==0){break}else{M=S;N=P}}if((S|0)==0){J=H;K=G;L=F;break}N=I+4|0;if(!(+g[N>>2]>+(H|0))){J=H;K=G;L=F;break}M=I+12|0;P=c[M>>2]|0;if((P|0)==0){T=0.0}else{O=0;R=P;do{U=+g[R+4>>2];O=(U<=+mE())+O|0;R=c[R+8>>2]|0;}while((R|0)!=0);T=+(O|0)}R=~~(T*(+((v$()|0)&32767|0)/32767.0));P=c[M>>2]|0;V=(P|0)!=0;if((R|0)<1|V^1){W=P;X=V}else{V=R;R=P;while(1){+mE();P=c[R+8>>2]|0;Y=(P|0)!=0;if((V|0)<2|Y^1){W=P;X=Y;break}else{V=V-1|0;R=P}}}if(!X){J=H;K=G;L=F;break}m$(v|0,u|0,328)|0;J=~~+g[N>>2];K=W;L=I}}while(0);b=c[I+16>>2]|0;if((b|0)==0){break}else{F=L;G=K;H=J;I=b}}if((K|0)==0){x=0;y=328;z=0;A=328;B=0;i=q;return x|0}I=o$(v|0)|0;if((h|0)==0){Z=I}else{p$(v|0,h|0)|0;a[t+264|0]=I;c[t+268>>2]=o$(h|0)|0;Z=(o$(h|0)|0)+I|0}if((j|0)==0){_=Z}else{p$(v|0,j|0)|0;a[t+272|0]=Z;c[t+276>>2]=o$(j|0)|0;_=(o$(j|0)|0)+Z|0}if((k|0)==0){$=_}else{p$(v|0,k|0)|0;a[t+280|0]=_;c[t+284>>2]=o$(k|0)|0;$=(o$(k|0)|0)+_|0}if((l|0)==0){aa=$}else{p$(v|0,l|0)|0;a[t+288|0]=$;c[t+292>>2]=o$(l|0)|0;aa=(o$(l|0)|0)+$|0}if((m|0)==0){ba=aa}else{p$(v|0,m|0)|0;a[t+296|0]=aa;c[t+300>>2]=o$(m|0)|0;ba=(o$(m|0)|0)+aa|0}if((n|0)==0){ca=ba}else{p$(v|0,n|0)|0;a[t+304|0]=ba;c[t+308>>2]=o$(n|0)|0;ca=(o$(n|0)|0)+ba|0}ba=ca&255;if((o|0)==0){da=ba}else{p$(v|0,o|0)|0;a[t+312|0]=ba;c[t+316>>2]=o$(o|0)|0;da=(o$(o|0)|0)+ca&255}if((p|0)!=0){p$(v|0,p|0)|0;a[t+320|0]=da;c[t+324>>2]=o$(p|0)|0}if(!(+RJ(46512)!=0.0)){g[K+4>>2]=+mE()+20.0;p=r|0;r$(p|0,c[K>>2]|0)|0;K=C+40|0;da=0;while(1){if((UG(K,p,e,t,f,1)|0)==0){ea=70;break}r$(p|0,K|0)|0;v=da+1|0;if((v|0)<10){da=v}else{break}}do{if((ea|0)==70){if((da|0)>9){break}else{x=1}y=328;z=0;A=328;B=0;i=q;return x|0}}while(0);Tk[c[7092490]&255](2,48400,(w=i,i=i+1|0,i=i+7&-8,c[w>>2]=0,w)|0);i=w;Tk[c[7092490]&255](2,47904,(w=i,i=i+8|0,c[w>>2]=K,w)|0);i=w;x=1;y=328;z=0;A=328;B=0;i=q;return x|0}K=c[L+12>>2]|0;if((K|0)==0){x=1;y=328;z=0;A=328;B=0;i=q;return x|0}L=r|0;r=C+40|0;da=K;while(1){r$(L|0,c[da>>2]|0)|0;K=0;while(1){if((UG(r,L,e,t,f,1)|0)==0){ea=61;break}r$(L|0,r|0)|0;p=K+1|0;if((p|0)<10){K=p}else{ea=62;break}}if((ea|0)==61){ea=0;if((K|0)>9){ea=62}else{fa=0}}if((ea|0)==62){ea=0;Tk[c[7092490]&255](2,48400,(w=i,i=i+1|0,i=i+7&-8,c[w>>2]=0,w)|0);i=w;Tk[c[7092490]&255](2,47904,(w=i,i=i+8|0,c[w>>2]=r,w)|0);i=w;fa=0}while(1){p=C+40+fa|0;v=a[p]|0;if((v<<24>>24|0)==0){break}else if((v<<24>>24|0)==126){v=fa+1|0;ca=C+40+v|0;s$(p|0,ca|0,(o$(ca|0)|0)+1|0)|0;fa=v;continue}else{fa=fa+1|0;continue}}Tk[c[7092490]&255](1,47904,(w=i,i=i+8|0,c[w>>2]=r,w)|0);i=w;K=c[da+8>>2]|0;if((K|0)==0){x=1;break}else{da=K}}y=328;z=0;A=328;B=0;i=q;return x|0}function ZG(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;e=0;i=b;return e|0}f=c[28370312+(a<<2)>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,173008,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;e=0;i=b;return e|0}else{e=o$(f+40|0)|0;i=b;return e|0}return 0}function _G(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(g=i,i=i+8|0,c[g>>2]=b,g)|0);i=g;i=f;return}h=c[28370312+(b<<2)>>2]|0;if((h|0)==0){Tk[c[7092490]&255](4,173008,(g=i,i=i+8|0,c[g>>2]=b,g)|0);i=g;i=f;return}b=h+40|0;j=a[b]|0;if(j<<24>>24==0){i=f;return}else{k=0;l=j}while(1){if((l<<24>>24|0)==126){j=k+1|0;m=h+40+j|0;s$(h+40+k|0,m|0,(o$(m|0)|0)+1|0)|0;n=j}else if((l<<24>>24|0)==0){break}else{n=k+1|0}k=n;l=a[h+40+n|0]|0}do{if(+RJ(47552)!=0.0){Tk[c[7092490]&255](1,47904,(g=i,i=i+8|0,c[g>>2]=b,g)|0);i=g}else{if((e|0)==1){n=c[h+4>>2]|0;l=pC(46056,(g=i,i=i+8|0,c[g>>2]=b,g)|0)|0;i=g;gJ(n,l);break}else if((e|0)==2){l=c[h+4>>2]|0;n=pC(45448,(g=i,i=i+16|0,c[g>>2]=d,c[g+8>>2]=b,g)|0)|0;i=g;gJ(l,n);break}else{n=c[h+4>>2]|0;l=pC(45016,(g=i,i=i+8|0,c[g>>2]=b,g)|0)|0;i=g;gJ(n,l);break}}}while(0);a[b]=0;i=f;return}function $G(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(g=i,i=i+8|0,c[g>>2]=b,g)|0);i=g;i=f;return}h=c[28370312+(b<<2)>>2]|0;if((h|0)==0){Tk[c[7092490]&255](4,173008,(g=i,i=i+8|0,c[g>>2]=b,g)|0);i=g;i=f;return}else{j=0}while(1){g=h+40+j|0;b=a[g]|0;if((b<<24>>24|0)==0){break}else if((b<<24>>24|0)==126){b=j+1|0;k=h+40+b|0;s$(g|0,k|0,(o$(k|0)|0)+1|0)|0;j=b;continue}else{j=j+1|0;continue}}j=h+40|0;h=e-1|0;q$(d|0,j|0,h|0)|0;a[d+h|0]=0;a[j]=0;i=f;return}function aH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;i=d;return}f=c[28370312+(a<<2)>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,173008,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;i=d;return}if((b|0)==2){c[f>>2]=2;i=d;return}else if((b|0)==1){c[f>>2]=1;i=d;return}else{c[f>>2]=0;i=d;return}}function bH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(g=i,i=i+8|0,c[g>>2]=b,g)|0);i=g;i=f;return}h=c[28370312+(b<<2)>>2]|0;if((h|0)==0){Tk[c[7092490]&255](4,173008,(g=i,i=i+8|0,c[g>>2]=b,g)|0);i=g;i=f;return}else{c[h+4>>2]=e;e=h+8|0;n$(e|0,0,32)|0;q$(e|0,d|0,32)|0;a[h+39|0]=0;i=f;return}}function cH(){var a=0,b=0,d=0,e=0,f=0;a=1;while(1){b=28370312+(a<<2)|0;d=a+1|0;if((c[b>>2]|0)==0){break}if((d|0)<65){a=d}else{e=0;f=5;break}}if((f|0)==5){return e|0}c[b>>2]=_J(316)|0;e=a;return e|0}function dH(a){a=a|0;var b=0,d=0,e=0,f=0,h=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;b=i;i=i+280|0;d=b|0;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,130112,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=276;h=0;i=b;return}j=28370312+(a<<2)|0;if((c[j>>2]|0)==0){Tk[c[7092490]&255](4,173008,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=276;h=0;i=b;return}do{if(+RJ(53392)!=0.0){k=c[j>>2]|0;if((k|0)==0){Tk[c[7092490]&255](4,173008,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;break}l=k+312|0;k=c[l>>2]|0;if((k|0)!=0){bK(k)}c[l>>2]=0}}while(0);l=c[j>>2]|0;a:do{if((l|0)==0){Tk[c[7092490]&255](4,173008,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e}else{k=c[l+300>>2]|0;if((k|0)==0){break}m=d|0;c[m>>2]=c[k>>2];g[d+4>>2]=+g[k+4>>2];c[d+8>>2]=c[k+8>>2];TB(d+12|0,k+12|0,256);k=c[m>>2]|0;if((k|0)==0){break}m=d|0;n=d+4|0;o=d+8|0;p=d+12|0;q=k;while(1){k=c[j>>2]|0;b:do{if((k|0)==0){Tk[c[7092490]&255](4,173008,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e}else{r=k+300|0;s=c[r>>2]|0;while(1){if((s|0)==0){break b}t=s+272|0;u=c[t>>2]|0;if((c[s>>2]|0)==(q|0)){break}else{s=u}}v=s+268|0;w=c[v>>2]|0;if((u|0)==0){c[k+304>>2]=w}else{c[u+268>>2]=w}w=c[v>>2]|0;x=c[t>>2]|0;if((w|0)==0){c[r>>2]=x}else{c[w+272>>2]=x}x=c[5145158]|0;if((x|0)!=0){c[x+268>>2]=s}c[v>>2]=0;c[t>>2]=c[5145158];c[5145158]=s;v=k+308|0;c[v>>2]=(c[v>>2]|0)-1}}while(0);k=c[j>>2]|0;if((k|0)==0){break}v=c[k+300>>2]|0;if((v|0)==0){break a}c[m>>2]=c[v>>2];g[n>>2]=+g[v+4>>2];c[o>>2]=c[v+8>>2];TB(p,v+12|0,256);q=c[m>>2]|0;if((q|0)==0){break a}}Tk[c[7092490]&255](4,173008,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e}}while(0);bK(c[j>>2]|0);c[j>>2]=0;f=276;h=0;i=b;return}function eH(){c[422832]=EG(TJ(44568,44168)|0)|0;c[4917286]=IG(TJ(43784,43456)|0)|0;c[4954630]=KG(TJ(43152,185984)|0)|0;if(+UJ(185736,185248)!=0.0){vG();return 0}c[4886384]=RG(TJ(184560,184088)|0)|0;vG();return 0}function fH(){var a=0,b=0,d=0,e=0,f=0,g=0;a=0;while(1){if((c[28370312+(a<<2)>>2]|0)!=0){dH(a)}b=a+1|0;if((b|0)<64){a=b}else{d=0;break}}do{a=20462296+(d<<2)|0;b=c[a>>2]|0;if((b|0)!=0){bK(c[b>>2]|0);bK(c[a>>2]|0);c[a>>2]=0}d=d+1|0;}while((d|0)<64);d=c[5425940]|0;if((d|0)!=0){bK(d)}c[5425940]=0;d=c[4954630]|0;if((d|0)!=0){a=d;while(1){d=c[a+16>>2]|0;b=c[a+12>>2]|0;if((b|0)!=0){e=b;while(1){b=c[e+12>>2]|0;do{if((c[e>>2]|0)==2){f=c[e+4>>2]|0;if((f|0)==0){break}else{g=f}while(1){f=c[g+4>>2]|0;bK(g);if((f|0)==0){break}else{g=f}}}}while(0);bK(e);if((b|0)==0){break}else{e=b}}}bK(a);if((d|0)==0){break}else{a=d}}}c[4954630]=0;a=c[4917286]|0;if((a|0)!=0){bK(a)}c[4917286]=0;a=c[422832]|0;if((a|0)!=0){bK(a)}c[422832]=0;a=c[4886384]|0;if((a|0)==0){c[4886384]=0;return}PG(a);c[4886384]=0;return}function gH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0.0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,E=0.0,F=0,G=0,H=0.0,I=0,J=0.0,K=0.0,L=0;h=i;i=i+1024|0;j=h|0;k=j;if((a|0)>256){Tk[c[7092490]&255](2,128784,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;c[f>>2]=0;c[e>>2]=0;c[d>>2]=0;m=0;n=1024;o=0;i=h;return m|0}p=(a|0)>0;do{if(p){q=0.0;r=0;while(1){if(+g[b+(r<<2)>>2]<0.0){s=q}else{s=q+1.0}t=r+1|0;if((t|0)<(a|0)){q=s;r=t}else{break}}if(s<3.0){break}m$(k|0,b|0,a<<2)|0;a:do{if(p){q=0.0;r=0;while(1){u=+g[j+(r<<2)>>2];if(u<0.0){v=q}else{v=q+u}t=r+1|0;if((t|0)<(a|0)){q=v;r=t}else{break}}b:do{if(v>0.0){q=v;r=0;while(1){u=+g[j+(r<<2)>>2];if(u<0.0){w=q}else{x=q-u;if(x>0.0){w=x}else{y=r;break b}}t=r+1|0;if((t|0)<(a|0)){q=w;r=t}else{z=17;break}}}else{z=17}}while(0);c:do{if((z|0)==17){r=0;t=~~(+(a|0)*(+((v$()|0)&32767|0)/32767.0));while(1){if(!(+g[j+(t<<2)>>2]<0.0)){y=t;break c}A=r+1|0;if((A|0)<(a|0)){r=A;t=(t+1|0)%(a|0)|0}else{y=0;break}}}}while(0);c[d>>2]=y;g[j+(y<<2)>>2]=-1.0;q=0.0;t=0;while(1){x=+g[j+(t<<2)>>2];if(x<0.0){B=q}else{B=q+x}r=t+1|0;if((r|0)<(a|0)){q=B;t=r}else{break}}d:do{if(B>0.0){q=B;t=0;while(1){x=+g[j+(t<<2)>>2];if(x<0.0){C=q}else{u=q-x;if(u>0.0){C=u}else{D=t;break d}}r=t+1|0;if((r|0)<(a|0)){q=C;t=r}else{z=29;break}}}else{z=29}}while(0);e:do{if((z|0)==29){t=0;r=~~(+(a|0)*(+((v$()|0)&32767|0)/32767.0));while(1){if(!(+g[j+(r<<2)>>2]<0.0)){D=r;break e}A=t+1|0;if((A|0)<(a|0)){t=A;r=(r+1|0)%(a|0)|0}else{D=0;break}}}}while(0);c[e>>2]=D;g[j+(D<<2)>>2]=-1.0;if(p){E=0.0;F=0}else{z=46;break}do{q=+g[j+(F<<2)>>2];E=q>=0.0&q>E?q:E;F=F+1|0;}while((F|0)<(a|0));if(p){G=0}else{z=46;break}do{r=j+(G<<2)|0;q=+g[r>>2];if(!(q<0.0)){g[r>>2]=E-q}G=G+1|0;}while((G|0)<(a|0));if(p){H=0.0;I=0}else{z=46;break}while(1){q=+g[j+(I<<2)>>2];if(q<0.0){J=H}else{J=H+q}r=I+1|0;if((r|0)<(a|0)){H=J;I=r}else{break}}if(J>0.0){q=J;r=0;while(1){u=+g[j+(r<<2)>>2];if(u<0.0){K=q}else{x=q-u;if(x>0.0){K=x}else{L=r;break a}}t=r+1|0;if((t|0)<(a|0)){q=K;r=t}else{break}}}r=0;t=~~(+(a|0)*(+((v$()|0)&32767|0)/32767.0));while(1){if(!(+g[j+(t<<2)>>2]<0.0)){L=t;break a}A=r+1|0;if((A|0)<(a|0)){r=A;t=(t+1|0)%(a|0)|0}else{L=0;break}}}else{v$()|0;c[d>>2]=0;v$()|0;c[e>>2]=0;g[j>>2]=-1.0;z=46}}while(0);if((z|0)==46){v$()|0;L=0}c[f>>2]=L;m=1;n=1024;o=0;i=h;return m|0}}while(0);Tk[c[7092490]&255](2,172472,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;c[f>>2]=0;c[e>>2]=0;c[d>>2]=0;m=0;n=1024;o=0;i=h;return m|0}function hH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;do{if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;g=0}else{h=c[28370048+(a<<2)>>2]|0;if((h|0)!=0){g=h;break}Tk[c[7092490]&255](4,45416,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;g=0}}while(0);do{if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;j=0}else{a=c[28370048+(b<<2)>>2]|0;if((a|0)!=0){j=a;break}Tk[c[7092490]&255](4,45416,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;j=0}}while(0);if((d-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f}b=c[28370048+(d<<2)>>2]|0;if((b|0)==0){Tk[c[7092490]&255](4,45416,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f}else{bJ(c[g>>2]|0,c[j>>2]|0,c[b>>2]|0);i=e;return}}function iH(a,b){a=a|0;b=b|0;return}function jH(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e}f=c[28370048+(a<<2)>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,45416,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e}else{$I(c[f>>2]|0);i=d;return}}function kH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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;b=i;i=i+1128|0;d=b|0;e=d|0;f=b+1064|0;g=~~+UJ(184496,180736);if((g|0)<0){Tk[c[7092490]&255](3,176072,(h=i,i=i+8|0,c[h>>2]=g,h)|0);i=h;VJ(184496,180736);j=256}else{j=g}q$(f|0,a|0,64)|0;XK(172688);a=RK(f)|0;if((a|0)==0){Tk[c[7092490]&255](3,169488,(h=i,i=i+8|0,c[h>>2]=f,h)|0);i=h;k=0;l=64;m=0;n=1060;o=0;i=b;return k|0}g=aK((j*236|0)+8|0)|0;p=g;q=g+4|0;c[q>>2]=g+8;r=g;c[r>>2]=0;a:do{if((MK(a,d)|0)!=0){while(1){if((k$(e,166088)|0)!=0){s=14;break}t=c[r>>2]|0;if((t|0)>=(j|0)){s=8;break}u=c[q>>2]|0;v=u+(t*236|0)|0;n$(v|0,0,236)|0;if((OK(a,1,0,d)|0)==0){s=10;break}gL(e);q$(v|0,e|0,31)|0;if((rL(a,19368,v)|0)==0){s=12;break}c[u+(t*236|0)+232>>2]=c[r>>2];c[r>>2]=(c[r>>2]|0)+1;if((MK(a,d)|0)==0){break a}}if((s|0)==8){fK(a,162888,(h=i,i=i+8|0,c[h>>2]=j,h)|0);i=h;bK(g);SK(a);k=0;l=64;m=0;n=1060;o=0;i=b;return k|0}else if((s|0)==10){bK(g);SK(a);k=0;l=64;m=0;n=1060;o=0;i=b;return k|0}else if((s|0)==12){bK(g);SK(a);k=0;l=64;m=0;n=1060;o=0;i=b;return k|0}else if((s|0)==14){fK(a,160136,(h=i,i=i+8|0,c[h>>2]=e,h)|0);i=h;bK(g);SK(a);k=0;l=64;m=0;n=1060;o=0;i=b;return k|0}}}while(0);SK(a);if((c[r>>2]|0)==0){Tk[c[7092490]&255](2,157512,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}Tk[c[7092490]&255](1,155032,(h=i,i=i+8|0,c[h>>2]=f,h)|0);i=h;k=p;l=64;m=0;n=1060;o=0;i=b;return k|0}function lH(){var a=0,b=0,d=0,e=0,f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0;a=i;i=i+128|0;b=a|0;d=c[4954634]|0;if((d|0)!=0){e=d;while(1){d=c[e+144>>2]|0;bK(e);if((d|0)==0){break}else{e=d}}}c[4954634]=0;e=c[6924868]|0;if((e|0)!=0){d=e;while(1){e=c[d+160>>2]|0;bK(d);if((e|0)==0){break}else{d=e}}}c[6924868]=0;d=DD(0)|0;if((d|0)==0){f=0;j=0}else{e=d;d=0;k=0;while(1){do{if((ED(e,146256,b,128)|0)==0){l=k;m=d}else{if((k$(b,143864)|0)==0){n=_J(148)|0;o=n;FD(e,141216,o)|0;ED(e,138888,n+16|0,128)|0;c[n+12>>2]=WF(o)|0;c[n+144>>2]=c[4954634];c[4954634]=n;l=k;m=d+1|0;break}if((k$(b,137048)|0)!=0){l=k;m=d;break}n=_J(164)|0;o=n;FD(e,141216,o)|0;ED(e,138888,n+16|0,128)|0;GD(e,135640,n+144|0)|0;GD(e,134168,n+148|0)|0;GD(e,132688,n+152|0)|0;GD(e,131712,n+156|0)|0;p=WF(o)|0;c[n+12>>2]=p;if((p|0)==0){q=+g[n+4>>2];r=+g[n+8>>2];Tk[c[7092490]&255](1,130448,(s=i,i=i+24|0,h[s>>3]=+g[o>>2],h[s+8>>3]=q,h[s+16>>3]=r,s)|0);i=s;bK(n);l=k;m=d;break}else{c[n+160>>2]=c[6924868];c[6924868]=n;l=k+1|0;m=d;break}}}while(0);n=DD(e)|0;if((n|0)==0){f=m;j=l;break}else{e=n;d=m;k=l}}}if((c[7092714]|0)==0){t=128;u=0;i=a;return}Tk[c[7092490]&255](1,129096,(s=i,i=i+8|0,c[s>>2]=f,s)|0);i=s;Tk[c[7092490]&255](1,128104,(s=i,i=i+8|0,c[s>>2]=j,s)|0);i=s;t=128;u=0;i=a;return}function mH(){var a=0,b=0,d=0,e=0,f=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.0,H=0.0,I=0.0;a=i;i=i+264|0;b=a|0;d=a+8|0;e=a+144|0;f=a+160|0;j=a+176|0;k=a+16|0;lH();l=c[4984278]|0;if((l|0)!=0){bK(l)}l=~~+UJ(151048,180736);m=_J(l*60|0)|0;c[4984278]=m;n=l-1|0;if((n|0)>0){l=0;o=m;while(1){p=l+1|0;c[o+(l*60|0)+56>>2]=o+(p*60|0);q=c[4984278]|0;if((p|0)<(n|0)){l=p;o=q}else{r=q;break}}}else{r=m}c[r+(n*60|0)+56>>2]=0;c[5145156]=c[4984278];c[4984276]=0;c[4938818]=0;n=c[5114358]|0;if((n|0)==0){s=128;t=0;i=a;return}if((iE()|0)==0){s=128;t=0;i=a;return}r=n|0;m=c[r>>2]|0;if((m|0)>0){o=n+4|0;l=0;q=m;while(1){m=c[o>>2]|0;if((c[m+(l*236|0)+192>>2]|0)==0){YJ(126656,(u=i,i=i+8|0,c[u>>2]=m+(l*236|0),u)|0);i=u;v=c[r>>2]|0}else{v=q}m=l+1|0;if((m|0)<(v|0)){l=m;q=v}else{break}}}v=DD(0)|0;a:do{if((v|0)!=0){q=n+4|0;l=e|0;o=e+4|0;m=e+8|0;p=f|0;w=f+4|0;x=f+8|0;y=j+8|0;z=v;b:while(1){c:do{if((ED(z,146256,k,128)|0)!=0){c[b>>2]=0;HD(z,125416,b)|0;A=c[r>>2]|0;d:do{if((A|0)>0){B=c[q>>2]|0;C=0;while(1){D=C+1|0;if((k$(k,B+(C*236|0)|0)|0)==0){E=C;break d}if((D|0)<(A|0)){C=D}else{E=D;break}}}else{E=0}}while(0);if((E|0)>=(A|0)){YJ(124480,(u=i,i=i+8|0,c[u>>2]=k,u)|0);i=u;break}if((FD(z,141216,l)|0)==0){Tk[c[7092490]&255](3,123640,(u=i,i=i+8|0,c[u>>2]=k,u)|0);i=u;break}do{if((c[b>>2]&1|0)==0){F=0}else{if(((yD(l)|0)&32|0)!=0){F=0;break}g[p>>2]=+g[l>>2];g[w>>2]=+g[o>>2];g[x>>2]=+g[m>>2]+-32.0;C=c[q>>2]|0;xD(j,l,C+(E*236|0)+208|0,C+(E*236|0)+220|0,p,-1,65537);if(+g[y>>2]<1.0){F=0;break}C=c[q>>2]|0;B=OE(l,C+(E*236|0)+208|0,C+(E*236|0)+220|0)|0;YJ(122792,(u=i,i=i+16|0,c[u>>2]=(c[q>>2]|0)+(E*236|0),c[u+8>>2]=B,u)|0);i=u;if((B|0)==0){break c}else{F=B}}}while(0);A=c[5145156]|0;if((A|0)==0){break b}B=A+56|0;c[5145156]=c[B>>2];n$(A|0,0,60)|0;C=(c[4938818]|0)+1|0;c[4938818]=C;c[A>>2]=C;g[A+48>>2]=0.0;c[A+44>>2]=0;C=A+8|0;c[C>>2]=0;HD(z,121912,d)|0;if((c[d>>2]|0)!=0){c[C>>2]=c[C>>2]|1}HD(z,121072,d)|0;if((c[d>>2]|0)!=0){c[C>>2]=c[C>>2]|2}HD(z,119928,d)|0;if((c[d>>2]|0)!=0){c[C>>2]=c[C>>2]|4}HD(z,118520,d)|0;if((c[d>>2]|0)!=0){c[C>>2]=c[C>>2]|8}if((k$(k,117464)|0)==0){c[C>>2]=c[C>>2]|16;GD(z,134168,A+12|0)|0}do{if((c[b>>2]&1|0)==0){C=c[q>>2]|0;if((rE(l,C+(E*236|0)+208|0,C+(E*236|0)+220|0)|0)!=0){break}G=+g[l>>2];H=+g[o>>2];I=+g[m>>2];Tk[c[7092490]&255](1,116288,(u=i,i=i+32|0,c[u>>2]=k,h[u+8>>3]=G,h[u+16>>3]=H,h[u+24>>3]=I,u)|0);i=u}}while(0);c[A+4>>2]=E;g[A+16>>2]=+g[l>>2];g[A+20>>2]=+g[o>>2];g[A+24>>2]=+g[m>>2];do{if((F|0)==0){C=c[q>>2]|0;D=QE(l,C+(E*236|0)+208|0,C+(E*236|0)+220|0,A+32|0)|0;c[A+28>>2]=D;if((D|0)!=0){break}I=+g[l>>2];H=+g[o>>2];G=+g[m>>2];Tk[c[7092490]&255](1,114752,(u=i,i=i+32|0,c[u>>2]=k,h[u+8>>3]=I,h[u+16>>3]=H,h[u+24>>3]=G,u)|0);i=u}else{c[A+28>>2]=F;g[A+32>>2]=+g[l>>2];g[A+36>>2]=+g[o>>2];g[A+40>>2]=+g[m>>2]}}while(0);D=c[4984276]|0;if((D|0)!=0){c[D+52>>2]=A}c[A+52>>2]=0;c[B>>2]=c[4984276];c[4984276]=A}}while(0);z=DD(z)|0;if((z|0)==0){break a}}Tk[c[7092490]&255](4,148824,(u=i,i=i+1|0,i=i+7&-8,c[u>>2]=0,u)|0);i=u;s=128;t=0;i=a;return}}while(0);Tk[c[7092490]&255](1,113688,(u=i,i=i+8|0,c[u>>2]=c[4938818],u)|0);i=u;s=128;t=0;i=a;return}function nH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=c[5114358]|0;if((f|0)==0){return}g=c[4984276]|0;a:do{if((g|0)!=0){h=g;while(1){if((c[h>>2]|0)==(b|0)){break}i=c[h+56>>2]|0;if((i|0)==0){break a}else{h=i}}i=e-1|0;q$(d|0,(c[f+4>>2]|0)+((c[h+4>>2]|0)*236|0)+32|0,i|0)|0;a[d+i|0]=0;return}}while(0);a[d]=0;return}function oH(a){a=a|0;var b=0,d=0,e=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}e=c[28370048+(a<<2)>>2]|0;if((e|0)==0){Tk[c[7092490]&255](4,45416,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}else{n$(e+468|0,0,2048)|0;i=b;return}}function pH(b){b=b|0;var d=0,e=0,f=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;d=i;i=i+32|0;e=d|0;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;i=d;return}j=c[28370048+(b<<2)>>2]|0;if((j|0)==0){Tk[c[7092490]&255](4,45416,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;i=d;return}b=e|0;k=e+31|0;e=0;do{l=j+1492+(e<<2)|0;m=+g[l>>2];if(!(m<+mE())){n=j+468+(e<<2)|0;o=c[n>>2]|0;p=c[5114358]|0;a:do{if((p|0)!=0){q=c[4984276]|0;b:do{if((q|0)!=0){r=q;while(1){if((c[r>>2]|0)==(o|0)){break}s=c[r+56>>2]|0;if((s|0)==0){break b}else{r=s}}q$(b|0,(c[p+4>>2]|0)+((c[r+4>>2]|0)*236|0)+32|0,31)|0;a[k]=0;break a}}while(0);a[b]=0}}while(0);p=c[n>>2]|0;m=+g[l>>2];t=m- +mE();YJ(111856,(f=i,i=i+24|0,c[f>>2]=b,c[f+8>>2]=p,h[f+16>>3]=t,f)|0);i=f}e=e+1|0;}while((e|0)<256);i=d;return}function qH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0.0,l=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;i=d;return}f=c[28370048+(a<<2)>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,45416,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;i=d;return}else{h=0}while(1){if((c[f+468+(h<<2)>>2]|0)==(b|0)){j=f+1492+(h<<2)|0;k=+g[j>>2];if(!(k<+mE())){break}}e=h+1|0;if((e|0)<256){h=e}else{l=9;break}}if((l|0)==9){i=d;return}g[j>>2]=0.0;i=d;return}function rH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0,j=0,k=0,l=0.0,m=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0.0;i=d;return+f}h=c[28370048+(a<<2)>>2]|0;if((h|0)==0){Tk[c[7092490]&255](4,45416,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0.0;i=d;return+f}else{j=0}while(1){if((c[h+468+(j<<2)>>2]|0)==(b|0)){k=h+1492+(j<<2)|0;l=+g[k>>2];if(!(l<+mE())){break}}e=j+1|0;if((e|0)<256){j=e}else{f=0.0;m=9;break}}if((m|0)==9){i=d;return+f}l=+g[k>>2];f=l- +mE();i=d;return+f}function sH(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0;e=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;i=e;return}h=c[28370048+(a<<2)>>2]|0;if((h|0)==0){Tk[c[7092490]&255](4,45416,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;i=e;return}if(!(d<0.0)){f=0;while(1){j=h+468+(f<<2)|0;a=f+1|0;if((c[j>>2]|0)==(b|0)){k=19;break}if((a|0)<256){f=a}else{l=0;break}}if((k|0)==19){c[j>>2]=b;g[h+1492+(f<<2)>>2]=+mE()+d;i=e;return}while(1){m=h+1492+(l<<2)|0;n=+g[m>>2];f=l+1|0;if(n<+mE()){break}if((f|0)<256){l=f}else{k=23;break}}if((k|0)==23){i=e;return}c[h+468+(l<<2)>>2]=b;g[m>>2]=+mE()+d;i=e;return}m=c[5114358]|0;if((m|0)==0){i=e;return}l=c[4984276]|0;if((l|0)==0){i=e;return}else{o=l}while(1){if((c[o>>2]|0)==(b|0)){break}l=c[o+56>>2]|0;if((l|0)==0){k=23;break}else{o=l}}if((k|0)==23){i=e;return}d=+g[(c[m+4>>2]|0)+((c[o+4>>2]|0)*236|0)+204>>2];n=d!=0.0?d:30.0;d=n<10.0?10.0:n;o=0;while(1){p=h+468+(o<<2)|0;m=o+1|0;if((c[p>>2]|0)==(b|0)){k=13;break}if((m|0)<256){o=m}else{q=0;break}}if((k|0)==13){c[p>>2]=b;g[h+1492+(o<<2)>>2]=d+ +mE();i=e;return}while(1){r=h+1492+(q<<2)|0;n=+g[r>>2];o=q+1|0;if(n<+mE()){break}if((o|0)<256){q=o}else{k=23;break}}if((k|0)==23){i=e;return}c[h+468+(q<<2)>>2]=b;g[r>>2]=d+ +mE();i=e;return}function tH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if((c[5114358]|0)==0){e=-1;return e|0}f=c[4984276]|0;a:do{if((a|0)>-1){h=f;while(1){if((h|0)==0){e=-1;break}i=c[h+56>>2]|0;if((c[h>>2]|0)==(a|0)){j=i;break a}else{h=i}}return e|0}else{j=f}}while(0);if((j|0)==0){e=-1;return e|0}else{k=j}b:while(1){j=c[5123034]|0;do{if((j|0)==2){f=c[k+8>>2]|0;if((f&4|0)==0){l=f;m=11}}else{f=c[k+8>>2]|0;if((j|0)>2){if((f&2|0)==0){l=f;m=11;break}else{break}}else{if((f&1|0)==0){l=f;m=11;break}else{break}}}}while(0);do{if((m|0)==11){m=0;if((l&8|0)!=0){break}n=k+4|0;if((VB(b,(c[(c[5114358]|0)+4>>2]|0)+((c[n>>2]|0)*236|0)+32|0)|0)==0){break b}}}while(0);j=c[k+56>>2]|0;if((j|0)==0){e=-1;m=17;break}else{k=j}}if((m|0)==17){return e|0}c[d+12>>2]=c[k+28>>2];g[d>>2]=+g[k+32>>2];g[d+4>>2]=+g[k+36>>2];g[d+8>>2]=+g[k+40>>2];c[d+40>>2]=c[k+44>>2];m=c[n>>2]|0;n=c[(c[5114358]|0)+4>>2]|0;g[d+16>>2]=+g[n+(m*236|0)+208>>2];g[d+20>>2]=+g[n+(m*236|0)+212>>2];g[d+24>>2]=+g[n+(m*236|0)+216>>2];g[d+28>>2]=+g[n+(m*236|0)+220>>2];g[d+32>>2]=+g[n+(m*236|0)+224>>2];g[d+36>>2]=+g[n+(m*236|0)+228>>2];m=k|0;c[d+44>>2]=c[m>>2];n=d+48|0;c[n>>2]=1;if(+g[k+48>>2]!=0.0){c[n>>2]=5}e=c[m>>2]|0;return e|0}function uH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=c[4954634]|0;if((d|0)==0){e=0;return e|0}else{f=d}while(1){if((VB(f+16|0,a)|0)==0){break}d=c[f+144>>2]|0;if((d|0)==0){e=0;h=5;break}else{f=d}}if((h|0)==5){return e|0}c[b+12>>2]=c[f+12>>2];g[b>>2]=+g[f>>2];g[b+4>>2]=+g[f+4>>2];g[b+8>>2]=+g[f+8>>2];c[b+40>>2]=0;g[b+16>>2]=-8.0;g[b+20>>2]=-8.0;g[b+24>>2]=-8.0;g[b+28>>2]=8.0;g[b+32>>2]=8.0;g[b+36>>2]=8.0;e=1;return e|0}function vH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0;d=(a|0)<0?0:a;a=c[6924868]|0;if((a|0)==0){e=0;return e|0}else{f=d;h=a}while(1){if((f|0)<1){break}a=c[h+160>>2]|0;if((a|0)==0){e=0;i=5;break}else{f=f-1|0;h=a}}if((i|0)==5){return e|0}c[b+12>>2]=c[h+12>>2];g[b>>2]=+g[h>>2];g[b+4>>2]=+g[h+4>>2];g[b+8>>2]=+g[h+8>>2];c[b+40>>2]=0;g[b+16>>2]=-8.0;g[b+20>>2]=-8.0;g[b+24>>2]=-8.0;g[b+28>>2]=8.0;g[b+32>>2]=8.0;g[b+36>>2]=8.0;e=d+1|0;return e|0}function wH(){var a=0,b=0,d=0,e=0,f=0,h=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.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.0,H=0.0,I=0.0,J=0,K=0,L=0.0,M=0.0,N=0,O=0.0,P=0.0,Q=0,R=0.0,S=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0.0,_=0,$=0,aa=0.0,ba=0.0,ca=0;a=i;i=i+144|0;b=a|0;d=c[4984276]|0;if((d|0)!=0){e=d;while(1){d=e+56|0;f=c[d>>2]|0;h=+g[e+48>>2];do{if(h!=0.0){if(!(h<+mE())){break}j=e+52|0;k=c[j>>2]|0;l=c[d>>2]|0;if((k|0)==0){c[4984276]=l}else{c[k+56>>2]=l}l=c[d>>2]|0;if((l|0)!=0){c[l+52>>2]=c[j>>2]}c[d>>2]=c[5145156];c[5145156]=e}}while(0);if((f|0)==0){break}else{e=f}}}e=c[5114358]|0;if((e|0)==0){m=140;n=0;i=a;return}d=cE(0)|0;if((d|0)==0){m=140;n=0;i=a;return}j=b+24|0;l=b+60|0;k=b+28|0;o=b+64|0;p=b+32|0;q=b+68|0;r=e+4|0;s=e|0;e=d;do{a:do{if((YD(e)|0)==2){d=XD(e)|0;if((d|0)==0){break}WD(e,b);h=+g[j>>2];if(h!=+g[l>>2]){break}t=+g[k>>2];if(t!=+g[o>>2]){break}u=+g[p>>2];if(u!=+g[q>>2]){break}v=c[4984276]|0;b:do{if((v|0)!=0){w=v;while(1){x=c[w+44>>2]|0;if((x|0)!=0&(x|0)==(e|0)){y=22;break}x=c[w+56>>2]|0;if((x|0)==0){break}else{w=x}}do{if((y|0)==22){y=0;x=c[w+4>>2]|0;z=c[r>>2]|0;if((c[z+(x*236|0)+192>>2]|0)==(d|0)){A=w+16|0;B=w+20|0;do{if(!(h!=+g[A>>2])){if(t!=+g[B>>2]){break}if(!(u!=+g[w+24>>2])){break a}}}while(0);g[A>>2]=h;g[B>>2]=+g[k>>2];g[w+24>>2]=+g[p>>2];c[w+28>>2]=QE(A,z+(x*236|0)+208|0,z+(x*236|0)+220|0,w+32|0)|0;if((w|0)==0){break}else{break a}}C=w+52|0;D=c[C>>2]|0;E=w+56|0;F=c[E>>2]|0;if((D|0)==0){c[4984276]=F}else{c[D+56>>2]=F}F=c[E>>2]|0;if((F|0)!=0){c[F+52>>2]=c[C>>2]}c[E>>2]=c[5145156];c[5145156]=w}}while(0);w=c[4984276]|0;if((w|0)==0){break}E=c[5123034]|0;G=+g[j>>2];H=+g[k>>2];I=+g[p>>2];c:do{if((E|0)==2){C=w;while(1){F=C+44|0;do{if((c[F>>2]|0)==0){if((c[C+8>>2]&4|0)!=0){break}D=c[C+4>>2]|0;J=c[r>>2]|0;if((c[J+(D*236|0)+192>>2]|0)!=(d|0)){break}K=C+16|0;L=+g[K>>2];M=L-G;N=C+20|0;O=+g[N>>2];P=O-H;Q=C+24|0;R=+g[Q>>2];S=R-I;if(+T(M*M+P*P+S*S)<30.0){U=C;V=F;W=K;X=N;Y=Q;Z=L;_=D;$=J;aa=O;ba=R;break c}}}while(0);C=c[C+56>>2]|0;if((C|0)==0){break b}}}else{if((E|0)>2){C=w;while(1){x=C+44|0;do{if((c[x>>2]|0)==0){if((c[C+8>>2]&2|0)!=0){break}z=c[C+4>>2]|0;A=c[r>>2]|0;if((c[A+(z*236|0)+192>>2]|0)!=(d|0)){break}B=C+16|0;R=+g[B>>2];O=R-G;F=C+20|0;L=+g[F>>2];S=L-H;J=C+24|0;P=+g[J>>2];M=P-I;if(+T(O*O+S*S+M*M)<30.0){U=C;V=x;W=B;X=F;Y=J;Z=R;_=z;$=A;aa=L;ba=P;break c}}}while(0);C=c[C+56>>2]|0;if((C|0)==0){break b}}}else{C=w;while(1){x=C+44|0;do{if((c[x>>2]|0)==0){if((c[C+8>>2]&1|0)!=0){break}A=c[C+4>>2]|0;z=c[r>>2]|0;if((c[z+(A*236|0)+192>>2]|0)!=(d|0)){break}J=C+16|0;P=+g[J>>2];L=P-G;F=C+20|0;R=+g[F>>2];M=R-H;B=C+24|0;S=+g[B>>2];O=S-I;if(+T(L*L+M*M+O*O)<30.0){U=C;V=x;W=J;X=F;Y=B;Z=P;_=A;$=z;aa=R;ba=S;break c}}}while(0);C=c[C+56>>2]|0;if((C|0)==0){break b}}}}}while(0);c[V>>2]=e;if(!(G!=Z|H!=aa|I!=ba)){break a}g[W>>2]=G;g[X>>2]=+g[k>>2];g[Y>>2]=+g[p>>2];c[U+28>>2]=QE(W,$+(_*236|0)+208|0,$+(_*236|0)+220|0,U+32|0)|0;break a}}while(0);v=c[s>>2]|0;d:do{if((v|0)>0){w=c[r>>2]|0;E=0;while(1){C=E+1|0;if((c[w+(E*236|0)+192>>2]|0)==(d|0)){ca=E;break d}if((C|0)<(v|0)){E=C}else{ca=C;break}}}else{ca=0}}while(0);if((ca|0)>=(v|0)){break}d=c[5145156]|0;if((d|0)==0){Tk[c[7092490]&255](4,148824,(E=i,i=i+1|0,i=i+7&-8,c[E>>2]=0,E)|0);i=E;break}E=d+56|0;c[5145156]=c[E>>2];n$(d|0,0,60)|0;c[d+44>>2]=e;c[d>>2]=(c[4938818]|0)+e;c[d+4>>2]=ca;w=d+16|0;g[w>>2]=+g[j>>2];g[d+20>>2]=+g[k>>2];g[d+24>>2]=+g[p>>2];C=c[r>>2]|0;x=QE(w,C+(ca*236|0)+208|0,C+(ca*236|0)+220|0,d+32|0)|0;c[d+28>>2]=x;if((PE(x)|0)!=0){c[E>>2]=c[5145156];c[5145156]=d;break}g[d+48>>2]=+mE()+30.0;x=c[4984276]|0;if((x|0)!=0){c[x+52>>2]=d}c[d+52>>2]=0;c[E>>2]=c[4984276];c[4984276]=d}}while(0);e=cE(e)|0;}while((e|0)!=0);m=140;n=0;i=a;return}function xH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;i=i+32|0;e=d|0;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;i=d;return}g=c[28370048+(b<<2)>>2]|0;if((g|0)==0){Tk[c[7092490]&255](4,45416,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;i=d;return}b=g+464|0;if((c[b>>2]|0)<1){i=d;return}h=e|0;j=e+31|0;e=1;while(1){k=c[g+16+(e*56|0)+44>>2]|0;l=c[5114358]|0;a:do{if((l|0)!=0){m=c[4984276]|0;b:do{if((m|0)!=0){n=m;while(1){if((c[n>>2]|0)==(k|0)){break}o=c[n+56>>2]|0;if((o|0)==0){break b}else{n=o}}q$(h|0,(c[l+4>>2]|0)+((c[n+4>>2]|0)*236|0)+32|0,31)|0;a[j]=0;break a}}while(0);a[h]=0}}while(0);YJ(111104,(f=i,i=i+16|0,c[f>>2]=e,c[f+8>>2]=h,f)|0);i=f;if((e|0)<(c[b>>2]|0)){e=e+1|0}else{break}}i=d;return}function yH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;i=d;return}f=c[28370048+(a<<2)>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,45416,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;i=d;return}g=f+464|0;h=c[g>>2]|0;if((h|0)>6){Tk[c[7092490]&255](3,110360,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;xH(a);i=d;return}else{a=h+1|0;c[g>>2]=a;m$(f+16+(a*56|0)|0,b|0,56)|0;i=d;return}}function zH(a){a=a|0;var b=0,d=0,e=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}e=c[28370048+(a<<2)>>2]|0;if((e|0)==0){Tk[c[7092490]&255](4,45416,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}d=e+464|0;e=c[d>>2]|0;if((e|0)<=0){i=b;return}c[d>>2]=e-1;i=b;return}function AH(a){a=a|0;var b=0,d=0,e=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}e=c[28370048+(a<<2)>>2]|0;if((e|0)==0){Tk[c[7092490]&255](4,45416,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}else{c[e+464>>2]=0;i=b;return}}function BH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0;i=d;return f|0}g=c[28370048+(a<<2)>>2]|0;if((g|0)==0){Tk[c[7092490]&255](4,45416,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0;i=d;return f|0}e=c[g+464>>2]|0;if((e|0)==0){f=0;i=d;return f|0}m$(b|0,g+16+(e*56|0)|0,56)|0;f=1;i=d;return f|0}function CH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0;i=d;return f|0}g=c[28370048+(a<<2)>>2]|0;if((g|0)==0){Tk[c[7092490]&255](4,45416,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0;i=d;return f|0}e=c[g+464>>2]|0;if((e|0)<2){f=0;i=d;return f|0}m$(b|0,g+16+((e-1|0)*56|0)|0,56)|0;f=1;i=d;return f|0}function DH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0,Q=0;f=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;j=0;i=f;return j|0}k=28370048+(a<<2)|0;l=c[k>>2]|0;if((l|0)==0){Tk[c[7092490]&255](4,45416,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;j=0;i=f;return j|0}m=l|0;if((c[m>>2]|0)==0){j=0;i=f;return j|0}n=SH(b,c[l+8>>2]|0)|0;do{if((n|0)==0){o=9}else{if((ME(n)|0)==0){o=9;break}c[l+12>>2]=n;p=n}}while(0);do{if((o|0)==9){n=c[l+12>>2]|0;if((n|0)==0){j=0}else{p=n;break}i=f;return j|0}}while(0);n=c[5114358]|0;if((n|0)==0){j=0;i=f;return j|0}q=c[4984276]|0;if((q|0)==0){j=0;i=f;return j|0}r=n+4|0;s=l+4|0;t=0.0;u=0;v=q;while(1){q=c[5123034]|0;do{if((q|0)==2){w=c[v+8>>2]|0;if((w&4|0)==0){x=w;o=18}else{y=u;z=t}}else{w=c[v+8>>2]|0;if((q|0)>2){if((w&2|0)==0){x=w;o=18;break}else{y=u;z=t;break}}else{if((w&1|0)==0){x=w;o=18;break}else{y=u;z=t;break}}}}while(0);do{if((o|0)==18){o=0;q=v+8|0;if((x&8|0)!=0){y=u;z=t;break}w=v+28|0;if((c[w>>2]|0)==0){y=u;z=t;break}if((c[v+44>>2]|0)==0){if((x&16|0)==0){y=u;z=t;break}}A=c[(c[s>>2]|0)+(c[(c[r>>2]|0)+((c[v+4>>2]|0)*236|0)+232>>2]<<2)>>2]|0;if((A|0)<0){y=u;z=t;break}B=+ZI(d,c[m>>2]|0,A);if(+g[v+48>>2]!=0.0){C=B+ +g[(c[5385950]|0)+16>>2]}else{C=B}if((c[q>>2]&16|0)==0){D=C}else{D=C*+g[v+12>>2]}if(!(D>0.0)){y=u;z=t;break}q=yF(p,b,c[w>>2]|0,e)|0;if((q|0)<=0){y=u;z=t;break}w=c[v>>2]|0;A=c[k>>2]|0;a:do{if((A|0)==0){Tk[c[7092490]&255](4,45416,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;E=0.0}else{F=0;while(1){if((c[A+468+(F<<2)>>2]|0)==(w|0)){G=A+1492+(F<<2)|0;B=+g[G>>2];if(!(B<+mE())){break}}H=F+1|0;if((H|0)<256){F=H}else{E=0.0;break a}}B=+g[G>>2];E=B- +mE()}}while(0);if(E- +(q|0)*.009>0.0){y=u;z=t;break}B=D/(+(q|0)*.01);if(!(B>t)){y=u;z=t;break}y=v;z=B}}while(0);A=c[v+56>>2]|0;if((A|0)==0){break}else{t=z;u=y;v=A}}if((y|0)==0){j=0;i=f;return j|0}v=c[y+4>>2]|0;u=c[n+4>>2]|0;z=+g[y+32>>2];t=+g[y+36>>2];D=+g[y+40>>2];E=+g[u+(v*236|0)+208>>2];C=+g[u+(v*236|0)+212>>2];B=+g[u+(v*236|0)+216>>2];I=+g[u+(v*236|0)+220>>2];J=+g[u+(v*236|0)+224>>2];K=+g[u+(v*236|0)+228>>2];n=c[y+28>>2]|0;G=c[y+44>>2]|0;e=c[y>>2]|0;b=+g[y+48>>2]!=0.0;p=(c[y+8>>2]|0)>>>3&2|(b?5:1);do{if(b){L=10.0}else{M=+g[u+(v*236|0)+204>>2];N=M!=0.0?M:30.0;if(!(N<10.0)){L=N;break}L=10.0}}while(0);u=0;while(1){O=l+468+(u<<2)|0;b=u+1|0;if((c[O>>2]|0)==(e|0)){o=46;break}if((b|0)<256){u=b}else{P=0;o=48;break}}b:do{if((o|0)==46){c[O>>2]=e;g[l+1492+(u<<2)>>2]=L+ +mE()}else if((o|0)==48){while(1){o=0;Q=l+1492+(P<<2)|0;N=+g[Q>>2];b=P+1|0;if(N<+mE()){break}if((b|0)<256){P=b;o=48}else{break b}}c[l+468+(P<<2)>>2]=e;g[Q>>2]=L+ +mE()}}while(0);Q=c[k>>2]|0;if((Q|0)==0){Tk[c[7092490]&255](4,45416,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;j=1;i=f;return j|0}k=Q+464|0;P=c[k>>2]|0;if((P|0)>6){Tk[c[7092490]&255](3,110360,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;xH(a);j=1;i=f;return j|0}else{a=P+1|0;c[k>>2]=a;g[Q+16+(a*56|0)>>2]=z;g[Q+16+(a*56|0)+4>>2]=t;g[Q+16+(a*56|0)+8>>2]=D;c[Q+16+(a*56|0)+12>>2]=n;g[Q+16+(a*56|0)+16>>2]=E;g[Q+16+(a*56|0)+20>>2]=C;g[Q+16+(a*56|0)+24>>2]=B;g[Q+16+(a*56|0)+28>>2]=I;g[Q+16+(a*56|0)+32>>2]=J;g[Q+16+(a*56|0)+36>>2]=K;c[Q+16+(a*56|0)+40>>2]=G;c[Q+16+(a*56|0)+44>>2]=e;c[Q+16+(a*56|0)+48>>2]=p;c[Q+16+(a*56|0)+52>>2]=v;j=1;i=f;return j|0}return 0}function EH(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;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.0,z=0,A=0,B=0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0.0,L=0,M=0,N=0.0,O=0,P=0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0,W=0,X=0;j=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(k=i,i=i+8|0,c[k>>2]=a,k)|0);i=k;l=0;i=j;return l|0}m=28370048+(a<<2)|0;n=c[m>>2]|0;if((n|0)==0){Tk[c[7092490]&255](4,45416,(k=i,i=i+8|0,c[k>>2]=a,k)|0);i=k;l=0;i=j;return l|0}o=n|0;if((c[o>>2]|0)==0){l=0;i=j;return l|0}p=SH(b,c[n+8>>2]|0)|0;do{if((p|0)==0){q=9}else{if((ME(p)|0)==0){q=9;break}c[n+12>>2]=p;r=p}}while(0);do{if((q|0)==9){p=c[n+12>>2]|0;if((p|0)==0){l=0}else{r=p;break}i=j;return l|0}}while(0);p=(f|0)!=0;if(p){s=yF(r,b,c[f+12>>2]|0,e)|0}else{s=99999}t=c[5114358]|0;if((t|0)==0){l=0;i=j;return l|0}u=c[4984276]|0;if((u|0)==0){l=0;i=j;return l|0}v=t+4|0;w=n+4|0;x=f+12|0;y=0.0;f=0;z=u;while(1){u=c[5123034]|0;do{if((u|0)==2){A=c[z+8>>2]|0;if((A&4|0)==0){B=A;q=20}else{C=f;D=y}}else{A=c[z+8>>2]|0;if((u|0)>2){if((A&2|0)==0){B=A;q=20;break}else{C=f;D=y;break}}else{if((A&1|0)==0){B=A;q=20;break}else{C=f;D=y;break}}}}while(0);do{if((q|0)==20){q=0;u=z+8|0;if((B&8|0)!=0){C=f;D=y;break}A=z+28|0;if((c[A>>2]|0)==0){C=f;D=y;break}if((c[z+44>>2]|0)==0){if((B&16|0)==0){C=f;D=y;break}}E=c[(c[w>>2]|0)+(c[(c[v>>2]|0)+((c[z+4>>2]|0)*236|0)+232>>2]<<2)>>2]|0;if((E|0)<0){C=f;D=y;break}F=+ZI(d,c[o>>2]|0,E);E=z+48|0;if(+g[E>>2]!=0.0){G=F+ +g[(c[5385950]|0)+16>>2]}else{G=F}if((c[u>>2]&16|0)==0){H=G}else{H=G*+g[z+12>>2]}if(!(H>0.0)){C=f;D=y;break}u=yF(r,b,c[A>>2]|0,e)|0;if((u|0)<=0){C=f;D=y;break}F=+(u|0);if(!(F>2]|0;J=c[m>>2]|0;a:do{if((J|0)==0){Tk[c[7092490]&255](4,45416,(k=i,i=i+8|0,c[k>>2]=a,k)|0);i=k;K=0.0}else{L=0;while(1){if((c[J+468+(L<<2)>>2]|0)==(I|0)){M=J+1492+(L<<2)|0;N=+g[M>>2];if(!(N<+mE())){break}}O=L+1|0;if((O|0)<256){L=O}else{K=0.0;break a}}N=+g[M>>2];K=N- +mE()}}while(0);if(K- +(u|0)*.009>0.0){C=f;D=y;break}N=H/(F*.01);if(!(N>y)){C=f;D=y;break}do{if(p){if(+g[E>>2]!=0.0){P=0;break}P=yF(c[A>>2]|0,z+32|0,c[x>>2]|0,e)|0}else{P=0}}while(0);A=(P|0)>(s|0);C=A?f:z;D=A?y:N}}while(0);A=c[z+56>>2]|0;if((A|0)==0){break}else{y=D;f=C;z=A}}if((C|0)==0){l=0;i=j;return l|0}z=c[C+4>>2]|0;f=c[t+4>>2]|0;D=+g[C+32>>2];y=+g[C+36>>2];H=+g[C+40>>2];K=+g[f+(z*236|0)+208>>2];h=+g[f+(z*236|0)+212>>2];G=+g[f+(z*236|0)+216>>2];F=+g[f+(z*236|0)+220>>2];Q=+g[f+(z*236|0)+224>>2];R=+g[f+(z*236|0)+228>>2];t=c[C+28>>2]|0;s=c[C+44>>2]|0;P=c[C>>2]|0;e=+g[C+48>>2]!=0.0;x=(c[C+8>>2]|0)>>>3&2|(e?5:1);do{if(e){S=10.0}else{T=+g[f+(z*236|0)+204>>2];U=T!=0.0?T:30.0;if(!(U<10.0)){S=U;break}S=10.0}}while(0);f=0;while(1){V=n+468+(f<<2)|0;e=f+1|0;if((c[V>>2]|0)==(P|0)){q=52;break}if((e|0)<256){f=e}else{W=0;q=54;break}}b:do{if((q|0)==52){c[V>>2]=P;g[n+1492+(f<<2)>>2]=S+ +mE()}else if((q|0)==54){while(1){q=0;X=n+1492+(W<<2)|0;U=+g[X>>2];e=W+1|0;if(U<+mE()){break}if((e|0)<256){W=e;q=54}else{break b}}c[n+468+(W<<2)>>2]=P;g[X>>2]=S+ +mE()}}while(0);X=c[m>>2]|0;if((X|0)==0){Tk[c[7092490]&255](4,45416,(k=i,i=i+8|0,c[k>>2]=a,k)|0);i=k;l=1;i=j;return l|0}m=X+464|0;W=c[m>>2]|0;if((W|0)>6){Tk[c[7092490]&255](3,110360,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;xH(a);l=1;i=j;return l|0}else{a=W+1|0;c[m>>2]=a;g[X+16+(a*56|0)>>2]=D;g[X+16+(a*56|0)+4>>2]=y;g[X+16+(a*56|0)+8>>2]=H;c[X+16+(a*56|0)+12>>2]=t;g[X+16+(a*56|0)+16>>2]=K;g[X+16+(a*56|0)+20>>2]=h;g[X+16+(a*56|0)+24>>2]=G;g[X+16+(a*56|0)+28>>2]=F;g[X+16+(a*56|0)+32>>2]=Q;g[X+16+(a*56|0)+36>>2]=R;c[X+16+(a*56|0)+40>>2]=s;c[X+16+(a*56|0)+44>>2]=P;c[X+16+(a*56|0)+48>>2]=x;c[X+16+(a*56|0)+52>>2]=z;l=1;i=j;return l|0}return 0}function FH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0;c=i;i=i+64|0;d=c|0;e=c+16|0;f=c+32|0;h=c+48|0;j=d|0;k=e|0;RF(2,j,k);l=+g[b+20>>2]- +g[e+4>>2];m=+g[b+24>>2]- +g[e+8>>2];n=+g[b+28>>2]- +g[j>>2];o=+g[b+32>>2]- +g[d+4>>2];p=+g[b+36>>2]- +g[d+8>>2];q=+g[b>>2];r=+g[b+16>>2]- +g[k>>2]+q;g[f>>2]=r;s=+g[b+4>>2];g[f+4>>2]=l+s;l=+g[b+8>>2];g[f+8>>2]=m+l;g[h>>2]=n+q;g[h+4>>2]=o+s;g[h+8>>2]=p+l;b=0;l=r;while(1){r=+g[a+(b<<2)>>2];if(r+g[h+(b<<2)>>2]){t=0;u=6;break}if((k|0)>=3){t=1;u=6;break}b=k;l=+g[f+(k<<2)>>2]}if((u|0)==6){i=c;return t|0}return 0}function GH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0.0;d=i;i=i+248|0;f=d|0;h=d+144|0;j=d+160|0;if((c[e+48>>2]&1|0)==0){k=0;l=140;m=0;i=d;return k|0}n=+g[e+16>>2];o=h|0;p=+g[e+20>>2];q=+g[e+24>>2];g[o>>2]=+g[e>>2]+(n+n)*.5;g[h+4>>2]=+g[e+4>>2]+(p+p)*.5;g[h+8>>2]=+g[e+8>>2]+(q+q)*.5;xD(j,b,0,0,o,a,1);do{if(!(+g[j+8>>2]<1.0)){a=c[e+40>>2]|0;if((a|0)<1){k=0;l=140;m=0;i=d;return k|0}WD(a,f);q=+g[f+12>>2];if(q<+mE()+-.5){k=1}else{break}l=140;m=0;i=d;return k|0}}while(0);k=0;l=140;m=0;i=d;return k|0}function HH(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}e=28370048+(a<<2)|0;f=c[e>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,45416,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}n$(f+16|0,0,452)|0;f=c[e>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,45416,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}else{n$(f+468|0,0,2048)|0;i=b;return}}function IH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=9;i=d;return f|0}g=c[28370048+(a<<2)>>2]|0;if((g|0)==0){Tk[c[7092490]&255](4,45416,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=9;i=d;return f|0}a=UI(b)|0;c[g>>2]=a;if((a|0)==0){Tk[c[7092490]&255](4,109104,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;f=9;i=d;return f|0}b=c[5114358]|0;if((b|0)==0){f=9;i=d;return f|0}h=b|0;j=_J(c[h>>2]<<2)|0;if((c[h>>2]|0)>0){k=b+4|0;b=0;do{l=VI(a,(c[k>>2]|0)+(b*236|0)|0)|0;c[j+(b<<2)>>2]=l;if((l|0)<0){l=(c[k>>2]|0)+(b*236|0)|0;YJ(153088,(e=i,i=i+16|0,c[e>>2]=b,c[e+8>>2]=l,e)|0);i=e}b=b+1|0;}while((b|0)<(c[h>>2]|0))}c[g+4>>2]=j;f=0;i=d;return f|0}function JH(a){a=a|0;var b=0,d=0,e=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}e=c[28370048+(a<<2)>>2]|0;if((e|0)==0){Tk[c[7092490]&255](4,45416,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}d=c[e>>2]|0;if((d|0)!=0){SI(d)}d=c[e+4>>2]|0;if((d|0)==0){i=b;return}bK(d);i=b;return}function KH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=1;while(1){d=28370048+(b<<2)|0;e=b+1|0;if((c[d>>2]|0)==0){break}if((e|0)<65){b=e}else{f=0;g=5;break}}if((g|0)==5){return f|0}g=_J(2516)|0;c[d>>2]=g;c[g+8>>2]=a;f=b;return f|0}function LH(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,50280,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}e=28370048+(a<<2)|0;f=c[e>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,108024,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}d=c[f>>2]|0;if((d|0)!=0){SI(d)}d=c[f+4>>2]|0;if((d|0)!=0){bK(d)}bK(c[e>>2]|0);c[e>>2]=0;i=b;return}function MH(){var a=0,b=0,d=0;a=i;c[5123034]=~~+UJ(107144,106104);b=kH(TJ(105272,104312)|0)|0;c[5114358]=b;if((b|0)==0){Tk[c[7092490]&255](4,103392,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;d=10;i=a;return d|0}else{c[5385950]=SJ(102608,101720)|0;d=0;i=a;return d|0}return 0}function NH(){var a=0,b=0,d=0,e=0;a=c[5114358]|0;if((a|0)!=0){bK(a)}c[5114358]=0;a=c[4984278]|0;if((a|0)!=0){bK(a)}c[4984278]=0;c[5145156]=0;c[4984276]=0;c[4938818]=0;a=c[4954634]|0;if((a|0)!=0){b=a;while(1){a=c[b+144>>2]|0;bK(b);if((a|0)==0){break}else{b=a}}}c[4954634]=0;b=c[6924868]|0;if((b|0)!=0){a=b;while(1){b=c[a+160>>2]|0;bK(a);if((b|0)==0){break}else{a=b}}}c[6924868]=0;a=1;do{b=28370048+(a<<2)|0;d=c[b>>2]|0;if((d|0)!=0){e=c[d>>2]|0;if((e|0)!=0){SI(e)}e=c[d+4>>2]|0;if((e|0)!=0){bK(e)}bK(c[b>>2]|0);c[b>>2]=0}a=a+1|0;}while((a|0)<65);return}function OH(){var a=0,b=0,d=0,e=0,f=0;a=1;while(1){b=28369656+(a<<2)|0;d=a+1|0;if((c[b>>2]|0)==0){break}if((d|0)<65){a=d}else{e=0;f=5;break}}if((f|0)==5){return e|0}c[b>>2]=_J(772)|0;e=a;return e|0}function PH(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,128368,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}e=28369656+(a<<2)|0;f=c[e>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,172200,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}else{bK(f);c[e>>2]=0;i=b;return}}function QH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,128368,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;i=d;return}f=c[28369656+(a<<2)>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,172200,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;i=d;return}g[f>>2]=+g[b>>2];g[f+4>>2]=+g[b+4>>2];g[f+8>>2]=+g[b+8>>2];g[f+12>>2]=+g[b+12>>2];g[f+16>>2]=+g[b+16>>2];g[f+20>>2]=+g[b+20>>2];g[f+24>>2]=+g[b+24>>2];g[f+28>>2]=+g[b+28>>2];g[f+32>>2]=+g[b+32>>2];c[f+36>>2]=c[b+36>>2];c[f+40>>2]=c[b+40>>2];g[f+44>>2]=+g[b+44>>2];c[f+48>>2]=c[b+48>>2];g[f+52>>2]=+g[b+52>>2];g[f+56>>2]=+g[b+56>>2];g[f+60>>2]=+g[b+60>>2];e=f+96|0;f=c[e>>2]|0;a=f&-3;c[e>>2]=a;h=b+64|0;if((c[h>>2]&2|0)==0){j=a}else{a=f|2;c[e>>2]=a;j=a}a=j&-33;c[e>>2]=a;if((c[h>>2]&32|0)==0){k=a}else{a=j|32;c[e>>2]=a;k=a}a=k&-17;c[e>>2]=a;if((c[h>>2]&16|0)==0){l=a}else{a=k|16;c[e>>2]=a;l=a}a=l&-513;c[e>>2]=a;if((c[h>>2]&512|0)==0){m=a}else{a=l|512;c[e>>2]=a;m=a}c[e>>2]=m&-65;if((c[h>>2]&64|0)==0){i=d;return}c[e>>2]=m|64;i=d;return}function RH(a){a=a|0;var b=0,d=0,e=0,f=0,h=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.0,B=0.0,C=0.0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0.0,Q=0.0,R=0.0,S=0,U=0,V=0,W=0,X=0.0,Y=0;b=i;i=i+176|0;d=b|0;e=b+40|0;f=b+160|0;h=WF(a)|0;do{if((h|0)==0){j=0}else{if((ME(h)|0)==0){j=h;break}else{k=h}l=120;m=0;n=40;o=0;i=b;return k|0}}while(0);h=f|0;g[h>>2]=+g[a>>2];p=a+4|0;q=f+4|0;g[q>>2]=+g[p>>2];r=a+8|0;s=f+8|0;g[s>>2]=+g[r>>2]+4.0;f=d|0;t=e|0;u=aG(a,h,f,t,10)|0;a:do{if((u|0)>0){v=0;while(1){w=d+(v<<2)|0;x=v+1|0;if((ME(c[w>>2]|0)|0)!=0){break}if((x|0)<(u|0)){v=x}else{y=1;z=j;A=999999.0;break a}}k=c[w>>2]|0;l=120;m=0;n=40;o=0;i=b;return k|0}else{y=1;z=j;A=999999.0}}while(0);while(1){B=+(y*12|0|0);j=1;w=z;u=0;C=A;while(1){D=+(j<<3|0);v=1;x=w;E=u;F=C;while(1){G=+g[p>>2];H=+g[r>>2];g[h>>2]=D+ +g[a>>2];g[q>>2]=+(v<<3|0)+G;g[s>>2]=B+H;I=aG(a,h,f,t,10)|0;if((I|0)>0){J=0;K=x;L=E;H=F;while(1){M=d+(J<<2)|0;do{if((ME(c[M>>2]|0)|0)==0){N=H;O=L}else{G=+g[e+(J*12|0)>>2]- +g[a>>2];P=+g[e+(J*12|0)+4>>2]- +g[p>>2];Q=+g[e+(J*12|0)+8>>2]- +g[r>>2];R=+T(G*G+P*P+Q*Q);if(!(R>2]|0}}while(0);if((K|0)==0){S=c[M>>2]|0}else{S=K}U=J+1|0;if((U|0)<(I|0)){J=U;K=S;L=O;H=N}else{V=S;W=O;X=N;break}}}else{V=x;W=E;X=F}L=v-1|0;if((L|0)>-2){v=L;x=V;E=W;F=X}else{break}}E=j-1|0;if((E|0)>-2){j=E;w=V;u=W;C=X}else{break}}u=y-1|0;if((W|0)!=0){k=W;Y=20;break}if((u|0)>-2){y=u;z=V;A=X}else{k=V;Y=20;break}}if((Y|0)==20){l=120;m=0;n=40;o=0;i=b;return k|0}return 0}function SH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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.0,w=0.0,x=0.0;d=i;i=i+240|0;e=d|0;f=d+48|0;h=d+64|0;j=d+112|0;k=d+200|0;l=d+80|0;m=d+96|0;RF(4,l,m);n=h|0;g[n>>2]=+g[a>>2];o=a+4|0;p=h+4|0;g[p>>2]=+g[o>>2];q=a+8|0;r=h+8|0;g[r>>2]=+g[q>>2]+-3.0;xD(j,a,l,m,n,b,65537);b=c[j+80>>2]|0;do{if((c[j+4>>2]|0)==0){if(+g[j+8>>2]>=1.0|(b|0)==1023){break}if((b|0)==1022){s=RH(a)|0;t=44;u=0;i=d;return s|0}m=XD(b)|0;do{if(((c[19817456+(m<<2)>>2]|0)-1|0)>>>0<2>>>0){l=MF(0,m)|0;if((l|0)==0){break}KF(l,e);s=c[e>>2]|0;t=44;u=0;i=d;return s|0}}while(0);m=(vE(a)|0)==0;l=RH(a)|0;if(!m){s=l;t=44;u=0;i=d;return s|0}do{if((l|0)!=0){if((ME(l)|0)==0){break}else{s=l}t=44;u=0;i=d;return s|0}}while(0);v=+g[a>>2];l=f|0;g[l>>2]=v;w=+g[o>>2];m=f+4|0;g[m>>2]=w;x=+g[q>>2];h=f+8|0;g[h>>2]=x;g[n>>2]=v;g[p>>2]=w;g[r>>2]=x+-800.0;$F(k,l,n,4,-1);if((c[k>>2]|0)==0){x=+g[k+16>>2];w=+g[k+12>>2];g[l>>2]=+g[k+8>>2];g[m>>2]=w;g[h>>2]=x}s=RH(l)|0;t=44;u=0;i=d;return s|0}}while(0);s=RH(a)|0;t=44;u=0;i=d;return s|0}function TH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0.0;e=i;i=i+216|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+64|0;m=e+80|0;n=e+96|0;o=e+112|0;p=e+128|0;n$(m|0,0,12)|0;q=n;c[q>>2]=c[46750];c[q+4>>2]=c[46751];c[q+8>>2]=c[46752];q=o;c[q>>2]=c[46754];c[q+4>>2]=c[46755];c[q+8>>2]=c[46756];q=c[d+4>>2]&65535;AD(q,m|0,f|0,h|0,0);if((_D(q,j|0)|0)==0){Tk[c[7092490]&255](1,146024,(m=i,i=i+8|0,c[m>>2]=q,m)|0);i=m;r=0;i=e;return r|0}else{s=0}while(1){t=+g[a+(s<<2)>>2];u=+g[j+(s<<2)>>2];if(t>u+ +g[h+(s<<2)>>2]+16.0){r=0;v=10;break}m=s+1|0;if(t>2]+-16.0){r=0;v=10;break}if((m|0)<2){s=m}else{v=6;break}}if((v|0)==6){u=+g[a>>2];s=k|0;g[s>>2]=u;t=+g[a+4>>2];g[k+4>>2]=t;w=+g[a+8>>2];g[k+8>>2]=w+24.0;k=l|0;g[k>>2]=u;g[l+4>>2]=t;g[l+8>>2]=w+-48.0;xD(p,s,n|0,o|0,k,b,65537);b=c[p+80>>2]|0;do{if((c[p+4>>2]|0)==0){if((c[p>>2]|0)!=0|(b|0)==1023){break}if((ZD(b)|0)==(q|0)){r=1}else{break}i=e;return r|0}}while(0);r=0;i=e;return r|0}else if((v|0)==10){i=e;return r|0}return 0}function UH(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;b=i;i=i+256|0;d=b+128|0;e=b|0;f=d|0;n$(19817456,0,1024)|0;g=DD(0)|0;if((g|0)==0){h=128;j=0;k=128;l=0;i=b;return}m=d+1|0;d=g;do{a:do{if((ED(d,129008,e,128)|0)!=0){if((ED(d,118440,f,128)|0)==0){break}do{if((a[f]|0)==0){n=0}else{g=oj(m|0)|0;if(!(g>>>0>255>>>0)){n=g;break}Tk[c[7092490]&255](1,107904,(g=i,i=i+8|0,c[g>>2]=e,g)|0);i=g;break a}}while(0);if((VB(e,64968)|0)==0){c[19817456+(n<<2)>>2]=2;break}if((VB(e,56712)|0)==0){c[19817456+(n<<2)>>2]=1;break}if((VB(e,50248)|0)==0){c[19817456+(n<<2)>>2]=3;break}if((VB(e,45392)|0)!=0){break}c[19817456+(n<<2)>>2]=4}}while(0);d=DD(d)|0;}while((d|0)!=0);h=128;j=0;k=128;l=0;i=b;return}function VH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0;d=i;i=i+16|0;e=d|0;f=e|0;nE(a,b,c,f);h=0;while(1){j=+g[e+(h<<2)>>2];k=+g[b+(h<<2)>>2];if(j>k){l=+g[c+(h<<2)>>2];if(j>l){m=l;break}}if(j>2];if(j>2]- +g[f>>2];p=+g[a+4>>2]- +g[e+4>>2];q=+g[a+8>>2]- +g[e+8>>2];r=l*l+p*p+q*q;i=d;return+r}e=+S(+(j-k))<+S(+(j-m));if(e){s=b;t=b}else{s=c;t=c}m=+g[a+8>>2]- +g[t+8>>2];j=+g[a+4>>2]- +g[s+4>>2];k=+g[a>>2]- +g[s>>2];r=m*m+(j*j+k*k);i=d;return+r}function WH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0;switch(c[b+36>>2]&16777215|0){case 5:{f=0;break};case 12:{f=0;break};case 19:{f=0;break};case 11:{f=0;break};case 10:{f=0;break};case 13:{f=0;break};case 14:{f=0;break};case 18:{f=0;break};case 7:{f=0;break};default:{f=1}}if((e|0)<=0){h=0;return h|0}i=b+12|0;j=a+4|0;k=a+8|0;l=b+16|0;m=b+20|0;n=b+24|0;if((f|0)==0){f=0;b=0;while(1){o=+g[d+(f*20|0)+12>>2];p=d+(f*20|0)|0;q=+VH(p,a,i);do{if(q>2]- +g[p>>2];s=+g[j>>2]- +g[d+(f*20|0)+4>>2];t=+g[k>>2]- +g[d+(f*20|0)+8>>2];if(r*r+s*s+t*t>q){u=c[d+(f*20|0)+16>>2]|0;break}t=+g[i>>2]- +g[p>>2];s=+g[l>>2]- +g[d+(f*20|0)+4>>2];r=+g[m>>2]- +g[d+(f*20|0)+8>>2];if(!(t*t+s*s+r*r>q)){u=b;break}u=c[d+(f*20|0)+16>>2]|0}else{u=b}}while(0);p=f+1|0;if((u|0)==1){h=1;v=28;break}if((p|0)<(e|0)){f=p;b=u}else{h=u;v=28;break}}if((v|0)==28){return h|0}}else{w=0;x=0}while(1){q=+g[d+(w*20|0)+12>>2];o=q*q;u=d+(w*20|0)|0;q=+VH(u,a,i);do{if(q>2]- +g[u>>2];s=+g[j>>2]- +g[d+(w*20|0)+4>>2];t=+g[k>>2]- +g[d+(w*20|0)+8>>2];if(!(r*r+s*s+t*t>q)){v=24;break}y=c[d+(w*20|0)+16>>2]|0}else{v=24}}while(0);do{if((v|0)==24){v=0;q=+VH(u,i,n);if(!(q>2]- +g[u>>2];s=+g[l>>2]- +g[d+(w*20|0)+4>>2];r=+g[m>>2]- +g[d+(w*20|0)+8>>2];if(!(t*t+s*s+r*r>q)){y=x;break}y=c[d+(w*20|0)+16>>2]|0}}while(0);u=w+1|0;if((y|0)==1){h=1;v=28;break}if((u|0)<(e|0)){w=u;x=y}else{h=y;v=28;break}}if((v|0)==28){return h|0}return 0}function XH(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,h=0,j=0;f=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,128368,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;i=f;return}j=c[28369656+(a<<2)>>2]|0;if((j|0)==0){Tk[c[7092490]&255](4,172200,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;i=f;return}h=j+768|0;if((e|0)==0){c[h>>2]=0;i=f;return}a=c[h>>2]|0;if((a|0)>31){i=f;return}g[j+128+(a*20|0)>>2]=+g[b>>2];g[j+128+((c[h>>2]|0)*20|0)+4>>2]=+g[b+4>>2];g[j+128+((c[h>>2]|0)*20|0)+8>>2]=+g[b+8>>2];g[j+128+((c[h>>2]|0)*20|0)+12>>2]=d;c[j+128+((c[h>>2]|0)*20|0)+16>>2]=e;c[h>>2]=(c[h>>2]|0)+1;i=f;return}function YH(a,b,d,f,h,j,k,l,m,n,o,p){a=a|0;b=b|0;d=d|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var 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.0,H=0,I=0,J=0;q=i;i=i+48|0;r=q|0;if((b|0)==0){s=0;t=44;u=0;i=q;return s|0}if((TE(b)|0)==0){if((TE(c[l+12>>2]|0)|0)==0){v=m}else{w=4}}else{w=4}if((w|0)==4){v=m|8388608}m=LF(b,0)|0;if((m|0)==0){s=0;t=44;u=0;i=q;return s|0}x=l+12|0;l=r|0;y=r+36|0;z=~v;A=r+24|0;B=r+40|0;C=(p|0)==0;D=0;E=0;F=m;while(1){do{if((c[h>>2]|0)==(F|0)){G=+g[j>>2];if(G<+mE()){w=10;break}if((c[k>>2]|0)>4){H=E;I=D}else{w=10}}else{w=10}}while(0);do{if((w|0)==10){w=0;KF(F,r);if((c[x>>2]|0)==(d|0)){if((c[l>>2]|0)==(f|0)){H=E;I=D;break}}if(((lF(c[y>>2]|0)|0)&z|0)!=0){H=E;I=D;break}if(((pF(c[l>>2]|0)|0)&z|0)!=0){H=E;I=D;break}m=yF(c[l>>2]|0,A,c[x>>2]|0,v)|0;if((m|0)==0){H=E;I=D;break}if((WH(a,r,n,o)|0)==0){J=(e[B>>1]|0)+m|0;m=(D|0)==0|(J|0)<(D|0);H=m?F:E;I=m?J:D;break}if(C){H=E;I=D;break}c[p>>2]=c[p>>2]|256;H=E;I=D}}while(0);J=LF(b,F)|0;if((J|0)==0){s=H;break}else{D=I;E=H;F=J}}t=44;u=0;i=q;return s|0}function ZH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var h=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.0,J=0.0,K=0.0,L=0.0,M=0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0;h=i;i=i+64|0;j=h|0;k=h+16|0;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,128368,(l=i,i=i+8|0,c[l>>2]=a,l)|0);i=l;m=0;n=44;o=0;i=h;return m|0}p=c[28369656+(a<<2)>>2]|0;if((p|0)==0){Tk[c[7092490]&255](4,172200,(l=i,i=i+8|0,c[l>>2]=a,l)|0);i=l;m=0;n=44;o=0;i=h;return m|0}l=c[p+76>>2]|0;if((l|0)==0|(b|0)==0){m=0;n=44;o=0;i=h;return m|0}a=k+12|0;q=j|0;r=k+16|0;s=j+4|0;t=k+20|0;u=j+8|0;j=f+4|0;v=f+8|0;w=k+36|0;x=k+24|0;y=k+28|0;z=k+32|0;A=k|0;B=p+72|0;C=p+116|0;D=p+120|0;E=p+124|0;F=b+12|0;G=c[p+68>>2]|0;H=l;I=0.0;J=+g[p>>2];K=+g[p+4>>2];L=+g[p+8>>2];a:while(1){if(!((H|0)!=0&I>2]=+g[a>>2]-J;g[s>>2]=+g[r>>2]-K;g[u>>2]=+g[t>>2]-L;N=I+ +wB(q);if(!(N>2];g[f>>2]=O;P=+g[r>>2];g[j>>2]=P;Q=+g[t>>2];g[v>>2]=Q;switch(c[w>>2]&16777215|0){case 18:case 11:case 19:{R=N;break};case 10:case 12:case 13:{m=1;M=18;break a;break};default:{g[q>>2]=+g[x>>2]-O;g[s>>2]=+g[y>>2]-P;g[u>>2]=+g[z>>2]-Q;Q=N+ +wB(q);if(!(Q>2]=+g[x>>2];g[j>>2]=+g[y>>2];g[v>>2]=+g[z>>2];R=Q}}p=YH(x,c[A>>2]|0,c[B>>2]|0,G,C,D,E,b,d,0,0,0)|0;S=+g[x>>2];T=+g[y>>2];U=+g[z>>2];l=c[A>>2]|0;if((l|0)==(c[F>>2]|0)){M=15;break}else{G=l;H=p;I=R;J=S;K=T;L=U}}if((M|0)==9){Q=e-I;g[f>>2]=J+Q*+g[q>>2];g[j>>2]=K+Q*+g[s>>2];g[v>>2]=L+Q*+g[u>>2];m=1;n=44;o=0;i=h;return m|0}else if((M|0)==13){Q=e-N;g[f>>2]=+g[a>>2]+Q*+g[q>>2];g[j>>2]=+g[r>>2]+Q*+g[s>>2];g[v>>2]=+g[t>>2]+Q*+g[u>>2];m=1;n=44;o=0;i=h;return m|0}else if((M|0)==15){t=b|0;g[q>>2]=+g[t>>2]-S;r=b+4|0;g[s>>2]=+g[r>>2]-T;a=b+8|0;g[u>>2]=+g[a>>2]-U;if(R+ +wB(q)>2]=+g[t>>2];g[j>>2]=+g[r>>2];g[v>>2]=+g[a>>2];m=1;n=44;o=0;i=h;return m|0}else{U=e-R;g[f>>2]=+g[x>>2]+U*+g[q>>2];g[j>>2]=+g[y>>2]+U*+g[s>>2];g[v>>2]=+g[z>>2]+U*+g[u>>2];m=1;n=44;o=0;i=h;return m|0}}else if((M|0)==18){n=44;o=0;i=h;return m|0}return 0}function _H(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=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,J=0,K=0,L=0.0,M=0;h=i;i=i+264|0;j=h|0;k=h+88|0;l=h+176|0;m=h+248|0;if((d|0)==0|(b|0)==0){n=0;o=44;p=0;i=h;return n|0}q=d+12|0;r=c[q>>2]|0;if((r|0)==0){n=0;o=44;p=0;i=h;return n|0}s=h+224|0;c[s>>2]=0;t=m|0;g[t>>2]=+g[a>>2];u=m+4|0;g[u>>2]=+g[a+4>>2];v=m+8|0;g[v>>2]=+g[a+8>>2];a=h+232|0;m=h+240|0;w=d+40|0;x=d|0;y=l+12|0;z=k+8|0;A=l+24|0;B=j+8|0;C=l|0;D=l+28|0;E=l+32|0;F=b;G=b;b=0;H=r;while(1){if((F|0)==(H|0)){n=0;I=13;break}J=YH(t,F,r,G,s,a,m,d,e,0,0,0)|0;if((J|0)==0){n=0;I=13;break}KF(J,l);xD(k,x,0,0,y,c[w>>2]|0,65537);if(!(+g[z>>2]<1.0)){I=7;break}xD(j,x,0,0,A,c[w>>2]|0,65537);if(!(+g[B>>2]<1.0)){I=9;break}J=c[C>>2]|0;K=c[q>>2]|0;L=+g[A>>2];if((J|0)==(K|0)){I=11;break}g[t>>2]=L;g[u>>2]=+g[D>>2];g[v>>2]=+g[E>>2];M=b+1|0;if((M|0)<20){G=F;F=J;b=M;H=K}else{n=0;I=13;break}}if((I|0)==7){g[f>>2]=+g[y>>2];g[f+4>>2]=+g[l+16>>2];g[f+8>>2]=+g[l+20>>2];n=1;o=44;p=0;i=h;return n|0}else if((I|0)==9){g[f>>2]=+g[A>>2];g[f+4>>2]=+g[D>>2];g[f+8>>2]=+g[E>>2];n=1;o=44;p=0;i=h;return n|0}else if((I|0)==11){g[f>>2]=L;g[f+4>>2]=+g[D>>2];g[f+8>>2]=+g[E>>2];n=1;o=44;p=0;i=h;return n|0}else if((I|0)==13){o=44;p=0;i=h;return n|0}return 0}function $H(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0;d=i;i=i+64|0;e=d|0;f=d+16|0;h=d+32|0;j=d+48|0;n$(j|0,0,12)|0;k=c[a+4>>2]&65535;l=e|0;m=f|0;n=h|0;AD(k,j|0,l,m,n);if((_D(k,n)|0)==0){Tk[c[7092490]&255](1,146024,(j=i,i=i+8|0,c[j>>2]=k,j)|0);i=j}o=+g[e+4>>2]+ +g[f+4>>2];p=+g[e+8>>2]+ +g[f+8>>2];g[b>>2]=(+g[l>>2]+ +g[m>>2])*.5+ +g[n>>2];g[b+4>>2]=o*.5+ +g[h+4>>2];n=b+8|0;g[n>>2]=p*.5+ +g[h+8>>2];g[n>>2]=+g[a+20>>2];i=d;return}function aI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0,n=0,o=0.0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0,E=0.0;e=i;i=i+112|0;f=e|0;h=e+16|0;j=e+32|0;k=e+72|0;l=+g[a>>2];m=f|0;g[m>>2]=l;n=a+4|0;o=+g[n>>2];p=f+4|0;g[p>>2]=o;q=+g[a+8>>2];r=f+8|0;g[r>>2]=q;f=h|0;g[f>>2]=l;s=h+4|0;g[s>>2]=o;t=h+8|0;g[t>>2]=q+-60.0;$F(j,m,f,4,d);if(!(+g[j+4>>2]<1.0)){u=1.0;i=e;return+u}h=b+4|0;v=k|0;w=k+8|0;x=k+12|0;y=k+16|0;z=8;q=+g[j+16>>2]+1.0;while(1){A=+(z|0);o=+g[a>>2]+A*+g[b>>2];g[m>>2]=o;l=+g[n>>2]+A*+g[h>>2];g[p>>2]=l;B=q+24.0;g[r>>2]=B;g[f>>2]=o;g[s>>2]=l;g[t>>2]=B;g[t>>2]=B-(+g[(c[453932]|0)+16>>2]+48.0);$F(k,m,f,4,d);C=+g[y>>2];if((c[v>>2]|0)==0){if(C>2]+-8.0){D=5;break}else{E=C}}else{E=q}j=z+8|0;if((j|0)<101){z=j;q=E}else{break}}do{if((D|0)==5){E=+g[x>>2];g[f>>2]=+g[w>>2];g[s>>2]=E;g[t>>2]=C+-20.0;if(((yD(f)|0)&32|0)==0){u=A}else{break}i=e;return+u}}while(0);u=0.0;i=e;return+u}function bI(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0.0,v=0.0,w=0,x=0,y=0.0;e=i;i=i+168|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+88|0;m=e+128|0;n=a|0;o=j|0;g[o>>2]=+g[n>>2];p=a+4|0;q=j+4|0;g[q>>2]=+g[p>>2];r=a+8|0;s=+g[r>>2];t=j+8|0;g[t>>2]=s;g[t>>2]=s+ +g[(c[453932]|0)+16>>2];j=a+36|0;$F(k,n,o,2,c[j>>2]|0);s=+g[k+8>>2];u=+g[k+12>>2];v=+g[k+16>>2];if((c[k>>2]|0)!=0){w=0;i=e;return w|0}if(v- +g[r>>2]<+g[(c[453928]|0)+16>>2]){w=0;i=e;return w|0}k=h|0;g[k>>2]=+g[b>>2];x=h+4|0;g[x>>2]=+g[b+4>>2];g[h+8>>2]=0.0;+wB(k);y=+g[a+44>>2]*d*.5;g[o>>2]=+g[n>>2]+ +g[k>>2]*y;g[q>>2]=+g[p>>2]+ +g[x>>2]*y;x=f|0;g[x>>2]=s;p=f+4|0;g[p>>2]=u;n=f+8|0;g[n>>2]=v;g[t>>2]=v;$F(l,x,o,2,c[j>>2]|0);v=+g[l+8>>2];u=+g[l+12>>2];if((c[l>>2]|0)!=0){w=0;i=e;return w|0}s=+g[l+16>>2];g[x>>2]=v;g[p>>2]=u;g[n>>2]=s;g[o>>2]=v;g[q>>2]=u;g[t>>2]=+g[r>>2];$F(m,x,o,2,c[j>>2]|0);if((c[m>>2]|0)!=0){w=0;i=e;return w|0}if(!(+g[m+4>>2]<1.0)){w=0;i=e;return w|0}if(+g[m+16>>2]- +g[r>>2]<+g[(c[453928]|0)+16>>2]){w=0;i=e;return w|0}r=a+40|0;mJ(c[r>>2]|0);xJ(c[r>>2]|0,k,d);k=a+96|0;c[k>>2]=c[k>>2]|1;w=1;i=e;return w|0}function cI(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,h=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.0,E=0.0,F=0.0;f=i;i=i+168|0;h=f|0;j=f+16|0;k=f+32|0;l=f+48|0;m=f+64|0;n=f+80|0;o=a|0;p=a+36|0;q=(uE(o,c[a+48>>2]|0,c[p>>2]|0)|0)==0;r=a+96|0;s=c[r>>2]|0;if(q){t=s}else{q=s|2;c[r>>2]=q;t=q}q=a+96|0;if((t&2|0)==0){if((t&1|0)==0){u=1;v=84;w=0;i=f;return u|0}if(!(+g[a+20>>2]<50.0)){u=1;v=84;w=0;i=f;return u|0}xJ(c[a+40>>2]|0,b,d);u=1;v=84;w=0;i=f;return u|0}if((bI(a,b,d)|0)!=0){u=1;v=84;w=0;i=f;return u|0}c[q>>2]=c[q>>2]&-2;q=(e&6|0)==2?4:2;t=h|0;g[t>>2]=+g[b>>2];r=h+4|0;g[r>>2]=+g[b+4>>2];b=h+8|0;g[b>>2]=0.0;+wB(t);do{if((e&4|0)==0){if(!(+aI(o,t,c[p>>2]|0)>0.0)){x=e;break}x=e|4}else{x=e}}while(0);e=j|0;g[e>>2]=+g[t>>2]*d;g[j+4>>2]=+g[r>>2]*d;r=j+8|0;g[r>>2]=+g[b>>2]*d;b=k|0;g[b>>2]=+g[a+12>>2];g[k+4>>2]=+g[a+16>>2];g[k+8>>2]=+g[a+20>>2];k=(x&4|0)!=0;if(k){g[r>>2]=400.0;y=61;z=1;A=30}else{y=60;z=2;A=2}r=m|0;g[r>>2]=+g[o>>2];j=a+4|0;g[m+4>>2]=+g[j>>2];g[m+8>>2]=+g[a+8>>2]+.5;xE(n,c[p>>2]|0,r,q,1,b,e,z,A,.10000000149011612,y,0,0)|0;if(!((c[n+80>>2]|0)<(A|0)|k^1)){u=0;v=84;w=0;i=f;return u|0}A=c[n+68>>2]|0;if((A&56|0)!=0){u=0;v=84;w=0;i=f;return u|0}do{if((A&1|0)==0){B=n|0;C=l|0}else{y=l|0;+MB(n+16|0,y);z=n|0;if(+aI(z,y,c[p>>2]|0)>0.0){u=0;v=84;w=0;i=f;return u|0}if(+aI(z,t,c[p>>2]|0)>0.0){u=0}else{B=z;C=y;break}v=84;w=0;i=f;return u|0}}while(0);D=+g[B>>2]- +g[o>>2];g[C>>2]=D;E=+g[n+4>>2]- +g[j>>2];g[l+4>>2]=E;g[l+8>>2]=0.0;F=+T(D*D+E*E+0.0);if(F<+g[a+44>>2]*d*.5){u=0;v=84;w=0;i=f;return u|0}if(k){mJ(c[a+40>>2]|0)}k=a+40|0;if((x&2|0)!=0){oJ(c[k>>2]|0)}xJ(c[k>>2]|0,t,d);u=1;v=84;w=0;i=f;return u|0}function dI(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,h=0,j=0,k=0,l=0;f=i;i=i+16|0;h=f|0;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,128368,(j=i,i=i+8|0,c[j>>2]=a,j)|0);i=j;k=0;i=f;return k|0}l=c[28369656+(a<<2)>>2]|0;if((l|0)==0){Tk[c[7092490]&255](4,172200,(j=i,i=i+8|0,c[j>>2]=a,j)|0);i=j;k=0;i=f;return k|0}if((vE(l|0)|0)==0){k=cI(l,b,d,e)|0;i=f;return k|0}else{e=h|0;g[e>>2]=+g[b>>2];g[h+4>>2]=+g[b+4>>2];g[h+8>>2]=+g[b+8>>2];+wB(e);xJ(c[l+40>>2]|0,e,d);k=1;i=f;return k|0}return 0}function eI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0;f=i;i=i+224|0;h=f|0;j=f+16|0;k=f+32|0;l=f+48|0;m=f+136|0;n=a+48|0;o=h|0;p=j|0;RF(c[n>>2]|0,o,p);q=+g[b>>2];r=+g[b+4>>2];s=+g[b+8>>2];if(+S(+(s+(q*0.0+r*0.0)))<.7){b=h+8|0;g[b>>2]=+g[(c[453928]|0)+16>>2]+ +g[b>>2];b=j+8|0;g[b>>2]=+g[b>>2]+-10.0}b=a|0;j=k|0;g[j>>2]=+g[b>>2]+q*3.0;h=a+4|0;t=k+4|0;g[t>>2]=+g[h>>2]+r*3.0;u=a+8|0;v=k+8|0;g[v>>2]=+g[u>>2]+s*3.0;k=a+36|0;xD(l,b,o,p,j,c[k>>2]|0,33619969);w=c[l+80>>2]|0;do{if((c[l+4>>2]|0)==0){if((w-1022|0)>>>0<2>>>0){break}c[e+8>>2]=1;c[e+12>>2]=w;i=f;return}}while(0);if((d|0)==0){i=f;return}if((ME(c[a+64>>2]|0)|0)!=0){i=f;return}RF(c[n>>2]|0,o,p);g[j>>2]=+g[b>>2];g[t>>2]=+g[h>>2];g[v>>2]=+g[u>>2]+-3.0;xD(m,b,o,p,j,c[k>>2]|0,65537);k=c[m+80>>2]|0;if((c[m+4>>2]|0)!=0){i=f;return}if((k-1022|0)>>>0<2>>>0){i=f;return}c[e+8>>2]=1;c[e+12>>2]=k;k=e+20|0;c[k>>2]=c[k>>2]|32;i=f;return}function fI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0;e=i;i=i+72|0;f=e|0;h=e+16|0;j=h;n$(j|0,0,52)|0;k=b|0;l=f|0;g[l>>2]=+g[d+12>>2]- +g[k>>2];m=b+4|0;n=f+4|0;g[n>>2]=+g[d+16>>2]- +g[m>>2];o=f+8|0;g[o>>2]=0.0;p=+wB(l);eI(b,l,1,h);if(p<10.0){g[l>>2]=+g[d+24>>2]- +g[k>>2];g[n>>2]=+g[d+28>>2]- +g[m>>2];g[o>>2]=0.0;q=+wB(l)}else{q=p}if(((YF(c[d>>2]|0)|0)&2|0)==0&q<20.0){oJ(c[b+40>>2]|0)}q=+aI(k,l,c[b+36>>2]|0);k=q>0.0;do{if((c[b+96>>2]&512|0)==0){if(!k){r=400.0;break}r=400.0-(360.0-q*2.0)}else{if(k){s=200.0-(180.0-q)}else{s=200.0}pJ(c[b+40>>2]|0);r=s}}while(0);xJ(c[b+40>>2]|0,l,r);g[h+28>>2]=+g[l>>2];g[h+32>>2]=+g[n>>2];g[h+36>>2]=+g[o>>2];m$(a|0,j|0,52)|0;i=e;return}function gI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0.0;e=i;i=i+72|0;f=e|0;h=e+16|0;j=h;n$(j|0,0,52)|0;k=f|0;g[k>>2]=+g[d+12>>2]- +g[b>>2];l=f+4|0;g[l>>2]=+g[d+16>>2]- +g[b+4>>2];d=f+8|0;g[d>>2]=0.0;m=+wB(k);eI(b,k,1,h);if(m<9.0){mJ(c[b+40>>2]|0)}else{xJ(c[b+40>>2]|0,k,360.0-(360.0-(m>60.0?360.0:m*6.0)))}g[h+28>>2]=+g[k>>2];g[h+32>>2]=+g[l>>2];g[h+36>>2]=+g[d>>2];m$(a|0,j|0,52)|0;i=e;return}function hI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0;e=i;i=i+88|0;f=e|0;h=e+16|0;j=e+32|0;k=j;n$(k|0,0,52)|0;l=+g[d+24>>2]- +g[b>>2];m=f|0;g[m>>2]=l;n=+g[d+28>>2]- +g[b+4>>2];o=f+4|0;g[o>>2]=n;p=f+8|0;g[p>>2]=+g[d+32>>2]- +g[b+8>>2];d=h|0;g[d>>2]=l;g[h+4>>2]=n;g[h+8>>2]=0.0;n=(+((v$()|0)&32767|0)/32767.0+-.5)*2.0*40.0+15.0;g[p>>2]=+g[p>>2]+n;+wB(m);n=+wB(d);d=b+40|0;tJ(c[d>>2]|0);if(n<40.0){rJ(c[d>>2]|0)}AB(m,j+40|0);d=j+20|0;c[d>>2]=c[d>>2]|1;g[j+28>>2]=+g[m>>2];g[j+32>>2]=+g[o>>2];g[j+36>>2]=+g[p>>2];m$(a|0,k|0,52)|0;i=e;return}function iI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0;e=i;i=i+88|0;f=e|0;h=e+16|0;j=e+32|0;k=j;n$(k|0,0,52)|0;if((c[b+96>>2]&16|0)!=0){m$(a|0,k|0,52)|0;l=52;m=0;i=e;return}n=b|0;o=h|0;g[o>>2]=+g[n>>2];p=b+4|0;g[h+4>>2]=+g[p>>2];q=b+8|0;g[h+8>>2]=+g[q>>2]+-32.0;if(((yD(o)|0)&56|0)==0){m$(a|0,k|0,52)|0;l=52;m=0;i=e;return}else{r=+g[d+24>>2]- +g[n>>2];n=f|0;s=+g[d+28>>2]- +g[p>>2];p=f+4|0;t=+g[d+32>>2]- +g[q>>2];q=f+8|0;g[n>>2]=r+(+((v$()|0)&32767|0)/32767.0+-.5)*2.0*10.0;g[p>>2]=s+(+((v$()|0)&32767|0)/32767.0+-.5)*2.0*10.0;g[q>>2]=t+((+((v$()|0)&32767|0)/32767.0+-.5)*2.0*10.0+70.0);xJ(c[b+40>>2]|0,n,400.0);AB(n,j+40|0);b=j+20|0;c[b>>2]=c[b>>2]|1;g[j+28>>2]=+g[n>>2];g[j+32>>2]=+g[p>>2];g[j+36>>2]=+g[q>>2];m$(a|0,k|0,52)|0;l=52;m=0;i=e;return}}function jI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0;e=i;i=i+96|0;f=e|0;h=e+16|0;j=e+32|0;k=e+40|0;l=k;n$(l|0,0,52)|0;m=d+12|0;n=b|0;o=h|0;g[o>>2]=+g[m>>2]- +g[n>>2];p=d+16|0;q=b+4|0;r=h+4|0;g[r>>2]=+g[p>>2]- +g[q>>2];s=h+8|0;g[s>>2]=+g[d+20>>2]- +g[b+8>>2];+wB(o);eI(b,o,1,k);h=d+24|0;t=+g[m>>2];u=+g[h>>2]-t;g[o>>2]=u;o=d+28|0;v=+g[p>>2];w=+g[o>>2]-v;g[r>>2]=w;g[s>>2]=0.0;x=+T(u*u+w*w+0.0);s=f|0;g[s>>2]=t- +g[n>>2];r=f+4|0;g[r>>2]=v- +g[q>>2];p=f+8|0;g[p>>2]=0.0;v=+wB(s);do{if(v<48.0){g[s>>2]=+g[h>>2]- +g[n>>2];g[r>>2]=+g[o>>2]- +g[q>>2];g[p>>2]=0.0;+wB(s);if(x<20.0){g[j>>2]=100.0;break}if((DE(0.0,m,h,j)|0)!=0){break}g[j>>2]=400.0}else{if(x<20.0){g[j>>2]=400.0-(256.0-(v>64.0?256.0:v*4.0));break}else{g[j>>2]=400.0;break}}}while(0);eI(b,s,1,k);xJ(c[b+40>>2]|0,s,+g[j>>2]);g[k+28>>2]=+g[s>>2];g[k+32>>2]=+g[r>>2];g[k+36>>2]=+g[p>>2];m$(a|0,l|0,52)|0;i=e;return}function kI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0.0;h=+g[b>>2]*.1;i=+g[b+4>>2]*.1;j=+g[(c[453954]|0)+16>>2]*.01;k=d+8|0;l=+g[a+8>>2];m=+g[a+4>>2];n=+g[a>>2];o=+g[b+8>>2]*.1;b=0;while(1){p=o-j;q=l+p;if(p<0.0){r=+g[k>>2];if(q>2]=+g[d>>2]-(n+h*o);g[e+4>>2]=+g[d+4>>2]-(m+i*o);g[e+8>>2]=+g[k>>2]-(l+p*o);o=+wB(e);t=1;u=400.0-(400.0-(o>32.0?416.0:o*13.0));g[f>>2]=u;return t|0}else if((s|0)==6){g[e>>2]=0.0;g[e+4>>2]=0.0;g[e+8>>2]=0.0;t=0;u=400.0;g[f>>2]=u;return t|0}return 0}function lI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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.0,w=0.0,x=0,y=0,z=0,A=0,B=0.0,C=0,D=0.0,E=0,F=0.0,G=0,H=0,I=0,J=0;e=i;i=i+128|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+64|0;m=e+72|0;n=m;n$(n|0,0,52)|0;o=d+24|0;p=b|0;q=f|0;g[q>>2]=+g[o>>2]- +g[p>>2];r=d+28|0;s=b+4|0;t=f+4|0;g[t>>2]=+g[r>>2]- +g[s>>2];u=d+32|0;g[f+8>>2]=+g[u>>2]- +g[b+8>>2];eI(b,q,1,m);f=k|0;g[f>>2]=+g[o>>2]- +g[p>>2];d=k+4|0;g[d>>2]=+g[r>>2]- +g[s>>2];s=k+8|0;g[s>>2]=0.0;k=+wB(f)>16.0;v=+g[o>>2];if(k){g[j>>2]=v+ +g[f>>2]*16.0;g[j+4>>2]=+g[r>>2]+ +g[d>>2]*16.0;g[j+8>>2]=+g[u>>2]+ +g[s>>2]*16.0}else{g[j>>2]=v;g[j+4>>2]=+g[r>>2];g[j+8>>2]=+g[u>>2]}u=h|0;if((kI(p,b+12|0,j|0,u,l)|0)==0){g[u>>2]=+g[q>>2];q=h+4|0;g[q>>2]=+g[t>>2];t=h+8|0;g[t>>2]=0.0;g[l>>2]=400.0;w=400.0;x=q;y=t;z=b+40|0;A=c[z>>2]|0;xJ(A,u,w);B=+g[u>>2];C=m+28|0;g[C>>2]=B;D=+g[x>>2];E=m+32|0;g[E>>2]=D;F=+g[y>>2];G=m+36|0;g[G>>2]=F;H=a;m$(H|0,n|0,52)|0;I=52;J=0;i=e;return}else{w=+g[l>>2];x=h+4|0;y=h+8|0;z=b+40|0;A=c[z>>2]|0;xJ(A,u,w);B=+g[u>>2];C=m+28|0;g[C>>2]=B;D=+g[x>>2];E=m+32|0;g[E>>2]=D;F=+g[y>>2];G=m+36|0;g[G>>2]=F;H=a;m$(H|0,n|0,52)|0;I=52;J=0;i=e;return}}function mI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0;e=i;i=i+128|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+64|0;m=e+80|0;n=e+112|0;n$(m|0,0,28)|0;n$(n|0,0,12)|0;o=l|0;wE(d,o);p=d+12|0;q=f|0;g[q>>2]=+g[o>>2]- +g[p>>2];r=l+4|0;s=d+16|0;t=f+4|0;g[t>>2]=+g[r>>2]- +g[s>>2];u=f+8|0;g[u>>2]=0.0;+wB(q);v=+g[p>>2];w=+g[s>>2];f=d+20|0;x=+g[f>>2];y=x+1.0;g[o>>2]=v+ +g[q>>2]*80.0;g[r>>2]=w+ +g[t>>2]*80.0;z=l+8|0;g[z>>2]=x+ +g[u>>2]*80.0;l=k|0;A=k+4|0;B=k+8|0;k=b+92|0;C=0;while(1){if((C|0)>=80){D=5;break}E=C+10|0;x=+(E|0);g[l>>2]=v+x*+g[q>>2];g[A>>2]=w+x*+g[t>>2];g[B>>2]=y+x*+g[u>>2]+1.0;F=WF(l)|0;if((F|0)==(c[k>>2]|0)){C=E}else{D=4;break}}if((D|0)==4){y=+g[p>>2];w=+(C|0);g[o>>2]=y+w*+g[q>>2];v=+g[s>>2];g[r>>2]=v+w*+g[t>>2];g[z>>2]=+g[f>>2]+w*+g[u>>2];G=y;H=v}else if((D|0)==5){G=+g[p>>2];H=+g[s>>2]}s=b|0;p=h|0;g[p>>2]=+g[s>>2]-G;D=b+4|0;f=h+4|0;g[f>>2]=+g[D>>2]-H;z=h+8|0;g[z>>2]=0.0;H=+wB(p);h=j|0;g[h>>2]=+g[s>>2]- +g[o>>2];C=j+4|0;g[C>>2]=+g[D>>2]- +g[r>>2];k=j+8|0;g[k>>2]=0.0;G=+wB(h);if(+g[p>>2]*+g[h>>2]+ +g[f>>2]*+g[C>>2]+ +g[z>>2]*+g[k>>2]<-.8|G<5.0){g[q>>2]=+g[d+24>>2]- +g[s>>2];g[t>>2]=+g[d+28>>2]- +g[D>>2];g[u>>2]=0.0;+wB(q);do{if(H<24.0){d=b+40|0;mJ(c[d>>2]|0);I=d}else{d=b+40|0;if(!(H<32.0)){I=d;break}nJ(c[d>>2]|0);I=d}}while(0);xJ(c[I>>2]|0,q,600.0);c[b+100>>2]=c[b+76>>2]}else{g[q>>2]=+g[o>>2]- +g[s>>2];g[t>>2]=+g[r>>2]- +g[D>>2];g[u>>2]=0.0;+wB(q);xJ(c[b+40>>2]|0,q,400.0-(400.0-(G>80.0?400.0:G*5.0)))}G=+g[q>>2];H=+g[t>>2];v=+g[u>>2];u=a;c[u>>2]=c[m>>2];c[u+4>>2]=c[m+4>>2];c[u+8>>2]=c[m+8>>2];c[u+12>>2]=c[m+12>>2];c[u+16>>2]=c[m+16>>2];c[u+20>>2]=c[m+20>>2];c[u+24>>2]=c[m+24>>2];g[a+28>>2]=G;g[a+32>>2]=H;g[a+36>>2]=v;m=a+40|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];i=e;return}function nI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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.0,v=0.0,w=0.0;e=i;i=i+80|0;f=e|0;h=e+16|0;j=e+32|0;k=e+64|0;n$(j|0,0,28)|0;n$(k|0,0,12)|0;if((c[b+100>>2]|0)==0){l=a;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[l+16>>2]=c[j+16>>2];c[l+20>>2]=c[j+20>>2];c[l+24>>2]=c[j+24>>2];g[a+28>>2]=0.0;g[a+32>>2]=0.0;g[a+36>>2]=0.0;l=a+40|0;c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];c[l+8>>2]=c[k+8>>2];m=28;n=0;o=12;p=0;i=e;return}l=d+24|0;q=f|0;g[q>>2]=+g[l>>2]- +g[b>>2];r=d+28|0;s=f+4|0;g[s>>2]=+g[r>>2]- +g[b+4>>2];t=f+8|0;g[t>>2]=0.0;u=+wB(q);f=h|0;g[f>>2]=+g[l>>2]- +g[d+12>>2];l=h+4|0;g[l>>2]=+g[r>>2]- +g[d+16>>2];d=h+8|0;g[d>>2]=0.0;+wB(f);if(+g[q>>2]*+g[f>>2]+ +g[s>>2]*+g[l>>2]+ +g[t>>2]*+g[d>>2]<-.5&u<24.0){d=a;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];c[d+16>>2]=c[j+16>>2];c[d+20>>2]=c[j+20>>2];c[d+24>>2]=c[j+24>>2];g[a+28>>2]=0.0;g[a+32>>2]=0.0;g[a+36>>2]=0.0;d=a+40|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];m=28;n=0;o=12;p=0;i=e;return}else{xJ(c[b+40>>2]|0,q,800.0);u=+g[q>>2];v=+g[s>>2];w=+g[t>>2];t=a;c[t>>2]=c[j>>2];c[t+4>>2]=c[j+4>>2];c[t+8>>2]=c[j+8>>2];c[t+12>>2]=c[j+12>>2];c[t+16>>2]=c[j+16>>2];c[t+20>>2]=c[j+20>>2];c[t+24>>2]=c[j+24>>2];g[a+28>>2]=u;g[a+32>>2]=v;g[a+36>>2]=w;j=a+40|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];m=28;n=0;o=12;p=0;i=e;return}}function oI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0;e=i;i=i+72|0;f=e|0;h=e+16|0;j=h;n$(j|0,0,52)|0;k=b+96|0;l=c[k>>2]|0;if((l&32|0)!=0){m$(a|0,j|0,52)|0;m=52;n=0;i=e;return}o=f|0;g[o>>2]=+g[d+12>>2]- +g[b>>2];p=f+4|0;g[p>>2]=+g[d+16>>2]- +g[b+4>>2];q=f+8|0;g[q>>2]=(l&4|0)==0?0.0:+g[d+20>>2]- +g[b+8>>2];r=+wB(o);eI(b,o,1,h);d=c[b+40>>2]|0;if(r<30.0){xJ(d,o,200.0)}else{xJ(d,o,400.0)}if((c[k>>2]&4|0)!=0){k=h+20|0;c[k>>2]=c[k>>2]|2}g[h+28>>2]=+g[o>>2];g[h+32>>2]=+g[p>>2];g[h+36>>2]=+g[q>>2];m$(a|0,j|0,52)|0;m=52;n=0;i=e;return}function pI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0,x=0.0,y=0.0,z=0,A=0,B=0.0,C=0.0,D=0,E=0.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.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0;e=i;i=i+200|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+64|0;m=e+80|0;n=e+96|0;o=e+112|0;p=e+128|0;q=e+144|0;r=q;n$(r|0,0,52)|0;s=b|0;a:do{if((TH(s,c[b+36>>2]|0,d)|0)==0){t=+g[s>>2];u=+g[d+24>>2]-t;v=l|0;g[v>>2]=u;w=b+4|0;x=+g[w>>2];y=+g[d+28>>2]-x;z=l+4|0;g[z>>2]=y;A=b+8|0;B=+g[A>>2];C=+g[d+32>>2]-B;D=l+8|0;g[D>>2]=C;E=+T(C*C+(u*u+y*y));if(E<64.0){y=360.0-(360.0-(E>60.0?360.0:E*6.0));F=b+96|0;if((c[F>>2]&4|0)==0){if((bI(b,v,50.0)|0)==0&y>5.0){G=12}}else{if(y>5.0){G=12}}if((G|0)==12){xJ(c[b+40>>2]|0,v,y)}g[q+28>>2]=+g[v>>2];g[q+32>>2]=+g[z>>2];g[q+36>>2]=+g[D>>2];if((c[F>>2]&4|0)!=0){F=q+20|0;c[F>>2]=c[F>>2]|2}g[b+112>>2]=0.0;m$(a|0,r|0,52)|0;H=52;I=0;i=e;return}F=m|0;g[F>>2]=+g[d+12>>2]-t;J=m+4|0;g[J>>2]=+g[d+16>>2]-x;K=d+20|0;L=m+8|0;M=b+96|0;g[L>>2]=(c[M>>2]&4|0)==0?0.0:+g[K>>2]-B;B=+wB(F);n$(k|0,0,12)|0;N=c[d+4>>2]&65535;O=j|0;AD(N,k|0,f|0,h|0,O);do{if((_D(N,O)|0)==0){Tk[c[7092490]&255](1,146024,(P=i,i=i+8|0,c[P>>2]=N,P)|0);i=P;}else{if(+g[j+8>>2]+ +g[h+8>>2]>=+g[K>>2]){break}P=p|0;$H(d,P);Q=n|0;g[Q>>2]=+g[P>>2]- +g[s>>2];P=n+4|0;g[P>>2]=+g[p+4>>2]- +g[w>>2];R=n+8|0;g[R>>2]=(c[M>>2]&4|0)==0?0.0:+g[p+8>>2]- +g[A>>2];x=+wB(Q);do{if(B<20.0|x>2];V=+g[P>>2];W=+g[Q>>2]}else{t=+g[F>>2];y=+g[Q>>2];E=+g[J>>2];u=+g[P>>2];C=+g[L>>2];X=+g[R>>2];if(t*y+E*u+C*X<0.0){S=x;U=X;V=u;W=y;break}S=B;U=C;V=E;W=t}}while(0);g[v>>2]=W;g[z>>2]=V;g[D>>2]=U;eI(b,v,0,q);x=400.0-(400.0-(S>60.0?360.0:S*6.0));do{if((c[M>>2]&4|0)==0){if((bI(b,v,50.0)|0)!=0){break}xJ(c[b+40>>2]|0,v,x)}}while(0);g[q+28>>2]=+g[v>>2];g[q+32>>2]=+g[z>>2];g[q+36>>2]=+g[D>>2];if((c[M>>2]&4|0)==0){break a}R=q+20|0;c[R>>2]=c[R>>2]|2;break a}}while(0);g[v>>2]=+g[F>>2];g[z>>2]=+g[J>>2];g[D>>2]=+g[L>>2];eI(b,v,0,q);x=360.0-(360.0-(B>60.0?360.0:B*6.0));do{if((c[M>>2]&4|0)==0){if(!((bI(b,v,50.0)|0)==0&x>5.0)){break}xJ(c[b+40>>2]|0,v,x)}}while(0);g[q+28>>2]=+g[v>>2];g[q+32>>2]=+g[z>>2];g[q+36>>2]=+g[D>>2];L=q+20|0;J=c[L>>2]|0;if((c[M>>2]&4|0)==0){Y=J}else{F=J|2;c[L>>2]=F;Y=F}c[q+4>>2]=1;c[q+20>>2]=Y|4;m$(a|0,r|0,52)|0;H=52;I=0;i=e;return}else{F=~~(+g[b+8>>2]- +g[d+32>>2]);if(!(+(((F|0)>-1?F:-F|0)|0)<+g[(c[453932]|0)+16>>2])){F=p|0;$H(d,F);L=o|0;g[L>>2]=+g[F>>2]- +g[s>>2];F=o+4|0;g[F>>2]=+g[p+4>>2]- +g[b+4>>2];J=o+8|0;g[J>>2]=0.0;x=+wB(L);if(!(x>10.0)){break}xJ(c[b+40>>2]|0,L,400.0-(400.0-(x>100.0?400.0:x*4.0)));g[q+28>>2]=+g[L>>2];g[q+32>>2]=+g[F>>2];g[q+36>>2]=+g[J>>2];break}J=o|0;g[J>>2]=+g[d+24>>2]- +g[s>>2];F=o+4|0;g[F>>2]=+g[d+28>>2]- +g[b+4>>2];L=o+8|0;g[L>>2]=0.0;+wB(J);if((bI(b,J,100.0)|0)==0){xJ(c[b+40>>2]|0,J,400.0)}g[q+28>>2]=+g[J>>2];g[q+32>>2]=+g[F>>2];g[q+36>>2]=+g[L>>2]}}while(0);m$(a|0,r|0,52)|0;H=52;I=0;i=e;return}function qI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;e=i;i=i+104|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;n$(k|0,0,52)|0;l=f|0;$H(d,l);m=+g[b>>2];n=h|0;g[n>>2]=+g[l>>2]-m;o=+g[b+4>>2];g[h+4>>2]=+g[f+4>>2]-o;p=+g[b+8>>2];q=+g[f+8>>2]-p;g[h+8>>2]=q;h=j|0;g[h>>2]=+g[d+24>>2]-m;g[j+4>>2]=+g[d+28>>2]-o;o=+g[d+32>>2]-p;g[j+8>>2]=o;if(+S(+q)<+S(+o)){+wB(n);xJ(c[b+40>>2]|0,n,300.0);r=a;m$(r|0,k|0,52)|0;s=52;t=0;i=e;return}else{+wB(h);xJ(c[b+40>>2]|0,h,300.0);r=a;m$(r|0,k|0,52)|0;s=52;t=0;i=e;return}}function rI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0.0;f=i;i=i+48|0;h=f|0;j=f+16|0;k=f+32|0;n$(k|0,0,12)|0;l=a+4|0;m=c[l>>2]&65535;if((_D(m,e)|0)==0){Tk[c[7092490]&255](1,184424,(n=i,i=i+8|0,c[n>>2]=m,n)|0);i=n;g[b>>2]=0.0;g[b+4>>2]=0.0;g[b+8>>2]=0.0;g[d>>2]=0.0;g[d+4>>2]=0.0;g[d+8>>2]=0.0;i=f;return}n=h|0;o=j|0;AD(m,k|0,n,o,0);p=(+g[n>>2]+ +g[o>>2])*.5;q=(+g[h+4>>2]+ +g[j+4>>2])*.5;r=(+g[h+8>>2]+ +g[j+8>>2])*.5;g[b>>2]=p;j=b+4|0;g[j>>2]=q;h=b+8|0;g[h>>2]=r;g[d>>2]=p;o=d+4|0;g[o>>2]=q;n=d+8|0;g[n>>2]=r;k=c[l>>2]>>16;l=c[a+8>>2]|0;a=l>>16;m=l&65535;s=m>>>0>32767>>>0?l|-65536:m;if((k&1|0)!=0){g[b>>2]=+(a|0);g[d>>2]=+(s|0);g[e>>2]=p+ +g[e>>2];g[e+4>>2]=q;g[e+8>>2]=r;i=f;return}t=+(a|0);if((k&2|0)==0){g[h>>2]=t;g[n>>2]=+(s|0);g[e>>2]=p;g[e+4>>2]=q;n=e+8|0;g[n>>2]=r+ +g[n>>2];i=f;return}else{g[j>>2]=t;g[o>>2]=+(s|0);g[e>>2]=p;s=e+4|0;g[s>>2]=q+ +g[s>>2];g[e+8>>2]=r;i=f;return}}function sI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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.0,w=0.0,x=0,y=0,z=0.0,A=0.0,B=0,C=0,D=0.0,E=0.0,F=0,G=0.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.0,U=0.0,V=0.0,W=0.0,X=0.0;e=i;i=i+184|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+64|0;m=e+80|0;n=e+96|0;o=e+112|0;p=e+128|0;q=p;n$(q|0,0,52)|0;r=m|0;s=n|0;t=o|0;rI(d,r,s,t);u=b|0;do{if((TH(u,c[b+36>>2]|0,d)|0)==0){v=+g[u>>2];w=+g[d+24>>2]-v;x=f|0;g[x>>2]=w;y=b+4|0;z=+g[y>>2];A=+g[d+28>>2]-z;B=f+4|0;g[B>>2]=A;C=b+8|0;D=+g[C>>2];E=+g[d+32>>2]-D;F=f+8|0;g[F>>2]=E;G=+T(E*E+(w*w+A*A));if(G<64.0){A=360.0-(360.0-(G>60.0?360.0:G*6.0));H=b+96|0;if((c[H>>2]&4|0)==0){if((bI(b,x,50.0)|0)==0&A>5.0){I=12}}else{if(A>5.0){I=12}}if((I|0)==12){xJ(c[b+40>>2]|0,x,A)}g[p+28>>2]=+g[x>>2];g[p+32>>2]=+g[B>>2];g[p+36>>2]=+g[F>>2];if((c[H>>2]&4|0)!=0){H=p+20|0;c[H>>2]=c[H>>2]|2}g[b+112>>2]=0.0;m$(a|0,q|0,52)|0;J=52;K=0;i=e;return}H=h|0;g[H>>2]=+g[d+12>>2]-v;L=h+4|0;g[L>>2]=+g[d+16>>2]-z;M=h+8|0;N=b+96|0;g[M>>2]=(c[N>>2]&4|0)==0?0.0:+g[d+20>>2]-D;D=+wB(H);z=+g[t>>2]- +g[r>>2];g[x>>2]=z;v=+g[o+4>>2]- +g[m+4>>2];g[B>>2]=v;A=+g[o+8>>2]- +g[m+8>>2];g[F>>2]=A;if(+T(A*A+(z*z+v*v))>16.0){g[x>>2]=+g[H>>2];g[B>>2]=+g[L>>2];g[F>>2]=+g[M>>2];eI(b,x,0,p);v=360.0-(360.0-(D>60.0?360.0:D*6.0));do{if((c[N>>2]&4|0)==0){if(!((bI(b,x,50.0)|0)==0&v>5.0)){break}xJ(c[b+40>>2]|0,x,v)}}while(0);g[p+28>>2]=+g[x>>2];g[p+32>>2]=+g[B>>2];g[p+36>>2]=+g[F>>2];O=p+20|0;P=c[O>>2]|0;if((c[N>>2]&4|0)==0){Q=P}else{R=P|2;c[O>>2]=R;Q=R}c[p+4>>2]=2;c[p+20>>2]=Q|4;m$(a|0,q|0,52)|0;J=52;K=0;i=e;return}R=l|0;$H(d,R);O=j|0;g[O>>2]=+g[R>>2]- +g[u>>2];R=j+4|0;g[R>>2]=+g[l+4>>2]- +g[y>>2];P=j+8|0;g[P>>2]=(c[N>>2]&4|0)==0?0.0:+g[l+8>>2]- +g[C>>2];v=+wB(O);do{if(D<20.0|v>2];V=+g[R>>2];W=+g[O>>2]}else{z=+g[H>>2];A=+g[O>>2];G=+g[L>>2];w=+g[R>>2];E=+g[M>>2];X=+g[P>>2];if(z*A+G*w+E*X<0.0){S=v;U=X;V=w;W=A;break}S=D;U=E;V=G;W=z}}while(0);g[x>>2]=W;g[B>>2]=V;g[F>>2]=U;eI(b,x,0,p);D=400.0-(400.0-(S>60.0?360.0:S*6.0));do{if((c[N>>2]&4|0)==0){if((bI(b,x,50.0)|0)!=0){break}xJ(c[b+40>>2]|0,x,D)}}while(0);g[p+28>>2]=+g[x>>2];g[p+32>>2]=+g[B>>2];g[p+36>>2]=+g[F>>2];if((c[N>>2]&4|0)==0){break}P=p+20|0;c[P>>2]=c[P>>2]|2}else{D=+g[t>>2]- +g[s>>2];g[f>>2]=D;v=+g[o+4>>2]- +g[n+4>>2];g[f+4>>2]=v;z=+g[o+8>>2]- +g[n+8>>2];g[f+8>>2]=z;if(!(+T(z*z+(D*D+v*v))<24.0)){P=l|0;$H(d,P);M=k|0;g[M>>2]=+g[P>>2]- +g[u>>2];P=k+4|0;g[P>>2]=+g[l+4>>2]- +g[b+4>>2];R=k+8|0;g[R>>2]=0.0;v=+wB(M);if(!(v>10.0)){break}xJ(c[b+40>>2]|0,M,400.0-(400.0-(v>100.0?400.0:v*4.0)));g[p+28>>2]=+g[M>>2];g[p+32>>2]=+g[P>>2];g[p+36>>2]=+g[R>>2];break}R=k|0;g[R>>2]=+g[d+24>>2]- +g[u>>2];P=k+4|0;g[P>>2]=+g[d+28>>2]- +g[b+4>>2];M=k+8|0;g[M>>2]=0.0;+wB(R);if((bI(b,R,100.0)|0)==0){xJ(c[b+40>>2]|0,R,400.0)}g[p+28>>2]=+g[R>>2];g[p+32>>2]=+g[P>>2];g[p+36>>2]=+g[M>>2]}}while(0);m$(a|0,q|0,52)|0;J=52;K=0;i=e;return}function tI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0.0,B=0.0,C=0;e=i;i=i+136|0;f=e|0;h=e+32|0;j=e+48|0;k=e+64|0;l=e+80|0;m=e+96|0;n=e+120|0;n$(m|0,0,20)|0;n$(n|0,0,12)|0;o=h|0;p=f|0;rI(d,e+16|0,o,p);q=+g[p>>2]- +g[o>>2];o=j|0;g[o>>2]=q;r=+g[f+4>>2]- +g[h+4>>2];p=j+4|0;g[p>>2]=r;s=+g[f+8>>2]- +g[h+8>>2];h=j+8|0;g[h>>2]=s;do{if(+T(s*s+(q*q+r*r))<16.0){j=k|0;g[j>>2]=+g[d+24>>2]- +g[b>>2];g[k+4>>2]=+g[d+28>>2]- +g[b+4>>2];f=b+96|0;g[k+8>>2]=(c[f>>2]&4|0)==0?0.0:+g[d+32>>2]- +g[b+8>>2];t=+wB(j);u=360.0-(360.0-(t>60.0?360.0:t*6.0));if(u>5.0){xJ(c[b+40>>2]|0,o,u);v=+g[o>>2];w=+g[p>>2];x=+g[h>>2]}else{v=q;w=r;x=s}y=x;z=(c[f>>2]|0)>>>1&2;A=v;B=w}else{f=l|0;$H(d,f);j=k|0;g[j>>2]=+g[f>>2]- +g[b>>2];f=k+4|0;g[f>>2]=+g[l+4>>2]- +g[b+4>>2];C=k+8|0;g[C>>2]=(c[b+96>>2]&4|0)==0?0.0:+g[l+8>>2]- +g[b+8>>2];u=+wB(j);if(!(u>5.0)){y=0.0;z=0;A=0.0;B=0.0;break}xJ(c[b+40>>2]|0,j,400.0-(400.0-(u>100.0?400.0:u*4.0)));y=+g[C>>2];z=0;A=+g[j>>2];B=+g[f>>2]}}while(0);b=a;c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2];c[b+16>>2]=c[m+16>>2];c[a+20>>2]=z;c[a+24>>2]=0;g[a+28>>2]=A;g[a+32>>2]=B;g[a+36>>2]=y;z=a+40|0;c[z>>2]=c[n>>2];c[z+4>>2]=c[n+4>>2];c[z+8>>2]=c[n+8>>2];i=e;return}function uI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0.0,Q=0.0,R=0.0,U=0;e=i;i=i+336|0;f=e|0;h=e+144|0;j=e+200|0;k=e+216|0;l=e+232|0;m=e+248|0;n=h;n$(n|0,0,52)|0;o=b+96|0;p=c[o>>2]|0;q=+g[(c[4938810]|0)+16>>2];if((p&256|0)!=0){if(q!=0.0){gJ(c[b+40>>2]|0,c[(c[5493940]|0)+4>>2]|0);r=c[o>>2]|0}else{r=p}c[o>>2]=r&-129;m$(a|0,n|0,52)|0;s=52;t=0;i=e;return}if((~~q|0)==0){c[h+24>>2]=~~+g[(c[46934]|0)+16>>2];c[h+20>>2]=16}do{if((p&128|0)==0){g[b+104>>2]=+mE();r=b|0;q=+g[r>>2];u=j|0;g[u>>2]=+g[d+12>>2]-q;v=b+4|0;w=+g[v>>2];x=j+4|0;g[x>>2]=+g[d+16>>2]-w;y=b+8|0;z=+g[y>>2];A=j+8|0;g[A>>2]=(c[o>>2]&4|0)==0?0.0:+g[d+20>>2]-z;B=b+24|0;C=q+ +g[B>>2];D=l|0;g[D>>2]=C;E=b+28|0;q=w+ +g[E>>2];F=l+4|0;g[F>>2]=q;G=b+32|0;w=z+ +g[G>>2];H=l+8|0;g[H>>2]=w;I=d+24|0;J=k|0;g[J>>2]=+g[I>>2]-C;K=d+28|0;g[k+4>>2]=+g[K>>2]-q;L=d+32|0;g[k+8>>2]=+g[L>>2]-w;w=+wB(u);M=h+40|0;AB(J,M);J=h+20|0;c[J>>2]=c[J>>2]|1;do{if(w<5.0){q=+g[M>>2];C=+g[b+52>>2];z=q-C;do{if(q>C){if(!(z>180.0)){N=z;break}N=z+-360.0}else{if(!(z<-180.0)){N=z;break}N=z+360.0}}while(0);if(!(+S(+N)<2.0)){O=49;break}z=+g[h+44>>2];C=+g[b+56>>2];q=z-C;do{if(z>C){if(!(q>180.0)){P=q;break}P=q+-360.0}else{if(!(q<-180.0)){P=q;break}P=q+360.0}}while(0);if(!(+S(+P)<2.0)){O=49;break}g[D>>2]=+g[r>>2]+ +g[B>>2];g[F>>2]=+g[v>>2]+ +g[E>>2];g[H>>2]=+g[y>>2]+ +g[G>>2];xD(m,D,0,0,I,c[b+36>>2]|0,1);q=+g[m+16>>2];C=+g[m+20>>2];z=+g[I>>2]- +g[m+12>>2];g[u>>2]=z;Q=+g[K>>2]-q;g[x>>2]=Q;q=+g[L>>2]-C;g[A>>2]=q;if(+T(q*q+(z*z+Q*Q))>16.0){c[h>>2]=1;m$(a|0,n|0,52)|0;s=52;t=0;i=e;return}J=c[b+40>>2]|0;if(+g[(c[4938810]|0)+16>>2]!=0.0){gJ(J,c[(c[5493938]|0)+4>>2]|0)}else{iJ(J)}c[o>>2]=c[o>>2]|128;g[b+108>>2]=999999.0}else{O=49}}while(0);if((O|0)==49){if(w<70.0){R=300.0-(300.0-w*4.0)}else{R=400.0}eI(b,u,1,h);xJ(c[b+40>>2]|0,u,R);g[h+28>>2]=+g[u>>2];g[h+32>>2]=+g[x>>2];g[h+36>>2]=+g[A>>2]}L=WF(r)|0;if((L|0)==0){break}if((L|0)==(c[b+92>>2]|0)){break}g[b+112>>2]=0.0}else{a:do{if((p&64|0)==0){L=cE(0)|0;if((L|0)==0){U=0;break}K=f+128|0;I=L;while(1){L=YD(I)|0;if((L|0)==(~~+g[(c[5312732]|0)+16>>2]|0)){WD(I,f);if((c[K>>2]|0)==(~~+g[(c[46934]|0)+16>>2]|0)){U=1;break a}}L=cE(I)|0;if((L|0)==0){U=0;break}else{I=L}}}else{U=2}}while(0);w=+g[d+24>>2]- +g[b>>2];g[j>>2]=w;Q=+g[d+28>>2]- +g[b+4>>2];g[j+4>>2]=Q;g[j+8>>2]=0.0;z=+T(w*w+Q*Q+0.0);r=(U|0)!=0;b:do{if(r&z<48.0){if(!(+g[b+108>>2]-z<1.0)){break}if(+g[(c[4938810]|0)+16>>2]!=0.0){gJ(c[b+40>>2]|0,c[(c[5493940]|0)+4>>2]|0)}c[o>>2]=c[o>>2]&-385|256;g[b+112>>2]=0.0;m$(a|0,n|0,52)|0;s=52;t=0;i=e;return}else{do{if(r){if((U|0)==2){if(z>+g[b+108>>2]+-2.0){break}}g[b+104>>2]=+mE();break b}}while(0);Q=+g[b+104>>2];if(!(Q<+mE()+-.4)){break}if(+g[(c[4938810]|0)+16>>2]!=0.0){gJ(c[b+40>>2]|0,c[(c[5493940]|0)+4>>2]|0)}c[o>>2]=c[o>>2]&-385|256;g[b+112>>2]=0.0;m$(a|0,n|0,52)|0;s=52;t=0;i=e;return}}while(0);if((~~+g[(c[4938810]|0)+16>>2]|0)==0){iJ(c[b+40>>2]|0)}g[b+108>>2]=z}}while(0);m$(a|0,n|0,52)|0;s=52;t=0;i=e;return}function vI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0.0,v=0.0,w=0;e=i;i=i+72|0;f=e|0;h=e+16|0;j=h;n$(j|0,0,52)|0;k=b|0;l=f|0;g[l>>2]=+g[d+12>>2]- +g[k>>2];m=b+4|0;n=f+4|0;g[n>>2]=+g[d+16>>2]- +g[m>>2];o=f+8|0;g[o>>2]=0.0;p=+wB(l);f=h+40|0;AB(l,f);g[f>>2]=90.0;do{if(p<5.0){q=+g[b+52>>2];r=90.0-q;do{if(q<90.0){if(!(r>180.0)){s=r;break}s=r+-360.0}else{if(!(r<-180.0)){s=r;break}s=r+360.0}}while(0);if(!(+S(+s)<5.0)){t=15;break}r=+g[h+44>>2];q=+g[b+56>>2];u=r-q;do{if(r>q){if(!(u>180.0)){v=u;break}v=u+-360.0}else{if(!(u<-180.0)){v=u;break}v=u+360.0}}while(0);if(!(+S(+v)<5.0)){t=15;break}g[l>>2]=+g[d+24>>2]- +g[k>>2];g[n>>2]=+g[d+28>>2]- +g[m>>2];g[o>>2]=0.0;+wB(l);w=b+40|0;mJ(c[w>>2]|0);iJ(c[w>>2]|0);xJ(c[w>>2]|0,l,800.0);c[b+100>>2]=c[b+76>>2]}else{t=15}}while(0);if((t|0)==15){xJ(c[b+40>>2]|0,l,400.0-(400.0-(p>80.0?400.0:p*5.0)))}AB(l,f);g[f>>2]=90.0;t=b+40|0;yJ(c[t>>2]|0,f);f=h+20|0;c[f>>2]=c[f>>2]|8;hJ(c[t>>2]|0,~~+g[(c[46932]|0)+16>>2]);c[h+24>>2]=~~+g[(c[46932]|0)+16>>2];c[f>>2]=c[f>>2]|16;g[h+28>>2]=+g[l>>2];g[h+32>>2]=+g[n>>2];g[h+36>>2]=+g[o>>2];m$(a|0,j|0,52)|0;i=e;return}function wI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0.0,v=0;e=i;i=i+72|0;f=e|0;h=e+16|0;j=h;n$(j|0,0,52)|0;k=b|0;l=f|0;g[l>>2]=+g[d+12>>2]- +g[k>>2];m=b+4|0;n=f+4|0;g[n>>2]=+g[d+16>>2]- +g[m>>2];o=f+8|0;g[o>>2]=0.0;p=+wB(l);f=h+40|0;do{if(p<5.0){q=+g[b+52>>2];r=0.0-q;do{if(q<0.0){if(!(r>180.0)){s=r;break}s=r+-360.0}else{if(!(r<-180.0)){s=r;break}s=r+360.0}}while(0);if(!(+S(+s)<5.0)){t=15;break}r=+g[b+56>>2];q=0.0-r;do{if(r<0.0){if(!(q>180.0)){u=q;break}u=q+-360.0}else{if(!(q<-180.0)){u=q;break}u=q+360.0}}while(0);if(!(+S(+u)<5.0)){t=15;break}g[l>>2]=+g[d+24>>2]- +g[k>>2];g[n>>2]=+g[d+28>>2]- +g[m>>2];g[o>>2]=0.0;+wB(l);v=b+40|0;mJ(c[v>>2]|0);iJ(c[v>>2]|0);xJ(c[v>>2]|0,l,800.0);c[b+100>>2]=c[b+76>>2]}else{t=15}}while(0);if((t|0)==15){xJ(c[b+40>>2]|0,l,400.0-(400.0-(p>80.0?400.0:p*5.0)))}AB(l,f);g[f>>2]=90.0;t=b+40|0;yJ(c[t>>2]|0,f);f=h+20|0;c[f>>2]=c[f>>2]|8;hJ(c[t>>2]|0,~~+g[(c[46936]|0)+16>>2]);c[h+24>>2]=~~+g[(c[46936]|0)+16>>2];c[f>>2]=c[f>>2]|16;g[h+28>>2]=+g[l>>2];g[h+32>>2]=+g[n>>2];g[h+36>>2]=+g[o>>2];m$(a|0,j|0,52)|0;i=e;return}function xI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0,w=0.0;e=i;i=i+72|0;f=e|0;h=e+16|0;j=e+24|0;k=e+56|0;n$(j|0,0,28)|0;n$(k|0,0,12)|0;if((c[b+100>>2]|0)==0){l=a;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[l+16>>2]=c[j+16>>2];c[l+20>>2]=c[j+20>>2];c[l+24>>2]=c[j+24>>2];g[a+28>>2]=0.0;g[a+32>>2]=0.0;g[a+36>>2]=0.0;l=a+40|0;c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];c[l+8>>2]=c[k+8>>2];m=28;n=0;o=12;p=0;i=e;return}l=b|0;q=d+24|0;r=f|0;if((kI(l,b+12|0,q,r,h)|0)==0){g[r>>2]=+g[q>>2]- +g[l>>2];l=f+4|0;g[l>>2]=+g[d+28>>2]- +g[b+4>>2];d=f+8|0;g[d>>2]=0.0;+wB(r);g[h>>2]=400.0;s=400.0;t=l;u=d}else{s=+g[h>>2];t=f+4|0;u=f+8|0}xJ(c[b+40>>2]|0,r,s);s=+g[r>>2];v=+g[t>>2];w=+g[u>>2];u=a;c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];c[u+16>>2]=c[j+16>>2];c[u+20>>2]=c[j+20>>2];c[u+24>>2]=c[j+24>>2];g[a+28>>2]=s;g[a+32>>2]=v;g[a+36>>2]=w;j=a+40|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];m=28;n=0;o=12;p=0;i=e;return}function yI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0;e=i;i=i+80|0;f=e|0;h=e+8|0;j=e+24|0;k=j;n$(k|0,0,52)|0;l=b|0;m=d+24|0;n=h|0;if((kI(l,b+12|0,m,n,f)|0)==0){g[n>>2]=+g[m>>2]- +g[l>>2];l=h+4|0;g[l>>2]=+g[d+28>>2]- +g[b+4>>2];d=h+8|0;g[d>>2]=0.0;+wB(n);g[f>>2]=400.0;o=400.0;p=l;q=d}else{o=+g[f>>2];p=h+4|0;q=h+8|0}eI(b,n,1,j);xJ(c[b+40>>2]|0,n,o);g[j+28>>2]=+g[n>>2];g[j+32>>2]=+g[p>>2];g[j+36>>2]=+g[q>>2];m$(a|0,k|0,52)|0;i=e;return}function zI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;e=i;i=i+72|0;f=e|0;h=e+56|0;j=f;n$(j|0,0,52)|0;k=b|0;l=h|0;g[l>>2]=+g[d>>2]- +g[k>>2];m=b+4|0;n=h+4|0;g[n>>2]=+g[d+4>>2]- +g[m>>2];o=b+96|0;if((c[o>>2]&4|0)==0){g[h+8>>2]=0.0;c[f+16>>2]=2}else{g[h+8>>2]=+g[d+8>>2]- +g[b+8>>2];c[f+16>>2]=8}p=+wB(l);q=400.0-(400.0-(p>100.0?400.0:p*4.0));eI(b,l,1,f);xJ(c[b+40>>2]|0,l,q<10.0?0.0:q);g[f+28>>2]=+g[l>>2];g[f+32>>2]=+g[n>>2];g[f+36>>2]=+g[h+8>>2];if((c[o>>2]&4|0)!=0){AB(l,f+40|0);l=f+20|0;c[l>>2]=c[l>>2]|2}c[b+76>>2]=0;c[b+68>>2]=0;c[b+72>>2]=c[d+12>>2];g[b+80>>2]=+g[k>>2];g[b+84>>2]=+g[m>>2];g[b+88>>2]=+g[b+8>>2];m$(a|0,j|0,52)|0;i=e;return}function AI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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,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,_=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.0,xa=0.0,ya=0.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.0,Qa=0;f=i;i=i+2328|0;h=f|0;j=f+56|0;k=f+112|0;l=f+168|0;m=f+224|0;n=f+280|0;o=f+336|0;p=f+392|0;q=f+408|0;r=f+424|0;s=f+440|0;t=f+528|0;u=f+576|0;v=f+584|0;w=f+632|0;x=f+680|0;y=f+736|0;z=f+792|0;A=f+848|0;B=f+904|0;C=f+960|0;D=f+1016|0;E=f+1072|0;F=f+1128|0;G=f+1184|0;H=f+1240|0;I=f+1296|0;J=f+1352|0;K=f+1408|0;L=f+1464|0;M=f+1520|0;N=f+1576|0;O=f+1640|0;P=f+1656|0;Q=f+1712|0;R=f+1768|0;S=f+1824|0;T=f+1880|0;U=f+1936|0;V=f+1992|0;W=f+2048|0;X=f+2104|0;Y=f+2160|0;Z=f+2216|0;_=f+2272|0;$=v;aa=a|0;ba=a+4|0;ca=a+8|0;da=a+12|0;ea=a+16|0;fa=a+20|0;n$(a|0,0,24)|0;if((b-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,128368,(ga=i,i=i+8|0,c[ga>>2]=b,ga)|0);i=ga;ha=44;ia=0;ja=44;ka=0;i=f;return}la=c[28369656+(b<<2)>>2]|0;if((la|0)==0){Tk[c[7092490]&255](4,172200,(ga=i,i=i+8|0,c[ga>>2]=b,ga)|0);i=ga;ha=44;ia=0;ja=44;ka=0;i=f;return}b=la+76|0;KF(c[b>>2]|0,t);do{if((c[t+36>>2]&16777215|0)!=14){ma=la+96|0;na=c[ma>>2]|0;if((na&128|0)==0){if(!(+g[la+104>>2]!=0.0)){break}}if(+g[(c[4938810]|0)+16>>2]!=0.0){gJ(c[la+40>>2]|0,c[(c[5493940]|0)+4>>2]|0);oa=c[ma>>2]|0}else{oa=na}c[ma>>2]=oa&-129;g[la+104>>2]=0.0}}while(0);if((d|0)==0){c[aa>>2]=1;ha=44;ia=0;ja=44;ka=0;i=f;return}oa=la+96|0;c[oa>>2]=c[oa>>2]&-13;t=la|0;ma=la+48|0;na=la+36|0;pa=(uE(t,c[ma>>2]|0,c[na>>2]|0)|0)==0;qa=c[oa>>2]|0;if(pa){ra=qa}else{pa=qa|2;c[oa>>2]=pa;ra=pa}do{if((ra&2|0)!=0){pa=p|0;qa=q|0;RF(c[ma>>2]|0,pa,qa);sa=r|0;g[sa>>2]=+g[t>>2];g[r+4>>2]=+g[la+4>>2];g[r+8>>2]=+g[la+8>>2]+-3.0;xD(s,t,pa,qa,sa,c[na>>2]|0,65537);sa=c[s+80>>2]|0;qa=(c[s+4>>2]|0)!=0|(sa|0)==1022|(sa|0)==1023?-1:sa;if((qa|0)==-1){break}sa=XD(qa)|0;if(!(sa>>>0<256>>>0)){break}pa=c[19817456+(sa<<2)>>2]|0;if((pa|0)==2){KF(c[b>>2]|0,v);ta=v+36|0;if((c[ta>>2]&16777215|0)==19){if((c[v+4>>2]&65535|0)!=(sa|0)){ua=38}}else{ua=38}if((ua|0)==38){va=MF(0,sa)|0;if((va|0)==0){if((c[7092714]|0)!=0){Tk[c[7092490]&255](1,172624,(ga=i,i=i+8|0,c[ga>>2]=c[la+40>>2],ga)|0);i=ga}c[ca>>2]=1;c[da>>2]=qa;c[fa>>2]=c[fa>>2]|32;ha=44;ia=0;ja=44;ka=0;i=f;return}KF(va,v);c[b>>2]=va;wa=+mE();va=c[ta>>2]|0;switch(va&16777215|0){case 6:{xa=6.0;break};case 11:{xa=10.0;break};case 14:{xa=8.0;break};case 12:{xa=6.0;break};case 13:{xa=6.0;break};case 18:{xa=10.0;break};case 19:{xa=10.0;break};case 2:case 3:case 4:case 7:case 5:case 8:case 9:case 10:{xa=5.0;break};default:{Tk[c[7092490]&255](3,180672,(ga=i,i=i+8|0,c[ga>>2]=va,ga)|0);i=ga;xa=8.0}}g[la+112>>2]=wa+xa}c[fa>>2]=c[fa>>2]|64;break}else if((pa|0)==1){KF(c[b>>2]|0,v);va=v+36|0;if((c[va>>2]&16777215|0)==11){if((c[v+4>>2]&65535|0)!=(sa|0)){ua=21}}else{ua=21}if((ua|0)==21){ta=MF(0,sa)|0;if((ta|0)==0){if((c[7092714]|0)!=0){Tk[c[7092490]&255](1,175992,(ga=i,i=i+8|0,c[ga>>2]=c[la+40>>2],ga)|0);i=ga}c[ca>>2]=1;c[da>>2]=qa;c[fa>>2]=c[fa>>2]|32;ha=44;ia=0;ja=44;ka=0;i=f;return}KF(ta,v);c[b>>2]=ta;wa=+mE();ta=c[va>>2]|0;switch(ta&16777215|0){case 19:{ya=10.0;break};case 2:case 3:case 4:case 7:case 5:case 8:case 9:case 10:{ya=5.0;break};case 6:{ya=6.0;break};case 11:{ya=10.0;break};case 14:{ya=8.0;break};case 12:{ya=6.0;break};case 13:{ya=6.0;break};case 18:{ya=10.0;break};default:{Tk[c[7092490]&255](3,180672,(ga=i,i=i+8|0,c[ga>>2]=ta,ga)|0);i=ga;ya=8.0}}g[la+112>>2]=wa+ya}c[fa>>2]=c[fa>>2]|128;break}else{if(!((pa-3|0)>>>0<2>>>0)){c[ca>>2]=1;c[da>>2]=qa;c[fa>>2]=c[fa>>2]|32;ha=44;ia=0;ja=44;ka=0;i=f;return}pa=RH(t)|0;c[la+64>>2]=pa;if((ME(pa)|0)!=0){break}c[ca>>2]=1;c[da>>2]=qa;c[fa>>2]=c[fa>>2]|32;ha=44;ia=0;ja=44;ka=0;i=f;return}}}while(0);if((vE(t)|0)!=0){c[oa>>2]=c[oa>>2]|4}s=(tE(t)|0)==0;na=c[oa>>2]|0;if(s){za=na}else{s=na|8;c[oa>>2]=s;za=s}a:do{if((za&14|0)==0){s=la+44|0;na=O|0;g[na>>2]=+g[t>>2]+ +g[la+12>>2]*+g[s>>2]*-2.0;ma=la+4|0;g[O+4>>2]=+g[ma>>2]+ +g[la+16>>2]*+g[s>>2]*-2.0;ra=la+8|0;qa=la+20|0;g[O+8>>2]=+g[ra>>2]+ +g[qa>>2]*+g[s>>2]*-2.0;s=la+72|0;pa=la+68|0;ta=la+116|0;va=la+120|0;sa=la+124|0;Aa=la+128|0;Ba=la+768|0;Ca=v+36|0;Da=aG(t,na,N|0,0,16)|0;Ea=0;b:while(1){Fa=Da;while(1){Ga=Fa-1|0;if((Fa|0)<=0){Ha=Ea;break b}Ia=N+(Ga<<2)|0;if((PE(c[Ia>>2]|0)|0)==0){Fa=Ga}else{break}}Ja=YH(na,c[Ia>>2]|0,c[s>>2]|0,c[pa>>2]|0,ta,va,sa,d,262144,Aa,c[Ba>>2]|0,0)|0;if((Ja|0)!=0){ua=121;break}Fa=LF(c[Ia>>2]|0,0)|0;if((Fa|0)==0){Da=Ga;Ea=1;continue}else{Ka=Fa}while(1){KF(Ka,v);if((c[Ca>>2]&16777215|0)==18){c[b>>2]=Ka;c[pa>>2]=c[Ia>>2]}Fa=LF(c[Ia>>2]|0,Ka)|0;if((Fa|0)==0){Da=Ga;Ea=1;continue b}else{Ka=Fa}}}if((ua|0)==121){c[b>>2]=Ja;c[pa>>2]=c[Ia>>2];Ha=1}do{if((c[7092714]|0)==0|(Ha|0)==0){ua=129}else{Ea=c[b>>2]|0;if((Ea|0)!=0){La=Ea;break}Tk[c[7092490]&255](1,169432,(ga=i,i=i+8|0,c[ga>>2]=c[la+40>>2],ga)|0);i=ga;ua=129}}while(0);if((ua|0)==129){pa=c[b>>2]|0;if((pa|0)==0){break}else{La=pa}}KF(La,v);pa=c[Ca>>2]|0;c[ea>>2]=pa;Ea=pa&16777215;switch(Ea|0){case 2:{fI(P,la,v);m$(a|0,P|0,52)|0;break};case 4:{pa=k;n$(pa|0,0,52)|0;if(+g[qa>>2]<250.0){Da=p|0;g[Da>>2]=+g[v+24>>2]- +g[t>>2];Ba=p+4|0;g[Ba>>2]=+g[v+28>>2]- +g[ma>>2];Aa=p+8|0;g[Aa>>2]=0.0;eI(la,Da,1,k);xJ(c[la+40>>2]|0,Da,400.0);g[k+28>>2]=+g[Da>>2];g[k+32>>2]=+g[Ba>>2];g[k+36>>2]=+g[Aa>>2]}Aa=Q;m$(Aa|0,pa|0,52)|0;m$(a|0,Aa|0,52)|0;break};case 6:{n$(r|0,0,12)|0;Aa=j;n$(Aa|0,0,52)|0;pa=p|0;g[pa>>2]=+g[v+24>>2]- +g[t>>2];Ba=p+4|0;g[Ba>>2]=+g[v+28>>2]- +g[ma>>2];Da=p+8|0;g[Da>>2]=+g[v+32>>2]- +g[ra>>2];+wB(pa);sa=q|0;g[sa>>2]=+g[pa>>2];g[q+4>>2]=+g[Ba>>2];g[q+8>>2]=+g[Da>>2]*3.0;AB(sa,j+40|0);sa=la+40|0;xJ(c[sa>>2]|0,r|0,0.0);tJ(c[sa>>2]|0);sa=j+20|0;c[sa>>2]=c[sa>>2]|1;g[j+28>>2]=+g[pa>>2];g[j+32>>2]=+g[Ba>>2];g[j+36>>2]=+g[Da>>2];Da=R;m$(Da|0,Aa|0,52)|0;m$(a|0,Da|0,52)|0;break};case 7:{lI(S,la,v);m$(a|0,S|0,52)|0;break};case 5:{nI(T,la,v);m$(a|0,T|0,52)|0;break};case 8:{Da=h;n$(Da|0,0,52)|0;Aa=p|0;g[Aa>>2]=+g[v+12>>2]- +g[t>>2];Ba=p+4|0;g[Ba>>2]=+g[v+16>>2]- +g[ma>>2];pa=p+8|0;g[pa>>2]=+g[v+20>>2]- +g[ra>>2];+wB(Aa);eI(la,Aa,1,h);xJ(c[la+40>>2]|0,Aa,400.0);g[h+28>>2]=+g[Aa>>2];g[h+32>>2]=+g[Ba>>2];g[h+36>>2]=+g[pa>>2];AB(Aa,h+40|0);Aa=h+20|0;c[Aa>>2]=c[Aa>>2]|2;Aa=U;m$(Aa|0,Da|0,52)|0;m$(a|0,Aa|0,52)|0;break};case 9:{iI(V,la,v);m$(a|0,V|0,52)|0;break};case 11:{qI(W,la,v);m$(a|0,W|0,52)|0;break};case 14:{uI(X,la,v);m$(a|0,X|0,52)|0;break};case 12:case 13:{xI(Y,la,v);m$(a|0,Y|0,52)|0;break};case 18:{yI(Z,la,v);m$(a|0,Z|0,52)|0;break};case 19:{tI(_,la,v);m$(a|0,_|0,52)|0;break};case 3:case 10:{break};default:{Tk[c[7092490]&255](4,166016,(ga=i,i=i+8|0,c[ga>>2]=Ea,ga)|0);i=ga}}c[ea>>2]=c[Ca>>2]}else{KF(c[b>>2]|0,w);Ea=RH(t)|0;Aa=la+64|0;c[Aa>>2]=Ea;if((Ea|0)==0){c[aa>>2]=1;c[ca>>2]=1;c[da>>2]=0;c[ba>>2]=8;ha=44;ia=0;ja=44;ka=0;i=f;return}Da=d+12|0;if((Ea|0)==(c[Da>>2]|0)){zI(x,la,d);m$(a|0,x|0,52)|0;ha=44;ia=0;ja=44;ka=0;i=f;return}Ea=c[b>>2]|0;do{if((Ea|0)==0){ua=79}else{KF(Ea,v);pa=v+36|0;if(((lF(c[pa>>2]|0)|0)&e|0)==0){ua=79;break}Ba=c[pa>>2]&16777215;if((Ba|0)==11|(Ba|0)==19){if((c[fa>>2]&192|0)!=0){g[la+112>>2]=+mE()+5.0}if((c[Aa>>2]|0)==(c[v>>2]|0)){ua=79;break}ya=+g[la+112>>2];if(ya<+mE()){ua=79;break}}else if((Ba|0)==14){ya=+g[la+112>>2];if(ya<+mE()){ua=79;break}if((c[oa>>2]&256|0)!=0){ua=79;break}}else{if((c[la+72>>2]|0)!=(c[Da>>2]|0)){ua=79;break}ya=+g[la+112>>2];if(ya<+mE()){ua=79;break}if((c[la+68>>2]|0)!=(c[Aa>>2]|0)){ua=79;break}}c[u>>2]=0;Ma=Ea;Na=la+72|0;Oa=la+68|0;ua=96}}while(0);do{if((ua|0)==79){c[u>>2]=0;ME(c[Aa>>2]|0)|0;Ea=la+72|0;Ca=la+68|0;ra=la+116|0;ma=la+120|0;qa=la+124|0;Ba=YH(t,c[Aa>>2]|0,c[Ea>>2]|0,c[Ca>>2]|0,ra,ma,qa,d,e,la+128|0,c[la+768>>2]|0,u)|0;c[la+92>>2]=c[Aa>>2];c[la+100>>2]=0;c[oa>>2]=c[oa>>2]&-257;if((Ba|0)==0){c[b>>2]=0;c[Ea>>2]=c[Da>>2];c[Ca>>2]=c[Aa>>2];break}KF(Ba,v);ya=+mE();pa=c[v+36>>2]|0;switch(pa&16777215|0){case 6:{Pa=6.0;break};case 11:{Pa=10.0;break};case 14:{Pa=8.0;break};case 12:{Pa=6.0;break};case 13:{Pa=6.0;break};case 18:{Pa=10.0;break};case 19:{Pa=10.0;break};case 2:case 3:case 4:case 7:case 5:case 8:case 9:case 10:{Pa=5.0;break};default:{Tk[c[7092490]&255](3,180672,(ga=i,i=i+8|0,c[ga>>2]=pa,ga)|0);i=ga;Pa=8.0}}g[la+112>>2]=ya+Pa;pa=(c[ra>>2]|0)==(Ba|0);ya=+g[ma>>2];xa=+mE();if(!pa){if(!(ya>2]=Ba;g[ma>>2]=+mE()+6.0;c[qa>>2]=1;Ma=Ba;Na=Ea;Oa=Ca;ua=96;break}if(ya>xa){Qa=(c[qa>>2]|0)+1|0}else{Qa=1}c[qa>>2]=Qa;g[ma>>2]=+mE()+6.0;Ma=Ba;Na=Ea;Oa=Ca;ua=96}}while(0);do{if((ua|0)==96){c[b>>2]=Ma;c[Na>>2]=c[Da>>2];c[Oa>>2]=c[Aa>>2];if((Ma|0)==0){break}KF(Ma,v);Ca=v+36|0;Ea=c[Ca>>2]|0;c[ea>>2]=Ea;Ba=Ea&16777215;switch(Ba|0){case 2:{fI(y,la,v);m$(a|0,y|0,52)|0;break};case 3:{Ea=o;n$(Ea|0,0,52)|0;ma=p|0;g[ma>>2]=+g[v+24>>2]- +g[t>>2];qa=p+4|0;g[qa>>2]=+g[v+28>>2]- +g[la+4>>2];ra=p+8|0;g[ra>>2]=0.0;+wB(ma);eI(la,ma,1,o);pa=la+40|0;oJ(c[pa>>2]|0);xJ(c[pa>>2]|0,ma,400.0);g[o+28>>2]=+g[ma>>2];g[o+32>>2]=+g[qa>>2];g[o+36>>2]=+g[ra>>2];ra=z;m$(ra|0,Ea|0,52)|0;m$(a|0,ra|0,52)|0;break};case 4:{gI(A,la,v);m$(a|0,A|0,52)|0;break};case 6:{n$(r|0,0,12)|0;ra=n;n$(ra|0,0,52)|0;Ea=p|0;g[Ea>>2]=+g[v+24>>2]- +g[t>>2];qa=p+4|0;g[qa>>2]=+g[v+28>>2]- +g[la+4>>2];ma=p+8|0;g[ma>>2]=+g[v+32>>2]- +g[la+8>>2];+wB(Ea);pa=q|0;g[pa>>2]=+g[Ea>>2];g[q+4>>2]=+g[qa>>2];g[q+8>>2]=+g[ma>>2]*3.0;AB(pa,n+40|0);pa=la+40|0;xJ(c[pa>>2]|0,r|0,0.0);tJ(c[pa>>2]|0);pa=n+20|0;c[pa>>2]=c[pa>>2]|1;g[n+28>>2]=+g[Ea>>2];g[n+32>>2]=+g[qa>>2];g[n+36>>2]=+g[ma>>2];ma=B;m$(ma|0,ra|0,52)|0;m$(a|0,ma|0,52)|0;break};case 7:{jI(C,la,v);m$(a|0,C|0,52)|0;break};case 5:{mI(D,la,v);m$(a|0,D|0,52)|0;break};case 8:{ma=m;n$(ma|0,0,52)|0;ra=p|0;g[ra>>2]=+g[v+12>>2]- +g[t>>2];qa=p+4|0;g[qa>>2]=+g[v+16>>2]- +g[la+4>>2];Ea=p+8|0;g[Ea>>2]=+g[v+20>>2]- +g[la+8>>2];+wB(ra);eI(la,ra,1,m);xJ(c[la+40>>2]|0,ra,400.0);g[m+28>>2]=+g[ra>>2];g[m+32>>2]=+g[qa>>2];g[m+36>>2]=+g[Ea>>2];AB(ra,m+40|0);ra=m+20|0;c[ra>>2]=c[ra>>2]|2;ra=E;m$(ra|0,ma|0,52)|0;m$(a|0,ra|0,52)|0;break};case 9:{hI(F,la,v);m$(a|0,F|0,52)|0;break};case 10:{oI(G,la,v);m$(a|0,G|0,52)|0;break};case 11:{pI(H,la,v);m$(a|0,H|0,52)|0;break};case 14:{uI(I,la,v);m$(a|0,I|0,52)|0;break};case 12:{vI(J,la,v);m$(a|0,J|0,52)|0;break};case 13:{wI(K,la,v);m$(a|0,K|0,52)|0;break};case 18:{ra=l;n$(ra|0,0,52)|0;ma=p|0;g[ma>>2]=+g[v+12>>2]- +g[t>>2];Ea=p+4|0;g[Ea>>2]=+g[v+16>>2]- +g[la+4>>2];qa=p+8|0;g[qa>>2]=0.0;eI(la,ma,1,l);xJ(c[la+40>>2]|0,ma,400.0);g[l+28>>2]=+g[ma>>2];g[l+32>>2]=+g[Ea>>2];g[l+36>>2]=+g[qa>>2];qa=L;m$(qa|0,ra|0,52)|0;m$(a|0,qa|0,52)|0;break};case 19:{sI(M,la,v);m$(a|0,M|0,52)|0;break};default:{Tk[c[7092490]&255](4,180672,(ga=i,i=i+8|0,c[ga>>2]=Ba,ga)|0);i=ga}}c[ea>>2]=c[Ca>>2];c[fa>>2]=c[fa>>2]|c[u>>2];break a}}while(0);c[aa>>2]=1;c[fa>>2]=c[fa>>2]|c[u>>2];n$($|0,0,44)|0}}while(0);if((c[ca>>2]|0)!=0){ca=la+112|0;g[ca>>2]=+g[ca>>2]- +g[la+44>>2]*10.0}g[la+80>>2]=+g[t>>2];g[la+84>>2]=+g[la+4>>2];g[la+88>>2]=+g[la+8>>2];ha=44;ia=0;ja=44;ka=0;i=f;return}function BI(a){a=a|0;var b=0,d=0,e=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,128368,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}e=c[28369656+(a<<2)>>2]|0;if((e|0)==0){Tk[c[7092490]&255](4,172200,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}else{c[e+116>>2]=0;c[e+120>>2]=0;c[e+124>>2]=0;i=b;return}}function CI(a){a=a|0;var b=0,d=0,e=0,f=0.0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,128368,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}e=c[28369656+(a<<2)>>2]|0;if((e|0)==0){Tk[c[7092490]&255](4,172200,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}d=e+120|0;f=+g[d>>2];if(!(f>0.0&f!=0.0)){i=b;return}g[d>>2]=0.0;d=e+124|0;e=c[d>>2]|0;if((e|0)<=0){i=b;return}c[d>>2]=e-1;i=b;return}function DI(a){a=a|0;var b=0,d=0,e=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,128368,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}e=c[28369656+(a<<2)>>2]|0;if((e|0)==0){Tk[c[7092490]&255](4,172200,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}else{n$(e|0,0,772)|0;i=b;return}}function EI(){UH();c[453928]=SJ(162880,160128)|0;c[453932]=SJ(157496,155024)|0;c[453954]=SJ(153072,151040)|0;c[46932]=SJ(148792,146248)|0;c[46936]=SJ(143840,141208)|0;c[46934]=SJ(138864,137040)|0;c[5312732]=SJ(135616,134160)|0;c[4938810]=SJ(132672,131704)|0;c[5493938]=SJ(130432,129080)|0;c[5493940]=SJ(128088,126640)|0;return 0}function FI(){var a=0,b=0,d=0;a=1;do{b=28369656+(a<<2)|0;d=c[b>>2]|0;if((d|0)!=0){bK(d);c[b>>2]=0}a=a+1|0;}while((a|0)<65);return}function GI(b){b=b|0;var d=0,e=0,f=0,g=0,h=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,J=0;d=i;i=i+1680|0;e=d|0;f=d+1128|0;g=e|0;h=d+1064|0;j=f;k=~~+UJ(128992,118432);if((k|0)<0){Tk[c[7092490]&255](3,107880,(l=i,i=i+8|0,c[l>>2]=k,l)|0);i=l;VJ(128992,118432);m=32}else{m=k}k=~~+UJ(64944,118432);if((k|0)<0){Tk[c[7092490]&255](3,56680,(l=i,i=i+8|0,c[l>>2]=k,l)|0);i=l;VJ(64944,118432);n=32}else{n=k}q$(h|0,b|0,64)|0;XK(50232);b=RK(h)|0;if((b|0)==0){Tk[c[7092490]&255](3,45368,(l=i,i=i+8|0,c[l>>2]=h,l)|0);i=l;o=0;p=552;q=0;r=64;s=0;t=1060;u=0;i=d;return o|0}k=(m*552|0)+16|0;v=aK((n*208|0)+k|0)|0;w=v;x=v+12|0;c[x>>2]=v+16;y=v+8|0;c[y>>2]=v+k;k=v;c[k>>2]=m;z=v+4|0;c[z>>2]=0;a:do{if((MK(b,e)|0)!=0){A=f+4|0;while(1){if((k$(g,184408)|0)==0){n$(j|0,0,552)|0;if((rL(b,488,j)|0)==0){B=11;break}C=c[A>>2]|0;if(!((C|0)>-1&(C|0)<(m|0))){B=13;break}m$((c[x>>2]|0)+(C*552|0)|0,j|0,552)|0;c[(c[x>>2]|0)+((c[A>>2]|0)*552|0)>>2]=1}else{if((k$(g,175968)|0)!=0){B=22;break}D=c[z>>2]|0;if((D|0)>=(n|0)){B=17;break}n$((c[y>>2]|0)+(D*208|0)|0,0,208)|0;if((rL(b,9608,(c[y>>2]|0)+((c[z>>2]|0)*208|0)|0)|0)==0){B=19;break}c[z>>2]=(c[z>>2]|0)+1}if((MK(b,e)|0)==0){break a}}if((B|0)==11){bK(v);SK(b);o=0;p=552;q=0;r=64;s=0;t=1060;u=0;i=d;return o|0}else if((B|0)==13){Tk[c[7092490]&255](3,180624,(l=i,i=i+16|0,c[l>>2]=C,c[l+8>>2]=h,l)|0);i=l;bK(v);SK(b);o=0;p=552;q=0;r=64;s=0;t=1060;u=0;i=d;return o|0}else if((B|0)==17){Tk[c[7092490]&255](3,172584,(l=i,i=i+16|0,c[l>>2]=n,c[l+8>>2]=h,l)|0);i=l;bK(v);SK(b);o=0;p=552;q=0;r=64;s=0;t=1060;u=0;i=d;return o|0}else if((B|0)==19){bK(v);SK(b);o=0;p=552;q=0;r=64;s=0;t=1060;u=0;i=d;return o|0}else if((B|0)==22){Tk[c[7092490]&255](3,169400,(l=i,i=i+16|0,c[l>>2]=g,c[l+8>>2]=h,l)|0);i=l;bK(v);SK(b);o=0;p=552;q=0;r=64;s=0;t=1060;u=0;i=d;return o|0}}}while(0);SK(b);b=c[k>>2]|0;b:do{if((b|0)>0){g=0;n=b;while(1){C=c[x>>2]|0;if((c[C+(g*552|0)>>2]|0)==0){E=n}else{F=C+(g*552|0)+8|0;if((a[F]|0)==0){B=26;break}e=C+(g*552|0)+180|0;if((a[e]|0)==0){B=30;break}j=c[z>>2]|0;c:do{if((j|0)>0){m=c[y>>2]|0;f=0;while(1){G=m+(f*208|0)|0;A=f+1|0;if((k$(G,e)|0)==0){break}if((A|0)<(j|0)){f=A}else{H=A;I=j;break c}}m$(C+(g*552|0)+344|0,G|0,208)|0;H=f;I=c[z>>2]|0}else{H=0;I=j}}while(0);if((H|0)==(I|0)){B=36;break}E=c[k>>2]|0}j=g+1|0;if((j|0)<(E|0)){g=j;n=E}else{J=E;break b}}if((B|0)==26){Tk[c[7092490]&255](3,165984,(l=i,i=i+16|0,c[l>>2]=g,c[l+8>>2]=h,l)|0);i=l;bK(v);o=0;p=552;q=0;r=64;s=0;t=1060;u=0;i=d;return o|0}else if((B|0)==30){Tk[c[7092490]&255](3,162832,(l=i,i=i+16|0,c[l>>2]=F,c[l+8>>2]=h,l)|0);i=l;bK(v);o=0;p=552;q=0;r=64;s=0;t=1060;u=0;i=d;return o|0}else if((B|0)==36){Tk[c[7092490]&255](3,160056,(l=i,i=i+16|0,c[l>>2]=(c[x>>2]|0)+(g*552|0)+8,c[l+8>>2]=h,l)|0);i=l;bK(v);o=0;p=552;q=0;r=64;s=0;t=1060;u=0;i=d;return o|0}}else{J=b}}while(0);if((J|0)==0){Tk[c[7092490]&255](2,157472,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l}Tk[c[7092490]&255](1,155008,(l=i,i=i+8|0,c[l>>2]=h,l)|0);i=l;o=w;p=552;q=0;r=64;s=0;t=1060;u=0;i=d;return o|0}function HI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,172120,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=11;i=d;return f|0}g=c[28369392+(a<<2)>>2]|0;if((g|0)==0){Tk[c[7092490]&255](4,145960,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=11;i=d;return f|0}a=g|0;h=c[a>>2]|0;if((h|0)!=0){SI(h)}h=c[g+4>>2]|0;if((h|0)!=0){bK(h)}h=UI(b)|0;c[a>>2]=h;if((h|0)==0){Tk[c[7092490]&255](4,153040,(e=i,i=i+8|0,c[e>>2]=b,e)|0);i=e;f=11;i=d;return f|0}e=c[46930]|0;if((e|0)==0){f=12;i=d;return f|0}b=e|0;a=_J(c[b>>2]<<2)|0;if((c[b>>2]|0)>0){j=e+12|0;e=0;do{c[a+(e<<2)>>2]=VI(h,(c[j>>2]|0)+(e*552|0)+8|0)|0;e=e+1|0;}while((e|0)<(c[b>>2]|0))}c[g+4>>2]=a;f=0;i=d;return f|0}function II(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;do{if((b|0)>=1){f=c[46930]|0;if((c[f>>2]|0)<(b|0)){break}if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,172120,(g=i,i=i+8|0,c[g>>2]=a,g)|0);i=g;i=e;return}if((c[28369392+(a<<2)>>2]|0)==0){Tk[c[7092490]&255](4,145960,(g=i,i=i+8|0,c[g>>2]=a,g)|0);i=g;i=e;return}if((f|0)==0){i=e;return}m$(d|0,(c[f+12>>2]|0)+(b*552|0)|0,552)|0;i=e;return}}while(0);Tk[c[7092490]&255](3,127824,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;i=e;return}function JI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0.0,l=0,m=0.0,n=0,o=0,p=0.0;d=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,172120,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0;i=d;return f|0}g=c[28369392+(a<<2)>>2]|0;if((g|0)==0){Tk[c[7092490]&255](4,145960,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;f=0;i=d;return f|0}e=c[46930]|0;if((e|0)==0){f=0;i=d;return f|0}a=g|0;if((c[a>>2]|0)==0){f=0;i=d;return f|0}h=e|0;if((c[h>>2]|0)<=0){f=0;i=d;return f|0}j=e+12|0;e=g+4|0;g=0;k=0.0;l=0;while(1){do{if((c[(c[j>>2]|0)+(l*552|0)>>2]|0)==0){m=k;n=g}else{o=c[(c[e>>2]|0)+(l<<2)>>2]|0;if((o|0)<0){m=k;n=g;break}p=+YI(b,c[a>>2]|0,o);if(!(p>k)){m=k;n=g;break}m=p;n=l}}while(0);o=l+1|0;if((o|0)<(c[h>>2]|0)){g=n;k=m;l=o}else{f=n;break}}i=d;return f|0}function KI(a){a=a|0;return}function LI(){var a=0,b=0,d=0,e=0,f=0;a=1;while(1){b=28369392+(a<<2)|0;d=a+1|0;if((c[b>>2]|0)==0){break}if((d|0)<65){a=d}else{e=0;f=5;break}}if((f|0)==5){return e|0}c[b>>2]=_J(8)|0;e=a;return e|0}function MI(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if((a-1|0)>>>0>63>>>0){Tk[c[7092490]&255](4,172120,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}e=28369392+(a<<2)|0;f=c[e>>2]|0;if((f|0)==0){Tk[c[7092490]&255](4,145960,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;i=b;return}d=c[f>>2]|0;if((d|0)!=0){SI(d)}d=c[f+4>>2]|0;if((d|0)!=0){bK(d)}bK(c[e>>2]|0);c[e>>2]=0;i=b;return}function NI(){var a=0,b=0,d=0;a=i;b=GI(TJ(151024,148752)|0)|0;c[46930]=b;if((b|0)!=0){d=0;i=a;return d|0}Tk[c[7092490]&255](4,146208,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;d=12;i=a;return d|0}function OI(){var a=0,b=0,d=0,e=0;a=c[46930]|0;if((a|0)!=0){bK(a)}c[46930]=0;a=1;do{b=28369392+(a<<2)|0;d=c[b>>2]|0;if((d|0)!=0){e=c[d>>2]|0;if((e|0)!=0){SI(e)}e=c[d+4>>2]|0;if((e|0)!=0){bK(e)}bK(c[b>>2]|0);c[b>>2]=0}a=a+1|0;}while((a|0)<65);return}function PI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0;d=i;i=i+1064|0;e=d|0;f=e|0;a:do{if((PK(a,e)|0)==0){h=0}else{do{if((k$(f,127224)|0)==0){gK(a,171784,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;if((PK(a,e)|0)!=0){break}fK(a,145688,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;h=0;break a}}while(0);if((c[e+1024>>2]|0)==3){g[b>>2]=+g[e+1036>>2];h=1;break}else{fK(a,128864,(j=i,i=i+8|0,c[j>>2]=f,j)|0);i=j;h=0;break}}}while(0);i=d;return h|0} + + + +function uT(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0;b=i;i=i+664|0;d=b|0;e=d;if((c[253180]|0)==0){f=664;h=0;i=b;return}cV(115768);if((c[(c[4917404]|0)+32>>2]|0)!=0){f=664;h=0;i=b;return}j=Ok[c[4886346]&63]()|0;k=a+76|0;do{if((c[253203]|0)==0){if((c[k>>2]&1|0)!=0){break}Tk[c[4886345]&255](1,105648,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l}}while(0);sT(a);do{if((c[k>>2]&1|0)==0&(c[253727]|0)!=0){if((c[(c[4919864]|0)+32>>2]|0)<=1){break}GS(a)}}while(0);a:do{if((c[5120183]|0)!=0){do{if((c[k>>2]&1|0)==0){if((c[(c[4917346]|0)+32>>2]|0)!=4){break}HS(a);if((c[5120183]|0)==0){break a}}}while(0);if((c[(c[4917306]|0)+32>>2]|0)==0){break}if((c[k>>2]&1|0)!=0){break}if((c[253805]|c[(c[4917492]|0)+32>>2]|0)==0){break}IS(a,0);IS(a,1);IS(a,2)}}while(0);n$(e|0,0,660)|0;c[d+428>>2]=c[253629];e=c[253632]|0;c[d+432>>2]=(c[5123027]|0)-(c[253630]|0)-e;c[d+436>>2]=c[253631];c[d+440>>2]=e;c[d+388>>2]=0;g[d+456>>2]=+g[253633];g[d+460>>2]=+g[253634];c[d+660>>2]=c[253647];m=+g[a+24>>2];g[d>>2]=m;n=+g[a+28>>2];g[d+4>>2]=n;o=+g[a+32>>2];g[d+8>>2]=o;g[d+12>>2]=+g[a+36>>2];g[d+16>>2]=+g[a+40>>2];g[d+20>>2]=+g[a+44>>2];g[d+24>>2]=+g[a+48>>2];g[d+28>>2]=+g[a+52>>2];g[d+32>>2]=+g[a+56>>2];g[d+36>>2]=+g[a+60>>2];g[d+40>>2]=+g[a+64>>2];g[d+44>>2]=+g[a+68>>2];g[d+376>>2]=m;g[d+380>>2]=n;g[d+384>>2]=o;do{if((c[k>>2]&1|0)==0){if(!(+g[(c[4919874]|0)+28>>2]!=0.0)){break}if((c[253805]|c[(c[4917492]|0)+32>>2]|0)==0){break}c[d+396>>2]=32}}while(0);zS(d);if((c[k>>2]&1|0)==0){QP()}c[4919818]=c[253731];c[4919816]=c[4917396];c[4919820]=c[4917398];c[4919814]=c[4917394];k=(Ok[c[4886346]&63]()|0)-j|0;c[253827]=k+(c[253827]|0);f=664;h=0;i=b;return}function vT(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((c[5120177]|0)==0){Ag(4,a|0,5125,b<<2|0);return}else{Lk[c[4920054]&15](4,d,e,a,5125,b<<2|0);return}}function wT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0;e=c[a+416>>2]|0;f=(e|0)==0?a:e;c[340901]=0;c[340900]=0;c[340902]=0;c[340905]=0;c[340894]=f;c[340896]=b;c[340897]=d;c[340898]=0;c[340899]=0;c[422828]=f+372;c[422826]=c[f+368>>2];c[422827]=c[f+404>>2];c[325892]=1;h=+g[7093924]- +g[f+412>>2];g[340895]=h;i=+g[f+408>>2];g[340895]=i==0.0|h>2]|0;if((c[5120122]|0)==0){r=q}else{r=((q&16|0)==0?1024:7168)|q}if((c[325892]|0)==0){c[7094291]=(c[7094291]|0)+1}else{VU(r)}if((c[(c[4917434]|0)+32>>2]|0)!=0){q=pC(103712,(s=i,i=i+8|0,c[s>>2]=c[340894],s)|0)|0;i=s;cV(q)}q=c[(c[340894]|0)+184>>2]|0;do{if((c[7094166]&4|0)==0){dP(q)}else{if((q|0)==0){dP(1);break}else if((q|0)==2){dP(2);break}else{dP(0);break}}}while(0);if((c[(c[340894]|0)+188>>2]|0)!=0){Xc(32823);jd(+(+g[(c[4917390]|0)+28>>2]),+(+g[(c[4917388]|0)+28>>2]))}QQ(r);if((c[7094370]|0)!=0){yT();if((c[(c[340894]|0)+188>>2]|0)==0){i=a;return}kg(32823);i=a;return}if((c[7094166]&2|0)!=0){r=c[340894]|0;do{if(+g[r+76>>2]==3.0){q=p|0;s=c[r+208>>2]|0;do{if((s|0)==0){t=c[r+212>>2]|0;u=28}else{if((s|0)>1){v=0;break}w=c[r+212>>2]|0;if((w|0)==1|(w|0)==3){t=w;u=28}else{v=0}}}while(0);do{if((u|0)==28){if((t|0)==1){s=c[r+228>>2]|0;g[q>>2]=+g[r+232>>2];g[p+4>>2]=+g[r+236>>2];g[p+8>>2]=+g[r+240>>2];g[p+12>>2]=+g[r+244>>2];g[p+16>>2]=+g[r+248>>2];v=s;break}else if((t|0)==3){g[q>>2]=0.0;g[p+4>>2]=+g[r+256>>2];g[p+8>>2]=+g[r+252>>2];g[p+12>>2]=+g[r+260>>2];g[p+16>>2]=0.0;v=7;break}else{v=0;break}}}while(0);PQ(1007148);LQ(1007148,46,20480636);LQ(1007148,45,28377056);GQ(1007148,48,+g[5120121]);FQ(1007148,23,v);if((v|0)!=0){KQ(1007148,24,q);GQ(1007148,47,+g[340895])}s=l|0;g[s>>2]=+g[7094067];g[l+4>>2]=+g[7094068];g[l+8>>2]=+g[7094069];g[l+12>>2]=1.0;JQ(1007148,35,s);GQ(1007148,37,+g[7094230]);fP(0);s=c[340905]|0;if((s|0)==0){w=c[340901]|0;x=c[340900]|0;if((c[5120177]|0)==0){Ag(4,w|0,5125,x<<2|0);break}else{Lk[c[4920054]&15](4,c[340903]|0,c[340904]|0,w,5125,x<<2|0);break}}if((c[5120178]|0)!=0){fk[c[4919988]&127](4,1363624,5125,1429160,s);break}x=(s|0)>0;if((c[5120177]|0)==0){if(x){y=0}else{break}do{Ag(4,c[1363624+(y<<2)>>2]|0,5125,c[1429160+(y<<2)>>2]|0);y=y+1|0;}while((y|0)<(s|0))}else{if(x){z=0}else{break}do{Lk[c[4920054]&15](4,c[1560232+(z<<2)>>2]|0,c[1625768+(z<<2)>>2]|0,c[1363624+(z<<2)>>2]|0,5125,c[1429160+(z<<2)>>2]|0);z=z+1|0;}while((z|0)<(s|0))}}}while(0);if((c[(c[340894]|0)+188>>2]|0)==0){i=a;return}kg(32823);i=a;return}yT();a:do{if((c[5120183]|0)!=0){z=c[340899]|0;if(!((c[(c[4917346]|0)+32>>2]|0)==4&(z|0)!=0)){break}y=c[340894]|0;if(+g[y+76>>2]>3.0){break}if((c[y+88>>2]&131076|0)!=0){break}y=c[7093999]|0;if((y|0)<=0){break}v=l|0;r=l+4|0;t=l+8|0;s=l+12|0;x=0;q=y;y=z;while(1){if((y&1<>2];C=+g[z+(x<<8)+224>>2];D=+g[z+(x<<8)+228>>2];E=+g[z+(x<<8)+232>>2];PQ(1007612);LQ(1007612,46,20480636);g[v>>2]=B;g[r>>2]=C;g[t>>2]=D;g[s>>2]=1.0;JQ(1007612,35,v);w=z+(x<<8)+168|0;g[v>>2]=+g[z+(x<<8)+184>>2]*(1.0/+g[w>>2]);g[r>>2]=+g[z+(x<<8)+188>>2]*(1.0/+g[w>>2]);g[t>>2]=+g[z+(x<<8)+192>>2]*(1.0/+g[w>>2]);IQ(1007612,32,v);g[v>>2]=+g[z+(x<<8)+196>>2]*(1.0/+g[w>>2]);g[r>>2]=+g[z+(x<<8)+200>>2]*(1.0/+g[w>>2]);g[t>>2]=+g[z+(x<<8)+204>>2]*(1.0/+g[w>>2]);IQ(1007612,34,v);g[v>>2]=+g[z+(x<<8)+208>>2]*(1.0/+g[w>>2]);g[r>>2]=+g[z+(x<<8)+212>>2]*(1.0/+g[w>>2]);g[t>>2]=+g[z+(x<<8)+216>>2]*(1.0/+g[w>>2]);IQ(1007612,33,v);GQ(1007612,37,E);fP(131173);cP(c[1013112+(x<<2)>>2]|0,0);w=c[340905]|0;do{if((w|0)==0){z=c[340901]|0;F=c[340900]|0;if((c[5120177]|0)==0){Ag(4,z|0,5125,F<<2|0);break}else{Lk[c[4920054]&15](4,c[340903]|0,c[340904]|0,z,5125,F<<2|0);break}}else{if((c[5120178]|0)!=0){fk[c[4919988]&127](4,1363624,5125,1429160,w);break}F=(w|0)>0;if((c[5120177]|0)==0){if(F){G=0}else{break}do{Ag(4,c[1363624+(G<<2)>>2]|0,5125,c[1429160+(G<<2)>>2]|0);G=G+1|0;}while((G|0)<(w|0))}else{if(F){H=0}else{break}do{Lk[c[4920054]&15](4,c[1560232+(H<<2)>>2]|0,c[1625768+(H<<2)>>2]|0,c[1363624+(H<<2)>>2]|0,5125,c[1429160+(H<<2)>>2]|0);H=H+1|0;}while((H|0)<(w|0))}}}while(0);c[7094284]=(c[7094284]|0)+(c[340901]|0);A=c[7093999]|0}w=x+1|0;if((w|0)>=(A|0)){break a}x=w;q=A;y=c[340899]|0}}}while(0);A=c[340898]|0;b:do{if((A|0)!=0){H=c[340894]|0;if(+g[H+76>>2]>3.0){break}if((c[H+88>>2]&131076|0)!=0){break}do{if((c[H+368>>2]|0)==1){G=c[422828]|0;y=c[G>>2]|0;if((c[y+692>>2]|0)!=977452){break}if((c[y+696>>2]&3|0)==0){break}if((c[(c[4919864]|0)+32>>2]|0)==0){break}y=h;n$(m|0,0,16)|0;g[b>>2]=0.0;q=c[G>>2]|0;if((c[7093992]|0)==0){break b}G=p|0;x=c[H+208>>2]|0;do{if((x|0)==0){I=c[H+212>>2]|0;u=79}else{if((x|0)>1){J=0;break}v=c[H+212>>2]|0;if((v|0)==1|(v|0)==3){I=v;u=79}else{J=0}}}while(0);do{if((u|0)==79){if((I|0)==1){x=c[H+228>>2]|0;g[G>>2]=+g[H+232>>2];g[p+4>>2]=+g[H+236>>2];g[p+8>>2]=+g[H+240>>2];g[p+12>>2]=+g[H+244>>2];g[p+16>>2]=+g[H+248>>2];J=x;break}else if((I|0)==3){g[G>>2]=0.0;g[p+4>>2]=+g[H+256>>2];g[p+8>>2]=+g[H+252>>2];g[p+12>>2]=+g[H+260>>2];g[p+16>>2]=0.0;J=7;break}else{J=0;break}}}while(0);x=l|0;v=m|0;AT(x,v,b);t=c[7093992]|0;if((t|0)<=0){break b}r=q+696|0;s=(J|0)==0;w=j|0;F=k|0;z=q+664|0;K=q+640|0;L=q+668|0;M=n|0;N=n+4|0;O=n+8|0;P=n+12|0;Q=q+700|0;R=q+4|0;S=R|0;T=q+180|0;U=T|0;V=q+356|0;W=V|0;X=e|0;Y=f|0;Z=q+44|0;_=R|0;E=+g[b>>2];R=h|0;$=q+680|0;aa=h+8|0;ba=h+4|0;ca=h+12|0;da=0;ea=t;while(1){if((c[340898]&1<>2];ga=977452+((c[r>>2]&-4|2)*464|0)|0;c[7094302]=(c[7094302]|0)+1;PQ(ga);LQ(ga,46,20480636);IQ(ga,51,28376268);IQ(ga,52,28376980);GQ(ga,48,+g[5120121]);FQ(ga,23,J);if(!s){KQ(ga,24,G);GQ(ga,47,+g[340895])}if((c[340896]|0)!=0){JQ(ga,41,x);JQ(ga,42,v);GQ(ga,43,E);ha=c[$>>2]|0;if((ha|0)==1){g[aa>>2]=1.0;g[ba>>2]=1.0;g[R>>2]=1.0;g[ca>>2]=0.0}else if((ha|0)==3){g[aa>>2]=0.0;g[ba>>2]=0.0;g[R>>2]=0.0;g[ca>>2]=1.0}else if((ha|0)==2){g[ca>>2]=1.0;g[aa>>2]=1.0;g[ba>>2]=1.0;g[R>>2]=1.0}else{n$(y|0,0,16)|0}JQ(ga,44,R)}BT(q,w,F,34);JQ(ga,29,w);JQ(ga,30,F);if((c[z>>2]|0)==8){GQ(ga,40,+g[(c[340894]|0)+172>>2])}FQ(ga,25,c[K>>2]|0);FQ(ga,26,c[z>>2]|0);FQ(ga,27,c[L>>2]|0);IQ(ga,39,t+(da*44|0)+12|0);g[M>>2]=0.0;g[N>>2]=0.0;g[O>>2]=0.0;IQ(ga,38,M);g[M>>2]=+g[t+(da*44|0)>>2];g[N>>2]=+g[t+(da*44|0)+4>>2];g[O>>2]=+g[t+(da*44|0)+8>>2];g[P>>2]=1.0;JQ(ga,35,M);GQ(ga,37,D);HQ(ga,49,Q);fP(131106);LQ(ga,45,28377056);if((c[S>>2]|0)!=0){CT(_,0)}if((c[U>>2]|0)!=0){CT(T,2)}if((c[W>>2]|0)!=0){CT(V,4)}if((c[(c[4919864]|0)+32>>2]|0)>1){bP(5);aP(c[1012972+(da<<2)>>2]|0);bP(0)}DT(q,X,Y);JQ(ga,17,X);JQ(ga,18,Y);FQ(ga,20,c[Z>>2]|0);ga=c[340905]|0;do{if((ga|0)==0){t=c[340901]|0;ha=c[340900]|0;if((c[5120177]|0)==0){Ag(4,t|0,5125,ha<<2|0);break}else{Lk[c[4920054]&15](4,c[340903]|0,c[340904]|0,t,5125,ha<<2|0);break}}else{if((c[5120178]|0)!=0){fk[c[4919988]&127](4,1363624,5125,1429160,ga);break}ha=(ga|0)>0;if((c[5120177]|0)==0){if(ha){ia=0}else{break}do{Ag(4,c[1363624+(ia<<2)>>2]|0,5125,c[1429160+(ia<<2)>>2]|0);ia=ia+1|0;}while((ia|0)<(ga|0))}else{if(ha){ja=0}else{break}do{Lk[c[4920054]&15](4,c[1560232+(ja<<2)>>2]|0,c[1625768+(ja<<2)>>2]|0,c[1363624+(ja<<2)>>2]|0,5125,c[1429160+(ja<<2)>>2]|0);ja=ja+1|0;}while((ja|0)<(ga|0))}}}while(0);ga=c[340901]|0;c[7094284]=(c[7094284]|0)+ga;c[7094296]=(c[7094296]|0)+ga;c[7094295]=(c[7094295]|0)+(c[340902]|0);fa=c[7093992]|0}ga=da+1|0;if((ga|0)<(fa|0)){da=ga;ea=fa}else{break b}}}}while(0);ea=c[7093992]|0;if((ea|0)==0){break}da=p|0;Z=c[H+208>>2]|0;do{if((Z|0)==0){ka=c[H+212>>2]|0;u=122}else{if((Z|0)>1){la=0;break}Y=c[H+212>>2]|0;if((Y|0)==1|(Y|0)==3){ka=Y;u=122}else{la=0}}}while(0);do{if((u|0)==122){if((ka|0)==1){Z=c[H+228>>2]|0;g[da>>2]=+g[H+232>>2];g[p+4>>2]=+g[H+236>>2];g[p+8>>2]=+g[H+240>>2];g[p+12>>2]=+g[H+244>>2];g[p+16>>2]=+g[H+248>>2];la=Z;break}else if((ka|0)==3){g[da>>2]=0.0;g[p+4>>2]=+g[H+256>>2];g[p+8>>2]=+g[H+252>>2];g[p+12>>2]=+g[H+260>>2];g[p+16>>2]=0.0;la=7;break}else{la=0;break}}}while(0);if((ea|0)<=0){break}H=976524+(((la|0)!=0|0)*464|0)|0;Z=(la|0)==0;Y=l|0;X=l+4|0;q=l+8|0;V=l+12|0;W=0;T=ea;U=A;while(1){if((U&1<>2];D=+g[_+(W*44|0)+32>>2];C=+g[_+(W*44|0)+36>>2];B=1.0/+g[_+(W*44|0)+24>>2];c[7094304]=(c[7094304]|0)+1;PQ(H);LQ(H,46,20480636);GQ(H,48,+g[5120121]);FQ(H,23,la);if(!Z){KQ(H,24,da);GQ(H,47,+g[340895])}g[Y>>2]=+g[_+(W*44|0)+12>>2];g[X>>2]=+g[_+(W*44|0)+16>>2];g[q>>2]=+g[_+(W*44|0)+20>>2];g[V>>2]=1.0;JQ(H,28,Y);g[Y>>2]=E;g[X>>2]=D;g[q>>2]=C;g[V>>2]=B;JQ(H,31,Y);aP(c[253239]|0);if((c[_+(W*44|0)+40>>2]|0)==0){fP(131107)}else{fP(131106)}_=c[340905]|0;do{if((_|0)==0){S=c[340901]|0;Q=c[340900]|0;if((c[5120177]|0)==0){Ag(4,S|0,5125,Q<<2|0);break}else{Lk[c[4920054]&15](4,c[340903]|0,c[340904]|0,S,5125,Q<<2|0);break}}else{if((c[5120178]|0)!=0){fk[c[4919988]&127](4,1363624,5125,1429160,_);break}Q=(_|0)>0;if((c[5120177]|0)==0){if(Q){na=0}else{break}do{Ag(4,c[1363624+(na<<2)>>2]|0,5125,c[1429160+(na<<2)>>2]|0);na=na+1|0;}while((na|0)<(_|0))}else{if(Q){oa=0}else{break}do{Lk[c[4920054]&15](4,c[1560232+(oa<<2)>>2]|0,c[1625768+(oa<<2)>>2]|0,c[1363624+(oa<<2)>>2]|0,5125,c[1429160+(oa<<2)>>2]|0);oa=oa+1|0;}while((oa|0)<(_|0))}}}while(0);_=c[340901]|0;c[7094284]=(c[7094284]|0)+_;c[7094296]=(c[7094296]|0)+_;c[7094295]=(c[7094295]|0)+(c[340902]|0);ma=c[7093992]|0}_=W+1|0;if((_|0)>=(ma|0)){break b}W=_;T=ma;U=c[340898]|0}}}while(0);do{if((c[340896]|0)!=0){ma=c[340894]|0;if((c[ma+200>>2]|0)==0){break}n$(n|0,0,16)|0;g[o>>2]=0.0;oa=p|0;na=c[ma+208>>2]|0;do{if((na|0)==0){pa=c[ma+212>>2]|0;u=153}else{if((na|0)>1){qa=0;break}la=c[ma+212>>2]|0;if((la|0)==1|(la|0)==3){pa=la;u=153}else{qa=0}}}while(0);do{if((u|0)==153){if((pa|0)==1){na=c[ma+228>>2]|0;g[oa>>2]=+g[ma+232>>2];g[p+4>>2]=+g[ma+236>>2];g[p+8>>2]=+g[ma+240>>2];g[p+12>>2]=+g[ma+244>>2];g[p+16>>2]=+g[ma+248>>2];qa=na;break}else if((pa|0)==3){g[oa>>2]=0.0;g[p+4>>2]=+g[ma+256>>2];g[p+8>>2]=+g[ma+252>>2];g[p+12>>2]=+g[ma+260>>2];g[p+16>>2]=0.0;qa=7;break}else{qa=0;break}}}while(0);ma=(qa|0)==0;na=ma&1^1;la=974668+(((c[5120122]|0)==0?na:na|2)*464|0)|0;c[7094303]=(c[7094303]|0)+1;PQ(la);na=c[(c[253203]|0)+228>>2]|0;A=c[340896]|0;LQ(la,46,20480636);GQ(la,48,+g[5120121]);FQ(la,23,qa);if(!ma){KQ(la,24,oa);GQ(la,47,+g[340895])}ma=na+(A*72|0)+28|0;A=l|0;g[A>>2]=+(d[ma]|0|0)/255.0;g[l+4>>2]=+(d[ma+1|0]|0|0)/255.0;g[l+8>>2]=+(d[ma+2|0]|0|0)/255.0;g[l+12>>2]=+(d[ma+3|0]|0|0)/255.0;JQ(la,28,A);A=m|0;ma=n|0;AT(A,ma,o);JQ(la,41,A);JQ(la,42,ma);GQ(la,43,+g[o>>2]);if((c[(c[340894]|0)+200>>2]|0)==1){fP(131173)}else{fP(101)}la=c[340905]|0;if((la|0)==0){ma=c[340901]|0;A=c[340900]|0;if((c[5120177]|0)==0){Ag(4,ma|0,5125,A<<2|0);break}else{Lk[c[4920054]&15](4,c[340903]|0,c[340904]|0,ma,5125,A<<2|0);break}}if((c[5120178]|0)!=0){fk[c[4919988]&127](4,1363624,5125,1429160,la);break}A=(la|0)>0;if((c[5120177]|0)==0){if(A){ra=0}else{break}do{Ag(4,c[1363624+(ra<<2)>>2]|0,5125,c[1429160+(ra<<2)>>2]|0);ra=ra+1|0;}while((ra|0)<(la|0))}else{if(A){sa=0}else{break}do{Lk[c[4920054]&15](4,c[1560232+(sa<<2)>>2]|0,c[1625768+(sa<<2)>>2]|0,c[1363624+(sa<<2)>>2]|0,5125,c[1429160+(sa<<2)>>2]|0);sa=sa+1|0;}while((sa|0)<(la|0))}}}while(0);if((c[(c[340894]|0)+188>>2]|0)==0){i=a;return}kg(32823);i=a;return}function yT(){var a=0,b=0,d=0,e=0,f=0,h=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,J=0,K=0,L=0.0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0.0,W=0,X=0,Y=0.0,Z=0,_=0;a=i;i=i+192|0;b=a|0;d=a+16|0;e=a+32|0;f=a+40|0;h=a+64|0;j=a+80|0;k=a+96|0;l=a+112|0;m=a+128|0;n=a+144|0;o=a+160|0;p=a+176|0;n$(d|0,0,16)|0;g[e>>2]=0.0;q=f|0;r=c[340894]|0;s=c[r+208>>2]|0;do{if((s|0)==0){t=c[r+212>>2]|0;u=5}else{if((s|0)>1){v=0;break}w=c[r+212>>2]|0;if((w|0)==1|(w|0)==3){t=w;u=5}else{v=0}}}while(0);do{if((u|0)==5){if((t|0)==3){g[q>>2]=0.0;g[f+4>>2]=+g[r+256>>2];g[f+8>>2]=+g[r+252>>2];g[f+12>>2]=+g[r+260>>2];g[f+16>>2]=0.0;v=7;break}else if((t|0)==1){s=c[r+228>>2]|0;g[q>>2]=+g[r+232>>2];g[f+4>>2]=+g[r+236>>2];g[f+8>>2]=+g[r+240>>2];g[f+12>>2]=+g[r+244>>2];g[f+16>>2]=+g[r+248>>2];v=s;break}else{v=0;break}}}while(0);r=b|0;b=d|0;AT(r,b,e);d=(v|0)==0;f=k|0;t=l|0;s=k+4|0;w=k+8|0;k=l+4|0;x=l+8|0;l=m|0;y=m+4|0;z=m+8|0;A=m+12|0;m=h|0;h=j|0;j=o|0;B=o+4|0;C=o+8|0;o=p|0;D=p+4|0;E=p+8|0;F=p+12|0;G=n|0;H=n;I=n+8|0;J=n+4|0;K=n+12|0;L=+g[e>>2];e=0;while(1){n=c[(c[422828]|0)+(e<<2)>>2]|0;if((n|0)==0){u=109;break}M=n+692|0;N=(c[M>>2]|0)==977452;do{if((c[7094370]|0)==0){if(!N){O=SQ(e)|0;c[7094301]=(c[7094301]|0)+1;P=O;break}O=c[n+696>>2]|0;Q=c[7094307]|0;R=(Q|0)!=0&(Q|0)!=1013432?O|4:O;do{if((c[(c[4917306]|0)+32>>2]|0)==0){S=R}else{if((c[7094166]&32|0)==0){S=R;break}S=(R&3|0)==0?R:R|32}}while(0);if((c[(c[4917444]|0)+32>>2]|0)==0){T=S}else{T=(S&1|0)==0?S:1}c[7094302]=(c[7094302]|0)+1;P=977452+(T*464|0)|0}else{if(N){R=c[7094307]|0;O=(R|0)!=0&(R|0)!=1013432?4:0;P=977452+(((c[n+668>>2]|0)==0?O:O|8)*464|0)|0;break}O=c[340894]|0;R=c[O+208>>2]|0;do{if((R|0)==0|(R|0)>1){U=0}else{Q=c[O+212>>2]|0;if((Q|0)==1|(Q|0)==3){U=1;break}U=0}}while(0);O=(c[5120122]|0)==0?U:U|4;P=944508+(((c[n+668>>2]|0)==0?O:O|18)*464|0)|0}}while(0);PQ(P);LQ(P,46,20480636);IQ(P,51,28376268);IQ(P,52,28376980);GQ(P,48,+g[5120121]);FQ(P,23,v);if(!d){KQ(P,24,q);GQ(P,47,+g[340895])}if((c[340896]|0)!=0){JQ(P,41,r);JQ(P,42,b);GQ(P,43,L)}N=n+676|0;fP(c[N>>2]|0);BT(n,f,t,c[N>>2]|0);V=+g[7094061];do{if(V!=1.0){if((c[7093914]&1|0)!=0){break}g[f>>2]=V*+g[f>>2];g[s>>2]=+g[s>>2]*V;g[w>>2]=+g[w>>2]*V;g[t>>2]=+g[t>>2]*V;g[k>>2]=+g[k>>2]*V;g[x>>2]=+g[x>>2]*V}}while(0);JQ(P,29,f);JQ(P,30,t);N=n+640|0;if((c[N>>2]|0)==11){O=c[7094307]|0;g[l>>2]=+g[O+180>>2]*.003921568859368563;g[y>>2]=+g[O+184>>2]*.003921568859368563;g[z>>2]=+g[O+188>>2]*.003921568859368563;IQ(P,38,l);O=c[7094307]|0;g[l>>2]=+g[O+196>>2]*.003921568859368563;g[y>>2]=+g[O+200>>2]*.003921568859368563;g[z>>2]=+g[O+204>>2]*.003921568859368563;IQ(P,39,l);O=c[7094307]|0;g[l>>2]=+g[O+156>>2];g[y>>2]=+g[O+160>>2];g[z>>2]=+g[O+164>>2];g[A>>2]=0.0;JQ(P,35,l);IQ(P,36,(c[7094307]|0)+168|0);GQ(P,37,0.0)}O=n+664|0;if((c[O>>2]|0)==8){GQ(P,40,+g[(c[340894]|0)+172>>2])}FQ(P,25,c[N>>2]|0);FQ(P,26,c[O>>2]|0);O=n+668|0;FQ(P,27,c[O>>2]|0);if((c[340896]|0)!=0){N=c[n+680>>2]|0;if((N|0)==2){g[K>>2]=1.0;g[I>>2]=1.0;g[J>>2]=1.0;g[G>>2]=1.0}else if((N|0)==3){g[I>>2]=0.0;g[J>>2]=0.0;g[G>>2]=0.0;g[K>>2]=1.0}else if((N|0)==1){g[I>>2]=1.0;g[J>>2]=1.0;g[G>>2]=1.0;g[K>>2]=0.0}else{n$(H|0,0,16)|0}JQ(P,44,G)}DT(n,m,h);JQ(P,17,m);JQ(P,18,h);N=n+4|0;R=N|0;Q=n+44|0;FQ(P,20,c[Q>>2]|0);if((c[Q>>2]|0)==6){g[j>>2]=+g[n+48>>2];g[B>>2]=+g[n+52>>2];g[C>>2]=+g[n+56>>2];IQ(P,21,j);g[j>>2]=+g[n+60>>2];g[B>>2]=+g[n+64>>2];g[C>>2]=+g[n+68>>2];IQ(P,22,j)}LQ(P,45,28377056);HQ(P,49,n+700|0);do{if((c[7094370]|0)==0){if((c[M>>2]|0)!=977452){Q=n+92|0;W=(c[Q>>2]|0)==0;CT(R,0);if(W){FQ(P,19,0);break}if((c[(c[4917444]|0)+32>>2]|0)==0){FQ(P,19,c[(c[340894]|0)+180>>2]|0)}else{FQ(P,19,7681)}CT(Q,1);break}do{if((c[(c[4917306]|0)+32>>2]|0)!=0){if((c[7094166]&32|0)==0){break}if((c[n+696>>2]&3|0)==0){break}cP(c[253304]|0,5);IQ(P,61,28376228);IQ(P,60,28376212);JQ(P,59,28376196)}}while(0);n$(p|0,0,16)|0;Q=c[(c[4917444]|0)+32>>2]|0;do{if((Q-1|0)>>>0<2>>>0){W=n+92|0;if((c[W>>2]|0)==0){u=59;break}cP(c[253241]|0,0);CT(W,1);cP(c[253241]|0,2);cP(c[253241]|0,3);cP(c[253241]|0,4);cP(c[253241]|0,5);cP(c[253241]|0,6)}else{if((Q|0)!=3){u=59;break}W=n+268|0;if((c[W>>2]|0)==0){u=59;break}cP(c[253241]|0,0);CT(W,1);cP(c[253241]|0,2);cP(c[253241]|0,3);cP(c[253241]|0,4);cP(c[253241]|0,5);cP(c[253241]|0,6)}}while(0);if((u|0)==59){u=0;Q=(c[n+696>>2]&3|0)==0;if((c[(c[4917402]|0)+32>>2]|0)==0){X=(c[(c[4917324]|0)+32>>2]|0)==0}else{X=0}if((c[N>>2]|0)!=0){CT(R,0)}W=n+92|0;if((c[W>>2]|0)!=0){CT(W,1)}do{if(!(Q|X)){W=n+180|0;do{if((c[W>>2]|0)==0){if((c[(c[4917402]|0)+32>>2]|0)==0){break}cP(c[253241]|0,2)}else{CT(W,2);g[o>>2]=1.0}}while(0);W=n+268|0;do{if((c[W>>2]|0)==0){if((c[(c[4919878]|0)+32>>2]|0)==0){break}cP(c[253241]|0,3)}else{CT(W,3);g[D>>2]=1.0}}while(0);W=n+356|0;if((c[W>>2]|0)!=0){CT(W,4);g[E>>2]=1.0;break}if((c[(c[4917324]|0)+32>>2]|0)==0){break}cP(c[253241]|0,4)}}while(0);do{if((c[(c[4919892]|0)+32>>2]|0)==0){Y=0.0}else{if((c[253512]&128|0)!=0){Y=0.0;break}Y=(c[340897]|0)!=0?1.0:0.0}}while(0);g[F>>2]=Y}JQ(P,16,o)}else{if((c[O>>2]|0)==0){cP(c[253241]|0,0);break}if((c[N>>2]|0)==0){break}CT(R,0)}}while(0);do{if((c[253512]&128|0)==0){R=c[340897]|0;if((R|0)==0){break}if((c[(c[4919892]|0)+32>>2]|0)==0){break}cP(c[(c[253356]|0)+(R-1<<2)>>2]|0,6)}}while(0);R=c[340905]|0;do{if((R|0)==0){N=c[340901]|0;O=c[340900]|0;if((c[5120177]|0)==0){Ag(4,N|0,5125,O<<2|0);break}else{Lk[c[4920054]&15](4,c[340903]|0,c[340904]|0,N,5125,O<<2|0);break}}else{if((c[5120178]|0)!=0){fk[c[4919988]&127](4,1363624,5125,1429160,R);break}O=(R|0)>0;if((c[5120177]|0)==0){if(O){Z=0}else{break}do{Ag(4,c[1363624+(Z<<2)>>2]|0,5125,c[1429160+(Z<<2)>>2]|0);Z=Z+1|0;}while((Z|0)<(R|0))}else{if(O){_=0}else{break}do{Lk[c[4920054]&15](4,c[1560232+(_<<2)>>2]|0,c[1625768+(_<<2)>>2]|0,c[1363624+(_<<2)>>2]|0,5125,c[1429160+(_<<2)>>2]|0);_=_+1|0;}while((_|0)<(R|0))}}}while(0);if((c[(c[4917444]|0)+32>>2]|0)==0){if((c[7094370]|0)!=0){u=109;break}}else{if((c[n+84>>2]|0)!=0){u=109;break}if((c[7094370]|c[n+172>>2]|0)!=0){u=109;break}}R=e+1|0;if((R|0)<8){e=R}else{u=109;break}}if((u|0)==109){i=a;return}}function zT(){var a=0,b=0,d=0,e=0,f=0,h=0,j=0,k=0;a=i;i=i+16|0;b=a|0;d=c[340901]|0;e=c[340902]|0;if((d|0)==0|(e|0)==0){i=a;return}if((c[310889]|0)!=0){Tk[c[4886345]&255](1,164456,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}if(+g[314886]!=0.0){Tk[c[4886345]&255](1,140168,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}f=c[340894]|0;if((f|0)==(c[253343]|0)){fU();i=a;return}h=c[(c[4919882]|0)+32>>2]|0;do{if((h|0)!=0){if(!(+(h|0)<+g[f+76>>2])){break}i=a;return}}while(0);c[7094281]=(c[7094281]|0)+1;c[7094282]=(c[7094282]|0)+e;c[7094283]=(c[7094283]|0)+d;e=da(c[422826]|0,d)|0;c[7094284]=(c[7094284]|0)+e;Uk[c[422827]&511]();if((c[(c[4917336]|0)+32>>2]|0)!=0){aP(c[253241]|0);fP(4352);md(+0.0,+0.0);QQ(1);PQ(974204);LQ(974204,46,20480636);e=b|0;g[e>>2]=1.0;g[b+4>>2]=1.0;g[b+8>>2]=1.0;g[b+12>>2]=1.0;JQ(974204,28,e);e=c[340905]|0;do{if((e|0)==0){b=c[340901]|0;d=c[340900]|0;if((c[5120177]|0)==0){Ag(4,b|0,5125,d<<2|0);break}else{Lk[c[4920054]&15](4,c[340903]|0,c[340904]|0,b,5125,d<<2|0);break}}else{if((c[5120178]|0)!=0){fk[c[4919988]&127](4,1363624,5125,1429160,e);break}d=(e|0)>0;if((c[5120177]|0)==0){if(d){j=0}else{break}do{Ag(4,c[1363624+(j<<2)>>2]|0,5125,c[1429160+(j<<2)>>2]|0);j=j+1|0;}while((j|0)<(e|0))}else{if(d){k=0}else{break}do{Lk[c[4920054]&15](4,c[1560232+(k<<2)>>2]|0,c[1625768+(k<<2)>>2]|0,c[1363624+(k<<2)>>2]|0,5125,c[1429160+(k<<2)>>2]|0);k=k+1|0;}while((k|0)<(e|0))}}}while(0);md(+0.0,+1.0);}c[340901]=0;c[340902]=0;c[340900]=0;c[340905]=0;cV(126104);i=a;return}function AT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0,r=0;e=c[340896]|0;if((e|0)==0){return}f=c[(c[253203]|0)+228>>2]|0;h=+g[7094233]- +g[7094067];i=+g[7094234]- +g[7094068];j=+g[7094235]- +g[7094069];k=-0.0- +g[7094250];g[a>>2]=k;l=-0.0- +g[7094254];m=a+4|0;g[m>>2]=l;n=-0.0- +g[7094258];o=a+8|0;g[o>>2]=n;p=h*+g[7094070]+i*+g[7094071]+j*+g[7094072];q=a+12|0;g[q>>2]=p;r=f+(e*72|0)+32|0;g[a>>2]=+g[r>>2]*k;g[m>>2]=+g[r>>2]*l;g[o>>2]=+g[r>>2]*n;g[q>>2]=p*+g[r>>2];if((c[f+(e*72|0)+52>>2]|0)==0){g[d>>2]=1.0;return}else{r=f+(e*72|0)+56|0;q=f+(e*72|0)+60|0;o=f+(e*72|0)+64|0;p=+g[r>>2]*+g[7094236]+ +g[q>>2]*+g[7094237]+ +g[o>>2]*+g[7094238];g[b>>2]=p;n=+g[r>>2]*+g[7094239]+ +g[q>>2]*+g[7094240]+ +g[o>>2]*+g[7094241];g[b+4>>2]=n;l=+g[r>>2]*+g[7094242]+ +g[q>>2]*+g[7094243]+ +g[o>>2]*+g[7094244];g[b+8>>2]=l;k=+g[7094233]*+g[r>>2]+ +g[7094234]*+g[q>>2]+ +g[7094235]*+g[o>>2]- +g[f+(e*72|0)+68>>2];g[b+12>>2]=k;g[d>>2]=k+(+g[7094245]*p+ +g[7094246]*n+ +g[7094247]*l);return}}function BT(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0;h=b+12|0;g[h>>2]=1.0;i=b+8|0;g[i>>2]=1.0;j=b+4|0;g[j>>2]=1.0;g[b>>2]=1.0;k=e+12|0;l=e+8|0;m=e+4|0;n$(e|0,0,16)|0;a:do{switch(c[a+640>>2]|0){case 1:{n=+g[253579];g[i>>2]=n;g[j>>2]=n;g[b>>2]=n;break};case 13:{g[b>>2]=+(d[a+672|0]|0|0)/255.0;g[j>>2]=+(d[a+673|0]|0|0)/255.0;g[i>>2]=+(d[a+674|0]|0|0)/255.0;g[h>>2]=+(d[a+675|0]|0|0)/255.0;break};case 9:{n=+g[253579];g[i>>2]=n;g[j>>2]=n;g[b>>2]=n;n=-0.0- +g[253579];g[l>>2]=n;g[m>>2]=n;g[e>>2]=n;break};case 5:case 7:{n$(b|0,0,16)|0;g[k>>2]=1.0;g[l>>2]=1.0;g[m>>2]=1.0;g[e>>2]=1.0;break};case 8:{n$(b|0,0,16)|0;n=+g[253579];g[k>>2]=n;g[l>>2]=n;g[m>>2]=n;g[e>>2]=n;break};case 4:{o=c[7094307]|0;if((o|0)==0){break a}g[b>>2]=1.0- +(d[o+116|0]|0|0)/255.0;g[j>>2]=1.0- +(d[o+117|0]|0|0)/255.0;g[i>>2]=1.0- +(d[o+118|0]|0|0)/255.0;g[h>>2]=1.0- +(d[o+119|0]|0|0)/255.0;break};case 10:{n=+JT(a+620|0);g[i>>2]=n;g[j>>2]=n;g[b>>2]=n;break};case 3:{o=c[7094307]|0;if((o|0)==0){break a}g[b>>2]=+(d[o+116|0]|0|0)/255.0;g[j>>2]=+(d[o+117|0]|0|0)/255.0;g[i>>2]=+(d[o+118|0]|0|0)/255.0;g[h>>2]=+(d[o+119|0]|0|0)/255.0;break};case 6:{n$(b|0,0,16)|0;n=+g[253579];g[l>>2]=n;g[m>>2]=n;g[e>>2]=n;g[k>>2]=1.0;break};case 12:{o=(c[(c[253203]|0)+228>>2]|0)+((c[340896]|0)*72|0)+28|0;g[b>>2]=+(d[o]|0|0)/255.0;g[j>>2]=+(d[o+1|0]|0|0)/255.0;g[i>>2]=+(d[o+2|0]|0|0)/255.0;g[h>>2]=+(d[o+3|0]|0|0)/255.0;break};default:{}}}while(0);switch(c[a+664>>2]|0){case 4:{g[h>>2]=0.0;g[k>>2]=1.0;break};case 5:{g[h>>2]=1.0;g[k>>2]=-1.0;break};case 7:{g[h>>2]=+KT(a+644|0);g[k>>2]=0.0;break};case 8:case 0:case 6:{g[h>>2]=1.0;g[k>>2]=0.0;break};case 9:{g[h>>2]=+(d[a+675|0]|0|0)/255.0;g[k>>2]=0.0;break};case 3:{a=c[7094307]|0;if((a|0)!=0){g[h>>2]=1.0- +(d[a+119|0]|0|0)/255.0}g[k>>2]=0.0;break};case 2:{a=c[7094307]|0;if((a|0)!=0){g[h>>2]=+(d[a+119|0]|0|0)/255.0}g[k>>2]=0.0;break};default:{}}k=c[253581]|0;if(!((c[(c[4917328]|0)+32>>2]|0)!=0&(k|0)!=0)){return}if(((f&15)-3|0)>>>0<2>>>0){return}a=f&240;if((a|0)==48|(a|0)==64){return}n=+(1<>2]=n*+g[b>>2];g[j>>2]=n*+g[j>>2];g[i>>2]=n*+g[i>>2];g[e>>2]=n*+g[e>>2];g[m>>2]=n*+g[m>>2];g[l>>2]=n*+g[l>>2];return}function CT(a,b){a=a|0;b=b|0;var d=0,e=0;if((c[a+84>>2]|0)!=0){d=c[5120111]|0;bP(b);e=a+76|0;jk[c[4886373]&255](c[e>>2]|0)|0;vk[c[4886371]&511](c[e>>2]|0);bP(d);return}d=a+32|0;if((c[d>>2]|0)<2){cP(c[a>>2]|0,b);return}else{e=(qk[c[4886378]&7](+g[340895]*+g[a+36>>2]*1024.0)|0)>>10;cP(c[a+(((((e|0)<0?0:e)|0)%(c[d>>2]|0)|0)<<2)>>2]|0,b);return}}function DT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0;e=i;i=i+24|0;f=e|0;h=f|0;g[h>>2]=1.0;j=f+8|0;g[j>>2]=0.0;k=f+16|0;g[k>>2]=0.0;l=f+4|0;g[l>>2]=0.0;m=f+12|0;g[m>>2]=1.0;n=f+20|0;g[n>>2]=0.0;g[b>>2]=1.0;f=b+8|0;g[f>>2]=0.0;o=b+4|0;g[o>>2]=0.0;p=b+12|0;g[p>>2]=1.0;q=d+4|0;r=d+8|0;s=d+12|0;t=a+72|0;n$(d|0,0,16)|0;if((c[t>>2]|0)<=0){i=e;return}u=a+76|0;v=0.0;w=0.0;x=1.0;y=0.0;z=0.0;A=1.0;a=0;B=c[u>>2]|0;a:while(1){C=B+(a*68|0)|0;D=c[C>>2]|0;switch(D|0){case 3:{PT(B+(a*68|0)+56|0,h);E=a;break};case 7:{PT((c[7094307]|0)+120|0,h);E=a;break};case 0:{E=4;break};case 5:{ET(B+(a*68|0)+4|0,h);E=a;break};case 6:{RT(+g[B+(a*68|0)+64>>2],h);E=a;break};case 2:{NT(B+(a*68|0)+4|0,r,s);E=a;break};case 1:{QT(C,h);E=a;break};case 4:{OT(B+(a*68|0)+48|0,h);E=a;break};default:{F=11;break a}}C=c[u>>2]|0;switch(c[C+(E*68|0)>>2]|0){case 6:case 1:case 7:case 3:case 4:case 5:{G=+g[h>>2];H=+g[j>>2];g[b>>2]=A*G+z*H;I=+g[l>>2];J=+g[m>>2];g[o>>2]=A*I+z*J;g[f>>2]=y*G+x*H;g[p>>2]=y*I+x*J;K=+g[k>>2]+(w*G+v*H);g[d>>2]=K;H=+g[n>>2]+(w*I+v*J);g[q>>2]=H;L=+g[b>>2];M=+g[o>>2];N=+g[f>>2];O=+g[p>>2];P=K;Q=H;break};default:{L=A;M=z;N=y;O=x;P=w;Q=v}}R=E+1|0;if((R|0)<(c[t>>2]|0)){v=Q;w=P;x=O;y=N;z=M;A=L;a=R;B=C}else{F=15;break}}if((F|0)==11){B=c[340894]|0;Tk[c[4886345]&255](1,115720,(a=i,i=i+16|0,c[a>>2]=D,c[a+8>>2]=B,a)|0);i=a}else if((F|0)==15){i=e;return}}function ET(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0;d=i;e=c[a>>2]|0;switch(e|0){case 5:{f=1212224;break};case 2:{f=1199936;break};case 1:{f=1195840;break};case 3:{f=1204032;break};case 4:{f=1208128;break};default:{h=c[340894]|0;Tk[c[4886345]&255](1,115656,(j=i,i=i+16|0,c[j>>2]=e,c[j+8>>2]=h,j)|0);i=j}}k=+g[a+4>>2];l=+g[f+(((qk[c[4886378]&7]((+g[a+12>>2]+ +g[340895]*+g[a+16>>2])*1024.0)|0)&1023)<<2)>>2];m=1.0/(k+l*+g[a+8>>2]);g[b>>2]=m;g[b+8>>2]=0.0;l=.5-m*.5;g[b+16>>2]=l;g[b+4>>2]=0.0;g[b+12>>2]=m;g[b+20>>2]=l;i=d;return}function FT(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;b=i;i=i+16|0;d=b|0;e=a+32|0;f=+g[e>>2];h=c[a+16>>2]|0;if(f==0.0){switch(h|0){case 2:{j=1199936;break};case 3:{j=1204032;break};case 5:{j=1212224;break};case 1:{j=1195840;break};case 4:{j=1208128;break};default:{k=c[340894]|0;Tk[c[4886345]&255](1,115656,(l=i,i=i+16|0,c[l>>2]=h,c[l+8>>2]=k,l)|0);i=l}}m=+g[a+20>>2];n=+g[j+(((qk[c[4886378]&7]((+g[a+28>>2]+ +g[340895]*f)*1024.0)|0)&1023)<<2)>>2];o=m+n*+g[a+24>>2];if((c[340902]|0)<=0){i=b;return}j=d|0;k=d+4|0;p=d+8|0;q=1243560;r=1259560;s=0;while(1){KU(j,c[r>>2]|0);g[q>>2]=+g[q>>2]+o*+g[j>>2];t=q+4|0;g[t>>2]=+g[t>>2]+o*+g[k>>2];t=q+8|0;g[t>>2]=+g[t>>2]+o*+g[p>>2];t=s+1|0;if((t|0)<(c[340902]|0)){q=q+16|0;r=r+4|0;s=t}else{break}}i=b;return}switch(h|0){case 2:{u=1199936;break};case 3:{u=1204032;break};case 4:{u=1208128;break};case 5:{u=1212224;break};case 1:{u=1195840;break};default:{s=c[340894]|0;Tk[c[4886345]&255](1,115656,(l=i,i=i+16|0,c[l>>2]=h,c[l+8>>2]=s,l)|0);i=l}}if((c[340902]|0)<=0){i=b;return}l=a+36|0;s=a+20|0;h=a+28|0;r=a+24|0;a=d|0;q=d+4|0;p=d+8|0;d=1243560;k=1259560;j=1;o=f;while(1){t=d+4|0;v=d+8|0;f=+g[s>>2];n=+g[u+(((qk[c[4886378]&7](((+g[d>>2]+ +g[t>>2]+ +g[v>>2])*+g[l>>2]+ +g[h>>2]+ +g[340895]*o)*1024.0)|0)&1023)<<2)>>2];m=f+n*+g[r>>2];KU(a,c[k>>2]|0);g[d>>2]=+g[d>>2]+m*+g[a>>2];g[t>>2]=+g[t>>2]+m*+g[q>>2];g[v>>2]=+g[v>>2]+m*+g[p>>2];if((j|0)>=(c[340902]|0)){break}d=d+16|0;k=k+4|0;j=j+1|0;o=+g[e>>2]}i=b;return}function GT(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0;b=i;i=i+16|0;d=b|0;if((c[340902]|0)<=0){i=b;return}e=d|0;f=a+32|0;h=a+24|0;a=d+4|0;j=d+8|0;d=0;k=1243560;l=1259560;while(1){KU(e,c[l>>2]|0);m=k+4|0;n=k+8|0;o=+hT(+g[k>>2]*.9800000190734863,+g[m>>2]*.9800000190734863,+g[n>>2]*.9800000190734863,+g[340895]*+g[f>>2]);g[e>>2]=+g[e>>2]+o*+g[h>>2];o=+hT(+g[k>>2]*.9800000190734863+100.0,+g[m>>2]*.9800000190734863,+g[n>>2]*.9800000190734863,+g[340895]*+g[f>>2]);g[a>>2]=+g[a>>2]+o*+g[h>>2];o=+hT(+g[k>>2]*.9800000190734863+200.0,+g[m>>2]*.9800000190734863,+g[n>>2]*.9800000190734863,+g[340895]*+g[f>>2]);p=+g[j>>2]+o*+g[h>>2];g[j>>2]=p;o=+g[e>>2];q=+g[a>>2];r=+GB(o*o+q*q+p*p);g[e>>2]=r*+g[e>>2];g[a>>2]=r*+g[a>>2];g[j>>2]=r*+g[j>>2];c[l>>2]=JU(e)|0;n=d+1|0;if((n|0)<(c[340902]|0)){d=n;k=k+16|0;l=l+4|0}else{break}}i=b;return}function HT(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0;d=i;i=i+80|0;e=d|0;f=d+16|0;h=d+32|0;j=d+48|0;k=d+64|0;l=h|0;g[l>>2]=0.0;m=h+4|0;g[m>>2]=0.0;n=h+8|0;g[n>>2]=-1.0;h=k|0;KU(h,c[314890]|0);o=f|0;p=+g[k+4>>2];q=+g[n>>2];r=+g[k+8>>2];s=+g[m>>2];t=+g[l>>2];u=+g[h>>2];h=f+4|0;k=f+8|0;v=+g[310892];w=v<999999.0?v:999999.0;x=v>-999999.0?v:-999999.0;y=+g[310896];z=yx?y:x;x=+g[310900];A=xw?x:w;w=+g[310891]+0.0+ +g[310895]+ +g[310899]+ +g[310903];B=+g[310904];C=(+g[310890]+0.0+ +g[310894]+ +g[310898]+ +g[310902])*.25;f=e|0;g[f>>2]=C;D=w*.25;E=e+4|0;g[E>>2]=D;w=(v+0.0+y+x+B)*.25;F=e+8|0;g[F>>2]=w;g[l>>2]=0.0;g[m>>2]=0.0;x=((B>z?B:z)-(B>2]=x;A=x*-.75;x=A*(p*q-r*s);g[o>>2]=x;B=(r*t-u*q)*A;g[h>>2]=B;q=(u*s-p*t)*A;g[k>>2]=q;n=o$(b|0)|0;A=+(n-1|0);t=C+x*A;g[f>>2]=t;C=D+A*B;g[E>>2]=C;D=w+A*q;g[F>>2]=D;c[340901]=0;c[340902]=0;c[340900]=0;g[j+12>>2]=1.0;g[j+8>>2]=1.0;g[j+4>>2]=1.0;m=j|0;g[m>>2]=1.0;if((n|0)>0){G=0;H=t;I=x;J=C;K=B;L=D;M=q}else{i=d;return}while(1){j=a[b+G|0]|0;e=j&255;if(j<<24>>24==32){N=H;O=I;P=J;Q=K;R=L;S=M}else{q=+(e>>>4|0)*.0625;D=+(e&15|0)*.0625;qU(f,o,l,m,D,q,D+.0625,q+.0625);N=+g[f>>2];O=+g[o>>2];P=+g[E>>2];Q=+g[h>>2];R=+g[F>>2];S=+g[k>>2]}q=N+O*-2.0;g[f>>2]=q;D=P+Q*-2.0;g[E>>2]=D;B=R+S*-2.0;g[F>>2]=B;e=G+1|0;if((e|0)<(n|0)){G=e;H=q;I=O;J=D;K=Q;L=B;M=S}else{break}}i=d;return}function IT(){var a=0,b=0,d=0,e=0,f=0,h=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.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0,O=0,P=0,Q=0,R=0,S=0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0,_=0.0,$=0.0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0.0,ha=0.0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0.0,va=0.0,wa=0.0,xa=0.0,ya=0.0,za=0.0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0;a=i;i=i+88|0;b=a|0;d=a+8|0;e=a+16|0;f=a+40|0;h=a+56|0;j=a+72|0;k=c[340894]|0;l=c[k+208>>2]|0;if((l|0)==0){i=a;return}do{if((l|0)<=1){m=c[k+212>>2]|0;if((m|0)==1|(m|0)==3){i=a;return}if((l|0)>0){break}i=a;return}}while(0);l=j|0;m=j+4|0;n=j+8|0;j=f|0;o=f+4|0;p=f+8|0;f=h|0;q=h+4|0;r=h+8|0;h=d+4|0;s=d|0;t=b+4|0;u=b|0;v=e+12|0;w=e|0;x=e+16|0;y=e+4|0;z=e+20|0;A=e+8|0;B=0;C=k;a:while(1){k=C+212+(B*52|0)|0;D=c[k>>2]|0;b:do{switch(D|0){case 7:{E=c[340902]|0;if((E&3|0)==0){F=E}else{Tk[c[4886344]&255](2,103552,(G=i,i=i+8|0,c[G>>2]=C,G)|0);i=G;F=c[340902]|0}if((c[340901]|0)!=((F>>2)*6|0|0)){Tk[c[4886344]&255](2,164408,(G=i,i=i+8|0,c[G>>2]=c[340894],G)|0);i=G}H=+g[7094070];if((c[7094307]|0)==1013432){I=H;J=+g[7094071];K=+g[7094072]}else{L=+g[7094071];M=+g[7094072];I=H*+g[7094236]+L*+g[7094237]+M*+g[7094238];J=H*+g[7094239]+L*+g[7094240]+M*+g[7094241];K=H*+g[7094242]+L*+g[7094243]+M*+g[7094244]}if((c[340902]|0)>0){N=0;O=0}else{break b}while(1){c[h>>2]=0;c[s>>2]=0;g[t>>2]=999999.0;g[u>>2]=999999.0;E=0;M=999999.0;P=0;Q=0;L=999999.0;while(1){R=c[29672+(E<<3)>>2]<<2;S=c[29676+(E<<3)>>2]<<2;H=+g[1243560+(O<<4)+(R<<2)>>2]- +g[1243560+(O<<4)+(S<<2)>>2];U=+g[1243560+(O<<4)+((R|1)<<2)>>2]- +g[1243560+(O<<4)+((S|1)<<2)>>2];V=+g[1243560+(O<<4)+((R|2)<<2)>>2]- +g[1243560+(O<<4)+((S|2)<<2)>>2];W=H*H+U*U+V*V;do{if(W>2]=P;g[t>>2]=M;c[s>>2]=E;g[u>>2]=W;X=W;Y=E;Z=P;_=M}else{if(!(W>2]=E;g[t>>2]=W;X=M;Y=P;Z=E;_=W}}while(0);S=E+1|0;if((S|0)<6){E=S;M=X;P=Y;Q=Z;L=_}else{break}}Q=c[29672+(Y<<3)>>2]<<2;P=c[29676+(Y<<3)>>2]<<2;L=(+g[1243560+(O<<4)+(Q<<2)>>2]+ +g[1243560+(O<<4)+(P<<2)>>2])*.5;g[w>>2]=L;M=(+g[1243560+(O<<4)+((Q|1)<<2)>>2]+ +g[1243560+(O<<4)+((P|1)<<2)>>2])*.5;g[y>>2]=M;W=(+g[1243560+(O<<4)+((Q|2)<<2)>>2]+ +g[1243560+(O<<4)+((P|2)<<2)>>2])*.5;g[A>>2]=W;P=c[29672+(Z<<3)>>2]<<2;Q=c[29676+(Z<<3)>>2]<<2;V=(+g[1243560+(O<<4)+(P<<2)>>2]+ +g[1243560+(O<<4)+(Q<<2)>>2])*.5;g[v>>2]=V;U=(+g[1243560+(O<<4)+((P|1)<<2)>>2]+ +g[1243560+(O<<4)+((Q|1)<<2)>>2])*.5;g[x>>2]=U;H=(+g[1243560+(O<<4)+((P|2)<<2)>>2]+ +g[1243560+(O<<4)+((Q|2)<<2)>>2])*.5;g[z>>2]=H;$=V-L;L=U-M;M=H-W;g[l>>2]=K*L-J*M;g[m>>2]=I*M-K*$;g[n>>2]=J*$-I*L;+wB(l);L=+g[l>>2];$=+g[m>>2];M=+g[n>>2];Q=0;P=Y;W=X;while(1){E=c[29672+(P<<3)>>2]|0;S=E<<2;R=1243560+(O<<4)+(S<<2)|0;aa=c[29676+(P<<3)>>2]|0;ba=aa<<2;ca=1243560+(O<<4)+(ba<<2)|0;H=+T(W)*.5;da=E+O|0;E=aa+O|0;aa=0;while(1){ea=aa+N|0;if((c[1219560+(ea<<2)>>2]|0)==(da|0)){if((c[1219560+(ea+1<<2)>>2]|0)==(E|0)){fa=aa;break}}ea=aa+1|0;if((ea|0)<5){aa=ea}else{fa=ea;break}}U=+g[e+(Q*12|0)>>2];if((fa|0)==5){g[R>>2]=L*H+U;V=+g[e+(Q*12|0)+4>>2];g[1243560+(O<<4)+((S|1)<<2)>>2]=$*H+V;ga=+g[e+(Q*12|0)+8>>2];g[1243560+(O<<4)+((S|2)<<2)>>2]=M*H+ga;ha=-0.0-H;g[ca>>2]=L*ha+U;g[1243560+(O<<4)+((ba|1)<<2)>>2]=$*ha+V;g[1243560+(O<<4)+((ba|2)<<2)>>2]=M*ha+ga}else{ga=-0.0-H;g[R>>2]=L*ga+U;ha=+g[e+(Q*12|0)+4>>2];g[1243560+(O<<4)+((S|1)<<2)>>2]=$*ga+ha;V=+g[e+(Q*12|0)+8>>2];g[1243560+(O<<4)+((S|2)<<2)>>2]=M*ga+V;g[ca>>2]=L*H+U;g[1243560+(O<<4)+((ba|1)<<2)>>2]=$*H+ha;g[1243560+(O<<4)+((ba|2)<<2)>>2]=M*H+V}aa=Q+1|0;if((aa|0)>=2){break}Q=aa;P=c[d+(aa<<2)>>2]|0;W=+g[b+(aa<<2)>>2]}P=O+4|0;if((P|0)<(c[340902]|0)){N=N+6|0;O=P}else{break}}break};case 1:{FT(k);break};case 4:{ia=c[C+212+(B*52|0)+16>>2]|0;switch(ia|0){case 4:{ja=1208128;break};case 2:{ja=1199936;break};case 3:{ja=1204032;break};case 5:{ja=1212224;break};case 1:{ja=1195840;break};default:{ka=17;break a}}W=+g[C+212+(B*52|0)+20>>2];M=+g[ja+(((qk[c[4886378]&7]((+g[C+212+(B*52|0)+28>>2]+ +g[340895]*+g[C+212+(B*52|0)+32>>2])*1024.0)|0)&1023)<<2)>>2];$=W+M*+g[C+212+(B*52|0)+24>>2];M=+g[C+212+(B*52|0)+4>>2]*$;W=+g[C+212+(B*52|0)+8>>2]*$;L=$*+g[C+212+(B*52|0)+12>>2];P=c[340902]|0;if((P|0)>0){la=1243560;ma=0}else{break b}while(1){g[la>>2]=M+ +g[la>>2];Q=la+4|0;g[Q>>2]=W+ +g[Q>>2];Q=la+8|0;g[Q>>2]=L+ +g[Q>>2];Q=ma+1|0;if((Q|0)<(P|0)){la=la+16|0;ma=Q}else{break}}break};case 15:case 8:case 9:case 10:case 11:case 12:case 13:case 14:{HT(28375704+(D-8<<5)|0);break};case 3:{L=+(c[7093913]|0)*+g[C+212+(B*52|0)+48>>2]*.0010000000474974513;if((c[340902]|0)<=0){break b}P=C+212+(B*52|0)+40|0;Q=C+212+(B*52|0)+44|0;aa=1259560;E=1243560;da=1267560;ea=0;while(1){KU(l,c[aa>>2]|0);W=+g[1195840+((~~((L+ +g[da>>2]*+g[P>>2])*162.9746551513672)&1023)<<2)>>2]*+g[Q>>2];g[E>>2]=+g[E>>2]+ +g[l>>2]*W;na=E+4|0;g[na>>2]=+g[na>>2]+W*+g[m>>2];na=E+8|0;g[na>>2]=+g[na>>2]+W*+g[n>>2];na=ea+1|0;if((na|0)<(c[340902]|0)){aa=aa+4|0;E=E+16|0;da=da+16|0;ea=na}else{break}}break};case 6:{ea=c[340902]|0;if((ea&3|0)==0){oa=ea}else{Tk[c[4886344]&255](2,140120,(G=i,i=i+8|0,c[G>>2]=C,G)|0);i=G;oa=c[340902]|0}if((c[340901]|0)==((oa>>2)*6|0|0)){pa=oa}else{Tk[c[4886344]&255](2,126056,(G=i,i=i+8|0,c[G>>2]=c[340894],G)|0);i=G;pa=c[340902]|0}c[340902]=0;c[340901]=0;c[340900]=0;L=+g[7094073];if((c[7094307]|0)==1013432){qa=+g[7094076];ra=+g[7094077];sa=+g[7094078];ta=L;ua=+g[7094074];va=+g[7094075]}else{W=+g[7094236];M=+g[7094074];$=+g[7094237];V=+g[7094075];ha=+g[7094238];U=+g[7094239];ga=+g[7094240];wa=+g[7094241];xa=+g[7094242];ya=+g[7094243];za=+g[7094244];Aa=+g[7094076];Ba=+g[7094077];Ca=+g[7094078];qa=W*Aa+$*Ba+ha*Ca;ra=U*Aa+ga*Ba+wa*Ca;sa=xa*Aa+ya*Ba+za*Ca;ta=L*W+M*$+V*ha;ua=L*U+M*ga+V*wa;va=L*xa+M*ya+V*za}if((pa|0)>0){Da=0}else{break b}do{za=+g[1243560+(Da<<4)>>2];V=(za+ +g[1243576+(Da<<4)>>2]+ +g[1243592+(Da<<4)>>2]+ +g[1243608+(Da<<4)>>2])*.25;g[l>>2]=V;ya=+g[1243564+(Da<<4)>>2];M=(ya+ +g[1243580+(Da<<4)>>2]+ +g[1243596+(Da<<4)>>2]+ +g[1243612+(Da<<4)>>2])*.25;g[m>>2]=M;xa=+g[1243568+(Da<<4)>>2];L=(xa+ +g[1243584+(Da<<4)>>2]+ +g[1243600+(Da<<4)>>2]+ +g[1243616+(Da<<4)>>2])*.25;g[n>>2]=L;wa=za-V;V=ya-M;M=xa-L;L=+T(wa*wa+V*V+M*M)*.7070000171661377;M=ta*L;g[j>>2]=M;V=ua*L;g[o>>2]=V;wa=va*L;g[p>>2]=wa;xa=qa*L;g[f>>2]=xa;ya=ra*L;g[q>>2]=ya;za=sa*L;g[r>>2]=za;if((c[7094165]|0)==0){Ea=M;Fa=V;Ga=wa}else{L=+g[219094]-M;g[j>>2]=L;M=+g[219095]-V;g[o>>2]=M;V=+g[219096]-wa;g[p>>2]=V;Ea=L;Fa=M;Ga=V}ea=c[7094307]|0;if((c[ea+64>>2]|0)!=0){V=+g[ea+28>>2];M=+g[ea+32>>2];L=+g[ea+36>>2];wa=+T(V*V+M*M+L*L);if(wa!=0.0){Ha=1.0/wa}else{Ha=0.0}g[j>>2]=Ea*Ha;g[o>>2]=Fa*Ha;g[p>>2]=Ga*Ha;g[f>>2]=xa*Ha;g[q>>2]=ya*Ha;g[r>>2]=za*Ha}rU(l,j,f,1283560+(Da<<4)|0);Da=Da+4|0;}while((Da|0)<(pa|0));break};case 5:{hU();break};case 2:{GT(k);break};default:{}}}while(0);k=B+1|0;D=c[340894]|0;if((k|0)<(c[D+208>>2]|0)){B=k;C=D}else{ka=63;break}}if((ka|0)==17){Tk[c[4886345]&255](1,115656,(G=i,i=i+16|0,c[G>>2]=ia,c[G+8>>2]=C,G)|0);i=G}else if((ka|0)==63){i=a;return}}function JT(a){a=a|0;var b=0,d=0,e=0,f=0,h=0.0,j=0.0,k=0,l=0,m=0.0,n=0.0;b=i;d=c[a>>2]|0;switch(d|0){case 5:{e=1212224;f=8;break};case 2:{e=1199936;f=8;break};case 6:{h=+g[a+4>>2];j=h+ +hT(0.0,0.0,0.0,(+g[340895]+ +g[a+12>>2])*+g[a+16>>2])*+g[a+8>>2];break};case 3:{e=1204032;f=8;break};case 1:{e=1195840;f=8;break};case 4:{e=1208128;f=8;break};default:{k=c[340894]|0;Tk[c[4886345]&255](1,115656,(l=i,i=i+16|0,c[l>>2]=d,c[l+8>>2]=k,l)|0);i=l;return 0.0}}if((f|0)==8){h=+g[a+4>>2];m=+g[e+(((qk[c[4886378]&7]((+g[a+12>>2]+ +g[340895]*+g[a+16>>2])*1024.0)|0)&1023)<<2)>>2];j=+g[253579]*(h+m*+g[a+8>>2])}if(j<0.0){n=0.0;i=b;return+n}if(!(j>1.0)){n=j;i=b;return+n}n=1.0;i=b;return+n}function KT(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0;b=i;d=c[a>>2]|0;switch(d|0){case 5:{e=1212224;break};case 3:{e=1204032;break};case 2:{e=1199936;break};case 4:{e=1208128;break};case 1:{e=1195840;break};default:{f=c[340894]|0;Tk[c[4886345]&255](1,115656,(h=i,i=i+16|0,c[h>>2]=d,c[h+8>>2]=f,h)|0);i=h;return 0.0}}j=+g[a+4>>2];k=+g[e+(((qk[c[4886378]&7]((+g[a+12>>2]+ +g[340895]*+g[a+16>>2])*1024.0)|0)&1023)<<2)>>2];l=j+k*+g[a+8>>2];if(l<0.0){m=0.0;i=b;return+m}m=l>1.0?1.0:l;i=b;return+m}function LT(b){b=b|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0.0;e=i;i=i+8e3|0;f=e|0;MT(f|0);if((c[340902]|0)>0){h=0;j=b}else{k=8e3;l=0;i=e;return}while(1){m=1.0- +jR(+g[f+(h<<3)>>2],+g[f+(h<<3)+4>>2]);a[j]=~~(m*+((d[j]|0)>>>0));b=j+1|0;a[b]=~~(m*+((d[b]|0)>>>0));b=j+2|0;a[b]=~~(m*+((d[b]|0)>>>0));b=h+1|0;if((b|0)<(c[340902]|0)){h=b;j=j+4|0}else{break}}k=8e3;l=0;i=e;return}function MT(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0.0;b=c[(c[253203]|0)+228>>2]|0;d=c[340896]|0;e=+g[7094233];f=+g[7094234];h=+g[7094235];i=+g[b+(d*72|0)+32>>2];j=+g[7094250]*i;k=+g[7094254]*i;l=+g[7094258]*i;if((c[b+(d*72|0)+52>>2]|0)==0){m=0.0;n=0.0;o=0.0;p=0.0;q=1.0}else{r=+g[b+(d*72|0)+56>>2];s=+g[b+(d*72|0)+60>>2];t=+g[b+(d*72|0)+64>>2];u=r*+g[7094236]+s*+g[7094237]+t*+g[7094238];v=r*+g[7094239]+s*+g[7094240]+t*+g[7094241];w=r*+g[7094242]+s*+g[7094243]+t*+g[7094244];x=e*r+f*s+h*t- +g[b+(d*72|0)+68>>2];m=u;n=v;o=w;p=x;q=x+(u*+g[7094245]+v*+g[7094246]+w*+g[7094247])}w=i*((e- +g[7094067])*+g[7094070]+(f- +g[7094068])*+g[7094071]+(h- +g[7094069])*+g[7094072])+.001953125;d=c[340902]|0;if((d|0)<=0){return}if(q<0.0){y=1243560;z=0;A=a}else{b=1243560;B=0;C=a;while(1){h=+g[b>>2];f=+g[b+4>>2];e=+g[b+8>>2];g[C>>2]=w+(-0.0-k*f-j*h-l*e);g[C+4>>2]=p+(m*h+n*f+o*e)<0.0?.03125:.96875;a=B+1|0;if((a|0)<(d|0)){b=b+16|0;B=a;C=C+8|0}else{break}}return}while(1){e=+g[y>>2];f=+g[y+4>>2];h=+g[y+8>>2];i=p+(m*e+n*f+o*h);if(i<1.0){D=.03125}else{D=i*.9375/(i-q)+.03125}g[A>>2]=w+(-0.0-k*f-j*e-l*h);g[A+4>>2]=D;C=z+1|0;if((C|0)<(d|0)){y=y+16|0;z=C;A=A+8|0}else{break}}return}function NT(a,b,c){a=a|0;b=b|0;c=c|0;g[c>>2]=+g[a+12>>2]+ +g[340895]*+g[a+16>>2];g[b>>2]=+g[a+8>>2];return}function OT(a,b){a=a|0;b=b|0;g[b>>2]=+g[a>>2];g[b+8>>2]=0.0;g[b+16>>2]=0.0;g[b+4>>2]=0.0;g[b+12>>2]=+g[a+4>>2];g[b+20>>2]=0.0;return}function PT(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+g[340895];d=c*+g[a>>2];e=c*+g[a+4>>2];c=d- +R(d);d=e- +R(e);g[b>>2]=1.0;g[b+8>>2]=0.0;g[b+16>>2]=c;g[b+4>>2]=0.0;g[b+12>>2]=1.0;g[b+20>>2]=d;return}function QT(a,b){a=a|0;b=b|0;g[b>>2]=+g[a+24>>2];g[b+8>>2]=+g[a+32>>2];g[b+16>>2]=+g[a+40>>2];g[b+4>>2]=+g[a+28>>2];g[b+12>>2]=+g[a+36>>2];g[b+20>>2]=+g[a+44>>2];return}function RT(a,b){a=+a;b=b|0;var c=0,d=0.0,e=0.0,f=0.0;c=~~(+g[340895]*a*-2.844444513320923);a=+g[1195840+((c&1023)<<2)>>2];d=+g[1195840+((c+256&1023)<<2)>>2];g[b>>2]=d;g[b+8>>2]=-0.0-a;e=d*.5;f=a*.5;g[b+16>>2]=f+(.5-e);g[b+4>>2]=a;g[b+12>>2]=d;g[b+20>>2]=.5-f-e;return}function ST(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=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;f=i;i=i+64|0;h=f|0;j=h|0;k=TT(b)|0;l=c[253342]|0;if((k|0)==0|(k|0)==(l|0)){do{if((o$(b|0)|0)>>>0>63>>>0){Tk[c[4886344]&255](0,114464,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;n=0;o=7}else{p=WT(b,0,1)|0;if((c[p+80>>2]|0)!=0){n=0;o=7;break}q=c[p+68>>2]|0;if((q|0)>=0){n=q;o=7;break}Tk[c[4886344]&255](2,113408,(m=i,i=i+8|0,c[m>>2]=q,m)|0);i=m;r=1013368}}while(0);do{if((o|0)==7){if((c[265161]|0)>(n|0)){r=1060648+(n<<2)|0;break}else{Tk[c[4886344]&255](2,113408,(m=i,i=i+8|0,c[m>>2]=n,m)|0);i=m;r=1013368;break}}}while(0);s=c[r>>2]|0;t=c[253342]|0}else{s=k;t=l}if((s|0)==0|(s|0)==(t|0)){Tk[c[4886344]&255](2,103232,(m=i,i=i+8|0,c[m>>2]=b,m)|0);i=m;u=64;v=0;i=f;return}t=TT(d)|0;s=c[253342]|0;if((t|0)==0|(t|0)==(s|0)){do{if((o$(d|0)|0)>>>0>63>>>0){Tk[c[4886344]&255](0,114464,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;w=0;o=19}else{l=WT(d,0,1)|0;if((c[l+80>>2]|0)!=0){w=0;o=19;break}k=c[l+68>>2]|0;if((k|0)>=0){w=k;o=19;break}Tk[c[4886344]&255](2,113408,(m=i,i=i+8|0,c[m>>2]=k,m)|0);i=m;x=1013368}}while(0);do{if((o|0)==19){if((c[265161]|0)>(w|0)){x=1060648+(w<<2)|0;break}else{Tk[c[4886344]&255](2,113408,(m=i,i=i+8|0,c[m>>2]=w,m)|0);i=m;x=1013368;break}}}while(0);y=c[x>>2]|0;z=c[253342]|0}else{y=t;z=s}if((y|0)==0|(y|0)==(z|0)){Tk[c[4886344]&255](2,164328,(m=i,i=i+8|0,c[m>>2]=d,m)|0);i=m;u=64;v=0;i=f;return}SB(b,j,64);b=a[j]|0;a:do{if(b<<24>>24==0){A=0}else{m=0;d=0;z=b;while(1){s=(t$(z<<24>>24|0)|0)&255;if((s<<24>>24|0)==46){A=d;break a}else if((s<<24>>24|0)==92){B=47}else{B=s}s=(da(B<<24>>24,m+119|0)|0)+d|0;t=m+1|0;x=a[h+t|0]|0;if(x<<24>>24==0){A=s;break}else{m=t;d=s;z=x}}}}while(0);h=c[20471184+(((A>>>10^A^A>>>20)&1023)<<2)>>2]|0;if((h|0)!=0){A=h;do{do{if((VB(A|0,j)|0)==0){h=A+416|0;if((A|0)==(y|0)){c[h>>2]=0;break}else{c[h>>2]=y;break}}}while(0);A=c[A+420>>2]|0;}while((A|0)!=0)}if((e|0)==0){u=64;v=0;i=f;return}g[y+412>>2]=+h$(e);u=64;v=0;i=f;return}function TT(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=i;i=i+64|0;e=d|0;f=e|0;do{if((b|0)!=0){if((a[b]|0)==0){break}SB(b,f,64);g=a[f]|0;a:do{if(g<<24>>24==0){h=0}else{j=0;k=0;l=g;while(1){m=(t$(l<<24>>24|0)|0)&255;if((m<<24>>24|0)==92){n=47}else if((m<<24>>24|0)==46){h=k;break a}else{n=m}m=(da(n<<24>>24,j+119|0)|0)+k|0;o=j+1|0;p=a[e+o|0]|0;if(p<<24>>24==0){h=m;break}else{j=o;k=m;l=p}}}}while(0);g=c[20471184+(((h>>>10^h^h>>>20)&1023)<<2)>>2]|0;b:do{if((g|0)!=0){l=g;while(1){if((VB(l|0,f)|0)==0){q=l;break}l=c[l+420>>2]|0;if((l|0)==0){break b}}r=64;s=0;i=d;return q|0}}while(0);q=c[253342]|0;r=64;s=0;i=d;return q|0}}while(0);q=c[253342]|0;r=64;s=0;i=d;return q|0}function UT(a){a=a|0;var b=0,d=0,e=0;b=i;do{if((a|0)<0){Tk[c[4886344]&255](2,113408,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;e=1013368}else{if((c[265161]|0)>(a|0)){e=1060648+(a<<2)|0;break}else{Tk[c[4886344]&255](2,113408,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;e=1013368;break}}}while(0);i=b;return c[e>>2]|0}function VT(b){b=b|0;var d=0,e=0;d=i;e=cC(b,0)|0;if((a[e]|0)==0){Tk[c[4886344]&255](2,140072,(b=i,i=i+8|0,c[b>>2]=2170048,b)|0);i=b;i=d;return}if((VB(e,126048)|0)==0){g[542531]=1.0;i=d;return}if((VB(e,115648)|0)==0){g[542531]=2.0;i=d;return}if((VB(e,105640)|0)==0){g[542531]=3.0;i=d;return}if((VB(e,62336)|0)==0){g[542531]=4.0;i=d;return}if((VB(e,54672)|0)==0){g[542531]=5.0;i=d;return}if((VB(e,48600)|0)==0){g[542531]=6.0;i=d;return}if((VB(e,44368)|0)==0){g[542531]=10.0;i=d;return}if((VB(e,183424)|0)==0){g[542531]=16.0;i=d;return}if((VB(e,179472)|0)==0){g[542531]=8.0;i=d;return}else{g[542531]=+h$(e);i=d;return}}function WT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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=i;i=i+80|0;g=f|0;h=f+8|0;j=f+72|0;k=h|0;if((a[b]|0)==0){l=c[253342]|0;m=64;n=0;i=f;return l|0}do{if((d|0)<0|(c[253348]|0)>(d|0)){if(!((d|0)<-4)){o=d;break}Tk[c[4886344]&255](2,118200,(p=i,i=i+16|0,c[p>>2]=b,c[p+8>>2]=d,p)|0);i=p;o=-3}else{o=-3}}while(0);SB(b,k,64);d=a[k]|0;a:do{if(d<<24>>24==0){q=0}else{r=0;s=0;t=d;while(1){u=(t$(t<<24>>24|0)|0)&255;if((u<<24>>24|0)==92){v=47}else if((u<<24>>24|0)==46){q=s;break a}else{v=u}u=(da(v<<24>>24,r+119|0)|0)+s|0;w=r+1|0;x=a[h+w|0]|0;if(x<<24>>24==0){q=u;break}else{r=w;s=u;t=x}}}}while(0);v=c[20471184+(((q>>>10^q^q>>>20)&1023)<<2)>>2]|0;b:do{if((v|0)!=0){q=v;while(1){if((c[q+64>>2]|0)==(o|0)){y=13}else{if((c[q+80>>2]|0)!=0){y=13}}if((y|0)==13){y=0;if((VB(q|0,k)|0)==0){l=q;break}}q=c[q+420>>2]|0;if((q|0)==0){break b}}m=64;n=0;i=f;return l|0}}while(0);n$(2170048,0,424)|0;n$(2140304,0,5664)|0;TB(2170048,k,64);c[542528]=o;c[535095]=1217384;c[535272]=1217656;c[535449]=1217928;c[535626]=1218200;c[535803]=1218472;c[535980]=1218744;c[536157]=1219016;c[536334]=1219288;o=a[k]|0;c:do{if(o<<24>>24==0){z=0}else{v=0;q=0;d=o;while(1){t=(t$(d<<24>>24|0)|0)&255;if((t<<24>>24|0)==46){z=q;break c}else if((t<<24>>24|0)==92){A=47}else{A=t}t=(da(A<<24>>24,v+119|0)|0)+q|0;s=v+1|0;r=a[h+s|0]|0;if(r<<24>>24==0){z=t;break}else{v=s;q=t;d=r}}}}while(0);h=2161856+(((z>>>10^z^z>>>20)&2047)<<2)|0;z=c[h>>2]|0;d:do{if((z|0)==0){y=23}else{A=c[z>>2]|0;if((A|0)==0){y=23;break}else{B=0;C=A}while(1){c[g>>2]=C;A=B+1|0;if((VB(cC(g,1)|0,k)|0)==0){y=28;break d}o=c[(c[h>>2]|0)+(A<<2)>>2]|0;if((o|0)==0){y=23;break}else{B=A;C=o}}}}while(0);e:do{if((y|0)==23){C=c[553496]|0;c[g>>2]=C;do{if((C|0)!=0){B=cC(g,1)|0;if((a[B]|0)==0){break}else{D=B}do{if((VB(D,k)|0)==0){y=28;break e}eC(g,0)|0;D=cC(g,1)|0;}while((a[D]|0)!=0)}}while(0);c[j>>2]=0}}while(0);do{if((y|0)==28){D=c[g>>2]|0;c[j>>2]=D;if((D|0)==0){break}if((c[(c[4917376]|0)+32>>2]|0)!=0){Tk[c[4886344]&255](0,117296,(p=i,i=i+8|0,c[p>>2]=b,p)|0);i=p}if((XT(j)|0)==0){c[542532]=1}l=YT()|0;m=64;n=0;i=f;return l|0}}while(0);j=(c[(c[4917320]|0)+32>>2]|0)==0?0:128;if((e|0)==0){E=j|64}else{E=((c[(c[4917470]|0)+32>>2]|0)==0?3:259)|j}j=hR(b,0,E)|0;if((j|0)==0){Tk[c[4886344]&255](1,116056,(p=i,i=i+8|0,c[p>>2]=b,p)|0);i=p;c[542532]=1;l=YT()|0;m=64;n=0;i=f;return l|0}p=c[542528]|0;if((p|0)==(-1|0)){c[535077]=j;c[535076]=1;c[535236]=11;c[535245]=256}else if((p|0)==(-2|0)){c[535077]=c[253241];c[535076]=1;c[535236]=1;c[535245]=256;c[535254]=j;c[535253]=1;c[535413]=2;c[535422]=c[535422]|19}else if((p|0)==(-3|0)){c[535077]=j;c[535076]=1;c[535236]=5;c[535242]=1;c[535245]=256}else if((p|0)==(-4|0)){c[535077]=j;c[535076]=1;c[535236]=6;c[535242]=4;c[535245]=65637}else{c[535077]=c[(c[253350]|0)+(p<<2)>>2];c[535097]=1;c[535076]=1;c[535236]=2;c[535245]=256;c[535254]=j;c[535253]=1;c[535413]=2;c[535422]=c[535422]|19}l=YT()|0;m=64;n=0;i=f;return l|0}function XT(b){b=b|0;var d=0,e=0,f=0,h=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.0,x=0,y=0,A=0.0,B=0,C=0.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,X=0,Y=0,Z=0,_=0,$=0,aa=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.0,ta=0,ua=0,va=0;d=i;i=i+1112|0;e=d+64|0;f=d+72|0;h=d+88|0;j=cC(b,1)|0;if((a[j]|0)!=123){Tk[c[4886344]&255](2,47328,(k=i,i=i+16|0,c[k>>2]=j,c[k+8>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}j=d|0;m=f|0;n=f+4|0;o=f+8|0;f=h|0;p=0;a:while(1){q=cC(b,1)|0;r=a[q]|0;if((r<<24>>24|0)==0){s=5;break}else if((r<<24>>24|0)==125){s=401;break}else if((r<<24>>24|0)!=123){if((jC(q,46408,3)|0)==0){fC(b);p=p;continue}do{if((VB(q,45880)|0)!=0){if((VB(q,45264)|0)==0){break}if((VB(q,44928)|0)==0){break}if((VB(q,44480)|0)==0){g[253200]=+h$(cC(b,0)|0);g[253201]=+h$(cC(b,0)|0);g[253202]=+h$(cC(b,0)|0);g[253198]=+h$(cC(b,0)|0);g[253199]=+h$(cC(b,0)|0);fC(b);p=p;continue a}if((VB(q,44016)|0)==0){r=cC(b,0)|0;if((a[r]|0)==0){Tk[c[4886344]&255](2,172392,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}t=c[542564]|0;if((t|0)==3){Tk[c[4886344]&255](2,172072,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}u=2170260+(t*52|0)|0;c[542564]=t+1;if((VB(r,62568)|0)==0){c[u>>2]=5;p=p;continue a}if((VB(r,171656)|0)==0){c[u>>2]=6;p=p;continue a}if((VB(r,171272)|0)==0){c[u>>2]=7;p=p;continue a}if((jC(r,171104,4)|0)==0){v=a[r+4|0]|0;c[u>>2]=(v-48|0)>>>0>7>>>0?8:v-40|0;p=p;continue a}if((VB(r,170928)|0)==0){v=cC(b,0)|0;if((a[v]|0)==0){Tk[c[4886344]&255](2,170632,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}g[2170300+(t*52|0)>>2]=+h$(v);v=cC(b,0)|0;if((a[v]|0)==0){Tk[c[4886344]&255](2,170632,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}g[2170304+(t*52|0)>>2]=+h$(v);v=cC(b,0)|0;if((a[v]|0)==0){Tk[c[4886344]&255](2,170632,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}else{g[2170308+(t*52|0)>>2]=+h$(v);c[u>>2]=3;p=p;continue a}}if((VB(r,170496)|0)==0){v=cC(b,0)|0;if((a[v]|0)==0){Tk[c[4886344]&255](2,170280,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}w=+h$(v);if(w!=0.0){g[2170296+(t*52|0)>>2]=1.0/w}else{g[2170296+(t*52|0)>>2]=100.0;Tk[c[4886344]&255](2,169912,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k}cU(b,2170276+(t*52|0)|0);c[u>>2]=1;p=p;continue a}if((VB(r,169344)|0)==0){v=cC(b,0)|0;if((a[v]|0)==0){Tk[c[4886344]&255](2,170280,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}g[2170284+(t*52|0)>>2]=+h$(v);v=cC(b,0)|0;if((a[v]|0)==0){Tk[c[4886344]&255](2,170280,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}else{g[2170292+(t*52|0)>>2]=+h$(v);c[u>>2]=2;p=p;continue a}}if((VB(r,169192)|0)==0){x=0}else{Tk[c[4886344]&255](2,168808,(k=i,i=i+16|0,c[k>>2]=r,c[k+8>>2]=2170048,k)|0);i=k;p=p;continue a}while(1){r=cC(b,0)|0;if((a[r]|0)==0){s=319;break}g[2170264+(t*52|0)+(x<<2)>>2]=+h$(r);r=x+1|0;if((r|0)<3){x=r}else{s=321;break}}if((s|0)==319){s=0;Tk[c[4886344]&255](2,170280,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}else if((s|0)==321){s=0;cU(b,2170276+(t*52|0)|0);c[u>>2]=4;p=p;continue a}}if((VB(q,43656)|0)==0){fC(b);p=p;continue a}if((VB(q,43368)|0)==0){r=cC(b,0)|0;if((a[r]|0)==0){p=p;continue a}g[542614]=+h$(r);p=p;continue a}if((jC(q,43056,5)|0)==0){fC(b);p=p;continue a}if((VB(q,185880)|0)==0){r=cC(b,0)|0;v=0;while(1){y=v+1|0;if((VB(r,c[19648+(v<<4)>>2]|0)|0)==0){break}if((y|0)<32){v=y}else{p=p;continue a}}c[542534]=c[542534]|c[19656+(v<<4)>>2];c[542535]=c[542535]|c[19660+(v<<4)>>2];p=p;continue a}if((VB(q,185584)|0)==0){c[542560]=1;c[542561]=1;p=p;continue a}if((VB(q,185032)|0)==0){c[542561]=1;p=p;continue a}if((VB(q,184360)|0)==0){c[542559]=1;p=p;continue a}if((VB(q,183976)|0)==0){c[542536]=1;p=p;continue a}if((VB(q,183512)|0)==0){if((bU(b,2170204)|0)==0){l=0;s=404;break a}r=cC(b,0)|0;if((a[r]|0)==0){Tk[c[4886344]&255](2,183120,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}else{g[542554]=+h$(r);fC(b);p=p;continue a}}if((VB(q,126048)|0)==0){g[542531]=1.0;c[542556]=1;p=p;continue a}if((VB(q,182776)|0)!=0){if((VB(q,182472)|0)==0){cC(b,0)|0;p=p;continue a}if((VB(q,182264)|0)!=0){if((VB(q,178288)|0)!=0){s=400;break a}VT(b);p=p;continue a}r=cC(b,0)|0;if((a[r]|0)==0){Tk[c[4886344]&255](2,181984,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}do{if((VB(r,181672)|0)!=0){if((VB(r,181224)|0)==0){break}if((VB(r,180568)|0)==0){break}do{if((VB(r,180208)|0)!=0){if((VB(r,179584)|0)==0){break}if((VB(r,179072)|0)==0){break}Tk[c[4886344]&255](2,178656,(k=i,i=i+16|0,c[k>>2]=r,c[k+8>>2]=2170048,k)|0);i=k;p=p;continue a}}while(0);c[542558]=1;p=p;continue a}}while(0);c[542558]=2;p=p;continue a}r=(c[(c[4917320]|0)+32>>2]|0)==0?3:131;v=cC(b,0)|0;if((a[v]|0)==0){Tk[c[4886344]&255](2,174688,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}do{if((k$(v,174408)|0)!=0){u=r|64;$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=177320,k)|0)|0;i=k;t=hR(j,0,u)|0;c[542539]=t;if((t|0)==0){c[542539]=c[253205]}$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=176928,k)|0)|0;i=k;t=hR(j,0,u)|0;c[542540]=t;if((t|0)==0){c[542540]=c[253205]}$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=176480,k)|0)|0;i=k;t=hR(j,0,u)|0;c[542541]=t;if((t|0)==0){c[542541]=c[253205]}$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=175912,k)|0)|0;i=k;t=hR(j,0,u)|0;c[542542]=t;if((t|0)==0){c[542542]=c[253205]}$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=175648,k)|0)|0;i=k;t=hR(j,0,u)|0;c[542543]=t;if((t|0)==0){c[542543]=c[253205]}$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=175208,k)|0)|0;i=k;t=hR(j,0,u)|0;c[542544]=t;if((t|0)!=0){break}c[542544]=c[253205]}}while(0);v=cC(b,0)|0;if((a[v]|0)==0){Tk[c[4886344]&255](2,174688,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}w=+h$(v);A=w!=0.0?w:512.0;g[542538]=A;lU(A);v=cC(b,0)|0;if((a[v]|0)==0){Tk[c[4886344]&255](2,174688,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;p=p;continue a}do{if((k$(v,174408)|0)!=0){$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=177320,k)|0)|0;i=k;t=hR(j,0,r)|0;c[542545]=t;if((t|0)==0){c[542545]=c[253205]}$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=176928,k)|0)|0;i=k;t=hR(j,0,r)|0;c[542546]=t;if((t|0)==0){c[542546]=c[253205]}$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=176480,k)|0)|0;i=k;t=hR(j,0,r)|0;c[542547]=t;if((t|0)==0){c[542547]=c[253205]}$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=175912,k)|0)|0;i=k;t=hR(j,0,r)|0;c[542548]=t;if((t|0)==0){c[542548]=c[253205]}$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=175648,k)|0)|0;i=k;t=hR(j,0,r)|0;c[542549]=t;if((t|0)==0){c[542549]=c[253205]}$B(j,64,174200,(k=i,i=i+16|0,c[k>>2]=v,c[k+8>>2]=175208,k)|0)|0;i=k;t=hR(j,0,r)|0;c[542550]=t;if((t|0)!=0){break}c[542550]=c[253205]}}while(0);c[542537]=1;p=p;continue a}}while(0);do{if((VB(q,44928)|0)==0){if((c[(c[4917308]|0)+32>>2]|0)==0){B=0;break}c[253805]=1;B=1}else{B=0}}while(0);g[253806]=+h$(cC(b,0)|0);g[253807]=+h$(cC(b,0)|0);g[253808]=+h$(cC(b,0)|0);+wB(1015224);A=+h$(cC(b,0)|0);g[253806]=+g[253806]*A;g[253807]=A*+g[253807];g[253808]=A*+g[253808];A=+h$(cC(b,0)|0)/180.0*3.141592653589793;w=A;A=+h$(cC(b,0)|0)/180.0*3.141592653589793;C=+V(A);g[253809]=+V(w)*C;g[253810]=C*+W(w);g[253811]=+W(A);if(B){g[253803]=+h$(cC(b,0)|0);g[253804]=+h$(cC(b,0)|0)}fC(b);p=p;continue}if((p|0)>7){s=7;break}r=2140304+(p*708|0)|0;c[r>>2]=1;v=2140308+(p*708|0)|0;t=2140388+(p*708|0)|0;u=2140992+(p*708|0)|0;y=2140344+(p*708|0)|0;D=2140340+(p*708|0)|0;E=2140384+(p*708|0)|0;F=2140392+(p*708|0)|0;G=2140972+(p*708|0)|0;H=2140988+(p*708|0)|0;I=2141004+(p*708|0)|0;J=2141008+(p*708|0)|0;K=2140924+(p*708|0)|0;L=2140944+(p*708|0)|0;M=2140976+(p*708|0)|0;N=2140977+(p*708|0)|0;O=2140978+(p*708|0)|0;P=2140968+(p*708|0)|0;Q=2140948+(p*708|0)|0;R=2140979+(p*708|0)|0;S=2140348+(p*708|0)|0;T=2140352+(p*708|0)|0;U=2140364+(p*708|0)|0;X=2140376+(p*708|0)|0;Y=2140380+(p*708|0)|0;Z=0;_=0;$=0;aa=0;ca=256;b:while(1){da=cC(b,1)|0;ea=a[da]|0;if((ea<<24>>24|0)==0){s=10;break a}else if((ea<<24>>24|0)==125){break}if((VB(da,165392)|0)==0){fa=cC(b,0)|0;if((a[fa]|0)==0){s=13;break a}if((VB(fa,164760)|0)==0){c[v>>2]=c[253241];Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(fa,164288)|0)==0){c[t>>2]=1;ea=c[542528]|0;if((ea|0)<0){c[v>>2]=c[253241];Z=Z;_=_;$=$;aa=aa;ca=ca;continue}else{c[v>>2]=c[(c[253350]|0)+(ea<<2)>>2];Z=Z;_=_;$=$;aa=aa;ca=ca;continue}}if((VB(fa,164136)|0)==0){if((c[253197]|0)==0){s=22;break a}c[t>>2]=1;ea=c[542528]|0;if((ea|0)<0){c[v>>2]=c[253241];Z=Z;_=_;$=$;aa=aa;ca=ca;continue}else{c[v>>2]=c[(c[253351]|0)+(ea<<2)>>2];Z=Z;_=_;$=$;aa=aa;ca=ca;continue}}else{ea=(c[542560]|0)==0|0;ga=(c[542561]|0)==0?ea|2:ea;ea=c[u>>2]|0;if((ea-1|0)>>>0<2>>>0){ha=ga|32;ia=(ea|0)==2?2:1}else{ea=(c[(c[4917470]|0)+32>>2]|0)==0?ga:ga|256;ha=(c[(c[4917320]|0)+32>>2]|0)==0?ea:ea|128;ia=0}ea=hR(fa,ia,ha)|0;c[v>>2]=ea;if((ea|0)==0){s=30;break a}else{Z=Z;_=_;$=$;aa=aa;ca=ca;continue}}}if((VB(da,163232)|0)==0){ja=cC(b,0)|0;if((a[ja]|0)==0){s=33;break a}ea=(c[542560]|0)==0?65:64;ga=(c[542561]|0)==0?ea|2:ea;ea=c[u>>2]|0;if((ea-1|0)>>>0<2>>>0){ka=ga|32;la=(ea|0)==2?2:1}else{ea=(c[(c[4917470]|0)+32>>2]|0)==0?ga:ga|256;ka=(c[(c[4917320]|0)+32>>2]|0)==0?ea:ea|128;la=0}ea=hR(ja,la,ka)|0;c[v>>2]=ea;if((ea|0)==0){s=38;break a}else{Z=Z;_=_;$=$;aa=aa;ca=ca;continue}}if((VB(da,162496)|0)==0){ea=cC(b,0)|0;if((a[ea]|0)==0){s=41;break a}g[y>>2]=+h$(ea);ea=cC(b,0)|0;if((a[ea]|0)==0){Z=Z;_=_;$=$;aa=aa;ca=ca;continue}else{ma=ea}while(1){ea=c[D>>2]|0;if((ea|0)<8){ga=(c[542560]|0)==0|0;na=(c[542561]|0)==0?ga|2:ga;ga=hR(ma,0,(c[(c[4917320]|0)+32>>2]|0)==0?na:na|128)|0;c[2140308+(p*708|0)+(ea<<2)>>2]=ga;if((ga|0)==0){s=45;break a}c[D>>2]=(c[D>>2]|0)+1}ga=cC(b,0)|0;if((a[ga]|0)==0){Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}else{ma=ga}}}if((VB(da,161944)|0)==0){ga=cC(b,0)|0;if((a[ga]|0)==0){s=50;break a}ea=ik[c[4886372]&15](ga,0,0,256,256,26)|0;c[E>>2]=ea;if((ea|0)==-1){Z=Z;_=_;$=$;aa=aa;ca=ca;continue}c[F>>2]=1;c[v>>2]=c[1012824+(ea<<2)>>2];Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(da,161488)|0)==0){ea=cC(b,0)|0;if((a[ea]|0)==0){s=55;break a}do{if((VB(ea,140784)|0)==0){oa=1}else{if((VB(ea,140632)|0)==0){oa=2;break}if((VB(ea,140384)|0)==0){oa=3;break}Tk[c[4886344]&255](2,139984,(k=i,i=i+16|0,c[k>>2]=ea,c[k+8>>2]=2170048,k)|0);i=k;oa=0}}while(0);c[G>>2]=oa;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(da,161128)|0)==0){ea=cC(b,0)|0;if((a[ea]|0)==0){s=63;break a}if((VB(ea,160496)|0)==0){Z=Z;_=0;$=$;aa=aa;ca=ca;continue}if((VB(ea,16e4)|0)==0){Z=Z;_=131072;$=$;aa=aa;ca=ca;continue}Tk[c[4886344]&255](2,159720,(k=i,i=i+16|0,c[k>>2]=ea,c[k+8>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(da,150368)|0)==0){c[H>>2]=1;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(da,159256)|0)==0){ea=cC(b,0)|0;if((a[ea]|0)==0){Tk[c[4886344]&255](2,158888,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}do{if((VB(ea,158744)|0)==0){pa=32;qa=2}else{if((VB(ea,158640)|0)==0){pa=16;qa=3;break}if((VB(ea,158456)|0)==0){pa=96;qa=5;break}do{if((VB(ea,143744)|0)==0){ra=2}else{if((VB(ea,143552)|0)==0){ra=1;break}if((VB(ea,141416)|0)==0){ra=3;break}if((VB(ea,141120)|0)==0){ra=4;break}if((VB(ea,143312)|0)==0){ra=5;break}if((VB(ea,142880)|0)==0){ra=6;break}if((VB(ea,142560)|0)==0){ra=(c[(c[4917462]|0)+32>>2]|0)==0?7:2;break}if((VB(ea,142384)|0)==0){ra=(c[(c[4917462]|0)+32>>2]|0)==0?8:1;break}if((VB(ea,140944)|0)==0){ra=9;break}Tk[c[4886344]&255](2,141840,(k=i,i=i+16|0,c[k>>2]=ea,c[k+8>>2]=2170048,k)|0);i=k;ra=2}}while(0);ga=cC(b,0)|0;if((a[ga]|0)==0){Tk[c[4886344]&255](2,158888,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=ra;ca=ca;continue b}if((VB(ga,143744)|0)==0){pa=32;qa=ra;break}if((VB(ga,143552)|0)==0){pa=16;qa=ra;break}if((VB(ga,143312)|0)==0){pa=80;qa=ra;break}if((VB(ga,142880)|0)==0){pa=96;qa=ra;break}if((VB(ga,142560)|0)==0){pa=(c[(c[4917462]|0)+32>>2]|0)==0?112:32;qa=ra;break}if((VB(ga,142384)|0)==0){pa=(c[(c[4917462]|0)+32>>2]|0)==0?128:16;qa=ra;break}if((VB(ga,142184)|0)==0){pa=48;qa=ra;break}if((VB(ga,142104)|0)==0){pa=64;qa=ra;break}Tk[c[4886344]&255](2,141840,(k=i,i=i+16|0,c[k>>2]=ga,c[k+8>>2]=2170048,k)|0);i=k;pa=32;qa=ra}}while(0);ea=(Z|0)==0?0:ca;Z=Z;_=_;$=pa;aa=qa;ca=ea;continue}if((VB(da,158360)|0)==0){ea=cC(b,0)|0;if((a[ea]|0)==0){Tk[c[4886344]&255](2,158192,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,157856)|0)==0){c[u>>2]=0;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}do{if((VB(ea,157400)|0)!=0){if((VB(ea,157096)|0)==0){break}do{if((VB(ea,156880)|0)!=0){if((VB(ea,156512)|0)==0){break}if((VB(ea,156328)|0)==0){c[u>>2]=3;g[I>>2]=1.0;g[J>>2]=1.0;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}else{Tk[c[4886344]&255](2,156144,(k=i,i=i+16|0,c[k>>2]=ea,c[k+8>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}}}while(0);if((c[(c[4917384]|0)+32>>2]|0)==0){c[u>>2]=1;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}else{c[u>>2]=2;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}}}while(0);c[u>>2]=1;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(da,155992)|0)==0){ea=cC(b,0)|0;if((a[ea]|0)==0){Tk[c[4886344]&255](2,155872,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}else{g[I>>2]=+h$(ea);Z=Z;_=_;$=$;aa=aa;ca=ca;continue}}if((VB(da,155656)|0)==0){ea=cC(b,0)|0;if((a[ea]|0)==0){Tk[c[4886344]&255](2,155312,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}A=+h$(ea);do{if(A>1.0){ea=A>=8192.0;if(ea){sa=ea?8192.0:1.0;break}sa=A}else{sa=1.0}}while(0);g[J>>2]=+ba(sa)/9.010913347279288;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(da,154952)|0)==0){ea=cC(b,0)|0;if((a[ea]|0)==0){Tk[c[4886344]&255](2,154760,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}else{g[J>>2]=+h$(ea);Z=Z;_=_;$=$;aa=aa;ca=ca;continue}}if((VB(da,154584)|0)==0){ea=cC(b,0)|0;if((a[ea]|0)==0){Tk[c[4886344]&255](2,154352,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,170496)|0)==0){cU(b,K);c[L>>2]=10;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,154168)|0)==0){bU(b,m)|0;a[M]=~~(+g[m>>2]*255.0);a[N]=~~(+g[n>>2]*255.0);a[O]=~~(+g[o>>2]*255.0);c[L>>2]=13;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,154056)|0)==0){c[L>>2]=2;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,153952)|0)==0){c[L>>2]=1;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,153816)|0)==0){c[L>>2]=3;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,153664)|0)==0){c[L>>2]=4;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,153352)|0)==0){c[L>>2]=6;if((c[P>>2]|0)!=0){Z=Z;_=_;$=$;aa=aa;ca=ca;continue}c[P>>2]=4;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,152944)|0)==0){c[L>>2]=5;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,152832)|0)==0){c[L>>2]=8;if((c[P>>2]|0)!=0){Z=Z;_=_;$=$;aa=aa;ca=ca;continue}c[P>>2]=4;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,152632)|0)==0){c[L>>2]=7;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,152440)|0)==0){c[L>>2]=11;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,152352)|0)==0){c[L>>2]=9;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}else{Tk[c[4886344]&255](2,152192,(k=i,i=i+16|0,c[k>>2]=ea,c[k+8>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}}if((VB(da,152072)|0)==0){ea=cC(b,0)|0;if((a[ea]|0)==0){Tk[c[4886344]&255](2,151920,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,170496)|0)==0){cU(b,Q);c[P>>2]=7;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,154168)|0)==0){a[R]=~~(+h$(cC(b,0)|0)*255.0);c[P>>2]=9;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,154056)|0)==0){c[P>>2]=0;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,153816)|0)==0){c[P>>2]=2;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,153664)|0)==0){c[P>>2]=3;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,153352)|0)==0){c[P>>2]=4;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,151776)|0)==0){c[P>>2]=6;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,152352)|0)==0){c[P>>2]=5;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(ea,126048)|0)!=0){Tk[c[4886344]&255](2,150920,(k=i,i=i+16|0,c[k>>2]=ea,c[k+8>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}c[P>>2]=8;ea=cC(b,0)|0;if((a[ea]|0)==0){g[542555]=256.0;Tk[c[4886344]&255](2,151376,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}else{g[542555]=+h$(ea);Z=Z;_=_;$=$;aa=aa;ca=ca;continue}}do{if((VB(da,150680)|0)!=0){if((VB(da,150432)|0)==0){break}if((VB(da,148696)|0)!=0){if((VB(da,148248)|0)==0){Z=1;_=_;$=$;aa=aa;ca=256;continue b}else{s=261;break a}}n$(f|0,0,1024)|0;ea=cC(b,0)|0;if((a[ea]|0)!=0){ga=ea;do{p$(f|0,ga|0)|0;ea=h+(o$(f|0)|0)|0;z=32;a[ea]=z;z=z>>8;a[ea+1|0]=z;ga=cC(b,0)|0;}while((a[ga]|0)!=0)}c[e>>2]=f;ga=c[X>>2]|0;if((ga|0)==4){s=204;break a}ea=c[Y>>2]|0;na=ea+(ga*68|0)|0;c[X>>2]=ga+1;ta=cC(e,0)|0;if((VB(ta,147560)|0)==0){ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,147304,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+8>>2]=+h$(ua);ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,147120,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+12>>2]=+h$(ua);ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,147120,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+16>>2]=+h$(ua);ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,147120,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}else{g[ea+(ga*68|0)+20>>2]=+h$(ua);c[na>>2]=2;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}}if((VB(ta,146848)|0)==0){ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,146456,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+48>>2]=+h$(ua);ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,146456,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}else{g[ea+(ga*68|0)+52>>2]=+h$(ua);c[na>>2]=4;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}}if((VB(ta,146136)|0)==0){ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,145856,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+56>>2]=+h$(ua);ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,145856,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}else{g[ea+(ga*68|0)+60>>2]=+h$(ua);c[na>>2]=3;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}}if((VB(ta,145592)|0)==0){ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,145336,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}c[ea+(ga*68|0)+4>>2]=dU(ua)|0;ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,145336,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+8>>2]=+h$(ua);ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,145336,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+12>>2]=+h$(ua);ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,145336,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+16>>2]=+h$(ua);ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,145336,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}else{g[ea+(ga*68|0)+20>>2]=+h$(ua);c[na>>2]=5;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}}if((VB(ta,145168)|0)!=0){if((VB(ta,144784)|0)==0){ua=cC(e,0)|0;if((a[ua]|0)==0){Tk[c[4886344]&255](2,144632,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}else{g[ea+(ga*68|0)+64>>2]=+h$(ua);c[na>>2]=6;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}}else{if((VB(ta,144464)|0)==0){c[na>>2]=7;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}else{Tk[c[4886344]&255](2,144104,(k=i,i=i+16|0,c[k>>2]=ta,c[k+8>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}}}ta=cC(e,0)|0;if((a[ta]|0)==0){Tk[c[4886344]&255](2,144984,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+24>>2]=+h$(ta);ta=cC(e,0)|0;if((a[ta]|0)==0){Tk[c[4886344]&255](2,144984,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+28>>2]=+h$(ta);ta=cC(e,0)|0;if((a[ta]|0)==0){Tk[c[4886344]&255](2,144984,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+32>>2]=+h$(ta);ta=cC(e,0)|0;if((a[ta]|0)==0){Tk[c[4886344]&255](2,144984,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+36>>2]=+h$(ta);ta=cC(e,0)|0;if((a[ta]|0)==0){Tk[c[4886344]&255](2,144984,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}g[ea+(ga*68|0)+40>>2]=+h$(ta);ta=cC(e,0)|0;if((a[ta]|0)==0){Tk[c[4886344]&255](2,144984,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}else{g[ea+(ga*68|0)+44>>2]=+h$(ta);c[na>>2]=1;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}}}while(0);na=cC(b,0)|0;if((a[na]|0)==0){Tk[c[4886344]&255](2,150144,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(na,150032)|0)==0){c[S>>2]=4;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}if((VB(na,149896)|0)==0){c[S>>2]=2;Z=Z;_=_;$=$;aa=aa;ca=ca;continue}do{if((VB(na,149768)|0)!=0){if((VB(na,149552)|0)==0){break}if((VB(na,149424)|0)==0){bU(b,T)|0;bU(b,U)|0;c[S>>2]=6;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}else{Tk[c[4886344]&255](2,149024,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;Z=Z;_=_;$=$;aa=aa;ca=ca;continue b}}}while(0);c[S>>2]=3;Z=Z;_=_;$=$;aa=aa;ca=ca}Z=c[L>>2]|0;do{if((Z|0)==0){if((aa&-3|0)==0|(aa|0)==5){c[L>>2]=1;va=1;break}else{c[L>>2]=2;va=2;break}}else{va=Z}}while(0);Z=(aa|0)==2&($|0)==16;do{if((c[P>>2]|0)==0){if(!((va|0)==2|(va|0)==11)){break}c[P>>2]=1}}while(0);c[2140980+(p*708|0)>>2]=(Z?256:aa|ca|$)|_;c[r>>2]=1;p=p+1|0}if((s|0)==5){Tk[c[4886344]&255](2,47e3,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==7){Tk[c[4886344]&255](2,46696,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==10){Tk[c[4886344]&255](2,165672,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==13){Tk[c[4886344]&255](2,165e3,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==22){Tk[c[4886344]&255](2,163960,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==30){Tk[c[4886344]&255](2,163576,(k=i,i=i+16|0,c[k>>2]=fa,c[k+8>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==33){Tk[c[4886344]&255](2,162728,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==38){Tk[c[4886344]&255](2,163576,(k=i,i=i+16|0,c[k>>2]=ja,c[k+8>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==41){Tk[c[4886344]&255](2,162216,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==45){Tk[c[4886344]&255](2,163576,(k=i,i=i+16|0,c[k>>2]=ma,c[k+8>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==50){Tk[c[4886344]&255](2,161696,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==55){Tk[c[4886344]&255](2,161288,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==63){Tk[c[4886344]&255](2,160800,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==204){Tk[c[4886345]&255](1,147672,(k=i,i=i+8|0,c[k>>2]=2170048,k)|0);i=k;return 0}else if((s|0)==261){Tk[c[4886344]&255](2,147880,(k=i,i=i+16|0,c[k>>2]=da,c[k+8>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==400){Tk[c[4886344]&255](2,177768,(k=i,i=i+16|0,c[k>>2]=q,c[k+8>>2]=2170048,k)|0);i=k;l=0;i=d;return l|0}else if((s|0)==401){do{if((c[542537]|p|0)==0){if((c[542535]&64|0)==0){l=0}else{break}i=d;return l|0}}while(0);c[542533]=1;l=1;i=d;return l|0}else if((s|0)==404){i=d;return l|0}return 0}function YT(){var b=0,d=0,e=0,f=0,h=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.0,G=0.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,_=0,$=0,aa=0,ba=0,ca=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,Da=0,Ea=0;b=i;i=i+904|0;d=b|0;e=b+88|0;f=b+152|0;h=b+864|0;j=b+872|0;k=b+880|0;l=b+888|0;m=b+896|0;do{if((c[542537]|0)==0){if((c[542559]|0)==0|+g[542531]!=0.0){n=0;o=0;break}g[542531]=4.0;n=0;o=0}else{g[542531]=2.0;n=0;o=0}}while(0);a:while(1){p=o;b:while(1){q=2140304+(p*708|0)|0;r=q|0;s=2140308+(p*708|0)|0;t=2140988+(p*708|0)|0;u=(c[4919870]|0)+32|0;v=p+1|0;w=(v|0)<8;x=q;q=2140304+(v*708|0)|0;c:do{if(w){while(1){if((c[r>>2]|0)==0){y=p;z=n;break a}if((c[s>>2]|0)==0){break c}if((c[t>>2]|0)==0){break b}if((c[u>>2]|0)==0){A=v}else{break b}while(1){B=A+1|0;if((c[2140304+(A*708|0)>>2]|0)==0){C=14;break}if((B|0)<8){A=B}else{C=12;break}}if((C|0)==12){C=0;s$(x|0,q|0,((B-p|0)*708|0)-708|0)|0;n$(2140304+(A*708|0)|0,0,708)|0;continue}else if((C|0)==14){C=0;s$(x|0,q|0,(A-p|0)*708|0|0)|0;continue}}}else{if((c[r>>2]|0)==0){y=p;z=n;break a}if((c[s>>2]|0)!=0){C=18;break b}}}while(0);Tk[c[4886344]&255](2,50088,(D=i,i=i+8|0,c[D>>2]=2170048,D)|0);i=D;c[r>>2]=0;if(w){p=v}else{y=v;z=n;break a}}do{if((C|0)==18){C=0;if((c[t>>2]|0)==0){break}if((c[u>>2]|0)==0){C=20;break a}}}while(0);s=2140348+(p*708|0)|0;q=(c[s>>2]|0)==0;do{if((c[2140388+(p*708|0)>>2]|0)==0){if(!q){E=n;break}c[s>>2]=3;E=n}else{if(!q){E=1;break}c[s>>2]=2;E=1}}while(0);s=c[2140980+(p*708|0)>>2]|0;q=s&255;do{if((q|0)!=0){if((c[535245]&255|0)==0){break}if((q|0)==98){c[2140984+(p*708|0)>>2]=2}else if((q|0)==65|(q|0)==34){c[2140984+(p*708|0)>>2]=1}else if((q|0)==101){c[2140984+(p*708|0)>>2]=3}if(+g[542531]!=0.0){break}if((s&256|0)==0){g[542531]=9.0;break}else{g[542531]=5.0;break}}}while(0);if(w){n=E;o=v}else{y=v;z=E;break}}if((C|0)==20){n$(x|0,0,708)|0;y=p;z=n}F=+g[542531];if(F!=0.0){G=F}else{g[542531]=3.0;G=3.0}d:do{if((y|0)>1){if((c[(c[4917292]|0)+32>>2]|0)==0){if((c[5123022]|0)!=4){H=z;break}}else{if(!((c[(c[4917296]|0)+32>>2]|0)==0|(c[5123022]|0)==4)){H=z;break}}do{if(G==3.0){n=-999999;p=2140304;x=0;while(1){E=2140304+(x*708|0)|0;if((c[E>>2]|0)==0){I=p;break}v=(c[2140388+(x*708|0)>>2]|0)==0?0:-100;o=(c[2140348+(x*708|0)>>2]|0)==3?v:v-5|0;v=(c[2140376+(x*708|0)>>2]|0)==0?o:o-5|0;o=((c[2140944+(x*708|0)>>2]|0)-1|0)>>>0<2>>>0?v:v-3|0;v=(o|0)>(n|0);w=v?E:p;E=x+1|0;if((E|0)<8){n=v?o:n;p=w;x=E}else{I=w;break}}m$(2140308,I+4|0,88)|0;c[535245]=c[535245]&-512|256;c[535236]=(c[542528]|0)==-1?11:5;c[535242]=1;J=1}else{if((c[535097]|0)!=0){m$(2140304,2141012,708)|0}x=c[535236]|0;p=c[535413]|0;if((x|0)==4|(p|0)==4){c[535236]=1;K=1}else{K=x}x=(K|0)==10;n=c[535231]|0;r=(p|0)==10;p=c[535408]|0;if(x&(n|0)==4&r&(p|0)==5){c[535236]=1;J=1;break}if(!(x&(n|0)==5&r&(p|0)==4)){J=1;break}c[535236]=1;J=1}}while(0);while(1){p=2140304+(J*708|0)|0;if((c[p>>2]|0)==0){H=0;break d}n$(p|0,0,708)|0;p=J+1|0;if((p|0)<8){J=p}else{H=0;break}}}else{H=z}}while(0);z=(c[542564]|0)!=0;J=z&1;e:do{if(z){L=J;C=70}else{do{if((c[535076]|0)!=0&(c[535087]|0)==2&(c[535253]|0)!=0){K=c[535422]|0;I=K&255;if(!((I|0)==49|(I|0)==19)){M=J;N=0;break}I=c[535245]|0;y=f;m$(y|0,2140304,708)|0;m$(2140304,2141012,708)|0;m$(2141012,y|0,708)|0;c[535245]=I;c[535422]=K;M=J;N=0}else{M=J;N=0}}while(0);while(1){do{if((c[2140304+(N*708|0)>>2]|0)==0){O=M}else{if((c[2140984+(N*708|0)>>2]|0)!=0){break e}if((c[2140972+(N*708|0)>>2]|0)!=0){break e}K=c[2140348+(N*708|0)>>2]|0;if((K|0)==3|(K|0)==6|(K|0)==4){P=M}else if((K|0)==2){K=c[2140980+(N*708|0)>>2]&255;if((K|0)==49|(K|0)==19){P=M}else{break e}}else{P=1}K=c[2140968+(N*708|0)>>2]|0;if(!((K|0)==6|(K|0)==8)){O=P;break}O=1}}while(0);K=N+1|0;if((K|0)<8){M=O;N=K}else{L=O;C=70;break}}}}while(0);do{if((C|0)==70){if((L|0)!=0){break}O=e|0;N=0;do{do{if((c[2140304+(N*708|0)>>2]|0)!=0){M=2140992+(N*708|0)|0;if((c[M>>2]|0)!=0){break}P=c[2140348+(N*708|0)>>2]|0;if((P|0)==2){break}J=N+1|0;f:do{if((J|0)<8){f=0;z=0;K=0;I=0;y=J;while(1){p=z;r=K;n=I;x=y;g:while(1){Q=r;w=n;E=x;h:while(1){R=w;o=E;i:while(1){S=o;while(1){T=2140304+(S*708|0)|0;if((c[T>>2]|0)!=0){v=c[2140992+(S*708|0)>>2]|0;if((v|0)==2){break h}else if((v|0)==3){break i}else if((v|0)==1){break}else if((v|0)==0){break g}}v=S+1|0;if((v|0)<8){S=v}else{U=R;V=Q;W=p;X=f;break f}}v=(R|0)==0?T:R;u=S+1|0;if((u|0)<8){R=v;o=u}else{U=v;V=Q;W=p;X=f;break f}}o=(Q|0)==0?T:Q;v=S+1|0;if((v|0)<8){Q=o;w=R;E=v}else{U=R;V=o;W=p;X=f;break f}}E=(R|0)==0;w=E?1:p;o=E?T:R;E=S+1|0;if((E|0)<8){p=w;r=Q;n=o;x=E}else{U=o;V=Q;W=w;X=f;break f}}x=(c[2140348+(S*708|0)>>2]|0)==2?T:f;n=S+1|0;if((n|0)<8){f=x;z=p;K=Q;I=R;y=n}else{U=R;V=Q;W=p;X=x;break}}}else{U=0;V=0;W=0;X=0}}while(0);if((P|0)==4|(P|0)==2|(P|0)==6){Y=1}else{Y=0}J=c[2140944+(N*708|0)>>2]|0;y=(J|0)==11;I=(J-7|0)>>>0<2>>>0;c[M>>2]=4;J=(X|0)!=0;do{if(J){m$(2140396+(N*708|0)|0,X+4|0,88)|0;Z=1}else{if(y){Z=2;break}Z=I?3:0}}while(0);M=J^1;if(!((c[253197]|0)==0|(c[(c[4919878]|0)+32>>2]|0)==0|M)){P=2140572+(N*708|0)|0;m$(P|0,X+4|0,88)|0;c[P>>2]=c[(c[253351]|0)+(c[542528]<<2)>>2]}do{if((c[(c[4917402]|0)+32>>2]|0)==0){_=Z}else{if((U|0)!=0){m$(2140484+(N*708|0)|0,U+4|0,88)|0;if((W|0)==0){_=Z;break}_=(c[(c[4917384]|0)+32>>2]|0)==0?Z:Z|16;break}if((y^1)&M&(I^1)){_=Z;break}P=2140308+(N*708|0)|0;K=c[P>>2]|0;if((K|0)==0){_=Z;break}z=c[K+100>>2]&-417|32;SB(K|0,O,64);XB(O,64,47752);K=hR(O,1,z)|0;if((K|0)==0){_=Z;break}z=2140484+(N*708|0)|0;m$(z|0,P|0,88)|0;c[2140516+(N*708|0)>>2]=0;c[z>>2]=K;if((W|0)==0){_=Z;break}_=(c[(c[4917384]|0)+32>>2]|0)==0?Z:Z|16}}while(0);if(!((c[(c[4917324]|0)+32>>2]|0)==0|(V|0)==0)){m$(2140660+(N*708|0)|0,V+4|0,88)|0;g[2141004+(N*708|0)>>2]=+g[V+700>>2];g[2141008+(N*708|0)>>2]=+g[V+704>>2]}if((Y|0)==0){if((c[2140376+(N*708|0)>>2]|0)==0){$=_}else{C=109}}else{C=109}if((C|0)==109){C=0;$=_|8}c[2140996+(N*708|0)>>2]=977452;c[2141e3+(N*708|0)>>2]=$}}while(0);N=N+1|0;}while((N|0)<8);if((c[535076]|0)!=0&(c[535087]|0)==2){c[535076]=0}if((c[535253]|0)!=0&(c[535264]|0)==2){c[535253]=0}if((c[535430]|0)!=0&(c[535441]|0)==2){c[535430]=0}if((c[535607]|0)!=0&(c[535618]|0)==2){c[535607]=0}if((c[535784]|0)!=0&(c[535795]|0)==2){c[535784]=0}if((c[535961]|0)!=0&(c[535972]|0)==2){c[535961]=0}if((c[536138]|0)!=0&(c[536149]|0)==2){c[536138]=0}if(!((c[536315]|0)!=0&(c[536326]|0)==2)){break}c[536315]=0}}while(0);$=c[535076]|0;do{if(($|0)==0){aa=0}else{_=c[535248]|0;if((_|0)==1){c[535076]=0;aa=0;break}else if((_|0)==2){c[535076]=0;aa=0;break}else if((_|0)==3){c[535076]=0;aa=0;break}else{aa=$;break}}}while(0);$=c[535253]|0;do{if(($|0)==0){ba=0}else{_=c[535425]|0;if((_|0)==3){c[535253]=0;ba=0;break}else if((_|0)==2){c[535253]=0;ba=0;break}else if((_|0)==1){c[535253]=0;ba=0;break}else{ba=$;break}}}while(0);$=c[535430]|0;do{if(($|0)==0){ca=0}else{_=c[535602]|0;if((_|0)==3){c[535430]=0;ca=0;break}else if((_|0)==2){c[535430]=0;ca=0;break}else if((_|0)==1){c[535430]=0;ca=0;break}else{ca=$;break}}}while(0);do{if((c[535607]|0)!=0){$=c[535779]|0;if(($|0)==3){c[535607]=0;break}else if(($|0)==2){c[535607]=0;break}else if(($|0)==1){c[535607]=0;break}else{break}}}while(0);do{if((c[535784]|0)!=0){$=c[535956]|0;if(($|0)==3){c[535784]=0;break}else if(($|0)==2){c[535784]=0;break}else if(($|0)==1){c[535784]=0;break}else{break}}}while(0);do{if((c[535961]|0)!=0){$=c[536133]|0;if(($|0)==3){c[535961]=0;break}else if(($|0)==2){c[535961]=0;break}else if(($|0)==1){c[535961]=0;break}else{break}}}while(0);do{if((c[536138]|0)!=0){$=c[536310]|0;if(($|0)==3){c[536138]=0;break}else if(($|0)==2){c[536138]=0;break}else if(($|0)==1){c[536138]=0;break}else{break}}}while(0);do{if((c[536315]|0)!=0){$=c[536487]|0;if(($|0)==3){c[536315]=0;break}else if(($|0)==2){c[536315]=0;break}else if(($|0)==1){c[536315]=0;break}else{break}}}while(0);$=(aa|0)!=0;aa=$&1;_=(ba|0)==0;if(_|$){ea=_?aa:2;fa=ca}else{m$(2140304+(aa*708|0)|0,2141012,708)|0;c[535253]=0;ea=1;fa=c[535430]|0}do{if((fa|0)==0){ga=ea}else{if((ea|0)==2){ga=3;break}m$(2140304+(ea*708|0)|0,2141720,708)|0;c[535430]=0;ga=ea+1|0}}while(0);do{if((c[535607]|0)==0){ha=ga}else{if((ga|0)==3){ha=4;break}m$(2140304+(ga*708|0)|0,2142428,708)|0;c[535607]=0;ha=ga+1|0}}while(0);do{if((c[535784]|0)==0){ia=ha}else{if((ha|0)==4){ia=5;break}m$(2140304+(ha*708|0)|0,2143136,708)|0;c[535784]=0;ia=ha+1|0}}while(0);do{if((c[535961]|0)==0){ja=ia}else{if((ia|0)==5){ja=6;break}m$(2140304+(ia*708|0)|0,2143844,708)|0;c[535961]=0;ja=ia+1|0}}while(0);do{if((c[536138]|0)==0){ka=ja}else{if((ja|0)==6){ka=7;break}m$(2140304+(ja*708|0)|0,2144552,708)|0;c[536138]=0;ka=ja+1|0}}while(0);do{if((c[536315]|0)==0){la=ka;C=185}else{if((ka|0)==7){C=119;break}m$(2140304+(ka*708|0)|0,2145260,708)|0;c[536315]=0;la=ka+1|0;C=185}}while(0);if((C|0)==185){if((la|0)==8){C=119}else{ma=la}}j:do{if((C|0)==119){la=d;if((c[4920100]|0)==0){ma=8;break}if(!((c[535076]|0)!=0&(c[535253]|0)!=0)){ma=8;break}if((c[5123021]|0)==2){if((c[(c[535077]|0)+92>>2]|0)==(c[(c[535254]|0)+92>>2]|0)){ma=8;break}}ka=c[535245]|0;ja=c[535422]|0;if((ja^ka)>>>0>511>>>0){ma=8;break}ia=ka&255;ha=ja&255;ja=0;while(1){if((ia|0)==(c[41240+(ja<<4)>>2]|0)){if((ha|0)==(c[41244+(ja<<4)>>2]|0)){break}}ga=ja+1|0;if((ga|0)==8){ma=8;break j}else{ja=ga}}ha=41248+(ja<<4)|0;if(!((ja-6|0)>>>0>1>>>0|(c[5123025]|0)!=0)){ma=8;break}ia=c[535236]|0;if((ia|0)!=(c[535413]|0)){ma=8;break}ga=c[535242]|0;if((ga|0)!=(c[535419]|0)){ma=8;break}if((ja&-2|0)==6&(ia|0)!=2){ma=8;break}if((ia|0)==10){if((j$(2140924,2141632,20)|0)!=0){ma=8;break}}if((ga|0)==7){if((j$(2140948,2141656,20)|0)!=0){ma=8;break}}if((c[535097]|0)==0){m$(2140396,2141016,88)|0}else{m$(la|0,2140308,88)|0;m$(2140308,2141016,88)|0;m$(2140396,la|0,88)|0}c[542557]=c[ha>>2];c[535245]=c[41252+(ja<<4)>>2]|ka&-256;s$(2141012,2141720,4248)|0;n$(2145260,0,708)|0;ma=7}}while(0);d=(c[542564]|0)==0;if((c[(c[4917306]|0)+32>>2]|0)!=0&d){ha=c[253241]|0;ga=0;do{do{if((c[2140304+(ga*708|0)>>2]|0)!=0){if((c[2140984+(ga*708|0)>>2]|0)!=0){break}ia=2140308+(ga*708|0)|0;ea=2140348+(ga*708|0)|0;if((c[ea>>2]|0)!=2){break}c[2140996+(ga*708|0)>>2]=977452;c[2141e3+(ga*708|0)>>2]=1;m$(2140396+(ga*708|0)|0,ia|0,88)|0;c[ia>>2]=ha;c[2140388+(ga*708|0)>>2]=0;c[ea>>2]=3}}while(0);ga=ga+1|0;}while((ga|0)<8)}if(d){d=0;do{do{if((c[2140304+(d*708|0)>>2]|0)!=0){if((c[2140984+(d*708|0)>>2]|0)!=0){break}if((c[2140944+(d*708|0)>>2]|0)!=11){break}c[2140996+(d*708|0)>>2]=977452;ga=2141e3+(d*708|0)|0;c[ga>>2]=2;if((c[2140348+(d*708|0)>>2]|0)==3){if((c[2140376+(d*708|0)>>2]|0)==0){break}}c[ga>>2]=10}}while(0);d=d+1|0;}while((d|0)<8)}d=(c[4917324]|0)+32|0;ga=(c[4919906]|0)+28|0;ha=(c[4919904]|0)+28|0;ka=0;do{do{if((c[2140304+(ka*708|0)>>2]|0)!=0){if((c[2140996+(ka*708|0)>>2]|0)!=977452){break}if((c[2141e3+(ka*708|0)>>2]&3|0)==0){break}if((c[2140660+(ka*708|0)>>2]|0)!=0){break}if((c[d>>2]|0)==0){break}ja=2141004+(ka*708|0)|0;if(!(+g[ja>>2]!=0.0)){g[ja>>2]=+g[ha>>2]}ja=2141008+(ka*708|0)|0;if(+g[ja>>2]!=0.0){break}g[ja>>2]=+g[ga>>2]}}while(0);ka=ka+1|0;}while((ka|0)<8);if((c[542528]|0)>-1&(H|0)==0){Tk[c[4886344]&255](1,48696,(D=i,i=i+8|0,c[D>>2]=2170048,D)|0);i=D}c[542604]=ma;H=c[542537]|0;if((H|ma|0)==0){g[542531]=7.0}c[542613]=(H|0)!=0?248:268;c[542563]=49;k:do{if((c[542532]|0)==0){H=c[542564]|0;l:do{if((H|0)>0){ma=0;ka=49;while(1){switch(c[2170260+(ma*52|0)>>2]|0){case 3:{ga=ka|18;c[542563]=ga;na=ga;break};case 6:{ga=ka|48;c[542563]=ga;na=ga;break};case 1:case 2:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:{ga=ka|16;c[542563]=ga;na=ga;break};default:{na=ka}}ga=ma+1|0;if((ga|0)<(H|0)){ma=ga;ka=na}else{oa=na;break l}}}else{oa=49}}while(0);H=(c[4917402]|0)+32|0;ka=(c[4917324]|0)+32|0;ma=0;ga=oa;while(1){if((c[2140304+(ma*708|0)>>2]|0)==0){break k}do{if((c[2140996+(ma*708|0)>>2]|0)==977452){ha=ga|16;c[542563]=ha;d=c[2141e3+(ma*708|0)>>2]&3;if((d|0)==0){pa=ha;break}if((c[H>>2]|0)==0){if((c[ka>>2]|0)==0){qa=ha}else{C=218}}else{C=218}if((C|0)==218){C=0;ha=ga|24;c[542563]=ha;qa=ha}if(!((d|0)==1|(d|0)==3)){pa=qa;break}d=qa|128;c[542563]=d;pa=d}else{pa=ga}}while(0);do{if((c[2140308+(ma*708|0)>>2]|0)==0){ra=pa}else{d=c[2140348+(ma*708|0)>>2]|0;if((d|0)==3){ha=pa|2;c[542563]=ha;ra=ha;break}else if((d|0)==2){ha=pa|4;c[542563]=ha;ra=ha;break}else if((d|0)==4){d=pa|16;c[542563]=d;ra=d;break}else{ra=pa;break}}}while(0);do{if((c[2140396+(ma*708|0)>>2]|0)==0){sa=ra}else{d=c[2140436+(ma*708|0)>>2]|0;if((d|0)==2){ha=ra|4;c[542563]=ha;sa=ha;break}else if((d|0)==3){ha=ra|2;c[542563]=ha;sa=ha;break}else if((d|0)==4){d=ra|16;c[542563]=d;sa=d;break}else{sa=ra;break}}}while(0);do{if((c[2140484+(ma*708|0)>>2]|0)==0){ta=sa}else{d=c[2140524+(ma*708|0)>>2]|0;if((d|0)==4){ha=sa|16;c[542563]=ha;ta=ha;break}else if((d|0)==2){ha=sa|4;c[542563]=ha;ta=ha;break}else if((d|0)==3){d=sa|2;c[542563]=d;ta=d;break}else{ta=sa;break}}}while(0);do{if((c[2140572+(ma*708|0)>>2]|0)==0){ua=ta}else{d=c[2140612+(ma*708|0)>>2]|0;if((d|0)==4){ha=ta|16;c[542563]=ha;ua=ha;break}else if((d|0)==2){ha=ta|4;c[542563]=ha;ua=ha;break}else if((d|0)==3){d=ta|2;c[542563]=d;ua=d;break}else{ua=ta;break}}}while(0);do{if((c[2140660+(ma*708|0)>>2]|0)==0){va=ua}else{d=c[2140700+(ma*708|0)>>2]|0;if((d|0)==4){ha=ua|16;c[542563]=ha;va=ha;break}else if((d|0)==2){ha=ua|4;c[542563]=ha;va=ha;break}else if((d|0)==3){d=ua|2;c[542563]=d;va=d;break}else{va=ua;break}}}while(0);do{if((c[2140748+(ma*708|0)>>2]|0)==0){wa=va}else{d=c[2140788+(ma*708|0)>>2]|0;if((d|0)==4){ha=va|16;c[542563]=ha;wa=ha;break}else if((d|0)==2){ha=va|4;c[542563]=ha;wa=ha;break}else if((d|0)==3){d=va|2;c[542563]=d;wa=d;break}else{wa=va;break}}}while(0);do{if((c[2140836+(ma*708|0)>>2]|0)==0){xa=wa}else{d=c[2140876+(ma*708|0)>>2]|0;if((d|0)==4){ha=wa|16;c[542563]=ha;xa=ha;break}else if((d|0)==2){ha=wa|4;c[542563]=ha;xa=ha;break}else if((d|0)==3){d=wa|2;c[542563]=d;xa=d;break}else{xa=wa;break}}}while(0);switch(c[2140944+(ma*708|0)>>2]|0){case 5:case 6:case 7:case 8:case 9:{d=xa|32;c[542563]=d;ya=d;break};case 11:{d=xa|16;c[542563]=d;ya=d;break};default:{ya=xa}}d=c[2140968+(ma*708|0)>>2]|0;if((d|0)==6){ha=ya|16;c[542563]=ha;za=ha}else if((d|0)==4|(d|0)==5){d=ya|32;c[542563]=d;za=d}else{za=ya}d=ma+1|0;if((d|0)<8){ma=d;ga=za}else{break k}}}else{c[542563]=51}}while(0);if((c[265161]|0)==16384){Tk[c[4886344]&255](2,48112,(D=i,i=i+1|0,i=i+7&-8,c[D>>2]=0,D)|0);i=D;Aa=c[253342]|0;i=b;return Aa|0}D=Kk[c[4886347]&255](424,1)|0;za=D;m$(D|0,2170048,424)|0;do{if(+g[542531]>3.0){if((c[542535]&64|0)==0){break}c[D+200>>2]=2}else{c[D+200>>2]=1}}while(0);c[1060648+(c[265161]<<2)>>2]=za;c[D+68>>2]=c[265161];c[1126184+(c[265161]<<2)>>2]=za;c[D+72>>2]=c[265161];ya=(c[265161]|0)+1|0;c[265161]=ya;xa=D+368|0;if((c[xa>>2]|0)>0){wa=D+372|0;va=0;do{ua=2140304+(va*708|0)|0;if((c[ua>>2]|0)==0){break}ta=Kk[c[4886347]&255](708,1)|0;sa=wa+(va<<2)|0;c[sa>>2]=ta;m$(ta|0,ua|0,708)|0;ua=(c[(c[sa>>2]|0)+72>>2]|0)*68|0;ta=Kk[c[4886347]&255](ua,1)|0;c[(c[sa>>2]|0)+76>>2]=ta;m$(c[(c[sa>>2]|0)+76>>2]|0,c[2140380+(va*708|0)>>2]|0,ua)|0;ua=(c[(c[sa>>2]|0)+160>>2]|0)*68|0;ta=Kk[c[4886347]&255](ua,1)|0;c[(c[sa>>2]|0)+164>>2]=ta;m$(c[(c[sa>>2]|0)+164>>2]|0,c[2140468+(va*708|0)>>2]|0,ua)|0;ua=(c[(c[sa>>2]|0)+248>>2]|0)*68|0;ta=Kk[c[4886347]&255](ua,1)|0;c[(c[sa>>2]|0)+252>>2]=ta;m$(c[(c[sa>>2]|0)+252>>2]|0,c[2140556+(va*708|0)>>2]|0,ua)|0;ua=(c[(c[sa>>2]|0)+336>>2]|0)*68|0;ta=Kk[c[4886347]&255](ua,1)|0;c[(c[sa>>2]|0)+340>>2]=ta;m$(c[(c[sa>>2]|0)+340>>2]|0,c[2140644+(va*708|0)>>2]|0,ua)|0;ua=(c[(c[sa>>2]|0)+424>>2]|0)*68|0;ta=Kk[c[4886347]&255](ua,1)|0;c[(c[sa>>2]|0)+428>>2]=ta;m$(c[(c[sa>>2]|0)+428>>2]|0,c[2140732+(va*708|0)>>2]|0,ua)|0;ua=(c[(c[sa>>2]|0)+512>>2]|0)*68|0;ta=Kk[c[4886347]&255](ua,1)|0;c[(c[sa>>2]|0)+516>>2]=ta;m$(c[(c[sa>>2]|0)+516>>2]|0,c[2140820+(va*708|0)>>2]|0,ua)|0;ua=(c[(c[sa>>2]|0)+600>>2]|0)*68|0;ta=Kk[c[4886347]&255](ua,1)|0;c[(c[sa>>2]|0)+604>>2]=ta;m$(c[(c[sa>>2]|0)+604>>2]|0,c[2140908+(va*708|0)>>2]|0,ua)|0;va=va+1|0;}while((va|0)<(c[xa>>2]|0));Ba=c[265161]|0}else{Ba=ya}ya=c[1060648+(Ba-1<<2)>>2]|0;G=+g[ya+76>>2];xa=Ba-2|0;m:do{if((xa|0)>-1){Ba=xa;while(1){va=c[1126184+(Ba<<2)>>2]|0;if(!(+g[va+76>>2]>G)){Ca=Ba;break m}c[1126184+(Ba+1<<2)>>2]=va;wa=va+72|0;c[wa>>2]=(c[wa>>2]|0)+1;wa=Ba-1|0;if((Ba|0)>0){Ba=wa}else{Ca=wa;break}}}else{Ca=xa}}while(0);xa=Ca+1|0;Ca=(c[7093892]|0)+1017016|0;n:while(1){Ba=Ca+3&-4;switch(c[Ba>>2]|0){case 4:{Ca=Ba+8|0;continue n;break};case 5:{Ca=Ba+4|0;continue n;break};case 1:{Ca=Ba+20|0;continue n;break};case 2:{Ca=Ba+40|0;continue n;break};case 3:{wa=Ba;Ba=wa+1364|0;if((c[Ba>>2]|0)>0){va=c[wa+1360>>2]|0;ua=0;while(1){sa=va|0;BS(c[sa>>2]|0,k,h,j,l,m);ta=(c[sa>>2]|0)>>>17&16383;if((ta|0)>=(xa|0)){c[sa>>2]=c[k>>2]|(ta<<17)+131072|c[j>>2]<<2|c[m>>2]<<1|c[l>>2]}ta=ua+1|0;if((ta|0)<(c[Ba>>2]|0)){va=va+12|0;ua=ta}else{break}}}Ca=wa+1368|0;continue n;break};default:{break n}}}c[ya+72>>2]=xa;c[1126184+(xa<<2)>>2]=ya;ya=a[D]|0;o:do{if(ya<<24>>24==0){Da=0}else{xa=0;Ca=0;l=ya;while(1){m=(t$(l<<24>>24|0)|0)&255;if((m<<24>>24|0)==92){Ea=47}else if((m<<24>>24|0)==46){Da=Ca;break o}else{Ea=m}m=(da(Ea<<24>>24,xa+119|0)|0)+Ca|0;j=xa+1|0;k=a[D+j|0]|0;if(k<<24>>24==0){Da=m;break}else{xa=j;Ca=m;l=k}}}}while(0);Ea=20471184+(((Da>>>10^Da^Da>>>20)&1023)<<2)|0;c[D+420>>2]=c[Ea>>2];c[Ea>>2]=za;Aa=za;i=b;return Aa|0}function ZT(a){a=a|0;var b=0,d=0,e=0;b=i;if((o$(a|0)|0)>>>0>63>>>0){Tk[c[4886344]&255](0,114464,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;e=0;i=b;return e|0}d=WT(a,-4,1)|0;if((c[d+80>>2]|0)!=0){e=0;i=b;return e|0}e=c[d+68>>2]|0;i=b;return e|0}function _T(a){a=a|0;var b=0,d=0,e=0;b=i;if((o$(a|0)|0)>>>0>63>>>0){Tk[c[4886344]&255](0,114464,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;e=0;i=b;return e|0}d=WT(a,-4,0)|0;if((c[d+80>>2]|0)!=0){e=0;i=b;return e|0}e=c[d+68>>2]|0;i=b;return e|0}function $T(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;a=i;Tk[c[4886344]&255](0,112512,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;if((c[265161]|0)>0){d=0}else{e=0;f=c[4886344]|0;Tk[f&255](0,99472,(b=i,i=i+8|0,c[b>>2]=e,b)|0);i=b;g=c[4886344]|0;Tk[g&255](0,64392,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}while(1){if((Ok[c[4886359]&63]()|0)>1){h=1126184+(d<<2)|0}else{h=1060648+(d<<2)|0}j=c[h>>2]|0;Tk[c[4886344]&255](0,111672,(b=i,i=i+8|0,c[b>>2]=c[j+368>>2],b)|0);i=b;k=c[4886344]|0;if((c[j+64>>2]|0)>-1){Tk[k&255](0,110936,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}else{Tk[k&255](0,110128,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}k=c[j+180>>2]|0;do{if((k|0)==260){Tk[c[4886344]&255](0,108768,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}else if((k|0)==8448){Tk[c[4886344]&255](0,107720,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}else{l=c[4886344]|0;if((k|0)==8449){Tk[l&255](0,106944,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;break}else{Tk[l&255](0,105888,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;break}}}while(0);k=c[4886344]|0;if((c[j+84>>2]|0)==0){Tk[k&255](0,110128,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}else{Tk[k&255](0,105032,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}k=c[j+404>>2]|0;do{if((k|0)==268){Tk[c[4886344]&255](0,104120,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}else{l=c[4886344]|0;if((k|0)==248){Tk[l&255](0,103128,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;break}else{Tk[l&255](0,102408,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;break}}}while(0);k=c[4886344]|0;l=j|0;if((c[j+80>>2]|0)==0){Tk[k&255](0,100504,(b=i,i=i+8|0,c[b>>2]=l,b)|0);i=b}else{Tk[k&255](0,101472,(b=i,i=i+8|0,c[b>>2]=l,b)|0);i=b}l=d+1|0;if((l|0)<(c[265161]|0)){d=l}else{e=l;break}}f=c[4886344]|0;Tk[f&255](0,99472,(b=i,i=i+8|0,c[b>>2]=e,b)|0);i=b;g=c[4886344]|0;Tk[g&255](0,64392,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}function aU(){var b=0,d=0,e=0,f=0,h=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,A=0,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;b=i;i=i+24720|0;d=b|0;e=b+16384|0;f=b+16392|0;h=b+16400|0;j=b+24656|0;Tk[c[4886344]&255](0,63720,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;n$(20471184,0,4096)|0;c[265161]=0;n$(2170048,0,424)|0;n$(2140304,0,5664)|0;TB(2170048,51656,64);c[542528]=-1;c[535077]=c[253205];c[535076]=1;c[535245]=256;c[253342]=YT()|0;TB(2170048,50928,64);g[542531]=14.0;c[253343]=YT()|0;l=h;m=b+24592|0;n=rk[c[4886367]&63](59600,59008,f)|0;do{if((n|0)==0){o=3}else{p=c[f>>2]|0;if((p|0)==0){o=3;break}if((p|0)>4096){c[f>>2]=4096;o=7}else{if((p|0)>0){o=7}else{q=0;r=p}}a:do{if((o|0)==7){p=j|0;s=0;t=0;while(1){u=n+(t<<2)|0;$B(p,64,57480,(k=i,i=i+8|0,c[k>>2]=c[u>>2],k)|0)|0;i=k;v=ge(p|0,46)|0;if((v|0)!=0){a[v]=a[56568]|0;a[v+1|0]=a[56569]|0;a[v+2|0]=a[56570]|0;a[v+3|0]=a[56571]|0;a[v+4|0]=a[56572]|0}if((Kk[c[4886365]&255](p,0)|0)<1){$B(p,64,57480,(k=i,i=i+8|0,c[k>>2]=c[u>>2],k)|0)|0;i=k}Tk[c[4886344]&255](1,55864,(k=i,i=i+8|0,c[k>>2]=p,k)|0);i=k;u=d+(t<<2)|0;v=Kk[c[4886365]&255](p,u)|0;w=c[u>>2]|0;if((w|0)==0){break}c[e>>2]=w;_B(p);while(1){w=cC(e,1)|0;if((a[w]|0)==0){o=23;break}TB(m,w,64);x=aC()|0;y=cC(e,1)|0;if((a[y]|0)!=123){o=18;break}if((a[y+1|0]|0)!=0){o=18;break}if((eC(e,1)|0)==0){o=22;break}}if((o|0)==18){o=0;Tk[c[4886344]&255](2,54112,(k=i,i=i+24|0,c[k>>2]=p,c[k+8>>2]=m,c[k+16>>2]=x,k)|0);i=k;if((a[y]|0)!=0){w=c[4886344]|0;A=aC()|0;Tk[w&255](2,53680,(k=i,i=i+16|0,c[k>>2]=y,c[k+8>>2]=A,k)|0);i=k}Tk[c[4886344]&255](2,53216,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;vk[c[4886366]&511](c[u>>2]|0);c[u>>2]=0;B=0}else if((o|0)==22){o=0;Tk[c[4886344]&255](2,52664,(k=i,i=i+24|0,c[k>>2]=p,c[k+8>>2]=m,c[k+16>>2]=x,k)|0);i=k;vk[c[4886366]&511](c[u>>2]|0);c[u>>2]=0;B=0}else if((o|0)==23){o=0;B=(c[u>>2]|0)==0?0:v}A=B+s|0;w=t+1|0;C=c[f>>2]|0;if((w|0)<(C|0)){s=A;t=w}else{q=A;r=C;break a}}Tk[c[4886345]&255](1,54880,(k=i,i=i+8|0,c[k>>2]=p,k)|0);i=k}}while(0);t=Kk[c[4886347]&255]((r<<1)+q|0,1)|0;c[553496]=t;a[t]=0;t=c[f>>2]|0;s=c[553496]|0;b:while(1){C=t;while(1){D=C-1|0;if((C|0)<=0){break b}E=d+(D<<2)|0;F=c[E>>2]|0;if((F|0)==0){C=D}else{break}}p$(s|0,F|0)|0;C=s+(o$(s|0)|0)|0;z=10;a[C]=z;z=z>>8;a[C+1|0]=z;C=s+(o$(s|0)|0)|0;vk[c[4886366]&511](c[E>>2]|0);t=D;s=C}dC(c[553496]|0)|0;vk[c[4886368]&511](n);n$(l|0,0,8192)|0;c[e>>2]=c[553496];s=cC(e,1)|0;t=a[s]|0;if(t<<24>>24==0){G=8192}else{C=0;p=s;s=t;do{t=0;A=0;w=s;while(1){H=(t$(w<<24>>24|0)|0)&255;if((H<<24>>24|0)==92){I=47}else if((H<<24>>24|0)==46){J=A;break}else{I=H}H=(da(I<<24>>24,t+119|0)|0)+A|0;K=t+1|0;L=a[p+K|0]|0;if(L<<24>>24==0){J=H;break}else{t=K;A=H;w=L}}w=h+(((J>>>10^J^J>>>20)&2047)<<2)|0;c[w>>2]=(c[w>>2]|0)+1;C=C+1|0;eC(e,0)|0;p=cC(e,1)|0;s=a[p]|0;}while(!(s<<24>>24==0));G=(C<<2)+8192|0}s=Kk[c[4886347]&255](G,1)|0;p=0;while(1){c[2161856+(p<<2)>>2]=s;w=p+1|0;if((w|0)<2048){s=s+((c[h+(p<<2)>>2]<<2)+4)|0;p=w}else{break}}n$(l|0,0,8192)|0;p=c[553496]|0;c[e>>2]=p;s=cC(e,1)|0;C=a[s]|0;if(C<<24>>24==0){break}else{M=p;N=s;O=C}do{C=0;s=0;p=O;while(1){w=(t$(p<<24>>24|0)|0)&255;if((w<<24>>24|0)==92){P=47}else if((w<<24>>24|0)==46){Q=s;break}else{P=w}w=(da(P<<24>>24,C+119|0)|0)+s|0;A=C+1|0;t=a[N+A|0]|0;if(t<<24>>24==0){Q=w;break}else{C=A;s=w;p=t}}p=(Q>>>10^Q^Q>>>20)&2047;s=h+(p<<2)|0;C=c[s>>2]|0;c[s>>2]=C+1;c[(c[2161856+(p<<2)>>2]|0)+(C<<2)>>2]=M;eC(e,0)|0;M=c[e>>2]|0;N=cC(e,1)|0;O=a[N]|0;}while(!(O<<24>>24==0))}}while(0);if((o|0)==3){Tk[c[4886344]&255](2,58384,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k}c[253344]=WT(62568,-1,1)|0;k=WT(61680,-1,1)|0;c[253345]=k;do{if((c[k+80>>2]|0)==0){if((c[k+368>>2]|0)>0){R=0;S=k}else{break}do{c[(c[S+372+(R<<2)>>2]|0)+680>>2]=0;S=c[253345]|0;O=(c[S+372+(R<<2)>>2]|0)+676|0;c[O>>2]=c[O>>2]|65536;R=R+1|0;}while((R|0)<(c[S+368>>2]|0))}}while(0);c[253346]=WT(60960,-1,1)|0;S=WT(60224,-1,1)|0;c[253347]=S;if((c[S+80>>2]|0)==0){i=b;return}S=c[253345]|0;do{if((c[S+80>>2]|0)==0){R=c[S+372>>2]|0;if((R|0)==0){o=52;break}k=c[R+4>>2]|0;if((k|0)==0){o=52}else{T=k}}else{o=52}}while(0);if((o|0)==52){T=c[253239]|0}n$(2170048,0,424)|0;n$(2140304,0,5664)|0;TB(2170048,60224,64);c[542528]=-1;c[535077]=T;c[535076]=1;c[535245]=256;c[253347]=YT()|0;i=b;return}function bU(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0;e=i;if((k$(cC(b,0)|0,173928)|0)!=0){Tk[c[4886344]&255](2,173712,(f=i,i=i+8|0,c[f>>2]=2170048,f)|0);i=f;h=0;i=e;return h|0}j=0;k=cC(b,0)|0;do{if((a[k]|0)==0){l=5;break}g[d+(j<<2)>>2]=+h$(k);j=j+1|0;k=cC(b,0)|0}while((j|0)<3);if((l|0)==5){Tk[c[4886344]&255](2,173400,(f=i,i=i+8|0,c[f>>2]=2170048,f)|0);i=f;h=0;i=e;return h|0}if((k$(k,172992)|0)==0){h=1;i=e;return h|0}Tk[c[4886344]&255](2,173712,(f=i,i=i+8|0,c[f>>2]=2170048,f)|0);i=f;h=0;i=e;return h|0}function cU(b,d){b=b|0;d=d|0;var e=0,f=0,h=0;e=i;f=cC(b,0)|0;if((a[f]|0)==0){Tk[c[4886344]&255](2,168392,(h=i,i=i+8|0,c[h>>2]=2170048,h)|0);i=h;i=e;return}c[d>>2]=dU(f)|0;f=cC(b,0)|0;if((a[f]|0)==0){Tk[c[4886344]&255](2,168392,(h=i,i=i+8|0,c[h>>2]=2170048,h)|0);i=h;i=e;return}g[d+4>>2]=+h$(f);f=cC(b,0)|0;if((a[f]|0)==0){Tk[c[4886344]&255](2,168392,(h=i,i=i+8|0,c[h>>2]=2170048,h)|0);i=h;i=e;return}g[d+8>>2]=+h$(f);f=cC(b,0)|0;if((a[f]|0)==0){Tk[c[4886344]&255](2,168392,(h=i,i=i+8|0,c[h>>2]=2170048,h)|0);i=h;i=e;return}g[d+12>>2]=+h$(f);f=cC(b,0)|0;if((a[f]|0)==0){Tk[c[4886344]&255](2,168392,(h=i,i=i+8|0,c[h>>2]=2170048,h)|0);i=h;i=e;return}else{g[d+16>>2]=+h$(f);i=e;return}}function dU(a){a=a|0;var b=0,d=0,e=0;b=i;do{if((VB(a,168088)|0)==0){d=1}else{if((VB(a,167880)|0)==0){d=2;break}if((VB(a,167608)|0)==0){d=3;break}if((VB(a,167464)|0)==0){d=4;break}if((VB(a,167224)|0)==0){d=5;break}if((VB(a,166464)|0)==0){d=6;break}Tk[c[4886344]&255](2,165896,(e=i,i=i+16|0,c[e>>2]=a,c[e+8>>2]=2170048,e)|0);i=e;d=1}}while(0);i=b;return d|0}function eU(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a=i;i=i+8|0;b=a|0;d=c[340902]|0;if((d|0)<=0){i=a;return}e=b|0;f=b+4|0;g=0;h=d;while(1){d=c[19755352+(g<<2)>>2]|0;if((d|0)>0){j=1243560+(g<<4)|0;k=0;do{do{if((c[21287800+(g<<8)+(k<<3)+4>>2]|0)!=0){c[e>>2]=0;c[f>>2]=0;l=c[21287800+(g<<8)+(k<<3)>>2]|0;m=c[19755352+(l<<2)>>2]|0;if((m|0)>0){n=0;do{if((c[21287800+(l<<8)+(n<<3)>>2]|0)==(g|0)){o=b+(c[21287800+(l<<8)+(n<<3)+4>>2]<<2)|0;c[o>>2]=(c[o>>2]|0)+1}n=n+1|0;}while((n|0)<(m|0));if((c[f>>2]|0)!=0){break}}mc(5);Tg(j|0);Tg(1243560+((c[340902]|0)+g<<4)|0);Tg(1243560+(l<<4)|0);Tg(1243560+((c[340902]|0)+l<<4)|0);Lh()}}while(0);k=k+1|0;}while((k|0)<(d|0));p=c[340902]|0}else{p=h}d=g+1|0;if((d|0)<(p|0)){g=d;h=p}else{break}}i=a;return}function fU(){var b=0,d=0,e=0,f=0,h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0;b=i;i=i+8|0;d=b|0;e=c[340902]|0;if((e|0)>499|(c[5123020]|0)<4){i=b;return}f=c[7094307]|0;h=+g[f+156>>2];j=+g[f+160>>2];k=+g[f+164>>2];if((e|0)>0){l=h*-512.0;m=j*-512.0;n=k*-512.0;f=0;o=e;while(1){g[1243560+(o+f<<4)>>2]=l+ +g[1243560+(f<<4)>>2];p=c[340902]|0;q=p+f|0;g[1243564+(q<<4)>>2]=m+ +g[1243564+(f<<4)>>2];g[1243568+(q<<4)>>2]=n+ +g[1243568+(f<<4)>>2];q=f+1|0;if((q|0)<(p|0)){f=q;o=p}else{r=p;break}}}else{r=e}n$(19755352,0,r<<2|0)|0;r=c[340901]|0;e=(r|0)/3|0;if((r|0)>2){r=0;do{o=r*3|0;f=c[1219560+(o<<2)>>2]|0;p=c[1219560+(o+1<<2)>>2]|0;q=c[1219560+(o+2<<2)>>2]|0;n=+g[1243560+(f<<4)>>2];m=+g[1243560+(p<<4)>>2]-n;l=+g[1243564+(f<<4)>>2];s=+g[1243564+(p<<4)>>2]-l;t=+g[1243568+(f<<4)>>2];u=+g[1243568+(p<<4)>>2]-t;v=+g[1243560+(q<<4)>>2]-n;n=+g[1243564+(q<<4)>>2]-l;l=+g[1243568+(q<<4)>>2]-t;o=k*(m*n-s*v)+(h*(s*l-u*n)+j*(u*v-m*l))>0.0|0;c[20581392+(r<<2)>>2]=o;w=19755352+(f<<2)|0;x=c[w>>2]|0;if((x|0)!=32){c[21287800+(f<<8)+(x<<3)>>2]=p;c[21287800+(f<<8)+(x<<3)+4>>2]=o;c[w>>2]=x+1}x=19755352+(p<<2)|0;w=c[x>>2]|0;if((w|0)!=32){c[21287800+(p<<8)+(w<<3)>>2]=q;c[21287800+(p<<8)+(w<<3)+4>>2]=o;c[x>>2]=w+1}w=19755352+(q<<2)|0;x=c[w>>2]|0;if((x|0)!=32){c[21287800+(q<<8)+(x<<3)>>2]=f;c[21287800+(q<<8)+(x<<3)+4>>2]=o;c[w>>2]=x+1}r=r+1|0;}while((r|0)<(e|0))}aP(c[253241]|0);Xc(2884);fP(18);Vb(+.20000000298023224,+.20000000298023224,+.20000000298023224);e=d|0;Nh(3107,e|0);xi(0,0,0,0);Xc(2960);nh(519,1,255);if((c[7094165]|0)==0){nf(1029);qj(7680,7680,7682);eU();nf(1028);qj(7680,7680,7683);eU()}else{nf(1028);qj(7680,7680,7682);eU();nf(1029);qj(7680,7680,7683);eU()}xi(a[e]|0,a[d+1|0]|0,a[d+2|0]|0,a[d+3|0]|0);i=b;return}function gU(){if((c[(c[4917346]|0)+32>>2]|0)!=2|(c[5123020]|0)<4){return}Xc(2960);nh(517,0,255);kg(12288);kg(2884);aP(c[253241]|0);Tb();Vb(+.6000000238418579,+.6000000238418579,+.6000000238418579);fP(275);mc(7);Wb(+-100.0,+100.0,+-10.0);Wb(+100.0,+100.0,+-10.0);Wb(+100.0,+-100.0,+-10.0);Wb(+-100.0,+-100.0,+-10.0);Lh();cf(+1.0,+1.0,+1.0,+1.0);kg(2960);return}function hU(){var a=0.0,b=0.0,d=0.0,e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0;a=+g[7094238];b=+g[7094241];d=+g[7094244];e=c[7094307]|0;f=+g[7094235]- +g[e+24>>2];h=+g[e+156>>2];i=+g[e+160>>2];j=+g[e+164>>2];k=a*h+b*i+d*j;if(k<.5){l=.5-k;m=h+a*l;n=i+b*l;o=j+d*l;p=m;q=n;r=o;s=d*o+(a*m+b*n)}else{p=h;q=i;r=j;s=k}k=1.0/s;s=p*k;p=q*k;q=r*k;e=c[340902]|0;if((e|0)>0){t=0;u=1243560}else{return}while(1){k=+g[u>>2];v=u+4|0;r=+g[v>>2];w=u+8|0;j=+g[w>>2];i=f+(a*k+b*r+d*j);g[u>>2]=k-s*i;g[v>>2]=r-p*i;g[w>>2]=j-q*i;w=t+1|0;if((w|0)<(e|0)){t=w;u=u+16|0}else{break}}return}function iU(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0;b=i;i=i+64|0;d=b|0;g[540160]=9999.0;g[540166]=9999.0;g[540172]=-9999.0;g[540178]=-9999.0;g[540161]=9999.0;g[540167]=9999.0;g[540173]=-9999.0;g[540179]=-9999.0;g[540162]=9999.0;g[540168]=9999.0;g[540174]=-9999.0;g[540180]=-9999.0;g[540163]=9999.0;g[540169]=9999.0;g[540175]=-9999.0;g[540181]=-9999.0;g[540164]=9999.0;g[540170]=9999.0;g[540176]=-9999.0;g[540182]=-9999.0;g[540165]=9999.0;g[540171]=9999.0;g[540177]=-9999.0;g[540183]=-9999.0;e=a+144044|0;if((c[e>>2]|0)<=0){f=60;h=0;i=b;return}j=d|0;k=0;do{l=+g[7094067];m=+g[7094068];n=+g[7094069];o=c[a+(k<<2)>>2]|0;g[j>>2]=+g[a+24e3+(o<<4)>>2]-l;g[d+4>>2]=+g[a+24e3+(o<<4)+4>>2]-m;g[d+8>>2]=+g[a+24e3+(o<<4)+8>>2]-n;o=c[a+(k+1<<2)>>2]|0;g[d+12>>2]=+g[a+24e3+(o<<4)>>2]-l;g[d+16>>2]=+g[a+24e3+(o<<4)+4>>2]-m;g[d+20>>2]=+g[a+24e3+(o<<4)+8>>2]-n;o=c[a+(k+2<<2)>>2]|0;g[d+24>>2]=+g[a+24e3+(o<<4)>>2]-l;g[d+28>>2]=+g[a+24e3+(o<<4)+4>>2]-m;g[d+32>>2]=+g[a+24e3+(o<<4)+8>>2]-n;jU(3,j,0);k=k+3|0;}while((k|0)<(c[e>>2]|0));f=60;h=0;i=b;return}function jU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.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,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,T=0.0,U=0.0,V=0,W=0.0,X=0.0,Y=0.0,Z=0.0;e=i;i=i+2048|0;f=e|0;h=e+256|0;j=e+512|0;if((a|0)>62){Tk[c[4886345]&255](1,125864,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k}if((d|0)!=6){k=(a|0)>0;do{if(k){l=+g[4616+(d*12|0)>>2];m=+g[4620+(d*12|0)>>2];n=+g[4624+(d*12|0)>>2];o=0;p=0;q=b;r=0;while(1){s=+g[q>>2]*l+ +g[q+4>>2]*m+ +g[q+8>>2]*n;do{if(s>.10000000149011612){c[h+(r<<2)>>2]=0;t=p;u=1}else{v=h+(r<<2)|0;if(s<-.10000000149011612){c[v>>2]=1;t=1;u=o;break}else{c[v>>2]=2;t=p;u=o;break}}}while(0);g[f+(r<<2)>>2]=s;v=r+1|0;if((v|0)<(a|0)){o=u;p=t;q=q+12|0;r=v}else{break}}if((u|0)==0|(t|0)==0){break}c[h+(a<<2)>>2]=c[h>>2];g[f+(a<<2)>>2]=+g[f>>2];r=a*3|0;g[b+(r<<2)>>2]=+g[b>>2];g[b+(r+1<<2)>>2]=+g[b+4>>2];g[b+(r+2<<2)>>2]=+g[b+8>>2];if(k){r=b;q=0;p=0;o=0;while(1){v=c[h+(o<<2)>>2]|0;if((v|0)==0){g[j+(p*12|0)>>2]=+g[r>>2];g[j+(p*12|0)+4>>2]=+g[r+4>>2];g[j+(p*12|0)+8>>2]=+g[r+8>>2];w=q;x=p+1|0;y=60}else if((v|0)==1){g[j+768+(q*12|0)>>2]=+g[r>>2];g[j+768+(q*12|0)+4>>2]=+g[r+4>>2];g[j+768+(q*12|0)+8>>2]=+g[r+8>>2];w=q+1|0;x=p;y=60}else if((v|0)==2){g[j+(p*12|0)>>2]=+g[r>>2];z=r+4|0;g[j+(p*12|0)+4>>2]=+g[z>>2];A=r+8|0;g[j+(p*12|0)+8>>2]=+g[A>>2];g[j+768+(q*12|0)>>2]=+g[r>>2];g[j+768+(q*12|0)+4>>2]=+g[z>>2];g[j+768+(q*12|0)+8>>2]=+g[A>>2];B=p+1|0;C=q+1|0;D=o+1|0}else{w=q;x=p;y=60}do{if((y|0)==60){y=0;A=o+1|0;z=c[h+(A<<2)>>2]|0;if((z|0)==2|(z|0)==(v|0)){B=x;C=w;D=A;break}n=+g[f+(o<<2)>>2];m=n/(n- +g[f+(A<<2)>>2]);n=+g[r>>2];l=n+m*(+g[r+12>>2]-n);g[j+(x*12|0)>>2]=l;g[j+768+(w*12|0)>>2]=l;l=+g[r+4>>2];n=l+m*(+g[r+16>>2]-l);g[j+(x*12|0)+4>>2]=n;g[j+768+(w*12|0)+4>>2]=n;n=+g[r+8>>2];l=n+m*(+g[r+20>>2]-n);g[j+(x*12|0)+8>>2]=l;g[j+768+(w*12|0)+8>>2]=l;B=x+1|0;C=w+1|0;D=A}}while(0);if((D|0)<(a|0)){r=r+12|0;q=C;p=B;o=D}else{E=C;F=B;break}}}else{E=0;F=0}o=d+1|0;jU(F,j|0,o);jU(E,j+768|0,o);G=1536;H=0;I=256;J=0;K=256;L=0;i=e;return}}while(0);jU(a,b,d+1|0);G=1536;H=0;I=256;J=0;K=256;L=0;i=e;return}s=+g[219094];l=+g[219095];n=+g[219096];d=(a|0)>0;if(d){m=n;M=l;N=s;j=0;E=b;while(1){O=N+ +g[E>>2];P=M+ +g[E+4>>2];Q=m+ +g[E+8>>2];F=j+1|0;if((F|0)<(a|0)){m=Q;M=P;N=O;j=F;E=E+12|0}else{R=Q;T=P;U=O;break}}}else{R=n;T=l;U=s}s=+S(+U);l=+S(+T);n=+S(+R);do{if(s>l&s>n){V=U<0.0|0}else{if(l>n&l>s){V=T<0.0?3:2;break}else{V=R<0.0?5:4;break}}}while(0);if(!d){G=1536;H=0;I=256;J=0;K=256;L=0;i=e;return}d=c[187088+(V*12|0)>>2]|0;E=~d;j=187080+(V*12|0)|0;F=(V-1|0)>>>0>1>>>0;B=187084+(V*12|0)|0;C=(V|0)==4;D=2160664+(V<<2)|0;w=2160640+(V<<2)|0;x=2160712+(V<<2)|0;f=2160688+(V<<2)|0;h=d-1|0;if((21>>>(V>>>0)&1|0)==0){V=0;d=b;while(1){R=-0.0- +g[d+(E<<2)>>2];do{if(!(R<.001)){y=c[j>>2]|0;if(F){W=-0.0- +g[d+(~y<<2)>>2]}else{W=+g[d+(y-1<<2)>>2]}T=W/R;y=c[B>>2]|0;if(C){X=-0.0- +g[d+(~y<<2)>>2]}else{X=+g[d+(y-1<<2)>>2]}s=X/R;if(T<+g[D>>2]){g[D>>2]=T}if(s<+g[w>>2]){g[w>>2]=s}if(T>+g[x>>2]){g[x>>2]=T}if(!(s>+g[f>>2])){break}g[f>>2]=s}}while(0);y=V+1|0;if((y|0)<(a|0)){V=y;d=d+12|0}else{break}}G=1536;H=0;I=256;J=0;K=256;L=0;i=e;return}else{d=0;V=b;while(1){X=+g[V+(h<<2)>>2];do{if(!(X<.001)){b=c[j>>2]|0;if(F){Y=-0.0- +g[V+(~b<<2)>>2]}else{Y=+g[V+(b-1<<2)>>2]}W=Y/X;b=c[B>>2]|0;if(C){Z=-0.0- +g[V+(~b<<2)>>2]}else{Z=+g[V+(b-1<<2)>>2]}R=Z/X;if(W<+g[D>>2]){g[D>>2]=W}if(R<+g[w>>2]){g[w>>2]=R}if(W>+g[x>>2]){g[x>>2]=W}if(!(R>+g[f>>2])){break}g[f>>2]=R}}while(0);b=d+1|0;if((b|0)<(a|0)){d=b;V=V+12|0}else{break}}G=1536;H=0;I=256;J=0;K=256;L=0;i=e;return}}function kU(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0.0,k=0.0,l=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;b=i;d=c[a+144016>>2]|0;g[1150]=.00390625;g[1152]=.99609375;c[340901]=0;c[340902]=0;c[340900]=0;if(+g[d+104>>2]!=0.0){e=0}else{i=b;return}a:while(1){if((c[(c[422828]|0)+(e<<2)>>2]|0)==0){f=34;break}d=(e|0)==0;a=0;do{if((a|0)==5){break}h=2160664+(a<<2)|0;j=+R(+g[h>>2]*4.0)*.25;g[h>>2]=j;h=2160640+(a<<2)|0;k=+R(+g[h>>2]*4.0)*.25;g[h>>2]=k;l=2160712+(a<<2)|0;m=+ca(+g[l>>2]*4.0)*.25;g[l>>2]=m;n=2160688+(a<<2)|0;o=+ca(+g[n>>2]*4.0)*.25;g[n>>2]=o;do{if(j>2]*4.0)|0;r=qk[c[4886378]&7](+g[l>>2]*4.0)|0;s=qk[c[4886378]&7](+g[n>>2]*4.0)|0;if((p|0)<-4){t=-4}else{t=(p|0)>4?4:p}if(+(q|0)<-4.0){u=-4}else{u=(q|0)>4?4:q}if((r|0)<-4){v=-4}else{v=(r|0)>4?4:r}if(+(s|0)<-4.0){w=-4}else{w=(s|0)>4?4:s}s=u+4|0;r=w+4|0;if((s|0)<=(r|0)){q=t+4|0;p=v+4|0;x=(q|0)>(p|0);y=s;while(1){if(!x){z=+(y-4|0)*.25;A=q;while(1){mU(+(A-4|0)*.25,z,a,0,2213e3+(y*108|0)+(A*12|0)|0);g[2212352+(y*72|0)+(A<<3)>>2]=+g[19535088+(a*648|0)+(y*72|0)+(A<<3)>>2];g[2212352+(y*72|0)+(A<<3)+4>>2]=+g[19535088+(a*648|0)+(y*72|0)+(A<<3)+4>>2];if((A|0)<(p|0)){A=A+1|0}else{break}}}if((y|0)<(r|0)){y=y+1|0}else{break}}}y=c[340902]|0;r=w-u|0;p=v-t|0;q=p+1|0;if((u|0)<=(w|0)){z=+g[7094067];B=+g[7094068];C=+g[7094069];x=t+4|0;A=v+4|0;D=s;E=v;F=w;G=y;while(1){if((t|0)>(E|0)){H=E;I=F;J=G}else{K=x;L=G;while(1){g[1243560+(L<<4)>>2]=z+ +g[2213e3+(D*108|0)+(K*12|0)>>2];M=c[340902]|0;g[1243564+(M<<4)>>2]=B+ +g[2213e3+(D*108|0)+(K*12|0)+4>>2];g[1243568+(M<<4)>>2]=C+ +g[2213e3+(D*108|0)+(K*12|0)+8>>2];g[1267560+(M<<4)>>2]=+g[2212352+(D*72|0)+(K<<3)>>2];M=c[340902]|0;g[1267564+(M<<4)>>2]=+g[2212352+(D*72|0)+(K<<3)+4>>2];N=M+1|0;c[340902]=N;if((M|0)>998){f=25;break a}if((K|0)<(A|0)){K=K+1|0;L=N}else{H=v;I=w;J=N;break}}}if((D|0)<(I+4|0)){D=D+1|0;E=H;F=I;G=J}else{break}}}if(!(d&(r|0)>0&(p|0)>0)){break}G=0;F=c[340901]|0;while(1){E=da(G,q)|0;D=G+1|0;A=da(D,q)|0;x=0;s=F;do{L=x+y|0;c[1219560+(s<<2)>>2]=L+E;K=(c[340901]|0)+1|0;c[340901]=K;N=L+A|0;c[1219560+(K<<2)>>2]=N;K=(c[340901]|0)+1|0;c[340901]=K;M=L+1|0;L=M+E|0;c[1219560+(K<<2)>>2]=L;K=(c[340901]|0)+1|0;c[340901]=K;c[1219560+(K<<2)>>2]=N;N=(c[340901]|0)+1|0;c[340901]=N;c[1219560+(N<<2)>>2]=M+A;M=(c[340901]|0)+1|0;c[340901]=M;c[1219560+(M<<2)>>2]=L;s=(c[340901]|0)+1|0;c[340901]=s;x=x+1|0;}while((x|0)<(p|0));if((D|0)<(r|0)){G=D;F=s}else{break}}}}while(0);a=a+1|0;}while((a|0)<6);a=e+1|0;if((a|0)<8){e=a}else{f=34;break}}if((f|0)==25){Tk[c[4886345]&255](1,139648,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}else if((f|0)==34){i=b;return}}function lU(a){a=+a;var b=0,c=0,d=0,e=0,f=0,h=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;b=i;i=i+32|0;c=b|0;d=b+16|0;g[7094230]=1024.0;e=c|0;f=c+4|0;h=c+8|0;j=a*a;c=d|0;k=d+4|0;l=d+8|0;d=0;do{m=0;do{n=+(m-4|0)*.25;o=0;do{mU(+(o-4|0)*.25,n,d,0,e);p=+g[e>>2];q=p*p;r=+g[f>>2];s=r*r;t=+g[h>>2];u=t*t;v=1.0/((q+s+u)*2.0)*(t*-2.0*4096.0+ +T(j*u+(u*2.0*4096.0*a+(j*s+(s*2.0*4096.0*a+(j*q+(u*16777216.0+q*2.0*4096.0*a))))))*2.0);g[c>>2]=p*v;g[k>>2]=r*v;g[l>>2]=t*v+4096.0;+wB(c);v=+OB(+g[c>>2]);t=+OB(+g[k>>2]);g[19535088+(d*648|0)+(m*72|0)+(o<<3)>>2]=v;g[19535088+(d*648|0)+(m*72|0)+(o<<3)+4>>2]=t;o=o+1|0;}while((o|0)<9);m=m+1|0;}while((m|0)<9);d=d+1|0;}while((d|0)<6);i=b;return}function mU(a,b,d,e,f){a=+a;b=+b;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0.0,l=0,m=0.0,n=0.0,o=0.0;h=i;i=i+16|0;j=h|0;k=+g[7094230]/1.75;g[j>>2]=k*a;g[j+4>>2]=k*b;g[j+8>>2]=k;l=c[186488+(d*12|0)>>2]|0;if((26>>>(d>>>0)&1|0)==0){m=+g[j+(l-1<<2)>>2]}else{m=-0.0- +g[j+(~l<<2)>>2]}g[f>>2]=m;l=c[186492+(d*12|0)>>2]|0;if((d-1|0)>>>0>1>>>0){g[f+4>>2]=-0.0- +g[j+(~l<<2)>>2]}else{g[f+4>>2]=+g[j+(l-1<<2)>>2]}l=c[186496+(d*12|0)>>2]|0;if((d|0)==5){g[f+8>>2]=-0.0- +g[j+(~l<<2)>>2]}else{g[f+8>>2]=+g[j+(l-1<<2)>>2]}m=(a+1.0)*.5;a=(b+1.0)*.5;b=+g[1150];do{if(mk)){n=m;break}n=k}}while(0);do{if(am)){o=a;break}o=m}}while(0);if((e|0)==0){i=h;return}g[e>>2]=n;g[e+4>>2]=1.0-o;i=h;return}function nU(a,b){a=+a;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0;d=i;i=i+176|0;e=d|0;f=d+16|0;h=d+32|0;if((c[7094308]|0)==0){i=d;return}j=d+48|0;fQ(28376268,j);k=d+112|0;cQ(28376516,j,k);hP(k);l=+g[7094230]/1.75;m=l*a;k=e|0;g[k>>2]=l*+g[253809];g[e+4>>2]=l*+g[253810];g[e+8>>2]=l*+g[253811];e=f|0;yB(e,1015236);j=h|0;l=+g[253810];n=f+8|0;a=+g[n>>2];o=+g[253811];p=f+4|0;q=+g[p>>2];r=+g[e>>2];s=+g[253809];g[e>>2]=m*r;g[p>>2]=m*q;g[n>>2]=m*a;g[j>>2]=m*(l*a-o*q);g[h+4>>2]=m*(o*r-s*a);g[h+8>>2]=m*(s*q-l*r);md(+1.0,+1.0);wT(b,0,0);rU(k,e,j,41208);zT();md(+0.0,+1.0);i=d;return} + + + +function rC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+8192|0;f=e|0;if((b|0)==0|(d|0)==0){g=28378648;h=8192;j=0;i=e;return g|0}if((o$(b|0)|0)>>>0>8191>>>0){Ur(1,172920,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;return 0}c[7548864]=c[7548864]^1;k=f;l=(a[b]|0)==92?b+1|0:b;a:while(1){b=a[l]|0;if((b<<24>>24|0)==0){g=28378648;m=18;break}else if((b<<24>>24|0)!=92){a[k]=b;k=k+1|0;l=l+1|0;continue}a[k]=0;b=30195464+(c[7548864]<<13)|0;n=l;while(1){o=n+1|0;p=a[o]|0;if((p<<24>>24|0)==92|(p<<24>>24|0)==0){break}a[b]=p;b=b+1|0;n=o}a[b]=0;p=99999;q=f;r=d;while(1){s=r+1|0;t=a[r]|0;u=t<<24>>24;v=q+1|0;w=a[q]|0;x=w<<24>>24;y=p-1|0;if((p|0)==0){m=15;break a}if(t<<24>>24==w<<24>>24){z=u}else{A=(t-97&255)>>>0<26>>>0?u-32|0:u;if((A|0)==(((w-97&255)>>>0<26>>>0?x-32|0:x)|0)){z=A}else{break}}if((z|0)==0){m=15;break a}else{p=y;q=v;r=s}}if((a[o]|0)==0){g=28378648;m=18;break}k=f;l=n+2|0}if((m|0)==15){g=30195464+(c[7548864]<<13)|0;h=8192;j=0;i=e;return g|0}else if((m|0)==18){h=8192;j=0;i=e;return g|0}return 0}function sC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=c[b>>2]|0;g=(a[f]|0)==92?f+1|0:f;a[d]=0;a[e]=0;f=g;g=d;while(1){d=a[f]|0;if((d<<24>>24|0)==0){h=3;break}else if((d<<24>>24|0)==92){break}a[g]=d;f=f+1|0;g=g+1|0}if((h|0)==3){a[g]=0;i=f;c[b>>2]=i;return}a[g]=0;g=f;f=e;while(1){j=g+1|0;e=a[j]|0;if((e<<24>>24|0)==92|(e<<24>>24|0)==0){break}a[f]=e;g=j;f=f+1|0}a[f]=0;i=j;c[b>>2]=i;return}function tC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;i=i+2048|0;f=e|0;g=e+1024|0;if((o$(b|0)|0)>>>0>1023>>>0){Ur(1,169776,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}a:do{if((sg(d|0,92)|0)==0){h=b;j=a[b]|0;while(1){k=f;l=j<<24>>24==92?h+1|0:h;while(1){m=a[l]|0;if((m<<24>>24|0)==0){break a}else if((m<<24>>24|0)==92){break}a[k]=m;k=k+1|0;l=l+1|0}a[k]=0;m=g;n=l;while(1){o=n+1|0;p=a[o]|0;if((p<<24>>24|0)==92|(p<<24>>24|0)==0){break}a[m]=p;m=m+1|0;n=o}a[m]=0;if((k$(d,f)|0)==0){break}n=a[o]|0;if(n<<24>>24==0){break a}else{h=o;j=n}}s$(h|0,o|0,(o$(o|0)|0)+1|0)|0}}while(0);i=e;return}function uC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;i=i+16384|0;f=e|0;g=e+8192|0;if((o$(b|0)|0)>>>0>8191>>>0){Ur(1,166408,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}a:do{if((sg(d|0,92)|0)==0){h=b;j=a[b]|0;while(1){k=f;l=j<<24>>24==92?h+1|0:h;while(1){m=a[l]|0;if((m<<24>>24|0)==0){break a}else if((m<<24>>24|0)==92){break}a[k]=m;k=k+1|0;l=l+1|0}a[k]=0;m=g;n=l;while(1){o=n+1|0;p=a[o]|0;if((p<<24>>24|0)==92|(p<<24>>24|0)==0){break}a[m]=p;m=m+1|0;n=o}a[m]=0;if((k$(d,f)|0)==0){break}n=a[o]|0;if(n<<24>>24==0){break a}else{h=o;j=n}}r$(h|0,o|0)|0}}while(0);i=e;return}function vC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;i=i+1024|0;g=f|0;if((o$(b|0)|0)>>>0>1023>>>0){Ur(1,160424,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}else{j=163208;k=92}while(1){l=k<<24>>24;if((sg(d|0,l|0)|0)!=0){m=6;break}n=j+1|0;if((sg(e|0,l|0)|0)!=0){m=6;break}l=a[n]|0;if(l<<24>>24==0){break}else{j=n;k=l}}if((m|0)==6){Sr(157800,(h=i,i=i+24|0,c[h>>2]=a[j]|0,c[h+8>>2]=d,c[h+16>>2]=e,h)|0);i=h;o=1024;p=0;i=f;return}tC(b,d);if((e|0)==0){o=1024;p=0;i=f;return}if((a[e]|0)==0){o=1024;p=0;i=f;return}$B(g,1024,155304,(h=i,i=i+16|0,c[h>>2]=d,c[h+8>>2]=e,h)|0)|0;i=h;e=o$(g|0)|0;if(((o$(b|0)|0)+e|0)>>>0>1023>>>0){Sr(153320,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;o=1024;p=0;i=f;return}else{p$(g|0,b|0)|0;r$(b|0,g|0)|0;o=1024;p=0;i=f;return}}function wC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;i=i+8192|0;g=f|0;if((o$(b|0)|0)>>>0>8191>>>0){Ur(1,160424,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}else{j=163208;k=92}while(1){l=k<<24>>24;if((sg(d|0,l|0)|0)!=0){m=6;break}n=j+1|0;if((sg(e|0,l|0)|0)!=0){m=6;break}l=a[n]|0;if(l<<24>>24==0){break}else{j=n;k=l}}if((m|0)==6){Sr(157800,(h=i,i=i+24|0,c[h>>2]=a[j]|0,c[h+8>>2]=d,c[h+16>>2]=e,h)|0);i=h;o=8192;p=0;i=f;return}uC(b,d);if((e|0)==0){o=8192;p=0;i=f;return}$B(g,8192,155304,(h=i,i=i+16|0,c[h>>2]=d,c[h+8>>2]=e,h)|0)|0;i=h;e=o$(g|0)|0;if(((o$(b|0)|0)+e|0)>>>0>8191>>>0){Sr(151336,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;o=8192;p=0;i=f;return}else{p$(b|0,g|0)|0;o=8192;p=0;i=f;return}}function xC(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;if((b|0)==0){d=0;return d|0}e=a[c]|0;f=e<<24>>24==0;g=b;a:while(1){b=a[g]|0;if(f){d=g;h=9;break}if(!(e<<24>>24==b<<24>>24)){i=o$(c|0)|0;j=1;while(1){if(!(j>>>0>>0)){d=g;h=9;break a}if((a[c+j|0]|0)==b<<24>>24){break}else{j=j+1|0}}}g=g+1|0}if((h|0)==9){return d|0}return 0}function yC(b,c,d){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;e=b;f=0;a:while(1){g=(f|0)<(c|0);h=e;b:while(1){if(!g){i=h;j=16;break a}k=h+1|0;l=a[h]|0;m=a[d]|0;c:do{if(!(m<<24>>24==0)){if(m<<24>>24==l<<24>>24){break b}n=o$(d|0)|0;o=1;while(1){if(!(o>>>0>>0)){break c}if((a[d+o|0]|0)==l<<24>>24){break b}else{o=o+1|0}}}}while(0);if((a[k]|0)==0){i=k;j=16;break a}else{h=k}}h=f+1|0;g=k;while(1){l=a[g]|0;if(!(m<<24>>24==l<<24>>24)){o=o$(d|0)|0;n=1;while(1){if(!(n>>>0>>0)){e=g;f=h;continue a}if((a[d+n|0]|0)==l<<24>>24){break}else{n=n+1|0}}}g=g+1|0}}if((j|0)==16){return((f|0)==(c|0)?i:b)|0}return 0}function zC(b,e){b=b|0;e=e|0;var f=0,g=0,h=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,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,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;f=i;i=i+256|0;g=f|0;h=f+8|0;j=f+16|0;k=f+24|0;l=f+32|0;m=f+40|0;n=f+48|0;o=f+56|0;p=f+64|0;q=f+72|0;r=f+80|0;s=f+248|0;t=r;u=r|0;if((e|0)==0){WC(u)}else{m$(t|0,e|0,32)|0}e=r+28|0;v=rk[c[r>>2]&63](c[e>>2]|0,b,5)|0;b=r+32|0;c[b>>2]=v;if((v|0)==0){w=0;x=164;y=0;i=f;return w|0}z=r+16|0;do{if((Wk[c[z>>2]&63](c[e>>2]|0,v,0,2)|0)==0){A=Kk[c[r+12>>2]&255](c[e>>2]|0,v)|0;B=A>>>0<65535>>>0?A:65535;C=gs(1028)|0;if((C|0)==0){D=0;break}E=r+4|0;a:do{if(B>>>0>4>>>0){F=4;while(1){G=F+1024|0;H=G>>>0>B>>>0?B:G;G=A-H|0;I=H>>>0>1028>>>0?1028:H;if((Wk[c[z>>2]&63](c[e>>2]|0,v,G,0)|0)!=0){J=0;break a}if((Wk[c[E>>2]&63](c[e>>2]|0,v,C,I)|0)!=(I|0)){J=0;break a}K=I-3|0;b:do{if((K|0)>0){L=K;M=I-4|0;c:while(1){do{if((a[C+M|0]|0)==80){if((a[C+L|0]|0)!=75){break}if((a[C+(L+1)|0]|0)!=5){break}if((a[C+(L+2)|0]|0)==6){break c}}}while(0);if((M|0)>0){L=M;M=M-1|0}else{break b}}L=M+G|0;if((L|0)!=0){J=L;break a}}}while(0);if(H>>>0>>0){F=H}else{J=0;break}}}else{J=0}}while(0);es(C);D=J}else{D=0}}while(0);J=(Wk[c[z>>2]&63](c[e>>2]|0,c[b>>2]|0,D,0)|0)==0;z=(AC(u,c[b>>2]|0,s)|0)==0;s=z?J?((D|0)==0)<<31>>31:-1:-1;J=c[b>>2]|0;z=r+4|0;if((Wk[c[z>>2]&63](c[e>>2]|0,J,q,1)|0)==1){N=d[q]|0;O=23}else{q=(Kk[c[r+24>>2]&255](c[e>>2]|0,J)|0)!=0;if(q){P=0;Q=q<<31>>31}else{N=0;O=23}}do{if((O|0)==23){if((Wk[c[z>>2]&63](c[e>>2]|0,J,p,1)|0)==1){R=d[p]|0}else{q=(Kk[c[r+24>>2]&255](c[e>>2]|0,J)|0)!=0;if(q){P=0;Q=q<<31>>31;break}else{R=N}}P=R<<8|N;Q=0}}while(0);N=(Q|0)==0?s:-1;s=c[b>>2]|0;if((Wk[c[z>>2]&63](c[e>>2]|0,s,o,1)|0)==1){S=d[o]|0;O=30}else{o=(Kk[c[r+24>>2]&255](c[e>>2]|0,s)|0)!=0;if(o){T=0;U=o<<31>>31}else{S=0;O=30}}do{if((O|0)==30){if((Wk[c[z>>2]&63](c[e>>2]|0,s,n,1)|0)==1){V=d[n]|0}else{o=(Kk[c[r+24>>2]&255](c[e>>2]|0,s)|0)!=0;if(o){T=0;U=o<<31>>31;break}else{V=S}}T=V<<8|S;U=0}}while(0);S=(U|0)==0?N:-1;N=c[b>>2]|0;U=r+36|0;if((Wk[c[z>>2]&63](c[e>>2]|0,N,m,1)|0)==1){W=d[m]|0;O=37}else{m=(Kk[c[r+24>>2]&255](c[e>>2]|0,N)|0)!=0;if(m){X=0;Y=m<<31>>31}else{W=0;O=37}}do{if((O|0)==37){if((Wk[c[z>>2]&63](c[e>>2]|0,N,l,1)|0)==1){Z=d[l]|0}else{m=(Kk[c[r+24>>2]&255](c[e>>2]|0,N)|0)!=0;if(m){X=0;Y=m<<31>>31;break}else{Z=W}}X=Z<<8|W;Y=0}}while(0);c[U>>2]=X;X=(Y|0)==0?S:-1;S=c[b>>2]|0;if((Wk[c[z>>2]&63](c[e>>2]|0,S,k,1)|0)==1){_=d[k]|0;O=44}else{k=(Kk[c[r+24>>2]&255](c[e>>2]|0,S)|0)!=0;if(k){$=0;aa=k<<31>>31}else{_=0;O=44}}do{if((O|0)==44){if((Wk[c[z>>2]&63](c[e>>2]|0,S,j,1)|0)==1){ba=d[j]|0}else{k=(Kk[c[r+24>>2]&255](c[e>>2]|0,S)|0)!=0;if(k){$=0;aa=k<<31>>31;break}else{ba=_}}$=ba<<8|_;aa=0}}while(0);_=($|0)==(c[U>>2]|0)&(T|0)==0&(P|0)==0?(aa|0)==0?X:-1:-103;X=r+64|0;aa=(AC(u,c[b>>2]|0,X)|0)==0;P=r+68|0;T=(AC(u,c[b>>2]|0,P)|0)==0;u=T?aa?_:-1:-1;_=c[b>>2]|0;aa=r+40|0;if((Wk[c[z>>2]&63](c[e>>2]|0,_,h,1)|0)==1){ca=d[h]|0;O=51}else{h=(Kk[c[r+24>>2]&255](c[e>>2]|0,_)|0)!=0;if(h){da=0;ea=h<<31>>31}else{ca=0;O=51}}do{if((O|0)==51){if((Wk[c[z>>2]&63](c[e>>2]|0,_,g,1)|0)==1){fa=d[g]|0}else{h=(Kk[c[r+24>>2]&255](c[e>>2]|0,_)|0)!=0;if(h){da=0;ea=h<<31>>31;break}else{fa=ca}}da=fa<<8|ca;ea=0}}while(0);c[aa>>2]=da;da=(ea|0)==0?u:-1;u=(c[X>>2]|0)+(c[P>>2]|0)|0;if(!((da|0)==0&((da|0)!=0|D>>>0>=u>>>0))){Kk[c[r+20>>2]&255](c[e>>2]|0,c[b>>2]|0)|0;w=0;x=164;y=0;i=f;return w|0}c[r+44>>2]=D-u;c[r+60>>2]=D;c[r+156>>2]=0;c[r+160>>2]=0;r=gs(164)|0;m$(r|0,t|0,164)|0;if((r|0)==0){w=0;x=164;y=0;i=f;return w|0}c[r+52>>2]=c[r+68>>2];c[r+48>>2]=0;c[r+56>>2]=(HC(r,r+72|0,r+152|0,0,0,0,0,0,0)|0)==0;w=r;x=164;y=0;i=f;return w|0}function AC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=i;i=i+32|0;g=f|0;h=f+8|0;j=f+16|0;k=f+24|0;l=a+4|0;m=a+28|0;do{if((Wk[c[l>>2]&63](c[m>>2]|0,b,k,1)|0)==1){n=d[k]|0}else{if((Kk[c[a+24>>2]&255](c[m>>2]|0,b)|0)==0){n=0;break}else{o=0;p=-1}c[e>>2]=o;i=f;return p|0}}while(0);do{if((Wk[c[l>>2]&63](c[m>>2]|0,b,j,1)|0)==1){k=d[j]|0;q=k;r=k<<8|n}else{if((Kk[c[a+24>>2]&255](c[m>>2]|0,b)|0)==0){q=n;r=n*257|0;break}else{o=0;p=-1}c[e>>2]=o;i=f;return p|0}}while(0);do{if((Wk[c[l>>2]&63](c[m>>2]|0,b,h,1)|0)==1){s=d[h]|0}else{n=(Kk[c[a+24>>2]&255](c[m>>2]|0,b)|0)!=0;if(n){o=0;p=n<<31>>31}else{s=q;break}c[e>>2]=o;i=f;return p|0}}while(0);q=(s<<16)+r|0;do{if((Wk[c[l>>2]&63](c[m>>2]|0,b,g,1)|0)==1){t=d[g]|0}else{r=(Kk[c[a+24>>2]&255](c[m>>2]|0,b)|0)!=0;if(r){o=0;p=r<<31>>31}else{t=s;break}c[e>>2]=o;i=f;return p|0}}while(0);o=(t<<24)+q|0;p=0;c[e>>2]=o;i=f;return p|0}function BC(a){a=a|0;var b=0,d=0;if((a|0)==0){b=-102;return b|0}c[a+52>>2]=c[a+68>>2];c[a+48>>2]=0;d=HC(a,a+72|0,a+152|0,0,0,0,0,0,0)|0;c[a+56>>2]=(d|0)==0;b=d;return b|0}function CC(a){a=a|0;return zC(a,0)|0}function DC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((a|0)==0){b=-102;return b|0}d=a+156|0;e=c[d>>2]|0;if((e|0)!=0){f=e|0;g=c[f>>2]|0;if((g|0)!=0){es(g)}c[f>>2]=0;f=e+64|0;if((c[f>>2]|0)!=0){UO(e+4|0)|0}c[f>>2]=0;es(e);c[d>>2]=0}Kk[c[a+20>>2]&255](c[a+28>>2]|0,c[a+32>>2]|0)|0;es(a);b=0;return b|0}function EC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((a|0)==0){b=-102;return b|0}d=a+156|0;a=c[d>>2]|0;if((a|0)==0){b=-102;return b|0}do{if((c[a+92>>2]|0)==0){if((c[a+140>>2]|0)!=0){e=0;break}e=(c[a+80>>2]|0)==(c[a+84>>2]|0)?0:-105}else{e=0}}while(0);f=a|0;g=c[f>>2]|0;if((g|0)!=0){es(g)}c[f>>2]=0;f=a+64|0;if((c[f>>2]|0)!=0){UO(a+4|0)|0}c[f>>2]=0;es(a);c[d>>2]=0;b=e;return b|0}function FC(a,b){a=a|0;b=b|0;var d=0,e=0;if((a|0)==0){d=-102;return d|0}e=a+36|0;a=b;b=c[e+4>>2]|0;c[a>>2]=c[e>>2];c[a+4>>2]=b;d=0;return d|0}function GC(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 HC(a,b,0,c,d,e,f,g,h)|0}function HC(b,e,f,g,h,j,k,l,m){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;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,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,_=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,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;n=i;i=i+240|0;o=n|0;p=n+8|0;q=n+16|0;r=n+24|0;s=n+32|0;t=n+40|0;u=n+48|0;v=n+56|0;w=n+64|0;x=n+72|0;y=n+80|0;z=n+88|0;A=n+96|0;B=n+104|0;C=n+112|0;D=n+120|0;E=n+128|0;F=n+136|0;G=n+144|0;H=n+224|0;I=n+232|0;J=G;if((b|0)==0){K=-102;L=80;M=0;i=n;return K|0}N=b;O=b+16|0;P=b+28|0;Q=b+32|0;R=(Wk[c[O>>2]&63](c[P>>2]|0,c[Q>>2]|0,(c[b+44>>2]|0)+(c[b+52>>2]|0)|0,0)|0)==0;S=(R^1)<<31>>31;do{if(R){if((AC(N,c[Q>>2]|0,I)|0)!=0){T=-1;break}T=(c[I>>2]|0)==33639248?S:-103}else{T=S}}while(0);S=c[Q>>2]|0;I=G|0;R=b+4|0;if((Wk[c[R>>2]&63](c[P>>2]|0,S,F,1)|0)==1){U=d[F]|0;V=8}else{F=(Kk[c[b+24>>2]&255](c[P>>2]|0,S)|0)!=0;if(F){W=0;X=F<<31>>31}else{U=0;V=8}}do{if((V|0)==8){if((Wk[c[R>>2]&63](c[P>>2]|0,S,E,1)|0)==1){Y=d[E]|0}else{F=(Kk[c[b+24>>2]&255](c[P>>2]|0,S)|0)!=0;if(F){W=0;X=F<<31>>31;break}else{Y=U}}W=Y<<8|U;X=0}}while(0);c[I>>2]=W;W=(X|0)==0?T:-1;T=c[Q>>2]|0;X=G+4|0;if((Wk[c[R>>2]&63](c[P>>2]|0,T,D,1)|0)==1){Z=d[D]|0;V=15}else{D=(Kk[c[b+24>>2]&255](c[P>>2]|0,T)|0)!=0;if(D){_=0;$=D<<31>>31}else{Z=0;V=15}}do{if((V|0)==15){if((Wk[c[R>>2]&63](c[P>>2]|0,T,C,1)|0)==1){aa=d[C]|0}else{D=(Kk[c[b+24>>2]&255](c[P>>2]|0,T)|0)!=0;if(D){_=0;$=D<<31>>31;break}else{aa=Z}}_=aa<<8|Z;$=0}}while(0);c[X>>2]=_;_=($|0)==0?W:-1;W=c[Q>>2]|0;$=G+8|0;if((Wk[c[R>>2]&63](c[P>>2]|0,W,B,1)|0)==1){ba=d[B]|0;V=22}else{B=(Kk[c[b+24>>2]&255](c[P>>2]|0,W)|0)!=0;if(B){ca=0;da=B<<31>>31}else{ba=0;V=22}}do{if((V|0)==22){if((Wk[c[R>>2]&63](c[P>>2]|0,W,A,1)|0)==1){ea=d[A]|0}else{B=(Kk[c[b+24>>2]&255](c[P>>2]|0,W)|0)!=0;if(B){ca=0;da=B<<31>>31;break}else{ea=ba}}ca=ea<<8|ba;da=0}}while(0);c[$>>2]=ca;ca=(da|0)==0?_:-1;_=c[Q>>2]|0;da=G+12|0;if((Wk[c[R>>2]&63](c[P>>2]|0,_,z,1)|0)==1){fa=d[z]|0;V=29}else{z=(Kk[c[b+24>>2]&255](c[P>>2]|0,_)|0)!=0;if(z){ga=0;ha=z<<31>>31}else{fa=0;V=29}}do{if((V|0)==29){if((Wk[c[R>>2]&63](c[P>>2]|0,_,y,1)|0)==1){ia=d[y]|0}else{z=(Kk[c[b+24>>2]&255](c[P>>2]|0,_)|0)!=0;if(z){ga=0;ha=z<<31>>31;break}else{ia=fa}}ga=ia<<8|fa;ha=0}}while(0);c[da>>2]=ga;ga=G+16|0;da=(AC(N,c[Q>>2]|0,ga)|0)==0;fa=c[ga>>2]|0;c[G+68>>2]=fa>>>16&31;c[G+72>>2]=(fa>>>21&15)-1;c[G+76>>2]=(fa>>>25)+1980;c[G+64>>2]=fa>>>11&31;c[G+60>>2]=fa>>>5&63;c[G+56>>2]=fa<<1&62;fa=(AC(N,c[Q>>2]|0,G+20|0)|0)==0;ga=(AC(N,c[Q>>2]|0,G+24|0)|0)==0;ia=(AC(N,c[Q>>2]|0,G+28|0)|0)==0;_=ia?ga?fa?da?(ha|0)==0?ca:-1:-1:-1:-1:-1;ca=c[Q>>2]|0;ha=G+32|0;if((Wk[c[R>>2]&63](c[P>>2]|0,ca,x,1)|0)==1){ja=d[x]|0;V=36}else{x=(Kk[c[b+24>>2]&255](c[P>>2]|0,ca)|0)!=0;if(x){ka=0;la=x<<31>>31}else{ja=0;V=36}}do{if((V|0)==36){if((Wk[c[R>>2]&63](c[P>>2]|0,ca,w,1)|0)==1){ma=d[w]|0}else{x=(Kk[c[b+24>>2]&255](c[P>>2]|0,ca)|0)!=0;if(x){ka=0;la=x<<31>>31;break}else{ma=ja}}ka=ma<<8|ja;la=0}}while(0);c[ha>>2]=ka;ka=(la|0)==0?_:-1;_=c[Q>>2]|0;la=G+36|0;if((Wk[c[R>>2]&63](c[P>>2]|0,_,v,1)|0)==1){na=d[v]|0;V=43}else{v=(Kk[c[b+24>>2]&255](c[P>>2]|0,_)|0)!=0;if(v){oa=0;pa=v<<31>>31}else{na=0;V=43}}do{if((V|0)==43){if((Wk[c[R>>2]&63](c[P>>2]|0,_,u,1)|0)==1){qa=d[u]|0}else{v=(Kk[c[b+24>>2]&255](c[P>>2]|0,_)|0)!=0;if(v){oa=0;pa=v<<31>>31;break}else{qa=na}}oa=qa<<8|na;pa=0}}while(0);c[la>>2]=oa;oa=(pa|0)==0?ka:-1;ka=c[Q>>2]|0;pa=G+40|0;if((Wk[c[R>>2]&63](c[P>>2]|0,ka,t,1)|0)==1){ra=d[t]|0;V=50}else{t=(Kk[c[b+24>>2]&255](c[P>>2]|0,ka)|0)!=0;if(t){sa=0;ta=t<<31>>31}else{ra=0;V=50}}do{if((V|0)==50){if((Wk[c[R>>2]&63](c[P>>2]|0,ka,s,1)|0)==1){ua=d[s]|0}else{t=(Kk[c[b+24>>2]&255](c[P>>2]|0,ka)|0)!=0;if(t){sa=0;ta=t<<31>>31;break}else{ua=ra}}sa=ua<<8|ra;ta=0}}while(0);c[pa>>2]=sa;sa=(ta|0)==0?oa:-1;oa=c[Q>>2]|0;ta=G+44|0;if((Wk[c[R>>2]&63](c[P>>2]|0,oa,r,1)|0)==1){va=d[r]|0;V=57}else{r=(Kk[c[b+24>>2]&255](c[P>>2]|0,oa)|0)!=0;if(r){wa=0;xa=r<<31>>31}else{va=0;V=57}}do{if((V|0)==57){if((Wk[c[R>>2]&63](c[P>>2]|0,oa,q,1)|0)==1){ya=d[q]|0}else{r=(Kk[c[b+24>>2]&255](c[P>>2]|0,oa)|0)!=0;if(r){wa=0;xa=r<<31>>31;break}else{ya=va}}wa=ya<<8|va;xa=0}}while(0);c[ta>>2]=wa;wa=(xa|0)==0?sa:-1;sa=c[Q>>2]|0;xa=G+48|0;if((Wk[c[R>>2]&63](c[P>>2]|0,sa,p,1)|0)==1){za=d[p]|0;V=64}else{p=(Kk[c[b+24>>2]&255](c[P>>2]|0,sa)|0)!=0;if(p){Aa=0;Ba=p<<31>>31}else{za=0;V=64}}do{if((V|0)==64){if((Wk[c[R>>2]&63](c[P>>2]|0,sa,o,1)|0)==1){Ca=d[o]|0}else{p=(Kk[c[b+24>>2]&255](c[P>>2]|0,sa)|0)!=0;if(p){Aa=0;Ba=p<<31>>31;break}else{Ca=za}}Aa=Ca<<8|za;Ba=0}}while(0);c[xa>>2]=Aa;Aa=(AC(N,c[Q>>2]|0,G+52|0)|0)==0;G=H|0;H=(AC(N,c[Q>>2]|0,G)|0)==0;N=H?Aa?(Ba|0)==0?wa:-1:-1:-1;wa=c[ha>>2]|0;if((N|0)!=0|(g|0)==0){Da=wa;Ea=N}else{if(wa>>>0>>0){a[g+wa|0]=0;Fa=wa}else{Fa=h}if((wa|0)==0|(h|0)==0){Ga=0}else{Ga=((Wk[c[R>>2]&63](c[P>>2]|0,c[Q>>2]|0,g,Fa)|0)!=(Fa|0))<<31>>31}Da=wa-Fa|0;Ea=Ga}Ga=c[la>>2]|0;if((Ea|0)!=0|(j|0)==0){Ha=Ga+Da|0;Ia=Ea}else{Ea=Ga>>>0>>0?Ga:k;if((Da|0)==0){Ja=0;Ka=0;La=Ga}else{Ga=(Wk[c[O>>2]&63](c[P>>2]|0,c[Q>>2]|0,Da,1)|0)==0;Ja=Ga?0:Da;Ka=(Ga^1)<<31>>31;La=c[la>>2]|0}if((La|0)==0|(k|0)==0){Ma=Ka;Na=La}else{La=(Wk[c[R>>2]&63](c[P>>2]|0,c[Q>>2]|0,j,Ea)|0)==(Ea|0);Ma=La?Ka:-1;Na=c[la>>2]|0}Ha=Ja-Ea+Na|0;Ia=Ma}do{if((Ia|0)!=0|(l|0)==0){Oa=Ia}else{Ma=c[pa>>2]|0;if(Ma>>>0>>0){a[l+Ma|0]=0;Pa=Ma}else{Pa=m}if((Ha|0)==0){Qa=0;Ra=Ma}else{Ma=((Wk[c[O>>2]&63](c[P>>2]|0,c[Q>>2]|0,Ha,1)|0)!=0)<<31>>31;Qa=Ma;Ra=c[pa>>2]|0}if((Ra|0)==0|(m|0)==0){Oa=Qa;break}Ma=(Wk[c[R>>2]&63](c[P>>2]|0,c[Q>>2]|0,l,Pa)|0)==(Pa|0);Oa=Ma?Qa:-1}}while(0);Qa=(Oa|0)!=0;if(!(Qa|(e|0)==0)){m$(e|0,J|0,80)|0}if(Qa|(f|0)==0){K=Oa;L=80;M=0;i=n;return K|0}c[f>>2]=c[G>>2];K=0;L=80;M=0;i=n;return K|0}function IC(a){a=a|0;var b=0,d=0,e=0,f=0;if((a|0)==0){b=-102;return b|0}d=a+56|0;if((c[d>>2]|0)==0){b=-100;return b|0}e=c[a+36>>2]|0;f=c[a+48>>2]|0;do{if((e|0)!=65535){if((f+1|0)==(e|0)){b=-100}else{break}return b|0}}while(0);e=a+52|0;c[e>>2]=(c[a+104>>2]|0)+46+(c[a+108>>2]|0)+(c[a+112>>2]|0)+(c[e>>2]|0);c[a+48>>2]=f+1;f=HC(a,a+72|0,a+152|0,0,0,0,0,0,0)|0;c[d>>2]=(f|0)==0;b=f;return b|0}function JC(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;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,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,_=0,$=0;j=i;i=i+96|0;k=j|0;l=j+8|0;m=j+16|0;n=j+24|0;o=j+32|0;p=j+40|0;q=j+48|0;r=j+56|0;s=j+64|0;t=j+72|0;u=j+80|0;v=j+88|0;if((h|0)!=0|(b|0)==0){w=-102;i=j;return w|0}if((c[b+56>>2]|0)==0){w=-102;i=j;return w|0}h=b+156|0;x=c[h>>2]|0;if((x|0)!=0){y=x|0;z=c[y>>2]|0;if((z|0)!=0){es(z)}c[y>>2]=0;y=x+64|0;if((c[y>>2]|0)!=0){UO(x+4|0)|0}c[y>>2]=0;es(x);c[h>>2]=0}x=b;y=b+28|0;z=b+32|0;A=b+152|0;B=b+44|0;if((Wk[c[b+16>>2]&63](c[y>>2]|0,c[z>>2]|0,(c[B>>2]|0)+(c[A>>2]|0)|0,0)|0)!=0){w=-103;i=j;return w|0}if((AC(x,c[z>>2]|0,u)|0)==0){C=(c[u>>2]|0)==67324752?0:-103}else{C=-1}u=c[z>>2]|0;D=b+4|0;if((Wk[c[D>>2]&63](c[y>>2]|0,u,t,1)|0)==1){E=d[t]|0;F=15}else{t=(Kk[c[b+24>>2]&255](c[y>>2]|0,u)|0)!=0;if(t){G=0;H=t<<31>>31}else{E=0;F=15}}do{if((F|0)==15){if((Wk[c[D>>2]&63](c[y>>2]|0,u,s,1)|0)==1){I=d[s]|0}else{t=(Kk[c[b+24>>2]&255](c[y>>2]|0,u)|0)!=0;if(t){G=0;H=t<<31>>31;break}else{I=E}}G=I<<8|E;H=0}}while(0);c[v>>2]=G;G=(H|0)==0?C:-1;C=c[z>>2]|0;if((Wk[c[D>>2]&63](c[y>>2]|0,C,r,1)|0)==1){J=a[r]&8;F=22}else{r=(Kk[c[b+24>>2]&255](c[y>>2]|0,C)|0)!=0;if(r){K=0;L=r<<31>>31}else{J=0;F=22}}do{if((F|0)==22){if((Wk[c[D>>2]&63](c[y>>2]|0,C,q,1)|0)!=1){r=(Kk[c[b+24>>2]&255](c[y>>2]|0,C)|0)!=0;if(r){K=0;L=r<<31>>31;break}}K=J;L=0}}while(0);J=(L|0)==0?G:-1;G=c[z>>2]|0;if((Wk[c[D>>2]&63](c[y>>2]|0,G,p,1)|0)==1){M=d[p]|0;F=28}else{if((Kk[c[b+24>>2]&255](c[y>>2]|0,G)|0)==0){M=0;F=28}else{F=31}}do{if((F|0)==28){if((Wk[c[D>>2]&63](c[y>>2]|0,G,o,1)|0)==1){N=d[o]|0}else{if((Kk[c[b+24>>2]&255](c[y>>2]|0,G)|0)==0){N=M}else{F=31;break}}p=N<<8|M;c[v>>2]=p;if((J|0)!=0){O=J;break}L=(p|0)==(c[b+84>>2]|0);if(!L){O=L?0:-103;break}if((p|0)==0|(p|0)==8){O=0;break}O=-103}}while(0);if((F|0)==31){c[v>>2]=0;O=-1}J=(AC(x,c[z>>2]|0,v)|0)==0;M=J?O:-1;do{if((AC(x,c[z>>2]|0,v)|0)==0){if((M|0)!=0){P=M;break}if((c[v>>2]|0)==(c[b+92>>2]|0)){P=0;break}P=(K|0)==0?-103:0}else{P=-1}}while(0);do{if((AC(x,c[z>>2]|0,v)|0)==0){if((P|0)!=0){Q=P;break}if((c[v>>2]|0)==(c[b+96>>2]|0)){Q=0;break}Q=(K|0)==0?-103:0}else{Q=-1}}while(0);do{if((AC(x,c[z>>2]|0,v)|0)==0){if((Q|0)!=0){R=Q;break}if((c[v>>2]|0)==(c[b+100>>2]|0)){R=0;break}R=(K|0)==0?-103:0}else{R=-1}}while(0);K=c[z>>2]|0;if((Wk[c[D>>2]&63](c[y>>2]|0,K,n,1)|0)==1){S=d[n]|0;F=51}else{if((Kk[c[b+24>>2]&255](c[y>>2]|0,K)|0)==0){S=0;F=51}else{T=-1;U=0}}do{if((F|0)==51){if((Wk[c[D>>2]&63](c[y>>2]|0,K,m,1)|0)==1){V=d[m]|0}else{if((Kk[c[b+24>>2]&255](c[y>>2]|0,K)|0)==0){V=S}else{T=-1;U=0;break}}n=V<<8|S;if((R|0)!=0){T=R;U=n;break}T=(n|0)==(c[b+104>>2]|0)?0:-103;U=n}}while(0);R=c[z>>2]|0;if((Wk[c[D>>2]&63](c[y>>2]|0,R,l,1)|0)==1){W=d[l]|0;F=59}else{l=(Kk[c[b+24>>2]&255](c[y>>2]|0,R)|0)!=0;if(l){X=0;Y=l<<31>>31}else{W=0;F=59}}do{if((F|0)==59){if((Wk[c[D>>2]&63](c[y>>2]|0,R,k,1)|0)==1){Z=d[k]|0}else{l=(Kk[c[b+24>>2]&255](c[y>>2]|0,R)|0)!=0;if(l){X=0;Y=l<<31>>31;break}else{Z=W}}X=Z<<8|W;Y=0}}while(0);W=U+30|0;U=W+(c[A>>2]|0)|0;if((Y|T|0)!=0){w=-103;i=j;return w|0}T=gs(144)|0;Y=T;if((T|0)==0){w=-104;i=j;return w|0}Z=gs(16384)|0;c[T>>2]=Z;c[T+68>>2]=U;c[T+72>>2]=X;c[T+76>>2]=0;c[T+140>>2]=g;if((Z|0)==0){es(T);w=-104;i=j;return w|0}Z=T+64|0;c[Z>>2]=0;if((e|0)!=0){c[e>>2]=c[b+84>>2]}do{if((f|0)!=0){c[f>>2]=6;e=c[b+80>>2]&6;if((e|0)==6){c[f>>2]=1;break}else if((e|0)==4){c[f>>2]=2;break}else if((e|0)==2){c[f>>2]=9;break}else{break}}}while(0);f=b+84|0;e=c[f>>2]|0;if((e|0)==0|(e|0)==8){_=0}else{_=-103}c[T+84>>2]=c[b+92>>2];c[T+80>>2]=0;c[T+132>>2]=c[f>>2];c[T+128>>2]=c[z>>2];m$(T+96|0,b|0,32)|0;c[T+136>>2]=c[B>>2];B=T+4|0;c[T+24>>2]=0;do{if((c[f>>2]|0)==8&(g|0)==0){c[T+36>>2]=0;c[T+40>>2]=0;c[T+44>>2]=0;c[B>>2]=0;z=T+8|0;c[z>>2]=0;if((RO(B,-15,136336,56)|0)==0){c[Z>>2]=1;$=z;break}es(T);w=-104;i=j;return w|0}else{$=T+8|0}}while(0);c[T+88>>2]=c[b+96>>2];c[T+92>>2]=c[b+100>>2];c[T+60>>2]=W+X+(c[A>>2]|0);c[$>>2]=0;c[h>>2]=Y;w=_;i=j;return w|0}function KC(a){a=a|0;return JC(a,0,0,0,0)|0}function LC(b,d,e){b=b|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,t=0,u=0,v=0,w=0;if((b|0)==0){f=-102;return f|0}g=c[b+156>>2]|0;if((g|0)==0){f=-102;return f|0}b=g|0;if((c[b>>2]|0)==0){f=-100;return f|0}if((e|0)==0){f=0;return f|0}h=g+4|0;i=g+16|0;c[i>>2]=d;d=g+20|0;c[d>>2]=e;j=g+92|0;k=c[j>>2]|0;do{if(k>>>0>>0){if((c[g+140>>2]|0)!=0){l=e;break}c[d>>2]=k;l=k}else{l=e}}while(0);k=g+88|0;m=g+8|0;n=(c[m>>2]|0)+(c[k>>2]|0)|0;do{if(n>>>0>>0){if((c[g+140>>2]|0)==0){o=0;p=l;break}c[d>>2]=n;o=0;p=n}else{o=0;p=l}}while(0);a:while(1){if((p|0)==0){q=0;r=o;s=29;break}l=c[m>>2]|0;do{if((l|0)==0){n=c[k>>2]|0;if((n|0)==0){t=0;break}e=n>>>0<16384>>>0?n:16384;if((e|0)==0){f=0;s=30;break a}n=g+124|0;u=g+128|0;v=g+60|0;if((Wk[c[g+112>>2]&63](c[n>>2]|0,c[u>>2]|0,(c[g+136>>2]|0)+(c[v>>2]|0)|0,0)|0)!=0){f=-1;s=30;break a}if((Wk[c[g+100>>2]&63](c[n>>2]|0,c[u>>2]|0,c[b>>2]|0,e)|0)!=(e|0)){f=-1;s=30;break a}c[v>>2]=(c[v>>2]|0)+e;c[k>>2]=(c[k>>2]|0)-e;c[h>>2]=c[b>>2];c[m>>2]=e;t=e}else{t=l}}while(0);do{if((c[g+132>>2]|0)!=0){if((c[g+140>>2]|0)!=0){break}l=g+24|0;e=c[l>>2]|0;v=c[i>>2]|0;u=SO(h,2)|0;if((u|0)>-1){w=(c[g+28>>2]|0)==0?u:-3}else{w=u}u=(c[l>>2]|0)-e|0;e=g+80|0;c[e>>2]=PO(c[e>>2]|0,v,u)|0;c[j>>2]=(c[j>>2]|0)-u;v=u+o|0;if((w|0)==1){f=v;s=30;break a}else if((w|0)!=0){q=w;r=v;s=29;break a}o=v;p=c[d>>2]|0;continue a}}while(0);if((t|0)==0){if((c[k>>2]|0)==0){f=o;s=30;break}}v=c[d>>2]|0;u=v>>>0>>0?v:t;v=h|0;if((u|0)!=0){e=0;do{a[(c[i>>2]|0)+e|0]=a[(c[v>>2]|0)+e|0]|0;e=e+1|0;}while(e>>>0>>0)}e=g+80|0;c[e>>2]=PO(c[e>>2]|0,c[i>>2]|0,u)|0;c[j>>2]=(c[j>>2]|0)-u;c[m>>2]=(c[m>>2]|0)-u;e=(c[d>>2]|0)-u|0;c[d>>2]=e;c[i>>2]=(c[i>>2]|0)+u;c[v>>2]=(c[v>>2]|0)+u;l=g+24|0;c[l>>2]=(c[l>>2]|0)+u;o=u+o|0;p=e}if((s|0)==29){f=(q|0)==0?r:q;return f|0}else if((s|0)==30){return f|0}return 0}function MC(a){a=a|0;var b=0,d=0;do{if((a|0)==0){b=-102}else{d=c[a+156>>2]|0;if((d|0)==0){b=-102;break}b=c[d+24>>2]|0}}while(0);return b|0}function NC(a){a=a|0;var b=0,d=0;if((a|0)==0){b=-102;return b|0}if((c[a+56>>2]|0)==0){b=0;return b|0}d=c[a+36>>2]|0;do{if(!((d|0)==0|(d|0)==65535)){if((c[a+48>>2]|0)==(d|0)){b=0}else{break}return b|0}}while(0);b=c[a+52>>2]|0;return b|0}function OC(a,b){a=a|0;b=b|0;var d=0;if((a|0)==0){d=-102;return d|0}c[a+52>>2]=b;c[a+48>>2]=c[a+36>>2];b=HC(a,a+72|0,a+152|0,0,0,0,0,0,0)|0;c[a+56>>2]=(b|0)==0;d=b;return d|0}function PC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;do{if((c&3|0)==1){d=136120}else{if((c&4|0)!=0){d=174272;break}d=(c&8|0)==0?0:147600}}while(0);if((b|0)==0|(d|0)==0){e=0;return e|0}e=dj(b|0,d|0)|0;return e|0}function QC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Dj(c|0,1,d|0,b|0)|0}function RC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ad(c|0,1,d|0,b|0)|0}function SC(a,b){a=a|0;b=b|0;return Ii(b|0)|0}function TC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(!(d>>>0<3>>>0)){e=-1;return e|0}hf(b|0,c|0,d|0)|0;e=0;return e|0}function UC(a,b){a=a|0;b=b|0;return kb(b|0)|0}function VC(a,b){a=a|0;b=b|0;return je(b|0)|0}function WC(a){a=a|0;c[a>>2]=6;c[a+4>>2]=14;c[a+8>>2]=30;c[a+12>>2]=114;c[a+16>>2]=26;c[a+20>>2]=112;c[a+24>>2]=134;c[a+28>>2]=0;return}function XC(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,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,_=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,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=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,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=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=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0;j=i;i=i+2120|0;k=1;l=0;m=i;i=i+168|0;c[m>>2]=0;while(1)switch(k|0){case 1:n=j|0;o=j+576|0;p=j+1208|0;q=j+1240|0;r=j+1816|0;s=j+1848|0;t=j+1912|0;w=j+1920|0;x=j+1928|0;y=x|0;c[y>>2]=e;z=x+4|0;c[z>>2]=c[f>>2];A=x+8|0;c[A>>2]=0;B=x+12|0;c[B>>2]=g;C=x+16|0;c[C>>2]=c[h>>2];D=x+20|0;c[D>>2]=0;E=x+24|0;c[E>>2]=0;F=x+28|0;c[F>>2]=0;G=x+32|0;H=w$(G|0,k,m)|0;k=92;break;case 92:if((H|0)==0){k=2;break}else{I=2;k=91;break};case 2:J=n|0;K=n+2|0;L=n+4|0;M=n+6|0;N=n+8|0;O=n+10|0;P=n+12|0;Q=n+14|0;R=n+16|0;S=n+18|0;T=n+20|0;U=n+22|0;V=n+24|0;W=n+26|0;X=n+28|0;Y=n+30|0;Z=n+32|0;_=n+34|0;$=n+36|0;aa=n+38|0;ba=n+40|0;ca=n+42|0;da=n+44|0;ea=n+46|0;fa=n+48|0;ga=n+50|0;ha=n+52|0;ia=n+54|0;ja=n+56|0;ka=n+58|0;la=t|0;ma=p|0;na=t+4|0;oa=q|0;pa=w|0;qa=r|0;sa=w+4|0;ta=s|0;ua=o|0;k=3;break;case 3:va=c[E>>2]|0;wa=c[F>>2]|0;if((wa|0)<1){k=4;break}else{xa=va;ya=wa;k=8;break};case 4:za=c[C>>2]|0;Aa=va;Ca=c[D>>2]|0;Da=wa;k=5;break;case 5:if((Ca|0)==(za|0)){k=6;break}else{k=7;break};case 6:ra(140,G|0,1);if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;return 0;case 7:Ea=Ca+1|0;c[D>>2]=Ea;Fa=d[(c[B>>2]|0)+Ca|0]<>2]=Ga;if((Ga|0)<1){Aa=Fa;Ca=Ea;Da=Ga;k=5;break}else{xa=Fa;ya=Ga;k=8;break};case 8:Ha=xa>>1;c[E>>2]=Ha;Ia=ya-1|0;c[F>>2]=Ia;Ja=xa&1;if((ya|0)<3){k=9;break}else{Ka=Ha;La=Ia;k=13;break};case 9:Ma=c[C>>2]|0;Na=Ha;Oa=c[D>>2]|0;Pa=Ia;k=10;break;case 10:if((Oa|0)==(Ma|0)){k=11;break}else{k=12;break};case 11:ra(140,G|0,1);if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;return 0;case 12:Ga=Oa+1|0;c[D>>2]=Ga;Fa=d[(c[B>>2]|0)+Oa|0]<>2]=Ea;if((Ea|0)<2){Na=Fa;Oa=Ga;Pa=Ea;k=10;break}else{Ka=Fa;La=Ea;k=13;break};case 13:Qa=Ka>>2;c[E>>2]=Qa;Ra=La-2|0;c[F>>2]=Ra;Ea=Ka&3;if((Ea|0)==0){k=14;break}else if((Ea|0)==1){k=24;break}else if((Ea|0)==2){k=29;break}else{Sa=-1;k=90;break};case 14:c[E>>2]=0;c[F>>2]=0;Ta=c[D>>2]|0;Va=Ta+4|0;Wa=c[C>>2]|0;if(Va>>>0>Wa>>>0){I=2;k=91;break}else{k=15;break};case 15:Ea=Ta+1|0;c[D>>2]=Ea;Xa=c[B>>2]|0;Fa=d[Xa+Ta|0]|0;Ga=Ta+2|0;c[D>>2]=Ga;Ya=d[Xa+Ea|0]<<8|Fa;Za=Ta+3|0;c[D>>2]=Za;_a=~Ya;if((a[Xa+Ga|0]|0)==(_a&255)<<24>>24){k=16;break}else{Sa=-2;k=90;break};case 16:c[D>>2]=Va;if((a[Xa+Za|0]|0)==(_a>>>8&255)<<24>>24){k=17;break}else{Sa=-2;k=90;break};case 17:$a=Ya+Va|0;if($a>>>0>Wa>>>0){I=2;k=91;break}else{k=18;break};case 18:ab=c[y>>2]|0;bb=c[A>>2]|0;cb=bb+Ya|0;if((ab|0)==0){k=23;break}else{k=19;break};case 19:if(cb>>>0>(c[z>>2]|0)>>>0){I=1;k=91;break}else{k=20;break};case 20:if((Ya|0)==0){db=0;k=88;break}else{k=21;break};case 21:Ga=Ya-1|0;c[D>>2]=Ta+5;Fa=a[Xa+Va|0]|0;c[A>>2]=bb+1;a[ab+bb|0]=Fa;if((Ga|0)==0){db=0;k=88;break}else{fb=Ga;k=22;break};case 22:Ga=c[D>>2]|0;Fa=c[B>>2]|0;Ea=c[A>>2]|0;gb=c[y>>2]|0;hb=fb-1|0;c[D>>2]=Ga+1;ib=a[Fa+Ga|0]|0;c[A>>2]=Ea+1;a[gb+Ea|0]=ib;if((hb|0)==0){db=0;k=88;break}else{fb=hb;k=22;break};case 23:c[A>>2]=cb;c[D>>2]=$a;db=0;k=88;break;case 24:if(a[23024]|0){k=28;break}else{jb=0;k=25;break};case 25:b[n+(jb<<1)>>1]=8;hb=jb+1|0;if((hb|0)<144){jb=hb;k=25;break}else{kb=144;k=26;break};case 26:b[n+(kb<<1)>>1]=9;hb=kb+1|0;if((hb|0)<256){kb=hb;k=26;break}else{k=27;break};case 27:b[n+512>>1]=7;b[n+514>>1]=7;b[n+516>>1]=7;b[n+518>>1]=7;b[n+520>>1]=7;b[n+522>>1]=7;b[n+524>>1]=7;b[n+526>>1]=7;b[n+528>>1]=7;b[n+530>>1]=7;b[n+532>>1]=7;b[n+534>>1]=7;b[n+536>>1]=7;b[n+538>>1]=7;b[n+540>>1]=7;b[n+542>>1]=7;b[n+544>>1]=7;b[n+546>>1]=7;b[n+548>>1]=7;b[n+550>>1]=7;b[n+552>>1]=7;b[n+554>>1]=7;b[n+556>>1]=7;b[n+558>>1]=7;b[n+560>>1]=8;b[n+562>>1]=8;b[n+564>>1]=8;b[n+566>>1]=8;b[n+568>>1]=8;b[n+570>>1]=8;b[n+572>>1]=8;b[n+574>>1]=8;eb(6,c[5758]|0,c[5759]|0,J|0,288)|0;if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;b[J>>1]=5;b[K>>1]=5;b[L>>1]=5;b[M>>1]=5;b[N>>1]=5;b[O>>1]=5;b[P>>1]=5;b[Q>>1]=5;b[R>>1]=5;b[S>>1]=5;b[T>>1]=5;b[U>>1]=5;b[V>>1]=5;b[W>>1]=5;b[X>>1]=5;b[Y>>1]=5;b[Z>>1]=5;b[_>>1]=5;b[$>>1]=5;b[aa>>1]=5;b[ba>>1]=5;b[ca>>1]=5;b[da>>1]=5;b[ea>>1]=5;b[fa>>1]=5;b[ga>>1]=5;b[ha>>1]=5;b[ia>>1]=5;b[ja>>1]=5;b[ka>>1]=5;eb(6,c[5760]|0,c[5761]|0,J|0,30)|0;if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;a[23024]=1;k=28;break;case 28:hb=Ba(32,x|0,23032,23040)|0;if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;db=hb;k=88;break;case 29:c[la>>2]=ma;c[na>>2]=oa;c[pa>>2]=qa;c[sa>>2]=ta;if((Ra|0)<5){k=30;break}else{lb=Qa;mb=Ra;k=34;break};case 30:nb=c[C>>2]|0;ob=Qa;pb=c[D>>2]|0;qb=Ra;k=31;break;case 31:if((pb|0)==(nb|0)){k=32;break}else{k=33;break};case 32:ra(140,G|0,1);if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;return 0;case 33:hb=pb+1|0;c[D>>2]=hb;ib=d[(c[B>>2]|0)+pb|0]<>2]=Ea;if((Ea|0)<5){ob=ib;pb=hb;qb=Ea;k=31;break}else{lb=ib;mb=Ea;k=34;break};case 34:rb=lb>>5;c[E>>2]=rb;sb=mb-5|0;c[F>>2]=sb;tb=(lb&31)+257|0;if((sb|0)<5){k=35;break}else{ub=rb;vb=sb;k=39;break};case 35:wb=c[C>>2]|0;xb=rb;yb=c[D>>2]|0;zb=sb;k=36;break;case 36:if((yb|0)==(wb|0)){k=37;break}else{k=38;break};case 37:ra(140,G|0,1);if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;return 0;case 38:Ea=yb+1|0;c[D>>2]=Ea;ib=d[(c[B>>2]|0)+yb|0]<>2]=hb;if((hb|0)<5){xb=ib;yb=Ea;zb=hb;k=36;break}else{ub=ib;vb=hb;k=39;break};case 39:Ab=ub>>5;c[E>>2]=Ab;Bb=vb-5|0;c[F>>2]=Bb;Cb=ub&31;Db=Cb+1|0;if((Bb|0)<4){k=40;break}else{Eb=Ab;Fb=Bb;k=44;break};case 40:Gb=c[C>>2]|0;Hb=Ab;Ib=c[D>>2]|0;Jb=Bb;k=41;break;case 41:if((Ib|0)==(Gb|0)){k=42;break}else{k=43;break};case 42:ra(140,G|0,1);if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;return 0;case 43:hb=Ib+1|0;c[D>>2]=hb;ib=d[(c[B>>2]|0)+Ib|0]<>2]=Ea;if((Ea|0)<4){Hb=ib;Ib=hb;Jb=Ea;k=41;break}else{Eb=ib;Fb=Ea;k=44;break};case 44:Kb=Eb>>4;c[E>>2]=Kb;Lb=Fb-4|0;c[F>>2]=Lb;if(tb>>>0>286>>>0|Cb>>>0>29>>>0){db=-3;k=88;break}else{k=45;break};case 45:Mb=(Eb&15)+3|0;Nb=0;Ob=Kb;Pb=Lb;k=47;break;case 46:if((Qb|0)<19){Rb=Qb;k=53;break}else{k=54;break};case 47:if((Pb|0)<3){k=48;break}else{Sb=Ob;Tb=Pb;k=52;break};case 48:Ub=c[C>>2]|0;Vb=Ob;Wb=c[D>>2]|0;Xb=Pb;k=49;break;case 49:if((Wb|0)==(Ub|0)){k=50;break}else{k=51;break};case 50:ra(140,G|0,1);if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;return 0;case 51:Ea=Wb+1|0;c[D>>2]=Ea;ib=d[(c[B>>2]|0)+Wb|0]<>2]=hb;if((hb|0)<3){Vb=ib;Wb=Ea;Xb=hb;k=49;break}else{Sb=ib;Tb=hb;k=52;break};case 52:hb=Sb>>3;c[E>>2]=hb;ib=Tb-3|0;c[F>>2]=ib;b[o+(b[30208+(Nb<<1)>>1]<<1)>>1]=Sb&7;Qb=Nb+1|0;if((Nb|0)<(Mb|0)){Nb=Qb;Ob=hb;Pb=ib;k=47;break}else{k=46;break};case 53:b[o+(b[30208+(Rb<<1)>>1]<<1)>>1]=0;ib=Rb+1|0;if((ib|0)<19){Rb=ib;k=53;break}else{k=54;break};case 54:ib=eb(6,ma|0,oa|0,ua|0,19)|0;if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;if((ib|0)==0){k=55;break}else{db=-4;k=88;break};case 55:Yb=Db+tb|0;Zb=0;k=56;break;case 56:_b=Ua(20,x|0,t|0)|0;if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;if((_b|0)<16){k=57;break}else{k=59;break};case 57:b[o+(Zb<<1)>>1]=_b;$b=Zb+1|0;k=58;break;case 58:if(($b|0)<(Yb|0)){Zb=$b;k=56;break}else{k=81;break};case 59:if((_b|0)==16){k=60;break}else if((_b|0)==17){k=67;break}else{k=73;break};case 60:if((Zb|0)==0){db=-5;k=88;break}else{k=61;break};case 61:ac=b[o+(Zb-1<<1)>>1]|0;bc=c[E>>2]|0;cc=c[F>>2]|0;if((cc|0)<2){k=62;break}else{dc=bc;ec=cc;k=66;break};case 62:fc=c[C>>2]|0;gc=bc;hc=c[D>>2]|0;ic=cc;k=63;break;case 63:if((hc|0)==(fc|0)){k=64;break}else{k=65;break};case 64:ra(140,G|0,1);if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;return 0;case 65:ib=hc+1|0;c[D>>2]=ib;hb=d[(c[B>>2]|0)+hc|0]<>2]=Ea;if((Ea|0)<2){gc=hb;hc=ib;ic=Ea;k=63;break}else{dc=hb;ec=Ea;k=66;break};case 66:c[E>>2]=dc>>2;c[F>>2]=ec-2;jc=ac;kc=(dc&3)+3|0;k=79;break;case 67:lc=c[E>>2]|0;mc=c[F>>2]|0;if((mc|0)<3){k=68;break}else{nc=lc;oc=mc;k=72;break};case 68:pc=c[C>>2]|0;qc=lc;rc=c[D>>2]|0;sc=mc;k=69;break;case 69:if((rc|0)==(pc|0)){k=70;break}else{k=71;break};case 70:ra(140,G|0,1);if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;return 0;case 71:Ea=rc+1|0;c[D>>2]=Ea;hb=d[(c[B>>2]|0)+rc|0]<>2]=ib;if((ib|0)<3){qc=hb;rc=Ea;sc=ib;k=69;break}else{nc=hb;oc=ib;k=72;break};case 72:c[E>>2]=nc>>3;c[F>>2]=oc-3;jc=0;kc=(nc&7)+3|0;k=79;break;case 73:tc=c[E>>2]|0;uc=c[F>>2]|0;if((uc|0)<7){k=74;break}else{vc=tc;wc=uc;k=78;break};case 74:xc=c[C>>2]|0;yc=tc;zc=c[D>>2]|0;Ac=uc;k=75;break;case 75:if((zc|0)==(xc|0)){k=76;break}else{k=77;break};case 76:ra(140,G|0,1);if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;return 0;case 77:ib=zc+1|0;c[D>>2]=ib;hb=d[(c[B>>2]|0)+zc|0]<>2]=Ea;if((Ea|0)<7){yc=hb;zc=ib;Ac=Ea;k=75;break}else{vc=hb;wc=Ea;k=78;break};case 78:c[E>>2]=vc>>7;c[F>>2]=wc-7;jc=0;kc=(vc&127)+11|0;k=79;break;case 79:Bc=kc+Zb|0;if((Bc|0)>(Yb|0)){db=-6;k=88;break}else{Cc=Zb;Dc=kc;k=80;break};case 80:Ea=Dc-1|0;b[o+(Cc<<1)>>1]=jc;if((Ea|0)==0){$b=Bc;k=58;break}else{Cc=Cc+1|0;Dc=Ea;k=80;break};case 81:Ec=c[la>>2]|0;Fc=eb(6,Ec|0,c[na>>2]|0,ua|0,tb|0)|0;if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;if((Fc|0)<0){db=-7;k=88;break}else{k=82;break};case 82:if((Fc|0)>0){k=83;break}else{k=84;break};case 83:if((tb-(b[Ec>>1]|0)|0)==1){k=84;break}else{db=-7;k=88;break};case 84:Gc=eb(6,qa|0,ta|0,o+(tb<<1)|0,Db|0)|0;if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;if((Gc|0)<0){db=-8;k=88;break}else{k=85;break};case 85:if((Gc|0)>0){k=86;break}else{k=87;break};case 86:if((Db-(b[qa>>1]|0)|0)==1){k=87;break}else{db=-8;k=88;break};case 87:Ea=Ba(32,x|0,t|0,w|0)|0;if((u|0)!=0&(v|0)!=0){l=x$(c[u>>2]|0,m)|0;if((l|0)>0){k=-1;break}else return 0}u=v=0;db=Ea;k=88;break;case 88:if((db|Ja|0)==0){k=3;break}else{k=89;break};case 89:if((db|0)<1){Sa=db;k=90;break}else{I=db;k=91;break};case 90:c[f>>2]=c[A>>2];c[h>>2]=c[D>>2];I=Sa;k=91;break;case 91:i=j;return I|0;case-1:if((l|0)==1){H=v;k=92}u=v=0;break}return 0}function YC(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;g=i;i=i+32|0;n$(a|0,0,32)|0;h=(e|0)>0;if(h){j=0;do{k=a+(b[d+(j<<1)>>1]<<1)|0;b[k>>1]=(b[k>>1]|0)+1;j=j+1|0;}while((j|0)<(e|0));l=b[a>>1]|0}else{l=0}if((l|0)==(e|0)){m=0;i=f;return m|0}else{n=1;o=2}while(1){p=o-(b[a+(n<<1)>>1]|0)|0;l=n+1|0;if((p|0)<0){m=p;q=12;break}if((l|0)>=16){break}n=l;o=p<<1}if((q|0)==12){i=f;return m|0}b[g+2>>1]=0;q=b[a+2>>1]|0;b[g+4>>1]=q;o=(b[a+4>>1]|0)+q&65535;b[g+6>>1]=o;q=(b[a+6>>1]|0)+o&65535;b[g+8>>1]=q;o=(b[a+8>>1]|0)+q&65535;b[g+10>>1]=o;q=(b[a+10>>1]|0)+o&65535;b[g+12>>1]=q;o=(b[a+12>>1]|0)+q&65535;b[g+14>>1]=o;q=(b[a+14>>1]|0)+o&65535;b[g+16>>1]=q;o=(b[a+16>>1]|0)+q&65535;b[g+18>>1]=o;q=(b[a+18>>1]|0)+o&65535;b[g+20>>1]=q;o=(b[a+20>>1]|0)+q&65535;b[g+22>>1]=o;q=(b[a+22>>1]|0)+o&65535;b[g+24>>1]=q;o=(b[a+24>>1]|0)+q&65535;b[g+26>>1]=o;q=(b[a+26>>1]|0)+o&65535;b[g+28>>1]=q;b[g+30>>1]=(b[a+28>>1]|0)+q;if(h){r=0}else{m=p;i=f;return m|0}while(1){h=b[d+(r<<1)>>1]|0;if(!(h<<16>>16==0)){q=g+(h<<16>>16<<1)|0;h=b[q>>1]|0;b[q>>1]=h+1;b[c+(h<<16>>16<<1)>>1]=r}h=r+1|0;if((h|0)<(e|0)){r=h}else{m=p;break}}i=f;return m|0}function ZC(a,e){a=a|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,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;f=a+24|0;g=a+28|0;h=c[g>>2]|0;i=a+20|0;j=a+16|0;k=a+12|0;l=c[e>>2]|0;m=h;n=c[f>>2]|0;o=0;p=0;q=0;r=1;while(1){s=l+2|0;if((m|0)==0){t=16-r|0;u=(t|0)>8?8:t;if((r|0)==16){v=-9;w=13;break}if((u|0)==0){w=5;break}t=c[i>>2]|0;if((t|0)==(c[j>>2]|0)){w=12;break}c[i>>2]=t+1;x=d[(c[k>>2]|0)+t|0]|0;y=u}else{x=n;y=m}z=x&1|q;A=x>>1;u=b[s>>1]|0;t=u+p|0;if((z|0)<(t|0)){w=9;break}l=s;m=y-1|0;n=A;o=u+o|0;p=t<<1;q=z<<1;r=r+1|0}if((w|0)==5){while(1){w=0;q=c[i>>2]|0;if((q|0)==(c[j>>2]|0)){break}c[i>>2]=q+1;w=5}B=a+32|0;Gh(B|0,1);return 0}else if((w|0)==9){c[f>>2]=A;c[g>>2]=h-r&7;v=b[(c[e+4>>2]|0)+(o-p+z<<1)>>1]|0;return v|0}else if((w|0)==12){B=a+32|0;Gh(B|0,1);return 0}else if((w|0)==13){return v|0}return 0}function _C(e,f,g){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,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=e|0;i=e+8|0;j=e+4|0;k=e+24|0;l=e+28|0;m=e+20|0;n=e+16|0;o=e+12|0;a:while(1){p=ZC(e,f)|0;if((p|0)<0){q=p;r=29;break}b:do{if((p|0)<256){s=c[h>>2]|0;if((s|0)!=0){t=c[i>>2]|0;if((t|0)==(c[j>>2]|0)){q=1;r=29;break a}a[s+t|0]=p}c[i>>2]=(c[i>>2]|0)+1;u=p}else{if((p|0)<=256){q=0;r=29;break a}t=p-257|0;if((t|0)>28){q=-9;r=29;break a}s=b[41448+(t<<1)>>1]|0;v=b[41384+(t<<1)>>1]|0;t=c[k>>2]|0;w=c[l>>2]|0;if((w|0)<(v|0)){x=c[n>>2]|0;y=t;z=c[m>>2]|0;A=w;while(1){if((z|0)==(x|0)){r=13;break a}B=z+1|0;c[m>>2]=B;C=d[(c[o>>2]|0)+z|0]<>2]=D;if((D|0)<(v|0)){y=C;z=B;A=D}else{E=C;F=D;break}}}else{E=t;F=w}c[k>>2]=E>>v;c[l>>2]=F-v;A=(E&(1<>1]|0;x=b[41576+(z<<1)>>1]|0;D=c[k>>2]|0;C=c[l>>2]|0;if((C|0)<(x|0)){B=c[n>>2]|0;G=D;H=c[m>>2]|0;I=C;while(1){if((H|0)==(B|0)){r=19;break a}J=H+1|0;c[m>>2]=J;K=d[(c[o>>2]|0)+H|0]<>2]=L;if((L|0)<(x|0)){G=K;H=J;I=L}else{M=K;N=L;break}}}else{M=D;N=C}c[k>>2]=M>>x;c[l>>2]=N-x;I=(M&(1<>2]|0;if(I>>>0>H>>>0){q=-10;r=29;break a}G=c[h>>2]|0;B=H+A|0;if((G|0)==0){c[i>>2]=B;u=z;break}if(B>>>0>(c[j>>2]|0)>>>0){q=1;r=29;break a}if((A|0)==0){u=z;break}else{O=A;P=H;Q=G}while(1){G=O-1|0;a[Q+P|0]=a[Q+(P-I)|0]|0;H=(c[i>>2]|0)+1|0;c[i>>2]=H;if((G|0)==0){u=z;break b}O=G;P=H;Q=c[h>>2]|0}}}while(0);if((u|0)==256){q=0;r=29;break}}if((r|0)==13){Gh(e+32|0,1);return 0}else if((r|0)==19){Gh(e+32|0,1);return 0}else if((r|0)==29){return q|0}return 0}function $C(a){a=a|0;c[218970]=a;return}function aD(){gt(135816,174256,1)|0;gt(147592,174256,1)|0;gt(129824,174256,1)|0;Gr(119368,406);Gr(108608,342);n$(875888|0,0|0,468|0)|0;return}function bD(){var a=0,b=0,d=0,e=0,f=0,g=0,j=0.0,k=0.0,l=0,m=0,n=0.0,o=0,p=0.0,q=0;a=i;b=c[4986328]|0;if((b|0)==0){i=a;return}d=b+128|0;e=c[d>>2]|0;if((e|0)==0){i=a;return}f=gs(e<<2)|0;e=f;g=c[b+132>>2]|0;c[e>>2]=g;j=+(c[g+8>>2]|0);b=c[d>>2]|0;if((b|0)>1){k=j;l=1;m=g;while(1){g=c[m>>2]|0;c[e+(l<<2)>>2]=g;n=k+ +(c[g+8>>2]|0);o=l+1|0;if((o|0)<(b|0)){k=n;l=o;m=g}else{p=n;break}}}else{p=j}Ie(f|0,b|0,4,62);if((c[d>>2]|0)>0){b=0;do{m=c[e+(b<<2)>>2]|0;l=m+8|0;g=c[l>>2]|0;Sr(129280,(q=i,i=i+24|0,c[q>>2]=~~(+(g|0)*100.0/p),c[q+8>>2]=g,c[q+16>>2]=m+12,q)|0);i=q;c[l>>2]=0;b=b+1|0;}while((b|0)<(c[d>>2]|0))}Sr(128192,(q=i,i=i+8|0,h[q>>3]=p,q)|0);i=q;es(f);i=a;return}function cD(){var b=0,d=0,e=0,f=0,g=0;b=i;Sr(126784,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;e=0;while(1){f=875896+(e*156|0)|0;if((a[f]|0)==0){g=10;break}Sr(125528,(d=i,i=i+8|0,c[d>>2]=f,d)|0);i=d;if((c[875964+(e*156|0)>>2]|0)==0){if((c[875980+(e*156|0)>>2]|0)==0){Sr(122968,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}else{Sr(123736,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}Sr(122072,(d=i,i=i+8|0,c[d>>2]=c[875992+(e*156|0)>>2],d)|0);i=d;Sr(121200,(d=i,i=i+8|0,c[d>>2]=c[876e3+(e*156|0)>>2]<<2,d)|0);i=d;Sr(120056,(d=i,i=i+8|0,c[d>>2]=(c[876008+(e*156|0)>>2]|0)+1,d)|0);i=d}else{Sr(124616,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}f=e+1|0;if((f|0)<3){e=f}else{g=10;break}}if((g|0)==10){i=b;return}}function dD(b){b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;i=i+144|0;e=d|0;f=d+8|0;g=d+16|0;h=d+80|0;if((c[(c[5458546]|0)+32>>2]|0)==0){j=64;k=0;l=64;m=0;i=d;return}SB(b+8|0,g,64);$B(h,64,50760,(n=i,i=i+8|0,c[n>>2]=g,n)|0)|0;i=n;mu(h,e)|0;g=c[e>>2]|0;if((g|0)==0){Sr(45736,(n=i,i=i+8|0,c[n>>2]=h,n)|0);i=n;j=64;k=0;l=64;m=0;i=d;return}o=c[b+112>>2]|0;c[f>>2]=g;g=bC(f)|0;a:do{if((a[g]|0)==0){p=0}else{q=b+108|0;r=0;s=b+132|0;t=g;while(1){u=t;v=0;while(1){w=u;while(1){x=w+1|0;y=a[w]|0;z=y<<24>>24;if(y<<24>>24==0){A=16;break}if((y-48&255)>>>0<10>>>0){A=10;break}if((y-97&255)>>>0<6>>>0){A=13;break}if((y-65&255)>>>0<6>>>0){A=15;break}else{w=x}}if((A|0)==10){A=0;B=(v<<4)-48|0}else if((A|0)==13){A=0;B=(v<<4|10)-97|0}else if((A|0)==15){A=0;B=(v<<4|10)-65|0}else if((A|0)==16){A=0;C=bC(f)|0;if((v|0)==0){break}bC(f)|0;w=bC(f)|0;if((a[w]|0)==0){p=r;break a}else{u=w;v=0;continue}}u=x;v=B+z|0}if((a[C]|0)==0){A=19;break}else{D=C;E=0}b:while(1){v=D;while(1){F=v+1|0;u=a[v]|0;G=u<<24>>24;if(u<<24>>24==0){break b}if((u-48&255)>>>0<10>>>0){A=23;break}if((u-97&255)>>>0<6>>>0){A=26;break}if((u-65&255)>>>0<6>>>0){A=28;break}else{v=F}}if((A|0)==23){A=0;H=(E<<4)-48|0}else if((A|0)==26){A=0;H=(E<<4|10)-97|0}else if((A|0)==28){A=0;H=(E<<4|10)-65|0}D=F;E=H+G|0}v=bC(f)|0;if((a[v]|0)==0){A=30;break}u=o$(v|0)|0;w=rs(u+16|0,0)|0;c[s>>2]=w;y=w;c[y>>2]=0;if((E|0)>-1&(E|0)<(o|0)){I=c[(c[q>>2]|0)+(E<<2)>>2]|0}else{I=E}c[w+4>>2]=I;TB(w+12|0,v,u+1|0);u=r+1|0;v=bC(f)|0;if((a[v]|0)==0){p=u;break a}else{r=u;s=y;t=v}}if((A|0)==19){Sr(184856,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;p=r;break}else if((A|0)==30){Sr(184856,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n;p=r;break}}}while(0);c[b+128>>2]=p;Sr(181024,(n=i,i=i+16|0,c[n>>2]=p,c[n+8>>2]=h,n)|0);i=n;nu(c[e>>2]|0);j=64;k=0;l=64;m=0;i=d;return}function eD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+80|0;e=d|0;f=d+64|0;g=e|0;c[g>>2]=a;a=f|0;h=f;c[h>>2]=b;c[h+4>>2]=0;c[e+4>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+8>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+12>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+16>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+20>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+24>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+28>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+32>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+36>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+40>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+44>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+48>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+52>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+56>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);c[e+60>>2]=(y=c[a+4>>2]|0,c[a+4>>2]=y+8,c[(c[a>>2]|0)+y>>2]|0);a=jk[c[(c[5425930]|0)+4>>2]&255](g)|0;i=d;return a|0}function fD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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,J=0,K=0;f=i;i=i+72|0;g=f+64|0;h=f|0;j=b+8|0;$B(h,64,176336,(k=i,i=i+8|0,c[k>>2]=j,k)|0)|0;i=k;Sr(172864,(k=i,i=i+8|0,c[k>>2]=h,k)|0);i=k;l=b+72|0;m=g;lu(h,c[l>>2]|0,e,m)|0;e=g|0;if((c[e>>2]|0)==0){Sr(169760,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;do{if((c[b+136>>2]|0)!=0){if(a[20840]|0){Sr(132824,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;break}else{Ur(0,134320,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;return 0}}}while(0);g=c[b+84>>2]|0;if((g|0)!=0){vk[g&511](b)}g=c[b+76>>2]|0;if((g|0)==0){n=b}else{QL(g);g=b;n$(g|0,0,156)|0;n=g}n$(n|0,0,156)|0;c[5425930]=0;c[4986328]=0;Sr(166368,(k=i,i=i+8|0,c[k>>2]=h,k)|0);i=k;o=0;p=64;q=0;i=f;return o|0}Bu(h,c[l>>2]|0)|0;l=c[e>>2]|0;n=c[l>>2]|0;g=l;a:do{if((n|0)==309466180){r=c[l+28>>2]|0;do{if((r|0)>=0){s=c[l+20>>2]|0;if((s|0)<0){break}t=c[l+24>>2]|0;if((t|0)<0){break}if((c[l+12>>2]|0)>=1){u=s;v=t;w=r;x=g;break a}}}while(0);if((b|0)==0){y=g}else{do{if((c[b+136>>2]|0)!=0){if(a[20840]|0){Sr(132824,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;break}else{Ur(0,134320,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;return 0}}}while(0);r=c[b+84>>2]|0;if((r|0)!=0){vk[r&511](b)}r=c[b+76>>2]|0;if((r|0)==0){z=b}else{QL(r);r=b;n$(r|0,0,156)|0;z=r}n$(z|0,0,156)|0;c[5425930]=0;c[4986328]=0;y=c[m>>2]|0}nu(y);Sr(160384,(k=i,i=i+8|0,c[k>>2]=h,k)|0);i=k;o=0;p=64;q=0;i=f;return o|0}else if((n|0)==309466181){Sr(163160,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;r=c[e>>2]|0;t=r;do{if((c[r+32>>2]|0)>=0){s=c[r+28>>2]|0;if((s|0)<0){break}A=c[r+20>>2]|0;if((A|0)<0){break}B=c[r+24>>2]|0;if((B|0)<0){break}if((c[r+12>>2]|0)>=1){u=A;v=B;w=s;x=t;break a}}}while(0);if((b|0)==0){C=t}else{do{if((c[b+136>>2]|0)!=0){if(a[20840]|0){Sr(132824,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;break}else{Ur(0,134320,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;return 0}}}while(0);t=c[b+84>>2]|0;if((t|0)!=0){vk[t&511](b)}t=c[b+76>>2]|0;if((t|0)==0){D=b}else{QL(t);t=b;n$(t|0,0,156)|0;D=t}n$(D|0,0,156)|0;c[5425930]=0;c[4986328]=0;C=c[m>>2]|0}nu(C);Sr(160384,(k=i,i=i+8|0,c[k>>2]=h,k)|0);i=k;o=0;p=64;q=0;i=f;return o|0}else{do{if((c[b+136>>2]|0)!=0){if(a[20840]|0){Sr(132824,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;break}else{Ur(0,134320,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;return 0}}}while(0);t=c[b+84>>2]|0;if((t|0)!=0){vk[t&511](b)}t=c[b+76>>2]|0;if((t|0)==0){E=b}else{QL(t);t=b;n$(t|0,0,156)|0;E=t}n$(E|0,0,156)|0;c[5425930]=0;c[4986328]=0;nu(c[m>>2]|0);Sr(157712,(k=i,i=i+8|0,c[k>>2]=h,k)|0);i=k;o=0;p=64;q=0;i=f;return o|0}}while(0);E=v+u+w|0;w=0;while(1){F=1<(F|0)){w=w+1|0}else{break}}w=(d|0)!=0;do{if(w){d=rs(F,0)|0;c[b+116>>2]=d;c[b+120>>2]=F-1;G=d}else{if(((c[b+120>>2]|0)+1|0)==(F|0)){d=b+116|0;n$(c[d>>2]|0,0,F|0)|0;G=c[d>>2]|0;break}if((b|0)==0){H=x}else{do{if((c[b+136>>2]|0)!=0){if(a[20840]|0){Sr(132824,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;break}else{Ur(0,134320,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;return 0}}}while(0);d=c[b+84>>2]|0;if((d|0)!=0){vk[d&511](b)}d=c[b+76>>2]|0;if((d|0)==0){I=b}else{QL(d);d=b;n$(d|0,0,156)|0;I=d}n$(I|0,0,156)|0;c[5425930]=0;c[4986328]=0;H=c[m>>2]|0}nu(H);Sr(155200,(k=i,i=i+8|0,c[k>>2]=h,k)|0);i=k;o=0;p=64;q=0;i=f;return o|0}}while(0);H=c[e>>2]|0;m$(G|0,H+(c[H+16>>2]|0)|0,(c[H+24>>2]|0)+(c[H+20>>2]|0)|0)|0;H=c[e>>2]|0;G=c[H+20>>2]|0;I=0;while(1){if((I|0)<(G|0)){I=I+4|0}else{break}}if((c[H>>2]|0)!=309466181){o=H;p=64;q=0;i=f;return o|0}I=b+152|0;G=c[I>>2]|0;x=H+32|0;H=c[x>>2]|0;c[x>>2]=H&-4;x=H>>2;c[I>>2]=x;Sr(153240,(k=i,i=i+8|0,c[k>>2]=x,k)|0);i=k;do{if(w){x=rs(c[(c[e>>2]|0)+32>>2]|0,0)|0;c[b+148>>2]=x;J=x}else{if((c[I>>2]|0)==(G|0)){x=b+148|0;n$(c[x>>2]|0,0,c[(c[e>>2]|0)+32>>2]|0)|0;J=c[x>>2]|0;break}if((b|0)!=0){do{if((c[b+136>>2]|0)!=0){if(a[20840]|0){Sr(132824,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;break}else{Ur(0,134320,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;return 0}}}while(0);x=c[b+84>>2]|0;if((x|0)!=0){vk[x&511](b)}x=c[b+76>>2]|0;if((x|0)==0){K=b}else{QL(x);x=b;n$(x|0,0,156)|0;K=x}n$(K|0,0,156)|0;c[5425930]=0;c[4986328]=0}nu(c[m>>2]|0);Sr(151232,(k=i,i=i+8|0,c[k>>2]=h,k)|0);i=k;o=0;p=64;q=0;i=f;return o|0}}while(0);k=c[e>>2]|0;m$(J|0,k+((c[k+20>>2]|0)+(c[k+16>>2]|0)+(c[k+24>>2]|0))|0,c[k+32>>2]|0)|0;k=c[e>>2]|0;e=c[k+32>>2]|0;J=0;while(1){if((J|0)<(e|0)){J=J+4|0}else{o=k;break}}p=64;q=0;i=f;return o|0}function gD(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;if((b|0)==0){i=d;return}do{if((c[b+136>>2]|0)!=0){e=b+8|0;if(a[20840]|0){Sr(132824,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;break}else{Ur(0,134320,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f}}}while(0);f=c[b+84>>2]|0;if((f|0)!=0){vk[f&511](b)}f=c[b+76>>2]|0;if((f|0)==0){g=b}else{QL(f);f=b;n$(f|0,0,156)|0;g=f}n$(g|0,0,156)|0;c[5425930]=0;c[4986328]=0;i=d;return}function hD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+64|0;f=e|0;g=b+76|0;if((c[g>>2]|0)==0){Sr(148984,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=fD(b,0,d)|0;if((j|0)==0){Ur(1,146416,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;return 0}nu(j);k=b;i=e;return k|0}j=f|0;f=c[b+4>>2]|0;d=b+8|0;TB(j,d,64);do{if((c[b+136>>2]|0)!=0){if(a[20840]|0){Sr(132824,(h=i,i=i+8|0,c[h>>2]=d,h)|0);i=h;break}else{Ur(0,134320,(h=i,i=i+8|0,c[h>>2]=d,h)|0);i=h;return 0}}}while(0);h=c[b+84>>2]|0;if((h|0)!=0){vk[h&511](b)}h=c[g>>2]|0;if((h|0)==0){l=b}else{QL(h);h=b;n$(h|0,0,156)|0;l=h}n$(l|0,0,156)|0;c[5425930]=0;c[4986328]=0;k=iD(j,f,0)|0;i=e;return k|0}function iD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;f=i;i=i+4104|0;g=f+4096|0;h=f|0;c[g>>2]=0;if((b|0)==0){Ur(0,144072,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;return 0}if((a[b]|0)==0|(d|0)==0){Ur(0,144072,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;return 0}k=ns()|0;l=0;while(1){m=l+1|0;if((VB(875896+(l*156|0)|0,b)|0)==0){n=7;break}if((m|0)<3){l=m}else{o=0;break}}if((n|0)==7){p=875888+(l*156|0)|0;q=4096;r=0;i=f;return p|0}while(1){l=o+1|0;if((a[875896+(o*156|0)|0]|0)==0){s=o;break}if((l|0)<3){o=l}else{s=l;break}}if((s|0)==3){Ur(0,141376,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;return 0}o=875888+(s*156|0)|0;l=875896+(s*156|0)|0;TB(l,b,64);m=(e|0)==0|0;t=875968+(s*156|0)|0;u=875964+(s*156|0)|0;v=875960+(s*156|0)|0;while(1){w=du(g,h,4096,b,m)|0;if((w|0)==0){Sr(139096,(j=i,i=i+8|0,c[j>>2]=h,j)|0);i=j;x=RL(h,t,126)|0;c[u>>2]=x;if((x|0)!=0){n=15;break}Sr(137176,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}else if((w|0)==2){c[v>>2]=c[g>>2];y=fD(o,1,0)|0;if((y|0)!=0){n=20;break}TB(l,b,64)}if(!((w|0)>-1)){p=0;n=24;break}}if((n|0)==15){c[875892+(s*156|0)>>2]=d;p=o;q=4096;r=0;i=f;return p|0}else if((n|0)==20){c[875892+(s*156|0)>>2]=d;d=c[y+4>>2]|0;c[876e3+(s*156|0)>>2]=d;c[875996+(s*156|0)>>2]=rs(d<<2,0)|0;c[875992+(s*156|0)>>2]=c[y+12>>2];d=875980+(s*156|0)|0;c[d>>2]=0;if((e|0)==1){n=22}else{c[d>>2]=1;lg(o|0,y|0);if((c[d>>2]|0)==0){n=22}}if((n|0)==22){vD(o,y)}nu(y);dD(o);y=c[876008+(s*156|0)>>2]|0;c[o>>2]=y+1;c[876012+(s*156|0)>>2]=y-65535;y=k-(ns()|0)|0;Sr(135752,(j=i,i=i+16|0,c[j>>2]=b,c[j+8>>2]=y,j)|0);i=j;p=o;q=4096;r=0;i=f;return p|0}else if((n|0)==24){q=4096;r=0;i=f;return p|0}return 0}function jD(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;d=0;while(1){e=875888+(d*156|0)|0;if((e|0)!=0){if((c[876024+(d*156|0)>>2]|0)!=0){f=875896+(d*156|0)|0;if(!(a[20840]|0)){g=5;break}Sr(132824,(h=i,i=i+8|0,c[h>>2]=f,h)|0);i=h}j=c[875972+(d*156|0)>>2]|0;if((j|0)!=0){vk[j&511](e)}j=c[875964+(d*156|0)>>2]|0;if((j|0)==0){k=e}else{QL(j);j=e;n$(j|0,0,156)|0;k=j}n$(k|0,0,156)|0;c[5425930]=0;c[4986328]=0}j=d+1|0;if((j|0)<3){d=j}else{g=14;break}}if((g|0)==5){Ur(0,134320,(h=i,i=i+8|0,c[h>>2]=f,h)|0);i=h}else if((g|0)==14){i=b;return}}function kD(){a[20840]=1;return}function lD(){a[20840]=0;return}function mD(a){a=a|0;var b=0,d=0,e=0;do{if((a|0)==0){b=0}else{d=c[5425930]|0;if((d|0)==0){b=0;break}e=c[d+116>>2]|0;if((c[d+80>>2]|0)==0){b=e+(c[d+120>>2]&a)|0;break}else{b=e+a|0;break}}}while(0);return b|0}function nD(a,b){a=a|0;b=b|0;var d=0,e=0;if((b|0)==0|(c[5425930]|0)==0){d=0;return d|0}e=c[a+116>>2]|0;if((c[a+80>>2]|0)==0){d=e+(c[a+120>>2]&b)|0;return d|0}else{d=e+b|0;return d|0}return 0}function oD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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,z=0,A=0,B=0,C=0;f=i;i=i+136|0;g=f|0;h=f+48|0;j=f+64|0;k=f+120|0;if((b|0)==0){Ur(0,131840,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;return 0}if((a[b+8|0]|0)==0){Ur(0,131840,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;return 0}m=c[5425930]|0;c[5425930]=b;c[4986328]=b;if((c[218970]|0)!=0){Sr(130584,(l=i,i=i+8|0,c[l>>2]=d,l)|0);i=l}l=b+136|0;c[l>>2]=(c[l>>2]|0)+1;n=b+80|0;do{if((c[n>>2]|0)==0){o=j|0;c[o>>2]=d;p=k|0;q=k;c[q>>2]=e;c[q+4>>2]=0;c[j+4>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);c[j+8>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);c[j+12>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);c[j+16>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);c[j+20>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);c[j+24>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);c[j+28>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);c[j+32>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);c[j+36>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);c[j+40>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);c[j+44>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);c[j+48>>2]=(y=c[p+4>>2]|0,c[p+4>>2]=y+8,c[(c[p>>2]|0)+y>>2]|0);if((c[b+92>>2]|0)==0){r=wD(b,o)|0;break}else{r=od(b|0,o|0)|0;break}}else{o=h|0;p=h;c[p>>2]=e;c[p+4>>2]=0;p=g|0;c[p>>2]=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);q=g+4|0;c[q>>2]=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);s=g+8|0;c[s>>2]=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);t=g+12|0;c[t>>2]=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);u=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);c[g+16>>2]=u;v=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);c[g+20>>2]=v;w=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);c[g+24>>2]=w;x=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);c[g+28>>2]=x;z=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);c[g+32>>2]=z;A=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);c[g+36>>2]=A;B=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);c[g+40>>2]=B;C=(y=c[o+4>>2]|0,c[o+4>>2]=y+8,c[(c[o>>2]|0)+y>>2]|0);c[g+44>>2]=C;r=ok[c[n>>2]&3](d,c[p>>2]|0,c[q>>2]|0,c[s>>2]|0,c[t>>2]|0,u,v,w,x,z,A,B,C)|0}}while(0);c[l>>2]=(c[l>>2]|0)-1;if((m|0)==0){i=f;return r|0}c[5425930]=m;i=f;return r|0}function pD(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[(c[a>>2]|0)+8>>2]|0;a=c[(c[b>>2]|0)+8>>2]|0;if((d|0)<(a|0)){e=-1;return e|0}e=(d|0)>(a|0)|0;return e|0}function qD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;f=c[5425930]|0;g=c[f+120>>2]|0;do{if((g&a|0)==(a|0)){if((g&b|0)!=(b|0)){break}h=d+a|0;if((g&h|0)!=(h|0)){break}h=d+b|0;if((g&h|0)!=(h|0)){break}h=c[f+116>>2]|0;m$(h+a|0,h+b|0,d)|0;i=e;return}}while(0);Ur(1,115e3,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}function rD(a){a=a|0;var b=0;if((c[a+92>>2]|0)==0){b=0;return b|0}b=rf(a|0)|0;return b|0}function sD(a){a=a|0;var b=0,d=0;b=i;if((c[a+92>>2]|0)==0){Ur(0,112832,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;return 0}else{d=Ec(a|0)|0;i=b;return d|0}return 0}function tD(){return c[5425930]|0}function uD(a){a=a|0;c[5425930]=a;return}function vD(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=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;e=i;f=rs(c[a+104>>2]<<2,0)|0;c[a+96>>2]=f;g=b;h=c[b+8>>2]|0;j=f;f=b+4|0;if((c[f>>2]|0)<=0){i=e;return}k=b+12|0;b=c[a+108>>2]|0;l=0;m=0;n=0;while(1){c[b+(n<<2)>>2]=l;o=n+1|0;p=d[g+(m+h)|0]|0;c[j+(l<<2)>>2]=p;if((m|0)>(c[k>>2]|0)){q=6;break}r=m+1|0;s=l+1|0;switch(p|0){case 33:{c[j+(s<<2)>>2]=d[g+(r+h)|0]|0;t=m+2|0;u=l+2|0;break};case 3:case 8:case 9:case 4: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 34:{p=g+(r+h)|0;c[j+(s<<2)>>2]=d[p]|d[p+1|0]<<8|d[p+2|0]<<16|d[p+3|0]<<24;t=m+5|0;u=l+2|0;break};default:{t=r;u=s}}v=c[f>>2]|0;if((o|0)<(v|0)){l=u;m=t;n=o}else{break}}if((q|0)==6){Ur(1,147504,(w=i,i=i+1|0,i=i+7&-8,c[w>>2]=0,w)|0);i=w}if((v|0)<=0){i=e;return}n=a+112|0;t=a+108|0;a=0;m=0;u=v;a:while(1){v=m+1|0;l=a+1|0;switch(c[j+(a<<2)>>2]|0){case 3:case 8:case 9:case 4:case 34:case 33:{x=a+2|0;y=u;break};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:{h=j+(l<<2)|0;g=c[h>>2]|0;if((g|0)<0){q=15;break a}if((g|0)>(c[n>>2]|0)){q=15;break a}c[h>>2]=c[(c[t>>2]|0)+(g<<2)>>2];x=a+2|0;y=c[f>>2]|0;break};default:{x=l;y=u}}if((v|0)<(y|0)){a=x;m=v;u=y}else{q=18;break}}if((q|0)==15){Ur(1,129760,(w=i,i=i+1|0,i=i+7&-8,c[w>>2]=0,w)|0);i=w}else if((q|0)==18){i=e;return}}function wD(f,h){f=f|0;h=h|0;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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;j=i;i=i+1040|0;k=f+88|0;c[k>>2]=1;l=f|0;m=c[l>>2]|0;n=c[f+116>>2]|0;o=c[f+96>>2]|0;p=c[f+120>>2]|0;c[n+(m-52)>>2]=c[h>>2];c[n+(m-48)>>2]=c[h+4>>2];c[n+(m-44)>>2]=c[h+8>>2];c[n+(m-40)>>2]=c[h+12>>2];c[n+(m-36)>>2]=c[h+16>>2];c[n+(m-32)>>2]=c[h+20>>2];c[n+(m-28)>>2]=c[h+24>>2];c[n+(m-24)>>2]=c[h+28>>2];c[n+(m-20)>>2]=c[h+32>>2];c[n+(m-16)>>2]=c[h+36>>2];c[n+(m-12)>>2]=c[h+40>>2];c[n+(m-8)>>2]=c[h+44>>2];c[n+(m-4)>>2]=c[h+48>>2];h=o;o=m-60|0;c[n+(m-56)>>2]=0;c[n+o>>2]=-1;$C(0);q=j+15&-16;r=q;c[r>>2]=-559038737;s=f+144|0;t=p&-4;u=p&-2;v=f+4|0;w=f+112|0;x=f+108|0;y=f+104|0;f=q;q=0;z=0;A=o;o=-559038737;a:while(1){B=q;C=z;D=c[r+((q-1&255)<<2)>>2]|0;E=o;b:while(1){F=B&255;G=r+(F<<2)|0;H=C;I=E;c:while(1){J=H;d:while(1){K=J+1|0;switch(c[h+(J<<2)>>2]|0){case 16:{L=48;break b;break};case 17:{L=51;break b;break};case 18:{L=54;break b;break};case 19:{L=57;break b;break};case 6:{L=24;break b;break};case 7:{L=25;break b;break};case 3:{L=26;break b;break};case 23:{L=69;break b;break};case 24:{L=72;break b;break};case 10:{L=30;break b;break};case 5:{L=19;break b;break};case 4:{L=27;break b;break};case 42:{L=86;break b;break};case 43:{L=87;break b;break};case 44:{L=88;break b;break};case 45:{L=89;break b;break};case 46:{L=90;break b;break};case 47:{L=91;break b;break};case 48:{L=92;break b;break};case 49:{L=93;break b;break};case 50:{L=94;break b;break};case 51:{L=95;break b;break};case 52:{L=96;break b;break};case 53:{L=97;break b;break};case 54:{L=98;break b;break};case 55:{L=99;break b;break};case 56:{L=100;break b;break};case 57:{L=101;break b;break};case 58:{L=102;break b;break};case 59:{L=103;break b;break};case 35:{L=104;break b;break};case 36:{L=105;break b;break};case 25:{L=75;break b;break};case 26:{L=78;break b;break};case 37:{L=81;break b;break};case 38:{L=82;break b;break};case 39:{L=83;break b;break};case 40:{L=84;break b;break};case 41:{L=85;break b;break};case 2:{break};case 8:{L=7;break c;break};case 9:{L=8;break c;break};case 29:{L=10;break d;break};case 28:{L=11;break d;break};case 27:{L=12;break d;break};case 32:{L=13;break b;break};case 31:{L=15;break b;break};case 30:{L=16;break b;break};case 33:{L=17;break b;break};case 34:{L=18;break b;break};case 11:{L=33;break b;break};case 12:{L=36;break b;break};case 20:{L=60;break b;break};case 21:{L=63;break b;break};case 22:{L=66;break b;break};case 13:{L=39;break b;break};case 14:{L=42;break b;break};case 15:{L=45;break b;break};default:{M=B;N=K;O=A;break b}}c[s>>2]=(c[s>>2]|0)+1;J=K}if((L|0)==10){L=0;P=c[n+(t&I)>>2]|0;c[G>>2]=P;H=K;I=P;continue}else if((L|0)==11){L=0;P=e[n+(u&I)>>1]|0;c[G>>2]=P;H=K;I=P;continue}else if((L|0)==12){L=0;P=d[n+(I&p)|0]|0;c[G>>2]=P;H=K;I=P;continue}}if((L|0)==7){L=0;H=B+1&255;P=c[h+(K<<2)>>2]|0;c[r+((H&255)<<2)>>2]=P;Q=H;R=P}else if((L|0)==8){L=0;P=B+1&255;H=(c[h+(K<<2)>>2]|0)+A|0;c[r+((P&255)<<2)>>2]=H;Q=P;R=H}B=Q;C=J+2|0;D=I;E=R}do{if((L|0)==13){L=0;c[n+(t&D)>>2]=I;M=B-2&255;N=K;O=A}else if((L|0)==15){L=0;b[n+(u&D)>>1]=I;M=B-2&255;N=K;O=A}else if((L|0)==16){L=0;a[n+(D&p)|0]=I;M=B-2&255;N=K;O=A}else if((L|0)==17){L=0;c[n+(t&(c[h+(K<<2)>>2]|0)+A)>>2]=I;M=B-1&255;N=J+2|0;O=A}else if((L|0)==18){L=0;qD(D,I,c[h+(K<<2)>>2]|0);M=B-2&255;N=J+2|0;O=A}else if((L|0)==19){L=0;E=n+A|0;c[E>>2]=K;if((I|0)<0){c[l>>2]=A-4;C=n+(A+4)|0;c[C>>2]=~I;c[G>>2]=jk[c[v>>2]&255](C)|0;M=B;N=c[E>>2]|0;O=A;break}if(!(I>>>0<(c[w>>2]|0)>>>0)){L=22;break a}M=B-1&255;N=c[(c[x>>2]|0)+(I<<2)>>2]|0;O=A}else if((L|0)==24){L=0;M=B+1&255;N=K;O=A}else if((L|0)==25){L=0;M=B-1&255;N=K;O=A}else if((L|0)==26){L=0;M=B;N=J+2|0;O=A-(c[h+(K<<2)>>2]|0)|0}else if((L|0)==27){L=0;E=(c[h+(K<<2)>>2]|0)+A|0;C=c[n+E>>2]|0;if((C|0)==-1){L=106;break a}if(C>>>0<(c[y>>2]|0)>>>0){M=B;N=C;O=E}else{L=29;break a}}else if((L|0)==30){L=0;if(!(I>>>0<(c[w>>2]|0)>>>0)){L=31;break a}M=B-1&255;N=c[(c[x>>2]|0)+(I<<2)>>2]|0;O=A}else if((L|0)==33){L=0;E=B-2&255;if((D|0)==(I|0)){M=E;N=c[h+(K<<2)>>2]|0;O=A;break}else{M=E;N=J+2|0;O=A;break}}else if((L|0)==36){L=0;E=B-2&255;if((D|0)==(I|0)){M=E;N=J+2|0;O=A;break}else{M=E;N=c[h+(K<<2)>>2]|0;O=A;break}}else if((L|0)==39){L=0;E=B-2&255;if((D|0)<(I|0)){M=E;N=c[h+(K<<2)>>2]|0;O=A;break}else{M=E;N=J+2|0;O=A;break}}else if((L|0)==42){L=0;E=B-2&255;if((D|0)>(I|0)){M=E;N=J+2|0;O=A;break}else{M=E;N=c[h+(K<<2)>>2]|0;O=A;break}}else if((L|0)==45){L=0;E=B-2&255;if((D|0)>(I|0)){M=E;N=c[h+(K<<2)>>2]|0;O=A;break}else{M=E;N=J+2|0;O=A;break}}else if((L|0)==48){L=0;E=B-2&255;if((D|0)<(I|0)){M=E;N=J+2|0;O=A;break}else{M=E;N=c[h+(K<<2)>>2]|0;O=A;break}}else if((L|0)==51){L=0;E=B-2&255;if(D>>>0>>0){M=E;N=c[h+(K<<2)>>2]|0;O=A;break}else{M=E;N=J+2|0;O=A;break}}else if((L|0)==54){L=0;E=B-2&255;if(D>>>0>I>>>0){M=E;N=J+2|0;O=A;break}else{M=E;N=c[h+(K<<2)>>2]|0;O=A;break}}else if((L|0)==57){L=0;E=B-2&255;if(D>>>0>I>>>0){M=E;N=c[h+(K<<2)>>2]|0;O=A;break}else{M=E;N=J+2|0;O=A;break}}else if((L|0)==60){L=0;E=B-2&255;if(D>>>0>>0){M=E;N=J+2|0;O=A;break}else{M=E;N=c[h+(K<<2)>>2]|0;O=A;break}}else if((L|0)==63){L=0;E=B-2&255;if(+g[f+((B-1&255)<<2)>>2]==+g[f+(F<<2)>>2]){M=E;N=c[h+(K<<2)>>2]|0;O=A;break}else{M=E;N=J+2|0;O=A;break}}else if((L|0)==66){L=0;E=B-2&255;if(+g[f+((B-1&255)<<2)>>2]!=+g[f+(F<<2)>>2]){M=E;N=c[h+(K<<2)>>2]|0;O=A;break}else{M=E;N=J+2|0;O=A;break}}else if((L|0)==69){L=0;E=B-2&255;if(+g[f+((B-1&255)<<2)>>2]<+g[f+(F<<2)>>2]){M=E;N=c[h+(K<<2)>>2]|0;O=A;break}else{M=E;N=J+2|0;O=A;break}}else if((L|0)==72){L=0;E=B-2&255;if(+g[f+((B-1&255)<<2)>>2]>+g[f+(F<<2)>>2]){M=E;N=J+2|0;O=A;break}else{M=E;N=c[h+(K<<2)>>2]|0;O=A;break}}else if((L|0)==75){L=0;E=B-2&255;if(+g[f+((B-1&255)<<2)>>2]>+g[f+(F<<2)>>2]){M=E;N=c[h+(K<<2)>>2]|0;O=A;break}else{M=E;N=J+2|0;O=A;break}}else if((L|0)==78){L=0;E=B-2&255;if(+g[f+((B-1&255)<<2)>>2]<+g[f+(F<<2)>>2]){M=E;N=J+2|0;O=A;break}else{M=E;N=c[h+(K<<2)>>2]|0;O=A;break}}else if((L|0)==81){L=0;c[G>>2]=-I;M=B;N=K;O=A}else if((L|0)==82){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=D+I;M=E;N=K;O=A}else if((L|0)==83){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=D-I;M=E;N=K;O=A}else if((L|0)==84){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=(D|0)/(I|0)|0;M=E;N=K;O=A}else if((L|0)==85){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=(D>>>0)/(I>>>0)|0;M=E;N=K;O=A}else if((L|0)==86){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=(D|0)%(I|0)|0;M=E;N=K;O=A}else if((L|0)==87){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=(D>>>0)%(I>>>0)|0;M=E;N=K;O=A}else if((L|0)==88){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=da(D,I)|0;M=E;N=K;O=A}else if((L|0)==89){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=da(D,I)|0;M=E;N=K;O=A}else if((L|0)==90){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=D&I;M=E;N=K;O=A}else if((L|0)==91){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=D|I;M=E;N=K;O=A}else if((L|0)==92){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=D^I;M=E;N=K;O=A}else if((L|0)==93){L=0;c[G>>2]=~I;M=B;N=K;O=A}else if((L|0)==94){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=D<>2]=D>>I;M=E;N=K;O=A}else if((L|0)==96){L=0;E=B-1&255;c[r+((E&255)<<2)>>2]=D>>>(I>>>0);M=E;N=K;O=A}else if((L|0)==97){L=0;E=f+(F<<2)|0;g[E>>2]=-0.0- +g[E>>2];M=B;N=K;O=A}else if((L|0)==98){L=0;E=B-1&255;C=f+((E&255)<<2)|0;g[C>>2]=+g[C>>2]+ +g[f+(F<<2)>>2];M=E;N=K;O=A}else if((L|0)==99){L=0;E=B-1&255;C=f+((E&255)<<2)|0;g[C>>2]=+g[C>>2]- +g[f+(F<<2)>>2];M=E;N=K;O=A}else if((L|0)==100){L=0;E=B-1&255;C=f+((E&255)<<2)|0;g[C>>2]=+g[C>>2]/+g[f+(F<<2)>>2];M=E;N=K;O=A}else if((L|0)==101){L=0;E=B-1&255;C=f+((E&255)<<2)|0;g[C>>2]=+g[C>>2]*+g[f+(F<<2)>>2];M=E;N=K;O=A}else if((L|0)==102){L=0;g[f+(F<<2)>>2]=+(c[G>>2]|0);M=B;N=K;O=A}else if((L|0)==103){L=0;c[G>>2]=ye(+(+g[f+(F<<2)>>2]))|0;M=B;N=K;O=A}else if((L|0)==104){L=0;c[G>>2]=c[G>>2]<<24>>24;M=B;N=K;O=A}else if((L|0)==105){L=0;c[G>>2]=c[G>>2]<<16>>16;M=B;N=K;O=A}}while(0);q=M;z=N;A=O;o=c[r+((M&255)<<2)>>2]|0}if((L|0)==22){Ur(1,119320,(S=i,i=i+1|0,i=i+7&-8,c[S>>2]=0,S)|0);i=S;return 0}else if((L|0)==29){Ur(1,108560,(S=i,i=i+1|0,i=i+7&-8,c[S>>2]=0,S)|0);i=S;return 0}else if((L|0)==31){Ur(1,99224,(S=i,i=i+1|0,i=i+7&-8,c[S>>2]=0,S)|0);i=S;return 0}else if((L|0)==106){c[k>>2]=0;k=c[r>>2]|0;if(B<<24>>24==1&(k|0)==-559038737){c[l>>2]=m;i=j;return c[G>>2]|0}else{Ur(1,57272,(S=i,i=i+16|0,c[S>>2]=k,c[S+8>>2]=F,S)|0);i=S;return 0}}return 0}function xD(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0;j=i;i=i+88|0;k=j|0;Gk[c[7092491]&63](k,b,d,e,f,g,h);m$(a|0,k|0,84)|0;i=j;return}function yD(a){a=a|0;return jk[c[7092493]&255](a)|0}function zD(a,b,d,e,f,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;k=i;i=i+88|0;l=k|0;Gk[c[7092492]&63](l,b,d,e,f,a,h);if(!(+g[l+8>>2]<+g[j+8>>2])){m=0;n=84;o=0;i=k;return m|0}m$(j|0,l|0,84)|0;m=1;n=84;o=0;i=k;return m|0}function AD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;fk[c[7092496]&127](a,b,d,e,f);return}function BD(a){a=a|0;return}function CD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function DD(a){a=a|0;var b=0;b=a+1|0;return((a|0)>-1&(b|0)<(c[7090275]|0)?b:0)|0}function ED(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;a[e]=0;if(!((b|0)>0&(c[7090275]|0)>(b|0))){Tk[c[7092490]&255](1,134688,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=0;i=g;return j|0}h=c[28361104+(b<<2)>>2]|0;if((h|0)==0){j=0;i=g;return j|0}else{k=h}while(1){if((k$(c[k>>2]|0,d)|0)==0){break}h=c[k+8>>2]|0;if((h|0)==0){j=0;l=7;break}else{k=h}}if((l|0)==7){i=g;return j|0}l=f-1|0;q$(e|0,c[k+4>>2]|0,l|0)|0;a[e+l|0]=0;j=1;i=g;return j|0}function FD(b,d,e){b=b|0;d=d|0;e=e|0;var f=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=i;i=i+152|0;j=f|0;k=f+128|0;l=f+136|0;m=f+144|0;n=j|0;o=e+8|0;g[o>>2]=0.0;p=e+4|0;g[p>>2]=0.0;g[e>>2]=0.0;a[n]=0;if(!((b|0)>0&(c[7090275]|0)>(b|0))){Tk[c[7092490]&255](1,134688,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0);i=q;r=0;s=128;t=0;i=f;return r|0}u=c[28361104+(b<<2)>>2]|0;if((u|0)==0){r=0;s=128;t=0;i=f;return r|0}else{v=u}while(1){if((k$(c[v>>2]|0,d)|0)==0){break}u=c[v+8>>2]|0;if((u|0)==0){r=0;w=7;break}else{v=u}}if((w|0)==7){s=128;t=0;i=f;return r|0}q$(n|0,c[v+4>>2]|0,127)|0;a[j+127|0]=0;h[m>>3]=0.0;h[l>>3]=0.0;h[k>>3]=0.0;qi(n|0,174128,(q=i,i=i+24|0,c[q>>2]=k,c[q+8>>2]=l,c[q+16>>2]=m,q)|0)|0;i=q;g[e>>2]=+h[k>>3];g[p>>2]=+h[l>>3];g[o>>2]=+h[m>>3];r=1;s=128;t=0;i=f;return r|0}function GD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;i=i+128|0;h=f|0;j=h|0;g[e>>2]=0.0;a[j]=0;if(!((b|0)>0&(c[7090275]|0)>(b|0))){Tk[c[7092490]&255](1,134688,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=0;m=128;n=0;i=f;return l|0}k=c[28361104+(b<<2)>>2]|0;if((k|0)==0){l=0;m=128;n=0;i=f;return l|0}else{o=k}while(1){if((k$(c[o>>2]|0,d)|0)==0){break}k=c[o+8>>2]|0;if((k|0)==0){l=0;p=7;break}else{o=k}}if((p|0)==7){m=128;n=0;i=f;return l|0}q$(j|0,c[o+4>>2]|0,127)|0;a[h+127|0]=0;g[e>>2]=+h$(j);l=1;m=128;n=0;i=f;return l|0}function HD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+128|0;g=f|0;h=g|0;c[e>>2]=0;a[h]=0;if(!((b|0)>0&(c[7090275]|0)>(b|0))){Tk[c[7092490]&255](1,134688,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=0;l=128;m=0;i=f;return k|0}j=c[28361104+(b<<2)>>2]|0;if((j|0)==0){k=0;l=128;m=0;i=f;return k|0}else{n=j}while(1){if((k$(c[n>>2]|0,d)|0)==0){break}j=c[n+8>>2]|0;if((j|0)==0){k=0;o=7;break}else{n=j}}if((o|0)==7){l=128;m=0;i=f;return k|0}q$(h|0,c[n+4>>2]|0,127)|0;a[g+127|0]=0;c[e>>2]=oj(h|0)|0;k=1;l=128;m=0;i=f;return k|0}function ID(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=i;i=i+1064|0;b=a|0;d=b|0;e=lL(c[7090274]|0,c[7090273]|0,147496)|0;iL(e,12);c[7090275]=1;f=b+1024|0;a:while(1){if((eL(e,b)|0)==0){break}if((k$(d,129752)|0)!=0){g=4;break}h=c[7090275]|0;if((h|0)>2047){g=15;break}c[7090275]=h+1;j=28361104+(h<<2)|0;c[j>>2]=0;b:do{if((eL(e,b)|0)!=0){do{if((k$(d,99216)|0)==0){break b}h=aK(12)|0;c[h+8>>2]=c[j>>2];c[j>>2]=h;if((c[f>>2]|0)!=1){g=19;break a}gL(d);k=$J((o$(d|0)|0)+1|0)|0;c[h>>2]=k;r$(k|0,d|0)|0;if((fL(e,1,0,b)|0)==0){g=30;break a}gL(d);k=$J((o$(d|0)|0)+1|0)|0;c[h+4>>2]=k;r$(k|0,d|0)|0;}while((eL(e,b)|0)!=0)}}while(0);if((k$(d,99216)|0)!=0){g=42;break}}if((g|0)==4){_K(e,119304,(l=i,i=i+8|0,c[l>>2]=d,l)|0);i=l;b=c[7090275]|0;if((b|0)>1){f=1;j=b;while(1){b=c[28361104+(f<<2)>>2]|0;if((b|0)==0){m=j}else{k=b;while(1){b=c[k+8>>2]|0;h=c[k>>2]|0;if((h|0)!=0){bK(h)}h=c[k+4>>2]|0;if((h|0)!=0){bK(h)}bK(k);if((b|0)==0){break}else{k=b}}m=c[7090275]|0}k=f+1|0;if((k|0)<(m|0)){f=k;j=m}else{break}}}c[7090275]=0;mL(e);n=1060;o=0;i=a;return}else if((g|0)==15){Tk[c[7092490]&255](1,108528,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l}else if((g|0)==19){_K(e,119304,(l=i,i=i+8|0,c[l>>2]=d,l)|0);i=l;d=c[7090275]|0;if((d|0)>1){m=1;j=d;while(1){d=c[28361104+(m<<2)>>2]|0;if((d|0)==0){p=j}else{f=d;while(1){d=c[f+8>>2]|0;k=c[f>>2]|0;if((k|0)!=0){bK(k)}k=c[f+4>>2]|0;if((k|0)!=0){bK(k)}bK(f);if((d|0)==0){break}else{f=d}}p=c[7090275]|0}f=m+1|0;if((f|0)<(p|0)){m=f;j=p}else{break}}}c[7090275]=0;mL(e);n=1060;o=0;i=a;return}else if((g|0)==30){p=c[7090275]|0;if((p|0)>1){j=1;m=p;while(1){p=c[28361104+(j<<2)>>2]|0;if((p|0)==0){q=m}else{f=p;while(1){p=c[f+8>>2]|0;d=c[f>>2]|0;if((d|0)!=0){bK(d)}d=c[f+4>>2]|0;if((d|0)!=0){bK(d)}bK(f);if((p|0)==0){break}else{f=p}}q=c[7090275]|0}f=j+1|0;if((f|0)<(q|0)){j=f;m=q}else{break}}}c[7090275]=0;mL(e);n=1060;o=0;i=a;return}else if((g|0)==42){_K(e,57256,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;l=c[7090275]|0;if((l|0)>1){g=1;q=l;while(1){l=c[28361104+(g<<2)>>2]|0;if((l|0)==0){r=q}else{m=l;while(1){l=c[m+8>>2]|0;j=c[m>>2]|0;if((j|0)!=0){bK(j)}j=c[m+4>>2]|0;if((j|0)!=0){bK(j)}bK(m);if((l|0)==0){break}else{m=l}}r=c[7090275]|0}m=g+1|0;if((m|0)<(r|0)){g=m;q=r}else{break}}}c[7090275]=0;mL(e);n=1060;o=0;i=a;return}mL(e);n=1060;o=0;i=a;return}function JD(){var a=0,b=0,d=0,e=0,f=0,g=0;a=c[7090275]|0;if((a|0)>1){b=1;d=a;while(1){a=c[28361104+(b<<2)>>2]|0;if((a|0)==0){e=d}else{f=a;while(1){a=c[f+8>>2]|0;g=c[f>>2]|0;if((g|0)!=0){bK(g)}g=c[f+4>>2]|0;if((g|0)!=0){bK(g)}bK(f);if((a|0)==0){break}else{f=a}}e=c[7090275]|0}f=b+1|0;if((f|0)<(e|0)){b=f;d=e}else{break}}}c[7090275]=0;e=c[7090274]|0;if((e|0)==0){n$(28361088,0,8208)|0;return}bK(e);n$(28361088,0,8208)|0;return}function KD(){var a=0,b=0;JD();a=(o$(Ok[c[7092495]&63]()|0)|0)+1|0;c[7090273]=a;b=aK(a)|0;c[7090274]=b;a=Ok[c[7092495]&63]()|0;m$(b|0,a|0,c[7090273]|0)|0;ID();c[7090272]=1;return 0}function LD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;e=c[7094538]|0;a:do{if((e|0)>1){f=c[7094539]|0;g=1;while(1){h=g+1|0;if((c[f+(g*20|0)>>2]|0)==(a|0)){j=g;break a}if((h|0)<(e|0)){g=h}else{j=h;break}}}else{j=1}}while(0);if((j|0)==(e|0)){hE(134560,(k=i,i=i+8|0,c[k>>2]=a,k)|0);i=k;l=1;i=d;return l|0}e=c[7094539]|0;g=e+(j*20|0)+4|0;f=c[g>>2]|0;if((f|0)==(b|0)){l=1;i=d;return l|0}h=e+(j*20|0)+8|0;e=c[h>>2]|0;if((e|0)==(b|0)){l=1;i=d;return l|0}do{if((f|0)==0){c[g>>2]=b}else{if((e|0)==0){c[h>>2]=b;break}m=(c[7094533]|0)+(a*28|0)|0;c[m>>2]=c[m>>2]&-9;YJ(174072,(k=i,i=i+8|0,c[k>>2]=a,k)|0);i=k;l=0;i=d;return l|0}}while(0);if((c[7094540]|0)>65535){hE(147456,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=1;i=d;return l|0}else{c[(c[7094533]|0)+(a*28|0)+12>>2]=-j;a=c[7094543]|0;k=a+(b<<4)+8|0;c[(c[7094541]|0)+((c[k>>2]|0)+(c[a+(b<<4)+12>>2]|0)<<2)>>2]=j;c[7094540]=(c[7094540]|0)+1;c[k>>2]=(c[k>>2]|0)+1;l=1;i=d;return l|0}return 0}function MD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=i;if(!((a|0)>0&(c[7094530]|0)>(a|0))){hE(129704,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;f=0;i=d;return f|0}g=c[7094533]|0;h=g+(a*28|0)+12|0;j=c[h>>2]|0;if((j|0)>0){if((j|0)==(b|0)){f=1;i=d;return f|0}hE(119256,(e=i,i=i+24|0,c[e>>2]=b,c[e+8>>2]=j,c[e+16>>2]=a,e)|0);i=e;f=0;i=d;return f|0}if((c[g+(a*28|0)>>2]&8|0)!=0){f=LD(a,b)|0;i=d;return f|0}c[h>>2]=b;h=(c[7094543]|0)+(b<<4)|0;c[g+(a*28|0)+16>>2]=c[h>>2];c[h>>2]=(c[h>>2]|0)+1;h=c[7094531]|0;do{if((c[2754]|0)==0){e=h+(a*48|0)+4|0;if((c[e>>2]|0)<=0){k=g;break}j=h+(a*48|0)+8|0;l=0;a:while(1){m=c[(c[7094529]|0)+((c[j>>2]|0)+l<<2)>>2]|0;n=(m|0)>-1?m:-m|0;m=c[7094527]|0;o=c[m+(n*24|0)+16>>2]|0;do{if((o|0)==(a|0)){p=c[m+(n*24|0)+20>>2]|0;if((p|0)==0){break}if((MD(p,b)|0)==0){f=0;q=23;break a}}else{if((o|0)==0){break}if((MD(o,b)|0)==0){f=0;q=23;break a}}}while(0);o=l+1|0;if((o|0)<(c[e>>2]|0)){l=o}else{q=11;break}}if((q|0)==11){k=c[7094533]|0;break}else if((q|0)==23){i=d;return f|0}}else{k=g}}while(0);if((c[k+(a*28|0)+20>>2]|0)>0){r=0;s=k}else{f=1;i=d;return f|0}while(1){k=c[(c[7094535]|0)+(((c[s+(a*28|0)+24>>2]|0)+r|0)*44|0)>>2]|0;if((k|0)==0){t=s}else{if((MD(k,b)|0)==0){f=0;q=23;break}t=c[7094533]|0}k=r+1|0;if((k|0)<(c[t+(a*28|0)+20>>2]|0)){r=k;s=t}else{f=1;q=23;break}}if((q|0)==23){i=d;return f|0}return 0}function ND(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=c[7094543]|0;c[b+(a<<4)>>2]=0;c[b+(a<<4)+4>>2]=0;d=c[7094530]|0;if((d|0)>1){e=1;do{do{if((c[(c[7094533]|0)+(e*28|0)+12>>2]|0)==(a|0)){if((ME(e)|0)==0){break}f=c[7094543]|0;g=f+(a<<4)|0;c[(c[7094533]|0)+(e*28|0)+16>>2]=c[g>>2];c[g>>2]=(c[g>>2]|0)+1;g=f+(a<<4)+4|0;c[g>>2]=(c[g>>2]|0)+1}}while(0);e=e+1|0;h=c[7094530]|0;}while((e|0)<(h|0));i=c[7094543]|0;j=h}else{i=b;j=d}d=i+(a<<4)+8|0;if((c[d>>2]|0)>0){b=i+(a<<4)+12|0;h=i+(a<<4)|0;i=0;do{e=c[(c[7094541]|0)+((c[b>>2]|0)+i<<2)>>2]|0;g=c[7094539]|0;do{if((ME(c[g+(e*20|0)>>2]|0)|0)!=0){f=(c[g+(e*20|0)+4>>2]|0)==(a|0);k=c[h>>2]|0;c[h>>2]=k+1;if(f){c[g+(e*20|0)+12>>2]=k;f=(c[7094543]|0)+(a<<4)+4|0;c[f>>2]=(c[f>>2]|0)+1;break}else{c[g+(e*20|0)+16>>2]=k;k=(c[7094543]|0)+(a<<4)+4|0;c[k>>2]=(c[k>>2]|0)+1;break}}}while(0);i=i+1|0;}while((i|0)<(c[d>>2]|0));l=c[7094530]|0}else{l=j}if((l|0)>1){l=1;do{do{if((c[(c[7094533]|0)+(l*28|0)+12>>2]|0)==(a|0)){if((ME(l)|0)!=0){break}j=(c[7094543]|0)+(a<<4)|0;c[(c[7094533]|0)+(l*28|0)+16>>2]=c[j>>2];c[j>>2]=(c[j>>2]|0)+1}}while(0);l=l+1|0;}while((l|0)<(c[7094530]|0))}l=c[7094543]|0;j=l+(a<<4)+8|0;if((c[j>>2]|0)<=0){return}d=l+(a<<4)+12|0;i=l+(a<<4)|0;l=0;do{h=c[(c[7094541]|0)+((c[d>>2]|0)+l<<2)>>2]|0;b=c[7094539]|0;do{if((ME(c[b+(h*20|0)>>2]|0)|0)==0){e=(c[b+(h*20|0)+4>>2]|0)==(a|0);g=c[i>>2]|0;c[i>>2]=g+1;if(e){c[b+(h*20|0)+12>>2]=g;break}else{c[b+(h*20|0)+16>>2]=g;break}}}while(0);l=l+1|0;}while((l|0)<(c[j>>2]|0));return}function OD(){var a=0,b=0,d=0,e=0,f=0,g=0,h=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=i;if((c[7094530]|0)<=1){b=1;i=a;return b|0}d=c[7094533]|0;e=1;do{c[d+(e*28|0)+12>>2]=0;e=e+1|0;f=c[7094530]|0;}while((e|0)<(f|0));if((f|0)>1){g=1;h=f}else{b=1;i=a;return b|0}a:while(1){f=c[7094533]|0;do{if((c[f+(g*28|0)+12>>2]|0)==0){if((c[2754]|0)!=0){if((c[f+(g*28|0)+20>>2]|0)==0){j=h;break}}if((c[f+(g*28|0)>>2]&8|0)!=0){j=h;break}e=c[7094542]|0;if((e|0)>65535){k=10;break a}d=c[7094543]|0;c[d+(e<<4)>>2]=0;c[d+(e<<4)+4>>2]=0;c[d+(e<<4)+12>>2]=c[7094540];c[d+(e<<4)+8>>2]=0;if((MD(g,c[7094542]|0)|0)==0){b=0;k=26;break a}e=c[7094542]|0;d=c[7094530]|0;if((d|0)>1){l=1;m=d;while(1){d=c[7094533]|0;b:do{if((c[d+(l*28|0)+12>>2]|0)==0){if((c[d+(l*28|0)>>2]&8|0)!=0){n=l;o=m;break}p=c[d+(l*28|0)+20>>2]|0;if((p|0)<=0){n=l;o=m;break}q=c[7094535]|0;r=c[d+(l*28|0)+24>>2]|0;s=0;while(1){t=c[q+((s+r|0)*44|0)>>2]|0;if((c[d+(t*28|0)>>2]&8|0)==0){if((c[d+(t*28|0)+12>>2]|0)!=0){break}}t=s+1|0;if((t|0)<(p|0)){s=t}else{n=l;o=m;break b}}if((MD(l,e)|0)==0){b=0;k=26;break a}n=0;o=c[7094530]|0}else{n=l;o=m}}while(0);d=n+1|0;if((d|0)<(o|0)){l=d;m=o}else{break}}u=c[7094542]|0}else{u=e}ND(u);c[7094542]=(c[7094542]|0)+1;j=c[7094530]|0}else{j=h}}while(0);f=g+1|0;if((f|0)<(j|0)){g=f;h=j}else{b=1;k=26;break}}if((k|0)==10){hE(108504,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;b=0;i=a;return b|0}else if((k|0)==26){i=a;return b|0}return 0}function PD(a,b,d,e){a=a|0;b=b|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;c[d+(e<<2)>>2]=1;f=a+(e<<2)|0;e=c[f>>2]|0;g=c[7094531]|0;h=g+(e*48|0)+4|0;i=c[h>>2]|0;if((i|0)<=0){return}j=g+(e*48|0)+8|0;if((b|0)>0){k=0;l=i}else{e=0;g=i;while(1){i=c[(c[7094529]|0)+((c[j>>2]|0)+e<<2)>>2]|0;do{if((c[(c[7094527]|0)+(((i|0)>-1?i:-i|0)*24|0)+4>>2]&1|0)!=0|(b|0)==0){m=g}else{if((c[d>>2]|0)!=0){m=g;break}PD(a,b,d,0);m=c[h>>2]|0}}while(0);i=e+1|0;if((i|0)<(m|0)){e=i;g=m}else{break}}return}while(1){m=c[(c[7094529]|0)+((c[j>>2]|0)+k<<2)>>2]|0;g=(m|0)>-1?m:-m|0;m=c[7094527]|0;do{if((c[m+(g*24|0)+4>>2]&1|0)==0){e=c[m+(g*24|0)+16>>2]|0;if((e|0)==(c[f>>2]|0)){n=c[m+(g*24|0)+20>>2]|0}else{n=e}e=0;while(1){i=e+1|0;if((c[a+(e<<2)>>2]|0)==(n|0)){o=e;break}if((i|0)<(b|0)){e=i}else{o=i;break}}if((o|0)==(b|0)){p=l;break}if((c[d+(o<<2)>>2]|0)!=0){p=l;break}PD(a,b,d,o);p=c[h>>2]|0}else{p=l}}while(0);g=k+1|0;if((g|0)<(p|0)){k=g;l=p}else{break}}return}function QD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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=i;f=b+1|0;c[a+(b<<2)>>2]=d;b=c[7094531]|0;g=c[(c[7094533]|0)+(d*28|0)+8>>2]|0;h=b+(d*48|0)+4|0;j=c[h>>2]|0;if((j|0)<=0){k=f;i=e;return k|0}l=b+(d*48|0)+8|0;b=~g;m=0;n=f;f=j;a:while(1){j=c[(c[7094529]|0)+((c[l>>2]|0)+m<<2)>>2]|0;o=(j|0)>-1?j:-j|0;j=c[7094527]|0;do{if((c[j+(o*24|0)+4>>2]&1|0)==0){p=c[j+(o*24|0)+16>>2]|0;if((p|0)==(d|0)){q=c[j+(o*24|0)+20>>2]|0}else{q=p}p=c[(c[7094533]|0)+(q*28|0)+8>>2]|0;if((g&~p|0)==0){r=n;s=f;break}if((p&b|0)!=0){r=n;s=f;break}b:do{if((n|0)>0){p=0;while(1){t=p+1|0;if((q|0)==(c[a+(p<<2)>>2]|0)){u=p;break b}if((t|0)<(n|0)){p=t}else{u=t;break}}}else{u=0}}while(0);if((u|0)!=(n|0)){r=n;s=f;break}if((n|0)>1023){break a}p=QD(a,n,q)|0;r=p;s=c[h>>2]|0}else{r=n;s=f}}while(0);o=m+1|0;if((o|0)<(s|0)){m=o;n=r;f=s}else{k=r;v=16;break}}if((v|0)==16){i=e;return k|0}hE(57232,(v=i,i=i+1|0,i=i+7&-8,c[v>>2]=0,v)|0);i=v;k=n;i=e;return k|0}function RD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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,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,_=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;b=i;i=i+32768|0;d=b|0;e=b+4096|0;f=b+8192|0;g=b+12288|0;h=b+16384|0;j=b+20480|0;k=b+24576|0;l=b+28672|0;m=f;n=g;o=c[7094533]|0;a:do{if((c[o+(a*28|0)>>2]&8|0)==0){if((c[o+(a*28|0)+4>>2]&1|0)==0){p=0;break}n$(m|0,0,4096)|0;n$(n|0,0,4096)|0;q=QD(e|0,0,a)|0;r=(q|0)>0;if(!r){n$(d|0,0,4096)|0;p=0;break}s=c[7094531]|0;t=c[7094529]|0;u=c[7094527]|0;v=c[7094533]|0;w=0;x=0;y=0;z=0;A=-1;B=-1;C=0;while(1){D=c[e+(C<<2)>>2]|0;E=c[s+(D*48|0)+4>>2]|0;if((E|0)>0){F=c[s+(D*48|0)+8>>2]|0;G=f+(C<<2)|0;H=g+(C<<2)|0;I=w;J=x;K=y;L=z;M=A;N=B;O=0;while(1){P=c[t+(F+O<<2)>>2]|0;Q=(P|0)>-1?P:-P|0;do{if((c[u+(Q*24|0)+4>>2]&1|0)==0){P=u+(Q*24|0)+16|0;R=u+(Q*24|0)+20|0;S=0;while(1){if((S|0)!=(C|0)){T=c[e+(S<<2)>>2]|0;if((c[P>>2]|0)==(T|0)){U=S;break}if((c[R>>2]|0)==(T|0)){U=S;break}}T=S+1|0;if((T|0)<(q|0)){S=T}else{U=T;break}}if((U|0)!=(q|0)){V=N;W=M;X=L;Y=K;Z=J;_=I;break}S=c[P>>2]|0;if((S|0)==(D|0)){$=c[R>>2]|0}else{$=S}if((c[v+($*28|0)>>2]&8|0)!=0){p=0;break a}S=c[u+(Q*24|0)>>2]&-2;if((M|0)<0|(S|0)==(M|0)){T=I+1|0;c[h+(I<<2)>>2]=Q;b:do{if((K|0)>0){aa=0;while(1){ba=aa+1|0;if((c[k+(aa<<2)>>2]|0)==($|0)){ca=aa;break b}if((ba|0)<(K|0)){aa=ba}else{ca=ba;break}}}else{ca=0}}while(0);if((ca|0)==(K|0)){c[k+(K<<2)>>2]=$;da=K+1|0}else{da=K}c[G>>2]=(c[G>>2]|0)+1;V=N;W=S;X=L;Y=da;Z=J;_=T;break}if(!((N|0)<0|(S|0)==(N|0))){p=0;break a}R=J+1|0;c[j+(J<<2)>>2]=Q;c:do{if((L|0)>0){P=0;while(1){aa=P+1|0;if((c[l+(P<<2)>>2]|0)==($|0)){ea=P;break c}if((aa|0)<(L|0)){P=aa}else{ea=aa;break}}}else{ea=0}}while(0);if((ea|0)==(L|0)){c[l+(L<<2)>>2]=$;fa=L+1|0}else{fa=L}c[H>>2]=(c[H>>2]|0)+1;V=S;W=M;X=fa;Y=K;Z=R;_=I}else{V=N;W=M;X=L;Y=K;Z=J;_=I}}while(0);Q=O+1|0;if((Q|0)<(E|0)){I=_;J=Z;K=Y;L=X;M=W;N=V;O=Q}else{ga=_;ha=Z;ia=Y;ja=X;ka=W;la=V;break}}}else{ga=w;ha=x;ia=y;ja=z;ka=A;la=B}O=C+1|0;if((O|0)<(q|0)){w=ga;x=ha;y=ia;z=ja;A=ka;B=la;C=O}else{break}}if(r){C=0;while(1){if((c[f+(C<<2)>>2]|0)==0){p=0;break a}B=C+1|0;if((c[g+(C<<2)>>2]|0)==0){p=0;break a}if((B|0)<(q|0)){C=B}else{break}}}C=d;n$(C|0,0,4096)|0;if((ia|0)<1){p=0;break}if((ia|0)!=1){PD(k|0,ia,d|0,0);B=0;while(1){A=B+1|0;if((c[d+(B<<2)>>2]|0)==0){p=0;break a}if((A|0)<(ia|0)){B=A}else{break}}}n$(C|0,0,4096)|0;if((ja|0)<1){p=0;break}if((ja|0)!=1){PD(l|0,ja,d|0,0);B=0;while(1){A=B+1|0;if((c[d+(B<<2)>>2]|0)==0){p=0;break a}if((A|0)<(ja|0)){B=A}else{break}}}d:do{if((ga|0)>0){B=c[7094527]|0;C=c[7094525]|0;A=(ha|0)>0;z=0;while(1){y=c[h+(z<<2)>>2]|0;x=c[B+(y*24|0)+8>>2]|0;e:do{if((x|0)>0){w=c[B+(y*24|0)+12>>2]|0;if(A){ma=0}else{u=0;while(1){v=u+1|0;if((ha|0)!=0){na=u;break e}if((v|0)<(x|0)){u=v}else{na=v;break e}}}while(1){u=c[C+(w+ma<<2)>>2]|0;R=(u|0)>-1?u:-u|0;u=0;while(1){S=c[j+(u<<2)>>2]|0;v=c[B+(S*24|0)+8>>2]|0;f:do{if((v|0)>0){t=c[B+(S*24|0)+12>>2]|0;s=0;while(1){O=c[C+(t+s<<2)>>2]|0;N=s+1|0;if((R|0)==(((O|0)>-1?O:-O|0)|0)){oa=s;break f}if((N|0)<(v|0)){s=N}else{oa=N;break}}}else{oa=0}}while(0);S=u+1|0;if((oa|0)!=(v|0)){pa=u;break}if((S|0)<(ha|0)){u=S}else{pa=S;break}}u=ma+1|0;if((pa|0)!=(ha|0)){na=ma;break e}if((u|0)<(x|0)){ma=u}else{na=u;break}}}else{na=0}}while(0);y=z+1|0;if((na|0)!=(x|0)){qa=z;break d}if((y|0)<(ga|0)){z=y}else{qa=y;break}}}else{qa=0}}while(0);z=(qa|0)!=(ga|0);if(z|r^1){p=z?0:q;break}else{ra=0}while(1){z=c[e+(ra<<2)>>2]|0;C=(c[7094533]|0)+(z*28|0)|0;c[C>>2]=c[C>>2]|40;YJ(50736,(C=i,i=i+8|0,c[C>>2]=z,C)|0);i=C;C=ra+1|0;if((C|0)<(q|0)){ra=C}else{p=q;break}}}else{p=0}}while(0);i=b;return p|0}function SD(){var a=0,b=0,d=0,e=0,f=0,g=0,h=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;a=i;if((c[7094478]|0)==0){i=a;return}do{if((c[7094542]|0)>0){if((~~+RJ(169688)|0)!=0){break}if((~~+RJ(166344)|0)!=0){break}i=a;return}}while(0);b=c[7094530]|0;a:do{if((b|0)>1){d=c[7094533]|0;e=1;f=b;while(1){g=d+(e*28|0)|0;h=c[g>>2]|0;if((h&512|0)==0){j=f}else{c[g>>2]=h|8;j=c[7094530]|0}h=e+1|0;if((h|0)<(j|0)){e=h;f=j}else{break}}if((j|0)>1){k=0;l=1;m=j;n=d}else{o=0;break}while(1){if((c[n+(l*28|0)>>2]&8|0)==0){p=k;q=m}else{YJ(176296,(r=i,i=i+8|0,c[r>>2]=l,r)|0);i=r;p=k+1|0;q=c[7094530]|0}f=l+1|0;if((f|0)>=(q|0)){o=p;break a}k=p;l=f;m=q;n=c[7094533]|0}}else{o=0}}while(0);Tk[c[7092490]&255](1,172832,(r=i,i=i+8|0,c[r>>2]=o,r)|0);i=r;do{if((c[7094530]|0)>1){o=c[7094533]|0;n=1;do{c[o+(n*28|0)+12>>2]=0;n=n+1|0;s=c[7094530]|0;}while((n|0)<(s|0));if((s|0)>1){t=1;u=0}else{v=0;break}while(1){n=(RD(t)|0)+u|0;o=t+1|0;if((o|0)<(c[7094530]|0)){t=o;u=n}else{v=n;break}}}else{v=0}}while(0);Tk[c[7092490]&255](1,45704,(r=i,i=i+8|0,c[r>>2]=v,r)|0);i=r;v=c[7094530]|0;if((v|0)>1){u=c[7094533]|0;t=1;s=v;while(1){v=u+(t*28|0)|0;n=c[v>>2]|0;if((n&8|0)==0){w=s}else{c[v>>2]=n|512;w=c[7094530]|0}n=t+1|0;if((n|0)<(w|0)){t=n;s=w}else{break}}}w=c[7094539]|0;if((w|0)!=0){bK(w)}c[7094539]=_J(1310720)|0;w=c[7094541]|0;if((w|0)!=0){bK(w)}c[7094541]=_J(262144)|0;w=c[7094543]|0;if((w|0)!=0){bK(w)}c[7094543]=_J(1048576)|0;Tk[c[7092490]&255](1,163128,(r=i,i=i+8|0,c[r>>2]=0,r)|0);i=r;w=0;b:while(1){Tk[c[7092490]&255](1,160376,(r=i,i=i+8|0,c[r>>2]=w,r)|0);i=r;c[7094538]=1;c[7094540]=0;c[7094542]=1;s=c[7094530]|0;c:do{if((s|0)>1){t=c[7094533]|0;u=c[7094539]|0;n=1;v=s;o=1;while(1){if((c[t+(n*28|0)>>2]&8|0)==0){x=v;y=o}else{if((o|0)>65535){break}c[u+(o*20|0)>>2]=n;c[u+(o*20|0)+4>>2]=0;c[u+(o*20|0)+8>>2]=0;q=(c[7094538]|0)+1|0;c[7094538]=q;x=c[7094530]|0;y=q}q=n+1|0;if((q|0)<(x|0)){n=q;v=x;o=y}else{break c}}hE(99192,(r=i,i=i+1|0,i=i+7&-8,c[r>>2]=0,r)|0);i=r}}while(0);s=w+1|0;if((OD()|0)==0){w=s;continue}o=c[7094538]|0;if((o|0)<=1){break}v=c[7094539]|0;n=1;while(1){z=v+(n*20|0)|0;if((c[v+(n*20|0)+4>>2]|0)==0){A=44;break}u=n+1|0;if((c[v+(n*20|0)+8>>2]|0)==0){A=46;break}if((u|0)<(o|0)){n=u}else{break b}}if((A|0)==44){A=0;n=z|0;o=(c[7094533]|0)+((c[n>>2]|0)*28|0)|0;c[o>>2]=c[o>>2]&-9;YJ(184816,(r=i,i=i+8|0,c[r>>2]=c[n>>2],r)|0);i=r;w=s;continue}else if((A|0)==46){A=0;n=z|0;o=(c[7094533]|0)+((c[n>>2]|0)*28|0)|0;c[o>>2]=c[o>>2]&-9;YJ(180984,(r=i,i=i+8|0,c[r>>2]=c[n>>2],r)|0);i=r;w=s;continue}}Tk[c[7092490]&255](1,157704,(r=i,i=i+1|0,i=i+7&-8,c[r>>2]=0,r)|0);i=r;c[7094480]=1;w=c[7094538]|0;if((w|0)>1){z=1;while(1){A=c[(c[7094539]|0)+(z*20|0)>>2]|0;YJ(155176,(r=i,i=i+16|0,c[r>>2]=z,c[r+8>>2]=A,r)|0);i=r;A=z+1|0;y=c[7094538]|0;if((A|0)<(y|0)){z=A}else{B=y;break}}}else{B=w}Tk[c[7092490]&255](1,153216,(r=i,i=i+8|0,c[r>>2]=B,r)|0);i=r;Tk[c[7092490]&255](1,151208,(r=i,i=i+8|0,c[r>>2]=c[7094542],r)|0);i=r;B=c[7094542]|0;if((B|0)>1){w=1;while(1){z=c[(c[7094543]|0)+(w<<4)+4>>2]|0;Tk[c[7092490]&255](1,148944,(r=i,i=i+16|0,c[r>>2]=w,c[r+8>>2]=z,r)|0);i=r;z=w+1|0;y=c[7094542]|0;if((z|0)<(y|0)){w=z}else{C=y;break}}}else{C=B}if((C|0)>0){B=c[7094543]|0;w=0;y=0;z=0;while(1){A=c[B+(w<<4)+4>>2]|0;x=A+z|0;n=(da(A,A)|0)+y|0;A=w+1|0;if((A|0)<(C|0)){w=A;y=n;z=x}else{D=n;E=x;break}}}else{D=0;E=0}z=(da(c[7094538]|0,E)|0)+D|0;Tk[c[7092490]&255](1,146384,(r=i,i=i+8|0,c[r>>2]=E,r)|0);i=r;Tk[c[7092490]&255](1,144016,(r=i,i=i+8|0,c[r>>2]=z*3|0,r)|0);i=r;i=a;return}function TD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=0;while(1){f=21552120+(e<<2)|0;g=c[f>>2]|0;if((g|0)==0){h=4;break}i=e+1|0;if((c[21548024+(e<<2)>>2]|0)==0){j=g;break}if((i|0)<1024){e=i}else{h=7;break}}if((h|0)==4){i=Ok[c[7092507]&63]()|0;c[f>>2]=i;c[21548024+(e<<2)>>2]=0;c[4938820]=(c[4938820]|0)+1;j=i}else if((h|0)==7){return}Yk[c[7092509]&255](j,a,b,d);c[21548024+(e<<2)>>2]=1;return}function UD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Ok[c[7092507]&63]()|0;Yk[c[7092509]&255](e,a,b,d);return}function VD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0,D=0.0;d=i;i=i+32|0;e=d|0;f=d+16|0;if((c[7094478]|0)==0){Tk[c[7092490]&255](1,133704,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=3;i=d;return j|0}h=c[7094552]|0;if((b|0)==0){k=h+(a*148|0)+140|0;cG(c[k>>2]|0);l=h+(a*148|0)+144|0;BD(c[l>>2]|0);c[k>>2]=0;c[l>>2]=0;j=0;i=d;return j|0}m=+mE();l=h+(a*148|0)+12|0;g[h+(a*148|0)+16>>2]=m- +g[l>>2];c[h+(a*148|0)+4>>2]=c[b>>2];c[h+(a*148|0)+8>>2]=c[b+4>>2];g[l>>2]=+mE();l=h+(a*148|0)+24|0;m=+g[l>>2];g[h+(a*148|0)+60>>2]=m;k=h+(a*148|0)+28|0;g[h+(a*148|0)+64>>2]=+g[k>>2];n=h+(a*148|0)+32|0;g[h+(a*148|0)+68>>2]=+g[n>>2];g[h+(a*148|0)+48>>2]=+g[b+32>>2];g[h+(a*148|0)+52>>2]=+g[b+36>>2];g[h+(a*148|0)+56>>2]=+g[b+40>>2];o=c[b+72>>2]|0;c[h+(a*148|0)+100>>2]=o;c[h+(a*148|0)+96>>2]=c[b+68>>2];p=c[b+76>>2]|0;c[h+(a*148|0)+104>>2]=p;c[h+(a*148|0)+108>>2]=c[b+80>>2];c[h+(a*148|0)+112>>2]=c[b+84>>2];c[h+(a*148|0)+116>>2]=c[b+88>>2];c[h+(a*148|0)+120>>2]=c[b+92>>2];c[h+(a*148|0)+124>>2]=c[b+96>>2];c[h+(a*148|0)+128>>2]=c[b+100>>2];c[h+(a*148|0)+132>>2]=c[b+104>>2];c[h+(a*148|0)+136>>2]=c[b+108>>2];c[h+(a*148|0)+20>>2]=a;c[h+(a*148|0)>>2]=1;q=(c[7094483]|0)==1|0;if((o|0)==3){r=h+(a*148|0)+36|0;s=+g[b+20>>2];t=b+24|0;do{if(s!=+g[r>>2]){u=h+(a*148|0)+40|0;v=10}else{w=h+(a*148|0)+40|0;if(+g[t>>2]!=+g[w>>2]){u=w;v=10;break}if(+g[b+28>>2]!=+g[h+(a*148|0)+44>>2]){u=w;v=10}else{x=q}}}while(0);if((v|0)==10){g[r>>2]=s;g[u>>2]=+g[t>>2];g[h+(a*148|0)+44>>2]=+g[b+28>>2];x=1}AD(p,r,h+(a*148|0)+72|0,h+(a*148|0)+84|0,0);y=x;z=+g[l>>2]}else if((o|0)==2){o=h+(a*148|0)+72|0;s=+g[b+44>>2];x=b+48|0;do{if(s!=+g[o>>2]){A=h+(a*148|0)+76|0;v=19}else{r=h+(a*148|0)+76|0;if(+g[x>>2]!=+g[r>>2]){A=r;v=19;break}if(+g[b+52>>2]!=+g[h+(a*148|0)+80>>2]){A=r;v=19;break}if(+g[b+56>>2]!=+g[h+(a*148|0)+84>>2]){A=r;v=19;break}if(+g[b+60>>2]!=+g[h+(a*148|0)+88>>2]){A=r;v=19;break}if(+g[b+64>>2]!=+g[h+(a*148|0)+92>>2]){A=r;v=19}else{B=q}}}while(0);if((v|0)==19){g[o>>2]=s;g[A>>2]=+g[x>>2];g[h+(a*148|0)+80>>2]=+g[b+52>>2];g[h+(a*148|0)+84>>2]=+g[b+56>>2];g[h+(a*148|0)+88>>2]=+g[b+60>>2];g[h+(a*148|0)+92>>2]=+g[b+64>>2];B=1}g[h+(a*148|0)+36>>2]=+g[b+20>>2];g[h+(a*148|0)+40>>2]=+g[b+24>>2];g[h+(a*148|0)+44>>2]=+g[b+28>>2];y=B;z=m}else{y=q;z=m}m=+g[b+8>>2];q=b+12|0;do{if(m!=z){v=24}else{if(+g[q>>2]!=+g[k>>2]){v=24;break}if(+g[b+16>>2]!=+g[n>>2]){v=24}else{C=y;D=z}}}while(0);if((v|0)==24){g[l>>2]=m;g[k>>2]=+g[q>>2];g[n>>2]=+g[b+16>>2];C=1;D=m}if((C|0)==0|(a|0)==1022){j=0;i=d;return j|0}C=e|0;g[C>>2]=+g[h+(a*148|0)+72>>2]+D;g[e+4>>2]=+g[h+(a*148|0)+76>>2]+ +g[k>>2];g[e+8>>2]=+g[h+(a*148|0)+80>>2]+ +g[n>>2];e=f|0;g[e>>2]=+g[h+(a*148|0)+84>>2]+ +g[l>>2];g[f+4>>2]=+g[h+(a*148|0)+88>>2]+ +g[k>>2];g[f+8>>2]=+g[h+(a*148|0)+92>>2]+ +g[n>>2];n=h+(a*148|0)+140|0;cG(c[n>>2]|0);c[n>>2]=eG(C,e,a,2)|0;n=h+(a*148|0)+144|0;BD(c[n>>2]|0);c[n>>2]=CD(C,e,a,0)|0;j=0;i=d;return j|0}function WD(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if((c[7094479]|0)==0){Tk[c[7092490]&255](4,173992,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;n$(b|0,0,140)|0;i=d;return}if((a|0)>-1&(c[7094550]|0)>(a|0)){m$(b|0,(c[7094552]|0)+(a*148|0)|0,140)|0;i=d;return}else{Tk[c[7092490]&255](4,147408,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;n$(b|0,0,140)|0;i=d;return}}function XD(a){a=a|0;var b=0,d=0,e=0;b=i;if((a|0)>-1&(c[7094550]|0)>(a|0)){d=c[(c[7094552]|0)+(a*148|0)+104>>2]|0;i=b;return d|0}else{Tk[c[7092490]&255](4,119208,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;d=0;i=b;return d|0}return 0}function YD(a){a=a|0;var b=0,d=0,e=0;b=i;if((c[7094479]|0)==0){d=0;i=b;return d|0}if((a|0)>-1&(c[7094550]|0)>(a|0)){d=c[(c[7094552]|0)+(a*148|0)+4>>2]|0;i=b;return d|0}else{Tk[c[7092490]&255](4,108464,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;d=0;i=b;return d|0}return 0}function ZD(a){a=a|0;var b=0,d=0,e=0;b=i;if((c[7094479]|0)==0){d=0;i=b;return d|0}if((a|0)>-1&(c[7094550]|0)>(a|0)){d=c[(c[7094552]|0)+(a*148|0)+104>>2]|0;i=b;return d|0}else{Tk[c[7092490]&255](4,99144,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;d=0;i=b;return d|0}return 0}function _D(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[7094550]|0;if((d|0)<=0){e=0;return e|0}f=c[7094552]|0;h=0;while(1){if((c[f+(h*148|0)+4>>2]|0)==4){if((c[f+(h*148|0)+104>>2]|0)==(a|0)){break}}i=h+1|0;if((i|0)<(d|0)){h=i}else{e=0;j=7;break}}if((j|0)==7){return e|0}g[b>>2]=+g[f+(h*148|0)+24>>2];g[b+4>>2]=+g[f+(h*148|0)+28>>2];g[b+8>>2]=+g[f+(h*148|0)+32>>2];e=1;return e|0}function $D(){var a=0,b=0;a=c[7094550]|0;if((a|0)>0){b=0}else{return}do{c[(c[7094552]|0)+(b*148|0)+140>>2]=0;c[(c[7094552]|0)+(b*148|0)+144>>2]=0;b=b+1|0;}while((b|0)<(a|0));return}function aE(){var a=0,b=0;if((c[7094550]|0)<=0){return}a=c[7094552]|0;b=0;do{c[a+(b*148|0)>>2]=0;c[a+(b*148|0)+20>>2]=b;b=b+1|0;}while((b|0)<(c[7094550]|0));return}function bE(){var a=0,b=0,d=0,e=0,f=0;a=c[7094550]|0;if((a|0)>0){b=0;d=a}else{return}while(1){a=c[7094552]|0;if((c[a+(b*148|0)>>2]|0)==0){e=a+(b*148|0)+140|0;cG(c[e>>2]|0);c[e>>2]=0;e=a+(b*148|0)+144|0;BD(c[e>>2]|0);c[e>>2]=0;f=c[7094550]|0}else{f=d}e=b+1|0;if((e|0)<(f|0)){b=e;d=f}else{break}}return}function cE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[7094478]|0)==0){b=0;return b|0}d=c[7094550]|0;e=c[7094552]|0;f=(a|0)>-1?a:-1;while(1){a=f+1|0;if((a|0)>=(d|0)){b=0;g=5;break}if((c[e+(a*148|0)>>2]|0)==0){f=a}else{b=a;g=5;break}}if((g|0)==5){return b|0}return 0}function dE(){var a=0;c[7094516]=0;a=c[7094517]|0;if((a|0)!=0){bK(a)}c[7094517]=0;c[7094518]=0;a=c[7094519]|0;if((a|0)!=0){bK(a)}c[7094519]=0;c[7094520]=0;a=c[7094521]|0;if((a|0)!=0){bK(a)}c[7094521]=0;c[7094522]=0;a=c[7094523]|0;if((a|0)!=0){bK(a)}c[7094523]=0;c[7094524]=0;a=c[7094525]|0;if((a|0)!=0){bK(a)}c[7094525]=0;c[7094526]=0;a=c[7094527]|0;if((a|0)!=0){bK(a)}c[7094527]=0;c[7094528]=0;a=c[7094529]|0;if((a|0)!=0){bK(a)}c[7094529]=0;c[7094530]=0;a=c[7094531]|0;if((a|0)!=0){bK(a)}c[7094531]=0;c[7094532]=0;a=c[7094533]|0;if((a|0)!=0){bK(a)}c[7094533]=0;c[7094534]=0;a=c[7094535]|0;if((a|0)!=0){bK(a)}c[7094535]=0;c[7094536]=0;a=c[7094537]|0;if((a|0)!=0){bK(a)}c[7094537]=0;c[7094538]=0;a=c[7094539]|0;if((a|0)!=0){bK(a)}c[7094539]=0;c[7094538]=0;a=c[7094541]|0;if((a|0)!=0){bK(a)}c[7094541]=0;c[7094540]=0;a=c[7094543]|0;if((a|0)==0){c[7094543]=0;c[7094542]=0;c[7094478]=0;c[7094479]=0;c[7094480]=0;return}bK(a);c[7094543]=0;c[7094542]=0;c[7094478]=0;c[7094479]=0;c[7094480]=0;return}function eE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;if((d|0)==0){h=aK(f+1|0)|0;i=g;return h|0}do{if((c[e>>2]|0)==(b|0)){j=aK(d+1|0)|0}else{Tk[c[7092490]&255](2,133560,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;if((rk[c[7092506]&63](a,b,2)|0)==0){j=aK(d+1|0)|0;break}hE(173936,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;dE();vk[c[7092505]&511](a);h=0;i=g;return h|0}}while(0);rk[c[7092503]&63](j,d,a)|0;c[e>>2]=(c[e>>2]|0)+d;h=j;i=g;return h|0}function fE(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;i=i+144|0;f=e|0;g=e+8|0;h=e+136|0;Tk[c[7092490]&255](1,147360,(j=i,i=i+8|0,c[j>>2]=b,j)|0);i=j;dE();rk[c[7092502]&63](b,f,0)|0;k=c[f>>2]|0;if((k|0)==0){hE(129680,(j=i,i=i+8|0,c[j>>2]=b,j)|0);i=j;l=4;m=124;n=0;i=e;return l|0}rk[c[7092503]&63](g,124,k)|0;c[h>>2]=124;if((c[g>>2]|0)!=1396785477){hE(119184,(j=i,i=i+8|0,c[j>>2]=b,j)|0);i=j;vk[c[7092505]&511](c[f>>2]|0);l=5;m=124;n=0;i=e;return l|0}k=c[g+4>>2]|0;if(!((k-4|0)>>>0<2>>>0)){hE(108424,(j=i,i=i+24|0,c[j>>2]=b,c[j+8>>2]=k,c[j+16>>2]=5,j)|0);i=j;vk[c[7092505]&511](c[f>>2]|0);l=6;m=124;n=0;i=e;return l|0}o=g+8|0;if((k|0)==5){k=o;p=0;do{q=k+p|0;a[q]=(d[q]|0)^(p*119|0);p=p+1|0;}while((p|0)<116)}p=oj(QJ(99128)|0)|0;c[7094481]=p;if((c[o>>2]|0)!=(p|0)){hE(57200,(j=i,i=i+8|0,c[j>>2]=b,j)|0);i=j;vk[c[7092505]&511](c[f>>2]|0);l=6;m=124;n=0;i=e;return l|0}j=c[g+16>>2]|0;b=eE(c[f>>2]|0,c[g+12>>2]|0,j,h,32)|0;c[7094517]=b;p=j>>>5;c[7094516]=p;if(!((p|0)==0|(b|0)!=0)){l=7;m=124;n=0;i=e;return l|0}b=c[g+24>>2]|0;p=eE(c[f>>2]|0,c[g+20>>2]|0,b,h,12)|0;c[7094519]=p;c[7094518]=(b>>>0)/12|0;if(!(b>>>0<12>>>0|(p|0)!=0)){l=7;m=124;n=0;i=e;return l|0}p=c[g+32>>2]|0;b=eE(c[f>>2]|0,c[g+28>>2]|0,p,h,20)|0;c[7094521]=b;c[7094520]=(p>>>0)/20|0;if(!(p>>>0<20>>>0|(b|0)!=0)){l=7;m=124;n=0;i=e;return l|0}b=c[g+40>>2]|0;p=eE(c[f>>2]|0,c[g+36>>2]|0,b,h,8)|0;c[7094523]=p;j=b>>>3;c[7094522]=j;if(!((j|0)==0|(p|0)!=0)){l=7;m=124;n=0;i=e;return l|0}p=c[g+48>>2]|0;j=eE(c[f>>2]|0,c[g+44>>2]|0,p,h,4)|0;c[7094525]=j;b=p>>>2;c[7094524]=b;if(!((b|0)==0|(j|0)!=0)){l=7;m=124;n=0;i=e;return l|0}j=c[g+56>>2]|0;b=eE(c[f>>2]|0,c[g+52>>2]|0,j,h,24)|0;c[7094527]=b;c[7094526]=(j>>>0)/24|0;if(!(j>>>0<24>>>0|(b|0)!=0)){l=7;m=124;n=0;i=e;return l|0}b=c[g+64>>2]|0;j=eE(c[f>>2]|0,c[g+60>>2]|0,b,h,4)|0;c[7094529]=j;p=b>>>2;c[7094528]=p;if(!((p|0)==0|(j|0)!=0)){l=7;m=124;n=0;i=e;return l|0}j=c[g+72>>2]|0;p=eE(c[f>>2]|0,c[g+68>>2]|0,j,h,48)|0;c[7094531]=p;c[7094530]=(j>>>0)/48|0;if(!(j>>>0<48>>>0|(p|0)!=0)){l=7;m=124;n=0;i=e;return l|0}p=c[g+80>>2]|0;j=eE(c[f>>2]|0,c[g+76>>2]|0,p,h,28)|0;c[7094533]=j;c[7094532]=(p>>>0)/28|0;if(!(p>>>0<28>>>0|(j|0)!=0)){l=7;m=124;n=0;i=e;return l|0}j=c[g+88>>2]|0;p=eE(c[f>>2]|0,c[g+84>>2]|0,j,h,44)|0;c[7094535]=p;c[7094534]=(j>>>0)/44|0;if(!(j>>>0<44>>>0|(p|0)!=0)){l=7;m=124;n=0;i=e;return l|0}p=c[g+96>>2]|0;j=eE(c[f>>2]|0,c[g+92>>2]|0,p,h,12)|0;c[7094537]=j;c[7094536]=(p>>>0)/12|0;if(!(p>>>0<12>>>0|(j|0)!=0)){l=7;m=124;n=0;i=e;return l|0}j=c[g+104>>2]|0;p=eE(c[f>>2]|0,c[g+100>>2]|0,j,h,20)|0;c[7094539]=p;c[7094538]=(j>>>0)/20|0;if(!(j>>>0<20>>>0|(p|0)!=0)){l=7;m=124;n=0;i=e;return l|0}p=c[g+112>>2]|0;j=eE(c[f>>2]|0,c[g+108>>2]|0,p,h,4)|0;c[7094541]=j;b=p>>>2;c[7094540]=b;if(!((b|0)==0|(j|0)!=0)){l=7;m=124;n=0;i=e;return l|0}j=c[g+120>>2]|0;b=eE(c[f>>2]|0,c[g+116>>2]|0,j,h,16)|0;c[7094543]=b;h=j>>>4;c[7094542]=h;if(!((h|0)==0|(b|0)!=0)){l=7;m=124;n=0;i=e;return l|0}c[7094478]=1;vk[c[7092505]&511](c[f>>2]|0);l=0;m=124;n=0;i=e;return l|0}function gE(b){b=b|0;var e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;e=i;i=i+136|0;f=e|0;g=e+128|0;h=f;Tk[c[7092490]&255](1,50720,(j=i,i=i+8|0,c[j>>2]=b,j)|0);i=j;n$(h|0,0,124)|0;c[f>>2]=1396785477;c[f+4>>2]=5;k=f+8|0;c[k>>2]=c[7094481];rk[c[7092502]&63](b,g,1)|0;l=c[g>>2]|0;if((l|0)==0){Tk[c[7092490]&255](3,45680,(j=i,i=i+8|0,c[j>>2]=b,j)|0);i=j;m=0;n=124;o=0;i=e;return m|0}rk[c[7092504]&63](h,124,l)|0;c[7586198]=124;l=c[g>>2]|0;j=c[7094517]|0;b=c[7094516]<<5;c[f+12>>2]=124;c[f+16>>2]=b;if((b|0)>0){rk[c[7092504]&63](j,b,l)|0;p=c[7586198]|0;q=c[g>>2]|0}else{p=124;q=l}l=p+b|0;c[7586198]=l;b=c[7094519]|0;p=(c[7094518]|0)*12|0;c[f+20>>2]=l;c[f+24>>2]=p;if((p|0)>0){rk[c[7092504]&63](b,p,q)|0;r=c[7586198]|0;s=c[g>>2]|0}else{r=l;s=q}q=r+p|0;c[7586198]=q;p=c[7094521]|0;r=(c[7094520]|0)*20|0;c[f+28>>2]=q;c[f+32>>2]=r;if((r|0)>0){rk[c[7092504]&63](p,r,s)|0;t=c[7586198]|0;u=c[g>>2]|0}else{t=q;u=s}s=t+r|0;c[7586198]=s;r=c[7094523]|0;t=c[7094522]<<3;c[f+36>>2]=s;c[f+40>>2]=t;if((t|0)>0){rk[c[7092504]&63](r,t,u)|0;v=c[7586198]|0;w=c[g>>2]|0}else{v=s;w=u}u=v+t|0;c[7586198]=u;t=c[7094525]|0;v=c[7094524]<<2;c[f+44>>2]=u;c[f+48>>2]=v;if((v|0)>0){rk[c[7092504]&63](t,v,w)|0;x=c[7586198]|0;y=c[g>>2]|0}else{x=u;y=w}w=x+v|0;c[7586198]=w;v=c[7094527]|0;x=(c[7094526]|0)*24|0;c[f+52>>2]=w;c[f+56>>2]=x;if((x|0)>0){rk[c[7092504]&63](v,x,y)|0;z=c[7586198]|0;A=c[g>>2]|0}else{z=w;A=y}y=z+x|0;c[7586198]=y;x=c[7094529]|0;z=c[7094528]<<2;c[f+60>>2]=y;c[f+64>>2]=z;if((z|0)>0){rk[c[7092504]&63](x,z,A)|0;B=c[7586198]|0;C=c[g>>2]|0}else{B=y;C=A}A=B+z|0;c[7586198]=A;z=c[7094531]|0;B=(c[7094530]|0)*48|0;c[f+68>>2]=A;c[f+72>>2]=B;if((B|0)>0){rk[c[7092504]&63](z,B,C)|0;D=c[7586198]|0;E=c[g>>2]|0}else{D=A;E=C}C=D+B|0;c[7586198]=C;B=c[7094533]|0;D=(c[7094532]|0)*28|0;c[f+76>>2]=C;c[f+80>>2]=D;if((D|0)>0){rk[c[7092504]&63](B,D,E)|0;F=c[7586198]|0;G=c[g>>2]|0}else{F=C;G=E}E=F+D|0;c[7586198]=E;D=c[7094535]|0;F=(c[7094534]|0)*44|0;c[f+84>>2]=E;c[f+88>>2]=F;if((F|0)>0){rk[c[7092504]&63](D,F,G)|0;H=c[7586198]|0;I=c[g>>2]|0}else{H=E;I=G}G=H+F|0;c[7586198]=G;F=c[7094537]|0;H=(c[7094536]|0)*12|0;c[f+92>>2]=G;c[f+96>>2]=H;if((H|0)>0){rk[c[7092504]&63](F,H,I)|0;J=c[7586198]|0;K=c[g>>2]|0}else{J=G;K=I}I=J+H|0;c[7586198]=I;H=c[7094539]|0;J=(c[7094538]|0)*20|0;c[f+100>>2]=I;c[f+104>>2]=J;if((J|0)>0){rk[c[7092504]&63](H,J,K)|0;L=c[7586198]|0;M=c[g>>2]|0}else{L=I;M=K}K=L+J|0;c[7586198]=K;J=c[7094541]|0;L=c[7094540]<<2;c[f+108>>2]=K;c[f+112>>2]=L;if((L|0)>0){rk[c[7092504]&63](J,L,M)|0;N=c[7586198]|0;O=c[g>>2]|0}else{N=K;O=M}M=N+L|0;c[7586198]=M;L=c[7094543]|0;N=c[7094542]<<4;c[f+116>>2]=M;c[f+120>>2]=N;if((N|0)>0){rk[c[7092504]&63](L,N,O)|0;P=c[7586198]|0;Q=c[g>>2]|0}else{P=M;Q=O}c[7586198]=P+N;rk[c[7092506]&63](Q,0,2)|0;Q=k;k=0;do{N=Q+k|0;a[N]=(d[N]|0)^(k*119|0);k=k+1|0;}while((k|0)<116);rk[c[7092504]&63](h,124,c[g>>2]|0)|0;vk[c[7092505]&511](c[g>>2]|0);m=1;n=124;o=0;i=e;return m|0}function hE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+1040|0;e=d+1024|0;f=d|0;g=e;c[g>>2]=b;c[g+4>>2]=0;Xe(f|0,1024,a|0,e|0)|0;Tk[c[7092490]&255](4,133400,(e=i,i=i+8|0,c[e>>2]=f,e)|0);i=e;i=d;return}function iE(){return c[7094478]|0}function jE(){return c[7094479]|0}function kE(a){a=+a;var b=0,d=0,e=0,f=0,g=0;b=i;if((c[7094478]|0)==0|(c[7094479]|0)!=0){i=b;return}if((iF(a)|0)!=0){i=b;return}SD();if((c[7094480]|0)==0){if((~~+RJ(147288)|0)!=0){d=5}}else{d=5}do{if((d|0)==5){if((~~+UJ(129664,119136)|0)!=0){IE()}e=(gE(28377936)|0)==0;f=c[7092490]|0;if(e){Tk[f&255](3,99104,(g=i,i=i+8|0,c[g>>2]=28377936,g)|0);i=g;break}else{Tk[f&255](1,108392,(g=i,i=i+8|0,c[g>>2]=28377936,g)|0);i=g;break}}}while(0);CF();c[7094479]=1;Tk[c[7092490]&255](1,173896,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;i=b;return}function lE(a){a=+a;var b=0,d=0;g[7094482]=a;bE();aE();kE(a);c[7094588]=0;do{if((c[7092714]|0)!=0){if(+RJ(57176)!=0.0){kF();VJ(57176,119136)}if(+RJ(50704)!=0.0){dK();VJ(50704,119136)}if(!(+RJ(45664)!=0.0)){break}eK();VJ(45664,119136)}}while(0);if(!(+g[(c[553e3]|0)+16>>2]!=0.0)){b=c[7094483]|0;d=b+1|0;c[7094483]=d;return 0}zF();VJ(184792,119136);b=c[7094483]|0;d=b+1|0;c[7094483]=d;return 0}function mE(){return+(+g[7094482])}function nE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0.0;e=i;i=i+16|0;f=e|0;h=+g[b>>2];j=+g[a>>2]-h;k=b+4|0;l=+g[k>>2];m=+g[a+4>>2]-l;n=b+8|0;o=+g[n>>2];p=+g[a+8>>2]-o;a=f|0;g[a>>2]=+g[c>>2]-h;q=f+4|0;g[q>>2]=+g[c+4>>2]-l;r=f+8|0;g[r>>2]=+g[c+8>>2]-o;+wB(a);o=+g[a>>2];l=+g[q>>2];h=+g[r>>2];s=j*o+m*l+p*h;g[d>>2]=+g[b>>2]+o*s;g[d+4>>2]=+g[k>>2]+l*s;g[d+8>>2]=+g[n>>2]+h*s;i=e;return}function oE(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+64|0;if((a|0)==0){d=0;i=b;return d|0}c[7094479]=0;DF();e=b|0;r$(28378e3,a|0)|0;$D();KD()|0;$B(e,64,180968,(f=i,i=i+8|0,c[f>>2]=a,f)|0)|0;i=f;a=fE(e)|0;if((a|0)==0){Tk[c[7092490]&255](1,176280,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;q$(28377936,e|0,64)|0;sE();SF();UF();jF();PF();d=0;i=b;return d|0}else{c[7094478]=0;d=a;i=b;return d|0}return 0}function pE(){var a=0;c[7094551]=~~+UJ(172816,169680);c[7094550]=~~+UJ(166328,163120);c[553e3]=SJ(184792,119136)|0;a=c[7094552]|0;if((a|0)!=0){bK(a)}c[7094552]=aK((c[7094550]|0)*148|0)|0;aE();c[7094483]=0;return 0}function qE(){var a=0,b=0;a=i;QF();JD();DF();TF();VF();dE();b=c[7094552]|0;if((b|0)!=0){bK(b)}n$(28377912,0,480)|0;Tk[c[7092490]&255](1,160360,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}function rE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;e=i;i=i+104|0;f=e|0;h=e+16|0;j=f|0;g[j>>2]=+g[a>>2];k=a+4|0;g[f+4>>2]=+g[k>>2];l=a+8|0;g[f+8>>2]=+g[l>>2]+-100.0;xD(h,a,b,d,j,0,1);if((c[h+4>>2]|0)!=0){m=0;i=e;return m|0}n=+g[h+20>>2];o=+g[h+16>>2];g[a>>2]=+g[h+12>>2];g[k>>2]=o;g[l>>2]=n;m=1;i=e;return m|0}function sE(){g[7094598]=0.0;g[7094599]=0.0;g[7094600]=-1.0;g[7094601]=+UJ(133304,173888);g[7094602]=+UJ(147272,129656);g[7094603]=+UJ(119120,108368);g[7094604]=+UJ(99040,57088);g[7094605]=+UJ(50672,45640);g[7094606]=+UJ(184752,180952);g[7094607]=+UJ(176240,180952);g[7094608]=+UJ(172776,129656);g[7094609]=+UJ(169640,166280);g[7094610]=+UJ(163080,160336);g[7094611]=+UJ(157664,57088);g[7094612]=+UJ(155136,153192);g[7094613]=+UJ(151184,148920);g[7094614]=+UJ(146344,143992);g[7094615]=+UJ(141336,139072);g[7094616]=+UJ(137152,135728);g[7094617]=+UJ(134272,132776);g[7094618]=+UJ(131784,130568);g[7094619]=+UJ(129240,128176);g[7094620]=+UJ(126752,45640);g[7094621]=+UJ(125504,124544);g[7094622]=+UJ(123704,129656);g[7094623]=+UJ(122936,122040);g[7094624]=+UJ(121152,120024);g[7094625]=+UJ(118616,117528);g[7094626]=+UJ(116400,122040);g[7094627]=+UJ(114984,120024);g[7094628]=+UJ(113744,120024);g[7094629]=+UJ(112816,111984);g[7094630]=+UJ(111160,122040);g[7094631]=+UJ(110440,122040);g[7094632]=+UJ(109176,124544);g[7094633]=+UJ(108104,122040);g[7094634]=+UJ(107240,120024);g[7094635]=+UJ(106144,105336);g[7094636]=+UJ(104520,103520);return}function tE(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;b=i;i=i+16|0;d=b|0;e=d|0;g[e>>2]=+g[a>>2];f=a+4|0;h=d+4|0;g[h>>2]=+g[f>>2];j=a+8|0;g[d+8>>2]=+g[j>>2];d=WF(e)|0;do{if((d|0)==0){g[e>>2]=+g[e>>2]+1.0;k=WF(e)|0;if((k|0)!=0){l=k;break}g[h>>2]=+g[h>>2]+1.0;k=WF(e)|0;if((k|0)!=0){l=k;break}g[e>>2]=+g[e>>2]+-2.0;k=WF(e)|0;if((k|0)!=0){l=k;break}g[h>>2]=+g[h>>2]+-2.0;k=WF(e)|0;if((k|0)==0){m=0}else{l=k;break}i=b;return m|0}else{l=d}}while(0);d=c[7094533]|0;if((c[d+(l*28|0)+4>>2]&2|0)==0){m=0;i=b;return m|0}if((c[d+(l*28|0)+8>>2]&2|0)==0){m=0;i=b;return m|0}d=c[7094531]|0;e=d+(l*48|0)+4|0;h=c[e>>2]|0;if((h|0)<=0){m=0;i=b;return m|0}k=d+(l*48|0)+8|0;l=0;d=h;a:while(1){h=c[(c[7094529]|0)+((c[k>>2]|0)+l<<2)>>2]|0;n=(h|0)>-1?h:-h|0;o=c[7094527]|0;do{if((c[o+(n*24|0)+4>>2]&2|0)==0){p=d}else{q=c[o+(n*24|0)>>2]^h>>>31;r=c[7094521]|0;s=~~(+g[r+(q*20|0)>>2]*+g[a>>2]+ +g[r+(q*20|0)+4>>2]*+g[f>>2]+ +g[r+(q*20|0)+8>>2]*+g[j>>2]- +g[r+(q*20|0)+12>>2]);if((((s|0)>-1?s:-s|0)|0)>=3){p=d;break}if((bG(n,a,.10000000149011612)|0)!=0){m=1;t=15;break a}p=c[e>>2]|0}}while(0);n=l+1|0;if((n|0)<(p|0)){l=n;d=p}else{m=0;t=15;break}}if((t|0)==15){i=b;return m|0}return 0}function uE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0;e=i;i=i+56|0;f=e|0;h=e+16|0;j=f|0;g[j>>2]=+g[a>>2];g[f+4>>2]=+g[a+4>>2];k=a+8|0;g[f+8>>2]=+g[k>>2]+-10.0;$F(h,a,j,b,d);if((c[h>>2]|0)!=0){l=0;i=e;return l|0}if(!(+g[h+4>>2]<1.0)){l=0;i=e;return l|0}if(+g[k>>2]- +g[h+16>>2]>10.0){l=0;i=e;return l|0}k=hG(c[h+32>>2]|0)|0;l=+g[k+8>>2]+(+g[k>>2]*0.0+ +g[k+4>>2]*0.0)>=+g[7094614]|0;i=e;return l|0}function vE(a){a=a|0;var b=0,c=0,d=0;b=i;i=i+16|0;c=b|0;d=c|0;g[d>>2]=+g[a>>2];g[c+4>>2]=+g[a+4>>2];g[c+8>>2]=+g[a+8>>2]+-2.0;a=((yD(d)|0)&56|0)!=0|0;i=b;return a|0}function wE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;i=i+168|0;e=d+32|0;f=d+48|0;h=d+64|0;j=d+80|0;k=a+12|0;l=e|0;g[l>>2]=+g[k>>2]- +g[a+24>>2];m=a+16|0;n=e+4|0;g[n>>2]=+g[m>>2]- +g[a+28>>2];o=e+8|0;g[o>>2]=0.0;+wB(l);e=f|0;g[e>>2]=+g[k>>2];k=f+4|0;g[k>>2]=+g[m>>2];m=f+8|0;g[m>>2]=+g[a+20>>2]+1.0;a=h|0;g[a>>2]=+g[l>>2]*400.0;g[h+4>>2]=+g[n>>2]*400.0;g[h+8>>2]=+g[o>>2]*400.0;BE(j,-1,e,2,1,876376,a,1,2,.10000000149011612,124,0,d|0,d+16|0,0)|0;g[b>>2]=+g[j>>2];a=b+4|0;g[a>>2]=+g[j+4>>2];o=b+8|0;g[o>>2]=+g[j+8>>2];if((c[j+68>>2]&56|0)==0){p=84;q=0;i=d;return}g[b>>2]=+g[e>>2];g[a>>2]=+g[k>>2];g[o>>2]=+g[m>>2];p=84;q=0;i=d;return}function xE(a,b,c,d,e,f,g,h,j,k,l,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=+k;l=l|0;m=m|0;n=n|0;var o=0,p=0;o=i;i=i+32|0;p=BE(a,b,c,d,e,f,g,h,j,k,l,m,o|0,o+16|0,n)|0;i=o;return p|0}function yE(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0;c=i;i=i+184|0;d=c|0;e=c+16|0;f=c+32|0;h=c+48|0;j=c+64|0;k=c+80|0;l=c+96|0;m=j|0;g[m>>2]=90.0;g[j+4>>2]=0.0;g[j+8>>2]=0.0;n=+g[a>>2];j=d|0;o=a+4|0;p=+g[o>>2];q=a+8|0;r=+g[q>>2]+8.0;s=f|0;t=h|0;BB(m,s,t,0);u=+g[s>>2];v=n+(u*8.0+ +g[t>>2]*8.0);g[j>>2]=v;n=+g[f+4>>2];w=p+(n*8.0+ +g[h+4>>2]*8.0);g[d+4>>2]=w;p=+g[f+8>>2];x=r+(p*8.0+ +g[h+8>>2]*8.0+-8.0);g[d+8>>2]=x;d=e|0;g[d>>2]=v+u*500.0;g[e+4>>2]=w+n*500.0;g[e+8>>2]=x+p*500.0;xD(l,j,0,0,d,1,1);p=+g[l+12>>2];x=+g[l+16>>2];n=+g[l+20>>2];w=+g[a>>2];u=+g[o>>2];v=+g[q>>2];r=p-(w+0.0);y=x-(u+0.0);z=n-(v+4.0);A=b- +T(r*r+y*y+z*z)*.5;q=k|0;g[q>>2]=w-p;g[k+4>>2]=u-x;o=k+8|0;g[o>>2]=v-n;+wB(q);i=c;return+(+g[7094617]+(A<0.0?0.0:A*.5*1600.0)/200.0*+g[o>>2])}function zE(a){a=a|0;return+(+yE(a,120.0))}function AE(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0;j=i;i=i+80|0;k=j|0;l=j+16|0;m=j+32|0;n=j+48|0;o=j+64|0;p=k|0;q=l|0;RF(e,p,q);r=+g[f>>2]- +g[q>>2];g[m>>2]=r;g[m+4>>2]=+g[f+4>>2]- +g[l+4>>2];g[m+8>>2]=+g[f+8>>2]- +g[l+8>>2];g[n>>2]=+g[h>>2]- +g[p>>2];g[n+4>>2]=+g[h+4>>2]- +g[k+4>>2];g[n+8>>2]=+g[h+8>>2]- +g[k+8>>2];k=a+8|0;g[k>>2]=+g[d>>2];h=d+4|0;p=a+12|0;g[p>>2]=+g[h>>2];l=d+8|0;f=a+16|0;g[f>>2]=+g[l>>2];q=a+4|0;g[q>>2]=1.0;e=0;s=r;while(1){r=+g[b+(e<<2)>>2];if(r>2]>2];if(r>v){if(+g[d+(e<<2)>>2]>v){t=0;u=17;break}}w=e+1|0;if((w|0)>=3){u=8;break}e=w;s=+g[m+(w<<2)>>2]}if((u|0)==8){s=+g[d>>2];v=+g[b>>2];r=s-v;g[o>>2]=r;e=b+4|0;x=+g[h>>2]- +g[e>>2];g[o+4>>2]=x;h=b+8|0;y=+g[l>>2]- +g[h>>2];g[o+8>>2]=y;l=0;z=r;A=v;v=s;a:while(1){s=+g[(z>0.0?m:n)+(l<<2)>>2];B=A-s;C=B/(B-(v-s));w=l+1|0;D=(l|0)>1?0:w;s=+g[b+(D<<2)>>2]+C*+g[o+(D<<2)>>2];do{if(s>+g[m+(D<<2)>>2]){if(!(s<+g[n+(D<<2)>>2])){break}E=(D|0)>1?0:D+1|0;B=+g[b+(E<<2)>>2]+C*+g[o+(E<<2)>>2];if(!(B>+g[m+(E<<2)>>2])){break}if(B<+g[n+(E<<2)>>2]){F=l;break a}}}while(0);if((w|0)>=3){F=w;break}l=w;z=+g[o+(w<<2)>>2];A=+g[b+(w<<2)>>2];v=+g[d+(w<<2)>>2]}if((F|0)==3){t=0;i=j;return t|0}c[a>>2]=0;g[q>>2]=C;n$(a+20|0,0,16)|0;g[k>>2]=+g[b>>2]+C*r;g[p>>2]=+g[e>>2]+C*x;g[f>>2]=+g[h>>2]+C*y;t=1;i=j;return t|0}else if((u|0)==17){i=j;return t|0}return 0} + + + +function oU(){var a=0,b=0,d=0,e=0,f=0,h=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.0,w=0.0,x=0.0,y=0.0,z=0,A=0,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,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ea=0,fa=0.0,ga=0;a=i;i=i+224|0;b=a|0;d=a+16|0;if((c[(c[4919824]|0)+32>>2]|0)!=0){i=a;return}iU(1219560);if((c[(c[4917338]|0)+32>>2]|0)==0){md(+1.0,+1.0)}else{md(+0.0,+0.0)}e=c[(c[340894]|0)+108>>2]|0;do{if(!((e|0)==0|(e|0)==(c[253205]|0))){fP(0);f=a+32|0;bQ(20480508,f);h=a+96|0;fQ(28376268,h);j=a+160|0;cQ(20480508,h,j);hP(j);j=c[340894]|0;g[1150]=0.0;g[1152]=1.0;n$(2212352,0,648)|0;h=b;k=d;l=b+8|0;m=b+4|0;n=b|0;o=b+12|0;p=d|0;q=d+4|0;r=d+8|0;s=d+12|0;t=0;a:while(1){u=2160664+(t<<2)|0;v=+R(+g[u>>2]*4.0)*.25;g[u>>2]=v;u=2160640+(t<<2)|0;w=+R(+g[u>>2]*4.0)*.25;g[u>>2]=w;u=2160712+(t<<2)|0;x=+ca(+g[u>>2]*4.0)*.25;g[u>>2]=x;u=2160688+(t<<2)|0;y=+ca(+g[u>>2]*4.0)*.25;g[u>>2]=y;if(v4?4:u}if((z|0)<-4){D=-4}else{D=(z|0)>4?4:z}if((A|0)<-4){E=-4}else{E=(A|0)>4?4:A}if((B|0)<-4){F=-4}else{F=(B|0)>4?4:B}B=D+4|0;A=F+4|0;if((B|0)<=(A|0)){z=C+4|0;u=E+4|0;G=(z|0)>(u|0);H=B;while(1){if(!G){y=+(H-4|0)*.25;I=z;while(1){mU(+(I-4|0)*.25,y,t,2212352+(H*72|0)+(I<<3)|0,2213e3+(H*108|0)+(I*12|0)|0);if((I|0)<(u|0)){I=I+1|0}else{break}}}if((H|0)<(A|0)){H=H+1|0}else{break}}}H=c[j+108+(c[4576+(t<<2)>>2]<<2)>>2]|0;A=c[340902]|0;u=c[340903]|0;z=c[340904]|0;c[340900]=c[340901];aP(H);dP(2);if((D|0)>(F|0)){J=F}else{H=C+4|0;G=E+4|0;I=B;K=E;L=F;while(1){if((C|0)>(K|0)){M=K;N=L}else{O=H;P=c[340902]|0;while(1){g[1243560+(P<<4)>>2]=+g[2213e3+(I*108|0)+(O*12|0)>>2];Q=c[340902]|0;g[1243564+(Q<<4)>>2]=+g[2213e3+(I*108|0)+(O*12|0)+4>>2];g[1243568+(Q<<4)>>2]=+g[2213e3+(I*108|0)+(O*12|0)+8>>2];g[1243572+(Q<<4)>>2]=1.0;g[1267560+(Q<<4)>>2]=+g[2212352+(I*72|0)+(O<<3)>>2];Q=c[340902]|0;g[1267564+(Q<<4)>>2]=+g[2212352+(I*72|0)+(O<<3)+4>>2];S=Q+1|0;c[340902]=S;if((Q|0)>998){T=30;break a}if((O|0)<(G|0)){O=O+1|0;P=S}else{M=E;N=F;break}}}if((I|0)<(N+4|0)){I=I+1|0;K=M;L=N}else{J=N;break}}}if((J-D|0)>0){L=E+(1-C)|0;K=E-C|0;I=0;G=E;H=C;B=J;P=D;while(1){O=G-H|0;S=I+1|0;if((O|0)>0){Q=da(S,L)|0;U=da(I,L)|0;V=0;W=O;while(1){O=c[340901]|0;if((O+6|0)>5999){T=35;break a}X=V+A|0;Y=X+(da(W+1|0,I)|0)|0;c[340901]=O+1;c[1219560+(O<<2)>>2]=Y;Y=X+Q|0;X=c[340901]|0;c[340901]=X+1;c[1219560+(X<<2)>>2]=Y;X=V+1|0;O=X+A|0;Z=O+U|0;_=c[340901]|0;c[340901]=_+1;c[1219560+(_<<2)>>2]=Z;_=c[340901]|0;c[340901]=_+1;c[1219560+(_<<2)>>2]=Z;Z=c[340901]|0;c[340901]=Z+1;c[1219560+(Z<<2)>>2]=Y;Y=c[340901]|0;c[340901]=Y+1;c[1219560+(Y<<2)>>2]=O+Q;if((X|0)<(K|0)){V=X;W=K}else{$=E;aa=C;ba=F;ea=D;break}}}else{$=G;aa=H;ba=B;ea=P}if((S|0)<(ba-ea|0)){I=S;G=$;H=aa;B=ba;P=ea}else{break}}}c[340903]=A;c[340904]=c[340902];VU(3);QQ(3);PQ(977452);LQ(977452,46,20480636);if((c[(c[4917328]|0)+32>>2]|0)==0){fa=+g[253579]}else{fa=1.0}y=fa*+g[7094061];g[l>>2]=y;g[m>>2]=y;g[n>>2]=y;g[o>>2]=1.0;JQ(977452,29,n);n$(h|0,0,16)|0;JQ(977452,30,n);g[p>>2]=1.0;g[q>>2]=0.0;g[r>>2]=0.0;g[s>>2]=1.0;JQ(977452,17,p);n$(k|0,0,16)|0;JQ(977452,18,p);P=c[340900]|0;vT((c[340901]|0)-P|0,P,c[340903]|0,c[340904]|0);c[340901]=c[340900];c[340902]=A;c[340900]=0;c[340903]=u;c[340904]=z;}P=t+1|0;if((P|0)<6){t=P}else{T=42;break}}if((T|0)==30){Tk[c[4886345]&255](1,100968,(ga=i,i=i+1|0,i=i+7&-8,c[ga>>2]=0,ga)|0);i=ga}else if((T|0)==35){Tk[c[4886345]&255](1,163816,(ga=i,i=i+1|0,i=i+7&-8,c[ga>>2]=0,ga)|0);i=ga}else if((T|0)==42){hP(f);break}}}while(0);kU(1219560);xT();md(+0.0,+1.0);c[7094308]=1;i=a;return}function pU(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;do{if(((c[340902]|0)+a|0)<1e3){if(((c[340901]|0)+b|0)>=6e3){break}i=d;return}}while(0);zT();if((a|0)>999){Tk[c[4886345]&255](1,100784,(e=i,i=i+16|0,c[e>>2]=a,c[e+8>>2]=1e3,e)|0);i=e}if((b|0)>5999){Tk[c[4886345]&255](1,163728,(e=i,i=i+16|0,c[e>>2]=b,c[e+8>>2]=6e3,e)|0);i=e}wT(c[340894]|0,c[340896]|0,c[340897]|0);i=d;return}function qU(a,b,d,e,f,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;l=i;i=i+16|0;m=l|0;n=c[340902]|0;o=n+4|0;do{if((o|0)>999){p=5}else{q=c[340901]|0;if((q+6|0)<=5999){r=n;s=q;break}if((o|0)>=1e3){p=5;break}q=c[340901]|0;if((q+6|0)<6e3){r=n;s=q}else{p=5}}}while(0);if((p|0)==5){zT();wT(c[340894]|0,c[340896]|0,c[340897]|0);r=c[340902]|0;s=c[340901]|0}c[1219560+(s<<2)>>2]=r;s=r+1|0;c[1219560+((c[340901]|0)+1<<2)>>2]=s;p=r+3|0;c[1219560+((c[340901]|0)+2<<2)>>2]=p;c[1219560+((c[340901]|0)+3<<2)>>2]=p;c[1219560+((c[340901]|0)+4<<2)>>2]=s;n=r+2|0;c[1219560+((c[340901]|0)+5<<2)>>2]=n;g[1243560+(r<<4)>>2]=+g[a>>2]+ +g[b>>2]+ +g[d>>2];o=a+4|0;q=b+4|0;t=d+4|0;g[1243564+(r<<4)>>2]=+g[o>>2]+ +g[q>>2]+ +g[t>>2];u=a+8|0;v=b+8|0;w=d+8|0;g[1243568+(r<<4)>>2]=+g[u>>2]+ +g[v>>2]+ +g[w>>2];g[1243560+(s<<4)>>2]=+g[a>>2]- +g[b>>2]+ +g[d>>2];g[1243564+(s<<4)>>2]=+g[o>>2]- +g[q>>2]+ +g[t>>2];g[1243568+(s<<4)>>2]=+g[u>>2]- +g[v>>2]+ +g[w>>2];g[1243560+(n<<4)>>2]=+g[a>>2]- +g[b>>2]- +g[d>>2];g[1243564+(n<<4)>>2]=+g[o>>2]- +g[q>>2]- +g[t>>2];g[1243568+(n<<4)>>2]=+g[u>>2]- +g[v>>2]- +g[w>>2];g[1243560+(p<<4)>>2]=+g[a>>2]+ +g[b>>2]- +g[d>>2];g[1243564+(p<<4)>>2]=+g[o>>2]+ +g[q>>2]- +g[t>>2];g[1243568+(p<<4)>>2]=+g[u>>2]+ +g[v>>2]- +g[w>>2];w=m|0;g[w>>2]=+g[219094]- +g[7094070];g[m+4>>2]=+g[219095]- +g[7094071];g[m+8>>2]=+g[219096]- +g[7094072];m=JU(w)|0;c[1259560+(p<<2)>>2]=m;c[1259560+(n<<2)>>2]=m;c[1259560+(s<<2)>>2]=m;c[1259560+(r<<2)>>2]=m;g[1267560+(r<<4)>>2]=f;g[1267564+(r<<4)>>2]=h;g[1267568+(r<<4)>>2]=f;g[1267572+(r<<4)>>2]=h;g[1267560+(s<<4)>>2]=j;g[1267564+(s<<4)>>2]=h;g[1267568+(s<<4)>>2]=j;g[1267572+(s<<4)>>2]=h;g[1267560+(n<<4)>>2]=j;g[1267564+(n<<4)>>2]=k;g[1267568+(n<<4)>>2]=j;g[1267572+(n<<4)>>2]=k;g[1267560+(p<<4)>>2]=f;g[1267564+(p<<4)>>2]=k;g[1267568+(p<<4)>>2]=f;g[1267572+(p<<4)>>2]=k;g[1283560+(r<<4)>>2]=+g[e>>2];m=e+4|0;g[1283564+(r<<4)>>2]=+g[m>>2];w=e+8|0;g[1283568+(r<<4)>>2]=+g[w>>2];v=e+12|0;g[1283572+(r<<4)>>2]=+g[v>>2];g[1283560+(s<<4)>>2]=+g[e>>2];g[1283564+(s<<4)>>2]=+g[m>>2];g[1283568+(s<<4)>>2]=+g[w>>2];g[1283572+(s<<4)>>2]=+g[v>>2];g[1283560+(n<<4)>>2]=+g[e>>2];g[1283564+(n<<4)>>2]=+g[m>>2];g[1283568+(n<<4)>>2]=+g[w>>2];g[1283572+(n<<4)>>2]=+g[v>>2];g[1283560+(p<<4)>>2]=+g[e>>2];g[1283564+(p<<4)>>2]=+g[m>>2];g[1283568+(p<<4)>>2]=+g[w>>2];g[1283572+(p<<4)>>2]=+g[v>>2];c[340902]=(c[340902]|0)+4;c[340901]=(c[340901]|0)+6;i=l;return}function rU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qU(a,b,c,d,0.0,0.0,1.0,1.0);return}function sU(a,b){a=a|0;b=b|0;cV(139600);c[340900]=0;g[310890]=+g[a>>2];g[310891]=+g[a+4>>2];g[310892]=+g[a+8>>2];g[310893]=+g[a+12>>2];g[316890]=+g[b>>2];g[316891]=+g[b+4>>2];g[310894]=+g[a+16>>2];g[310895]=+g[a+20>>2];g[310896]=+g[a+24>>2];g[310897]=+g[a+28>>2];g[316894]=+g[b+8>>2];g[316895]=+g[b+12>>2];g[310898]=+g[a+32>>2];g[310899]=+g[a+36>>2];g[310900]=+g[a+40>>2];g[310901]=+g[a+44>>2];g[316898]=+g[b+16>>2];g[316899]=+g[b+20>>2];g[310902]=+g[a+48>>2];g[310903]=+g[a+52>>2];g[310904]=+g[a+56>>2];g[310905]=+g[a+60>>2];g[316902]=+g[b+24>>2];g[316903]=+g[b+28>>2];c[340902]=4;c[304890]=0;c[304891]=1;c[304892]=2;c[304893]=0;c[304894]=2;c[340901]=6;c[304895]=3;c[340903]=0;c[340904]=3;VU(3);QQ(3);vT(c[340901]|0,c[340900]|0,c[340903]|0,c[340904]|0);n$(1363600,0,20)|0;return}function tU(a){a=a|0;var b=0,c=0;b=i;i=i+32|0;c=b|0;g[c>>2]=0.0;g[c+4>>2]=0.0;g[c+8>>2]=1.0;g[c+12>>2]=0.0;g[c+16>>2]=1.0;g[c+20>>2]=1.0;g[c+24>>2]=0.0;g[c+28>>2]=1.0;PQ(974204);LQ(974204,46,20480636);JQ(974204,28,41208);sU(a,c|0);i=b;return}function uU(a){a=a|0;var b=0,d=0,e=0.0;cV(125816);b=a+28|0;if((c[b>>2]|0)==0){return}d=a+32|0;if((c[d>>2]|0)==0){return}zT();wT(c[340894]|0,c[340896]|0,c[340897]|0);PU(c[b>>2]|0);RU(c[d>>2]|0);c[325892]=0;c[340901]=(c[340901]|0)+(c[a+12>>2]|0);c[340902]=(c[340902]|0)+(c[a+16>>2]|0);c[340903]=c[a+20>>2];c[340904]=c[a+24>>2];a=c[7094307]|0;d=c[a+96>>2]|0;b=a+80|0;if((d|0)==(c[b>>2]|0)){e=0.0}else{e=+g[a+100>>2]}g[5120121]=e;c[5120120]=d;c[5120119]=c[b>>2];c[5120122]=1;zT();c[5120122]=0;return}function vU(a){a=a|0;var b=0;a=i;Tk[c[4886344]&255](0,115416,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}function wU(a){a=a|0;return}function xU(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+80|0;d=a+72|0;e=a+4|0;f=a+8|0;if((FU(c[a+104>>2]|0,c[a+108>>2]|0,c[b>>2]|0,c[d>>2]|0,c[a+92>>2]|0,c[a+96>>2]|0,c[a+100>>2]|0,c[e>>2]|0,c[f>>2]|0,1)|0)!=0){return}HU(c[b>>2]|0,c[a+84>>2]|0,c[d>>2]|0,c[a+76>>2]|0,c[e>>2]|0,c[f>>2]|0);return}function yU(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.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,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,_=0,$=0,aa=0,ba=0,ca=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;b=i;i=i+528|0;d=b|0;e=b+264|0;f=a+4|0;h=a+8|0;if((FU(c[a+104>>2]|0,c[a+108>>2]|0,c[a+80>>2]|0,c[a+72>>2]|0,c[a+92>>2]|0,c[a+96>>2]|0,c[a+100>>2]|0,c[f>>2]|0,c[h>>2]|0,1)|0)!=0){j=260;k=0;l=260;m=0;i=b;return}c[340898]=c[340898]|c[f>>2];c[340899]=c[340899]|c[h>>2];n=+g[a+124>>2];o=+g[(c[4917440]|0)+28>>2];if(o<0.0){p=0.0}else{q=+g[a+112>>2];r=+g[a+116>>2];s=+g[a+120>>2];t=(+g[7094233]+(q*+g[7094236]+r*+g[7094239]+s*+g[7094242])- +g[7094067])*+g[7094070]+(+g[7094234]+(q*+g[7094237]+r*+g[7094240]+s*+g[7094243])- +g[7094068])*+g[7094071]+(+g[7094235]+(q*+g[7094238]+r*+g[7094241]+s*+g[7094244])- +g[7094069])*+g[7094072];if(t<0.0){u=-0.0-t}else{u=t}t=u-n;p=o/(t<1.0?1.0:t)}c[d>>2]=0;h=a+136|0;f=(c[h>>2]|0)-1|0;if((f|0)>1){v=c[a+144>>2]|0;w=1;x=1;while(1){if(+g[v+(x<<2)>>2]>p){y=w}else{c[d+(w<<2)>>2]=x;y=w+1|0}z=x+1|0;if((z|0)<(f|0)){w=y;x=z}else{A=y;break}}}else{A=1}c[d+(A<<2)>>2]=f;f=A+1|0;c[e>>2]=0;y=(c[a+140>>2]|0)-1|0;do{if((y|0)>1){x=c[a+148>>2]|0;w=1;v=1;while(1){if(+g[x+(v<<2)>>2]>p){B=w}else{c[e+(w<<2)>>2]=v;B=w+1|0}z=v+1|0;if((z|0)<(y|0)){w=B;v=z}else{break}}c[e+(B<<2)>>2]=y;if((B|0)>0){C=B;D=B+1|0;break}j=260;k=0;l=260;m=0;i=b;return}else{c[e+4>>2]=y;C=1;D=2}}while(0);y=f*6|0;B=a+84|0;a=(A|0)>0;v=A*6|0;w=0;x=c[340902]|0;z=c[340901]|0;while(1){E=(1e3-x|0)/(f|0)|0;F=(6e3-z|0)/(y|0)|0;if((E|0)<2|(F|0)<1){while(1){zT();wT(c[340894]|0,c[340896]|0,c[340897]|0);G=c[340902]|0;H=(1e3-G|0)/(f|0)|0;I=c[340901]|0;J=(6e3-I|0)/(y|0)|0;if(!((H|0)<2|(J|0)<1)){K=G;L=H;M=J;N=I;break}}}else{K=x;L=E;M=F;N=z}I=(L|0)<(M+1|0)?L-1|0:M;J=(I+w|0)>(D|0)?D-w|0:I;if((J|0)<1|(A|0)<0){O=N}else{I=1299560+(K<<2)|0;H=1283560+(K<<4)|0;G=1263560+(K<<2)|0;P=1259560+(K<<2)|0;Q=1267568+(K<<4)|0;R=1267560+(K<<4)|0;S=1243560+(K<<4)|0;T=0;while(1){U=e+(T+w<<2)|0;V=I;W=H;X=G;Y=P;Z=Q;_=R;$=S;aa=0;while(1){ba=c[B>>2]|0;ca=da(c[h>>2]|0,c[U>>2]|0)|0;ea=ca+(c[d+(aa<<2)>>2]|0)|0;ca=c[(c[340894]|0)+204>>2]|0;if((ca&1|0)==0){fa=$}else{g[$>>2]=+g[ba+(ea*84|0)>>2];g[$+4>>2]=+g[ba+(ea*84|0)+4>>2];g[$+8>>2]=+g[ba+(ea*84|0)+8>>2];fa=$+16|0}if((ca&16|0)==0){ga=Y;ha=ca}else{c[Y>>2]=JU(ba+(ea*84|0)+28|0)|0;ga=Y+4|0;ha=c[(c[340894]|0)+204>>2]|0}if((ha&8|0)==0){ia=X;ja=ha}else{c[X>>2]=IU(ba+(ea*84|0)+40|0)|0;ia=X+4|0;ja=c[(c[340894]|0)+204>>2]|0}if((ja&2|0)==0){ka=_}else{g[_>>2]=+g[ba+(ea*84|0)+12>>2];g[_+4>>2]=+g[ba+(ea*84|0)+16>>2];ka=_+16|0}if((ja&4|0)==0){la=Z}else{g[Z>>2]=+g[ba+(ea*84|0)+20>>2];g[Z+4>>2]=+g[ba+(ea*84|0)+24>>2];la=Z+16|0}if((ja&32|0)==0){ma=W}else{g[W>>2]=+g[ba+(ea*84|0)+68>>2];g[W+4>>2]=+g[ba+(ea*84|0)+72>>2];g[W+8>>2]=+g[ba+(ea*84|0)+76>>2];g[W+12>>2]=+g[ba+(ea*84|0)+80>>2];ma=W+16|0}if((ja&128|0)==0){na=V}else{c[V>>2]=JU(ba+(ea*84|0)+56|0)|0;na=V+4|0}ea=aa+1|0;if((ea|0)<(f|0)){V=na;W=ma;X=ia;Y=ga;Z=la;_=ka;$=fa;aa=ea}else{break}}aa=T+1|0;if((aa|0)<(J|0)){I=na;H=ma;G=ia;P=ga;Q=la;R=ka;S=fa;T=aa}else{break}}O=c[340901]|0}T=J-1|0;if((T|0)>0){S=O;R=0;while(1){if(a){Q=(da(R,f)|0)+K|0;P=S;G=0;while(1){H=Q+G|0;I=H+1|0;F=H+f|0;c[1219560+(P<<2)>>2]=H;c[1219560+(P+1<<2)>>2]=F;c[1219560+(P+2<<2)>>2]=I;c[1219560+(P+3<<2)>>2]=I;c[1219560+(P+4<<2)>>2]=F;c[1219560+(P+5<<2)>>2]=F+1;F=G+1|0;if((F|0)<(A|0)){P=P+6|0;G=F}else{break}}oa=v+S|0}else{oa=S}G=R+1|0;if((G|0)<(T|0)){S=oa;R=G}else{pa=oa;break}}}else{pa=O}c[340901]=pa;R=da(J,f)|0;S=(c[340902]|0)+R|0;c[340902]=S;R=T+w|0;if((R|0)<(C|0)){w=R;x=S;z=pa}else{break}}j=260;k=0;l=260;m=0;i=b;return}function zU(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+80|0;d=a+72|0;e=a+4|0;f=a+8|0;if((FU(c[a+104>>2]|0,c[a+108>>2]|0,c[b>>2]|0,c[d>>2]|0,c[a+92>>2]|0,c[a+96>>2]|0,c[a+100>>2]|0,c[e>>2]|0,c[f>>2]|0,1)|0)!=0){return}HU(c[b>>2]|0,c[a+84>>2]|0,c[d>>2]|0,c[a+76>>2]|0,c[e>>2]|0,c[f>>2]|0);return}function AU(a){a=a|0;var b=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=i;e=c[340902]|0;f=a+12|0;h=c[f>>2]|0;j=h+e|0;do{if((j|0)>999){k=(h*3|0)-6|0;l=6}else{m=(h*3|0)-6|0;if((m+(c[340901]|0)|0)<=5999){n=e;o=h;break}if((j|0)>=1e3){k=m;l=6;break}if(((c[340901]|0)+m|0)<6e3){n=e;o=h}else{k=m;l=6}}}while(0);do{if((l|0)==6){zT();if((h|0)>999){Tk[c[4886345]&255](1,100784,(p=i,i=i+16|0,c[p>>2]=h,c[p+8>>2]=1e3,p)|0);i=p}if((k|0)>5999){Tk[c[4886345]&255](1,163728,(p=i,i=i+16|0,c[p>>2]=k,c[p+8>>2]=6e3,p)|0);i=p}else{wT(c[340894]|0,c[340896]|0,c[340897]|0);n=c[340902]|0;o=c[f>>2]|0;break}}}while(0);if((o|0)>0){p=c[a+16>>2]|0;a=0;k=n;while(1){g[1243560+(k<<4)>>2]=+g[p+(a*24|0)>>2];g[1243564+(k<<4)>>2]=+g[p+(a*24|0)+4>>2];g[1243568+(k<<4)>>2]=+g[p+(a*24|0)+8>>2];g[1267560+(k<<4)>>2]=+g[p+(a*24|0)+12>>2];g[1267564+(k<<4)>>2]=+g[p+(a*24|0)+16>>2];g[1283560+(k<<4)>>2]=+(d[p+(a*24|0)+20|0]|0|0)/255.0;g[1283564+(k<<4)>>2]=+(d[p+(a*24|0)+21|0]|0|0)/255.0;g[1283568+(k<<4)>>2]=+(d[p+(a*24|0)+22|0]|0|0)/255.0;g[1283572+(k<<4)>>2]=+(d[p+(a*24|0)+23|0]|0|0)/255.0;h=k+1|0;l=a+1|0;if((l|0)<(o|0)){a=l;k=h}else{q=h;break}}}else{q=n}if((o-2|0)<=0){c[340902]=q;i=b;return}o=0;n=c[340901]|0;while(1){c[1219560+(n<<2)>>2]=c[340902];k=o+1|0;c[1219560+((c[340901]|0)+1<<2)>>2]=k+(c[340902]|0);c[1219560+((c[340901]|0)+2<<2)>>2]=o+2+(c[340902]|0);a=(c[340901]|0)+3|0;c[340901]=a;if((k|0)<((c[f>>2]|0)-2|0)){o=k;n=a}else{break}}c[340902]=q;i=b;return}function BU(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0.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;b=i;i=i+32|0;d=b|0;e=b+16|0;f=c[7094307]|0;h=c[f+80>>2]|0;if((c[f+96>>2]|0)==(h|0)){j=0.0}else{j=+g[f+100>>2]}k=c[340902]|0;l=a+76|0;m=c[l>>2]|0;n=m+k|0;do{if((n|0)>999){o=c[a+88>>2]|0;p=8}else{q=c[a+88>>2]|0;if((q+(c[340901]|0)|0)<=5999){r=f;s=h;t=m;u=k;break}if((n|0)>=1e3){o=q;p=8;break}if(((c[340901]|0)+q|0)<6e3){r=f;s=h;t=m;u=k}else{o=q;p=8}}}while(0);do{if((p|0)==8){zT();if((m|0)>999){Tk[c[4886345]&255](1,100784,(v=i,i=i+16|0,c[v>>2]=m,c[v+8>>2]=1e3,v)|0);i=v}if((o|0)>5999){Tk[c[4886345]&255](1,163728,(v=i,i=i+16|0,c[v>>2]=o,c[v+8>>2]=6e3,v)|0);i=v}else{wT(c[340894]|0,c[340896]|0,c[340897]|0);k=c[7094307]|0;r=k;s=c[k+80>>2]|0;t=c[l>>2]|0;u=c[340902]|0;break}}}while(0);v=c[a+80>>2]|0;o=v+((da(t,s)|0)*48|0)|0;s=1243560+(u<<4)|0;m=1259560+(u<<2)|0;u=(t|0)>0;do{if(j==0.0){if(!u){break}p=d|0;k=d+4|0;h=d+8|0;f=s;n=m;q=o;w=0;while(1){g[f>>2]=+g[q>>2];g[f+4>>2]=+g[q+4>>2];g[f+8>>2]=+g[q+8>>2];g[p>>2]=+g[q+12>>2];g[k>>2]=+g[q+16>>2];g[h>>2]=+g[q+20>>2];c[n>>2]=JU(p)|0;x=w+1|0;if((x|0)<(c[l>>2]|0)){f=f+16|0;n=n+4|0;q=q+48|0;w=x}else{break}}}else{if(!u){break}w=e|0;q=s;n=m;f=o;p=0;h=v+((da(c[r+96>>2]|0,t)|0)*48|0)|0;while(1){iQ(f|0,h|0,j,q);iQ(f+12|0,h+12|0,j,w);+wB(w);c[n>>2]=JU(w)|0;k=p+1|0;if((k|0)<(c[l>>2]|0)){q=q+16|0;n=n+4|0;f=f+48|0;p=k;h=h+48|0}else{break}}}}while(0);t=c[340901]|0;r=c[340902]|0;v=a+88|0;o=c[v>>2]|0;if((o|0)>0){m=c[a+92>>2]|0;s=0;do{c[1219560+(s+t<<2)>>2]=(c[m+(s<<2)>>2]|0)+r;s=s+1|0;y=c[v>>2]|0;}while((s|0)<(y|0));z=y;A=c[340901]|0}else{z=o;A=t}c[340901]=A+z;z=c[a+84>>2]|0;a=c[l>>2]|0;if((a|0)>0){B=0}else{C=c[340902]|0;D=C+a|0;c[340902]=D;i=b;return}do{l=B+r|0;g[1267560+(l<<4)>>2]=+g[z+(B<<3)>>2];g[1267564+(l<<4)>>2]=+g[z+(B<<3)+4>>2];B=B+1|0;}while((B|0)<(a|0));C=c[340902]|0;D=C+a|0;c[340902]=D;i=b;return}function CU(a){a=a|0;if((c[(c[4917502]|0)+32>>2]|0)==0){return}yQ(a,c[340896]|0,a+4|0,a+28|0,a+16|0);return}function DU(a){a=a|0;var b=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0.0,X=0,Y=0.0,Z=0.0,_=0.0,$=0;a=i;i=i+320|0;b=a|0;e=a+16|0;f=a+64|0;h=a+80|0;j=a+96|0;k=a+112|0;l=a+128|0;m=a+200|0;n=a+272|0;o=a+288|0;p=a+304|0;q=c[7094307]|0;switch(c[q>>2]|0){case 3:{r=+g[q+88>>2];s=+g[q+92>>2];t=+g[q+72>>2];u=+g[q+76>>2];v=+g[q+84>>2]- +g[q+68>>2];w=o|0;g[w>>2]=v;x=r-t;g[o+4>>2]=x;t=s-u;g[o+8>>2]=t;if(+wB(w)==0.0){i=a;return}y=n|0;yB(y,w);g[y>>2]=+g[y>>2]*4.0;z=n+4|0;g[z>>2]=+g[z>>2]*4.0;z=n+8|0;g[z>>2]=+g[z>>2]*4.0;z=0;do{A=l+(z*12|0)|0;xB(A,w,y,+(z|0)*60.0);g[m+(z*12|0)>>2]=v+ +g[A>>2];g[m+(z*12|0)+4>>2]=x+ +g[l+(z*12|0)+4>>2];g[m+(z*12|0)+8>>2]=t+ +g[l+(z*12|0)+8>>2];z=z+1|0;}while((z|0)<6);aP(c[253241]|0);fP(34);n$(1363600,0,20)|0;z=0;y=0;while(1){w=(z|0)%6|0;t=+g[l+(w*12|0)>>2];c[340902]=y+1;g[1243560+(y<<4)>>2]=t;A=c[340902]|0;g[1243564+(A<<4)>>2]=+g[l+(w*12|0)+4>>2];g[1243568+(A+1<<4)>>2]=+g[l+(w*12|0)+8>>2];t=+g[m+(w*12|0)>>2];c[340902]=A+3;g[1243560+(A+2<<4)>>2]=t;A=c[340902]|0;g[1243564+(A<<4)>>2]=+g[m+(w*12|0)+4>>2];t=+g[m+(w*12|0)+8>>2];w=A+2|0;c[340902]=w;g[1243568+(A+1<<4)>>2]=t;A=z+1|0;if((A|0)<7){z=A;y=w}else{B=0;C=0;break}}while(1){y=B<<1;c[340901]=C+1;c[1219560+(C<<2)>>2]=y;z=B+1|0;m=z<<1;l=c[340901]|0;c[340901]=l+1;c[1219560+(l<<2)>>2]=m;l=y|1;y=c[340901]|0;c[340901]=y+1;c[1219560+(y<<2)>>2]=l;y=c[340901]|0;c[340901]=y+1;c[1219560+(y<<2)>>2]=l;l=c[340901]|0;c[340901]=l+1;c[1219560+(l<<2)>>2]=m;l=c[340901]|0;c[340901]=l+1;c[1219560+(l<<2)>>2]=m|1;if((z|0)>=6){break}B=z;C=c[340901]|0}c[340903]=0;c[340904]=c[340902];VU(1);QQ(1);PQ(974204);LQ(974204,46,20480636);JQ(974204,28,41224);vT(c[340901]|0,c[340900]|0,c[340903]|0,c[340904]|0);n$(1363600,0,20)|0;i=a;return};case 5:{t=+g[q+84>>2];x=+g[q+88>>2];v=+g[q+92>>2];u=+g[q+72>>2];s=+g[q+76>>2];C=n|0;g[C>>2]=+g[q+68>>2]-t;B=n+4|0;g[B>>2]=u-x;z=n+8|0;g[z>>2]=s-v;m=~~+wB(C);l=o|0;y=f|0;EB(C,l,y);w=(c[4917370]|0)+28|0;s=+g[w>>2];A=~~(+(m|0)/s);m=(A|0)<1?1:A;u=s*+g[C>>2];g[C>>2]=u;s=+g[B>>2]*+g[w>>2];g[B>>2]=s;r=+g[z>>2]*+g[w>>2];g[z>>2]=r;w=(((m|0)>1)<<31>>31)+m|0;if((w|0)==0){i=a;return}D=+g[l>>2];E=+g[y>>2];F=+(c[(c[4917368]|0)+32>>2]|0);G=+g[o+4>>2];H=+g[f+4>>2];I=+g[o+8>>2];J=+g[f+8>>2];y=(w|0)>1;l=0;do{K=+((l*90|0)+45|0)*3.141592653589793/180.0;L=+V(K);M=+W(K);K=t+F*(D*L+E*M)*.25;m=e+(l*12|0)|0;g[m>>2]=K;N=x+F*(G*L+H*M)*.25;A=e+(l*12|0)+4|0;g[A>>2]=N;O=v+F*(I*L+J*M)*.25;P=e+(l*12|0)+8|0;g[P>>2]=O;if(y){g[m>>2]=u+K;g[A>>2]=s+N;g[P>>2]=r+O}l=l+1|0;}while((l|0)<4);if((w|0)>0){Q=0}else{i=a;return}do{l=c[340902]|0;if((l+4|0)>999){R=26}else{if(((c[340901]|0)+6|0)>5999){R=26}else{S=0;T=l}}if((R|0)==26){R=0;zT();wT(c[340894]|0,c[340896]|0,c[340897]|0);S=0;T=c[340902]|0}do{l=e+(S*12|0)|0;r=+g[l>>2];g[1243560+(T<<4)>>2]=r;y=e+(S*12|0)+4|0;s=+g[y>>2];P=c[340902]|0;g[1243564+(P<<4)>>2]=s;A=e+(S*12|0)+8|0;u=+g[A>>2];g[1243568+(P<<4)>>2]=u;g[1267560+(P<<4)>>2]=+((S|0)<2|0);if((S|0)==0){U=0.0}else{U=+((S|0)!=3|0)}P=c[340902]|0;g[1267564+(P<<4)>>2]=U;m=c[7094307]|0;g[1283560+(P<<4)>>2]=+(d[m+116|0]|0|0)/255.0;X=c[340902]|0;g[1283564+(X<<4)>>2]=+(d[m+117|0]|0|0)/255.0;g[1283568+(X<<4)>>2]=+(d[m+118|0]|0|0)/255.0;T=X+1|0;c[340902]=T;g[l>>2]=r+ +g[C>>2];g[y>>2]=s+ +g[B>>2];g[A>>2]=u+ +g[z>>2];S=S+1|0;}while((S|0)<4);A=c[340901]|0;c[340901]=A+1;c[1219560+(A<<2)>>2]=X-3;A=(c[340902]|0)-3|0;y=c[340901]|0;c[340901]=y+1;c[1219560+(y<<2)>>2]=A;A=(c[340902]|0)-1|0;y=c[340901]|0;c[340901]=y+1;c[1219560+(y<<2)>>2]=A;A=(c[340902]|0)-1|0;y=c[340901]|0;c[340901]=y+1;c[1219560+(y<<2)>>2]=A;A=(c[340902]|0)-3|0;y=c[340901]|0;c[340901]=y+1;c[1219560+(y<<2)>>2]=A;A=(c[340902]|0)-2|0;y=c[340901]|0;c[340901]=y+1;c[1219560+(y<<2)>>2]=A;Q=Q+1|0;}while((Q|0)<(w|0));i=a;return};case 2:{U=+g[q+132>>2];u=+g[q+136>>2];if(u==0.0){s=U*+g[7094073];g[n>>2]=s;r=U*+g[7094074];g[n+4>>2]=r;J=U*+g[7094075];g[n+8>>2]=J;g[o>>2]=U*+g[7094076];g[o+4>>2]=U*+g[7094077];g[o+8>>2]=U*+g[7094078];Y=s;Z=r;_=J}else{J=u*3.141592653589793/180.0;u=+W(J);r=+V(J);J=+g[7094073];s=U*r;r=+g[7094074];I=+g[7094075];F=+g[7094076];v=U*u;u=-0.0-v;U=J*s+F*u;g[n>>2]=U;H=+g[7094077];G=r*s+H*u;g[n+4>>2]=G;x=+g[7094078];E=s*I+x*u;g[n+8>>2]=E;g[o>>2]=v*J+s*F;g[o+4>>2]=v*r+s*H;g[o+8>>2]=v*I+s*x;Y=U;Z=G;_=E}if((c[7094165]|0)==0){$=n|0}else{w=n|0;g[w>>2]=+g[219094]-Y;g[n+4>>2]=+g[219095]-Z;g[n+8>>2]=+g[219096]-_;$=w}w=p|0;g[w>>2]=+(d[q+116|0]|0|0)*.003921568859368563;g[p+4>>2]=+(d[q+117|0]|0|0)*.003921568859368563;g[p+8>>2]=+(d[q+118|0]|0|0)*.003921568859368563;g[p+12>>2]=+(d[q+119|0]|0|0)*.003921568859368563;qU(q+68|0,$,o|0,w,0.0,0.0,1.0,1.0);i=a;return};case 6:{_=+g[q+84>>2];w=h|0;g[w>>2]=_;Z=+g[q+88>>2];g[h+4>>2]=Z;Y=+g[q+92>>2];g[h+8>>2]=Y;E=+g[q+68>>2];$=f|0;g[$>>2]=E;G=+g[q+72>>2];g[f+4>>2]=G;U=+g[q+76>>2];g[f+8>>2]=U;p=o|0;g[p>>2]=_-E;g[o+4>>2]=Z-G;g[o+8>>2]=Y-U;Q=~~+wB(p);X=j|0;g[X>>2]=E- +g[7094067];S=j+4|0;g[S>>2]=G- +g[7094068];z=j+8|0;g[z>>2]=U- +g[7094069];+wB(X);B=k|0;g[B>>2]=_- +g[7094067];C=k+4|0;g[C>>2]=Z- +g[7094068];T=k+8|0;g[T>>2]=Y- +g[7094069];+wB(B);e=n|0;Y=+g[S>>2];Z=+g[T>>2];_=+g[z>>2];U=+g[C>>2];g[e>>2]=Y*Z-_*U;G=+g[B>>2];E=+g[X>>2];X=n+4|0;g[X>>2]=_*G-Z*E;B=n+8|0;g[B>>2]=U*E-Y*G;+wB(e);G=+(Q|0);Q=b|0;C=b+4|0;z=b+8|0;GU($,w,e,G,8.0);xB(Q,p,e,45.0);g[e>>2]=+g[Q>>2];g[X>>2]=+g[C>>2];g[B>>2]=+g[z>>2];GU($,w,e,G,8.0);xB(Q,p,e,45.0);g[e>>2]=+g[Q>>2];g[X>>2]=+g[C>>2];g[B>>2]=+g[z>>2];GU($,w,e,G,8.0);xB(Q,p,e,45.0);g[e>>2]=+g[Q>>2];g[X>>2]=+g[C>>2];g[B>>2]=+g[z>>2];GU($,w,e,G,8.0);xB(Q,p,e,45.0);i=a;return};case 4:{G=+g[q+84>>2];e=f|0;g[e>>2]=G;Y=+g[q+88>>2];g[f+4>>2]=Y;E=+g[q+92>>2];g[f+8>>2]=E;U=+g[q+68>>2];f=h|0;g[f>>2]=U;Z=+g[q+72>>2];g[h+4>>2]=Z;_=+g[q+76>>2];g[h+8>>2]=_;h=o|0;g[h>>2]=U-G;g[o+4>>2]=Z-Y;g[o+8>>2]=_-E;o=~~+wB(h);h=j|0;g[h>>2]=G- +g[7094067];q=j+4|0;g[q>>2]=Y- +g[7094068];p=j+8|0;g[p>>2]=E- +g[7094069];+wB(h);j=k|0;g[j>>2]=U- +g[7094067];Q=k+4|0;g[Q>>2]=Z- +g[7094068];w=k+8|0;g[w>>2]=_- +g[7094069];+wB(j);k=n|0;_=+g[q>>2];Z=+g[w>>2];U=+g[p>>2];E=+g[Q>>2];g[k>>2]=_*Z-U*E;Y=+g[j>>2];G=+g[h>>2];g[n+4>>2]=U*Y-Z*G;g[n+8>>2]=E*G-_*Y;+wB(k);GU(e,f,k,+(o|0),+(c[(c[4917372]|0)+32>>2]|0));i=a;return};default:{i=a;return}}}function EU(a){a=a|0;FU(c[a+104>>2]|0,c[a+108>>2]|0,c[a+80>>2]|0,c[a+72>>2]|0,c[a+92>>2]|0,c[a+96>>2]|0,c[a+100>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0,0)|0;return}function FU(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|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=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;if((a|0)==0|(b|0)==0){l=0;return l|0}do{if((k|0)!=0){m=c[340894]|0;n=c[m+208>>2]|0;do{if((n|0)!=0){if((n|0)>1){l=0;return l|0}o=c[m+212>>2]|0;if((o|0)==1|(o|0)==3){break}else{l=0}return l|0}}while(0);if((c[m+100>>2]|0)!=0){l=0;return l|0}if((c[m+176>>2]|0)==0){break}else{l=0}return l|0}}while(0);if((c[5120125]|0)==(a|0)){if((c[5120126]|0)!=(b|0)|(c[340905]|0)>16383){p=10}}else{p=10}if((p|0)==10){zT();wT(c[340894]|0,c[340896]|0,c[340897]|0);PU(a);RU(b)}if(!((c[325890]|0)==(a|0)|(c[325891]|0)==(b|0))){c[325892]=0}c[340898]=c[340898]|i;c[340899]=c[340899]|j;j=f<<2|0;i=f+e<<2|0;f=c[(c[4917418]|0)+32>>2]|0;do{if((f|0)==0){q=1;r=1;p=25}else{b=c[340905]|0;a=(f|0)==1&(b|0)!=0?b-1|0:0;if((a|0)>=(b|0)){q=1;r=1;p=25;break}k=j;n=-1;o=-1;s=a;do{o=(c[1494696+(s<<2)>>2]|0)==(k|0)?s:o;n=(i|0)==(c[1429160+(s<<2)>>2]|0)?s:n;s=s+1|0;}while((s|0)<(b|0));b=(o|0)!=-1;s=(n|0)==-1;if(b&s){k=1363624+(o<<2)|0;m=(c[k>>2]|0)+e|0;c[k>>2]=m;c[1494696+(o<<2)>>2]=(c[1429160+(o<<2)>>2]|0)+(m<<2);m=1560232+(o<<2)|0;k=c[m>>2]|0;c[m>>2]=k>>>0>>0?k:g;k=1625768+(o<<2)|0;m=c[k>>2]|0;c[k>>2]=m>>>0>h>>>0?m:h;c[7094294]=(c[7094294]|0)+1;break}m=(o|0)==-1;if(!(s|m^1)){k=1363624+(n<<2)|0;a=(c[k>>2]|0)+e|0;c[k>>2]=a;k=j;c[1429160+(n<<2)>>2]=k;c[1494696+(n<<2)>>2]=k+(a<<2);a=1560232+(n<<2)|0;k=c[a>>2]|0;c[a>>2]=k>>>0>>0?k:g;k=1625768+(n<<2)|0;a=c[k>>2]|0;c[k>>2]=a>>>0>h>>>0?a:h;c[7094294]=(c[7094294]|0)+1;break}if(s|b^1){q=m;r=s;p=25;break}s=1363624+(n<<2)|0;m=1363624+(o<<2)|0;b=(c[s>>2]|0)+e+(c[m>>2]|0)|0;c[m>>2]=b;c[1494696+(o<<2)>>2]=(c[1429160+(o<<2)>>2]|0)+(b<<2);b=1560232+(o<<2)|0;m=c[b>>2]|0;a=c[1560232+(n<<2)>>2]|0;k=a>>>0>>0?a:g;c[b>>2]=m>>>0>>0?m:k;k=1625768+(o<<2)|0;m=c[k>>2]|0;b=c[1625768+(n<<2)>>2]|0;a=b>>>0>h>>>0?b:h;c[k>>2]=m>>>0>a>>>0?m:a;a=(c[340905]|0)-1|0;c[340905]=a;if((n|0)!=(a|0)){c[s>>2]=c[1363624+(a<<2)>>2];c[1429160+(n<<2)>>2]=c[1429160+(c[340905]<<2)>>2]}c[7094294]=(c[7094294]|0)+2}}while(0);do{if((p|0)==25){if(!(q&r)){break}c[1363624+(c[340905]<<2)>>2]=e;c[1429160+(c[340905]<<2)>>2]=j;c[1494696+(c[340905]<<2)>>2]=i;c[1560232+(c[340905]<<2)>>2]=g;c[1625768+(c[340905]<<2)>>2]=h;c[340905]=(c[340905]|0)+1}}while(0);c[7094293]=(c[7094293]|0)+1;c[340901]=(c[340901]|0)+e;c[340902]=(c[340902]|0)+d;l=1;return l|0}function GU(a,b,e,f,h){a=a|0;b=b|0;e=e|0;f=+f;h=+h;var i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=f*.00390625;j=c[340902]|0;k=j+4|0;do{if((k|0)>999){l=5}else{if(((c[340901]|0)+6|0)<=5999){m=j;break}if((k|0)>=1e3){l=5;break}if(((c[340901]|0)+6|0)<6e3){m=j}else{l=5}}}while(0);if((l|0)==5){zT();wT(c[340894]|0,c[340896]|0,c[340897]|0);m=c[340902]|0}f=-0.0-h;g[1243560+(m<<4)>>2]=+g[a>>2]+ +g[e>>2]*h;l=a+4|0;j=e+4|0;k=c[340902]|0;g[1243564+(k<<4)>>2]=+g[l>>2]+ +g[j>>2]*h;n=a+8|0;o=e+8|0;g[1243568+(k<<4)>>2]=+g[n>>2]+ +g[o>>2]*h;g[1267560+(k<<4)>>2]=0.0;k=c[340902]|0;g[1267564+(k<<4)>>2]=0.0;p=c[7094307]|0;q=p+116|0;g[1283560+(k<<4)>>2]=+(d[q]|0|0)*.25/255.0;k=p+117|0;r=c[340902]|0;g[1283564+(r<<4)>>2]=+(d[k]|0|0)*.25/255.0;s=p+118|0;g[1283568+(r<<4)>>2]=+(d[s]|0|0)*.25/255.0;p=r+1|0;c[340902]=p;g[1243560+(p<<4)>>2]=+g[a>>2]+ +g[e>>2]*f;a=c[340902]|0;g[1243564+(a<<4)>>2]=+g[l>>2]+ +g[j>>2]*f;g[1243568+(a<<4)>>2]=+g[n>>2]+ +g[o>>2]*f;g[1267560+(a<<4)>>2]=0.0;a=c[340902]|0;g[1267564+(a<<4)>>2]=1.0;g[1283560+(a<<4)>>2]=+(d[q]|0|0)/255.0;q=c[340902]|0;g[1283564+(q<<4)>>2]=+(d[k]|0|0)/255.0;g[1283568+(q<<4)>>2]=+(d[s]|0|0)/255.0;s=q+1|0;c[340902]=s;g[1243560+(s<<4)>>2]=+g[b>>2]+ +g[e>>2]*h;s=b+4|0;q=c[340902]|0;g[1243564+(q<<4)>>2]=+g[s>>2]+ +g[j>>2]*h;k=b+8|0;g[1243568+(q<<4)>>2]=+g[k>>2]+ +g[o>>2]*h;g[1267560+(q<<4)>>2]=i;q=c[340902]|0;g[1267564+(q<<4)>>2]=0.0;a=c[7094307]|0;n=a+116|0;g[1283560+(q<<4)>>2]=+(d[n]|0|0)/255.0;q=a+117|0;l=c[340902]|0;g[1283564+(l<<4)>>2]=+(d[q]|0|0)/255.0;p=a+118|0;g[1283568+(l<<4)>>2]=+(d[p]|0|0)/255.0;a=l+1|0;c[340902]=a;g[1243560+(a<<4)>>2]=+g[b>>2]+ +g[e>>2]*f;e=c[340902]|0;g[1243564+(e<<4)>>2]=+g[s>>2]+ +g[j>>2]*f;g[1243568+(e<<4)>>2]=+g[k>>2]+ +g[o>>2]*f;g[1267560+(e<<4)>>2]=i;e=c[340902]|0;g[1267564+(e<<4)>>2]=1.0;g[1283560+(e<<4)>>2]=+(d[n]|0|0)/255.0;n=c[340902]|0;g[1283564+(n<<4)>>2]=+(d[q]|0|0)/255.0;g[1283568+(n<<4)>>2]=+(d[p]|0|0)/255.0;c[340902]=n+1;n=c[340901]|0;c[340901]=n+1;c[1219560+(n<<2)>>2]=m;n=m+1|0;p=c[340901]|0;c[340901]=p+1;c[1219560+(p<<2)>>2]=n;p=m+2|0;q=c[340901]|0;c[340901]=q+1;c[1219560+(q<<2)>>2]=p;q=c[340901]|0;c[340901]=q+1;c[1219560+(q<<2)>>2]=p;p=c[340901]|0;c[340901]=p+1;c[1219560+(p<<2)>>2]=n;n=c[340901]|0;c[340901]=n+1;c[1219560+(n<<2)>>2]=m+3;return}function HU(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;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;j=i;k=c[325890]|0;l=c[325891]|0;if((c[5120125]|0)==(k|0)){if((c[5120126]|0)!=(l|0)|(c[340905]|0)>16383){m=3}}else{m=3}do{if((m|0)==3){zT();wT(c[340894]|0,c[340896]|0,c[340897]|0);PU(k);RU(l);if((c[325890]|0)==(k|0)|(c[325891]|0)==(l|0)){break}c[325892]=0}}while(0);l=(c[340902]|0)+a|0;do{if((l|0)>999){m=9}else{if(((c[340901]|0)+d|0)<=5999){break}if((l|0)>=1e3){m=9;break}if(((c[340901]|0)+d|0)>=6e3){m=9}}}while(0);do{if((m|0)==9){zT();if((a|0)>999){Tk[c[4886345]&255](1,100784,(n=i,i=i+16|0,c[n>>2]=a,c[n+8>>2]=1e3,n)|0);i=n}if((d|0)>5999){Tk[c[4886345]&255](1,163728,(n=i,i=i+16|0,c[n>>2]=d,c[n+8>>2]=6e3,n)|0);i=n}else{wT(c[340894]|0,c[340896]|0,c[340897]|0);break}}}while(0);a:do{if((d|0)>0){n=1;m=e;l=1219560+(c[340901]<<2)|0;while(1){c[l>>2]=(c[m>>2]|0)+(c[340902]|0);if((n|0)>=(d|0)){break a}n=n+1|0;m=m+4|0;l=l+4|0}}}while(0);c[340901]=(c[340901]|0)+d;d=c[(c[340894]|0)+204>>2]|0;if((d&1|0)!=0&(a|0)>0){e=0;l=b;m=1243560+(c[340902]<<4)|0;while(1){g[m>>2]=+g[l>>2];g[m+4>>2]=+g[l+4>>2];g[m+8>>2]=+g[l+8>>2];n=e+1|0;if((n|0)<(a|0)){e=n;l=l+84|0;m=m+16|0}else{break}}}if((d&16|0)!=0&(a|0)>0){m=0;l=b;e=1259560+(c[340902]<<2)|0;while(1){c[e>>2]=JU(l+28|0)|0;n=m+1|0;if((n|0)<(a|0)){m=n;l=l+84|0;e=e+4|0}else{break}}o=c[(c[340894]|0)+204>>2]|0}else{o=d}if((o&8|0)!=0&(a|0)>0){d=0;e=b;l=1263560+(c[340902]<<2)|0;while(1){c[l>>2]=IU(e+40|0)|0;m=d+1|0;if((m|0)<(a|0)){d=m;e=e+84|0;l=l+4|0}else{break}}p=c[(c[340894]|0)+204>>2]|0}else{p=o}if((p&2|0)!=0&(a|0)>0){o=0;l=b;e=1267560+(c[340902]<<4)|0;while(1){g[e>>2]=+g[l+12>>2];g[e+4>>2]=+g[l+16>>2];d=o+1|0;if((d|0)<(a|0)){o=d;l=l+84|0;e=e+16|0}else{break}}}if((p&4|0)!=0&(a|0)>0){e=0;l=b;o=1267568+(c[340902]<<4)|0;while(1){g[o>>2]=+g[l+20>>2];g[o+4>>2]=+g[l+24>>2];d=e+1|0;if((d|0)<(a|0)){e=d;l=l+84|0;o=o+16|0}else{break}}}if((p&32|0)!=0&(a|0)>0){o=0;l=b;e=1283560+(c[340902]<<4)|0;while(1){g[e>>2]=+g[l+68>>2];g[e+4>>2]=+g[l+72>>2];g[e+8>>2]=+g[l+76>>2];g[e+12>>2]=+g[l+80>>2];d=o+1|0;if((d|0)<(a|0)){o=d;l=l+84|0;e=e+16|0}else{break}}}if(!((p&128|0)!=0&(a|0)>0)){q=c[340898]|0;r=q|f;c[340898]=r;s=c[340899]|0;t=s|h;c[340899]=t;u=c[340902]|0;v=u+a|0;c[340902]=v;i=j;return}p=0;e=b;b=1299560+(c[340902]<<2)|0;while(1){c[b>>2]=JU(e+56|0)|0;l=p+1|0;if((l|0)<(a|0)){p=l;e=e+84|0;b=b+4|0}else{break}}q=c[340898]|0;r=q|f;c[340898]=r;s=c[340899]|0;t=s|h;c[340899]=t;u=c[340902]|0;v=u+a|0;c[340902]=v;i=j;return}function IU(a){a=a|0;var b=0.0,d=0;b=+g[a+12>>2];if((c[5120198]|0)==33640){d=~~(+g[a+8>>2]*511.5+512.0)<<20|~~(b*1.5+2.0)<<30|~~(+g[a+4>>2]*511.5+512.0)<<10|~~(+g[a>>2]*511.5+512.0);return d|0}else{d=~~(+g[a+8>>2]*127.5+128.0)<<16|~~(b*127.5+128.0)<<24|~~(+g[a+4>>2]*127.5+128.0)<<8|~~(+g[a>>2]*127.5+128.0);return d|0}return 0}function JU(a){a=a|0;var b=0.0,d=0;b=+g[a+8>>2];if((c[5120198]|0)==33640){d=~~(+g[a+4>>2]*511.5+512.0)<<10|~~(b*511.5+512.0)<<20|~~(+g[a>>2]*511.5+512.0);return d|0}else{d=~~(+g[a+4>>2]*127.5+128.0)<<8|~~(b*127.5+128.0)<<16|~~(+g[a>>2]*127.5+128.0);return d|0}return 0}function KU(a,b){a=a|0;b=b|0;if((c[5120198]|0)==33640){g[a>>2]=+((b&1023)>>>0>>>0)/511.5+-1.0;g[a+4>>2]=+((b>>>10&1023)>>>0>>>0)/511.5+-1.0;g[a+8>>2]=+((b>>>20&1023)>>>0>>>0)/511.5+-1.0;return}else{g[a>>2]=+((b&255)>>>0>>>0)/127.5+-1.0;g[a+4>>2]=+((b>>>8&255)>>>0>>>0)/127.5+-1.0;g[a+8>>2]=+((b>>>16&255)>>>0>>>0)/127.5+-1.0;return}}function LU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if((e|0)==1){g=35048}else if((e|0)==0){g=35044}else{Ur(0,100512,(h=i,i=i+8|0,c[h>>2]=e,h)|0);i=h;return 0}if((o$(a|0)|0)>>>0>63>>>0){Tk[c[4886345]&255](1,163648,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;return 0}if((c[256967]|0)==4096){Tk[c[4886345]&255](1,139552,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;return 0}else{MP();h=Kk[c[4886347]&255](140,1)|0;e=h;c[1027872+(c[256967]<<2)>>2]=e;c[256967]=(c[256967]|0)+1;n$(h|0,0,140)|0;TB(h,a,64);c[h+68>>2]=d;a=h+64|0;hk[c[4920044]&255](1,a);hk[c[4920092]&255](34962,c[a>>2]|0);Yk[c[4920084]&255](34962,d,b,g);hk[c[4920092]&255](34962,0);c[5120125]=0;KR(125760,148);i=f;return e|0}return 0}function MU(b,e,f,h,j){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;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,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.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,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;k=i;if((j|0)==0){l=35044}else if((j|0)==1){l=35048}else{Ur(0,100512,(m=i,i=i+8|0,c[m>>2]=j,m)|0);i=m;return 0}if((e|0)==0){n=0;i=k;return n|0}if((o$(b|0)|0)>>>0>63>>>0){Tk[c[4886345]&255](1,115368,(m=i,i=i+8|0,c[m>>2]=b,m)|0);i=m;return 0}if((c[256967]|0)==4096){Tk[c[4886345]&255](1,105488,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;return 0}MP();m=Kk[c[4886347]&255](140,1)|0;o=m;c[1027872+(c[256967]<<2)>>2]=o;c[256967]=(c[256967]|0)+1;n$(m|0,0,140)|0;TB(m,b,64);do{if((j|0)==0){c[m+72>>2]=0;b=(h&16|0)!=0;if(b){c[m+76>>2]=12;p=16}else{p=12}q=(h&8|0)!=0;if(q){c[m+96>>2]=p;r=p+4|0}else{r=p}s=(h&2|0)!=0;if(s){c[m+80>>2]=r;t=r+8|0}else{t=r}u=(h&4|0)!=0;if(u){c[m+84>>2]=t;v=t+8|0}else{v=t}w=(h&32|0)!=0;if(w){c[m+88>>2]=v;x=v+16|0}else{x=v}y=(h&128|0)!=0;if(y){c[m+92>>2]=x;A=x+4|0}else{A=x}c[m+100>>2]=A;c[m+104>>2]=A;c[m+124>>2]=A;c[m+108>>2]=A;c[m+112>>2]=A;c[m+116>>2]=A;c[m+120>>2]=A;B=da(A,e)|0;C=jk[c[4886348]&255](B)|0;if((e|0)>0){D=0;E=0}else{F=C;G=B;break}while(1){m$(C+D|0,f+(E*84|0)|0,12)|0;H=D+12|0;if(b){I=f+(E*84|0)+28|0;J=+g[f+(E*84|0)+36>>2];if((c[5120198]|0)==33640){K=~~(+g[f+(E*84|0)+32>>2]*511.5+512.0)<<10|~~(J*511.5+512.0)<<20|~~(+g[I>>2]*511.5+512.0)}else{K=~~(+g[f+(E*84|0)+32>>2]*127.5+128.0)<<8|~~(J*127.5+128.0)<<16|~~(+g[I>>2]*127.5+128.0)}c[C+H>>2]=K;L=D+16|0}else{L=H}if(q){H=f+(E*84|0)+40|0;J=+g[f+(E*84|0)+52>>2];if((c[5120198]|0)==33640){M=~~(+g[f+(E*84|0)+48>>2]*511.5+512.0)<<20|~~(J*1.5+2.0)<<30|~~(+g[f+(E*84|0)+44>>2]*511.5+512.0)<<10|~~(+g[H>>2]*511.5+512.0)}else{M=~~(+g[f+(E*84|0)+48>>2]*127.5+128.0)<<16|~~(J*127.5+128.0)<<24|~~(+g[f+(E*84|0)+44>>2]*127.5+128.0)<<8|~~(+g[H>>2]*127.5+128.0)}c[C+L>>2]=M;N=L+4|0}else{N=L}if(s){H=f+(E*84|0)+12|0;I=C+N|0;O=H|0;P=H+4|0;H=d[P]|d[P+1|0]<<8|d[P+2|0]<<16|d[P+3|0]<<24|0;P=I|0;z=d[O]|d[O+1|0]<<8|d[O+2|0]<<16|d[O+3|0]<<24|0;a[P]=z;z=z>>8;a[P+1|0]=z;z=z>>8;a[P+2|0]=z;z=z>>8;a[P+3|0]=z;P=I+4|0;z=H;a[P]=z;z=z>>8;a[P+1|0]=z;z=z>>8;a[P+2|0]=z;z=z>>8;a[P+3|0]=z;Q=N+8|0}else{Q=N}if(u){P=f+(E*84|0)+20|0;H=C+Q|0;I=P|0;O=P+4|0;P=d[O]|d[O+1|0]<<8|d[O+2|0]<<16|d[O+3|0]<<24|0;O=H|0;z=d[I]|d[I+1|0]<<8|d[I+2|0]<<16|d[I+3|0]<<24|0;a[O]=z;z=z>>8;a[O+1|0]=z;z=z>>8;a[O+2|0]=z;z=z>>8;a[O+3|0]=z;O=H+4|0;z=P;a[O]=z;z=z>>8;a[O+1|0]=z;z=z>>8;a[O+2|0]=z;z=z>>8;a[O+3|0]=z;R=Q+8|0}else{R=Q}if(w){m$(C+R|0,f+(E*84|0)+68|0,16)|0;S=R+16|0}else{S=R}if(y){O=f+(E*84|0)+56|0;J=+g[f+(E*84|0)+64>>2];if((c[5120198]|0)==33640){T=~~(+g[f+(E*84|0)+60>>2]*511.5+512.0)<<10|~~(J*511.5+512.0)<<20|~~(+g[O>>2]*511.5+512.0)}else{T=~~(+g[f+(E*84|0)+60>>2]*127.5+128.0)<<8|~~(J*127.5+128.0)<<16|~~(+g[O>>2]*127.5+128.0)}c[C+S>>2]=T;U=S+4|0}else{U=S}O=E+1|0;if((O|0)<(e|0)){D=U;E=O}else{F=C;G=B;break}}}else{B=h&16;C=(B|0)==0;y=B>>>2;B=(h&8|0)!=0;w=B?y|16:y+12|0;y=(h&2|0)!=0;u=y?w+8|0:w;w=(h&4|0)!=0;s=w?u+8|0:u;u=(h&32|0)!=0;q=u?s+16|0:s;s=(h&128|0)!=0;b=da(s?q+4|0:q,e)|0;q=jk[c[4886348]&255](b)|0;O=m+76|0;P=m+96|0;H=m+80|0;I=m+84|0;V=m+88|0;W=m+92|0;n$(m+72|0,0,28)|0;c[m+100>>2]=12;c[m+104>>2]=4;c[m+124>>2]=4;c[m+116>>2]=16;c[m+108>>2]=8;c[m+112>>2]=8;c[m+120>>2]=4;X=(e|0)>0;if(X){Y=0;Z=0;while(1){m$(q+Y|0,f+(Z*84|0)|0,12)|0;_=Z+1|0;if((_|0)<(e|0)){Y=Y+12|0;Z=_}else{break}}$=e*12|0}else{$=0}do{if(C){aa=$}else{c[O>>2]=$;if(!X){aa=$;break}Z=e<<2;Y=$;_=0;while(1){ba=f+(_*84|0)+28|0;J=+g[f+(_*84|0)+36>>2];if((c[5120198]|0)==33640){ca=~~(+g[f+(_*84|0)+32>>2]*511.5+512.0)<<10|~~(J*511.5+512.0)<<20|~~(+g[ba>>2]*511.5+512.0)}else{ca=~~(+g[f+(_*84|0)+32>>2]*127.5+128.0)<<8|~~(J*127.5+128.0)<<16|~~(+g[ba>>2]*127.5+128.0)}c[q+Y>>2]=ca;ba=_+1|0;if((ba|0)<(e|0)){Y=Y+4|0;_=ba}else{break}}aa=$+Z|0}}while(0);do{if(B){c[P>>2]=aa;if(!X){ea=aa;break}O=e<<2;C=aa;_=0;while(1){Y=f+(_*84|0)+40|0;J=+g[f+(_*84|0)+52>>2];if((c[5120198]|0)==33640){fa=~~(+g[f+(_*84|0)+48>>2]*511.5+512.0)<<20|~~(J*1.5+2.0)<<30|~~(+g[f+(_*84|0)+44>>2]*511.5+512.0)<<10|~~(+g[Y>>2]*511.5+512.0)}else{fa=~~(+g[f+(_*84|0)+48>>2]*127.5+128.0)<<16|~~(J*127.5+128.0)<<24|~~(+g[f+(_*84|0)+44>>2]*127.5+128.0)<<8|~~(+g[Y>>2]*127.5+128.0)}c[q+C>>2]=fa;Y=_+1|0;if((Y|0)<(e|0)){C=C+4|0;_=Y}else{break}}ea=aa+O|0}else{ea=aa}}while(0);do{if(y){c[H>>2]=ea;if(!X){ga=ea;break}P=e<<3;B=ea;_=0;while(1){C=f+(_*84|0)+12|0;Z=q+B|0;Y=C|0;ba=C+4|0;C=d[ba]|d[ba+1|0]<<8|d[ba+2|0]<<16|d[ba+3|0]<<24|0;ba=Z|0;z=d[Y]|d[Y+1|0]<<8|d[Y+2|0]<<16|d[Y+3|0]<<24|0;a[ba]=z;z=z>>8;a[ba+1|0]=z;z=z>>8;a[ba+2|0]=z;z=z>>8;a[ba+3|0]=z;ba=Z+4|0;z=C;a[ba]=z;z=z>>8;a[ba+1|0]=z;z=z>>8;a[ba+2|0]=z;z=z>>8;a[ba+3|0]=z;ba=_+1|0;if((ba|0)<(e|0)){B=B+8|0;_=ba}else{break}}ga=ea+P|0}else{ga=ea}}while(0);do{if(w){c[I>>2]=ga;if(!X){ha=ga;break}H=e<<3;y=ga;_=0;while(1){B=f+(_*84|0)+20|0;O=q+y|0;ba=B|0;C=B+4|0;B=d[C]|d[C+1|0]<<8|d[C+2|0]<<16|d[C+3|0]<<24|0;C=O|0;z=d[ba]|d[ba+1|0]<<8|d[ba+2|0]<<16|d[ba+3|0]<<24|0;a[C]=z;z=z>>8;a[C+1|0]=z;z=z>>8;a[C+2|0]=z;z=z>>8;a[C+3|0]=z;C=O+4|0;z=B;a[C]=z;z=z>>8;a[C+1|0]=z;z=z>>8;a[C+2|0]=z;z=z>>8;a[C+3|0]=z;C=_+1|0;if((C|0)<(e|0)){y=y+8|0;_=C}else{break}}ha=ga+H|0}else{ha=ga}}while(0);do{if(u){c[V>>2]=ha;if(!X){ia=ha;break}I=e<<4;w=ha;_=0;while(1){m$(q+w|0,f+(_*84|0)+68|0,16)|0;y=_+1|0;if((y|0)<(e|0)){w=w+16|0;_=y}else{break}}ia=ha+I|0}else{ia=ha}}while(0);if(!s){F=q;G=b;break}c[W>>2]=ia;if(X){ja=ia;ka=0}else{F=q;G=b;break}while(1){V=f+(ka*84|0)+56|0;J=+g[f+(ka*84|0)+64>>2];if((c[5120198]|0)==33640){la=~~(+g[f+(ka*84|0)+60>>2]*511.5+512.0)<<10|~~(J*511.5+512.0)<<20|~~(+g[V>>2]*511.5+512.0)}else{la=~~(+g[f+(ka*84|0)+60>>2]*127.5+128.0)<<8|~~(J*127.5+128.0)<<16|~~(+g[V>>2]*127.5+128.0)}c[q+ja>>2]=la;V=ka+1|0;if((V|0)<(e|0)){ja=ja+4|0;ka=V}else{F=q;G=b;break}}}}while(0);c[m+68>>2]=G;ka=m+64|0;hk[c[4920044]&255](1,ka);hk[c[4920092]&255](34962,c[ka>>2]|0);Yk[c[4920084]&255](34962,G,F,l);hk[c[4920092]&255](34962,0);c[5120125]=0;KR(125760,489);vk[c[4886349]&511](F);n=o;i=k;return n|0}function NU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if((e|0)==1){g=35048}else if((e|0)==0){g=35044}else{Ur(0,100512,(h=i,i=i+8|0,c[h>>2]=e,h)|0);i=h;return 0}if((o$(a|0)|0)>>>0>63>>>0){Tk[c[4886345]&255](1,62184,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;return 0}if((c[261064]|0)==4096){Tk[c[4886345]&255](1,54496,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;return 0}else{MP();h=Kk[c[4886347]&255](72,1)|0;e=h;c[1044260+(c[261064]<<2)>>2]=e;c[261064]=(c[261064]|0)+1;TB(h,a,64);c[h+68>>2]=d;a=h+64|0;hk[c[4920044]&255](1,a);hk[c[4920092]&255](34963,c[a>>2]|0);Yk[c[4920084]&255](34963,d,b,g);hk[c[4920092]&255](34963,0);c[5120126]=0;KR(125760,549);i=f;return e|0}return 0}function OU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;if((e|0)==1){g=35048}else if((e|0)==0){g=35044}else{Ur(0,100512,(h=i,i=i+8|0,c[h>>2]=e,h)|0);i=h;return 0}if((b|0)==0){j=0;i=f;return j|0}if((o$(a|0)|0)>>>0>63>>>0){Tk[c[4886345]&255](1,48496,(h=i,i=i+8|0,c[h>>2]=a,h)|0);i=h;return 0}if((c[261064]|0)==4096){Tk[c[4886345]&255](1,44248,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;return 0}MP();h=Kk[c[4886347]&255](72,1)|0;e=h;c[1044260+(c[261064]<<2)>>2]=e;c[261064]=(c[261064]|0)+1;TB(h,a,64);a=b<<2;k=jk[c[4886348]&255](a)|0;l=k;if((b|0)>0){m=0;do{c[l+(m<<2)>>2]=c[d+(m<<2)>>2];m=m+1|0;}while((m|0)<(b|0))}c[h+68>>2]=a;b=h+64|0;hk[c[4920044]&255](1,b);hk[c[4920092]&255](34963,c[b>>2]|0);Yk[c[4920084]&255](34963,a,k,g);hk[c[4920092]&255](34963,0);c[5120126]=0;KR(125760,622);vk[c[4886349]&511](k);j=e;i=f;return j|0}function PU(a){a=a|0;var b=0,d=0,e=0;b=i;if((a|0)==0){Tk[c[4886345]&255](1,183336,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}if((c[(c[4917434]|0)+32>>2]|0)!=0){e=pC(179344,(d=i,i=i+8|0,c[d>>2]=a,d)|0)|0;i=d;cV(e)}if((c[5120125]|0)==(a|0)){i=b;return}c[5120125]=a;n$(20480472,0,20)|0;hk[c[4920092]&255](34962,c[a+64>>2]|0);c[7094287]=(c[7094287]|0)+1;i=b;return}function QU(){cV(174944);if((c[5120125]|0)==0){KR(125760,680);return}hk[c[4920092]&255](34962,0);c[5120125]=0;KR(125760,680);return}function RU(a){a=a|0;var b=0,d=0,e=0;b=i;if((a|0)==0){Tk[c[4886345]&255](1,171488,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}if((c[(c[4917434]|0)+32>>2]|0)!=0){e=pC(168632,(d=i,i=i+8|0,c[d>>2]=a,d)|0)|0;i=d;cV(e)}if((c[5120126]|0)==(a|0)){i=b;return}hk[c[4920092]&255](34963,c[a+64>>2]|0);c[5120126]=a;c[7094288]=(c[7094288]|0)+1;i=b;return}function SU(){cV(165224);if((c[5120126]|0)==0){return}hk[c[4920092]&255](34963,0);c[5120126]=0;c[5120118]=0;return}function TU(){var a=0,b=0;a=i;Tk[c[4886344]&255](0,162088,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;c[256967]=0;c[261064]=0;b=LU(159104,0,6e4,1)|0;c[325890]=b;c[b+72>>2]=0;c[b+76>>2]=16e3;c[b+96>>2]=2e4;c[b+80>>2]=24e3;c[b+84>>2]=24008;c[b+88>>2]=4e4;c[b+92>>2]=56e3;c[b+100>>2]=16;c[b+104>>2]=4;c[b+124>>2]=4;c[b+116>>2]=16;c[b+108>>2]=16;c[b+112>>2]=16;c[b+120>>2]=4;c[325891]=NU(156712,0,24e3,1)|0;cV(174944);if((c[5120125]|0)!=0){hk[c[4920092]&255](34962,0);c[5120125]=0}KR(125760,680);cV(165224);if((c[5120126]|0)==0){KR(125760,789);i=a;return}hk[c[4920092]&255](34963,0);c[5120126]=0;c[5120118]=0;KR(125760,789);i=a;return}function UU(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0;a=i;Tk[c[4886344]&255](0,154496,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;cV(174944);if((c[5120125]|0)!=0){hk[c[4920092]&255](34962,0);c[5120125]=0}KR(125760,680);cV(165224);if((c[5120126]|0)!=0){hk[c[4920092]&255](34963,0);c[5120126]=0;c[5120118]=0}b=c[256967]|0;if((b|0)>0){d=0;e=b;while(1){b=(c[1027872+(d<<2)>>2]|0)+64|0;if((c[b>>2]|0)==0){f=e}else{hk[c[4920070]&255](1,b);f=c[256967]|0}b=d+1|0;if((b|0)<(f|0)){d=b;e=f}else{break}}}f=c[261064]|0;if((f|0)>0){g=0;h=f}else{c[256967]=0;c[261064]=0;i=a;return}while(1){f=(c[1044260+(g<<2)>>2]|0)+64|0;if((c[f>>2]|0)==0){j=h}else{hk[c[4920070]&255](1,f);j=c[261064]|0}f=g+1|0;if((f|0)<(j|0)){g=f;h=j}else{break}}c[256967]=0;c[261064]=0;i=a;return}function VU(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;cV(136544);c[7094292]=(c[7094292]|0)+1;do{if(((c[340902]|0)-1|0)>>>0<1e3>>>0){d=c[325890]|0;if((d|0)==0){Tk[c[4886345]&255](1,183336,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}if((c[(c[4917434]|0)+32>>2]|0)!=0){f=pC(179344,(e=i,i=i+8|0,c[e>>2]=d,e)|0)|0;i=e;cV(f)}if((c[5120125]|0)!=(d|0)){c[5120125]=d;n$(20480472,0,20)|0;hk[c[4920092]&255](34962,c[d+64>>2]|0);c[7094287]=(c[7094287]|0)+1}Yk[c[4920084]&255](34962,c[(c[325890]|0)+68>>2]|0,0,35048);if((a&8191|0)==0){Yk[c[4920082]&255](34962,c[(c[325890]|0)+72>>2]|0,c[340902]<<4,1243560);Yk[c[4920082]&255](34962,c[(c[325890]|0)+80>>2]|0,c[340902]<<4,1267560);Yk[c[4920082]&255](34962,c[(c[325890]|0)+76>>2]|0,c[340902]<<2,1259560);Yk[c[4920082]&255](34962,c[(c[325890]|0)+96>>2]|0,c[340902]<<2,1263560);Yk[c[4920082]&255](34962,c[(c[325890]|0)+88>>2]|0,c[340902]<<4,1283560);Yk[c[4920082]&255](34962,c[(c[325890]|0)+92>>2]|0,c[340902]<<2,1299560);break}if((a&1|0)!=0){Yk[c[4920082]&255](34962,c[(c[325890]|0)+72>>2]|0,c[340902]<<4,1243560)}if((a&6|0)!=0){Yk[c[4920082]&255](34962,c[(c[325890]|0)+80>>2]|0,c[340902]<<4,1267560)}if((a&16|0)!=0){Yk[c[4920082]&255](34962,c[(c[325890]|0)+76>>2]|0,c[340902]<<2,1259560)}if((a&8|0)!=0){Yk[c[4920082]&255](34962,c[(c[325890]|0)+96>>2]|0,c[340902]<<2,1263560)}if((a&32|0)!=0){Yk[c[4920082]&255](34962,c[(c[325890]|0)+88>>2]|0,c[340902]<<4,1283560)}if((a&128|0)==0){break}Yk[c[4920082]&255](34962,c[(c[325890]|0)+92>>2]|0,c[340902]<<2,1299560)}}while(0);if(!(((c[340901]|0)-1|0)>>>0<6e3>>>0)){i=b;return}a=c[325891]|0;if((a|0)==0){Tk[c[4886345]&255](1,171488,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}if((c[(c[4917434]|0)+32>>2]|0)!=0){d=pC(168632,(e=i,i=i+8|0,c[e>>2]=a,e)|0)|0;i=e;cV(d)}if((c[5120126]|0)!=(a|0)){hk[c[4920092]&255](34963,c[a+64>>2]|0);c[5120126]=a;c[7094288]=(c[7094288]|0)+1}Yk[c[4920084]&255](34963,c[(c[325891]|0)+68>>2]|0,0,35048);Yk[c[4920082]&255](34963,0,c[340901]<<2,1219560);i=b;return}function WU(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=c[(SS(c[a+8>>2]|0)|0)+76>>2]|0;if((kS(b|0)|0)==2){return}dS(1014516,a);cS(b);a=b+28|0;d=c[a>>2]|0;if((d|0)<=0){return}e=b+24|0;b=0;f=d;while(1){d=(c[e>>2]|0)+b|0;g=c[253203]|0;h=(c[g+180>>2]|0)+(d<<2)|0;i=c[253194]|0;if((c[h>>2]|0)==(i|0)){j=f}else{c[h>>2]=i;XU((c[g+176>>2]|0)+(d*80|0)|0,c[(c[253357]|0)+144>>2]|0,0);j=c[a>>2]|0}d=b+1|0;if((d|0)<(j|0)){b=d;f=j}else{break}}return}function XU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0,l=0,m=0,n=0.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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;do{if((c[(c[4917410]|0)+32>>2]|0)==0){e=a+12|0;f=c[e>>2]|0;if((f|0)==0){break}do{if((c[c[a+76>>2]>>2]|0)==3){if((c[(c[4917408]|0)+32>>2]|0)==0){break}return}}while(0);if((f&4|0)==0){do{if((f&2|0)==0){h=f}else{i=a+40|0;j=+g[a+52>>2];if((c[253410]|0)==1023){k=nS(i,j)|0}else{k=mS(i,j)|0}if((k|0)==2){return}else{h=c[e>>2]|0;break}}}while(0);if((h&1|0)==0){break}e=a+16|0;if((c[253410]|0)==1023){l=lS(e)|0}else{l=kS(e)|0}if((l|0)!=2){break}return}if((c[(c[4919826]|0)+32>>2]|0)==0){break}e=c[(c[a>>2]|0)+184>>2]|0;if((e|0)==2){break}f=c[253512]|0;if((f&6|0)==0){m=e}else{m=(e|0)==0|0}if((f&16|0)==0){j=+g[253594]*+g[a+56>>2]+ +g[253595]*+g[a+60>>2]+ +g[253596]*+g[a+64>>2];n=+g[a+68>>2];if((m|0)==0){if(!(jn+8.0)){break}return}}else{n=+g[253416]*+g[a+56>>2]+ +g[253417]*+g[a+60>>2]+ +g[253418]*+g[a+64>>2];if((m|0)==0){if(!(n>0.0)){break}return}else{if(!(n<0.0)){break}return}}}}while(0);m=a+12|0;if((b|0)==0){o=0}else{l=c[m>>2]|0;do{if((l&4|0)==0){p=b}else{h=c[253727]|0;if((h|0)<=0){p=b;break}k=c[253728]|0;f=a+56|0;e=a+60|0;i=a+64|0;q=a+68|0;r=b;s=0;while(1){t=1<>2]*+g[f>>2]+ +g[k+(s*44|0)+4>>2]*+g[e>>2]+ +g[k+(s*44|0)+8>>2]*+g[i>>2]- +g[q>>2];j=+g[k+(s*44|0)+24>>2];if(!(n<-0.0-j|n>j)){u=r;break}u=r&~t}}while(0);t=s+1|0;if((t|0)<(h|0)){r=u;s=t}else{p=u;break}}}}while(0);u=c[253727]|0;do{if((l&1|0)==0){v=p;w=48}else{if((u|0)<=0){x=p;break}b=c[253728]|0;s=a+28|0;r=a+16|0;h=a+32|0;k=a+20|0;q=a+36|0;i=a+24|0;e=p;f=0;while(1){t=1<>2];n=+g[b+(f*44|0)+24>>2];do{if(!(j-n>+g[s>>2])){if(j+n<+g[r>>2]){break}z=+g[b+(f*44|0)+4>>2];if(z-n>+g[h>>2]){break}if(n+z<+g[k>>2]){break}z=+g[b+(f*44|0)+8>>2];if(z-n>+g[q>>2]){break}if(!(n+z<+g[i>>2])){y=e;break a}}}while(0);y=e&~t}}while(0);t=f+1|0;if((t|0)<(u|0)){e=y;f=t}else{v=y;w=48;break}}}}while(0);do{if((w|0)==48){if(!((l&2|0)!=0&(u|0)>0)){x=v;break}y=a+40|0;p=a+52|0;f=v;e=0;while(1){i=1<>2],y,+g[p>>2])|0)!=0){A=f;break}A=f&~i}}while(0);i=e+1|0;if((i|0)<(c[253727]|0)){f=A;e=i}else{x=A;break}}}}while(0);A=c[a+76>>2]|0;v=c[A>>2]|0;do{if((v|0)==2|(v|0)==3|(v|0)==4|(v|0)==11){c[A+4>>2]=x;if((x|0)==0){w=57;break}c[253825]=(c[253825]|0)+1;B=x}else{w=57}}while(0);if((w|0)==57){c[253826]=(c[253826]|0)+1;B=0}o=(B|0)!=0|0}B=c[m>>2]|0;x=c[253734]|0;do{if((B&4|0)==0){C=d;w=66}else{if((x|0)<=0){D=d;break}A=c[253735]|0;v=a+56|0;u=a+60|0;l=a+64|0;e=a+68|0;f=d;p=0;while(1){y=1<>2]*+g[v>>2]+ +g[A+(p<<8)+224>>2]*+g[u>>2]+ +g[A+(p<<8)+228>>2]*+g[l>>2]- +g[e>>2];j=+g[A+(p<<8)+232>>2];if(!(n<-0.0-j|n>j)){E=f;break}E=f&~y}}while(0);y=p+1|0;if((y|0)<(x|0)){f=E;p=y}else{C=E;w=66;break}}}}while(0);do{if((w|0)==66){if((B&1|0)!=0&(x|0)>0){E=a+28|0;d=a+16|0;p=a+32|0;f=a+20|0;A=a+36|0;e=a+24|0;l=C;u=0;while(1){v=1<>2];n=+g[y+(u<<8)+232>>2];do{if(!(j-n>+g[E>>2])){if(j+n<+g[d>>2]){break}z=+g[y+(u<<8)+224>>2];if(z-n>+g[p>>2]){break}if(n+z<+g[f>>2]){break}z=+g[y+(u<<8)+228>>2];if(z-n>+g[A>>2]){break}if(n+z<+g[e>>2]){break}if((IB(d,E,y+(u<<8)+236|0)|0)!=2){F=l;break b}}}while(0);F=l&~v}}while(0);v=u+1|0;G=c[253734]|0;if((v|0)<(G|0)){l=F;u=v}else{break}}H=F;I=c[m>>2]|0;J=G}else{H=C;I=B;J=x}if(!((I&2|0)!=0&(J|0)>0)){D=H;break}u=a+40|0;l=a+52|0;E=a+44|0;d=a+48|0;e=H;A=0;while(1){f=1<>2],u,+g[l>>2])|0)!=0){if(!(+g[u>>2]*+g[p+(A<<8)+236>>2]+ +g[E>>2]*+g[p+(A<<8)+240>>2]+ +g[d>>2]*+g[p+(A<<8)+244>>2]- +g[p+(A<<8)+248>>2]<-0.0- +g[l>>2])){K=e;break}}K=e&~f}}while(0);f=A+1|0;if((f|0)<(c[253734]|0)){e=K;A=f}else{D=K;break}}}}while(0);K=c[a+76>>2]|0;H=c[K>>2]|0;if((H|0)==2|(H|0)==3|(H|0)==4|(H|0)==11){c[K+8>>2]=D;L=D}else{L=0}AS(K,c[a>>2]|0,c[a+4>>2]|0,o,(L|0)!=0|0,c[a+8>>2]|0);return}function YU(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.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;e=i;f=c[253203]|0;if((f|0)==0){Tk[c[4886345]&255](1,139328,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;return 0}j=c[f+164>>2]|0;if((c[j>>2]|0)==-1){k=+g[b>>2];l=+g[b+4>>2];m=+g[b+8>>2];b=j;while(1){f=c[b+52>>2]|0;n=c[(k*+g[f>>2]+l*+g[f+4>>2]+m*+g[f+8>>2]- +g[f+12>>2]>0.0?b+56|0:b+60|0)>>2]|0;if((c[n>>2]|0)==-1){b=n}else{o=n;break}}}else{o=j}j=jk[c[4886362]&255](c[o+64>>2]|0)|0;o=c[253203]|0;if((o|0)==0){Tk[c[4886345]&255](1,139328,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;return 0}h=c[o+164>>2]|0;if(!((c[h>>2]|0)==-1)){p=h;q=p+64|0;r=c[q>>2]|0;s=r>>3;t=j+s|0;u=a[t]|0;v=u&255;w=r&7;x=1<>2];l=+g[d+4>>2];k=+g[d+8>>2];d=h;while(1){h=c[d+52>>2]|0;o=c[(m*+g[h>>2]+l*+g[h+4>>2]+k*+g[h+8>>2]- +g[h+12>>2]>0.0?d+56|0:d+60|0)>>2]|0;if((c[o>>2]|0)==-1){d=o}else{p=o;break}}q=p+64|0;r=c[q>>2]|0;s=r>>3;t=j+s|0;u=a[t]|0;v=u&255;w=r&7;x=1<>2]|0)==0){i=a;return}if((c[253649]&1|0)!=0){i=a;return}c[253410]=1023;c[253411]=130944;a:do{if((c[253512]&4|0)==0){if((c[(c[4917442]|0)+32>>2]|0)!=0){break}b=c[253203]|0;if((b|0)==0){Tk[c[4886345]&255](1,139328,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}f=c[b+164>>2]|0;if((c[f>>2]|0)==-1){h=+g[253507];j=+g[253508];k=+g[253509];b=f;while(1){l=c[b+52>>2]|0;m=c[(h*+g[l>>2]+j*+g[l+4>>2]+k*+g[l+8>>2]- +g[l+12>>2]>0.0?b+56|0:b+60|0)>>2]|0;if((c[m>>2]|0)==-1){b=m}else{n=m;break}}}else{n=f}b=c[n+64>>2]|0;m=0;while(1){l=m+1|0;if((c[1012728+(m<<2)>>2]|0)==(b|0)){o=m;break}if((l|0)<5){m=l}else{o=l;break}}m=c[253658]|0;do{if((o|0)==5|(m|0)!=0){if((m|0)==0){break}n$(1012728,-2|0,20)|0}else{f=c[4917342]|0;if((c[f+20>>2]|0)!=0){break}do{if((c[1012728+(o<<2)>>2]|0)!=(c[1012728+(c[253181]<<2)>>2]|0)){if((c[f+32>>2]|0)==0){break}l=c[n+68>>2]|0;Tk[c[4886344]&255](0,100184,(e=i,i=i+24|0,c[e>>2]=b,c[e+8>>2]=l,c[e+16>>2]=o,e)|0);i=e}}while(0);c[253181]=o;break a}}while(0);m=((c[253181]|0)+1|0)%5|0;c[253181]=m;f=1012748+(m<<2)|0;c[f>>2]=(c[f>>2]|0)+1;c[1012728+(c[253181]<<2)>>2]=b;f=c[4917342]|0;m=f+20|0;if((c[m>>2]|0)==0){if((c[f+32>>2]|0)!=0){p=23}}else{p=23}do{if((p|0)==23){c[m>>2]=0;if((c[(c[4917342]|0)+32>>2]|0)==0){break}f=c[n+68>>2]|0;Tk[c[4886344]&255](0,163416,(e=i,i=i+16|0,c[e>>2]=b,c[e+8>>2]=f,e)|0);i=e}}while(0);b=c[253203]|0;do{if((c[(c[4917400]|0)+32>>2]|0)==0){m=c[b+296>>2]|0;if((m|0)==0){break}f=c[1012728+(c[253181]<<2)>>2]|0;if((f|0)==-1){break}do{if((f|0)<0){p=35}else{if((c[b+288>>2]|0)<=(f|0)){p=35;break}q=m+(da(c[b+292>>2]|0,f)|0)|0}}while(0);if((p|0)==35){q=c[b+300>>2]|0}f=b+156|0;m=c[f>>2]|0;if((m|0)<=0){break a}l=b+288|0;r=c[b+164>>2]|0;s=0;t=m;while(1){m=c[r+64>>2]|0;do{if((m|0)<0){u=t}else{if((m|0)>=(c[l>>2]|0)){u=t;break}if(((d[q+(m>>3)|0]|0)&1<<(m&7)|0)==0){u=t;break}v=c[r+68>>2]|0;if(((d[1014600+(v>>3)|0]|0)&1<<(v&7)|0)==0){w=r}else{u=t;break}do{v=c[253181]|0;x=w+4+(v<<2)|0;y=c[1012748+(v<<2)>>2]|0;if((c[x>>2]|0)==(y|0)){break}c[x>>2]=y;w=c[w+48>>2]|0;}while((w|0)!=0);u=c[f>>2]|0}}while(0);m=s+1|0;if((m|0)<(u|0)){r=r+80|0;s=m;t=u}else{break a}}}}while(0);t=b+156|0;s=c[t>>2]|0;if((s|0)<=0){break}r=c[b+164>>2]|0;f=0;l=s;while(1){if((c[r+(f*80|0)>>2]|0)==1){z=l}else{s=c[253181]|0;c[r+(f*80|0)+4+(s<<2)>>2]=c[1012748+(s<<2)>>2];z=c[t>>2]|0}s=f+1|0;if((s|0)<(z|0)){f=s;l=z}else{break}}}}while(0);KB(1014280,1014292);z=c[253727]|0;if((z|0)>32){c[253727]=32;A=32}else{A=z}z=c[253734]|0;if((z|0)>32){c[253734]=32;B=32}else{B=z}z=c[253512]|0;u=z>>>2&16|15;do{if((z&4|0)==0){w=(1<>2]|0,u,D,C);c[253733]=0;C=c[253203]|0;if((c[C+168>>2]|0)>0){D=0;u=C;B=0;while(1){if((c[(c[u+180>>2]|0)+(D<<2)>>2]|0)==(c[253194]|0)){XU((c[u+176>>2]|0)+(D*80|0)|0,c[(c[u+184>>2]|0)+(D<<2)>>2]|0,c[(c[u+188>>2]|0)+(D<<2)>>2]|0);z=c[253203]|0;A=c[253733]|c[(c[z+184>>2]|0)+(D<<2)>>2];c[253733]=A;E=A;F=z}else{E=B;F=u}z=D+1|0;if((z|0)<(c[F+168>>2]|0)){D=z;u=F;B=E}else{G=F;H=E;break}}}else{G=C;H=0}if((c[G+192>>2]|0)>0){C=0;E=G;G=H;while(1){if((c[(c[E+200>>2]|0)+(C<<2)>>2]|0)==(c[253194]|0)){XU((c[E+196>>2]|0)+(C*80|0)|0,c[(c[E+204>>2]|0)+(C<<2)>>2]|0,c[(c[E+208>>2]|0)+(C<<2)>>2]|0);F=c[253203]|0;B=c[253733]|c[(c[F+204>>2]|0)+(C<<2)>>2];c[253733]=B;I=B;J=F}else{I=G;J=E}F=C+1|0;if((F|0)<(c[J+192>>2]|0)){C=F;E=J;G=I}else{K=I;break}}}else{K=H}c[253733]=~K;i=a;return}function _U(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=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.0,z=0.0,A=0,B=0,C=0,D=0,E=0;f=a;a=b;b=d;d=e;a:while(1){if((c[253512]&4|0)==0){e=c[253181]|0;if((c[f+4+(e<<2)>>2]|0)!=(c[1012748+(e<<2)>>2]|0)){h=62;break}}do{if((c[(c[4917410]|0)+32>>2]|0)==0){do{if((a&1|0)==0){i=a}else{e=IB(f+24|0,f+36|0,1014180)|0;if((e|0)==2){h=62;break a}else if((e|0)!=1){i=a;break}i=a&-2}}while(0);do{if((i&2|0)==0){j=i}else{e=IB(f+24|0,f+36|0,1014200)|0;if((e|0)==2){h=62;break a}else if((e|0)!=1){j=i;break}j=i&-3}}while(0);do{if((j&4|0)==0){k=j}else{e=IB(f+24|0,f+36|0,1014220)|0;if((e|0)==2){h=62;break a}else if((e|0)!=1){k=j;break}k=j&-5}}while(0);do{if((k&8|0)==0){l=k}else{e=IB(f+24|0,f+36|0,1014240)|0;if((e|0)==2){h=62;break a}else if((e|0)!=1){l=k;break}l=k&-9}}while(0);if((l&16|0)==0){m=l;break}e=IB(f+24|0,f+36|0,1014260)|0;if((e|0)==2){h=62;break a}else if((e|0)!=1){m=l;break}m=l&-17}else{m=a}}while(0);if(!((c[f>>2]|0)==-1)){h=36;break}do{if((b|0)==0){n=0;o=0}else{e=c[253727]|0;if((e|0)<=0){n=0;o=0;break}p=c[253728]|0;q=f+52|0;r=0;s=0;t=0;while(1){u=1<>2]|0;y=+g[p+(s*44|0)>>2]*+g[x>>2]+ +g[p+(s*44|0)+4>>2]*+g[x+4>>2]+ +g[p+(s*44|0)+8>>2]*+g[x+8>>2]- +g[x+12>>2];z=+g[p+(s*44|0)+24>>2];x=(y>-0.0-z?u:0)|r;if(!(y>2]|0;z=+g[s+(q<<8)+220>>2]*+g[x>>2]+ +g[s+(q<<8)+224>>2]*+g[x+4>>2]+ +g[s+(q<<8)+228>>2]*+g[x+8>>2]- +g[x+12>>2];y=+g[s+(q<<8)+232>>2];x=(z>-0.0-y?u:0)|p;if(!(z>2]|0,m,o,A);f=c[f+60>>2]|0;a=m;b=n;d=B}if((h|0)==36){c[253824]=(c[253824]|0)+1;y=+g[f+24>>2];if(y<+g[253570]){g[253570]=y}y=+g[f+28>>2];if(y<+g[253571]){g[253571]=y}y=+g[f+32>>2];if(y<+g[253572]){g[253572]=y}y=+g[f+36>>2];if(y>+g[253573]){g[253573]=y}y=+g[f+40>>2];if(y>+g[253574]){g[253574]=y}y=+g[f+44>>2];if(y>+g[253575]){g[253575]=y}B=c[253203]|0;n=c[B+220>>2]|0;do{if((n|0)==0){h=51}else{if((c[(c[4917408]|0)+32>>2]|0)!=0){h=51;break}E=n+(c[f+72>>2]<<2)|0}}while(0);if((h|0)==51){E=(c[B+216>>2]|0)+(c[f+72>>2]<<2)|0}n=c[f+76>>2]|0;if((n|0)==0){return}f=B+200|0;m=B+204|0;a=B+208|0;A=B+180|0;o=B+184|0;D=B+188|0;B=E;E=n;while(1){n=E-1|0;C=c[B>>2]|0;do{if((C|0)<0){w=~C;v=(c[f>>2]|0)+(w<<2)|0;l=c[253194]|0;if((c[v>>2]|0)==(l|0)){k=(c[m>>2]|0)+(w<<2)|0;c[k>>2]=c[k>>2]|b;k=(c[a>>2]|0)+(w<<2)|0;c[k>>2]=c[k>>2]|d;break}else{c[v>>2]=l;c[(c[m>>2]|0)+(w<<2)>>2]=b;c[(c[a>>2]|0)+(w<<2)>>2]=d;break}}else{w=(c[A>>2]|0)+(C<<2)|0;l=c[253194]|0;if((c[w>>2]|0)==(l|0)){v=(c[o>>2]|0)+(C<<2)|0;c[v>>2]=c[v>>2]|b;v=(c[D>>2]|0)+(C<<2)|0;c[v>>2]=c[v>>2]|d;break}else{c[w>>2]=l;c[(c[o>>2]|0)+(C<<2)>>2]=b;c[(c[D>>2]|0)+(C<<2)>>2]=d;break}}}while(0);if((n|0)==0){break}else{B=B+4|0;E=n}}return}else if((h|0)==62){return}}function $U(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;i=i+1536|0;h=g|0;if((c[5123023]|0)==0){j=1536;k=0;i=g;return}if((c[(c[4917458]|0)+32>>2]|0)>0){j=1536;k=0;i=g;return}else{l=0}do{m=d[a+l|0]|0;b[h+(l<<1)>>1]=m<<8|m;m=d[e+l|0]|0;b[h+512+(l<<1)>>1]=m<<8|m;m=d[f+l|0]|0;b[h+1024+(l<<1)>>1]=m<<8|m;l=l+1|0;}while((l|0)<256);l=h|0;f=1;e=b[l>>1]|0;while(1){a=h+(f<<1)|0;m=b[a>>1]|0;if((m&65535)>>>0<(e&65535)>>>0){b[a>>1]=e;n=e}else{n=m}m=f+1|0;if((m|0)<256){f=m;e=n}else{break}}n=h+512|0;e=1;f=b[n>>1]|0;while(1){m=h+512+(e<<1)|0;a=b[m>>1]|0;if((a&65535)>>>0<(f&65535)>>>0){b[m>>1]=f;o=f}else{o=a}a=e+1|0;if((a|0)<256){e=a;f=o}else{break}}o=h+1024|0;f=1;e=b[o>>1]|0;while(1){a=h+1024+(f<<1)|0;m=b[a>>1]|0;if((m&65535)>>>0<(e&65535)>>>0){b[a>>1]=e;p=e}else{p=m}m=f+1|0;if((m|0)<256){f=m;e=p}else{break}}Sd(l|0,n|0,o|0)|0;j=1536;k=0;i=g;return}function aV(){Uk[c[4886376]&511]();rh(32);return}function bV(){Me()|0;return}function cV(a){a=a|0;return}function dV(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,j=0,k=0,l=0,m=0,n=0,o=0.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,J=0,K=0;f=i;i=i+1024|0;j=f|0;Tk[c[4886344]&255](0,99984,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=(c[(c[4919924]|0)+32>>2]|0)==0?67108864:83886080;do{if((c[219090]|0)==0){m=Ge()|0;c[219090]=m;m$(30212144,c[m+8>>2]|0,44)|0;c[7553037]=0;n=m|0;c[7553030]=c[n>>2];c[7553031]=c[n+4>>2];c[7553032]=c[n+8>>2];c[7553033]=c[n+12>>2];c[7553034]=c[n+16>>2];c[7553032]=30212144;c[219090]=30212120;n=c[7553034]|0;if((n|0)>0){o=+(c[7553033]|0)/+(n|0);g[7602]=o;Tk[c[4886344]&255](0,163336,(k=i,i=i+8|0,h[k>>3]=o,k)|0);i=k;break}else{Tk[c[4886344]&255](0,139240,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;break}}}while(0);Tk[c[4886344]&255](0,125592,(k=i,i=i+8|0,c[k>>2]=b,k)|0);i=k;do{if((b|0)==-2){n=c[219090]|0;m=n+16|0;if((c[m>>2]|0)>0){p=c[n+12>>2]|0;c[5123026]=p;n=c[m>>2]|0;c[5123027]=n;q=p;r=n}else{c[5123026]=640;c[5123027]=480;Tk[c[4886344]&255](0,115232,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;q=c[5123026]|0;r=c[5123027]|0}g[5123028]=+(q|0)/+(r|0);s=q;t=r}else{if((LR(20492104,20492108,20492112,b)|0)!=0){s=c[5123026]|0;t=c[5123027]|0;break}Tk[c[4886344]&255](0,105376,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;u=2;i=f;return u|0}}while(0);Tk[c[4886344]&255](0,62056,(k=i,i=i+16|0,c[k>>2]=s,c[k+8>>2]=t,k)|0);i=k;if((d|0)==0){v=(e|0)==0?l:l|33554432;w=0}else{v=l|8388608;w=1}c[5123030]=w;w=~~+g[(c[4919894]|0)+28>>2];o=+g[(c[4919872]|0)+28>>2];if(o!=0.0){x=~~o}else{x=24}l=~~+g[(c[4919836]|0)+28>>2];e=(l|0)!=0|0;d=(w|0)==0|(w|0)>31?24:w;w=x;x=~~+g[(c[4917316]|0)+28>>2];t=0;while(1){s=(t|0)%4|0;do{if((s|0)==0&(t|0)!=0){b=(t|0)/4|0;if((b|0)==2){y=x;z=w;A=(d|0)==24?16:d;break}else if((b|0)==1){B=22}else if((b|0)==3){C=w}else{y=x;z=w;A=d;break}do{if((B|0)==22){B=0;if((w|0)==24){C=16;break}C=(w|0)==16?8:w}}while(0);if((x|0)==24){y=16;z=C;A=d;break}y=(x|0)==16?8:x;z=C;A=d}else{y=x;z=w;A=d}}while(0);D=(s|0)==3&(A|0)==24?16:A;do{if((s|0)==2){if((z|0)==24){E=y;F=16;break}G=(z|0)==16?8:z;B=29}else{G=z;B=29}}while(0);do{if((B|0)==29){B=0;if((s|0)!=1){E=y;F=G;break}if((y|0)==24){E=16;F=G;break}else if((y|0)==16){E=8;F=G;break}else{E=0;F=G;break}}}while(0);H=(D|0)==24?8:4;Wg(0,H|0)|0;Wg(1,H|0)|0;Wg(2,H|0)|0;Wg(6,F|0)|0;Wg(7,E|0)|0;Wg(13,e|0)|0;Wg(14,l|0)|0;if((c[(c[4917314]|0)+32>>2]|0)==0){c[5123031]=0;Wg(12,0)|0}else{c[5123031]=1;Wg(12,1)|0}Wg(5,1)|0;Dc(54456,54456);ob(0)|0;I=Be(c[5123026]|0,c[5123027]|0,A|0,v|0)|0;J=c[4886344]|0;if((I|0)!=0){B=38;break}s=zc()|0;Tk[J&255](1,48456,(k=i,i=i+8|0,c[k>>2]=s,k)|0);i=k;s=t+1|0;if((s|0)<16){d=A;w=z;x=y;t=s}else{K=0;break}}if((B|0)==38){Tk[J&255](0,44176,(k=i,i=i+40|0,c[k>>2]=H,c[k+8>>2]=H,c[k+16>>2]=H,c[k+24>>2]=F,c[k+32>>2]=E,k)|0);i=k;c[5123018]=D;c[5123019]=F;c[5123020]=E;K=I}I=j|0;n$(I|0,0,1024)|0;E=of(c[(c[219090]|0)+8>>2]|0,75497472)|0;F=E;do{if((F|0)==0){Tk[c[4886344]&255](2,58968,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k}else if((F|0)==(-1|0)){Tk[c[4886344]&255](0,58344,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k}else{D=0;while(1){if((c[E+(D<<2)>>2]|0)==0){break}else{D=D+1|0}}if((D|0)>1){Ie(E|0,D|0,4,44)}if((D|0)>0){H=0;do{J=E+(H<<2)|0;B=c[J>>2]|0;t=c[B+12>>2]|0;y=pC(57448,(k=i,i=i+16|0,c[k>>2]=c[B+8>>2],c[k+8>>2]=t,k)|0)|0;i=k;t=o$(y|0)|0;if(t>>>0<(1024-(o$(I|0)|0)|0)>>>0){XB(I,1024,y)}else{y=c[J>>2]|0;J=c[y+12>>2]|0;Tk[c[4886344]&255](2,56504,(k=i,i=i+16|0,c[k>>2]=c[y+8>>2],c[k+8>>2]=J,k)|0);i=k}H=H+1|0;}while((H|0)<(D|0))}if((a[I]|0)==0){break}a[j+((o$(I|0)|0)-1)|0]=0;Tk[c[4886344]&255](0,55808,(k=i,i=i+8|0,c[k>>2]=I,k)|0);i=k;hk[c[4886353]&255](138168,I)}}while(0);if((K|0)==0){Tk[c[4886344]&255](0,183312,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;u=2;i=f;return u|0}else{c[552996]=K;K=$b(7937)|0;Tk[c[4886344]&255](0,179320,(k=i,i=i+8|0,c[k>>2]=K,k)|0);i=k;u=0;i=f;return u|0}return 0}function eV(){var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=i;i=i+8|0;d=b|0;c[4919922]=rk[c[4886352]&63](174920,171456,32)|0;c[4917358]=rk[c[4886352]&63](168592,28378680,64)|0;c[4919924]=rk[c[4886352]&63](162048,171456,33)|0;c[4919900]=rk[c[4886352]&63](159048,171456,33)|0;if((jk[c[4886356]&255](156624)|0)!=0){e=c[4886353]|0;f=pC(152552,(h=i,i=i+8|0,c[h>>2]=3,h)|0)|0;i=h;hk[e&255](154472,f);hk[c[4886353]&255](150344,171456);hk[c[4886353]&255](159048,171456);hk[c[4886353]&255](156624,171456)}hk[c[4886379]&255](148168,(c[(c[4919900]|0)+32>>2]|0)!=0?145480:28378680);Uk[c[4886381]&511]();do{if((fV(c[(c[4917416]|0)+32>>2]|0,c[(c[4917474]|0)+32>>2]|0,c[(c[4917412]|0)+32>>2]|0)|0)==0){Uk[c[4886380]&511]();if((fV(c[(c[4917416]|0)+32>>2]|0,c[(c[4917474]|0)+32>>2]|0,0)|0)!=0){break}f=c[(c[4917416]|0)+32>>2]|0;if((f|0)==3){j=c[4886345]|0;Tk[j&255](0,140696,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}Tk[c[4886344]&255](0,143120,(h=i,i=i+16|0,c[h>>2]=f,c[h+8>>2]=3,h)|0);i=h;if((fV(3,0,0)|0)!=0){break}j=c[4886345]|0;Tk[j&255](0,140696,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}}while(0);c[5123021]=0;c[5123022]=0;c[5123023]=(Kd(+1.0,+1.0,+1.0)|0)>>>31^1;j=(Kd(+1.0,+1.0,+1.0)|0)>>>31^1;c[5123023]=j;f=(c[4917458]|0)+32|0;e=(c[f>>2]|0)==-1?1:j;c[5123023]=e;c[5123023]=(c[f>>2]|0)==1?0:e;TB(20481824,$b(7936)|0,1024);TB(20480800,$b(7937)|0,1024);do{if((a[20480800]|0)!=0){e=20480800+((o$(20480800)|0)-1)|0;if((a[e]|0)!=10){break}a[e]=0}}while(0);TB(20482848,$b(7938)|0,1024);TB(20483872,$b(7939)|0,8192);e=c[4886344]|0;if((c[(c[4919926]|0)+32>>2]|0)==0){Tk[e&255](0,131392,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;k=4;l=0;m=c[4886352]|0;n=rk[m&63](138168,28378680,64)|0;o=c[4886375]|0;Uk[o&511]();i=b;return}Tk[e&255](0,130008,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;c[5123024]=0;e=mC(20483872,128720)|0;do{if((e|0)==0){p=20}else{f=a[e+26|0]|0;if(!((f<<24>>24|0)==32|(f<<24>>24|0)==0)){p=20;break}f=mC(20483872,127752)|0;if((f|0)==0){p=20;break}j=a[f+31|0]|0;if(!((j<<24>>24|0)==32|(j<<24>>24|0)==0)){p=20;break}if(+g[(c[4919848]|0)+28>>2]!=0.0){c[5123024]=2;Tk[c[4886344]&255](0,126384,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;break}else{Tk[c[4886344]&255](0,125112,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;break}}}while(0);if((p|0)==20){Tk[c[4886344]&255](0,124208,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}a:do{if((c[5123024]|0)==0){e=mC(20483872,123336)|0;do{if((e|0)!=0){j=a[e+10|0]|0;if(!((j<<24>>24|0)==32|(j<<24>>24|0)==0)){break}if(+g[(c[4919848]|0)+28>>2]!=0.0){c[5123024]=1;Tk[c[4886344]&255](0,122520,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;break a}else{Tk[c[4886344]&255](0,121688,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;break a}}}while(0);Tk[c[4886344]&255](0,120768,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}}while(0);c[5123025]=0;e=mC(20483872,119536)|0;do{if((e|0)==0){p=33}else{j=a[e+19|0]|0;if(!((j<<24>>24|0)==32|(j<<24>>24|0)==0)){p=33;break}if((c[(c[4919832]|0)+32>>2]|0)==0){c[5123025]=0;Tk[c[4886344]&255](0,117232,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;break}else{c[5123025]=1;Tk[c[4886344]&255](0,118152,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;break}}}while(0);if((p|0)==33){Tk[c[4886344]&255](0,116008,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}c[4919986]=0;c[4920100]=0;c[4920078]=0;e=mC(20483872,114440)|0;do{if((e|0)==0){p=42}else{j=a[e+19|0]|0;if(!((j<<24>>24|0)==32|(j<<24>>24|0)==0)){p=42;break}if(!(+g[(c[4919834]|0)+28>>2]!=0.0)){Tk[c[4886344]&255](0,108728,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;break}c[4919986]=Pf(113384)|0;c[4920100]=Pf(112488)|0;c[4920078]=Pf(111640)|0;if((c[4920100]|0)==0){break}c[d>>2]=0;xj(34018,d|0);j=c[d>>2]|0;c[5123017]=j;if((j|0)>1){Tk[c[4886344]&255](0,110904,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;break}else{c[4919986]=0;c[4920100]=0;c[4920078]=0;Tk[c[4886344]&255](0,110072,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;break}}}while(0);if((p|0)==42){Tk[c[4886344]&255](0,107672,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}d=mC(20483872,106880)|0;do{if((d|0)==0){p=49}else{e=a[d+28|0]|0;if(!((e<<24>>24|0)==32|(e<<24>>24|0)==0)){p=49;break}e=c[4886344]|0;if(!(+g[(c[4919850]|0)+28>>2]!=0.0)){Tk[e&255](0,102360,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;break}Tk[e&255](0,105848,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;c[4919992]=Pf(105016)|0;e=Pf(104096)|0;c[4919942]=e;if((c[4919992]|0)!=0&(e|0)!=0){break}Tk[c[4886345]&255](0,103104,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}}while(0);if((p|0)==49){Tk[c[4886344]&255](0,101424,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}c[304344]=0;p=mC(20483872,100464)|0;do{if((p|0)!=0){d=a[p+33|0]|0;if(!((d<<24>>24|0)==32|(d<<24>>24|0)==0)){break}if((c[(c[4919830]|0)+32>>2]|0)==0){Tk[c[4886344]&255](0,63632,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;k=4;l=0;m=c[4886352]|0;n=rk[m&63](138168,28378680,64)|0;o=c[4886375]|0;Uk[o&511]();i=b;return}xj(34047,19818512);d=c[4954628]|0;e=c[4886344]|0;if((d|0)<1){Tk[e&255](0,99368,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;c[4954628]=0;k=4;l=0;m=c[4886352]|0;n=rk[m&63](138168,28378680,64)|0;o=c[4886375]|0;Uk[o&511]();i=b;return}else{Tk[e&255](0,64320,(h=i,i=i+8|0,c[h>>2]=d,h)|0);i=h;c[304344]=1;k=4;l=0;m=c[4886352]|0;n=rk[m&63](138168,28378680,64)|0;o=c[4886375]|0;Uk[o&511]();i=b;return}}}while(0);Tk[c[4886344]&255](0,62520,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;k=4;l=0;m=c[4886352]|0;n=rk[m&63](138168,28378680,64)|0;o=c[4886375]|0;Uk[o&511]();i=b;return}function fV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+64|0;do{if((ei(32)|0)==0){f=e|0;if(!((Vi(32)|0)==-1)){Xb(f|0,63)|0;Tk[c[4886344]&255](0,60928,(g=i,i=i+8|0,c[g>>2]=f,g)|0);i=g;hk[c[4886353]&255](168592,f);break}f=c[4886344]|0;h=zc()|0;Tk[f&255](0,61640,(g=i,i=i+8|0,c[g>>2]=h,g)|0);i=g;j=0;i=e;return j|0}}while(0);do{if((b|0)==0){k=0}else{if((jk[c[4886356]&255](135088)|0)==0){k=b;break}Tk[c[4886344]&255](0,133488,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;hk[c[4886353]&255](150344,171456);c[(c[4917474]|0)+20>>2]=0;k=0}}while(0);b=dV(a,k,d)|0;if((b|0)==2){Tk[c[4886344]&255](0,59552,(g=i,i=i+8|0,c[g>>2]=a,g)|0);i=g;j=0;i=e;return j|0}else if((b|0)==1){Tk[c[4886344]&255](0,60168,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;j=0;i=e;return j|0}else{j=1;i=e;return j|0}return 0}function gV(){var a=0,b=0,d=0,e=0,f=0;a=i;(VB(c[(c[4919862]|0)+4>>2]|0,136528)|0)!=0;if((c[(c[4917474]|0)+20>>2]|0)==0){i=a;return}b=Cc()|0;do{if((b|0)==0){d=10}else{e=c[b>>2]|0;do{if((c[(c[4917474]|0)+32>>2]|0)!=0){if((jk[c[4886356]&255](135088)|0)==0){break}Tk[c[4886344]&255](0,133488,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;hk[c[4886353]&255](150344,171456);c[(c[4917474]|0)+20>>2]=0}}while(0);if(!((c[(c[4917474]|0)+32>>2]|0)!=0^(e&8388608|0)!=0)){break}if((Ej(b|0)|0)==0){d=10}else{d=11}}}while(0);if((d|0)==10){hk[c[4886361]&255](2,132376);d=11}if((d|0)==11){Uk[c[4886377]&511]()}c[(c[4917474]|0)+20>>2]=0;i=a;return}function hV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0;d=c[a>>2]|0;a=c[b>>2]|0;b=c[d+8>>2]|0;e=c[d+12>>2]|0;d=c[a+8>>2]|0;f=c[a+12>>2]|0;a=da(e,b)|0;h=da(f,d)|0;i=+g[7602];j=+S(+(+(b|0)/+(e|0)-i))- +S(+(+(d|0)/+(f|0)-i));if(j>.0010000000474974513){k=1;return k|0}if(j<-.0010000000474974513){k=-1;return k|0}k=a-h|0;return k|0}function iV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;c[a+4>>2]=0;if((b|0)!=80){e=a|0;c[(c[e>>2]|0)+20>>2]=13;c[(c[e>>2]|0)+24>>2]=80;c[(c[e>>2]|0)+28>>2]=b;vk[c[c[e>>2]>>2]&511](a)}e=a|0;if((d|0)==432){f=a}else{c[(c[e>>2]|0)+20>>2]=22;c[(c[e>>2]|0)+24>>2]=432;c[(c[e>>2]|0)+28>>2]=d;d=a;vk[c[c[e>>2]>>2]&511](d);f=d}d=c[e>>2]|0;b=a+12|0;g=c[b>>2]|0;n$(a|0,0,432)|0;c[e>>2]=d;c[b>>2]=g;c[a+16>>2]=0;$Z(f);c[a+8>>2]=0;c[a+24>>2]=0;c[a+84>>2]=0;c[a+88>>2]=0;c[a+104>>2]=100;c[a+92>>2]=0;c[a+108>>2]=100;c[a+96>>2]=0;c[a+112>>2]=100;c[a+100>>2]=0;c[a+116>>2]=100;n$(a+120|0,0,32)|0;c[a+376>>2]=8;c[a+380>>2]=18528;c[a+384>>2]=63;c[a+424>>2]=0;h[a+48>>3]=1.0;c[a+20>>2]=100;return}function jV(a){a=a|0;zW(a);return}function kV(a,b){a=a|0;b=b|0;var d=0;d=c[a+88>>2]|0;if((d|0)!=0){c[d+128>>2]=b}d=c[a+92>>2]|0;if((d|0)!=0){c[d+128>>2]=b}d=c[a+96>>2]|0;if((d|0)!=0){c[d+128>>2]=b}d=c[a+100>>2]|0;if((d|0)!=0){c[d+128>>2]=b}d=c[a+120>>2]|0;if((d|0)!=0){c[d+276>>2]=b}d=c[a+136>>2]|0;if((d|0)!=0){c[d+276>>2]=b}d=c[a+124>>2]|0;if((d|0)!=0){c[d+276>>2]=b}d=c[a+140>>2]|0;if((d|0)!=0){c[d+276>>2]=b}d=c[a+128>>2]|0;if((d|0)!=0){c[d+276>>2]=b}d=c[a+144>>2]|0;if((d|0)!=0){c[d+276>>2]=b}d=c[a+132>>2]|0;if((d|0)!=0){c[d+276>>2]=b}d=c[a+148>>2]|0;if((d|0)==0){return}c[d+276>>2]=b;return}function lV(a){a=a|0;var b=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;b=a+20|0;d=c[b>>2]|0;if((d|0)==101|(d|0)==102){if((c[a+260>>2]|0)>>>0<(c[a+32>>2]|0)>>>0){e=a|0;c[(c[e>>2]|0)+20>>2]=69;vk[c[c[e>>2]>>2]&511](a)}vk[c[(c[a+388>>2]|0)+8>>2]&511](a)}else if((d|0)!=103){d=a|0;c[(c[d>>2]|0)+20>>2]=21;c[(c[d>>2]|0)+24>>2]=c[b>>2];vk[c[c[d>>2]>>2]&511](a)}d=a+388|0;b=c[d>>2]|0;if((c[b+16>>2]|0)!=0){f=a;g=a+404|0;h=c[g>>2]|0;i=h+12|0;j=c[i>>2]|0;vk[j&511](a);k=a+24|0;l=c[k>>2]|0;m=l+16|0;n=c[m>>2]|0;vk[n&511](a);yW(f);return}e=a+284|0;o=a+8|0;p=a+400|0;q=a|0;r=a;s=b;while(1){vk[c[s>>2]&511](a);if((c[e>>2]|0)!=0){b=0;do{t=c[o>>2]|0;if((t|0)!=0){c[t+4>>2]=b;c[(c[o>>2]|0)+8>>2]=c[e>>2];vk[c[c[o>>2]>>2]&511](r)}if((Kk[c[(c[p>>2]|0)+4>>2]&255](a,0)|0)==0){c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](r)}b=b+1|0;}while(b>>>0<(c[e>>2]|0)>>>0)}vk[c[(c[d>>2]|0)+8>>2]&511](a);b=c[d>>2]|0;if((c[b+16>>2]|0)==0){s=b}else{f=r;break}}g=a+404|0;h=c[g>>2]|0;i=h+12|0;j=c[i>>2]|0;vk[j&511](a);k=a+24|0;l=c[k>>2]|0;m=l+16|0;n=c[m>>2]|0;vk[n&511](a);yW(f);return}function mV(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+20|0;if((c[d>>2]|0)!=100){e=a|0;c[(c[e>>2]|0)+20>>2]=21;c[(c[e>>2]|0)+24>>2]=c[d>>2];vk[c[c[e>>2]>>2]&511](a)}if((b|0)!=0){kV(a,0)}vk[c[(c[a>>2]|0)+16>>2]&511](a);vk[c[(c[a+24>>2]|0)+8>>2]&511](a);cW(a);vk[c[c[a+388>>2]>>2]&511](a);c[a+260>>2]=0;c[d>>2]=(c[a+208>>2]|0)!=0?102:101;return}function nV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+8|0;f=e|0;g=a+20|0;if((c[g>>2]|0)!=101){h=a|0;c[(c[h>>2]|0)+20>>2]=21;c[(c[h>>2]|0)+24>>2]=c[g>>2];vk[c[c[h>>2]>>2]&511](a)}h=a+260|0;g=a+32|0;if(!((c[h>>2]|0)>>>0<(c[g>>2]|0)>>>0)){j=a|0;c[(c[j>>2]|0)+20>>2]=126;hk[c[(c[j>>2]|0)+4>>2]&255](a,-1)}j=a+8|0;k=c[j>>2]|0;if((k|0)!=0){c[k+4>>2]=c[h>>2];c[(c[j>>2]|0)+8>>2]=c[g>>2];vk[c[c[j>>2]>>2]&511](a)}j=c[a+388>>2]|0;if((c[j+12>>2]|0)!=0){vk[c[j+4>>2]&511](a)}j=(c[g>>2]|0)-(c[h>>2]|0)|0;c[f>>2]=0;Yk[c[(c[a+392>>2]|0)+4>>2]&255](a,b,f,j>>>0>>0?j:d);d=c[f>>2]|0;c[h>>2]=(c[h>>2]|0)+d;i=e;return d|0}function oV(b){b=b|0;var d=0;d=rk[c[c[b+4>>2]>>2]&63](b,1,208)|0;c[b+420>>2]=d;c[d>>2]=70;c[d+8>>2]=218;c[d+76>>2]=0;c[d+140>>2]=0;c[d+80>>2]=0;c[d+144>>2]=0;c[d+84>>2]=0;c[d+148>>2]=0;c[d+88>>2]=0;c[d+152>>2]=0;c[d+92>>2]=0;c[d+156>>2]=0;c[d+96>>2]=0;c[d+160>>2]=0;c[d+100>>2]=0;c[d+164>>2]=0;c[d+104>>2]=0;c[d+168>>2]=0;c[d+108>>2]=0;c[d+172>>2]=0;c[d+112>>2]=0;c[d+176>>2]=0;c[d+116>>2]=0;c[d+180>>2]=0;c[d+120>>2]=0;c[d+184>>2]=0;c[d+124>>2]=0;c[d+188>>2]=0;c[d+128>>2]=0;c[d+192>>2]=0;c[d+132>>2]=0;c[d+196>>2]=0;c[d+136>>2]=0;c[d+200>>2]=0;a[d+204|0]=113;return}function pV(a,b){a=a|0;b=b|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,B=0,C=0,D=0,E=0,F=0;d=c[a+420>>2]|0;if((b|0)!=0){b=a|0;c[(c[b>>2]|0)+20>>2]=49;vk[c[c[b>>2]>>2]&511](a)}do{if((c[a+264>>2]|0)==0){c[d+4>>2]=34}else{b=(c[a+360>>2]|0)==0;e=d+4|0;if((c[a+368>>2]|0)==0){if(b){c[e>>2]=98;break}else{c[e>>2]=84;break}}else{if(b){c[e>>2]=138;break}else{c[e>>2]=140;break}}}}while(0);e=a+288|0;if((c[e>>2]|0)<=0){f=d+12|0;c[f>>2]=0;g=d+16|0;c[g>>2]=65536;h=d+20|0;c[h>>2]=0;i=d+24|0;c[i>>2]=0;j=d+28|0;c[j>>2]=11;k=d+32|0;c[k>>2]=-1;l=a+236|0;m=c[l>>2]|0;n=d+68|0;o=m;c[n>>2]=o;p=d+72|0;c[p>>2]=0;return}b=a+360|0;q=a+368|0;r=a|0;s=a;t=d+76|0;u=a+4|0;v=d+36|0;w=d+52|0;x=a+364|0;y=d+140|0;z=0;do{A=c[a+292+(z<<2)>>2]|0;do{if((c[b>>2]|0)==0){if((c[q>>2]|0)!=0){break}B=c[A+20>>2]|0;if(B>>>0>15>>>0){c[(c[r>>2]|0)+20>>2]=50;c[(c[r>>2]|0)+24>>2]=B;vk[c[c[r>>2]>>2]&511](s)}C=t+(B<<2)|0;B=c[C>>2]|0;if((B|0)==0){D=rk[c[c[u>>2]>>2]&63](s,1,64)|0;c[C>>2]=D;E=D}else{E=B}n$(E|0,0,64)|0;c[v+(z<<2)>>2]=0;c[w+(z<<2)>>2]=0}}while(0);if((c[x>>2]|0)!=0){B=c[A+24>>2]|0;if(B>>>0>15>>>0){c[(c[r>>2]|0)+20>>2]=50;c[(c[r>>2]|0)+24>>2]=B;vk[c[c[r>>2]>>2]&511](s)}D=y+(B<<2)|0;B=c[D>>2]|0;if((B|0)==0){C=rk[c[c[u>>2]>>2]&63](s,1,256)|0;c[D>>2]=C;F=C}else{F=B}n$(F|0,0,256)|0}z=z+1|0;}while((z|0)<(c[e>>2]|0));f=d+12|0;c[f>>2]=0;g=d+16|0;c[g>>2]=65536;h=d+20|0;c[h>>2]=0;i=d+24|0;c[i>>2]=0;j=d+28|0;c[j>>2]=11;k=d+32|0;c[k>>2]=-1;l=a+236|0;m=c[l>>2]|0;n=d+68|0;o=m;c[n>>2]=o;p=d+72|0;c[p>>2]=0;return}function qV(b){b=b|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;d=c[b+420>>2]|0;e=d+12|0;f=e;g=c[f>>2]|0;h=(c[d+16>>2]|0)-1+g&-65536;if((h|0)<(g|0)){g=h|32768;c[e>>2]=g;i=g}else{c[e>>2]=h;i=h}h=i<>2];c[e>>2]=h;e=d+32|0;i=c[e>>2]|0;do{if(h>>>0>134217727>>>0){g=d+24|0;j=g;do{if((i|0)>-1){k=b+24|0;if((c[j>>2]|0)==0){l=i}else{m=b|0;n=b;o=g|0;do{p=c[k>>2]|0;q=p|0;r=c[q>>2]|0;c[q>>2]=r+1;a[r]=0;r=p+4|0;q=(c[r>>2]|0)-1|0;c[r>>2]=q;do{if((q|0)==0){if((jk[c[p+12>>2]&255](b)|0)!=0){break}c[(c[m>>2]|0)+20>>2]=25;vk[c[c[m>>2]>>2]&511](n)}}while(0);p=(c[j>>2]|0)-1|0;c[o>>2]=p;}while((p|0)!=0);l=c[e>>2]|0}o=c[k>>2]|0;n=o|0;m=c[n>>2]|0;c[n>>2]=m+1;a[m]=l+1;m=o+4|0;n=(c[m>>2]|0)-1|0;c[m>>2]=n;do{if((n|0)==0){if((jk[c[o+12>>2]&255](b)|0)!=0){break}m=b|0;c[(c[m>>2]|0)+20>>2]=25;vk[c[c[m>>2]>>2]&511](b)}}while(0);if((c[e>>2]|0)!=254){break}o=c[k>>2]|0;n=o|0;m=c[n>>2]|0;c[n>>2]=m+1;a[m]=0;m=o+4|0;n=(c[m>>2]|0)-1|0;c[m>>2]=n;if((n|0)!=0){break}if((jk[c[o+12>>2]&255](b)|0)!=0){break}o=b|0;c[(c[o>>2]|0)+20>>2]=25;vk[c[c[o>>2]>>2]&511](b)}}while(0);o=d+20|0;c[g>>2]=(c[j>>2]|0)+(c[o>>2]|0);c[o>>2]=0}else{do{if((i|0)==0){o=d+24|0;c[o>>2]=(c[o>>2]|0)+1}else{if(!((i|0)>-1)){break}o=d+24|0;n=o;m=b+24|0;if((c[n>>2]|0)==0){s=i&255}else{p=b|0;q=b;r=o|0;do{o=c[m>>2]|0;t=o|0;u=c[t>>2]|0;c[t>>2]=u+1;a[u]=0;u=o+4|0;t=(c[u>>2]|0)-1|0;c[u>>2]=t;do{if((t|0)==0){if((jk[c[o+12>>2]&255](b)|0)!=0){break}c[(c[p>>2]|0)+20>>2]=25;vk[c[c[p>>2]>>2]&511](q)}}while(0);o=(c[n>>2]|0)-1|0;c[r>>2]=o;}while((o|0)!=0);s=c[e>>2]&255}r=c[m>>2]|0;n=r|0;q=c[n>>2]|0;c[n>>2]=q+1;a[q]=s;q=r+4|0;n=(c[q>>2]|0)-1|0;c[q>>2]=n;if((n|0)!=0){break}if((jk[c[r+12>>2]&255](b)|0)!=0){break}r=b|0;c[(c[r>>2]|0)+20>>2]=25;vk[c[c[r>>2]>>2]&511](b)}}while(0);j=d+20|0;g=j;if((c[g>>2]|0)==0){break}r=d+24|0;n=r;q=b+24|0;p=b|0;k=b;if((c[n>>2]|0)!=0){o=r|0;do{r=c[q>>2]|0;t=r|0;u=c[t>>2]|0;c[t>>2]=u+1;a[u]=0;u=r+4|0;t=(c[u>>2]|0)-1|0;c[u>>2]=t;do{if((t|0)==0){if((jk[c[r+12>>2]&255](b)|0)!=0){break}c[(c[p>>2]|0)+20>>2]=25;vk[c[c[p>>2]>>2]&511](k)}}while(0);r=(c[n>>2]|0)-1|0;c[o>>2]=r;}while((r|0)!=0)}do{o=c[q>>2]|0;n=o|0;r=c[n>>2]|0;c[n>>2]=r+1;a[r]=-1;r=o+4|0;n=(c[r>>2]|0)-1|0;c[r>>2]=n;do{if((n|0)==0){if((jk[c[o+12>>2]&255](b)|0)!=0){break}c[(c[p>>2]|0)+20>>2]=25;vk[c[c[p>>2]>>2]&511](k)}}while(0);o=c[q>>2]|0;n=o|0;r=c[n>>2]|0;c[n>>2]=r+1;a[r]=0;r=o+4|0;n=(c[r>>2]|0)-1|0;c[r>>2]=n;do{if((n|0)==0){if((jk[c[o+12>>2]&255](b)|0)!=0){break}c[(c[p>>2]|0)+20>>2]=25;vk[c[c[p>>2]>>2]&511](k)}}while(0);o=(c[g>>2]|0)-1|0;c[j>>2]=o;}while((o|0)!=0)}}while(0);s=c[f>>2]|0;if((s&134215680|0)==0){return}e=d+24|0;d=e;i=b+24|0;if((c[d>>2]|0)==0){v=s>>>19&255}else{s=b|0;l=b;h=e|0;do{e=c[i>>2]|0;j=e|0;g=c[j>>2]|0;c[j>>2]=g+1;a[g]=0;g=e+4|0;j=(c[g>>2]|0)-1|0;c[g>>2]=j;do{if((j|0)==0){if((jk[c[e+12>>2]&255](b)|0)!=0){break}c[(c[s>>2]|0)+20>>2]=25;vk[c[c[s>>2]>>2]&511](l)}}while(0);e=(c[d>>2]|0)-1|0;c[h>>2]=e;}while((e|0)!=0);v=(c[f>>2]|0)>>>19&255}h=c[i>>2]|0;d=h|0;l=c[d>>2]|0;c[d>>2]=l+1;a[l]=v;v=h+4|0;l=(c[v>>2]|0)-1|0;c[v>>2]=l;do{if((l|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}v=b|0;c[(c[v>>2]|0)+20>>2]=25;vk[c[c[v>>2]>>2]&511](b)}}while(0);do{if((c[f>>2]&133693440|0)==133693440){h=c[i>>2]|0;l=h|0;v=c[l>>2]|0;c[l>>2]=v+1;a[v]=0;v=h+4|0;l=(c[v>>2]|0)-1|0;c[v>>2]=l;if((l|0)!=0){break}if((jk[c[h+12>>2]&255](b)|0)!=0){break}h=b|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](b)}}while(0);h=c[f>>2]|0;if((h&522240|0)==0){return}l=c[i>>2]|0;v=l|0;d=c[v>>2]|0;c[v>>2]=d+1;a[d]=h>>>11;h=l+4|0;d=(c[h>>2]|0)-1|0;c[h>>2]=d;do{if((d|0)==0){if((jk[c[l+12>>2]&255](b)|0)!=0){break}h=b|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](b)}}while(0);if((c[f>>2]&522240|0)!=522240){return}f=c[i>>2]|0;i=f|0;l=c[i>>2]|0;c[i>>2]=l+1;a[l]=0;l=f+4|0;i=(c[l>>2]|0)-1|0;c[l>>2]=i;if((i|0)!=0){return}if((jk[c[f+12>>2]&255](b)|0)!=0){return}f=b|0;c[(c[f>>2]|0)+20>>2]=25;vk[c[c[f>>2]>>2]&511](b);return}function rV(a,e){a=a|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,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;f=c[a+420>>2]|0;g=a+236|0;if((c[g>>2]|0)!=0){h=f+68|0;i=c[h>>2]|0;if((i|0)==0){j=f+72|0;k=j;wV(a,c[k>>2]|0);l=c[g>>2]|0;c[h>>2]=l;c[j>>2]=(c[k>>2]|0)+1&7;m=l}else{m=i}c[h>>2]=m-1}m=a+316|0;if((c[m>>2]|0)<=0){return 1}h=a+372|0;i=f+76|0;l=f+52|0;k=f+36|0;f=0;do{j=c[a+320+(f<<2)>>2]|0;g=c[(c[a+292+(j<<2)>>2]|0)+20>>2]|0;n=b[c[e+(f<<2)>>2]>>1]>>c[h>>2];o=i+(g<<2)|0;p=c[o>>2]|0;q=l+(j<<2)|0;r=c[q>>2]|0;s=p+r|0;t=k+(j<<2)|0;j=c[t>>2]|0;u=n-j|0;do{if((n|0)==(j|0)){xV(a,s,0);c[q>>2]=0}else{c[t>>2]=n;xV(a,s,1);if((u|0)>0){xV(a,p+(r+1)|0,0);v=u;w=r+2|0;x=4}else{xV(a,p+(r+1)|0,1);v=-u|0;w=r+3|0;x=8}y=p+w|0;c[q>>2]=x;z=v-1|0;do{if((z|0)==0){A=0;B=y}else{xV(a,y,1);C=(c[o>>2]|0)+20|0;D=z>>1;if((D|0)==0){A=1;B=C;break}else{E=C;F=1;G=D}while(1){xV(a,E,1);D=F<<1;C=E+1|0;H=G>>1;if((H|0)==0){A=D;B=C;break}else{E=C;F=D;G=H}}}}while(0);xV(a,B,0);do{if((A|0)<(1<>1|0)){c[q>>2]=0}else{if((A|0)<=(1<>1|0)){break}c[q>>2]=(c[q>>2]|0)+8}}while(0);y=B+14|0;H=A>>1;if((H|0)==0){break}else{I=H}do{xV(a,y,(I&z|0)!=0|0);I=I>>1;}while((I|0)!=0)}}while(0);f=f+1|0;}while((f|0)<(c[m>>2]|0));return 1}function sV(a,e){a=a|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,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;f=c[a+420>>2]|0;g=a+236|0;if((c[g>>2]|0)!=0){h=f+68|0;i=c[h>>2]|0;if((i|0)==0){j=f+72|0;k=j;wV(a,c[k>>2]|0);l=c[g>>2]|0;c[h>>2]=l;c[j>>2]=(c[k>>2]|0)+1&7;m=l}else{m=i}c[h>>2]=m-1}m=c[a+380>>2]|0;h=c[e>>2]|0;e=c[(c[a+292>>2]|0)+24>>2]|0;i=a+364|0;l=c[i>>2]|0;k=a+372|0;a:do{if((l|0)>0){j=l;while(1){g=b[h+(c[m+(j<<2)>>2]<<1)>>1]|0;n=g<<16>>16;if(g<<16>>16>-1){if((n>>c[k>>2]|0)!=0){o=j;break a}}else{if((-n>>c[k>>2]|0)!=0){o=j;break a}}n=j-1|0;if((n|0)>0){j=n}else{o=n;break}}}else{o=l}}while(0);j=c[a+360>>2]|0;if((j|0)>(o|0)){p=j;q=l}else{l=f+140+(e<<2)|0;n=f+204|0;g=a+184+e|0;r=j;do{j=(c[l>>2]|0)+((r*3|0)-3)|0;xV(a,j,0);s=j;j=r;while(1){t=b[h+(c[m+(j<<2)>>2]<<1)>>1]|0;u=t<<16>>16;if(t<<16>>16>-1){v=u>>c[k>>2];if((v|0)!=0){w=15;break}}else{x=-u>>c[k>>2];if((x|0)!=0){w=17;break}}xV(a,s+1|0,0);s=s+3|0;j=j+1|0}if((w|0)==15){w=0;xV(a,s+1|0,1);xV(a,n,0);y=v}else if((w|0)==17){w=0;xV(a,s+1|0,1);xV(a,n,1);y=x}u=s+2|0;t=y-1|0;do{if((t|0)==0){z=u;A=0}else{xV(a,u,1);if(t>>>0<2>>>0){z=u;A=1;break}xV(a,u,1);B=(c[l>>2]|0)+((j|0)<=(d[g]|0|0)?189:217)|0;C=t>>2;if((C|0)==0){z=B;A=2;break}else{D=2;E=B;F=C}while(1){xV(a,E,1);C=D<<1;B=E+1|0;G=F>>1;if((G|0)==0){z=B;A=C;break}else{D=C;E=B;F=G}}}}while(0);xV(a,z,0);u=z+14|0;s=A>>1;if((s|0)!=0){G=s;do{xV(a,u,(G&t|0)!=0|0);G=G>>1;}while((G|0)!=0)}r=j+1|0;}while((j|0)<(o|0));p=r;q=c[i>>2]|0}if((p|0)>(q|0)){return 1}xV(a,(c[f+140+(e<<2)>>2]|0)+((p*3|0)-3)|0,1);return 1}function tV(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[a+420>>2]|0;f=a+236|0;if((c[f>>2]|0)!=0){g=e+68|0;h=c[g>>2]|0;if((h|0)==0){i=e+72|0;j=i;wV(a,c[j>>2]|0);k=c[f>>2]|0;c[g>>2]=k;c[i>>2]=(c[j>>2]|0)+1&7;l=k}else{l=h}c[g>>2]=l-1}l=e+204|0;e=c[a+372>>2]|0;g=a+316|0;if((c[g>>2]|0)>0){m=0}else{return 1}do{xV(a,l,(b[c[d+(m<<2)>>2]>>1]|0)>>>(e>>>0)&1);m=m+1|0;}while((m|0)<(c[g>>2]|0));return 1}function uV(a,d){a=a|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,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;e=c[a+420>>2]|0;f=a+236|0;if((c[f>>2]|0)!=0){g=e+68|0;h=c[g>>2]|0;if((h|0)==0){i=e+72|0;j=i;wV(a,c[j>>2]|0);k=c[f>>2]|0;c[g>>2]=k;c[i>>2]=(c[j>>2]|0)+1&7;l=k}else{l=h}c[g>>2]=l-1}l=c[a+380>>2]|0;g=c[d>>2]|0;d=c[(c[a+292>>2]|0)+24>>2]|0;h=a+364|0;k=c[h>>2]|0;j=a+372|0;a:do{if((k|0)>0){i=k;while(1){f=b[g+(c[l+(i<<2)>>2]<<1)>>1]|0;m=f<<16>>16;if(f<<16>>16>-1){if((m>>c[j>>2]|0)!=0){break}}else{if((-m>>c[j>>2]|0)!=0){break}}m=i-1|0;if((m|0)>0){i=m}else{n=m;o=m;break a}}m=a+368|0;if((i|0)>0){p=i}else{n=i;o=i;break}while(1){f=b[g+(c[l+(p<<2)>>2]<<1)>>1]|0;q=f<<16>>16;if(f<<16>>16>-1){if((q>>c[m>>2]|0)!=0){n=p;o=i;break a}}else{if((-q>>c[m>>2]|0)!=0){n=p;o=i;break a}}q=p-1|0;if((q|0)>0){p=q}else{n=q;o=i;break}}}else{n=k;o=k}}while(0);p=c[a+360>>2]|0;if((p|0)>(o|0)){r=p;s=k}else{k=e+140+(d<<2)|0;i=e+204|0;m=p;do{p=(c[k>>2]|0)+((m*3|0)-3)|0;if((m|0)>(n|0)){xV(a,p,0);t=p;u=m}else{t=p;u=m}while(1){p=b[g+(c[l+(u<<2)>>2]<<1)>>1]|0;q=p<<16>>16;if(p<<16>>16>-1){v=q>>c[j>>2];if((v|0)!=0){w=21;break}}else{x=-q>>c[j>>2];if((x|0)!=0){w=25;break}}xV(a,t+1|0,0);t=t+3|0;u=u+1|0}do{if((w|0)==21){w=0;if(v>>>0>1>>>0){xV(a,t+2|0,v&1);break}else{xV(a,t+1|0,1);xV(a,i,0);break}}else if((w|0)==25){w=0;if(x>>>0>1>>>0){xV(a,t+2|0,x&1);break}else{xV(a,t+1|0,1);xV(a,i,1);break}}}while(0);m=u+1|0;}while((u|0)<(o|0));r=m;s=c[h>>2]|0}if((r|0)>(s|0)){return 1}xV(a,(c[e+140+(d<<2)>>2]|0)+((r*3|0)-3)|0,1);return 1}function vV(a,e){a=a|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,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,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,_=0;f=c[a+420>>2]|0;g=a+236|0;if((c[g>>2]|0)!=0){h=f+68|0;i=c[h>>2]|0;if((i|0)==0){j=f+72|0;k=j;wV(a,c[k>>2]|0);l=c[g>>2]|0;c[h>>2]=l;c[j>>2]=(c[k>>2]|0)+1&7;m=l}else{m=i}c[h>>2]=m-1}m=c[a+380>>2]|0;h=a+316|0;if((c[h>>2]|0)<=0){return 1}i=f+76|0;l=f+52|0;k=f+36|0;j=a+384|0;g=f+140|0;n=f+204|0;f=0;do{o=c[e+(f<<2)>>2]|0;p=c[a+320+(f<<2)>>2]|0;q=c[a+292+(p<<2)>>2]|0;r=c[q+20>>2]|0;s=i+(r<<2)|0;t=c[s>>2]|0;u=l+(p<<2)|0;v=c[u>>2]|0;w=t+v|0;x=b[o>>1]|0;y=k+(p<<2)|0;p=c[y>>2]|0;z=x-p|0;do{if((x|0)==(p|0)){xV(a,w,0);c[u>>2]=0}else{c[y>>2]=x;xV(a,w,1);if((z|0)>0){xV(a,t+(v+1)|0,0);A=v+2|0;B=z;C=4}else{xV(a,t+(v+1)|0,1);A=v+3|0;B=-z|0;C=8}D=t+A|0;c[u>>2]=C;E=B-1|0;do{if((E|0)==0){F=D;G=0}else{xV(a,D,1);H=(c[s>>2]|0)+20|0;I=E>>1;if((I|0)==0){F=H;G=1;break}else{J=1;K=H;L=I}while(1){xV(a,K,1);I=J<<1;H=K+1|0;M=L>>1;if((M|0)==0){F=H;G=I;break}else{J=I;K=H;L=M}}}}while(0);xV(a,F,0);do{if((G|0)<(1<>1|0)){c[u>>2]=0}else{if((G|0)<=(1<>1|0)){break}c[u>>2]=(c[u>>2]|0)+8}}while(0);D=F+14|0;M=G>>1;if((M|0)==0){break}else{N=M}do{xV(a,D,(N&E|0)!=0|0);N=N>>1;}while((N|0)!=0)}}while(0);u=c[q+24>>2]|0;r=c[j>>2]|0;a:do{if((r|0)>0){s=r;while(1){t=s-1|0;if((b[o+(c[m+(s<<2)>>2]<<1)>>1]|0)!=0){break}if((t|0)>0){s=t}else{O=1;P=r;break a}}if((s|0)<1){O=1;P=r;break}t=g+(u<<2)|0;z=a+184+u|0;v=1;do{w=c[t>>2]|0;x=v*3|0;y=w+(x-3)|0;xV(a,y,0);p=b[o+(c[m+(v<<2)>>2]<<1)>>1]|0;E=w+(x-2)|0;if(p<<16>>16==0){x=v;w=y;D=E;while(1){xV(a,D,0);M=w+3|0;H=x+1|0;I=b[o+(c[m+(H<<2)>>2]<<1)>>1]|0;Q=w+4|0;if(I<<16>>16==0){x=H;w=M;D=Q}else{R=H;S=M;T=I;U=Q;break}}}else{R=v;S=y;T=p;U=E}D=T<<16>>16;xV(a,U,1);if(T<<16>>16>0){xV(a,n,0);V=D}else{xV(a,n,1);V=-D|0}D=S+2|0;w=V-1|0;do{if((w|0)==0){W=D;X=0}else{xV(a,D,1);if(w>>>0<2>>>0){W=D;X=1;break}xV(a,D,1);x=(c[t>>2]|0)+((R|0)<=(d[z]|0)?189:217)|0;Q=w>>2;if((Q|0)==0){W=x;X=2;break}else{Y=2;Z=x;_=Q}while(1){xV(a,Z,1);Q=Y<<1;x=Z+1|0;I=_>>1;if((I|0)==0){W=x;X=Q;break}else{Y=Q;Z=x;_=I}}}}while(0);xV(a,W,0);D=W+14|0;E=X>>1;if((E|0)!=0){p=E;do{xV(a,D,(p&w|0)!=0|0);p=p>>1;}while((p|0)!=0)}v=R+1|0;}while((R|0)<(s|0));O=v;P=c[j>>2]|0}else{O=1;P=r}}while(0);if((O|0)<=(P|0)){xV(a,(c[g+(u<<2)>>2]|0)+((O*3|0)-3)|0,1)}f=f+1|0;}while((f|0)<(c[h>>2]|0));return 1}function wV(b,d){b=b|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,q=0,r=0,s=0,t=0;e=c[b+420>>2]|0;qV(b);f=b+24|0;g=c[f>>2]|0;h=g|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i]=-1;i=g+4|0;h=(c[i>>2]|0)-1|0;c[i>>2]=h;do{if((h|0)==0){if((jk[c[g+12>>2]&255](b)|0)!=0){break}i=b|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](b)}}while(0);g=c[f>>2]|0;f=g|0;h=c[f>>2]|0;c[f>>2]=h+1;a[h]=d+208;d=g+4|0;h=(c[d>>2]|0)-1|0;c[d>>2]=h;do{if((h|0)==0){if((jk[c[g+12>>2]&255](b)|0)!=0){break}d=b|0;c[(c[d>>2]|0)+20>>2]=25;vk[c[c[d>>2]>>2]&511](b)}}while(0);g=b+288|0;if((c[g>>2]|0)<=0){j=e+12|0;c[j>>2]=0;k=e+16|0;c[k>>2]=65536;l=e+20|0;c[l>>2]=0;m=e+24|0;c[m>>2]=0;n=e+28|0;c[n>>2]=11;o=e+32|0;c[o>>2]=-1;return}h=b+360|0;d=b+368|0;f=e+76|0;i=e+36|0;p=e+52|0;q=b+364|0;r=e+140|0;s=0;do{t=c[b+292+(s<<2)>>2]|0;do{if((c[h>>2]|0)==0){if((c[d>>2]|0)!=0){break}n$(c[f+(c[t+20>>2]<<2)>>2]|0,0,64)|0;c[i+(s<<2)>>2]=0;c[p+(s<<2)>>2]=0}}while(0);if((c[q>>2]|0)!=0){n$(c[r+(c[t+24>>2]<<2)>>2]|0,0,256)|0}s=s+1|0;}while((s|0)<(c[g>>2]|0));j=e+12|0;c[j>>2]=0;k=e+16|0;c[k>>2]=65536;l=e+20|0;c[l>>2]=0;m=e+24|0;c[m>>2]=0;n=e+28|0;c[n>>2]=11;o=e+32|0;c[o>>2]=-1;return}function xV(b,e,f){b=b|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,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;g=c[b+420>>2]|0;h=d[e]|0;i=c[18848+((h&127)<<2)>>2]|0;j=i>>>8;k=i>>16;l=g+16|0;m=l;n=(c[m>>2]|0)-k|0;c[l>>2]=n;if((h>>>7|0)==(f|0)){if((n|0)>32767){return}if((n|0)<(k|0)){f=g+12|0;c[f>>2]=(c[f>>2]|0)+n;c[l>>2]=k}o=(h&128^j)&255}else{if((n|0)>=(k|0)){j=g+12|0;c[j>>2]=(c[j>>2]|0)+n;c[l>>2]=k}o=(h&128^i)&255}a[e]=o;o=g+12|0;e=o;i=o|0;o=g+28|0;h=o;k=g+32|0;n=k;j=g+24|0;f=j;p=b+24|0;q=b|0;r=b;s=j|0;j=g+20|0;g=j;t=c[m>>2]|0;u=c[e>>2]|0;v=c[h>>2]|0;while(1){w=t<<1;c[l>>2]=w;x=u<<1;c[i>>2]=x;y=v-1|0;c[o>>2]=y;if((y|0)==0){z=x>>19;do{if((z|0)>255){A=c[n>>2]|0;do{if((A|0)>-1){if((c[f>>2]|0)==0){B=A}else{do{C=c[p>>2]|0;D=C|0;E=c[D>>2]|0;c[D>>2]=E+1;a[E]=0;E=C+4|0;D=(c[E>>2]|0)-1|0;c[E>>2]=D;do{if((D|0)==0){if((jk[c[C+12>>2]&255](b)|0)!=0){break}c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](r)}}while(0);C=(c[f>>2]|0)-1|0;c[s>>2]=C;}while((C|0)!=0);B=c[n>>2]|0}C=c[p>>2]|0;D=C|0;E=c[D>>2]|0;c[D>>2]=E+1;a[E]=B+1;E=C+4|0;D=(c[E>>2]|0)-1|0;c[E>>2]=D;do{if((D|0)==0){if((jk[c[C+12>>2]&255](b)|0)!=0){break}c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](r)}}while(0);if((c[n>>2]|0)!=254){break}C=c[p>>2]|0;D=C|0;E=c[D>>2]|0;c[D>>2]=E+1;a[E]=0;E=C+4|0;D=(c[E>>2]|0)-1|0;c[E>>2]=D;if((D|0)!=0){break}if((jk[c[C+12>>2]&255](b)|0)!=0){break}c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](r)}}while(0);c[s>>2]=(c[f>>2]|0)+(c[g>>2]|0);c[j>>2]=0;c[k>>2]=z&255}else{if((z|0)==255){c[j>>2]=(c[g>>2]|0)+1;break}A=c[n>>2]|0;do{if((A|0)==0){c[s>>2]=(c[f>>2]|0)+1}else{if(!((A|0)>-1)){break}if((c[f>>2]|0)==0){F=A&255}else{do{C=c[p>>2]|0;D=C|0;E=c[D>>2]|0;c[D>>2]=E+1;a[E]=0;E=C+4|0;D=(c[E>>2]|0)-1|0;c[E>>2]=D;do{if((D|0)==0){if((jk[c[C+12>>2]&255](b)|0)!=0){break}c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](r)}}while(0);C=(c[f>>2]|0)-1|0;c[s>>2]=C;}while((C|0)!=0);F=c[n>>2]&255}C=c[p>>2]|0;D=C|0;E=c[D>>2]|0;c[D>>2]=E+1;a[E]=F;E=C+4|0;D=(c[E>>2]|0)-1|0;c[E>>2]=D;if((D|0)!=0){break}if((jk[c[C+12>>2]&255](b)|0)!=0){break}c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](r)}}while(0);if((c[g>>2]|0)!=0){if((c[f>>2]|0)!=0){do{A=c[p>>2]|0;C=A|0;D=c[C>>2]|0;c[C>>2]=D+1;a[D]=0;D=A+4|0;C=(c[D>>2]|0)-1|0;c[D>>2]=C;do{if((C|0)==0){if((jk[c[A+12>>2]&255](b)|0)!=0){break}c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](r)}}while(0);A=(c[f>>2]|0)-1|0;c[s>>2]=A;}while((A|0)!=0)}do{A=c[p>>2]|0;C=A|0;D=c[C>>2]|0;c[C>>2]=D+1;a[D]=-1;D=A+4|0;C=(c[D>>2]|0)-1|0;c[D>>2]=C;do{if((C|0)==0){if((jk[c[A+12>>2]&255](b)|0)!=0){break}c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](r)}}while(0);A=c[p>>2]|0;C=A|0;D=c[C>>2]|0;c[C>>2]=D+1;a[D]=0;D=A+4|0;C=(c[D>>2]|0)-1|0;c[D>>2]=C;do{if((C|0)==0){if((jk[c[A+12>>2]&255](b)|0)!=0){break}c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](r)}}while(0);A=(c[g>>2]|0)-1|0;c[j>>2]=A;}while((A|0)!=0)}c[k>>2]=z&255}}while(0);z=c[e>>2]&524287;c[i>>2]=z;A=(c[h>>2]|0)+8|0;c[o>>2]=A;G=z;H=A;I=c[m>>2]|0}else{G=x;H=y;I=w}if((I|0)<32768){t=I;u=G;v=H}else{break}}return}function yV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=a+4|0;e=a;f=rk[c[c[d>>2]>>2]&63](e,1,104)|0;c[a+400>>2]=f;c[f>>2]=30;if((b|0)==0){b=rk[c[(c[d>>2]|0)+4>>2]&63](e,1,1280)|0;c[f+24>>2]=b;c[f+28>>2]=b+128;c[f+32>>2]=b+256;c[f+36>>2]=b+384;c[f+40>>2]=b+512;c[f+44>>2]=b+640;c[f+48>>2]=b+768;c[f+52>>2]=b+896;c[f+56>>2]=b+1024;c[f+60>>2]=b+1152;c[f+64>>2]=0;return}b=a+76|0;if((c[b>>2]|0)<=0){return}g=f+64|0;f=c[a+84>>2]|0;a=0;while(1){h=c[(c[d>>2]|0)+20>>2]|0;i=P_(c[f+28>>2]|0,c[f+8>>2]|0)|0;j=f+12|0;k=P_(c[f+32>>2]|0,c[j>>2]|0)|0;c[g+(a<<2)>>2]=ik[h&15](e,1,0,i,k,c[j>>2]|0)|0;j=a+1|0;if((j|0)<(c[b>>2]|0)){f=f+88|0;a=j}else{break}}return}function zV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+400|0;e=c[d>>2]|0;c[e+8>>2]=0;f=c[d>>2]|0;do{if((c[a+288>>2]|0)>1){c[f+20>>2]=1}else{d=c[a+292>>2]|0;if((c[f+8>>2]|0)>>>0<((c[a+284>>2]|0)-1|0)>>>0){c[f+20>>2]=c[d+12>>2];break}else{c[f+20>>2]=c[d+76>>2];break}}}while(0);c[f+12>>2]=0;c[f+16>>2]=0;if((b|0)==2){if((c[e+64>>2]|0)==0){f=a|0;c[(c[f>>2]|0)+20>>2]=3;vk[c[c[f>>2]>>2]&511](a)}c[e+4>>2]=22;return}else if((b|0)==0){if((c[e+64>>2]|0)!=0){f=a|0;c[(c[f>>2]|0)+20>>2]=3;vk[c[c[f>>2]>>2]&511](a)}c[e+4>>2]=30;return}else if((b|0)==3){if((c[e+64>>2]|0)==0){b=a|0;c[(c[b>>2]|0)+20>>2]=3;vk[c[c[b>>2]>>2]&511](a)}c[e+4>>2]=96;return}else{e=a|0;c[(c[e>>2]|0)+20>>2]=3;vk[c[c[e>>2]>>2]&511](a);return}}function AV(a,d){a=a|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,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,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,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0;e=a+400|0;f=c[e>>2]|0;g=(c[a+308>>2]|0)-1|0;h=a+284|0;i=(c[h>>2]|0)-1|0;j=f+16|0;k=c[j>>2]|0;l=f+20|0;m=c[l>>2]|0;a:do{if((k|0)<(m|0)){n=f+12|0;o=a+288|0;p=a+416|0;q=f+8|0;r=q;s=f+24|0;t=s;u=a+420|0;v=s;s=k;w=c[n>>2]|0;x=m;b:while(1){if(w>>>0>g>>>0){y=x}else{z=w;while(1){A=c[o>>2]|0;if((A|0)>0){if(z>>>0>>0){B=0;C=0;D=A;while(1){E=c[a+292+(B<<2)>>2]|0;F=E+4|0;G=c[(c[p>>2]|0)+4+(c[F>>2]<<2)>>2]|0;H=E+56|0;I=c[H>>2]|0;J=da(c[E+68>>2]|0,z)|0;K=E+40|0;L=E+60|0;if((c[L>>2]|0)>0){M=E+76|0;N=0;O=da(c[K>>2]|0,s)|0;P=C;Q=I;while(1){do{if((c[r>>2]|0)>>>0>>0){R=14}else{if((N+s|0)<(c[M>>2]|0)){R=14;break}S_(c[t+(P<<2)>>2]|0,Q<<7);S=c[H>>2]|0;if((S|0)<=0){T=S;break}S=t+(P-1<<2)|0;U=0;while(1){b[c[t+(U+P<<2)>>2]>>1]=b[c[S>>2]>>1]|0;V=U+1|0;W=c[H>>2]|0;if((V|0)<(W|0)){U=V}else{T=W;break}}}}while(0);do{if((R|0)==14){R=0;Gk[G&63](a,E,c[d+(c[F>>2]<<2)>>2]|0,c[t+(P<<2)>>2]|0,O,J,I);U=c[H>>2]|0;if((I|0)>=(U|0)){T=U;break}S_(c[t+(P+I<<2)>>2]|0,U-I<<7);U=c[H>>2]|0;if((I|0)<(U|0)){X=I}else{T=U;break}while(1){U=X+P|0;b[c[t+(U<<2)>>2]>>1]=b[c[t+(U-1<<2)>>2]>>1]|0;U=X+1|0;S=c[H>>2]|0;if((U|0)<(S|0)){X=U}else{T=S;break}}}}while(0);Y=T+P|0;S=N+1|0;if((S|0)<(c[L>>2]|0)){N=S;O=(c[K>>2]|0)+O|0;P=Y;Q=T}else{break}}Z=Y;_=c[o>>2]|0}else{Z=C;_=D}Q=B+1|0;if((Q|0)<(_|0)){B=Q;C=Z;D=_}else{break}}}else{D=0;C=0;B=A;while(1){Q=c[a+292+(D<<2)>>2]|0;P=Q+4|0;O=c[(c[p>>2]|0)+4+(c[P>>2]<<2)>>2]|0;K=Q+56|0;N=c[Q+72>>2]|0;L=da(c[Q+68>>2]|0,z)|0;H=Q+40|0;I=Q+60|0;if((c[I>>2]|0)>0){J=Q+76|0;F=0;E=da(c[H>>2]|0,s)|0;G=C;while(1){do{if((c[r>>2]|0)>>>0>>0){R=25}else{if((F+s|0)<(c[J>>2]|0)){R=25;break}S_(c[t+(G<<2)>>2]|0,c[K>>2]<<7);M=c[K>>2]|0;if((M|0)<=0){$=M;break}M=t+(G-1<<2)|0;S=0;while(1){b[c[t+(S+G<<2)>>2]>>1]=b[c[M>>2]>>1]|0;U=S+1|0;W=c[K>>2]|0;if((U|0)<(W|0)){S=U}else{$=W;break}}}}while(0);do{if((R|0)==25){R=0;Gk[O&63](a,Q,c[d+(c[P>>2]<<2)>>2]|0,c[t+(G<<2)>>2]|0,E,L,N);S=c[K>>2]|0;if((N|0)>=(S|0)){$=S;break}S_(c[t+(G+N<<2)>>2]|0,S-N<<7);S=c[K>>2]|0;if((N|0)<(S|0)){aa=N}else{$=S;break}while(1){S=aa+G|0;b[c[t+(S<<2)>>2]>>1]=b[c[t+(S-1<<2)>>2]>>1]|0;S=aa+1|0;M=c[K>>2]|0;if((S|0)<(M|0)){aa=S}else{$=M;break}}}}while(0);ba=$+G|0;M=F+1|0;if((M|0)<(c[I>>2]|0)){F=M;E=(c[H>>2]|0)+E|0;G=ba}else{break}}ca=ba;ea=c[o>>2]|0}else{ca=C;ea=B}G=D+1|0;if((G|0)<(ea|0)){D=G;C=ca;B=ea}else{break}}}}B=z+1|0;if((Kk[c[(c[u>>2]|0)+4>>2]&255](a,v)|0)==0){break b}if(B>>>0>g>>>0){break}else{z=B}}y=c[l>>2]|0}c[n>>2]=0;B=s+1|0;if((B|0)<(y|0)){s=B;w=0;x=y}else{fa=q;ga=r;ha=o;break a}}c[j>>2]=s;c[n>>2]=z;ia=0;return ia|0}else{o=f+8|0;fa=o;ga=o;ha=a+288|0}}while(0);c[fa>>2]=(c[ga>>2]|0)+1;ga=c[e>>2]|0;do{if((c[ha>>2]|0)>1){c[ga+20>>2]=1}else{e=c[a+292>>2]|0;if((c[ga+8>>2]|0)>>>0<((c[h>>2]|0)-1|0)>>>0){c[ga+20>>2]=c[e+12>>2];break}else{c[ga+20>>2]=c[e+76>>2];break}}}while(0);c[ga+12>>2]=0;c[ga+16>>2]=0;ia=1;return ia|0}function BV(a,d){a=a|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,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;e=c[a+400>>2]|0;f=(c[a+284>>2]|0)-1|0;g=a+76|0;if((c[g>>2]|0)<=0){h=CV(a,d)|0;return h|0}i=a+4|0;j=a;k=e+64|0;l=e+8|0;e=a+416|0;m=0;n=c[a+84>>2]|0;while(1){o=n+12|0;p=c[o>>2]|0;q=da(p,c[l>>2]|0)|0;r=Rk[c[(c[i>>2]|0)+32>>2]&15](j,c[k+(m<<2)>>2]|0,q,p,1)|0;p=c[l>>2]|0;if(p>>>0>>0){s=c[o>>2]|0}else{q=c[o>>2]|0;t=((c[n+32>>2]|0)>>>0)%(q>>>0)|0;s=(t|0)==0?q:t}t=c[n+28>>2]|0;q=c[n+8>>2]|0;u=(t>>>0)%(q>>>0)|0;v=(u|0)>0?q-u|0:u;u=c[(c[e>>2]|0)+4+(m<<2)>>2]|0;if((s|0)>0){w=d+(m<<2)|0;x=n+40|0;y=(v|0)>0;z=v<<7;A=t-1|0;B=0;do{C=c[r+(B<<2)>>2]|0;D=da(c[x>>2]|0,B)|0;Gk[u&63](a,n,c[w>>2]|0,C,D,0,t);if(y){S_(C+(t<<7)|0,z);D=b[C+(A<<7)>>1]|0;E=0;do{b[C+(E+t<<7)>>1]=D;E=E+1|0;}while((E|0)<(v|0))}B=B+1|0;}while((B|0)<(s|0));F=c[l>>2]|0}else{F=p}do{if((F|0)==(f|0)){B=v+t|0;A=(B>>>0)/(q>>>0)|0;if((s|0)>=(c[o>>2]|0)){break}z=B<<7;B=(A|0)==0;y=q-1|0;w=(q|0)>0;u=s;do{x=c[r+(u<<2)>>2]|0;E=c[r+(u-1<<2)>>2]|0;S_(x,z);if(!B){D=0;C=x;x=E;while(1){E=b[x+(y<<7)>>1]|0;if(w){G=0;do{b[C+(G<<7)>>1]=E;G=G+1|0;}while((G|0)<(q|0))}G=D+1|0;if(G>>>0>>0){D=G;C=C+(q<<7)|0;x=x+(q<<7)|0}else{break}}}u=u+1|0;}while((u|0)<(c[o>>2]|0))}}while(0);o=m+1|0;if((o|0)>=(c[g>>2]|0)){break}m=o;n=n+88|0}h=CV(a,d)|0;return h|0}function CV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;b=i;i=i+16|0;d=b|0;e=a+400|0;f=c[e>>2]|0;g=a+288|0;if((c[g>>2]|0)>0){h=a+4|0;j=a;k=f+64|0;l=f+8|0;m=0;do{n=c[a+292+(m<<2)>>2]|0;o=c[n+12>>2]|0;p=da(o,c[l>>2]|0)|0;c[d+(m<<2)>>2]=Rk[c[(c[h>>2]|0)+32>>2]&15](j,c[k+(c[n+4>>2]<<2)>>2]|0,p,o,0)|0;m=m+1|0;}while((m|0)<(c[g>>2]|0))}m=f+16|0;k=c[m>>2]|0;j=f+20|0;h=c[j>>2]|0;a:do{if((k|0)<(h|0)){l=f+12|0;o=a+308|0;p=a+420|0;n=f+24|0;q=n;r=n;n=k;s=c[l>>2]|0;t=h;b:while(1){if(s>>>0<(c[o>>2]|0)>>>0){u=s;while(1){v=c[g>>2]|0;if((v|0)>0){w=0;x=0;y=v;while(1){v=c[a+292+(x<<2)>>2]|0;z=v+56|0;A=c[z>>2]|0;B=da(A,u)|0;C=v+60|0;v=c[C>>2]|0;if((v|0)>0){D=c[d+(x<<2)>>2]|0;E=w;F=0;G=A;A=v;while(1){if((G|0)>0){v=E;H=0;I=(c[D+(F+n<<2)>>2]|0)+(B<<7)|0;while(1){J=v+1|0;c[r+(v<<2)>>2]=I;K=H+1|0;L=c[z>>2]|0;if((K|0)<(L|0)){v=J;H=K;I=I+128|0}else{break}}M=J;N=L;O=c[C>>2]|0}else{M=E;N=G;O=A}I=F+1|0;if((I|0)<(O|0)){E=M;F=I;G=N;A=O}else{break}}P=M;Q=c[g>>2]|0}else{P=w;Q=y}A=x+1|0;if((A|0)<(Q|0)){w=P;x=A;y=Q}else{break}}}y=u+1|0;if((Kk[c[(c[p>>2]|0)+4>>2]&255](a,q)|0)==0){break b}if(y>>>0<(c[o>>2]|0)>>>0){u=y}else{break}}R=c[j>>2]|0}else{R=t}c[l>>2]=0;y=n+1|0;if((y|0)<(R|0)){n=y;s=0;t=R}else{break a}}c[m>>2]=n;c[l>>2]=u;S=0;i=b;return S|0}}while(0);u=f+8|0;c[u>>2]=(c[u>>2]|0)+1;u=c[e>>2]|0;do{if((c[g>>2]|0)>1){c[u+20>>2]=1}else{e=c[a+292>>2]|0;if((c[u+8>>2]|0)>>>0<((c[a+284>>2]|0)-1|0)>>>0){c[u+20>>2]=c[e+12>>2];break}else{c[u+20>>2]=c[e+76>>2];break}}}while(0);c[u+12>>2]=0;c[u+16>>2]=0;S=1;i=b;return S|0}function DV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a;d=rk[c[c[a+4>>2]>>2]&63](b,1,12)|0;c[a+408>>2]=d;e=d;c[e>>2]=192;f=a+40|0;a:do{switch(c[f>>2]|0){case 1:{if((c[a+36>>2]|0)==1){break a}g=a|0;c[(c[g>>2]|0)+20>>2]=10;vk[c[c[g>>2]>>2]&511](b);break};case 2:case 3:{if((c[a+36>>2]|0)==3){break a}g=a|0;c[(c[g>>2]|0)+20>>2]=10;vk[c[c[g>>2]>>2]&511](b);break};case 4:case 5:{if((c[a+36>>2]|0)==4){break a}g=a|0;c[(c[g>>2]|0)+20>>2]=10;vk[c[c[g>>2]>>2]&511](b);break};default:{if((c[a+36>>2]|0)>=1){break a}g=a|0;c[(c[g>>2]|0)+20>>2]=10;vk[c[c[g>>2]>>2]&511](b)}}}while(0);g=c[a+80>>2]|0;switch(g|0){case 1:{if((c[a+76>>2]|0)!=1){h=a|0;c[(c[h>>2]|0)+20>>2]=11;vk[c[c[h>>2]>>2]&511](b)}h=c[f>>2]|0;if((h|0)==1){c[d+4>>2]=58;return}else if((h|0)==2){c[e>>2]=206;c[d+4>>2]=4;return}else if((h|0)==3){c[d+4>>2]=58;return}else{h=a|0;c[(c[h>>2]|0)+20>>2]=28;vk[c[c[h>>2]>>2]&511](b);return}break};case 2:{if((c[a+76>>2]|0)!=3){h=a|0;c[(c[h>>2]|0)+20>>2]=11;vk[c[c[h>>2]>>2]&511](b)}if((c[f>>2]|0)==2){c[d+4>>2]=12;return}else{h=a|0;c[(c[h>>2]|0)+20>>2]=28;vk[c[c[h>>2]>>2]&511](b);return}break};case 3:{if((c[a+76>>2]|0)!=3){h=a|0;c[(c[h>>2]|0)+20>>2]=11;vk[c[c[h>>2]>>2]&511](b)}h=c[f>>2]|0;if((h|0)==2){c[e>>2]=206;c[d+4>>2]=80;return}else if((h|0)==3){c[d+4>>2]=12;return}else{h=a|0;c[(c[h>>2]|0)+20>>2]=28;vk[c[c[h>>2]>>2]&511](b);return}break};case 4:{if((c[a+76>>2]|0)!=4){h=a|0;c[(c[h>>2]|0)+20>>2]=11;vk[c[c[h>>2]>>2]&511](b)}if((c[f>>2]|0)==4){c[d+4>>2]=12;return}else{h=a|0;c[(c[h>>2]|0)+20>>2]=28;vk[c[c[h>>2]>>2]&511](b);return}break};case 5:{if((c[a+76>>2]|0)!=4){h=a|0;c[(c[h>>2]|0)+20>>2]=11;vk[c[c[h>>2]>>2]&511](b)}h=c[f>>2]|0;if((h|0)==4){c[e>>2]=206;c[d+4>>2]=94;return}else if((h|0)==5){c[d+4>>2]=12;return}else{h=a|0;c[(c[h>>2]|0)+20>>2]=28;vk[c[c[h>>2]>>2]&511](b);return}break};default:{if((g|0)==(c[f>>2]|0)){if((c[a+76>>2]|0)!=(c[a+36>>2]|0)){i=42}}else{i=42}if((i|0)==42){i=a|0;c[(c[i>>2]|0)+20>>2]=28;vk[c[c[i>>2]>>2]&511](b)}c[d+4>>2]=12;return}}}function EV(a){a=a|0;return}function FV(b,d,e,f,g){b=b|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;h=c[b+28>>2]|0;i=c[b+36>>2]|0;if((g|0)<1|(h|0)==0){return}else{j=f;k=d;l=g}while(1){g=l-1|0;d=k+4|0;f=c[(c[e>>2]|0)+(j<<2)>>2]|0;b=j+1|0;m=c[k>>2]|0;n=0;while(1){a[f+n|0]=a[m]|0;o=n+1|0;if(o>>>0>>0){m=m+i|0;n=o}else{break}}if((g|0)>0){j=b;k=d;l=g}else{break}}return}function GV(a){a=a|0;var b=0,d=0;b=c[a+408>>2]|0;d=rk[c[c[a+4>>2]>>2]&63](a,1,8192)|0;a=d;c[b+8>>2]=d;d=0;do{c[a+(d<<2)>>2]=d*19595|0;c[a+(d+256<<2)>>2]=d*38470|0;c[a+(d+512<<2)>>2]=(d*7471|0)+32768;c[a+(d+768<<2)>>2]=d*-11059|0;c[a+(d+1024<<2)>>2]=d*-21709|0;c[a+(d+1280<<2)>>2]=(d<<15)+8421375;c[a+(d+1536<<2)>>2]=d*-27439|0;c[a+(d+1792<<2)>>2]=d*-5329|0;d=d+1|0;}while((d|0)<256);return}function HV(b,e,f,g,h){b=b|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;i=c[(c[b+408>>2]|0)+8>>2]|0;j=c[b+28>>2]|0;if((h|0)<1|(j|0)==0){return}else{k=g;l=e;m=h}while(1){h=m-1|0;e=l+4|0;g=c[(c[f>>2]|0)+(k<<2)>>2]|0;b=k+1|0;n=c[l>>2]|0;o=0;while(1){a[g+o|0]=((c[i+((d[n+1|0]|0|256)<<2)>>2]|0)+(c[i+((d[n]|0)<<2)>>2]|0)+(c[i+((d[n+2|0]|0|512)<<2)>>2]|0)|0)>>>16;p=o+1|0;if(p>>>0>>0){n=n+3|0;o=p}else{break}}if((h|0)>0){k=b;l=e;m=h}else{break}}return}function IV(b,d,e,f,g){b=b|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;h=c[b+76>>2]|0;i=c[b+28>>2]|0;if((g|0)<=0){return}b=(i|0)==0;j=f;f=d;d=g;while(1){g=d-1|0;if(!((h|0)<1|b)){k=0;do{l=c[(c[e+(k<<2)>>2]|0)+(j<<2)>>2]|0;m=c[f>>2]|0;n=0;while(1){a[l+n|0]=a[m+k|0]|0;o=n+1|0;if(o>>>0>>0){m=m+h|0;n=o}else{break}}k=k+1|0;}while((k|0)<(h|0))}if((g|0)>0){j=j+1|0;f=f+4|0;d=g}else{break}}return}function JV(b,e,f,g,h){b=b|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;i=c[(c[b+408>>2]|0)+8>>2]|0;j=c[b+28>>2]|0;if((h|0)<=0){return}b=f+4|0;k=f+8|0;if((j|0)==0){return}else{l=g;m=e;n=h}while(1){h=n-1|0;e=m+4|0;g=c[(c[f>>2]|0)+(l<<2)>>2]|0;o=c[(c[b>>2]|0)+(l<<2)>>2]|0;p=c[(c[k>>2]|0)+(l<<2)>>2]|0;q=l+1|0;r=c[m>>2]|0;s=0;while(1){t=d[r]|0;u=d[r+1|0]|0;v=d[r+2|0]|0;a[g+s|0]=((c[i+((u|256)<<2)>>2]|0)+(c[i+(t<<2)>>2]|0)+(c[i+((v|512)<<2)>>2]|0)|0)>>>16;a[o+s|0]=((c[i+((u|1024)<<2)>>2]|0)+(c[i+((t|768)<<2)>>2]|0)+(c[i+((v|1280)<<2)>>2]|0)|0)>>>16;a[p+s|0]=((c[i+((u|1536)<<2)>>2]|0)+(c[i+((t|1280)<<2)>>2]|0)+(c[i+((v|1792)<<2)>>2]|0)|0)>>>16;v=s+1|0;if(v>>>0>>0){r=r+3|0;s=v}else{break}}if((h|0)>0){l=q;m=e;n=h}else{break}}return}function KV(b,e,f,g,h){b=b|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,w=0,x=0,y=0;i=c[(c[b+408>>2]|0)+8>>2]|0;j=c[b+28>>2]|0;if((h|0)<=0){return}b=f+4|0;k=f+8|0;l=f+12|0;m=(j|0)==0;n=g;g=e;e=h;while(1){h=e-1|0;o=g+4|0;p=c[(c[f>>2]|0)+(n<<2)>>2]|0;q=c[(c[b>>2]|0)+(n<<2)>>2]|0;r=c[(c[k>>2]|0)+(n<<2)>>2]|0;s=c[(c[l>>2]|0)+(n<<2)>>2]|0;t=n+1|0;if(!m){u=c[g>>2]|0;v=0;while(1){w=(d[u]|0)^255;x=(d[u+1|0]|0)^255;y=(d[u+2|0]|0)^255;a[s+v|0]=a[u+3|0]|0;a[p+v|0]=((c[i+((x|256)<<2)>>2]|0)+(c[i+(w<<2)>>2]|0)+(c[i+((y|512)<<2)>>2]|0)|0)>>>16;a[q+v|0]=((c[i+((x|1024)<<2)>>2]|0)+(c[i+((w|768)<<2)>>2]|0)+(c[i+((y|1280)<<2)>>2]|0)|0)>>>16;a[r+v|0]=((c[i+((x|1536)<<2)>>2]|0)+(c[i+((w|1280)<<2)>>2]|0)+(c[i+((y|1792)<<2)>>2]|0)|0)>>>16;y=v+1|0;if(y>>>0>>0){u=u+4|0;v=y}else{break}}}if((h|0)>0){n=t;g=o;e=h}else{break}}return}function LV(a){a=a|0;var b=0;b=rk[c[c[a+4>>2]>>2]&63](a,1,156)|0;c[a+416>>2]=b;c[b>>2]=162;c[b+84>>2]=0;c[b+140>>2]=0;c[b+88>>2]=0;c[b+144>>2]=0;c[b+92>>2]=0;c[b+148>>2]=0;c[b+96>>2]=0;c[b+152>>2]=0;return}function MV(a){a=a|0;var d=0,f=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.0,E=0;d=c[a+416>>2]|0;f=a+76|0;if((c[f>>2]|0)<=0){return}i=a|0;j=a;k=d+84|0;l=a+4|0;m=d+140|0;n=d+44|0;o=a+232|0;p=d+100|0;q=c[a+84>>2]|0;r=0;s=0;while(1){t=q+36|0;u=q+40|0;a:do{switch((c[t>>2]<<8)+(c[u>>2]|0)|0){case 2565:{c[n+(s<<2)>>2]=90;v=0;break};case 2052:{c[n+(s<<2)>>2]=78;v=0;break};case 1539:{c[n+(s<<2)>>2]=86;v=0;break};case 1548:{c[n+(s<<2)>>2]=76;v=0;break};case 1290:{c[n+(s<<2)>>2]=18;v=0;break};case 1032:{c[n+(s<<2)>>2]=122;v=0;break};case 774:{c[n+(s<<2)>>2]=24;v=0;break};case 516:{c[n+(s<<2)>>2]=98;v=0;break};case 2570:{c[n+(s<<2)>>2]=162;v=0;break};case 2827:{c[n+(s<<2)>>2]=60;v=0;break};case 1026:{c[n+(s<<2)>>2]=80;v=0;break};case 513:{c[n+(s<<2)>>2]=100;v=0;break};case 2064:{c[n+(s<<2)>>2]=34;v=0;break};case 1806:{c[n+(s<<2)>>2]=146;v=0;break};case 3341:{c[n+(s<<2)>>2]=112;v=0;break};case 3598:{c[n+(s<<2)>>2]=64;v=0;break};case 3855:{c[n+(s<<2)>>2]=116;v=0;break};case 4112:{c[n+(s<<2)>>2]=94;v=0;break};case 4104:{c[n+(s<<2)>>2]=110;v=0;break};case 3591:{c[n+(s<<2)>>2]=130;v=0;break};case 3078:{c[n+(s<<2)>>2]=74;v=0;break};case 1799:{c[n+(s<<2)>>2]=10;v=0;break};case 2313:{c[n+(s<<2)>>2]=8;v=0;break};case 1028:{c[n+(s<<2)>>2]=120;v=0;break};case 257:{c[n+(s<<2)>>2]=12;v=0;break};case 1542:{c[n+(s<<2)>>2]=158;v=0;break};case 3084:{c[n+(s<<2)>>2]=28;v=0;break};case 771:{c[n+(s<<2)>>2]=26;v=0;break};case 1285:{c[n+(s<<2)>>2]=50;v=0;break};case 514:{c[n+(s<<2)>>2]=166;v=0;break};case 258:{c[n+(s<<2)>>2]=134;v=0;break};case 2056:{w=c[o>>2]|0;if((w|0)==0){c[n+(s<<2)>>2]=132;v=0;break a}else if((w|0)==1){c[n+(s<<2)>>2]=16;v=1;break a}else if((w|0)==2){c[p+(s<<2)>>2]=38;v=2;break a}else{c[(c[i>>2]|0)+20>>2]=49;vk[c[c[i>>2]>>2]&511](j);v=r;break a}break};default:{c[(c[i>>2]|0)+20>>2]=7;c[(c[i>>2]|0)+24>>2]=c[t>>2];c[(c[i>>2]|0)+28>>2]=c[u>>2];vk[c[c[i>>2]>>2]&511](j);v=r}}}while(0);u=c[q+16>>2]|0;t=a+88+(u<<2)|0;if(u>>>0>3>>>0){x=43}else{w=c[t>>2]|0;if((w|0)==0){x=43}else{y=w}}if((x|0)==43){x=0;c[(c[i>>2]|0)+20>>2]=54;c[(c[i>>2]|0)+24>>2]=u;vk[c[c[i>>2]>>2]&511](j);y=c[t>>2]|0}if((v|0)==0){t=k+(u<<2)|0;w=c[t>>2]|0;if((w|0)==0){z=rk[c[c[l>>2]>>2]&63](j,1,256)|0;c[t>>2]=z;A=z}else{A=w}w=0;do{c[A+(w<<2)>>2]=e[y+(w<<1)>>1]<<3;w=w+1|0;}while((w|0)<64);c[d+4+(s<<2)>>2]=16}else if((v|0)==1){w=k+(u<<2)|0;z=c[w>>2]|0;if((z|0)==0){t=rk[c[c[l>>2]>>2]&63](j,1,256)|0;c[w>>2]=t;B=t}else{B=z}z=0;do{c[B+(z<<2)>>2]=(da(b[4168+(z<<1)>>1]|0,e[y+(z<<1)>>1]|0)|0)+1024>>11;z=z+1|0;}while((z|0)<64);c[d+4+(s<<2)>>2]=16}else if((v|0)==2){z=m+(u<<2)|0;t=c[z>>2]|0;if((t|0)==0){w=rk[c[c[l>>2]>>2]&63](j,1,256)|0;c[z>>2]=w;C=w}else{C=t}t=0;w=0;while(1){D=+h[4296+(w<<3)>>3];g[C+(t<<2)>>2]=1.0/(+((e[y+(t<<1)>>1]|0)>>>0)*D*8.0);z=t|1;g[C+(z<<2)>>2]=1.0/(+((e[y+(z<<1)>>1]|0)>>>0)*D*1.387039845*8.0);E=z+1|0;g[C+(E<<2)>>2]=1.0/(+((e[y+(E<<1)>>1]|0)>>>0)*D*1.306562965*8.0);E=t|3;g[C+(E<<2)>>2]=1.0/(+((e[y+(E<<1)>>1]|0)>>>0)*D*1.175875602*8.0);z=E+1|0;g[C+(z<<2)>>2]=1.0/(+((e[y+(z<<1)>>1]|0)>>>0)*D*8.0);z=E+2|0;g[C+(z<<2)>>2]=1.0/(+((e[y+(z<<1)>>1]|0)>>>0)*D*.785694958*8.0);z=E+3|0;g[C+(z<<2)>>2]=1.0/(+((e[y+(z<<1)>>1]|0)>>>0)*D*.5411961*8.0);z=t|7;g[C+(z<<2)>>2]=1.0/(+((e[y+(z<<1)>>1]|0)>>>0)*D*.275899379*8.0);z=w+1|0;if((z|0)<8){t=t+8|0;w=z}else{break}}c[d+4+(s<<2)>>2]=14}else{c[(c[i>>2]|0)+20>>2]=49;vk[c[c[i>>2]>>2]&511](j)}w=s+1|0;if((w|0)<(c[f>>2]|0)){q=q+88|0;r=v;s=w}else{break}}return}function NV(a,d,e,f,g,h,j){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;k=i;i=i+256|0;l=k|0;m=c[a+416>>2]|0;a=c[m+44+(c[d+4>>2]<<2)>>2]|0;n=c[m+84+(c[d+16>>2]<<2)>>2]|0;m=e+(g<<2)|0;if((j|0)==0){i=k;return}g=l|0;e=d+36|0;d=0;o=h;while(1){Tk[a&255](g,m,o);h=0;do{p=c[n+(h<<2)>>2]|0;q=c[l+(h<<2)>>2]|0;r=p>>1;do{if((q|0)<0){s=r-q|0;if((s|0)<(p|0)){t=0}else{t=(s|0)/(p|0)|0}u=-t&65535}else{s=q+r|0;if((s|0)<(p|0)){u=0;break}u=((s|0)/(p|0)|0)&65535}}while(0);b[f+(d<<7)+(h<<1)>>1]=u;h=h+1|0;}while((h|0)<64);h=d+1|0;if(h>>>0>>0){d=h;o=(c[e>>2]|0)+o|0}else{break}}i=k;return}function OV(a,d,e,f,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0;l=i;i=i+256|0;m=l|0;n=c[a+416>>2]|0;a=c[n+100+(c[d+4>>2]<<2)>>2]|0;o=c[n+140+(c[d+16>>2]<<2)>>2]|0;n=e+(h<<2)|0;if((k|0)==0){i=l;return}h=m|0;e=d+36|0;d=0;p=j;while(1){Tk[a&255](h,n,p);j=0;do{b[f+(d<<7)+(j<<1)>>1]=~~(+g[m+(j<<2)>>2]*+g[o+(j<<2)>>2]+16384.5)+49152;j=j+1|0;}while((j|0)<64);j=d+1|0;if(j>>>0>>0){d=j;p=(c[e>>2]|0)+p|0}else{break}}i=l;return} + + + +function pO(a,d,e,f,h){a=a|0;d=d|0;e=e|0;f=f|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,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0.0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0,R=0;i=a+8948|0;j=c[i>>2]|0;k=a+8952|0;l=c[k>>2]|0;if((j|0)>64){n$(a+8692|0,0,h<<4|0)|0}if((f|0)<=0){m=j;n=l;o=(m|0)<65;p=o?m:65;c[i>>2]=p;c[k>>2]=n;return}q=(h|0)>0;r=j;j=0;s=l;while(1){if(q){l=da(j,h)|0;t=(r|0)>16;u=1;v=0;w=s;while(1){x=v+l|0;y=+g[e+(x<<2)>>2];z=y==0.0&u;A=v<<2;B=a+8820+(A<<2)|0;C=a+8692+(A<<2)|0;D=A|1;E=a+8820+(D<<2)|0;F=a+8692+(D<<2)|0;D=A|2;G=a+8820+(D<<2)|0;H=a+8692+(D<<2)|0;I=+g[H>>2];D=A|3;A=a+8820+(D<<2)|0;J=a+8692+(D<<2)|0;K=+g[B>>2]*2.2374000549316406- +g[C>>2]*.902999997138977+0.0+(+g[E>>2]*-.7339000105857849- +g[F>>2]*.011599999852478504)+(+g[G>>2]*-.1251000016927719-I*-.5853000283241272)+(+g[A>>2]*-.6032999753952026- +g[J>>2]*-.257099986076355);g[J>>2]=I;g[H>>2]=+g[F>>2];g[F>>2]=+g[C>>2];g[A>>2]=+g[G>>2];g[G>>2]=+g[E>>2];g[E>>2]=+g[B>>2];g[C>>2]=K;I=y*32753.0-K;if(t){L=w;M=0.0}else{C=(da(w,96314165)|0)+907633515|0;E=(da(C,96314165)|0)+907633515|0;L=E;M=+(C>>>0>>>0)*2.3283064365386963e-10- +(E>>>0>>>0)*2.3283064365386963e-10}K=I+M;do{if(K<32767.0){E=K<-32768.0;y=E?-32768.0:K;if(E){N=E?-.5:.5;O=y;break}N=K<0.0?-.5:.5;O=y}else{N=.5;O=32767.0}}while(0);E=~~(O+N);b[d+(x<<1)>>1]=E;do{if(t){P=0.0}else{K=+(E|0)-I;if(!(K<1.5)){P=1.5;break}P=K<-1.5?-1.5:K}}while(0);g[B>>2]=P;E=v+1|0;if((E|0)<(h|0)){u=z;v=E;w=L}else{break}}Q=(z|0)!=0;R=L}else{Q=1;R=s}w=Q?r+1|0:0;v=j+1|0;if((v|0)<(f|0)){r=w;j=v;s=R}else{m=w;n=R;break}}o=(m|0)<65;p=o?m:65;c[i>>2]=p;c[k>>2]=n;return}function qO(a,b){a=a|0;b=b|0;var c=0,d=0;c=fM(a,b)|0;if((c|0)<0){d=-136;return d|0}b=da(dM(a,48e3)|0,c)|0;d=(b|0)>5760?-136:b;return d|0}function rO(a,b,d,e){a=a|0;b=b|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,t=0,u=0,v=0,w=0,x=0;f=0;g=a+48|0;h=a+64|0;i=(d|0)==0&(e|0)==0;j=0;k=(e|0)<(j|0)|(e|0)==(j|0)&d>>>0<0>>>0;j=a|0;l=a+16|0;m=a+72|0;n=a+76|0;a:do{if((e|0)>(f|0)|(e|0)==(f|0)&d>>>0>0>>>0){while(1){a=c[g+4>>2]|0;if(!((a|0)<(e|0)|(a|0)==(e|0)&(c[g>>2]|0)>>>0>>0)){o=-1;p=-1;q=27;break}a=IO(h,b)|0;if((a|0)<0){r=A$(c[g>>2]|0,c[g+4>>2]|0,a,(a|0)<0|0?-1:0)|0;c[g>>2]=r;c[g+4>>2]=H;continue}if((a|0)!=0){s=a;q=26;break a}if(i){o=-1;p=-1;q=27;break}if(k){t=2048}else{a=c[m>>2]|0;r=c[n>>2]|0;u=z$(a,(a|0)<0|0?-1:0,c[g>>2]|0,c[g+4>>2]|0)|0;a=A$(u,H,r,(r|0)<0|0?-1:0)|0;r=H;if(!((r|0)<(e|0)|(r|0)==(e|0)&a>>>0>>0)){o=-1;p=-1;q=27;break}u=A$(d,e,a,r)|0;r=H;a=0;t=(r|0)<(a|0)|(r|0)==(a|0)&u>>>0<2048>>>0?u:2048}u=GO(h,t)|0;a=rk[c[j>>2]&63](c[l>>2]|0,u,t)|0;if((a|0)<=0){v=a;break a}HO(h,a)|0}if((q|0)==27){return(H=o,p)|0}}else{if(i){while(1){w=IO(h,b)|0;if((w|0)>=0){break}a=A$(c[g>>2]|0,c[g+4>>2]|0,w,(w|0)<0|0?-1:0)|0;c[g>>2]=a;c[g+4>>2]=H}if((w|0)==0){o=-1;p=-1}else{s=w;q=26;break}return(H=o,p)|0}while(1){a=IO(h,b)|0;if((a|0)<0){u=A$(c[g>>2]|0,c[g+4>>2]|0,a,(a|0)<0|0?-1:0)|0;c[g>>2]=u;c[g+4>>2]=H;continue}if((a|0)!=0){s=a;q=26;break a}if(k){x=2048}else{a=c[m>>2]|0;u=c[n>>2]|0;r=z$(a,(a|0)<0|0?-1:0,c[g>>2]|0,c[g+4>>2]|0)|0;a=A$(r,H,u,(u|0)<0|0?-1:0)|0;u=H;if(!((u|0)<(e|0)|(u|0)==(e|0)&a>>>0>>0)){o=-1;p=-1;break}r=A$(d,e,a,u)|0;u=H;a=0;x=(u|0)<(a|0)|(u|0)==(a|0)&r>>>0<2048>>>0?r:2048}r=GO(h,x)|0;a=rk[c[j>>2]&63](c[l>>2]|0,r,x)|0;if((a|0)<=0){v=a;break a}HO(h,a)|0}return(H=o,p)|0}}while(0);if((q|0)==26){q=c[g>>2]|0;h=c[g+4>>2]|0;x=z$(q,h,s,(s|0)<0|0?-1:0)|0;c[g>>2]=x;c[g+4>>2]=H;o=h;p=q;return(H=o,p)|0}if((v|0)<0){o=-1;p=-128;return(H=o,p)|0}o=((e|0)<0|0?-1:0)>>31|((e|0)<0|0?-1:0)<<1|-1;p=e>>31|((e|0)<0|0?-1:0)<<1|-137;return(H=o,p)|0}function sO(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;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,w=0,x=0,y=0,z=0,A=0,B=0,C=0;k=i;i=i+48|0;l=k|0;m=k+32|0;do{if((j|0)==0){n=b+48|0;o=c[n>>2]|0;p=c[n+4>>2]|0;n=2147483647;q=(p|0)<(n|0)|(p|0)==(n|0)&o>>>0<-65537>>>0;n=z$(o,p,65536,0)|0;p=rO(b,m,q?n:-1,q?H:2147483647)|0;q=H;n=0;if((q|0)<(n|0)|(q|0)==(n|0)&p>>>0<0>>>0){r=-132}else{s=m;break}i=k;return r|0}else{s=j}}while(0);j=b+92|0;c[j>>2]=2;m=(f|0)!=0;if(m){c[g>>2]=0}a:do{if((xO(s)|0)==0){t=25}else{p=b+128|0;n=l|0;q=l+4|0;o=b+48|0;u=b+464|0;b:while(1){if(m){v=c[f>>2]|0;w=c[g>>2]|0;x=zO(s)|0;if((w|0)>0){y=0;while(1){z=y+1|0;if((c[v+(y<<2)>>2]|0)==(x|0)){A=-133;break a}if((z|0)<(w|0)){y=z}else{break}}}y=zO(s)|0;w=c[f>>2]|0;x=c[g>>2]|0;v=c[h>>2]|0;if((x|0)<(v|0)){B=v;C=w}else{if((v|0)>1073741823){A=-129;break a}z=v<<1|1;v=Y_(w,z<<2)|0;if((v|0)==0){A=-129;break a}else{B=z;C=v}}c[C+(x<<2)>>2]=y;c[f>>2]=C;c[g>>2]=x+1;c[h>>2]=B}do{if((c[j>>2]|0)<3){LO(p,zO(s)|0)|0;JO(p,s)|0;if((MO(p,l)|0)<=0){t=21;break}x=aO(d,c[n>>2]|0,c[q>>2]|0)|0;if((x|0)==-132){break}if((x|0)<0){A=x;break a}c[j>>2]=3;t=21}else{t=21}}while(0);do{if((t|0)==21){t=0;x=c[o>>2]|0;y=c[o+4>>2]|0;v=2147483647;z=(y|0)<(v|0)|(y|0)==(v|0)&x>>>0<-65537>>>0;v=z$(x,y,65536,0)|0;y=rO(b,s,z?v:-1,z?H:2147483647)|0;z=H;v=0;if((z|0)<(v|0)|(z|0)==(v|0)&y>>>0<0>>>0){A=-132;break a}if((c[j>>2]|0)!=3){break}y=c[u>>2]|0;if((y|0)==(zO(s)|0)){break b}}}while(0);if((xO(s)|0)==0){t=25;break a}}JO(p,s)|0;t=25}}while(0);c:do{if((t|0)==25){if((c[j>>2]|0)!=3){A=-132;break}d=b+128|0;B=b+48|0;h=b+464|0;while(1){g=MO(d,l)|0;if((g|0)==(-1|0)){A=-133;break c}else if((g|0)!=0){break}while(1){g=c[B>>2]|0;C=c[B+4>>2]|0;f=2147483647;m=(C|0)<(f|0)|(C|0)==(f|0)&g>>>0<-65537>>>0;f=z$(g,C,65536,0)|0;C=rO(b,s,m?f:-1,m?H:2147483647)|0;m=H;f=0;if((m|0)<(f|0)|(m|0)==(f|0)&C>>>0<0>>>0){A=-133;break c}C=c[h>>2]|0;if((C|0)==(zO(s)|0)){break}if((xO(s)|0)!=0){A=-133;break c}}JO(d,s)|0}h=dO(e,c[l>>2]|0,c[l+4>>2]|0)|0;if((h|0)<0){A=h;break}do{if((MO(d,l)|0)==0){if((a[(c[s>>2]|0)+((c[s+4>>2]|0)-1)|0]|0)==-1){break}else{r=0}i=k;return r|0}}while(0);bO(e);A=-133}}while(0);c[j>>2]=2;r=A;i=k;return r|0}function tO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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,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=i;i=i+1040|0;f=e+16|0;g=(d|0)==0?e|0:d;d=a+128|0;h=c[a+464>>2]|0;j=a+56|0;k=g+4|0;l=a+112|0;m=f|0;n=a+8652|0;o=0;p=0;while(1){q=rO(a,g,c[j>>2]|0,c[j+4>>2]|0)|0;r=H;s=0;if((r|0)<(s|0)|(r|0)==(s|0)&q>>>0<0>>>0){t=3;break}if((xO(g)|0)!=0){t=8;break}if((h|0)==(zO(g)|0)){JO(d,g)|0;s=c[k>>2]|0;u=z$(c[l>>2]|0,c[l+4>>2]|0,s,(s|0)<0|0?-1:0)|0;c[l>>2]=u;c[l+4>>2]=H;do{v=vO(a,m)|0;}while((v|0)<0);w=c[n>>2]|0;x=v}else{w=o;x=p}y=-x|0;if((w|0)<1){o=w;p=x}else{t=15;break}}if((t|0)==3){p=-1;if((r|0)<(p|0)|(r|0)==(p|0)&q>>>0<-1>>>0){z=q;i=e;return z|0}if((c[b+52>>2]|0)!=0){z=-139;i=e;return z|0}q=b+8|0;n$(b+24|0,0,16)|0;p=c[q+4>>2]|0;r=b+16|0;c[r>>2]=c[q>>2];c[r+4>>2]=p;z=0;i=e;return z|0}else if((t|0)==8){if((c[b+52>>2]|0)!=0){z=-139;i=e;return z|0}p=b+8|0;n$(b+24|0,0,16)|0;r=c[p+4>>2]|0;q=b+16|0;c[q>>2]=c[p>>2];c[q+4>>2]=r;z=1;i=e;return z|0}else if((t|0)==15){r=w-1|0;q=a+488+(r<<5)+16|0;p=c[q>>2]|0;o=c[q+4>>2]|0;if((p|0)==(-1|0)&(o|0)==(-1|0)){z=-139;i=e;return z|0}q=(c[a+488+(r<<5)+12>>2]|0)!=0;do{if((x|0)<0){r=0;if((o|0)<(r|0)|(o|0)==(r|0)&p>>>0<0>>>0){r=x-1|0;v=(r|0)<0|0?-1:0;if(!((v|0)>(o|0)|(v|0)==(o|0)&r>>>0>p>>>0)){A=0;B=0;C=0;break}}r=A$(-1,2147483647,y,(y|0)<0|0?-1:0)|0;v=H;if(!((v|0)<(o|0)|(v|0)==(o|0)&r>>>0

>>0)){D=y;E=o;F=p;t=26;break}r=A$(-1,2147483647,p,o)|0;D=~x-r|0;E=-2147483648;F=0;t=26}else{if((x|0)<=0){D=0;E=o;F=p;t=26;break}r=-1;if((o|0)>(r|0)|(o|0)==(r|0)&p>>>0>-1>>>0){r=(x|0)<0|0?-1:0;if((r|0)>(o|0)|(r|0)==(o|0)&x>>>0>p>>>0){A=0;B=0;C=0;break}}r=A$(0,-2147483648,y,(y|0)<0|0?-1:0)|0;v=H;if(!((v|0)>(o|0)|(v|0)==(o|0)&r>>>0>p>>>0)){D=y;E=o;F=p;t=26;break}D=1-x+p|0;E=2147483647;F=-1;t=26}}while(0);if((t|0)==26){x=z$(D,(D|0)<0|0?-1:0,F,E)|0;A=1;B=H;C=x}do{if(q){if(A){G=B;I=C;break}x=c[b+52>>2]|0;E=0;F=0;if((o|0)<(F|0)|(o|0)==(F|0)&p>>>0<0>>>0){G=0;I=0;break}if(((((o|0)>(E|0)|(o|0)==(E|0)&p>>>0>x>>>0)&1)-(((E|0)>(o|0)|(E|0)==(o|0)&x>>>0>p>>>0)&1)|0)<0){z=-139}else{G=0;I=0;break}i=e;return z|0}else{if(A){G=B;I=C;break}else{z=-139}i=e;return z|0}}while(0);a:do{if((w|0)>0){C=0;B=(o|0)<(C|0)|(o|0)==(C|0)&p>>>0<0>>>0;C=A$(0,-2147483648,p,o)|0;A=H;x=z$(C,A,-2,2147483647)|0;E=H;F=A$(1,0,C,A)|0;A=H;C=p^0;D=o^-2147483648;y=0;r=0;v=G;m=I;l=0;while(1){do{if(q){k=v^o;g=0;do{if((k|0)<(g|0)|(k|0)==(g|0)&(m^p)>>>0<0>>>0){if(B){d=A$(-1,2147483647,m,v)|0;h=H;j=(E|0)<(h|0)|(E|0)==(h|0)&x>>>0>>0;u=z$(F,A,d,h)|0;J=j?y:H;K=j?r:u;break}if((D|0)<(v|0)|(D|0)==(v|0)&C>>>0>>0){J=y;K=r;break}u=A$(0,0,m,v)|0;j=z$(u^0,H^-2147483648,C,D)|0;J=H;K=j}else{j=A$(p,o,m,v)|0;J=H;K=j}}while(0);g=c[f+(l<<2)>>2]|0;k=A$(g,(g|0)<0|0?-1:0,K,J)|0;j=H;u=0;if(!((j|0)>(u|0)|(j|0)==(u|0)&k>>>0>0>>>0)){L=j;M=k;N=g;t=45;break}g=0;if((J|0)<(g|0)|(J|0)==(g|0)&K>>>0<0>>>0){O=l;break a}g=a+488+(l<<5)+16|0;c[g>>2]=p;c[g+4>>2]=o;c[a+488+(l<<5)+12>>2]=1;P=o;Q=p;R=j;S=k}else{L=y;M=r;N=c[f+(l<<2)>>2]|0;t=45}}while(0);if((t|0)==45){t=0;k=a+488+(l<<5)+16|0;do{if((N|0)>0){j=0;if((v|0)<(j|0)|(v|0)==(j|0)&m>>>0<0>>>0){j=~N;g=(j|0)<0|0?-1:0;if(!((g|0)>(v|0)|(g|0)==(v|0)&j>>>0>m>>>0)){break}}j=A$(-1,2147483647,N,(N|0)<0|0?-1:0)|0;g=H;if(!((g|0)<(v|0)|(g|0)==(v|0)&j>>>0>>0)){T=N;U=v;V=m;t=55;break}j=A$(-1,2147483647,m,v)|0;T=N+~j|0;U=-2147483648;V=0;t=55}else{if((N|0)>=0){T=0;U=v;V=m;t=55;break}j=-1;if((v|0)>(j|0)|(v|0)==(j|0)&m>>>0>-1>>>0){j=-N|0;g=(j|0)<0|0?-1:0;if((g|0)>(v|0)|(g|0)==(v|0)&j>>>0>m>>>0){break}}j=A$(0,-2147483648,N,(N|0)<0|0?-1:0)|0;g=H;if(!((g|0)>(v|0)|(g|0)==(v|0)&j>>>0>m>>>0)){T=N;U=v;V=m;t=55;break}T=m+1+N|0;U=2147483647;V=-1;t=55}}while(0);if((t|0)==55){t=0;j=z$(T,(T|0)<0|0?-1:0,V,U)|0;c[k>>2]=j;c[k+4>>2]=H}P=c[k+4>>2]|0;Q=c[k>>2]|0;R=L;S=M}j=l+1|0;if((j|0)<(w|0)){y=R;r=S;v=P;m=Q;l=j}else{O=j;break}}}else{O=0}}while(0);c[n>>2]=O;c[a+100>>2]=c[b+52>>2];O=b+32|0;c[O>>2]=I;c[O+4>>2]=G;O=a+104|0;c[O>>2]=I;c[O+4>>2]=G;z=0;i=e;return z|0}return 0}function uO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;b=i;i=i+8|0;d=b|0;e=a+92|0;f=c[e>>2]|0;if((f|0)>3){g=0;i=b;return g|0}if((f|0)<3){g=-129;i=b;return g|0}if((c[a+20>>2]|0)==0){h=0}else{h=c[a+96>>2]|0}f=a+28|0;j=c[f>>2]|0;k=c[j+(h*352|0)+68>>2]|0;l=c[j+(h*352|0)+72>>2]|0;m=c[j+(h*352|0)+48>>2]|0;n=a+8656|0;o=c[n>>2]|0;do{if((o|0)==0){p=11}else{if((c[a+8660>>2]|0)!=(k|0)){p=11;break}if((c[a+8664>>2]|0)!=(l|0)){p=11;break}if((c[a+8668>>2]|0)!=(m|0)){p=11;break}if((j$(a+8672|0,j+(h*352|0)+76|0,m)|0)!=0){p=11;break}lM(o,4028,(q=i,i=i+1|0,i=i+7&-8,c[q>>2]=0,q)|0)|0;i=q;r=c[n>>2]|0}}while(0);do{if((p|0)==11){mM(o);s=j+(h*352|0)+76|0;t=hM(48e3,m,k,l,s,d)|0;c[n>>2]=t;if((t|0)==0){g=-129;i=b;return g|0}else{c[a+8660>>2]=k;c[a+8664>>2]=l;c[a+8668>>2]=m;m$(a+8672|0,s|0,m)|0;r=t;break}}}while(0);lM(r,4034,(q=i,i=i+8|0,c[q>>2]=c[j+(h*352|0)+60>>2],q)|0)|0;i=q;c[e>>2]=4;n$(a+112|0,0,16)|0;c[a+8948>>2]=65;c[a+8952>>2]=c[(c[f>>2]|0)+(h*352|0)+40>>2];g=0;i=b;return g|0}function vO(a,b){a=a|0;b=b|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;d=a+128|0;e=a+488|0;f=MO(d,e)|0;a:do{if((f|0)==0){g=0;h=0}else{i=0;j=0;k=e;l=f;b:while(1){m=a+488+(j<<5)|0;n=a+488+(j<<5)+4|0;o=b+(j<<2)|0;p=(j|0)>0;q=a+488+(j<<5)+16|0;r=a+488+(j-1<<5)+16|0;s=l;while(1){if((s|0)<0){t=-3;break b}u=qO(c[m>>2]|0,c[n>>2]|0)|0;c[o>>2]=u;if((u|0)>0){break}if(p){v=c[q+4>>2]|0;c[r>>2]=c[q>>2];c[r+4>>2]=v}v=MO(d,k)|0;if((v|0)==0){g=i;h=j;break a}else{s=v}}s=j+1|0;r=u+i|0;q=a+488+(s<<5)|0;p=MO(d,q)|0;if((p|0)==0){g=r;h=s;break a}else{i=r;j=s;k=q;l=p}}return t|0}}while(0);c[a+8648>>2]=0;c[a+8652>>2]=h;t=g;return t|0}function wO(a,b,d,e,f,g,h,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var 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,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,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;m=i;i=i+16|0;n=m|0;o=c[e+40>>2]|0;a:do{if((o|0)!=(h|0)|(j|0)==(-1|0)&(k|0)==(-1|0)){p=a+48|0;q=a+4|0;r=a+16|0;s=a+64|0;t=(d|0)>0;u=-1;v=-1;w=0;x=0;y=g;z=f;A=65536;B=g;C=f;b:while(1){D=A$(z,y,A,(A|0)<0|0?-1:0)|0;E=H;F=0;G=(E|0)>(F|0)|(E|0)==(F|0)&D>>>0>0>>>0;F=G?D:0;D=G?E:0;if((c[p>>2]|0)==(F|0)&(c[p+4>>2]|0)==(D|0)){I=D;J=F}else{E=c[q>>2]|0;if((E|0)==0){K=-128;L=32;break}if((Wk[E&63](c[r>>2]|0,F,D,0)|0)!=0){K=-128;L=32;break}c[p>>2]=F;c[p+4>>2]=D;KO(s)|0;I=c[p+4>>2]|0;J=c[p>>2]|0}c:do{if((I|0)<(B|0)|(I|0)==(B|0)&J>>>0>>0){E=0;G=w;M=x;N=u;O=v;while(1){P=G;Q=M;R=N;S=O;while(1){T=rO(a,n,C,B)|0;U=H;V=-1;if((U|0)<(V|0)|(U|0)==(V|0)&T>>>0<-1>>>0){L=20;break b}if((T|0)==(-1|0)&(U|0)==(-1|0)){W=P;X=Q;Y=R;Z=S;_=E;break c}$=zO(n)|0;if(($|0)!=(o|0)){break}V=yO(n)|0;aa=H;ba=(V|0)==(-1|0)&(aa|0)==(-1|0);ca=ba?Q:V;V=ba?P:aa;aa=ba?S:T;da=ba?R:U;U=c[p+4>>2]|0;if((U|0)<(B|0)|(U|0)==(B|0)&(c[p>>2]|0)>>>0>>0){P=V;Q=ca;R=da;S=aa}else{W=V;X=ca;Y=da;Z=aa;_=E;break c}}d:do{if(t){aa=0;while(1){da=aa+1|0;if((c[b+(aa<<2)>>2]|0)==($|0)){ea=E;break d}if((da|0)<(d|0)){aa=da}else{ea=1;break}}}else{ea=1}}while(0);aa=c[p+4>>2]|0;if((aa|0)<(B|0)|(aa|0)==(B|0)&(c[p>>2]|0)>>>0>>0){E=ea;G=P;M=Q;N=R;O=S}else{W=P;X=Q;Y=R;Z=S;_=ea;break}}}else{W=w;X=x;Y=u;Z=v;_=0}}while(0);O=0;N=(Y|0)<(O|0)|(Y|0)==(O|0)&Z>>>0<0>>>0;if(((_|0)!=0|(F|0)==0&(D|0)==0)&N){K=-137;L=32;break}O=A<<1;M=z$(F,D,65306,0)|0;G=H;if(!N){fa=Y;ga=Z;ha=W;ia=X;break a}N=(G|0)<(g|0)|(G|0)==(g|0)&M>>>0>>0;u=Y;v=Z;w=W;x=X;y=D;z=F;A=(O|0)<1048576?O:1048576;B=N?G:g;C=N?M:f}if((L|0)==20){C=T;B=C;A=0;if((C|0)<(A|0)|(C|0)==(A|0)&0>>>0<0>>>0){K=B}else{fa=(C|0)<0|0?-1:0;ga=B;ha=k;ia=j;break}i=m;return K|0}else if((L|0)==32){i=m;return K|0}}else{fa=g;ga=f;ha=k;ia=j}}while(0);j=e+8|0;k=c[j+4>>2]|0;if((fa|0)<(k|0)|(fa|0)==(k|0)&ga>>>0<(c[j>>2]|0)>>>0){K=-137;i=m;return K|0}j=e+32|0;k=c[j>>2]|0;f=c[j+4>>2]|0;j=f^ha;g=0;do{if((j|0)<(g|0)|(j|0)==(g|0)&(k^ia)>>>0<0>>>0){L=0;if((ha|0)<(L|0)|(ha|0)==(L|0)&ia>>>0<0>>>0){L=A$(0,-2147483648,ia,ha)|0;T=H;X=A$(-1,2147483647,k,f)|0;W=H;Z=z$(L,T,-2,2147483647)|0;Y=H;if((Y|0)<(W|0)|(Y|0)==(W|0)&Z>>>0>>0){K=-139;i=m;return K|0}else{Z=A$(1,0,L,T)|0;T=z$(Z,H,X,W)|0;ja=H;ka=T;break}}else{T=ia^0;W=ha^-2147483648;if((W|0)<(f|0)|(W|0)==(f|0)&T>>>0>>0){K=-139;i=m;return K|0}else{X=A$(0,0,k,f)|0;Z=z$(X^0,H^-2147483648,T,W)|0;ja=H;ka=Z;break}}}else{Z=A$(ia,ha,k,f)|0;ja=H;ka=Z}}while(0);f=c[e+52>>2]|0;k=0;if((ja|0)<(k|0)|(ja|0)==(k|0)&ka>>>0>>0){K=-139;i=m;return K|0}g=A$(ka,ja,f,k)|0;k=H;f=c[l>>2]|0;ja=c[l+4>>2]|0;ka=A$(-1,2147483647,g,k)|0;j=H;if((j|0)<(ja|0)|(j|0)==(ja|0)&ka>>>0>>0){K=-139;i=m;return K|0}ka=z$(f,ja,g,k)|0;c[l>>2]=ka;c[l+4>>2]=H;l=e+24|0;c[l>>2]=ia;c[l+4>>2]=ha;ha=e+16|0;c[ha>>2]=ga;c[ha+4>>2]=fa;K=0;i=m;return K|0}function xO(b){b=b|0;return a[(c[b>>2]|0)+5|0]&2|0}function yO(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0;b=c[a>>2]|0;a=d[b+13|0]|0;e=a<<8|0>>>24|(d[b+12|0]|0);f=e<<8|0>>>24|(d[b+11|0]|0);g=f<<8|0>>>24|(d[b+10|0]|0);h=g<<8|0>>>24|(d[b+9|0]|0);i=h<<8|0>>>24|(d[b+8|0]|0);j=i<<8|0>>>24|(d[b+7|0]|0);return(H=((((((0<<8|a>>>24)<<8|e>>>24)<<8|f>>>24)<<8|g>>>24)<<8|h>>>24)<<8|i>>>24)<<8|j>>>24|0,j<<8|0>>>24|(d[b+6|0]|0))|0}function zO(a){a=a|0;var b=0;b=c[a>>2]|0;return(d[b+15|0]|0)<<8|(d[b+14|0]|0)|(d[b+16|0]|0)<<16|(d[b+17|0]|0)<<24|0}function AO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if((a|0)==0){d=-1;return d|0}e=a;n$(e|0,0,360)|0;c[a+4>>2]=16384;c[a+24>>2]=1024;f=V_(16384)|0;c[a>>2]=f;g=V_(4096)|0;h=g;i=a+16|0;c[i>>2]=h;j=V_(8192)|0;k=a+20|0;c[k>>2]=j;do{if((f|0)==0){l=h}else{if((g|0)==0|(j|0)==0){W_(f);l=c[i>>2]|0;break}c[a+336>>2]=b;d=0;return d|0}}while(0);if((l|0)!=0){W_(l)}l=c[k>>2]|0;if((l|0)!=0){W_(l)}n$(e|0,0,360)|0;d=-1;return d|0}function BO(a){a=a|0;var b=0;if((a|0)==0){return 0}b=c[a>>2]|0;if((b|0)!=0){W_(b)}b=c[a+16>>2]|0;if((b|0)!=0){W_(b)}b=c[a+20>>2]|0;if((b|0)!=0){W_(b)}n$(a|0,0,360)|0;return 0}function CO(b){b=b|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,q=0;if((b|0)==0){return}e=b|0;a[(c[e>>2]|0)+22|0]=0;a[(c[e>>2]|0)+23|0]=0;a[(c[e>>2]|0)+24|0]=0;a[(c[e>>2]|0)+25|0]=0;f=c[b+4>>2]|0;if((f|0)>0){g=c[e>>2]|0;h=0;i=0;while(1){j=c[40128+(((d[g+i|0]|0)^h>>>24)<<2)>>2]^h<<8;k=i+1|0;if((k|0)<(f|0)){h=j;i=k}else{l=j;break}}}else{l=0}i=c[b+12>>2]|0;if((i|0)>0){h=c[b+8>>2]|0;b=l;f=0;do{m=c[40128+(((d[h+f|0]|0)^b>>>24)<<2)>>2]|0;b=m^b<<8;f=f+1|0;}while((f|0)<(i|0));n=b>>>24&255;o=b>>>16&255;p=b>>>8&255;q=m&255}else{n=l>>>24&255;o=l>>>16&255;p=l>>>8&255;q=l&255}a[(c[e>>2]|0)+22|0]=q;a[(c[e>>2]|0)+23|0]=p;a[(c[e>>2]|0)+24|0]=o;a[(c[e>>2]|0)+25|0]=n;return}function DO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=a+24|0;e=c[d>>2]|0;if((e|0)>((c[a+28>>2]|0)+b|0)){f=0;return f|0}g=a+16|0;h=Y_(c[g>>2]|0,(e+b<<2)+128|0)|0;if((h|0)==0){if((a|0)==0){f=-1;return f|0}e=c[a>>2]|0;if((e|0)!=0){W_(e)}e=c[g>>2]|0;if((e|0)!=0){W_(e)}e=c[a+20>>2]|0;if((e|0)!=0){W_(e)}n$(a|0,0,360)|0;f=-1;return f|0}c[g>>2]=h;h=a+20|0;e=Y_(c[h>>2]|0,((c[d>>2]|0)+b<<3)+256|0)|0;if((e|0)!=0){c[h>>2]=e;c[d>>2]=b+32+(c[d>>2]|0);f=0;return f|0}d=c[a>>2]|0;if((d|0)!=0){W_(d)}d=c[g>>2]|0;if((d|0)!=0){W_(d)}d=c[h>>2]|0;if((d|0)!=0){W_(d)}n$(a|0,0,360)|0;f=-1;return f|0}function EO(a){a=a|0;if((a|0)==0){return 0}n$(a|0,0,28)|0;return 0}function FO(a){a=a|0;var b=0;if((a|0)==0){return 0}b=c[a>>2]|0;if((b|0)!=0){W_(b)}n$(a|0,0,28)|0;return 0}function GO(a,b){a=a|0;b=b|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;d=a+4|0;e=c[d>>2]|0;if(!((e|0)>-1)){f=0;return f|0}g=a+12|0;h=c[g>>2]|0;i=a+8|0;if((h|0)==0){j=e}else{k=(c[i>>2]|0)-h|0;c[i>>2]=k;if((k|0)>0){l=c[a>>2]|0;s$(l|0,l+h|0,k|0)|0;m=c[d>>2]|0}else{m=e}c[g>>2]=0;j=m}m=c[i>>2]|0;do{if((j-m|0)<(b|0)){g=b+4096+m|0;e=a|0;k=c[e>>2]|0;if((k|0)==0){n=V_(g)|0}else{n=Y_(k,g)|0}if((n|0)!=0){c[e>>2]=n;c[d>>2]=g;o=c[i>>2]|0;p=n;break}if((a|0)==0){f=0;return f|0}g=c[e>>2]|0;if((g|0)!=0){W_(g)}n$(a|0,0,28)|0;f=0;return f|0}else{o=m;p=c[a>>2]|0}}while(0);f=p+o|0;return f|0}function HO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=c[a+4>>2]|0;do{if((d|0)>-1){e=a+8|0;f=(c[e>>2]|0)+b|0;if((f|0)>(d|0)){g=-1;break}c[e>>2]=f;g=0}else{g=-1}}while(0);return g|0}function IO(b,e){b=b|0;e=e|0;var f=0,g=0,h=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,A=0,B=0,C=0,D=0,E=0;f=i;i=i+24|0;g=f|0;h=f+8|0;j=b|0;k=c[j>>2]|0;l=b+12|0;m=c[l>>2]|0;n=k+m|0;o=b+8|0;p=(c[o>>2]|0)-m|0;if(!((c[b+4>>2]|0)>-1)){q=0;i=f;return q|0}r=b+20|0;s=c[r>>2]|0;do{if((s|0)==0){if((p|0)<27){q=0;i=f;return q|0}if((j$(n,116048,4)|0)!=0){t=b+24|0;break}u=k+(m+26)|0;v=a[u]|0;w=(v&255)+27|0;if((p|0)<(w|0)){q=0;i=f;return q|0}if(!(v<<24>>24==0)){v=m+27|0;x=b+24|0;y=0;A=c[x>>2]|0;do{A=A+(d[k+(v+y)|0]|0)|0;c[x>>2]=A;y=y+1|0;}while((y|0)<(d[u]|0|0))}c[r>>2]=w;B=w;C=11}else{B=s;C=11}}while(0);do{if((C|0)==11){s=b+24|0;if((B+(c[s>>2]|0)|0)>(p|0)){q=0;i=f;return q|0}u=k+(m+22)|0;y=u;A=d[y]|d[y+1|0]<<8|d[y+2|0]<<16|d[y+3|0]<<24|0;c[g>>2]=A;z=0;a[y]=z;z=z>>8;a[y+1|0]=z;z=z>>8;a[y+2|0]=z;z=z>>8;a[y+3|0]=z;c[h>>2]=n;x=c[r>>2]|0;c[h+4>>2]=x;c[h+8>>2]=k+(x+m);c[h+12>>2]=c[s>>2];CO(h);if((j$(g,u,4)|0)!=0){z=A;a[y]=z;z=z>>8;a[y+1|0]=z;z=z>>8;a[y+2|0]=z;z=z>>8;a[y+3|0]=z;t=s;break}y=c[j>>2]|0;A=c[l>>2]|0;if((e|0)==0){D=A}else{c[e>>2]=y+A;c[e+4>>2]=c[r>>2];c[e+8>>2]=y+((c[r>>2]|0)+A);c[e+12>>2]=c[s>>2];D=c[l>>2]|0}c[b+16>>2]=0;A=(c[s>>2]|0)+(c[r>>2]|0)|0;c[l>>2]=D+A;c[r>>2]=0;c[s>>2]=0;q=A;i=f;return q|0}}while(0);c[r>>2]=0;c[t>>2]=0;t=Wd(k+(m+1)|0,79,p-1|0)|0;p=c[j>>2]|0;if((t|0)==0){E=p+(c[o>>2]|0)|0}else{E=t}t=E;c[l>>2]=t-p;q=n-t|0;i=f;return q|0}function JO(b,e){b=b|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,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,J=0,K=0,L=0,M=0,N=0;f=c[e>>2]|0;g=c[e+8>>2]|0;h=c[e+12>>2]|0;e=a[f+4|0]|0;i=d[f+5|0]|0;j=i&1;k=i&2;l=i&4;i=d[f+13|0]|0;m=i<<8|0>>>24|(d[f+12|0]|0);n=m<<8|0>>>24|(d[f+11|0]|0);o=n<<8|0>>>24|(d[f+10|0]|0);p=o<<8|0>>>24|(d[f+9|0]|0);q=p<<8|0>>>24|(d[f+8|0]|0);r=q<<8|0>>>24|(d[f+7|0]|0);s=r<<8|0>>>24|(d[f+6|0]|0);t=((((((0<<8|i>>>24)<<8|m>>>24)<<8|n>>>24)<<8|o>>>24)<<8|p>>>24)<<8|q>>>24)<<8|r>>>24|0;r=(d[f+15|0]|0)<<8|(d[f+14|0]|0)|(d[f+16|0]|0)<<16|(d[f+17|0]|0)<<24;q=(d[f+19|0]|0)<<8|(d[f+18|0]|0)|(d[f+20|0]|0)<<16|(d[f+21|0]|0)<<24;p=d[f+26|0]|0;if((b|0)==0){u=-1;return u|0}o=b|0;n=c[o>>2]|0;if((n|0)==0){u=-1;return u|0}m=b+36|0;i=c[m>>2]|0;v=b+12|0;w=c[v>>2]|0;if((w|0)!=0){x=b+8|0;y=c[x>>2]|0;z=y-w|0;c[x>>2]=z;if((y|0)!=(w|0)){s$(n|0,n+w|0,z|0)|0}c[v>>2]=0}if((i|0)!=0){v=b+28|0;z=c[v>>2]|0;if((z|0)==(i|0)){A=i}else{w=c[b+16>>2]|0;s$(w|0,w+(i<<2)|0,z-i<<2|0)|0;z=c[b+20>>2]|0;s$(z|0,z+(i<<3)|0,(c[v>>2]|0)-i<<3|0)|0;A=c[v>>2]|0}c[v>>2]=A-i;A=b+32|0;c[A>>2]=(c[A>>2]|0)-i;c[m>>2]=0}if((r|0)!=(c[b+336>>2]|0)|e<<24>>24!=0){u=-1;return u|0}if((DO(b,p+1|0)|0)!=0){u=-1;return u|0}e=b+340|0;r=c[e>>2]|0;do{if((q|0)!=(r|0)){m=b+32|0;i=c[m>>2]|0;A=b+28|0;v=c[A>>2]|0;if((i|0)<(v|0)){z=b+8|0;w=c[b+16>>2]|0;n=i;y=c[z>>2]|0;do{y=y-(c[w+(n<<2)>>2]&255)|0;c[z>>2]=y;n=n+1|0;}while((n|0)<(v|0))}c[A>>2]=i;if((r|0)==-1){break}c[A>>2]=i+1;c[(c[b+16>>2]|0)+(i<<2)>>2]=1024;c[m>>2]=(c[m>>2]|0)+1}}while(0);a:do{if((j|0)==0){B=g;C=h;D=0;E=k}else{r=c[b+28>>2]|0;if((r|0)<1){F=g;G=h;H=0}else{if((c[(c[b+16>>2]|0)+(r-1<<2)>>2]|0)==1024){F=g;G=h;H=0}else{B=g;C=h;D=0;E=k;break}}while(1){if((H|0)>=(p|0)){B=F;C=G;D=H;E=0;break a}r=a[f+(H+27)|0]|0;v=r&255;n=F+v|0;y=G-v|0;v=H+1|0;if(r<<24>>24==-1){F=n;G=y;H=v}else{B=n;C=y;D=v;E=0;break}}}}while(0);if((C|0)!=0){H=b+4|0;G=c[H>>2]|0;F=b+8|0;k=c[F>>2]|0;h=c[o>>2]|0;do{if((G|0)>(k+C|0)){I=k;J=h}else{g=C+1024|0;j=Y_(h,G+g|0)|0;if((j|0)!=0){c[H>>2]=(c[H>>2]|0)+g;c[o>>2]=j;I=c[F>>2]|0;J=j;break}j=c[o>>2]|0;if((j|0)!=0){W_(j)}j=c[b+16>>2]|0;if((j|0)!=0){W_(j)}j=c[b+20>>2]|0;if((j|0)!=0){W_(j)}n$(b|0,0,360)|0;u=-1;return u|0}}while(0);m$(J+I|0,B|0,C)|0;c[F>>2]=(c[F>>2]|0)+C}do{if((D|0)<(p|0)){C=b+28|0;F=b+16|0;B=b+20|0;I=b+32|0;J=E;o=D;H=-1;G=c[C>>2]|0;b:while(1){h=J;k=o;j=G;while(1){g=a[f+(k+27)|0]|0;c[(c[F>>2]|0)+(j<<2)>>2]=g&255;m=(c[B>>2]|0)+(c[C>>2]<<3)|0;c[m>>2]=-1;c[m+4>>2]=-1;if((h|0)!=0){m=(c[F>>2]|0)+(c[C>>2]<<2)|0;c[m>>2]=c[m>>2]|256}K=c[C>>2]|0;L=K+1|0;c[C>>2]=L;M=k+1|0;if(!(g<<24>>24==-1)){break}if((M|0)<(p|0)){h=0;k=M;j=L}else{N=H;break b}}c[I>>2]=L;if((M|0)<(p|0)){J=0;o=M;H=K;G=L}else{N=K;break}}if((N|0)==-1){break}G=(c[b+20>>2]|0)+(N<<3)|0;c[G>>2]=s;c[G+4>>2]=t}}while(0);do{if((l|0)!=0){c[b+328>>2]=1;t=c[b+28>>2]|0;if((t|0)<=0){break}s=(c[b+16>>2]|0)+(t-1<<2)|0;c[s>>2]=c[s>>2]|512}}while(0);c[e>>2]=q+1;u=0;return u|0}function KO(a){a=a|0;var b=0;if(!((c[a+4>>2]|0)>-1)){b=-1;return b|0}n$(a+8|0,0,20)|0;b=0;return b|0}function LO(a,b){a=a|0;b=b|0;var d=0;if((a|0)==0){d=-1;return d|0}if((c[a>>2]|0)==0){d=-1;return d|0}c[a+8>>2]=0;c[a+12>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;c[a+36>>2]=0;c[a+324>>2]=0;c[a+328>>2]=0;c[a+332>>2]=0;c[a+340>>2]=-1;n$(a+344|0,0,16)|0;c[a+336>>2]=b;d=0;return d|0}function MO(a,b){a=a|0;b=b|0;var d=0;do{if((a|0)==0){d=0}else{if((c[a>>2]|0)==0){d=0;break}d=NO(a,b,1)|0}}while(0);return d|0}function NO(a,b,d){a=a|0;b=b|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,q=0,r=0,s=0,t=0,u=0,v=0;e=a+36|0;f=c[e>>2]|0;if((c[a+32>>2]|0)<=(f|0)){g=0;return g|0}h=c[a+16>>2]|0;i=c[h+(f<<2)>>2]|0;if((i&1024|0)!=0){c[e>>2]=f+1;j=a+344|0;k=z$(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;c[j>>2]=k;c[j+4>>2]=H;g=-1;return g|0}j=(b|0)!=0;k=(d|0)==0;if(k&(j^1)){g=1;return g|0}d=i&255;l=i&512;m=i&256;if((d|0)==255){i=255;n=l;o=f;while(1){p=o+1|0;q=c[h+(p<<2)>>2]|0;r=q&255;s=(q&512|0)==0?n:512;q=r+i|0;if((r|0)==255){i=q;n=s;o=p}else{t=q;u=s;v=p;break}}}else{t=d;u=l;v=f}if(j){c[b+12>>2]=u;c[b+8>>2]=m;c[b>>2]=(c[a>>2]|0)+(c[a+12>>2]|0);m=a+344|0;u=c[m+4>>2]|0;j=b+24|0;c[j>>2]=c[m>>2];c[j+4>>2]=u;u=(c[a+20>>2]|0)+(v<<3)|0;j=c[u+4>>2]|0;m=b+16|0;c[m>>2]=c[u>>2];c[m+4>>2]=j;c[b+4>>2]=t}if(k){g=1;return g|0}k=a+12|0;c[k>>2]=(c[k>>2]|0)+t;c[e>>2]=v+1;v=a+344|0;a=z$(c[v>>2]|0,c[v+4>>2]|0,1,0)|0;c[v>>2]=a;c[v+4>>2]=H;g=1;return g|0}function OO(a,b,c){a=a|0;b=b|0;c=c|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,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,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=a>>>16;f=a&65535;if((c|0)==1){a=(d[b]|0)+f|0;g=a>>>0>65520>>>0?a-65521|0:a;a=g+e|0;h=(a>>>0>65520>>>0?a+15|0:a)<<16|g;return h|0}if((b|0)==0){h=1;return h|0}if(c>>>0<16>>>0){if((c|0)==0){i=f;j=e}else{g=f;a=b;k=c;l=e;while(1){m=k-1|0;n=(d[a]|0)+g|0;o=n+l|0;if((m|0)==0){i=n;j=o;break}else{g=n;a=a+1|0;k=m;l=o}}}h=((j>>>0)%65521|0)<<16|(i>>>0>65520>>>0?i-65521|0:i);return h|0}do{if(c>>>0>5551>>>0){i=f;j=b;l=c;k=e;do{l=l-5552|0;a=347;g=k;o=j;m=i;while(1){n=(d[o]|0)+m|0;p=n+(d[o+1|0]|0)|0;q=p+(d[o+2|0]|0)|0;r=q+(d[o+3|0]|0)|0;s=r+(d[o+4|0]|0)|0;t=s+(d[o+5|0]|0)|0;u=t+(d[o+6|0]|0)|0;v=u+(d[o+7|0]|0)|0;w=v+(d[o+8|0]|0)|0;x=w+(d[o+9|0]|0)|0;y=x+(d[o+10|0]|0)|0;z=y+(d[o+11|0]|0)|0;A=z+(d[o+12|0]|0)|0;B=A+(d[o+13|0]|0)|0;C=B+(d[o+14|0]|0)|0;D=C+(d[o+15|0]|0)|0;E=n+g+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D|0;C=a-1|0;if((C|0)==0){break}else{a=C;g=E;o=o+16|0;m=D}}j=j+5552|0;i=(D>>>0)%65521|0;k=(E>>>0)%65521|0;}while(l>>>0>5551>>>0);if((l|0)==0){F=k;G=i;break}if(l>>>0>15>>>0){H=i;I=j;J=l;K=k;L=15}else{M=i;N=j;O=l;P=k;L=16}}else{H=f;I=b;J=c;K=e;L=15}}while(0);if((L|0)==15){while(1){L=0;Q=J-16|0;e=(d[I]|0)+H|0;c=e+(d[I+1|0]|0)|0;b=c+(d[I+2|0]|0)|0;f=b+(d[I+3|0]|0)|0;E=f+(d[I+4|0]|0)|0;D=E+(d[I+5|0]|0)|0;m=D+(d[I+6|0]|0)|0;o=m+(d[I+7|0]|0)|0;g=o+(d[I+8|0]|0)|0;a=g+(d[I+9|0]|0)|0;C=a+(d[I+10|0]|0)|0;B=C+(d[I+11|0]|0)|0;A=B+(d[I+12|0]|0)|0;z=A+(d[I+13|0]|0)|0;y=z+(d[I+14|0]|0)|0;R=y+(d[I+15|0]|0)|0;S=e+K+c+b+f+E+D+m+o+g+a+C+B+A+z+y+R|0;T=I+16|0;if(Q>>>0>15>>>0){H=R;I=T;J=Q;K=S;L=15}else{break}}if((Q|0)==0){U=R;V=S;L=17}else{M=R;N=T;O=Q;P=S;L=16}}if((L|0)==16){while(1){L=0;S=O-1|0;Q=(d[N]|0)+M|0;T=Q+P|0;if((S|0)==0){U=Q;V=T;L=17;break}else{M=Q;N=N+1|0;O=S;P=T;L=16}}}if((L|0)==17){F=(V>>>0)%65521|0;G=(U>>>0)%65521|0}h=F<<16|G;return h|0}function PO(a,b,e){a=a|0;b=b|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,t=0,u=0,v=0,w=0;if((b|0)==0){f=0;return f|0}g=~a;a:do{if((e|0)==0){h=g}else{a=b;i=e;j=g;while(1){if((a&3|0)==0){break}k=c[31936+(((d[a]|0)^j&255)<<2)>>2]^j>>>8;l=i-1|0;if((l|0)==0){h=k;break a}else{a=a+1|0;i=l;j=k}}k=a;if(i>>>0>31>>>0){l=i;m=j;n=k;while(1){o=c[n>>2]^m;p=c[33984+((o>>>8&255)<<2)>>2]^c[35008+((o&255)<<2)>>2]^c[32960+((o>>>16&255)<<2)>>2]^c[31936+(o>>>24<<2)>>2]^c[n+4>>2];o=c[33984+((p>>>8&255)<<2)>>2]^c[35008+((p&255)<<2)>>2]^c[32960+((p>>>16&255)<<2)>>2]^c[31936+(p>>>24<<2)>>2]^c[n+8>>2];p=c[33984+((o>>>8&255)<<2)>>2]^c[35008+((o&255)<<2)>>2]^c[32960+((o>>>16&255)<<2)>>2]^c[31936+(o>>>24<<2)>>2]^c[n+12>>2];o=c[33984+((p>>>8&255)<<2)>>2]^c[35008+((p&255)<<2)>>2]^c[32960+((p>>>16&255)<<2)>>2]^c[31936+(p>>>24<<2)>>2]^c[n+16>>2];p=c[33984+((o>>>8&255)<<2)>>2]^c[35008+((o&255)<<2)>>2]^c[32960+((o>>>16&255)<<2)>>2]^c[31936+(o>>>24<<2)>>2]^c[n+20>>2];o=c[33984+((p>>>8&255)<<2)>>2]^c[35008+((p&255)<<2)>>2]^c[32960+((p>>>16&255)<<2)>>2]^c[31936+(p>>>24<<2)>>2]^c[n+24>>2];p=n+32|0;q=c[33984+((o>>>8&255)<<2)>>2]^c[35008+((o&255)<<2)>>2]^c[32960+((o>>>16&255)<<2)>>2]^c[31936+(o>>>24<<2)>>2]^c[n+28>>2];o=c[33984+((q>>>8&255)<<2)>>2]^c[35008+((q&255)<<2)>>2]^c[32960+((q>>>16&255)<<2)>>2]^c[31936+(q>>>24<<2)>>2];q=l-32|0;if(q>>>0>31>>>0){l=q;m=o;n=p}else{r=q;s=o;t=p;break}}}else{r=i;s=j;t=k}if(r>>>0>3>>>0){n=r;m=s;l=t;while(1){a=l+4|0;p=c[l>>2]^m;o=c[33984+((p>>>8&255)<<2)>>2]^c[35008+((p&255)<<2)>>2]^c[32960+((p>>>16&255)<<2)>>2]^c[31936+(p>>>24<<2)>>2];p=n-4|0;if(p>>>0>3>>>0){n=p;m=o;l=a}else{u=p;v=o;w=a;break}}}else{u=r;v=s;w=t}if((u|0)==0){h=v;break}l=v;m=u;n=w;while(1){k=c[31936+(((d[n]|0)^l&255)<<2)>>2]^l>>>8;j=m-1|0;if((j|0)==0){h=k;break}else{l=k;m=j;n=n+1|0}}}}while(0);f=~h;return f|0}function QO(e,f){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,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,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,_=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,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;g=c[e+28>>2]|0;h=g;i=e|0;j=c[i>>2]|0;k=e+4|0;l=j+((c[k>>2]|0)-6)|0;m=e+12|0;n=c[m>>2]|0;o=e+16|0;p=c[o>>2]|0;q=n+(p-258)|0;r=c[h+44>>2]|0;s=c[h+48>>2]|0;t=c[h+52>>2]|0;u=h+56|0;v=h+60|0;w=c[h+76>>2]|0;x=c[h+80>>2]|0;y=(1<>2])-1|0;z=(1<>2])-1|0;A=n+(p+~f)|0;f=t-1|0;p=(s|0)==0;B=(c[h+40>>2]|0)-1|0;h=B+s|0;C=s-1|0;D=A-1|0;E=A-s|0;F=j-1|0;j=n-1|0;n=c[u>>2]|0;G=c[v>>2]|0;a:while(1){if(G>>>0<15>>>0){H=F+2|0;I=H;J=((d[F+1|0]|0)<>1]|0;N=d[w+(H<<2)+1|0]|0;H=J>>>(N>>>0);O=K-N|0;do{if(L<<24>>24==0){P=M&255;Q=H;R=O;S=6}else{N=M;T=H;U=O;V=L;while(1){W=V&255;if((W&16|0)!=0){break}if((W&64|0)!=0){S=53;break a}X=(T&(1<>1]|0;_=d[w+(X<<2)+1|0]|0;$=T>>>(_>>>0);aa=U-_|0;if(Y<<24>>24==0){S=5;break}else{N=Z;T=$;U=aa;V=Y}}if((S|0)==5){S=0;P=Z&255;Q=$;R=aa;S=6;break}V=N&65535;Y=W&15;if((Y|0)==0){ba=V;ca=I;da=T;ea=U}else{if(U>>>0>>0){_=I+1|0;fa=_;ga=((d[_]|0)<>>(Y>>>0);ea=ha-Y|0}if(ea>>>0<15>>>0){Y=ca+2|0;ia=Y;ja=((d[ca+1|0]|0)<>1]|0;_=d[x+(Y<<2)+1|0]|0;X=ja>>>(_>>>0);la=ka-_|0;_=d[x+(Y<<2)|0]|0;if((_&16|0)==0){Y=V;ma=X;na=la;oa=_;while(1){if((oa&64|0)!=0){S=50;break a}pa=(ma&(1<>1]|0;ra=d[x+(pa<<2)+1|0]|0;sa=ma>>>(ra>>>0);ta=na-ra|0;ra=d[x+(pa<<2)|0]|0;if((ra&16|0)==0){Y=qa;ma=sa;na=ta;oa=ra}else{ua=qa;va=sa;wa=ta;xa=ra;break}}}else{ua=V;va=X;wa=la;xa=_}oa=ua&65535;Y=xa&15;do{if(wa>>>0>>0){N=ia+1|0;ra=((d[N]|0)<>>0>>0)){ya=N;za=ra;Aa=ta;break}N=ia+2|0;ya=N;za=((d[N]|0)<>>(Y>>>0);Ca=Aa-Y|0;la=j;X=la-A|0;if(!(_>>>0>X>>>0)){V=j+(-_|0)|0;ra=ba;ta=j;while(1){a[ta+1|0]=a[V+1|0]|0;a[ta+2|0]=a[V+2|0]|0;N=V+3|0;Da=ta+3|0;a[Da]=a[N]|0;Ea=ra-3|0;if(Ea>>>0>2>>>0){V=N;ra=Ea;ta=Da}else{break}}if((Ea|0)==0){Fa=ya;Ga=Da;Ha=Ba;Ia=Ca;break}ra=ta+4|0;a[ra]=a[V+4|0]|0;if(!(Ea>>>0>1>>>0)){Fa=ya;Ga=ra;Ha=Ba;Ia=Ca;break}ra=ta+5|0;a[ra]=a[V+5|0]|0;Fa=ya;Ga=ra;Ha=Ba;Ia=Ca;break}ra=_-X|0;if(ra>>>0>r>>>0){S=20;break a}do{if(p){Y=t+(B-ra)|0;if(!(ra>>>0>>0)){Ja=Y;Ka=ba;La=j;break}oa=ba-ra|0;N=_-la|0;sa=Y;Y=ra;qa=j;do{sa=sa+1|0;qa=qa+1|0;a[qa]=a[sa]|0;Y=Y-1|0;}while((Y|0)!=0);Ja=j+(D+N+(1-_))|0;Ka=oa;La=j+(A+N)|0}else{if(!(s>>>0>>0)){Y=t+(C-ra)|0;if(!(ra>>>0>>0)){Ja=Y;Ka=ba;La=j;break}sa=ba-ra|0;qa=_-la|0;pa=Y;Y=ra;Ma=j;do{pa=pa+1|0;Ma=Ma+1|0;a[Ma]=a[pa]|0;Y=Y-1|0;}while((Y|0)!=0);Ja=j+(D+qa+(1-_))|0;Ka=sa;La=j+(A+qa)|0;break}Y=t+(h-ra)|0;pa=ra-s|0;if(!(pa>>>0>>0)){Ja=Y;Ka=ba;La=j;break}Ma=ba-pa|0;N=_-la|0;oa=Y;Y=pa;pa=j;do{oa=oa+1|0;pa=pa+1|0;a[pa]=a[oa]|0;Y=Y-1|0;}while((Y|0)!=0);Y=j+(E+N)|0;if(!(s>>>0>>0)){Ja=f;Ka=Ma;La=Y;break}oa=Ma-s|0;pa=f;qa=s;sa=Y;do{pa=pa+1|0;sa=sa+1|0;a[sa]=a[pa]|0;qa=qa-1|0;}while((qa|0)!=0);Ja=j+(D+N+(1-_))|0;Ka=oa;La=j+(A+N)|0}}while(0);if(Ka>>>0>2>>>0){_=La;la=Ka;ra=Ja;while(1){a[_+1|0]=a[ra+1|0]|0;a[_+2|0]=a[ra+2|0]|0;X=ra+3|0;V=_+3|0;a[V]=a[X]|0;ta=la-3|0;if(ta>>>0>2>>>0){_=V;la=ta;ra=X}else{Na=V;Oa=ta;Pa=X;break}}}else{Na=La;Oa=Ka;Pa=Ja}if((Oa|0)==0){Fa=ya;Ga=Na;Ha=Ba;Ia=Ca;break}ra=Na+1|0;a[ra]=a[Pa+1|0]|0;if(!(Oa>>>0>1>>>0)){Fa=ya;Ga=ra;Ha=Ba;Ia=Ca;break}ra=Na+2|0;a[ra]=a[Pa+2|0]|0;Fa=ya;Ga=ra;Ha=Ba;Ia=Ca}}while(0);if((S|0)==6){S=0;L=j+1|0;a[L]=P;Fa=I;Ga=L;Ha=Q;Ia=R}if(Fa>>>0>>0&Ga>>>0>>0){F=Fa;j=Ga;n=Ha;G=Ia}else{Qa=Fa;Ra=Ga;Sa=Ha;Ta=Ia;break}}do{if((S|0)==20){c[e+24>>2]=115616;c[g>>2]=27;Qa=ya;Ra=j;Sa=Ba;Ta=Ca}else if((S|0)==50){c[e+24>>2]=168712;c[g>>2]=27;Qa=ia;Ra=j;Sa=ma;Ta=na}else if((S|0)==53){if((W&32|0)==0){c[e+24>>2]=143256;c[g>>2]=27;Qa=I;Ra=j;Sa=T;Ta=U;break}else{c[g>>2]=11;Qa=I;Ra=j;Sa=T;Ta=U;break}}}while(0);U=Ta>>>3;T=Qa+(-U|0)|0;j=Ta-(U<<3)|0;Ta=(1<>2]=Qa+(1-U);c[m>>2]=Ra+1;if(T>>>0>>0){Ua=l-T|0}else{Ua=l-T|0}c[k>>2]=Ua+5;if(Ra>>>0>>0){Va=q-Ra|0;Wa=Va+257|0;c[o>>2]=Wa;c[u>>2]=Ta;c[v>>2]=j;return}else{Va=q-Ra|0;Wa=Va+257|0;c[o>>2]=Wa;c[u>>2]=Ta;c[v>>2]=j;return}}function RO(b,d,e,f){b=b|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){g=-6;return g|0}if(!((a[e]|0)==49&(f|0)==56)){g=-6;return g|0}if((b|0)==0){g=-2;return g|0}f=b+24|0;c[f>>2]=0;e=b+32|0;h=c[e>>2]|0;if((h|0)==0){c[e>>2]=36;c[b+40>>2]=0;i=36}else{i=h}h=b+36|0;if((c[h>>2]|0)==0){c[h>>2]=14}e=b+40|0;j=rk[i&63](c[e>>2]|0,1,9520)|0;if((j|0)==0){g=-4;return g|0}i=b+28|0;c[i>>2]=j;if((d|0)<0){c[j+8>>2]=0;k=-d|0}else{c[j+8>>2]=(d>>4)+1;k=d}if((k-8|0)>>>0>7>>>0){hk[c[h>>2]&255](c[e>>2]|0,j);c[i>>2]=0;g=-2;return g|0}c[j+36>>2]=k;c[j+52>>2]=0;j=c[i>>2]|0;if((j|0)==0){g=-2;return g|0}i=j;c[i+28>>2]=0;c[b+20>>2]=0;c[b+8>>2]=0;c[f>>2]=0;c[b+48>>2]=1;c[j>>2]=0;c[i+4>>2]=0;c[i+12>>2]=0;c[i+20>>2]=32768;c[i+32>>2]=0;c[i+40>>2]=0;c[i+44>>2]=0;c[i+48>>2]=0;c[i+56>>2]=0;c[i+60>>2]=0;j=i+1328|0;c[i+108>>2]=j;c[i+80>>2]=j;c[i+76>>2]=j;g=0;return g|0}function SO(f,g){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,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,_=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,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,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=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=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0;if((f|0)==0){h=-2;return h|0}i=c[f+28>>2]|0;if((i|0)==0){h=-2;return h|0}j=f+12|0;k=c[j>>2]|0;if((k|0)==0){h=-2;return h|0}l=f|0;m=c[l>>2]|0;do{if((m|0)==0){if((c[f+4>>2]|0)==0){break}else{h=-2}return h|0}}while(0);n=i;o=i;i=c[o>>2]|0;if((i|0)==11){c[o>>2]=12;p=c[j>>2]|0;q=c[l>>2]|0;r=12}else{p=k;q=m;r=i}i=f+16|0;m=c[i>>2]|0;k=f+4|0;s=c[k>>2]|0;t=n+56|0;u=n+60|0;v=n+8|0;w=n+36|0;x=f+24|0;y=n+20|0;z=n+24|0;A=f+48|0;B=n+12|0;C=(g|0)==5;D=n+4|0;E=n+76|0;F=n+84|0;G=n+80|0;H=n+88|0;I=n+64|0;J=n+72|0;K=n+68|0;L=n+44|0;M=n+48|0;N=n+52|0;O=n+40|0;P=f+20|0;Q=n+28|0;R=n+96|0;S=n+100|0;T=n+92|0;U=n+104|0;V=n+1328|0;W=n+108|0;X=n+112|0;Y=n+752|0;Z=0;_=m;$=c[u>>2]|0;aa=c[t>>2]|0;ba=m;m=s;ca=p;p=q;q=r;a:while(1){b:do{switch(q|0){case 13:{r=$&7;da=aa>>>(r>>>0);ea=$-r|0;if(ea>>>0<32>>>0){r=p;fa=m;ga=da;ha=ea;while(1){if((fa|0)==0){ia=Z;ja=_;ka=ha;la=ga;ma=0;na=r;oa=ba;break a}pa=fa-1|0;qa=r+1|0;ra=((d[r]|0)<>>0<32>>>0){r=qa;fa=pa;ga=ra;ha=sa}else{ta=qa;ua=pa;va=ra;wa=sa;break}}}else{ta=p;ua=m;va=da;wa=ea}ha=va&65535;if((ha|0)==(va>>>16^65535|0)){c[I>>2]=ha;c[o>>2]=14;xa=0;ya=0;za=ua;Aa=ta;Ba=ha;Ca=52;break b}else{c[x>>2]=106912;c[o>>2]=27;Da=Z;Ea=_;Fa=wa;Ga=va;Ha=ba;Ia=ua;Ja=ca;Ka=ta;break b}break};case 14:{xa=$;ya=aa;za=m;Aa=p;Ba=c[I>>2]|0;Ca=52;break};case 19:{La=Z;Ma=$;Na=aa;Oa=m;Pa=p;Qa=c[J>>2]|0;Ca=124;break};case 21:{Ra=Z;Sa=$;Ta=aa;Ua=m;Va=p;Wa=c[J>>2]|0;Ca=141;break};case 17:{Xa=Z;Ya=$;Za=aa;_a=m;$a=p;ab=c[U>>2]|0;Ca=71;break};case 9:{if($>>>0<32>>>0){ha=p;ga=m;fa=aa;r=$;while(1){if((ga|0)==0){ia=Z;ja=_;ka=r;la=fa;ma=0;na=ha;oa=ba;break a}sa=ga-1|0;ra=ha+1|0;pa=((d[ha]|0)<>>0<32>>>0){ha=ra;ga=sa;fa=pa;r=qa}else{bb=ra;cb=sa;db=pa;break}}}else{bb=p;cb=m;db=aa}r=Ue(db|0)|0;c[z>>2]=r;c[A>>2]=r;c[o>>2]=10;eb=0;fb=0;gb=cb;hb=bb;Ca=31;break};case 15:{if($>>>0<14>>>0){r=p;fa=m;ga=aa;ha=$;while(1){if((fa|0)==0){ia=Z;ja=_;ka=ha;la=ga;ma=0;na=r;oa=ba;break a}ea=fa-1|0;da=r+1|0;pa=((d[r]|0)<>>0<14>>>0){r=da;fa=ea;ga=pa;ha=sa}else{ib=da;jb=ea;kb=pa;lb=sa;break}}}else{ib=p;jb=m;kb=aa;lb=$}ha=(kb&31)+257|0;c[R>>2]=ha;ga=(kb>>>5&31)+1|0;c[S>>2]=ga;c[T>>2]=(kb>>>10&15)+4;fa=kb>>>14;r=lb-14|0;if(ha>>>0>286>>>0|ga>>>0>30>>>0){c[x>>2]=63680;c[o>>2]=27;Da=Z;Ea=_;Fa=r;Ga=fa;Ha=ba;Ia=jb;Ja=ca;Ka=ib;break b}else{c[U>>2]=0;c[o>>2]=16;mb=ib;nb=jb;ob=fa;pb=r;qb=0;Ca=62;break b}break};case 0:{if((c[v>>2]|0)==0){c[o>>2]=12;Da=Z;Ea=_;Fa=$;Ga=aa;Ha=ba;Ia=m;Ja=ca;Ka=p;break b}if($>>>0<16>>>0){r=p;fa=m;ga=aa;ha=$;while(1){if((fa|0)==0){ia=Z;ja=_;ka=ha;la=ga;ma=0;na=r;oa=ba;break a}sa=fa-1|0;pa=r+1|0;ea=((d[r]|0)<>>0<16>>>0){r=pa;fa=sa;ga=ea;ha=da}else{rb=pa;sb=sa;tb=ea;ub=da;break}}}else{rb=p;sb=m;tb=aa;ub=$}if(((((tb<<8&65280)+(tb>>>8)|0)>>>0)%31|0|0)!=0){c[x>>2]=168688;c[o>>2]=27;Da=Z;Ea=_;Fa=ub;Ga=tb;Ha=ba;Ia=sb;Ja=ca;Ka=rb;break b}if((tb&15|0)!=8){c[x>>2]=143224;c[o>>2]=27;Da=Z;Ea=_;Fa=ub;Ga=tb;Ha=ba;Ia=sb;Ja=ca;Ka=rb;break b}ha=tb>>>4;ga=(ha&15)+8|0;if(ga>>>0>(c[w>>2]|0)>>>0){c[x>>2]=127784;c[o>>2]=27;Da=Z;Ea=_;Fa=ub-4|0;Ga=ha;Ha=ba;Ia=sb;Ja=ca;Ka=rb;break b}else{c[y>>2]=1<>2]=ga;c[A>>2]=ga;c[o>>2]=tb>>>12&2^11;Da=Z;Ea=_;Fa=0;Ga=0;Ha=ba;Ia=sb;Ja=ca;Ka=rb;break b}break};case 10:{eb=$;fb=aa;gb=m;hb=p;Ca=31;break};case 11:{vb=$;wb=aa;xb=m;yb=p;Ca=34;break};case 12:{zb=$;Ab=aa;Bb=m;Cb=p;Ca=35;break};case 16:{ga=c[U>>2]|0;if(ga>>>0<(c[T>>2]|0)>>>0){mb=p;nb=m;ob=aa;pb=$;qb=ga;Ca=62}else{Db=p;Eb=m;Fb=aa;Gb=$;Hb=ga;Ca=66}break};case 18:{Ib=Z;Jb=$;Kb=aa;Lb=m;Mb=p;Ca=106;break};case 20:{Nb=Z;Ob=$;Pb=aa;Qb=m;Rb=p;Ca=130;break};case 22:{Sb=Z;Tb=$;Ub=aa;Vb=m;Wb=p;Ca=150;break};case 23:{if((ba|0)==0){Xb=Z;Yb=$;Zb=aa;_b=m;$b=p;ac=0;Ca=173;break a}a[ca]=c[I>>2];c[o>>2]=18;Da=Z;Ea=_;Fa=$;Ga=aa;Ha=ba-1|0;Ia=m;Ja=ca+1|0;Ka=p;break};case 24:{if((c[v>>2]|0)==0){bc=_;cc=$;dc=aa;ec=m;fc=p;Ca=172;break a}if($>>>0<32>>>0){ga=p;ha=m;fa=aa;r=$;while(1){if((ha|0)==0){ia=Z;ja=_;ka=r;la=fa;ma=0;na=ga;oa=ba;break a}da=ha-1|0;ea=ga+1|0;sa=((d[ga]|0)<>>0<32>>>0){ga=ea;ha=da;fa=sa;r=pa}else{gc=ea;hc=da;ic=sa;jc=pa;break}}}else{gc=p;hc=m;ic=aa;jc=$}r=_-ba|0;c[P>>2]=(c[P>>2]|0)+r;c[Q>>2]=(c[Q>>2]|0)+r;if((_|0)!=(ba|0)){fa=OO(c[z>>2]|0,ca+(-r|0)|0,r)|0;c[z>>2]=fa;c[A>>2]=fa}fa=Ue(ic|0)|0;if((fa|0)==(c[z>>2]|0)){bc=ba;cc=0;dc=0;ec=hc;fc=gc;Ca=172;break a}c[x>>2]=169168;c[o>>2]=27;Da=Z;Ea=ba;Fa=jc;Ga=ic;Ha=ba;Ia=hc;Ja=ca;Ka=gc;break};case 26:{Xb=1;Yb=$;Zb=aa;_b=m;$b=p;ac=ba;Ca=173;break a;break};case 27:{ia=-3;ja=_;ka=$;la=aa;ma=m;na=p;oa=ba;break a;break};case 28:{Ca=182;break a;break};default:{h=-2;Ca=183;break a}}}while(0);do{if((Ca|0)==31){Ca=0;if((c[B>>2]|0)==0){Ca=32;break a}fa=OO(0,0,0)|0;c[z>>2]=fa;c[A>>2]=fa;c[o>>2]=11;vb=eb;wb=fb;xb=gb;yb=hb;Ca=34}else if((Ca|0)==52){Ca=0;if((Ba|0)==0){c[o>>2]=11;Da=Z;Ea=_;Fa=xa;Ga=ya;Ha=ba;Ia=za;Ja=ca;Ka=Aa;break}fa=Ba>>>0>za>>>0?za:Ba;r=fa>>>0>ba>>>0?ba:fa;if((r|0)==0){Xb=Z;Yb=xa;Zb=ya;_b=za;$b=Aa;ac=ba;Ca=173;break a}m$(ca|0,Aa|0,r)|0;c[I>>2]=(c[I>>2]|0)-r;Da=Z;Ea=_;Fa=xa;Ga=ya;Ha=ba-r|0;Ia=za-r|0;Ja=ca+r|0;Ka=Aa+r|0}else if((Ca|0)==62){while(1){Ca=0;if(pb>>>0<3>>>0){r=mb;fa=nb;ha=ob;ga=pb;while(1){if((fa|0)==0){ia=Z;ja=_;ka=ga;la=ha;ma=0;na=r;oa=ba;break a}pa=fa-1|0;sa=r+1|0;da=((d[r]|0)<>>0<3>>>0){r=sa;fa=pa;ha=da;ga=ea}else{kc=sa;lc=pa;mc=da;nc=ea;break}}}else{kc=mb;lc=nb;mc=ob;nc=pb}c[U>>2]=qb+1;b[n+112+((e[20416+(qb<<1)>>1]|0)<<1)>>1]=mc&7;ga=mc>>>3;ha=nc-3|0;fa=c[U>>2]|0;if(fa>>>0<(c[T>>2]|0)>>>0){mb=kc;nb=lc;ob=ga;pb=ha;qb=fa;Ca=62}else{Db=kc;Eb=lc;Fb=ga;Gb=ha;Hb=fa;Ca=66;break}}}}while(0);do{if((Ca|0)==34){Ca=0;if(C){Xb=Z;Yb=vb;Zb=wb;_b=xb;$b=yb;ac=ba;Ca=173;break a}else{zb=vb;Ab=wb;Bb=xb;Cb=yb;Ca=35}}else if((Ca|0)==66){Ca=0;if(Hb>>>0<19>>>0){fa=Hb;do{c[U>>2]=fa+1;b[n+112+((e[20416+(fa<<1)>>1]|0)<<1)>>1]=0;fa=c[U>>2]|0;}while(fa>>>0<19>>>0)}c[W>>2]=V;c[E>>2]=V;c[F>>2]=7;fa=VO(0,X,19,W,F,Y)|0;if((fa|0)==0){c[U>>2]=0;c[o>>2]=17;Xa=0;Ya=Gb;Za=Fb;_a=Eb;$a=Db;ab=0;Ca=71;break}else{c[x>>2]=55832;c[o>>2]=27;Da=fa;Ea=_;Fa=Gb;Ga=Fb;Ha=ba;Ia=Eb;Ja=ca;Ka=Db;break}}}while(0);c:do{if((Ca|0)==35){Ca=0;if((c[D>>2]|0)!=0){fa=zb&7;c[o>>2]=24;Da=Z;Ea=_;Fa=zb-fa|0;Ga=Ab>>>(fa>>>0);Ha=ba;Ia=Bb;Ja=ca;Ka=Cb;break}if(zb>>>0<3>>>0){fa=Cb;ha=Bb;ga=Ab;r=zb;while(1){if((ha|0)==0){ia=Z;ja=_;ka=r;la=ga;ma=0;na=fa;oa=ba;break a}ea=ha-1|0;da=fa+1|0;pa=((d[fa]|0)<>>0<3>>>0){fa=da;ha=ea;ga=pa;r=sa}else{oc=da;pc=ea;qc=pa;rc=sa;break}}}else{oc=Cb;pc=Bb;qc=Ab;rc=zb}c[D>>2]=qc&1;r=qc>>>1&3;if((r|0)==3){c[x>>2]=117272;c[o>>2]=27}else if((r|0)==0){c[o>>2]=13}else if((r|0)==1){c[E>>2]=20848;c[F>>2]=9;c[G>>2]=22896;c[H>>2]=5;c[o>>2]=18}else if((r|0)==2){c[o>>2]=15}Da=Z;Ea=_;Fa=rc-3|0;Ga=qc>>>3;Ha=ba;Ia=pc;Ja=ca;Ka=oc}else if((Ca|0)==71){Ca=0;r=c[R>>2]|0;ga=c[S>>2]|0;do{if(ab>>>0<(ga+r|0)>>>0){ha=$a;fa=_a;sa=Za;pa=Ya;ea=ab;da=r;ra=ga;d:while(1){qa=(1<>2])-1|0;sc=qa&sa;tc=c[E>>2]|0;uc=d[tc+(sc<<2)+1|0]|0;if(uc>>>0>pa>>>0){vc=ha;wc=fa;xc=sa;yc=pa;while(1){if((wc|0)==0){ia=Xa;ja=_;ka=yc;la=xc;ma=0;na=vc;oa=ba;break a}zc=wc-1|0;Ac=vc+1|0;Bc=((d[vc]|0)<>>0>Cc>>>0){vc=Ac;wc=zc;xc=Bc;yc=Cc}else{Fc=Ac;Gc=zc;Hc=Bc;Ic=Cc;Jc=Dc;Kc=Ec;break}}}else{Fc=ha;Gc=fa;Hc=sa;Ic=pa;Jc=sc;Kc=uc}yc=b[tc+(Jc<<2)+2>>1]|0;e:do{if((yc&65535)>>>0<16>>>0){if(Ic>>>0>>0){xc=Fc;wc=Gc;vc=Hc;qa=Ic;while(1){if((wc|0)==0){ia=Xa;ja=_;ka=qa;la=vc;ma=0;na=xc;oa=ba;break a}Ec=wc-1|0;Dc=xc+1|0;Cc=((d[xc]|0)<>>0>>0){xc=Dc;wc=Ec;vc=Cc;qa=Bc}else{Lc=Dc;Mc=Ec;Nc=Cc;Oc=Bc;break}}}else{Lc=Fc;Mc=Gc;Nc=Hc;Oc=Ic}c[U>>2]=ea+1;b[n+112+(ea<<1)>>1]=yc;Pc=Oc-Kc|0;Qc=Nc>>>(Kc>>>0);Rc=Mc;Sc=Lc}else{if((yc<<16>>16|0)==16){qa=Kc+2|0;if(Ic>>>0>>0){vc=Fc;wc=Gc;xc=Hc;Bc=Ic;while(1){if((wc|0)==0){ia=Xa;ja=_;ka=Bc;la=xc;ma=0;na=vc;oa=ba;break a}Cc=wc-1|0;Ec=vc+1|0;Dc=((d[vc]|0)<>>0>>0){vc=Ec;wc=Cc;xc=Dc;Bc=zc}else{Tc=Ec;Uc=Cc;Vc=Dc;Wc=zc;break}}}else{Tc=Fc;Uc=Gc;Vc=Hc;Wc=Ic}Xc=Vc>>>(Kc>>>0);Yc=Wc-Kc|0;if((ea|0)==0){Ca=88;break d}Zc=b[n+112+(ea-1<<1)>>1]|0;_c=(Xc&3)+3|0;$c=Yc-2|0;ad=Xc>>>2;bd=Uc;cd=Tc}else if((yc<<16>>16|0)==17){Bc=Kc+3|0;if(Ic>>>0>>0){xc=Fc;wc=Gc;vc=Hc;qa=Ic;while(1){if((wc|0)==0){ia=Xa;ja=_;ka=qa;la=vc;ma=0;na=xc;oa=ba;break a}zc=wc-1|0;Dc=xc+1|0;Cc=((d[xc]|0)<>>0>>0){xc=Dc;wc=zc;vc=Cc;qa=Ec}else{dd=Dc;ed=zc;fd=Cc;gd=Ec;break}}}else{dd=Fc;ed=Gc;fd=Hc;gd=Ic}qa=fd>>>(Kc>>>0);Zc=0;_c=(qa&7)+3|0;$c=-3-Kc+gd|0;ad=qa>>>3;bd=ed;cd=dd}else{qa=Kc+7|0;if(Ic>>>0>>0){vc=Fc;wc=Gc;xc=Hc;Bc=Ic;while(1){if((wc|0)==0){ia=Xa;ja=_;ka=Bc;la=xc;ma=0;na=vc;oa=ba;break a}Ec=wc-1|0;Cc=vc+1|0;zc=((d[vc]|0)<>>0>>0){vc=Cc;wc=Ec;xc=zc;Bc=Dc}else{hd=Cc;id=Ec;jd=zc;kd=Dc;break}}}else{hd=Fc;id=Gc;jd=Hc;kd=Ic}Bc=jd>>>(Kc>>>0);Zc=0;_c=(Bc&127)+11|0;$c=-7-Kc+kd|0;ad=Bc>>>7;bd=id;cd=hd}if((ea+_c|0)>>>0>(ra+da|0)>>>0){Ca=97;break d}else{ld=_c;md=ea}while(1){Bc=ld-1|0;c[U>>2]=md+1;b[n+112+(md<<1)>>1]=Zc;if((Bc|0)==0){Pc=$c;Qc=ad;Rc=bd;Sc=cd;break e}ld=Bc;md=c[U>>2]|0}}}while(0);yc=c[U>>2]|0;nd=c[R>>2]|0;tc=c[S>>2]|0;if(yc>>>0<(tc+nd|0)>>>0){ha=Sc;fa=Rc;sa=Qc;pa=Pc;ea=yc;da=nd;ra=tc}else{Ca=100;break}}if((Ca|0)==88){Ca=0;c[x>>2]=49432;c[o>>2]=27;Da=Xa;Ea=_;Fa=Yc;Ga=Xc;Ha=ba;Ia=Uc;Ja=ca;Ka=Tc;break c}else if((Ca|0)==97){Ca=0;c[x>>2]=49432;c[o>>2]=27;Da=Xa;Ea=_;Fa=$c;Ga=ad;Ha=ba;Ia=bd;Ja=ca;Ka=cd;break c}else if((Ca|0)==100){Ca=0;if((c[o>>2]|0)==27){Da=Xa;Ea=_;Fa=Pc;Ga=Qc;Ha=ba;Ia=Rc;Ja=ca;Ka=Sc;break c}else{od=nd;pd=Pc;qd=Qc;rd=Rc;sd=Sc;break}}}else{od=r;pd=Ya;qd=Za;rd=_a;sd=$a}}while(0);c[W>>2]=V;c[E>>2]=V;c[F>>2]=9;r=VO(1,X,od,W,F,Y)|0;if((r|0)!=0){c[x>>2]=44896;c[o>>2]=27;Da=r;Ea=_;Fa=pd;Ga=qd;Ha=ba;Ia=rd;Ja=ca;Ka=sd;break}c[G>>2]=c[W>>2];c[H>>2]=6;r=VO(2,n+112+(c[R>>2]<<1)|0,c[S>>2]|0,W,H,Y)|0;if((r|0)==0){c[o>>2]=18;Ib=0;Jb=pd;Kb=qd;Lb=rd;Mb=sd;Ca=106;break}else{c[x>>2]=183952;c[o>>2]=27;Da=r;Ea=_;Fa=pd;Ga=qd;Ha=ba;Ia=rd;Ja=ca;Ka=sd;break}}}while(0);do{if((Ca|0)==106){Ca=0;if(Lb>>>0>5>>>0&ba>>>0>257>>>0){c[j>>2]=ca;c[i>>2]=ba;c[l>>2]=Mb;c[k>>2]=Lb;c[t>>2]=Kb;c[u>>2]=Jb;QO(f,_);Da=Ib;Ea=_;Fa=c[u>>2]|0;Ga=c[t>>2]|0;Ha=c[i>>2]|0;Ia=c[k>>2]|0;Ja=c[j>>2]|0;Ka=c[l>>2]|0;break}r=(1<>2])-1|0;ga=r&Kb;ra=c[E>>2]|0;da=a[ra+(ga<<2)+1|0]|0;ea=da&255;if(ea>>>0>Jb>>>0){pa=Mb;sa=Lb;fa=Kb;ha=Jb;while(1){if((sa|0)==0){ia=Ib;ja=_;ka=ha;la=fa;ma=0;na=pa;oa=ba;break a}tc=sa-1|0;yc=pa+1|0;uc=((d[pa]|0)<>>0>sc>>>0){pa=yc;sa=tc;fa=uc;ha=sc}else{td=yc;ud=tc;vd=uc;wd=sc;xd=xc;yd=Bc;zd=wc;break}}}else{td=Mb;ud=Lb;vd=Kb;wd=Jb;xd=da;yd=ga;zd=ea}ha=a[ra+(yd<<2)|0]|0;fa=b[ra+(yd<<2)+2>>1]|0;sa=ha&255;do{if(ha<<24>>24==0){Ad=0;Bd=xd;Cd=fa;Dd=wd;Ed=vd;Fd=ud;Gd=td}else{if((sa&240|0)!=0){Ad=ha;Bd=xd;Cd=fa;Dd=wd;Ed=vd;Fd=ud;Gd=td;break}pa=fa&65535;r=(1<>>(zd>>>0))+pa|0;Bc=a[ra+(wc<<2)+1|0]|0;if(((Bc&255)+zd|0)>>>0>wd>>>0){xc=td;sc=ud;uc=vd;tc=wd;while(1){if((sc|0)==0){ia=Ib;ja=_;ka=tc;la=uc;ma=0;na=xc;oa=ba;break a}yc=sc-1|0;vc=xc+1|0;qa=((d[xc]|0)<>>(zd>>>0))+pa|0;Ec=a[ra+(zc<<2)+1|0]|0;if(((Ec&255)+zd|0)>>>0>Dc>>>0){xc=vc;sc=yc;uc=qa;tc=Dc}else{Hd=vc;Id=yc;Jd=qa;Kd=Dc;Ld=zc;Md=Ec;break}}}else{Hd=td;Id=ud;Jd=vd;Kd=wd;Ld=wc;Md=Bc}Ad=a[ra+(Ld<<2)|0]|0;Bd=Md;Cd=b[ra+(Ld<<2)+2>>1]|0;Dd=Kd-zd|0;Ed=Jd>>>(zd>>>0);Fd=Id;Gd=Hd}}while(0);ra=Bd&255;sa=Ed>>>(ra>>>0);fa=Dd-ra|0;c[I>>2]=Cd&65535;ra=Ad&255;if(Ad<<24>>24==0){c[o>>2]=23;Da=Ib;Ea=_;Fa=fa;Ga=sa;Ha=ba;Ia=Fd;Ja=ca;Ka=Gd;break}if((ra&32|0)!=0){c[o>>2]=11;Da=Ib;Ea=_;Fa=fa;Ga=sa;Ha=ba;Ia=Fd;Ja=ca;Ka=Gd;break}if((ra&64|0)==0){ha=ra&15;c[J>>2]=ha;c[o>>2]=19;La=Ib;Ma=fa;Na=sa;Oa=Fd;Pa=Gd;Qa=ha;Ca=124;break}else{c[x>>2]=180176;c[o>>2]=27;Da=Ib;Ea=_;Fa=fa;Ga=sa;Ha=ba;Ia=Fd;Ja=ca;Ka=Gd;break}}}while(0);if((Ca|0)==124){Ca=0;if((Qa|0)==0){Nd=Ma;Od=Na;Pd=Oa;Qd=Pa}else{if(Ma>>>0>>0){sa=Pa;fa=Oa;ha=Na;ra=Ma;while(1){if((fa|0)==0){ia=La;ja=_;ka=ra;la=ha;ma=0;na=sa;oa=ba;break a}ea=fa-1|0;ga=sa+1|0;da=((d[sa]|0)<>>0>>0){sa=ga;fa=ea;ha=da;ra=tc}else{Rd=ga;Sd=ea;Td=da;Ud=tc;break}}}else{Rd=Pa;Sd=Oa;Td=Na;Ud=Ma}c[I>>2]=(c[I>>2]|0)+((1<>>(Qa>>>0);Pd=Sd;Qd=Rd}c[o>>2]=20;Nb=La;Ob=Nd;Pb=Od;Qb=Pd;Rb=Qd;Ca=130}do{if((Ca|0)==130){Ca=0;ra=(1<>2])-1|0;ha=ra&Pb;fa=c[G>>2]|0;sa=a[fa+(ha<<2)+1|0]|0;tc=sa&255;if(tc>>>0>Ob>>>0){da=Rb;ea=Qb;ga=Pb;uc=Ob;while(1){if((ea|0)==0){ia=Nb;ja=_;ka=uc;la=ga;ma=0;na=da;oa=ba;break a}sc=ea-1|0;xc=da+1|0;pa=((d[da]|0)<>>0>r>>>0){da=xc;ea=sc;ga=pa;uc=r}else{Vd=xc;Wd=sc;Xd=pa;Yd=r;Zd=zc;_d=Ec;$d=Dc;break}}}else{Vd=Rb;Wd=Qb;Xd=Pb;Yd=Ob;Zd=sa;_d=ha;$d=tc}uc=a[fa+(_d<<2)|0]|0;ga=b[fa+(_d<<2)+2>>1]|0;ea=uc&255;if((ea&240|0)==0){da=ga&65535;ra=(1<<$d+ea)-1|0;ea=((Xd&ra)>>>($d>>>0))+da|0;Dc=a[fa+(ea<<2)+1|0]|0;if(((Dc&255)+$d|0)>>>0>Yd>>>0){Ec=Vd;zc=Wd;r=Xd;pa=Yd;while(1){if((zc|0)==0){ia=Nb;ja=_;ka=pa;la=r;ma=0;na=Ec;oa=ba;break a}sc=zc-1|0;xc=Ec+1|0;qa=((d[Ec]|0)<>>($d>>>0))+da|0;Cc=a[fa+(vc<<2)+1|0]|0;if(((Cc&255)+$d|0)>>>0>yc>>>0){Ec=xc;zc=sc;r=qa;pa=yc}else{ae=xc;be=sc;ce=qa;de=yc;ee=vc;fe=Cc;break}}}else{ae=Vd;be=Wd;ce=Xd;de=Yd;ee=ea;fe=Dc}ge=a[fa+(ee<<2)|0]|0;he=fe;ie=b[fa+(ee<<2)+2>>1]|0;je=de-$d|0;ke=ce>>>($d>>>0);le=be;me=ae}else{ge=uc;he=Zd;ie=ga;je=Yd;ke=Xd;le=Wd;me=Vd}pa=he&255;r=ke>>>(pa>>>0);zc=je-pa|0;pa=ge&255;if((pa&64|0)==0){c[K>>2]=ie&65535;Ec=pa&15;c[J>>2]=Ec;c[o>>2]=21;Ra=Nb;Sa=zc;Ta=r;Ua=le;Va=me;Wa=Ec;Ca=141;break}else{c[x>>2]=175624;c[o>>2]=27;Da=Nb;Ea=_;Fa=zc;Ga=r;Ha=ba;Ia=le;Ja=ca;Ka=me;break}}}while(0);do{if((Ca|0)==141){Ca=0;if((Wa|0)==0){ne=Sa;oe=Ta;pe=Ua;qe=Va;re=c[K>>2]|0}else{if(Sa>>>0>>0){r=Va;zc=Ua;Ec=Ta;pa=Sa;while(1){if((zc|0)==0){ia=Ra;ja=_;ka=pa;la=Ec;ma=0;na=r;oa=ba;break a}da=zc-1|0;ra=r+1|0;tc=((d[r]|0)<>>0>>0){r=ra;zc=da;Ec=tc;pa=ha}else{se=ra;te=da;ue=tc;ve=ha;break}}}else{se=Va;te=Ua;ue=Ta;ve=Sa}pa=(c[K>>2]|0)+((1<>2]=pa;ne=ve-Wa|0;oe=ue>>>(Wa>>>0);pe=te;qe=se;re=pa}if(re>>>0>(_-ba+(c[L>>2]|0)|0)>>>0){c[x>>2]=172040;c[o>>2]=27;Da=Ra;Ea=_;Fa=ne;Ga=oe;Ha=ba;Ia=pe;Ja=ca;Ka=qe;break}else{c[o>>2]=22;Sb=Ra;Tb=ne;Ub=oe;Vb=pe;Wb=qe;Ca=150;break}}}while(0);do{if((Ca|0)==150){Ca=0;if((ba|0)==0){Xb=Sb;Yb=Tb;Zb=Ub;_b=Vb;$b=Wb;ac=0;Ca=173;break a}pa=_-ba|0;Ec=c[K>>2]|0;if(Ec>>>0>pa>>>0){zc=Ec-pa|0;pa=c[M>>2]|0;if(zc>>>0>pa>>>0){r=zc-pa|0;we=(c[N>>2]|0)+((c[O>>2]|0)-r)|0;xe=r}else{we=(c[N>>2]|0)+(pa-zc)|0;xe=zc}zc=c[I>>2]|0;ye=we;ze=xe>>>0>zc>>>0?zc:xe;Ae=zc}else{zc=c[I>>2]|0;ye=ca+(-Ec|0)|0;ze=zc;Ae=zc}zc=ze>>>0>ba>>>0?ba:ze;c[I>>2]=Ae-zc;Ec=~ba;pa=~ze;r=Ec>>>0>pa>>>0?Ec:pa;pa=ye;Ec=zc;ga=ca;while(1){a[ga]=a[pa]|0;uc=Ec-1|0;if((uc|0)==0){break}else{pa=pa+1|0;Ec=uc;ga=ga+1|0}}ga=ba-zc|0;Ec=ca+~r|0;if((c[I>>2]|0)!=0){Da=Sb;Ea=_;Fa=Tb;Ga=Ub;Ha=ga;Ia=Vb;Ja=Ec;Ka=Wb;break}c[o>>2]=18;Da=Sb;Ea=_;Fa=Tb;Ga=Ub;Ha=ga;Ia=Vb;Ja=Ec;Ka=Wb}}while(0);Z=Da;_=Ea;$=Fa;aa=Ga;ba=Ha;m=Ia;ca=Ja;p=Ka;q=c[o>>2]|0}if((Ca|0)==32){c[j>>2]=ca;c[i>>2]=ba;c[l>>2]=hb;c[k>>2]=gb;c[t>>2]=fb;c[u>>2]=eb;h=2;return h|0}else if((Ca|0)==172){c[o>>2]=26;ia=1;ja=bc;ka=cc;la=dc;ma=ec;na=fc;oa=ba}else if((Ca|0)==173){ia=Xb;ja=_;ka=Yb;la=Zb;ma=_b;na=$b;oa=ac}else if((Ca|0)==182){h=-4;return h|0}else if((Ca|0)==183){return h|0}c[j>>2]=ca;c[i>>2]=oa;c[l>>2]=na;c[k>>2]=ma;c[t>>2]=la;c[u>>2]=ka;do{if((c[O>>2]|0)==0){if(!((c[o>>2]|0)>>>0<24>>>0)){break}if((ja|0)!=(c[i>>2]|0)){Ca=177}}else{Ca=177}}while(0);do{if((Ca|0)==177){if((TO(f,ja)|0)==0){break}c[o>>2]=28;h=-4;return h|0}}while(0);Ca=c[k>>2]|0;k=c[i>>2]|0;i=ja-k|0;O=f+8|0;c[O>>2]=s-Ca+(c[O>>2]|0);c[P>>2]=(c[P>>2]|0)+i;c[Q>>2]=(c[Q>>2]|0)+i;Q=(ja|0)==(k|0);if(!((c[v>>2]|0)==0|Q)){v=OO(c[z>>2]|0,(c[j>>2]|0)+(-i|0)|0,i)|0;c[z>>2]=v;c[A>>2]=v}c[f+44>>2]=((c[D>>2]|0)!=0?64:0)+(c[u>>2]|0)+((c[o>>2]|0)==11?128:0);h=((s|0)==(Ca|0)&Q|(g|0)==4)&(ia|0)==0?-5:ia;return h|0}function TO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=c[a+28>>2]|0;e=d+52|0;f=c[e>>2]|0;do{if((f|0)==0){g=rk[c[a+32>>2]&63](c[a+40>>2]|0,1<>2],1)|0;c[e>>2]=g;if((g|0)==0){h=1}else{i=g;break}return h|0}else{i=f}}while(0);f=d+40|0;g=c[f>>2]|0;if((g|0)==0){j=1<>2];c[f>>2]=j;c[d+48>>2]=0;c[d+44>>2]=0;k=j}else{k=g}g=b-(c[a+16>>2]|0)|0;if(!(g>>>0>>0)){m$(i|0,(c[a+12>>2]|0)+(-k|0)|0,k)|0;c[d+48>>2]=0;c[d+44>>2]=c[f>>2];h=0;return h|0}b=d+48|0;j=c[b>>2]|0;l=k-j|0;k=l>>>0>g>>>0?g:l;l=a+12|0;m$(i+j|0,(c[l>>2]|0)+(-g|0)|0,k)|0;j=g-k|0;if((g|0)!=(k|0)){m$(c[e>>2]|0,(c[l>>2]|0)+(-j|0)|0,j)|0;c[b>>2]=j;c[d+44>>2]=c[f>>2];h=0;return h|0}j=(c[b>>2]|0)+g|0;l=c[f>>2]|0;c[b>>2]=(j|0)==(l|0)?0:j;j=d+44|0;d=c[j>>2]|0;if(!(d>>>0>>0)){h=0;return h|0}c[j>>2]=d+g;h=0;return h|0}function UO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((a|0)==0){b=-2;return b|0}d=a+28|0;e=c[d>>2]|0;if((e|0)==0){b=-2;return b|0}f=a+36|0;g=c[f>>2]|0;if((g|0)==0){b=-2;return b|0}h=c[e+52>>2]|0;i=a+40|0;if((h|0)==0){j=g;k=e}else{hk[g&255](c[i>>2]|0,h);j=c[f>>2]|0;k=c[d>>2]|0}hk[j&255](c[i>>2]|0,k);c[d>>2]=0;b=0;return b|0}function VO(d,f,g,h,j,k){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,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;l=i;i=i+32|0;m=l|0;n=i;i=i+32|0;n$(m|0,0,32)|0;o=(g|0)==0;if(!o){p=0;do{q=m+(e[f+(p<<1)>>1]<<1)|0;b[q>>1]=(b[q>>1]|0)+1;p=p+1|0;}while(p>>>0>>0)}p=c[j>>2]|0;q=15;while(1){r=q-1|0;if((b[m+(q<<1)>>1]|0)!=0){break}if((r|0)==0){s=7;break}else{q=r}}if((s|0)==7){r=c[h>>2]|0;c[h>>2]=r+4;a[r|0]=64;a[r+1|0]=1;b[r+2>>1]=0;r=c[h>>2]|0;c[h>>2]=r+4;a[r|0]=64;a[r+1|0]=1;b[r+2>>1]=0;c[j>>2]=1;t=0;i=l;return t|0}r=p>>>0>q>>>0?q:p;p=1;while(1){u=p+1|0;if((b[m+(p<<1)>>1]|0)!=0){v=p;break}if(u>>>0<16>>>0){p=u}else{v=u;break}}p=r>>>0>>0?v:r;r=1;u=2;while(1){w=u-(e[m+(r<<1)>>1]|0)|0;x=r+1|0;if((w|0)<0){t=-1;s=55;break}if(!(x>>>0<16>>>0)){break}r=x;u=w<<1}if((s|0)==55){i=l;return t|0}do{if((w|0)>0){if((d|0)!=0&(q|0)==1){break}else{t=-1}i=l;return t|0}}while(0);b[n+2>>1]=0;w=b[m+2>>1]|0;b[n+4>>1]=w;u=(b[m+4>>1]|0)+w&65535;b[n+6>>1]=u;w=(b[m+6>>1]|0)+u&65535;b[n+8>>1]=w;u=(b[m+8>>1]|0)+w&65535;b[n+10>>1]=u;w=(b[m+10>>1]|0)+u&65535;b[n+12>>1]=w;u=(b[m+12>>1]|0)+w&65535;b[n+14>>1]=u;w=(b[m+14>>1]|0)+u&65535;b[n+16>>1]=w;u=(b[m+16>>1]|0)+w&65535;b[n+18>>1]=u;w=(b[m+18>>1]|0)+u&65535;b[n+20>>1]=w;u=(b[m+20>>1]|0)+w&65535;b[n+22>>1]=u;w=(b[m+22>>1]|0)+u&65535;b[n+24>>1]=w;u=(b[m+24>>1]|0)+w&65535;b[n+26>>1]=u;w=(b[m+26>>1]|0)+u&65535;b[n+28>>1]=w;b[n+30>>1]=(b[m+28>>1]|0)+w;if(!o){o=0;do{w=b[f+(o<<1)>>1]|0;if(!(w<<16>>16==0)){u=n+((w&65535)<<1)|0;w=b[u>>1]|0;b[u>>1]=w+1;b[k+((w&65535)<<1)>>1]=o}o=o+1|0;}while(o>>>0>>0)}do{if((d|0)==0){y=k;z=k;A=19;B=1<>>0>1455>>>0){t=1}else{y=19710;z=19646;A=256;B=g;C=1;break}i=l;return t|0}else{y=20352;z=20288;A=-1;B=1<>2]|0;n=-1;w=0;u=B;B=0;r=p;x=0;D=v;a:while(1){v=1<>1]|0;K=J&65535;do{if((K|0)<(A|0)){L=0;M=J}else{if((K|0)<=(A|0)){L=96;M=0;break}L=b[z+(K<<1)>>1]&255;M=b[y+(K<<1)>>1]|0}}while(0);K=1<>>(B>>>0);N=v;while(1){O=N-K|0;P=O+J|0;a[o+(P<<2)|0]=L;a[o+(P<<2)+1|0]=I;b[o+(P<<2)+2>>1]=M;if((N|0)==(K|0)){break}else{N=O}}N=1<>>1}}if((N|0)==0){Q=0}else{Q=(N-1&E)+N|0}R=F+1|0;K=m+(G<<1)|0;J=(b[K>>1]|0)-1&65535;b[K>>1]=J;if(J<<16>>16==0){if((G|0)==(q|0)){break a}S=e[f+(e[k+(R<<1)>>1]<<1)>>1]|0}else{S=G}if(!(S>>>0>p>>>0)){E=Q;F=R;G=S;continue}T=Q&d;if((T|0)==(n|0)){E=Q;F=R;G=S}else{break}}G=(B|0)==0?p:B;F=o+(v<<2)|0;E=S-G|0;b:do{if(S>>>0>>0){J=E;K=1<>1]|0)|0;if((O|0)<1){U=J;break b}P=J+1|0;V=P+G|0;if(V>>>0>>0){J=P;K=O<<1;H=V}else{U=P;break}}}else{U=E}}while(0);E=(1<>>0>1455>>>0){t=1;s=55;break}a[(c[h>>2]|0)+(T<<2)|0]=U;a[(c[h>>2]|0)+(T<<2)+1|0]=g;v=c[h>>2]|0;b[v+(T<<2)+2>>1]=(F-v|0)>>>2;o=F;n=T;w=Q;u=E;B=G;r=U;x=R;D=S}if((s|0)==55){i=l;return t|0}c:do{if((Q|0)!=0){s=q;S=B;D=Q;R=I;x=o;while(1){do{if((S|0)==0){W=x;X=R;Y=0;Z=s}else{if((D&d|0)==(n|0)){W=x;X=R;Y=S;Z=s;break}W=c[h>>2]|0;X=g;Y=0;Z=p}}while(0);U=D>>>(Y>>>0);a[W+(U<<2)|0]=64;a[W+(U<<2)+1|0]=X;b[W+(U<<2)+2>>1]=0;U=1<>>1}}if((U|0)==0){break c}r=(U-1&D)+U|0;if((r|0)==0){break}else{s=Z;S=Y;D=r;R=X;x=W}}}}while(0);c[h>>2]=(c[h>>2]|0)+(u<<2);c[j>>2]=p;t=0;i=l;return t|0}function WO(a,b,c){a=a|0;b=b|0;c=c|0;return V_(da(c,b)|0)|0}function XO(a,b){a=a|0;b=b|0;W_(b);return}function YO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0;d=i;i=i+16|0;e=d|0;if((c[253649]&1|0)!=0){f=0;i=d;return f|0}h=a;j=(da(56+((c[a+76>>2]|0)*48|0)|0,c[b+80>>2]|0)|0)+(c[a+80>>2]|0)|0;g[e>>2]=+g[b+68>>2]+ +g[h+(j+24)>>2];g[e+4>>2]=+g[b+72>>2]+ +g[h+(j+28)>>2];g[e+8>>2]=+g[b+76>>2]+ +g[h+(j+32)>>2];b=c[253203]|0;a=c[b+224>>2]|0;if((a|0)<=1){f=0;i=d;return f|0}k=+g[h+(j+36)>>2];j=c[b+228>>2]|0;b=1;while(1){h=0;while(1){l=+g[e+(h<<2)>>2];if(!(l-k<+g[j+(b*72|0)+16+(h<<2)>>2])){m=h;break}n=h+1|0;if(!(l+k>+g[j+(b*72|0)+4+(h<<2)>>2])){m=h;break}if((n|0)<3){h=n}else{m=n;break}}h=b+1|0;if((m|0)==3){f=b;o=10;break}if((h|0)<(a|0)){b=h}else{f=0;o=10;break}}if((o|0)==10){i=d;return f|0}return 0}function ZO(a){a=a|0;var b=0,d=0,e=0,f=0,h=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.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;b=i;i=i+24|0;d=b|0;e=c[253412]|0;f=c[e+84>>2]|0;h=f;j=a+4|0;k=c[j>>2]|0;if((k&2|0)==0){l=0}else{l=(c[253510]|0)==0}if((k&512|0)==0){m=c[a+80>>2]|0;n=f+72|0}else{k=f+72|0;o=a+80|0;p=(c[o>>2]|0)%(c[k>>2]|0)|0;c[o>>2]=p;o=a+96|0;c[o>>2]=(c[o>>2]|0)%(c[k>>2]|0)|0;m=p;n=k}k=a+80|0;p=c[n>>2]|0;n=c[a+96>>2]|0;if((m|0)>=(p|0)|(m|0)<0){q=8}else{if((n|0)>=(p|0)|(n|0)<0){q=8}else{r=m;s=n}}if((q|0)==8){Tk[c[4886344]&255](1,114808,(p=i,i=i+24|0,c[p>>2]=n,c[p+8>>2]=m,c[p+16>>2]=e,p)|0);i=p;c[k>>2]=0;c[a+96>>2]=0;r=0;s=0}k=56+((c[f+76>>2]|0)*48|0)|0;p=c[f+80>>2]|0;e=(da(k,r)|0)+p|0;m=f+e|0;n=(da(k,s)|0)+p|0;p=f+n|0;do{if((c[a+64>>2]|0)==0){k=mS(f+(e+24)|0,+g[f+(e+36)>>2])|0;if((r|0)==(s|0)){if((k|0)==2){c[253820]=(c[253820]|0)+1;i=b;return}else if((k|0)==0){c[253818]=(c[253818]|0)+1;break}else if((k|0)==1){c[253819]=(c[253819]|0)+1;q=22;break}else{q=22;break}}if((e|0)==(n|0)){t=k}else{t=mS(f+(n+24)|0,+g[f+(n+36)>>2])|0}if((k|0)!=(t|0)){q=22;break}if((k|0)==2){c[253820]=(c[253820]|0)+1;i=b;return}else if((k|0)==0){c[253818]=(c[253818]|0)+1;break}else{c[253819]=(c[253819]|0)+1;q=22;break}}else{q=22}}while(0);do{if((q|0)==22){u=+g[p>>2];v=+g[m>>2];g[d>>2]=u>2];u=+g[f+(e+12)>>2];g[d+12>>2]=v>u?v:u;u=+g[f+(n+4)>>2];v=+g[f+(e+4)>>2];g[d+4>>2]=u>2];u=+g[f+(e+16)>>2];g[d+16>>2]=v>u?v:u;u=+g[f+(n+8)>>2];v=+g[f+(e+8)>>2];g[d+8>>2]=u>2];u=+g[f+(e+20)>>2];g[d+20>>2]=v>u?v:u;t=kS(d|0)|0;if((t|0)==0){c[253821]=(c[253821]|0)+1;break}else if((t|0)==1){c[253822]=(c[253822]|0)+1;break}else{c[253823]=(c[253823]|0)+1;i=b;return}}}while(0);d=NS(a)|0;e=c[f+84>>2]|0;if((e|0)<1){i=b;return}n=(e|0)>(d|0)?d:e-1|0;e=f+(c[f+88>>2]|0)|0;if((n|0)>0){f=0;d=e;while(1){m=d+(c[d+8>>2]|0)|0;p=f+1|0;if((p|0)<(n|0)){f=p;d=m}else{w=m;break}}}else{w=e}if(l){if((c[(c[4917346]|0)+32>>2]|0)>1){q=31}}else{q=31}if((q|0)==31){dS(1014516,a)}q=YO(h,a)|0;h=hS(a+68|0)|0;e=w+(c[w+4>>2]|0)|0;d=w;if((c[d>>2]|0)<=0){i=b;return}w=a+112|0;f=a+108|0;a=(q|0)==0;if(l){l=1;n=e;while(1){m=c[w>>2]|0;a:do{if((m|0)==0){p=c[f>>2]|0;if(!((p|0)>0&(p|0)<(c[297930]|0))){t=c[n+132>>2]|0;if((t|0)>0){x=UT(t)|0;break}else{x=c[253342]|0;break}}t=rR(p)|0;p=c[253342]|0;s=c[t+64>>2]|0;if((s|0)<=0){x=p;break}r=n+4|0;k=0;while(1){y=c[t+68+(k<<2)>>2]|0;o=k+1|0;if((k$(y|0,r)|0)==0){break}if((o|0)<(s|0)){k=o}else{x=p;break a}}x=c[y+64>>2]|0}else{x=UT(m)|0}}while(0);do{if((c[(c[4917346]|0)+32>>2]|0)==3&a){if((c[j>>2]&256|0)==0){break}if(!(+g[x+76>>2]==3.0)){break}AS(n,c[253344]|0,0,0,0,0)}}while(0);if((l|0)>=(c[d>>2]|0)){break}l=l+1|0;n=n+(c[n+164>>2]|0)|0}i=b;return}else{z=1;A=e}while(1){e=c[w>>2]|0;b:do{if((e|0)==0){n=c[f>>2]|0;if(!((n|0)>0&(n|0)<(c[297930]|0))){l=c[A+132>>2]|0;if((l|0)>0){B=UT(l)|0;break}else{B=c[253342]|0;break}}l=rR(n)|0;n=c[253342]|0;x=c[l+64>>2]|0;if((x|0)<=0){B=n;break}y=A+4|0;m=0;while(1){C=c[l+68+(m<<2)>>2]|0;p=m+1|0;if((k$(C|0,y)|0)==0){break}if((p|0)<(x|0)){m=p}else{B=n;break b}}B=c[C+64>>2]|0}else{B=UT(e)|0}}while(0);do{if((c[(c[4917346]|0)+32>>2]|0)==2&a){if((c[j>>2]&72|0)!=0){break}if(!(+g[B+76>>2]==3.0)){break}AS(A,c[253343]|0,0,0,0,0)}}while(0);do{if((c[(c[4917346]|0)+32>>2]|0)==3&a){if((c[j>>2]&256|0)==0){break}if(!(+g[B+76>>2]==3.0)){break}AS(A,c[253344]|0,0,0,0,0)}}while(0);AS(A,B,q,0,0,h);if((z|0)>=(c[d>>2]|0)){break}z=z+1|0;A=A+(c[A+164>>2]|0)|0}i=b;return}function _O(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.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.0,E=0.0,F=0.0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0;b=i;i=i+6160|0;d=b|0;e=b+6144|0;f=c[7094307]|0;h=c[f+96>>2]|0;j=c[f+80>>2]|0;if((h|0)==(j|0)){k=1.0;l=0.0}else{m=+g[f+100>>2];k=1.0-m;l=m}f=a;n=c[a+136>>2]|0;o=f+(n+76)|0;p=56+((c[o>>2]|0)*48|0)|0;q=(c[f+(n+80)>>2]|0)+n|0;n=(da(j,p)|0)+q|0;j=da(h,p)|0;p=a+140|0;h=a+148|0;pU(c[p>>2]|0,c[h>>2]|0);r=f+(c[a+152>>2]|0)|0;s=c[h>>2]|0;h=s*3|0;t=c[340901]|0;u=c[340902]|0;if((s|0)>0){s=0;do{c[1219560+(s+t<<2)>>2]=(c[r+(s<<2)>>2]|0)+u;s=s+1|0;}while((s|0)<(h|0));v=c[340901]|0}else{v=t}c[340901]=v+h;do{if(l!=0.0){h=d|0;v=c[o>>2]|0;if((v|0)<=0){w=h;break}t=f+(n+56)|0;s=f+(q+56+j)|0;r=v*12|0;v=0;while(1){g[d+(v<<2)>>2]=k*+g[t+(v<<2)>>2]+l*+g[s+(v<<2)>>2];x=v+1|0;if((x|0)<(r|0)){v=x}else{w=h;break}}}else{w=f+(n+56)|0}}while(0);n=c[p>>2]|0;if((n|0)<=0){y=n;z=c[340902]|0;A=z+y|0;c[340902]=A;B=6144;C=0;i=b;return}d=e+8|0;j=e+4|0;q=e|0;e=f+(c[a+144>>2]|0)|0;a=0;while(1){g[d>>2]=0.0;g[j>>2]=0.0;g[q>>2]=0.0;f=e+20|0;o=c[f>>2]|0;if((o|0)>0){h=e|0;v=e+4|0;r=e+8|0;s=0;l=0.0;k=0.0;m=0.0;t=e+24|0;D=0.0;E=0.0;F=0.0;while(1){x=c[t>>2]|0;G=t+4|0;H=+g[G>>2];I=+g[w+(x*48|0)>>2];J=+g[t+8>>2];K=+g[w+(x*48|0)+4>>2];L=+g[t+12>>2];M=+g[w+(x*48|0)+8>>2];N=+g[t+16>>2];O=m+H*(+g[w+(x*48|0)+12>>2]+(I*J+K*L+M*N));P=+g[w+(x*48|0)+16>>2];Q=+g[w+(x*48|0)+20>>2];R=+g[w+(x*48|0)+24>>2];S=k+H*(+g[w+(x*48|0)+28>>2]+(J*P+L*Q+N*R));T=+g[w+(x*48|0)+32>>2];U=+g[w+(x*48|0)+36>>2];V=+g[w+(x*48|0)+40>>2];W=l+H*(+g[w+(x*48|0)+44>>2]+(J*T+L*U+N*V));N=D+H*(I*+g[h>>2]+K*+g[v>>2]+M*+g[r>>2]);g[q>>2]=N;M=E+ +g[G>>2]*(P*+g[h>>2]+Q*+g[v>>2]+R*+g[r>>2]);g[j>>2]=M;R=F+ +g[G>>2]*(T*+g[h>>2]+U*+g[v>>2]+V*+g[r>>2]);g[d>>2]=R;G=s+1|0;if((G|0)<(o|0)){s=G;l=W;k=S;m=O;t=t+20|0;D=N;E=M;F=R}else{X=W;Y=S;Z=O;break}}}else{X=0.0;Y=0.0;Z=0.0}t=a+u|0;g[1243560+(t<<4)>>2]=Z;g[1243564+(t<<4)>>2]=Y;g[1243568+(t<<4)>>2]=X;c[1259560+(t<<2)>>2]=JU(q)|0;g[1267560+(t<<4)>>2]=+g[e+12>>2];g[1267564+(t<<4)>>2]=+g[e+16>>2];t=a+1|0;if((t|0)<(n|0)){e=e+24+((c[f>>2]|0)*20|0)|0;a=t}else{break}}y=c[p>>2]|0;z=c[340902]|0;A=z+y|0;c[340902]=A;B=6144;C=0;i=b;return}function $O(a,b){a=a|0;b=b|0;g[a+12>>2]=+((e[b>>1]|0)-32768|0)*.015625;g[a+28>>2]=+((e[b+2>>1]|0)-32768|0)*.015625;g[a+44>>2]=+((e[b+4>>1]|0)-32768|0)*.015625;g[a>>2]=+((e[b+6>>1]|0)-32768|0)*3051944077014923.0e-20;g[a+4>>2]=+((e[b+8>>1]|0)-32768|0)*3051944077014923.0e-20;g[a+8>>2]=+((e[b+10>>1]|0)-32768|0)*3051944077014923.0e-20;g[a+16>>2]=+((e[b+12>>1]|0)-32768|0)*3051944077014923.0e-20;g[a+20>>2]=+((e[b+14>>1]|0)-32768|0)*3051944077014923.0e-20;g[a+24>>2]=+((e[b+16>>1]|0)-32768|0)*3051944077014923.0e-20;g[a+32>>2]=+((e[b+18>>1]|0)-32768|0)*3051944077014923.0e-20;g[a+36>>2]=+((e[b+20>>1]|0)-32768|0)*3051944077014923.0e-20;g[a+40>>2]=+((e[b+22>>1]|0)-32768|0)*3051944077014923.0e-20;return}function aP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=(a|0)!=0;if(d){e=a}else{Tk[c[4886344]&255](2,114712,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;e=c[253205]|0}f=c[253239]|0;g=c[((c[(c[4917414]|0)+32>>2]|0)!=0&(f|0)!=0?f:e)+80>>2]|0;e=20480416+(c[5120111]<<2)|0;if((c[e>>2]|0)==(g|0)){i=b;return}do{if(d){c[a+84>>2]=c[253192];c[20480416+(c[5120111]<<2)>>2]=g;if((c[a+100>>2]&4|0)==0){break}Mf(34067,g|0);i=b;return}else{c[e>>2]=g}}while(0);Mf(3553,g|0);i=b;return}function bP(a){a=a|0;var b=0,d=0;b=i;if((c[5120111]|0)==(a|0)){i=b;return}if(!(a>>>0<32>>>0)){Tk[c[4886345]&255](1,168560,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d}vk[c[4920100]&511](a+33984|0);c[5120111]=a;i=b;return}function cP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;e=c[5120111]|0;f=(a|0)!=0;if(f){g=c[a+80>>2]|0}else{g=0}h=20480416+(b<<2)|0;if((c[h>>2]|0)==(g|0)){i=d;return}do{if((e|0)!=(b|0)){if(b>>>0<32>>>0){vk[c[4920100]&511](b+33984|0);c[5120111]=b;break}else{Tk[c[4886345]&255](1,168560,(j=i,i=i+8|0,c[j>>2]=b,j)|0);i=j}}}while(0);do{if(f){c[a+84>>2]=c[253192];c[h>>2]=g;if((c[a+100>>2]&4|0)==0){k=12;break}Mf(34067,g|0)}else{c[h>>2]=g;k=12}}while(0);if((k|0)==12){Mf(3553,g|0)}if((c[5120111]|0)==(e|0)){i=d;return}if(!(e>>>0<32>>>0)){Tk[c[4886345]&255](1,168560,(j=i,i=i+8|0,c[j>>2]=e,j)|0);i=j}vk[c[4920100]&511](e+33984|0);c[5120111]=e;i=d;return}function dP(a){a=a|0;var b=0,d=0;if((c[5120115]|0)==(a|0)){return}c[5120115]=a;if((a|0)==2){kg(2884);return}Xc(2884);b=(a|0)==0^(c[7094165]|0)!=0;a=c[7094307]|0;if((a|0)==0){d=b}else{d=b^(c[a+152>>2]|0)!=0}nf((d?1028:1029)|0);return}function eP(a){a=a|0;var b=0,d=0;b=i;d=20480452+(c[5120111]<<2)|0;if((c[d>>2]|0)==(a|0)){i=b;return}c[d>>2]=a;if((a|0)==8448){he(8960,8704,+8448.0);i=b;return}else if((a|0)==7681){he(8960,8704,+7681.0);i=b;return}else if((a|0)==8449){he(8960,8704,+8449.0);i=b;return}else if((a|0)==260){he(8960,8704,+260.0);i=b;return}else{Tk[c[4886345]&255](1,143072,(b=i,i=i+8|0,c[b>>2]=a,b)|0);i=b}}function fP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=c[5120116]|0;e=d^a;if((d|0)==(a|0)){i=b;return}do{if((e&393216|0)!=0){if((a&131072|0)!=0){ni(514);break}if((a&262144|0)==0){ni(515);break}else{ni(516);break}}}while(0);do{if((e&255|0)!=0){if((a&255|0)==0){kg(3042);break}switch(a&15|0){case 2:{f=1;break};case 3:{f=774;break};case 4:{f=775;break};case 5:{f=770;break};case 6:{f=771;break};case 7:{f=772;break};case 8:{f=773;break};case 9:{f=776;break};case 1:{f=0;break};default:{Tk[c[4886345]&255](1,127712,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}}switch(a&240|0){case 32:{h=1;break};case 48:{h=768;break};case 64:{h=769;break};case 80:{h=770;break};case 96:{h=771;break};case 112:{h=772;break};case 128:{h=773;break};case 16:{h=0;break};default:{Tk[c[4886345]&255](1,117192,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g}}Xc(3042);Dh(f|0,h|0)}}while(0);do{if((e&256|0)!=0){if((a&256|0)==0){Rj(0);break}else{Rj(1);break}}}while(0);do{if((e&4096|0)!=0){if((a&4096|0)==0){break}else{break}}}while(0);do{if((e&65536|0)!=0){if((a&65536|0)==0){Xc(2929);break}else{kg(2929);break}}}while(0);c[5120116]=a;i=b;return}function gP(a){a=a|0;bQ(a,20480572);cQ(20480572,20480508,20480636);return}function hP(a){a=a|0;bQ(a,20480508);cQ(20480572,20480508,20480636);return}function iP(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0.0;a=c[(c[4919822]|0)+32>>2]|0;if((a|0)!=1|(c[5120112]|0)!=0){b=a}else{jf();c[5120112]=1;b=c[(c[4919822]|0)+32>>2]|0}if((b|0)==0){c[5120112]=1}c[7094309]=0;a:do{if((c[5120183]|0)!=0){b=c[7094178]|0;if((b|0)!=0){rQ(b);b=c[253341]|0;if(!((b|0)!=0&(c[7094178]|0)==(b|0))){break}fk[c[4920046]&127](36160,36064,(c[7094179]|0)+34069|0,c[(c[(c[253356]|0)+(c[7094180]<<2)>>2]|0)+80>>2]|0,0);break}b=c[253309]|0;do{if((b|0)!=0){if((c[7094369]|0)!=0){if((c[7093914]&1|0)!=0){break}}rQ(b);break a}}while(0);rQ(0)}}while(0);bQ(28376732,20480572);cQ(20480572,20480508,20480636);pf(c[7094174]|0,c[7094175]|0,c[7094176]|0,c[7094177]|0);Mh(c[7094174]|0,c[7094175]|0,c[7094176]|0,c[7094177]|0);fP(256);if((c[(c[4917424]|0)+32>>2]|0)==0){if((c[(c[4917346]|0)+32>>2]|0)==2){d=16}else{e=256}}else{d=16}if((d|0)==16){e=1280}do{if((c[(c[4919824]|0)+32>>2]|0)==0){f=e}else{if((c[7093914]&1|0)!=0){f=e;break}Th(+0.0,+0.0,+0.0,+1.0);f=e|16384}}while(0);if((c[7094166]&2|0)==0){g=f}else{Th(+1.0,+1.0,+1.0,+1.0);g=f|16384}f=c[253341]|0;if((f|0)!=0&(c[7094178]|0)==(f|0)){Th(+0.0,+0.0,+0.0,+1.0);h=g|16384}else{h=g}sc(h|0);if((c[7093914]&4|0)!=0){i=+(c[7093913]&255|0)/255.0;Th(+i,+i,+i,+1.0);sc(16384);c[7094306]=1;return}c[7094306]=0;c[5120115]=-1;c[7094308]=0;if((c[7094164]|0)==0){return}bQ(9264,20480508);cQ(20480572,20480508,20480636);return}function jP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.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,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,_=0,$=0,aa=0.0,ba=0,ca=0,da=0;d=i;i=i+704|0;e=d|0;f=d+8|0;h=d+16|0;j=d+24|0;k=d+32|0;l=d+40|0;m=+g[7093924];n=c[5120124]|0;c[7094307]=1013432;c[7094280]=(c[7094280]|0)+b;do{if((b|0)>0){o=l;p=l+464|0;q=0;r=0;s=-1;t=0;u=0;v=0;w=a;x=-1;y=-1;z=-1;A=0;while(1){B=c[w>>2]|0;C=w+4|0;a:do{if((B|0)==(x|0)){if((c[C>>2]|0)!=(s|0)){D=10;break}do{if((c[7094370]|0)!=0){E=c[e>>2]|0;if((E|0)==0){break}if(+g[E+76>>2]!=3.0){F=A;G=z;H=y;I=x;J=u;K=t;L=s;M=r;N=q;break a}}}while(0);E=c[w+8>>2]|0;vk[c[9328+(c[E>>2]<<2)>>2]&511](E);F=A;G=z;H=y;I=x;J=u;K=t;L=s;M=r;N=q}else{D=10}}while(0);do{if((D|0)==10){D=0;BS(B,h,e,f,j,k);E=c[C>>2]|0;O=c[e>>2]|0;b:do{if((O|0)==0){P=A;Q=z;R=s;S=r;T=q;U=0}else{do{if((O|0)==(A|0)){if((c[f>>2]|0)!=(z|0)){break}if((c[j>>2]|0)!=(r|0)){break}if(!((c[k>>2]|0)==(q|0)&(E|0)==(s|0))){break}if((c[h>>2]|0)==(y|0)){P=A;Q=z;R=s;S=r;T=q;U=A;break b}if((c[A+96>>2]|0)!=0){P=A;Q=z;R=s;S=r;T=q;U=A;break b}}}while(0);if((A|0)==0){V=O}else{zT();V=c[e>>2]|0}wT(V,c[f>>2]|0,E);c[7094285]=(c[7094285]|0)+1;W=c[e>>2]|0;P=W;Q=c[f>>2]|0;R=E;S=c[j>>2]|0;T=c[k>>2]|0;U=W}}while(0);if(!((c[7094370]|0)==0|(U|0)==0)){if(+g[U+76>>2]!=3.0){F=P;G=Q;H=y;I=B;J=u;K=t;L=R;M=S;N=T;break}}E=c[h>>2]|0;if((E|0)==(y|0)){X=y;Y=u;Z=t}else{do{if((E|0)==1023){c[7094307]=1013432;g[7093924]=m;m$(28376932,28376456,188)|0;g[340895]=m- +g[(c[340894]|0)+412>>2];bS(c[7093992]|0,c[7093993]|0,28376932);_=0;$=0}else{O=c[7093991]|0;W=O+(E*208|0)|0;c[7094307]=W;aa=m- +g[O+(E*208|0)+128>>2];g[7093924]=aa;g[340895]=aa- +g[(c[340894]|0)+412>>2];rS(W,28376268,28376932);W=c[7094307]|0;if((c[W+144>>2]|0)==0){ba=W}else{bS(c[7093992]|0,c[7093993]|0,28376932);ba=c[7094307]|0}W=c[ba+4>>2]|0;if((W&8|0)==0){_=0;$=0;break}_=W>>>4&1;$=1}}while(0);bQ(28376992,20480508);cQ(20480572,20480508,20480636);do{if((t|0)==($|0)&(u|0)==(_|0)){ca=u;da=t}else{if(($|0)==0){if((u|0)==0&(c[7094232]|0)!=0){bQ(28376732,20480572);cQ(20480572,20480508,20480636)}md(+0.0,+1.0);ca=_;da=0;break}do{if((c[7094232]|0)==0){D=36}else{if((_|0)==0){m$(o|0,28376268,664)|0;tS(l,+g[(c[4917290]|0)+28>>2],0.0,0);bQ(p,20480572);cQ(20480572,20480508,20480636);D=36;break}if((t|0)==0){break}bQ(28376732,20480572);cQ(20480572,20480508,20480636);D=36}}while(0);if((D|0)==36){D=0;if((t|0)!=0){ca=_;da=$;break}}md(+0.0,+.30000001192092896);ca=_;da=$}}while(0);X=c[h>>2]|0;Y=ca;Z=da}E=c[w+8>>2]|0;vk[c[9328+(c[E>>2]<<2)>>2]&511](E);F=P;G=Q;H=X;I=B;J=Y;K=Z;L=R;M=S;N=T}}while(0);B=v+1|0;if((B|0)<(b|0)){q=N;r=M;s=L;t=K;u=J;v=B;w=w+12|0;x=I;y=H;z=G;A=F}else{break}}g[7093924]=m;if((F|0)==0){break}zT()}else{g[7093924]=m}}while(0);if((c[5120183]|0)==0){bQ(28376516,20480508);cQ(20480572,20480508,20480636);md(+0.0,+1.0);i=d;return}rQ(n);bQ(28376516,20480508);cQ(20480572,20480508,20480636);md(+0.0,+1.0);i=d;return}function kP(){var a=0,b=0,d=0,e=0,f=0,h=0,j=0,k=0;a=i;i=i+64|0;b=a|0;do{if((c[7094309]|0)==0){d=c[5120124]|0}else{e=c[5120124]|0;if((c[7094364]|0)!=(e|0)){d=e;break}f=64;h=0;i=a;return}}while(0);c[7094309]=1;c[7094364]=d;if((d|0)==0){j=20492108;k=20492104}else{j=d+232|0;k=d+228|0}d=c[j>>2]|0;j=c[k>>2]|0;pf(0,0,j|0,d|0);Mh(0,0,j|0,d|0);k=b|0;gQ(0.0,+(j|0),+(d|0),0.0,0.0,1.0,k);bQ(k,20480572);cQ(20480572,20480508,20480636);aQ(k);bQ(k,20480508);cQ(20480572,20480508,20480636);fP(65637);kg(2884);kg(12288);k=Ok[c[4886346]&63]()|0;c[7093913]=k;g[7093924]=+(k|0)*.0010000000474974513;g[7094061]=1.0;f=64;h=0;i=a;return}function lP(a,b,d,e,f,h,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0;m=i;i=i+96|0;n=m|0;o=m+64|0;if((c[253180]|0)==0){p=64;q=0;i=m;return}MP();if((c[340901]|0)!=0){zT()}jf();if((c[(c[4917322]|0)+32>>2]|0)==0){r=0}else{r=Ok[c[4886346]&63]()|0}s=0;while(1){t=1<>2]=f,c[w+8>>2]=h,w)|0);i=w}mP(0,0,f,h,j,k,l);if((c[(c[4917322]|0)+32>>2]|0)!=0){l=Ok[c[4886346]&63]()|0;Tk[c[4886344]&255](0,63592,(w=i,i=i+24|0,c[w>>2]=f,c[w+8>>2]=h,c[w+16>>2]=l-r,w)|0);i=w}do{if((c[5120183]|0)!=0){w=c[253309]|0;if((w|0)==0|(c[7094369]|0)!=0){rQ(0);break}else{rQ(w);break}}}while(0);kP();x=+(a|0);g[n>>2]=x;y=+(b|0);g[n+4>>2]=y;g[n+8>>2]=0.0;g[n+12>>2]=1.0;z=+(d+a|0);g[n+16>>2]=z;g[n+20>>2]=y;g[n+24>>2]=0.0;g[n+28>>2]=1.0;g[n+32>>2]=z;z=+(e+b|0);g[n+36>>2]=z;g[n+40>>2]=0.0;g[n+44>>2]=1.0;g[n+48>>2]=x;g[n+52>>2]=z;g[n+56>>2]=0.0;g[n+60>>2]=1.0;z=+(f|0);x=.5/z;g[o>>2]=x;y=+(h|0);A=.5/y;g[o+4>>2]=A;B=(z+-.5)/z;g[o+8>>2]=B;g[o+12>>2]=A;g[o+16>>2]=B;B=(y+-.5)/y;g[o+20>>2]=B;g[o+24>>2]=x;g[o+28>>2]=B;PQ(974204);LQ(974204,46,20480636);JQ(974204,28,41208);sU(n|0,o|0);p=64;q=0;i=m;return}function mP(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;b=i;a=1012824+(g<<2)|0;g=c[a>>2]|0;j=(g|0)!=0;if(j){k=g}else{Tk[c[4886344]&255](2,114712,(l=i,i=i+1|0,i=i+7&-8,c[l>>2]=0,l)|0);i=l;k=c[253205]|0}l=c[253239]|0;m=c[((c[(c[4917414]|0)+32>>2]|0)!=0&(l|0)!=0?l:k)+80>>2]|0;k=20480416+(c[5120111]<<2)|0;a:do{if((c[k>>2]|0)!=(m|0)){do{if(j){c[g+84>>2]=c[253192];c[20480416+(c[5120111]<<2)>>2]=m;if((c[g+100>>2]&4|0)==0){break}Mf(34067,m|0);break a}else{c[k>>2]=m}}while(0);Mf(3553,m|0)}}while(0);m=c[a>>2]|0;a=m+64|0;k=m+68|0;do{if((c[a>>2]|0)==(d|0)){if((c[k>>2]|0)!=(e|0)){break}if((h|0)==0){i=b;return}jg(3553,0,0,0,d|0,e|0,6408,5121,f|0);i=b;return}}while(0);c[m+72>>2]=d;c[a>>2]=d;c[m+76>>2]=e;c[k>>2]=e;Bj(3553,0,6408,d|0,e|0,0,6408,5121,f|0);Af(3553,10241,+9729.0);Af(3553,10240,+9729.0);Af(3553,10242,+33071.0);Af(3553,10243,+33071.0);i=b;return}function nP(a){a=a|0;var b=0,e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0;do{if((c[5120183]|0)!=0){b=c[253309]|0;if((b|0)==0|(c[7094369]|0)!=0){rQ(0);break}else{rQ(b);break}}}while(0);kP();b=c[a+4>>2]|0;if((b|0)!=(c[340894]|0)){if((c[340901]|0)!=0){zT()}c[7094307]=28377248;wT(b,0,0)}b=c[340902]|0;if((b+4|0)>999){e=11}else{f=c[340901]|0;if((f+6|0)>5999){e=11}else{h=b;i=f}}if((e|0)==11){pU(4,6);h=c[340902]|0;i=c[340901]|0}c[340902]=h+4;c[340901]=i+6;e=h+3|0;c[1219560+(i<<2)>>2]=e;c[1219560+(i+1<<2)>>2]=h;f=h+2|0;c[1219560+(i+2<<2)>>2]=f;c[1219560+(i+3<<2)>>2]=f;c[1219560+(i+4<<2)>>2]=h;b=h+1|0;c[1219560+(i+5<<2)>>2]=b;j=+(d[28377240]|0|0)*.003921568859368563;k=+(d[28377241]|0|0)*.003921568859368563;l=+(d[28377242]|0|0)*.003921568859368563;m=+(d[28377243]|0|0)*.003921568859368563;g[1283560+(h<<4)>>2]=j;g[1283564+(h<<4)>>2]=k;g[1283568+(h<<4)>>2]=l;g[1283572+(h<<4)>>2]=m;g[1283560+(b<<4)>>2]=j;g[1283564+(b<<4)>>2]=k;g[1283568+(b<<4)>>2]=l;g[1283572+(b<<4)>>2]=m;g[1283560+(f<<4)>>2]=j;g[1283564+(f<<4)>>2]=k;g[1283568+(f<<4)>>2]=l;g[1283572+(f<<4)>>2]=m;g[1283560+(e<<4)>>2]=j;g[1283564+(e<<4)>>2]=k;g[1283568+(e<<4)>>2]=l;g[1283572+(e<<4)>>2]=m;i=a+8|0;g[1243560+(h<<4)>>2]=+g[i>>2];n=a+12|0;g[1243564+(h<<4)>>2]=+g[n>>2];g[1243568+(h<<4)>>2]=0.0;o=a+24|0;g[1267560+(h<<4)>>2]=+g[o>>2];p=a+28|0;g[1267564+(h<<4)>>2]=+g[p>>2];h=a+16|0;g[1243560+(b<<4)>>2]=+g[i>>2]+ +g[h>>2];g[1243564+(b<<4)>>2]=+g[n>>2];g[1243568+(b<<4)>>2]=0.0;q=a+32|0;g[1267560+(b<<4)>>2]=+g[q>>2];g[1267564+(b<<4)>>2]=+g[p>>2];g[1243560+(f<<4)>>2]=+g[i>>2]+ +g[h>>2];h=a+20|0;g[1243564+(f<<4)>>2]=+g[n>>2]+ +g[h>>2];g[1243568+(f<<4)>>2]=0.0;g[1267560+(f<<4)>>2]=+g[q>>2];q=a+36|0;g[1267564+(f<<4)>>2]=+g[q>>2];g[1243560+(e<<4)>>2]=+g[i>>2];g[1243564+(e<<4)>>2]=+g[n>>2]+ +g[h>>2];g[1243568+(e<<4)>>2]=0.0;g[1267560+(e<<4)>>2]=+g[o>>2];g[1267564+(e<<4)>>2]=+g[q>>2];return a+40|0}function oP(a){a=a|0;var b=0,d=0,e=0,f=0,h=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.0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0,B=0,C=0;b=i;i=i+272|0;d=b|0;e=b+64|0;f=b+96|0;h=b+112|0;j=b+128|0;k=b+192|0;l=b+224|0;m=b+240|0;n=b+256|0;if((c[340901]|0)!=0){zT()}m$(28375576,a+4|0,692)|0;m$(28376268,a+696|0,664)|0;iP();o=c[5120183]|0;do{if((o|0)!=0){if((c[7094166]&8|0)!=0&(c[5120196]|0)!=0){Xc(34383);p=c[5120183]|0;if((p|0)==0){break}else{q=p}}else{q=o}do{if((c[7093914]&1|0)==0){if((c[(c[4919874]|0)+32>>2]|0)==0){if((c[7094166]&4|0)==0){r=q;break}}p=c[5120124]|0;c[7094370]=1;xi(0,0,0,0);jP(c[a+1360>>2]|0,c[a+1364>>2]|0);xi((c[7094365]|0)==0|0,(c[7094366]|0)==0|0,(c[7094367]|0)==0|0,(c[7094368]|0)==0|0);c[7094370]=0;s=c[253310]|0;t=c[253309]|0;do{if((s|0)==0){if((t|0)!=0){break}cP(c[253277]|0,0);le(3553,0,33190,0,0,c[5123026]|0,c[5123027]|0,0)}else{wQ(t,0,s,0,256,9728)}}while(0);if((c[(c[4917318]|0)+32>>2]|0)!=0){uQ(c[253277]|0,0,0,c[253340]|0,0,0,0,0)}do{if((c[(c[4917306]|0)+32>>2]|0)!=0){if((c[7094166]&32|0)==0){break}rQ(c[253338]|0);s=c[253338]|0;t=c[s+228>>2]|0;u=+(da(t,c[7094174]|0)|0);v=+(c[5123026]|0);w=c[s+232>>2]|0;x=+(da(w,c[7094175]|0)|0);y=+(c[5123027]|0);z=+(da(c[7094176]|0,t)|0)/v;t=~~(u/v);s=~~(x/y);A=~~z;B=~~(+(da(c[7094177]|0,w)|0)/y);pf(t|0,s|0,A|0,B|0);Mh(t|0,s|0,A|0,B|0);y=+(c[5123026]|0);z=+(c[7094174]|0)/y;x=+(c[5123027]|0);v=+(c[7094175]|0)/x;u=z+ +(c[7094176]|0)/y;y=v+ +(c[7094177]|0)/x;g[e>>2]=z;g[e+4>>2]=y;g[e+8>>2]=u;g[e+12>>2]=y;g[e+16>>2]=u;g[e+20>>2]=v;g[e+24>>2]=z;g[e+28>>2]=v;g[d>>2]=-1.0;g[d+4>>2]=1.0;g[d+8>>2]=0.0;g[d+12>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;g[d+28>>2]=1.0;g[d+32>>2]=1.0;g[d+36>>2]=-1.0;g[d+40>>2]=0.0;g[d+44>>2]=1.0;g[d+48>>2]=-1.0;g[d+52>>2]=-1.0;g[d+56>>2]=0.0;g[d+60>>2]=1.0;fP(65536);PQ(1010396);cP(c[253277]|0,0);cP(c[253301]|0,5);cP(c[253302]|0,3);cP(c[253303]|0,1);LQ(1010396,13,28376004);LQ(1010396,14,28376068);LQ(1010396,15,28376132);IQ(1010396,51,28375600);v=+g[7094230];z=v;u=z*+X(+g[7094182]*3.141592653589793/360.0);y=z*+X(+g[7094181]*3.141592653589793/360.0);z=+g[(c[4917290]|0)+28>>2];B=h|0;g[B>>2]=v*+g[7093903];A=h+4|0;g[A>>2]=v*+g[7093904];s=h+8|0;g[s>>2]=v*+g[7093905];IQ(1010396,53,B);g[B>>2]=y*+g[7093906];g[A>>2]=y*+g[7093907];g[s>>2]=y*+g[7093908];IQ(1010396,54,B);g[B>>2]=u*+g[7093909];g[A>>2]=u*+g[7093910];g[s>>2]=u*+g[7093911];IQ(1010396,55,B);B=f|0;g[B>>2]=v/z;g[f+4>>2]=v;g[f+8>>2]=0.0;g[f+12>>2]=0.0;JQ(1010396,50,B);sU(d|0,e|0);}}while(0);if((c[(c[4917318]|0)+32>>2]|0)!=0){rQ(c[253331]|0);B=c[253331]|0;pf(0,0,c[B+228>>2]|0,c[B+232>>2]|0);B=c[253331]|0;Mh(0,0,c[B+228>>2]|0,c[B+232>>2]|0);B=j|0;g[j>>2]=-1.0;g[j+4>>2]=1.0;g[j+8>>2]=0.0;g[j+12>>2]=1.0;g[j+16>>2]=1.0;g[j+20>>2]=1.0;g[j+24>>2]=0.0;g[j+28>>2]=1.0;g[j+32>>2]=1.0;g[j+36>>2]=-1.0;g[j+40>>2]=0.0;g[j+44>>2]=1.0;g[j+48>>2]=-1.0;g[j+52>>2]=-1.0;g[j+56>>2]=0.0;g[j+60>>2]=1.0;s=k|0;g[k>>2]=0.0;g[k+4>>2]=1.0;g[k+8>>2]=1.0;g[k+12>>2]=1.0;g[k+16>>2]=1.0;g[k+20>>2]=0.0;g[k+24>>2]=0.0;g[k+28>>2]=0.0;fP(65536);PQ(1010860);cP(c[253306]|0,0);v=+g[7094230];A=l|0;g[A>>2]=v/+g[(c[4917290]|0)+28>>2];g[l+4>>2]=v;g[l+8>>2]=0.0;g[l+12>>2]=0.0;JQ(1010860,50,A);sU(B,s);rQ(c[253332]|0);A=c[253332]|0;pf(0,0,c[A+228>>2]|0,c[A+232>>2]|0);A=c[253332]|0;Mh(0,0,c[A+228>>2]|0,c[A+232>>2]|0);PQ(1011324);cP(c[253296]|0,0);cP(c[253306]|0,1);v=+g[7094230];A=m|0;g[A>>2]=v/+g[(c[4917290]|0)+28>>2];g[m+4>>2]=v;g[m+8>>2]=0.0;g[m+12>>2]=0.0;JQ(1011324,50,A);sU(B,s);rQ(c[253339]|0);A=c[253339]|0;pf(0,0,c[A+228>>2]|0,c[A+232>>2]|0);A=c[253339]|0;Mh(0,0,c[A+228>>2]|0,c[A+232>>2]|0);PQ(1011788);cP(c[253297]|0,0);cP(c[253306]|0,1);v=+g[7094230];A=n|0;g[A>>2]=v/+g[(c[4917290]|0)+28>>2];g[n+4>>2]=v;g[n+8>>2]=0.0;g[n+12>>2]=0.0;JQ(1011788,50,A);sU(B,s);}rQ(p);bQ(28376732,20480572);cQ(20480572,20480508,20480636);pf(c[7094174]|0,c[7094175]|0,c[7094176]|0,c[7094177]|0);Mh(c[7094174]|0,c[7094175]|0,c[7094176]|0,c[7094177]|0);r=c[5120183]|0}else{r=q}}while(0);if((r|0)==0){break}if(!((c[7094166]&8|0)!=0&(c[5120196]|0)!=0)){break}kg(34383)}}while(0);if((c[7094166]&4|0)==0){jP(c[a+1360>>2]|0,c[a+1364>>2]|0);if((c[(c[4919860]|0)+32>>2]|0)!=0){nU(.10000000149011612,c[253346]|0)}if((c[(c[4919858]|0)+32>>2]|0)!=0){r=c[5120124]|0;rQ(c[253311]|0);Th(+0.0,+0.0,+0.0,+1.0);sc(16384);if((c[5120179]|0)!=0){c[1195832+(c[298957]<<2)>>2]=1;hk[c[4920096]&255](35092,c[1195820+(c[298957]<<2)>>2]|0)}nU(.30000001192092896,c[253347]|0);if((c[5120179]|0)!=0){vk[c[4920050]&511](35092)}rQ(r)}gU();BQ()}r=c[253341]|0;if(!((c[5120183]|0)!=0&(r|0)!=0&(c[7094178]|0)==(r|0))){C=a+1368|0;i=b;return C|0}rQ(0);if((c[5120111]|0)!=6){vk[c[4920100]&511](33990);c[5120111]=6}cP(c[(c[253356]|0)+(c[7094180]<<2)>>2]|0,6);vk[c[4920036]&511](34067);if((c[5120111]|0)==0){C=a+1368|0;i=b;return C|0}vk[c[4920100]&511](33984);c[5120111]=0;C=a+1368|0;i=b;return C|0}function pP(){var a=0,b=0,d=0,e=0,f=0,h=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.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0;a=i;i=i+64|0;b=a|0;kP();sc(16384);jf();d=Ok[c[4886346]&63]()|0;if((c[254853]|0)<=0){jf();e=c[4886346]|0;f=Ok[e&63]()|0;h=c[4886344]|0;j=f-d|0;Tk[h&255](0,55776,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;i=a;return}l=b|0;m=b|0;n=b+4|0;o=b+8|0;p=b+12|0;q=b+16|0;r=b+20|0;s=b+24|0;t=b+28|0;u=b+32|0;v=b+36|0;w=b+40|0;x=b+44|0;y=b+48|0;z=b+52|0;A=b+56|0;B=b+60|0;b=0;do{C=c[1019416+(b<<2)>>2]|0;D=+((c[5123026]|0)/20|0|0);E=+((c[5123027]|0)/15|0|0);F=D*+((b|0)%20|0|0);G=E*+((b|0)/20|0|0);if((c[(c[4917344]|0)+32>>2]|0)==2){H=D*+(c[C+72>>2]|0)*.001953125;I=E*+(c[C+76>>2]|0)*.001953125}else{H=D;I=E}J=(C|0)!=0;if(J){K=C}else{Tk[c[4886344]&255](2,114712,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;K=c[253205]|0}L=c[253239]|0;M=c[((c[(c[4917414]|0)+32>>2]|0)!=0&(L|0)!=0?L:K)+80>>2]|0;L=20480416+(c[5120111]<<2)|0;a:do{if((c[L>>2]|0)!=(M|0)){do{if(J){c[C+84>>2]=c[253192];c[20480416+(c[5120111]<<2)>>2]=M;if((c[C+100>>2]&4|0)==0){break}Mf(34067,M|0);break a}else{c[L>>2]=M}}while(0);Mf(3553,M|0)}}while(0);g[m>>2]=F;g[n>>2]=G;g[o>>2]=0.0;g[p>>2]=1.0;E=F+H;g[q>>2]=E;g[r>>2]=G;g[s>>2]=0.0;g[t>>2]=1.0;g[u>>2]=E;E=G+I;g[v>>2]=E;g[w>>2]=0.0;g[x>>2]=1.0;g[y>>2]=F;g[z>>2]=E;g[A>>2]=0.0;g[B>>2]=1.0;tU(l);b=b+1|0;}while((b|0)<(c[254853]|0));jf();e=c[4886346]|0;f=Ok[e&63]()|0;h=c[4886344]|0;j=f-d|0;Tk[h&255](0,55776,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;i=a;return}function qP(a){a=a|0;var b=0,d=0;if((c[340901]|0)!=0){zT()}if((c[(c[4917344]|0)+32>>2]|0)!=0){pP()}do{if((c[5120183]|0)!=0){b=c[253309]|0;if((b|0)==0|(c[7094369]|0)!=0){rQ(0);break}else{rQ(b);break}}}while(0);sc(256);b=c[253310]|0;if((b|0)==0){d=a+4|0;return d|0}rQ(b);sc(256);d=a+4|0;return d|0}function rP(a){a=a|0;var b=0,e=0,f=0,h=0,i=0.0,j=0;if((c[340901]|0)!=0){zT()}if((c[(c[4917344]|0)+32>>2]|0)!=0){pP()}if((c[(c[4917424]|0)+32>>2]|0)!=0){b=da(c[5123027]|0,c[5123026]|0)|0;e=jk[c[4886348]&255](b)|0;dh(0,0,c[5123026]|0,c[5123027]|0,6401,5121,e|0);b=da(c[5123027]|0,c[5123026]|0)|0;if((b|0)>0){f=0;h=0;do{f=(d[e+h|0]|0)+f|0;h=h+1|0;}while((h|0)<(b|0));i=+(f|0)}else{i=0.0}g[7094286]=i+ +g[7094286];vk[c[4886349]&511](e)}a:do{if(!((c[5120183]|0)==0|(c[7094369]|0)!=0)){e=c[253310]|0;do{if((e|0)!=0){if((c[(c[4917466]|0)+32>>2]|0)==0){break}wQ(c[253309]|0,0,e,0,16384,9728);wQ(c[253310]|0,0,0,0,16384,9728);break a}}while(0);e=c[253309]|0;if((e|0)==0){break}wQ(e,0,0,0,16384,9728)}}while(0);if((c[5120112]|0)!=0){cV(49376);gV();c[7094369]=0;c[7094309]=0;j=a+4|0;return j|0}jf();cV(49376);gV();c[7094369]=0;c[7094309]=0;j=a+4|0;return j|0}function sP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if((c[340901]|0)!=0){zT()}b=a+4|0;d=c[b>>2]|0;if((d|0)==-1){e=a+12|0;return e|0}if((c[5120111]|0)==0){f=d}else{vk[c[4920100]&511](33984);c[5120111]=0;f=c[b>>2]|0}b=a+8|0;if((c[b>>2]|0)==-1){d=c[1013112+(f<<2)>>2]|0;if((d|0)==0){e=a+12|0;return e|0}g=c[253239]|0;h=c[((c[(c[4917414]|0)+32>>2]|0)!=0&(g|0)!=0?g:d)+80>>2]|0;do{if((c[5120104]|0)!=(h|0)){c[d+84>>2]=c[253192];c[20480416+(c[5120111]<<2)>>2]=h;if((c[d+100>>2]&4|0)==0){Mf(3553,h|0);break}else{Mf(34067,h|0);break}}}while(0);le(3553,0,32856,c[7093894]|0,(c[5123027]|0)-512-(c[7093895]|0)|0,512,512,0);e=a+12|0;return e|0}else{h=c[1012972+(f<<2)>>2]|0;if((h|0)==0){e=a+12|0;return e|0}f=c[253239]|0;d=c[((c[(c[4917414]|0)+32>>2]|0)!=0&(f|0)!=0?f:h)+80>>2]|0;do{if((c[5120104]|0)!=(d|0)){c[h+84>>2]=c[253192];c[20480416+(c[5120111]<<2)>>2]=d;if((c[h+100>>2]&4|0)==0){Mf(3553,d|0);break}else{Mf(34067,d|0);break}}}while(0);le((c[b>>2]|0)+34069|0,0,32856,c[7093894]|0,(c[5123027]|0)-512-(c[7093895]|0)|0,512,512,0);e=a+12|0;return e|0}return 0}function tP(a){a=a|0;var b=0,d=0,e=0,f=0,h=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.0,z=0.0,A=0,B=0.0,C=0,D=0;b=i;i=i+48|0;d=b|0;e=b+16|0;f=b+32|0;if((c[340901]|0)!=0){zT()}if((c[5120183]|0)==0){h=a+1360|0;i=b;return h|0}if((c[(c[4917378]|0)+32>>2]|0)==0){h=a+1360|0;i=b;return h|0}if((a|0)!=0){m$(28375576,a+4|0,692)|0;m$(28376268,a+696|0,664)|0}j=c[253309]|0;k=c[253310]|0;if((k|0)==0){l=j}else{wQ(j,0,k,0,16640,9728);l=c[253310]|0}k=c[7094174]|0;j=e|0;c[j>>2]=k;m=c[7094175]|0;c[e+4>>2]=m;n=c[7094176]|0;c[e+8>>2]=n;o=c[7094177]|0;c[e+12>>2]=o;if((c[(c[4917318]|0)+32>>2]|0)==0){p=k;q=m;r=n;s=o;t=d|0;u=d+4|0;v=d+8|0;w=d+12|0}else{e=c[253305]|0;x=e+64|0;y=+(da(c[x>>2]|0,k)|0);z=+(c[5123026]|0);k=d|0;c[k>>2]=~~(y/z);A=e+68|0;y=+(da(c[A>>2]|0,m)|0);B=+(c[5123027]|0);m=~~(y/B);e=d+4|0;c[e>>2]=m;C=d+8|0;c[C>>2]=~~(+(da(c[x>>2]|0,n)|0)/z);n=~~(+(da(c[A>>2]|0,o)|0)/B);o=d+12|0;c[o>>2]=n;c[e>>2]=(c[A>>2]|0)-m;c[o>>2]=-n;vQ(c[253339]|0,k,0,l,j,0,0,19);p=c[7094174]|0;q=c[7094175]|0;r=c[7094176]|0;s=c[7094177]|0;t=k;u=e;v=C;w=o}c[t>>2]=p;c[u>>2]=q;c[v>>2]=r;c[w>>2]=s;a:do{if((l|0)!=0){do{if((c[(c[4917466]|0)+32>>2]|0)!=0){if((c[(c[4917298]|0)+32>>2]|0)==0){if((c[(c[4917484]|0)+32>>2]|0)==0){break}}if((c[(c[4919910]|0)+32>>2]|0)==0){D=(c[(c[4917498]|0)+32>>2]|0)!=0|0}else{D=1}iT(l,t,0,j,D);break a}}while(0);B=+g[(c[4919902]|0)+28>>2];if(B==0.0){wQ(l,t,0,j,16384,9728);break}else{z=+He(+B);g[f+8>>2]=z;g[f+4>>2]=z;s=f|0;g[s>>2]=z;g[f+12>>2]=1.0;vQ(l,t,0,0,j,0,s,0);break}}}while(0);if((c[(c[4919858]|0)+32>>2]|0)!=0){kT(0,t,0,j)}jT(0,t,0,j,+g[7093925]);c[7094369]=1;h=a+1360|0;i=b;return h|0}function uP(b){b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=Ok[c[4886346]&63]()|0;e=b;a:while(1){b=e+3&-4;f=b;switch(c[b>>2]|0){case 4:{if((c[340901]|0)!=0){zT()}if((c[5120183]|0)!=0){rQ(0)}pd(c[f+4>>2]|0);if((c[(c[4919898]|0)+32>>2]|0)!=0){Th(+1.0,+0.0,+.5,+1.0);sc(16640)}e=f+8|0;continue a;break};case 5:{e=rP(f)|0;continue a;break};case 3:{e=oP(f)|0;continue a;break};case 6:{e=OR(f)|0;continue a;break};case 10:{e=sP(f)|0;continue a;break};case 11:{e=tP(f)|0;continue a;break};case 7:{e=SR(f)|0;continue a;break};case 8:{if((c[340901]|0)!=0){zT()}b=f+4|0;if((c[5120183]|0)==0){h=f+5|0;i=f+6|0;j=f+7|0}else{c[7094365]=(a[b]|0)==0;k=f+5|0;c[7094366]=(a[k]|0)==0;l=f+6|0;c[7094367]=(a[l]|0)==0;m=f+7|0;c[7094368]=(a[m]|0)==0;h=k;i=l;j=m}xi(a[b]|0,a[h]|0,a[i]|0,a[j]|0);e=f+8|0;continue a;break};case 9:{e=qP(f)|0;continue a;break};case 2:{e=nP(f)|0;continue a;break};case 1:{a[28377240]=~~(+g[f+4>>2]*255.0);a[28377241]=~~(+g[f+8>>2]*255.0);a[28377242]=~~(+g[f+12>>2]*255.0);a[28377243]=~~(+g[f+16>>2]*255.0);e=f+20|0;continue a;break};default:{break a}}}if((c[340901]|0)==0){n=c[4886346]|0;o=Ok[n&63]()|0;p=o-d|0;c[7094305]=p;return}zT();n=c[4886346]|0;o=Ok[n&63]()|0;p=o-d|0;c[7094305]=p;return}function vP(a){a=a|0;c[253204]=a;return}function wP(a,b){a=a|0;b=b|0;var d=0,e=0,f=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.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;d=c[553047]|0;if((d|0)<=(a|0)){return}e=b+124|0;f=b+112|0;h=b+116|0;i=b+120|0;j=b+136|0;k=b+84|0;l=b+144|0;m=b+140|0;n=b+148|0;b=a;o=d;while(1){d=c[(c[553048]|0)+(b*80|0)+76>>2]|0;p=d;do{if((c[d>>2]|0)==3){q=d+128|0;if((c[q>>2]|0)==2){r=o;break}if(+g[e>>2]!=+g[d+124>>2]){r=o;break}if(+g[f>>2]!=+g[d+112>>2]){r=o;break}if(+g[h>>2]!=+g[d+116>>2]){r=o;break}if(+g[i>>2]!=+g[d+120>>2]){r=o;break}s=c[j>>2]|0;t=s-1|0;u=(t|0)>1;v=d+136|0;w=d+84|0;x=d+144|0;y=d+140|0;z=d+148|0;A=0;B=0;while(1){if((A|0)==0){C=0}else{C=da((c[m>>2]|0)-1|0,s)|0}a:do{if(u){D=1;b:while(1){E=D+1|0;if((E|0)>=(t|0)){F=19;break a}G=D+C|0;H=c[k>>2]|0;I=+g[H+(G*84|0)>>2];J=H+(G*84|0)+4|0;K=H+(G*84|0)+8|0;G=E;while(1){L=G+C|0;do{if(!(+S(+(I- +g[H+(L*84|0)>>2]))>.1)){if(+S(+(+g[J>>2]- +g[H+(L*84|0)+4>>2]))>.1){break}if(!(+S(+(+g[K>>2]- +g[H+(L*84|0)+8>>2]))>.1)){M=B;break a}}}while(0);L=G+1|0;if((L|0)<(t|0)){G=L}else{D=E;continue b}}}}else{F=19}}while(0);do{if((F|0)==19){F=0;if((s-1|0)<=1){M=B;break}D=c[v>>2]|0;E=D-1|0;G=(E|0)>1;H=c[y>>2]|0;K=H-1|0;J=(K|0)>1;L=s-1|0;N=1;O=B;while(1){P=N+C|0;Q=0;R=O;while(1){if((Q|0)==0){T=0}else{T=da(K,D)|0}c:do{if(G){U=1;d:while(1){V=U+1|0;if((V|0)>=(E|0)){F=31;break c}W=U+T|0;X=c[w>>2]|0;I=+g[X+(W*84|0)>>2];Y=X+(W*84|0)+4|0;Z=X+(W*84|0)+8|0;W=V;while(1){_=W+T|0;do{if(!(+S(+(I- +g[X+(_*84|0)>>2]))>.1)){if(+S(+(+g[Y>>2]- +g[X+(_*84|0)+4>>2]))>.1){break}if(!(+S(+(+g[Z>>2]- +g[X+(_*84|0)+8>>2]))>.1)){$=R;break c}}}while(0);_=W+1|0;if((_|0)<(E|0)){W=_}else{U=V;continue d}}}}else{F=31}}while(0);do{if((F|0)==31){F=0;if((D-1|0)<=1){$=R;break}U=c[k>>2]|0;V=U+(P*84|0)|0;W=c[w>>2]|0;X=D-1|0;Z=U+(P*84|0)+4|0;Y=U+(P*84|0)+8|0;U=1;_=R;while(1){aa=U+T|0;do{if(+S(+(+g[V>>2]- +g[W+(aa*84|0)>>2]))>.1){ba=_}else{if(+S(+(+g[Z>>2]- +g[W+(aa*84|0)+4>>2]))>.1){ba=_;break}if(+S(+(+g[Y>>2]- +g[W+(aa*84|0)+8>>2]))>.1){ba=_;break}g[(c[x>>2]|0)+(U<<2)>>2]=+g[(c[l>>2]|0)+(N<<2)>>2];ba=1}}while(0);aa=U+1|0;if((aa|0)<(X|0)){U=aa;_=ba}else{$=ba;break}}}}while(0);_=Q+1|0;if((_|0)<2){Q=_;R=$}else{ca=0;ea=$;break}}while(1){R=(ca|0)==0?0:D-1|0;e:do{if(J){Q=1;f:while(1){_=Q+1|0;if((_|0)>=(K|0)){F=46;break e}U=(da(D,Q)|0)+R|0;X=c[w>>2]|0;I=+g[X+(U*84|0)>>2];W=X+(U*84|0)+4|0;Y=X+(U*84|0)+8|0;U=_;while(1){Z=(da(U,D)|0)+R|0;do{if(!(+S(+(I- +g[X+(Z*84|0)>>2]))>.1)){if(+S(+(+g[W>>2]- +g[X+(Z*84|0)+4>>2]))>.1){break}if(!(+S(+(+g[Y>>2]- +g[X+(Z*84|0)+8>>2]))>.1)){fa=ea;break e}}}while(0);Z=U+1|0;if((Z|0)<(K|0)){U=Z}else{Q=_;continue f}}}}else{F=46}}while(0);do{if((F|0)==46){F=0;if((H-1|0)<=1){fa=ea;break}Q=c[k>>2]|0;_=Q+(P*84|0)|0;U=c[w>>2]|0;X=H-1|0;Y=Q+(P*84|0)+4|0;W=Q+(P*84|0)+8|0;Q=1;Z=ea;while(1){V=(da(D,Q)|0)+R|0;do{if(+S(+(+g[_>>2]- +g[U+(V*84|0)>>2]))>.1){ga=Z}else{if(+S(+(+g[Y>>2]- +g[U+(V*84|0)+4>>2]))>.1){ga=Z;break}if(+S(+(+g[W>>2]- +g[U+(V*84|0)+8>>2]))>.1){ga=Z;break}g[(c[z>>2]|0)+(Q<<2)>>2]=+g[(c[l>>2]|0)+(N<<2)>>2];ga=1}}while(0);V=Q+1|0;if((V|0)<(X|0)){Q=V;Z=ga}else{fa=ga;break}}}}while(0);R=ca+1|0;if((R|0)<2){ca=R;ea=fa}else{break}}P=N+1|0;if((P|0)<(L|0)){N=P;O=fa}else{M=fa;break}}}}while(0);O=A+1|0;if((O|0)<2){A=O;B=M}else{break}}B=c[m>>2]|0;A=B-1|0;t=(A|0)>1;u=0;O=M;while(1){N=(u|0)==0?0:s-1|0;g:do{if(t){L=1;h:while(1){D=L+1|0;if((D|0)>=(A|0)){F=64;break g}H=(da(s,L)|0)+N|0;K=c[k>>2]|0;I=+g[K+(H*84|0)>>2];J=K+(H*84|0)+4|0;E=K+(H*84|0)+8|0;H=D;while(1){G=(da(H,s)|0)+N|0;do{if(!(+S(+(I- +g[K+(G*84|0)>>2]))>.1)){if(+S(+(+g[J>>2]- +g[K+(G*84|0)+4>>2]))>.1){break}if(!(+S(+(+g[E>>2]- +g[K+(G*84|0)+8>>2]))>.1)){ha=O;break g}}}while(0);G=H+1|0;if((G|0)<(A|0)){H=G}else{L=D;continue h}}}}else{F=64}}while(0);do{if((F|0)==64){F=0;if((B-1|0)<=1){ha=O;break}L=c[v>>2]|0;D=L-1|0;H=(D|0)>1;K=c[y>>2]|0;E=K-1|0;J=(E|0)>1;G=1;P=O;while(1){R=0;Z=P;while(1){if((R|0)==0){ia=0}else{ia=da(E,L)|0}i:do{if(H){Q=1;j:while(1){X=Q+1|0;if((X|0)>=(D|0)){F=76;break i}U=Q+ia|0;W=c[w>>2]|0;I=+g[W+(U*84|0)>>2];Y=W+(U*84|0)+4|0;_=W+(U*84|0)+8|0;U=X;while(1){V=U+ia|0;do{if(!(+S(+(I- +g[W+(V*84|0)>>2]))>.1)){if(+S(+(+g[Y>>2]- +g[W+(V*84|0)+4>>2]))>.1){break}if(!(+S(+(+g[_>>2]- +g[W+(V*84|0)+8>>2]))>.1)){ja=Z;break i}}}while(0);V=U+1|0;if((V|0)<(D|0)){U=V}else{Q=X;continue j}}}}else{F=76}}while(0);do{if((F|0)==76){F=0;if((L-1|0)<=1){ja=Z;break}Q=(da(s,G)|0)+N|0;X=c[k>>2]|0;U=X+(Q*84|0)|0;W=c[w>>2]|0;_=L-1|0;Y=X+(Q*84|0)+4|0;V=X+(Q*84|0)+8|0;Q=1;X=Z;while(1){aa=Q+ia|0;do{if(+S(+(+g[U>>2]- +g[W+(aa*84|0)>>2]))>.1){ka=X}else{if(+S(+(+g[Y>>2]- +g[W+(aa*84|0)+4>>2]))>.1){ka=X;break}if(+S(+(+g[V>>2]- +g[W+(aa*84|0)+8>>2]))>.1){ka=X;break}g[(c[x>>2]|0)+(Q<<2)>>2]=+g[(c[n>>2]|0)+(G<<2)>>2];ka=1}}while(0);aa=Q+1|0;if((aa|0)<(_|0)){Q=aa;X=ka}else{ja=ka;break}}}}while(0);X=R+1|0;if((X|0)<2){R=X;Z=ja}else{la=0;ma=ja;break}}while(1){Z=(la|0)==0?0:L-1|0;k:do{if(J){R=1;l:while(1){X=R+1|0;if((X|0)>=(E|0)){F=91;break k}Q=(da(L,R)|0)+Z|0;_=c[w>>2]|0;I=+g[_+(Q*84|0)>>2];W=_+(Q*84|0)+4|0;V=_+(Q*84|0)+8|0;Q=X;while(1){Y=(da(Q,L)|0)+Z|0;do{if(!(+S(+(I- +g[_+(Y*84|0)>>2]))>.1)){if(+S(+(+g[W>>2]- +g[_+(Y*84|0)+4>>2]))>.1){break}if(!(+S(+(+g[V>>2]- +g[_+(Y*84|0)+8>>2]))>.1)){na=ma;break k}}}while(0);Y=Q+1|0;if((Y|0)<(E|0)){Q=Y}else{R=X;continue l}}}}else{F=91}}while(0);do{if((F|0)==91){F=0;if((K-1|0)<=1){na=ma;break}R=(da(s,G)|0)+N|0;X=c[k>>2]|0;Q=X+(R*84|0)|0;_=c[w>>2]|0;V=K-1|0;W=X+(R*84|0)+4|0;Y=X+(R*84|0)+8|0;R=1;X=ma;while(1){U=(da(L,R)|0)+Z|0;do{if(+S(+(+g[Q>>2]- +g[_+(U*84|0)>>2]))>.1){oa=X}else{if(+S(+(+g[W>>2]- +g[_+(U*84|0)+4>>2]))>.1){oa=X;break}if(+S(+(+g[Y>>2]- +g[_+(U*84|0)+8>>2]))>.1){oa=X;break}g[(c[z>>2]|0)+(R<<2)>>2]=+g[(c[n>>2]|0)+(G<<2)>>2];oa=1}}while(0);U=R+1|0;if((U|0)<(V|0)){R=U;X=oa}else{na=oa;break}}}}while(0);Z=la+1|0;if((Z|0)<2){la=Z;ma=na}else{break}}Z=G+1|0;if((Z|0)<(A|0)){G=Z;P=na}else{ha=na;break}}}}while(0);N=u+1|0;if((N|0)<2){u=N;O=ha}else{break}}if((ha|0)==0){r=o;break}c[q>>2]=2;wP(a,p);r=c[553047]|0}else{r=o}}while(0);p=b+1|0;if((p|0)<(r|0)){b=p;o=r}else{break}}return}function xP(a,b){a=a|0;b=b|0;var d=0,e=0,f=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.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,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0,P=0,Q=0.0,R=0.0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=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,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0;d=c[553048]|0;e=c[d+(a*80|0)+76>>2]|0;a=c[d+(b*80|0)+76>>2]|0;d=a;f=e+136|0;h=c[f>>2]|0;i=h-1|0;j=(i|0)>1;k=e+84|0;l=a+136|0;m=a+140|0;n=a+84|0;a=e+140|0;o=0;a:while(1){if((o|0)==0){p=0}else{p=da((c[a>>2]|0)-1|0,h)|0}b:do{if(j){q=1;c:while(1){r=q+1|0;if((r|0)>=(i|0)){s=12;break b}t=q+p|0;u=c[k>>2]|0;v=+g[u+(t*84|0)>>2];w=u+(t*84|0)+4|0;x=u+(t*84|0)+8|0;t=r;while(1){y=t+p|0;do{if(!(+S(+(v- +g[u+(y*84|0)>>2]))>.1)){if(+S(+(+g[w>>2]- +g[u+(y*84|0)+4>>2]))>.1){break}if(!(+S(+(+g[x>>2]- +g[u+(y*84|0)+8>>2]))>.1)){break b}}}while(0);y=t+1|0;if((y|0)<(i|0)){t=y}else{q=r;continue c}}}}else{s=12}}while(0);do{if((s|0)==12){s=0;if((h-2|0)<=0){break}z=c[l>>2]|0;q=(z|0)>64;r=p+2|0;A=0;while(1){t=A+p|0;u=r+A|0;if(!q){x=0;do{B=(x|0)!=0;if(B){C=da((c[m>>2]|0)-1|0,z)|0}else{C=0}w=z-1|0;if((w|0)>0){D=c[k>>2]|0;y=c[n>>2]|0;v=+g[D+(t*84|0)>>2];E=D+(t*84|0)+4|0;F=D+(t*84|0)+8|0;G=D+(u*84|0)|0;H=D+(u*84|0)+4|0;I=D+(u*84|0)+8|0;J=0;do{K=J+C|0;L=+g[y+(K*84|0)>>2];do{if(!(+S(+(v-L))>.1)){M=+g[y+(K*84|0)+4>>2];if(+S(+(+g[E>>2]-M))>.1){break}N=+g[y+(K*84|0)+8>>2];if(+S(+(+g[F>>2]-N))>.1){break}O=J+1|0;P=O+C|0;Q=+g[y+(P*84|0)>>2];if(+S(+(+g[G>>2]-Q))>.1){break}R=+g[y+(P*84|0)+4>>2];if(+S(+(+g[H>>2]-R))>.1){break}T=+g[y+(P*84|0)+8>>2];if(+S(+(+g[I>>2]-T))>.1){break}if(!(+S(+(L-Q))<.01)){s=28;break a}if(!(+S(+(M-R))<.01)){s=28;break a}if(!(+S(+(N-T))<.01)){s=28;break a}}}while(0);J=J+1|0;}while((J|0)<(w|0))}x=x+1|0;}while((x|0)<2)}x=c[m>>2]|0;if((x|0)<=64){w=0;do{U=(w|0)!=0;J=U?z-1|0:0;I=x-1|0;if((I|0)>0){V=c[k>>2]|0;y=c[n>>2]|0;v=+g[V+(t*84|0)>>2];H=V+(t*84|0)+4|0;G=V+(t*84|0)+8|0;F=V+(u*84|0)|0;E=V+(u*84|0)+4|0;K=V+(u*84|0)+8|0;P=0;do{W=(da(z,P)|0)+J|0;L=+g[y+(W*84|0)>>2];do{if(!(+S(+(v-L))>.1)){T=+g[y+(W*84|0)+4>>2];if(+S(+(+g[H>>2]-T))>.1){break}N=+g[y+(W*84|0)+8>>2];if(+S(+(+g[G>>2]-N))>.1){break}X=P+1|0;Y=(da(z,X)|0)+J|0;R=+g[y+(Y*84|0)>>2];if(+S(+(+g[F>>2]-R))>.1){break}M=+g[y+(Y*84|0)+4>>2];if(+S(+(+g[E>>2]-M))>.1){break}Q=+g[y+(Y*84|0)+8>>2];if(+S(+(+g[K>>2]-Q))>.1){break}if(!(+S(+(L-R))<.01)){s=45;break a}if(!(+S(+(T-M))<.01)){s=45;break a}if(!(+S(+(N-Q))<.01)){s=45;break a}}}while(0);P=P+1|0;}while((P|0)<(I|0))}w=w+1|0;}while((w|0)<2)}w=A+2|0;if((w|0)<(h-2|0)){A=w}else{break}}}}while(0);q=o+1|0;if((q|0)<2){o=q}else{s=2;break}}if((s|0)==2){o=c[a>>2]|0;C=o-1|0;i=(C|0)>1;j=0;d:while(1){Z=(j|0)==0?0:h-1|0;e:do{if(i){q=1;f:while(1){r=q+1|0;if((r|0)>=(C|0)){s=58;break e}w=(da(h,q)|0)+Z|0;u=c[k>>2]|0;v=+g[u+(w*84|0)>>2];t=u+(w*84|0)+4|0;x=u+(w*84|0)+8|0;w=r;while(1){I=(da(w,h)|0)+Z|0;do{if(!(+S(+(v- +g[u+(I*84|0)>>2]))>.1)){if(+S(+(+g[t>>2]- +g[u+(I*84|0)+4>>2]))>.1){break}if(!(+S(+(+g[x>>2]- +g[u+(I*84|0)+8>>2]))>.1)){break e}}}while(0);I=w+1|0;if((I|0)<(C|0)){w=I}else{q=r;continue f}}}}else{s=58}}while(0);do{if((s|0)==58){s=0;if((o-2|0)<=0){break}_=c[l>>2]|0;q=(_|0)>64;$=0;while(1){r=$+2|0;if(!q){w=0;do{aa=(w|0)!=0;if(aa){ba=da((c[m>>2]|0)-1|0,_)|0}else{ba=0}u=_-1|0;if((u|0)>0){x=(da(h,$)|0)+Z|0;ca=c[k>>2]|0;t=c[n>>2]|0;v=+g[ca+(x*84|0)>>2];I=ca+(x*84|0)+4|0;P=ca+(x*84|0)+8|0;x=(da(h,r)|0)+Z|0;K=ca+(x*84|0)|0;y=ca+(x*84|0)+4|0;E=ca+(x*84|0)+8|0;x=0;do{F=x+ba|0;L=+g[t+(F*84|0)>>2];do{if(!(+S(+(v-L))>.1)){Q=+g[t+(F*84|0)+4>>2];if(+S(+(+g[I>>2]-Q))>.1){break}N=+g[t+(F*84|0)+8>>2];if(+S(+(+g[P>>2]-N))>.1){break}ea=x+1|0;J=ea+ba|0;M=+g[t+(J*84|0)>>2];if(+S(+(+g[K>>2]-M))>.1){break}T=+g[t+(J*84|0)+4>>2];if(+S(+(+g[y>>2]-T))>.1){break}R=+g[t+(J*84|0)+8>>2];if(+S(+(+g[E>>2]-R))>.1){break}if(!(+S(+(L-M))<.01)){s=74;break d}if(!(+S(+(Q-T))<.01)){s=74;break d}if(!(+S(+(N-R))<.01)){s=74;break d}}}while(0);x=x+1|0;}while((x|0)<(u|0))}w=w+1|0;}while((w|0)<2)}w=c[m>>2]|0;if((w|0)<=64){u=0;do{fa=(u|0)!=0;x=fa?_-1|0:0;E=w-1|0;if((E|0)>0){t=(da(h,$)|0)+Z|0;ga=c[k>>2]|0;y=c[n>>2]|0;v=+g[ga+(t*84|0)>>2];K=ga+(t*84|0)+4|0;P=ga+(t*84|0)+8|0;t=(da(h,r)|0)+Z|0;I=ga+(t*84|0)|0;F=ga+(t*84|0)+4|0;J=ga+(t*84|0)+8|0;t=0;do{G=(da(_,t)|0)+x|0;L=+g[y+(G*84|0)>>2];do{if(!(+S(+(v-L))>.1)){R=+g[y+(G*84|0)+4>>2];if(+S(+(+g[K>>2]-R))>.1){break}N=+g[y+(G*84|0)+8>>2];if(+S(+(+g[P>>2]-N))>.1){break}ha=t+1|0;H=(da(_,ha)|0)+x|0;T=+g[y+(H*84|0)>>2];if(+S(+(+g[I>>2]-T))>.1){break}Q=+g[y+(H*84|0)+4>>2];if(+S(+(+g[F>>2]-Q))>.1){break}M=+g[y+(H*84|0)+8>>2];if(+S(+(+g[J>>2]-M))>.1){break}if(!(+S(+(L-T))<.01)){s=91;break d}if(!(+S(+(R-Q))<.01)){s=91;break d}if(!(+S(+(N-M))<.01)){s=91;break d}}}while(0);t=t+1|0;}while((t|0)<(E|0))}u=u+1|0;}while((u|0)<2)}if((r|0)<(o-2|0)){$=r}else{break}}}}while(0);q=j+1|0;if((q|0)<2){j=q}else{s=50;break}}if((s|0)==50){j=e+144|0;o=d;n=0;g:while(1){if((n|0)==0){ia=0}else{ia=da((c[a>>2]|0)-1|0,c[f>>2]|0)|0}ba=(c[f>>2]|0)-1|0;l=(ba|0)>1;h:do{if(l){C=1;i:while(1){i=C+1|0;if((i|0)>=(ba|0)){break}q=C+ia|0;u=c[k>>2]|0;v=+g[u+(q*84|0)>>2];w=u+(q*84|0)+4|0;E=u+(q*84|0)+8|0;q=i;while(1){t=q+ia|0;do{if(!(+S(+(v- +g[u+(t*84|0)>>2]))>.1)){if(+S(+(+g[w>>2]- +g[u+(t*84|0)+4>>2]))>.1){break}if(!(+S(+(+g[E>>2]- +g[u+(t*84|0)+8>>2]))>.1)){ja=o;break h}}}while(0);t=q+1|0;if((t|0)<(ba|0)){q=t}else{C=i;continue i}}}if(!l){ja=o;break}C=ia-2|0;ka=ia-1|0;la=o;ma=ba;while(1){i=c[la+136>>2]|0;na=la+140|0;q=ma+ia|0;u=la+84|0;E=C+ma|0;if((i|0)<=64){w=0;do{oa=(w|0)!=0;if(oa){pa=da((c[na>>2]|0)-1|0,i)|0}else{pa=0}r=i-1|0;if((r|0)>0){qa=c[k>>2]|0;t=c[u>>2]|0;v=+g[qa+(q*84|0)>>2];J=qa+(q*84|0)+4|0;y=qa+(q*84|0)+8|0;F=qa+(E*84|0)|0;I=qa+(E*84|0)+4|0;x=qa+(E*84|0)+8|0;P=0;do{K=P+pa|0;L=+g[t+(K*84|0)>>2];do{if(!(+S(+(v-L))>.1)){M=+g[t+(K*84|0)+4>>2];if(+S(+(+g[J>>2]-M))>.1){break}N=+g[t+(K*84|0)+8>>2];if(+S(+(+g[y>>2]-N))>.1){break}ra=P+1|0;G=ra+pa|0;Q=+g[t+(G*84|0)>>2];if(+S(+(+g[F>>2]-Q))>.1){break}R=+g[t+(G*84|0)+4>>2];if(+S(+(+g[I>>2]-R))>.1){break}T=+g[t+(G*84|0)+8>>2];if(+S(+(+g[x>>2]-T))>.1){break}if(!(+S(+(L-Q))<.01)){s=122;break g}if(!(+S(+(M-R))<.01)){s=122;break g}if(!(+S(+(N-T))<.01)){s=122;break g}}}while(0);P=P+1|0;}while((P|0)<(r|0))}w=w+1|0;}while((w|0)<2)}w=ka+ma|0;u=ma+1|0;i=la;r=0;while(1){P=c[i+140>>2]|0;if((P|0)>64){sa=i;break}x=(r|0)!=0;if(x){ta=(c[i+136>>2]|0)-1|0}else{ta=0}t=P-1|0;j:do{if((t|0)>0){P=c[k>>2]|0;I=c[i+136>>2]|0;F=c[i+84>>2]|0;v=+g[P+(q*84|0)>>2];y=P+(q*84|0)+4|0;J=P+(q*84|0)+8|0;K=P+(E*84|0)|0;G=P+(E*84|0)+4|0;H=P+(E*84|0)+8|0;W=0;k:while(1){Y=(da(I,W)|0)+ta|0;L=+g[F+(Y*84|0)>>2];do{if(!(+S(+(v-L))>.1)){T=+g[F+(Y*84|0)+4>>2];if(+S(+(+g[y>>2]-T))>.1){break}N=+g[F+(Y*84|0)+8>>2];if(+S(+(+g[J>>2]-N))>.1){break}ua=W+1|0;va=(da(I,ua)|0)+ta|0;R=+g[F+(va*84|0)>>2];if(+S(+(+g[K>>2]-R))>.1){break}M=+g[F+(va*84|0)+4>>2];if(+S(+(+g[G>>2]-M))>.1){break}Q=+g[F+(va*84|0)+8>>2];if(+S(+(+g[H>>2]-Q))>.1){break}if(!(+S(+(L-R))<.01)){break k}if(!(+S(+(T-M))<.01)){break k}if(!(+S(+(N-Q))<.01)){break k}}}while(0);Y=W+1|0;if((Y|0)<(t|0)){W=Y}else{wa=i;break j}}xa=$P(i,ua,x?I-1|0:0,P+(w*84|0)|0,+g[(c[j>>2]|0)+(u<<2)>>2])|0;if((xa|0)==0){wa=0}else{s=143;break g}}else{wa=i}}while(0);x=r+1|0;if((x|0)<2){i=wa;r=x}else{sa=wa;break}}r=ma-2|0;if((r|0)>1){la=sa;ma=r}else{ja=sa;break}}}else{ja=o}}while(0);ba=n+1|0;if((ba|0)<2){o=ja;n=ba}else{s=96;break}}if((s|0)==96){n=(c[a>>2]|0)-1|0;a=(n|0)>1;o=ja+136|0;sa=ja+140|0;wa=ja+84|0;ua=0;l:while(1){if((ua|0)==0){ya=0}else{ya=(c[f>>2]|0)-1|0}m:do{if(a){ta=1;n:while(1){pa=ta+1|0;if((pa|0)>=(n|0)){break}ia=c[f>>2]|0;ba=(da(ia,ta)|0)+ya|0;l=c[k>>2]|0;v=+g[l+(ba*84|0)>>2];C=l+(ba*84|0)+4|0;r=l+(ba*84|0)+8|0;ba=pa;while(1){i=(da(ba,ia)|0)+ya|0;do{if(!(+S(+(v- +g[l+(i*84|0)>>2]))>.1)){if(+S(+(+g[C>>2]- +g[l+(i*84|0)+4>>2]))>.1){break}if(!(+S(+(+g[r>>2]- +g[l+(i*84|0)+8>>2]))>.1)){break m}}}while(0);i=ba+1|0;if((i|0)<(n|0)){ba=i}else{ta=pa;continue n}}}if(!a){break}za=c[o>>2]|0;ta=(za|0)>64;Aa=n;while(1){pa=Aa-2|0;if(!ta){ba=0;do{Ba=(ba|0)!=0;if(Ba){Ca=da((c[sa>>2]|0)-1|0,za)|0}else{Ca=0}l=za-1|0;if((l|0)>0){Da=c[f>>2]|0;r=(da(Da,Aa)|0)+ya|0;Ea=c[k>>2]|0;C=c[wa>>2]|0;v=+g[Ea+(r*84|0)>>2];ia=Ea+(r*84|0)+4|0;i=Ea+(r*84|0)+8|0;r=(da(Da,pa)|0)+ya|0;u=Ea+(r*84|0)|0;w=Ea+(r*84|0)+4|0;E=Ea+(r*84|0)+8|0;r=0;do{q=r+Ca|0;L=+g[C+(q*84|0)>>2];do{if(!(+S(+(v-L))>.1)){Q=+g[C+(q*84|0)+4>>2];if(+S(+(+g[ia>>2]-Q))>.1){break}N=+g[C+(q*84|0)+8>>2];if(+S(+(+g[i>>2]-N))>.1){break}Fa=r+1|0;x=Fa+Ca|0;M=+g[C+(x*84|0)>>2];if(+S(+(+g[u>>2]-M))>.1){break}T=+g[C+(x*84|0)+4>>2];if(+S(+(+g[w>>2]-T))>.1){break}R=+g[C+(x*84|0)+8>>2];if(+S(+(+g[E>>2]-R))>.1){break}if(!(+S(+(L-M))<.01)){s=173;break l}if(!(+S(+(Q-T))<.01)){s=173;break l}if(!(+S(+(N-R))<.01)){s=173;break l}}}while(0);r=r+1|0;}while((r|0)<(l|0))}ba=ba+1|0;}while((ba|0)<2)}ba=c[sa>>2]|0;if((ba|0)<=64){l=0;do{Ga=(l|0)!=0;r=Ga?za-1|0:0;E=ba-1|0;if((E|0)>0){Ha=c[f>>2]|0;C=(da(Ha,Aa)|0)+ya|0;Ia=c[k>>2]|0;w=c[wa>>2]|0;v=+g[Ia+(C*84|0)>>2];u=Ia+(C*84|0)+4|0;i=Ia+(C*84|0)+8|0;C=(da(Ha,pa)|0)+ya|0;ia=Ia+(C*84|0)|0;q=Ia+(C*84|0)+4|0;P=Ia+(C*84|0)+8|0;C=0;do{I=(da(za,C)|0)+r|0;L=+g[w+(I*84|0)>>2];do{if(!(+S(+(v-L))>.1)){R=+g[w+(I*84|0)+4>>2];if(+S(+(+g[u>>2]-R))>.1){break}N=+g[w+(I*84|0)+8>>2];if(+S(+(+g[i>>2]-N))>.1){break}Ja=C+1|0;x=(da(za,Ja)|0)+r|0;T=+g[w+(x*84|0)>>2];if(+S(+(+g[ia>>2]-T))>.1){break}Q=+g[w+(x*84|0)+4>>2];if(+S(+(+g[q>>2]-Q))>.1){break}M=+g[w+(x*84|0)+8>>2];if(+S(+(+g[P>>2]-M))>.1){break}if(!(+S(+(L-T))<.01)){s=190;break l}if(!(+S(+(R-Q))<.01)){s=190;break l}if(!(+S(+(N-M))<.01)){s=190;break l}}}while(0);C=C+1|0;}while((C|0)<(E|0))}l=l+1|0;}while((l|0)<2)}if((pa|0)>1){Aa=pa}else{break}}}}while(0);ta=ua+1|0;if((ta|0)<2){ua=ta}else{Ka=0;s=195;break}}if((s|0)==173){if(Ba){La=(c[sa>>2]|0)-1|0}else{La=0}sa=Ea+(((da(Da,Aa-1|0)|0)+ya|0)*84|0)|0;Da=_P(ja,Fa,La,sa,+g[(c[e+148>>2]|0)+(Aa+1<<2)>>2])|0;c[Da+132>>2]=0;c[(c[553048]|0)+(b*80|0)+76>>2]=Da;Ka=1;return Ka|0}else if((s|0)==190){Da=Ia+(((da(Ha,Aa-1|0)|0)+ya|0)*84|0)|0;ya=$P(ja,Ja,Ga?za-1|0:0,Da,+g[(c[e+148>>2]|0)+(Aa+1<<2)>>2])|0;c[ya+132>>2]=0;c[(c[553048]|0)+(b*80|0)+76>>2]=ya;Ka=1;return Ka|0}else if((s|0)==195){return Ka|0}}else if((s|0)==122){if(oa){Ma=(c[na>>2]|0)-1|0}else{Ma=0}na=_P(la,ra,Ma,qa+((ka+ma|0)*84|0)|0,+g[(c[j>>2]|0)+(ma+1<<2)>>2])|0;c[na+132>>2]=0;c[(c[553048]|0)+(b*80|0)+76>>2]=na;Ka=1;return Ka|0}else if((s|0)==143){c[xa+132>>2]=0;c[(c[553048]|0)+(b*80|0)+76>>2]=xa;Ka=1;return Ka|0}}else if((s|0)==74){if(aa){Na=(c[m>>2]|0)-1|0}else{Na=0}aa=$|1;xa=ca+(((da(h,aa)|0)+Z|0)*84|0)|0;ca=_P(d,ea,Na,xa,+g[(c[e+148>>2]|0)+(aa<<2)>>2])|0;c[ca+132>>2]=0;c[(c[553048]|0)+(b*80|0)+76>>2]=ca;Ka=1;return Ka|0}else if((s|0)==91){ca=$|1;$=ga+(((da(h,ca)|0)+Z|0)*84|0)|0;Z=$P(d,ha,fa?_-1|0:0,$,+g[(c[e+148>>2]|0)+(ca<<2)>>2])|0;c[Z+132>>2]=0;c[(c[553048]|0)+(b*80|0)+76>>2]=Z;Ka=1;return Ka|0}}else if((s|0)==28){if(B){Oa=(c[m>>2]|0)-1|0}else{Oa=0}m=A|1;B=_P(d,O,Oa,D+((m+p|0)*84|0)|0,+g[(c[e+144>>2]|0)+(m<<2)>>2])|0;c[B+132>>2]=0;c[(c[553048]|0)+(b*80|0)+76>>2]=B;Ka=1;return Ka|0}else if((s|0)==45){s=A|1;A=$P(d,X,U?z-1|0:0,V+((s+p|0)*84|0)|0,+g[(c[e+144>>2]|0)+(s<<2)>>2])|0;c[A+132>>2]=0;c[(c[553048]|0)+(b*80|0)+76>>2]=A;Ka=1;return Ka|0}return 0}function yP(){var a=0,b=0,d=0,e=0,f=0,h=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;a=i;b=0;d=0;e=0;f=c[553047]|0;a:while(1){h=b;j=e;while(1){if((h|0)<(f|0)){break}if((j|0)==0){break a}else{h=0;j=0}}k=c[553048]|0;l=c[k+(h*80|0)+76>>2]|0;do{if((c[l>>2]|0)==3){m=l+132|0;if((c[m>>2]|0)!=0){n=d;o=j;p=f;break}c[m>>2]=1;m=c[553047]|0;b:do{if((m|0)>0){q=l+124|0;r=l+112|0;s=l+116|0;t=l+120|0;u=0;v=0;w=m;x=k;while(1){y=c[x+(v*80|0)+76>>2]|0;do{if((c[y>>2]|0)==3){if(+g[q>>2]!=+g[y+124>>2]){z=u;A=w;break}if(+g[r>>2]!=+g[y+112>>2]){z=u;A=w;break}if(+g[s>>2]!=+g[y+116>>2]){z=u;A=w;break}if(+g[t>>2]!=+g[y+120>>2]){z=u;A=w;break}else{B=u}while(1){if((xP(h,v)|0)==0){break}else{B=B+1|0}}z=B;A=c[553047]|0}else{z=u;A=w}}while(0);y=v+1|0;if((y|0)>=(A|0)){C=z;D=A;break b}u=z;v=y;w=A;x=c[553048]|0}}else{C=0;D=m}}while(0);n=C+d|0;o=1;p=D}else{n=d;o=j;p=f}}while(0);b=h+1|0;d=n;e=o;f=p}Tk[c[4886344]&255](0,114624,(p=i,i=i+8|0,c[p>>2]=d,p)|0);i=p;i=a;return}function zP(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;a=c[553047]|0;if((a|0)>0){b=0;d=a}else{return}while(1){a=c[(c[553048]|0)+(b*80|0)+76>>2]|0;if((c[a>>2]|0)==3){e=Kk[c[4886347]&255](152,1)|0;m$(e|0,a|0,152)|0;f=a+136|0;g=Kk[c[4886347]&255](c[f>>2]<<2,1)|0;c[e+144>>2]=g;m$(g|0,c[a+144>>2]|0,c[f>>2]<<2)|0;f=a+140|0;g=Kk[c[4886347]&255](c[f>>2]<<2,1)|0;c[e+148>>2]=g;m$(g|0,c[a+148>>2]|0,c[f>>2]<<2)|0;f=a+72|0;c[e+72>>2]=c[f>>2];g=Kk[c[4886347]&255](c[f>>2]<<2,1)|0;c[e+76>>2]=g;m$(g|0,c[a+76>>2]|0,c[f>>2]<<2)|0;f=a+80|0;c[e+80>>2]=c[f>>2];g=Kk[c[4886347]&255]((c[f>>2]|0)*84|0,1)|0;c[e+84>>2]=g;m$(g|0,c[a+84>>2]|0,(c[f>>2]|0)*84|0)|0;XP(a);c[(c[553048]|0)+(b*80|0)+76>>2]=e;h=c[553047]|0}else{h=d}e=b+1|0;if((e|0)<(h|0)){b=e;d=h}else{break}}return} + + + +function sQ(){var a=0,b=0,d=0,e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0;a=i;i=i+8|0;b=a|0;Tk[c[4886344]&255](0,152752,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;if((c[5120183]|0)==0){i=a;return}c[256902]=0;KR(150584,371);MP();e=(c[(c[4917466]|0)+32>>2]|0)!=0&(c[5120183]|0)!=0&(c[5120187]|0)!=0?34842:32856;xj(36183,b|0);f=(c[4919844]|0)+32|0;g=c[f>>2]|0;h=c[b>>2]|0;if((g|0)<(h|0)){c[b>>2]=g;j=g}else{j=h}if((j|0)>1&(c[5120192]|0)!=0){k=j}else{c[b>>2]=0;k=0}if((k|0)==(c[f>>2]|0)){l=k}else{ck[c[4886354]&15](148368,+(k|0));l=c[b>>2]|0}do{if((l|0)!=0&(c[5120191]|0)!=0){k=c[253277]|0;f=pQ(145752,c[k+64>>2]|0,c[k+68>>2]|0)|0;c[253309]=f;do{if((c[5120124]|0)!=(f|0)){k=(f|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){j=c[4920090]|0;if(k){m=j;n=15}else{o=j;n=16}}else{if(k){cV(154696);m=c[4920090]|0;n=15;break}else{j=pC(157032,(d=i,i=i+8|0,c[d>>2]=f,d)|0)|0;i=d;cV(j);o=c[4920090]|0;n=16;break}}}while(0);if((n|0)==15){hk[m&255](36160,0);c[5120124]=0;break}else if((n|0)==16){hk[o&255](36160,c[f+68>>2]|0);c[5120124]=f;break}}}while(0);qQ(c[253309]|0,e,0,c[b>>2]|0);qQ(c[253309]|0,33190,0,c[b>>2]|0);oQ(c[253309]|0)|0;f=c[253277]|0;k=pQ(143472,c[f+64>>2]|0,c[f+68>>2]|0)|0;c[253310]=k;do{if((c[5120124]|0)==(k|0)){n=25}else{f=(k|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){j=c[4920090]|0;if(f){p=j;n=23}else{q=j;n=24}}else{if(f){cV(154696);p=c[4920090]|0;n=23;break}else{j=pC(157032,(d=i,i=i+8|0,c[d>>2]=k,d)|0)|0;i=d;cV(j);q=c[4920090]|0;n=24;break}}}while(0);if((n|0)==23){hk[p&255](36160,0);c[5120124]=0;n=26;break}else if((n|0)==24){hk[q&255](36160,c[k+68>>2]|0);c[5120124]=k;n=25;break}}}while(0);do{if((n|0)==25){f=c[253275]|0;if((k|0)==0){n=26;break}if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,3553,c[f+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=f}}while(0);if((n|0)==26){Tk[c[4886344]&255](2,159560,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}fk[c[4920046]&127](36160,36096,3553,c[(c[253277]|0)+80>>2]|0,0);oQ(c[253310]|0)|0}else{if((c[(c[4917466]|0)+32>>2]|0)==0){break}k=c[253277]|0;f=pQ(145752,c[k+64>>2]|0,c[k+68>>2]|0)|0;c[253309]=f;do{if((c[5120124]|0)==(f|0)){n=41}else{k=(f|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){j=c[4920090]|0;if(k){r=j;n=39}else{s=j;n=40}}else{if(k){cV(154696);r=c[4920090]|0;n=39;break}else{j=pC(157032,(d=i,i=i+8|0,c[d>>2]=f,d)|0)|0;i=d;cV(j);s=c[4920090]|0;n=40;break}}}while(0);if((n|0)==39){hk[r&255](36160,0);c[5120124]=0;n=42;break}else if((n|0)==40){hk[s&255](36160,c[f+68>>2]|0);c[5120124]=f;n=41;break}}}while(0);do{if((n|0)==41){k=c[253275]|0;if((f|0)==0){n=42;break}if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,3553,c[k+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=k}}while(0);if((n|0)==42){Tk[c[4886344]&255](2,159560,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}fk[c[4920046]&127](36160,36096,3553,c[(c[253277]|0)+80>>2]|0,0);oQ(c[253309]|0)|0}}while(0);s=c[253309]|0;do{if((s|0)!=0){if((c[5120124]|0)!=(s|0)){if((c[(c[4917434]|0)+32>>2]|0)!=0){r=pC(157032,(d=i,i=i+8|0,c[d>>2]=s,d)|0)|0;i=d;cV(r)}hk[c[4920090]&255](36160,c[s+68>>2]|0);c[5120124]=s}Th(+1.0,+0.0,+.5,+1.0);sc(16640);if((c[5120124]|0)==0){break}if((c[(c[4917434]|0)+32>>2]|0)!=0){cV(154696)}hk[c[4920090]&255](36160,0);c[5120124]=0}}while(0);if((c[(c[4919858]|0)+32>>2]|0)!=0){s=c[253277]|0;r=pQ(140872,c[s+64>>2]|0,c[s+68>>2]|0)|0;c[253311]=r;do{if((c[5120124]|0)==(r|0)){n=66}else{s=(r|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){q=c[4920090]|0;if(s){t=q;n=64}else{u=q;n=65}}else{if(s){cV(154696);t=c[4920090]|0;n=64;break}else{q=pC(157032,(d=i,i=i+8|0,c[d>>2]=r,d)|0)|0;i=d;cV(q);u=c[4920090]|0;n=65;break}}}while(0);if((n|0)==64){hk[t&255](36160,0);c[5120124]=0;n=67;break}else if((n|0)==65){hk[u&255](36160,c[r+68>>2]|0);c[5120124]=r;n=66;break}}}while(0);do{if((n|0)==66){u=c[253276]|0;if((r|0)==0){n=67;break}if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,3553,c[u+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=u}}while(0);if((n|0)==67){Tk[c[4886344]&255](2,159560,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}fk[c[4920046]&127](36160,36096,3553,c[(c[253277]|0)+80>>2]|0,0);oQ(c[253311]|0)|0}if((c[253278]|0)!=0){r=0;do{u=pC(138376,(d=i,i=i+8|0,c[d>>2]=r,d)|0)|0;i=d;t=1013112+(r<<2)|0;s=c[t>>2]|0;q=pQ(u,c[s+64>>2]|0,c[s+68>>2]|0)|0;s=1013252+(r<<2)|0;c[s>>2]=q;do{if((c[5120124]|0)==(q|0)){n=82}else{u=(q|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){p=c[4920090]|0;if(u){v=p;n=80}else{w=p;n=81}}else{if(u){cV(154696);v=c[4920090]|0;n=80;break}else{p=pC(157032,(d=i,i=i+8|0,c[d>>2]=q,d)|0)|0;i=d;cV(p);w=c[4920090]|0;n=81;break}}}while(0);if((n|0)==80){n=0;hk[v&255](36160,0);c[5120124]=0;n=83;break}else if((n|0)==81){n=0;hk[w&255](36160,c[q+68>>2]|0);c[5120124]=q;n=82;break}}}while(0);do{if((n|0)==82){n=0;u=c[t>>2]|0;if((q|0)==0){n=83;break}if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,3553,c[u+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=u}}while(0);if((n|0)==83){n=0;Tk[c[4886344]&255](2,159560,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}q=c[s>>2]|0;c[q+208>>2]=33190;t=q+204|0;u=c[t>>2]|0;if((u|0)==0){hk[c[4920038]&255](1,t);hk[c[4920088]&255](36161,c[t>>2]|0);Yk[c[4919984]&255](36161,33190,c[q+228>>2]|0,c[q+232>>2]|0);Yk[c[4920048]&255](36160,36096,36161,c[t>>2]|0)}else{hk[c[4920088]&255](36161,u);Yk[c[4919984]&255](36161,33190,c[q+228>>2]|0,c[q+232>>2]|0)}oQ(c[s>>2]|0)|0;r=r+1|0;}while((r|0)<16)}r=c[253301]|0;if((r|0)==0){x=0}else{w=0;v=r;while(1){r=1013204+(w<<2)|0;q=pQ(136720,c[v+64>>2]|0,c[v+68>>2]|0)|0;u=1013340+(w<<2)|0;c[u>>2]=q;do{if((c[5120124]|0)!=(q|0)){t=(q|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){p=c[4920090]|0;if(t){y=p;n=99}else{z=p;n=100}}else{if(t){cV(154696);y=c[4920090]|0;n=99;break}else{p=pC(157032,(d=i,i=i+8|0,c[d>>2]=q,d)|0)|0;i=d;cV(p);z=c[4920090]|0;n=100;break}}}while(0);if((n|0)==99){n=0;hk[y&255](36160,0);c[5120124]=0;break}else if((n|0)==100){n=0;hk[z&255](36160,c[q+68>>2]|0);c[5120124]=q;break}}}while(0);pd(0);Hg(0);fk[c[4920046]&127](36160,36096,3553,c[(c[r>>2]|0)+80>>2]|0,0);oQ(c[u>>2]|0)|0;q=w+1|0;if((q|0)>=3){break}w=q;v=c[1013204+(q<<2)>>2]|0}v=c[253304]|0;w=pQ(135272,c[v+64>>2]|0,c[v+68>>2]|0)|0;c[253338]=w;do{if((c[5120124]|0)==(w|0)){n=111}else{v=(w|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){z=c[4920090]|0;if(v){A=z;n=109}else{B=z;n=110}}else{if(v){cV(154696);A=c[4920090]|0;n=109;break}else{z=pC(157032,(d=i,i=i+8|0,c[d>>2]=w,d)|0)|0;i=d;cV(z);B=c[4920090]|0;n=110;break}}}while(0);if((n|0)==109){hk[A&255](36160,0);c[5120124]=0;n=112;break}else if((n|0)==110){hk[B&255](36160,c[w+68>>2]|0);c[5120124]=w;n=111;break}}}while(0);do{if((n|0)==111){B=c[253304]|0;if((w|0)==0){n=112;break}if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,3553,c[B+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=B}}while(0);if((n|0)==112){Tk[c[4886344]&255](2,159560,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}oQ(c[253338]|0)|0;x=0}do{w=pC(133736,(d=i,i=i+8|0,c[d>>2]=x,d)|0)|0;i=d;B=1013176+(x<<2)|0;A=c[B>>2]|0;v=pQ(w,c[A+64>>2]|0,c[A+68>>2]|0)|0;A=1013316+(x<<2)|0;c[A>>2]=v;do{if((c[5120124]|0)==(v|0)){n=126}else{w=(v|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){u=c[4920090]|0;if(w){C=u;n=124}else{D=u;n=125}}else{if(w){cV(154696);C=c[4920090]|0;n=124;break}else{u=pC(157032,(d=i,i=i+8|0,c[d>>2]=v,d)|0)|0;i=d;cV(u);D=c[4920090]|0;n=125;break}}}while(0);if((n|0)==124){n=0;hk[C&255](36160,0);c[5120124]=0;n=127;break}else if((n|0)==125){n=0;hk[D&255](36160,c[v+68>>2]|0);c[5120124]=v;n=126;break}}}while(0);do{if((n|0)==126){n=0;w=c[B>>2]|0;if((v|0)==0){n=127;break}if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,3553,c[w+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=w}}while(0);if((n|0)==127){n=0;Tk[c[4886344]&255](2,159560,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}oQ(c[A>>2]|0)|0;x=x+1|0;}while((x|0)<2);x=c[253298]|0;D=pQ(132512,c[x+64>>2]|0,c[x+68>>2]|0)|0;c[253333]=D;do{if((c[5120124]|0)==(D|0)){n=141}else{x=(D|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){C=c[4920090]|0;if(x){E=C;n=139}else{F=C;n=140}}else{if(x){cV(154696);E=c[4920090]|0;n=139;break}else{C=pC(157032,(d=i,i=i+8|0,c[d>>2]=D,d)|0)|0;i=d;cV(C);F=c[4920090]|0;n=140;break}}}while(0);if((n|0)==139){hk[E&255](36160,0);c[5120124]=0;n=142;break}else if((n|0)==140){hk[F&255](36160,c[D+68>>2]|0);c[5120124]=D;n=141;break}}}while(0);do{if((n|0)==141){F=c[253298]|0;if((D|0)==0){n=142;break}if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,3553,c[F+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=F}}while(0);if((n|0)==142){Tk[c[4886344]&255](2,159560,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}oQ(c[253333]|0)|0;D=c[253299]|0;F=pQ(131528,c[D+64>>2]|0,c[D+68>>2]|0)|0;c[253334]=F;do{if((c[5120124]|0)==(F|0)){n=155}else{D=(F|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){E=c[4920090]|0;if(D){G=E;n=153}else{H=E;n=154}}else{if(D){cV(154696);G=c[4920090]|0;n=153;break}else{E=pC(157032,(d=i,i=i+8|0,c[d>>2]=F,d)|0)|0;i=d;cV(E);H=c[4920090]|0;n=154;break}}}while(0);if((n|0)==153){hk[G&255](36160,0);c[5120124]=0;n=156;break}else if((n|0)==154){hk[H&255](36160,c[F+68>>2]|0);c[5120124]=F;n=155;break}}}while(0);do{if((n|0)==155){H=c[253299]|0;if((F|0)==0){n=156;break}if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,3553,c[H+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=H}}while(0);if((n|0)==156){Tk[c[4886344]&255](2,159560,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}oQ(c[253334]|0)|0;F=0;do{H=pC(130176,(d=i,i=i+8|0,c[d>>2]=F,d)|0)|0;i=d;G=1013184+(F<<2)|0;D=c[G>>2]|0;E=pQ(H,c[D+64>>2]|0,c[D+68>>2]|0)|0;D=1013324+(F<<2)|0;c[D>>2]=E;do{if((c[5120124]|0)==(E|0)){n=170}else{H=(E|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){x=c[4920090]|0;if(H){I=x;n=168}else{J=x;n=169}}else{if(H){cV(154696);I=c[4920090]|0;n=168;break}else{x=pC(157032,(d=i,i=i+8|0,c[d>>2]=E,d)|0)|0;i=d;cV(x);J=c[4920090]|0;n=169;break}}}while(0);if((n|0)==168){n=0;hk[I&255](36160,0);c[5120124]=0;n=171;break}else if((n|0)==169){n=0;hk[J&255](36160,c[E+68>>2]|0);c[5120124]=E;n=170;break}}}while(0);do{if((n|0)==170){n=0;H=c[G>>2]|0;if((E|0)==0){n=171;break}if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,3553,c[H+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=H}}while(0);if((n|0)==171){n=0;Tk[c[4886344]&255](2,159560,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}oQ(c[D>>2]|0)|0;F=F+1|0;}while((F|0)<2);if((c[(c[4917318]|0)+32>>2]|0)!=0){F=c[253306]|0;J=pQ(128920,c[F+64>>2]|0,c[F+68>>2]|0)|0;c[253340]=J;do{if((c[5120124]|0)==(J|0)){n=186}else{F=(J|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){I=c[4920090]|0;if(F){K=I;n=184}else{L=I;n=185}}else{if(F){cV(154696);K=c[4920090]|0;n=184;break}else{I=pC(157032,(d=i,i=i+8|0,c[d>>2]=J,d)|0)|0;i=d;cV(I);L=c[4920090]|0;n=185;break}}}while(0);if((n|0)==184){hk[K&255](36160,0);c[5120124]=0;n=187;break}else if((n|0)==185){hk[L&255](36160,c[J+68>>2]|0);c[5120124]=J;n=186;break}}}while(0);do{if((n|0)==186){L=c[253306]|0;if((J|0)==0){n=187;break}if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,3553,c[L+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=L}}while(0);if((n|0)==187){Tk[c[4886344]&255](2,159560,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}oQ(c[253340]|0)|0;J=c[253305]|0;L=pQ(127952,c[J+64>>2]|0,c[J+68>>2]|0)|0;c[253339]=L;do{if((c[5120124]|0)==(L|0)){n=200}else{J=(L|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){K=c[4920090]|0;if(J){M=K;n=198}else{N=K;n=199}}else{if(J){cV(154696);M=c[4920090]|0;n=198;break}else{K=pC(157032,(d=i,i=i+8|0,c[d>>2]=L,d)|0)|0;i=d;cV(K);N=c[4920090]|0;n=199;break}}}while(0);if((n|0)==198){hk[M&255](36160,0);c[5120124]=0;n=201;break}else if((n|0)==199){hk[N&255](36160,c[L+68>>2]|0);c[5120124]=L;n=200;break}}}while(0);do{if((n|0)==200){N=c[253305]|0;if((L|0)==0){n=201;break}if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,3553,c[N+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=N}}while(0);if((n|0)==201){Tk[c[4886344]&255](2,159560,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}oQ(c[253339]|0)|0}L=c[253307]|0;if((L|0)!=0){N=pQ(126504,c[L+64>>2]|0,c[L+68>>2]|0)|0;c[253341]=N;do{if((c[5120124]|0)!=(N|0)){L=(N|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){M=c[4920090]|0;if(L){O=M;n=214}else{P=M;n=215}}else{if(L){cV(154696);O=c[4920090]|0;n=214;break}else{M=pC(157032,(d=i,i=i+8|0,c[d>>2]=N,d)|0)|0;i=d;cV(M);P=c[4920090]|0;n=215;break}}}while(0);if((n|0)==214){hk[O&255](36160,0);c[5120124]=0;break}else if((n|0)==215){hk[P&255](36160,c[N+68>>2]|0);c[5120124]=N;break}}}while(0);if((c[5120185]|0)>0){fk[c[4920046]&127](36160,36064,34069,c[(c[253307]|0)+80>>2]|0,0)}else{Tk[c[4886344]&255](2,165528,(d=i,i=i+8|0,c[d>>2]=0,d)|0);i=d}c[(c[5120124]|0)+140>>2]=c[253307];d=c[253341]|0;c[d+208>>2]=33190;N=d+204|0;P=c[N>>2]|0;if((P|0)==0){hk[c[4920038]&255](1,N);hk[c[4920088]&255](36161,c[N>>2]|0);Yk[c[4919984]&255](36161,33190,c[d+228>>2]|0,c[d+232>>2]|0);Yk[c[4920048]&255](36160,36096,36161,c[N>>2]|0)}else{hk[c[4920088]&255](36161,P);Yk[c[4919984]&255](36161,33190,c[d+228>>2]|0,c[d+232>>2]|0)}oQ(c[253341]|0)|0}KR(150584,585);if((c[5120124]|0)==0){i=a;return}if((c[(c[4917434]|0)+32>>2]|0)!=0){cV(154696)}hk[c[4920090]&255](36160,0);c[5120124]=0;i=a;return}function tQ(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;a=i;Tk[c[4886344]&255](0,125256,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;if((c[5120183]|0)==0){i=a;return}if((c[5120124]|0)!=0){if((c[(c[4917434]|0)+32>>2]|0)!=0){cV(154696)}hk[c[4920090]&255](36160,0);c[5120124]=0}if((c[256902]|0)>0){d=0}else{i=a;return}do{b=c[1027612+(d<<2)>>2]|0;e=c[5120185]|0;if((e|0)>0){f=0;g=e;while(1){e=b+72+(f<<2)|0;if((c[e>>2]|0)==0){h=g}else{hk[c[4920062]&255](1,e);h=c[5120185]|0}e=f+1|0;if((e|0)<(h|0)){f=e;g=h}else{break}}}g=b+204|0;if((c[g>>2]|0)!=0){hk[c[4920062]&255](1,g)}g=b+212|0;if((c[g>>2]|0)!=0){hk[c[4920062]&255](1,g)}g=b+68|0;if((c[g>>2]|0)!=0){hk[c[4920068]&255](1,g)}d=d+1|0;}while((d|0)<(c[256902]|0));i=a;return}function uQ(a,b,d,e,f,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,Q=0.0,R=0,S=0;l=i;i=i+184|0;m=l|0;n=l+16|0;o=l+80|0;p=l+112|0;q=l+120|0;r=c[5120124]|0;if((a|0)==0){s=64;t=0;u=64;v=0;i=l;return}if((b|0)==0){w=0.0;x=0.0;y=c[a+64>>2]|0;z=c[a+68>>2]|0}else{A=c[b>>2]|0;B=c[b+4>>2]|0;w=+(A|0);x=+(B|0);y=(c[b+8>>2]|0)+A|0;z=(c[b+12>>2]|0)+B|0}B=(e|0)!=0;do{if((f|0)==0){if(B){C=0;D=c[e+232>>2]|0;E=c[e+228>>2]|0;F=0;break}else{C=0;D=c[5123027]|0;E=c[5123026]|0;F=0;break}}else{b=c[f>>2]|0;if(B){A=(c[e+232>>2]|0)-(c[f+4>>2]|0)|0;C=b;D=A-(c[f+12>>2]|0)|0;E=(c[f+8>>2]|0)+b|0;F=A;break}else{A=(c[5123027]|0)-(c[f+4>>2]|0)|0;C=b;D=A-(c[f+12>>2]|0)|0;E=(c[f+8>>2]|0)+b|0;F=A;break}}}while(0);if((d|0)==0){G=1.0;H=1.0}else{G=+g[d>>2];H=+g[d+4>>2]}if((j|0)==0){g[m>>2]=+g[10302];g[m+4>>2]=+g[10303];g[m+8>>2]=+g[10304];g[m+12>>2]=+g[10305]}else{g[m>>2]=+g[j>>2];g[m+4>>2]=+g[j+4>>2];g[m+8>>2]=+g[j+8>>2];g[m+12>>2]=+g[j+12>>2]}j=(h|0)==0?974204:h;do{if((r|0)==(e|0)){I=25}else{h=(e|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){d=c[4920090]|0;if(h){J=d;I=23}else{K=d;I=24}}else{if(h){cV(154696);J=c[4920090]|0;I=23;break}else{d=pC(157032,(L=i,i=i+8|0,c[L>>2]=e,L)|0)|0;i=L;cV(d);K=c[4920090]|0;I=24;break}}}while(0);if((I|0)==23){hk[J&255](36160,0);c[5120124]=0;M=20492108;N=20492104;break}else if((I|0)==24){hk[K&255](36160,c[e+68>>2]|0);c[5120124]=e;I=25;break}}}while(0);do{if((I|0)==25){if((e|0)==0){M=20492108;N=20492104;break}M=e+232|0;N=e+228|0}}while(0);e=c[M>>2]|0;M=c[N>>2]|0;pf(0,0,M|0,e|0);Mh(0,0,M|0,e|0);N=q|0;gQ(0.0,+(M|0),+(e|0),0.0,0.0,1.0,N);kg(2884);cP(a,0);O=+(C|0);g[n>>2]=O;P=+(D|0);g[n+4>>2]=P;g[n+8>>2]=0.0;g[n+12>>2]=1.0;Q=+(E|0);g[n+16>>2]=Q;g[n+20>>2]=P;g[n+24>>2]=0.0;g[n+28>>2]=1.0;g[n+32>>2]=Q;Q=+(F|0);g[n+36>>2]=Q;g[n+40>>2]=0.0;g[n+44>>2]=1.0;g[n+48>>2]=O;g[n+52>>2]=Q;g[n+56>>2]=0.0;g[n+60>>2]=1.0;Q=+(c[a+64>>2]|0);O=w/Q;g[o>>2]=O;w=+(c[a+68>>2]|0);P=1.0-x/w;g[o+4>>2]=P;x=+(y|0)/Q;g[o+8>>2]=x;g[o+12>>2]=P;g[o+16>>2]=x;x=1.0- +(z|0)/w;g[o+20>>2]=x;g[o+24>>2]=O;g[o+28>>2]=x;z=p|0;g[z>>2]=G*(1.0/Q);g[p+4>>2]=H*(1.0/w);fP(k);PQ(j);LQ(j,46,N);JQ(j,28,m|0);HQ(j,56,z);HQ(j,57,1015188);IQ(j,58,1015196);sU(n|0,o|0);if((c[5120124]|0)==(r|0)){s=64;t=0;u=64;v=0;i=l;return}o=(r|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){n=c[4920090]|0;if(o){R=n;I=33}else{S=n;I=34}}else{if(o){cV(154696);R=c[4920090]|0;I=33;break}else{n=pC(157032,(L=i,i=i+8|0,c[L>>2]=r,L)|0)|0;i=L;cV(n);S=c[4920090]|0;I=34;break}}}while(0);if((I|0)==33){hk[R&255](36160,0);c[5120124]=0;s=64;t=0;u=64;v=0;i=l;return}else if((I|0)==34){hk[S&255](36160,c[r+68>>2]|0);c[5120124]=r;s=64;t=0;u=64;v=0;i=l;return}}function vQ(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0;k=i;i=i+16|0;l=k|0;if((a|0)==0){Tk[c[4886344]&255](2,119656,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;i=k;return}if((b|0)==0){c[l>>2]=0;m=c[a+232>>2]|0;c[l+4>>2]=m;c[l+8>>2]=c[a+228>>2];c[l+12>>2]=-m}else{c[l>>2]=c[b>>2];m=c[b+12>>2]|0;c[l+4>>2]=(c[a+232>>2]|0)-(c[b+4>>2]|0)-m;c[l+8>>2]=c[b+8>>2];c[l+12>>2]=m}uQ(c[a+140>>2]|0,l|0,d,e,f,g,h,j|65536);i=k;return}function wQ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=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=i;i=i+16|0;j=h|0;if((c[5120192]|0)==0){if((a|0)==0){Tk[c[4886344]&255](2,119656,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;i=h;return}if((b|0)==0){c[j>>2]=0;k=c[a+232>>2]|0;c[j+4>>2]=k;c[j+8>>2]=c[a+228>>2];c[j+12>>2]=-k}else{c[j>>2]=c[b>>2];k=c[b+12>>2]|0;c[j+4>>2]=(c[a+232>>2]|0)-(c[b+4>>2]|0)-k;c[j+8>>2]=c[b+8>>2];c[j+12>>2]=k}uQ(c[a+140>>2]|0,j|0,0,d,e,0,0,65536);i=h;return}j=(a|0)!=0;if(j){l=c[a+68>>2]|0}else{l=0}k=(d|0)!=0;if(k){m=c[d+68>>2]|0}else{m=0}do{if((b|0)==0){if(j){n=c[a+232>>2]|0;o=c[a+228>>2]|0;p=0;q=0;break}else{n=c[5123027]|0;o=c[5123026]|0;p=0;q=0;break}}else{r=c[b>>2]|0;s=c[b+4>>2]|0;n=(c[b+12>>2]|0)+s|0;o=(c[b+8>>2]|0)+r|0;p=r;q=s}}while(0);do{if((e|0)==0){if(k){t=0;u=0;v=c[d+228>>2]|0;w=c[d+232>>2]|0;break}else{t=0;u=0;v=c[5123026]|0;w=c[5123027]|0;break}}else{b=c[e>>2]|0;a=c[e+4>>2]|0;t=b;u=a;v=(c[e+8>>2]|0)+b|0;w=(c[e+12>>2]|0)+a|0}}while(0);hk[c[4920090]&255](36008,l);hk[c[4920090]&255](36009,m);Jk[c[4920086]&3](p,q,o,n,t,u,v,w,f,g);hk[c[4920090]&255](36160,0);c[5120124]=0;i=h;return}function xQ(){var a=0,b=0,d=0,e=0,f=0.0,h=0;n$(19670016,0,9216)|0;c[4919928]=0;c[4917448]=0;a=0;b=0;while(1){d=19670016+(a*72|0)|0;c[d>>2]=b;e=a+1|0;if((e|0)<128){a=e;b=d}else{break}}c[4917448]=19679160;f=+g[(c[4919812]|0)+28>>2];if(f==0.0){h=~~+h$(112352);c[5145162]=h;return}else{h=~~f;c[5145162]=h;return}}function yQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;h=i;i=i+64|0;j=h|0;k=h+16|0;l=h+32|0;m=h+48|0;c[7094297]=(c[7094297]|0)+1;a:do{if((f|0)==0){n=1.0}else{o=f+4|0;do{if(!(+g[f>>2]!=0.0)){if(+g[o>>2]!=0.0){break}if(!(+g[f+8>>2]!=0.0)){n=1.0;break a}}}while(0);p=+g[7094067]- +g[d>>2];q=+g[7094068]- +g[d+4>>2];r=+g[7094069]- +g[d+8>>2];s=+GB(p*p+q*q+r*r);t=p*s*+g[f>>2]+q*s*+g[o>>2]+s*r*+g[f+8>>2];if(!(t<0.0)){n=t;break}i=h;return}}while(0);f=k|0;oS(d,28376992,28376732,j|0,f);t=+g[k+12>>2];r=-0.0-t;u=0;do{s=+g[k+(u<<2)>>2];u=u+1|0;if(!(sr)){v=25;break}}while((u|0)<3);if((v|0)==25){i=h;return}u=m|0;pS(f,28376268,l|0,u);r=+g[u>>2];if(r<0.0){i=h;return}if(!(r<+(c[7094176]|0))){i=h;return}l=m+4|0;r=+g[l>>2];if(r<0.0){i=h;return}if(!(r<+(c[7094177]|0))){i=h;return}m=c[4919928]|0;b:do{if((m|0)==0){v=20}else{f=c[7094167]|0;k=c[7094164]|0;w=m;c:while(1){do{if((c[w+16>>2]|0)==(a|0)){if((c[w+12>>2]|0)!=(f|0)){break}if((c[w+8>>2]|0)==(k|0)){break c}}}while(0);x=c[w>>2]|0;if((x|0)==0){v=20;break b}else{w=x}}y=w;z=c[w+4>>2]|0}}while(0);do{if((v|0)==20){k=c[4917448]|0;if((k|0)==0){i=h;return}else{f=k|0;c[4917448]=c[f>>2];c[f>>2]=m;c[4919928]=k;c[k+16>>2]=a;c[k+12>>2]=c[7094167];c[k+8>>2]=c[7094164];c[k+4>>2]=-1;y=k;z=-1;break}}}while(0);a=c[7094168]|0;if((z|0)==(a-1|0)){A=a}else{c[y+28>>2]=0;c[y+24>>2]=(c[7093913]|0)-2e3;A=c[7094168]|0}c[y+4>>2]=A;c[y+20>>2]=b;g[y+48>>2]=+g[d>>2];g[y+52>>2]=+g[d+4>>2];g[y+56>>2]=+g[d+8>>2];r=+g[e>>2];d=y+60|0;g[d>>2]=r;t=+g[e+4>>2];b=y+64|0;g[b>>2]=t;s=+g[e+8>>2];g[d>>2]=n*r;g[b>>2]=n*t;g[y+68>>2]=n*s;c[y+36>>2]=~~(+(c[7094174]|0)+ +g[u>>2]);c[y+40>>2]=~~(+(c[7094175]|0)+ +g[l>>2]);g[y+44>>2]=+g[j+8>>2];i=h;return}function zQ(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0.0,k=0,l=0.0,m=0,n=0.0,o=0,p=0;b=i;i=i+8|0;d=b|0;c[7094298]=(c[7094298]|0)+1;c[5120112]=0;e=c[5120124]|0;f=c[253310]|0;if((f|0)!=0){rQ(f)}dh(c[a+36>>2]|0,c[a+40>>2]|0,1,1,6402,5126,d|0);if((c[253310]|0)!=0){rQ(e)}e=a+28|0;f=(c[e>>2]|0)!=0;if(+g[7094197]/(+g[7094194]*(+g[d>>2]*2.0+-1.0)- +g[7094193])- +g[a+44>>2]<24.0){if(f){h=c[a+24>>2]|0}else{c[e>>2]=1;d=(c[7093913]|0)-1|0;c[a+24>>2]=d;h=d}j=+((c[7093913]|0)-h|0)/1.0e3*+g[(c[4919810]|0)+28>>2];k=j<0.0;l=k?0.0:j;m=l>1.0;n=m?1.0:l;o=a+32|0;g[o>>2]=n;i=b;return}else{if(f){c[e>>2]=0;e=(c[7093913]|0)-1|0;c[a+24>>2]=e;p=e}else{p=c[a+24>>2]|0}j=1.0- +((c[7093913]|0)-p|0)/1.0e3*+g[(c[4919810]|0)+28>>2];k=j<0.0;l=k?0.0:j;m=l>1.0;n=m?1.0:l;o=a+32|0;g[o>>2]=n;i=b;return}}function AQ(b){b=b|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0,s=0,t=0;e=i;i=i+8|0;f=e|0;h=f|0;n$(h|0,-1|0,3)|0;c[7094299]=(c[7094299]|0)+1;j=+g[b+44>>2];if(j>-1.0){k=1.0}else{k=-0.0-j}j=+(c[7094176]|0)*(+g[(c[4919808]|0)+28>>2]/640.0+8.0/k);l=c[5145162]|0;m=k+ +T(+(l|0))*j;k=j*+(l|0)*j/(m*m)*+g[b+32>>2];m=+g[b+60>>2]*k;n=+g[b+64>>2]*k;o=k*+g[b+68>>2];l=c[253203]|0;p=b+20|0;do{if((l|0)==0){q=255.0;r=-1}else{s=c[p>>2]|0;if((s|0)<=0){q=255.0;r=-1;break}if((s|0)>=(c[l+224>>2]|0)){q=255.0;r=-1;break}c[340902]=1;g[310890]=+g[b+48>>2];g[310891]=+g[b+52>>2];g[310892]=+g[b+56>>2];c[340896]=c[p>>2];LT(h);s=a[h]|0;t=a[f+1|0]|0;if(!(s<<24>>24==0)){q=+(s&255|0);r=t;break}if(!(t<<24>>24==0)){q=0.0;r=t;break}if((a[f+2|0]|0)!=0){q=0.0;r=0;break}i=e;return}}while(0);h=~~(o*+(d[f+2|0]|0));wT(c[253345]|0,c[p>>2]|0,0);p=b+36|0;g[1243560+(c[340902]<<4)>>2]=+(c[p>>2]|0)-j;f=b+40|0;b=c[340902]|0;g[1243564+(b<<4)>>2]=+(c[f>>2]|0)-j;g[1267560+(b<<4)>>2]=0.0;b=c[340902]|0;g[1267564+(b<<4)>>2]=0.0;o=+(~~(m*q)|0)/255.0;g[1283560+(b<<4)>>2]=o;q=+(~~(n*+(r&255|0))|0)/255.0;r=c[340902]|0;g[1283564+(r<<4)>>2]=q;n=+(h|0)/255.0;g[1283568+(r<<4)>>2]=n;g[1283572+(r<<4)>>2]=1.0;h=r+1|0;c[340902]=h;g[1243560+(h<<4)>>2]=+(c[p>>2]|0)-j;h=c[340902]|0;g[1243564+(h<<4)>>2]=j+ +(c[f>>2]|0);g[1267560+(h<<4)>>2]=0.0;h=c[340902]|0;g[1267564+(h<<4)>>2]=1.0;g[1283560+(h<<4)>>2]=o;h=c[340902]|0;g[1283564+(h<<4)>>2]=q;g[1283568+(h<<4)>>2]=n;g[1283572+(h<<4)>>2]=1.0;r=h+1|0;c[340902]=r;g[1243560+(r<<4)>>2]=j+ +(c[p>>2]|0);r=c[340902]|0;g[1243564+(r<<4)>>2]=j+ +(c[f>>2]|0);g[1267560+(r<<4)>>2]=1.0;r=c[340902]|0;g[1267564+(r<<4)>>2]=1.0;g[1283560+(r<<4)>>2]=o;r=c[340902]|0;g[1283564+(r<<4)>>2]=q;g[1283568+(r<<4)>>2]=n;g[1283572+(r<<4)>>2]=1.0;h=r+1|0;c[340902]=h;g[1243560+(h<<4)>>2]=j+ +(c[p>>2]|0);p=c[340902]|0;g[1243564+(p<<4)>>2]=+(c[f>>2]|0)-j;g[1267560+(p<<4)>>2]=1.0;p=c[340902]|0;g[1267564+(p<<4)>>2]=0.0;g[1283560+(p<<4)>>2]=o;p=c[340902]|0;g[1283564+(p<<4)>>2]=q;g[1283568+(p<<4)>>2]=n;g[1283572+(p<<4)>>2]=1.0;c[340902]=p+1;p=c[340901]|0;c[340901]=p+1;c[1219560+(p<<2)>>2]=0;p=c[340901]|0;c[340901]=p+1;c[1219560+(p<<2)>>2]=1;p=c[340901]|0;c[340901]=p+1;c[1219560+(p<<2)>>2]=2;p=c[340901]|0;c[340901]=p+1;c[1219560+(p<<2)>>2]=0;p=c[340901]|0;c[340901]=p+1;c[1219560+(p<<2)>>2]=2;p=c[340901]|0;c[340901]=p+1;c[1219560+(p<<2)>>2]=3;zT();i=e;return}function BQ(){var a=0,b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0;a=i;i=i+192|0;b=a|0;d=a+64|0;e=a+128|0;if((c[(c[4917502]|0)+32>>2]|0)==0){f=64;h=0;j=64;k=0;l=64;m=0;i=a;return}n=c[4919812]|0;o=n+20|0;if((c[o>>2]|0)!=0){p=+g[n+28>>2];if(p==0.0){q=~~+h$(112352)}else{q=~~p}c[5145162]=q;c[o>>2]=0}c[7094307]=1013432;m$(28376932,28376456,188)|0;o=c[4919928]|0;if((o|0)==0){f=64;h=0;j=64;k=0;l=64;m=0;i=a;return}else{r=19679712;s=0;t=o}a:while(1){o=t;while(1){if((c[o+4>>2]|0)<((c[7094168]|0)-1|0)){q=o|0;c[r>>2]=c[q>>2];c[q>>2]=c[4917448]}else{q=o+32|0;g[q>>2]=0.0;if((c[o+12>>2]|0)!=(c[7094167]|0)){u=s;break}if((c[o+8>>2]|0)!=(c[7094164]|0)){u=s;break}zQ(o);if(+g[q>>2]!=0.0){u=1;break}q=o|0;c[r>>2]=c[q>>2];c[q>>2]=c[4917448]}c[4917448]=o;q=c[r>>2]|0;if((q|0)==0){v=s;break a}else{o=q}}q=o|0;n=c[q>>2]|0;if((n|0)==0){v=u;break}else{r=q;s=u;t=n}}if((v|0)==0){f=64;h=0;j=64;k=0;l=64;m=0;i=a;return}if((c[7094164]|0)!=0){kg(12288)}v=d|0;bQ(20480572,v);d=b|0;bQ(20480508,d);b=e|0;aQ(b);hP(b);e=c[7094174]|0;t=c[7094175]|0;gQ(+(e|0),+((c[7094176]|0)+e|0),+(t|0),+((c[7094177]|0)+t|0),-99999.0,99999.0,b);gP(b);b=c[4919928]|0;if((b|0)!=0){t=b;do{do{if((c[t+12>>2]|0)==(c[7094167]|0)){if((c[t+8>>2]|0)!=(c[7094164]|0)){break}if(!(+g[t+32>>2]!=0.0)){break}AQ(t)}}while(0);t=c[t>>2]|0;}while((t|0)!=0)}gP(v);hP(d);f=64;h=0;j=64;k=0;l=64;m=0;i=a;return}function CQ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+1032|0;g=f|0;h=f+8|0;if((a|0)==0){Tk[c[4886344]&255](0,112288,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=1024;l=0;i=f;return}MP();if((c[4886386]|0)>5){Tk[c[4886344]&255](2,167776,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=1024;l=0;i=f;return}$B(h,1024,142312,(j=i,i=i+8|0,c[j>>2]=(b|0)<1?12:b,j)|0)|0;i=j;a:do{if((c[4886386]|0)>0){b=0;while(1){a=b+1|0;if((VB(h,19566036+(b*20548|0)|0)|0)==0){break}if((a|0)<(c[4886386]|0)){b=a}else{break a}}m$(e|0,19545552+(b*20548|0)|0,20548)|0;k=1024;l=0;i=f;return}}while(0);if((Kk[c[4886365]&255](h,0)|0)!=20548){Tk[c[4886344]&255](2,127384,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=1024;l=0;i=f;return}Kk[c[4886365]&255](h,g)|0;c[5145344]=0;j=c[g>>2]|0;c[5145346]=j;a=0;m=0;n=j;while(1){o=(d[n+(m+1)|0]|0)<<8|(d[n+m|0]|0)|(d[n+(m+2)|0]|0)<<16|(d[n+(m+3)|0]|0)<<24;if((a|0)>=256){break}c[5145344]=m+4;c[e+(a*80|0)>>2]=o;j=c[5145344]|0;p=(d[n+(j+1)|0]|0)<<8|(d[n+j|0]|0)|(d[n+(j+2)|0]|0)<<16|(d[n+(j+3)|0]|0)<<24;c[5145344]=j+4;c[e+(a*80|0)+4>>2]=p;p=c[5145344]|0;j=(d[n+(p+1)|0]|0)<<8|(d[n+p|0]|0)|(d[n+(p+2)|0]|0)<<16|(d[n+(p+3)|0]|0)<<24;c[5145344]=p+4;c[e+(a*80|0)+8>>2]=j;j=c[5145344]|0;p=(d[n+(j+1)|0]|0)<<8|(d[n+j|0]|0)|(d[n+(j+2)|0]|0)<<16|(d[n+(j+3)|0]|0)<<24;c[5145344]=j+4;c[e+(a*80|0)+12>>2]=p;p=c[5145344]|0;j=(d[n+(p+1)|0]|0)<<8|(d[n+p|0]|0)|(d[n+(p+2)|0]|0)<<16|(d[n+(p+3)|0]|0)<<24;c[5145344]=p+4;c[e+(a*80|0)+16>>2]=j;j=c[5145344]|0;p=c[5145346]|0;q=(d[p+(j+1)|0]|0)<<8|(d[p+j|0]|0)|(d[p+(j+2)|0]|0)<<16|(d[p+(j+3)|0]|0)<<24;c[5145344]=j+4;c[e+(a*80|0)+20>>2]=q;q=c[5145344]|0;j=(d[p+(q+1)|0]|0)<<8|(d[p+q|0]|0)|(d[p+(q+2)|0]|0)<<16|(d[p+(q+3)|0]|0)<<24;c[5145344]=q+4;c[e+(a*80|0)+24>>2]=j;j=c[5145344]|0;q=(d[p+(j+1)|0]|0)<<8|(d[p+j|0]|0)|(d[p+(j+2)|0]|0)<<16|(d[p+(j+3)|0]|0)<<24|0;r=j+4|0;c[5145344]=r;c[e+(a*80|0)+28>>2]=q;q=(d[p+(j+5)|0]|0)<<8|(d[p+r|0]|0)|(d[p+(j+6)|0]|0)<<16|(d[p+(j+7)|0]|0)<<24|0;p=j+8|0;c[5145344]=p;c[e+(a*80|0)+32>>2]=q;q=c[5145346]|0;r=(d[q+(j+9)|0]|0)<<8|(d[q+p|0]|0)|(d[q+(j+10)|0]|0)<<16|(d[q+(j+11)|0]|0)<<24|0;p=j+12|0;c[5145344]=p;c[e+(a*80|0)+36>>2]=r;r=(d[q+(j+13)|0]|0)<<8|(d[q+p|0]|0)|(d[q+(j+14)|0]|0)<<16|(d[q+(j+15)|0]|0)<<24|0;p=j+16|0;c[5145344]=p;c[e+(a*80|0)+40>>2]=r;r=(d[q+(j+17)|0]|0)<<8|(d[q+p|0]|0)|(d[q+(j+18)|0]|0)<<16|(d[q+(j+19)|0]|0)<<24;c[5145344]=j+20;c[e+(a*80|0)+44>>2]=r;TB(e+(a*80|0)+48|0,q+(c[5145344]|0)|0,32);q=(c[5145344]|0)+32|0;c[5145344]=q;a=a+1|0;m=q;n=c[5145346]|0}a=o|0;o=m+4|0;c[5145344]=o;c[e+20480>>2]=a;a=e+20484|0;m$(a|0,n+o|0,64)|0;TB(a,h,64);h=0;do{c[e+(h*80|0)+44>>2]=_T(e+(h*80|0)+48|0)|0;h=h+1|0;}while((h|0)<255);h=c[4886386]|0;c[4886386]=h+1;m$(19545552+(h*20548|0)|0,e|0,20548)|0;vk[c[4886366]&511](c[g>>2]|0);k=1024;l=0;i=f;return}function DQ(){c[4886386]=0;return}function EQ(){c[4886386]=0;return}function FQ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=(c[a+460>>2]|0)+(b[a+332+(d<<1)>>1]|0)|0;h=a+80+(d<<2)|0;if((c[h>>2]|0)==-1){i=f;return}if((c[1180+(d<<3)>>2]|0)!=0){Tk[c[4886344]&255](2,167712,(j=i,i=i+16|0,c[j>>2]=d,c[j+8>>2]=a,j)|0);i=j;i=f;return}if((c[g>>2]|0)==(e|0)){i=f;return}c[g>>2]=e;hk[c[4919974]&255](c[h>>2]|0,e);i=f;return}function GQ(a,d,e){a=a|0;d=d|0;e=+e;var f=0,h=0,j=0,k=0;f=i;h=(c[a+460>>2]|0)+(b[a+332+(d<<1)>>1]|0)|0;j=c[a+80+(d<<2)>>2]|0;if((j|0)==-1){i=f;return}if((c[1180+(d<<3)>>2]|0)!=1){Tk[c[4886344]&255](2,142248,(k=i,i=i+16|0,c[k>>2]=d,c[k+8>>2]=a,k)|0);i=k;i=f;return}if(+g[h>>2]==e){i=f;return}g[h>>2]=e;ck[c[4919978]&15](j,e);i=f;return}function HQ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0;f=i;h=c[a+460>>2]|0;j=b[a+332+(d<<1)>>1]|0;k=h+j|0;l=c[a+80+(d<<2)>>2]|0;if((l|0)==-1){i=f;return}if((c[1180+(d<<3)>>2]|0)!=3){Tk[c[4886344]&255](2,127320,(m=i,i=i+16|0,c[m>>2]=d,c[m+8>>2]=a,m)|0);i=m;i=f;return}n=+g[e>>2];m=e+4|0;do{if(n==+g[k>>2]){a=h+(j+4)|0;if(!(+g[m>>2]==+g[a>>2])){o=a;break}i=f;return}else{o=h+(j+4)|0}}while(0);g[k>>2]=n;g[o>>2]=+g[m>>2];Ck[c[4919972]&7](l,+g[e>>2],+g[m>>2]);i=f;return}function IQ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0;f=i;h=c[a+460>>2]|0;j=b[a+332+(d<<1)>>1]|0;k=h+j|0;l=c[a+80+(d<<2)>>2]|0;if((l|0)==-1){i=f;return}if((c[1180+(d<<3)>>2]|0)!=4){Tk[c[4886344]&255](2,116896,(m=i,i=i+16|0,c[m>>2]=d,c[m+8>>2]=a,m)|0);i=m;i=f;return}n=+g[e>>2];m=e+4|0;do{if(n!=+g[k>>2]){o=h+(j+4)|0}else{a=h+(j+4)|0;if(+g[m>>2]!=+g[a>>2]){o=a;break}if(+g[e+8>>2]!=+g[h+(j+8)>>2]){o=a;break}i=f;return}}while(0);g[k>>2]=n;g[o>>2]=+g[m>>2];o=e+8|0;g[h+(j+8)>>2]=+g[o>>2];xk[c[4919964]&7](l,+g[e>>2],+g[m>>2],+g[o>>2]);i=f;return}function JQ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0;f=i;h=c[a+460>>2]|0;j=b[a+332+(d<<1)>>1]|0;k=h+j|0;l=c[a+80+(d<<2)>>2]|0;if((l|0)==-1){i=f;return}if((c[1180+(d<<3)>>2]|0)!=5){Tk[c[4886344]&255](2,106536,(m=i,i=i+16|0,c[m>>2]=d,c[m+8>>2]=a,m)|0);i=m;i=f;return}n=+g[e>>2];m=e+4|0;do{if(n!=+g[k>>2]){o=h+(j+4)|0}else{a=h+(j+4)|0;if(+g[m>>2]!=+g[a>>2]){o=a;break}if(+g[e+8>>2]!=+g[h+(j+8)>>2]){o=a;break}if(+g[e+12>>2]!=+g[h+(j+12)>>2]){o=a;break}i=f;return}}while(0);g[k>>2]=n;g[o>>2]=+g[m>>2];o=e+8|0;g[h+(j+8)>>2]=+g[o>>2];k=e+12|0;g[h+(j+12)>>2]=+g[k>>2];sk[c[4919956]&15](l,+g[e>>2],+g[m>>2],+g[o>>2],+g[k>>2]);i=f;return}function KQ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0;f=i;h=c[a+460>>2]|0;j=b[a+332+(d<<1)>>1]|0;k=h+j|0;l=c[a+80+(d<<2)>>2]|0;if((l|0)==-1){i=f;return}if((d|0)!=24){Tk[c[4886344]&255](2,63320,(m=i,i=i+16|0,c[m>>2]=d,c[m+8>>2]=a,m)|0);i=m;i=f;return}n=+g[e>>2];m=e+4|0;do{if(n!=+g[k>>2]){o=h+(j+4)|0}else{a=h+(j+4)|0;if(+g[m>>2]!=+g[a>>2]){o=a;break}if(+g[e+8>>2]!=+g[h+(j+8)>>2]){o=a;break}if(+g[e+12>>2]!=+g[h+(j+12)>>2]){o=a;break}if(+g[e+16>>2]!=+g[h+(j+16)>>2]){o=a;break}i=f;return}}while(0);g[k>>2]=n;g[o>>2]=+g[m>>2];g[h+(j+8)>>2]=+g[e+8>>2];g[h+(j+12)>>2]=+g[e+12>>2];g[h+(j+16)>>2]=+g[e+16>>2];Tk[c[4919976]&255](l,5,e);i=f;return}function LQ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=(c[a+460>>2]|0)+(b[a+332+(d<<1)>>1]|0)|0;h=a+80+(d<<2)|0;if((c[h>>2]|0)==-1){i=f;return}if((c[1180+(d<<3)>>2]|0)!=6){Tk[c[4886344]&255](2,55528,(j=i,i=i+16|0,c[j>>2]=d,c[j+8>>2]=a,j)|0);i=j;i=f;return}if((eQ(e,g)|0)!=0){i=f;return}bQ(e,g);Yk[c[4919944]&255](c[h>>2]|0,1,0,e);i=f;return}function MQ(){var d=0,e=0,f=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;d=i;i=i+2144|0;e=d|0;f=d+8|0;j=d+16|0;k=d+24|0;l=d+32|0;m=d+40|0;n=d+48|0;o=d+56|0;p=d+64|0;q=d+72|0;r=d+80|0;s=d+88|0;t=d+96|0;u=d+104|0;v=d+112|0;w=d+120|0;x=d+1120|0;Tk[c[4886344]&255](0,49104,(y=i,i=i+1|0,i=i+7&-8,c[y>>2]=0,y)|0);i=y;z=0;A=0;while(1){B=(c[c[9104+(A<<2)>>2]>>2]|0)+20|0;if((c[B>>2]|0)==0){C=z}else{c[B>>2]=0;C=1}B=A+1|0;if((B|0)<14){z=C;A=B}else{break}}do{if((c[236126]|0)!=0){if((C|0)!=0){NQ();break}Tk[c[4886344]&255](0,44712,(y=i,i=i+1|0,i=i+7&-8,c[y>>2]=0,y)|0);i=y;D=1024;E=0;i=d;return}}while(0);MP();C=Ok[c[4886346]&63]()|0;A=w|0;w=0;do{a[x]=0;if((w&1|0)!=0){XB(x,1024,183744)}if((w&2|0)!=0){XB(x,1024,18e4);XB(x,1024,175424)}if((w&4|0)==0){F=55}else{XB(x,1024,171848);F=5175}if((w&8|0)!=0){XB(x,1024,169008)}if((w&16|0)!=0){XB(x,1024,165504)}if((w&32|0)!=0){XB(x,1024,162392)}do{if((c[(c[4917466]|0)+32>>2]|0)!=0){if((c[5120187]|0)!=0&(c[5120188]|0)!=0){if((c[(c[4917500]|0)+32>>2]|0)!=0){break}}XB(x,1024,159536)}}while(0);if((OQ(944508+(w*464|0)|0,157024,F,x,1,c[7238]|0,c[7240]|0)|0)==0){G=27;break}z=944572+(w*464|0)|0;B=0;H=0;while(1){I=Kk[c[4920004]&255](c[z>>2]|0,c[1176+(H<<3)>>2]|0)|0;c[944588+(w*464|0)+(H<<2)>>2]=I;a:do{if((I|0)==-1){J=B}else{b[944840+(w*464|0)+(H<<1)>>1]=B;switch(c[1180+(H<<3)>>2]|0){case 1:{J=B+4|0;break a;break};case 2:{J=B+20|0;break a;break};case 6:{J=B+64|0;break a;break};case 3:{J=B+8|0;break a;break};case 4:{J=B+12|0;break a;break};case 5:{J=B+16|0;break a;break};case 0:{J=B+4|0;break a;break};default:{J=B;break a}}}}while(0);I=H+1|0;if((I|0)<63){B=J;H=I}else{break}}H=944968+(w*464|0)|0;c[H>>2]=jk[c[4886350]&255](J)|0;vk[c[4919940]&511](c[z>>2]|0);B=c[H>>2]|0;I=B+(b[944840+(w*464|0)>>1]|0)|0;K=944588+(w*464|0)|0;do{if((c[K>>2]|0)==-1){L=B}else{if((c[I>>2]|0)==0){L=B;break}c[I>>2]=0;hk[c[4919974]&255](c[K>>2]|0,0);L=c[H>>2]|0}}while(0);H=L+(b[944842+(w*464|0)>>1]|0)|0;K=944592+(w*464|0)|0;do{if(!((c[K>>2]|0)==-1)){if((c[H>>2]|0)==1){break}c[H>>2]=1;hk[c[4919974]&255](c[K>>2]|0,1)}}while(0);vk[c[4919940]&511](0);K=c[z>>2]|0;if((bt(175952)|0)!=0){vk[c[4919940]&511](K);Tk[c[4920014]&255](K,35718,t);if((c[t>>2]|0)>0){H=0;do{Gk[c[4920032]&63](K,H,1e3,0,u,v,A);Tk[c[4886344]&255](1,175664,(y=i,i=i+8|0,c[y>>2]=A,y)|0);i=y;H=H+1|0;}while((H|0)<(c[t>>2]|0))}vk[c[4919940]&511](0)}KR(112240,689);w=w+1|0;}while((w|0)<64);if((G|0)==27){Tk[c[4886345]&255](0,154664,(y=i,i=i+1|0,i=i+7&-8,c[y>>2]=0,y)|0);i=y}if((OQ(974204,152736,3,0,0,c[7230]|0,c[7232]|0)|0)==0){Tk[c[4886345]&255](0,150544,(y=i,i=i+1|0,i=i+7&-8,c[y>>2]=0,y)|0);i=y}else{M=0;N=0}while(1){t=Kk[c[4920004]&255](c[243567]|0,c[1176+(N<<3)>>2]|0)|0;c[974284+(N<<2)>>2]=t;b:do{if((t|0)==-1){O=M}else{b[974536+(N<<1)>>1]=M;switch(c[1180+(N<<3)>>2]|0){case 1:{O=M+4|0;break b;break};case 2:{O=M+20|0;break b;break};case 3:{O=M+8|0;break b;break};case 4:{O=M+12|0;break b;break};case 5:{O=M+16|0;break b;break};case 6:{O=M+64|0;break b;break};case 0:{O=M+4|0;break b;break};default:{O=M;break b}}}}while(0);t=N+1|0;if((t|0)<63){M=O;N=t}else{break}}c[243666]=jk[c[4886350]&255](O)|0;vk[c[4919940]&511](c[243567]|0);O=(c[243666]|0)+(b[487273]|0)|0;do{if(!((c[243576]|0)==-1)){if((c[O>>2]|0)==0){break}c[O>>2]=0;hk[c[4919974]&255](c[243576]|0,0)}}while(0);vk[c[4919940]&511](0);O=c[243567]|0;if((bt(175952)|0)!=0){vk[c[4919940]&511](O);Tk[c[4920014]&255](O,35718,q);if((c[q>>2]|0)>0){N=0;do{Gk[c[4920032]&63](O,N,1e3,0,r,s,A);Tk[c[4886344]&255](1,175664,(y=i,i=i+8|0,c[y>>2]=A,y)|0);i=y;N=N+1|0;}while((N|0)<(c[q>>2]|0))}vk[c[4919940]&511](0)}KR(112240,689);q=1;N=0;do{a[x]=0;if((N&1|0)!=0){XB(x,1024,183744)}if((N&2|0)!=0){XB(x,1024,171848)}if((OQ(974668+(N*464|0)|0,148360,5139,x,1,c[7242]|0,c[7244]|0)|0)==0){G=76;break}s=974732+(N*464|0)|0;r=0;O=0;while(1){M=Kk[c[4920004]&255](c[s>>2]|0,c[1176+(O<<3)>>2]|0)|0;c[974748+(N*464|0)+(O<<2)>>2]=M;c:do{if((M|0)==-1){P=r}else{b[975e3+(N*464|0)+(O<<1)>>1]=r;switch(c[1180+(O<<3)>>2]|0){case 1:{P=r+4|0;break c;break};case 2:{P=r+20|0;break c;break};case 3:{P=r+8|0;break c;break};case 4:{P=r+12|0;break c;break};case 5:{P=r+16|0;break c;break};case 6:{P=r+64|0;break c;break};case 0:{P=r+4|0;break c;break};default:{P=r;break c}}}}while(0);M=O+1|0;if((M|0)<63){r=P;O=M}else{break}}c[975128+(N*464|0)>>2]=jk[c[4886350]&255](P)|0;O=c[s>>2]|0;if((bt(175952)|0)!=0){vk[c[4919940]&511](O);Tk[c[4920014]&255](O,35718,n);if((c[n>>2]|0)>0){r=0;do{Gk[c[4920032]&63](O,r,1e3,0,o,p,A);Tk[c[4886344]&255](1,175664,(y=i,i=i+8|0,c[y>>2]=A,y)|0);i=y;r=r+1|0;}while((r|0)<(c[n>>2]|0))}vk[c[4919940]&511](0)}KR(112240,689);q=q+1|0;N=N+1|0;}while((N|0)<4);if((G|0)==76){Tk[c[4886345]&255](0,145720,(y=i,i=i+1|0,i=i+7&-8,c[y>>2]=0,y)|0);i=y}N=q;q=0;do{a[x]=0;if((q|0)!=0){XB(x,1024,183744)}if((OQ(976524+(q*464|0)|0,143464,19,x,1,c[7246]|0,c[7248]|0)|0)==0){G=97;break}n=976588+(q*464|0)|0;p=0;o=0;while(1){P=Kk[c[4920004]&255](c[n>>2]|0,c[1176+(o<<3)>>2]|0)|0;c[976604+(q*464|0)+(o<<2)>>2]=P;d:do{if((P|0)==-1){Q=p}else{b[976856+(q*464|0)+(o<<1)>>1]=p;switch(c[1180+(o<<3)>>2]|0){case 0:{Q=p+4|0;break d;break};case 1:{Q=p+4|0;break d;break};case 2:{Q=p+20|0;break d;break};case 3:{Q=p+8|0;break d;break};case 4:{Q=p+12|0;break d;break};case 5:{Q=p+16|0;break d;break};case 6:{Q=p+64|0;break d;break};default:{Q=p;break d}}}}while(0);P=o+1|0;if((P|0)<63){p=Q;o=P}else{break}}o=976984+(q*464|0)|0;c[o>>2]=jk[c[4886350]&255](Q)|0;vk[c[4919940]&511](c[n>>2]|0);p=(c[o>>2]|0)+(b[976856+(q*464|0)>>1]|0)|0;o=976604+(q*464|0)|0;do{if(!((c[o>>2]|0)==-1)){if((c[p>>2]|0)==0){break}c[p>>2]=0;hk[c[4919974]&255](c[o>>2]|0,0)}}while(0);vk[c[4919940]&511](0);o=c[n>>2]|0;if((bt(175952)|0)!=0){vk[c[4919940]&511](o);Tk[c[4920014]&255](o,35718,k);if((c[k>>2]|0)>0){p=0;do{Gk[c[4920032]&63](o,p,1e3,0,l,m,A);Tk[c[4886344]&255](1,175664,(y=i,i=i+8|0,c[y>>2]=A,y)|0);i=y;p=p+1|0;}while((p|0)<(c[k>>2]|0))}vk[c[4919940]&511](0)}KR(112240,689);N=N+1|0;q=q+1|0;}while((q|0)<2);if((G|0)==97){Tk[c[4886345]&255](0,140840,(y=i,i=i+1|0,i=i+7&-8,c[y>>2]=0,y)|0);i=y}q=0;k=0;e:while(1){m=k&3;if((c[(c[4917402]|0)+32>>2]|0)==0){R=(c[(c[4917324]|0)+32>>2]|0)==0}else{R=0}l=(k&16|0)!=0;if(l){if((c[(c[4917384]|0)+32>>2]|0)==0){S=q}else{G=121}}else{G=121}do{if((G|0)==121){G=0;Q=(k&32|0)!=0;if(Q){if((c[(c[4917306]|0)+32>>2]|0)==0){S=q;break}}p=(m|0)!=0;if(!(p|l^1)){S=q;break}if(!(p|Q^1)){S=q;break}a[x]=0;T=+g[(c[4919876]|0)+28>>2];if(T>9.999999974752427e-7){o=pC(138344,(y=i,i=i+8|0,h[y>>3]=T,y)|0)|0;i=y;XB(x,1024,o)}if(+g[(c[4917326]|0)+28>>2]!=0.0){XB(x,1024,136688)}if((c[(c[4919864]|0)+32>>2]|0)>1){XB(x,1024,135248)}XB(x,1024,133672);do{if((c[(c[4917466]|0)+32>>2]|0)!=0){if((c[5120187]|0)!=0&(c[5120188]|0)!=0){if((c[(c[4917500]|0)+32>>2]|0)!=0){break}}XB(x,1024,159536)}}while(0);do{if(p){if(R){XB(x,1024,132488)}else{XB(x,1024,131504)}do{if((m|0)==1){XB(x,1024,162392);if((c[(c[4919878]|0)+32>>2]|0)==0|R){U=183;break}XB(x,1024,130152);U=183}else if((m|0)==2){XB(x,1024,128888);U=51}else if((m|0)==3){XB(x,1024,127920);U=179}else{U=51}}while(0);do{if((c[(c[4917402]|0)+32>>2]|0)==0){V=U}else{XB(x,1024,126480);o=c[(c[4917402]|0)+32>>2]|0;if((o|0)==2){XB(x,1024,125232);W=c[(c[4917402]|0)+32>>2]|0}else{W=o}if((W|0)==3){XB(x,1024,124352)}XB(x,1024,123448);o=U|8;if((k&20|0)!=16){V=o;break}if((c[(c[4917384]|0)+32>>2]|0)==0){V=o;break}XB(x,1024,122656);V=o}}while(0);do{if((c[(c[4917324]|0)+32>>2]|0)!=0){XB(x,1024,121760);o=c[(c[4917324]|0)+32>>2]|0;if((o|0)==2){XB(x,1024,119624);break}else if((o|0)==3){XB(x,1024,118312);break}else if((o|0)==4){XB(x,1024,117360);break}else if((o|0)==5){XB(x,1024,116136);break}else{XB(x,1024,120904);break}}}while(0);if((c[(c[4919892]|0)+32>>2]|0)==0){X=V;break}XB(x,1024,114544);X=V}else{X=51}}while(0);do{if(Q){XB(x,1024,135248);p=c[(c[4917306]|0)+32>>2]|0;if((p|0)==1){XB(x,1024,113512);break}else if((p|0)==2){XB(x,1024,112584);break}else{break}}}while(0);if((k&8|0)!=0){XB(x,1024,18e4);XB(x,1024,175424)}if((k&4|0)==0){Y=X}else{XB(x,1024,111704);Y=((c[(c[4917402]|0)+32>>2]|0)==0?5120:7168)|X}if((OQ(977452+(k*464|0)|0,110976,Y,x,1,c[7234]|0,c[7236]|0)|0)==0){G=170;break e}Q=977516+(k*464|0)|0;p=0;o=0;while(1){n=Kk[c[4920004]&255](c[Q>>2]|0,c[1176+(o<<3)>>2]|0)|0;c[977532+(k*464|0)+(o<<2)>>2]=n;f:do{if((n|0)==-1){Z=p}else{b[977784+(k*464|0)+(o<<1)>>1]=p;switch(c[1180+(o<<3)>>2]|0){case 0:{Z=p+4|0;break f;break};case 1:{Z=p+4|0;break f;break};case 2:{Z=p+20|0;break f;break};case 3:{Z=p+8|0;break f;break};case 4:{Z=p+12|0;break f;break};case 5:{Z=p+16|0;break f;break};case 6:{Z=p+64|0;break f;break};default:{Z=p;break f}}}}while(0);n=o+1|0;if((n|0)<63){p=Z;o=n}else{break}}o=977912+(k*464|0)|0;c[o>>2]=jk[c[4886350]&255](Z)|0;vk[c[4919940]&511](c[Q>>2]|0);p=c[o>>2]|0;n=p+(b[977784+(k*464|0)>>1]|0)|0;P=977532+(k*464|0)|0;do{if((c[P>>2]|0)==-1){_=p}else{if((c[n>>2]|0)==0){_=p;break}c[n>>2]=0;hk[c[4919974]&255](c[P>>2]|0,0);_=c[o>>2]|0}}while(0);P=_+(b[977786+(k*464|0)>>1]|0)|0;n=977536+(k*464|0)|0;do{if((c[n>>2]|0)==-1){$=_}else{if((c[P>>2]|0)==1){$=_;break}c[P>>2]=1;hk[c[4919974]&255](c[n>>2]|0,1);$=c[o>>2]|0}}while(0);n=$+(b[977788+(k*464|0)>>1]|0)|0;P=977540+(k*464|0)|0;do{if((c[P>>2]|0)==-1){aa=$}else{if((c[n>>2]|0)==2){aa=$;break}c[n>>2]=2;hk[c[4919974]&255](c[P>>2]|0,2);aa=c[o>>2]|0}}while(0);P=aa+(b[977790+(k*464|0)>>1]|0)|0;n=977544+(k*464|0)|0;do{if((c[n>>2]|0)==-1){ba=aa}else{if((c[P>>2]|0)==3){ba=aa;break}c[P>>2]=3;hk[c[4919974]&255](c[n>>2]|0,3);ba=c[o>>2]|0}}while(0);n=ba+(b[977792+(k*464|0)>>1]|0)|0;P=977548+(k*464|0)|0;do{if((c[P>>2]|0)==-1){ca=ba}else{if((c[n>>2]|0)==4){ca=ba;break}c[n>>2]=4;hk[c[4919974]&255](c[P>>2]|0,4);ca=c[o>>2]|0}}while(0);P=ca+(b[977804+(k*464|0)>>1]|0)|0;n=977572+(k*464|0)|0;do{if((c[n>>2]|0)==-1){da=ca}else{if((c[P>>2]|0)==5){da=ca;break}c[P>>2]=5;hk[c[4919974]&255](c[n>>2]|0,5);da=c[o>>2]|0}}while(0);o=da+(b[977798+(k*464|0)>>1]|0)|0;n=977560+(k*464|0)|0;do{if(!((c[n>>2]|0)==-1)){if((c[o>>2]|0)==6){break}c[o>>2]=6;hk[c[4919974]&255](c[n>>2]|0,6)}}while(0);vk[c[4919940]&511](0);n=c[Q>>2]|0;if((bt(175952)|0)!=0){vk[c[4919940]&511](n);Tk[c[4920014]&255](n,35718,e);if((c[e>>2]|0)>0){o=0;do{Gk[c[4920032]&63](n,o,1e3,0,f,j,A);Tk[c[4886344]&255](1,175664,(y=i,i=i+8|0,c[y>>2]=A,y)|0);i=y;o=o+1|0;}while((o|0)<(c[e>>2]|0))}vk[c[4919940]&511](0)}KR(112240,689);S=q+1|0}}while(0);m=k+1|0;if((m|0)<64){q=S;k=m}else{break}}if((G|0)==170){Tk[c[4886345]&255](0,110216,(y=i,i=i+1|0,i=i+7&-8,c[y>>2]=0,y)|0);i=y}G=Ok[c[4886346]&63]()|0;Tk[c[4886344]&255](0,108840,(y=i,i=i+40|0,c[y>>2]=N+w+S,c[y+8>>2]=w,c[y+16>>2]=S,c[y+24>>2]=N,h[y+32>>3]=+(G-C|0)/1.0e3,y)|0);i=y;c[236126]=1;D=1024;E=0;i=d;return}function NQ(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;a=i;Tk[c[4886344]&255](0,107784,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;vk[c[4920058]&511](1);vk[c[4920058]&511](2);vk[c[4920058]&511](0);vk[c[4920058]&511](10);vk[c[4920058]&511](4);vk[c[4920058]&511](3);vk[c[4920058]&511](12);vk[c[4920058]&511](11);vk[c[4920058]&511](5);vk[c[4920058]&511](7);if((c[(c[4917434]|0)+32>>2]|0)!=0){cV(105928)}if((c[5120123]|0)==0){d=0}else{vk[c[4919940]&511](0);c[5120123]=0;d=0}do{b=944572+(d*464|0)|0;e=c[b>>2]|0;if((e|0)!=0){f=944576+(d*464|0)|0;g=c[f>>2]|0;if((g|0)!=0){hk[c[4920060]&255](e,g);vk[c[4920066]&511](c[f>>2]|0)}f=944580+(d*464|0)|0;g=c[f>>2]|0;if((g|0)!=0){hk[c[4920060]&255](c[b>>2]|0,g);vk[c[4920066]&511](c[f>>2]|0)}vk[c[4920066]&511](c[b>>2]|0);b=c[944968+(d*464|0)>>2]|0;if((b|0)!=0){vk[c[4886351]&511](b)}n$(944508+(d*464|0)|0,0,464)|0}d=d+1|0;}while((d|0)<64);d=c[243567]|0;if((d|0)==0){h=0}else{b=c[243568]|0;if((b|0)!=0){hk[c[4920060]&255](d,b);vk[c[4920066]&511](c[243568]|0)}b=c[243569]|0;if((b|0)!=0){hk[c[4920060]&255](c[243567]|0,b);vk[c[4920066]&511](c[243569]|0)}vk[c[4920066]&511](c[243567]|0);b=c[243666]|0;if((b|0)!=0){vk[c[4886351]&511](b)}n$(974204,0,464)|0;h=0}do{b=974732+(h*464|0)|0;d=c[b>>2]|0;if((d|0)!=0){f=974736+(h*464|0)|0;g=c[f>>2]|0;if((g|0)!=0){hk[c[4920060]&255](d,g);vk[c[4920066]&511](c[f>>2]|0)}f=974740+(h*464|0)|0;g=c[f>>2]|0;if((g|0)!=0){hk[c[4920060]&255](c[b>>2]|0,g);vk[c[4920066]&511](c[f>>2]|0)}vk[c[4920066]&511](c[b>>2]|0);b=c[975128+(h*464|0)>>2]|0;if((b|0)!=0){vk[c[4886351]&511](b)}n$(974668+(h*464|0)|0,0,464)|0}h=h+1|0;}while((h|0)<4);h=c[244147]|0;if((h|0)!=0){b=c[244148]|0;if((b|0)!=0){hk[c[4920060]&255](h,b);vk[c[4920066]&511](c[244148]|0)}b=c[244149]|0;if((b|0)!=0){hk[c[4920060]&255](c[244147]|0,b);vk[c[4920066]&511](c[244149]|0)}vk[c[4920066]&511](c[244147]|0);b=c[244246]|0;if((b|0)!=0){vk[c[4886351]&511](b)}n$(976524,0,464)|0}b=c[244263]|0;if((b|0)==0){j=0}else{h=c[244264]|0;if((h|0)!=0){hk[c[4920060]&255](b,h);vk[c[4920066]&511](c[244264]|0)}h=c[244265]|0;if((h|0)!=0){hk[c[4920060]&255](c[244263]|0,h);vk[c[4920066]&511](c[244265]|0)}vk[c[4920066]&511](c[244263]|0);h=c[244362]|0;if((h|0)!=0){vk[c[4886351]&511](h)}n$(976988,0,464)|0;j=0}do{h=977516+(j*464|0)|0;b=c[h>>2]|0;if((b|0)!=0){f=977520+(j*464|0)|0;g=c[f>>2]|0;if((g|0)!=0){hk[c[4920060]&255](b,g);vk[c[4920066]&511](c[f>>2]|0)}f=977524+(j*464|0)|0;g=c[f>>2]|0;if((g|0)!=0){hk[c[4920060]&255](c[h>>2]|0,g);vk[c[4920066]&511](c[f>>2]|0)}vk[c[4920066]&511](c[h>>2]|0);h=c[977912+(j*464|0)>>2]|0;if((h|0)!=0){vk[c[4886351]&511](h)}n$(977452+(j*464|0)|0,0,464)|0}j=j+1|0;}while((j|0)<64);j=c[251803]|0;if((j|0)!=0){h=c[251804]|0;if((h|0)!=0){hk[c[4920060]&255](j,h);vk[c[4920066]&511](c[251804]|0)}h=c[251805]|0;if((h|0)!=0){hk[c[4920060]&255](c[251803]|0,h);vk[c[4920066]&511](c[251805]|0)}vk[c[4920066]&511](c[251803]|0);h=c[251902]|0;if((h|0)!=0){vk[c[4886351]&511](h)}n$(1007148,0,464)|0}h=c[251919]|0;if((h|0)!=0){j=c[251920]|0;if((j|0)!=0){hk[c[4920060]&255](h,j);vk[c[4920066]&511](c[251920]|0)}j=c[251921]|0;if((j|0)!=0){hk[c[4920060]&255](c[251919]|0,j);vk[c[4920066]&511](c[251921]|0)}vk[c[4920066]&511](c[251919]|0);j=c[252018]|0;if((j|0)!=0){vk[c[4886351]&511](j)}n$(1007612,0,464)|0}j=c[252035]|0;if((j|0)!=0){h=c[252036]|0;if((h|0)!=0){hk[c[4920060]&255](j,h);vk[c[4920066]&511](c[252036]|0)}h=c[252037]|0;if((h|0)!=0){hk[c[4920060]&255](c[252035]|0,h);vk[c[4920066]&511](c[252037]|0)}vk[c[4920066]&511](c[252035]|0);h=c[252134]|0;if((h|0)!=0){vk[c[4886351]&511](h)}n$(1008076,0,464)|0}h=c[252151]|0;if((h|0)!=0){j=c[252152]|0;if((j|0)!=0){hk[c[4920060]&255](h,j);vk[c[4920066]&511](c[252152]|0)}j=c[252153]|0;if((j|0)!=0){hk[c[4920060]&255](c[252151]|0,j);vk[c[4920066]&511](c[252153]|0)}vk[c[4920066]&511](c[252151]|0);j=c[252250]|0;if((j|0)!=0){vk[c[4886351]&511](j)}n$(1008540,0,464)|0}j=c[252267]|0;if((j|0)!=0){h=c[252268]|0;if((h|0)!=0){hk[c[4920060]&255](j,h);vk[c[4920066]&511](c[252268]|0)}h=c[252269]|0;if((h|0)!=0){hk[c[4920060]&255](c[252267]|0,h);vk[c[4920066]&511](c[252269]|0)}vk[c[4920066]&511](c[252267]|0);h=c[252366]|0;if((h|0)!=0){vk[c[4886351]&511](h)}n$(1009004,0,464)|0}h=c[252383]|0;if((h|0)!=0){j=c[252384]|0;if((j|0)!=0){hk[c[4920060]&255](h,j);vk[c[4920066]&511](c[252384]|0)}j=c[252385]|0;if((j|0)!=0){hk[c[4920060]&255](c[252383]|0,j);vk[c[4920066]&511](c[252385]|0)}vk[c[4920066]&511](c[252383]|0);j=c[252482]|0;if((j|0)!=0){vk[c[4886351]&511](j)}n$(1009468,0,464)|0}j=c[252499]|0;if((j|0)!=0){h=c[252500]|0;if((h|0)!=0){hk[c[4920060]&255](j,h);vk[c[4920066]&511](c[252500]|0)}h=c[252501]|0;if((h|0)!=0){hk[c[4920060]&255](c[252499]|0,h);vk[c[4920066]&511](c[252501]|0)}vk[c[4920066]&511](c[252499]|0);h=c[252598]|0;if((h|0)!=0){vk[c[4886351]&511](h)}n$(1009932,0,464)|0}h=c[252615]|0;if((h|0)!=0){j=c[252616]|0;if((j|0)!=0){hk[c[4920060]&255](h,j);vk[c[4920066]&511](c[252616]|0)}j=c[252617]|0;if((j|0)!=0){hk[c[4920060]&255](c[252615]|0,j);vk[c[4920066]&511](c[252617]|0)}vk[c[4920066]&511](c[252615]|0);j=c[252714]|0;if((j|0)!=0){vk[c[4886351]&511](j)}n$(1010396,0,464)|0}j=c[252731]|0;if((j|0)!=0){h=c[252732]|0;if((h|0)!=0){hk[c[4920060]&255](j,h);vk[c[4920066]&511](c[252732]|0)}h=c[252733]|0;if((h|0)!=0){hk[c[4920060]&255](c[252731]|0,h);vk[c[4920066]&511](c[252733]|0)}vk[c[4920066]&511](c[252731]|0);h=c[252830]|0;if((h|0)!=0){vk[c[4886351]&511](h)}n$(1010860,0,464)|0}h=c[252847]|0;if((h|0)!=0){j=c[252848]|0;if((j|0)!=0){hk[c[4920060]&255](h,j);vk[c[4920066]&511](c[252848]|0)}j=c[252849]|0;if((j|0)!=0){hk[c[4920060]&255](c[252847]|0,j);vk[c[4920066]&511](c[252849]|0)}vk[c[4920066]&511](c[252847]|0);j=c[252946]|0;if((j|0)!=0){vk[c[4886351]&511](j)}n$(1011324,0,464)|0}j=c[252963]|0;if((j|0)==0){c[5120123]=0;k=c[4919940]|0;vk[k&511](0);i=a;return}h=c[252964]|0;if((h|0)!=0){hk[c[4920060]&255](j,h);vk[c[4920066]&511](c[252964]|0)}h=c[252965]|0;if((h|0)!=0){hk[c[4920060]&255](c[252963]|0,h);vk[c[4920066]&511](c[252965]|0)}vk[c[4920066]&511](c[252963]|0);h=c[253062]|0;if((h|0)!=0){vk[c[4886351]&511](h)}n$(1011788,0,464)|0;c[5120123]=0;k=c[4919940]|0;vk[k&511](0);i=a;return}function OQ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+64008|0;k=j|0;l=j+8|0;m=j+32008|0;n=l|0;o=m|0;p=(f|0)!=0;if(p){TQ(e,n);f=o$(n|0)|0;q=32e3-f|0;r=l+f|0}else{q=32e3;r=n}if((UQ(b,g,35633,r,q)|0)==0){s=0;t=32e3;u=0;v=32e3;w=0;i=j;return s|0}if(p){TQ(e,o);e=o$(o|0)|0;x=32e3-e|0;y=m+e|0}else{x=32e3;y=o}if((UQ(b,h,35632,y,x)|0)==0){s=0;t=32e3;u=0;v=32e3;w=0;i=j;return s|0}Tk[c[4886344]&255](1,47416,(x=i,i=i+1|0,i=i+7&-8,c[x>>2]=0,x)|0);i=x;if((o$(b|0)|0)>>>0>63>>>0){Tk[c[4886345]&255](1,47056,(x=i,i=i+8|0,c[x>>2]=b,x)|0);i=x;return 0}TB(a|0,b,64);b=Ok[c[4920074]&63]()|0;y=a+64|0;c[y>>2]=b;c[a+76>>2]=d;VQ(b,a+68|0,n,o$(n|0)|0,35633);n=c[y>>2]|0;VQ(n,a+72|0,o,o$(o|0)|0,35632);if((d&1|0)!=0){Tk[c[4920094]&255](c[y>>2]|0,0,45920)}if((d&2|0)!=0){Tk[c[4920094]&255](c[y>>2]|0,1,45328)}if((d&4|0)!=0){Tk[c[4920094]&255](c[y>>2]|0,2,44952)}if((d&8|0)!=0){Tk[c[4920094]&255](c[y>>2]|0,3,44520)}if((d&16|0)!=0){Tk[c[4920094]&255](c[y>>2]|0,4,44040)}if((d&32|0)!=0){Tk[c[4920094]&255](c[y>>2]|0,5,43688)}if((d&64|0)!=0){Tk[c[4920094]&255](c[y>>2]|0,6,43392)}if((d&128|0)!=0){Tk[c[4920094]&255](c[y>>2]|0,7,43080)}if((d&1024|0)!=0){Tk[c[4920094]&255](c[y>>2]|0,10,185920)}if((d&4096|0)!=0){Tk[c[4920094]&255](c[y>>2]|0,12,185632)}if((d&2048|0)!=0){Tk[c[4920094]&255](c[y>>2]|0,11,185072)}d=c[y>>2]|0;vk[c[4919994]&511](d);Tk[c[4920014]&255](d,35714,k);if((c[k>>2]|0)==0){WQ(d);Tk[c[4886344]&255](0,184400,(x=i,i=i+1|0,i=i+7&-8,c[x>>2]=0,x)|0);i=x;Tk[c[4886345]&255](1,184016,(x=i,i=i+1|0,i=i+7&-8,c[x>>2]=0,x)|0);i=x;return 0}else{s=1;t=32e3;u=0;v=32e3;w=0;i=j;return s|0}return 0}function PQ(a){a=a|0;var b=0,d=0,e=0;b=i;d=(c[(c[4917434]|0)+32>>2]|0)==0;if((a|0)==0){if(!d){cV(105928)}if((c[5120123]|0)==0){i=b;return}vk[c[4919940]&511](0);c[5120123]=0;i=b;return}else{if(!d){d=pC(106984,(e=i,i=i+8|0,c[e>>2]=a,e)|0)|0;i=e;cV(d)}if((c[5120123]|0)==(a|0)){i=b;return}vk[c[4919940]&511](c[a+64>>2]|0);c[5120123]=a;c[7094300]=(c[7094300]|0)+1;i=b;return}}function QQ(a){a=a|0;var b=0,d=0;b=c[5120117]|0;d=b^a;if((b|0)==(a|0)){RQ(a);c[5120117]=a;return}do{if((d&1|0)!=0){if((a&1|0)==0){cV(104160);vk[c[4920058]&511](0);break}else{cV(105072);vk[c[4920052]&511](0);break}}}while(0);do{if((d&2|0)!=0){if((a&2|0)==0){cV(102456);vk[c[4920058]&511](1);break}else{cV(103176);vk[c[4920052]&511](1);break}}}while(0);do{if((d&4|0)!=0){if((a&4|0)==0){cV(100616);vk[c[4920058]&511](2);break}else{cV(101536);vk[c[4920052]&511](2);break}}}while(0);do{if((d&16|0)!=0){if((a&16|0)==0){cV(64864);vk[c[4920058]&511](4);break}else{cV(99512);vk[c[4920052]&511](4);break}}}while(0);do{if((d&8|0)!=0){if((a&8|0)==0){cV(62616);vk[c[4920058]&511](3);break}else{cV(63768);vk[c[4920052]&511](3);break}}}while(0);do{if((d&32|0)!=0){if((a&32|0)==0){cV(61008);vk[c[4920058]&511](5);break}else{cV(61752);vk[c[4920052]&511](5);break}}}while(0);do{if((d&128|0)!=0){if((a&128|0)==0){cV(59624);vk[c[4920058]&511](7);break}else{cV(60304);vk[c[4920052]&511](7);break}}}while(0);do{if((d&1024|0)!=0){if((a&1024|0)==0){cV(58512);vk[c[4920058]&511](10);break}else{cV(59048);vk[c[4920052]&511](10);break}}}while(0);do{if((d&4096|0)!=0){if((a&4096|0)==0){cV(56624);vk[c[4920058]&511](12);break}else{cV(57528);vk[c[4920052]&511](12);break}}}while(0);if((d&2048|0)==0){RQ(a);c[5120117]=a;return}if((a&2048|0)==0){cV(54928);vk[c[4920058]&511](11);RQ(a);c[5120117]=a;return}else{cV(55912);vk[c[4920052]&511](11);RQ(a);c[5120117]=a;return}}function RQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=c[5120125]|0;if((d|0)==0){Tk[c[4886345]&255](0,54208,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e}if((c[(c[4917434]|0)+32>>2]|0)!=0){f=pC(53736,(e=i,i=i+8|0,c[e>>2]=d,e)|0)|0;i=e;cV(f)}f=c[5120120]|0;e=c[5120119]|0;g=c[5120122]|0;do{if((a&1|0)!=0){if((c[5120118]&1|0)!=0&(g|0)==0){break}cV(53256);h=(da(c[d+128>>2]|0,e)|0)+(c[d+72>>2]|0)|0;Lk[c[4919932]&15](0,3,5126,0,c[d+100>>2]|0,h);c[5120118]=c[5120118]|1}}while(0);do{if((a&2|0)!=0){if((c[5120118]&2|0)!=0){break}cV(52800);Lk[c[4919932]&15](1,2,5126,0,c[d+108>>2]|0,c[d+80>>2]|0);c[5120118]=c[5120118]|2}}while(0);do{if((a&4|0)!=0){if((c[5120118]&4|0)!=0){break}cV(52200);Lk[c[4919932]&15](2,2,5126,0,c[d+112>>2]|0,c[d+84>>2]|0);c[5120118]=c[5120118]|4}}while(0);do{if((a&16|0)!=0){if((c[5120118]&16|0)!=0&(g|0)==0){break}cV(51712);h=(da(c[d+132>>2]|0,e)|0)+(c[d+76>>2]|0)|0;Lk[c[4919932]&15](4,4,c[5120198]|0,1,c[d+104>>2]|0,h);c[5120118]=c[5120118]|16}}while(0);do{if((a&8|0)!=0){if((c[5120118]&8|0)!=0&(g|0)==0){break}cV(50976);h=(da(c[d+132>>2]|0,e)|0)+(c[d+96>>2]|0)|0;Lk[c[4919932]&15](3,4,c[5120198]|0,1,c[d+124>>2]|0,h);c[5120118]=c[5120118]|8}}while(0);do{if((a&32|0)!=0){if((c[5120118]&32|0)!=0){break}cV(50160);Lk[c[4919932]&15](5,4,5126,0,c[d+116>>2]|0,c[d+88>>2]|0);c[5120118]=c[5120118]|32}}while(0);do{if((a&128|0)!=0){if((c[5120118]&128|0)!=0){break}cV(49496);Lk[c[4919932]&15](7,4,c[5120198]|0,1,c[d+120>>2]|0,c[d+92>>2]|0);c[5120118]=c[5120118]|128}}while(0);do{if((a&1024|0)!=0){if((c[5120118]&1024|0)!=0&(g|0)==0){break}cV(48776);e=(da(c[d+128>>2]|0,f)|0)+(c[d+72>>2]|0)|0;Lk[c[4919932]&15](10,3,5126,0,c[d+100>>2]|0,e);c[5120118]=c[5120118]|1024}}while(0);do{if((a&4096|0)!=0){if((c[5120118]&4096|0)!=0&(g|0)==0){break}cV(48224);e=(da(c[d+132>>2]|0,f)|0)+(c[d+76>>2]|0)|0;Lk[c[4919932]&15](12,4,c[5120198]|0,1,c[d+104>>2]|0,e);c[5120118]=c[5120118]|4096}}while(0);if((a&2048|0)==0){i=b;return}if((c[5120118]&2048|0)!=0&(g|0)==0){i=b;return}cV(47768);g=(da(c[d+132>>2]|0,f)|0)+(c[d+96>>2]|0)|0;Lk[c[4919932]&15](11,4,c[5120198]|0,1,c[d+124>>2]|0,g);c[5120118]=c[5120118]|2048;i=b;return}function SQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=c[(c[422828]|0)+(a<<2)>>2]|0;if((c[340896]|0)==0){d=0}else{d=(c[b+680>>2]|0)==0?0:8}if((c[b+92>>2]|0)==0){e=d}else{e=(c[(c[340894]|0)+180>>2]|0)==0?d:d|32}d=e|16;a=c[b+664>>2]|0;if((a|0)==6|(a|0)==8){f=d}else{f=(c[b+640>>2]|0)==11?d:e}e=(c[b+668>>2]|0)==0?f:d;d=(c[b+44>>2]|0)==3?e:e|2;e=c[340894]|0;f=c[e+208>>2]|0;if((f|0)==0){g=d}else{do{if((f|0)>1){h=0}else{a=c[e+212>>2]|0;if((a|0)==1|(a|0)==3){h=1;break}h=0}}while(0);g=h|d}d=(c[5120122]|0)==0?g:g|4;return 944508+(((c[b+72>>2]|0)==0?d:d|2)*464|0)|0}function TQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0.0;e=i;a[d]=0;XB(d,32e3,180240);f=pC(179616,(g=i,i=i+56|0,c[g>>2]=1,c[g+8>>2]=2,c[g+16>>2]=3,c[g+24>>2]=4,c[g+32>>2]=5,c[g+40>>2]=7,c[g+48>>2]=8,g)|0)|0;i=g;XB(d,32e3,f);f=pC(179112,(g=i,i=i+40|0,c[g>>2]=2,c[g+8>>2]=3,c[g+16>>2]=4,c[g+24>>2]=5,c[g+32>>2]=6,g)|0)|0;i=g;XB(d,32e3,f);f=pC(178728,(g=i,i=i+8|0,c[g>>2]=11,g)|0)|0;i=g;XB(d,32e3,f);f=pC(178312,(g=i,i=i+16|0,c[g>>2]=6,c[g+8>>2]=8,g)|0)|0;i=g;XB(d,32e3,f);f=pC(177840,(g=i,i=i+24|0,c[g>>2]=1,c[g+8>>2]=2,c[g+16>>2]=3,g)|0)|0;i=g;XB(d,32e3,f);f=pC(177352,(g=i,i=i+24|0,c[g>>2]=8448,c[g+8>>2]=260,c[g+16>>2]=7681,g)|0)|0;i=g;XB(d,32e3,f);j=1.0/+(c[5123027]|0);f=pC(176960,(g=i,i=i+16|0,h[g>>3]=1.0/+(c[5123026]|0),h[g+8>>3]=j,g)|0)|0;i=g;XB(d,32e3,f);if((b|0)==0){XB(d,32e3,176512);i=e;return}XB(d,32e3,b);XB(d,32e3,176512);i=e;return}function UQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;i=i+72|0;h=g+64|0;j=g|0;c[h>>2]=0;if((d|0)==35633){$B(j,64,182288,(k=i,i=i+8|0,c[k>>2]=a,k)|0)|0;i=k}else{$B(j,64,182048,(k=i,i=i+8|0,c[k>>2]=a,k)|0)|0;i=k}Tk[c[4886344]&255](1,181712,(k=i,i=i+8|0,c[k>>2]=j,k)|0);i=k;a=Kk[c[4886365]&255](j,h)|0;j=c[h>>2]|0;do{if((j|0)==0){d=c[4886344]|0;if((b|0)!=0){Tk[d&255](1,181248,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;l=o$(b|0)|0;m=b;break}Tk[d&255](1,180608,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;n=0;o=64;p=0;i=g;return n|0}else{l=a;m=j}}while(0);if((l|0)>(f|0)){q=0}else{TB(e,m,l+1|0);q=1}l=c[h>>2]|0;if((l|0)==0){n=q;o=64;p=0;i=g;return n|0}vk[c[4886366]&511](l);n=q;o=64;p=0;i=g;return n|0}function VQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;i=i+32|0;h=g|0;j=g+8|0;k=g+16|0;l=g+24|0;c[j>>2]=d;c[k>>2]=e;e=jk[c[4920072]&255](f)|0;Yk[c[4919980]&255](e,1,j,k);vk[c[4920076]&511](e);Tk[c[4920014]&255](e,35713,l);if((c[l>>2]|0)==0){c[h>>2]=0;Tk[c[4920014]&255](e,35720,h);l=jk[c[4886350]&255](c[h>>2]|0)|0;Yk[c[4920006]&255](e,c[h>>2]|0,h,l);if((c[h>>2]|0)>0){m=0}else{n=c[4886351]|0;vk[n&511](l);o=4;p=0;WQ(e);q=c[4886345]|0;Tk[q&255](1,182488,(r=i,i=i+1|0,i=i+7&-8,c[r>>2]=0,r)|0);i=r}do{TB(30212192,l+m|0,1024);Tk[c[4886344]&255](0,182808,(r=i,i=i+8|0,c[r>>2]=30212192,r)|0);i=r;m=m+1024|0;}while((m|0)<(c[h>>2]|0));n=c[4886351]|0;vk[n&511](l);o=4;p=0;WQ(e);q=c[4886345]|0;Tk[q&255](1,182488,(r=i,i=i+1|0,i=i+7&-8,c[r>>2]=0,r)|0);i=r}else{r=c[b>>2]|0;if((r|0)==0){s=c[4920098]|0;hk[s&255](a,e);c[b>>2]=e;i=g;return}hk[c[4920060]&255](a,r);vk[c[4920066]&511](c[b>>2]|0);s=c[4920098]|0;hk[s&255](a,e);c[b>>2]=e;i=g;return}}function WQ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+8|0;e=d|0;c[e>>2]=0;Tk[c[4920014]&255](b,35716,e);f=c[4886344]|0;if((c[e>>2]|0)<1){Tk[f&255](0,183536,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;i=d;return}Tk[f&255](0,183208,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;f=c[e>>2]|0;if((f|0)<1023){Yk[c[4920018]&255](b,f,e,30213216);a[(c[e>>2]|0)+30213217|0]=0;Tk[c[4886344]&255](0,182808,(g=i,i=i+8|0,c[g>>2]=30213216,g)|0);i=g;i=d;return}h=jk[c[4886350]&255](f)|0;Yk[c[4920018]&255](b,c[e>>2]|0,e,h);if((c[e>>2]|0)>0){b=0;do{TB(30213216,h+b|0,1024);Tk[c[4886344]&255](0,182808,(g=i,i=i+8|0,c[g>>2]=30213216,g)|0);i=g;b=b+1024|0;}while((b|0)<(c[e>>2]|0))}vk[c[4886351]&511](h);i=d;return}function XQ(b,c){b=b|0;c=c|0;var e=0,f=0;if((c|0)>0){e=0}else{return}do{f=b+e|0;a[f]=a[19534824+(d[f]|0)|0]|0;e=e+1|0;}while((e|0)<(c|0));return}function YQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;b=i;d=0;while(1){e=d+1|0;if((VB(c[12096+(d*12|0)>>2]|0,a)|0)==0){f=4;break}if((e|0)<6){d=e}else{g=e;f=6;break}}do{if((f|0)==4){if(!((d|0)==5&(c[5123022]|0)==1)){g=d;f=6;break}Tk[c[4886344]&255](0,63208,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=3}}while(0);do{if((f|0)==6){if((g|0)!=6){j=g;break}Tk[c[4886344]&255](0,55400,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;i=b;return}}while(0);c[5170]=c[12100+(j*12|0)>>2];c[5172]=c[12104+(j*12|0)>>2];j=c[254853]|0;if((j|0)>0){k=0;l=j}else{i=b;return}while(1){j=c[1019416+(k<<2)>>2]|0;if((c[j+100>>2]&1|0)==0){m=l}else{aP(j);Af(3553,10241,+(+(c[5170]|0)));Af(3553,10240,+(+(c[5172]|0)));m=c[254853]|0}j=k+1|0;if((j|0)<(m|0)){k=j;l=m}else{break}}i=b;return}function ZQ(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;a=c[254853]|0;if((a|0)<=0){b=0;return b|0}d=c[253192]|0;e=0;f=0;while(1){g=c[1019416+(f<<2)>>2]|0;if((c[g+84>>2]|0)==(d|0)){h=(da(c[g+76>>2]|0,c[g+72>>2]|0)|0)+e|0}else{h=e}g=f+1|0;if((g|0)<(a|0)){e=h;f=g}else{b=h;break}}return b|0}function _Q(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a=i;Tk[c[4886344]&255](0,49040,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;if((c[254853]|0)>0){d=0;e=0;while(1){f=c[1019416+(e<<2)>>2]|0;g=c[f+76>>2]|0;h=c[f+72>>2]|0;j=da(h,g)|0;k=c[f+88>>2]|0;if((k|0)==33779){l=j;m=165464}else if((k|0)==35910|(k|0)==35911){l=j;m=143440}else if((k|0)==32837|(k|0)==32840|(k|0)==6410){l=j<<1;m=150528}else if((k|0)==35906|(k|0)==35907){l=j<<2;m=145680}else if((k|0)==35917){l=(j|0)/2|0;m=183712}else if((k|0)==35904|(k|0)==35905){l=j*3|0;m=148336}else if((k|0)==33697){l=(j|0)/2|0;m=159352}else if((k|0)==33777){l=(j|0)/2|0;m=168976}else if((k|0)==32832|(k|0)==32834|(k|0)==6409){l=j;m=154640}else if((k|0)==35908|(k|0)==35909){l=j<<1;m=140824}else if((k|0)==36493){l=j;m=175336}else if((k|0)==32854|(k|0)==32856|(k|0)==6408){l=j<<2;m=156976}else if((k|0)==32848|(k|0)==32849|(k|0)==6407){l=j*3|0;m=152712}else if((k|0)==35954){l=j;m=171776}else if((k|0)==36492){l=j;m=162344}else if((k|0)==35919){l=j;m=179968}else{l=j;m=44656}if((c[f+100>>2]&1|0)==0){n=l}else{n=((l|0)/2|0)+l|0}do{if((n|0)>1024){if((n|0)<=1049599){o=(n|0)/1024|0;p=136672;break}if((n|0)<=1074790399){o=(n|0)/1048576|0;p=135224;break}o=(n|0)/1073741824|0;p=133632}else{o=n;p=138296}}while(0);Tk[c[4886344]&255](0,132448,(b=i,i=i+56|0,c[b>>2]=e,c[b+8>>2]=h,c[b+16>>2]=g,c[b+24>>2]=m,c[b+32>>2]=o,c[b+40>>2]=p,c[b+48>>2]=f,b)|0);i=b;j=n+d|0;k=e+1|0;if((k|0)<(c[254853]|0)){d=j;e=k}else{q=j;break}}}else{q=0}Tk[c[4886344]&255](0,131480,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;Tk[c[4886344]&255](0,130088,(b=i,i=i+8|0,c[b>>2]=q,b)|0);i=b;Tk[c[4886344]&255](0,128840,(b=i,i=i+8|0,c[b>>2]=c[254853],b)|0);i=b;i=a;return}function $Q(b,e,f,g){b=b|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;if((g|0)!=0){if((c[5123023]|0)!=0){return}g=da(f,e)|0;if((g|0)>0){h=b;i=0}else{return}while(1){a[h]=a[19534824+(d[h]|0)|0]|0;j=h+1|0;a[j]=a[19534824+(d[j]|0)|0]|0;j=h+2|0;a[j]=a[19534824+(d[j]|0)|0]|0;j=i+1|0;if((j|0)<(g|0)){h=h+4|0;i=j}else{break}}return}i=da(f,e)|0;e=(i|0)>0;if((c[5123023]|0)==0){if(e){k=0;l=b}else{return}while(1){a[l]=a[19534824+(d[19534552+(d[l]|0)|0]|0)|0]|0;f=l+1|0;a[f]=a[19534824+(d[19534552+(d[f]|0)|0]|0)|0]|0;f=l+2|0;a[f]=a[19534824+(d[19534552+(d[f]|0)|0]|0)|0]|0;f=k+1|0;if((f|0)<(i|0)){k=f;l=l+4|0}else{break}}return}else{if(e){m=0;n=b}else{return}while(1){a[n]=a[19534552+(d[n]|0)|0]|0;b=n+1|0;a[b]=a[19534552+(d[b]|0)|0]|0;b=n+2|0;a[b]=a[19534552+(d[b]|0)|0]|0;b=m+1|0;if((b|0)<(i|0)){m=b;n=n+4|0}else{break}}return}}function aR(b,e,f,h,j,k,l){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;var 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.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.0,R=0,S=0.0,T=0.0,V=0.0,W=0.0,X=0,Y=0,Z=0.0,_=0.0,$=0.0,aa=0,ba=0,ca=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;m=i;i=i+80|0;n=m|0;o=m+8|0;p=m+16|0;q=m+24|0;r=m+32|0;s=m+40|0;t=m+48|0;u=m+56|0;v=m+64|0;w=m+72|0;if((o$(b|0)|0)>>>0>63>>>0){Tk[c[4886345]&255](1,127888,(x=i,i=i+8|0,c[x>>2]=b,x)|0);i=x;return 0}y=(l$(b,126464,9)|0)==0;if((c[254853]|0)==2048){Tk[c[4886345]&255](1,125192,(x=i,i=i+1|0,i=i+7&-8,c[x>>2]=0,x)|0);i=x;return 0}x=Kk[c[4886347]&255](108,1)|0;z=x;c[1019416+(c[254853]<<2)>>2]=z;Pd(1,x+80|0);c[254853]=(c[254853]|0)+1;A=x+96|0;c[A>>2]=j;j=x+100|0;c[j>>2]=k;r$(x|0,b|0)|0;B=x+64|0;c[B>>2]=f;C=x+68|0;c[C>>2]=h;D=(k&64|0)==0?10497.0:33071.0;do{if((l|0)==0){k=c[j>>2]|0;if((k&4|0)!=0){E=32856;break}F=da(h,f)|0;G=c[A>>2]|0;H=k&16;I=(G|0)==1;if((G-1|0)>>>0<2>>>0){a:do{if((e|0)==0){J=0}else{if((F|0)>0){K=0}else{J=1;break}while(1){G=K+1|0;if(!((a[e+(K<<2|3)|0]|0)==-1)){J=0;break a}if((G|0)<(F|0)){K=G}else{J=1;break}}}}while(0);G=(H|0)==0;if((J|I)&G){if((c[5120190]&1|0)!=0){E=35954;break}}if(G&(c[5123024]|0)==2){E=33779;break}G=c[(c[4917300]|0)+32>>2]|0;if((G|0)==16){E=32854;break}else if((G|0)==32){E=32856;break}else{E=6408;break}}if(y){E=(c[(c[4917468]|0)+32>>2]|0)==0?6408:6409;break}b:do{if((e|0)==0){L=35}else{if((F|0)>0){G=0;while(1){M=G+1|0;if(!((a[e+(G<<2|3)|0]|0)==-1)){L=35;break b}if((M|0)<(F|0)){G=M}else{break}}}if((c[(c[4917468]|0)+32>>2]|0)!=0){G=c[(c[4917300]|0)+32>>2]|0;if((G|0)==32){N=32834;break}else if((G|0)==16){N=32832;break}else{N=6409;break}}if((H|0)==0){if((c[5120190]&2|0)!=0){N=36492;break}G=c[5123024]|0;if((G|0)==2){N=33777;break}if((G|0)==1){N=33697;break}}G=c[(c[4917300]|0)+32>>2]|0;if((G|0)==16){N=32848;break}else if((G|0)==32){N=32849;break}else{N=6407;break}}}while(0);do{if((L|0)==35){if((c[(c[4917468]|0)+32>>2]|0)!=0){F=c[(c[4917300]|0)+32>>2]|0;if((F|0)==32){N=32840;break}else if((F|0)==16){N=32837;break}else{N=6410;break}}if((H|0)==0){if((c[5120190]&2|0)!=0){N=36492;break}if((c[5123024]|0)==2){N=33779;break}}F=c[(c[4917300]|0)+32>>2]|0;if((F|0)==32){N=32856;break}else if((F|0)==16){N=32854;break}else{N=6408;break}}}while(0);if((c[5120193]|0)==0){E=N;break}if((k&128|0)==0){E=N;break}if((N|0)==6407){E=35904;break}else if((N|0)==32847|(N|0)==32848|(N|0)==32849){E=35905;break}else if((N|0)==6408){E=35906;break}else if((N|0)==32854|(N|0)==32856){E=35907;break}else if((N|0)==6409){E=35910;break}else if((N|0)==32832|(N|0)==32834){E=35911;break}else if((N|0)==6410){E=35908;break}else if((N|0)==32837|(N|0)==32840){E=35909;break}else if((N|0)==33777){E=35917;break}else if((N|0)==33779){E=35919;break}else if((N|0)==36492){E=36493;break}else{E=N;break}}else{E=l}}while(0);l=x+88|0;c[l>>2]=E;E=(c[4920100]|0)==0;N=(E|y^1)&1^1;c[x+92>>2]=N;if(!E){bP(N)}N=(c[j>>2]&4|0)==0;aP(z);if(N){N=c[B>>2]|0;B=c[C>>2]|0;C=c[A>>2]|0;A=c[j>>2]|0;E=c[l>>2]|0;l=x+72|0;y=x+76|0;do{if((e|0)==0){c[n>>2]=N;c[o>>2]=B;cR(0,n,o,p,q,C,A,0);J=c[p>>2]|0;c[l>>2]=J;K=c[q>>2]|0;c[y>>2]=K;if((E|0)==6402|(E|0)==33189|(E|0)==33190|(E|0)==33191){O=5121;P=6402}else if((E|0)==34842){O=5131;P=6408}else{O=5121;P=6408}Bj(3553,0,P|0,J|0,K|0,0,P|0,O|0,0);if((A&1|0)==0){if((c[304344]|0)!=0){Bf(3553,34046,1)}Af(3553,10241,+9729.0);Af(3553,10240,+9729.0)}else{if((J|0)>1|(K|0)>1){H=K;K=J;J=0;do{F=K>>1;I=H>>1;K=(F|0)<1?1:F;H=(I|0)<1?1:I;J=J+1|0;Bj(3553,J|0,P|0,K|0,H|0,0,P|0,O|0,0);}while((K|0)>1|(H|0)>1);if((c[304344]|0)!=0){L=131}}else{if((c[304344]|0)!=0){L=131}}if((L|0)==131){Bf(3553,34046,~~+PB(1.0,+(c[4954628]|0),+(c[(c[4919840]|0)+32>>2]|0))|0)}Af(3553,10241,+(+(c[5170]|0)));Af(3553,10240,+(+(c[5172]|0)))}if((E|0)==6402|(E|0)==33189|(E|0)==33190|(E|0)==33191){Af(3553,34891,+6409.0);Af(3553,10241,+9728.0);Af(3553,10240,+9728.0)}KR(124320,2220);}else{c[r>>2]=e;c[s>>2]=N;c[t>>2]=B;c[u>>2]=0;cR(r,s,t,v,w,C,A,u);H=da(c[v>>2]<<2,c[w>>2]|0)|0;K=jk[c[4886348]&255](H)|0;H=da(c[t>>2]|0,c[s>>2]|0)|0;J=c[r>>2]|0;k=c[4917468]|0;c:do{if((c[k+32>>2]|0)==0){Q=+g[k+28>>2];if(Q!=0.0&(H|0)>0){R=0;S=Q}else{break}while(1){I=R<<2;F=J+I|0;Q=+(d[F]|0);G=J+(I|1)|0;T=+(d[G]|0);M=J+(I|2)|0;V=+(d[M]|0);W=Q*.2125999927520752+T*.7152000069618225+V*.0722000002861023;a[F]=~~((1.0-S)*Q+S*W);Q=+g[(c[4917468]|0)+28>>2];a[G]=~~(T*(1.0-Q)+Q*W);Q=+g[(c[4917468]|0)+28>>2];a[M]=~~(W*Q+V*(1.0-Q));M=R+1|0;if((M|0)>=(H|0)){break c}R=M;S=+g[(c[4917468]|0)+28>>2]}}else{if((H|0)>0){X=0}else{break}do{M=X<<2;G=J+M|0;F=J+(M|1)|0;I=J+(M|2)|0;M=~~(+(d[G]|0)*.2125999927520752+ +(d[F]|0)*.7152000069618225+ +(d[I]|0)*.0722000002861023);a[G]=M;a[F]=M;a[I]=M;X=X+1|0;}while((X|0)<(H|0))}}while(0);do{if((c[5120193]|0)==0){if((A&128|0)==0){Y=A;break}if((H|0)!=0){J=c[r>>2]|0;k=H;while(1){Q=+((d[J]|0)>>>0)/255.0;if(Q>.040449999272823334){Z=+U(+((Q+.054999999701976776)/1.0549999475479126),2.4)}else{Z=Q/12.920000076293945}a[J]=~~(Z*255.0);M=J+1|0;Q=+((d[M]|0)>>>0)/255.0;if(Q>.040449999272823334){_=+U(+((Q+.054999999701976776)/1.0549999475479126),2.4)}else{_=Q/12.920000076293945}a[M]=~~(_*255.0);M=J+2|0;Q=+((d[M]|0)>>>0)/255.0;if(Q>.040449999272823334){$=+U(+((Q+.054999999701976776)/1.0549999475479126),2.4)}else{$=Q/12.920000076293945}a[M]=~~($*255.0);M=k-1|0;if((M|0)==0){break}else{J=J+4|0;k=M}}}Y=A&-129}else{Y=A}}while(0);do{if((C-1|0)>>>0<2>>>0){H=da(c[t>>2]|0,c[s>>2]|0)|0;if((H|0)<=0){break}k=c[r>>2]|0;J=0;while(1){M=a[k]|0;I=k+3|0;a[k]=a[I]|0;a[I]=M;M=J+1|0;if((M|0)<(H|0)){k=k+4|0;J=M}else{break}}}}while(0);do{if((E|0)==35954){J=da(c[t>>2]|0,c[s>>2]|0)|0;if((J|0)==0){break}k=c[r>>2]|0;H=J;while(1){J=H-1|0;M=a[k+1|0]|0;a[k]=M;a[k+2|0]=M;if((J|0)==0){break}else{k=k+4|0;H=J}}}}while(0);H=c[v>>2]|0;k=c[s>>2]|0;J=c[w>>2]|0;M=c[t>>2]|0;do{if((H|0)==(k|0)&(J|0)==(M|0)){I=Y&1;F=c[r>>2]|0;if((I|0)==0){dR(F,0,0,H,J,E,C,Y,0);c[l>>2]=H;c[y>>2]=J;if((c[304344]|0)==0){L=111;break}else{L=110;break}}else{m$(K|0,F|0,da(H<<2,J)|0)|0;aa=I;L=103;break}}else{I=(Y&128|0)==0;F=c[r>>2]|0;if((k|0)>(H|0)|(M|0)>(J|0)){G=k;ba=M;ca=F;do{if(I){fR(ca,G,ba)}else{eR(ca,G,ba)}ea=G>>1;fa=ba>>1;G=(ea|0)<1?1:ea;ba=(fa|0)<1?1:fa;ca=c[r>>2]|0}while((G|0)>(H|0)|(ba|0)>(J|0));c[s>>2]=G;c[t>>2]=ba;ga=G;ha=ba;ia=ca}else{ga=k;ha=M;ia=F}m$(K|0,ia|0,da(ga<<2,ha)|0)|0;aa=Y&1;L=103}}while(0);do{if((L|0)==103){if((Y&32|0)==0){$Q(K,H,J,aa^1)}c[l>>2]=H;c[y>>2]=J;dR(K,0,0,H,J,E,C,Y,0);M=(c[304344]|0)!=0;if((aa|0)==0){if(M){L=110;break}else{L=111;break}}if(M){Bf(3553,34046,~~+PB(1.0,+(c[4954628]|0),+(c[(c[4919840]|0)+32>>2]|0))|0)}Af(3553,10241,+(+(c[5170]|0)));Af(3553,10240,+(+(c[5172]|0)))}}while(0);if((L|0)==110){Bf(3553,34046,1);L=111}if((L|0)==111){Af(3553,10241,+9729.0);Af(3553,10240,+9729.0)}KR(124320,2165);if((K|0)!=0){vk[c[4886349]&511](K)}J=c[u>>2]|0;if((J|0)==0){break}vk[c[4886349]&511](J)}}while(0);Af(3553,10242,+D);Af(3553,10243,+D)}else{Bf(34067,10242,33071);Bf(34067,10243,33071);Bf(34067,32882,33071);if((c[j>>2]&1|0)==0){Bf(34067,10240,9729);Bf(34067,10241,9729)}else{Bf(34067,10240,9987);Bf(34067,10241,9987)}Bj(34069,0,32856,f|0,h|0,0,32993,5121,e|0);Bj(34070,0,32856,f|0,h|0,0,32993,5121,e|0);Bj(34071,0,32856,f|0,h|0,0,32993,5121,e|0);Bj(34072,0,32856,f|0,h|0,0,32993,5121,e|0);Bj(34073,0,32856,f|0,h|0,0,32993,5121,e|0);Bj(34074,0,32856,f|0,h|0,0,32993,5121,e|0);if((c[j>>2]&1|0)!=0){vk[c[4920036]&511](34067)}c[x+72>>2]=f;c[x+76>>2]=h}bP(0);h=a[b]|0;if(h<<24>>24==0){ja=0;ka=ja&1023;la=20475280+(ka<<2)|0;ma=c[la>>2]|0;na=x+104|0;oa=na;c[oa>>2]=ma;c[la>>2]=z;i=m;return z|0}else{pa=0;qa=0;ra=h}while(1){h=(t$(ra<<24>>24|0)|0)&255;if((h<<24>>24|0)==46){ja=qa;L=143;break}else if((h<<24>>24|0)==92){sa=47}else{sa=h}h=(da(sa<<24>>24,pa+119|0)|0)+qa|0;f=pa+1|0;j=a[b+f|0]|0;if(j<<24>>24==0){ja=h;L=143;break}else{pa=f;qa=h;ra=j}}if((L|0)==143){ka=ja&1023;la=20475280+(ka<<2)|0;ma=c[la>>2]|0;na=x+104|0;oa=na;c[oa>>2]=ma;c[la>>2]=z;i=m;return z|0}return 0}function bR(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+48|0;k=j|0;l=j+8|0;m=j+16|0;n=j+24|0;o=j+32|0;p=j+40|0;c[k>>2]=d;c[l>>2]=g;c[m>>2]=h;c[n>>2]=0;q=b+96|0;do{if(((c[q>>2]|0)-1|0)>>>0<2>>>0){r=da(h,g)|0;if((r|0)>0){s=d;t=0}else{break}while(1){u=a[s]|0;v=s+3|0;a[s]=a[v]|0;a[v]=u;u=t+1|0;if((u|0)<(r|0)){s=s+4|0;t=u}else{break}}}}while(0);t=b+88|0;do{if((c[t>>2]|0)==35954){s=da(c[m>>2]|0,c[l>>2]|0)|0;if((s|0)==0){break}else{w=d;x=s}while(1){s=x-1|0;g=a[w+1|0]|0;a[w]=g;a[w+2|0]=g;if((s|0)==0){break}else{w=w+4|0;x=s}}}}while(0);x=b+100|0;cR(k,l,m,o,p,c[q>>2]|0,c[x>>2]|0,n);k=c[o>>2]|0;o=c[p>>2]|0;p=da(k<<2,o)|0;w=jk[c[4886348]&255](p)|0;if((c[4920100]|0)!=0){bP(c[b+92>>2]|0)}aP(b);b=c[l>>2]|0;do{if((k|0)==(b|0)){if((o|0)!=(c[m>>2]|0)){y=e;z=f;A=b;B=14;break}s=c[x>>2]|0;if((s&1|0)==0){dR(d,e,f,k,o,c[t>>2]|0,c[q>>2]|0,s,1);KR(124320,2394);break}else{m$(w|0,d|0,p)|0;C=e;D=f;E=k;F=o;B=23;break}}else{y=e;z=f;A=b;B=14}}while(0);if((B|0)==14){while(1){B=0;G=c[m>>2]|0;if(!((A|0)>(k|0)|(G|0)>(o|0))){break}if((c[x>>2]&128|0)==0){fR(d,A,G)}else{eR(d,A,G)}b=A>>1;c[l>>2]=b;f=G>>1;c[m>>2]=f;e=y>>1;p=z>>1;if((b|0)<1){c[l>>2]=1;H=1}else{H=b}if((f|0)>=1){y=e;z=p;A=H;B=14;continue}c[m>>2]=1;y=e;z=p;A=H;B=14}m$(w|0,d|0,da(A<<2,G)|0)|0;C=y;D=z;E=A;F=G;B=23}if((B|0)==23){B=c[x>>2]|0;if((B&32|0)==0){$Q(w,k,o,B&1^1);I=c[x>>2]|0}else{I=B}B=(da(k,C)|0)/(E|0)|0;E=(da(o,D)|0)/(F|0)|0;dR(d,B,E,k,o,c[t>>2]|0,c[q>>2]|0,I,1)}bP(0);KR(124320,2438);if((w|0)!=0){vk[c[4886349]&511](w)}w=c[n>>2]|0;if((w|0)==0){i=j;return}vk[c[4886349]&511](w);i=j;return}function cR(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var 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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=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,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0.0,Oa=0.0,Pa=0.0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0;m=i;i=i+147968|0;n=m|0;o=m+73984|0;p=c[e>>2]|0;q=c[f>>2]|0;r=k&2;s=k&64;if((c[5120186]|0)==0){t=3}else{if((k&1|0)==0){u=p;v=q}else{t=3}}if((t|0)==3){k=lQ(p)|0;u=k;v=lQ(q)|0}k=(c[(c[4917364]|0)+32>>2]|0)!=0;w=u>>(k&(u|0)>(p|0)&1);u=v>>(k&(v|0)>(q|0)&1);v=(r|0)!=0;r=(b|0)==0;k=(l|0)==0;do{if(r|v^1|k){t=105}else{x=c[(c[4917456]|0)+32>>2]|0;if((x|0)==0){t=105;break}y=c[(c[4917454]|0)+32>>2]|0;if(!((w|0)<(y|0)&(u|0)<(y|0))){t=105;break}z=w<(y|0)|(A|0)>(y|0)){x=z;B=A;while(1){C=x>>1;D=B>>1;if((C|0)>(y|0)|(D|0)>(y|0)){x=C;B=D}else{E=C;F=D;break}}}else{E=z;F=A}B=c[5123016]|0;if((E|0)>(B|0)|(F|0)>(B|0)){x=E;y=F;while(1){D=x>>1;C=y>>1;if((D|0)>(B|0)|(C|0)>(B|0)){x=D;y=C}else{G=D;H=C;break}}}else{G=E;H=F}y=da(G<<2,H)|0;x=jk[c[4886348]&255](y)|0;c[l>>2]=x;y=c[b>>2]|0;do{if((w|0)==(p|0)&(u|0)==(q|0)){B=da(p<<2,q)|0;if((B|0)>0){I=y;J=x;K=B}else{break}while(1){a[J]=a[I]|0;B=K-1|0;if((B|0)>0){I=I+1|0;J=J+1|0;K=B}else{break}}}else{tR(y,p,q,x,w,u)}}while(0);x=(j|0)==0;do{if(x){y=c[l>>2]|0;if((u|0)<=0){break}B=w<<2;if((w|0)>0){L=0}else{break}do{A=y+(da(B,L)|0)|0;z=0;while(1){C=A+1|0;D=A+2|0;M=d[A]|0;N=d[D]|0;O=d[C]|0;P=(N+M|0)>>>1&255;a[A]=(P+O|0)>>>1;a[C]=((M|256)-N|0)>>>1;a[D]=((O|256)-P|0)>>>1;P=z+1|0;if((P|0)<(w|0)){A=A+4|0;z=P}else{break}}L=L+1|0;}while((L|0)<(u|0))}}while(0);if((w|0)<(G|0)|(u|0)<(H|0)){B=n|0;y=o|0;z=(s|0)!=0;A=u;P=w;while(1){O=P<<1;D=A<<1;N=c[l>>2]|0;do{if((D|0)>1){M=P<<3;C=(O|0)/2|0;if((O|0)<=1){t=29;break}Q=C<<2;R=(D|0)/2|0;while(1){S=C;U=N+((da(M,(R<<1)-1|0)|0)-8)|0;V=N+((da(Q,R)|0)-4)|0;while(1){c[U>>2]=c[V>>2];W=S-1|0;if((W|0)>0){S=W;U=U-8|0;V=V-4|0}else{break}}V=R-1|0;if((V|0)>0){R=V}else{t=27;break}}}else{t=27}}while(0);if((t|0)==27){t=0;if((D|0)>0){t=29}}if((t|0)==29){t=0;R=(O|0)>0;Q=(j-1|0)>>>0>1>>>0;M=D-2|0;C=O-2|0;V=0;do{if(R){U=D-V|0;S=(U|0)>128?128:U;U=S+8|0;W=(U|0)>0;X=S+6|0;Y=(X|0)>2;Z=S+7|0;_=(Z|0)>1;$=(S|0)>0;aa=V-4|0;ba=0;do{ca=O-ba|0;ea=(ca|0)>128?128:ca;ca=ea+8|0;if(W){fa=ca<<2;ga=(ca|0)>0;ha=ba-4|0;ia=0;do{ja=aa+ia|0;if(z){ka=(ja|0)>0?ja:0;la=(ka|0)<(M|0)?ka:M}else{la=(ja+D|0)%(D|0)|0}ja=da(la,O)|0;if(ga){ka=0;ma=n+(da(fa,ia)|0)|0;while(1){na=ha+ka|0;if(z){oa=(na|0)>0?na:0;pa=(oa|0)<(C|0)?oa:C}else{pa=(na+O|0)%(O|0)|0}c[ma>>2]=c[N+(pa+ja<<2)>>2];na=ka+2|0;if((na|0)<(ca|0)){ka=na;ma=ma+8|0}else{break}}}ia=ia+2|0;}while((ia|0)<(U|0))}a:do{if(Y){ia=ca<<2;ha=ea+6|0;if((ha|0)>2){qa=2}else{fa=2;while(1){fa=fa+2|0;if((fa|0)>=(X|0)){break a}}}do{fa=da(ia,qa)|0|8;ga=2;ma=o+fa|0;ka=n+fa|0;while(1){c[ma>>2]=c[ka>>2];fa=ga+2|0;if((fa|0)<(ha|0)){ga=fa;ma=ma+8|0;ka=ka+8|0}else{break}}qa=qa+2|0;}while((qa|0)<(X|0))}}while(0);if(_){ha=ca<<2;ia=ea+7|0;ka=(ia|0)>1;ma=1;do{ga=da(ma-1|0,ha)|0;fa=da(ma+1|0,ha)|0;ja=c[n+ga>>2]|0;na=c[n+fa>>2]|0;if(ka){oa=1;ra=o+(da(ma,ha)|0|4)|0;sa=n+(ga+8)|0;ga=n+(fa+8)|0;fa=ja&255;ta=na&255;ua=na>>>8&255;va=na>>>16&255;wa=na>>>24&255;na=ja>>>8&255;xa=ja>>>16&255;ya=ja>>>24&255;while(1){ja=c[sa>>2]|0;za=ja>>>8;Aa=ja>>>16;Ba=ja>>>24;Ca=c[ga>>2]|0;Da=Ca>>>8;Ea=Ca>>>16;Fa=Ca>>>24;a[ra]=((fa&255)+(ta&255)+(ja&255)+(Ca&255)|0)>>>2;a[ra+1|0]=((ua&255)+(na&255)+(za&255)+(Da&255)|0)>>>2;a[ra+2|0]=((va&255)+(xa&255)+(Aa&255)+(Ea&255)|0)>>>2;a[ra+3|0]=((wa&255)+(ya&255)+Ba+Fa|0)>>>2;Ga=oa+2|0;if((Ga|0)<(ia|0)){oa=Ga;ra=ra+8|0;sa=sa+8|0;ga=ga+8|0;fa=ja&255;ta=Ca&255;ua=Da&255;va=Ea&255;wa=Fa&255;na=za&255;xa=Aa&255;ya=Ba&255}else{break}}}ma=ma+2|0;}while((ma|0)<(Z|0));if(ka){ma=1;while(1){ya=da(ma,ha)|0|4;xa=1;na=n+ya|0;wa=o+ya|0;while(1){c[na>>2]=c[wa>>2];ya=xa+2|0;if((ya|0)<(ia|0)){xa=ya;na=na+8|0;wa=wa+8|0}else{break}}wa=ma+2|0;if((wa|0)<(Z|0)){ma=wa}else{Ha=1;break}}}else{ma=1;while(1){ha=ma+2|0;if((ha|0)<(Z|0)){ma=ha}else{Ha=1;break}}}while(1){ma=(Ha|0)%2|0;ha=ma+1|0;ka=da(Ha,ca)|0;wa=ma+ka<<2;ma=Ha+1|0;na=c[n+wa>>2]|0;if((ha|0)<(ia|0)){xa=ha;ya=o+(ha+ka<<2)|0;ka=n+(ha+(da(Ha-1|0,ca)|0)<<2)|0;va=n+(wa+8)|0;wa=n+(ha+(da(ma,ca)|0)<<2)|0;ha=na&255;ua=na>>>8&255;ta=na>>>16&255;fa=na>>>24&255;while(1){na=c[ka>>2]|0;ga=c[va>>2]|0;sa=ga>>>8;ra=ga>>>16;oa=ga>>>24;Ba=c[wa>>2]|0;a[ya]=((na&255)+(ha&255)+(ga&255)+(Ba&255)|0)>>>2;a[ya+1|0]=((na>>>8&255)+(ua&255)+(sa&255)+(Ba>>>8&255)|0)>>>2;a[ya+2|0]=((na>>>16&255)+(ta&255)+(ra&255)+(Ba>>>16&255)|0)>>>2;a[ya+3|0]=((na>>>24)+(fa&255)+oa+(Ba>>>24)|0)>>>2;Ba=xa+2|0;if((Ba|0)<(ia|0)){xa=Ba;ya=ya+8|0;ka=ka+8|0;va=va+8|0;wa=wa+8|0;ha=ga&255;ua=sa&255;ta=ra&255;fa=oa&255}else{break}}}if((ma|0)<(Z|0)){Ha=ma}else{break}}}ia=c[(c[4917452]|0)+32>>2]|0;do{if(Q){if((ia|0)==1){uR(B,y,ca,U,0);break}else if((ia|0)==0){break}else{vR(B,y,ca,U,0);break}}else{if((ia|0)==1){uR(B,y,ca,U,0);uR(B,y,ca,U,1);break}else if((ia|0)==0){break}else{vR(B,y,ca,U,0);vR(B,y,ca,U,1);break}}}while(0);if($){ia=ca<<2;fa=(ea|0)>0;ta=0;do{if(fa){ua=0;ha=N+((da(ta+V|0,O)|0)+ba<<2)|0;wa=o+((da(ia,ta+4|0)|0)+16)|0;while(1){c[ha>>2]=c[wa>>2];va=ua+1|0;if((va|0)<(ea|0)){ua=va;ha=ha+4|0;wa=wa+4|0}else{break}}}ta=ta+1|0;}while((ta|0)<(S|0))}ba=ba+128|0;}while((ba|0)<(O|0))}V=V+128|0;}while((V|0)<(D|0))}if((O|0)<(G|0)|(D|0)<(H|0)){A=D;P=O}else{Ia=D;Ja=O;break}}}else{Ia=u;Ja=w}do{if(x){P=c[l>>2]|0;if((Ia|0)<=0){break}A=Ja<<2;y=(Ja|0)>0;B=0;do{if(y){z=P+(da(A,B)|0)|0;V=0;while(1){N=z+1|0;Q=z+2|0;C=z+3|0;M=a[C]|0;R=d[z]|0;ba=d[N]|0;S=d[Q]|0;$=ba+R-S|0;U=($|0)>0;if(($|0)<255|U^1){Ka=U?$&255:0}else{Ka=-1}a[z]=Ka;$=R-128+S|0;U=($|0)>0;if(($|0)<255|U^1){La=U?$&255:0}else{La=-1}a[N]=La;N=(R|256)-ba-S|0;S=(N|0)>0;if((N|0)<255|S^1){Ma=S?N&255:0}else{Ma=-1}a[Q]=Ma;a[C]=M;M=V+1|0;if((M|0)<(Ja|0)){z=z+4|0;V=M}else{break}}}B=B+1|0;}while((B|0)<(Ia|0))}else{if(!((j-1|0)>>>0<2>>>0)){break}B=c[l>>2]|0;if((Ia|0)<=0){break}A=Ja<<2;P=(Ja|0)>0;y=0;do{if(P){O=B+(da(A,y)|0)|0;D=0;while(1){V=O+1|0;z=a[O]|0;M=a[V]|0;C=O+3|0;Q=a[C]|0;Na=+((z&255)>>>0)/127.5+-1.0;Oa=+((M&255)>>>0)/127.5+-1.0;Pa=1.0-Na*Na-Oa*Oa;if(Pa<0.0){Qa=-128}else{Qa=~~(+T(Pa)*127.5+128.0)}a[O]=z;a[V]=M;a[O+2|0]=Qa;a[C]=Q;Q=D+1|0;if((Q|0)<(Ja|0)){O=O+4|0;D=Q}else{break}}}y=y+1|0;}while((y|0)<(Ia|0))}}while(0);c[b>>2]=c[l>>2];Ra=Ja;Sa=Ia}}while(0);do{if((t|0)==105){if((w|0)==(p|0)&(u|0)==(q|0)){Ra=p;Sa=q;break}if(r|k){Ra=w;Sa=u;break}Ia=da(u<<2,w)|0;Ja=jk[c[4886348]&255](Ia)|0;c[l>>2]=Ja;tR(c[b>>2]|0,p,q,Ja,w,u);c[b>>2]=c[l>>2];Ra=w;Sa=u}}while(0);if(v){v=c[(c[4917382]|0)+32>>2]|0;Ta=Ra>>v;Ua=Sa>>v}else{Ta=Ra;Ua=Sa}v=(Ta|0)<1?1:Ta;Ta=(Ua|0)<1?1:Ua;Ua=c[5123016]|0;if((v|0)>(Ua|0)|(Ta|0)>(Ua|0)){Va=Ta;Wa=v}else{Xa=Ta;Ya=v;c[e>>2]=Ra;c[f>>2]=Sa;c[g>>2]=Ya;c[h>>2]=Xa;i=m;return}while(1){v=Wa>>1;Ta=Va>>1;if((v|0)>(Ua|0)|(Ta|0)>(Ua|0)){Va=Ta;Wa=v}else{Xa=Ta;Ya=v;break}}c[e>>2]=Ra;c[f>>2]=Sa;c[g>>2]=Ya;c[h>>2]=Xa;i=m;return}function dR(b,e,f,g,h,i,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var 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,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;if((i|0)==6402|(i|0)==33189|(i|0)==33190|(i|0)==33191){m=5121;n=6402}else if((i|0)==34842){m=5131;n=6408}else{m=5121;n=6408}i=(l|0)!=0;if(i){jg(3553,0,e|0,f|0,g|0,h|0,n|0,m|0,b|0)}else{Bj(3553,0,n|0,g|0,h|0,0,n|0,m|0,b|0)}if((k&1|0)==0){return}if(!((g|0)>1|(h|0)>1)){return}l=(b|0)!=0;o=(j-1|0)>>>0<2>>>0;j=(k&128|0)==0;k=h;h=g;g=f;f=e;e=0;a:while(1){p=k;q=h;r=e;while(1){do{if(l){if(!o){if(j){fR(b,q,p);break}else{eR(b,q,p);break}}if((q|0)==1&(p|0)==1){break}s=q<<2;t=q>>1;u=p>>1;if((u|0)<=0){break}v=(t|0)>0;w=s|3;x=s|1;y=s|2;z=w+4|0;A=s+5|0;B=s+6|0;C=s+4|0;D=t<<3;E=t<<2;F=0;G=b;H=b;while(1){if(v){I=0;J=G;K=H;while(1){L=+((d[K+3|0]|0)>>>0)/127.5+-1.0+(+((d[K+7|0]|0)>>>0)/127.5+-1.0)+(+((d[K+w|0]|0)>>>0)/127.5+-1.0)+(+((d[K+z|0]|0)>>>0)/127.5+-1.0);M=+((d[K+1|0]|0)>>>0)/127.5+-1.0+(+((d[K+5|0]|0)>>>0)/127.5+-1.0)+(+((d[K+x|0]|0)>>>0)/127.5+-1.0)+(+((d[K+A|0]|0)>>>0)/127.5+-1.0);N=+((d[K+2|0]|0)>>>0)/127.5+-1.0+(+((d[K+6|0]|0)>>>0)/127.5+-1.0)+(+((d[K+y|0]|0)>>>0)/127.5+-1.0)+(+((d[K+B|0]|0)>>>0)/127.5+-1.0);O=+GB(L*L+M*M+N*N);a[J+3|0]=~~(L*O*127.5+128.0);a[J+1|0]=~~(M*O*127.5+128.0);a[J+2|0]=~~(O*N*127.5+128.0);P=a[K]|0;Q=a[K+4|0]|0;R=(P&255)>>>0>(Q&255)>>>0?P:Q;Q=a[K+s|0]|0;P=a[K+C|0]|0;S=(Q&255)>>>0>(P&255)>>>0?Q:P;a[J]=(R&255)>>>0>(S&255)>>>0?R:S;S=I+1|0;if((S|0)<(t|0)){I=S;J=J+4|0;K=K+8|0}else{break}}T=G+E|0;U=H+D|0}else{T=G;U=H}K=F+1|0;if((K|0)<(u|0)){F=K;G=T;H=U+s|0}else{break}}}}while(0);s=q>>1;H=p>>1;V=(s|0)<1?1:s;W=(H|0)<1?1:H;X=r+1|0;do{if(l){if((c[(c[4919896]|0)+32>>2]|0)==0){break}H=da(V,W)|0;s=d[12307+(X<<2)|0]|0;G=s^255;F=da(d[12304+(X<<2)|0]|0,s)|0;u=da(d[12305+(X<<2)|0]|0,s)|0;D=da(d[12306+(X<<2)|0]|0,s)|0;if((H|0)>0){Y=0;Z=b}else{break}while(1){a[Z]=((da(d[Z]|0,G)|0)+F|0)>>>9;s=Z+1|0;a[s]=((da(d[s]|0,G)|0)+u|0)>>>9;s=Z+2|0;a[s]=((da(d[s]|0,G)|0)+D|0)>>>9;s=Y+1|0;if((s|0)<(H|0)){Y=s;Z=Z+4|0}else{break}}}}while(0);if(i){break}Bj(3553,X|0,n|0,V|0,W|0,0,n|0,m|0,b|0);if((V|0)>1|(W|0)>1){p=W;q=V;r=X}else{_=30;break a}}r=f>>1;q=g>>1;jg(3553,X|0,r|0,q|0,V|0,W|0,n|0,m|0,b|0);if((V|0)>1|(W|0)>1){k=W;h=V;g=q;f=r;e=X}else{_=30;break}}if((_|0)==30){return}}function eR(b,e,f){b=b|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,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0.0,E=0,F=0;g=e>>1;h=f>>1;f=g<<2;i=da(f,h)|0;j=jk[c[4886348]&255](i)|0;if((h|0)<=0){m$(b|0,j|0,i)|0;k=c[4886349]|0;vk[k&511](j);return}l=e<<2;e=(g|0)>0;m=0;do{n=m<<1;if(e){o=0;p=j+(da(f,m)|0)|0;q=b+(da(l,n)|0)|0;r=b+(da(l,n|1)|0)|0;while(1){n=r+3|0;s=0;t=p;u=q;v=r;w=a[q]|0;while(1){x=+((w&255)>>>0)/255.0;if(x>.040449999272823334){y=+U(+((x+.054999999701976776)/1.0549999475479126),2.4)}else{y=x/12.920000076293945}x=+((d[u+4|0]|0)>>>0)/255.0;if(x>.040449999272823334){z=+U(+((x+.054999999701976776)/1.0549999475479126),2.4)}else{z=x/12.920000076293945}x=+((d[v]|0)>>>0)/255.0;if(x>.040449999272823334){A=+U(+((x+.054999999701976776)/1.0549999475479126),2.4)}else{A=x/12.920000076293945}x=+((d[v+4|0]|0)>>>0)/255.0;if(x>.040449999272823334){B=+U(+((x+.054999999701976776)/1.0549999475479126),2.4)}else{B=x/12.920000076293945}x=(y+z+A+B)*.25;C=u+1|0;if(x<.0031308000907301903){D=x*12.920000076293945}else{D=+U(+x,+.41666001081466675)*1.0549999475479126+-.054999999701976776}a[t]=~~(D*255.0);E=s+1|0;F=a[C]|0;if((E|0)<3){s=E;t=t+1|0;u=C;v=v+1|0;w=F}else{break}}a[p+3|0]=((d[q+7|0]|0)+(F&255)+(d[n]|0)+(d[r+7|0]|0)|0)>>>2;w=o+1|0;if((w|0)<(g|0)){o=w;p=p+4|0;q=q+8|0;r=r+8|0}else{break}}}m=m+1|0;}while((m|0)<(h|0));m$(b|0,j|0,i)|0;k=c[4886349]|0;vk[k&511](j);return}function fR(b,e,f){b=b|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,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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;if((c[(c[4917334]|0)+32>>2]|0)==0){g=e>>1;h=f>>1;i=da(g<<2,h)|0;j=jk[c[4886348]&255](i)|0;k=j;l=e-1|0;m=f-1|0;if((h|0)>0){n=(g|0)>0;o=0;do{if(n){p=da(o,g)|0;q=o<<1;r=da(q-1&m,e)|0;s=da(q&m,e)|0;t=da((q|1)&m,e)|0;u=da(q+2&m,e)|0;q=0;do{v=k+(q+p<<2)|0;w=q<<1;x=w-1&l;y=x+r<<2;z=w&l;A=z+r<<2;B=(w|1)&l;C=B+r<<2;D=w+2&l;w=D+r<<2;E=x+s<<2;F=z+s<<2;G=B+s<<2;H=D+s<<2;I=x+t<<2;J=z+t<<2;K=B+t<<2;L=D+t<<2;M=x+u<<2;x=z+u<<2;z=B+u<<2;B=D+u<<2;D=0;do{a[v+D|0]=((d[b+(D+w)|0]|0)+(d[b+(D+y)|0]|0)+(d[b+(D+M)|0]|0)+((d[b+(D+G)|0]|0)+(d[b+(D+F)|0]|0)+(d[b+(D+J)|0]|0)+(d[b+(D+K)|0]|0)<<2)+(d[b+(D+B)|0]|0)+((d[b+(D+C)|0]|0)+(d[b+(D+A)|0]|0)+(d[b+(D+E)|0]|0)+(d[b+(D+H)|0]|0)+(d[b+(D+I)|0]|0)+(d[b+(D+L)|0]|0)+(d[b+(D+x)|0]|0)+(d[b+(D+z)|0]|0)<<1)|0)/36|0;D=D+1|0;}while((D|0)<4);q=q+1|0;}while((q|0)<(g|0))}o=o+1|0;}while((o|0)<(h|0))}m$(b|0,j|0,i)|0;vk[c[4886349]&511](j);return}if((e|0)==1&(f|0)==1){return}j=e<<2;i=e>>1;e=f>>1;if((i|0)==0|(e|0)==0){f=e+i|0;if((f|0)>0){N=0;O=b;P=b}else{return}while(1){a[O]=((d[P+4|0]|0)+(d[P]|0)|0)>>>1;a[O+1|0]=((d[P+5|0]|0)+(d[P+1|0]|0)|0)>>>1;a[O+2|0]=((d[P+6|0]|0)+(d[P+2|0]|0)|0)>>>1;a[O+3|0]=((d[P+7|0]|0)+(d[P+3|0]|0)|0)>>>1;h=N+1|0;if((h|0)<(f|0)){N=h;O=O+4|0;P=P+8|0}else{break}}return}if((e|0)<=0){return}P=(i|0)>0;O=j+4|0;N=j|1;f=j+5|0;h=j|2;o=j+6|0;g=j|3;l=j+7|0;k=i<<3;m=i<<2;n=0;q=b;u=b;while(1){if(P){b=u+k|0;t=0;s=q;r=u;while(1){a[s]=((d[r+4|0]|0)+(d[r]|0)+(d[r+j|0]|0)+(d[r+O|0]|0)|0)>>>2;a[s+1|0]=((d[r+5|0]|0)+(d[r+1|0]|0)+(d[r+N|0]|0)+(d[r+f|0]|0)|0)>>>2;a[s+2|0]=((d[r+6|0]|0)+(d[r+2|0]|0)+(d[r+h|0]|0)+(d[r+o|0]|0)|0)>>>2;a[s+3|0]=((d[r+7|0]|0)+(d[r+3|0]|0)+(d[r+g|0]|0)+(d[r+l|0]|0)|0)>>>2;p=t+1|0;if((p|0)<(i|0)){t=p;s=s+4|0;r=r+8|0}else{break}}Q=q+m|0;R=b}else{Q=q;R=u}r=n+1|0;if((r|0)<(e|0)){n=r;q=Q;u=R+j|0}else{break}}return}function gR(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;i=i+64|0;h=g|0;c[d>>2]=0;c[e>>2]=0;c[f>>2]=0;TB(h,b,64);j=RB(h)|0;a:do{if((a[j]|0)==0){k=0;l=-1}else{m=0;while(1){n=m+1|0;if((VB(j,c[20520+(m<<3)>>2]|0)|0)==0){break}if((n|0)<6){m=n}else{k=0;l=-1;break a}}Yk[c[20524+(m<<3)>>2]&255](h,d,e,f);if((c[d>>2]|0)==0){SB(b,h,64);k=1;l=m;break}else{o=64;p=0;i=g;return}}}while(0);j=0;while(1){if((j|0)!=(l|0)){n=c[20520+(j<<3)>>2]|0;q=pC(123440,(r=i,i=i+16|0,c[r>>2]=h,c[r+8>>2]=n,r)|0)|0;i=r;Yk[c[20524+(j<<3)>>2]&255](q,d,e,f);if((c[d>>2]|0)!=0){break}}n=j+1|0;if((n|0)<6){j=n}else{s=12;break}}if((s|0)==12){o=64;p=0;i=g;return}if((k|0)==0){o=64;p=0;i=g;return}Tk[c[4886344]&255](1,122608,(r=i,i=i+16|0,c[r>>2]=b,c[r+8>>2]=q,r)|0);i=r;o=64;p=0;i=g;return}function hR(b,e,f){b=b|0;e=e|0;f=f|0;var h=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,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,_=0,$=0,aa=0,ba=0,ca=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;h=i;i=i+104|0;j=h|0;k=h+16|0;l=h+24|0;m=h+32|0;n=h+40|0;if((b|0)==0){o=0;i=h;return o|0}p=a[b]|0;a:do{if(p<<24>>24==0){q=0}else{r=0;s=0;t=p;while(1){u=(t$(t<<24>>24|0)|0)&255;if((u<<24>>24|0)==92){v=47}else if((u<<24>>24|0)==46){q=s;break a}else{v=u}u=(da(v<<24>>24,r+119|0)|0)+s|0;w=r+1|0;x=a[b+w|0]|0;if(x<<24>>24==0){q=u;break}else{r=w;s=u;t=x}}}}while(0);v=c[20475280+((q&1023)<<2)>>2]|0;b:do{if((v|0)!=0){q=v;while(1){if((k$(b,q|0)|0)==0){break}p=c[q+104>>2]|0;if((p|0)==0){break b}else{q=p}}if((k$(b,121752)|0)==0){o=q;i=h;return o|0}p=c[q+100>>2]|0;if((p|0)==(f|0)){o=q;i=h;return o|0}Tk[c[4886344]&255](1,120848,(t=i,i=i+24|0,c[t>>2]=b,c[t+8>>2]=p,c[t+16>>2]=f,t)|0);i=t;o=q;i=h;return o|0}}while(0);gR(b,m,k,l);if((c[m>>2]|0)==0){o=0;i=h;return o|0}do{if(!((c[(c[4917402]|0)+32>>2]|0)==0|(e|0)==1)){if((f&259|0)!=259){break}v=n|0;t=f&-417|32;SB(b,v,64);XB(v,64,119616);if((hR(v,1,t)|0)!=0){break}p=c[k>>2]|0;s=c[l>>2]|0;r=da(p<<2,s)|0;x=jk[c[4886350]&255](r)|0;r=c[m>>2]|0;u=c[k>>2]|0;w=c[l>>2]|0;y=f&64;if((w|0)>0){z=u<<2;A=(u|0)>0;B=0;C=1;while(1){D=da(B,z)|0;if(A){E=C;F=r+D|0;G=x+(D|3)|0;D=0;while(1){H=(((d[F+1|0]|0)>>>1)+((d[F]|0)>>>2)&255)+((d[F+2|0]|0)>>>2)&255;I=((da(H,H)|0)>>>0)/255|0;a[G]=I;H=I&255;I=(E|0)>(H|0)?E:H;H=D+1|0;if((H|0)<(u|0)){E=I;F=F+4|0;G=G+4|0;D=H}else{J=I;break}}}else{J=C}D=B+1|0;if((D|0)<(w|0)){B=D;C=J}else{break}}if((J|0)<255){C=255-J|0;B=0;do{if(A){r=0;q=x+(da(B,z)|0|3)|0;while(1){a[q]=C+(d[q]|0);D=r+1|0;if((D|0)<(u|0)){r=D;q=q+4|0}else{break}}}B=B+1|0;}while((B|0)<(w|0))}B=(y|0)==0;C=w-1|0;q=j|0;r=j+4|0;D=j+8|0;G=0;while(1){if(A){F=0;E=x+(da(G,z)|0)|0;while(1){I=F-1|0;H=(I|0)>0?I:0;I=(H|0)<(C|0)?H:C;H=(F|0)<(C|0)?F:C;K=F+1|0;L=(K|0)<(C|0)?K:C;M=K+w|0;N=F+w|0;O=C+F|0;P=G-1|0;if(B){Q=da((P+w|0)%(w|0)|0,u)|0;R=da((G+w|0)%(w|0)|0,u)|0;S=G+1|0;T=da((S+w|0)%(w|0)|0,u)|0;U=(M|0)%(w|0)|0;V=((O|0)%(w|0)|0)+T|0;W=T;X=((N|0)%(w|0)|0)+R|0;Y=((M|0)%(w|0)|0)+Q|0;Z=((O|0)%(w|0)|0)+Q|0;_=((N|0)%(w|0)|0)+Q|0;$=((O|0)%(w|0)|0)+R|0;aa=((M|0)%(w|0)|0)+R|0;ba=S;ca=((N|0)%(w|0)|0)+T|0}else{T=(P|0)>0?P:0;P=da((T|0)<(C|0)?T:C,u)|0;T=da((G|0)<(C|0)?G:C,u)|0;N=G+1|0;S=da((N|0)<(C|0)?N:C,u)|0;U=L;V=I+S|0;W=S;X=H+T|0;Y=L+P|0;Z=I+P|0;_=H+P|0;$=I+T|0;aa=L+T|0;ba=N;ca=H+S|0}S=a[x+(X<<2|3)|0]|0;H=a[x+(_<<2|3)|0]|0;N=a[x+(ca<<2|3)|0]|0;T=d[x+(Z<<2|3)|0]|0;L=d[x+(Y<<2|3)|0]|0;I=d[x+(V<<2|3)|0]|0;P=d[x+(U+W<<2|3)|0]|0;g[q>>2]=+(T-L+((d[x+($<<2|3)|0]|0)<<1)-((d[x+(aa<<2|3)|0]|0)<<1)+I-P|0);g[r>>2]=+(L+T-I-P+((H&255)<<1)-((N&255)<<1)|0);g[D>>2]=+((S&255)<<2|0);if(+MB(q,q)!=0.0){ea=~~(+g[q>>2]*127.5+128.0)}else{g[q>>2]=0.0;g[r>>2]=0.0;g[D>>2]=1.0;ea=-128}a[E]=ea;a[E+1|0]=~~(+g[r>>2]*127.5+128.0);a[E+2|0]=~~(+g[D>>2]*127.5+128.0);if((K|0)<(u|0)){F=K;E=E+4|0}else{fa=ba;break}}}else{fa=G+1|0}if((fa|0)<(w|0)){G=fa}else{break}}}G=c[m>>2]|0;w=c[k>>2]|0;u=c[l>>2]|0;do{if((u|0)>0){D=w<<2;if((w|0)>0){ga=0}else{ha=0;ia=w;ja=43;break}do{r=G+(da(D,ga)|0)|0;q=0;while(1){C=r+1|0;B=r+2|0;z=d[r]|0;A=d[B]|0;y=d[C]|0;E=(A+z|0)>>>1&255;a[r]=(E+y|0)>>>1;a[C]=((z|256)-A|0)>>>1;a[B]=((y|256)-E|0)>>>1;E=q+1|0;if((E|0)<(w|0)){r=r+4|0;q=E}else{break}}ga=ga+1|0;}while((ga|0)<(u|0));ha=0;ia=c[k>>2]|0;ja=43}else{ka=0;la=u;ma=w;na=G}}while(0);while(1){if((ja|0)==43){ja=0;ka=ha;la=c[l>>2]|0;ma=ia;na=c[m>>2]|0}if((ka|0)>=(la|0)){break}G=da(ma<<2,ka)|0;if((ma|0)>0){w=0;u=na+G|0;D=x+G|0;while(1){G=(d[D+2|0]|0)-127|0;q=((d[u]|0)<<7|0)/(((G|0)>16?G:16)|0)|0;G=(q|0)>0;if((q|0)<255|G^1){oa=G?q&255:0}else{oa=-1}a[u]=oa;q=w+1|0;G=c[k>>2]|0;if((q|0)<(G|0)){w=q;u=u+4|0;D=D+4|0}else{pa=G;break}}}else{pa=ma}ha=ka+1|0;ia=pa;ja=43}if((la|0)>0){D=ma<<2;u=(ma|0)>0;w=0;do{if(u){G=na+(da(D,w)|0)|0;q=0;while(1){r=G+1|0;E=G+2|0;y=G+3|0;B=a[y]|0;A=d[G]|0;z=d[r]|0;C=d[E]|0;F=z+A-C|0;K=(F|0)>0;if((F|0)<255|K^1){qa=K?F&255:0}else{qa=-1}a[G]=qa;F=A-128+C|0;K=(F|0)>0;if((F|0)<255|K^1){ra=K?F&255:0}else{ra=-1}a[r]=ra;r=(A|256)-z-C|0;C=(r|0)>0;if((r|0)<255|C^1){sa=C?r&255:0}else{sa=-1}a[E]=sa;a[y]=B;B=q+1|0;if((B|0)<(ma|0)){G=G+4|0;q=B}else{break}}}w=w+1|0;}while((w|0)<(la|0))}aR(v,x,p,s,1,t,0)|0;vk[c[4886351]&511](x)}}while(0);la=aR(b,c[m>>2]|0,c[k>>2]|0,c[l>>2]|0,e,f,0)|0;vk[c[4886351]&511](c[m>>2]|0);o=la;i=h;return o|0}function iR(){var a=0,b=0.0,c=0.0;a=0;do{b=+(a|0)/255.0;c=+S(+(+T(b)));g[1216320+(a<<2)>>2]=b==-t?t:c;a=a+1|0;}while((a|0)<256);return}function jR(a,b){a=+a;b=+b;var c=0.0,d=0.0,e=0.0;c=a+-.001953125;if(c<0.0|b<.03125){d=0.0;return+d}if(b<.96875){e=c*((b+-.03125)/.9375)}else{e=c}c=e*8.0;d=+g[1216320+((c>1.0?255:~~(c*255.0))<<2)>>2];return+d}function kR(){var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0,y=0,A=0,B=0,C=0;d=i;i=i+2072|0;e=d|0;f=d+16|0;h=d+1040|0;j=d+2064|0;k=h|0;l=f|0;n$(l|0,32,1024)|0;m=0;while(1){n=f+(m<<2)|0;z=-1;a[n]=z;z=z>>8;a[n+1|0]=z;z=z>>8;a[n+2|0]=z;z=z>>8;a[n+3|0]=z;n=f+(m<<6)|0;z=-1;a[n]=z;z=z>>8;a[n+1|0]=z;z=z>>8;a[n+2|0]=z;z=z>>8;a[n+3|0]=z;n=f+960+(m<<2)|0;z=-1;a[n]=z;z=z>>8;a[n+1|0]=z;z=z>>8;a[n+2|0]=z;z=z>>8;a[n+3|0]=z;n=m+1|0;o=f+(m<<6)+60|0;z=-1;a[o]=z;z=z>>8;a[o+1|0]=z;z=z>>8;a[o+2|0]=z;z=z>>8;a[o+3|0]=z;if((n|0)<16){m=n}else{break}}c[253205]=aR(52760,l,16,16,0,1,0)|0;n$(k|0,-1|0,1024)|0;c[253241]=aR(121752,k,8,8,0,0,0)|0;if((c[(c[4919864]|0)+32>>2]|0)>1){m=0;do{n=pC(118280,(p=i,i=i+8|0,c[p>>2]=m,p)|0)|0;i=p;c[1012972+(m<<2)>>2]=aR(n,k,16,16,0,68,0)|0;m=m+1|0;}while((m|0)<32)}m=c[253580]&255;n=0;do{o=0;do{a[h+(o<<6)+(n<<2)+2|0]=m;a[h+(o<<6)+(n<<2)+1|0]=m;a[h+(o<<6)+(n<<2)|0]=m;a[h+(o<<6)+(n<<2)+3|0]=-1;o=o+1|0;}while((o|0)<16);n=n+1|0;}while((n|0)<16);c[253242]=aR(117344,k,8,8,0,0,0)|0;n=0;while(1){c[1012824+(n<<2)>>2]=aR(116120,k,16,16,0,66,0)|0;m=n+1|0;if((m|0)<32){n=m}else{q=0;break}}do{r=7.5- +(q|0);s=r*r;n=0;do{r=7.5- +(n|0);m=~~(4.0e3/(s+r*r));if((m|0)>255){t=-1}else{t=(m|0)<75?0:m&255}a[f+(n<<6)+(q<<2)+2|0]=t;a[f+(n<<6)+(q<<2)+1|0]=t;a[f+(n<<6)+(q<<2)|0]=t;a[f+(n<<6)+(q<<2)+3|0]=-1;n=n+1|0;}while((n|0)<16);q=q+1|0;}while((q|0)<16);c[253239]=aR(53248,l,16,16,0,64,0)|0;l=jk[c[4886348]&255](32768)|0;q=0;do{s=(+(q|0)+.5)*.00390625+-.001953125;f=s<0.0;t=0;do{r=(+(t|0)+.5)*.03125;if(f|r<.03125){u=0}else{if(r<.96875){v=s*((r+-.03125)/.9375)}else{v=s}r=v*8.0;u=~~(+g[1216320+((r>1.0?255:~~(r*255.0))<<2)>>2]*255.0)}n=(t<<8)+q<<2;a[l+(n|2)|0]=-1;a[l+(n|1)|0]=-1;a[l+n|0]=-1;a[l+(n|3)|0]=u;t=t+1|0;}while((t|0)<32);q=q+1|0;}while((q|0)<256);c[253238]=aR(53728,l,256,32,0,64,0)|0;vk[c[4886349]&511](l);l=e|0;g[l>>2]=1.0;g[e+4>>2]=1.0;g[e+8>>2]=1.0;g[e+12>>2]=1.0;Jj(3553,4100,l|0);l=c[5120183]|0;if((l|0)==0){w=1024;x=0;i=d;return}e=c[5123026]|0;if((c[5120186]|0)==0){q=lQ(e)|0;u=lQ(c[5123027]|0)|0;y=u;A=q;B=c[5120183]|0}else{y=c[5123027]|0;A=e;B=l}l=(c[(c[4917466]|0)+32>>2]|0)!=0&(B|0)!=0&(c[5120187]|0)!=0;B=l?34842:32856;c[253275]=aR(114536,0,A,y,0,80,B)|0;if((c[(c[4919858]|0)+32>>2]|0)!=0){c[253276]=aR(113496,0,A,y,0,80,32856)|0}if((c[5120183]|0)!=0){c[253277]=aR(112568,0,A,y,0,80,33190)|0;c[253308]=aR(111688,0,512,512,0,80,33190)|0}if(l){b[j>>1]=mQ(0.0)|0;b[j+2>>1]=mQ(.44999998807907104)|0;b[j+4>>1]=mQ(1.0)|0;b[j+6>>1]=mQ(1.0)|0;C=j}else{a[k]=0;a[h+1|0]=114;a[h+2|0]=-1;a[h+3|0]=-1;C=k}c[253298]=aR(110960,C,1,1,0,80,B)|0;c[253299]=aR(110200,C,1,1,0,80,B)|0;c[253300]=aR(108824,C,1,1,0,80,B)|0;B=pC(107752,(p=i,i=i+8|0,c[p>>2]=0,p)|0)|0;i=p;c[253294]=aR(B,0,256,256,0,80,32856)|0;B=pC(107752,(p=i,i=i+8|0,c[p>>2]=1,p)|0)|0;i=p;c[253295]=aR(B,0,256,256,0,80,32856)|0;B=(A|0)/2|0;C=(y|0)/2|0;k=pC(106968,(p=i,i=i+8|0,c[p>>2]=0,p)|0)|0;i=p;c[253296]=aR(k,0,B,C,0,80,32856)|0;k=pC(106968,(p=i,i=i+8|0,c[p>>2]=1,p)|0)|0;i=p;c[253297]=aR(k,0,B,C,0,80,32856)|0;if((c[(c[4917318]|0)+32>>2]|0)!=0){c[253305]=aR(105912,0,B,C,0,80,32856)|0;c[253306]=aR(105056,0,A,y,0,80,34839)|0}if((c[(c[4917346]|0)+32>>2]|0)==4){C=0;do{B=pC(104136,(p=i,i=i+8|0,c[p>>2]=C,p)|0)|0;i=p;c[1013112+(C<<2)>>2]=aR(B,0,512,512,0,80,32856)|0;C=C+1|0;}while((C|0)<16)}if((c[(c[4917306]|0)+32>>2]|0)!=0){C=pC(103152,(p=i,i=i+8|0,c[p>>2]=0,p)|0)|0;i=p;B=c[(c[4917348]|0)+32>>2]|0;c[253301]=aR(C,0,B,B,0,80,33190)|0;B=pC(103152,(p=i,i=i+8|0,c[p>>2]=1,p)|0)|0;i=p;C=c[(c[4917348]|0)+32>>2]|0;c[253302]=aR(B,0,C,C,0,80,33190)|0;C=pC(103152,(p=i,i=i+8|0,c[p>>2]=2,p)|0)|0;i=p;p=c[(c[4917348]|0)+32>>2]|0;c[253303]=aR(C,0,p,p,0,80,33190)|0;c[253304]=aR(102440,0,A,y,0,80,32856)|0}if((c[(c[4919892]|0)+32>>2]|0)==0){w=1024;x=0;i=d;return}c[253307]=aR(101520,0,128,128,0,85,32856)|0;w=1024;x=0;i=d;return}function lR(){var b=0,d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0,l=0.0,m=0,n=0;b=(c[5123023]|0)!=0?c[(c[4917386]|0)+32>>2]|0:0;c[253581]=b;do{if((c[5123030]|0)==0){if((c[(c[4917328]|0)+32>>2]|0)!=0){d=b;break}c[253581]=0;d=0}else{d=b}}while(0);do{if((c[(c[4917298]|0)+32>>2]|0)==0){e=d}else{if((c[(c[4917466]|0)+32>>2]|0)==0){e=d;break}c[253581]=0;e=0}}while(0);do{if((c[5123018]|0)>16){if((e|0)<=2){f=12;break}c[253581]=2;h=2}else{if((e|0)<=1){f=12;break}c[253581]=1;h=1}}while(0);do{if((f|0)==12){if((e|0)>=0){h=e;break}c[253581]=0;h=0}}while(0);i=1.0/+(1<>2]>1.0)){hk[c[4886353]&255](100600,99504)}i=+g[(c[4917472]|0)+28>>2];do{if(i<.5){hk[c[4886353]&255](64680,63760)}else{if(!(i>3.0)){break}hk[c[4886353]&255](64680,62608)}}while(0);i=+g[(c[4917472]|0)+28>>2];h=(c[(c[4917328]|0)+32>>2]|0)!=0?0:c[253581]|0;e=i==1.0;j=1.0/i;f=c[4917320]|0;d=0;do{if((c[f+32>>2]|0)==0){k=d}else{i=+(d|0)/255.0;if(i<.0031308000907301903){l=i*12.920000076293945}else{l=+U(+i,+.41666001081466675)*1.0549999475479126+-.054999999701976776}k=~~(l*255.0+.5)}if(e){m=k}else{m=~~(+U(+(+(k|0)/255.0),+j)*255.0+.5)}b=m<255?-1:n&255;d=d+1|0;}while((d|0)<256);d=(c[4917446]|0)+28|0;h=0;do{m=~~(+(h|0)*+g[d>>2]);a[19534552+h|0]=(m|0)>255?-1:m&255;h=h+1|0;}while((h|0)<256);if((c[5123023]|0)==0){return}$U(19534824,19534824,19534824);return}function mR(){n$(20475280|0,0|0,4096|0)|0;lR();kR();return}function nR(){var a=0;if((c[254853]|0)>0){a=0;do{Uf(1,(c[1019416+(a<<2)>>2]|0)+80|0);a=a+1|0;}while((a|0)<(c[254853]|0))}n$(1019412,0,8196)|0;n$(20480416,0,28)|0;if((c[4920100]|0)==0){Mf(3553,0);return}else{bP(1);Mf(3553,0);bP(0);Mf(3553,0);return}}function oR(b){b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;i=i+80|0;e=d|0;f=d+8|0;g=d+16|0;do{if((b|0)!=0){if((a[b]|0)==0){break}if((o$(b|0)|0)>>>0>63>>>0){Tk[c[4886344]&255](1,60976,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=0;k=64;l=0;i=d;return j|0}m=c[297930]|0;do{if((m|0)>1){n=1;while(1){o=c[1191724+(n<<2)>>2]|0;p=n+1|0;if((VB(o|0,b)|0)==0){q=9;break}r=c[297930]|0;if((p|0)<(r|0)){n=p}else{break}}if((q|0)==9){j=(c[o+64>>2]|0)==0?0:n;k=64;l=0;i=d;return j|0}if((r|0)!=1024){s=r;t=p;break}Tk[c[4886344]&255](2,60256,(h=i,i=i+8|0,c[h>>2]=b,h)|0);i=h;j=0;k=64;l=0;i=d;return j|0}else{s=m;t=1}}while(0);c[297930]=s+1;m=Kk[c[4886347]&255](196,1)|0;c[1191724+(t<<2)>>2]=m;TB(m,b,64);u=m+64|0;c[u>>2]=0;MP();if((k$(b+((o$(b|0)|0)-5)|0,59616)|0)!=0){c[u>>2]=1;v=m+68|0;c[v>>2]=Kk[c[4886347]&255](4,1)|0;w=WT(b,-1,1)|0;c[(c[v>>2]|0)+64>>2]=w;j=t;k=64;l=0;i=d;return j|0}Kk[c[4886365]&255](b,e)|0;w=c[e>>2]|0;if((w|0)==0){j=0;k=64;l=0;i=d;return j|0}c[f>>2]=w;v=m+68|0;m=w;while(1){if((a[m]|0)==0){break}w=pR(f)|0;TB(g,w,64);if((a[w]|0)==0){break}lC(g)|0;x=c[f>>2]|0;if((a[x]|0)==44){y=x+1|0;c[f>>2]=y;z=y}else{z=x}if((ii(w|0,59040)|0)==0){w=pR(f)|0;if((c[u>>2]|0)>31){q=23;break}x=Kk[c[4886347]&255](68,1)|0;c[v+(c[u>>2]<<2)>>2]=x;TB(x,g,64);c[x+64>>2]=WT(w,-1,1)|0;c[u>>2]=(c[u>>2]|0)+1;A=c[f>>2]|0}else{A=z}if((A|0)==0){break}else{m=A}}if((q|0)==23){Tk[c[4886344]&255](2,58448,(h=i,i=i+16|0,c[h>>2]=b,c[h+8>>2]=32,h)|0);i=h}vk[c[4886366]&511](c[e>>2]|0);j=(c[u>>2]|0)==0?0:t;k=64;l=0;i=d;return j|0}}while(0);Tk[c[4886344]&255](1,61712,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=0;k=64;l=0;i=d;return j|0}function pR(b){b=b|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;d=c[b>>2]|0;a[30281064]=0;if((d|0)==0){c[b>>2]=0;e=30281064;return e|0}else{f=d}a:while(1){d=a[f]|0;if(!(d<<24>>24>32|d<<24>>24==0)){f=f+1|0;continue}if((d<<24>>24|0)==34){g=14;break}else if((d<<24>>24|0)==0){e=28378568;g=24;break}else if((d<<24>>24|0)!=47){h=f;i=0;j=d;g=20;break}d=a[f+1|0]|0;if((d<<24>>24|0)==42){k=f;l=47}else if((d<<24>>24|0)==47){d=f;m=47;while(1){if((m<<24>>24|0)==0|(m<<24>>24|0)==10){f=d;continue a}n=d+1|0;d=n;m=a[n]|0}}else{h=f;i=0;j=47;g=20;break}while(1){if((l<<24>>24|0)==0){break}else if((l<<24>>24|0)==42){m=a[k+1|0]|0;if(m<<24>>24==47){break}else{o=m}}else{o=a[k+1|0]|0}k=k+1|0;l=o}f=l<<24>>24==0?k:k+2|0}if((g|0)==14){k=f+1|0;f=0;b:while(1){l=(f|0)<1024;o=k;while(1){p=o+1|0;q=a[o]|0;if((q<<24>>24|0)==34|(q<<24>>24|0)==0){break b}if(l){break}else{o=p}}a[30281064+f|0]=q;k=p;f=f+1|0}a[30281064+f|0]=0;c[b>>2]=p;e=30281064;return e|0}else if((g|0)==20){while(1){g=0;if((i|0)<1024){a[30281064+i|0]=j;r=i+1|0}else{r=i}s=h+1|0;p=a[s]|0;if(p<<24>>24>32&p<<24>>24!=44){h=s;i=r;j=p;g=20}else{break}}a[30281064+((r|0)==1024?0:r)|0]=0;c[b>>2]=s;e=30281064;return e|0}else if((g|0)==24){return e|0}return 0}function qR(){var a=0,b=0;c[297930]=1;a=Kk[c[4886347]&255](196,1)|0;c[297931]=a;TB(a,57512,64);c[a+64>>2]=1;b=Kk[c[4886347]&255](4,1)|0;c[a+68>>2]=b;c[b+64>>2]=c[253342];return}function rR(a){a=a|0;var b=0;if((a|0)>0&(c[297930]|0)>(a|0)){b=1191724+(a<<2)|0}else{b=1191724}return c[b>>2]|0}function sR(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;a=i;Tk[c[4886344]&255](0,56592,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;if((c[297930]|0)>0){d=0}else{e=c[4886344]|0;Tk[e&255](0,56592,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}do{f=c[1191724+(d<<2)>>2]|0;Tk[c[4886344]&255](0,55904,(b=i,i=i+16|0,c[b>>2]=d,c[b+8>>2]=f,b)|0);i=b;g=f+64|0;if((c[g>>2]|0)>0){h=0;do{j=c[f+68+(h<<2)>>2]|0;k=c[j+64>>2]|0;Tk[c[4886344]&255](0,54912,(b=i,i=i+16|0,c[b>>2]=j,c[b+8>>2]=k,b)|0);i=b;h=h+1|0;}while((h|0)<(c[g>>2]|0))}d=d+1|0;}while((d|0)<(c[297930]|0));e=c[4886344]|0;Tk[e&255](0,56592,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}function tR(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;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,w=0,x=0.0,y=0.0,z=0.0,A=0,B=0,C=0,D=0;k=i;i=i+16384|0;l=k|0;m=k+8192|0;if((h|0)>2048){Tk[c[4886345]&255](1,48192,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}n=(e<<16|0)/(h|0)|0;o=n>>2;p=(h|0)>0;do{if(p){q=o;r=0;while(1){c[l+(r<<2)>>2]=q>>16<<2;s=r+1|0;if((s|0)<(h|0)){q=q+n|0;r=s}else{break}}if(!p){break}r=o*3|0;q=0;while(1){c[m+(q<<2)>>2]=r>>16<<2;s=q+1|0;if((s|0)<(h|0)){r=r+n|0;q=s}else{break}}}}while(0);if((j|0)<=0){t=8192;u=0;v=8192;w=0;i=k;return}n=e<<2;x=+(f|0);y=+(j|0);if(!p){t=8192;u=0;v=8192;w=0;i=k;return}p=h<<2;f=0;e=g;while(1){z=+(f|0);g=da(~~(x*(z+.25)/y),n)|0;o=da(~~(x*(z+.75)/y),n)|0;q=0;r=e;while(1){s=c[l+(q<<2)>>2]|0;A=s+g|0;B=c[m+(q<<2)>>2]|0;C=B+g|0;D=s+o|0;s=B+o|0;a[r]=((d[b+C|0]|0)+(d[b+A|0]|0)+(d[b+D|0]|0)+(d[b+s|0]|0)|0)>>>2;a[r+1|0]=((d[b+(C+1)|0]|0)+(d[b+(A+1)|0]|0)+(d[b+(D+1)|0]|0)+(d[b+(s+1)|0]|0)|0)>>>2;a[r+2|0]=((d[b+(C+2)|0]|0)+(d[b+(A+2)|0]|0)+(d[b+(D+2)|0]|0)+(d[b+(s+2)|0]|0)|0)>>>2;a[r+3|0]=((d[b+(C+3)|0]|0)+(d[b+(A+3)|0]|0)+(d[b+(D+3)|0]|0)+(d[b+(s+3)|0]|0)|0)>>>2;s=q+1|0;if((s|0)<(h|0)){q=s;r=r+4|0}else{break}}r=f+1|0;if((r|0)<(j|0)){f=r;e=e+p|0}else{break}}t=8192;u=0;v=8192;w=0;i=k;return}function uR(b,c,e,f,g){b=b|0;c=c|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,B=0;h=f-2|0;if((h|0)>2){i=e<<2;j=g+8|0;k=e-2|0;l=(k|0)>2;m=2;do{n=j+(da(i,m)|0)|0;if(l){o=b+n|0;p=c+n|0;n=2;while(1){a[p]=a[o]|0;q=n+2|0;if((q|0)<(k|0)){o=o+8|0;p=p+8|0;n=q}else{break}}}m=m+2|0;}while((m|0)<(h|0))}h=f-4|0;if((h|0)>3){m=e<<2;k=g+8|0;l=g+12|0;i=e-4|0;j=(i|0)>3;n=3;do{p=k+(da(m,n-1|0)|0)|0;o=k+(da(m,n+1|0)|0)|0;if(j){q=c+(l+(da(m,n)|0))|0;r=b+(o+8)|0;s=b+(p+8)|0;t=a[b+o|0]|0;o=a[b+p|0]|0;p=q;q=3;while(1){u=a[s]|0;v=a[r]|0;w=o&255;x=v&255;y=u&255;z=t&255;A=w-x|0;B=y-z|0;a[p]=((((A|0)>-1?A:-A|0)|0)<(((B|0)>-1?B:-B|0)|0)?x+w|0:y+z|0)>>>1;z=q+2|0;if((z|0)<(i|0)){r=r+8|0;s=s+8|0;t=v;o=u;p=p+8|0;q=z}else{break}}}n=n+2|0;}while((n|0)<(h|0))}h=f-3|0;if((h|0)>3){f=e<<2;n=g+12|0;i=e-3|0;m=(i|0)>3;l=3;do{j=n+(da(f,l)|0)|0;if(m){k=c+j|0;q=b+j|0;j=3;while(1){a[q]=a[k]|0;p=j+2|0;if((p|0)<(i|0)){k=k+8|0;q=q+8|0;j=p}else{break}}}l=l+2|0;}while((l|0)<(h|0))}if((h|0)<=2){return}l=e-3|0;i=2;while(1){m=i+1|0;f=(m|0)%2|0;n=f+2|0;j=da(i,e)|0;q=(j+1+f<<2)+g|0;if((n|0)<(l|0)){f=(n+(da(m,e)|0)<<2)+g|0;k=(n+(da(i-1|0,e)|0)<<2)+g|0;p=a[b+q|0]|0;o=b+k|0;k=b+(q+8)|0;q=b+f|0;f=c+((n+j<<2)+g)|0;j=n;while(1){n=a[k]|0;t=p&255;s=n&255;r=d[o]|0;z=d[q]|0;u=t-s|0;v=r-z|0;a[f]=((((u|0)>-1?u:-u|0)|0)<(((v|0)>-1?v:-v|0)|0)?s+t|0:z+r|0)>>>1;r=j+2|0;if((r|0)<(l|0)){p=n;o=o+8|0;k=k+8|0;q=q+8|0;f=f+8|0;j=r}else{break}}}if((m|0)<(h|0)){i=m}else{break}}return}function vR(b,c,d,e,f){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,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,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=e-2|0;if((g|0)>2){h=d<<2;i=f+8|0;j=d-2|0;k=(j|0)>2;l=2;do{m=i+(da(h,l)|0)|0;if(k){n=b+m|0;o=c+m|0;m=2;while(1){a[o]=a[n]|0;p=m+2|0;if((p|0)<(j|0)){n=n+8|0;o=o+8|0;m=p}else{break}}}l=l+2|0;}while((l|0)<(g|0))}g=e-3|0;e=(g|0)>3;do{if(e){l=d<<2;j=f+8|0;k=f+12|0;h=d-3|0;i=(h|0)>3;m=3;do{o=j+(da(l,m-3|0)|0)|0;n=(da(l,m-1|0)|0)+f|0;p=(da(l,m+1|0)|0)+f|0;q=j+(da(l,m+3|0)|0)|0;if(i){r=c+(k+(da(l,m)|0))|0;s=b+(q+8)|0;t=b+(p+24)|0;u=b+(n+24)|0;v=b+(o+8)|0;w=a[b+q|0]|0;q=a[b+(p+16)|0]|0;x=a[b+(p+8)|0]|0;y=a[b+p|0]|0;p=a[b+(n+16)|0]|0;z=a[b+(n+8)|0]|0;A=a[b+n|0]|0;n=a[b+o|0]|0;o=r;r=3;while(1){B=a[v]|0;C=v+8|0;D=a[u]|0;E=u+8|0;F=a[t]|0;G=t+8|0;H=a[s]|0;I=s+8|0;J=z&255;K=q&255;L=J+K|0;M=p&255;N=x&255;O=M+N|0;P=J-K|0;K=(P|0)>-1?P:-P|0;P=M-N|0;N=(P|0)>-1?P:-P|0;do{if((K|0)>100|(N|0)>100){Q=15}else{P=L-O|0;if((((P|0)>-1?P:-P|0)|0)>200){Q=15;break}P=(y&255)+(w&255)+(O*-3|0)+L+(B&255)+(D&255)|0;M=(A&255)+O+(n&255)+(L*-3|0)+(F&255)+(H&255)|0;if((((M|0)>-1?M:-M|0)|0)>(((P|0)>-1?P:-P|0)|0)){a[o]=L>>>1;break}else{a[o]=O>>>1;break}}}while(0);do{if((Q|0)==15){Q=0;if((K|0)<(N|0)){a[o]=L>>>1;break}else{a[o]=O>>>1;break}}}while(0);O=r+2|0;if((O|0)<(h|0)){s=I;t=G;u=E;v=C;w=H;y=x;x=q;q=F;A=z;z=p;p=D;n=B;o=o+8|0;r=O}else{break}}}m=m+2|0;}while((m|0)<(g|0));if(!e){break}m=d<<2;h=f+12|0;l=d-3|0;k=(l|0)>3;i=3;do{j=h+(da(m,i)|0)|0;if(k){r=c+j|0;o=b+j|0;j=3;while(1){a[o]=a[r]|0;n=j+2|0;if((n|0)<(l|0)){r=r+8|0;o=o+8|0;j=n}else{break}}}i=i+2|0;}while((i|0)<(g|0))}}while(0);if((g|0)<=2){return}e=d-3|0;i=2;while(1){l=i+1|0;k=(l|0)%2|0;m=k+2|0;h=k+1|0;j=(h+(da(i-2|0,d)|0)<<2)+f|0;o=(k+(da(i-1|0,d)|0)<<2)+f|0;r=da(i,d)|0;n=(h+r<<2)+f|0;p=(k+(da(l,d)|0)<<2)+f|0;k=(h+(da(i+2|0,d)|0)<<2)+f|0;if((m|0)<(e|0)){h=a[b+j|0]|0;z=a[b+o|0]|0;A=a[b+(o+8)|0]|0;q=a[b+n|0]|0;x=a[b+p|0]|0;y=a[b+(p+8)|0]|0;w=a[b+k|0]|0;v=b+(j+8)|0;j=b+(o+16)|0;o=b+(n+8)|0;n=b+(p+16)|0;p=b+(k+8)|0;k=c+((m+r<<2)+f)|0;r=m;while(1){m=a[v]|0;u=v+8|0;t=a[j]|0;s=j+8|0;O=a[o]|0;L=o+8|0;N=a[n]|0;K=n+8|0;P=a[p]|0;M=p+8|0;J=q&255;R=O&255;S=R+J|0;T=A&255;U=y&255;V=U+T|0;W=J-R|0;R=(W|0)>-1?W:-W|0;W=T-U|0;U=(W|0)>-1?W:-W|0;do{if((R|0)>100|(U|0)>100){Q=34}else{W=S-V|0;if((((W|0)>-1?W:-W|0)|0)>200){Q=34;break}W=(x&255)+(z&255)+V+(t&255)+(N&255)+(S*-3|0)|0;T=(w&255)+(h&255)+(V*-3|0)+(m&255)+S+(P&255)|0;if((((W|0)>-1?W:-W|0)|0)>(((T|0)>-1?T:-T|0)|0)){a[k]=S>>>1;break}else{a[k]=V>>>1;break}}}while(0);do{if((Q|0)==34){Q=0;if((R|0)<(U|0)){a[k]=S>>>1;break}else{a[k]=V>>>1;break}}}while(0);V=r+2|0;if((V|0)<(e|0)){h=m;z=A;A=t;q=O;x=y;y=N;w=P;v=u;j=s;o=L;n=K;p=M;k=k+8|0;r=V}else{break}}}if((l|0)<(g|0)){i=l}else{break}}return} + + + +function Zk(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+7&-8;return b|0}function _k(){return i|0}function $k(a){a=a|0;i=a}function al(a,b){a=a|0;b=b|0;if((u|0)==0){u=a;v=b}}function bl(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0]}function cl(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0];a[k+4|0]=a[b+4|0];a[k+5|0]=a[b+5|0];a[k+6|0]=a[b+6|0];a[k+7|0]=a[b+7|0]}function dl(a){a=a|0;H=a}function el(a){a=a|0;I=a}function fl(a){a=a|0;J=a}function gl(a){a=a|0;K=a}function hl(a){a=a|0;L=a}function il(a){a=a|0;M=a}function jl(a){a=a|0;N=a}function kl(a){a=a|0;O=a}function ll(a){a=a|0;P=a}function ml(a){a=a|0;Q=a}function nl(){}function ol(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=c[5811786]|0;if((e|0)<(a|0)){Ur(1,153896,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}if((e-a|0)>31){g=0;i=d;return g|0}e=a&31;if((c[23269896+(e*540|0)>>2]|0)==0){g=0;i=d;return g|0}a=23270428+(e*540|0)|0;if(((c[5816965]|0)-(c[a>>2]|0)|0)>8191){g=0;i=d;return g|0}c[b>>2]=c[23269900+(e*540|0)>>2];c[b+53768>>2]=c[23270432+(e*540|0)>>2];c[b+4>>2]=c[23269916+(e*540|0)>>2];c[b+8>>2]=c[23269904+(e*540|0)>>2];m$(b+12|0,23269920+(e*540|0)|0,32)|0;m$(b+44|0,23269956+(e*540|0)|0,468)|0;h=c[23270424+(e*540|0)>>2]|0;do{if((h|0)>256){Tr(133200,(f=i,i=i+16|0,c[f>>2]=h,c[f+8>>2]=256,f)|0);i=f;c[b+512>>2]=256;j=256}else{c[b+512>>2]=h;if((h|0)>0){j=h;break}else{g=1}i=d;return g|0}}while(0);h=0;while(1){m$(b+516+(h*208|0)|0,23500168+(((c[a>>2]|0)+h&8191)*208|0)|0,208)|0;f=h+1|0;if((f|0)<(j|0)){h=f}else{g=1;break}}i=d;return g|0}function pl(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=i;i=i+20104|0;d=b|0;e=oj(or(1)|0)|0;if(e>>>0>1023>>>0){Ur(1,122392,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f}g=zr(2)|0;if((k$(23251792+(c[23247696+(e<<2)>>2]|0)|0,g)|0)==0){h=20100;j=0;i=b;return}m$(d|0,23247696,20100)|0;n$(23247696,0,20096)|0;c[5816948]=1;k=0;l=1;while(1){if((k|0)==(e|0)){m=g}else{m=(c[d+(k<<2)>>2]|0)+(d+4096)|0}if((a[m]|0)==0){n=l}else{o=(o$(m|0)|0)+1|0;if((o+l|0)>16e3){p=9;break}c[23247696+(k<<2)>>2]=l;m$(23251792+(c[5816948]|0)|0,m|0,o)|0;q=(c[5816948]|0)+o|0;c[5816948]=q;n=q}q=k+1|0;if((q|0)<1024){k=q;l=n}else{break}}if((p|0)==9){Ur(1,111504,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}if((e|0)!=1){h=20100;j=0;i=b;return}Ap();h=20100;j=0;i=b;return}function ql(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;e=c[5738077]|0;if((e-64|0)>=(b|0)){if((c[5759928]|0)==0){Ur(1,102144,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}else{g=0;i=d;return g|0}}if((e|0)<(b|0)){Ur(1,59424,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}e=22952316+((b&63)<<10)|0;c[5738078]=b;Tr(52568,(f=i,i=i+16|0,c[f>>2]=b,c[f+8>>2]=e,f)|0);i=f;Dr(e);b=or(0)|0;h=nr()|0;a:do{if((k$(b,46904)|0)==0){j=h}else{k=e;l=b;while(1){if((k$(l,177656)|0)==0){m=11;break}if((k$(l,170608)|0)==0){m=13;break}if((k$(l,164112)|0)!=0){m=20;break}n=or(2)|0;o=o$(30336568)|0;if((o+1+(o$(n|0)|0)|0)>>>0>8191>>>0){m=18;break}p$(30336568,n|0)|0;n=30336568+(o$(30336568)|0)|0;z=34;a[n]=z;z=z>>8;a[n+1|0]=z;Dr(30336568);n=or(0)|0;o=nr()|0;if((k$(n,46904)|0)==0){j=o;break a}else{k=30336568;l=n}}if((m|0)==11){n=or(1)|0;o=or(2)|0;$B(30336568,8192,173872,(f=i,i=i+16|0,c[f>>2]=n,c[f+8>>2]=o,f)|0)|0;i=f;g=0;i=d;return g|0}else if((m|0)==13){o=or(2)|0;n=o$(30336568)|0;if(((o$(o|0)|0)+n|0)>>>0>8191>>>0){Ur(1,167560,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}p$(30336568,o|0)|0;g=0;i=d;return g|0}else if((m|0)==18){Ur(1,167560,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}else if((m|0)==20){if((k$(l,158448)|0)==0){pl();Dr(k);g=1;i=d;return g|0}if((k$(l,155976)|0)==0){Pl();Dr(k);n$(23267956,0,1536)|0;g=1;i=d;return g|0}if((k$(l,153880)|0)!=0){g=1;i=d;return g|0}if((c[(c[5451068]|0)+32>>2]|0)==0){g=0;i=d;return g|0}hm();qr(152016);g=1;i=d;return g|0}}}while(0);if((j|0)>1){j=or(1)|0;Ur(2,186136,(f=i,i=i+8|0,c[f>>2]=j,f)|0);i=f;return 0}else{Ur(2,182184,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}return 0}function rl(){var a=0,b=0,d=0,e=0,f=0;a=i;In((Jn()|0)&-9);c[5497079]=0;b=c[6924864]|0;if((b|0)==0){i=a;return}d=(rD(b)|0)==0;b=c[6924864]|0;if(d){e=b}else{d=b;while(1){sD(d)|0;b=(rD(c[6924864]|0)|0)==0;f=c[6924864]|0;if(b){e=f;break}else{d=f}}}oD(e,1,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0)|0;i=e;gD(c[6924864]|0);c[6924864]=0;c[5720375]=0;c[5720376]=0;c[5720393]=0;i=a;return}function sl(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0;b=i;i=i+8|0;d=c[a>>2]|0;switch(d|0){case 72:{Jr(mD(c[a+4>>2]|0)|0);e=0;i=b;return e|0};case 16:{io(mD(c[a+4>>2]|0)|0,0);e=0;i=b;return e|0};case 17:{Sp();e=0;i=b;return e|0};case 18:{jq(mD(c[a+4>>2]|0)|0,1,b|0);e=0;i=b;return e|0};case 19:{e=oq()|0;i=b;return e|0};case 20:{e=nq(c[a+4>>2]|0)|0;i=b;return e|0};case 22:{e=sq(mD(c[a+4>>2]|0)|0,mD(c[a+8>>2]|0)|0,0)|0;i=b;return e|0};case 82:{e=sq(mD(c[a+4>>2]|0)|0,mD(c[a+8>>2]|0)|0,1)|0;i=b;return e|0};case 23:{e=Rq(mD(c[a+4>>2]|0)|0,c[a+8>>2]|0)|0;i=b;return e|0};case 24:{f=mD(c[a+4>>2]|0)|0;h=c[a+8>>2]|0;e=Sq(f,h,mD(c[a+12>>2]|0)|0,mD(c[a+16>>2]|0)|0)|0;i=b;return e|0};case 25:{h=mD(c[a+4>>2]|0)|0;f=mD(c[a+8>>2]|0)|0;j=mD(c[a+12>>2]|0)|0;l=mD(c[a+16>>2]|0)|0;kr(h,f,j,l,mD(c[a+20>>2]|0)|0,c[a+24>>2]|0,c[a+28>>2]|0,0);e=0;i=b;return e|0};case 0:{l=mD(c[a+4>>2]|0)|0;Sr(149712,(m=i,i=i+8|0,c[m>>2]=l,m)|0);i=m;e=0;i=b;return e|0};case 1:{l=mD(c[a+4>>2]|0)|0;Ur(1,149712,(m=i,i=i+8|0,c[m>>2]=l,m)|0);i=m;return 0};case 2:{e=wf()|0;i=b;return e|0};case 3:{l=mD(c[a+4>>2]|0)|0;j=l;do{if((l|0)!=0){f=c[5720376]|0;if(!((f|0)==0|j>>>0>>0)){break}c[5720376]=j}}while(0);l=mD(c[a+8>>2]|0)|0;Ht(j,l,mD(c[a+12>>2]|0)|0,c[a+16>>2]|0);e=0;i=b;return e|0};case 5:{lt(mD(c[a+4>>2]|0)|0,mD(c[a+8>>2]|0)|0);e=0;i=b;return e|0};case 4:{It(mD(c[a+4>>2]|0)|0);e=0;i=b;return e|0};case 9:{Ar(mD(c[a+4>>2]|0)|0,c[a+8>>2]|0);e=0;i=b;return e|0};case 10:{l=mD(c[a+4>>2]|0)|0;e=Yu(l,mD(c[a+8>>2]|0)|0,c[a+12>>2]|0)|0;i=b;return e|0};case 11:{eu(mD(c[a+4>>2]|0)|0,c[a+8>>2]|0,c[a+12>>2]|0)|0;e=0;i=b;return e|0};case 12:{gu(mD(c[a+4>>2]|0)|0,c[a+8>>2]|0,c[a+12>>2]|0)|0;e=0;i=b;return e|0};case 13:{Yt(c[a+4>>2]|0);e=0;i=b;return e|0};case 89:{e=iu(c[a+4>>2]|0,c[a+8>>2]|0,c[a+12>>2]|0)|0;i=b;return e|0};case 14:{qr(mD(c[a+4>>2]|0)|0);e=0;i=b;return e|0};case 15:{Gr(mD(c[a+4>>2]|0)|0,0);e=0;i=b;return e|0};case 6:{l=mD(c[a+4>>2]|0)|0;dt(l,mD(c[a+8>>2]|0)|0,c[a+12>>2]|0);e=0;i=b;return e|0};case 7:{e=nr()|0;i=b;return e|0};case 8:{l=c[a+4>>2]|0;yr(l,mD(c[a+8>>2]|0)|0,c[a+12>>2]|0);e=0;i=b;return e|0};case 83:{l=mD(c[a+4>>2]|0)|0;j=mD(c[a+8>>2]|0)|0;f=mD(c[a+12>>2]|0)|0;h=mD(c[a+16>>2]|0)|0;kr(l,j,f,h,mD(c[a+20>>2]|0)|0,c[a+24>>2]|0,c[a+28>>2]|0,1);e=0;i=b;return e|0};case 26:{h=mD(c[a+4>>2]|0)|0;f=mD(c[a+8>>2]|0)|0;j=mD(c[a+12>>2]|0)|0;l=mD(c[a+16>>2]|0)|0;n=mD(c[a+20>>2]|0)|0;o=c[a+24>>2]|0;p=c[a+28>>2]|0;lr(h,f,j,l,n,o,p,mD(c[a+32>>2]|0)|0,mD(c[a+36>>2]|0)|0,0);e=0;i=b;return e|0};case 84:{p=mD(c[a+4>>2]|0)|0;o=mD(c[a+8>>2]|0)|0;n=mD(c[a+12>>2]|0)|0;l=mD(c[a+16>>2]|0)|0;j=mD(c[a+20>>2]|0)|0;f=c[a+24>>2]|0;h=c[a+28>>2]|0;lr(p,o,n,l,j,f,h,mD(c[a+32>>2]|0)|0,mD(c[a+36>>2]|0)|0,1);e=0;i=b;return e|0};case 27:{h=c[4917266]|0;f=c[a+4>>2]|0;j=mD(c[a+8>>2]|0)|0;l=mD(c[a+12>>2]|0)|0;n=c[a+16>>2]|0;o=mD(c[a+20>>2]|0)|0;p=c[a+24>>2]|0;q=mD(c[a+28>>2]|0)|0;e=ak[h&7](f,j,l,n,o,p,q)|0;i=b;return e|0};case 28:{vx(mD(c[a+4>>2]|0)|0,c[a+8>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0);e=0;i=b;return e|0};case 29:{wx(c[a+4>>2]|0,c[a+8>>2]|0);e=0;i=b;return e|0};case 30:{Bx(c[a+4>>2]|0);e=0;i=b;return e|0};case 31:{q=c[a+4>>2]|0;p=mD(c[a+8>>2]|0)|0;Cx(q,p,mD(c[a+12>>2]|0)|0,c[a+16>>2]|0);e=0;i=b;return e|0};case 80:{p=c[a+4>>2]|0;q=mD(c[a+8>>2]|0)|0;Dx(p,q,mD(c[a+12>>2]|0)|0,c[a+16>>2]|0);e=0;i=b;return e|0};case 81:{Ex(c[a+4>>2]|0);e=0;i=b;return e|0};case 32:{Gx(c[a+4>>2]|0,mD(c[a+8>>2]|0)|0);e=0;i=b;return e|0};case 33:{q=c[a+4>>2]|0;p=mD(c[a+8>>2]|0)|0;Fx(q,p,mD(c[a+12>>2]|0)|0,c[a+16>>2]|0);e=0;i=b;return e|0};case 34:{e=Kx(mD(c[a+4>>2]|0)|0,c[a+8>>2]|0)|0;i=b;return e|0};case 35:{xx(mD(c[a+4>>2]|0)|0,mD(c[a+8>>2]|0)|0);e=0;i=b;return e|0};case 36:{p=c[4917250]|0;q=mD(c[a+4>>2]|0)|0;vk[p&511](q);e=0;i=b;return e|0};case 37:{q=c[4917246]|0;p=mD(c[a+4>>2]|0)|0;e=jk[q&255](p)|0;i=b;return e|0};case 38:{p=c[4917247]|0;q=mD(c[a+4>>2]|0)|0;e=jk[p&255](q)|0;i=b;return e|0};case 39:{q=c[4917248]|0;p=mD(c[a+4>>2]|0)|0;e=jk[q&255](p)|0;i=b;return e|0};case 57:{p=c[4917249]|0;q=mD(c[a+4>>2]|0)|0;e=jk[p&255](q)|0;i=b;return e|0};case 59:{q=c[4917269]|0;p=mD(c[a+4>>2]|0)|0;o=c[a+8>>2]|0;n=mD(c[a+12>>2]|0)|0;Tk[q&255](p,o,n);e=0;i=b;return e|0};case 40:{Uk[c[4917253]&511]();e=0;i=b;return e|0};case 41:{n=c[4917254]|0;o=mD(c[a+4>>2]|0)|0;vk[n&511](o);e=0;i=b;return e|0};case 42:{o=c[4917255]|0;n=c[a+4>>2]|0;p=c[a+8>>2]|0;q=mD(c[a+12>>2]|0)|0;Yk[o&255](n,p,q,1);e=0;i=b;return e|0};case 87:{q=c[4917255]|0;p=c[a+4>>2]|0;n=c[a+8>>2]|0;o=mD(c[a+12>>2]|0)|0;Yk[q&255](p,n,o,c[a+16>>2]|0);e=0;i=b;return e|0};case 73:{o=c[4917256]|0;n=mD(c[a+4>>2]|0)|0;p=mD(c[a+8>>2]|0)|0;q=mD(c[a+12>>2]|0)|0;l=mD(c[a+16>>2]|0)|0;e=Wk[o&63](n,p,q,l)|0;i=b;return e|0};case 43:{l=c[4917257]|0;q=mD(c[a+4>>2]|0)|0;r=+g[a+8>>2];s=+g[a+12>>2];sk[l&15](q,r,s,+g[a+16>>2],+g[a+20>>2]);e=0;i=b;return e|0};case 85:{q=c[4917258]|0;l=mD(c[a+4>>2]|0)|0;s=+g[a+8>>2];r=+g[a+12>>2];sk[q&15](l,s,r,+g[a+16>>2],+g[a+20>>2]);e=0;i=b;return e|0};case 44:{l=c[4917259]|0;q=mD(c[a+4>>2]|0)|0;vk[l&511](q);e=0;i=b;return e|0};case 45:{q=c[4917260]|0;l=mD(c[a+4>>2]|0)|0;vk[q&511](l);e=0;i=b;return e|0};case 46:{r=+g[a+4>>2];s=+g[a+8>>2];t=+g[a+12>>2];u=+g[a+16>>2];v=+g[a+20>>2];w=+g[a+24>>2];kk[c[4917261]&7](r,s,t,u,v,w,+g[a+28>>2],+g[a+32>>2],c[a+36>>2]|0);e=0;i=b;return e|0};case 47:{l=c[4917268]|0;q=c[a+4>>2]|0;p=mD(c[a+8>>2]|0)|0;n=mD(c[a+12>>2]|0)|0;Tk[l&255](q,p,n);e=0;i=b;return e|0};case 48:{n=c[4917267]|0;p=mD(c[a+4>>2]|0)|0;q=c[a+8>>2]|0;l=c[a+12>>2]|0;o=c[a+16>>2]|0;w=+g[a+20>>2];j=mD(c[a+24>>2]|0)|0;e=Bk[n&7](p,q,l,o,w,j)|0;i=b;return e|0};case 49:{j=a+4|0;c[5720375]=mD(c[j>>2]|0)|0;m$(mD(c[j>>2]|0)|0,22870084,11332)|0;e=0;i=b;return e|0};case 50:{m$(mD(c[a+4>>2]|0)|0,23247696,20100)|0;e=0;i=b;return e|0};case 51:{j=mD(c[a+4>>2]|0)|0;o=mD(c[a+8>>2]|0)|0;c[j>>2]=c[5811786];c[o>>2]=c[5811785];e=0;i=b;return e|0};case 52:{e=ol(c[a+4>>2]|0,mD(c[a+8>>2]|0)|0)|0;i=b;return e|0};case 53:{e=ql(c[a+4>>2]|0)|0;i=b;return e|0};case 54:{e=c[5817373]|0;i=b;return e|0};case 55:{o=c[a+4>>2]|0;j=mD(c[a+8>>2]|0)|0;l=c[5817373]|0;if((l|0)<(o|0)){Ur(1,186168,(m=i,i=i+16|0,c[m>>2]=o,c[m+8>>2]=l,m)|0);i=m;return 0}if((l-64|0)>=(o|0)){e=0;i=b;return e|0}l=23267956+((o&63)*24|0)|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];c[j+16>>2]=c[l+16>>2];c[j+20>>2]=c[l+20>>2];e=1;i=b;return e|0};case 56:{w=+g[a+8>>2];c[5816987]=c[a+4>>2];g[5816988]=w;e=0;i=b;return e|0};case 58:{e=ns()|0;i=b;return e|0};case 60:{e=Mn(c[a+4>>2]|0)|0;i=b;return e|0};case 61:{e=Jn()|0;i=b;return e|0};case 62:{In(c[a+4>>2]|(Jn()|0)&1);e=0;i=b;return e|0};case 63:{e=Rn(mD(c[a+4>>2]|0)|0)|0;i=b;return e|0};case 100:{n$(mD(c[a+4>>2]|0)|0,c[a+8>>2]&255|0,c[a+12>>2]|0)|0;e=0;i=b;return e|0};case 101:{l=mD(c[a+4>>2]|0)|0;m$(l|0,mD(c[a+8>>2]|0)|0,c[a+12>>2]|0)|0;e=0;i=b;return e|0};case 102:{l=a+4|0;j=mD(c[l>>2]|0)|0;q$(j|0,mD(c[a+8>>2]|0)|0,c[a+12>>2]|0)|0;e=c[l>>2]|0;i=b;return e|0};case 103:{w=+W(+g[a+4>>2]);e=(g[k>>2]=w,c[k>>2]|0);i=b;return e|0};case 104:{w=+V(+g[a+4>>2]);e=(g[k>>2]=w,c[k>>2]|0);i=b;return e|0};case 105:{w=+$(+(+g[a+4>>2]),+(+g[a+8>>2]));e=(g[k>>2]=w,c[k>>2]|0);i=b;return e|0};case 106:{w=+T(+g[a+4>>2]);e=(g[k>>2]=w,c[k>>2]|0);i=b;return e|0};case 107:{w=+R(+g[a+4>>2]);e=(g[k>>2]=w,c[k>>2]|0);i=b;return e|0};case 108:{w=+ca(+g[a+4>>2]);e=(g[k>>2]=w,c[k>>2]|0);i=b;return e|0};case 111:{w=+OB(+g[a+4>>2]);e=(g[k>>2]=w,c[k>>2]|0);i=b;return e|0};case 64:{l=c[(c[7092486]|0)+500>>2]|0;j=mD(c[a+4>>2]|0)|0;e=jk[l&255](j)|0;i=b;return e|0};case 65:{j=c[(c[7092486]|0)+504>>2]|0;l=mD(c[a+4>>2]|0)|0;e=jk[j&255](l)|0;i=b;return e|0};case 66:{e=jk[c[(c[7092486]|0)+508>>2]&255](c[a+4>>2]|0)|0;i=b;return e|0};case 67:{l=c[(c[7092486]|0)+512>>2]|0;j=c[a+4>>2]|0;o=mD(c[a+8>>2]|0)|0;e=Kk[l&255](j,o)|0;i=b;return e|0};case 68:{o=c[(c[7092486]|0)+516>>2]|0;j=c[a+4>>2]|0;l=mD(c[a+8>>2]|0)|0;q=mD(c[a+12>>2]|0)|0;e=rk[o&63](j,l,q)|0;i=b;return e|0};case 69:{yx();e=0;i=b;return e|0};case 70:{e=cs(mD(c[a+4>>2]|0)|0)|0;i=b;return e|0};case 71:{q=mD(c[a+4>>2]|0)|0;l=q;g[l>>2]=+Ib(+(+g[l>>2]));l=q+4|0;g[l>>2]=+Ib(+(+g[l>>2]));l=q+8|0;g[l>>2]=+Ib(+(+g[l>>2]));e=0;i=b;return e|0};case 74:{e=Dl(mD(c[a+4>>2]|0)|0,c[a+8>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,c[a+24>>2]|0)|0;i=b;return e|0};case 75:{e=Al(c[a+4>>2]|0)|0;i=b;return e|0};case 76:{e=Cl(c[a+4>>2]|0)|0;i=b;return e|0};case 77:{Gl(c[a+4>>2]|0);e=0;i=b;return e|0};case 78:{El(c[a+4>>2]|0,c[a+8>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0);e=0;i=b;return e|0};case 79:{l=c[4917270]|0;q=mD(c[a+4>>2]|0)|0;j=mD(c[a+8>>2]|0)|0;o=mD(c[a+12>>2]|0)|0;Tk[l&255](q,j,o);e=0;i=b;return e|0};case 86:{o=c[4917271]|0;j=mD(c[a+4>>2]|0)|0;e=Kk[o&255](j,c[a+8>>2]|0)|0;i=b;return e|0};case 88:{j=c[4917272]|0;o=mD(c[a+4>>2]|0)|0;q=mD(c[a+8>>2]|0)|0;e=Kk[j&255](o,q)|0;i=b;return e|0};default:{Ur(1,147240,(m=i,i=i+8|0,c[m>>2]=d,m)|0);i=m;return 0}}return 0}function tl(){var a=0,b=0,d=0,e=0,f=0,g=0;a=i;c[422830]=wf()|0;hm();b=rC(23251792+(c[5811924]|0)|0,144776)|0;$B(23267796,64,142168,(d=i,i=i+8|0,c[d>>2]=b,d)|0)|0;i=d;b=~~+at(139832);if((c[5811764]|0)==0){e=b}else{e=(b-1|0)>>>0>1>>>0?2:b}b=iD(137800,52,e)|0;c[6924864]=b;if((b|0)==0){Ur(1,136216,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d}c[5720394]=6;e=c[5738078]|0;f=c[5720395]|0;g=oD(b,0,(d=i,i=i+24|0,c[d>>2]=c[5738076],c[d+8>>2]=e,c[d+16>>2]=f,d)|0)|0;i=d;if((g|0)==-559038737){i=a;return}ul();i=a;return}function ul(){var a=0,b=0,d=0;a=i;if((c[5811766]|c[5759928]|0)==0){rt()}c[5720394]=7;b=wf()|0;Sr(134776,(d=i,i=i+8|0,h[d>>3]=+(b-(c[422830]|0)|0)/1.0e3,d)|0);i=d;Uk[c[4917252]&511]();if((Ab()|0)==0){ks()}Pl();Eo();wn();wn();wn();po();i=a;return}function vl(){var a=0,b=0,d=0,e=0,f=0;a=i;b=c[6924864]|0;do{if((b|0)==0){d=0}else{if((rD(b)|0)!=0){d=0;break}e=oD(c[6924864]|0,2,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0)|0;i=f;d=e}}while(0);i=a;return d|0}function wl(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[5759928]|0;oD(c[6924864]|0,3,(e=i,i=i+24|0,c[e>>2]=c[5811918],c[e+8>>2]=a,c[e+16>>2]=d,e)|0)|0;i=e;$C(0);i=b;return}function xl(){var a=0,b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0.0;a=i;c[5811923]=0;if((c[5759928]|0)!=0){i=a;return}b=c[5811785]|0;d=b-(c[5497082]|0)|0;e=c[5811921]|0;f=d-e|0;h=(f|0)>-1?f:-f|0;do{if((h|0)>500){c[5811921]=d;c[5811919]=b;c[5811918]=b;if((c[(c[5769192]|0)+32>>2]|0)==0){break}Sr(133184,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j}else{if((h|0)>100){if((c[(c[5769192]|0)+32>>2]|0)==0){k=e}else{Sr(132168,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=c[5811921]|0}c[5811921]=k+d>>1;break}l=+g[(c[5451064]|0)+28>>2];if(!(l==0.0|l==1.0)){break}if((c[5811922]|0)==0){c[5811921]=e+1;break}else{c[5811922]=0;c[5811921]=e-2;break}}}while(0);if((c[(c[5769192]|0)+32>>2]|0)==0){i=a;return}Sr(131016,(j=i,i=i+8|0,c[j>>2]=c[5811921],j)|0);i=j;i=a;return}function yl(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=i;d=c[5720394]|0;if((d|0)==7){e=2}else if((d|0)!=8){i=b;return}do{if((e|0)==2){do{if((c[5759928]|0)!=0){if((c[5759930]|0)!=0){oo();break}c[5759930]=1;i=b;return}}while(0);do{if((c[5811923]|0)!=0){c[5811923]=0;if((c[5811784]&2|0)!=0){break}c[5720394]=8;d=c[5811785]|0;c[5811921]=d-(c[5497082]|0);c[5811919]=d;c[5759934]=d;d=c[(c[5811780]|0)+4>>2]|0;if((a[d]|0)==0){break}qr(d);kt(129640,28378616)}}while(0);if((c[5720394]|0)==8){break}i=b;return}}while(0);if((c[5811783]|0)==0){Ur(1,127232,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}do{if((c[(c[453916]|0)+32>>2]|0)!=0){if((Xo()|0)==0){break}if((c[(c[5451068]|0)+32>>2]|0)==0){break}i=b;return}}while(0);d=c[5811785]|0;if((d|0)<(c[5811920]|0)){Ur(1,125944,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f}c[5811920]=d;f=c[5759928]|0;if((f|0)==0){e=20}else{if((c[(c[5811752]|0)+32>>2]|0)==0){e=20}}do{if((e|0)==20){g=c[(c[5769188]|0)+32>>2]|0;if((g|0)<-30){h=-30}else{h=(g|0)>30?30:g}g=c[5497082]|0;j=c[5811921]|0;k=g-h+j|0;l=c[5811919]|0;m=(k|0)<(l|0)?l:k;c[5811918]=m;c[5811919]=m;if((j+g|0)<(d-5|0)){break}c[5811922]=1}}while(0);if((c[5811923]|0)==0){n=f}else{xl();n=c[5759928]|0}if((n|0)==0){i=b;return}if((c[(c[5769186]|0)+32>>2]|0)!=0){n=wf()|0;if((c[5759933]|0)==0){c[5759935]=n;c[5759933]=n;c[5759936]=2147483647;c[5759937]=0;o=n}else{o=c[5759935]|0}f=n-o|0;c[5759935]=n;n=c[5759932]|0;if((n|0)>0){if((f|0)>(c[5759937]|0)){c[5759937]=f}if((f|0)<(c[5759936]|0)){c[5759936]=f}a[23039752+((n-1|0)%4096|0)|0]=(f|0)>255?-1:f&255;p=c[5759932]|0}else{p=n}n=p+1|0;c[5759932]=n;c[5811918]=(n*50|0)+(c[5759934]|0)}while(1){if((c[5811918]|0)<(c[5811785]|0)){e=40;break}oo();if((c[5720394]|0)!=8){e=40;break}}if((e|0)==40){i=b;return}}function zl(){var b=0,d=0,e=0,f=0;b=i;d=0;do{e=25204104+(d*4292|0)|0;do{if((a[e]|0)!=0){if((c[25208252+(d*4292|0)>>2]|0)==2){break}c[7852]=d;Tr(161232,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;f=c[7852]|0;if((c[25208384+(f*4292|0)>>2]|0)==0){break}if((c[25208236+(f*4292|0)>>2]|0)!=0&(c[5720394]|0)!=9){break}c[25208252+(f*4292|0)>>2]=2;Bl()}}while(0);d=d+1|0;}while((d|0)<16);i=b;return}function Al(a){a=a|0;var b=0,d=0,e=0;b=i;if(a>>>0>15>>>0){d=2;i=b;return d|0}if((c[25208252+(a*4292|0)>>2]|0)==2){d=2;i=b;return d|0}c[7852]=a;Tr(161232,(e=i,i=i+8|0,c[e>>2]=25204104+(a*4292|0),e)|0);i=e;e=c[7852]|0;if((c[25208384+(e*4292|0)>>2]|0)==0){d=2;i=b;return d|0}a=25208252+(e*4292|0)|0;if((c[25208236+(e*4292|0)>>2]|0)!=0&(c[5720394]|0)!=9){d=c[a>>2]|0;i=b;return d|0}else{c[a>>2]=2;Bl();d=2;i=b;return d|0}return 0}function Bl(){var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=c[7852]|0;if((c[25208384+(d*4292|0)>>2]|0)==0){i=b;return}if((c[25208252+(d*4292|0)>>2]|0)==0){i=b;return}Tr(166288,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;e=c[7852]|0;c[25208252+(e*4292|0)>>2]=0;f=c[25208248+(e*4292|0)>>2]|0;if((f|0)==0){g=e}else{Yt(f);f=c[7852]|0;c[25208248+(f*4292|0)>>2]=0;g=f}if((c[25208236+(g*4292|0)>>2]|0)==0){h=g}else{c[5720394]=1;g=ct(163056)|0;if((a[g]|0)!=0){f=pC(160216,(d=i,i=i+8|0,c[d>>2]=g,d)|0)|0;i=d;rr(2,f);kt(163056,28378672)}c[46734]=-1;h=c[7852]|0}a[25204104+(h*4292|0)|0]=0;c[7852]=-1;i=b;return}function Cl(f){f=f|0;var h=0,j=0,k=0,l=0.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,z=0,A=0,B=0,C=0,D=0,E=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,_=0,$=0,aa=0,ba=0,ca=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;h=i;i=i+69248|0;if(f>>>0>15>>>0){j=2;i=h;return j|0}if((c[(25208252+(f*4292|0)|0)>>2]|0)==2){j=2;i=h;return j|0}do{if((c[6924790]|0)!=(f|0)){c[7852]=f;c[6924790]=f;c[(25208252+(f*4292|0)|0)>>2]=2;if((f|0)<0){break}Yt(c[25208248+(f*4292|0)>>2]|0);k=c[7852]|0;cu(25204104+(k*4292|0)|0,25208248+(k*4292|0)|0,1)|0;fu(27369928,16,c[25208248+((c[7852]|0)*4292|0)>>2]|0)|0;l=+($o()|0);k=~~(l*+g[(c[5451064]|0)+28>>2]);m=c[7852]|0;c[25208260+(m*4292|0)>>2]=k;c[25208256+(m*4292|0)>>2]=k;c[25208268+(m*4292|0)>>2]=24;k=d[27369935]<<8|d[27369934];c[25208376+(m*4292|0)>>2]=(k|0)==0?30:k;c[25208284+(m*4292|0)>>2]=-1;c[25208292+(m*4292|0)>>2]=d[27369937]<<8|d[27369936];c[25208276+(m*4292|0)>>2]=d[27369939]<<8|d[27369938]|d[27369940]<<16;c[25208356+(m*4292|0)>>2]=d[27369943]<<8|d[27369942];c[25208252+(m*4292|0)>>2]=5}}while(0);if((c[25208380+(f*4292|0)>>2]|0)<-1){j=c[(25208252+(f*4292|0)|0)>>2]|0;i=h;return j|0}c[7852]=f;m=c[(25208252+(f*4292|0)|0)>>2]|0;if((c[25208236+(f*4292|0)>>2]|0)!=0&(c[5720394]|0)!=9|(m|0)==0){j=m;i=h;return j|0}l=+($o()|0);m=~~(l*+g[(c[5451064]|0)+28>>2]);f=c[7852]|0;do{if((c[25208244+(f*4292|0)>>2]|0)!=0){k=m-(c[25208260+(f*4292|0)>>2]|0)|0;if((((k|0)>-1?k:-k|0)|0)<=100){break}c[(25208256+(f*4292|0)|0)>>2]=(c[(25208256+(f*4292|0)|0)>>2]|0)+k}}while(0);l=+($o()|0);f=c[7852]|0;k=c[25208256+(f*4292|0)>>2]|0;c[25208264+(f*4292|0)>>2]=~~((l*+g[(c[5451064]|0)+28>>2]- +(k>>>0>>>0))*3.0/100.0);n=f;f=k;a:while(1){o=n;while(1){p=c[25208252+(o*4292|0)>>2]|0;if(!((c[25208264+(o*4292|0)>>2]|0)!=(c[25208284+(o*4292|0)>>2]|0)&(p|0)==1)){break a}do{k=1;if(k){k=0;if((o|0)<0){q=o}else{k=1}}if(k){k=0;if(1){fu(27369928,(c[25208276+(o*4292|0)>>2]|0)+8|0,c[25208248+(o*4292|0)>>2]|0)|0;r=c[7852]|0;if((c[25208268+(r*4292|0)>>2]|0)>=(c[25208272+(r*4292|0)>>2]|0)){if((c[25208228+(r*4292|0)>>2]|0)!=0){c[25208252+(r*4292|0)>>2]=0;q=r;break}if((c[25208224+(r*4292|0)>>2]|0)==0){c[25208252+(r*4292|0)>>2]=2;q=r;break}if((r|0)<0){q=r;break}Yt(c[25208248+(r*4292|0)>>2]|0);s=c[7852]|0;cu(25204104+(s*4292|0)|0,25208248+(s*4292|0)|0,1)|0;fu(27369928,16,c[25208248+((c[7852]|0)*4292|0)>>2]|0)|0;l=+($o()|0);s=~~(l*+g[(c[5451064]|0)+28>>2]);t=c[7852]|0;c[25208260+(t*4292|0)>>2]=s;c[25208256+(t*4292|0)>>2]=s;c[25208268+(t*4292|0)>>2]=24;s=d[27369935]<<8|d[27369934];c[25208376+(t*4292|0)>>2]=(s|0)==0?30:s;c[25208284+(t*4292|0)>>2]=-1;c[25208292+(t*4292|0)>>2]=d[27369937]<<8|d[27369936];c[25208276+(t*4292|0)>>2]=d[27369939]<<8|d[27369938]|d[27369940]<<16;c[25208356+(t*4292|0)>>2]=d[27369943]<<8|d[27369942];c[25208252+(t*4292|0)>>2]=5;q=t;break}t=27369928;s=r;u=c[25208292+(r*4292|0)>>2]|0;while(1){b:do{r=1;v=u|0;if(r){r=0;switch(v|0){case 4113:{if((c[25208284+(s*4292|0)>>2]&1|0)==0){w=c[25208368+(s*4292|0)>>2]|0;c[25208352+(s*4292|0)>>2]=w;x=c[25208360+(s*4292|0)>>2]|0;z=c[25208364+(s*4292|0)>>2]|0;A=c[25208288+(s*4292|0)>>2]|0;B=c[25208316+(s*4292|0)>>2]|0;do{if((c[25208324+(s*4292|0)>>2]|0)==(c[25208328+(s*4292|0)>>2]<<2|0)){if((c[25208340+(s*4292|0)>>2]|0)!=0){C=A;D=B;break}C=A<<1;D=B<<1}else{C=A;D=B}}while(0);B=0;do{A=w-(da((z-8|0)+B|0,C)|0)|0;E=0;do{c[27435976+((E<<4)+B<<2)>>2]=A-(da((x-8|0)+E|0,D)|0);E=E+1|0;}while((E|0)<16);B=B+1|0;}while((B|0)<16);hk[c[25208300+(s*4292|0)>>2]&255](27437e3,t);B=c[7852]|0;c[25208384+(B*4292|0)>>2]=25272776;H=B}else{B=c[25208372+(s*4292|0)>>2]|0;c[25208352+(s*4292|0)>>2]=B;x=c[25208360+(s*4292|0)>>2]|0;z=c[25208364+(s*4292|0)>>2]|0;w=c[25208288+(s*4292|0)>>2]|0;E=c[25208316+(s*4292|0)>>2]|0;do{if((c[25208324+(s*4292|0)>>2]|0)==(c[25208328+(s*4292|0)>>2]<<2|0)){if((c[25208340+(s*4292|0)>>2]|0)!=0){I=w;J=E;break}I=w<<1;J=E<<1}else{I=w;J=E}}while(0);E=0;do{w=B-(da((z-8|0)+E|0,I)|0)|0;A=0;do{c[27435976+((A<<4)+E<<2)>>2]=w-(da((x-8|0)+A|0,J)|0);A=A+1|0;}while((A|0)<16);E=E+1|0;}while((E|0)<16);hk[c[25208304+(s*4292|0)>>2]&255](27568072,t);E=c[7852]|0;c[25208384+(E*4292|0)>>2]=25272776+(c[25208296+(E*4292|0)>>2]|0);H=E}E=25208284+(H*4292|0)|0;x=c[E>>2]|0;if((x|0)==0){m$(25272776+(c[25208296+(H*4292|0)>>2]|0)|0,25272776,da(c[25208328+(H*4292|0)>>2]|0,c[25208288+(H*4292|0)>>2]|0)|0)|0}c[E>>2]=x+1;c[25208232+(H*4292|0)>>2]=1;K=142;break};default:{r=1}}}if(r){r=0;switch(v|0){case 4098:{x=c[25208356+(s*4292|0)>>2]|0;if((x&65535)<<16>>16==0){L=512;M=256}else{L=(x&65535)<<1&510;M=((x&65535)>>>8|0)!=0?(x&65535)>>>8:256}if((c[25208340+(s*4292|0)>>2]|0)!=0){x=c[25208316+(s*4292|0)>>2]|0;if((x|0)==4){if((M|0)>0){E=t;z=0;B=843112;while(1){A=d[E+2|0]|0;w=d[E+4|0]|0;N=d[E+5|0]|0;O=c[29470176+(d[E]<<2)>>2]|0;P=c[29471200+(N<<2)>>2]|0;Q=c[29473248+(w<<2)>>2]|0;R=c[29472224+(N<<2)>>2]|0;N=c[29474272+(w<<2)>>2]|0;w=(P+O>>6|0)<0?0:P+O>>6;S=(Q+O+R>>6|0)<0?0:Q+O+R>>6;T=(N+O>>6|0)<0?0:N+O>>6;c[B>>2]=((S|0)>255?65280:S<<8)|((w|0)>255?-16776961:w|-16777216)|((T|0)>255?16711680:T<<16);T=c[29470176+(A<<2)>>2]|0;A=(T+P>>6|0)<0?0:T+P>>6;P=(R+Q+T>>6|0)<0?0:R+Q+T>>6;Q=(T+N>>6|0)<0?0:T+N>>6;c[B+4>>2]=((P|0)>255?65280:P<<8)|((A|0)>255?-16776961:A|-16777216)|((Q|0)>255?16711680:Q<<16);Q=z+1|0;if((Q|0)<(M|0)){E=E+6|0;z=Q;B=B+8|0}else{break}}U=t+(M*6|0)|0}else{U=t}if((L|0)==0){K=142;break b}else{V=U;W=0;X=712040;Y=187752}while(1){B=d[V]<<1;z=843112+(d[V+1|0]<<1<<1)|0;E=d[V+2|0]<<1;c[X>>2]=c[(843112+(B<<2)|0)>>2];c[Y>>2]=c[(843112+(B<<2)|0)>>2];c[Y+4>>2]=c[(843112+(B<<2)|0)>>2];c[X+4>>2]=c[(z+(E<<2)|0)>>2];c[Y+8>>2]=c[(z+(E<<2)|0)>>2];c[Y+12>>2]=c[(z+(E<<2)|0)>>2];c[Y+16>>2]=c[(843112+(B<<2)|0)>>2];c[Y+20>>2]=c[(843112+(B<<2)|0)>>2];c[Y+24>>2]=c[(z+(E<<2)|0)>>2];c[Y+28>>2]=c[(z+(E<<2)|0)>>2];c[X+8>>2]=c[(843112+((B|1)<<2)|0)>>2];c[Y+32>>2]=c[(843112+((B|1)<<2)|0)>>2];c[Y+36>>2]=c[(843112+((B|1)<<2)|0)>>2];c[X+12>>2]=c[(z+((E|1)<<2)|0)>>2];c[Y+40>>2]=c[(z+((E|1)<<2)|0)>>2];c[Y+44>>2]=c[(z+((E|1)<<2)|0)>>2];c[Y+48>>2]=c[(843112+((B|1)<<2)|0)>>2];c[Y+52>>2]=c[(843112+((B|1)<<2)|0)>>2];c[Y+56>>2]=c[(z+((E|1)<<2)|0)>>2];c[Y+60>>2]=c[(z+((E|1)<<2)|0)>>2];E=W+1|0;if((E|0)<(L|0)){V=V+3|0;W=E;X=X+16|0;Y=Y+64|0}else{K=142;break b}}}else if((x|0)==1){if((M|0)>0){E=t;z=1;B=843112;Q=s;while(1){a[B]=a[(c[25208320+(Q*4292|0)>>2]|0)+(d[E]|0)|0]|0;a[B+1|0]=a[(c[25208320+((c[7852]|0)*4292|0)>>2]|0)+(d[E+2|0]|0)|0]|0;if((z|0)>=(M|0)){break}E=E+6|0;z=z+1|0;B=B+2|0;Q=c[7852]|0}Z=t+(M*6|0)|0}else{Z=t}if((L|0)==0){K=142;break b}else{_=Z;$=0;aa=712040;ba=187752}while(1){Q=843112+(d[_]<<1)|0;B=843112+(d[_+1|0]<<1)|0;a[aa]=a[Q]|0;a[ba]=a[Q]|0;a[ba+1|0]=a[Q]|0;a[aa+1|0]=a[B]|0;a[ba+2|0]=a[B]|0;a[ba+3|0]=a[B]|0;a[ba+4|0]=a[Q]|0;a[ba+5|0]=a[Q]|0;a[ba+6|0]=a[B]|0;a[ba+7|0]=a[B]|0;a[aa+2|0]=a[Q+1|0]|0;a[ba+8|0]=a[Q+1|0]|0;a[ba+9|0]=a[Q+1|0]|0;a[aa+3|0]=a[B+1|0]|0;a[ba+10|0]=a[B+1|0]|0;a[ba+11|0]=a[B+1|0]|0;a[ba+12|0]=a[Q+1|0]|0;a[ba+13|0]=a[Q+1|0]|0;a[ba+14|0]=a[B+1|0]|0;a[ba+15|0]=a[B+1|0]|0;B=$+1|0;if((B|0)<(L|0)){_=_+2|0;$=B;aa=aa+4|0;ba=ba+16|0}else{K=142;break b}}}else if((x|0)==2){if((M|0)>0){B=t;Q=0;z=843112;while(1){E=d[B+2|0]|0;A=d[B+4|0]|0;P=d[B+5|0]|0;N=c[29470176+(d[B]<<2)>>2]|0;T=c[29471200+(P<<2)>>2]|0;R=c[29473248+(A<<2)>>2]|0;w=c[29472224+(P<<2)>>2]|0;P=c[29474272+(A<<2)>>2]|0;A=(T+N>>9|0)<0?0:T+N>>9;S=(R+N+w>>8|0)<0?0:R+N+w>>8;O=(P+N>>9|0)<0?0:P+N>>9;b[z>>1]=((S|0)>63?2016:S<<5)+((A|0)>31?63488:A<<11)+((O|0)>31?31:O);O=c[29470176+(E<<2)>>2]|0;E=(O+T>>9|0)<0?0:O+T>>9;T=(w+R+O>>8|0)<0?0:w+R+O>>8;R=(O+P>>9|0)<0?0:O+P>>9;b[z+2>>1]=((T|0)>63?2016:T<<5)+((E|0)>31?63488:E<<11)+((R|0)>31?31:R);R=Q+1|0;if((R|0)<(M|0)){B=B+6|0;Q=R;z=z+4|0}else{break}}ca=t+(M*6|0)|0}else{ca=t}if((L|0)==0){K=142;break b}else{ea=ca;fa=0;ga=712040;ha=187752}while(1){z=d[ea]<<1;Q=d[ea+1|0]<<1;b[ga>>1]=b[(843112+(z<<1)|0)>>1]|0;b[ha>>1]=b[(843112+(z<<1)|0)>>1]|0;b[ha+2>>1]=b[(843112+(z<<1)|0)>>1]|0;b[ga+2>>1]=b[(843112+(Q<<1)|0)>>1]|0;b[ha+4>>1]=b[(843112+(Q<<1)|0)>>1]|0;b[ha+6>>1]=b[(843112+(Q<<1)|0)>>1]|0;b[ha+8>>1]=b[(843112+(z<<1)|0)>>1]|0;b[ha+10>>1]=b[(843112+(z<<1)|0)>>1]|0;b[ha+12>>1]=b[(843112+(Q<<1)|0)>>1]|0;b[ha+14>>1]=b[(843112+(Q<<1)|0)>>1]|0;b[ga+4>>1]=b[(843112+((z|1)<<1)|0)>>1]|0;b[ha+16>>1]=b[(843112+((z|1)<<1)|0)>>1]|0;b[ha+18>>1]=b[(843112+((z|1)<<1)|0)>>1]|0;b[ga+6>>1]=b[(843112+((Q|1)<<1)|0)>>1]|0;b[ha+20>>1]=b[(843112+((Q|1)<<1)|0)>>1]|0;b[ha+22>>1]=b[(843112+((Q|1)<<1)|0)>>1]|0;b[ha+24>>1]=b[(843112+((z|1)<<1)|0)>>1]|0;b[ha+26>>1]=b[(843112+((z|1)<<1)|0)>>1]|0;b[ha+28>>1]=b[(843112+((Q|1)<<1)|0)>>1]|0;b[ha+30>>1]=b[(843112+((Q|1)<<1)|0)>>1]|0;Q=fa+1|0;if((Q|0)<(L|0)){ea=ea+2|0;fa=Q;ga=ga+8|0;ha=ha+32|0}else{K=142;break b}}}else{K=142;break b}}Q=c[25208316+(s*4292|0)>>2]|0;c[h+65744>>2]=s;c[h+65752>>2]=t;c[h+65968>>2]=M;c[h+65976>>2]=L;c[h+65984>>2]=Q;c[h+69136>>2]=K;c[h+69184>>2]=0;c[h+69188>>2]=0;_CIN_RunCinematic$0(h);K=c[h+69136>>2]|0;F=c[h+69184>>2]|0;y=c[h+69188>>2]|0;G=+g[h+69188>>2];c[h+69184>>2]=0;c[h+69188>>2]=0;if((F|0)==1){break}if((F|0)==2){switch(y|0){case 13:{break b}}}};default:{r=1}}}if(r){r=0;switch(v|0){case 4128:{if((c[25208240+(s*4292|0)>>2]|0)!=0){K=142;break b}Q=c[25208276+(s*4292|0)>>2]|0;if((Q|0)!=0){z=0;B=c[25208356+(s*4292|0)>>2]&65535;do{B=(b[27435464+(d[t+z|0]<<1)>>1]|0)+B&65535;x=z<<1;b[(h|0)+((x|1)<<1)>>1]=B;b[(h|0)+(x<<1)>>1]=B;z=z+1|0;}while(z>>>0>>0)}zx(0,Q,22050,2,1,h|0,1.0,-1);K=142;break};case 4129:{if((c[25208240+(s*4292|0)>>2]|0)!=0){K=142;break b}if((c[25208284+(s*4292|0)>>2]|0)==-1){Hx();c[4780580]=c[553086];ia=c[7852]|0}else{ia=s}z=c[25208276+(ia*4292|0)>>2]|0;B=c[25208356+(ia*4292|0)>>2]|0;if((z|0)!=0){v=0;r=t;x=B&65280;R=(B&65535)<<8;while(1){B=(e[27435464+(d[r]<<1)>>1]|0)+x<<16>>16;E=(b[27435464+(d[r+1|0]<<1)>>1]|0)+R&65535;b[(h|0)+(v<<1)>>1]=B;b[(h|0)+((v|1)<<1)>>1]=E;T=v+2|0;if(T>>>0>>0){v=T;r=r+2|0;x=B;R=E}else{break}}}zx(0,z>>>1,22050,2,2,h|0,1.0,-1);K=142;break};case 4097:{R=c[25208284+(s*4292|0)>>2]|0;if((R|0)==-1){do{if((s|0)<0){ja=s}else{x=d[t+1|0]<<8|d[t];c[25208324+(s*4292|0)>>2]=x;r=d[t+3|0]<<8|d[t+2|0];c[25208328+(s*4292|0)>>2]=r;c[25208332+(s*4292|0)>>2]=d[t+5|0]<<8|d[t+4|0];c[25208336+(s*4292|0)>>2]=d[t+7|0]<<8|d[t+6|0];c[25208204+(s*4292|0)>>2]=r;c[25208200+(s*4292|0)>>2]=x;v=da(c[25208316+(s*4292|0)>>2]|0,x)|0;c[25208288+(s*4292|0)>>2]=v;Q=da(v,r)|0;c[25208296+(s*4292|0)>>2]=Q;c[25208340+(s*4292|0)>>2]=0;c[25208344+(s*4292|0)>>2]=0;c[25208300+(s*4292|0)>>2]=c[25208308+(s*4292|0)>>2];c[25208304+(s*4292|0)>>2]=c[25208312+(s*4292|0)>>2];c[25208368+(s*4292|0)>>2]=Q;c[25208372+(s*4292|0)>>2]=-Q;Q=25208388+(s*4292|0)|0;c[Q>>2]=x;v=25208392+(s*4292|0)|0;c[v>>2]=r;if(!((c[5720343]|0)==3|(c[5720337]|0)<257)){ja=s;break}if(x>>>0>256>>>0){c[Q>>2]=256}if(r>>>0>256>>>0){c[v>>2]=256}if((x|0)==256&(r|0)==256){ja=s;break}Sr(169704,(ka=i,i=i+1|0,i=i+7&-8,c[ka>>2]=0,ka)|0);i=ka;ja=c[7852]|0}}while(0);z=c[25208328+(ja*4292|0)>>2]|0;r=c[25208324+(ja*4292|0)>>2]|0;if(!((c[6924787]|c[6924786]|0)==0&(z|0)==(c[6924788]|0)&(r|0)==(c[6924789]|0))){c[6924786]=0;c[6924787]=0;c[6924788]=z;c[6924789]=r;x=da(r,z)|0;c[25208280+(ja*4292|0)>>2]=0;if((z|0)>0){z=0;v=ja;Q=r;while(1){if((Q|0)>0){r=0;while(1){Nl(r,z,16);E=r+16|0;B=c[7852]|0;T=c[25208324+(B*4292|0)>>2]|0;if((E|0)<(T|0)){r=E}else{la=B;ma=T;break}}}else{la=v;ma=Q}r=z+16|0;if((r|0)<(c[25208328+(la*4292|0)>>2]|0)){z=r;v=la;Q=ma}else{break}}}Q=(x>>>4)+(x>>>6)|0;while(1){c[27437e3+(Q<<2)>>2]=0;c[27568072+(Q<<2)>>2]=0;if((Q|0)<(((x>>>4)+(x>>>6)|0)+63|0|0)){Q=Q+1|0}else{break}}}l=+($o()|0);Q=~~(l*+g[(c[5451064]|0)+28>>2]);x=c[7852]|0;c[25208260+(x*4292|0)>>2]=Q;c[25208256+(x*4292|0)>>2]=Q;na=x;oa=c[25208284+(x*4292|0)>>2]|0}else{na=s;oa=R}if((oa|0)==1){pa=na;break b}c[25208284+(na*4292|0)>>2]=0;K=142;break};case 4144:{c[25208348+(s*4292|0)>>2]=c[25208356+(s*4292|0)>>2];c[25208276+(s*4292|0)>>2]=0;K=142;break};case 4115:{c[25208276+(s*4292|0)>>2]=0;K=142;break};case 4114:{pa=s;break};default:{c[25208252+(s*4292|0)>>2]=2;K=142}}}}while(0);if((K|0)==142){K=0;pa=c[7852]|0}qa=25208268+(pa*4292|0)|0;ra=c[qa>>2]|0;if((ra|0)>=(c[25208272+(pa*4292|0)>>2]|0)){K=144;break}x=25208276+(pa*4292|0)|0;Q=c[x>>2]|0;v=d[t+(Q+1)|0]<<8|d[t+Q|0];c[25208292+(pa*4292|0)>>2]=v;sa=d[t+(Q+3)|0]<<8|d[t+(Q+2)|0]|d[t+(Q+4)|0]<<16;c[x>>2]=sa;x=t+(Q+6)|0;z=t+(Q+7)|0;c[25208356+(pa*4292|0)>>2]=d[z]<<8|d[x];c[25208360+(pa*4292|0)>>2]=a[z]|0;c[25208364+(pa*4292|0)>>2]=a[x]|0;if(sa>>>0>65536>>>0|(v|0)==4228){K=151;break}x=25208348+(pa*4292|0)|0;z=c[x>>2]|0;if((z|0)==0){K=156;break}if((c[25208252+(pa*4292|0)>>2]|0)==2){K=156;break}c[x>>2]=z-1;t=t+(Q+8)|0;s=pa;u=v}if((K|0)==144){K=0;if((c[25208228+(pa*4292|0)>>2]|0)!=0){c[25208252+(pa*4292|0)>>2]=0;q=pa;break}if((c[25208224+(pa*4292|0)>>2]|0)==0){c[25208252+(pa*4292|0)>>2]=2;q=pa;break}if((pa|0)<0){q=pa;break}Yt(c[25208248+(pa*4292|0)>>2]|0);u=c[7852]|0;cu(25204104+(u*4292|0)|0,25208248+(u*4292|0)|0,1)|0;fu(27369928,16,c[25208248+((c[7852]|0)*4292|0)>>2]|0)|0;l=+($o()|0);u=~~(l*+g[(c[5451064]|0)+28>>2]);s=c[7852]|0;c[25208260+(s*4292|0)>>2]=u;c[25208256+(s*4292|0)>>2]=u;c[25208268+(s*4292|0)>>2]=24;u=d[27369935]<<8|d[27369934];c[25208376+(s*4292|0)>>2]=(u|0)==0?30:u;c[25208284+(s*4292|0)>>2]=-1;c[25208292+(s*4292|0)>>2]=d[27369937]<<8|d[27369936];c[25208276+(s*4292|0)>>2]=d[27369939]<<8|d[27369938]|d[27369940]<<16;c[25208356+(s*4292|0)>>2]=d[27369943]<<8|d[27369942];c[25208252+(s*4292|0)>>2]=5;q=s;break}else if((K|0)==151){K=0;Tr(172888,(ka=i,i=i+1|0,i=i+7&-8,c[ka>>2]=0,ka)|0);i=ka;s=c[7852]|0;c[25208252+(s*4292|0)>>2]=2;if((c[25208224+(s*4292|0)>>2]|0)==0|(s|0)<0){q=s;break}Yt(c[25208248+(s*4292|0)>>2]|0);s=c[7852]|0;cu(25204104+(s*4292|0)|0,25208248+(s*4292|0)|0,1)|0;fu(27369928,16,c[25208248+((c[7852]|0)*4292|0)>>2]|0)|0;l=+($o()|0);s=~~(l*+g[(c[5451064]|0)+28>>2]);u=c[7852]|0;c[25208260+(u*4292|0)>>2]=s;c[25208256+(u*4292|0)>>2]=s;c[25208268+(u*4292|0)>>2]=24;s=d[27369935]<<8|d[27369934];c[25208376+(u*4292|0)>>2]=(s|0)==0?30:s;c[25208284+(u*4292|0)>>2]=-1;c[25208292+(u*4292|0)>>2]=d[27369937]<<8|d[27369936];c[25208276+(u*4292|0)>>2]=d[27369939]<<8|d[27369938]|d[27369940]<<16;c[25208356+(u*4292|0)>>2]=d[27369943]<<8|d[27369942];c[25208252+(u*4292|0)>>2]=5;q=u;break}else if((K|0)==156){K=0;c[qa>>2]=ra+8+sa;q=pa;break}}else{k=1}}}while(0);if((f|0)==(c[25208256+(q*4292|0)>>2]|0)){o=q}else{break}}l=+($o()|0);u=c[7852]|0;s=c[25208256+(u*4292|0)>>2]|0;c[25208264+(u*4292|0)>>2]=~~((l*+g[(c[5451064]|0)+28>>2]- +(s>>>0>>>0))*3.0/100.0);n=u;f=s}c[25208260+(o*4292|0)>>2]=m;if((p|0)==5){c[25208252+(o*4292|0)>>2]=1;j=1;i=h;return j|0}else if((p|0)==2){if((c[25208224+(o*4292|0)>>2]|0)==0){Bl();j=c[25208252+((c[7852]|0)*4292|0)>>2]|0;i=h;return j|0}if((o|0)<0){j=2;i=h;return j|0}Yt(c[25208248+(o*4292|0)>>2]|0);o=c[7852]|0;cu(25204104+(o*4292|0)|0,25208248+(o*4292|0)|0,1)|0;fu(27369928,16,c[25208248+((c[7852]|0)*4292|0)>>2]|0)|0;l=+($o()|0);o=~~(l*+g[(c[5451064]|0)+28>>2]);m=c[7852]|0;c[25208260+(m*4292|0)>>2]=o;c[25208256+(m*4292|0)>>2]=o;c[25208268+(m*4292|0)>>2]=24;o=d[27369935]<<8|d[27369934];c[25208376+(m*4292|0)>>2]=(o|0)==0?30:o;c[25208284+(m*4292|0)>>2]=-1;c[25208292+(m*4292|0)>>2]=d[27369937]<<8|d[27369936];c[25208276+(m*4292|0)>>2]=d[27369939]<<8|d[27369938]|d[27369940]<<16;c[25208356+(m*4292|0)>>2]=d[27369943]<<8|d[27369942];c[25208252+(m*4292|0)>>2]=5;j=5;i=h;return j|0}else{j=p;i=h;return j|0}return 0}function Dl(e,f,h,j,k,l){e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;var 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,A=0;m=i;i=i+4096|0;n=m|0;do{if((sg(e|0,47)|0)==0){if((sg(e|0,92)|0)!=0){o=4;break}$B(n,4096,131224,(p=i,i=i+8|0,c[p>>2]=e,p)|0)|0;i=p}else{o=4}}while(0);if((o|0)==4){$B(n,4096,120560,(p=i,i=i+8|0,c[p>>2]=e,p)|0)|0;i=p}q=l&1;r=(q|0)==0;a:do{if(r){s=0;while(1){t=s+1|0;if((k$(25204104+(s*4292|0)|0,n)|0)==0){u=s;break}if((t|0)<16){s=t}else{break a}}v=4096;w=0;i=m;return u|0}}while(0);Tr(109720,(p=i,i=i+8|0,c[p>>2]=e,p)|0);i=p;n$(25272776,0,2426388)|0;s=0;while(1){x=25204104+(s*4292|0)|0;t=s+1|0;if((a[x]|0)==0){break}if((t|0)<16){s=t}else{o=11;break}}if((o|0)==11){Ur(1,176360,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;return 0}c[7852]=s;c[6924790]=s;r$(x|0,n|0)|0;n=c[7852]|0;c[25208272+(n*4292|0)>>2]=0;x=cu(25204104+(n*4292|0)|0,25208248+(n*4292|0)|0,1)|0;n=c[7852]|0;c[25208272+(n*4292|0)>>2]=x;if((x|0)<1){Tr(100160,(p=i,i=i+8|0,c[p>>2]=e,p)|0);i=p;a[25204104+((c[7852]|0)*4292|0)|0]=0;u=-1;v=4096;w=0;i=m;return u|0}do{if(!(n>>>0>15>>>0)){if((c[25208252+(n*4292|0)>>2]|0)!=2){c[25208208+(n*4292|0)>>2]=f;c[25208212+(n*4292|0)>>2]=h;c[25208216+(n*4292|0)>>2]=j;c[25208220+(n*4292|0)>>2]=k;c[25208232+(n*4292|0)>>2]=1}if((c[25208252+(n*4292|0)>>2]|0)==2){break}c[25208224+(n*4292|0)>>2]=l>>>1&1}}while(0);c[25208204+(n*4292|0)>>2]=512;c[25208200+(n*4292|0)>>2]=512;c[25208228+(n*4292|0)>>2]=l>>>2&1;c[25208236+(n*4292|0)>>2]=q;q=25208380+(n*4292|0)|0;c[q>>2]=1;c[25208240+(n*4292|0)>>2]=l>>>3&1;c[25208244+(n*4292|0)>>2]=l>>>4&1;do{if(r){c[q>>2]=c[(c[5811742]|0)+32>>2];y=n}else{l=c[236124]|0;if((l|0)==0){y=n;break}oD(l,7,(p=i,i=i+8|0,c[p>>2]=0,p)|0)|0;i=p;y=c[7852]|0}}while(0);if((y|0)>=0){c[25208308+(y*4292|0)>>2]=178;c[25208312+(y*4292|0)>>2]=178;c[25208316+(y*4292|0)>>2]=4;n=0;while(1){z=+((n<<1)-255|0);c[29474272+(n<<2)>>2]=~~(z*57.20399856567383+32.0);c[29471200+(n<<2)>>2]=~~(z*45.36399841308594+32.0);c[29473248+(n<<2)>>2]=~~(z*-11.512479782104492);c[29472224+(n<<2)>>2]=~~(z*-23.352479934692383+32.0);c[29470176+(n<<2)>>2]=n<<6|n>>2;q=n+1|0;if((q|0)<256){n=q}else{A=0;break}}do{n=(da(A,A)|0)&65535;b[27435464+(A<<1)>>1]=n;b[27435464+(A+128<<1)>>1]=-n;A=A+1|0;}while((A|0)<128)}fu(27369928,16,c[25208248+(y*4292|0)>>2]|0)|0;if(!((d[27369929]<<8|d[27369928])<<16>>16==4228)){Tr(51232,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;Bl();u=-1;v=4096;w=0;i=m;return u|0}z=+($o()|0);y=~~(z*+g[(c[5451064]|0)+28>>2]);A=c[7852]|0;c[25208260+(A*4292|0)>>2]=y;c[25208256+(A*4292|0)>>2]=y;c[25208268+(A*4292|0)>>2]=24;y=d[27369935]<<8|d[27369934];c[25208376+(A*4292|0)>>2]=(y|0)==0?30:y;c[25208284+(A*4292|0)>>2]=-1;c[25208292+(A*4292|0)>>2]=d[27369937]<<8|d[27369936];c[25208276+(A*4292|0)>>2]=d[27369939]<<8|d[27369938]|d[27369940]<<16;c[25208356+(A*4292|0)>>2]=d[27369943]<<8|d[27369942];c[25208252+(A*4292|0)>>2]=1;Tr(57960,(p=i,i=i+8|0,c[p>>2]=e,p)|0);i=p;if((c[25208236+((c[7852]|0)*4292|0)>>2]|0)!=0){c[5720394]=9}hm();p=c[7852]|0;if((c[25208240+(p*4292|0)>>2]|0)!=0){u=p;v=4096;w=0;i=m;return u|0}c[4780580]=c[553086];u=p;v=4096;w=0;i=m;return u|0}function El(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(a>>>0>15>>>0){return}if((c[25208252+(a*4292|0)>>2]|0)==2){return}c[25208208+(a*4292|0)>>2]=b;c[25208212+(a*4292|0)>>2]=d;c[25208216+(a*4292|0)>>2]=e;c[25208220+(a*4292|0)>>2]=f;c[25208232+(a*4292|0)>>2]=1;return}function Fl(b,e){b=b|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,t=0,u=0,v=0,w=0,x=0;f=c[25208384+(b*4292|0)>>2]|0;g=c[25208200+(b*4292|0)>>2]|0;h=(g|0)/256|0;i=c[25208204+(b*4292|0)>>2]|0;b=(i|0)/256|0;j=(g|0)==512?9:8;k=f;do{if((g-512|0)>>>0<256>>>0){if((i-512|0)>>>0<256>>>0){l=e;m=0;while(1){n=m<<12;o=n|4;p=n|2048;q=n|2052;r=l;s=0;while(1){if((s|0)<(s|4|0)){a[r]=((d[f+(s+o)|0]|0)+(d[f+(s+n)|0]|0)+(d[f+(s+p)|0]|0)+(d[f+(s+q)|0]|0)|0)>>>2;t=s|1;a[r+1|0]=((d[f+(t+o)|0]|0)+(d[f+(t+n)|0]|0)+(d[f+(t+p)|0]|0)+(d[f+(t+q)|0]|0)|0)>>>2;u=t+1|0;a[r+2|0]=((d[f+(u+o)|0]|0)+(d[f+(u+n)|0]|0)+(d[f+(u+p)|0]|0)+(d[f+(u+q)|0]|0)|0)>>>2;u=s|3;a[r+3|0]=((d[f+(u+o)|0]|0)+(d[f+(u+n)|0]|0)+(d[f+(u+p)|0]|0)+(d[f+(u+q)|0]|0)|0)>>>2;v=r+4|0}else{v=r}u=s+8|0;if((u|0)<2048){r=v;s=u}else{break}}s=m+1|0;if((s|0)<256){l=v;m=s}else{break}}return}if(!((i-256|0)>>>0<256>>>0)){w=0;break}m=e;l=0;while(1){s=l<<11;r=s|4;q=m;p=0;while(1){if((p|0)<(p|4|0)){a[q]=((d[f+(p+r)|0]|0)+(d[f+(p+s)|0]|0)|0)>>>1;n=p|1;a[q+1|0]=((d[f+(n+r)|0]|0)+(d[f+(n+s)|0]|0)|0)>>>1;o=n+1|0;a[q+2|0]=((d[f+(o+r)|0]|0)+(d[f+(o+s)|0]|0)|0)>>>1;o=p|3;a[q+3|0]=((d[f+(o+r)|0]|0)+(d[f+(o+s)|0]|0)|0)>>>1;x=q+4|0}else{x=q}o=p+8|0;if((o|0)<2048){q=x;p=o}else{break}}p=l+1|0;if((p|0)<256){m=x;l=p}else{break}}return}else{w=0}}while(0);do{x=(da(w,b)|0)<>2]=c[k+((da(i,h)|0)+x<<2)>>2];i=i+1|0;}while((i|0)<256);w=w+1|0;}while((w|0)<256);return}function Gl(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=i;i=i+32|0;d=b|0;e=b+8|0;f=b+16|0;h=b+24|0;if(a>>>0>15>>>0){i=b;return}if((c[25208252+(a*4292|0)>>2]|0)==2){i=b;return}j=c[25208384+(a*4292|0)>>2]|0;if((j|0)==0){i=b;return}g[d>>2]=+(c[25208208+(a*4292|0)>>2]|0);g[e>>2]=+(c[25208212+(a*4292|0)>>2]|0);g[f>>2]=+(c[25208216+(a*4292|0)>>2]|0);g[h>>2]=+(c[25208220+(a*4292|0)>>2]|0);Hp(d,e,f,h);k=25208232+(a*4292|0)|0;l=c[k>>2]|0;do{if((l|0)==0){m=c[25208388+(a*4292|0)>>2]|0;n=c[25208392+(a*4292|0)>>2]|0}else{o=c[25208200+(a*4292|0)>>2]|0;if((o|0)==(c[25208388+(a*4292|0)>>2]|0)){p=c[25208204+(a*4292|0)>>2]|0;if((p|0)==(c[25208392+(a*4292|0)>>2]|0)){m=o;n=p;break}}p=ss(262144)|0;Fl(a,p);Ik[c[4917262]&15](~~+g[d>>2],~~+g[e>>2],~~+g[f>>2],~~+g[h>>2],256,256,p,a,1);c[k>>2]=0;ts(p);i=b;return}}while(0);Ik[c[4917262]&15](~~+g[d>>2],~~+g[e>>2],~~+g[f>>2],~~+g[h>>2],m,n,j,a,l);c[k>>2]=0;i=b;return}function Hl(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;Tr(45992,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;do{if((c[5720394]|0)==9){e=c[46734]|0;if(!(e>>>0<16>>>0)){break}do{if((c[25208252+(e*4292|0)>>2]|0)!=2){c[7852]=e;Tr(161232,(d=i,i=i+8|0,c[d>>2]=25204104+(e*4292|0),d)|0);i=d;f=c[7852]|0;if((c[25208384+(f*4292|0)>>2]|0)==0){break}if((c[25208236+(f*4292|0)>>2]|0)!=0&(c[5720394]|0)!=9){break}c[25208252+(f*4292|0)>>2]=2;Bl()}}while(0);Ax();c[46734]=-1}}while(0);d=or(1)|0;e=or(2)|0;f=(e|0)!=0;if(f){if((a[e]|0)==49){g=12}else{g=10}}else{g=10}do{if((g|0)==10){if((VB(d,185088)|0)==0){g=12;break}if((VB(d,181216)|0)==0){g=12}else{h=1}}}while(0);if((g|0)==12){h=5}if(f){j=(a[e]|0)==50?h|2:h}else{j=h}Ax();h=Dl(d,0,0,640,480,j)|0;c[46734]=h;if((h|0)>-1){k=h}else{i=b;return}while(1){if(k>>>0<16>>>0){Cl(k)|0}h=c[7852]|0;if((c[25208384+(h*4292|0)>>2]|0)!=0){g=21;break}if((c[25208252+(h*4292|0)>>2]|0)!=1){g=21;break}k=c[46734]|0}if((g|0)==21){i=b;return}}function Il(){var a=0,b=0,d=0;a=i;b=c[46734]|0;if(!(b>>>0<16>>>0)){i=a;return}do{if((c[25208252+(b*4292|0)>>2]|0)!=2){c[7852]=b;Tr(161232,(d=i,i=i+8|0,c[d>>2]=25204104+(b*4292|0),d)|0);i=d;d=c[7852]|0;if((c[25208384+(d*4292|0)>>2]|0)==0){break}if((c[25208236+(d*4292|0)>>2]|0)!=0&(c[5720394]|0)!=9){break}c[25208252+(d*4292|0)>>2]=2;Bl()}}while(0);Ax();c[46734]=-1;i=a;return}function Jl(){var a=0;a=c[46734]|0;if(!(a>>>0<16>>>0)){return}Cl(a)|0;return}function Kl(){var a=0;a=c[46734]|0;if(!(a>>>0<16>>>0)){return}Gl(a);return}function Ll(a){a=a|0;var b=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;if(!(a>>>0<16>>>0)){return}b=c[25208384+(a*4292|0)>>2]|0;if((b|0)==0){return}d=25208380+(a*4292|0)|0;e=c[d>>2]|0;f=25208232+(a*4292|0)|0;g=c[f>>2]|0;a:do{if((e|0)<1){do{if((g|0)!=0){if((e|0)==0){c[d>>2]=-1;h=10;break a}else if((e|0)==(-1|0)){c[d>>2]=-2;i=25208232+(a*4292|0)|0;h=12;break a}else{c[f>>2]=0;break}}}while(0);j=25208232+(a*4292|0)|0;h=11}else{h=10}}while(0);if((h|0)==10){f=25208232+(a*4292|0)|0;if((g|0)==0){j=f;h=11}else{i=f;h=12}}do{if((h|0)==11){k=c[25208200+(a*4292|0)>>2]|0;l=c[25208204+(a*4292|0)>>2]|0;m=c[25208388+(a*4292|0)>>2]|0;n=c[25208392+(a*4292|0)>>2]|0;o=0;p=j;h=15}else if((h|0)==12){f=25208200+(a*4292|0)|0;e=c[f>>2]|0;q=25208204+(a*4292|0)|0;if((e|0)==(c[25208388+(a*4292|0)>>2]|0)){r=c[q>>2]|0;if((r|0)==(c[25208392+(a*4292|0)>>2]|0)){k=e;l=r;m=e;n=r;o=g;p=i;h=15;break}}r=ss(262144)|0;Fl(a,r);Gk[c[4917263]&63](c[f>>2]|0,c[q>>2]|0,256,256,r,a,1);c[i>>2]=0;ts(r)}}while(0);if((h|0)==15){Gk[c[4917263]&63](k,l,m,n,b,a,o);c[p>>2]=0}p=(c[d>>2]|0)==1;if((c[(c[5811742]|0)+32>>2]|0)==0){if(!p){return}c[d>>2]=0;return}else{if(p){return}c[d>>2]=1;return}}function Ml(b,f){b=b|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,v=0,w=0,x=0,y=0,A=0,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;g=c[25208288+((c[7852]|0)*4292|0)>>2]|0;h=g<<1;i=h+g|0;j=i+g|0;k=j+g|0;l=k+g|0;m=l+g|0;n=g+8|0;o=h+8|0;p=o+g|0;q=f;f=0;r=0;s=0;while(1){if(s<<16>>16==0){t=q+2|0;u=(d[q+1|0]|0)<<8|(d[q]|0);v=7}else{t=q;u=r;v=s-1&65535}w=u<<2;x=u&-16384&65535;if((x|0)==32768){y=(d[t]|0)<<7;A=c[b+(f<<2)>>2]|0;m$(A|0,187752+(y<<1)|0,32)|0;m$(A+g|0,187752+((y|16)<<1)|0,32)|0;m$(A+h|0,187752+((y|32)<<1)|0,32)|0;m$(A+i|0,187752+((y|48)<<1)|0,32)|0;m$(A+j|0,187752+((y|64)<<1)|0,32)|0;m$(A+k|0,187752+((y|80)<<1)|0,32)|0;m$(A+l|0,187752+((y|96)<<1)|0,32)|0;m$(A+m|0,187752+((y|112)<<1)|0,32)|0;B=t+1|0;C=f+5|0;D=w;E=v}else if((x|0)==49152){y=v;A=w;F=0;G=t;H=f;while(1){I=H+1|0;if(y<<16>>16==0){J=G+2|0;K=(d[G+1|0]|0)<<8|(d[G]|0);L=7}else{J=G;K=A;L=y-1&65535}M=K<<2;N=K&-16384&65535;if((N|0)==32768){O=(d[J]|0)<<5;P=c[b+(I<<2)>>2]|0;s$(P|0,712040+(O<<1)|0,16)|0;s$(P+g|0,712040+((O|8)<<1)|0,16)|0;s$(P+h|0,712040+((O|16)<<1)|0,16)|0;s$(P+i|0,712040+((O|24)<<1)|0,16)|0;Q=J+1|0}else if((N|0)==49152){O=(d[J]|0)<<3;P=b+(I<<2)|0;R=c[P>>2]|0;S=843112+(O<<1)|0;T=R;U=S|0;V=S+4|0;S=e[V>>1]|e[V+2>>1]<<16;V=T|0;z=e[U>>1]|e[U+2>>1]<<16;a[V]=z;z=z>>8;a[V+1|0]=z;z=z>>8;a[V+2|0]=z;z=z>>8;a[V+3|0]=z;V=T+4|0;z=S;a[V]=z;z=z>>8;a[V+1|0]=z;z=z>>8;a[V+2|0]=z;z=z>>8;a[V+3|0]=z;V=843112+((O|4)<<1)|0;O=R+g|0;R=V|0;S=V+4|0;V=e[S>>1]|e[S+2>>1]<<16;S=O|0;z=e[R>>1]|e[R+2>>1]<<16;a[S]=z;z=z>>8;a[S+1|0]=z;z=z>>8;a[S+2|0]=z;z=z>>8;a[S+3|0]=z;S=O+4|0;z=V;a[S]=z;z=z>>8;a[S+1|0]=z;z=z>>8;a[S+2|0]=z;z=z>>8;a[S+3|0]=z;S=(d[J+1|0]|0)<<3;V=c[P>>2]|0;O=843112+(S<<1)|0;R=V+8|0;T=O|0;U=O+4|0;O=e[U>>1]|e[U+2>>1]<<16;U=R|0;z=e[T>>1]|e[T+2>>1]<<16;a[U]=z;z=z>>8;a[U+1|0]=z;z=z>>8;a[U+2|0]=z;z=z>>8;a[U+3|0]=z;U=R+4|0;z=O;a[U]=z;z=z>>8;a[U+1|0]=z;z=z>>8;a[U+2|0]=z;z=z>>8;a[U+3|0]=z;U=843112+((S|4)<<1)|0;S=V+n|0;V=U|0;O=U+4|0;U=e[O>>1]|e[O+2>>1]<<16;O=S|0;z=e[V>>1]|e[V+2>>1]<<16;a[O]=z;z=z>>8;a[O+1|0]=z;z=z>>8;a[O+2|0]=z;z=z>>8;a[O+3|0]=z;O=S+4|0;z=U;a[O]=z;z=z>>8;a[O+1|0]=z;z=z>>8;a[O+2|0]=z;z=z>>8;a[O+3|0]=z;O=(d[J+2|0]|0)<<3;U=c[P>>2]|0;S=843112+(O<<1)|0;V=U+h|0;R=S|0;T=S+4|0;S=e[T>>1]|e[T+2>>1]<<16;T=V|0;z=e[R>>1]|e[R+2>>1]<<16;a[T]=z;z=z>>8;a[T+1|0]=z;z=z>>8;a[T+2|0]=z;z=z>>8;a[T+3|0]=z;T=V+4|0;z=S;a[T]=z;z=z>>8;a[T+1|0]=z;z=z>>8;a[T+2|0]=z;z=z>>8;a[T+3|0]=z;T=843112+((O|4)<<1)|0;O=U+i|0;U=T|0;S=T+4|0;T=e[S>>1]|e[S+2>>1]<<16;S=O|0;z=e[U>>1]|e[U+2>>1]<<16;a[S]=z;z=z>>8;a[S+1|0]=z;z=z>>8;a[S+2|0]=z;z=z>>8;a[S+3|0]=z;S=O+4|0;z=T;a[S]=z;z=z>>8;a[S+1|0]=z;z=z>>8;a[S+2|0]=z;z=z>>8;a[S+3|0]=z;S=(d[J+3|0]|0)<<3;T=c[P>>2]|0;P=843112+(S<<1)|0;O=T+o|0;U=P|0;V=P+4|0;P=e[V>>1]|e[V+2>>1]<<16;V=O|0;z=e[U>>1]|e[U+2>>1]<<16;a[V]=z;z=z>>8;a[V+1|0]=z;z=z>>8;a[V+2|0]=z;z=z>>8;a[V+3|0]=z;V=O+4|0;z=P;a[V]=z;z=z>>8;a[V+1|0]=z;z=z>>8;a[V+2|0]=z;z=z>>8;a[V+3|0]=z;V=843112+((S|4)<<1)|0;S=T+p|0;T=V|0;P=V+4|0;V=e[P>>1]|e[P+2>>1]<<16;P=S|0;z=e[T>>1]|e[T+2>>1]<<16;a[P]=z;z=z>>8;a[P+1|0]=z;z=z>>8;a[P+2|0]=z;z=z>>8;a[P+3|0]=z;P=S+4|0;z=V;a[P]=z;z=z>>8;a[P+1|0]=z;z=z>>8;a[P+2|0]=z;z=z>>8;a[P+3|0]=z;Q=J+4|0}else if((N|0)==16384){N=c[b+(I<<2)>>2]|0;P=c[27435976+((d[J]|0)<<2)>>2]|0;m$(N|0,N+P|0,16)|0;m$(N+g|0,N+(P+g)|0,16)|0;m$(N+h|0,N+(P+h)|0,16)|0;m$(N+i|0,N+(P+i)|0,16)|0;Q=J+1|0}else{Q=J}P=F+1|0;if(P>>>0<4>>>0){y=L;A=M;F=P;G=Q;H=I}else{break}}B=Q;C=f+5|0;D=M;E=L}else if((x|0)==16384){H=c[b+(f<<2)>>2]|0;G=c[27435976+((d[t]|0)<<2)>>2]|0;m$(H|0,H+G|0,32)|0;m$(H+g|0,H+(G+g)|0,32)|0;m$(H+h|0,H+(G+h)|0,32)|0;m$(H+i|0,H+(G+i)|0,32)|0;m$(H+j|0,H+(G+j)|0,32)|0;m$(H+k|0,H+(G+k)|0,32)|0;m$(H+l|0,H+(G+l)|0,32)|0;m$(H+m|0,H+(G+m)|0,32)|0;B=t+1|0;C=f+5|0;D=w;E=v}else if((x|0)==0){B=t;C=f+5|0;D=w;E=v}else{B=t;C=f;D=w;E=v}if((c[b+(C<<2)>>2]|0)==0){break}else{q=B;f=C;r=D;s=E}}return}function Nl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=d;d=b;b=a;while(1){a=c[7852]|0;f=c[25208296+(a*4292|0)>>2]|0;g=c[25208324+(a*4292|0)>>2]|0;h=c[25208328+(a*4292|0)>>2]|0;i=c[25208200+(a*4292|0)>>2]|0;j=c[25208204+(a*4292|0)>>2]|0;k=(h|0)>(j|0)?j:h;do{if((b|0)>-1){if((e+b|0)>(((g|0)>(i|0)?i:g)|0)){break}if(!((e+d|0)<=(k|0)&(d|0)>-1&(e|0)<9)){break}h=da(c[25208288+(a*4292|0)>>2]|0,(j-k>>1)+d|0)|0;l=(da(c[25208316+(a*4292|0)>>2]|0,b)|0)+h|0;h=25208280+(a*4292|0)|0;m=c[h>>2]|0;c[27437e3+(m<<2)>>2]=25272776+l;c[h>>2]=m+1;c[27568072+(m<<2)>>2]=25272776+(l+f)}}while(0);if((e|0)==4){break}f=e>>1;Nl(b,d,f);a=f+b|0;Nl(a,d,f);k=f+d|0;Nl(b,k,f);e=f;d=k;b=a}return}function Ol(){do{if((c[5720394]|0)==1){if((Jn()|0)!=1){break}return}}while(0);Ns(20492144);c[5123038]=c[5174];n$(21803160,0,16)|0;In((Jn()|0)^1);return}function Pl(){n$(21803160|0,0|0,16|0)|0;return}function Ql(){eo(27,1,wf()|0);eo(27,0,wf()|0);return}function Rl(){c[6924794]=-1;c[6924792]=0;Ns(27699184);c[6924798]=30;In((Jn()|0)^4);return}function Sl(){c[6924794]=-1;c[6924792]=1;Ns(27699184);c[6924798]=25;In((Jn()|0)^4);return}function Tl(){var a=0,b=0,d=0;a=i;b=oD(c[6924864]|0,4,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0)|0;i=d;c[6924794]=b;if(b>>>0>63>>>0){c[6924794]=-1;i=a;return}else{c[6924792]=0;Ns(27699184);c[6924798]=30;In((Jn()|0)^4);i=a;return}}function Ul(){var a=0,b=0,d=0;a=i;b=oD(c[6924864]|0,5,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0)|0;i=d;c[6924794]=b;if(b>>>0>63>>>0){c[6924794]=-1;i=a;return}else{c[6924792]=0;Ns(27699184);c[6924798]=30;In((Jn()|0)^4);i=a;return}}function Vl(){var a=0;a=0;do{b[21737588+(a<<1)>>1]=1824;a=a+1|0;}while((a|0)<32768);c[5450783]=c[5450781];return}function Wl(){c[5450783]=c[5450781];return}function Xl(){var d=0,e=0,f=0,g=0,h=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;d=i;i=i+64|0;e=d|0;if((nr()|0)!=2){Sr(117904,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;g=64;h=0;i=d;return}TB(e,or(1)|0,64);WB(e,64,169e3);j=Zt(e)|0;if((j|0)==0){Sr(143192,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;g=64;h=0;i=d;return}Sr(127568,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;f=c[5450781]|0;e=c[5450785]|0;k=f-e|0;l=c[5450784]|0;a:do{if((l|0)>0){m=k;while(1){n=m+1|0;if((m|0)>=(f|0)){o=n;break a}p=da(l,(n|0)%(e|0)|0)|0;q=0;while(1){r=q+1|0;if(!((b[21737588+(q+p<<1)>>1]&255)==32)){s=q;break}if((r|0)<(l|0)){q=r}else{s=r;break}}if((s|0)==(l|0)){m=n}else{o=n;break}}}else{m=k;while(1){q=m+1|0;if((m|0)<(f|0)&(l|0)==0){m=q}else{o=q;break}}}}while(0);f=l+2|0;k=ss(f)|0;a[k+(l+1)|0]=0;if((o|0)<=(c[5450781]|0)){l=o;while(1){o=c[5450784]|0;s=da(o,(l|0)%(c[5450785]|0)|0)|0;b:do{if((o|0)>0){e=0;do{a[k+e|0]=b[21737588+(e+s<<1)>>1];e=e+1|0;t=c[5450784]|0;}while((e|0)<(t|0));if((t|0)>0){u=t}else{break}do{u=u-1|0;e=k+u|0;if((a[e]|0)!=32){break b}a[e]=0;}while((u|0)>0)}}while(0);XB(k,f,117040);gu(k,o$(k|0)|0,j)|0;if((l|0)<(c[5450781]|0)){l=l+1|0}else{break}}}ts(k);Yt(j);g=64;h=0;i=d;return}function Yl(a,b){a=a|0;b=b|0;if((b|0)!=2){return}Ss(28378584,63248,0,1);return}function Zl(){var a=0;c[5434392]=gt(55496,49016,0)|0;c[5434394]=gt(44576,49016,0)|0;Ns(20492144);c[5123038]=c[5174];a=0;do{Ns(20462608+(a*268|0)|0);c[20462616+(a*268|0)>>2]=c[5174];a=a+1|0;}while((a|0)<32);go();Gr(183560,348);Gr(179864,174);Gr(175192,152);Gr(171624,44);Gr(168744,354);Gr(165280,16);Gr(162144,314);Gr(159144,30);Hr(159144,46);return}function _l(){Ir(183560);Ir(179864);Ir(175192);Ir(171624);Ir(168744);Ir(165280);Ir(162144);Ir(159144);return}function $l(d){d=d|0;var e=0,f=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;e=(kC(d,156696,12)|0)==0;f=e?d+12|0:d;d=c[5811726]|0;do{if((d|0)!=0){if((c[d+32>>2]|0)==0){break}return}}while(0);if((c[5434396]|0)==0){g[5450797]=1.0;g[5450796]=1.0;g[5450795]=1.0;g[5450794]=1.0;c[5450784]=78;c[5450785]=420;d=0;do{b[21737588+(d<<1)>>1]=1824;d=d+1|0;}while((d|0)<32768);n$(21803160,0,16)|0;d=(c[5450785]|0)-1|0;c[5450781]=d;c[5450783]=d;c[5434396]=1}d=a[f]|0;a:do{if(!(d<<24>>24==0)){h=7;i=f;j=d;while(1){k=(h&65535)<<8;l=i;m=j;b:while(1){n=m&255;do{if((l|0)!=0&m<<24>>24==94){o=l+1|0;p=a[o]|0;if(p<<24>>24==0){break}if((Fe(p<<24>>24|0)|0)!=0){break b}}}while(0);p=c[5450784]|0;c:do{if((p|0)>0){q=0;while(1){r=q+1|0;if((a[l+q|0]|0)<33){s=q;break c}if((r|0)<(p|0)){q=r}else{s=r;break}}}else{s=0}}while(0);do{if((s|0)==(p|0)){t=p}else{if(((c[5450782]|0)+s|0)<(p|0)){t=p;break}q=c[5450781]|0;do{if((q|0)>-1){if(e){c[21803160+(((q|0)%4|0)<<2)>>2]=0;break}else{c[21803160+(((q|0)%4|0)<<2)>>2]=c[5497082];break}}}while(0);c[5450782]=0;q=c[5450783]|0;r=c[5450781]|0;if((q|0)==(r|0)){c[5450783]=q+1}q=r+1|0;c[5450781]=q;r=c[5450784]|0;if((r|0)<=0){t=r;break}b[21737588+((da((q|0)%(c[5450785]|0)|0,r)|0)<<1)>>1]=1824;r=c[5450784]|0;if((r|0)>1){u=1;v=r}else{t=r;break}while(1){b[21737588+((da((c[5450781]|0)%(c[5450785]|0)|0,v)|0)+u<<1)>>1]=1824;r=u+1|0;q=c[5450784]|0;if((r|0)<(q|0)){u=r;v=q}else{t=q;break}}}}while(0);p=l+1|0;do{if((n|0)==10){q=c[5450781]|0;do{if((q|0)>-1){if(e){c[21803160+(((q|0)%4|0)<<2)>>2]=0;break}else{c[21803160+(((q|0)%4|0)<<2)>>2]=c[5497082];break}}}while(0);c[5450782]=0;q=c[5450783]|0;r=c[5450781]|0;if((q|0)==(r|0)){c[5450783]=q+1}q=r+1|0;c[5450781]=q;r=c[5450784]|0;if((r|0)<=0){break}b[21737588+((da((q|0)%(c[5450785]|0)|0,r)|0)<<1)>>1]=1824;r=c[5450784]|0;if((r|0)>1){w=1;x=r}else{break}do{b[21737588+((da((c[5450781]|0)%(c[5450785]|0)|0,x)|0)+w<<1)>>1]=1824;w=w+1|0;x=c[5450784]|0;}while((w|0)<(x|0))}else if((n|0)==13){c[5450782]=0}else{r=da(t,(c[5450781]|0)%(c[5450785]|0)|0)|0;b[21737588+(r+(c[5450782]|0)<<1)>>1]=n|k;r=(c[5450782]|0)+1|0;c[5450782]=r;if((r|0)<(c[5450784]|0)){break}r=c[5450781]|0;do{if((r|0)>-1){if(e){c[21803160+(((r|0)%4|0)<<2)>>2]=0;break}else{c[21803160+(((r|0)%4|0)<<2)>>2]=c[5497082];break}}}while(0);c[5450782]=0;r=c[5450783]|0;q=c[5450781]|0;if((r|0)==(q|0)){c[5450783]=r+1}r=q+1|0;c[5450781]=r;q=c[5450784]|0;if((q|0)<=0){break}b[21737588+((da((r|0)%(c[5450785]|0)|0,q)|0)<<1)>>1]=1824;q=c[5450784]|0;if((q|0)>1){y=1;z=q}else{break}do{b[21737588+((da((c[5450781]|0)%(c[5450785]|0)|0,z)|0)+y<<1)>>1]=1824;y=y+1|0;z=c[5450784]|0;}while((y|0)<(z|0))}}while(0);n=a[p]|0;if(n<<24>>24==0){break a}else{l=p;m=n}}m=l+2|0;k=a[m]|0;if(k<<24>>24==0){break}else{h=a[o]&7;i=m;j=k}}}}while(0);o=c[5450781]|0;if(!((o|0)>-1)){return}if(e){e=(o|0)%4|0;c[21803160+(((e|0)<1?3:e-1|0)<<2)>>2]=0;return}else{c[21803160+(((o|0)%4|0)<<2)>>2]=c[5497082];return}}function am(){var a=0,d=0,e=0,f=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;vk[c[4917260]&511](20816);a=0;d=(c[5450781]|0)-3|0;e=7;while(1){do{if((d|0)<0){f=e;h=a}else{i=c[21803160+(((d|0)%4|0)<<2)>>2]|0;if((i|0)==0){f=e;h=a;break}if(+((c[5497082]|0)-i|0)>+g[(c[5434392]|0)+28>>2]*1.0e3){f=e;h=a;break}i=c[5450784]|0;j=da(i,(d|0)%(c[5450785]|0)|0)|0;if((c[5811799]|0)==5){k=i}else{if(((Jn()|0)&10|0)!=0){f=e;h=a;break}k=c[5450784]|0}if((k|0)>0){i=0;l=e;m=k;while(1){n=21737588+(i+j<<1)|0;o=b[n>>1]|0;p=o<<16>>16;if((p&255|0)==32){q=l;r=m}else{s=p>>>8&7;if((s|0)==(l|0)){t=l;u=o}else{vk[c[4917260]&511](20704+(s<<4)|0);t=s;u=b[n>>1]|0}Kp(~~(+((i<<3)+8|0)+(+(c[(c[5811768]|0)+32>>2]|0)+ +g[5450786])),a,u&255);q=t;r=c[5450784]|0}n=i+1|0;if((n|0)<(r|0)){i=n;l=q;m=r}else{v=q;break}}}else{v=e}f=v;h=a+16|0}}while(0);if((d|0)<(c[5450781]|0)){a=h;d=d+1|0;e=f}else{break}}vk[c[4917260]&511](0);if(((Jn()|0)&10|0)!=0){return}if(((Jn()|0)&4|0)==0){return}if((c[6924792]|0)==0){Mp(8,h,152528,1.0,0);w=80}else{Mp(8,h,154456,1.0,0);w=160}Cn(27699184,w,h,624-w|0,1,1);return}function bm(d){d=+d;var e=0,f=0,h=0,j=0,k=0,l=0.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=i;i=i+16|0;f=e|0;h=c[5720348]|0;j=~~(+(h|0)*d);if((j|0)<1){i=e;return}k=(j|0)>(h|0)?h:j;g[5450786]=0.0;Hp(21803144,0,0,0);j=~~(d*480.0);if((j|0)<1){l=0.0}else{d=+(j|0);Jp(0.0,0.0,640.0,d,c[5720356]|0);l=d}j=f|0;g[j>>2]=1.0;g[f+4>>2]=0.0;g[f+8>>2]=0.0;g[f+12>>2]=1.0;Ip(0.0,l,640.0,2.0,j);vk[c[4917260]&511](20720);j=k-16|0;f=0;do{Kp(-8-(32-f<<3)+(c[5720347]|0)|0,j,a[150216+f|0]|0);f=f+1|0;}while((f|0)<32);c[5450789]=k;f=(k-8|0)/8|0;j=k-48|0;h=c[5450783]|0;if((h|0)==(c[5450781]|0)){m=f;n=j;o=h}else{vk[c[4917260]&511](20720);if((c[5450784]|0)>0){h=0;do{Kp(~~(+(h<<3|8|0)+ +g[5450786]),j,94);h=h+4|0;}while((h|0)<(c[5450784]|0))}m=f-1|0;n=k-64|0;o=c[5450783]|0}k=(((c[5450782]|0)==0)<<31>>31)+o|0;vk[c[4917260]&511](20816);a:do{if(!((m|0)<1|(k|0)<0)){o=n;f=1;h=k;j=7;while(1){p=c[5450785]|0;do{if(((c[5450781]|0)-h|0)<(p|0)){q=c[5450784]|0;r=da(q,(h|0)%(p|0)|0)|0;if((q|0)>0){s=0;t=j;u=q}else{v=j;break}while(1){q=21737588+(s+r<<1)|0;w=b[q>>1]|0;x=w<<16>>16;if((x&255|0)==32){y=t;z=u}else{A=x>>>8&7;if((A|0)==(t|0)){B=t;C=w}else{vk[c[4917260]&511](20704+(A<<4)|0);B=A;C=b[q>>1]|0}Kp(~~(+((s<<3)+8|0)+ +g[5450786]),o,C&255);y=B;z=c[5450784]|0}q=s+1|0;if((q|0)<(z|0)){s=q;t=y;u=z}else{v=y;break}}}else{v=j}}while(0);if((f|0)>=(m|0)|(h|0)<1){break a}o=o-16|0;f=f+1|0;h=h-1|0;j=v}}}while(0);if((c[5720394]|0)==1){D=22}else{if(((Jn()|0)&1|0)!=0){D=22}}if((D|0)==22){D=(c[5450789]|0)-32|0;vk[c[4917260]&511](21803176);Kp(~~(+g[5450786]+8.0),D,93);Bn(20492144,~~(+g[5450786]+16.0),D,616,1,1)}vk[c[4917260]&511](0);i=e;return}function cm(){var a=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;a=i;i=i+65536|0;d=a|0;e=c[5450784]|0;if((e|0)!=78){c[5450784]=78;f=c[5450785]|0;c[5450785]=420;h=(f|0)>420;m$(d|0,21737588,65536)|0;j=0;do{b[21737588+(j<<1)>>1]=1824;j=j+1|0;}while((j|0)<32768);j=h?420:f;h=(e|0)>78?78:e;if((j|0)>0&(h|0)>0){k=0;l=0;while(1){m=l+f|0;n=l-1|0;o=0;do{p=b[d+((da((m+(c[5450781]|0)|0)%(f|0)|0,e)|0)+o<<1)>>1]|0;b[21737588+((da(n+(c[5450785]|0)|0,c[5450784]|0)|0)+o<<1)>>1]=p;o=o+1|0;}while((o|0)<(h|0));o=k+1|0;n=~k;if((o|0)<(j|0)){k=o;l=n}else{break}}}n$(21803160,0,16)|0;l=(c[5450785]|0)-1|0;c[5450781]=l;c[5450783]=l}do{if((c[5720394]|0)==1){if(((Jn()|0)&10|0)!=0){break}bm(1.0);i=a;return}}while(0);q=+g[5450787];if(q!=0.0){bm(q);i=a;return}if((c[5720394]|0)!=8){i=a;return}am();i=a;return}function dm(){var a=0,b=0.0,d=0.0,e=0.0;a=((Jn()|0)&1|0)==0;b=a?0.0:.5;g[5450788]=b;d=+g[5450787];if(b>2]*+(c[5497083]|0)*.001;g[5450787]=e;if(!(b>e)){return}g[5450787]=b;return}if(!(b>d)){return}e=d+ +g[(c[5434394]|0)+28>>2]*+(c[5497083]|0)*.001;g[5450787]=e;if(!(b(b|0)?b:a;return}function gm(){var a=0,b=0;a=c[5450785]|0;c[5450783]=a;b=c[5450781]|0;if((b-a|0)<(a|0)){return}c[5450783]=b+1-a;return}function hm(){if((c[(c[5458838]|0)+32>>2]|0)==0){return}Ns(20492144);n$(21803160,0,16)|0;In((Jn()|0)&-2);g[5450788]=0.0;g[5450787]=0.0;return}function im(){c[5115426]=1;return}function jm(){c[5115426]=0;if((c[(c[5811754]|0)+32>>2]|0)!=0){return}g[5817470]=-0.0- +(c[5811812]|0)*.0054931640625;return}function km(){g[5817470]=-0.0- +(c[5811812]|0)*.0054931640625;return}function lm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;e=or(1)|0;if((a[e]|0)==0){f=-1}else{f=oj(e|0)|0}e=b|0;g=c[e>>2]|0;if((f|0)==(g|0)){i=d;return}h=b+4|0;j=c[h>>2]|0;if((f|0)==(j|0)){i=d;return}do{if((g|0)==0){c[e>>2]=f}else{if((j|0)==0){c[h>>2]=f;break}Sr(59392,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;i=d;return}}while(0);f=b+16|0;if((c[f>>2]|0)!=0){i=d;return}c[b+8>>2]=oj(or(2)|0)|0;c[f>>2]=1;c[b+20>>2]=1;i=d;return}function mm(b){b=b|0;var d=0,e=0,f=0,g=0;d=or(1)|0;if((a[d]|0)==0){c[b+4>>2]=0;c[b>>2]=0;c[b+16>>2]=0;return}e=oj(d|0)|0;d=b|0;f=c[d>>2]|0;do{if((f|0)==(e|0)){c[d>>2]=0;if((c[b+4>>2]|0)==0){break}return}else{g=b+4|0;if((c[g>>2]|0)!=(e|0)){return}c[g>>2]=0;if((f|0)==0){break}return}}while(0);f=b+16|0;c[f>>2]=0;e=oj(or(2)|0)|0;if((e|0)==0){d=b+12|0;c[d>>2]=(c[d>>2]|0)+((c[5145160]|0)>>>1)}else{d=b+12|0;c[d>>2]=e-(c[b+8>>2]|0)+(c[d>>2]|0)}c[f>>2]=0;return}function nm(){lm(20461544);return}function om(){mm(20461544);return}function pm(){lm(20461856);return}function qm(){mm(20461856);return}function rm(){lm(20461760);return}function sm(){mm(20461760);return}function tm(){lm(20461616);return}function um(){mm(20461616);return}function vm(){lm(20461832);return}function wm(){mm(20461832);return}function xm(){lm(20462264);return}function ym(){mm(20462264);return}function zm(){lm(20461712);return}function Am(){mm(20461712);return}function Bm(){lm(20461736);return}function Cm(){mm(20461736);return}function Dm(){lm(20461672);return}function Em(){mm(20461672);return}function Fm(){lm(20461648);return}function Gm(){mm(20461648);return}function Hm(){lm(20461592);return}function Im(){mm(20461592);return}function Jm(){lm(20461568);return}function Km(){mm(20461568);return}function Lm(){lm(20461880);return}function Mm(){mm(20461880);return}function Nm(){lm(20461904);return}function Om(){mm(20461904);return}function Pm(){lm(20461928);return}function Qm(){mm(20461928);return}function Rm(){lm(20461952);return}function Sm(){mm(20461952);return}function Tm(){lm(20461976);return}function Um(){mm(20461976);return}function Vm(){lm(20462e3);return}function Wm(){mm(20462e3);return}function Xm(){lm(20462024);return}function Ym(){mm(20462024);return}function Zm(){lm(20462048);return}function _m(){mm(20462048);return}function $m(){lm(20462072);return}function an(){mm(20462072);return}function bn(){lm(20462096);return}function cn(){mm(20462096);return}function dn(){lm(20462120);return}function en(){mm(20462120);return}function fn(){lm(20462144);return}function gn(){mm(20462144);return}function hn(){lm(20462168);return}function jn(){mm(20462168);return}function kn(){lm(20462192);return}function ln(){mm(20462192);return}function mn(){lm(20462216);return}function nn(){mm(20462216);return}function on(){var a=0.0,b=0.0,d=0,e=0,f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0;a=+(c[5497081]|0)*.001;if((c[5115402]|0)==0){b=a}else{b=a*+g[(c[5811776]|0)+28>>2]}a=b;if((c[5115396]|0)==0){d=(c[5769178]|0)+28|0;b=a*+g[d>>2];e=c[5115407]|0;c[5115407]=0;if((c[5115408]|0)==0){f=e}else{h=c[5115406]|0;i=c[5457514]|0;if((h|0)==0){j=i}else{j=e-h+i|0}c[5115406]=i;f=j}k=+((c[5145160]|0)>>>0>>>0);l=+(f|0)/k;m=l<0.0?0.0:l;l=+g[5817471]-b*(m>1.0?1.0:m);g[5817471]=l;m=a*+g[d>>2];d=c[5115443]|0;c[5115443]=0;if((c[5115444]|0)==0){n=d}else{f=c[5115442]|0;j=c[5457514]|0;if((f|0)==0){o=j}else{o=d-f+j|0}c[5115442]=j;n=o}b=+(n|0)/k;k=b<0.0?0.0:b;g[5817471]=l+m*(k>1.0?1.0:k)}n=(c[5803206]|0)+28|0;k=a*+g[n>>2];o=c[5115431]|0;c[5115431]=0;if((c[5115432]|0)==0){p=o}else{j=c[5115430]|0;f=c[5457514]|0;if((j|0)==0){q=f}else{q=o-j+f|0}c[5115430]=f;p=q}m=+((c[5145160]|0)>>>0>>>0);l=+(p|0)/m;b=l<0.0?0.0:l;l=+g[5817470]-k*(b>1.0?1.0:b);g[5817470]=l;b=a*+g[n>>2];n=c[5115437]|0;c[5115437]=0;if((c[5115438]|0)==0){r=n;s=+(r|0);t=s/m;u=t<0.0;v=u?0.0:t;w=v>1.0;x=w?1.0:v;y=b*x;z=l+y;g[5817470]=z;return}p=c[5115436]|0;q=c[5457514]|0;if((p|0)==0){A=q}else{A=n-p+q|0}c[5115436]=q;r=A;s=+(r|0);t=s/m;u=t<0.0;v=u?0.0:t;w=v>1.0;x=w?1.0:v;y=b*x;z=l+y;g[5817470]=z;return}function pn(b){b=b|0;var d=0,e=0,f=0,g=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.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.0,B=0.0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;d=(c[5115402]|0)==(c[(c[5802178]|0)+32>>2]|0);e=b+16|0;f=c[e>>2]|0;g=d?64.0:127.0;c[e>>2]=d?f|16:f&-17;if((c[5115396]|0)==0){h=0.0}else{f=c[5115407]|0;c[5115407]=0;if((c[5115408]|0)==0){i=f}else{d=c[5115406]|0;e=c[5457514]|0;if((d|0)==0){j=e}else{j=f-d+e|0}c[5115406]=e;i=j}k=+((c[5145160]|0)>>>0>>>0);l=+(i|0)/k;m=l<0.0?0.0:l;i=~~(g*(m>1.0?1.0:m)+0.0);j=c[5115443]|0;c[5115443]=0;if((c[5115444]|0)==0){n=j}else{e=c[5115442]|0;d=c[5457514]|0;if((e|0)==0){o=d}else{o=j-e+d|0}c[5115442]=d;n=o}m=+(n|0)/k;k=m<0.0?0.0:m;h=+(~~(+(i|0)-g*(k>1.0?1.0:k))|0)}i=c[5115415]|0;c[5115415]=0;if((c[5115416]|0)==0){p=i}else{n=c[5115414]|0;o=c[5457514]|0;if((n|0)==0){q=o}else{q=i-n+o|0}c[5115414]=o;p=q}k=+((c[5145160]|0)>>>0>>>0);m=+(p|0)/k;l=m<0.0?0.0:m;p=~~(h+g*(l>1.0?1.0:l));q=c[5115421]|0;c[5115421]=0;if((c[5115422]|0)==0){r=q}else{o=c[5115420]|0;n=c[5457514]|0;if((o|0)==0){s=n}else{s=q-o+n|0}c[5115420]=n;r=s}l=+(r|0)/k;h=l<0.0?0.0:l;r=~~(+(p|0)-g*(h>1.0?1.0:h));p=c[5115389]|0;c[5115389]=0;if((c[5115390]|0)==0){t=p}else{s=c[5115388]|0;n=c[5457514]|0;if((s|0)==0){u=n}else{u=p-s+n|0}c[5115388]=n;t=u}h=+(t|0)/k;l=h<0.0?0.0:h;t=~~(g*(l>1.0?1.0:l)+0.0);u=c[5115467]|0;c[5115467]=0;if((c[5115468]|0)==0){v=u}else{n=c[5115466]|0;s=c[5457514]|0;if((n|0)==0){w=s}else{w=u-n+s|0}c[5115466]=s;v=w}l=+(v|0)/k;h=l<0.0?0.0:l;v=~~(+(t|0)-g*(h>1.0?1.0:h));t=c[5115461]|0;c[5115461]=0;if((c[5115462]|0)==0){x=t}else{w=c[5115460]|0;s=c[5457514]|0;if((w|0)==0){y=s}else{y=t-w+s|0}c[5115460]=s;x=y}h=+(x|0)/k;l=h<0.0?0.0:h;x=~~(g*(l>1.0?1.0:l)+0.0);y=c[5115569]|0;c[5115569]=0;if((c[5115570]|0)==0){z=y;A=+(z|0);B=A/k;C=B<0.0;D=C?0.0:B;E=D>1.0;F=E?1.0:D;G=g*F;H=+(x|0);I=H-G;J=~~I;K=tB(J)|0;L=b+21|0;a[L]=K;M=tB(r)|0;N=b+22|0;a[N]=M;O=tB(v)|0;P=b+23|0;a[P]=O;return}s=c[5115568]|0;w=c[5457514]|0;if((s|0)==0){Q=w}else{Q=y-s+w|0}c[5115568]=w;z=Q;A=+(z|0);B=A/k;C=B<0.0;D=C?0.0:B;E=D>1.0;F=E?1.0:D;G=g*F;H=+(x|0);I=H-G;J=~~I;K=tB(J)|0;L=b+21|0;a[L]=K;M=tB(r)|0;N=b+22|0;a[N]=M;O=tB(v)|0;P=b+23|0;a[P]=O;return}function qn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=i;if(((Jn()|0)&2|0)!=0){oD(c[236124]|0,4,(e=i,i=i+16|0,c[e>>2]=a,c[e+8>>2]=b,e)|0)|0;i=e;i=d;return}if(((Jn()|0)&8|0)==0){f=23267864+(c[5816970]<<2)|0;c[f>>2]=(c[f>>2]|0)+a;f=23267872+(c[5816970]<<2)|0;c[f>>2]=(c[f>>2]|0)+b;i=d;return}else{oD(c[6924864]|0,7,(e=i,i=i+16|0,c[e>>2]=a,c[e+8>>2]=b,e)|0)|0;i=e;i=d;return}}function rn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;d=i;if(a>>>0>15>>>0){Ur(1,161072,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e}else{c[23267884+(a<<2)>>2]=b;i=d;return}}function sn(b){b=b|0;var d=0,e=0,f=0,h=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0;d=c[5115402]|0;if((d|0)==(c[(c[5802178]|0)+32>>2]|0)){e=b+16|0;c[e>>2]=c[e>>2]|16;f=c[5115402]|0}else{f=d}h=+(c[5497081]|0)*.001;if((f|0)==0){i=h}else{i=h*+g[(c[5811776]|0)+28>>2]}h=i;if((c[5115396]|0)==0){g[5817471]=+g[5817471]+h*+g[(c[5114340]|0)+28>>2]*+(c[23267884+(c[(c[5114338]|0)+32>>2]<<2)>>2]|0);f=b+22|0;a[f]=tB(~~(+g[(c[5114348]|0)+28>>2]*+(c[23267884+(c[(c[5114346]|0)+32>>2]<<2)>>2]|0))+(a[f]|0)|0)|0}else{g[5817471]=+g[5817471]+h*+g[(c[5114348]|0)+28>>2]*+(c[23267884+(c[(c[5114346]|0)+32>>2]<<2)>>2]|0);f=b+22|0;a[f]=tB(~~(+g[(c[5114340]|0)+28>>2]*+(c[23267884+(c[(c[5114338]|0)+32>>2]<<2)>>2]|0))+(a[f]|0)|0)|0}if((c[5115426]|0)==0){g[5817470]=+g[5817470]+h*+g[(c[5114352]|0)+28>>2]*+(c[23267884+(c[(c[5114350]|0)+32>>2]<<2)>>2]|0);f=b+21|0;a[f]=tB(~~(+g[(c[5114356]|0)+28>>2]*+(c[23267884+(c[(c[5114354]|0)+32>>2]<<2)>>2]|0))+(a[f]|0)|0)|0;j=b+23|0;k=a[j]|0;l=k<<24>>24;m=c[5114344]|0;n=m+28|0;o=+g[n>>2];p=c[5114342]|0;q=p+32|0;r=c[q>>2]|0;s=23267884+(r<<2)|0;t=c[s>>2]|0;u=+(t|0);v=o*u;w=~~v;x=w+l|0;y=tB(x)|0;a[j]=y;return}else{g[5817470]=+g[5817470]+h*+g[(c[5114356]|0)+28>>2]*+(c[23267884+(c[(c[5114354]|0)+32>>2]<<2)>>2]|0);f=b+21|0;a[f]=tB(~~(+g[(c[5114352]|0)+28>>2]*+(c[23267884+(c[(c[5114350]|0)+32>>2]<<2)>>2]|0))+(a[f]|0)|0)|0;j=b+23|0;k=a[j]|0;l=k<<24>>24;m=c[5114344]|0;n=m+28|0;o=+g[n>>2];p=c[5114342]|0;q=p+32|0;r=c[q>>2]|0;s=23267884+(r<<2)|0;t=c[s>>2]|0;u=+(t|0);v=o*u;w=~~v;x=w+l|0;y=tB(x)|0;a[j]=y;return}}function tn(b){b=b|0;var d=0,e=0,f=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0;d=i;if((c[(c[4954646]|0)+32>>2]|0)==0){e=c[5816970]|0;f=+(c[23267864+(e<<2)>>2]|0);j=+(c[23267872+(e<<2)>>2]|0);k=e}else{f=+((c[5816967]|0)+(c[5816966]|0)|0)*.5;j=+((c[5816969]|0)+(c[5816968]|0)|0)*.5;k=c[5816970]|0}e=k^1;c[5816970]=e;c[23267864+(e<<2)>>2]=0;c[23267872+(c[5816970]<<2)>>2]=0;if(f==0.0&j==0.0){i=d;return}l=+g[(c[5811734]|0)+28>>2];do{if(l!=0.0){if((c[(c[5811730]|0)+32>>2]|0)==0){m=+T(j*j+f*f);n=m/+((c[5145160]|0)>>>0>>>0);m=+g[(c[5802176]|0)+28>>2]+l*n;o=f*m;p=j*m;if((c[(c[5769196]|0)+32>>2]|0)==0){q=o;r=p;break}Sr(137472,(s=i,i=i+16|0,h[s>>3]=n,h[s+8>>3]=m,s)|0);i=s;q=o;r=p;break}p=+S(+f);o=+((c[5145160]|0)>>>0>>>0);m=p/o;p=+S(+j)/o;o=+g[(c[5811732]|0)+28>>2];n=+U(+(m/o),+l);t=+U(+(p/o),+l);u=+g[(c[5802176]|0)+28>>2];if(f<0.0){v=-0.0-n}else{v=n}w=u*(f+v*o);if(j<0.0){x=-0.0-t}else{x=t}y=u*(j+x*o);if((c[(c[5769196]|0)+32>>2]|0)==0){q=w;r=y;break}Sr(124552,(s=i,i=i+32|0,h[s>>3]=m,h[s+8>>3]=p,h[s+16>>3]=n,h[s+24>>3]=t,s)|0);i=s;q=w;r=y}else{y=+g[(c[5802176]|0)+28>>2];q=f*y;r=j*y}}while(0);j=+g[5816988];f=q*j;q=r*j;if((c[5115396]|0)==0){g[5817471]=+g[5817471]-f*+g[(c[4954638]|0)+28>>2]}else{s=b+22|0;a[s]=tB(~~(+(a[s]|0)+f*+g[(c[4954640]|0)+28>>2]))|0}if((c[5115426]|0)==0){if((c[(c[5811754]|0)+32>>2]|0)==0|(c[5115396]|0)!=0){z=23}else{z=22}}else{if((c[5115396]|0)==0){z=22}else{z=23}}if((z|0)==22){g[5817470]=+g[5817470]+q*+g[(c[4954642]|0)+28>>2];i=d;return}else if((z|0)==23){z=b+21|0;a[z]=tB(~~(+(a[z]|0)-q*+g[(c[4954644]|0)+28>>2]))|0;i=d;return}}function un(b){b=b|0;var d=0,e=0,f=0.0,h=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0;d=i;i=i+24|0;e=d|0;f=+g[5817470];h=+g[5817471];on();j=e;n$(j|0,0,24)|0;k=e+16|0;l=0;m=0;while(1){n=20461900+(l*24|0)|0;if((c[20461896+(l*24|0)>>2]|0)==0){if((c[n>>2]|0)==0){o=m}else{p=4}}else{p=4}if((p|0)==4){p=0;q=m|1<>2]=q;o=q}c[n>>2]=0;n=l+1|0;if((n|0)<15){l=n;m=o}else{break}}if((Jn()|0)==0){r=o}else{m=o|2;c[k>>2]=m;r=m}do{if((c[7094374]|0)!=0){if((Jn()|0)!=0){break}c[k>>2]=r|2048}}while(0);pn(e);tn(e);sn(e);s=+g[5817470];do{if(s-f>90.0){t=f+90.0;g[5817470]=t;u=t}else{if(!(f-s>90.0)){u=s;break}t=f+-90.0;g[5817470]=t;u=t}}while(0);a[e+20|0]=c[5816987];c[e>>2]=c[5811918];c[e+4>>2]=~~(u*65536.0/360.0)&65535;u=+g[5817471];c[e+8>>2]=~~(u*65536.0/360.0)&65535;c[e+12>>2]=~~(+g[5817472]*65536.0/360.0)&65535;e=c[(c[5811760]|0)+32>>2]|0;if((e|0)==1){r=~~(u-h);Op(+(((r|0)>-1?r:-r|0)|0));v=c[(c[5811760]|0)+32>>2]|0;p=17}else if((e|0)!=0){v=e;p=17}do{if((p|0)==17){if((v|0)!=2){break}e=~~(+g[5817470]-f);Op(+(((e|0)>-1?e:-e|0)|0))}}while(0);v=b;c[v>>2]=c[j>>2];c[v+4>>2]=c[j+4>>2];c[v+8>>2]=c[j+8>>2];c[v+12>>2]=c[j+12>>2];c[v+16>>2]=c[j+16>>2];c[v+20>>2]=c[j+20>>2];i=d;return}function vn(){var b=0,d=0;b=c[5720394]|0;if((c[5759928]|0)!=0|(b|0)==9){d=0;return d|0}do{if((a[23030144]|0)==0){if((b-7|0)>>>0<2>>>0){break}if(((c[5497082]|0)-(c[5720396]|0)|0)<1e3){d=0}else{break}return d|0}else{if(((c[5497082]|0)-(c[5720396]|0)|0)<50){d=0}else{break}return d|0}}while(0);if((c[5760966]|0)==2){d=1;return d|0}do{if((c[(c[5811740]|0)+32>>2]|0)!=0){if((dw(23043864)|0)==0){break}else{d=1}return d|0}}while(0);b=c[(c[5811738]|0)+32>>2]|0;do{if((b|0)<15){kt(113616,104152)}else{if((b|0)<=125){break}kt(113616,60952)}}while(0);d=((c[5497082]|0)-(c[23269504+(((c[5760976]|0)+31&31)*12|0)>>2]|0)|0)>=(1e3/(c[(c[5811738]|0)+32>>2]|0)|0|0)|0;return d|0}function wn(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=i;i=i+16440|0;b=a|0;d=a+16416|0;if((c[5759928]|0)!=0|(c[5720394]|0)==9){e=16384;f=0;i=a;return}n$(d|0,0,24)|0;hv(b,a+32|0,16384);kv(b);sv(b,c[5817473]|0);sv(b,c[5738076]|0);sv(b,c[5738077]|0);g=c[5721691]|0;if((g|0)<(c[5721690]|0)){h=g;do{h=h+1|0;pv(b,4);sv(b,h);tv(b,22886768+((h&63)<<10)|0);}while((h|0)<(c[5721690]|0))}h=c[(c[5811722]|0)+32>>2]|0;do{if((h|0)<0){kt(53536,47680)}else{if((h|0)<=5){break}kt(53536,43584)}}while(0);h=c[5760976]|0;g=(c[5817373]|0)-(c[23269496+((h+31-(c[(c[5811722]|0)+32>>2]|0)&31)*12|0)>>2]|0)|0;if((g|0)>32){Sr(182656,(j=i,i=i+1|0,i=i+7&-8,c[j>>2]=0,j)|0);i=j;k=32;l=11}else{if((g|0)>0){k=g;l=11}else{m=d;n=h}}if((l|0)==11){if((c[(c[5769194]|0)+32>>2]|0)!=0){Sr(178528,(j=i,i=i+8|0,c[j>>2]=k,j)|0);i=j}do{if((c[5811783]|0)==0|(c[(c[5811728]|0)+32>>2]|0)!=0|(c[5759929]|0)!=0){l=15}else{if((c[5738076]|0)!=(c[5811786]|0)){l=15;break}pv(b,2)}}while(0);if((l|0)==15){pv(b,3)}pv(b,k);l=c[5738076]^c[5721689];h=l^(Cv(22952316+((c[5738077]&63)<<10)|0,32)|0);if((k|0)>0){l=1-k|0;g=d;o=0;while(1){p=23267956+((l+o+(c[5817373]|0)&63)*24|0)|0;Dv(b,h,g,p);q=o+1|0;if((q|0)<(k|0)){g=p;o=q}else{r=p;break}}}else{r=d}m=r;n=c[5760976]|0}r=n&31;n=c[5497082]|0;c[23269504+(r*12|0)>>2]=n;c[23269500+(r*12|0)>>2]=c[m>>2];c[23269496+(r*12|0)>>2]=c[5817373];c[5720396]=n;if((c[(c[5769194]|0)+32>>2]|0)!=0){Sr(174264,(j=i,i=i+8|0,c[j>>2]=c[b+20>>2],j)|0);i=j}wp(23043856,b);e=16384;f=0;i=a;return}function xn(){var a=0,b=0,d=0,e=0,f=0;a=i;i=i+24|0;b=a|0;d=c[5720394]|0;if(d>>>0<5>>>0){i=a;return}do{if((c[(c[5451068]|0)+32>>2]|0)!=0){if((c[(c[453916]|0)+32>>2]|0)==0){break}if((c[(c[5811720]|0)+32>>2]|0)==0){break}i=a;return}}while(0);e=b;if(!(d>>>0<7>>>0)){d=c[5457514]|0;f=d-(c[4938808]|0)|0;c[5145160]=f>>>0>200>>>0?200:f;c[4938808]=d;d=(c[5817373]|0)+1|0;c[5817373]=d;un(b);b=23267956+((d&63)*24|0)|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[b+16>>2]=c[e+16>>2];c[b+20>>2]=c[e+20>>2]}if((vn()|0)!=0){wn();i=a;return}if((c[(c[5769194]|0)+32>>2]|0)==0){i=a;return}Sr(171e3,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=a;return}function yn(){Gr(168e3,254);Gr(164384,234);Gr(161504,124);Gr(158624,300);Gr(156072,188);Gr(154032,48);Gr(152168,32);Gr(149840,42);Gr(147488,266);Gr(144952,196);Gr(142232,318);Gr(139912,232);Gr(137808,76);Gr(136288,214);Gr(134808,308);Gr(133248,224);Gr(133144,362);Gr(132104,164);Gr(130952,230);Gr(129616,22);Gr(128440,94);Gr(127176,360);Gr(125904,340);Gr(124896,358);Gr(124048,154);Gr(123248,258);Gr(122384,144);Gr(121592,258);Gr(120528,144);Gr(119104,198);Gr(117856,320);Gr(116824,98);Gr(115560,392);Gr(114280,136);Gr(113232,280);Gr(112272,222);Gr(111488,350);Gr(110784,334);Gr(109752,330);Gr(108352,278);Gr(107448,218);Gr(106504,238);Gr(105600,72);Gr(104840,228);Gr(103856,310);Gr(102992,192);Gr(102128,128);Gr(101304,380);Gr(100256,284);Gr(99024,200);Gr(64120,162);Gr(63256,370);Gr(62304,326);Gr(61504,208);Gr(60792,60);Gr(60024,116);Gr(59376,194);Gr(58904,328);Gr(58176,186);c[5811728]=gt(57096,47680,0)|0;c[5811760]=gt(56312,47680,0)|0;return}function zn(){Ir(168e3);Ir(164384);Ir(161504);Ir(158624);Ir(156072);Ir(154032);Ir(152168);Ir(149840);Ir(147488);Ir(144952);Ir(142232);Ir(139912);Ir(137808);Ir(136288);Ir(134808);Ir(133248);Ir(133144);Ir(132104);Ir(130952);Ir(129616);Ir(128440);Ir(127176);Ir(125904);Ir(124896);Ir(124048);Ir(123248);Ir(122384);Ir(121592);Ir(120528);Ir(119104);Ir(117856);Ir(116824);Ir(115560);Ir(114280);Ir(113232);Ir(112272);Ir(111488);Ir(110784);Ir(109752);Ir(108352);Ir(107448);Ir(106504);Ir(105600);Ir(104840);Ir(103856);Ir(102992);Ir(102128);Ir(101304);Ir(100256);Ir(99024);Ir(64120);Ir(63256);Ir(62304);Ir(61504);Ir(60792);Ir(60024);Ir(59376);Ir(58904);Ir(58176);return}function An(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;f=i;i=i+1040|0;l=f|0;m=f+1024|0;n=l|0;o=(c[b+8>>2]|0)-1|0;p=o$(b+12|0)|0;do{if((p|0)>(o|0)){q=b+4|0;r=c[q>>2]|0;if((r+o|0)<=(p|0)){s=r;break}r=p-o|0;t=(r|0)<0?0:r;c[q>>2]=t;s=t}else{s=0}}while(0);t=(s+o|0)>(p|0)?p-s|0:o;if((t|0)>1023){Ur(1,149960,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o}m$(n|0,b+12+s|0,t)|0;a[l+t|0]=0;o=(h|0)==8;if(o){g[m+12>>2]=1.0;g[m+8>>2]=1.0;g[m+4>>2]=1.0;p=m|0;g[p>>2]=1.0;Np(d,e,n,p,0,k)}else{Mp(d,e,n,1.0,k)}if((j|0)==0){u=1024;v=0;i=f;return}if((c[5497082]&256|0)!=0){u=1024;v=0;i=f;return}j=(c[5114334]|0)==0?10:11;k=(o$(n|0)|0)-t|0;if(o){Kp((k-s+(c[b>>2]|0)<<3)+d|0,e,j);u=1024;v=0;i=f;return}else{a[n]=j;a[l+1|0]=0;Mp((da(k-s+(c[b>>2]|0)|0,h)|0)+d|0,e,n,1.0,0);u=1024;v=0;i=f;return}}function Bn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;An(a,b,c,0,8,e,f);return}function Cn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;An(a,b,c,0,16,e,f);return}function Dn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if((d|0)==3){Ns(b);return}else if((d|0)==22){e=ve()|0;if((e|0)==0){return}f=o$(e|0)|0;if((f|0)>0){g=0;do{Dn(b,a[e+g|0]|0);g=g+1|0;}while((g|0)<(f|0))}es(e);return}else{e=o$(b+12|0)|0;if((d|0)==8){f=b|0;g=c[f>>2]|0;if((g|0)<=0){return}s$(g-1+(b+12)|0,b+12+g|0,e+1-g|0)|0;g=c[f>>2]|0;c[f>>2]=g-1;f=b+4|0;h=c[f>>2]|0;if((g|0)>(h|0)){return}c[f>>2]=h-1;return}else if((d|0)==5){c[b>>2]=e;c[b+4>>2]=e-(c[b+8>>2]|0);return}else if((d|0)==1){c[b>>2]=0;c[b+4>>2]=0;return}else{if((d|0)<32){return}do{if((c[5114334]|0)==0){if((e|0)==254){return}else{h=b|0;f=c[h>>2]|0;s$(f+1+(b+12)|0,b+12+f|0,e+1-f|0)|0;a[(c[h>>2]|0)+(b+12)|0]=d;f=(c[h>>2]|0)+1|0;c[h>>2]=f;i=f;break}}else{f=b|0;h=c[f>>2]|0;if((h|0)==254){return}else{a[b+12+h|0]=d;h=(c[f>>2]|0)+1|0;c[f>>2]=h;i=h;break}}}while(0);if((i|0)>=(c[b+8>>2]|0)){d=b+4|0;c[d>>2]=(c[d>>2]|0)+1}d=e+1|0;if((i|0)!=(d|0)){return}a[b+12+d|0]=0;return}}}function En(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;if(((d|0)==139|(d|0)==170)&(c[5113724]|0)!=0){e=ve()|0;if((e|0)==0){return}f=o$(e|0)|0;if((f|0)>0){g=0;do{Dn(b,a[e+g|0]|0);g=g+1|0;}while((g|0)<(f|0))}es(e);return}e=t$(d|0)|0;d=o$(b+12|0)|0;a:do{switch(e|0){case 140:{f=c[b>>2]|0;if((f|0)>=(d|0)){break a}s$(b+12+f|0,f+1+(b+12)|0,d-f|0)|0;break};case 135:{f=b|0;g=c[f>>2]|0;if((g|0)>=(d|0)){break a}c[f>>2]=g+1;break};case 134:{g=b|0;f=c[g>>2]|0;if((f|0)<=0){break a}c[g>>2]=f-1;break};case 143:{c[b>>2]=0;break};case 144:{c[b>>2]=d;break};case 139:{c[5114334]=(c[5114334]|0)==0;break};default:{}}}while(0);e=c[b>>2]|0;f=b+4|0;g=c[f>>2]|0;if((e|0)<(g|0)){c[f>>2]=e;return}h=c[b+8>>2]|0;if((e|0)<(h+g|0)|(e|0)>(d|0)){return}c[f>>2]=e+1-h;return}function Fn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+256|0;e=d|0;if((b|0)==108&(c[5113721]|0)!=0){qr(149848);i=d;return}if((b|0)==9){Vs(20492144);i=d;return}else if((b|0)==169|(b|0)==13){do{if((c[5720394]|0)!=8){f=a[20492156]|0;if((f<<24>>24|0)==0|(f<<24>>24|0)==92|(f<<24>>24|0)==47){break}f=e|0;TB(f,20492156,255);$B(20492156,256,149704,(g=i,i=i+8|0,c[g>>2]=f,g)|0)|0;i=g;c[5123036]=(c[5123036]|0)+1;}}while(0);Sr(149536,(g=i,i=i+8|0,c[g>>2]=20492156,g)|0);i=g;g=a[20492156]|0;if((g<<24>>24|0)==92|(g<<24>>24|0)==47){qr(20492157);qr(149304)}else if((g<<24>>24|0)==0){i=d;return}else{qr(148928);qr(20492156);qr(149304)}g=c[4939840]|0;m$(20462608+(((g|0)%32|0)*268|0)|0,20492144,268)|0;e=g+1|0;c[4939840]=e;c[5115650]=e;Ns(20492144);c[5123038]=c[5174];Gn();if((c[5720394]|0)!=1){i=d;return}Sp();i=d;return}else{e=(b|0)==184;do{if(!(e&(c[5113724]|0)!=0)){if((b|0)==161|(b|0)==132){break}g=(t$(b|0)|0)==112;if(g&(c[5113721]|0)!=0){break}g=(b|0)==183;do{if(!(g&(c[5113724]|0)!=0)){if((b|0)==167|(b|0)==133){break}f=(t$(b|0)|0)==110;h=(c[5113721]|0)!=0;if(f&h){break}if((b|0)==142){em();i=d;return}else if((b|0)==141){fm();i=d;return}else{if(e){em();if((c[5113721]|0)==0){i=d;return}em();em();i=d;return}if(g){fm();if((c[5113721]|0)==0){i=d;return}fm();fm();i=d;return}if((b|0)==143&h){gm();i=d;return}if((b|0)==144&h){Wl();i=d;return}else{En(20492144,b);i=d;return}}}}while(0);g=(c[5115650]|0)+1|0;c[5115650]=g;h=c[4939840]|0;if((g|0)<(h|0)){m$(20492144,20462608+(((g|0)%32|0)*268|0)|0,268)|0;i=d;return}else{c[5115650]=h;Ns(20492144);c[5123038]=c[5174];i=d;return}}}while(0);b=c[5115650]|0;if(((c[4939840]|0)-b|0)<32&(b|0)>0){e=b-1|0;c[5115650]=e;j=e}else{j=b}m$(20492144,20462608+(((j|0)%32|0)*268|0)|0,268)|0;i=d;return}}function Gn(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;a[21703776]=0;d=c[4939840]|0;e=(d-1|0)%32|0;f=d;while(1){d=20462620+(e*268|0)|0;if((a[d]|0)==0){g=f}else{h=o$(d|0)|0;if((h+13+(o$(21703776)|0)|0)>=1024){break}j=c[20462612+(e*268|0)>>2]|0;k=pC(142152,(l=i,i=i+32|0,c[l>>2]=c[20462608+(e*268|0)>>2],c[l+8>>2]=j,c[l+16>>2]=h,c[l+24>>2]=d,l)|0)|0;i=l;XB(21703776,1024,k);g=c[4939840]|0}k=(e+31|0)%32|0;if((k|0)==((g-1|0)%32|0|0)){break}else{e=k;f=g}}c[5425942]=o$(21703776)|0;g=Zt(142848)|0;if((g|0)==0){Sr(142080,(l=i,i=i+8|0,c[l>>2]=142848,l)|0);i=l;i=b;return}f=gu(21703776,c[5425942]|0,g)|0;if((f|0)<(c[5425942]|0)){Sr(142080,(l=i,i=i+8|0,c[l>>2]=142848,l)|0);i=l}Yt(g);i=b;return}function Hn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+1024|0;e=d|0;if((b|0)==27){f=c[5114336]|0;g=f&-5;if((f|0)!=(g|0)){c[7094374]=0;f=0;do{if(!((f|0)==335|(f|0)==175|(f|0)==129)){h=20453240+(f*12|0)|0;if((c[h>>2]|0)!=0){co(f,0)}c[h>>2]=0;c[20453244+(f*12|0)>>2]=0}f=f+1|0;}while((f|0)<341)}c[5114336]=g;Ns(27699184);j=1024;k=0;i=d;return}else if((b|0)==169|(b|0)==13){if((a[27699196]|0)!=0&(c[5720394]|0)==8){g=c[6924794]|0;do{if((g|0)==-1){if((c[6924792]|0)==0){$B(e,1024,148192,(l=i,i=i+8|0,c[l>>2]=27699196,l)|0)|0;i=l;break}else{$B(e,1024,148344,(l=i,i=i+8|0,c[l>>2]=27699196,l)|0)|0;i=l;break}}else{$B(e,1024,148592,(l=i,i=i+16|0,c[l>>2]=g,c[l+8>>2]=27699196,l)|0)|0;i=l}}while(0);io(e,0)}e=c[5114336]|0;l=e&-5;if((e|0)!=(l|0)){c[7094374]=0;e=0;do{if(!((e|0)==335|(e|0)==175|(e|0)==129)){g=20453240+(e*12|0)|0;if((c[g>>2]|0)!=0){co(e,0)}c[g>>2]=0;c[20453244+(e*12|0)>>2]=0}e=e+1|0;}while((e|0)<341)}c[5114336]=l;Ns(27699184);j=1024;k=0;i=d;return}else{En(27699184,b);j=1024;k=0;i=d;return}}function In(a){a=a|0;var b=0,d=0;if((c[5114336]|0)==(a|0)){c[5114336]=a;return}c[7094374]=0;b=0;do{if(!((b|0)==335|(b|0)==175|(b|0)==129)){d=20453240+(b*12|0)|0;if((c[d>>2]|0)!=0){co(b,0)}c[d>>2]=0;c[20453244+(b*12|0)>>2]=0}b=b+1|0;}while((b|0)<341);c[5114336]=a;return}function Jn(){return c[5114336]|0}function Kn(){return c[5114334]|0}function Ln(a){a=a|0;c[5114334]=a;return}function Mn(a){a=a|0;var b=0;if(a>>>0>340>>>0){b=0;return b|0}b=c[20453240+(a*12|0)>>2]|0;return b|0}function Nn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;a:do{if((b|0)==0){d=-1}else{e=a[b]|0;if(e<<24>>24==0){d=-1;break}if((a[b+1|0]|0)==0){d=t$(e<<24>>24|0)|0;break}if((o$(b|0)|0)==4){e=gC(b)|0;if((e|0)>-1){d=e;break}}e=c[3588]|0;if((e|0)==0){d=-1;break}else{f=14352;g=e}while(1){e=f+8|0;if((VB(b,g)|0)==0){break}h=c[e>>2]|0;if((h|0)==0){d=-1;break a}else{f=e;g=h}}d=c[f+4>>2]|0}}while(0);return d|0}function On(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;if((b|0)==-1){d=147808;return d|0}if(b>>>0>340>>>0){d=147608;return d|0}do{if((b-33|0)>>>0<94>>>0){if((b|0)==59|(b|0)==34){break}a[30195448]=b;a[30195449]=0;d=30195448;return d|0}}while(0);e=c[3588]|0;a:do{if((e|0)!=0){f=14352;g=e;while(1){h=f+8|0;if((c[f+4>>2]|0)==(b|0)){d=g;break}i=c[h>>2]|0;if((i|0)==0){break a}else{f=h;g=i}}return d|0}}while(0);e=b>>4;g=b&15;a[30195448]=48;a[30195449]=120;a[30195450]=((e|0)>9?87:48)+e;a[30195451]=g>>>0>9>>>0?g+87|0:g|48;a[30195452]=0;d=30195448;return d|0}function Pn(a,b){a=a|0;b=b|0;var d=0;if(a>>>0>340>>>0){return}d=20453248+(a*12|0)|0;a=c[d>>2]|0;if((a|0)!=0){es(a)}c[d>>2]=is(b)|0;c[5389062]=c[5389062]|1;return}function Qn(a){a=a|0;var b=0;if(a>>>0>340>>>0){b=28378656;return b|0}b=c[20453248+(a*12|0)>>2]|0;return b|0}function Rn(a){a=a|0;var b=0,d=0,e=0,f=0;if((a|0)==0){b=-1;return b|0}else{d=0}while(1){e=c[20453248+(d*12|0)>>2]|0;if((e|0)!=0){if((VB(a,e)|0)==0){b=d;f=5;break}}e=d+1|0;if((e|0)<341){d=e}else{b=-1;f=5;break}}if((f|0)==5){return b|0}return 0}function Sn(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;b=i;if((nr()|0)!=2){Sr(147192,(d=i,i=i+1|0,i=i+7&-8,c[d>>2]=0,d)|0);i=d;i=b;return}e=or(1)|0;a:do{if((e|0)!=0){f=a[e]|0;if(f<<24>>24==0){break}do{if((a[e+1|0]|0)==0){g=t$(f<<24>>24|0)|0;h=13}else{if((o$(e|0)|0)==4){j=gC(e)|0;if((j|0)>-1){k=j;break}}j=c[3588]|0;if((j|0)==0){break a}else{l=14352;m=j}while(1){j=l+8|0;if((VB(e,m)|0)==0){break}n=c[j>>2]|0;if((n|0)==0){break a}else{l=j;m=n}}g=c[l+4>>2]|0;h=13}}while(0);if((h|0)==13){if((g|0)==-1){break}else{k=g}}if(k>>>0>340>>>0){i=b;return}f=20453248+(k*12|0)|0;n=c[f>>2]|0;if((n|0)!=0){es(n)}c[f>>2]=is(28378656)|0;c[5389062]=c[5389062]|1;i=b;return}}while(0);k=or(1)|0;Sr(147064,(d=i,i=i+8|0,c[d>>2]=k,d)|0);i=d;i=b;return}function Tn(){var a=0,b=0,d=0;a=0;do{b=20453248+(a*12|0)|0;d=c[b>>2]|0;if((d|0)!=0){es(d);c[b>>2]=is(28378656)|0;c[5389062]=c[5389062]|1}a=a+1|0;}while((a|0)<341);return}function Un(){var b=0,d=0,e=0,f=0,g=0,h=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=i;i=i+1024|0;d=b|0;e=d|0;f=nr()|0;if((f|0)<2){Sr(146680,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;h=1024;j=0;i=b;return}k=or(1)|0;a:do{if((k|0)!=0){l=a[k]|0;if(l<<24>>24==0){break}do{if((a[k+1|0]|0)==0){m=t$(l<<24>>24|0)|0;n=13}else{if((o$(k|0)|0)==4){o=gC(k)|0;if((o|0)>-1){p=o;break}}o=c[3588]|0;if((o|0)==0){break a}else{q=14352;r=o}while(1){o=q+8|0;if((VB(k,r)|0)==0){break}s=c[o>>2]|0;if((s|0)==0){break a}else{q=o;r=s}}m=c[q+4>>2]|0;n=13}}while(0);if((n|0)==13){if((m|0)==-1){break}else{p=m}}if((f|0)!=2){a[e]=0;if((f|0)>2){l=f-1|0;s=2;do{p$(e|0,or(s)|0)|0;if((s|0)!=(l|0)){o=d+(o$(e|0)|0)|0;z=32;a[o]=z;z=z>>8;a[o+1|0]=z}s=s+1|0;}while((s|0)<(f|0))}if(p>>>0>340>>>0){h=1024;j=0;i=b;return}s=20453248+(p*12|0)|0;l=c[s>>2]|0;if((l|0)!=0){es(l)}c[s>>2]=is(e)|0;c[5389062]=c[5389062]|1;h=1024;j=0;i=b;return}s=c[20453248+(p*12|0)>>2]|0;do{if((s|0)!=0){if((a[s]|0)==0){break}b:do{if(p>>>0>340>>>0){t=147608}else{do{if((p-33|0)>>>0<94>>>0){if((p|0)==59|(p|0)==34){break}a[30195448]=p;a[30195449]=0;t=30195448;break b}}while(0);l=c[3588]|0;if((l|0)!=0){o=14352;u=l;while(1){l=o+8|0;if((c[o+4>>2]|0)==(p|0)){t=u;break b}v=c[l>>2]|0;if((v|0)==0){break}else{o=l;u=v}}}u=p>>4;o=p&15;a[30195448]=48;a[30195449]=120;a[30195450]=((u|0)>9?87:48)+u;a[30195451]=o>>>0>9>>>0?o+87|0:o|48;a[30195452]=0;t=30195448}}while(0);Sr(146368,(g=i,i=i+16|0,c[g>>2]=t,c[g+8>>2]=s,g)|0);i=g;h=1024;j=0;i=b;return}}while(0);c:do{if(p>>>0>340>>>0){w=147608}else{do{if((p-33|0)>>>0<94>>>0){if((p|0)==59|(p|0)==34){break}a[30195448]=p;a[30195449]=0;w=30195448;break c}}while(0);s=c[3588]|0;if((s|0)!=0){o=14352;u=s;while(1){s=o+8|0;if((c[o+4>>2]|0)==(p|0)){w=u;break c}v=c[s>>2]|0;if((v|0)==0){break}else{o=s;u=v}}}u=p>>4;o=p&15;a[30195448]=48;a[30195449]=120;a[30195450]=((u|0)>9?87:48)+u;a[30195451]=o>>>0>9>>>0?o+87|0:o|48;a[30195452]=0;w=30195448}}while(0);Sr(146088,(g=i,i=i+8|0,c[g>>2]=w,g)|0);i=g;h=1024;j=0;i=b;return}}while(0);w=or(1)|0;Sr(147064,(g=i,i=i+8|0,c[g>>2]=w,g)|0);i=g;h=1024;j=0;i=b;return}function Vn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;hu(b,145488,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;f=0;do{g=c[20453248+(f*12|0)>>2]|0;do{if((g|0)!=0){if((a[g]|0)==0){break}do{if((f-33|0)>>>0<94>>>0){if((f|0)==59|(f|0)==34){h=5;break}a[30195448]=f;a[30195449]=0;j=30195448}else{h=5}}while(0);a:do{if((h|0)==5){h=0;k=c[3588]|0;if((k|0)!=0){l=14352;m=k;while(1){k=l+8|0;if((c[l+4>>2]|0)==(f|0)){j=m;break a}n=c[k>>2]|0;if((n|0)==0){break}else{l=k;m=n}}}m=f>>4;l=f&15;a[30195448]=48;a[30195449]=120;a[30195450]=((m|0)>9?87:48)+m;a[30195451]=l>>>0>9>>>0?l+87|0:l|48;a[30195452]=0;j=30195448}}while(0);hu(b,145280,(e=i,i=i+16|0,c[e>>2]=j,c[e+8>>2]=g,e)|0);i=e}}while(0);f=f+1|0;}while((f|0)<341);i=d;return}function Wn(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;d=0;do{e=c[20453248+(d*12|0)>>2]|0;do{if((e|0)!=0){if((a[e]|0)==0){break}do{if((d-33|0)>>>0<94>>>0){if((d|0)==59|(d|0)==34){f=5;break}a[30195448]=d;a[30195449]=0;g=30195448}else{f=5}}while(0);a:do{if((f|0)==5){f=0;h=c[3588]|0;if((h|0)!=0){j=14352;k=h;while(1){h=j+8|0;if((c[j+4>>2]|0)==(d|0)){g=k;break a}l=c[h>>2]|0;if((l|0)==0){break}else{j=h;k=l}}}k=d>>4;j=d&15;a[30195448]=48;a[30195449]=120;a[30195450]=((k|0)>9?87:48)+k;a[30195451]=j>>>0>9>>>0?j+87|0:j|48;a[30195452]=0;g=30195448}}while(0);Sr(145120,(j=i,i=i+16|0,c[j>>2]=g,c[j+8>>2]=e,j)|0);i=j}}while(0);d=d+1|0;}while((d|0)<341);i=b;return}function Xn(a){a=a|0;var b=0,d=0,e=0;b=c[3588]|0;if((b|0)==0){return}else{d=0;e=b}do{vk[a&511](e);d=d+1|0;e=c[14352+(d<<3)>>2]|0;}while((e|0)!=0);return}function Yn(){Gr(144968,52);Hr(144968,126);Gr(144768,170);Hr(144768,184);Gr(144608,332);Gr(144320,394);return}function Zn(a,b){a=a|0;b=b|0;if((b|0)==2){if(!((yC(a,1,145712)|0)>>>0>a>>>0)){return}Os();return}if((b|0)<=2){return}b=yC(a,2,145712)|0;if(!(b>>>0>a>>>0)){return}Ts(b,1,1);return}function _n(a,b){a=a|0;b=b|0;if((b|0)!=2){return}if(!((yC(a,1,145712)|0)>>>0>a>>>0)){return}Os();return}function $n(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=i;i=i+2048|0;g=f|0;if((c[5720394]|0)==1&(c[5114336]|0)==0){h=1024;j=0;i=f;return}k=c[20453248+(b*12|0)>>2]|0;if((k|0)==0){h=1024;j=0;i=f;return}if((a[k]|0)==0){h=1024;j=0;i=f;return}TB(g,k,1024);k=(c[5114336]|0)==0;l=f+1024|0;m=(d|0)!=0?43:45;n=(d|0)==0;d=(c[5720394]|0)!=1&n;if(n){n=g;while(1){if((xb(a[n]|0)|0)==0){o=sg(n|0,59)|0;p=(o|0)!=0;if(p){a[o]=0}if((a[n]|0)==43&(k|d)){$B(l,1024,144e3,(q=i,i=i+32|0,c[q>>2]=m,c[q+8>>2]=n+1,c[q+16>>2]=b,c[q+24>>2]=e,q)|0)|0;i=q;qr(l);}if(p){r=o}else{break}}else{r=n}n=r+1|0}h=1024;j=0;i=f;return}else{s=g}while(1){if((xb(a[s]|0)|0)==0){g=sg(s|0,59)|0;r=(g|0)!=0;if(r){a[g]=0}a:do{if((a[s]|0)==43){if(!(k|d)){break}$B(l,1024,144e3,(q=i,i=i+32|0,c[q>>2]=m,c[q+8>>2]=s+1,c[q+16>>2]=b,c[q+24>>2]=e,q)|0)|0;i=q;qr(l);}else{do{if(!k){if((c[5114336]&1|0)!=0){break a}if((VB(s,141696)|0)==0){break}if((VB(s,141360)|0)!=0){break a}}}while(0);qr(s);qr(149304)}}while(0);if(r){t=g}else{break}}else{t=s}s=t+1|0}h=1024;j=0;i=f;return}function _CIN_RunCinematic$0(e){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,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,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,_=0,$=0,aa=0,ba=0,ca=0,da=0;f=c[e+65744>>2]|0;g=c[e+65752>>2]|0;h=c[e+65968>>2]|0;i=c[e+65976>>2]|0;j=c[e+65984>>2]|0;k=c[e+69136>>2]|0;a:do{if((c[25208344+(f*4292|0)>>2]|0)==0){if((j|0)==2){if((h|0)>0){l=g;m=0;n=843112;while(1){o=d[l+1|0]|0;p=d[l+2|0]|0;q=d[l+3|0]|0;r=d[l+4|0]|0;s=d[l+5|0]|0;t=c[29470176+(d[l]<<2)>>2]|0;u=c[29471200+(s<<2)>>2]|0;v=c[29473248+(r<<2)>>2]|0;w=c[29472224+(s<<2)>>2]|0;s=c[29474272+(r<<2)>>2]|0;r=(u+t>>9|0)<0?0:u+t>>9;x=(v+t+w>>8|0)<0?0:v+t+w>>8;y=(s+t>>9|0)<0?0:s+t>>9;b[n>>1]=((x|0)>63?2016:x<<5)+((r|0)>31?63488:r<<11)+((y|0)>31?31:y);y=c[29470176+(o<<2)>>2]|0;o=(y+u>>9|0)<0?0:y+u>>9;r=(y+(w+v|0)>>8|0)<0?0:y+(w+v|0)>>8;x=(y+s>>9|0)<0?0:y+s>>9;b[n+2>>1]=((r|0)>63?2016:r<<5)+((o|0)>31?63488:o<<11)+((x|0)>31?31:x);x=c[29470176+(p<<2)>>2]|0;p=(x+u>>9|0)<0?0:x+u>>9;o=(x+(w+v|0)>>8|0)<0?0:x+(w+v|0)>>8;r=(x+s>>9|0)<0?0:x+s>>9;b[n+4>>1]=((o|0)>63?2016:o<<5)+((p|0)>31?63488:p<<11)+((r|0)>31?31:r);r=c[29470176+(q<<2)>>2]|0;q=(r+u>>9|0)<0?0:r+u>>9;u=(r+(w+v|0)>>8|0)<0?0:r+(w+v|0)>>8;v=(r+s>>9|0)<0?0:r+s>>9;b[n+6>>1]=((u|0)>63?2016:u<<5)+((q|0)>31?63488:q<<11)+((v|0)>31?31:v);v=m+1|0;if((v|0)<(h|0)){l=l+6|0;m=v;n=n+8|0}else{break}}z=g+(h*6|0)|0}else{z=g}if((i|0)==0){k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}else{A=z;B=0;C=712040;D=187752}while(1){n=d[A]<<2;m=d[A+1|0]<<2;b[C>>1]=b[(843112+(n<<1)|0)>>1]|0;b[D>>1]=b[(843112+(n<<1)|0)>>1]|0;b[D+2>>1]=b[(843112+(n<<1)|0)>>1]|0;b[C+2>>1]=b[(843112+((n|1)<<1)|0)>>1]|0;b[D+4>>1]=b[(843112+((n|1)<<1)|0)>>1]|0;b[D+6>>1]=b[(843112+((n|1)<<1)|0)>>1]|0;b[C+4>>1]=b[(843112+(m<<1)|0)>>1]|0;b[D+8>>1]=b[(843112+(m<<1)|0)>>1]|0;b[D+10>>1]=b[(843112+(m<<1)|0)>>1]|0;b[C+6>>1]=b[(843112+((m|1)<<1)|0)>>1]|0;b[D+12>>1]=b[(843112+((m|1)<<1)|0)>>1]|0;b[D+14>>1]=b[(843112+((m|1)<<1)|0)>>1]|0;b[D+16>>1]=b[(843112+(n<<1)|0)>>1]|0;b[D+18>>1]=b[(843112+(n<<1)|0)>>1]|0;b[D+20>>1]=b[(843112+((n|1)<<1)|0)>>1]|0;b[D+22>>1]=b[(843112+((n|1)<<1)|0)>>1]|0;b[D+24>>1]=b[(843112+(m<<1)|0)>>1]|0;b[D+26>>1]=b[(843112+(m<<1)|0)>>1]|0;b[D+28>>1]=b[(843112+((m|1)<<1)|0)>>1]|0;b[D+30>>1]=b[(843112+((m|1)<<1)|0)>>1]|0;b[C+8>>1]=b[(843112+((n|2)<<1)|0)>>1]|0;b[D+32>>1]=b[(843112+((n|2)<<1)|0)>>1]|0;b[D+34>>1]=b[(843112+((n|2)<<1)|0)>>1]|0;b[C+10>>1]=b[(843112+((n|3)<<1)|0)>>1]|0;b[D+36>>1]=b[(843112+((n|3)<<1)|0)>>1]|0;b[D+38>>1]=b[(843112+((n|3)<<1)|0)>>1]|0;b[C+12>>1]=b[(843112+((m|2)<<1)|0)>>1]|0;b[D+40>>1]=b[(843112+((m|2)<<1)|0)>>1]|0;b[D+42>>1]=b[(843112+((m|2)<<1)|0)>>1]|0;b[C+14>>1]=b[(843112+((m|3)<<1)|0)>>1]|0;b[D+44>>1]=b[(843112+((m|3)<<1)|0)>>1]|0;b[D+46>>1]=b[(843112+((m|3)<<1)|0)>>1]|0;b[D+48>>1]=b[(843112+((n|2)<<1)|0)>>1]|0;b[D+50>>1]=b[(843112+((n|2)<<1)|0)>>1]|0;b[D+52>>1]=b[(843112+((n|3)<<1)|0)>>1]|0;b[D+54>>1]=b[(843112+((n|3)<<1)|0)>>1]|0;b[D+56>>1]=b[(843112+((m|2)<<1)|0)>>1]|0;b[D+58>>1]=b[(843112+((m|2)<<1)|0)>>1]|0;b[D+60>>1]=b[(843112+((m|3)<<1)|0)>>1]|0;b[D+62>>1]=b[(843112+((m|3)<<1)|0)>>1]|0;m=B+1|0;if((m|0)<(i|0)){A=A+2|0;B=m;C=C+16|0;D=D+64|0}else{k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}}}if((j|0)==4){if((h|0)>0){m=g;n=0;l=843112;while(1){v=d[m+1|0]|0;q=d[m+2|0]|0;u=d[m+3|0]|0;s=d[m+4|0]|0;r=d[m+5|0]|0;w=c[29470176+(d[m]<<2)>>2]|0;p=c[29471200+(r<<2)>>2]|0;o=c[29473248+(s<<2)>>2]|0;x=c[29472224+(r<<2)>>2]|0;r=c[29474272+(s<<2)>>2]|0;s=(p+w>>6|0)<0?0:p+w>>6;y=(o+w+x>>6|0)<0?0:o+w+x>>6;t=(r+w>>6|0)<0?0:r+w>>6;c[l>>2]=((y|0)>255?65280:y<<8)|((s|0)>255?-16776961:s|-16777216)|((t|0)>255?16711680:t<<16);t=c[29470176+(v<<2)>>2]|0;v=(t+p>>6|0)<0?0:t+p>>6;s=(t+(x+o|0)>>6|0)<0?0:t+(x+o|0)>>6;y=(t+r>>6|0)<0?0:t+r>>6;c[l+4>>2]=((s|0)>255?65280:s<<8)|((v|0)>255?-16776961:v|-16777216)|((y|0)>255?16711680:y<<16);y=c[29470176+(q<<2)>>2]|0;q=(y+p>>6|0)<0?0:y+p>>6;v=(y+(x+o|0)>>6|0)<0?0:y+(x+o|0)>>6;s=(y+r>>6|0)<0?0:y+r>>6;c[l+8>>2]=((v|0)>255?65280:v<<8)|((q|0)>255?-16776961:q|-16777216)|((s|0)>255?16711680:s<<16);s=c[29470176+(u<<2)>>2]|0;u=(s+p>>6|0)<0?0:s+p>>6;p=(s+(x+o|0)>>6|0)<0?0:s+(x+o|0)>>6;o=(s+r>>6|0)<0?0:s+r>>6;c[l+12>>2]=((p|0)>255?65280:p<<8)|((u|0)>255?-16776961:u|-16777216)|((o|0)>255?16711680:o<<16);o=n+1|0;if((o|0)<(h|0)){m=m+6|0;n=o;l=l+16|0}else{break}}E=g+(h*6|0)|0}else{E=g}if((i|0)==0){k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}else{F=E;G=0;H=712040;I=187752}while(1){l=d[F]<<2;n=d[F+1|0]<<2;c[H>>2]=c[(843112+(l<<2)|0)>>2];c[I>>2]=c[(843112+(l<<2)|0)>>2];c[I+4>>2]=c[(843112+(l<<2)|0)>>2];c[H+4>>2]=c[(843112+((l|1)<<2)|0)>>2];c[I+8>>2]=c[(843112+((l|1)<<2)|0)>>2];c[I+12>>2]=c[(843112+((l|1)<<2)|0)>>2];c[H+8>>2]=c[(843112+(n<<2)|0)>>2];c[I+16>>2]=c[(843112+(n<<2)|0)>>2];c[I+20>>2]=c[(843112+(n<<2)|0)>>2];c[H+12>>2]=c[(843112+((n|1)<<2)|0)>>2];c[I+24>>2]=c[(843112+((n|1)<<2)|0)>>2];c[I+28>>2]=c[(843112+((n|1)<<2)|0)>>2];c[I+32>>2]=c[(843112+(l<<2)|0)>>2];c[I+36>>2]=c[(843112+(l<<2)|0)>>2];c[I+40>>2]=c[(843112+((l|1)<<2)|0)>>2];c[I+44>>2]=c[(843112+((l|1)<<2)|0)>>2];c[I+48>>2]=c[(843112+(n<<2)|0)>>2];c[I+52>>2]=c[(843112+(n<<2)|0)>>2];c[I+56>>2]=c[(843112+((n|1)<<2)|0)>>2];c[I+60>>2]=c[(843112+((n|1)<<2)|0)>>2];c[H+16>>2]=c[(843112+((l|2)<<2)|0)>>2];c[I+64>>2]=c[(843112+((l|2)<<2)|0)>>2];c[I+68>>2]=c[(843112+((l|2)<<2)|0)>>2];c[H+20>>2]=c[(843112+((l|3)<<2)|0)>>2];c[I+72>>2]=c[(843112+((l|3)<<2)|0)>>2];c[I+76>>2]=c[(843112+((l|3)<<2)|0)>>2];c[H+24>>2]=c[(843112+((n|2)<<2)|0)>>2];c[I+80>>2]=c[(843112+((n|2)<<2)|0)>>2];c[I+84>>2]=c[(843112+((n|2)<<2)|0)>>2];c[H+28>>2]=c[(843112+((n|3)<<2)|0)>>2];c[I+88>>2]=c[(843112+((n|3)<<2)|0)>>2];c[I+92>>2]=c[(843112+((n|3)<<2)|0)>>2];c[I+96>>2]=c[(843112+((l|2)<<2)|0)>>2];c[I+100>>2]=c[(843112+((l|2)<<2)|0)>>2];c[I+104>>2]=c[(843112+((l|3)<<2)|0)>>2];c[I+108>>2]=c[(843112+((l|3)<<2)|0)>>2];c[I+112>>2]=c[(843112+((n|2)<<2)|0)>>2];c[I+116>>2]=c[(843112+((n|2)<<2)|0)>>2];c[I+120>>2]=c[(843112+((n|3)<<2)|0)>>2];c[I+124>>2]=c[(843112+((n|3)<<2)|0)>>2];n=G+1|0;if((n|0)<(i|0)){F=F+2|0;G=n;H=H+32|0;I=I+128|0}else{k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}}}else if((j|0)!=1){k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}if((h|0)>0){n=g;l=1;m=843112;o=f;while(1){a[m]=a[(c[25208320+(o*4292|0)>>2]|0)+(d[n]|0)|0]|0;a[m+1|0]=a[(c[25208320+((c[7852]|0)*4292|0)>>2]|0)+(d[n+1|0]|0)|0]|0;a[m+2|0]=a[(c[25208320+((c[7852]|0)*4292|0)>>2]|0)+(d[n+2|0]|0)|0]|0;a[m+3|0]=a[(c[25208320+((c[7852]|0)*4292|0)>>2]|0)+(d[n+3|0]|0)|0]|0;if((l|0)>=(h|0)){break}n=n+6|0;l=l+1|0;m=m+4|0;o=c[7852]|0}J=g+(h*6|0)|0}else{J=g}if((i|0)==0){k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}else{K=J;L=0;M=712040;N=187752}while(1){o=d[K]<<1;m=d[K+1|0]<<1;a[M]=a[843112+(o<<1)|0]|0;a[N]=a[843112+(o<<1)|0]|0;a[N+1|0]=a[843112+(o<<1)|0]|0;l=(843112+(o<<1)|0)+1|0;a[M+1|0]=a[l]|0;a[N+2|0]=a[l]|0;a[N+3|0]=a[l]|0;a[M+2|0]=a[843112+(m<<1)|0]|0;a[N+4|0]=a[843112+(m<<1)|0]|0;a[N+5|0]=a[843112+(m<<1)|0]|0;n=(843112+(m<<1)|0)+1|0;a[M+3|0]=a[n]|0;a[N+6|0]=a[n]|0;a[N+7|0]=a[n]|0;a[N+8|0]=a[843112+(o<<1)|0]|0;a[N+9|0]=a[843112+(o<<1)|0]|0;a[N+10|0]=a[l]|0;a[N+11|0]=a[l]|0;a[N+12|0]=a[843112+(m<<1)|0]|0;a[N+13|0]=a[843112+(m<<1)|0]|0;a[N+14|0]=a[n]|0;a[N+15|0]=a[n]|0;a[M+4|0]=a[843112+((o|1)<<1)|0]|0;a[N+16|0]=a[843112+((o|1)<<1)|0]|0;a[N+17|0]=a[843112+((o|1)<<1)|0]|0;n=(843112+((o|1)<<1)|0)+1|0;a[M+5|0]=a[n]|0;a[N+18|0]=a[n]|0;a[N+19|0]=a[n]|0;a[M+6|0]=a[843112+((m|1)<<1)|0]|0;a[N+20|0]=a[843112+((m|1)<<1)|0]|0;a[N+21|0]=a[843112+((m|1)<<1)|0]|0;l=(843112+((m|1)<<1)|0)+1|0;a[M+7|0]=a[l]|0;a[N+22|0]=a[l]|0;a[N+23|0]=a[l]|0;a[N+24|0]=a[843112+((o|1)<<1)|0]|0;a[N+25|0]=a[843112+((o|1)<<1)|0]|0;a[N+26|0]=a[n]|0;a[N+27|0]=a[n]|0;a[N+28|0]=a[843112+((m|1)<<1)|0]|0;a[N+29|0]=a[843112+((m|1)<<1)|0]|0;a[N+30|0]=a[l]|0;a[N+31|0]=a[l]|0;l=L+1|0;if((l|0)<(i|0)){K=K+2|0;L=l;M=M+8|0;N=N+32|0}else{k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}}}if((j|0)==2){if((h|0)>0){l=g;m=0;n=843112;while(1){o=d[l]|0;u=d[l+1|0]|0;p=d[l+2|0]|0;r=d[l+3|0]|0;s=d[l+4|0]|0;x=d[l+5|0]|0;q=c[29470176+(o<<2)>>2]|0;v=c[(29471200+(x<<2)|0)>>2]|0;y=c[(29473248+(s<<2)|0)>>2]|0;t=c[(29472224+(x<<2)|0)>>2]|0;w=c[(29474272+(s<<2)|0)>>2]|0;O=(v+q>>9|0)<0?0:v+q>>9;P=(y+q+t>>8|0)<0?0:y+q+t>>8;Q=(w+q>>9|0)<0?0:w+q>>9;b[n>>1]=((P|0)>63?2016:P<<5)+((O|0)>31?63488:O<<11)+((Q|0)>31?31:Q);Q=c[29470176+(u<<2)>>2]|0;O=(Q+v>>9|0)<0?0:Q+v>>9;P=(Q+(t+y|0)>>8|0)<0?0:Q+(t+y|0)>>8;q=(Q+w>>9|0)<0?0:Q+w>>9;b[n+2>>1]=((P|0)>63?2016:P<<5)+((O|0)>31?63488:O<<11)+((q|0)>31?31:q);q=c[29470176+((p+(o*3|0)|0)>>>2<<2)>>2]|0;O=(q+v>>9|0)<0?0:q+v>>9;P=(q+(t+y|0)>>8|0)<0?0:q+(t+y|0)>>8;Q=(q+w>>9|0)<0?0:q+w>>9;b[n+4>>1]=((P|0)>63?2016:P<<5)+((O|0)>31?63488:O<<11)+((Q|0)>31?31:Q);Q=c[29470176+((r+(u*3|0)|0)>>>2<<2)>>2]|0;O=(Q+v>>9|0)<0?0:Q+v>>9;v=(Q+(t+y|0)>>8|0)<0?0:Q+(t+y|0)>>8;y=(Q+w>>9|0)<0?0:Q+w>>9;b[n+6>>1]=((v|0)>63?2016:v<<5)+((O|0)>31?63488:O<<11)+((y|0)>31?31:y);y=c[29470176+(((p*3|0)+o|0)>>>2<<2)>>2]|0;o=c[(29471200+(x<<2)|0)>>2]|0;O=c[(29473248+(s<<2)|0)>>2]|0;v=c[(29472224+(x<<2)|0)>>2]|0;x=c[(29474272+(s<<2)|0)>>2]|0;s=(o+y>>9|0)<0?0:o+y>>9;w=(O+y+v>>8|0)<0?0:O+y+v>>8;Q=(x+y>>9|0)<0?0:x+y>>9;b[n+8>>1]=((w|0)>63?2016:w<<5)+((s|0)>31?63488:s<<11)+((Q|0)>31?31:Q);Q=c[29470176+(((r*3|0)+u|0)>>>2<<2)>>2]|0;u=(Q+o>>9|0)<0?0:Q+o>>9;s=(Q+(v+O|0)>>8|0)<0?0:Q+(v+O|0)>>8;w=(Q+x>>9|0)<0?0:Q+x>>9;b[n+10>>1]=((s|0)>63?2016:s<<5)+((u|0)>31?63488:u<<11)+((w|0)>31?31:w);w=c[29470176+(p<<2)>>2]|0;p=(w+o>>9|0)<0?0:w+o>>9;u=(w+(v+O|0)>>8|0)<0?0:w+(v+O|0)>>8;s=(w+x>>9|0)<0?0:w+x>>9;b[n+12>>1]=((u|0)>63?2016:u<<5)+((p|0)>31?63488:p<<11)+((s|0)>31?31:s);s=c[29470176+(r<<2)>>2]|0;r=(s+o>>9|0)<0?0:s+o>>9;o=(s+(v+O|0)>>8|0)<0?0:s+(v+O|0)>>8;O=(s+x>>9|0)<0?0:s+x>>9;b[n+14>>1]=((o|0)>63?2016:o<<5)+((r|0)>31?63488:r<<11)+((O|0)>31?31:O);O=m+1|0;if((O|0)<(h|0)){l=l+6|0;m=O;n=n+16|0}else{break}}R=g+(h*6|0)|0}else{R=g}if((i|0)==0){k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}else{S=R;T=0;U=712040;V=187752}while(1){n=0;m=843112+(d[S]<<3<<1)|0;l=843112+(d[S+1|0]<<3<<1)|0;O=U;r=V;while(1){b[O>>1]=b[m>>1]|0;b[r>>1]=b[m>>1]|0;b[r+2>>1]=b[m>>1]|0;o=m+2|0;b[O+2>>1]=b[o>>1]|0;b[r+4>>1]=b[o>>1]|0;b[r+6>>1]=b[o>>1]|0;b[O+4>>1]=b[l>>1]|0;b[r+8>>1]=b[l>>1]|0;b[r+10>>1]=b[l>>1]|0;x=l+2|0;b[O+6>>1]=b[x>>1]|0;b[r+12>>1]=b[x>>1]|0;b[r+14>>1]=b[x>>1]|0;b[r+16>>1]=b[m>>1]|0;b[r+18>>1]=b[m>>1]|0;b[r+20>>1]=b[o>>1]|0;b[r+22>>1]=b[o>>1]|0;b[r+24>>1]=b[l>>1]|0;b[r+26>>1]=b[l>>1]|0;b[r+28>>1]=b[x>>1]|0;b[r+30>>1]=b[x>>1]|0;x=m+4|0;o=l+4|0;b[O+8>>1]=b[x>>1]|0;b[r+32>>1]=b[x>>1]|0;b[r+34>>1]=b[x>>1]|0;s=m+6|0;b[O+10>>1]=b[s>>1]|0;b[r+36>>1]=b[s>>1]|0;b[r+38>>1]=b[s>>1]|0;b[O+12>>1]=b[o>>1]|0;b[r+40>>1]=b[o>>1]|0;b[r+42>>1]=b[o>>1]|0;v=l+6|0;b[O+14>>1]=b[v>>1]|0;b[r+44>>1]=b[v>>1]|0;b[r+46>>1]=b[v>>1]|0;b[r+48>>1]=b[x>>1]|0;b[r+50>>1]=b[x>>1]|0;b[r+52>>1]=b[s>>1]|0;b[r+54>>1]=b[s>>1]|0;b[r+56>>1]=b[o>>1]|0;b[r+58>>1]=b[o>>1]|0;b[r+60>>1]=b[v>>1]|0;b[r+62>>1]=b[v>>1]|0;v=n+1|0;if((v|0)<2){n=v;m=m+8|0;l=l+8|0;O=O+16|0;r=r+64|0}else{break}}r=T+1|0;if((r|0)<(i|0)){S=S+2|0;T=r;U=U+32|0;V=V+128|0}else{k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}}}if((j|0)==4){if((h|0)>0){r=g;O=0;l=843112;while(1){m=d[r]|0;n=d[r+1|0]|0;v=d[r+2|0]|0;o=d[r+3|0]|0;s=d[r+4|0]|0;x=d[r+5|0]|0;p=c[29470176+(m<<2)>>2]|0;u=c[(29471200+(x<<2)|0)>>2]|0;w=c[(29473248+(s<<2)|0)>>2]|0;Q=c[(29472224+(x<<2)|0)>>2]|0;y=c[(29474272+(s<<2)|0)>>2]|0;t=(u+p>>6|0)<0?0:u+p>>6;P=(w+p+Q>>6|0)<0?0:w+p+Q>>6;q=(y+p>>6|0)<0?0:y+p>>6;c[l>>2]=((P|0)>255?65280:P<<8)|((t|0)>255?-16776961:t|-16777216)|((q|0)>255?16711680:q<<16);q=c[29470176+(n<<2)>>2]|0;t=(q+u>>6|0)<0?0:q+u>>6;P=(q+(Q+w|0)>>6|0)<0?0:q+(Q+w|0)>>6;p=(q+y>>6|0)<0?0:q+y>>6;c[l+4>>2]=((P|0)>255?65280:P<<8)|((t|0)>255?-16776961:t|-16777216)|((p|0)>255?16711680:p<<16);p=c[29470176+((v+(m*3|0)|0)>>>2<<2)>>2]|0;t=(p+u>>6|0)<0?0:p+u>>6;P=(p+(Q+w|0)>>6|0)<0?0:p+(Q+w|0)>>6;q=(p+y>>6|0)<0?0:p+y>>6;c[l+8>>2]=((P|0)>255?65280:P<<8)|((t|0)>255?-16776961:t|-16777216)|((q|0)>255?16711680:q<<16);q=c[29470176+((o+(n*3|0)|0)>>>2<<2)>>2]|0;t=(q+u>>6|0)<0?0:q+u>>6;u=(q+(Q+w|0)>>6|0)<0?0:q+(Q+w|0)>>6;w=(q+y>>6|0)<0?0:q+y>>6;c[l+12>>2]=((u|0)>255?65280:u<<8)|((t|0)>255?-16776961:t|-16777216)|((w|0)>255?16711680:w<<16);w=c[29470176+(((v*3|0)+m|0)>>>2<<2)>>2]|0;m=c[(29471200+(x<<2)|0)>>2]|0;t=c[(29473248+(s<<2)|0)>>2]|0;u=c[(29472224+(x<<2)|0)>>2]|0;x=c[(29474272+(s<<2)|0)>>2]|0;s=(m+w>>6|0)<0?0:m+w>>6;y=(t+w+u>>6|0)<0?0:t+w+u>>6;q=(x+w>>6|0)<0?0:x+w>>6;c[l+16>>2]=((y|0)>255?65280:y<<8)|((s|0)>255?-16776961:s|-16777216)|((q|0)>255?16711680:q<<16);q=c[29470176+(((o*3|0)+n|0)>>>2<<2)>>2]|0;n=(q+m>>6|0)<0?0:q+m>>6;s=(q+(u+t|0)>>6|0)<0?0:q+(u+t|0)>>6;y=(q+x>>6|0)<0?0:q+x>>6;c[l+20>>2]=((s|0)>255?65280:s<<8)|((n|0)>255?-16776961:n|-16777216)|((y|0)>255?16711680:y<<16);y=c[29470176+(v<<2)>>2]|0;v=(y+m>>6|0)<0?0:y+m>>6;n=(y+(u+t|0)>>6|0)<0?0:y+(u+t|0)>>6;s=(y+x>>6|0)<0?0:y+x>>6;c[l+24>>2]=((n|0)>255?65280:n<<8)|((v|0)>255?-16776961:v|-16777216)|((s|0)>255?16711680:s<<16);s=c[29470176+(o<<2)>>2]|0;o=(s+m>>6|0)<0?0:s+m>>6;m=(s+(u+t|0)>>6|0)<0?0:s+(u+t|0)>>6;t=(s+x>>6|0)<0?0:s+x>>6;c[l+28>>2]=((m|0)>255?65280:m<<8)|((o|0)>255?-16776961:o|-16777216)|((t|0)>255?16711680:t<<16);t=O+1|0;if((t|0)<(h|0)){r=r+6|0;O=t;l=l+32|0}else{break}}W=g+(h*6|0)|0}else{W=g}if((i|0)==0){k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}else{X=W;Y=0;Z=712040;_=187752}while(1){l=0;O=843112+(d[X]<<3<<2)|0;r=843112+(d[X+1|0]<<3<<2)|0;t=Z;o=_;while(1){c[t>>2]=c[O>>2];c[o>>2]=c[O>>2];c[o+4>>2]=c[O>>2];m=O+4|0;c[t+4>>2]=c[m>>2];c[o+8>>2]=c[m>>2];c[o+12>>2]=c[m>>2];c[t+8>>2]=c[r>>2];c[o+16>>2]=c[r>>2];c[o+20>>2]=c[r>>2];x=r+4|0;c[t+12>>2]=c[x>>2];c[o+24>>2]=c[x>>2];c[o+28>>2]=c[x>>2];c[o+32>>2]=c[O>>2];c[o+36>>2]=c[O>>2];c[o+40>>2]=c[m>>2];c[o+44>>2]=c[m>>2];c[o+48>>2]=c[r>>2];c[o+52>>2]=c[r>>2];c[o+56>>2]=c[x>>2];c[o+60>>2]=c[x>>2];x=O+8|0;m=r+8|0;c[t+16>>2]=c[x>>2];c[o+64>>2]=c[x>>2];c[o+68>>2]=c[x>>2];s=O+12|0;c[t+20>>2]=c[s>>2];c[o+72>>2]=c[s>>2];c[o+76>>2]=c[s>>2];c[t+24>>2]=c[m>>2];c[o+80>>2]=c[m>>2];c[o+84>>2]=c[m>>2];u=r+12|0;c[t+28>>2]=c[u>>2];c[o+88>>2]=c[u>>2];c[o+92>>2]=c[u>>2];c[o+96>>2]=c[x>>2];c[o+100>>2]=c[x>>2];c[o+104>>2]=c[s>>2];c[o+108>>2]=c[s>>2];c[o+112>>2]=c[m>>2];c[o+116>>2]=c[m>>2];c[o+120>>2]=c[u>>2];c[o+124>>2]=c[u>>2];u=l+1|0;if((u|0)<2){l=u;O=O+16|0;r=r+16|0;t=t+32|0;o=o+128|0}else{break}}o=Y+1|0;if((o|0)<(i|0)){X=X+2|0;Y=o;Z=Z+64|0;_=_+256|0}else{k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}}}else if((j|0)!=1){k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}if((h|0)>0){o=g;t=1;r=843112;O=f;while(1){l=d[o]|0;u=d[o+1|0]|0;m=d[o+2|0]|0;s=d[o+3|0]|0;a[r]=a[(c[25208320+(O*4292|0)>>2]|0)+l|0]|0;a[r+1|0]=a[(c[25208320+((c[7852]|0)*4292|0)>>2]|0)+u|0]|0;a[r+2|0]=a[(c[25208320+((c[7852]|0)*4292|0)>>2]|0)+((m+(l*3|0)|0)>>>2)|0]|0;a[r+3|0]=a[(c[25208320+((c[7852]|0)*4292|0)>>2]|0)+((s+(u*3|0)|0)>>>2)|0]|0;a[r+4|0]=a[(c[25208320+((c[7852]|0)*4292|0)>>2]|0)+(((m*3|0)+l|0)>>>2)|0]|0;a[r+5|0]=a[(c[25208320+((c[7852]|0)*4292|0)>>2]|0)+(((s*3|0)+u|0)>>>2)|0]|0;a[r+6|0]=a[(c[25208320+((c[7852]|0)*4292|0)>>2]|0)+m|0]|0;a[r+7|0]=a[(c[25208320+((c[7852]|0)*4292|0)>>2]|0)+s|0]|0;if((t|0)>=(h|0)){break}o=o+6|0;t=t+1|0;r=r+8|0;O=c[7852]|0}$=g+(h*6|0)|0}else{$=g}if((i|0)==0){k=142;c[e+69184>>2]=2;c[e+69188>>2]=13;break a}else{aa=$;ba=0;ca=712040;da=187752}while(1){O=0;r=843112+(d[aa+1|0]<<2<<1)|0;t=843112+(d[aa]<<2<<1)|0;o=ca;s=da;while(1){a[o]=a[t]|0;a[s]=a[t]|0;a[s+1|0]=a[t]|0;m=t+1|0;a[o+1|0]=a[m]|0;a[s+2|0]=a[m]|0;a[s+3|0]=a[m]|0;a[o+2|0]=a[r]|0;a[s+4|0]=a[r]|0;a[s+5|0]=a[r]|0;u=r+1|0;a[o+3|0]=a[u]|0;a[s+6|0]=a[u]|0;a[s+7|0]=a[u]|0;a[s+8|0]=a[t]|0;a[s+9|0]=a[t]|0;a[s+10|0]=a[m]|0;a[s+11|0]=a[m]|0;a[s+12|0]=a[r]|0;a[s+13|0]=a[r]|0;a[s+14|0]=a[u]|0;a[s+15|0]=a[u]|0;u=t+2|0;m=r+2|0;a[o+4|0]=a[u]|0;a[s+16|0]=a[u]|0;a[s+17|0]=a[u]|0;l=t+3|0;a[o+5|0]=a[l]|0;a[s+18|0]=a[l]|0;a[s+19|0]=a[l]|0;a[o+6|0]=a[m]|0;a[s+20|0]=a[m]|0;a[s+21|0]=a[m]|0;x=r+3|0;a[o+7|0]=a[x]|0;a[s+22|0]=a[x]|0;a[s+23|0]=a[x]|0;a[s+24|0]=a[u]|0;a[s+25|0]=a[u]|0;a[s+26|0]=a[l]|0;a[s+27|0]=a[l]|0;a[s+28|0]=a[m]|0;a[s+29|0]=a[m]|0;a[s+30|0]=a[x]|0;a[s+31|0]=a[x]|0;x=O+1|0;if((x|0)<2){O=x;r=r+4|0;t=t+4|0;o=o+8|0;s=s+32|0}else{break}}s=ba+1|0;if((s|0)<(i|0)){aa=aa+2|0;ba=s;ca=ca+16|0;da=da+64|0}else{k=142;break}}c[e+69184>>2]=1;break a}while(0);c[e+69136>>2]=k} + + + +function _W(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;b=a+20|0;d=a+440|0;if((c[b>>2]|0)!=204){vk[c[c[d>>2]>>2]&511](a);c[a+140>>2]=0;c[b>>2]=204}a:do{if((c[(c[d>>2]|0)+8>>2]|0)!=0){e=a+140|0;f=a+116|0;g=a+8|0;h=a+444|0;i=a;j=c[e>>2]|0;while(1){if(!(j>>>0<(c[f>>2]|0)>>>0)){vk[c[(c[d>>2]|0)+4>>2]&511](a);vk[c[c[d>>2]>>2]&511](a);c[e>>2]=0;if((c[(c[d>>2]|0)+8>>2]|0)==0){break a}else{j=0;continue}}k=c[g>>2]|0;if((k|0)==0){l=j}else{c[k+4>>2]=j;c[(c[g>>2]|0)+8>>2]=c[f>>2];vk[c[c[g>>2]>>2]&511](i);l=c[e>>2]|0}Yk[c[(c[h>>2]|0)+4>>2]&255](a,0,e,0);k=c[e>>2]|0;if((k|0)==(l|0)){m=0;break}else{j=k}}return m|0}}while(0);c[b>>2]=(c[a+68>>2]|0)!=0?206:205;m=1;return m|0}function $W(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+8|0;f=e|0;g=a+20|0;if((c[g>>2]|0)!=205){h=a|0;c[(c[h>>2]|0)+20>>2]=21;c[(c[h>>2]|0)+24>>2]=c[g>>2];vk[c[c[h>>2]>>2]&511](a)}h=a+140|0;g=c[h>>2]|0;j=a+116|0;if(!(g>>>0<(c[j>>2]|0)>>>0)){k=a|0;c[(c[k>>2]|0)+20>>2]=126;hk[c[(c[k>>2]|0)+4>>2]&255](a,-1);l=0;i=e;return l|0}k=a+8|0;m=c[k>>2]|0;if((m|0)!=0){c[m+4>>2]=g;c[(c[k>>2]|0)+8>>2]=c[j>>2];vk[c[c[k>>2]>>2]&511](a)}c[f>>2]=0;Yk[c[(c[a+444>>2]|0)+4>>2]&255](a,b,f,d);d=c[f>>2]|0;c[h>>2]=(c[h>>2]|0)+d;l=d;i=e;return l|0}function aX(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b+4|0;e=b;f=rk[c[c[d>>2]>>2]&63](e,1,188)|0;c[b+464>>2]=f;c[f>>2]=130;c[f+56>>2]=0;c[f+120>>2]=0;c[f+60>>2]=0;c[f+124>>2]=0;c[f+64>>2]=0;c[f+128>>2]=0;c[f+68>>2]=0;c[f+132>>2]=0;c[f+72>>2]=0;c[f+136>>2]=0;c[f+76>>2]=0;c[f+140>>2]=0;c[f+80>>2]=0;c[f+144>>2]=0;c[f+84>>2]=0;c[f+148>>2]=0;c[f+88>>2]=0;c[f+152>>2]=0;c[f+92>>2]=0;c[f+156>>2]=0;c[f+96>>2]=0;c[f+160>>2]=0;c[f+100>>2]=0;c[f+164>>2]=0;c[f+104>>2]=0;c[f+168>>2]=0;c[f+108>>2]=0;c[f+172>>2]=0;c[f+112>>2]=0;c[f+176>>2]=0;c[f+116>>2]=0;c[f+180>>2]=0;a[f+184|0]=113;if((c[b+224>>2]|0)==0){return}f=b+36|0;g=rk[c[c[d>>2]>>2]&63](e,1,c[f>>2]<<8)|0;c[b+160>>2]=g;if((c[f>>2]|0)>0){h=0}else{return}do{n$(g+(h<<8)|0,-1|0,256)|0;h=h+1|0;}while((h|0)<(c[f>>2]|0));return}function bX(a){a=a|0;var b=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;b=c[a+464>>2]|0;d=a+224|0;e=a+408|0;f=c[e>>2]|0;g=(f|0)==0;do{if((c[d>>2]|0)==0){do{if(g){if((c[a+416>>2]|0)!=0){h=36;break}if((c[a+420>>2]|0)!=0){h=36;break}i=c[a+412>>2]|0;if((i|0)>=64){break}if((i|0)!=(c[a+432>>2]|0)){h=36}}else{h=36}}while(0);if((h|0)==36){i=a|0;c[(c[i>>2]|0)+20>>2]=125;hk[c[(c[i>>2]|0)+4>>2]&255](a,-1)}c[b+4>>2]=128;j=a+336|0}else{i=a+412|0;k=c[i>>2]|0;do{if(g){if((k|0)==0){h=7}else{h=11}}else{if((k|0)<(f|0)){h=11;break}if((k|0)>(c[a+432>>2]|0)){h=11;break}if((c[a+336>>2]|0)==1){h=7}else{h=11}}}while(0);do{if((h|0)==7){k=c[a+416>>2]|0;if((k|0)==0){l=c[a+420>>2]|0}else{m=k-1|0;if((m|0)==(c[a+420>>2]|0)){l=m}else{h=11;break}}if((l|0)>13){h=11}}}while(0);if((h|0)==11){m=a|0;c[(c[m>>2]|0)+20>>2]=17;c[(c[m>>2]|0)+24>>2]=c[e>>2];c[(c[m>>2]|0)+28>>2]=c[i>>2];c[(c[m>>2]|0)+32>>2]=c[a+416>>2];c[(c[m>>2]|0)+36>>2]=c[a+420>>2];vk[c[c[m>>2]>>2]&511](a)}m=a+336|0;if((c[m>>2]|0)>0){k=a+160|0;n=a+416|0;o=a+420|0;p=a|0;q=a;r=0;while(1){s=c[(c[a+340+(r<<2)>>2]|0)+4>>2]|0;t=c[k>>2]|0;u=c[e>>2]|0;do{if((u|0)==0){v=0}else{if((c[t+(s<<8)>>2]|0)>=0){v=u;break}c[(c[p>>2]|0)+20>>2]=118;c[(c[p>>2]|0)+24>>2]=s;c[(c[p>>2]|0)+28>>2]=0;hk[c[(c[p>>2]|0)+4>>2]&255](q,-1);v=c[e>>2]|0}}while(0);a:do{if((v|0)<=(c[i>>2]|0)){u=v;while(1){w=t+(s<<8)+(u<<2)|0;x=c[w>>2]|0;if((c[n>>2]|0)!=(((x|0)<0?0:x)|0)){c[(c[p>>2]|0)+20>>2]=118;c[(c[p>>2]|0)+24>>2]=s;c[(c[p>>2]|0)+28>>2]=u;hk[c[(c[p>>2]|0)+4>>2]&255](q,-1)}c[w>>2]=c[o>>2];if((u|0)>=(c[i>>2]|0)){break a}u=u+1|0}}}while(0);s=r+1|0;if((s|0)<(c[m>>2]|0)){r=s}else{y=n;break}}}else{y=a+416|0}n=(c[e>>2]|0)==0;r=b+4|0;if((c[y>>2]|0)==0){if(n){c[r>>2]=136;j=m;break}else{c[r>>2]=88;j=m;break}}else{if(n){c[r>>2]=74;j=m;break}else{c[r>>2]=50;j=m;break}}}}while(0);if((c[j>>2]|0)<=0){z=b+8|0;c[z>>2]=0;A=b+12|0;c[A>>2]=0;B=b+16|0;c[B>>2]=-16;C=a+280|0;D=c[C>>2]|0;E=b+52|0;F=D;c[E>>2]=F;return}y=a|0;v=a;l=b+56|0;f=a+4|0;g=b+20|0;r=b+36|0;n=a+432|0;i=b+120|0;o=a+416|0;q=0;do{p=c[a+340+(q<<2)>>2]|0;k=c[d>>2]|0;do{if((k|0)==0){h=43}else{if((c[e>>2]|0)!=0){G=k;break}if((c[o>>2]|0)==0){h=43}else{G=k}}}while(0);if((h|0)==43){h=0;k=c[p+20>>2]|0;if(k>>>0>15>>>0){c[(c[y>>2]|0)+20>>2]=50;c[(c[y>>2]|0)+24>>2]=k;vk[c[c[y>>2]>>2]&511](v)}m=l+(k<<2)|0;k=c[m>>2]|0;if((k|0)==0){s=rk[c[c[f>>2]>>2]&63](v,1,64)|0;c[m>>2]=s;H=s}else{H=k}n$(H|0,0,64)|0;c[g+(q<<2)>>2]=0;c[r+(q<<2)>>2]=0;G=c[d>>2]|0}if((G|0)==0){if((c[n>>2]|0)!=0){h=51}}else{if((c[e>>2]|0)!=0){h=51}}if((h|0)==51){h=0;k=c[p+24>>2]|0;if(k>>>0>15>>>0){c[(c[y>>2]|0)+20>>2]=50;c[(c[y>>2]|0)+24>>2]=k;vk[c[c[y>>2]>>2]&511](v)}s=i+(k<<2)|0;k=c[s>>2]|0;if((k|0)==0){m=rk[c[c[f>>2]>>2]&63](v,1,256)|0;c[s>>2]=m;I=m}else{I=k}n$(I|0,0,256)|0}q=q+1|0;}while((q|0)<(c[j>>2]|0));z=b+8|0;c[z>>2]=0;A=b+12|0;c[A>>2]=0;B=b+16|0;c[B>>2]=-16;C=a+280|0;D=c[C>>2]|0;E=b+52|0;F=D;c[E>>2]=F;return}function cX(a,e){a=a|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,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;f=c[a+464>>2]|0;if((c[a+280>>2]|0)!=0){g=f+52|0;h=g;i=c[h>>2]|0;if((i|0)==0){hX(a);j=c[h>>2]|0}else{j=i}c[g>>2]=j-1}j=f+16|0;if((c[j>>2]|0)==-1){return 1}g=a+364|0;if((c[g>>2]|0)<=0){return 1}i=f+56|0;h=f+36|0;k=f+20|0;f=a+420|0;l=0;a:while(1){m=c[e+(l<<2)>>2]|0;n=c[a+368+(l<<2)>>2]|0;o=c[(c[a+340+(n<<2)>>2]|0)+20>>2]|0;p=i+(o<<2)|0;q=c[p>>2]|0;r=h+(n<<2)|0;s=c[r>>2]|0;if((iX(a,q+s|0)|0)==0){c[r>>2]=0;t=c[k+(n<<2)>>2]|0}else{u=iX(a,q+(s+1)|0)|0;v=q+(s+2+u)|0;s=iX(a,v)|0;do{if((s|0)==0){w=0;x=v}else{q=(c[p>>2]|0)+20|0;if((iX(a,q)|0)==0){w=s;x=q;break}else{y=q;z=s}while(1){q=z<<1;A=y+1|0;if((q|0)==32768){break a}if((iX(a,A)|0)==0){w=q;x=A;break}else{y=A;z=q}}}}while(0);do{if((w|0)<(1<<(d[a+232+o|0]|0)>>1|0)){c[r>>2]=0}else{s=u<<2;if((w|0)>(1<<(d[a+248+o|0]|0)>>1|0)){c[r>>2]=s+12;break}else{c[r>>2]=s+4;break}}}while(0);r=x+14|0;o=w>>1;if((o|0)==0){B=w}else{s=w;p=o;while(1){o=(iX(a,r)|0)==0;v=(o?0:p)|s;o=p>>1;if((o|0)==0){B=v;break}else{s=v;p=o}}}p=k+(n<<2)|0;s=(c[p>>2]|0)+((u|0)==0?B+1|0:~B)|0;c[p>>2]=s;t=s}b[m>>1]=t<>2];s=l+1|0;if((s|0)<(c[g>>2]|0)){l=s}else{C=24;break}}if((C|0)==24){return 1}C=a|0;c[(c[C>>2]|0)+20>>2]=117;hk[c[(c[C>>2]|0)+4>>2]&255](a,-1);c[j>>2]=-1;return 1}function dX(a,e){a=a|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,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;f=c[a+464>>2]|0;if((c[a+280>>2]|0)!=0){g=f+52|0;h=g;i=c[h>>2]|0;if((i|0)==0){hX(a);j=c[h>>2]|0}else{j=i}c[g>>2]=j-1}j=f+16|0;if((c[j>>2]|0)==-1){return 1}g=c[a+428>>2]|0;i=c[e>>2]|0;e=c[(c[a+340>>2]|0)+24>>2]|0;h=c[a+408>>2]|0;k=a+412|0;if((h|0)>(c[k>>2]|0)){return 1}l=f+120+(e<<2)|0;m=f+184|0;f=a+420|0;n=a+264+e|0;e=h;a:while(1){h=(c[l>>2]|0)+((e*3|0)-3)|0;if((iX(a,h)|0)==0){o=e;p=h}else{q=21;break}while(1){if((iX(a,p+1|0)|0)!=0){break}if((o|0)<(c[k>>2]|0)){o=o+1|0;p=p+3|0}else{q=11;break a}}h=iX(a,m)|0;r=p+2|0;s=iX(a,r)|0;do{if((s|0)==0){t=0}else{do{if((iX(a,r)|0)==0){u=s;v=r}else{w=s<<1;x=(c[l>>2]|0)+((o|0)<=(d[n]|0|0)?189:217)|0;if((iX(a,x)|0)==0){u=w;v=x;break}else{y=x;z=w}while(1){w=z<<1;x=y+1|0;if((w|0)==32768){q=17;break a}if((iX(a,x)|0)==0){u=w;v=x;break}else{y=x;z=w}}}}while(0);w=v+14|0;x=u>>1;if((x|0)==0){t=u;break}else{A=u;B=x}while(1){x=(iX(a,w)|0)==0;C=(x?0:B)|A;x=B>>1;if((x|0)==0){t=C;break}else{A=C;B=x}}}}while(0);b[i+(c[g+(o<<2)>>2]<<1)>>1]=((h|0)==0?t+1|0:~t)<>2];if((o|0)<(c[k>>2]|0)){e=o+1|0}else{q=21;break}}if((q|0)==11){o=a|0;c[(c[o>>2]|0)+20>>2]=117;hk[c[(c[o>>2]|0)+4>>2]&255](a,-1);c[j>>2]=-1;return 1}else if((q|0)==17){o=a|0;c[(c[o>>2]|0)+20>>2]=117;hk[c[(c[o>>2]|0)+4>>2]&255](a,-1);c[j>>2]=-1;return 1}else if((q|0)==21){return 1}return 0}function eX(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[a+464>>2]|0;if((c[a+280>>2]|0)!=0){g=f+52|0;h=g;i=c[h>>2]|0;if((i|0)==0){hX(a);j=c[h>>2]|0}else{j=i}c[g>>2]=j-1}j=f+184|0;f=1<>2];g=a+364|0;if((c[g>>2]|0)>0){k=0}else{return 1}do{if((iX(a,j)|0)!=0){i=c[d+(k<<2)>>2]|0;b[i>>1]=e[i>>1]|0|f}k=k+1|0;}while((k|0)<(c[g>>2]|0));return 1}function fX(a,d){a=a|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,q=0,r=0,s=0,t=0,u=0;e=c[a+464>>2]|0;if((c[a+280>>2]|0)!=0){f=e+52|0;g=f;h=c[g>>2]|0;if((h|0)==0){hX(a);i=c[g>>2]|0}else{i=h}c[f>>2]=i-1}i=e+16|0;if((c[i>>2]|0)==-1){return 1}f=c[a+428>>2]|0;h=c[d>>2]|0;d=c[(c[a+340>>2]|0)+24>>2]|0;g=c[a+420>>2]|0;j=1<>2]|0;a:do{if((l|0)>0){m=l;while(1){n=m-1|0;if((b[h+(c[f+(m<<2)>>2]<<1)>>1]|0)!=0){o=m;break a}if((n|0)>0){m=n}else{o=n;break}}}else{o=l}}while(0);m=c[a+408>>2]|0;if((m|0)>(l|0)){return 1}l=e+120+(d<<2)|0;d=e+184|0;e=j&65535;n=k&65535;p=m;b:while(1){m=(c[l>>2]|0)+((p*3|0)-3)|0;if((p|0)>(o|0)){if((iX(a,m)|0)==0){q=m;r=p}else{s=25;break}}else{q=m;r=p}while(1){t=h+(c[f+(r<<2)>>2]<<1)|0;if((b[t>>1]|0)!=0){s=14;break}if((iX(a,q+1|0)|0)!=0){s=19;break}if((r|0)<(c[g>>2]|0)){q=q+3|0;r=r+1|0}else{s=23;break b}}do{if((s|0)==14){s=0;if((iX(a,q+2|0)|0)==0){break}m=b[t>>1]|0;u=m<<16>>16;if(m<<16>>16<0){b[t>>1]=u+k;break}else{b[t>>1]=u+j;break}}else if((s|0)==19){s=0;if((iX(a,d)|0)==0){b[t>>1]=e;break}else{b[t>>1]=n;break}}}while(0);if((r|0)<(c[g>>2]|0)){p=r+1|0}else{s=25;break}}if((s|0)==23){r=a|0;c[(c[r>>2]|0)+20>>2]=117;hk[c[(c[r>>2]|0)+4>>2]&255](a,-1);c[i>>2]=-1;return 1}else if((s|0)==25){return 1}return 0}function gX(a,e){a=a|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,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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;f=c[a+464>>2]|0;if((c[a+280>>2]|0)!=0){g=f+52|0;h=g;i=c[h>>2]|0;if((i|0)==0){hX(a);j=c[h>>2]|0}else{j=i}c[g>>2]=j-1}j=f+16|0;if((c[j>>2]|0)==-1){return 1}g=c[a+428>>2]|0;i=a+364|0;if((c[i>>2]|0)<=0){return 1}h=f+56|0;k=f+36|0;l=f+20|0;m=a+432|0;n=f+120|0;o=f+184|0;f=0;a:while(1){p=c[e+(f<<2)>>2]|0;q=c[a+368+(f<<2)>>2]|0;r=c[a+340+(q<<2)>>2]|0;s=c[r+20>>2]|0;t=h+(s<<2)|0;u=c[t>>2]|0;v=k+(q<<2)|0;w=c[v>>2]|0;if((iX(a,u+w|0)|0)==0){c[v>>2]=0;x=c[l+(q<<2)>>2]&65535}else{y=iX(a,u+(w+1)|0)|0;z=u+(w+2+y)|0;w=iX(a,z)|0;do{if((w|0)==0){A=0;B=z}else{u=(c[t>>2]|0)+20|0;if((iX(a,u)|0)==0){A=w;B=u;break}else{C=u;D=w}while(1){u=D<<1;E=C+1|0;if((u|0)==32768){F=14;break a}if((iX(a,E)|0)==0){A=u;B=E;break}else{C=E;D=u}}}}while(0);do{if((A|0)<(1<<(d[a+232+s|0]|0)>>1|0)){c[v>>2]=0}else{w=y<<2;if((A|0)>(1<<(d[a+248+s|0]|0)>>1|0)){c[v>>2]=w+12;break}else{c[v>>2]=w+4;break}}}while(0);v=B+14|0;s=A>>1;if((s|0)==0){G=A}else{w=A;t=s;while(1){s=(iX(a,v)|0)==0;z=(s?0:t)|w;s=t>>1;if((s|0)==0){G=z;break}else{w=z;t=s}}}t=l+(q<<2)|0;w=(c[t>>2]|0)+((y|0)==0?G+1|0:~G)|0;c[t>>2]=w;x=w&65535}b[p>>1]=x;w=c[r+24>>2]|0;b:do{if((c[m>>2]|0)>=1){t=n+(w<<2)|0;v=a+264+w|0;s=1;while(1){z=(c[t>>2]|0)+((s*3|0)-3)|0;if((iX(a,z)|0)==0){H=s;I=z}else{break b}while(1){if((iX(a,I+1|0)|0)!=0){break}if((H|0)<(c[m>>2]|0)){H=H+1|0;I=I+3|0}else{F=28;break a}}z=iX(a,o)|0;u=I+2|0;E=iX(a,u)|0;do{if((E|0)==0){J=0}else{do{if((iX(a,u)|0)==0){K=E;L=u}else{M=E<<1;N=(c[t>>2]|0)+((H|0)<=(d[v]|0|0)?189:217)|0;if((iX(a,N)|0)==0){K=M;L=N;break}else{O=N;P=M}while(1){M=P<<1;N=O+1|0;if((M|0)==32768){F=34;break a}if((iX(a,N)|0)==0){K=M;L=N;break}else{O=N;P=M}}}}while(0);M=L+14|0;N=K>>1;if((N|0)==0){J=K;break}else{Q=K;R=N}while(1){N=(iX(a,M)|0)==0;S=(N?0:R)|Q;N=R>>1;if((N|0)==0){J=S;break}else{Q=S;R=N}}}}while(0);if((z|0)==0){T=J+1&65535}else{T=(J^65535)&65535}b[p+(c[g+(H<<2)>>2]<<1)>>1]=T;if((H|0)<(c[m>>2]|0)){s=H+1|0}else{break}}}}while(0);p=f+1|0;if((p|0)<(c[i>>2]|0)){f=p}else{F=41;break}}if((F|0)==14){f=a|0;c[(c[f>>2]|0)+20>>2]=117;hk[c[(c[f>>2]|0)+4>>2]&255](a,-1);c[j>>2]=-1;return 1}else if((F|0)==28){f=a|0;c[(c[f>>2]|0)+20>>2]=117;hk[c[(c[f>>2]|0)+4>>2]&255](a,-1);c[j>>2]=-1;return 1}else if((F|0)==34){f=a|0;c[(c[f>>2]|0)+20>>2]=117;hk[c[(c[f>>2]|0)+4>>2]&255](a,-1);c[j>>2]=-1;return 1}else if((F|0)==41){return 1}return 0}function hX(a){a=a|0;var b=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;b=c[a+464>>2]|0;if((jk[c[(c[a+460>>2]|0)+8>>2]&255](a)|0)==0){d=a|0;c[(c[d>>2]|0)+20>>2]=25;vk[c[c[d>>2]>>2]&511](a)}d=a+336|0;if((c[d>>2]|0)<=0){e=b+8|0;c[e>>2]=0;f=b+12|0;c[f>>2]=0;g=b+16|0;c[g>>2]=-16;h=a+280|0;i=c[h>>2]|0;j=b+52|0;k=i;c[j>>2]=k;return}l=a+224|0;m=b+56|0;n=b+20|0;o=b+36|0;p=a+432|0;q=a+408|0;r=b+120|0;s=a+416|0;t=0;do{u=c[a+340+(t<<2)>>2]|0;v=c[l>>2]|0;do{if((v|0)==0){w=8}else{if((c[q>>2]|0)!=0){x=v;break}if((c[s>>2]|0)==0){w=8}else{x=v}}}while(0);if((w|0)==8){w=0;n$(c[m+(c[u+20>>2]<<2)>>2]|0,0,64)|0;c[n+(t<<2)>>2]=0;c[o+(t<<2)>>2]=0;x=c[l>>2]|0}if((x|0)==0){if((c[p>>2]|0)!=0){w=12}}else{if((c[q>>2]|0)!=0){w=12}}if((w|0)==12){w=0;n$(c[r+(c[u+24>>2]<<2)>>2]|0,0,256)|0}t=t+1|0;}while((t|0)<(c[d>>2]|0));e=b+8|0;c[e>>2]=0;f=b+12|0;c[f>>2]=0;g=b+16|0;c[g>>2]=-16;h=a+280|0;i=c[h>>2]|0;j=b+52|0;k=i;c[j>>2]=k;return}function iX(b,e){b=b|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,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;f=c[b+464>>2]|0;g=f+12|0;h=g;i=c[h>>2]|0;j=f+16|0;k=j;if((i|0)<32768){l=j|0;j=b+436|0;m=b+24|0;n=b|0;o=b;p=f+8|0;q=p;r=p|0;s=c[k>>2]|0;while(1){t=s-1|0;c[l>>2]=t;do{if((s|0)<1){a:do{if((c[j>>2]|0)==0){u=c[m>>2]|0;v=u+4|0;do{if((c[v>>2]|0)==0){if((jk[c[u+12>>2]&255](b)|0)!=0){break}c[(c[n>>2]|0)+20>>2]=25;vk[c[c[n>>2]>>2]&511](o)}}while(0);c[v>>2]=(c[v>>2]|0)-1;w=u|0;x=c[w>>2]|0;c[w>>2]=x+1;w=a[x]|0;if(!(w<<24>>24==-1)){y=w&255;break}while(1){w=c[m>>2]|0;x=w+4|0;do{if((c[x>>2]|0)==0){if((jk[c[w+12>>2]&255](b)|0)!=0){break}c[(c[n>>2]|0)+20>>2]=25;vk[c[c[n>>2]>>2]&511](o)}}while(0);c[x>>2]=(c[x>>2]|0)-1;z=w|0;A=c[z>>2]|0;c[z>>2]=A+1;B=d[A]|0;if((B|0)==0){y=255;break a}else if((B|0)!=255){break}}c[j>>2]=B;y=0}else{y=0}}while(0);c[r>>2]=c[q>>2]<<8|y;u=c[k>>2]|0;v=u+8|0;c[l>>2]=v;if((v|0)>=0){C=v;break}v=u+9|0;c[l>>2]=v;if((v|0)!=0){C=v;break}c[g>>2]=32768;C=0}else{C=t}}while(0);t=c[h>>2]<<1;c[g>>2]=t;if((t|0)<32768){s=C}else{D=t;E=C;F=p;G=q;break}}}else{q=f+8|0;D=i;E=c[k>>2]|0;F=q;G=q}q=d[e]|0;k=c[18848+((q&127)<<2)>>2]|0;i=k>>8;f=k>>16;p=D-f|0;c[g>>2]=p;D=p<>2]|0;if((E|0)>=(D|0)){c[F>>2]=E-D;c[g>>2]=f;g=q&128;if((p|0)<(f|0)){a[e]=g^i;H=q;I=H>>7;return I|0}else{a[e]=g^k;H=q^128;I=H>>7;return I|0}}if((p|0)>=32768){H=q;I=H>>7;return I|0}g=q&128;if((p|0)<(f|0)){a[e]=g^k;H=q^128;I=H>>7;return I|0}else{a[e]=g^i;H=q;I=H>>7;return I|0}return 0}function jX(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=c[a+24>>2]|0;if((b|0)<=0){return}e=d+4|0;f=c[e>>2]|0;if((f|0)<(b|0)){g=d+12|0;h=b;i=f;while(1){j=h-i|0;jk[c[g>>2]&255](a)|0;k=c[e>>2]|0;if((j|0)>(k|0)){h=j;i=k}else{l=j;m=k;break}}}else{l=b;m=f}f=d|0;c[f>>2]=(c[f>>2]|0)+l;c[e>>2]=m-l;return}function kX(a){a=a|0;return}function lX(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;if((b|0)==0|(d|0)==0){e=a|0;c[(c[e>>2]|0)+20>>2]=43;vk[c[c[e>>2]>>2]&511](a)}e=a+24|0;f=c[e>>2]|0;if((f|0)==0){g=rk[c[c[a+4>>2]>>2]&63](a,0,28)|0;c[e>>2]=g;h=g}else{h=f}c[h+8>>2]=278;c[h+12>>2]=58;c[h+16>>2]=104;c[h+20>>2]=28;c[h+24>>2]=282;c[h+4>>2]=d;c[h>>2]=b;return}function mX(a){a=a|0;return}function nX(b){b=b|0;var d=0;d=b|0;c[(c[d>>2]|0)+20>>2]=123;hk[c[(c[d>>2]|0)+4>>2]&255](b,-1);a[20581360]=-1;a[20581361]=-39;d=b+24|0;c[c[d>>2]>>2]=20581360;c[(c[d>>2]|0)+4>>2]=2;return 1}function oX(a,b){a=a|0;b=b|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;d=a+4|0;e=a;f=rk[c[c[d>>2]>>2]&63](e,1,116)|0;c[a+448>>2]=f;c[f>>2]=118;c[f+8>>2]=136;c[f+112>>2]=0;if((b|0)==0){b=rk[c[(c[d>>2]|0)+4>>2]&63](e,1,1280)|0;c[f+32>>2]=b;c[f+36>>2]=b+128;c[f+40>>2]=b+256;c[f+44>>2]=b+384;c[f+48>>2]=b+512;c[f+52>>2]=b+640;c[f+56>>2]=b+768;c[f+60>>2]=b+896;c[f+64>>2]=b+1024;c[f+68>>2]=b+1152;c[f+4>>2]=46;c[f+12>>2]=78;c[f+16>>2]=0;return}b=a+36|0;if((c[b>>2]|0)>0){g=a+224|0;h=f+72|0;i=h;j=c[a+216>>2]|0;a=0;while(1){k=j+12|0;l=c[k>>2]|0;if((c[g>>2]|0)==0){m=l}else{m=l*3|0}l=c[(c[d>>2]|0)+20>>2]|0;n=P_(c[j+28>>2]|0,c[j+8>>2]|0)|0;o=P_(c[j+32>>2]|0,c[k>>2]|0)|0;c[i+(a<<2)>>2]=ik[l&15](e,1,1,n,o,m)|0;o=a+1|0;if((o|0)<(c[b>>2]|0)){j=j+88|0;a=o}else{p=h;break}}}else{p=f+72|0}c[f+4>>2]=98;c[f+12>>2]=14;c[f+16>>2]=p;return}function pX(a){a=a|0;var b=0,d=0;c[a+148>>2]=0;b=c[a+448>>2]|0;do{if((c[a+336>>2]|0)>1){c[b+28>>2]=1}else{d=c[a+340>>2]|0;if((c[a+328>>2]|0)==1){c[b+28>>2]=c[d+76>>2];break}else{c[b+28>>2]=c[d+12>>2];break}}}while(0);c[b+20>>2]=0;c[b+24>>2]=0;return}function qX(a){a=a|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;d=c[a+448>>2]|0;if((c[d+16>>2]|0)==0){e=a+156|0;c[e>>2]=0;return}a:do{if((c[a+80>>2]|0)!=0){if((c[a+224>>2]|0)==0){break}f=a+160|0;if((c[f>>2]|0)==0){break}g=d+112|0;h=c[g>>2]|0;if((h|0)==0){i=a+36|0;j=rk[c[c[a+4>>2]>>2]&63](a,1,(c[i>>2]|0)*24|0)|0;c[g>>2]=j;k=j;l=i}else{k=h;l=a+36|0}if((c[l>>2]|0)<=0){break}h=0;i=c[a+216>>2]|0;j=0;g=k;while(1){m=c[i+80>>2]|0;if((m|0)==0){break a}if((b[m>>1]|0)==0){break a}if((b[m+2>>1]|0)==0){break a}if((b[m+16>>1]|0)==0){break a}if((b[m+32>>1]|0)==0){break a}if((b[m+18>>1]|0)==0){break a}if((b[m+4>>1]|0)==0){break a}m=c[f>>2]|0;if((c[m+(h<<8)>>2]|0)<0){break a}n=m+(h<<8)+4|0;c[g+4>>2]=c[n>>2];o=(c[n>>2]|0)==0?j:1;n=m+(h<<8)+8|0;c[g+8>>2]=c[n>>2];p=(c[n>>2]|0)==0?o:1;o=m+(h<<8)+12|0;c[g+12>>2]=c[o>>2];n=(c[o>>2]|0)==0?p:1;p=m+(h<<8)+16|0;c[g+16>>2]=c[p>>2];o=(c[p>>2]|0)==0?n:1;n=m+(h<<8)+20|0;c[g+20>>2]=c[n>>2];q=(c[n>>2]|0)==0?o:1;o=h+1|0;if((o|0)<(c[l>>2]|0)){h=o;i=i+88|0;j=q;g=g+24|0}else{break}}if((q|0)==0){break}c[d+12>>2]=116;e=a+156|0;c[e>>2]=0;return}}while(0);c[d+12>>2]=14;e=a+156|0;c[e>>2]=0;return}function rX(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;b=i;i=i+16|0;d=b|0;e=a+448|0;f=c[e>>2]|0;g=a+336|0;if((c[g>>2]|0)>0){h=a+4|0;j=a;k=f+72|0;l=a+148|0;m=0;do{n=c[a+340+(m<<2)>>2]|0;o=c[n+12>>2]|0;p=da(o,c[l>>2]|0)|0;c[d+(m<<2)>>2]=Rk[c[(c[h>>2]|0)+32>>2]&15](j,c[k+(c[n+4>>2]<<2)>>2]|0,p,o,1)|0;m=m+1|0;}while((m|0)<(c[g>>2]|0))}m=f+24|0;k=c[m>>2]|0;j=f+28|0;h=c[j>>2]|0;a:do{if((k|0)<(h|0)){l=f+20|0;o=a+356|0;p=l|0;n=a+464|0;q=f+32|0;r=q;s=q;q=k;t=c[l>>2]|0;l=h;b:while(1){if(t>>>0<(c[o>>2]|0)>>>0){u=t;while(1){v=c[g>>2]|0;if((v|0)>0){w=0;x=0;y=v;while(1){v=c[a+340+(x<<2)>>2]|0;z=v+56|0;A=c[z>>2]|0;B=da(A,u)|0;C=v+60|0;v=c[C>>2]|0;if((v|0)>0){D=c[d+(x<<2)>>2]|0;E=w;F=0;G=A;A=v;while(1){if((G|0)>0){v=E;H=0;I=(c[D+(F+q<<2)>>2]|0)+(B<<7)|0;while(1){J=v+1|0;c[s+(v<<2)>>2]=I;K=H+1|0;L=c[z>>2]|0;if((K|0)<(L|0)){v=J;H=K;I=I+128|0}else{break}}M=J;N=L;O=c[C>>2]|0}else{M=E;N=G;O=A}I=F+1|0;if((I|0)<(O|0)){E=M;F=I;G=N;A=O}else{break}}P=M;Q=c[g>>2]|0}else{P=w;Q=y}A=x+1|0;if((A|0)<(Q|0)){w=P;x=A;y=Q}else{break}}}y=u+1|0;if((Kk[c[(c[n>>2]|0)+4>>2]&255](a,r)|0)==0){break b}if(y>>>0<(c[o>>2]|0)>>>0){u=y}else{break}}R=c[j>>2]|0}else{R=l}c[p>>2]=0;y=q+1|0;if((y|0)<(R|0)){q=y;t=0;l=R}else{break a}}c[m>>2]=q;c[p>>2]=u;S=0;i=b;return S|0}}while(0);u=a+148|0;m=(c[u>>2]|0)+1|0;c[u>>2]=m;u=c[a+328>>2]|0;if(!(m>>>0>>0)){vk[c[(c[a+456>>2]|0)+12>>2]&511](a);S=4;i=b;return S|0}R=c[e>>2]|0;do{if((c[g>>2]|0)>1){c[R+28>>2]=1}else{e=c[a+340>>2]|0;if(m>>>0<(u-1|0)>>>0){c[R+28>>2]=c[e+12>>2];break}else{c[R+28>>2]=c[e+76>>2];break}}}while(0);c[R+20>>2]=0;c[R+24>>2]=0;S=3;i=b;return S|0}function sX(a,b){a=a|0;b=b|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,B=0,C=0,D=0,E=0;d=c[a+448>>2]|0;e=a+328|0;f=(c[e>>2]|0)-1|0;g=a+144|0;h=a+152|0;i=a+456|0;j=a+148|0;k=a+156|0;while(1){l=c[g>>2]|0;m=c[h>>2]|0;if((l|0)>=(m|0)){if((l|0)!=(m|0)){break}if((c[j>>2]|0)>>>0>(c[k>>2]|0)>>>0){break}}if((jk[c[c[i>>2]>>2]&255](a)|0)==0){n=0;o=21;break}}if((o|0)==21){return n|0}o=a+36|0;i=c[o>>2]|0;if((i|0)>0){j=a+4|0;h=a;g=d+72|0;d=a+468|0;m=0;l=c[a+216>>2]|0;p=i;while(1){if((c[l+52>>2]|0)==0){q=p}else{i=l+12|0;r=c[i>>2]|0;s=da(r,c[k>>2]|0)|0;t=Rk[c[(c[j>>2]|0)+32>>2]&15](h,c[g+(m<<2)>>2]|0,s,r,0)|0;if((c[k>>2]|0)>>>0>>0){u=c[i>>2]|0}else{r=c[i>>2]|0;i=((c[l+32>>2]|0)>>>0)%(r>>>0)|0;u=(i|0)==0?r:i}i=c[(c[d>>2]|0)+4+(m<<2)>>2]|0;if((u|0)>0){r=l+28|0;s=l+40|0;v=l+36|0;w=0;x=c[b+(m<<2)>>2]|0;y=c[r>>2]|0;while(1){if((y|0)==0){z=0}else{A=0;B=c[t+(w<<2)>>2]|0;C=0;while(1){fk[i&127](a,l,B|0,x,C);D=A+1|0;E=c[r>>2]|0;if(D>>>0>>0){A=D;B=B+128|0;C=(c[v>>2]|0)+C|0}else{z=E;break}}}C=w+1|0;if((C|0)<(u|0)){w=C;x=x+(c[s>>2]<<2)|0;y=z}else{break}}}q=c[o>>2]|0}y=m+1|0;if((y|0)<(q|0)){m=y;l=l+88|0;p=q}else{break}}}q=(c[k>>2]|0)+1|0;c[k>>2]=q;n=q>>>0<(c[e>>2]|0)>>>0?3:4;return n|0}function tX(a){a=a|0;return 0}function uX(a,b){a=a|0;b=b|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,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,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0;d=a+448|0;e=c[d>>2]|0;f=(c[a+356>>2]|0)-1|0;g=a+328|0;h=c[g>>2]|0;i=h-1|0;j=e+24|0;k=c[j>>2]|0;l=e+28|0;m=c[l>>2]|0;do{if((k|0)<(m|0)){n=e+20|0;o=n|0;p=e+32|0;q=p;r=p;s=a+364|0;t=a+464|0;u=a+336|0;v=a+468|0;w=a+148|0;x=k;y=c[n>>2]|0;n=m;a:while(1){if(y>>>0>f>>>0){z=n}else{A=y;while(1){S_(c[p>>2]|0,c[s>>2]<<7);if((Kk[c[(c[t>>2]|0)+4>>2]&255](a,r)|0)==0){break a}B=c[u>>2]|0;if((B|0)>0){C=A>>>0>>0;D=0;E=0;F=B;while(1){B=c[a+340+(D<<2)>>2]|0;do{if((c[B+52>>2]|0)==0){G=(c[B+64>>2]|0)+E|0;H=F}else{I=c[B+4>>2]|0;J=c[(c[v>>2]|0)+4+(I<<2)>>2]|0;K=B+56|0;L=c[(C?K:B+72|0)>>2]|0;M=B+40|0;N=c[M>>2]|0;O=da(c[B+68>>2]|0,A)|0;P=B+60|0;Q=c[P>>2]|0;if((Q|0)<=0){G=E;H=F;break}R=da(N,x)|0;S=B+76|0;T=B+36|0;b:do{if((L|0)>0){U=0;V=(c[b+(I<<2)>>2]|0)+(R<<2)|0;W=E;X=N;Y=Q;while(1){if((c[w>>2]|0)>>>0>>0){Z=0;_=O;$=18}else{if((U+x|0)<(c[S>>2]|0)){Z=0;_=O;$=18}else{aa=X;ba=Y}}if(($|0)==18){while(1){$=0;fk[J&127](a,B,c[q+(Z+W<<2)>>2]|0,V,_);ca=Z+1|0;if((ca|0)<(L|0)){Z=ca;_=(c[T>>2]|0)+_|0;$=18}else{break}}aa=c[M>>2]|0;ba=c[P>>2]|0}ca=(c[K>>2]|0)+W|0;ea=U+1|0;if((ea|0)>=(ba|0)){fa=ca;break b}U=ea;V=V+(aa<<2)|0;W=ca;X=aa;Y=ba}}else{Y=0;X=E;while(1){W=(c[K>>2]|0)+X|0;V=Y+1|0;if((V|0)<(Q|0)){Y=V;X=W}else{fa=W;break}}}}while(0);G=fa;H=c[u>>2]|0}}while(0);B=D+1|0;if((B|0)<(H|0)){D=B;E=G;F=H}else{break}}}F=A+1|0;if(F>>>0>f>>>0){break}else{A=F}}z=c[l>>2]|0}c[o>>2]=0;F=x+1|0;if((F|0)<(z|0)){x=F;y=0;n=z}else{$=26;break}}if(($|0)==26){ga=c[g>>2]|0;ha=w;break}c[j>>2]=x;c[o>>2]=A;ia=0;return ia|0}else{ga=h;ha=a+148|0}}while(0);h=a+156|0;c[h>>2]=(c[h>>2]|0)+1;h=(c[ha>>2]|0)+1|0;c[ha>>2]=h;if(!(h>>>0>>0)){vk[c[(c[a+456>>2]|0)+12>>2]&511](a);ia=4;return ia|0}ha=c[d>>2]|0;do{if((c[a+336>>2]|0)>1){c[ha+28>>2]=1}else{d=c[a+340>>2]|0;if(h>>>0<(ga-1|0)>>>0){c[ha+28>>2]=c[d+12>>2];break}else{c[ha+28>>2]=c[d+76>>2];break}}}while(0);c[ha+20>>2]=0;c[ha+24>>2]=0;ia=3;return ia|0}function vX(a,d){a=a|0;d=d|0;var f=0,g=0,h=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,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,_=0,$=0,aa=0,ba=0,ca=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,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0;f=i;i=i+128|0;g=f|0;h=c[a+448>>2]|0;j=a+328|0;k=(c[j>>2]|0)-1|0;l=a+144|0;m=a+152|0;n=a+456|0;o=a+408|0;p=a+148|0;q=a+156|0;while(1){r=c[l>>2]|0;s=c[m>>2]|0;if((r|0)>(s|0)){break}t=c[n>>2]|0;if((c[t+20>>2]|0)!=0){break}if((r|0)==(s|0)){if((c[p>>2]|0)>>>0>((c[q>>2]|0)+((c[o>>2]|0)==0)|0)>>>0){break}}if((jk[c[t>>2]&255](a)|0)==0){u=0;v=80;break}}if((v|0)==80){i=f;return u|0}v=a+36|0;o=c[v>>2]|0;if((o|0)>0){p=a+4|0;n=a;m=h+72|0;l=h+112|0;h=a+468|0;t=g|0;s=g+4|0;r=g+18|0;w=g+32|0;x=g+16|0;y=g+2|0;z=c[a+216>>2]|0;A=0;B=o;while(1){if((c[z+52>>2]|0)==0){C=B}else{o=c[q>>2]|0;if(o>>>0>>0){D=c[z+12>>2]|0;E=D;F=D<<1;G=0;H=D}else{D=c[z+12>>2]|0;I=((c[z+32>>2]|0)>>>0)%(D>>>0)|0;J=(I|0)==0?D:I;E=J;F=J;G=1;H=D}if((o|0)==0){K=Rk[c[(c[p>>2]|0)+32>>2]&15](n,c[m+(A<<2)>>2]|0,0,F,0)|0;L=1}else{D=da(H,o-1|0)|0;o=Rk[c[(c[p>>2]|0)+32>>2]&15](n,c[m+(A<<2)>>2]|0,D,H+F|0,0)|0;K=o+(c[z+12>>2]<<2)|0;L=0}o=c[l>>2]|0;D=A*6|0;J=c[z+80>>2]|0;I=e[J>>1]|0;M=e[J+2>>1]|0;N=e[J+16>>1]|0;O=e[J+32>>1]|0;P=e[J+18>>1]|0;Q=e[J+4>>1]|0;J=c[(c[h>>2]|0)+4+(A<<2)>>2]|0;if((E|0)>0){R=(L|0)!=0;S=(G|0)!=0;T=z+28|0;U=o+((D|1)<<2)|0;V=o+(D+2<<2)|0;W=o+(D+3<<2)|0;X=o+(D+4<<2)|0;Y=o+(D+5<<2)|0;D=z+36|0;o=I*9|0;Z=Q<<7;_=Q<<8;Q=I*5|0;$=P<<7;aa=P<<8;P=O<<7;ba=O<<8;O=I*36|0;I=N<<7;ca=N<<8;N=M<<7;ea=M<<8;M=z+40|0;fa=E-1|0;ga=c[d+(A<<2)>>2]|0;ha=0;while(1){ia=c[K+(ha<<2)>>2]|0;if(R&(ha|0)==0){ja=ia}else{ja=c[K+(ha-1<<2)>>2]|0}if(S&(ha|0)==(fa|0)){ka=ia}else{ka=c[K+(ha+1<<2)>>2]|0}la=b[ja>>1]|0;ma=b[ia>>1]|0;na=b[ka>>1]|0;oa=(c[T>>2]|0)-1|0;pa=0;qa=ka;ra=ja;sa=ia;ia=0;ta=la;ua=la;la=ma;va=ma;ma=na;wa=na;while(1){R_(sa,g,1);if(ia>>>0>>0){xa=b[qa+128>>1]|0;ya=b[sa+128>>1]|0;za=b[ra+128>>1]|0}else{xa=wa;ya=va;za=ua}na=c[U>>2]|0;do{if((na|0)!=0){if((b[y>>1]|0)!=0){break}Aa=da(O,la-ya|0)|0;do{if((Aa|0)>-1){Ba=(Aa+N|0)/(ea|0)|0;Ca=Ba&65535;if((na|0)<=0){Da=Ca;break}Ea=1<0){Ca=1<>1]=Da}}while(0);na=c[V>>2]|0;do{if((na|0)!=0){if((b[x>>1]|0)!=0){break}Aa=da(O,ua-wa|0)|0;do{if((Aa|0)>-1){Ea=(Aa+I|0)/(ca|0)|0;Ca=Ea&65535;if((na|0)<=0){Ga=Ca;break}Ba=1<0){Ca=1<>1]=Ga}}while(0);na=c[W>>2]|0;do{if((na|0)!=0){if((b[w>>1]|0)!=0){break}Aa=da(o,ua-(va<<1)+wa|0)|0;do{if((Aa|0)>-1){Ba=(Aa+P|0)/(ba|0)|0;Ca=Ba&65535;if((na|0)<=0){Ia=Ca;break}Ea=1<0){Ca=1<>1]=Ia}}while(0);na=c[X>>2]|0;do{if((na|0)!=0){if((b[r>>1]|0)!=0){break}Aa=da(Q,ta-ma-za+xa|0)|0;do{if((Aa|0)>-1){Ea=(Aa+$|0)/(aa|0)|0;Ca=Ea&65535;if((na|0)<=0){Ka=Ca;break}Ba=1<0){Ca=1<>1]=Ka}}while(0);na=c[Y>>2]|0;do{if((na|0)!=0){if((b[s>>1]|0)!=0){break}Aa=da(o,la-(va<<1)+ya|0)|0;do{if((Aa|0)>-1){Ba=(Aa+Z|0)/(_|0)|0;Ca=Ba&65535;if((na|0)<=0){Ma=Ca;break}Ea=1<0){Ca=1<>1]=Ma}}while(0);fk[J&127](a,z,t,ga,pa);na=ia+1|0;if(na>>>0>oa>>>0){break}else{pa=(c[D>>2]|0)+pa|0;qa=qa+128|0;ra=ra+128|0;sa=sa+128|0;ia=na;ta=ua;ua=za;la=va;va=ya;ma=wa;wa=xa}}wa=ha+1|0;if((wa|0)<(E|0)){ga=ga+(c[M>>2]<<2)|0;ha=wa}else{break}}}C=c[v>>2]|0}ha=A+1|0;if((ha|0)<(C|0)){z=z+88|0;A=ha;B=C}else{break}}}C=(c[q>>2]|0)+1|0;c[q>>2]=C;u=C>>>0<(c[j>>2]|0)>>>0?3:4;i=f;return u|0}function wX(a){a=a|0;var b=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=a+4|0;d=a;e=rk[c[c[b>>2]>>2]&63](d,1,24)|0;f=a+476|0;c[f>>2]=e;c[e>>2]=54;g=a+40|0;a:do{switch(c[g>>2]|0){case 2:case 3:{if((c[a+36>>2]|0)==3){break a}h=a|0;c[(c[h>>2]|0)+20>>2]=11;vk[c[c[h>>2]>>2]&511](d);break};case 1:{if((c[a+36>>2]|0)==1){break a}h=a|0;c[(c[h>>2]|0)+20>>2]=11;vk[c[c[h>>2]>>2]&511](d);break};case 4:case 5:{if((c[a+36>>2]|0)==4){break a}h=a|0;c[(c[h>>2]|0)+20>>2]=11;vk[c[c[h>>2]>>2]&511](d);break};default:{if((c[a+36>>2]|0)>=1){break a}h=a|0;c[(c[h>>2]|0)+20>>2]=11;vk[c[c[h>>2]>>2]&511](d)}}}while(0);h=c[a+44>>2]|0;do{if((h|0)==1){c[a+120>>2]=1;i=c[g>>2]|0;if(!((i|0)==1|(i|0)==3)){i=a|0;c[(c[i>>2]|0)+20>>2]=28;vk[c[c[i>>2]>>2]&511](d);break}c[e+4>>2]=74;i=a+36|0;if((c[i>>2]|0)<=1){break}j=a+216|0;k=1;do{c[(c[j>>2]|0)+(k*88|0)+52>>2]=0;k=k+1|0;}while((k|0)<(c[i>>2]|0))}else if((h|0)==2){c[a+120>>2]=3;i=c[g>>2]|0;if((i|0)==1){c[e+4>>2]=82;break}else if((i|0)==3){c[e+4>>2]=86;k=c[f>>2]|0;j=k+8|0;l=j;c[j>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;j=k+12|0;c[j>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;m=k+16|0;n=m;c[m>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;m=k+20|0;c[m>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;k=0;o=-128;while(1){c[(c[l>>2]|0)+(k<<2)>>2]=(o*91881|0)+32768>>16;c[(c[j>>2]|0)+(k<<2)>>2]=(o*116130|0)+32768>>16;c[(c[n>>2]|0)+(k<<2)>>2]=o*-46802|0;c[(c[m>>2]|0)+(k<<2)>>2]=(o*-22554|0)+32768;p=k+1|0;if((p|0)<256){k=p;o=o+1|0}else{break}}}else if((i|0)==2){c[e+4>>2]=48;break}else{o=a|0;c[(c[o>>2]|0)+20>>2]=28;vk[c[c[o>>2]>>2]&511](d);break}}else if((h|0)==4){c[a+120>>2]=4;o=c[g>>2]|0;if((o|0)==5){c[e+4>>2]=22;k=c[f>>2]|0;m=k+8|0;n=m;c[m>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;m=k+12|0;c[m>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;j=k+16|0;l=j;c[j>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;j=k+20|0;c[j>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;k=0;p=-128;while(1){c[(c[n>>2]|0)+(k<<2)>>2]=(p*91881|0)+32768>>16;c[(c[m>>2]|0)+(k<<2)>>2]=(p*116130|0)+32768>>16;c[(c[l>>2]|0)+(k<<2)>>2]=p*-46802|0;c[(c[j>>2]|0)+(k<<2)>>2]=(p*-22554|0)+32768;q=k+1|0;if((q|0)<256){k=q;p=p+1|0}else{break}}}else if((o|0)==4){c[e+4>>2]=48;break}else{p=a|0;c[(c[p>>2]|0)+20>>2]=28;vk[c[c[p>>2]>>2]&511](d);break}}else{if((h|0)==(c[g>>2]|0)){c[a+120>>2]=c[a+36>>2];c[e+4>>2]=48;break}else{p=a|0;c[(c[p>>2]|0)+20>>2]=28;vk[c[c[p>>2]>>2]&511](d);break}}}while(0);if((c[a+84>>2]|0)==0){c[a+124>>2]=c[a+120>>2];return}else{c[a+124>>2]=1;return}}function xX(a){a=a|0;return}function yX(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;Q_(c[b>>2]|0,d,e,0,f,c[a+112>>2]|0);return}function zX(b,e,f,g,h){b=b|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,w=0,x=0,y=0,z=0;i=c[b+476>>2]|0;j=c[b+112>>2]|0;k=c[b+332>>2]|0;b=c[i+8>>2]|0;l=c[i+12>>2]|0;m=c[i+16>>2]|0;n=c[i+20>>2]|0;if((h|0)<=0){return}i=e+4|0;o=e+8|0;if((j|0)==0){return}else{p=g;q=f;r=h}while(1){h=r-1|0;f=c[(c[e>>2]|0)+(q<<2)>>2]|0;g=c[(c[i>>2]|0)+(q<<2)>>2]|0;s=c[(c[o>>2]|0)+(q<<2)>>2]|0;t=q+1|0;u=p+4|0;v=0;w=c[p>>2]|0;while(1){x=d[f+v|0]|0;y=d[g+v|0]|0;z=d[s+v|0]|0;a[w]=a[k+((c[b+(z<<2)>>2]|0)+x)|0]|0;a[w+1|0]=a[k+(((c[m+(z<<2)>>2]|0)+(c[n+(y<<2)>>2]|0)>>16)+x)|0]|0;a[w+2|0]=a[k+((c[l+(y<<2)>>2]|0)+x)|0]|0;x=v+1|0;if(x>>>0>>0){v=x;w=w+3|0}else{break}}if((h|0)>0){p=u;q=t;r=h}else{break}}return}function AX(b,d,e,f,g){b=b|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;h=c[b+112>>2]|0;if((g|0)<1|(h|0)==0){return}else{i=f;j=e;k=g}while(1){g=k-1|0;e=j+1|0;f=c[(c[d>>2]|0)+(j<<2)>>2]|0;b=i+4|0;l=c[i>>2]|0;m=0;while(1){n=a[f+m|0]|0;a[l+2|0]=n;a[l+1|0]=n;a[l]=n;n=m+1|0;if(n>>>0>>0){l=l+3|0;m=n}else{break}}if((g|0)>0){i=b;j=e;k=g}else{break}}return}function BX(b,d,e,f,g){b=b|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;h=c[b+36>>2]|0;i=c[b+112>>2]|0;if((g|0)<=0){return}b=(i|0)==0;j=f;f=e;e=g;while(1){g=e-1|0;if(!((h|0)<1|b)){k=0;do{l=c[(c[d+(k<<2)>>2]|0)+(f<<2)>>2]|0;m=(c[j>>2]|0)+k|0;n=i;while(1){a[m]=a[l]|0;o=n-1|0;if((o|0)==0){break}else{l=l+1|0;m=m+h|0;n=o}}k=k+1|0;}while((k|0)<(h|0))}if((g|0)>0){j=j+4|0;f=f+1|0;e=g}else{break}}return}function CX(b,e,f,g,h){b=b|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,w=0,x=0,y=0,z=0,A=0,B=0;i=c[b+476>>2]|0;j=c[b+112>>2]|0;k=c[b+332>>2]|0;b=c[i+8>>2]|0;l=c[i+12>>2]|0;m=c[i+16>>2]|0;n=c[i+20>>2]|0;if((h|0)<=0){return}i=e+4|0;o=e+8|0;p=e+12|0;if((j|0)==0){return}else{q=g;r=f;s=h}while(1){h=s-1|0;f=c[(c[e>>2]|0)+(r<<2)>>2]|0;g=c[(c[i>>2]|0)+(r<<2)>>2]|0;t=c[(c[o>>2]|0)+(r<<2)>>2]|0;u=c[(c[p>>2]|0)+(r<<2)>>2]|0;v=r+1|0;w=q+4|0;x=0;y=c[q>>2]|0;while(1){z=d[g+x|0]|0;A=d[t+x|0]|0;B=(d[f+x|0]|0)^255;a[y]=a[k+(B-(c[b+(A<<2)>>2]|0))|0]|0;a[y+1|0]=a[k+(B-((c[m+(A<<2)>>2]|0)+(c[n+(z<<2)>>2]|0)>>16))|0]|0;a[y+2|0]=a[k+(B-(c[l+(z<<2)>>2]|0))|0]|0;a[y+3|0]=a[u+x|0]|0;z=x+1|0;if(z>>>0>>0){x=z;y=y+4|0}else{break}}if((h|0)>0){q=w;r=v;s=h}else{break}}return}function DX(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+4|0;d=a;e=rk[c[c[b>>2]>>2]&63](d,1,84)|0;c[a+468>>2]=e;c[e>>2]=44;f=a+36|0;if((c[f>>2]|0)<=0){return}g=e+44|0;e=0;h=c[a+216>>2]|0;while(1){a=rk[c[c[b>>2]>>2]&63](d,1,256)|0;c[h+84>>2]=a;n$(a|0,0,256)|0;c[g+(e<<2)>>2]=-1;a=e+1|0;if((a|0)<(c[f>>2]|0)){e=a;h=h+88|0}else{break}}return}function EX(a){a=a|0;var d=0,f=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.0,w=0,x=0;d=c[a+468>>2]|0;f=a+36|0;if((c[f>>2]|0)<=0){return}i=a|0;j=a;k=d+44|0;l=a+72|0;m=0;n=0;o=c[a+216>>2]|0;a=0;while(1){p=o+36|0;q=o+40|0;a:do{switch((c[p>>2]<<8)+(c[q>>2]|0)|0){case 3341:{r=0;s=10;break};case 1806:{r=0;s=60;break};case 1548:{r=0;s=8;break};case 771:{r=0;s=16;break};case 2565:{r=0;s=18;break};case 514:{r=0;s=64;break};case 513:{r=0;s=72;break};case 257:{r=0;s=6;break};case 516:{r=0;s=62;break};case 774:{r=0;s=14;break};case 1026:{r=0;s=76;break};case 2570:{r=0;s=96;break};case 1542:{r=0;s=102;break};case 1028:{r=0;s=34;break};case 1290:{r=0;s=66;break};case 3084:{r=0;s=68;break};case 258:{r=0;s=50;break};case 1539:{r=0;s=100;break};case 2064:{r=0;s=24;break};case 2313:{r=0;s=56;break};case 1285:{r=0;s=54;break};case 3855:{r=0;s=104;break};case 2052:{r=0;s=32;break};case 3598:{r=0;s=26;break};case 4104:{r=0;s=92;break};case 1799:{r=0;s=40;break};case 2056:{t=c[l>>2]|0;if((t|0)==0){r=0;s=42;break a}else if((t|0)==2){r=t;s=46;break a}else if((t|0)==1){r=t;s=88;break a}else{c[(c[i>>2]|0)+20>>2]=49;vk[c[c[i>>2]>>2]&511](j);r=n;s=m;break a}break};case 4112:{r=0;s=30;break};case 3591:{r=0;s=28;break};case 3078:{r=0;s=44;break};case 1032:{r=0;s=78;break};case 2827:{r=0;s=36;break};default:{c[(c[i>>2]|0)+20>>2]=7;c[(c[i>>2]|0)+24>>2]=c[p>>2];c[(c[i>>2]|0)+28>>2]=c[q>>2];vk[c[c[i>>2]>>2]&511](j);r=n;s=m}}}while(0);c[d+4+(a<<2)>>2]=s;do{if((c[o+52>>2]|0)!=0){q=k+(a<<2)|0;if((c[q>>2]|0)==(r|0)){break}p=c[o+80>>2]|0;if((p|0)==0){break}c[q>>2]=r;if((r|0)==1){q=c[o+84>>2]|0;t=0;do{c[q+(t<<2)>>2]=(da(b[4360+(t<<1)>>1]|0,e[p+(t<<1)>>1]|0)|0)+2048>>12;t=t+1|0;}while((t|0)<64)}else if((r|0)==2){t=c[o+84>>2]|0;q=0;u=0;while(1){v=+h[4488+(u<<3)>>3];g[t+(q<<2)>>2]=+((e[p+(q<<1)>>1]|0)>>>0)*v*.125;w=q|1;g[t+(w<<2)>>2]=+((e[p+(w<<1)>>1]|0)>>>0)*v*1.387039845*.125;x=w+1|0;g[t+(x<<2)>>2]=+((e[p+(x<<1)>>1]|0)>>>0)*v*1.306562965*.125;x=q|3;g[t+(x<<2)>>2]=+((e[p+(x<<1)>>1]|0)>>>0)*v*1.175875602*.125;w=x+1|0;g[t+(w<<2)>>2]=+((e[p+(w<<1)>>1]|0)>>>0)*v*.125;w=x+2|0;g[t+(w<<2)>>2]=+((e[p+(w<<1)>>1]|0)>>>0)*v*.785694958*.125;w=x+3|0;g[t+(w<<2)>>2]=+((e[p+(w<<1)>>1]|0)>>>0)*v*.5411961*.125;w=q|7;g[t+(w<<2)>>2]=+((e[p+(w<<1)>>1]|0)>>>0)*v*.275899379*.125;w=u+1|0;if((w|0)<8){q=q+8|0;u=w}else{break}}}else if((r|0)==0){u=c[o+84>>2]|0;q=0;do{c[u+(q<<2)>>2]=e[p+(q<<1)>>1]|0;q=q+1|0;}while((q|0)<64)}else{c[(c[i>>2]|0)+20>>2]=49;vk[c[c[i>>2]>>2]&511](j);break}}}while(0);q=a+1|0;if((q|0)<(c[f>>2]|0)){m=s;n=r;o=o+88|0;a=q}else{break}}return}function FX(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=a+4|0;d=a;e=rk[c[c[b>>2]>>2]&63](d,1,216)|0;c[a+464>>2]=e;c[e>>2]=98;if((c[a+224>>2]|0)==0){c[e+80>>2]=0;c[e+64>>2]=0;c[e+84>>2]=0;c[e+68>>2]=0;c[e+88>>2]=0;c[e+72>>2]=0;c[e+92>>2]=0;c[e+76>>2]=0;return}f=a+36|0;g=rk[c[c[b>>2]>>2]&63](d,1,c[f>>2]<<8)|0;c[a+160>>2]=g;if((c[f>>2]|0)>0){a=0;do{n$(g+(a<<8)|0,-1|0,256)|0;a=a+1|0;}while((a|0)<(c[f>>2]|0))}n$(e+44|0,0,16)|0;return}function GX(a){a=a|0;var b=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;b=c[a+464>>2]|0;d=a+408|0;e=c[d>>2]|0;f=(e|0)==0;if((c[a+224>>2]|0)==0){do{if(f){if((c[a+416>>2]|0)!=0){g=44;break}if((c[a+420>>2]|0)!=0){g=44;break}h=c[a+412>>2]|0;if(!((c[a+220>>2]|0)!=0|(h|0)<64)){break}if((h|0)!=(c[a+432>>2]|0)){g=44}}else{g=44}}while(0);if((g|0)==44){h=a|0;c[(c[h>>2]|0)+20>>2]=125;hk[c[(c[h>>2]|0)+4>>2]&255](a,-1)}h=a+432|0;c[b+4>>2]=(c[h>>2]|0)==63?86:70;i=a+336|0;if((c[i>>2]|0)>0){j=b+64|0;k=b+20|0;l=b+80|0;m=0;do{n=c[a+340+(m<<2)>>2]|0;o=c[n+20>>2]|0;LX(a,1,o,j+(o<<2)|0);if((c[h>>2]|0)!=0){o=c[n+24>>2]|0;LX(a,0,o,l+(o<<2)|0)}c[k+(m<<2)>>2]=0;m=m+1|0;}while((m|0)<(c[i>>2]|0))}i=a+364|0;if((c[i>>2]|0)<=0){p=b+12|0;c[p>>2]=0;q=b+8|0;c[q>>2]=0;r=b+36|0;c[r>>2]=0;s=a+280|0;t=c[s>>2]|0;u=b+40|0;v=t;c[u>>2]=v;return}m=b+64|0;k=b+96|0;l=b+80|0;j=b+136|0;o=b+176|0;n=0;do{w=c[a+340+(c[a+368+(n<<2)>>2]<<2)>>2]|0;c[k+(n<<2)>>2]=c[m+(c[w+20>>2]<<2)>>2];c[j+(n<<2)>>2]=c[l+(c[w+24>>2]<<2)>>2];a:do{if((c[w+52>>2]|0)==0){c[o+(n<<2)>>2]=0}else{x=c[w+40>>2]|0;y=c[w+36>>2]|0;switch(c[h>>2]|0){case 15:{z=x-1|0;A=y-1|0;c[o+(n<<2)>>2]=(c[16688+((z>>>0>3>>>0?3:z)<<4)+((A>>>0>3>>>0?3:A)<<2)>>2]|0)+1;break a;break};case 24:{A=x-1|0;z=y-1|0;c[o+(n<<2)>>2]=(c[16584+((A>>>0>4>>>0?4:A)*20|0)+((z>>>0>4>>>0?4:z)<<2)>>2]|0)+1;break a;break};case 35:{z=x-1|0;A=y-1|0;c[o+(n<<2)>>2]=(c[16440+((z>>>0>5>>>0?5:z)*24|0)+((A>>>0>5>>>0?5:A)<<2)>>2]|0)+1;break a;break};case 48:{A=x-1|0;z=y-1|0;c[o+(n<<2)>>2]=(c[16240+((A>>>0>6>>>0?6:A)*28|0)+((z>>>0>6>>>0?6:z)<<2)>>2]|0)+1;break a;break};case 0:{c[o+(n<<2)>>2]=1;break a;break};case 3:{z=x-1|0;A=y-1|0;c[o+(n<<2)>>2]=(c[16792+((z>>>0>1>>>0?1:z)<<3)+((A>>>0>1>>>0?1:A)<<2)>>2]|0)+1;break a;break};case 8:{A=x-1|0;z=y-1|0;c[o+(n<<2)>>2]=(c[16752+((A>>>0>2>>>0?2:A)*12|0)+((z>>>0>2>>>0?2:z)<<2)>>2]|0)+1;break a;break};default:{z=x-1|0;x=y-1|0;c[o+(n<<2)>>2]=(c[16808+((z>>>0>7>>>0?7:z)<<5)+((x>>>0>7>>>0?7:x)<<2)>>2]|0)+1;break a}}}}while(0);n=n+1|0;}while((n|0)<(c[i>>2]|0));p=b+12|0;c[p>>2]=0;q=b+8|0;c[q>>2]=0;r=b+36|0;c[r>>2]=0;s=a+280|0;t=c[s>>2]|0;u=b+40|0;v=t;c[u>>2]=v;return}i=a+412|0;n=c[i>>2]|0;do{if(f){if((n|0)==0){g=7}else{g=11}}else{if((n|0)<(e|0)){g=11;break}if((n|0)>(c[a+432>>2]|0)){g=11;break}if((c[a+336>>2]|0)==1){g=7}else{g=11}}}while(0);do{if((g|0)==7){n=c[a+416>>2]|0;if((n|0)==0){B=c[a+420>>2]|0}else{e=n-1|0;if((e|0)==(c[a+420>>2]|0)){B=e}else{g=11;break}}if((B|0)>13){g=11}}}while(0);if((g|0)==11){g=a|0;c[(c[g>>2]|0)+20>>2]=17;c[(c[g>>2]|0)+24>>2]=c[d>>2];c[(c[g>>2]|0)+28>>2]=c[i>>2];c[(c[g>>2]|0)+32>>2]=c[a+416>>2];c[(c[g>>2]|0)+36>>2]=c[a+420>>2];vk[c[c[g>>2]>>2]&511](a)}g=a+336|0;if((c[g>>2]|0)>0){B=a+160|0;e=a+416|0;n=a+420|0;f=a|0;o=a;h=0;while(1){l=c[(c[a+340+(h<<2)>>2]|0)+4>>2]|0;j=c[B>>2]|0;m=c[d>>2]|0;do{if((m|0)==0){C=0}else{if((c[j+(l<<8)>>2]|0)>=0){C=m;break}c[(c[f>>2]|0)+20>>2]=118;c[(c[f>>2]|0)+24>>2]=l;c[(c[f>>2]|0)+28>>2]=0;hk[c[(c[f>>2]|0)+4>>2]&255](o,-1);C=c[d>>2]|0}}while(0);b:do{if((C|0)<=(c[i>>2]|0)){m=C;while(1){k=j+(l<<8)+(m<<2)|0;w=c[k>>2]|0;if((c[e>>2]|0)!=(((w|0)<0?0:w)|0)){c[(c[f>>2]|0)+20>>2]=118;c[(c[f>>2]|0)+24>>2]=l;c[(c[f>>2]|0)+28>>2]=m;hk[c[(c[f>>2]|0)+4>>2]&255](o,-1)}c[k>>2]=c[n>>2];if((m|0)>=(c[i>>2]|0)){break b}m=m+1|0}}}while(0);l=h+1|0;if((l|0)<(c[g>>2]|0)){h=l}else{D=e;break}}}else{D=a+416|0}e=(c[d>>2]|0)==0;h=b+4|0;do{if((c[D>>2]|0)==0){if(e){c[h>>2]=80;break}else{c[h>>2]=124;break}}else{if(e){c[h>>2]=58;break}else{c[h>>2]=38;break}}}while(0);if((c[g>>2]|0)>0){h=b+44|0;e=b+20|0;i=b+60|0;n=0;do{o=c[a+340+(n<<2)>>2]|0;do{if((c[d>>2]|0)==0){if((c[D>>2]|0)!=0){break}f=c[o+20>>2]|0;LX(a,1,f,h+(f<<2)|0)}else{f=c[o+24>>2]|0;C=h+(f<<2)|0;LX(a,0,f,C);c[i>>2]=c[C>>2]}}while(0);c[e+(n<<2)>>2]=0;n=n+1|0;}while((n|0)<(c[g>>2]|0))}c[b+16>>2]=0;p=b+12|0;c[p>>2]=0;q=b+8|0;c[q>>2]=0;r=b+36|0;c[r>>2]=0;s=a+280|0;t=c[s>>2]|0;u=b+40|0;v=t;c[u>>2]=v;return}function HX(a,e){a=a|0;e=e|0;var f=0,g=0,h=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,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,_=0,$=0,aa=0,ba=0;f=i;i=i+48|0;g=f|0;h=f+24|0;j=c[a+464>>2]|0;k=c[a+420>>2]|0;l=a+280|0;do{if((c[l>>2]|0)!=0){if((c[j+40>>2]|0)!=0){break}m=j+12|0;n=a+460|0;o=(c[n>>2]|0)+24|0;c[o>>2]=(c[o>>2]|0)+((c[m>>2]|0)/8|0);c[m>>2]=0;if((jk[c[(c[n>>2]|0)+8>>2]&255](a)|0)==0){p=0;i=f;return p|0}n=a+336|0;if((c[n>>2]|0)>0){m=j+20|0;o=0;do{c[m+(o<<2)>>2]=0;o=o+1|0;}while((o|0)<(c[n>>2]|0))}c[j+16>>2]=0;c[j+40>>2]=c[l>>2];if((c[a+436>>2]|0)!=0){break}c[j+36>>2]=0}}while(0);if((c[j+36>>2]|0)==0){c[g+16>>2]=a;l=a+24|0;n=c[l>>2]|0;o=c[n>>2]|0;m=g|0;c[m>>2]=o;q=c[n+4>>2]|0;r=g+4|0;c[r>>2]=q;s=j+8|0;t=c[s>>2]|0;u=j+12|0;v=c[u>>2]|0;w=h;x=j+16|0;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];c[w+16>>2]=c[x+16>>2];y=a+364|0;do{if((c[y>>2]|0)>0){z=j+44|0;A=g+8|0;B=g+12|0;C=t;D=v;E=0;while(1){F=c[e+(E<<2)>>2]|0;G=c[a+368+(E<<2)>>2]|0;H=c[z+(c[(c[a+340+(G<<2)>>2]|0)+20>>2]<<2)>>2]|0;if((D|0)<8){if((OX(g,C,D,0)|0)==0){p=0;I=28;break}J=c[A>>2]|0;K=c[B>>2]|0;if((K|0)<8){L=1;M=K;N=J;I=17}else{O=K;P=J;I=15}}else{O=D;P=C;I=15}do{if((I|0)==15){I=0;J=P>>O-8&255;K=c[H+144+(J<<2)>>2]|0;if((K|0)==0){L=9;M=O;N=P;I=17;break}Q=d[H+1168+J|0]|0;R=O-K|0;S=P}}while(0);if((I|0)==17){I=0;K=PX(g,N,M,H,L)|0;if((K|0)<0){p=0;I=28;break}Q=K;R=c[B>>2]|0;S=c[A>>2]|0}if((Q|0)==0){T=0;U=R;V=S}else{if((R|0)<(Q|0)){if((OX(g,S,R,Q)|0)==0){p=0;I=28;break}W=c[B>>2]|0;X=c[A>>2]|0}else{W=R;X=S}K=W-Q|0;J=c[42416+(Q<<2)>>2]|0;Y=X>>K&J;T=Y-((Y|0)>(c[42416+(Q-1<<2)>>2]|0)?0:J)|0;U=K;V=X}K=h+4+(G<<2)|0;J=(c[K>>2]|0)+T|0;c[K>>2]=J;b[F>>1]=J<>2]|0)){C=V;D=U;E=J}else{I=25;break}}if((I|0)==25){Z=V;_=U;$=c[m>>2]|0;aa=c[l>>2]|0;ba=c[r>>2]|0;break}else if((I|0)==28){i=f;return p|0}}else{Z=t;_=v;$=o;aa=n;ba=q}}while(0);c[aa>>2]=$;c[(c[l>>2]|0)+4>>2]=ba;c[s>>2]=Z;c[u>>2]=_;c[x>>2]=c[w>>2];c[x+4>>2]=c[w+4>>2];c[x+8>>2]=c[w+8>>2];c[x+12>>2]=c[w+12>>2];c[x+16>>2]=c[w+16>>2]}w=j+40|0;c[w>>2]=(c[w>>2]|0)-1;p=1;i=f;return p|0}function IX(a,e){a=a|0;e=e|0;var f=0,g=0,h=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,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,_=0,$=0,aa=0,ba=0,ca=0;f=i;i=i+24|0;g=f|0;h=c[a+464>>2]|0;j=a+280|0;do{if((c[j>>2]|0)!=0){if((c[h+40>>2]|0)!=0){break}k=h+12|0;l=a+460|0;m=(c[l>>2]|0)+24|0;c[m>>2]=(c[m>>2]|0)+((c[k>>2]|0)/8|0);c[k>>2]=0;if((jk[c[(c[l>>2]|0)+8>>2]&255](a)|0)==0){n=0;i=f;return n|0}l=a+336|0;if((c[l>>2]|0)>0){k=h+20|0;m=0;do{c[k+(m<<2)>>2]=0;m=m+1|0;}while((m|0)<(c[l>>2]|0))}c[h+16>>2]=0;c[h+40>>2]=c[j>>2];if((c[a+436>>2]|0)!=0){break}c[h+36>>2]=0}}while(0);if((c[h+36>>2]|0)==0){j=c[a+412>>2]|0;l=c[a+420>>2]|0;m=c[a+428>>2]|0;k=h+16|0;o=c[k>>2]|0;if((o|0)==0){c[g+16>>2]=a;p=a+24|0;q=c[p>>2]|0;r=g|0;c[r>>2]=c[q>>2];s=g+4|0;c[s>>2]=c[q+4>>2];q=h+8|0;t=c[q>>2]|0;u=h+12|0;v=c[u>>2]|0;w=c[e>>2]|0;e=c[h+60>>2]|0;x=c[a+408>>2]|0;a:do{if((x|0)>(j|0)){y=v;z=t;A=0}else{a=g+8|0;B=g+12|0;C=x;D=t;E=v;while(1){if((E|0)<8){if((OX(g,D,E,0)|0)==0){n=0;F=38;break}G=c[a>>2]|0;H=c[B>>2]|0;if((H|0)<8){I=1;J=H;K=G;F=19}else{L=H;M=G;F=17}}else{L=E;M=D;F=17}do{if((F|0)==17){F=0;G=M>>L-8&255;H=c[e+144+(G<<2)>>2]|0;if((H|0)==0){I=9;J=L;K=M;F=19;break}N=d[e+1168+G|0]|0;O=L-H|0;P=M}}while(0);if((F|0)==19){F=0;H=PX(g,K,J,e,I)|0;if((H|0)<0){n=0;F=38;break}N=H;O=c[B>>2]|0;P=c[a>>2]|0}Q=N>>4;H=N&15;if((H|0)==0){if((Q|0)!=15){F=28;break}R=O;S=P;T=C+15|0}else{G=Q+C|0;if((O|0)<(H|0)){if((OX(g,P,O,H)|0)==0){n=0;F=38;break}U=c[B>>2]|0;V=c[a>>2]|0}else{U=O;V=P}W=U-H|0;X=c[42416+(H<<2)>>2]|0;Y=V>>W&X;b[w+(c[m+(G<<2)>>2]<<1)>>1]=Y-((Y|0)>(c[42416+(H-1<<2)>>2]|0)?0:X)<>2]|0;ba=c[a>>2]|0;break}}else{aa=O;ba=P}}while(0);a=aa-Q|0;Z=a;_=ba;$=(ba>>a&c[42416+(Q<<2)>>2])+E|0}y=Z;z=_;A=$-1|0;break}else if((F|0)==38){i=f;return n|0}}}while(0);c[c[p>>2]>>2]=c[r>>2];c[(c[p>>2]|0)+4>>2]=c[s>>2];c[q>>2]=z;c[u>>2]=y;ca=A}else{ca=o-1|0}c[k>>2]=ca}ca=h+40|0;c[ca>>2]=(c[ca>>2]|0)-1;n=1;i=f;return n|0}function JX(a,d){a=a|0;d=d|0;var f=0,g=0,h=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,J=0,K=0;f=i;i=i+24|0;g=f|0;h=c[a+464>>2]|0;j=1<>2];k=a+280|0;do{if((c[k>>2]|0)!=0){if((c[h+40>>2]|0)!=0){break}l=h+12|0;m=a+460|0;n=(c[m>>2]|0)+24|0;c[n>>2]=(c[n>>2]|0)+((c[l>>2]|0)/8|0);c[l>>2]=0;if((jk[c[(c[m>>2]|0)+8>>2]&255](a)|0)==0){o=0;i=f;return o|0}m=a+336|0;if((c[m>>2]|0)>0){l=h+20|0;n=0;do{c[l+(n<<2)>>2]=0;n=n+1|0;}while((n|0)<(c[m>>2]|0))}c[h+16>>2]=0;c[h+40>>2]=c[k>>2];if((c[a+436>>2]|0)!=0){break}c[h+36>>2]=0}}while(0);c[g+16>>2]=a;k=a+24|0;m=c[k>>2]|0;n=c[m>>2]|0;l=g|0;c[l>>2]=n;p=c[m+4>>2]|0;q=g+4|0;c[q>>2]=p;r=h+8|0;s=c[r>>2]|0;t=h+12|0;u=c[t>>2]|0;v=a+364|0;do{if((c[v>>2]|0)>0){a=g+8|0;w=g+12|0;x=0;y=s;z=u;while(1){A=c[d+(x<<2)>>2]|0;if((z|0)<1){if((OX(g,y,z,1)|0)==0){o=0;B=19;break}C=c[w>>2]|0;D=c[a>>2]|0}else{C=z;D=y}E=C-1|0;if((1<>1]=e[F>>1]|0|j}F=x+1|0;if((F|0)<(c[v>>2]|0)){x=F;y=D;z=E}else{B=17;break}}if((B|0)==17){G=D;H=E;I=c[l>>2]|0;J=c[k>>2]|0;K=c[q>>2]|0;break}else if((B|0)==19){i=f;return o|0}}else{G=s;H=u;I=n;J=m;K=p}}while(0);c[J>>2]=I;c[(c[k>>2]|0)+4>>2]=K;c[r>>2]=G;c[t>>2]=H;H=h+40|0;c[H>>2]=(c[H>>2]|0)-1;o=1;i=f;return o|0}function KX(a,e){a=a|0;e=e|0;var f=0,g=0,h=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,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,_=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,Da=0,Ea=0,Fa=0;f=i;i=i+280|0;g=f|0;h=f+24|0;j=c[a+464>>2]|0;k=a+280|0;do{if((c[k>>2]|0)!=0){if((c[j+40>>2]|0)!=0){break}l=j+12|0;m=a+460|0;n=(c[m>>2]|0)+24|0;c[n>>2]=(c[n>>2]|0)+((c[l>>2]|0)/8|0);c[l>>2]=0;if((jk[c[(c[m>>2]|0)+8>>2]&255](a)|0)==0){o=0;i=f;return o|0}m=a+336|0;if((c[m>>2]|0)>0){l=j+20|0;n=0;do{c[l+(n<<2)>>2]=0;n=n+1|0;}while((n|0)<(c[m>>2]|0))}c[j+16>>2]=0;c[j+40>>2]=c[k>>2];if((c[a+436>>2]|0)!=0){break}c[j+36>>2]=0}}while(0);do{if((c[j+36>>2]|0)==0){k=c[a+412>>2]|0;m=c[a+420>>2]|0;n=1<>2]|0;c[g+16>>2]=a;p=a+24|0;q=c[p>>2]|0;r=g|0;c[r>>2]=c[q>>2];s=g+4|0;c[s>>2]=c[q+4>>2];q=j+8|0;t=c[q>>2]|0;u=j+12|0;v=c[u>>2]|0;w=j+16|0;x=c[w>>2]|0;y=c[e>>2]|0;z=c[j+60>>2]|0;A=c[a+408>>2]|0;a:do{if((x|0)==0){if((A|0)>(k|0)){B=v;C=t;D=0;E=61;break}F=g+8|0;G=g+12|0;H=a|0;I=a;J=t;K=v;L=A;M=0;while(1){if((K|0)<8){if((OX(g,J,K,0)|0)==0){N=M;break a}O=c[F>>2]|0;P=c[G>>2]|0;if((P|0)<8){Q=1;R=P;S=O;E=19}else{T=P;U=O;E=17}}else{T=K;U=J;E=17}do{if((E|0)==17){E=0;O=U>>T-8&255;P=c[z+144+(O<<2)>>2]|0;if((P|0)==0){Q=9;R=T;S=U;E=19;break}V=d[z+1168+O|0]|0;W=T-P|0;X=U}}while(0);if((E|0)==19){E=0;P=PX(g,S,R,z,Q)|0;if((P|0)<0){N=M;break a}V=P;W=c[G>>2]|0;X=c[F>>2]|0}Y=V>>4;P=V&15;if((P|0)==0){if((Y|0)==15){Z=0;_=W;$=X;aa=15}else{break}}else if((P|0)==1){E=23}else{c[(c[H>>2]|0)+20>>2]=121;hk[c[(c[H>>2]|0)+4>>2]&255](I,-1);E=23}if((E|0)==23){E=0;if((W|0)<1){if((OX(g,X,W,1)|0)==0){N=M;break a}ba=c[G>>2]|0;ca=c[F>>2]|0}else{ba=W;ca=X}P=ba-1|0;Z=(1<>2]<<1)|0;do{if((b[fa>>1]|0)==0){if((ea|0)<1){ga=P;ha=O;ia=da;break b}else{ja=O;ka=da;la=ea-1|0}}else{if((O|0)<1){if((OX(g,da,O,1)|0)==0){N=M;break a}ma=c[G>>2]|0;na=c[F>>2]|0}else{ma=O;na=da}oa=ma-1|0;if((1<>1]|0;qa=pa<<16>>16;if((qa&n|0)!=0){ja=oa;ka=na;la=ea;break}if(pa<<16>>16>-1){b[fa>>1]=qa+n;ja=oa;ka=na;la=ea;break}else{b[fa>>1]=qa+l;ja=oa;ka=na;la=ea;break}}}while(0);fa=P+1|0;if((P|0)<(k|0)){P=fa;O=ja;da=ka;ea=la}else{ga=fa;ha=ja;ia=ka;break}}if((Z|0)==0){ra=M}else{ea=c[m+(ga<<2)>>2]|0;b[y+(ea<<1)>>1]=Z;c[h+(M<<2)>>2]=ea;ra=M+1|0}if((ga|0)<(k|0)){J=ia;K=ha;L=ga+1|0;M=ra}else{B=ha;C=ia;D=0;E=61;break a}}K=1<>2]|0;ya=c[F>>2]|0}else{xa=W;ya=X}J=xa-Y|0;I=(ya>>J&c[42416+(Y<<2)>>2])+K|0;if((I|0)==0){B=J;C=ya;D=0;E=61}else{sa=L;ta=J;ua=ya;va=I;wa=M;E=48}}else{sa=A;ta=v;ua=t;va=x;wa=0;E=48}}while(0);c:do{if((E|0)==48){if((sa|0)>(k|0)){za=ua;Aa=ta}else{x=g+8|0;t=g+12|0;v=ua;A=ta;z=sa;while(1){I=y+(c[m+(z<<2)>>2]<<1)|0;do{if((b[I>>1]|0)==0){Ba=A;Ca=v}else{if((A|0)<1){if((OX(g,v,A,1)|0)==0){N=wa;break c}Da=c[t>>2]|0;Ea=c[x>>2]|0}else{Da=A;Ea=v}J=Da-1|0;if((1<>1]|0;H=K<<16>>16;if((H&n|0)!=0){Ba=J;Ca=Ea;break}if(K<<16>>16>-1){b[I>>1]=H+n;Ba=J;Ca=Ea;break}else{b[I>>1]=H+l;Ba=J;Ca=Ea;break}}}while(0);if((z|0)<(k|0)){v=Ca;A=Ba;z=z+1|0}else{za=Ca;Aa=Ba;break}}}B=Aa;C=za;D=va-1|0;E=61}}while(0);if((E|0)==61){c[c[p>>2]>>2]=c[r>>2];c[(c[p>>2]|0)+4>>2]=c[s>>2];c[q>>2]=C;c[u>>2]=B;c[w>>2]=D;break}if((N|0)>0){Fa=N}else{o=0;i=f;return o|0}while(1){k=Fa-1|0;b[y+(c[h+(k<<2)>>2]<<1)>>1]=0;if((k|0)>0){Fa=k}else{o=0;break}}i=f;return o|0}}while(0);Fa=j+40|0;c[Fa>>2]=(c[Fa>>2]|0)-1;o=1;i=f;return o|0}function LX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;h=i;i=i+1296|0;j=h|0;k=h+264|0;if(f>>>0>3>>>0){l=b|0;c[(c[l>>2]|0)+20>>2]=52;c[(c[l>>2]|0)+24>>2]=f;vk[c[c[l>>2]>>2]&511](b)}l=(e|0)!=0;if(l){m=b+180+(f<<2)|0}else{m=b+196+(f<<2)|0}e=c[m>>2]|0;if((e|0)==0){m=b|0;c[(c[m>>2]|0)+20>>2]=52;c[(c[m>>2]|0)+24>>2]=f;vk[c[c[m>>2]>>2]&511](b)}m=c[g>>2]|0;if((m|0)==0){f=b;n=rk[c[c[b+4>>2]>>2]&63](f,1,1424)|0;c[g>>2]=n;o=n;p=f}else{o=m;p=b}c[o+140>>2]=e;m=b|0;b=1;f=0;while(1){n=a[e+b|0]|0;g=n&255;q=g+f|0;if((q|0)>256){c[(c[m>>2]|0)+20>>2]=9;vk[c[c[m>>2]>>2]&511](p)}if(n<<24>>24==0){r=f}else{n$(j+f|0,b&255|0,g|0)|0;r=q}q=b+1|0;if((q|0)<17){b=q;f=r}else{break}}a[j+r|0]=0;f=a[j|0]|0;if(f<<24>>24==0){s=1;t=0}else{b=f<<24>>24;q=0;g=0;n=f;while(1){if((n<<24>>24|0)==(b|0)){f=q;u=g;while(1){v=u+1|0;c[k+(u<<2)>>2]=f;w=f+1|0;x=a[j+v|0]|0;if((x<<24>>24|0)==(b|0)){f=w;u=v}else{y=w;z=v;A=x;break}}}else{y=q;z=g;A=n}if((y|0)>=(1<>2]|0)+20>>2]=9;vk[c[c[m>>2]>>2]&511](p)}if(A<<24>>24==0){s=1;t=0;break}else{b=b+1|0;q=y<<1;g=z;n=A}}}while(1){A=e+s|0;if((a[A]|0)==0){c[o+(s<<2)>>2]=-1;B=t}else{c[o+72+(s<<2)>>2]=t-(c[k+(t<<2)>>2]|0);n=(d[A]|0)+t|0;c[o+(s<<2)>>2]=c[k+(n-1<<2)>>2];B=n}n=s+1|0;if((n|0)<17){s=n;t=B}else{break}}c[o+68>>2]=1048575;n$(o+144|0,0,1024)|0;B=1;t=0;while(1){s=e+B|0;n=a[s]|0;a:do{if(n<<24>>24==0){C=t}else{A=8-B|0;z=1<0){D=1;E=t}else{g=1;y=t;while(1){q=y+1|0;if((g|0)<(n&255|0)){g=g+1|0;y=q}else{C=q;break a}}}while(1){y=e+17+E|0;g=c[k+(E<<2)>>2]<>2]=B;a[o+1168+g|0]=a[y]|0;b=q-1|0;if((b|0)>0){g=g+1|0;q=b}else{break}}q=E+1|0;if((D|0)<(d[s]|0)){D=D+1|0;E=q}else{C=q;break}}}}while(0);s=B+1|0;if((s|0)<9){B=s;t=C}else{break}}if(l&(r|0)>0){F=0}else{i=h;return}do{if((d[e+17+F|0]|0)>>>0>15>>>0){c[(c[m>>2]|0)+20>>2]=9;vk[c[c[m>>2]>>2]&511](p)}F=F+1|0;}while((F|0)<(r|0));i=h;return}function MX(a,e){a=a|0;e=e|0;var f=0,g=0,h=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,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,_=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,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;f=i;i=i+48|0;g=f|0;h=f+24|0;j=c[a+464>>2]|0;k=a+280|0;do{if((c[k>>2]|0)!=0){if((c[j+40>>2]|0)!=0){break}l=j+12|0;m=a+460|0;n=(c[m>>2]|0)+24|0;c[n>>2]=(c[n>>2]|0)+((c[l>>2]|0)/8|0);c[l>>2]=0;if((jk[c[(c[m>>2]|0)+8>>2]&255](a)|0)==0){o=0;i=f;return o|0}m=a+336|0;if((c[m>>2]|0)>0){l=j+20|0;n=0;do{c[l+(n<<2)>>2]=0;n=n+1|0;}while((n|0)<(c[m>>2]|0))}c[j+16>>2]=0;c[j+40>>2]=c[k>>2];if((c[a+436>>2]|0)!=0){break}c[j+36>>2]=0}}while(0);if((c[j+36>>2]|0)==0){k=c[a+428>>2]|0;m=c[a+432>>2]|0;c[g+16>>2]=a;n=a+24|0;l=c[n>>2]|0;p=c[l>>2]|0;q=g|0;c[q>>2]=p;r=g+4|0;c[r>>2]=c[l+4>>2];s=j+8|0;t=c[s>>2]|0;u=j+12|0;v=c[u>>2]|0;w=h;x=j+16|0;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];c[w+16>>2]=c[x+16>>2];y=a+364|0;do{if((c[y>>2]|0)>0){z=j+96|0;A=g+8|0;B=g+12|0;C=j+136|0;D=j+176|0;E=v;F=t;G=0;a:while(1){H=c[e+(G<<2)>>2]|0;I=c[z+(G<<2)>>2]|0;if((E|0)<8){if((OX(g,F,E,0)|0)==0){o=0;J=67;break}K=c[A>>2]|0;L=c[B>>2]|0;if((L|0)<8){M=K;N=1;O=L;J=17}else{P=K;Q=L;J=15}}else{P=F;Q=E;J=15}do{if((J|0)==15){J=0;L=P>>Q-8&255;K=c[I+144+(L<<2)>>2]|0;if((K|0)==0){M=P;N=9;O=Q;J=17;break}R=P;S=Q-K|0;T=d[I+1168+L|0]|0}}while(0);if((J|0)==17){J=0;L=PX(g,M,O,I,N)|0;if((L|0)<0){o=0;J=67;break}R=c[A>>2]|0;S=c[B>>2]|0;T=L}L=c[C+(G<<2)>>2]|0;K=c[D+(G<<2)>>2]|0;U=(T|0)!=0;b:do{if((K|0)==0){if(!U){V=R;W=S;X=1;J=48;break}if((S|0)<(T|0)){if((OX(g,R,S,T)|0)==0){o=0;J=67;break a}Y=c[A>>2]|0;Z=c[B>>2]|0}else{Y=R;Z=S}V=Y;W=Z-T|0;X=1;J=48}else{if(U){if((S|0)<(T|0)){if((OX(g,R,S,T)|0)==0){o=0;J=67;break a}_=c[A>>2]|0;$=c[B>>2]|0}else{_=R;$=S}aa=$-T|0;ba=c[42416+(T<<2)>>2]|0;ca=_>>aa&ba;da=_;ea=aa;fa=ca-((ca|0)>(c[42416+(T-1<<2)>>2]|0)?0:ba)|0}else{da=R;ea=S;fa=0}ba=h+4+(c[a+368+(G<<2)>>2]<<2)|0;ca=(c[ba>>2]|0)+fa|0;c[ba>>2]=ca;b[H>>1]=ca;if((K|0)>1){ga=1;ha=ea;ia=da}else{V=da;W=ea;X=1;J=48;break}while(1){if((ha|0)<8){if((OX(g,ia,ha,0)|0)==0){o=0;J=67;break a}ca=c[A>>2]|0;ba=c[B>>2]|0;if((ba|0)<8){ja=1;ka=ca;la=ba;J=31}else{ma=ca;na=ba;J=29}}else{ma=ia;na=ha;J=29}do{if((J|0)==29){J=0;ba=ma>>na-8&255;ca=c[L+144+(ba<<2)>>2]|0;if((ca|0)==0){ja=9;ka=ma;la=na;J=31;break}oa=ma;pa=na-ca|0;qa=d[L+1168+ba|0]|0}}while(0);if((J|0)==31){J=0;ba=PX(g,ka,la,L,ja)|0;if((ba|0)<0){o=0;J=67;break a}oa=c[A>>2]|0;pa=c[B>>2]|0;qa=ba}ba=qa>>4;ca=qa&15;if((ca|0)==0){if((ba|0)!=15){ra=oa;sa=pa;break b}ta=oa;ua=pa;va=ga+15|0}else{aa=ba+ga|0;if((pa|0)<(ca|0)){if((OX(g,oa,pa,ca)|0)==0){o=0;J=67;break a}wa=c[A>>2]|0;xa=c[B>>2]|0}else{wa=oa;xa=pa}ba=xa-ca|0;ya=c[42416+(ca<<2)>>2]|0;za=wa>>ba&ya;if((za|0)>(c[42416+(ca-1<<2)>>2]|0)){Aa=za&65535}else{Aa=za-ya&65535}b[H+(c[k+(aa<<2)>>2]<<1)>>1]=Aa;ta=wa;ua=ba;va=aa}aa=va+1|0;if((aa|0)<(K|0)){ga=aa;ha=ua;ia=ta}else{V=ta;W=ua;X=aa;J=48;break}}}}while(0);c:do{if((J|0)==48){J=0;if((X|0)>(m|0)){ra=V;sa=W;break}else{Ba=X;Ca=W;Da=V}while(1){if((Ca|0)<8){if((OX(g,Da,Ca,0)|0)==0){o=0;J=67;break a}K=c[A>>2]|0;H=c[B>>2]|0;if((H|0)<8){Ea=1;Fa=K;Ga=H;J=54}else{Ha=K;Ia=H;J=52}}else{Ha=Da;Ia=Ca;J=52}do{if((J|0)==52){J=0;H=Ha>>Ia-8&255;K=c[L+144+(H<<2)>>2]|0;if((K|0)==0){Ea=9;Fa=Ha;Ga=Ia;J=54;break}Ja=Ha;Ka=Ia-K|0;La=d[L+1168+H|0]|0}}while(0);if((J|0)==54){J=0;H=PX(g,Fa,Ga,L,Ea)|0;if((H|0)<0){o=0;J=67;break a}Ja=c[A>>2]|0;Ka=c[B>>2]|0;La=H}H=La>>4;K=La&15;if((K|0)==0){if((H|0)==15){Ma=Ja;Na=Ka;Oa=15}else{ra=Ja;sa=Ka;break c}}else{if((Ka|0)<(K|0)){if((OX(g,Ja,Ka,K)|0)==0){o=0;J=67;break a}Pa=c[A>>2]|0;Qa=c[B>>2]|0}else{Pa=Ja;Qa=Ka}Ma=Pa;Na=Qa-K|0;Oa=H}H=Ba+1+Oa|0;if((H|0)>(m|0)){ra=Ma;sa=Na;break}else{Ba=H;Ca=Na;Da=Ma}}}}while(0);L=G+1|0;if((L|0)<(c[y>>2]|0)){E=sa;F=ra;G=L}else{J=64;break}}if((J|0)==64){Ra=sa;Sa=ra;Ta=c[q>>2]|0;Ua=c[n>>2]|0;break}else if((J|0)==67){i=f;return o|0}}else{Ra=v;Sa=t;Ta=p;Ua=l}}while(0);c[Ua>>2]=Ta;c[(c[n>>2]|0)+4>>2]=c[r>>2];c[s>>2]=Sa;c[u>>2]=Ra;c[x>>2]=c[w>>2];c[x+4>>2]=c[w+4>>2];c[x+8>>2]=c[w+8>>2];c[x+12>>2]=c[w+12>>2];c[x+16>>2]=c[w+16>>2]}w=j+40|0;c[w>>2]=(c[w>>2]|0)-1;o=1;i=f;return o|0}function NX(a,e){a=a|0;e=e|0;var f=0,g=0,h=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,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,_=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,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;f=i;i=i+48|0;g=f|0;h=f+24|0;j=c[a+464>>2]|0;k=a+280|0;do{if((c[k>>2]|0)!=0){if((c[j+40>>2]|0)!=0){break}l=j+12|0;m=a+460|0;n=(c[m>>2]|0)+24|0;c[n>>2]=(c[n>>2]|0)+((c[l>>2]|0)/8|0);c[l>>2]=0;if((jk[c[(c[m>>2]|0)+8>>2]&255](a)|0)==0){o=0;i=f;return o|0}m=a+336|0;if((c[m>>2]|0)>0){l=j+20|0;n=0;do{c[l+(n<<2)>>2]=0;n=n+1|0;}while((n|0)<(c[m>>2]|0))}c[j+16>>2]=0;c[j+40>>2]=c[k>>2];if((c[a+436>>2]|0)!=0){break}c[j+36>>2]=0}}while(0);if((c[j+36>>2]|0)==0){c[g+16>>2]=a;k=a+24|0;m=c[k>>2]|0;n=c[m>>2]|0;l=g|0;c[l>>2]=n;p=g+4|0;c[p>>2]=c[m+4>>2];q=j+8|0;r=c[q>>2]|0;s=j+12|0;t=c[s>>2]|0;u=h;v=j+16|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];w=a+364|0;do{if((c[w>>2]|0)>0){x=j+96|0;y=g+8|0;z=g+12|0;A=j+136|0;B=j+176|0;C=t;D=r;E=0;a:while(1){F=c[e+(E<<2)>>2]|0;G=c[x+(E<<2)>>2]|0;if((C|0)<8){if((OX(g,D,C,0)|0)==0){o=0;H=67;break}I=c[y>>2]|0;J=c[z>>2]|0;if((J|0)<8){K=I;L=1;M=J;H=17}else{N=I;O=J;H=15}}else{N=D;O=C;H=15}do{if((H|0)==15){H=0;J=N>>O-8&255;I=c[G+144+(J<<2)>>2]|0;if((I|0)==0){K=N;L=9;M=O;H=17;break}P=N;Q=O-I|0;R=d[G+1168+J|0]|0}}while(0);if((H|0)==17){H=0;J=PX(g,K,M,G,L)|0;if((J|0)<0){o=0;H=67;break}P=c[y>>2]|0;Q=c[z>>2]|0;R=J}J=c[A+(E<<2)>>2]|0;I=c[B+(E<<2)>>2]|0;S=(R|0)!=0;b:do{if((I|0)==0){if(!S){T=1;U=Q;V=P;H=49;break}if((Q|0)<(R|0)){if((OX(g,P,Q,R)|0)==0){o=0;H=67;break a}W=c[y>>2]|0;X=c[z>>2]|0}else{W=P;X=Q}T=1;U=X-R|0;V=W;H=49}else{if(S){if((Q|0)<(R|0)){if((OX(g,P,Q,R)|0)==0){o=0;H=67;break a}Y=c[y>>2]|0;Z=c[z>>2]|0}else{Y=P;Z=Q}_=Z-R|0;$=c[42416+(R<<2)>>2]|0;aa=Y>>_&$;ba=Y;ca=_;da=aa-((aa|0)>(c[42416+(R-1<<2)>>2]|0)?0:$)|0}else{ba=P;ca=Q;da=0}$=h+4+(c[a+368+(E<<2)>>2]<<2)|0;aa=(c[$>>2]|0)+da|0;c[$>>2]=aa;b[F>>1]=aa;if((I|0)>1){ea=1;fa=ca;ga=ba}else{T=1;U=ca;V=ba;H=49;break}while(1){if((fa|0)<8){if((OX(g,ga,fa,0)|0)==0){o=0;H=67;break a}aa=c[y>>2]|0;$=c[z>>2]|0;if(($|0)<8){ha=1;ia=aa;ja=$;H=31}else{ka=aa;la=$;H=29}}else{ka=ga;la=fa;H=29}do{if((H|0)==29){H=0;$=ka>>la-8&255;aa=c[J+144+($<<2)>>2]|0;if((aa|0)==0){ha=9;ia=ka;ja=la;H=31;break}ma=ka;na=la-aa|0;oa=d[J+1168+$|0]|0}}while(0);if((H|0)==31){H=0;$=PX(g,ia,ja,J,ha)|0;if(($|0)<0){o=0;H=67;break a}ma=c[y>>2]|0;na=c[z>>2]|0;oa=$}$=oa>>4;aa=oa&15;if((aa|0)==0){if(($|0)!=15){pa=ma;qa=na;break b}ra=ma;sa=na;ta=ea+15|0}else{_=$+ea|0;if((na|0)<(aa|0)){if((OX(g,ma,na,aa)|0)==0){o=0;H=67;break a}ua=c[y>>2]|0;va=c[z>>2]|0}else{ua=ma;va=na}$=va-aa|0;wa=c[42416+(aa<<2)>>2]|0;xa=ua>>$&wa;if((xa|0)>(c[42416+(aa-1<<2)>>2]|0)){ya=xa&65535}else{ya=xa-wa&65535}b[F+(c[18528+(_<<2)>>2]<<1)>>1]=ya;ra=ua;sa=$;ta=_}za=ta+1|0;if((za|0)<(I|0)){ea=za;fa=sa;ga=ra}else{break}}if((za|0)<64){T=za;U=sa;V=ra;H=49}else{pa=ra;qa=sa}}}while(0);c:do{if((H|0)==49){while(1){H=0;if((U|0)<8){if((OX(g,V,U,0)|0)==0){o=0;H=67;break a}I=c[y>>2]|0;F=c[z>>2]|0;if((F|0)<8){Aa=1;Ba=I;Ca=F;H=54}else{Da=I;Ea=F;H=52}}else{Da=V;Ea=U;H=52}do{if((H|0)==52){H=0;F=Da>>Ea-8&255;I=c[J+144+(F<<2)>>2]|0;if((I|0)==0){Aa=9;Ba=Da;Ca=Ea;H=54;break}Fa=Da;Ga=Ea-I|0;Ha=d[J+1168+F|0]|0}}while(0);if((H|0)==54){H=0;F=PX(g,Ba,Ca,J,Aa)|0;if((F|0)<0){o=0;H=67;break a}Fa=c[y>>2]|0;Ga=c[z>>2]|0;Ha=F}F=Ha>>4;I=Ha&15;if((I|0)==0){if((F|0)==15){Ia=Fa;Ja=Ga;Ka=15}else{pa=Fa;qa=Ga;break c}}else{if((Ga|0)<(I|0)){if((OX(g,Fa,Ga,I)|0)==0){o=0;H=67;break a}La=c[y>>2]|0;Ma=c[z>>2]|0}else{La=Fa;Ma=Ga}Ia=La;Ja=Ma-I|0;Ka=F}F=T+1+Ka|0;if((F|0)<64){T=F;U=Ja;V=Ia;H=49}else{pa=Ia;qa=Ja;break}}}}while(0);J=E+1|0;if((J|0)<(c[w>>2]|0)){C=qa;D=pa;E=J}else{H=64;break}}if((H|0)==64){Na=qa;Oa=pa;Pa=c[l>>2]|0;Qa=c[k>>2]|0;break}else if((H|0)==67){i=f;return o|0}}else{Na=t;Oa=r;Pa=n;Qa=m}}while(0);c[Qa>>2]=Pa;c[(c[k>>2]|0)+4>>2]=c[p>>2];c[q>>2]=Oa;c[s>>2]=Na;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];c[v+16>>2]=c[u+16>>2]}u=j+40|0;c[u>>2]=(c[u>>2]|0)-1;o=1;i=f;return o|0}function OX(b,d,e,f){b=b|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,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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=b|0;h=c[g>>2]|0;i=b+4|0;j=c[i>>2]|0;k=c[b+16>>2]|0;l=k+436|0;a:do{if((c[l>>2]|0)==0){if((e|0)>=25){m=j;n=h;o=d;p=e;break}q=k+24|0;r=e;s=d;t=h;u=j;b:while(1){if((u|0)==0){if((jk[c[(c[q>>2]|0)+12>>2]&255](k)|0)==0){v=0;w=19;break}x=c[q>>2]|0;y=c[x+4>>2]|0;z=c[x>>2]|0}else{y=u;z=t}x=y-1|0;A=z+1|0;B=a[z]|0;C=B&255;if(B<<24>>24==-1){B=x;D=A;while(1){if((B|0)==0){if((jk[c[(c[q>>2]|0)+12>>2]&255](k)|0)==0){v=0;w=19;break b}E=c[q>>2]|0;F=c[E+4>>2]|0;G=c[E>>2]|0}else{F=B;G=D}H=F-1|0;I=G+1|0;J=a[G]|0;if((J<<24>>24|0)==(-1|0)){B=H;D=I}else if((J<<24>>24|0)==0){K=255;L=H;M=I;break}else{w=12;break b}}}else{K=C;L=x;M=A}D=K|s<<8;B=r+8|0;if((B|0)<25){r=B;s=D;t=M;u=L}else{m=L;n=M;o=D;p=B;break a}}if((w|0)==12){c[l>>2]=J&255;N=H;O=I;P=s;Q=r;w=14;break}else if((w|0)==19){return v|0}}else{N=j;O=h;P=d;Q=e;w=14}}while(0);do{if((w|0)==14){if((Q|0)>=(f|0)){m=N;n=O;o=P;p=Q;break}e=k+464|0;if((c[(c[e>>2]|0)+36>>2]|0)==0){d=k|0;c[(c[d>>2]|0)+20>>2]=120;hk[c[(c[d>>2]|0)+4>>2]&255](k,-1);c[(c[e>>2]|0)+36>>2]=1}m=N;n=O;o=P<<25-Q;p=25}}while(0);c[g>>2]=n;c[i>>2]=m;c[b+8>>2]=o;c[b+12>>2]=p;v=1;return v|0}function PX(a,b,e,f,g){a=a|0;b=b|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;do{if((e|0)<(g|0)){if((OX(a,b,e,g)|0)==0){h=-1;return h|0}else{i=c[a+8>>2]|0;j=c[a+12>>2]|0;break}}else{i=b;j=e}}while(0);e=j-g|0;j=i>>e&c[42416+(g<<2)>>2];b=a+8|0;k=a+12|0;a:do{if((j|0)>(c[f+(g<<2)>>2]|0)){l=e;m=i;n=g;o=j;while(1){p=o<<1;if((l|0)<1){if((OX(a,m,l,1)|0)==0){h=-1;break}q=c[b>>2]|0;r=c[k>>2]|0}else{q=m;r=l}s=r-1|0;t=q>>>(s>>>0)&1|p;p=n+1|0;if((t|0)>(c[f+(p<<2)>>2]|0)){l=s;m=q;n=p;o=t}else{u=s;v=q;w=p;x=t;break a}}return h|0}else{u=e;v=i;w=g;x=j}}while(0);c[b>>2]=v;c[k>>2]=u;if((w|0)>16){u=a+16|0;c[(c[c[u>>2]>>2]|0)+20>>2]=121;a=c[u>>2]|0;hk[c[(c[a>>2]|0)+4>>2]&255](a,-1);h=0;return h|0}else{h=d[(c[f+72+(w<<2)>>2]|0)+x+((c[f+140>>2]|0)+17)|0]|0;return h|0}return 0}function QX(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+424|0;d=c[b>>2]|0;e=da(d,c[a+48>>2]|0)|0;f=c[a+52>>2]|0;do{if(e>>>0>f>>>0){if(!(e>>>0>f<<1>>>0)){c[a+112>>2]=O_(c[a+28>>2]<<1,d)|0;c[a+116>>2]=O_(c[a+32>>2]<<1,c[b>>2]|0)|0;c[a+320>>2]=2;c[a+324>>2]=2;g=2;break}if(!(e>>>0>(f*3|0)>>>0)){c[a+112>>2]=O_((c[a+28>>2]|0)*3|0,d)|0;c[a+116>>2]=O_((c[a+32>>2]|0)*3|0,c[b>>2]|0)|0;c[a+320>>2]=3;c[a+324>>2]=3;g=3;break}if(!(e>>>0>f<<2>>>0)){c[a+112>>2]=O_(c[a+28>>2]<<2,d)|0;c[a+116>>2]=O_(c[a+32>>2]<<2,c[b>>2]|0)|0;c[a+320>>2]=4;c[a+324>>2]=4;g=4;break}if(!(e>>>0>(f*5|0)>>>0)){c[a+112>>2]=O_((c[a+28>>2]|0)*5|0,d)|0;c[a+116>>2]=O_((c[a+32>>2]|0)*5|0,c[b>>2]|0)|0;c[a+320>>2]=5;c[a+324>>2]=5;g=5;break}if(!(e>>>0>(f*6|0)>>>0)){c[a+112>>2]=O_((c[a+28>>2]|0)*6|0,d)|0;c[a+116>>2]=O_((c[a+32>>2]|0)*6|0,c[b>>2]|0)|0;c[a+320>>2]=6;c[a+324>>2]=6;g=6;break}if(!(e>>>0>(f*7|0)>>>0)){c[a+112>>2]=O_((c[a+28>>2]|0)*7|0,d)|0;c[a+116>>2]=O_((c[a+32>>2]|0)*7|0,c[b>>2]|0)|0;c[a+320>>2]=7;c[a+324>>2]=7;g=7;break}if(!(e>>>0>f<<3>>>0)){c[a+112>>2]=O_(c[a+28>>2]<<3,d)|0;c[a+116>>2]=O_(c[a+32>>2]<<3,c[b>>2]|0)|0;c[a+320>>2]=8;c[a+324>>2]=8;g=8;break}if(!(e>>>0>(f*9|0)>>>0)){c[a+112>>2]=O_((c[a+28>>2]|0)*9|0,d)|0;c[a+116>>2]=O_((c[a+32>>2]|0)*9|0,c[b>>2]|0)|0;c[a+320>>2]=9;c[a+324>>2]=9;g=9;break}if(!(e>>>0>(f*10|0)>>>0)){c[a+112>>2]=O_((c[a+28>>2]|0)*10|0,d)|0;c[a+116>>2]=O_((c[a+32>>2]|0)*10|0,c[b>>2]|0)|0;c[a+320>>2]=10;c[a+324>>2]=10;g=10;break}if(!(e>>>0>(f*11|0)>>>0)){c[a+112>>2]=O_((c[a+28>>2]|0)*11|0,d)|0;c[a+116>>2]=O_((c[a+32>>2]|0)*11|0,c[b>>2]|0)|0;c[a+320>>2]=11;c[a+324>>2]=11;g=11;break}if(!(e>>>0>(f*12|0)>>>0)){c[a+112>>2]=O_((c[a+28>>2]|0)*12|0,d)|0;c[a+116>>2]=O_((c[a+32>>2]|0)*12|0,c[b>>2]|0)|0;c[a+320>>2]=12;c[a+324>>2]=12;g=12;break}if(!(e>>>0>(f*13|0)>>>0)){c[a+112>>2]=O_((c[a+28>>2]|0)*13|0,d)|0;c[a+116>>2]=O_((c[a+32>>2]|0)*13|0,c[b>>2]|0)|0;c[a+320>>2]=13;c[a+324>>2]=13;g=13;break}if(!(e>>>0>(f*14|0)>>>0)){c[a+112>>2]=O_((c[a+28>>2]|0)*14|0,d)|0;c[a+116>>2]=O_((c[a+32>>2]|0)*14|0,c[b>>2]|0)|0;c[a+320>>2]=14;c[a+324>>2]=14;g=14;break}h=c[a+28>>2]|0;if(e>>>0>(f*15|0)>>>0){c[a+112>>2]=O_(h<<4,d)|0;c[a+116>>2]=O_(c[a+32>>2]<<4,c[b>>2]|0)|0;c[a+320>>2]=16;c[a+324>>2]=16;g=16;break}else{c[a+112>>2]=O_(h*15|0,d)|0;c[a+116>>2]=O_((c[a+32>>2]|0)*15|0,c[b>>2]|0)|0;c[a+320>>2]=15;c[a+324>>2]=15;g=15;break}}else{c[a+112>>2]=O_(c[a+28>>2]|0,d)|0;c[a+116>>2]=O_(c[a+32>>2]|0,c[b>>2]|0)|0;c[a+320>>2]=1;c[a+324>>2]=1;g=1}}while(0);b=a+36|0;if((c[b>>2]|0)<=0){return}d=a+320|0;f=a+324|0;e=1;h=c[a+216>>2]|0;a=g;while(1){c[h+36>>2]=a;c[h+40>>2]=c[f>>2];if((e|0)>=(c[b>>2]|0)){break}e=e+1|0;h=h+88|0;a=c[d>>2]|0}return}function RX(a){a=a|0;var b=0;b=rk[c[c[a+4>>2]>>2]&63](a,0,28)|0;c[a+456>>2]=b;c[b>>2]=56;c[b+4>>2]=34;c[b+8>>2]=4;c[b+12>>2]=296;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;return}function SX(a){a=a|0;var b=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,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=a+456|0;d=c[b>>2]|0;e=d+20|0;if((c[e>>2]|0)!=0){f=2;return f|0}g=a+460|0;h=d+24|0;i=h;j=a+336|0;k=h|0;h=d+16|0;d=a|0;l=a;m=a+32|0;n=a+212|0;o=a+36|0;p=a+312|0;q=a+316|0;r=a+216|0;s=a+220|0;t=a+224|0;u=a+412|0;v=a+408|0;w=a+416|0;x=a+420|0;y=a+424|0;z=a+428|0;A=a+432|0;B=a+320|0;C=a+324|0;D=a+28|0;E=a+328|0;while(1){F=jk[c[(c[g>>2]|0)+4>>2]&255](a)|0;if((F|0)==2){G=56;break}else if((F|0)!=1){f=F;G=61;break}F=c[i>>2]|0;if((F|0)==0){if((c[h>>2]|0)==0){c[(c[d>>2]|0)+20>>2]=36;vk[c[c[d>>2]>>2]&511](l)}if((c[j>>2]|0)==0){continue}else{G=55;break}}else if((F|0)==1){G=5}a:do{if((G|0)==5){G=0;if((c[m>>2]|0)>65500){G=7}else{if((c[D>>2]|0)>65500){G=7}}if((G|0)==7){G=0;c[(c[d>>2]|0)+20>>2]=42;c[(c[d>>2]|0)+24>>2]=65500;vk[c[c[d>>2]>>2]&511](l)}if((c[n>>2]|0)!=8){c[(c[d>>2]|0)+20>>2]=16;c[(c[d>>2]|0)+24>>2]=c[n>>2];vk[c[c[d>>2]>>2]&511](l)}F=c[o>>2]|0;if((F|0)>10){c[(c[d>>2]|0)+20>>2]=27;c[(c[d>>2]|0)+24>>2]=c[o>>2];c[(c[d>>2]|0)+28>>2]=10;vk[c[c[d>>2]>>2]&511](l);H=c[o>>2]|0}else{H=F}c[p>>2]=1;c[q>>2]=1;if((H|0)>0){F=0;I=c[r>>2]|0;J=1;K=1;L=H;while(1){M=I+8|0;N=c[M>>2]|0;O=I+12|0;if((N-1|0)>>>0>3>>>0){G=16}else{if(((c[O>>2]|0)-1|0)>>>0>3>>>0){G=16}else{P=J;Q=N;R=K;S=L}}if((G|0)==16){G=0;c[(c[d>>2]|0)+20>>2]=19;vk[c[c[d>>2]>>2]&511](l);P=c[p>>2]|0;Q=c[M>>2]|0;R=c[q>>2]|0;S=c[o>>2]|0}M=(P|0)>(Q|0)?P:Q;c[p>>2]=M;N=c[O>>2]|0;O=(R|0)>(N|0)?R:N;c[q>>2]=O;N=F+1|0;if((N|0)<(S|0)){F=N;I=I+88|0;J=M;K=O;L=S}else{T=S;break}}}else{T=H}b:do{if((c[s>>2]|0)==0){if((c[t>>2]|0)!=0){if((c[j>>2]|0)!=0){G=21;break}}switch(c[u>>2]|0){case 24:{c[y>>2]=5;c[z>>2]=18048;c[A>>2]=24;U=5;V=T;break b;break};case 224:{c[y>>2]=15;c[z>>2]=18528;c[A>>2]=63;U=15;V=T;break b;break};case 255:{c[y>>2]=16;c[z>>2]=18528;c[A>>2]=63;U=16;V=T;break b;break};case 168:{c[y>>2]=13;c[z>>2]=18528;c[A>>2]=63;U=13;V=T;break b;break};case 195:{c[y>>2]=14;c[z>>2]=18528;c[A>>2]=63;U=14;V=T;break b;break};case 48:{c[y>>2]=7;c[z>>2]=17576;c[A>>2]=48;U=7;V=T;break b;break};case 120:{c[y>>2]=11;c[z>>2]=18528;c[A>>2]=63;U=11;V=T;break b;break};case 8:{c[y>>2]=3;c[z>>2]=18344;c[A>>2]=8;U=3;V=T;break b;break};case 143:{c[y>>2]=12;c[z>>2]=18528;c[A>>2]=63;U=12;V=T;break b;break};case 35:{c[y>>2]=6;c[z>>2]=17840;c[A>>2]=35;U=6;V=T;break b;break};case 63:{c[y>>2]=8;c[z>>2]=18528;c[A>>2]=63;U=8;V=T;break b;break};case 15:{c[y>>2]=4;c[z>>2]=18216;c[A>>2]=15;U=4;V=T;break b;break};case 3:{c[y>>2]=2;c[z>>2]=18448;c[A>>2]=3;U=2;V=T;break b;break};case 0:{c[y>>2]=1;c[z>>2]=18528;c[A>>2]=0;U=1;V=T;break b;break};case 80:{c[y>>2]=9;c[z>>2]=18528;c[A>>2]=63;U=9;V=T;break b;break};case 99:{c[y>>2]=10;c[z>>2]=18528;c[A>>2]=63;U=10;V=T;break b;break};default:{c[(c[d>>2]|0)+20>>2]=17;c[(c[d>>2]|0)+24>>2]=c[v>>2];c[(c[d>>2]|0)+28>>2]=c[u>>2];c[(c[d>>2]|0)+32>>2]=c[w>>2];c[(c[d>>2]|0)+36>>2]=c[x>>2];vk[c[c[d>>2]>>2]&511](l);U=c[y>>2]|0;V=c[o>>2]|0;break b}}}else{G=21}}while(0);if((G|0)==21){G=0;c[y>>2]=8;c[z>>2]=18528;c[A>>2]=63;U=8;V=T}c[B>>2]=U;c[C>>2]=U;if((V|0)>0){L=1;K=c[r>>2]|0;J=U;while(1){c[K+36>>2]=J;c[K+40>>2]=c[y>>2];I=K+8|0;F=da(c[I>>2]|0,c[D>>2]|0)|0;c[K+28>>2]=O_(F,da(c[y>>2]|0,c[p>>2]|0)|0)|0;F=K+12|0;O=da(c[F>>2]|0,c[m>>2]|0)|0;c[K+32>>2]=O_(O,da(c[y>>2]|0,c[q>>2]|0)|0)|0;O=da(c[I>>2]|0,c[D>>2]|0)|0;c[K+44>>2]=O_(O,c[p>>2]|0)|0;O=da(c[F>>2]|0,c[m>>2]|0)|0;c[K+48>>2]=O_(O,c[q>>2]|0)|0;c[K+52>>2]=1;c[K+80>>2]=0;if((L|0)>=(c[o>>2]|0)){break}L=L+1|0;K=K+88|0;J=c[y>>2]|0}W=c[y>>2]|0}else{W=U}c[E>>2]=O_(c[m>>2]|0,da(W,c[q>>2]|0)|0)|0;do{if((c[j>>2]|0)>=(c[o>>2]|0)){if((c[t>>2]|0)!=0){break}c[(c[b>>2]|0)+16>>2]=0;break a}}while(0);c[(c[b>>2]|0)+16>>2]=1}}while(0);if((c[j>>2]|0)!=0){G=51;break}c[k>>2]=2}if((G|0)==51){c[k>>2]=0;f=1;return f|0}else if((G|0)==55){UX(a);f=1;return f|0}else if((G|0)==56){c[e>>2]=1;if((c[i>>2]|0)==0){i=a+152|0;e=c[a+144>>2]|0;if((c[i>>2]|0)<=(e|0)){f=2;return f|0}c[i>>2]=e;f=2;return f|0}else{if((c[(c[g>>2]|0)+16>>2]|0)==0){f=2;return f|0}c[(c[d>>2]|0)+20>>2]=61;vk[c[c[d>>2]>>2]&511](l);f=2;return f|0}}else if((G|0)==61){return f|0}return 0}function TX(a){a=a|0;var b=0;b=c[a+456>>2]|0;c[b>>2]=56;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=1;vk[c[(c[a>>2]|0)+16>>2]&511](a);vk[c[c[a+460>>2]>>2]&511](a);c[a+160>>2]=0;return}function UX(a){a=a|0;var b=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;b=a+336|0;d=c[b>>2]|0;if((d|0)==1){e=c[a+340>>2]|0;c[a+356>>2]=c[e+28>>2];f=e+32|0;c[a+360>>2]=c[f>>2];c[e+56>>2]=1;c[e+60>>2]=1;c[e+64>>2]=1;c[e+68>>2]=c[e+36>>2];c[e+72>>2]=1;g=c[e+12>>2]|0;h=((c[f>>2]|0)>>>0)%(g>>>0)|0;c[e+76>>2]=(h|0)==0?g:h;c[a+364>>2]=1;c[a+368>>2]=0;i=c[b>>2]|0}else{if((d-1|0)>>>0>3>>>0){d=a|0;c[(c[d>>2]|0)+20>>2]=27;c[(c[d>>2]|0)+24>>2]=c[b>>2];c[(c[d>>2]|0)+28>>2]=4;vk[c[c[d>>2]>>2]&511](a)}d=a+424|0;c[a+356>>2]=O_(c[a+28>>2]|0,da(c[d>>2]|0,c[a+312>>2]|0)|0)|0;c[a+360>>2]=O_(c[a+32>>2]|0,da(c[d>>2]|0,c[a+316>>2]|0)|0)|0;d=a+364|0;c[d>>2]=0;if((c[b>>2]|0)<=0){j=a+464|0;k=c[j>>2]|0;l=k;m=c[l>>2]|0;vk[m&511](a);n=a+448|0;o=c[n>>2]|0;p=o;q=c[p>>2]|0;vk[q&511](a);r=c[n>>2]|0;s=r+4|0;t=c[s>>2]|0;u=a+456|0;v=c[u>>2]|0;w=v|0;c[w>>2]=t;return}h=a|0;g=a;e=0;while(1){f=c[a+340+(e<<2)>>2]|0;x=c[f+8>>2]|0;c[f+56>>2]=x;y=c[f+12>>2]|0;c[f+60>>2]=y;z=da(y,x)|0;c[f+64>>2]=z;c[f+68>>2]=da(c[f+36>>2]|0,x)|0;A=((c[f+28>>2]|0)>>>0)%(x>>>0)|0;c[f+72>>2]=(A|0)==0?x:A;A=((c[f+32>>2]|0)>>>0)%(y>>>0)|0;c[f+76>>2]=(A|0)==0?y:A;if(((c[d>>2]|0)+z|0)>10){c[(c[h>>2]|0)+20>>2]=14;vk[c[c[h>>2]>>2]&511](g)}if((z|0)>0){A=z;do{A=A-1|0;z=c[d>>2]|0;c[d>>2]=z+1;c[a+368+(z<<2)>>2]=e;}while((A|0)>0)}A=e+1|0;z=c[b>>2]|0;if((A|0)<(z|0)){e=A}else{i=z;break}}}if((i|0)<=0){j=a+464|0;k=c[j>>2]|0;l=k;m=c[l>>2]|0;vk[m&511](a);n=a+448|0;o=c[n>>2]|0;p=o;q=c[p>>2]|0;vk[q&511](a);r=c[n>>2]|0;s=r+4|0;t=c[s>>2]|0;u=a+456|0;v=c[u>>2]|0;w=v|0;c[w>>2]=t;return}e=a|0;d=a;g=a+4|0;h=0;z=i;while(1){i=c[a+340+(h<<2)>>2]|0;A=i+80|0;if((c[A>>2]|0)==0){y=c[i+16>>2]|0;i=a+164+(y<<2)|0;if(y>>>0>3>>>0){B=17}else{if((c[i>>2]|0)==0){B=17}}if((B|0)==17){B=0;c[(c[e>>2]|0)+20>>2]=54;c[(c[e>>2]|0)+24>>2]=y;vk[c[c[e>>2]>>2]&511](d)}y=rk[c[c[g>>2]>>2]&63](d,1,132)|0;m$(y|0,c[i>>2]|0,132)|0;c[A>>2]=y;C=c[b>>2]|0}else{C=z}y=h+1|0;if((y|0)<(C|0)){h=y;z=C}else{break}}j=a+464|0;k=c[j>>2]|0;l=k;m=c[l>>2]|0;vk[m&511](a);n=a+448|0;o=c[n>>2]|0;p=o;q=c[p>>2]|0;vk[q&511](a);r=c[n>>2]|0;s=r+4|0;t=c[s>>2]|0;u=a+456|0;v=c[u>>2]|0;w=v|0;c[w>>2]=t;return}function VX(a){a=a|0;c[c[a+456>>2]>>2]=56;return}function WX(a,b){a=a|0;b=b|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;d=a+4|0;e=a;f=rk[c[c[d>>2]>>2]&63](e,1,80)|0;g=a+444|0;c[g>>2]=f;c[f>>2]=24;if((b|0)!=0){b=a|0;c[(c[b>>2]|0)+20>>2]=3;vk[c[c[b>>2]>>2]&511](e)}b=a+324|0;h=c[b>>2]|0;if((c[(c[a+472>>2]|0)+8>>2]|0)==0){i=h;j=c[a+36>>2]|0;k=h}else{if((h|0)<2){l=a|0;c[(c[l>>2]|0)+20>>2]=48;vk[c[c[l>>2]>>2]&511](e);m=c[b>>2]|0}else{m=h}h=c[g>>2]|0;g=a+36|0;l=rk[c[c[d>>2]>>2]&63](e,1,c[g>>2]<<3)|0;n=h+56|0;o=n;c[n>>2]=l;n=h+60|0;c[n>>2]=l+(c[g>>2]<<2);l=c[g>>2]|0;if((l|0)>0){h=m+4|0;m=c[a+216>>2]|0;p=0;while(1){q=da(c[m+40>>2]|0,c[m+12>>2]|0)|0;r=(q|0)/(c[b>>2]|0)|0;q=da(r,h)|0;s=rk[c[c[d>>2]>>2]&63](e,1,q<<3)|0;c[(c[o>>2]|0)+(p<<2)>>2]=s+(r<<2);c[(c[n>>2]|0)+(p<<2)>>2]=s+(q+r<<2);r=p+1|0;q=c[g>>2]|0;if((r|0)<(q|0)){m=m+88|0;p=r}else{t=q;break}}}else{t=l}l=c[b>>2]|0;i=l+2|0;j=t;k=l}l=a+36|0;if((j|0)<=0){return}j=f+8|0;f=0;t=c[a+216>>2]|0;a=k;while(1){k=(da(c[t+40>>2]|0,c[t+12>>2]|0)|0)/(a|0)|0;p=da(c[t+36>>2]|0,c[t+28>>2]|0)|0;m=da(k,i)|0;c[j+(f<<2)>>2]=Wk[c[(c[d>>2]|0)+8>>2]&63](e,1,p,m)|0;m=f+1|0;if((m|0)>=(c[l>>2]|0)){break}f=m;t=t+88|0;a=c[b>>2]|0}return}function XX(a,b){a=a|0;b=b|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;d=a+444|0;e=c[d>>2]|0;if((b|0)==0){f=e+4|0;if((c[(c[a+472>>2]|0)+8>>2]|0)==0){c[f>>2]=34}else{c[f>>2]=30;f=c[d>>2]|0;d=a+324|0;g=c[d>>2]|0;h=a+36|0;a:do{if((c[h>>2]|0)>0){i=f+56|0;j=f+60|0;k=f+8|0;l=g+2|0;m=g-2|0;n=c[a+216>>2]|0;o=0;p=g;while(1){q=(da(c[n+40>>2]|0,c[n+12>>2]|0)|0)/(p|0)|0;r=c[(c[i>>2]|0)+(o<<2)>>2]|0;s=c[(c[j>>2]|0)+(o<<2)>>2]|0;t=c[k+(o<<2)>>2]|0;u=da(q,l)|0;if((u|0)>0){v=0;do{w=c[t+(v<<2)>>2]|0;c[s+(v<<2)>>2]=w;c[r+(v<<2)>>2]=w;v=v+1|0;}while((v|0)<(u|0))}u=q<<1;if((q|0)>0){v=da(q,g)|0;w=da(q,m)|0;x=0;while(1){y=x+v|0;z=x+w|0;c[s+(z<<2)>>2]=c[t+(y<<2)>>2];c[s+(y<<2)>>2]=c[t+(z<<2)>>2];z=x+1|0;if((z|0)<(u|0)){x=z}else{A=0;break}}do{c[r+(A-q<<2)>>2]=c[r>>2];A=A+1|0;}while((A|0)<(q|0))}q=o+1|0;if((q|0)>=(c[h>>2]|0)){break a}n=n+88|0;o=q;p=c[d>>2]|0}}}while(0);c[e+64>>2]=0;c[e+68>>2]=0;c[e+76>>2]=0}c[e+48>>2]=0;c[e+52>>2]=0;return}else if((b|0)==2){c[e+4>>2]=118;return}else{e=a|0;c[(c[e>>2]|0)+20>>2]=3;vk[c[c[e>>2]>>2]&511](a);return}}function YX(a,b,d,e){a=a|0;b=b|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,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=a+444|0;g=c[f>>2]|0;h=g+48|0;do{if((c[h>>2]|0)==0){if((Kk[c[(c[a+448>>2]|0)+12>>2]&255](a,c[g+56+(c[g+64>>2]<<2)>>2]|0)|0)==0){return}else{c[h>>2]=1;i=g+76|0;c[i>>2]=(c[i>>2]|0)+1;break}}}while(0);i=g+68|0;j=c[i>>2]|0;do{if((j|0)==1){k=g+52|0}else if((j|0)==2){l=g+52|0;m=l;n=g+72|0;Gk[c[(c[a+452>>2]|0)+4>>2]&63](a,c[g+56+(c[g+64>>2]<<2)>>2]|0,m,c[n>>2]|0,b,d,e);if((c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0){return}c[i>>2]=0;if((c[d>>2]|0)>>>0>>0){o=l;p=9;break}return}else if((j|0)==0){o=g+52|0;p=9}else{return}}while(0);if((p|0)==9){c[o>>2]=0;p=a+324|0;c[g+72>>2]=(c[p>>2]|0)-1;a:do{if((c[g+76>>2]|0)==(c[a+328>>2]|0)){j=c[f>>2]|0;l=a+36|0;if((c[l>>2]|0)<=0){break}n=j+72|0;m=j+64|0;q=j+56|0;j=c[a+216>>2]|0;r=0;while(1){s=da(c[j+40>>2]|0,c[j+12>>2]|0)|0;t=(s|0)/(c[p>>2]|0)|0;u=((c[j+48>>2]|0)>>>0)%(s>>>0)|0;v=(u|0)==0?s:u;if((r|0)==0){c[n>>2]=((v-1|0)/(t|0)|0)+1}u=c[(c[q+(c[m>>2]<<2)>>2]|0)+(r<<2)>>2]|0;s=t<<1;if((t|0)>0){t=u+(v-1<<2)|0;w=0;do{c[u+(w+v<<2)>>2]=c[t>>2];w=w+1|0;}while((w|0)<(s|0))}s=r+1|0;if((s|0)>=(c[l>>2]|0)){break a}j=j+88|0;r=s}}}while(0);c[i>>2]=1;k=o}o=g+64|0;p=o;r=k;j=g+72|0;l=j;Gk[c[(c[a+452>>2]|0)+4>>2]&63](a,c[g+56+(c[p>>2]<<2)>>2]|0,r,c[l>>2]|0,b,d,e);if((c[r>>2]|0)>>>0<(c[l>>2]|0)>>>0){return}b:do{if((c[g+76>>2]|0)==1){l=c[f>>2]|0;r=a+324|0;e=c[r>>2]|0;d=a+36|0;b=c[d>>2]|0;if((b|0)<=0){x=r;break}m=l+56|0;q=l+60|0;l=e+1|0;n=e+2|0;s=c[a+216>>2]|0;w=0;t=b;b=e;while(1){e=(da(c[s+40>>2]|0,c[s+12>>2]|0)|0)/(b|0)|0;v=c[(c[m>>2]|0)+(w<<2)>>2]|0;u=c[(c[q>>2]|0)+(w<<2)>>2]|0;if((e|0)>0){y=da(e,l)|0;z=da(e,n)|0;A=0;do{B=A+y|0;C=A-e|0;c[v+(C<<2)>>2]=c[v+(B<<2)>>2];c[u+(C<<2)>>2]=c[u+(B<<2)>>2];B=A+z|0;c[v+(B<<2)>>2]=c[v+(A<<2)>>2];c[u+(B<<2)>>2]=c[u+(A<<2)>>2];A=A+1|0;}while((A|0)<(e|0));D=c[d>>2]|0}else{D=t}e=w+1|0;if((e|0)>=(D|0)){x=r;break b}s=s+88|0;w=e;t=D;b=c[r>>2]|0}}else{x=a+324|0}}while(0);c[o>>2]=c[p>>2]^1;c[h>>2]=0;c[k>>2]=(c[x>>2]|0)+1;c[j>>2]=(c[x>>2]|0)+2;c[i>>2]=2;return}function ZX(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=c[a+444>>2]|0;g=f+48|0;do{if((c[g>>2]|0)==0){h=f+8|0;if((Kk[c[(c[a+448>>2]|0)+12>>2]&255](a,h)|0)==0){return}else{c[g>>2]=1;i=h;break}}else{i=f+8|0}}while(0);h=c[a+324>>2]|0;j=f+52|0;f=j;Gk[c[(c[a+452>>2]|0)+4>>2]&63](a,i,f,h,b,d,e);if((c[f>>2]|0)>>>0>>0){return}c[g>>2]=0;c[j>>2]=0;return}function _X(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;Gk[c[(c[a+452>>2]|0)+4>>2]&63](a,0,0,0,b,d,e);return}function $X(a,b){a=a|0;b=b|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;d=a+436|0;e=c[d>>2]|0;f=a|0;c[(c[f>>2]|0)+20>>2]=124;c[(c[f>>2]|0)+24>>2]=e;c[(c[f>>2]|0)+28>>2]=b;g=a;hk[c[(c[f>>2]|0)+4>>2]&255](g,-1);h=b+1&7|208;i=b+2&7|208;j=b+7&7|208;k=b+6&7|208;b=e;a:while(1){e=(b-208|0)>>>0>7>>>0;l=(b|0)==(h|0);m=(b|0)==(i|0);n=(b|0)==(j|0);o=(b|0)==(k|0)?2:1;do{if((b|0)<192){c[(c[f>>2]|0)+20>>2]=99;p=(c[f>>2]|0)+24|0;if(e){c[p>>2]=b;c[(c[f>>2]|0)+28>>2]=2;hk[c[(c[f>>2]|0)+4>>2]&255](g,4);break}if(l){c[p>>2]=h;c[(c[f>>2]|0)+28>>2]=2;hk[c[(c[f>>2]|0)+4>>2]&255](g,4);break}else{c[p>>2]=b;c[(c[f>>2]|0)+28>>2]=2;hk[c[(c[f>>2]|0)+4>>2]&255](g,4);break}}else{if(e){q=10;break a}if(l){q=11;break a}while(1){if(m){r=3}else{r=n?2:o}c[(c[f>>2]|0)+20>>2]=99;c[(c[f>>2]|0)+24>>2]=b;c[(c[f>>2]|0)+28>>2]=r;hk[c[(c[f>>2]|0)+4>>2]&255](g,4);if((r|0)==2){break}else if((r|0)==1){q=15;break a}else if((r|0)==3){s=1;q=18;break a}}}}while(0);if((aY(a)|0)==0){s=0;q=18;break}b=c[d>>2]|0}if((q|0)==10){c[(c[f>>2]|0)+20>>2]=99;c[(c[f>>2]|0)+24>>2]=b;c[(c[f>>2]|0)+28>>2]=3;hk[c[(c[f>>2]|0)+4>>2]&255](g,4);s=1;return s|0}else if((q|0)==11){c[(c[f>>2]|0)+20>>2]=99;c[(c[f>>2]|0)+24>>2]=h;c[(c[f>>2]|0)+28>>2]=3;hk[c[(c[f>>2]|0)+4>>2]&255](g,4);s=1;return s|0}else if((q|0)==15){c[d>>2]=0;s=1;return s|0}else if((q|0)==18){return s|0}return 0}function aY(b){b=b|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;d=c[b+24>>2]|0;e=d|0;f=d+4|0;g=d+12|0;d=b+460|0;h=c[f>>2]|0;i=c[e>>2]|0;a:while(1){if((h|0)==0){if((jk[c[g>>2]&255](b)|0)==0){j=0;k=19;break}l=c[f>>2]|0;m=c[e>>2]|0}else{l=h;m=i}n=l-1|0;o=m+1|0;if((a[m]|0)==-1){p=n;q=o}else{r=n;n=o;while(1){o=(c[d>>2]|0)+24|0;c[o>>2]=(c[o>>2]|0)+1;c[e>>2]=n;c[f>>2]=r;if((r|0)==0){if((jk[c[g>>2]&255](b)|0)==0){j=0;k=19;break a}s=c[f>>2]|0;t=c[e>>2]|0}else{s=r;t=n}o=s-1|0;u=t+1|0;if((a[t]|0)==-1){p=o;q=u;break}else{r=o;n=u}}}do{if((p|0)==0){if((jk[c[g>>2]&255](b)|0)==0){j=0;k=19;break a}v=c[f>>2]|0;w=c[e>>2]|0}else{v=p;w=q}p=v-1|0;q=w+1|0;x=a[w]|0;}while(x<<24>>24==-1);y=x&255;n=(c[d>>2]|0)+24|0;z=c[n>>2]|0;if(!(x<<24>>24==0)){k=16;break}c[n>>2]=z+2;c[e>>2]=q;c[f>>2]=p;h=p;i=q}if((k|0)==16){if((z|0)!=0){z=b|0;c[(c[z>>2]|0)+20>>2]=119;c[(c[z>>2]|0)+24>>2]=c[(c[d>>2]|0)+24>>2];c[(c[z>>2]|0)+28>>2]=y;hk[c[(c[z>>2]|0)+4>>2]&255](b,-1);c[(c[d>>2]|0)+24>>2]=0}c[b+436>>2]=y;c[e>>2]=q;c[f>>2]=p;j=1;return j|0}else if((k|0)==19){return j|0}return 0}function bY(a){a=a|0;var b=0,d=0;b=rk[c[c[a+4>>2]>>2]&63](a,0,172)|0;d=a+460|0;c[d>>2]=b;c[b>>2]=232;c[b+4>>2]=116;c[b+8>>2]=54;c[b+28>>2]=60;c[b+96>>2]=0;c[b+100>>2]=0;c[b+36>>2]=60;c[b+104>>2]=0;c[b+40>>2]=60;c[b+108>>2]=0;c[b+44>>2]=60;c[b+112>>2]=0;c[b+48>>2]=60;c[b+116>>2]=0;c[b+52>>2]=60;c[b+120>>2]=0;c[b+56>>2]=60;c[b+124>>2]=0;c[b+60>>2]=60;c[b+128>>2]=0;c[b+64>>2]=60;c[b+132>>2]=0;c[b+68>>2]=60;c[b+136>>2]=0;c[b+72>>2]=60;c[b+140>>2]=0;c[b+76>>2]=60;c[b+144>>2]=0;c[b+80>>2]=60;c[b+148>>2]=0;c[b+84>>2]=60;c[b+152>>2]=0;c[b+156>>2]=0;c[b+92>>2]=60;c[b+160>>2]=0;c[b+32>>2]=106;c[b+88>>2]=106;b=c[d>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+436>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function cY(a){a=a|0;var b=0;b=c[a+460>>2]|0;c[a+216>>2]=0;c[a+144>>2]=0;c[a+436>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+24>>2]=0;c[b+164>>2]=0;return}function dY(f){f=f|0;var g=0,h=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,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,_=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,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,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=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=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0;g=i;i=i+280|0;h=g|0;j=g+24|0;k=f+436|0;l=f+460|0;m=f+24|0;n=f|0;o=f;p=f+232|0;q=f+248|0;r=f+264|0;s=f+233|0;t=f+249|0;u=f+265|0;v=f+234|0;w=f+250|0;x=f+266|0;y=f+235|0;z=f+251|0;A=f+267|0;B=f+236|0;C=f+252|0;D=f+268|0;E=f+237|0;F=f+253|0;G=f+269|0;H=f+238|0;I=f+254|0;J=f+270|0;K=f+239|0;L=f+255|0;M=f+271|0;N=f+240|0;O=f+256|0;P=f+272|0;Q=f+241|0;R=f+257|0;S=f+273|0;T=f+242|0;U=f+258|0;V=f+274|0;W=f+243|0;X=f+259|0;Y=f+275|0;Z=f+244|0;_=f+260|0;$=f+276|0;aa=f+245|0;ba=f+261|0;ca=f+277|0;da=f+246|0;ea=f+262|0;fa=f+278|0;ga=f+247|0;ha=f+263|0;ia=f+279|0;ja=f+280|0;ka=f+40|0;la=f+304|0;ma=f+284|0;na=f+288|0;oa=f+289|0;pa=f+290|0;qa=f+292|0;ra=f+294|0;sa=f+296|0;ta=f+300|0;ua=h|0;va=j|0;wa=h+1|0;xa=h+2|0;ya=h+3|0;za=h+4|0;Aa=h+5|0;Ba=h+6|0;Ca=h+7|0;Da=h+8|0;Ea=h+9|0;Fa=h+10|0;Ga=h+11|0;Ha=h+12|0;Ia=h+13|0;Ja=h+14|0;Ka=h+15|0;La=h+16|0;Ma=c[k>>2]|0;a:while(1){if((Ma|0)==0){if((c[(c[l>>2]|0)+12>>2]|0)==0){Na=c[m>>2]|0;Oa=Na|0;Pa=Na+4|0;Qa=c[Pa>>2]|0;if((Qa|0)==0){if((jk[c[Na+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break}Ta=c[Pa>>2]|0}else{Ta=Qa}Qa=c[Oa>>2]|0;Ua=Ta-1|0;Va=Qa+1|0;Wa=a[Qa]|0;Qa=Wa&255;if((Ua|0)==0){if((jk[c[Na+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break}Xa=c[Pa>>2]|0;Ya=c[Oa>>2]|0}else{Xa=Ua;Ya=Va}Va=a[Ya]|0;Ua=Va&255;if(!(Wa<<24>>24==-1&Va<<24>>24==-40)){c[(c[n>>2]|0)+20>>2]=55;c[(c[n>>2]|0)+24>>2]=Qa;c[(c[n>>2]|0)+28>>2]=Ua;vk[c[c[n>>2]>>2]&511](o)}c[k>>2]=Ua;c[Oa>>2]=Ya+1;c[Pa>>2]=Xa-1}else{if((aY(f)|0)==0){Ra=0;Sa=205;break}}Za=c[k>>2]|0}else{Za=Ma}b:do{switch(Za|0){case 217:{Sa=67;break a;break};case 204:{Pa=c[m>>2]|0;Oa=Pa|0;Ua=Pa+4|0;Qa=c[Ua>>2]|0;if((Qa|0)==0){if((jk[c[Pa+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}_a=c[Ua>>2]|0}else{_a=Qa}Qa=c[Oa>>2]|0;Va=_a-1|0;Wa=Qa+1|0;Na=(d[Qa]|0)<<8;if((Va|0)==0){if((jk[c[Pa+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}$a=c[Ua>>2]|0;ab=c[Oa>>2]|0}else{$a=Va;ab=Wa}Wa=$a-1|0;Va=ab+1|0;Qa=(d[ab]|0|Na)-2|0;if((Qa|0)>0){Na=Pa+12|0;Pa=Qa;bb=Va;cb=Wa;while(1){if((cb|0)==0){if((jk[c[Na>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}db=c[Ua>>2]|0;eb=c[Oa>>2]|0}else{db=cb;eb=bb}fb=db-1|0;gb=eb+1|0;hb=a[eb]|0;ib=hb&255;if((fb|0)==0){if((jk[c[Na>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}jb=c[Ua>>2]|0;kb=c[Oa>>2]|0}else{jb=fb;kb=gb}gb=jb-1|0;fb=kb+1|0;lb=a[kb]|0;mb=lb&255;nb=Pa-2|0;c[(c[n>>2]|0)+20>>2]=81;c[(c[n>>2]|0)+24>>2]=ib;c[(c[n>>2]|0)+28>>2]=mb;hk[c[(c[n>>2]|0)+4>>2]&255](o,1);do{if((hb&255)>>>0>31>>>0){c[(c[n>>2]|0)+20>>2]=29;c[(c[n>>2]|0)+24>>2]=ib;vk[c[c[n>>2]>>2]&511](o);Sa=85}else{if((hb&255)>>>0>15>>>0){Sa=85;break}ob=lb&15;a[f+232+ib|0]=ob;pb=(lb&255)>>>4;a[f+248+ib|0]=pb;if(!((ob&255)>>>0>(pb&255)>>>0)){break}c[(c[n>>2]|0)+20>>2]=30;c[(c[n>>2]|0)+24>>2]=mb;vk[c[c[n>>2]>>2]&511](o)}}while(0);if((Sa|0)==85){Sa=0;a[ib-16+(f+264)|0]=lb}if((nb|0)>0){Pa=nb;bb=fb;cb=gb}else{qb=nb;rb=fb;sb=gb;break}}}else{qb=Qa;rb=Va;sb=Wa}if((qb|0)!=0){c[(c[n>>2]|0)+20>>2]=12;vk[c[c[n>>2]>>2]&511](o)}c[Oa>>2]=rb;c[Ua>>2]=sb;break};case 219:{cb=c[m>>2]|0;bb=cb|0;Pa=cb+4|0;Na=c[Pa>>2]|0;if((Na|0)==0){if((jk[c[cb+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}tb=c[Pa>>2]|0}else{tb=Na}Na=c[bb>>2]|0;mb=tb-1|0;hb=Na+1|0;pb=(d[Na]|0)<<8;if((mb|0)==0){if((jk[c[cb+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}ub=c[Pa>>2]|0;vb=c[bb>>2]|0}else{ub=mb;vb=hb}hb=ub-1|0;mb=vb+1|0;Na=(d[vb]|0|pb)-2|0;if((Na|0)>0){pb=cb+12|0;cb=Na;ob=mb;wb=hb;while(1){xb=cb-1|0;if((wb|0)==0){if((jk[c[pb>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}yb=c[Pa>>2]|0;zb=c[bb>>2]|0}else{yb=wb;zb=ob}Ab=d[zb]|0;Bb=Ab>>>4;Cb=Ab&15;c[(c[n>>2]|0)+20>>2]=83;c[(c[n>>2]|0)+24>>2]=Cb;c[(c[n>>2]|0)+28>>2]=Bb;hk[c[(c[n>>2]|0)+4>>2]&255](o,1);if(Cb>>>0>3>>>0){c[(c[n>>2]|0)+20>>2]=32;c[(c[n>>2]|0)+24>>2]=Cb;vk[c[c[n>>2]>>2]&511](o)}Ab=f+164+(Cb<<2)|0;Cb=c[Ab>>2]|0;if((Cb|0)==0){Db=AW(o)|0;c[Ab>>2]=Db;Eb=Db}else{Eb=Cb}Cb=(Bb|0)!=0;do{if(Cb){if((cb|0)<129){Fb=0}else{Sa=154;break}do{b[Eb+(Fb<<1)>>1]=1;Fb=Fb+1|0;}while((Fb|0)<64);Gb=xb>>1;Sa=147}else{if((cb|0)<65){Hb=0}else{Sa=154;break}while(1){b[Eb+(Hb<<1)>>1]=1;Bb=Hb+1|0;if((Bb|0)<64){Hb=Bb}else{Gb=xb;Sa=147;break}}}}while(0);c:do{if((Sa|0)==147){Sa=0;switch(Gb|0){case 9:{Ib=18344;Jb=Gb;break};case 16:{Ib=18216;Jb=Gb;break};case 25:{Ib=18048;Jb=Gb;break};case 36:{Ib=17840;Jb=Gb;break};case 49:{Ib=17576;Jb=Gb;break};case 4:{Ib=18448;Jb=4;break};default:{gb=yb-1|0;fb=zb+1|0;if((Gb|0)>0){Kb=Gb;Lb=18528;Mb=gb;Nb=fb;Sa=156;break c}else{Ob=gb;Pb=fb;Qb=Gb;break c}}}Kb=Jb;Lb=Ib;Mb=yb-1|0;Nb=zb+1|0;Sa=156}else if((Sa|0)==154){Sa=0;Kb=64;Lb=18528;Mb=yb-1|0;Nb=zb+1|0;Sa=156}}while(0);if((Sa|0)==156){Sa=0;fb=0;gb=Mb;nb=Nb;while(1){lb=(gb|0)==0;if(Cb){if(lb){if((jk[c[pb>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}Rb=c[Pa>>2]|0;Sb=c[bb>>2]|0}else{Rb=gb;Sb=nb}ib=Rb-1|0;Bb=Sb+1|0;Db=(d[Sb]|0)<<8;if((ib|0)==0){if((jk[c[pb>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}Tb=c[Pa>>2]|0;Ub=c[bb>>2]|0}else{Tb=ib;Ub=Bb}Vb=Tb;Wb=Ub;Xb=d[Ub]|0|Db}else{if(lb){if((jk[c[pb>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}Yb=c[Pa>>2]|0;Zb=c[bb>>2]|0}else{Yb=gb;Zb=nb}Vb=Yb;Wb=Zb;Xb=d[Zb]|0}b[Eb+(c[Lb+(fb<<2)>>2]<<1)>>1]=Xb;lb=fb+1|0;Db=Vb-1|0;Bb=Wb+1|0;if((lb|0)<(Kb|0)){fb=lb;gb=Db;nb=Bb}else{Ob=Db;Pb=Bb;Qb=Kb;break}}}nb=c[n>>2]|0;d:do{if((c[nb+104>>2]|0)>1){gb=0;fb=nb;while(1){c[fb+24>>2]=e[Eb+(gb<<1)>>1]|0;c[fb+28>>2]=e[Eb+((gb|1)<<1)>>1]|0;c[fb+32>>2]=e[Eb+((gb|2)<<1)>>1]|0;c[fb+36>>2]=e[Eb+((gb|3)<<1)>>1]|0;c[fb+40>>2]=e[Eb+((gb|4)<<1)>>1]|0;c[fb+44>>2]=e[Eb+((gb|5)<<1)>>1]|0;c[fb+48>>2]=e[Eb+((gb|6)<<1)>>1]|0;c[fb+52>>2]=e[Eb+((gb|7)<<1)>>1]|0;c[(c[n>>2]|0)+20>>2]=95;hk[c[(c[n>>2]|0)+4>>2]&255](o,2);Bb=gb+8|0;if((Bb|0)>=64){break d}gb=Bb;fb=c[n>>2]|0}}}while(0);nb=xb-Qb+(Cb?-Qb|0:0)|0;if((nb|0)>0){cb=nb;ob=Pb;wb=Ob}else{_b=nb;$b=Pb;ac=Ob;break}}}else{_b=Na;$b=mb;ac=hb}if((_b|0)!=0){c[(c[n>>2]|0)+20>>2]=12;vk[c[c[n>>2]>>2]&511](o)}c[bb>>2]=$b;c[Pa>>2]=ac;break};case 193:{if((iY(f,0,0,0)|0)==0){Ra=0;Sa=205;break a}break};case 201:{if((iY(f,0,0,1)|0)==0){Ra=0;Sa=205;break a}break};case 194:{if((iY(f,0,1,0)|0)==0){Ra=0;Sa=205;break a}break};case 195:case 197:case 198:case 199:case 200:case 203:case 205:case 206:case 207:{c[(c[n>>2]|0)+20>>2]=62;c[(c[n>>2]|0)+24>>2]=c[k>>2];vk[c[c[n>>2]>>2]&511](o);break};case 216:{c[(c[n>>2]|0)+20>>2]=104;hk[c[(c[n>>2]|0)+4>>2]&255](o,1);wb=c[l>>2]|0;if((c[wb+12>>2]|0)==0){bc=wb}else{c[(c[n>>2]|0)+20>>2]=63;vk[c[c[n>>2]>>2]&511](o);bc=c[l>>2]|0}a[p]=0;a[q]=1;a[r]=5;a[s]=0;a[t]=1;a[u]=5;a[v]=0;a[w]=1;a[x]=5;a[y]=0;a[z]=1;a[A]=5;a[B]=0;a[C]=1;a[D]=5;a[E]=0;a[F]=1;a[G]=5;a[H]=0;a[I]=1;a[J]=5;a[K]=0;a[L]=1;a[M]=5;a[N]=0;a[O]=1;a[P]=5;a[Q]=0;a[R]=1;a[S]=5;a[T]=0;a[U]=1;a[V]=5;a[W]=0;a[X]=1;a[Y]=5;a[Z]=0;a[_]=1;a[$]=5;a[aa]=0;a[ba]=1;a[ca]=5;a[da]=0;a[ea]=1;a[fa]=5;a[ga]=0;a[ha]=1;a[ia]=5;c[ja>>2]=0;c[ka>>2]=0;c[la>>2]=0;c[ma>>2]=0;a[na]=1;a[oa]=1;a[pa]=0;b[qa>>1]=1;b[ra>>1]=1;c[sa>>2]=0;a[ta]=0;c[bc+12>>2]=1;break};case 218:{Sa=25;break a;break};case 192:{if((iY(f,1,0,0)|0)==0){Ra=0;Sa=205;break a}break};case 202:{if((iY(f,0,1,1)|0)==0){Ra=0;Sa=205;break a}break};case 196:{wb=c[m>>2]|0;ob=wb|0;cb=wb+4|0;pb=c[cb>>2]|0;if((pb|0)==0){if((jk[c[wb+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}cc=c[cb>>2]|0}else{cc=pb}pb=c[ob>>2]|0;Ua=cc-1|0;Oa=pb+1|0;Wa=(d[pb]|0)<<8;if((Ua|0)==0){if((jk[c[wb+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}dc=c[cb>>2]|0;ec=c[ob>>2]|0}else{dc=Ua;ec=Oa}Oa=dc-1|0;Ua=ec+1|0;pb=(d[ec]|0|Wa)-2|0;if((pb|0)>16){Wa=wb+12|0;wb=Ua;Va=Oa;Qa=pb;while(1){if((Va|0)==0){if((jk[c[Wa>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}fc=c[cb>>2]|0;gc=c[ob>>2]|0}else{fc=Va;gc=wb}nb=d[gc]|0;c[(c[n>>2]|0)+20>>2]=82;c[(c[n>>2]|0)+24>>2]=nb;hk[c[(c[n>>2]|0)+4>>2]&255](o,1);a[ua]=0;fb=0;gb=1;Bb=fc-1|0;Db=gc+1|0;do{if((Bb|0)==0){if((jk[c[Wa>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}hc=c[cb>>2]|0;ic=c[ob>>2]|0}else{hc=Bb;ic=Db}lb=a[ic]|0;a[h+gb|0]=lb;fb=(lb&255)+fb|0;gb=gb+1|0;Bb=hc-1|0;Db=ic+1|0;}while((gb|0)<17);gb=Qa-17|0;Cb=c[n>>2]|0;c[Cb+24>>2]=d[wa]|0;c[Cb+28>>2]=d[xa]|0;c[Cb+32>>2]=d[ya]|0;c[Cb+36>>2]=d[za]|0;c[Cb+40>>2]=d[Aa]|0;c[Cb+44>>2]=d[Ba]|0;c[Cb+48>>2]=d[Ca]|0;c[Cb+52>>2]=d[Da]|0;c[(c[n>>2]|0)+20>>2]=88;hk[c[(c[n>>2]|0)+4>>2]&255](o,2);Cb=c[n>>2]|0;c[Cb+24>>2]=d[Ea]|0;c[Cb+28>>2]=d[Fa]|0;c[Cb+32>>2]=d[Ga]|0;c[Cb+36>>2]=d[Ha]|0;c[Cb+40>>2]=d[Ia]|0;c[Cb+44>>2]=d[Ja]|0;c[Cb+48>>2]=d[Ka]|0;c[Cb+52>>2]=d[La]|0;c[(c[n>>2]|0)+20>>2]=88;hk[c[(c[n>>2]|0)+4>>2]&255](o,2);if((fb|0)>256|(fb|0)>(gb|0)){c[(c[n>>2]|0)+20>>2]=9;vk[c[c[n>>2]>>2]&511](o)}if((fb|0)>0){Cb=0;xb=Db;lb=Bb;while(1){if((lb|0)==0){if((jk[c[Wa>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}jc=c[cb>>2]|0;kc=c[ob>>2]|0}else{jc=lb;kc=xb}ib=jc-1|0;Ab=kc+1|0;a[j+Cb|0]=a[kc]|0;lc=Cb+1|0;if((lc|0)<(fb|0)){Cb=lc;xb=Ab;lb=ib}else{mc=Ab;nc=ib;break}}}else{mc=Db;nc=Bb}lb=gb-fb|0;if((nb&16|0)==0){oc=f+180+(nb<<2)|0;pc=nb}else{xb=nb-16|0;oc=f+196+(xb<<2)|0;pc=xb}if(pc>>>0>3>>>0){c[(c[n>>2]|0)+20>>2]=31;c[(c[n>>2]|0)+24>>2]=pc;vk[c[c[n>>2]>>2]&511](o)}xb=c[oc>>2]|0;if((xb|0)==0){Cb=BW(o)|0;c[oc>>2]=Cb;qc=Cb}else{qc=xb}m$(qc|0,ua|0,17)|0;m$((c[oc>>2]|0)+17|0,va|0,256)|0;if((lb|0)>16){wb=mc;Va=nc;Qa=lb}else{rc=mc;sc=nc;tc=lb;break}}}else{rc=Ua;sc=Oa;tc=pb}if((tc|0)!=0){c[(c[n>>2]|0)+20>>2]=12;vk[c[c[n>>2]>>2]&511](o)}c[ob>>2]=rc;c[cb>>2]=sc;break};case 221:{Qa=c[m>>2]|0;Va=Qa|0;wb=Qa+4|0;Wa=c[wb>>2]|0;if((Wa|0)==0){if((jk[c[Qa+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}uc=c[wb>>2]|0}else{uc=Wa}Wa=c[Va>>2]|0;Pa=uc-1|0;bb=Wa+1|0;hb=(d[Wa]|0)<<8;if((Pa|0)==0){if((jk[c[Qa+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}vc=c[wb>>2]|0;wc=c[Va>>2]|0}else{vc=Pa;wc=bb}bb=vc-1|0;Pa=wc+1|0;if((d[wc]|0|hb|0)!=4){c[(c[n>>2]|0)+20>>2]=12;vk[c[c[n>>2]>>2]&511](o)}if((bb|0)==0){if((jk[c[Qa+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}xc=c[wb>>2]|0;yc=c[Va>>2]|0}else{xc=bb;yc=Pa}Pa=xc-1|0;bb=yc+1|0;hb=(d[yc]|0)<<8;if((Pa|0)==0){if((jk[c[Qa+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}zc=c[wb>>2]|0;Ac=c[Va>>2]|0}else{zc=Pa;Ac=bb}bb=d[Ac]|0|hb;c[(c[n>>2]|0)+20>>2]=84;c[(c[n>>2]|0)+24>>2]=bb;hk[c[(c[n>>2]|0)+4>>2]&255](o,1);c[ja>>2]=bb;c[Va>>2]=Ac+1;c[wb>>2]=zc-1;break};case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239:{if((jk[c[(c[l>>2]|0)+32+(Za-224<<2)>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}break};case 254:{if((jk[c[(c[l>>2]|0)+28>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}break};case 208:case 209:case 210:case 211:case 212:case 213:case 214:case 215:case 1:{c[(c[n>>2]|0)+20>>2]=94;c[(c[n>>2]|0)+24>>2]=c[k>>2];hk[c[(c[n>>2]|0)+4>>2]&255](o,1);break};case 220:{wb=c[m>>2]|0;Va=wb|0;bb=wb+4|0;hb=c[bb>>2]|0;if((hb|0)==0){if((jk[c[wb+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}Bc=c[bb>>2]|0}else{Bc=hb}hb=c[Va>>2]|0;Pa=Bc-1|0;Qa=hb+1|0;Wa=(d[hb]|0)<<8;if((Pa|0)==0){if((jk[c[wb+12>>2]&255](f)|0)==0){Ra=0;Sa=205;break a}Cc=c[bb>>2]|0;Dc=c[Va>>2]|0}else{Cc=Pa;Dc=Qa}Qa=(d[Dc]|0|Wa)-2|0;c[(c[n>>2]|0)+20>>2]=93;c[(c[n>>2]|0)+24>>2]=c[k>>2];c[(c[n>>2]|0)+28>>2]=Qa;hk[c[(c[n>>2]|0)+4>>2]&255](o,1);c[Va>>2]=Dc+1;c[bb>>2]=Cc-1;if((Qa|0)<=0){break b}hk[c[(c[m>>2]|0)+16>>2]&255](f,Qa);break};default:{c[(c[n>>2]|0)+20>>2]=70;c[(c[n>>2]|0)+24>>2]=c[k>>2];vk[c[c[n>>2]>>2]&511](o)}}}while(0);c[k>>2]=0;Ma=0}if((Sa|0)==25){Ma=c[m>>2]|0;m=Ma|0;Cc=c[m>>2]|0;Dc=Ma+4|0;Bc=c[Dc>>2]|0;if((c[(c[l>>2]|0)+16>>2]|0)==0){c[(c[n>>2]|0)+20>>2]=64;vk[c[c[n>>2]>>2]&511](o)}do{if((Bc|0)==0){if((jk[c[Ma+12>>2]&255](f)|0)==0){Ra=0;i=g;return Ra|0}else{Ec=c[Dc>>2]|0;Fc=c[m>>2]|0;break}}else{Ec=Bc;Fc=Cc}}while(0);Cc=Ec-1|0;Ec=Fc+1|0;Bc=(d[Fc]|0)<<8;do{if((Cc|0)==0){if((jk[c[Ma+12>>2]&255](f)|0)==0){Ra=0;i=g;return Ra|0}else{Gc=c[Dc>>2]|0;Hc=c[m>>2]|0;break}}else{Gc=Cc;Hc=Ec}}while(0);Ec=Gc-1|0;Gc=Hc+1|0;Cc=d[Hc]|0|Bc;do{if((Ec|0)==0){if((jk[c[Ma+12>>2]&255](f)|0)==0){Ra=0;i=g;return Ra|0}else{Ic=c[Dc>>2]|0;Jc=c[m>>2]|0;break}}else{Ic=Ec;Jc=Gc}}while(0);Gc=a[Jc]|0;Ec=Gc&255;c[(c[n>>2]|0)+20>>2]=105;c[(c[n>>2]|0)+24>>2]=Ec;hk[c[(c[n>>2]|0)+4>>2]&255](o,1);do{if((Cc|0)!=((Ec<<1)+6|0)|(Gc&255)>>>0>4>>>0){Sa=41}else{if(!(Gc<<24>>24==0)){c[f+336>>2]=Ec;Bc=Ic-1|0;Kc=Bc;Lc=Jc+1|0;Mc=(Bc|0)==0;Sa=42;break}if((c[f+224>>2]|0)==0){Sa=41;break}c[f+336>>2]=Ec;Bc=Ic-1|0;if((Bc|0)==0){Nc=1;Sa=55}else{Oc=Bc;Pc=Jc+1|0;Qc=1}}}while(0);if((Sa|0)==41){c[(c[n>>2]|0)+20>>2]=12;vk[c[c[n>>2]>>2]&511](o);c[f+336>>2]=Ec;Cc=Ic-1|0;Ic=Jc+1|0;Jc=(Cc|0)==0;if(Gc<<24>>24==0){Rc=Cc;Sc=Ic;Tc=Jc;Uc=1;Sa=54}else{Kc=Cc;Lc=Ic;Mc=Jc;Sa=42}}e:do{if((Sa|0)==42){Jc=Ma+12|0;Ic=f+216|0;Cc=f+36|0;Gc=0;Bc=Kc;Hc=Lc;Fc=Mc;while(1){if(Fc){if((jk[c[Jc>>2]&255](f)|0)==0){Ra=0;Sa=205;break}Vc=c[Dc>>2]|0;Wc=c[m>>2]|0}else{Vc=Bc;Wc=Hc}Za=Vc-1|0;zc=Wc+1|0;Ac=d[Wc]|0;if((Za|0)==0){if((jk[c[Jc>>2]&255](f)|0)==0){Ra=0;Sa=205;break}Xc=c[Dc>>2]|0;Yc=c[m>>2]|0}else{Xc=Za;Yc=zc}zc=d[Yc]|0;Za=c[Ic>>2]|0;ja=c[Cc>>2]|0;f:do{if((ja|0)>0){yc=0;xc=Za;while(1){if((Ac|0)==(c[xc>>2]|0)){Zc=xc;break f}wc=yc+1|0;vc=xc+88|0;if((wc|0)<(ja|0)){yc=wc;xc=vc}else{_c=vc;Sa=52;break}}}else{_c=Za;Sa=52}}while(0);if((Sa|0)==52){Sa=0;c[(c[n>>2]|0)+20>>2]=4;c[(c[n>>2]|0)+24>>2]=Ac;vk[c[c[n>>2]>>2]&511](o);Zc=_c}c[f+340+(Gc<<2)>>2]=Zc;Za=Zc+20|0;c[Za>>2]=zc>>>4;ja=Zc+24|0;c[ja>>2]=zc&15;cb=c[n>>2]|0;c[cb+24>>2]=Ac;c[cb+28>>2]=c[Za>>2];c[cb+32>>2]=c[ja>>2];c[(c[n>>2]|0)+20>>2]=106;hk[c[(c[n>>2]|0)+4>>2]&255](o,1);ja=Gc+1|0;cb=Xc-1|0;Za=Yc+1|0;ob=(cb|0)==0;if((ja|0)<(Ec|0)){Gc=ja;Bc=cb;Hc=Za;Fc=ob}else{Rc=cb;Sc=Za;Tc=ob;Uc=0;Sa=54;break e}}if((Sa|0)==205){i=g;return Ra|0}}}while(0);if((Sa|0)==54){if(Tc){Nc=Uc;Sa=55}else{Oc=Rc;Pc=Sc;Qc=Uc}}do{if((Sa|0)==55){if((jk[c[Ma+12>>2]&255](f)|0)==0){Ra=0;i=g;return Ra|0}else{Oc=c[Dc>>2]|0;Pc=c[m>>2]|0;Qc=Nc;break}}}while(0);Nc=Oc-1|0;Oc=Pc+1|0;Uc=f+408|0;c[Uc>>2]=d[Pc]|0;do{if((Nc|0)==0){if((jk[c[Ma+12>>2]&255](f)|0)==0){Ra=0;i=g;return Ra|0}else{$c=c[Dc>>2]|0;ad=c[m>>2]|0;break}}else{$c=Nc;ad=Oc}}while(0);Oc=$c-1|0;$c=f+412|0;c[$c>>2]=d[ad]|0;do{if((Oc|0)==0){if((jk[c[Ma+12>>2]&255](f)|0)==0){Ra=0;i=g;return Ra|0}else{bd=c[Dc>>2]|0;cd=c[m>>2]|0;break}}else{bd=Oc;cd=ad+1|0}}while(0);ad=d[cd]|0;Oc=f+416|0;c[Oc>>2]=ad>>>4;Ma=f+420|0;c[Ma>>2]=ad&15;ad=c[n>>2]|0;c[ad+24>>2]=c[Uc>>2];c[ad+28>>2]=c[$c>>2];c[ad+32>>2]=c[Oc>>2];c[ad+36>>2]=c[Ma>>2];c[(c[n>>2]|0)+20>>2]=107;hk[c[(c[n>>2]|0)+4>>2]&255](o,1);c[(c[l>>2]|0)+20>>2]=0;if(!Qc){Qc=f+144|0;c[Qc>>2]=(c[Qc>>2]|0)+1}c[m>>2]=cd+1;c[Dc>>2]=bd-1;c[k>>2]=0;Ra=1;i=g;return Ra|0}else if((Sa|0)==67){c[(c[n>>2]|0)+20>>2]=87;hk[c[(c[n>>2]|0)+4>>2]&255](o,1);c[k>>2]=0;Ra=2;i=g;return Ra|0}else if((Sa|0)==205){i=g;return Ra|0}return 0}function eY(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+436|0;d=c[b>>2]|0;do{if((d|0)==0){if((aY(a)|0)==0){e=0;return e|0}else{f=c[b>>2]|0;break}}else{f=d}}while(0);d=a+460|0;g=c[(c[d>>2]|0)+20>>2]|0;do{if((f|0)==(g+208|0)){h=a|0;c[(c[h>>2]|0)+20>>2]=100;c[(c[h>>2]|0)+24>>2]=c[(c[d>>2]|0)+20>>2];hk[c[(c[h>>2]|0)+4>>2]&255](a,3);c[b>>2]=0}else{if((Kk[c[(c[a+24>>2]|0)+20>>2]&255](a,g)|0)==0){e=0}else{break}return e|0}}while(0);g=(c[d>>2]|0)+20|0;c[g>>2]=(c[g>>2]|0)+1&7;e=1;return e|0}function fY(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=a+24|0;e=c[b>>2]|0;f=e|0;g=e+4|0;h=c[g>>2]|0;do{if((h|0)==0){if((jk[c[e+12>>2]&255](a)|0)==0){i=0;return i|0}else{j=c[g>>2]|0;break}}else{j=h}}while(0);h=c[f>>2]|0;k=j-1|0;j=h+1|0;l=(d[h]|0)<<8;do{if((k|0)==0){if((jk[c[e+12>>2]&255](a)|0)==0){i=0;return i|0}else{m=c[g>>2]|0;n=c[f>>2]|0;break}}else{m=k;n=j}}while(0);j=(d[n]|0|l)-2|0;l=a|0;c[(c[l>>2]|0)+20>>2]=93;c[(c[l>>2]|0)+24>>2]=c[a+436>>2];c[(c[l>>2]|0)+28>>2]=j;hk[c[(c[l>>2]|0)+4>>2]&255](a,1);c[f>>2]=n+1;c[g>>2]=m-1;if((j|0)<=0){i=1;return i|0}hk[c[(c[b>>2]|0)+16>>2]&255](a,j);i=1;return i|0}function gY(b){b=b|0;var e=0,f=0,g=0,h=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;e=i;i=i+16|0;f=e|0;g=b+24|0;h=c[g>>2]|0;j=h|0;k=h+4|0;l=c[k>>2]|0;do{if((l|0)==0){if((jk[c[h+12>>2]&255](b)|0)==0){m=0;i=e;return m|0}else{n=c[k>>2]|0;break}}else{n=l}}while(0);l=c[j>>2]|0;o=n-1|0;n=l+1|0;p=d[l]<<8;do{if((o|0)==0){if((jk[c[h+12>>2]&255](b)|0)==0){m=0;i=e;return m|0}else{q=c[k>>2]|0;r=c[j>>2]|0;break}}else{q=o;r=n}}while(0);n=(d[r]|p)-2|0;if((n|0)>13){s=14;t=q-1|0;u=r+1|0;v=10}else{p=q-1|0;q=r+1|0;if((n|0)<1){w=p;x=q;y=0}else{s=n;t=p;u=q;v=10}}a:do{if((v|0)==10){q=h+12|0;p=0;r=t;o=u;while(1){if((r|0)==0){if((jk[c[q>>2]&255](b)|0)==0){m=0;break}z=c[k>>2]|0;A=c[j>>2]|0}else{z=r;A=o}a[f+p|0]=a[A]|0;l=p+1|0;B=z-1|0;C=A+1|0;if(l>>>0>>0){p=l;r=B;o=C}else{w=B;x=C;y=s;break a}}i=e;return m|0}}while(0);s=n-y|0;A=b+436|0;z=c[A>>2]|0;b:do{if((z|0)==238){do{if(y>>>0>11>>>0){if((a[f|0]|0)!=65){break}if((a[f+1|0]|0)!=100){break}if((a[f+2|0]|0)!=111){break}if((a[f+3|0]|0)!=98){break}if((a[f+4|0]|0)!=101){break}u=d[f+7|0]<<8|d[f+8|0];t=d[f+9|0]<<8|d[f+10|0];h=a[f+11|0]|0;v=b|0;o=c[v>>2]|0;c[o+24>>2]=d[f+5|0]<<8|d[f+6|0];c[o+28>>2]=u;c[o+32>>2]=t;c[o+36>>2]=h&255;c[(c[v>>2]|0)+20>>2]=78;hk[c[(c[v>>2]|0)+4>>2]&255](b,1);c[b+296>>2]=1;a[b+300|0]=h;break b}}while(0);h=b|0;c[(c[h>>2]|0)+20>>2]=80;c[(c[h>>2]|0)+24>>2]=n;hk[c[(c[h>>2]|0)+4>>2]&255](b,1)}else if((z|0)==224){hY(b,f|0,y,s)}else{h=b|0;c[(c[h>>2]|0)+20>>2]=70;c[(c[h>>2]|0)+24>>2]=c[A>>2];vk[c[c[h>>2]>>2]&511](b)}}while(0);c[j>>2]=x;c[k>>2]=w;if((s|0)<=0){m=1;i=e;return m|0}hk[c[(c[g>>2]|0)+16>>2]&255](b,s);m=1;i=e;return m|0}function hY(f,g,h,i){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,t=0;j=i+h|0;do{if(h>>>0>13>>>0){if((a[g]|0)!=74){break}if((a[g+1|0]|0)!=70){break}if((a[g+2|0]|0)!=73){break}if((a[g+3|0]|0)!=70){break}if((a[g+4|0]|0)!=0){break}c[f+284>>2]=1;i=a[g+5|0]|0;k=f+288|0;a[k]=i;l=f+289|0;a[l]=a[g+6|0]|0;m=f+290|0;a[m]=a[g+7|0]|0;n=f+292|0;b[n>>1]=d[g+8|0]<<8|d[g+9|0];o=f+294|0;b[o>>1]=d[g+10|0]<<8|d[g+11|0];p=f|0;if(i<<24>>24==1){q=1;r=f}else{c[(c[p>>2]|0)+20>>2]=122;c[(c[p>>2]|0)+24>>2]=d[k]|0;c[(c[p>>2]|0)+28>>2]=d[l]|0;i=f;hk[c[(c[p>>2]|0)+4>>2]&255](i,-1);q=d[k]|0;r=i}i=c[p>>2]|0;c[i+24>>2]=q;c[i+28>>2]=d[l]|0;c[i+32>>2]=e[n>>1]|0;c[i+36>>2]=e[o>>1]|0;c[i+40>>2]=d[m]|0;c[(c[p>>2]|0)+20>>2]=89;hk[c[(c[p>>2]|0)+4>>2]&255](r,1);m=g+12|0;i=a[m]|0;o=g+13|0;n=a[o]|0;if((n|i)<<24>>24==0){s=i;t=n}else{c[(c[p>>2]|0)+20>>2]=92;c[(c[p>>2]|0)+24>>2]=d[m]|0;c[(c[p>>2]|0)+28>>2]=d[o]|0;hk[c[(c[p>>2]|0)+4>>2]&255](r,1);s=a[m]|0;t=a[o]|0}o=j-14|0;if((o|0)==(da((s&255)*3|0,t&255)|0)){return}c[(c[p>>2]|0)+20>>2]=90;c[(c[p>>2]|0)+24>>2]=o;hk[c[(c[p>>2]|0)+4>>2]&255](r,1);return}}while(0);do{if(h>>>0>5>>>0){if((a[g]|0)!=74){break}if((a[g+1|0]|0)!=70){break}if((a[g+2|0]|0)!=88){break}if((a[g+3|0]|0)!=88){break}if((a[g+4|0]|0)!=0){break}r=g+5|0;t=d[r]|0;if((t|0)==19){s=f|0;c[(c[s>>2]|0)+20>>2]=112;c[(c[s>>2]|0)+24>>2]=j;hk[c[(c[s>>2]|0)+4>>2]&255](f,1);return}else if((t|0)==16){s=f|0;c[(c[s>>2]|0)+20>>2]=110;c[(c[s>>2]|0)+24>>2]=j;hk[c[(c[s>>2]|0)+4>>2]&255](f,1);return}else if((t|0)==17){t=f|0;c[(c[t>>2]|0)+20>>2]=111;c[(c[t>>2]|0)+24>>2]=j;hk[c[(c[t>>2]|0)+4>>2]&255](f,1);return}else{t=f|0;c[(c[t>>2]|0)+20>>2]=91;c[(c[t>>2]|0)+24>>2]=d[r]|0;c[(c[t>>2]|0)+28>>2]=j;hk[c[(c[t>>2]|0)+4>>2]&255](f,1);return}}}while(0);g=f|0;c[(c[g>>2]|0)+20>>2]=79;c[(c[g>>2]|0)+24>>2]=j;hk[c[(c[g>>2]|0)+4>>2]&255](f,1);return}function iY(a,b,e,f){a=a|0;b=b|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,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,J=0,K=0,L=0,M=0,N=0,O=0;g=c[a+24>>2]|0;h=g|0;i=c[h>>2]|0;j=g+4|0;k=c[j>>2]|0;c[a+220>>2]=b;c[a+224>>2]=e;c[a+228>>2]=f;do{if((k|0)==0){if((jk[c[g+12>>2]&255](a)|0)==0){l=0;return l|0}else{m=c[j>>2]|0;n=c[h>>2]|0;break}}else{m=k;n=i}}while(0);i=m-1|0;m=n+1|0;k=(d[n]|0)<<8;do{if((i|0)==0){if((jk[c[g+12>>2]&255](a)|0)==0){l=0;return l|0}else{o=c[j>>2]|0;p=c[h>>2]|0;break}}else{o=i;p=m}}while(0);m=o-1|0;o=p+1|0;i=d[p]|0|k;do{if((m|0)==0){if((jk[c[g+12>>2]&255](a)|0)==0){l=0;return l|0}else{q=c[j>>2]|0;r=c[h>>2]|0;break}}else{q=m;r=o}}while(0);o=q-1|0;q=r+1|0;c[a+212>>2]=d[r]|0;do{if((o|0)==0){if((jk[c[g+12>>2]&255](a)|0)==0){l=0;return l|0}else{s=c[j>>2]|0;t=c[h>>2]|0;break}}else{s=o;t=q}}while(0);q=s-1|0;s=t+1|0;o=(d[t]|0)<<8;t=a+32|0;c[t>>2]=o;do{if((q|0)==0){if((jk[c[g+12>>2]&255](a)|0)==0){l=0;return l|0}else{u=c[j>>2]|0;v=c[h>>2]|0;w=c[t>>2]|0;break}}else{u=q;v=s;w=o}}while(0);o=u-1|0;u=v+1|0;c[t>>2]=w+(d[v]|0);do{if((o|0)==0){if((jk[c[g+12>>2]&255](a)|0)==0){l=0;return l|0}else{x=c[j>>2]|0;y=c[h>>2]|0;break}}else{x=o;y=u}}while(0);u=x-1|0;x=y+1|0;o=(d[y]|0)<<8;y=a+28|0;c[y>>2]=o;do{if((u|0)==0){if((jk[c[g+12>>2]&255](a)|0)==0){l=0;return l|0}else{z=c[j>>2]|0;A=c[h>>2]|0;B=c[y>>2]|0;break}}else{z=u;A=x;B=o}}while(0);o=z-1|0;z=A+1|0;c[y>>2]=B+(d[A]|0);do{if((o|0)==0){if((jk[c[g+12>>2]&255](a)|0)==0){l=0;return l|0}else{C=c[j>>2]|0;D=c[h>>2]|0;break}}else{C=o;D=z}}while(0);z=a+36|0;c[z>>2]=d[D]|0;o=i-8|0;i=a|0;A=c[i>>2]|0;c[A+24>>2]=c[a+436>>2];c[A+28>>2]=c[y>>2];c[A+32>>2]=c[t>>2];c[A+36>>2]=c[z>>2];c[(c[i>>2]|0)+20>>2]=102;A=a;hk[c[(c[i>>2]|0)+4>>2]&255](A,1);B=a+460|0;if((c[(c[B>>2]|0)+16>>2]|0)!=0){c[(c[i>>2]|0)+20>>2]=60;vk[c[c[i>>2]>>2]&511](A)}do{if((c[t>>2]|0)==0){E=30}else{if((c[y>>2]|0)==0){E=30;break}x=c[z>>2]|0;if((x|0)<1){E=30}else{F=x}}}while(0);if((E|0)==30){c[(c[i>>2]|0)+20>>2]=33;vk[c[c[i>>2]>>2]&511](A);F=c[z>>2]|0}if((o|0)!=(F*3|0|0)){c[(c[i>>2]|0)+20>>2]=12;vk[c[c[i>>2]>>2]&511](A)}F=a+216|0;o=c[F>>2]|0;if((o|0)==0){y=rk[c[c[a+4>>2]>>2]&63](A,1,(c[z>>2]|0)*88|0)|0;c[F>>2]=y;G=y}else{G=o}o=C-1|0;C=D+1|0;a:do{if((c[z>>2]|0)>0){D=g+12|0;y=G;F=0;t=o;x=C;while(1){c[y+4>>2]=F;if((t|0)==0){if((jk[c[D>>2]&255](a)|0)==0){l=0;E=49;break}H=c[j>>2]|0;I=c[h>>2]|0}else{H=t;I=x}u=H-1|0;v=I+1|0;w=y|0;c[w>>2]=d[I]|0;if((u|0)==0){if((jk[c[D>>2]&255](a)|0)==0){l=0;E=49;break}J=c[j>>2]|0;K=c[h>>2]|0}else{J=u;K=v}v=J-1|0;u=d[K]|0;s=y+8|0;c[s>>2]=u>>>4;q=y+12|0;c[q>>2]=u&15;if((v|0)==0){if((jk[c[D>>2]&255](a)|0)==0){l=0;E=49;break}L=c[j>>2]|0;M=c[h>>2]|0}else{L=v;M=K+1|0}v=y+16|0;c[v>>2]=d[M]|0;u=c[i>>2]|0;c[u+24>>2]=c[w>>2];c[u+28>>2]=c[s>>2];c[u+32>>2]=c[q>>2];c[u+36>>2]=c[v>>2];c[(c[i>>2]|0)+20>>2]=103;hk[c[(c[i>>2]|0)+4>>2]&255](A,1);v=F+1|0;u=L-1|0;q=M+1|0;if((v|0)<(c[z>>2]|0)){y=y+88|0;F=v;t=u;x=q}else{N=u;O=q;break a}}if((E|0)==49){return l|0}}else{N=o;O=C}}while(0);c[(c[B>>2]|0)+16>>2]=1;c[h>>2]=O;c[j>>2]=N;l=1;return l|0} + + + +function cM(a,d,e,f,h,j){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;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,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,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,_=0,$=0,ba=0,ca=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.0,wa=0.0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;k=i;i=i+80|0;l=k|0;m=k+48|0;n=k+56|0;o=k+64|0;p=k+72|0;c[n>>2]=0;q=a;r=q+(c[a+4>>2]|0)|0;s=q+(c[a>>2]|0)|0;q=a+12|0;t=c[q>>2]|0;u=(t|0)/50|0;v=u>>1;w=u>>2;x=u>>3;if((x|0)>(h|0)){y=-2;i=k;return y|0}z=((t|0)/25|0)*3|0;t=(z|0)>(h|0)?h:z;a:do{if((e|0)<2){z=c[a+60>>2]|0;A=(t|0)<(z|0)?t:z;B=6}else{if((d|0)==0){A=t;B=6;break}z=c[a+60>>2]|0;h=c[a+52>>2]|0;EM(l,d,e);C=(h|0)==1e3;D=a+8|0;E=da(w<<2,c[D>>2]|0)|0;F=i;i=i+E|0;i=i+7&-8;E=F;F=c[a+56>>2]|0;if((F|0)<=0){G=0;H=z;I=C;J=0;K=h;L=d;M=1;N=t;O=D;P=E;B=17;break}Q=(h|0)==1002;R=Q^1;do{if((F|0)==1002|R){B=13}else{if((c[a+64>>2]|0)!=0){B=13;break}if(!Q){G=1;H=z;I=C;J=0;K=h;L=d;M=1;N=t;O=D;P=E;B=17;break a}}}while(0);if((B|0)==13){if(Q){G=0;H=z;I=C;J=0;K=1002;L=d;M=1;N=t;O=D;P=E;B=17;break}S=(F|0)!=1002;if(S|R){G=S&1^1;H=z;I=C;J=0;K=h;L=d;M=1;N=t;O=D;P=E;B=17;break}}cM(a,0,0,E,(w|0)<(z|0)?w:z,0)|0;G=1;H=z;I=C;J=0;K=h;L=d;M=1;N=t;O=D;P=E;B=17}}while(0);do{if((B|0)==6){t=c[a+56>>2]|0;if((t|0)==1e3){d=a+8|0;S=da(w<<2,c[d>>2]|0)|0;T=i;i=i+S|0;i=i+7&-8;U=T;V=d;W=0;X=0;Y=1e3;Z=1;_=1;$=A;ba=0;break}else if((t|0)==0){d=a+8|0;if((da(c[d>>2]|0,A)|0)>0){ca=0}else{y=A;i=k;return y|0}while(1){g[f+(ca<<2)>>2]=0.0;T=ca+1|0;if((T|0)<(da(c[d>>2]|0,A)|0)){ca=T}else{y=A;break}}i=k;return y|0}else{d=a+8|0;E=da(w<<2,c[d>>2]|0)|0;D=i;i=i+E|0;i=i+7&-8;G=0;H=A;I=0;J=1;K=t;L=0;M=0;N=(A|0)<(u|0)?A:u;O=d;P=D;B=17;break}}}while(0);do{if((B|0)==17){if((H|0)>(N|0)){y=-1}else{U=P;V=O;W=M;X=L;Y=K;Z=J;_=I;$=H;ba=G;break}i=k;return y|0}}while(0);G=c[V>>2]|0;H=da(((v|0)>($|0)?v:$)<<1,G)|0;v=i;i=i+H|0;i=i+7&-8;H=v;v=da(w<<2,G)|0;G=i;i=i+v|0;i=i+7&-8;v=G;G=(Y|0)!=1002;b:do{if(G){if((c[a+56>>2]|0)==1002){wN(r)|0}I=($*1e3|0|0)/(c[q>>2]|0)|0;J=a+16|0;c[a+32>>2]=(I|0)<10?10:I;do{if(W){c[a+20>>2]=c[a+44>>2];if(!_){c[a+28>>2]=16e3;break}I=c[a+48>>2]|0;if((I|0)==1101){c[a+28>>2]=8e3;break}else if((I|0)==1102){c[a+28>>2]=12e3;break}else{c[a+28>>2]=16e3;break}}}while(0);t=Z?1:j<<1;if((t|0)==0){I=H;K=0;while(1){if((xN(r,J,0,(K|0)==0|0,l,I,m)|0)!=0){y=-4;break}L=c[m>>2]|0;I=I+((da(c[V>>2]|0,L)|0)<<1)|0;K=L+K|0;if((K|0)>=($|0)){break b}}i=k;return y|0}else{ea=H;fa=0}do{do{if((xN(r,J,t,(fa|0)==0|0,l,ea,m)|0)==0){ga=c[V>>2]|0}else{c[m>>2]=$;K=c[V>>2]|0;if((da(K,$)|0)>0){ha=0}else{ga=K;break}while(1){b[ea+(ha<<1)>>1]=0;K=ha+1|0;I=c[V>>2]|0;if((K|0)<(da(I,$)|0)){ha=K}else{ga=I;break}}}}while(0);I=c[m>>2]|0;ea=ea+((da(ga,I)|0)<<1)|0;fa=I+fa|0;}while((fa|0)<($|0))}}while(0);fa=(j|0)!=0;do{if(fa){ia=e;ja=0;ka=0;la=0}else{if(!G){ia=e;ja=0;ka=0;la=0;break}if(!W){ia=e;ja=0;ka=0;la=0;break}j=l+20|0;ga=c[j>>2]|0;ea=l+28|0;m=y$(c[ea>>2]|0)|0|-32;if((ga+17+m+((c[a+52>>2]|0)==1001?20:0)|0)>(e<<3|0)){ia=e;ja=0;ka=0;la=0;break}if((Y|0)==1001){m=IM(l,12)|0;if((m|0)==0){ia=e;ja=0;ka=0;la=0;break}ga=IM(l,1)|0;ha=(KM(l,256)|0)+2|0;ma=ha;na=m;oa=ga;pa=c[j>>2]|0;qa=c[ea>>2]|0}else{ga=IM(l,1)|0;m=c[j>>2]|0;j=c[ea>>2]|0;ma=e-(m+7+(y$(j|0)|0|-32)>>3)|0;na=1;oa=ga;pa=m;qa=j}j=e-ma|0;m=(j<<3|0)<((y$(qa|0)|0|-32)+pa|0);ga=m?0:ma;ea=l+4|0;c[ea>>2]=(c[ea>>2]|0)-ga;ia=m?0:j;ja=oa;ka=ga;la=m?0:na}}while(0);na=G?17:0;oa=c[a+48>>2]|0;if((oa|0)==1101){ra=13}else if((oa|0)==1104){ra=19}else if((oa|0)==1102|(oa|0)==1103){ra=17}else{ra=21}AM(s,10012,(oa=i,i=i+8|0,c[oa>>2]=ra,oa)|0)|0;i=oa;AM(s,10008,(oa=i,i=i+8|0,c[oa>>2]=c[a+44>>2],oa)|0)|0;i=oa;ra=(la|0)!=0;la=(ba|0)!=0;ba=ra^1;ma=la&ba;if(!(ra|la^1|G^1)){cM(a,0,0,U,(w|0)<($|0)?w:$,0)|0}la=(ja|0)==0;ja=la|ba;if(!ja){AM(s,10010,(oa=i,i=i+8|0,c[oa>>2]=0,oa)|0)|0;i=oa;xM(s,X+ia|0,ka,v,w,0)|0;AM(s,4031,(oa=i,i=i+8|0,c[oa>>2]=n,oa)|0)|0;i=oa}AM(s,10010,(oa=i,i=i+8|0,c[oa>>2]=na,oa)|0)|0;i=oa;do{if(_){b[o>>1]=-1;if((da(c[V>>2]|0,$)|0)>0){na=0;do{g[f+(na<<2)>>2]=0.0;na=na+1|0;}while((na|0)<(da(c[V>>2]|0,$)|0))}if((c[a+56>>2]|0)!=1001){sa=0;break}if(!ja){if((c[a+64>>2]|0)!=0){sa=0;break}}AM(s,10010,(oa=i,i=i+8|0,c[oa>>2]=0,oa)|0)|0;i=oa;xM(s,o,2,f,x,0)|0;sa=0}else{na=(u|0)<($|0)?u:$;ba=c[a+56>>2]|0;do{if((Y|0)!=(ba|0)&(ba|0)>0){if((c[a+64>>2]|0)!=0){break}AM(s,4028,(oa=i,i=i+1|0,i=i+7&-8,c[oa>>2]=0,oa)|0)|0;i=oa}}while(0);sa=xM(s,fa?0:X,ia,f,na,l)|0}}while(0);do{if(G){if((da(c[V>>2]|0,$)|0)>0){ta=0}else{break}do{fa=f+(ta<<2)|0;g[fa>>2]=+g[fa>>2]+ +(b[H+(ta<<1)>>1]|0)*30517578125.0e-15;ta=ta+1|0;}while((ta|0)<(da(c[V>>2]|0,$)|0))}}while(0);AM(s,10015,(oa=i,i=i+8|0,c[oa>>2]=p,oa)|0)|0;i=oa;ta=c[(c[p>>2]|0)+60>>2]|0;do{if(ra&la){AM(s,4028,(oa=i,i=i+1|0,i=i+7&-8,c[oa>>2]=0,oa)|0)|0;i=oa;AM(s,10010,(oa=i,i=i+8|0,c[oa>>2]=0,oa)|0)|0;i=oa;xM(s,X+ia|0,ka,v,w,0)|0;AM(s,4031,(oa=i,i=i+8|0,c[oa>>2]=n,oa)|0)|0;i=oa;p=c[V>>2]|0;H=da(p,$-x|0)|0;G=da(p,x)|0;na=48e3/(c[q>>2]|0)|0;if((p|0)>0&(x|0)>0){ua=0}else{break}do{fa=0;do{va=+g[ta+((da(fa,na)|0)<<2)>>2];wa=va*va;u=(da(fa,p)|0)+ua|0;o=f+(u+H<<2)|0;g[o>>2]=wa*+g[v+(u+G<<2)>>2]+(1.0-wa)*+g[o>>2];fa=fa+1|0;}while((fa|0)<(x|0));ua=ua+1|0;}while((ua|0)<(p|0))}}while(0);do{if(!ja){ua=c[V>>2]|0;if((ua|0)<=0){break}if((x|0)>0){oa=0;s=ua;while(1){ka=0;X=s;do{p=(da(X,ka)|0)+oa|0;g[f+(p<<2)>>2]=+g[v+(p<<2)>>2];ka=ka+1|0;X=c[V>>2]|0}while((ka|0)<(x|0));ka=oa+1|0;if((ka|0)<(X|0)){oa=ka;s=X}else{xa=X;break}}}else{s=0;while(1){oa=s+1|0;if((oa|0)<(ua|0)){s=oa}else{xa=ua;break}}}ua=da(xa,x)|0;s=48e3/(c[q>>2]|0)|0;if((xa|0)>0&(x|0)>0){ya=0}else{break}do{oa=0;do{wa=+g[ta+((da(oa,s)|0)<<2)>>2];va=wa*wa;ka=(da(oa,xa)|0)+ya+ua|0;p=f+(ka<<2)|0;g[p>>2]=va*+g[p>>2]+(1.0-va)*+g[v+(ka<<2)>>2];oa=oa+1|0;}while((oa|0)<(x|0));ya=ya+1|0;}while((ya|0)<(xa|0))}}while(0);c:do{if(ma){xa=c[V>>2]|0;if(($|0)<(w|0)){ya=48e3/(c[q>>2]|0)|0;if((xa|0)>0&(x|0)>0){za=0}else{break}while(1){v=0;do{va=+g[ta+((da(v,ya)|0)<<2)>>2];wa=va*va;ja=(da(v,xa)|0)+za|0;ua=f+(ja<<2)|0;g[ua>>2]=wa*+g[ua>>2]+(1.0-wa)*+g[U+(ja<<2)>>2];v=v+1|0;}while((v|0)<(x|0));za=za+1|0;if((za|0)>=(xa|0)){break c}}}ya=da(xa,x)|0;if((ya|0)>0){v=0;while(1){g[f+(v<<2)>>2]=+g[U+(v<<2)>>2];ja=v+1|0;ua=c[V>>2]|0;s=da(ua,x)|0;if((ja|0)<(s|0)){v=ja}else{Aa=ua;Ba=s;break}}}else{Aa=xa;Ba=ya}v=48e3/(c[q>>2]|0)|0;if((Aa|0)>0&(x|0)>0){Ca=0}else{break}do{s=0;do{wa=+g[ta+((da(s,v)|0)<<2)>>2];va=wa*wa;ua=(da(s,Aa)|0)+Ca+Ba|0;ja=f+(ua<<2)|0;g[ja>>2]=va*+g[ja>>2]+(1.0-va)*+g[U+(ua<<2)>>2];s=s+1|0;}while((s|0)<(x|0));Ca=Ca+1|0;}while((Ca|0)<(Aa|0))}}while(0);Aa=c[a+40>>2]|0;do{if((Aa|0)!=0){va=+aa(+(Aa|0)*.0006488140788860619*.6931471805599453);if((da(c[V>>2]|0,$)|0)>0){Da=0}else{break}do{Ca=f+(Da<<2)|0;g[Ca>>2]=va*+g[Ca>>2];Da=Da+1|0;}while((Da|0)<(da(c[V>>2]|0,$)|0))}}while(0);if((ia|0)<2){c[a+72>>2]=0}else{c[a+72>>2]=c[n>>2]^c[l+28>>2]}c[a+56>>2]=Y;c[a+64>>2]=ra?la&1:0;y=(sa|0)<0?sa:$;i=k;return y|0}function dM(a,b){a=a|0;b=b|0;var c=0,e=0;c=d[a]|0;do{if((c&128|0)==0){if((c&96|0)==96){if((c&8|0)==0){e=(b|0)/100|0;break}else{e=(b|0)/50|0;break}}else{a=c>>>3&3;if((a|0)==3){e=(b*60|0|0)/1e3|0;break}else{e=(b<>>3&3)|0)/400|0}}while(0);return e|0}function eM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+16|0;f=e|0;g=a;h=c[a+4>>2]|0;j=g+(c[a>>2]|0)|0;k=f|0;l=f;c[l>>2]=d;c[l+4>>2]=0;switch(b|0){case 4034:{b=(y=c[k+4>>2]|0,c[k+4>>2]=y+8,c[(c[k>>2]|0)+y>>2]|0);if((b+32768|0)>>>0>65535>>>0){m=-1;i=e;return m|0}c[a+40>>2]=b;m=0;i=e;return m|0};case 4029:{b=(y=c[k+4>>2]|0,c[k+4>>2]=y+8,c[(c[k>>2]|0)+y>>2]|0);if((b|0)==0){m=-1;i=e;return m|0}c[b>>2]=c[a+12>>2];m=0;i=e;return m|0};case 4039:{c[(y=c[k+4>>2]|0,c[k+4>>2]=y+8,c[(c[k>>2]|0)+y>>2]|0)>>2]=c[a+68>>2];m=0;i=e;return m|0};case 4009:{c[(y=c[k+4>>2]|0,c[k+4>>2]=y+8,c[(c[k>>2]|0)+y>>2]|0)>>2]=c[a+48>>2];m=0;i=e;return m|0};case 4031:{c[(y=c[k+4>>2]|0,c[k+4>>2]=y+8,c[(c[k>>2]|0)+y>>2]|0)>>2]=c[a+72>>2];m=0;i=e;return m|0};case 4028:{b=a+44|0;n$(b|0,0,32)|0;AM(j,4028,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0)|0;i=n;wN(g+h|0)|0;c[b>>2]=c[a+8>>2];c[a+60>>2]=(c[a+12>>2]|0)/400|0;m=0;i=e;return m|0};case 4045:{b=(y=c[k+4>>2]|0,c[k+4>>2]=y+8,c[(c[k>>2]|0)+y>>2]|0);if((b|0)==0){m=-1;i=e;return m|0}c[b>>2]=c[a+40>>2];m=0;i=e;return m|0};case 4033:{b=(y=c[k+4>>2]|0,c[k+4>>2]=y+8,c[(c[k>>2]|0)+y>>2]|0);if((b|0)==0){m=-1;i=e;return m|0}if((c[a+56>>2]|0)==1002){AM(j,4033,(n=i,i=i+8|0,c[n>>2]=b,n)|0)|0;i=n;m=0;i=e;return m|0}else{c[b>>2]=c[a+36>>2];m=0;i=e;return m|0}break};default:{m=-5;i=e;return m|0}}return 0}function fM(b,c){b=b|0;c=c|0;var d=0,e=0;do{if((c|0)<1){d=-1}else{e=a[b]&3;if((e|0)==0){d=1;break}else if((e|0)!=3){d=2;break}if((c|0)<2){d=-4;break}d=a[b+1|0]&63}}while(0);return d|0}function gM(b,d,e,f,g,h){b=b|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;if((e-1|0)>>>0>254>>>0|(g|0)>(f|0)){i=-1;return i|0}if((g+f|0)>255|(f|0)<1|(g|0)<0){i=-1;return i|0}j=b|0;c[j>>2]=e;k=b+4|0;c[k>>2]=f;l=b+8|0;c[l>>2]=g;if((e|0)>0){m=0;do{a[b+12+m|0]=a[h+m|0]|0;m=m+1|0;n=c[j>>2]|0;}while((m|0)<(n|0));o=c[k>>2]|0;p=c[l>>2]|0;q=n}else{o=f;p=g;q=e}e=p+o|0;if((e|0)>255){i=-1;return i|0}a:do{if((q|0)>0){o=0;while(1){p=a[b+12+o|0]|0;o=o+1|0;if(!((p&255|0)<(e|0)|p<<24>>24==-1)){i=-1;break}if((o|0)>=(q|0)){break a}}return i|0}}while(0);q=b+268|0;b=_L(2)|0;e=_L(1)|0;b:do{if((c[l>>2]|0)>0){o=b+3&-4;p=0;g=q;while(1){f=$L(g,d,2)|0;if((f|0)!=0){i=f;break}f=g+o|0;n=p+1|0;if((n|0)<(c[l>>2]|0)){p=n;g=f}else{r=n;s=f;break b}}return i|0}else{r=0;s=q}}while(0);if((r|0)>=(c[k>>2]|0)){i=0;return i|0}q=e+3&-4;e=r;r=s;while(1){s=$L(r,d,1)|0;if((s|0)!=0){i=s;t=18;break}s=e+1|0;if((s|0)<(c[k>>2]|0)){e=s;r=r+q|0}else{i=0;t=18;break}}if((t|0)==18){return i|0}return 0}function hM(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;do{if(!((b-1|0)>>>0>254>>>0|(e|0)>(d|0))){if((e+d|0)>255|(d|0)<1|(e|0)<0){break}h=_L(2)|0;i=V_((da(h+3&-4,e)|0)+268+(da((_L(1)|0)+3&-4,d-e|0)|0)|0)|0;h=i;if((i|0)==0){if((g|0)==0){j=0;return j|0}c[g>>2]=-7;j=0;return j|0}k=gM(h,a,b,d,e,f)|0;if((g|0)!=0){c[g>>2]=k}if((k|0)==0){j=h;return j|0}W_(i);j=0;return j|0}}while(0);if((g|0)==0){j=0;return j|0}c[g>>2]=-1;j=0;return j|0}function iM(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,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,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;l=i;i=i+16|0;m=l|0;n=l+8|0;lM(b,4029,(o=i,i=i+8|0,c[o>>2]=m,o)|0)|0;i=o;o=((c[m>>2]|0)/25|0)*3|0;m=(o|0)>(j|0)?j:o;o=i;i=i+(m<<3)|0;i=i+7&-8;j=o;p=b+268|0;q=_L(2)|0;r=_L(1)|0;s=(f|0)==0;if((f|0)<0){t=-1;i=l;return t|0}u=c[b+4>>2]|0;do{if(s){v=0}else{if(((u<<1)-1|0)>(f|0)){t=-4}else{v=f;break}i=l;return t|0}}while(0);f=b+4|0;a:do{if((u|0)>0){w=b+8|0;x=s^1;y=b|0;z=o+4|0;A=0;B=p;C=m;D=v;E=e;F=u;while(1){G=B+(((A|0)<(c[w>>2]|0)?q:r)+3&-4)|0;if((D|0)<1&x){t=-4;H=38;break}c[n>>2]=0;I=bM(B,E,D,j,C,k,(A|0)!=(F-1|0)|0,n)|0;J=c[n>>2]|0;K=E+J|0;L=D-J|0;if((I|0)>(C|0)){t=-2;H=38;break}if(!((A|0)<1|(I|0)==(C|0))){t=-4;H=38;break}if((I|0)<1){t=I;H=38;break}J=c[w>>2]|0;M=c[y>>2]|0;N=(M|0)>0;b:do{if((A|0)<(J|0)){if(!N){O=M;break}P=A<<1;Q=0;R=M;c:while(1){S=Q;while(1){T=S+1|0;if((d[b+12+S|0]|0)==(P|0)){break}if((T|0)<(R|0)){S=T}else{U=R;break c}}if((S|0)==-1){U=R;break}Lk[h&15](g,R,S,j,2,I);V=(S|0)<0?0:T;W=c[y>>2]|0;if((V|0)<(W|0)){Q=V;R=W}else{U=W;break}}if((U|0)<=0){O=U;break}R=A<<1|1;Q=0;P=U;while(1){W=Q;while(1){X=W+1|0;if((d[b+12+W|0]|0)==(R|0)){break}if((X|0)<(P|0)){W=X}else{O=P;break b}}if((W|0)==-1){O=P;break b}Lk[h&15](g,P,W,z,2,I);S=(W|0)<0?0:X;V=c[y>>2]|0;if((S|0)<(V|0)){Q=S;P=V}else{O=V;break}}}else{if(N){Y=0;Z=M;_=J}else{O=M;break}while(1){P=_+A|0;Q=Y;while(1){$=Q+1|0;if((d[b+12+Q|0]|0)==(P|0)){break}if(($|0)<(Z|0)){Q=$}else{O=Z;break b}}if((Q|0)==-1){O=Z;break b}Lk[h&15](g,Z,Q,j,1,I);P=(Q|0)<0?0:$;W=c[y>>2]|0;if((P|0)>=(W|0)){O=W;break b}Y=P;Z=W;_=c[w>>2]|0}}}while(0);M=A+1|0;J=c[f>>2]|0;if((M|0)<(J|0)){A=M;B=G;C=I;D=L;E=K;F=J}else{aa=I;ba=O;break a}}if((H|0)==38){i=l;return t|0}}else{aa=m;ba=c[b>>2]|0}}while(0);m=b|0;if((ba|0)>0){ca=0;da=ba}else{t=aa;i=l;return t|0}while(1){if((a[b+12+ca|0]|0)==-1){Lk[h&15](g,da,ca,0,0,aa);ea=c[m>>2]|0}else{ea=da}ba=ca+1|0;if((ba|0)<(ea|0)){ca=ba;da=ea}else{t=aa;break}}i=l;return t|0}function jM(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return iM(a,b,c,d,8,e,f)|0}function kM(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 h=0,i=0,j=0;h=a;a=(f|0)>0;if((d|0)==0){if(a){i=0}else{return}do{g[h+((da(i,b)|0)+c<<2)>>2]=0.0;i=i+1|0;}while((i|0)<(f|0));return}else{if(a){j=0}else{return}do{g[h+((da(j,b)|0)+c<<2)>>2]=+g[d+((da(j,e)|0)<<2)>>2];j=j+1|0;}while((j|0)<(f|0));return}}function lM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+24|0;f=e|0;g=e+16|0;h=f|0;j=f;c[j>>2]=d;c[j+4>>2]=0;j=_L(2)|0;d=_L(1)|0;f=a+268|0;k=f;switch(b|0){case 4034:{l=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);m=a+4|0;if((c[m>>2]|0)<=0){n=0;i=e;return n|0}o=a+8|0;p=0;q=k;while(1){r=c[o>>2]|0;s=eM(q,4034,(t=i,i=i+8|0,c[t>>2]=l,t)|0)|0;i=t;if((s|0)!=0){n=s;u=22;break}s=q+(((p|0)<(r|0)?j:d)+3&-4)|0;r=p+1|0;if((r|0)<(c[m>>2]|0)){p=r;q=s}else{n=0;u=22;break}}if((u|0)==22){i=e;return n|0}break};case 4031:{q=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);c[q>>2]=0;p=a+4|0;if((c[p>>2]|0)<=0){n=0;i=e;return n|0}m=a+8|0;l=0;o=k;while(1){s=c[m>>2]|0;r=eM(o,4031,(t=i,i=i+8|0,c[t>>2]=g,t)|0)|0;i=t;if((r|0)!=0){n=r;u=22;break}r=o+(((l|0)<(s|0)?j:d)+3&-4)|0;c[q>>2]=c[q>>2]^c[g>>2];s=l+1|0;if((s|0)<(c[p>>2]|0)){l=s;o=r}else{n=0;u=22;break}}if((u|0)==22){i=e;return n|0}break};case 5122:{o=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);if((o|0)<0){u=13}else{if((o|0)<(c[a+4>>2]|0)){v=0}else{u=13}}if((u|0)==13){v=-1}l=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);if((o|0)>0){p=c[a+8>>2]|0;g=0;q=k;while(1){m=q+(((g|0)<(p|0)?j:d)+3&-4)|0;r=g+1|0;if((r|0)<(o|0)){g=r;q=m}else{w=m;break}}}else{w=k}c[l>>2]=w;n=v;i=e;return n|0};case 4028:{v=a+4|0;if((c[v>>2]|0)<=0){n=0;i=e;return n|0}w=a+8|0;a=0;l=k;while(1){k=c[w>>2]|0;q=eM(l,4028,(t=i,i=i+1|0,i=i+7&-8,c[t>>2]=0,t)|0)|0;i=t;if((q|0)!=0){n=q;u=22;break}q=l+(((a|0)<(k|0)?j:d)+3&-4)|0;k=a+1|0;if((k|0)<(c[v>>2]|0)){a=k;l=q}else{n=0;u=22;break}}if((u|0)==22){i=e;return n|0}break};case 4009:case 4029:case 4045:case 4039:{u=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);h=eM(f,b,(t=i,i=i+8|0,c[t>>2]=u,t)|0)|0;i=t;n=h;i=e;return n|0};default:{n=-5;i=e;return n|0}}return 0}function mM(a){a=a|0;W_(a);return}function nM(a){a=a|0;return(da(a,1664525)|0)+1013904223|0}function oM(a,d,e,f,h,i,j){a=a|0;d=d|0;e=e|0;f=f|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=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;k=c[a+32>>2]|0;l=c[a+44>>2]|0;m=da(l,j)|0;n=(h|0)>0;o=k+(h<<1)|0;p=a+8|0;a=j<<2;q=0;do{r=da(q,m)|0;s=e+(r<<2)|0;if(n){t=s;u=d+(r<<2)|0;r=0;while(1){v=+g[f+((da(c[p>>2]|0,q)|0)+r<<2)>>2];w=da(b[k+(r<<1)>>1]|0,j)|0;x=r+1|0;y=da(b[k+(x<<1)>>1]|0,j)|0;z=w+1|0;A=((y|0)>(z|0)?y:z)-w|0;z=u+(A<<2)|0;B=w;w=u;C=t;while(1){g[C>>2]=v*+g[w>>2];D=B+1|0;if((D|0)<(y|0)){B=D;w=w+4|0;C=C+4|0}else{break}}C=t+(A<<2)|0;if((x|0)<(h|0)){t=C;u=z;r=x}else{E=C;break}}}else{E=s}r=b[o>>1]|0;if((da(r,j)|0)<(m|0)){n$(E|0,0,da(a,l-r|0)|0)|0}q=q+1|0;}while((q|0)<(i|0));return}function pM(a,e,f,h,i,j,k,l,m,n,o,p,q){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0,S=0,U=0,V=0,W=0,X=0,Y=0,Z=0;if((k|0)>=(l|0)){return}r=a+32|0;s=a+8|0;a=(i|0)==1;t=(h|0)==3;u=1<0;w=k;k=q;while(1){q=w+1|0;x=c[r>>2]|0;y=(b[x+(q<<1)>>1]|0)-(b[x+(w<<1)>>1]|0)|0;x=y<>2]|0)+1|0)/(x|0)|0|0)*-.125*.6931471805599453)*.5;A=1.0/+T(+(x|0));B=da(w,i)|0;C=k;D=0;while(1){E=c[s>>2]|0;F=(da(E,D)|0)+w|0;G=+g[n+(F<<2)>>2];H=+g[o+(F<<2)>>2];if(a){I=E+w|0;J=+g[n+(I<<2)>>2];K=+g[o+(I<<2)>>2];L=H>K?H:K;M=G>J?G:J}else{L=H;M=G}G=+g[m+(F<<2)>>2]-(M>2]|0)+(w<<1)>>1]<>2]=(X&32768|0)==0?G:H;Y=V+1|0;if((Y|0)<(y|0)){V=Y;W=X}else{S=1;U=X;break}}}W=O+1|0;if((W|0)<(u|0)){O=W;P=U;Q=S}else{break}}if((S|0)==0){Z=U;break}iN(F,x,1.0);Z=U}else{Z=C}}while(0);F=D+1|0;if((F|0)<(i|0)){C=Z;D=F}else{break}}if((q|0)<(l|0)){w=q;k=Z}else{break}}return}function qM(e,f,h,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z){e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;w=w|0;x=x|0;y=y|0;z=z|0;var A=0,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,_=0,$=0,aa=0,ba=0,ca=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;A=i;i=i+8|0;B=A|0;C=c[f+32>>2]|0;D=(l|0)!=0;E=D?2:1;F=(e|0)==0;G=(p|0)!=0?1<>2]|0;H=b[C+(p<<1)>>1]|0;I=da(E<>1]|0)<=(j|0)){i=A;return}H=y-1|0;K=C+(h<<1)|0;L=f+12|0;M=(1<1;Q=1;R=0;S=h;T=v;v=r;while(1){r=C+(S<<1)|0;U=b[r>>1]<>1]<>2]=_-1;do{if((S|0)>(H|0)){$=0}else{aa=y-S|0;ba=(c[o+(S<<2)>>2]|0)+((Z|0)/(((aa|0)>3?3:aa)|0)|0)|0;aa=(_|0)<(ba|0)?_:ba;if((aa|0)<0){$=0;break}$=(aa|0)>16383?16383:aa}}while(0);do{if(F){if(((b[r>>1]<>1]<>2]|0;if((S|0)<(c[L>>2]|0)){ea=W;fa=V}else{ea=D?I:W;fa=I}do{if((ca|0)==0){ga=M;ha=M;ia=-1}else{if(!(P|(_|0)<0)){ga=M;ha=M;ia=-1;break}aa=b[K>>1]<>1]<(ba|0)?aa:ba;ba=ca;do{ba=ba-1|0;}while((b[C+(ba<<1)>>1]<(ja|0));aa=ja+Y|0;ka=ca-1|0;while(1){la=ka+1|0;if((b[C+(la<<1)>>1]<>1]<>1]<>1]<>1]<>2]=(+g[ba>>2]+ +g[I+(va+J<<2)>>2])*.5;ba=va+1|0;if((ba|0)<(b[r>>1]<>1]<>2]|0)|0;if((X|0)<(j|0)){Q=($|0)>(Y<<3|0)|0;R=ca;S=X;T=ja;v=sa}else{break}}i=A;return}function rM(a,e,f,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z){a=a|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;w=w|0;x=+x;y=y|0;z=z|0;var A=0,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,U=0,V=0,W=0,X=0,Y=0.0,Z=0,_=0.0,$=0,aa=0,ba=0,ca=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,Da=0.0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0.0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0.0,Ta=0.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=0,nb=0.0,ob=0.0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0.0,zb=0.0,Ab=0,Bb=0.0,Cb=0.0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0;A=h;B=(a|0)!=0;C=(m|0)==1|0;D=(j|0)/(m|0)|0;E=(i|0)!=0;F=E&1;if((j|0)==1){G=E?2:1;H=h;I=1;while(1){if((c[r>>2]|0)>7){if(B){J=+g[H>>2]<0.0|0;PM(q,J,1);K=J}else{K=LM(q,1)|0}c[r>>2]=(c[r>>2]|0)-8;L=K}else{L=0}if(!B){g[H>>2]=(L|0)!=0?-1.0:1.0}if((I|0)>=(G|0)){break}H=i;I=I+1|0}if((t|0)==0){M=1;return M|0}g[t>>2]=+g[h>>2];M=1;return M|0}I=E^1;H=(v|0)==0;do{if(H&I){G=(o|0)>0;L=G?o:0;do{if((p|0)==0){N=0}else{if((L|0)==0){if(!((D&1|0)==0&(o|0)<0|(m|0)>1)){N=p;break}}if((j|0)>0){O=0}else{N=y;break}while(1){g[y+(O<<2)>>2]=+g[p+(O<<2)>>2];K=O+1|0;if((K|0)<(j|0)){O=K}else{N=y;break}}}}while(0);if(G){K=(N|0)==0;J=0;P=z;while(1){do{if(B){Q=1<>J>>1;if((Q|0)<=0){break}S=(R|0)>0;U=Q<<1;V=0;do{if(S){W=0;do{X=h+((da(U,W)|0)+V<<2)|0;Y=+g[X>>2]*.7071067690849304;Z=h+(((W<<1|1)<>2]*.7071067690849304;g[X>>2]=Y+_;g[Z>>2]=Y-_;W=W+1|0;}while((W|0)<(R|0))}V=V+1|0;}while((V|0)<(Q|0))}}while(0);do{if(!K){Q=1<>J>>1;if((Q|0)<=0){break}R=(V|0)>0;U=Q<<1;S=0;do{if(R){W=0;do{Z=N+((da(U,W)|0)+S<<2)|0;_=+g[Z>>2]*.7071067690849304;X=N+(((W<<1|1)<>2]*.7071067690849304;g[Z>>2]=_+Y;g[X>>2]=_-Y;W=W+1|0;}while((W|0)<(V|0))}S=S+1|0;}while((S|0)<(Q|0))}}while(0);Q=d[9576+(P>>4)|0]<<2|d[9576+(P&15)|0];S=J+1|0;if((S|0)<(L|0)){J=S;P=Q}else{$=Q;break}}}else{$=z}P=m>>L;J=D<>1;if((U|0)<=0){break}W=(R|0)>0;X=U<<1;Z=0;do{if(W){aa=0;do{ba=h+((da(X,aa)|0)+Z<<2)|0;Y=+g[ba>>2]*.7071067690849304;ca=h+((da(aa<<1|1,U)|0)+Z<<2)|0;_=+g[ca>>2]*.7071067690849304;g[ba>>2]=Y+_;g[ca>>2]=Y-_;aa=aa+1|0;}while((aa|0)<(R|0))}Z=Z+1|0;}while((Z|0)<(U|0))}}while(0);Z=Q>>1;if(K&(U|0)>0){R=(Z|0)>0;X=U<<1;W=0;do{if(R){aa=0;do{ca=N+((da(X,aa)|0)+W<<2)|0;_=+g[ca>>2]*.7071067690849304;ba=N+((da(aa<<1|1,U)|0)+W<<2)|0;Y=+g[ba>>2]*.7071067690849304;g[ca>>2]=_+Y;g[ba>>2]=_-Y;aa=aa+1|0;}while((aa|0)<(Z|0))}W=W+1|0;}while((W|0)<(U|0))}W=S<>L,ia<>L,ia<>2]|0;z=s+1|0;p=e+8|0;o=(da(c[p>>2]|0,z)|0)+f|0;ea=e+96|0;ia=b[(c[ea>>2]|0)+(o<<1)>>1]|0;do{if(E|(s|0)==-1){qa=59}else{if(!(((d[D+((d[D+ia|0]|0)+ia)|0]|0)+12|0)<(k|0)&(j|0)>2)){qa=59;break}o=j>>1;if((na|0)==1){ra=la&1|la<<1}else{ra=la}sa=ra;ta=s-1|0;ua=na+1>>1;va=o;wa=h+(o<<2)|0;qa=60}}while(0);a:do{if((qa|0)==59){if(E){sa=la;ta=s;ua=na;va=j;wa=i;qa=60;break}ra=d[D+ia|0]|0;o=k-1|0;fa=(ra+1|0)>>>1;ga=(d[D+(fa+ia)|0]|0)<(o|0);N=ga?fa:0;ha=ga?ra:fa;fa=N+1+ha>>1;ra=(d[D+(fa+ia)|0]|0)<(o|0);ga=ra?fa:N;N=ra?ha:fa;fa=ga+1+N>>1;ha=(d[D+(fa+ia)|0]|0)<(o|0);ra=ha?fa:ga;ga=ha?N:fa;fa=ra+1+ga>>1;N=(d[D+(fa+ia)|0]|0)<(o|0);ha=N?fa:ra;ra=N?ga:fa;fa=ha+1+ra>>1;ga=(d[D+(fa+ia)|0]|0)<(o|0);N=ga?fa:ha;ha=ga?ra:fa;fa=N+1+ha>>1;ra=(d[D+(fa+ia)|0]|0)<(o|0);ga=ra?fa:N;N=ra?ha:fa;if((ga|0)==0){xa=-1}else{xa=d[D+(ga+ia)|0]|0}fa=(o-xa|0)>((d[D+(N+ia)|0]|0)-o|0)?N:ga;b:do{if((fa|0)!=0){ga=(d[D+(ia+fa)|0]|0)+1|0;N=(c[r>>2]|0)-ga|0;c[r>>2]=N;c:do{if((N|0)<0&(fa|0)>0){o=N;ha=ga;ra=fa;while(1){ya=ha+o|0;c[r>>2]=ya;$=ra-1|0;if(($|0)==0){break}O=da(c[p>>2]|0,z)|0;U=(d[(c[m>>2]|0)+((b[(c[ea>>2]|0)+(O+f<<1)>>1]|0)+$)|0]|0)+1|0;O=ya-U|0;c[r>>2]=O;if((O|0)<0&($|0)>0){o=O;ha=U;ra=$}else{za=$;break c}}c[r>>2]=ya;break b}else{za=fa}}while(0);if((za|0)<8){Aa=za}else{Aa=(za&7|8)<<(za>>3)-1}if(!B){Ba=0;Ca=j;Da=0.0;Ea=hN(h,j,Aa,l,na,q,x)|0;Fa=0;break a}M=fN(h,j,Aa,l,na,q)|0;return M|0}}while(0);if(B){M=0;return M|0}fa=(1<0;do{if((ka|0)==0){if(P){La=0}else{Ma=fa;break}while(1){J=(da(c[w>>2]|0,1664525)|0)+1013904223|0;c[w>>2]=J;g[h+(La<<2)>>2]=+(J>>20|0);J=La+1|0;if((J|0)<(j|0)){La=J}else{Ma=fa;break}}}else{if(P){Na=0}else{Ma=L;break}while(1){J=(da(c[w>>2]|0,1664525)|0)+1013904223|0;c[w>>2]=J;g[h+(Na<<2)>>2]=+g[ka+(Na<<2)>>2]+((J&32768|0)==0?-.00390625:.00390625);J=Na+1|0;if((J|0)<(j|0)){Na=J}else{Ma=L;break}}}}while(0);iN(h,j,x);Ga=0;Ha=Ma;Ia=0.0;Ja=j;Ka=0;qa=165}}while(0);do{if((qa|0)==60){Ma=(b[(c[e+56>>2]|0)+(f<<1)>>1]|0)+(ta<<3)|0;if(E){Oa=(va|0)==2?16:4}else{Oa=4}Na=(va|0)==2;La=(E&Na?-2:-1)+(va<<1)|0;A=k-Ma-32|0;la=((da((Ma>>1)-Oa|0,La)|0)+k|0)/(La|0)|0;La=(A|0)<(la|0)?A:la;la=(La|0)>64?64:La;if((la|0)<4){Pa=1}else{Pa=(b[41152+((la&7)<<1)>>1]>>14-(la>>3))+1&-2}la=(f|0)<(n|0)|I?Pa:1;if(B){Qa=jN(h,wa,F,va)|0}else{Qa=0}La=DM(q)|0;d:do{if((la|0)==1){if(!E){Ra=Qa;qa=114;break}do{if(B){A=(Qa|0)>8192;Ma=A&1;if(A&(va|0)>0){A=0;do{Aa=wa+(A<<2)|0;g[Aa>>2]=-0.0- +g[Aa>>2];A=A+1|0;}while((A|0)<(va|0))}Y=+g[u+(f<<2)>>2];_=+g[u+((c[p>>2]|0)+f<<2)>>2];Sa=+T(Y*Y+1.0000000036274937e-15+_*_)+1.0000000036274937e-15;Ta=Y/Sa;Y=_/Sa;if((va|0)>0){Ua=0}else{Va=Ma;break}while(1){A=h+(Ua<<2)|0;g[A>>2]=Ta*+g[A>>2]+Y*+g[wa+(Ua<<2)>>2];A=Ua+1|0;if((A|0)<(va|0)){Ua=A}else{Va=Ma;break}}}else{Va=0}}while(0);if((k|0)<=16){Wa=0;qa=113;break}if((c[r>>2]|0)<=16){Wa=0;qa=113;break}if(B){NM(q,Va,2);Wa=Va;qa=113;break}else{Wa=IM(q,2)|0;qa=113;break}}else{if(B){Xa=(da(Qa,la)|0)+8192>>14}else{Xa=Qa}do{if(E&(va|0)>2){Ma=(la|0)/2|0;A=Ma+1|0;Aa=A*3|0;za=Aa+Ma|0;if(B){if((Xa|0)>(Ma|0)){Ya=Xa-Ma+Aa|0;Za=Xa-1-Ma+Aa|0}else{ya=Xa*3|0;Ya=ya+3|0;Za=ya}MM(q,Za,Ya,za);_a=Xa;break}ya=FM(q,za)|0;if((ya|0)<(Aa|0)){$a=(ya|0)/3|0}else{$a=A-Aa+ya|0}if(($a|0)>(Ma|0)){ab=Aa-Ma+$a|0;bb=Aa+~Ma+$a|0}else{Ma=$a*3|0;ab=Ma+3|0;bb=Ma}HM(q,bb,ab,za);_a=$a}else{if((na|0)>1|E){za=la+1|0;if(B){OM(q,Xa,za);_a=Xa;break}else{Ra=((KM(q,za)|0)<<14|0)/(la|0)|0;qa=114;break d}}za=la>>1;Ma=za+1|0;Aa=da(Ma,Ma)|0;if(B){if((Xa|0)>(za|0)){ya=la+1-Xa|0;cb=Aa-((da(ya,la+2-Xa|0)|0)>>1)|0;db=ya}else{ya=Xa+1|0;cb=(da(ya,Xa)|0)>>1;db=ya}MM(q,cb,cb+db|0,Aa);_a=Xa;break}else{ya=FM(q,Aa)|0;if((ya|0)<((da(Ma,za)|0)>>1|0)){za=((TM(ya<<3|1)|0)-1|0)>>>1;Ma=za+1|0;eb=(da(Ma,za)|0)>>>1;fb=Ma;gb=za}else{za=la+1|0;Ma=((za<<1)-(TM((Aa-ya<<3)-7|0)|0)|0)>>>1;ya=za-Ma|0;eb=Aa-((da(ya,la+2-Ma|0)|0)>>1)|0;fb=ya;gb=Ma}HM(q,eb,eb+fb|0,Aa);_a=gb;break}}}while(0);Aa=(_a<<14|0)/(la|0)|0;if(B^1|I){Ra=Aa;qa=114;break}if((Aa|0)!=0){if((va|0)>0){hb=0}else{Ra=Aa;qa=114;break}while(1){Ma=h+(hb<<2)|0;Y=+g[Ma>>2]*.7071067690849304;ya=wa+(hb<<2)|0;Ta=+g[ya>>2]*.7071067690849304;g[Ma>>2]=Y+Ta;g[ya>>2]=Ta-Y;ya=hb+1|0;if((ya|0)<(va|0)){hb=ya}else{Ra=Aa;qa=114;break d}}}Y=+g[u+(f<<2)>>2];Ta=+g[u+((c[p>>2]|0)+f<<2)>>2];Sa=+T(Y*Y+1.0000000036274937e-15+Ta*Ta)+1.0000000036274937e-15;_=Y/Sa;Y=Ta/Sa;if((va|0)>0){ib=0}else{Wa=0;qa=113;break}do{Aa=h+(ib<<2)|0;g[Aa>>2]=_*+g[Aa>>2]+Y*+g[wa+(ib<<2)>>2];ib=ib+1|0;}while((ib|0)<(va|0));Aa=(DM(q)|0)-La|0;jb=0;kb=Aa;lb=k-Aa|0;qa=115}}while(0);do{if((qa|0)==113){la=(DM(q)|0)-La|0;jb=Wa;kb=la;lb=k-la|0;qa=115}else if((qa|0)==114){la=(DM(q)|0)-La|0;Aa=k-la|0;if((Ra|0)==0){jb=0;kb=la;lb=Aa;qa=115;break}else if((Ra|0)==16384){mb=(1<>13,ya>>16)|0)+32768>>16;ya=32768-Ma+(((da((((da((((Ma*-626|0)+16384|0)>>>15<<16)+542441472>>16,Ma)|0)+16384|0)>>>15<<16)-501415936>>16,Ma)|0)+16384|0)>>>15)&65535;Ma=ya<<16>>16;za=16384-Ra<<16;A=(da(za>>13,za>>16)|0)+32768>>16;za=32768-A+(((da((((da((((A*-626|0)+16384|0)>>>15<<16)+542441472>>16,A)|0)+16384|0)>>>15<<16)-501415936>>16,A)|0)+16384|0)>>>15)&65535;A=za<<16>>16;ea=32-(y$(Ma|0)|0)|0;m=32-(y$(A|0)|0)|0;z=A<<15-m<<16>>16;A=Ma<<15-ea<<16>>16;mb=sa;nb=+(ya<<16>>16|0)*30517578125.0e-15;ob=+(za<<16>>16|0)*30517578125.0e-15;pb=(da((m-ea<<11)-(((da((((A*-2597|0)+16384|0)>>>15<<16)+519831552>>16,A)|0)+16384|0)>>>15)+(((da((((z*-2597|0)+16384|0)>>>15<<16)+519831552>>16,z)|0)+16384|0)>>>15)<<16>>16,(va<<23)-8388608>>16)|0)+16384>>15;qb=0;rb=Ra;sb=la;tb=Aa;break}}}while(0);if((qa|0)==115){mb=sa&(1<8192;c[r>>2]=(c[r>>2]|0)-(La+sb);La=la?wa:h;z=la?h:wa;do{if((rb|0)==16384|(rb|0)==0){ub=0}else{if(B){la=+g[La>>2]*+g[z+4>>2]- +g[La+4>>2]*+g[z>>2]<0.0|0;PM(q,la,1);ub=la;break}else{ub=LM(q,1)|0;break}}}while(0);Na=1-(ub<<1)|0;la=rM(a,e,f,La,0,va,Aa,l,ua,n,ja,ka,q,r,ta,t,0,v,w,x,y,sa)|0;g[z>>2]=+g[La+4>>2]*+(-Na|0);g[z+4>>2]=+(Na|0)*+g[La>>2];if(B){M=la;return M|0}else{g[h>>2]=nb*+g[h>>2];Na=h+4|0;g[Na>>2]=nb*+g[Na>>2];Y=ob*+g[wa>>2];g[wa>>2]=Y;A=wa+4|0;g[A>>2]=ob*+g[A>>2];_=+g[h>>2];g[h>>2]=_-Y;g[wa>>2]=_+ +g[wa>>2];_=+g[Na>>2];g[Na>>2]=_- +g[A>>2];g[A>>2]=_+ +g[A>>2];Ba=wa;Ca=va;Da=nb;Ea=la;Fa=qb;break}}do{if((na|0)<2|E){vb=pb}else{if((rb&16383|0)==0){vb=pb;break}if((rb|0)>8192){vb=pb-(pb>>4-ta)|0;break}else{la=pb+(va<<3>>5-ta)|0;vb=(la|0)>0?0:la;break}}}while(0);La=(tb-vb|0)/2|0;z=(tb|0)<(La|0)?tb:La;La=(z|0)<0?0:z;z=tb-La|0;Aa=(c[r>>2]|0)-sb|0;c[r>>2]=Aa;if((ka|0)==0|E){wb=0}else{wb=ka+(va<<2)|0}la=E?t:0;A=E?0:v+1|0;if((La|0)<(z|0)){Na=rM(a,e,f,wa,0,va,z,l,ua,n,ja,wb,q,r,ta,0,0,A,w,ob*x,0,mb>>ua)|0;ea=(c[r>>2]|0)-Aa+z|0;if((ea|0)<25|(rb|0)==16384){xb=La}else{xb=La-24+ea|0}if(E){yb=1.0}else{yb=nb*x}Ga=qb;Ha=rM(a,e,f,h,0,va,xb,l,ua,n,ja,ka,q,r,ta,la,0,A,w,yb,y,mb)|0|Na<<(E?0:na>>1);Ia=nb;Ja=va;Ka=wa;qa=165;break}else{if(E){zb=1.0}else{zb=nb*x}Na=rM(a,e,f,h,0,va,La,l,ua,n,ja,ka,q,r,ta,la,0,A,w,zb,y,mb)|0;la=(c[r>>2]|0)-Aa+La|0;if((la|0)<25|(rb|0)==0){Ab=z}else{Ab=z-24+la|0}la=rM(a,e,f,wa,0,va,Ab,l,ua,n,ja,wb,q,r,ta,0,0,A,w,ob*x,0,mb>>ua)|0;Ga=qb;Ha=la<<(E?0:na>>1)|Na;Ia=nb;Ja=va;Ka=wa;qa=165;break}}}while(0);do{if((qa|0)==165){if(B){M=Ha}else{Ba=Ka;Ca=Ja;Da=Ia;Ea=Ha;Fa=Ga;break}return M|0}}while(0);if(E){do{if((Ca|0)!=2){E=(Ca|0)>0;if(E){Ia=0.0;nb=0.0;Ga=0;while(1){x=+g[Ba+(Ga<<2)>>2];ob=nb+ +g[h+(Ga<<2)>>2]*x;zb=Ia+x*x;Ha=Ga+1|0;if((Ha|0)<(Ca|0)){Ia=zb;nb=ob;Ga=Ha}else{Bb=zb;Cb=ob;break}}}else{Bb=0.0;Cb=0.0}nb=Da*Da+Bb;Ia=Da*Cb*2.0;ob=nb-Ia;zb=nb+Ia;if(zb<.0006000000284984708|ob<.0006000000284984708){if(E){Db=0}else{break}do{g[Ba+(Db<<2)>>2]=+g[h+(Db<<2)>>2];Db=Db+1|0;}while((Db|0)<(Ca|0))}else{Ia=1.0/+T(ob);nb=1.0/+T(zb);if(E){Eb=0}else{break}do{Ga=h+(Eb<<2)|0;x=Da*+g[Ga>>2];Ha=Ba+(Eb<<2)|0;yb=+g[Ha>>2];g[Ga>>2]=Ia*(x-yb);g[Ha>>2]=nb*(x+yb);Eb=Eb+1|0;}while((Eb|0)<(Ca|0))}}}while(0);if((Fa|0)!=0&(Ca|0)>0){Fb=0}else{M=Ea;return M|0}while(1){Fa=Ba+(Fb<<2)|0;g[Fa>>2]=-0.0- +g[Fa>>2];Fa=Fb+1|0;if((Fa|0)<(Ca|0)){Fb=Fa}else{M=Ea;break}}return M|0}if(!H){M=Ea;return M|0}if((na|0)>1){tM(h,ma>>pa,na<0){C=Ea;H=ma;ma=na;Fb=0;while(1){Ca=ma>>1;Ba=H<<1;Fa=C>>>(Ca>>>0)|C;Eb=Ba>>1;if((Ca|0)>0){Db=(Ba|0)>0;E=Ca<<1;Ha=0;do{if(Db){Ga=0;do{Ja=h+((da(E,Ga)|0)+Ha<<2)|0;Da=+g[Ja>>2]*.7071067690849304;Ka=h+((da(Ga<<1|1,Ca)|0)+Ha<<2)|0;Cb=+g[Ka>>2]*.7071067690849304;g[Ja>>2]=Da+Cb;g[Ka>>2]=Da-Cb;Ga=Ga+1|0;}while((Ga|0)<(Eb|0))}Ha=Ha+1|0;}while((Ha|0)<(Ca|0))}Ha=Fb+1|0;if((Ha|0)<(oa|0)){C=Fa;H=Ba;ma=Ca;Fb=Ha}else{Gb=Fa;Hb=Ca;break}}}else{Gb=Ea;Hb=na}if((pa|0)>0){na=Gb;Ea=0;while(1){Fb=d[9592+na|0]|0;ma=1<>Ea>>1;if((ma|0)>0){C=(H|0)>0;oa=ma<<1;Ha=0;do{if(C){Eb=0;do{E=h+((da(oa,Eb)|0)+Ha<<2)|0;Cb=+g[E>>2]*.7071067690849304;Db=h+(((Eb<<1|1)<>2]*.7071067690849304;g[E>>2]=Cb+Da;g[Db>>2]=Cb-Da;Eb=Eb+1|0;}while((Eb|0)<(H|0))}Ha=Ha+1|0;}while((Ha|0)<(ma|0))}ma=Ea+1|0;if((ma|0)<(pa|0)){na=Fb;Ea=ma}else{Ib=Fb;break}}}else{Ib=Gb}Gb=Hb<0){Jb=0}else{break}do{g[t+(Jb<<2)>>2]=Da*+g[h+(Jb<<2)>>2];Jb=Jb+1|0;}while((Jb|0)<(j|0))}}while(0);M=Ib&(1<0&(b|0)>0){m=0}else{break}do{n=da(m,b)|0;o=0;do{g[l+(o+n<<2)>>2]=+g[a+((da(o,d)|0)+m<<2)>>2];o=o+1|0;}while((o|0)<(b|0));m=m+1|0;}while((m|0)<(d|0))}else{o=d-2|0;if((d|0)<=0){break}n=(b|0)>0;p=0;do{if(n){q=da(c[10632+(o+p<<2)>>2]|0,b)|0;r=0;do{g[l+(q+r<<2)>>2]=+g[a+((da(r,d)|0)+p<<2)>>2];r=r+1|0;}while((r|0)<(b|0))}p=p+1|0;}while((p|0)<(d|0))}}while(0);if((j|0)<=0){i=f;return}m$(h|0,k|0,j<<2)|0;i=f;return}function tM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;h=a;j=da(d,b)|0;k=i;i=i+(j<<2)|0;i=i+7&-8;l=k;do{if((e|0)==0){if((d|0)<=0){break}m=(b|0)>0;n=0;do{if(m){o=da(n,b)|0;p=0;do{g[l+((da(p,d)|0)+n<<2)>>2]=+g[a+(p+o<<2)>>2];p=p+1|0;}while((p|0)<(b|0))}n=n+1|0;}while((n|0)<(d|0))}else{n=d-2|0;if((d|0)<=0){break}m=(b|0)>0;p=0;do{if(m){o=da(c[10632+(n+p<<2)>>2]|0,b)|0;q=0;do{g[l+((da(q,d)|0)+p<<2)>>2]=+g[a+(o+q<<2)>>2];q=q+1|0;}while((q|0)<(b|0))}p=p+1|0;}while((p|0)<(d|0))}}while(0);if((j|0)<=0){i=f;return}m$(h|0,k|0,j<<2)|0;i=f;return}function uM(a,b,c,d,e,f,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;h=+h;i=i|0;j=j|0;k=k|0;l=l|0;var m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0;m=+g[41168+(i*12|0)>>2]*f;n=+g[41172+(i*12|0)>>2]*f;o=+g[41176+(i*12|0)>>2]*f;f=+g[41168+(j*12|0)>>2]*h;p=+g[41172+(j*12|0)>>2]*h;q=+g[41176+(j*12|0)>>2]*h;if((l|0)>0){j=0;do{h=+g[k+(j<<2)>>2];r=h*h;h=1.0-r;i=j-c|0;s=n*h;t=o*h;u=j-d|0;v=p*r;w=q*r;g[a+(j<<2)>>2]=w*+g[b+(u+2<<2)>>2]+(w*+g[b+(u-2<<2)>>2]+(v*+g[b+(u+1<<2)>>2]+(v*+g[b+(u-1<<2)>>2]+(f*r*+g[b+(u<<2)>>2]+(t*+g[b+(i+2<<2)>>2]+(t*+g[b+(i-2<<2)>>2]+(s*+g[b+(i+1<<2)>>2]+(s*+g[b+(i-1<<2)>>2]+(+g[b+(j<<2)>>2]+ +g[b+(i<<2)>>2]*m*h)))))))));j=j+1|0;}while((j|0)<(l|0))}if((l|0)<(e|0)){x=l}else{return}do{l=x-d|0;g[a+(x<<2)>>2]=+g[b+(x<<2)>>2]+f*+g[b+(l<<2)>>2]+p*+g[b+(l-1<<2)>>2]+p*+g[b+(l+1<<2)>>2]+q*+g[b+(l-2<<2)>>2]+q*+g[b+(l+2<<2)>>2];x=x+1|0;}while((x|0)<(e|0));return}function vM(a){a=a|0;var b=0;b=VM(48e3,960,0)|0;return(c[b+8>>2]<<5)+80+(da((c[b+4>>2]<<2)+8288|0,a)|0)|0}function wM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;f=VM(48e3,960,0)|0;if(d>>>0>2>>>0){g=-1;i=e;return g|0}if((a|0)==0){g=-7;i=e;return g|0}h=f+4|0;n$(a|0,0,(c[f+8>>2]<<5)+80+(da((c[h>>2]<<2)+8288|0,d)|0)|0)|0;c[a>>2]=f;c[a+4>>2]=c[h>>2];c[a+8>>2]=d;c[a+12>>2]=d;d=a+16|0;c[d>>2]=1;c[a+20>>2]=0;c[a+24>>2]=c[f+12>>2];c[a+28>>2]=1;c[a+44>>2]=0;AM(a,4028,(a=i,i=i+1|0,i=i+7&-8,c[a>>2]=0,a)|0)|0;i=a;if((b|0)==16e3){j=3}else if((b|0)==12e3){j=4}else if((b|0)==8e3){j=6}else if((b|0)==48e3){j=1}else if((b|0)==24e3){j=2}else{j=0}c[d>>2]=j;g=((j|0)==0)<<31>>31;i=e;return g|0}function xM(e,f,h,j,k,l){e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;var 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,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,_=0,$=0,aa=0,ba=0,ca=0.0,ea=0.0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0.0,na=0,oa=0,pa=0.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,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,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0.0,mb=0,nb=0,ob=0,pb=0.0;m=i;i=i+104|0;n=m|0;o=m+48|0;p=m+56|0;q=m+64|0;r=m+72|0;s=m+80|0;t=m+88|0;u=m+96|0;v=c[e+8>>2]|0;c[s>>2]=0;c[t>>2]=0;w=c[e+12>>2]|0;x=e+16|0;y=c[x>>2]|0;z=e+4|0;A=c[z>>2]|0;B=A+2048|0;C=0;do{D=da(B,C)|0;c[p+(C<<2)>>2]=e+80+(D<<2);c[o+(C<<2)>>2]=e+80+(D+1024<<2);c[q+(C<<2)>>2]=e+80+(D+2048<<2);C=C+1|0;}while((C|0)<(v|0));C=da(y,k)|0;k=da(A+2072|0,v)|0;A=e+80+(k<<2)|0;y=e|0;B=c[y>>2]|0;D=B+8|0;E=c[D>>2]<<1;F=E+k|0;G=e+80+(F<<2)|0;H=F+E|0;I=e+80+(H<<2)|0;J=H+E|0;E=c[B+36>>2]|0;a:do{if((E|0)<0){K=0}else{L=c[B+44>>2]|0;M=0;while(1){N=M+1|0;if((L<(E|0)){O=-1;i=m;return O|0}E=1<>>0>1275>>>0|(j|0)==0){O=-1;i=m;return O|0}M=c[B+44>>2]<>2]|0;P=c[B+12>>2]|0;Q=(N|0)>(P|0)?P:N;if((f|0)==0|(h|0)<2){yM(e,j,M,K);O=(C|0)/(c[x>>2]|0)|0;i=m;return O|0}N=da(((v|0)>(w|0)?v:w)<<2,M)|0;P=i;i=i+N|0;i=i+7&-8;N=w<<2;R=da(N,M)|0;S=i;i=i+R|0;i=i+7&-8;R=S;T=da(N,c[D>>2]|0)|0;D=i;i=i+T|0;i=i+7&-8;T=e+20|0;N=c[T>>2]|0;U=B+32|0;B=0;V=c[U>>2]|0;while(1){if((b[V+(N<<1)>>1]<0){W=da(B,M)|0;X=0;while(1){g[R+(X+W<<2)>>2]=0.0;Y=X+1|0;Z=c[U>>2]|0;if((Y|0)<(b[Z+(N<<1)>>1]<>1]<=(w|0)){break}D=_;N=c[U>>2]|0}if((l|0)==0){EM(n,f,h);$=n}else{$=l}l=(w|0)==1;do{if(l){n=c[(c[y>>2]|0)+8>>2]|0;if((n|0)>0){aa=0;ba=n}else{break}do{n=aa+k|0;f=e+80+(n<<2)|0;ca=+g[f>>2];ea=+g[e+80+(n+ba<<2)>>2];g[f>>2]=ca>ea?ca:ea;aa=aa+1|0;ba=c[(c[y>>2]|0)+8>>2]|0;}while((aa|0)<(ba|0))}}while(0);ba=h<<3;aa=$+20|0;f=c[aa>>2]|0;n=$+28|0;U=c[n>>2]|0;N=(y$(U|0)|0|-32)+f|0;do{if((N|0)<(ba|0)){if((N|0)!=1){fa=N;ga=0;break}if((IM($,15)|0)==0){fa=1;ga=0;break}ha=c[aa>>2]|0;ia=c[n>>2]|0;ja=30}else{ha=f;ia=U;ja=30}}while(0);if((ja|0)==30){c[aa>>2]=ba-ha-(y$(ia|0)|0|-32)+ha;fa=ba;ga=1}do{if((c[T>>2]|0)==0){if((fa+16|0)>(ba|0)){ka=0;la=fa;ma=0.0;na=0;break}if((IM($,1)|0)==0){oa=0;pa=0.0;qa=0}else{ha=KM($,6)|0;ia=(LM($,ha+4|0)|0)-1+(16<>2]|0;if((U+2+(y$(c[n>>2]|0)|0|-32)|0)>(ba|0)){ra=0}else{ra=JM($,1800,2)|0}oa=ra;pa=+(ha+1|0)*.09375;qa=ia}ia=c[aa>>2]|0;ka=oa;la=(y$(c[n>>2]|0)|0|-32)+ia|0;ma=pa;na=qa}else{ka=0;la=fa;ma=0.0;na=0}}while(0);fa=(K|0)>0;do{if(fa){if((la+3|0)>(ba|0)){sa=la;ta=0;break}qa=IM($,3)|0;oa=c[aa>>2]|0;sa=(y$(c[n>>2]|0)|0|-32)+oa|0;ta=qa}else{sa=la;ta=0}}while(0);la=(ta|0)!=0;qa=la?E:0;if((sa+3|0)>(ba|0)){ua=0}else{ua=IM($,3)|0}aN(c[y>>2]|0,c[T>>2]|0,c[L>>2]|0,A,ua,$,w,K);ua=i;i=i+(c[(c[y>>2]|0)+8>>2]<<2)|0;i=i+7&-8;sa=ua;ua=c[T>>2]|0;oa=c[L>>2]|0;ra=c[$+4>>2]<<3;ia=c[aa>>2]|0;ha=(y$(c[n>>2]|0)|0|-32)+ia|0;ia=la?2:4;if(fa){va=(ha+(ia|1)|0)>>>0<=ra>>>0}else{va=0}fa=ra-(va&1)|0;ra=(ua|0)<(oa|0);if(ra){U=la?4:5;f=0;N=ua;D=0;S=ia;ia=ha;while(1){if((S+ia|0)>>>0>fa>>>0){wa=ia;xa=D;ya=f}else{ha=(IM($,S)|0)^f;_=c[aa>>2]|0;wa=(y$(c[n>>2]|0)|0|-32)+_|0;xa=ha|D;ya=ha}c[sa+(N<<2)>>2]=ya;ha=N+1|0;if((ha|0)<(oa|0)){f=ya;N=ha;D=xa;S=U;ia=wa}else{za=xa;break}}}else{za=0}do{if(va){xa=ta<<2;if((a[za+xa+(1768+(K<<3))|0]|0)==(a[za+(xa|2)+(1768+(K<<3))|0]|0)){Aa=0;break}Aa=(IM($,1)|0)<<1}else{Aa=0}}while(0);if(ra){ra=Aa+(ta<<2)|0;ta=ua;do{ua=sa+(ta<<2)|0;c[ua>>2]=a[ra+(c[ua>>2]|0)+(1768+(K<<3))|0]|0;ta=ta+1|0;}while((ta|0)<(oa|0))}oa=c[aa>>2]|0;if((oa+4+(y$(c[n>>2]|0)|0|-32)|0)>(ba|0)){Ba=2}else{Ba=JM($,4552,5)|0}oa=c[y>>2]|0;ta=oa+8|0;ra=c[ta>>2]|0;ua=ra<<2;Aa=i;i=i+ua|0;i=i+7&-8;za=Aa;Aa=i;i=i+ua|0;i=i+7&-8;va=Aa;Aa=i;i=i+ua|0;i=i+7&-8;xa=Aa;Aa=i;i=i+ua|0;i=i+7&-8;ua=Aa;if((ra|0)>0){Aa=oa+32|0;wa=w-1+(K<<1)|0;ia=oa+104|0;oa=0;U=ra;while(1){ra=oa+1|0;S=c[Aa>>2]|0;D=(da(U,wa)|0)+oa|0;c[va+(oa<<2)>>2]=(da(da((b[S+(ra<<1)>>1]|0)-(b[S+(oa<<1)>>1]|0)<>2]|0)+D|0]|0)+64|0)|0)>>2;D=c[ta>>2]|0;if((ra|0)<(D|0)){oa=ra;U=D}else{break}}}U=h<<6;h=DM($)|0;oa=c[T>>2]|0;ta=6;ia=h;h=U;b:while(1){wa=ta<<3;Aa=oa;Ca=ia;Da=h;while(1){if((Aa|0)>=(c[L>>2]|0)){break b}Ea=Aa+1|0;D=c[(c[y>>2]|0)+32>>2]|0;ra=(da((b[D+(Ea<<1)>>1]|0)-(b[D+(Aa<<1)>>1]|0)|0,w)|0)<>2]=0;Aa=Ea;Ca=Ca;Da=Da;continue}while(1){if((Ia|0)>=(c[S>>2]|0)){Ja=Ga;Ka=Fa;La=Ia;break}D=IM($,Ha)|0;N=DM($)|0;if((D|0)==0){Ja=N;Ka=Fa;La=Ia;break}D=Ia+ra|0;ya=Fa-ra|0;if((N+8|0)<(ya|0)){Fa=ya;Ga=N;Ha=1;Ia=D}else{Ja=N;Ka=ya;La=D;break}}c[xa+(Aa<<2)>>2]=La;if((La|0)>0){break}else{Aa=Ea;Ca=Ja;Da=Ka}}oa=Ea;ta=(ta|0)<3?2:ta-1|0;ia=Ja;h=Ka}Ka=i;i=i+(c[(c[y>>2]|0)+8>>2]<<2)|0;i=i+7&-8;h=Ka;if((Ca+48|0)>(Da|0)){Ma=5}else{Ma=JM($,1752,7)|0}Da=U-(DM($)|0)-1|0;if(la&(K|0)>1){Na=(Da|0)>=((K<<3)+16|0)}else{Na=0}Ca=Na?8:0;Ka=eN(c[y>>2]|0,c[T>>2]|0,c[L>>2]|0,xa,va,Ma,s,t,Da-Ca|0,u,za,h,ua,w,K,$,0,0)|0;bN(c[y>>2]|0,c[T>>2]|0,c[L>>2]|0,A,h,$,w);Da=c[y>>2]|0;Ma=da(c[Da+8>>2]|0,w)|0;va=i;i=i+Ma|0;i=i+7&-8;Ma=(w|0)==2;if(Ma){Oa=R+(M<<2)|0}else{Oa=0}xa=e+32|0;qM(0,Da,c[T>>2]|0,c[L>>2]|0,R,Oa,va,0,za,qa,Ba,c[t>>2]|0,c[s>>2]|0,sa,U-Ca|0,c[u>>2]|0,$,K,Ka,xa);do{if(Na){Ka=(LM($,1)|0)==0;u=c[y>>2]|0;Ca=c[T>>2]|0;U=c[L>>2]|0;sa=c[aa>>2]|0;cN(u,Ca,U,A,h,ua,ba-sa-(y$(c[n>>2]|0)|0|-32)|0,$,w);if(Ka){break}pM(c[y>>2]|0,R,va,K,w,M,c[T>>2]|0,c[L>>2]|0,A,G,I,za,c[xa>>2]|0)}else{Ka=c[y>>2]|0;sa=c[T>>2]|0;U=c[L>>2]|0;Ca=c[aa>>2]|0;cN(Ka,sa,U,A,h,ua,ba-Ca-(y$(c[n>>2]|0)|0|-32)|0,$,w)}}while(0);dN(c[y>>2]|0,c[T>>2]|0,c[L>>2]|0,B,A,w);A=c[y>>2]|0;do{if(ga){if((da(c[A+8>>2]|0,w)|0)>0){Pa=0}else{Qa=A;break}while(1){g[B+(Pa<<2)>>2]=0.0;g[e+80+(Pa+k<<2)>>2]=-28.0;ua=Pa+1|0;h=c[y>>2]|0;if((ua|0)<(da(c[h+8>>2]|0,w)|0)){Pa=ua}else{Qa=h;break}}}else{Qa=A}}while(0);oM(Qa,R,V,B,Q,w,E);B=c[p>>2]|0;R=2048-M<<2;s$(B|0,B+(M<<2)|0,R|0)|0;B=(v|0)==2;if(B){Qa=c[p+4>>2]|0;s$(Qa|0,Qa+(M<<2)|0,R|0)|0}R=c[T>>2]|0;Qa=c[y>>2]|0;p=Qa+32|0;A=0;Pa=c[p>>2]|0;while(1){if((b[Pa+(R<<1)>>1]<0){ga=da(A,M)|0;h=0;while(1){g[V+(h+ga<<2)>>2]=0.0;ua=h+1|0;za=c[p>>2]|0;if((ua|0)<(b[za+(R<<1)>>1]<>2]|0;A=0;R=Ra;while(1){Ra=da(M,A)|0;h=b[R+(Q<<1)>>1]<=(w|0)){break}A=Ra;R=c[p>>2]|0}p=1024-M|0;R=r|0;c[R>>2]=(c[o>>2]|0)+(p<<2);do{if(B){c[r+4>>2]=(c[o+4>>2]|0)+(p<<2);if(!l){break}if((M|0)>0){Ta=0}else{ja=102;break}while(1){g[V+(Ta+M<<2)>>2]=+g[V+(Ta<<2)>>2];A=Ta+1|0;if((A|0)<(M|0)){Ta=A}else{ja=102;break}}}else{ja=102}}while(0);do{if((ja|0)==102){if(Ma&(v|0)==1&(M|0)>0){Ua=0}else{break}do{Ta=V+(Ua<<2)|0;g[Ta>>2]=(+g[Ta>>2]+ +g[V+(Ua+M<<2)>>2])*.5;Ua=Ua+1|0;}while((Ua|0)<(M|0))}}while(0);zM(Qa,qa,V,R,q|0,v,K);q=e+48|0;R=e+52|0;V=e+60|0;qa=e+56|0;Qa=e+68|0;Ua=e+64|0;Ma=(K|0)!=0;K=0;do{ja=c[q>>2]|0;Ta=(ja|0)>15?ja:15;c[q>>2]=Ta;ja=c[R>>2]|0;p=(ja|0)>15?ja:15;c[R>>2]=p;ja=c[r+(K<<2)>>2]|0;o=c[y>>2]|0;uM(ja,ja,p,Ta,c[o+44>>2]|0,+g[V>>2],+g[qa>>2],c[Qa>>2]|0,c[Ua>>2]|0,c[o+60>>2]|0,c[z>>2]|0);if(Ma){o=c[y>>2]|0;Ta=c[o+44>>2]|0;p=ja+(Ta<<2)|0;uM(p,p,c[q>>2]|0,na,M-Ta|0,+g[qa>>2],ma,c[Ua>>2]|0,ka,c[o+60>>2]|0,c[o+4>>2]|0)}K=K+1|0;}while((K|0)<(v|0));c[R>>2]=c[q>>2];g[V>>2]=+g[qa>>2];c[Qa>>2]=c[Ua>>2];c[q>>2]=na;g[qa>>2]=ma;c[Ua>>2]=ka;if(Ma){c[R>>2]=na;g[V>>2]=ma;c[Qa>>2]=ka}do{if(l){ka=c[(c[y>>2]|0)+8>>2]|0;if((ka|0)>0){Va=0;Wa=ka}else{break}do{ka=Va+k|0;g[e+80+(ka+Wa<<2)>>2]=+g[e+80+(ka<<2)>>2];Va=Va+1|0;Wa=c[(c[y>>2]|0)+8>>2]|0;}while((Va|0)<(Wa|0))}}while(0);Wa=c[y>>2]|0;Va=(c[Wa+8>>2]|0)>0;do{if(la){if(Va){Xa=0}else{Ya=Wa;break}while(1){l=e+80+(Xa+F<<2)|0;ma=+g[l>>2];pa=+g[e+80+(Xa+k<<2)>>2];g[l>>2]=ma>2]|0;if((l|0)<(c[ka+8>>2]<<1|0)){Xa=l}else{Ya=ka;break}}}else{if(Va){Za=0}else{Ya=Wa;break}do{g[e+80+(Za+H<<2)>>2]=+g[e+80+(Za+F<<2)>>2];Za=Za+1|0;_a=c[y>>2]|0;$a=c[_a+8>>2]|0;}while((Za|0)<($a<<1|0));if(($a|0)>0){ab=0}else{Ya=_a;break}do{g[e+80+(ab+F<<2)>>2]=+g[e+80+(ab+k<<2)>>2];ab=ab+1|0;bb=c[y>>2]|0;cb=c[bb+8>>2]|0;}while((ab|0)<(cb<<1|0));if((cb|0)<=0){Ya=bb;break}pa=+(E|0)*.0010000000474974513;ka=0;while(1){l=e+80+(J+ka<<2)|0;ma=pa+ +g[l>>2];ea=+g[e+80+(ka+k<<2)>>2];g[l>>2]=ma>2]|0;if((l|0)<(c[Qa+8>>2]<<1|0)){ka=l}else{Ya=Qa;break}}}}while(0);J=c[T>>2]|0;if((J|0)>0){E=0;do{g[e+80+(E+k<<2)>>2]=0.0;g[e+80+(E+H<<2)>>2]=-28.0;g[e+80+(E+F<<2)>>2]=-28.0;E=E+1|0;db=c[T>>2]|0;}while((E|0)<(db|0));eb=c[y>>2]|0;fb=db}else{eb=Ya;fb=J}J=c[L>>2]|0;if((J|0)<(c[eb+8>>2]|0)){Ya=J;do{g[e+80+(Ya+k<<2)>>2]=0.0;g[e+80+(Ya+H<<2)>>2]=-28.0;g[e+80+(Ya+F<<2)>>2]=-28.0;Ya=Ya+1|0;gb=c[y>>2]|0;}while((Ya|0)<(c[gb+8>>2]|0));hb=c[T>>2]|0;ib=gb}else{hb=fb;ib=eb}if((hb|0)>0){hb=0;eb=ib;while(1){g[e+80+(hb+k+(c[eb+8>>2]|0)<<2)>>2]=0.0;g[e+80+(hb+H+(c[(c[y>>2]|0)+8>>2]|0)<<2)>>2]=-28.0;g[e+80+(hb+F+(c[(c[y>>2]|0)+8>>2]|0)<<2)>>2]=-28.0;fb=hb+1|0;gb=c[y>>2]|0;if((fb|0)<(c[T>>2]|0)){hb=fb;eb=gb}else{jb=gb;break}}}else{jb=ib}ib=c[L>>2]|0;L=c[jb+8>>2]|0;if((ib|0)<(L|0)){eb=ib;ib=L;while(1){g[e+80+(eb+k+ib<<2)>>2]=0.0;g[e+80+(eb+H+(c[(c[y>>2]|0)+8>>2]|0)<<2)>>2]=-28.0;g[e+80+(eb+F+(c[(c[y>>2]|0)+8>>2]|0)<<2)>>2]=-28.0;L=eb+1|0;hb=c[y>>2]|0;T=c[hb+8>>2]|0;if((L|0)<(T|0)){eb=L;ib=T}else{kb=hb;break}}}else{kb=jb}c[xa>>2]=c[n>>2];xa=c[x>>2]|0;jb=kb+16|0;ib=(M|0)>0;eb=kb+20|0;y=kb+28|0;kb=0;F=0;while(1){H=e+72+(F<<2)|0;pa=+g[H>>2];c:do{if(ib){k=kb;hb=1;T=c[r+(F<<2)>>2]|0;L=j+(F<<2)|0;ea=pa;while(1){ma=+g[T>>2];ca=ea+ma;lb=+g[jb>>2]*ca-ma*+g[eb>>2];if((k|0)==0){g[L>>2]=ca*+g[y>>2]*30517578125.0e-15}gb=k+1|0;if((gb|0)==(xa|0)){mb=L+(v<<2)|0;nb=0}else{mb=L;nb=gb}if((hb|0)>=(M|0)){ob=nb;pb=lb;break c}k=nb;hb=hb+1|0;T=T+4|0;L=mb;ea=lb}}else{ob=kb;pb=pa}}while(0);g[H>>2]=pb;L=F+1|0;if((L|0)<(v|0)){kb=ob;F=L}else{break}}c[e+44>>2]=0;F=c[aa>>2]|0;if(((y$(c[n>>2]|0)|0|-32)+F|0)>(ba|0)){O=-3;i=m;return O|0}if((c[$+44>>2]|0)!=0){c[e+36>>2]=1}O=(C|0)/(c[x>>2]|0)|0;i=m;return O|0}function yM(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var h=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,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0.0,ma=0.0,na=0,oa=0,pa=0,qa=0,ra=0.0,sa=0.0,ta=0.0,ua=0,va=0.0,wa=0.0,xa=0,ya=0.0,za=0.0,Aa=0.0,Ba=0,Ca=0.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.0;h=i;i=i+8432|0;j=h|0;k=h+8|0;l=h+16|0;m=h+24|0;n=h+32|0;o=h+40|0;p=h+4136|0;q=h+8232|0;r=h+8336|0;s=c[a+8>>2]|0;t=a|0;u=c[t>>2]|0;v=c[u+8>>2]|0;w=c[u+4>>2]|0;x=c[u+32>>2]|0;y=a+4|0;z=c[y>>2]|0;A=z+2048|0;B=0;do{C=da(A,B)|0;c[l+(B<<2)>>2]=a+80+(C<<2);c[k+(B<<2)>>2]=a+80+(C+1024<<2);c[m+(B<<2)>>2]=a+80+(C+2048<<2);B=B+1|0;}while((B|0)<(s|0));B=da(z+2072|0,s)|0;z=(v*6|0)+B|0;C=1024-e|0;D=0;do{c[n+(D<<2)>>2]=(c[k+(D<<2)>>2]|0)+(C<<2);D=D+1|0;}while((D|0)<(s|0));D=da(A,s)|0;A=a+80+(B<<2)|0;C=a+80+(z<<2)|0;z=w+e|0;E=a+44|0;F=c[E>>2]|0;G=(F|0)>4;do{if(G){H=7}else{if((c[a+20>>2]|0)!=0){H=7;break}if((F|0)==0){I=o|0;WM(l|0,I,2048,s);XM(o+1440|0,I,1328,620,j);I=720-(c[j>>2]|0)|0;c[j>>2]=I;c[a+40>>2]=I;J=1.0;K=I}else{I=c[a+40>>2]|0;c[j>>2]=I;J=.800000011920929;K=I}I=i;i=i+(w<<2)|0;i=i+7&-8;L=I;I=r;M=p|0;N=q|0;O=u+60|0;P=r|0;Q=2048-e+w<<2;R=(z|0)>0;S=1023-e|0;U=(w|0)>0;V=(e|0)>0;W=a+48|0;X=a+56|0;Y=a+64|0;Z=(w|0)/2|0;_=(w|0)>1;$=w-1|0;aa=w+1023|0;ba=z<<2;ca=0;ea=K;while(1){n$(I|0,0,96)|0;fa=c[n+(ca<<2)>>2]|0;ga=fa;ha=c[k+(ca<<2)>>2]|0;ia=0;do{g[p+(ia<<2)>>2]=+g[ha+(ia<<2)>>2];ia=ia+1|0;}while((ia|0)<1024);ia=1024-ea|0;if((c[E>>2]|0)==0){$M(M,N,c[O>>2]|0,w,24,1024);g[N>>2]=+g[N>>2]*1.000100016593933;ja=1;do{ka=q+(ja<<2)|0;la=+g[ka>>2];ma=+(ja|0)*.00800000037997961;g[ka>>2]=la-ma*ma*la;ja=ja+1|0;}while((ja|0)<25);YM(a+80+((ca*24|0)+D<<2)|0,N,24);na=0}else{na=0}do{g[r+(na<<2)>>2]=+g[ha+(~na<<2)>>2];na=na+1|0;}while((na|0)<24);ja=a+80+((ca*24|0)+D<<2)|0;ZM(M,ja,M,1024,24,P);ka=c[j>>2]|0;oa=(ka|0)>512?512:ka;if((oa|0)>0){ka=1024-oa|0;pa=1024-(oa<<1)|0;la=1.0;ma=1.0;qa=0;while(1){ra=+g[p+(ka+qa<<2)>>2];sa=la+ra*ra;ra=+g[p+(pa+qa<<2)>>2];ta=ma+ra*ra;ua=qa+1|0;if((ua|0)<(oa|0)){la=sa;ma=ta;qa=ua}else{va=sa;wa=ta;break}}}else{va=1.0;wa=1.0}ma=+T((va>wa?wa:va)/wa);qa=c[l+(ca<<2)>>2]|0;s$(qa|0,qa+(e<<2)|0,Q|0)|0;if(R){la=ma;ta=0.0;qa=ia;oa=0;while(1){if((oa+qa|0)>1023){xa=qa-(c[j>>2]|0)|0;ya=ma*la}else{xa=qa;ya=la}g[fa+(oa<<2)>>2]=ya*+g[p+(xa+oa<<2)>>2];sa=+g[ha+(oa-e+xa<<2)>>2];ra=ta+sa*sa;pa=oa+1|0;if((pa|0)<(z|0)){la=ya;ta=ra;qa=xa;oa=pa}else{za=ra;break}}}else{za=0.0}oa=0;do{g[r+(oa<<2)>>2]=+g[ha+(S-oa<<2)>>2];oa=oa+1|0;}while((oa|0)<24);do{if(R){oa=0;do{qa=fa+(oa<<2)|0;g[qa>>2]=J*+g[qa>>2];oa=oa+1|0;}while((oa|0)<(z|0));_M(fa,ja,fa,z,24,P);if(R){Aa=0.0;Ba=0}else{Ca=0.0;break}while(1){ta=+g[fa+(Ba<<2)>>2];la=Aa+ta*ta;oa=Ba+1|0;if((oa|0)<(z|0)){Aa=la;Ba=oa}else{Ca=la;break}}}else{_M(fa,ja,fa,z,24,P);Ca=0.0}}while(0);do{if(za>Ca*.20000000298023224){if(!(za>2]=+g[oa>>2]*(1.0-ta*+g[(c[O>>2]|0)+(ja<<2)>>2]);ja=ja+1|0;}while((ja|0)<(w|0))}if(V){Da=w}else{break}do{ja=fa+(Da<<2)|0;g[ja>>2]=la*+g[ja>>2];Da=Da+1|0;}while((Da|0)<(z|0))}else{if(!R){break}n$(ga|0,0,ba|0)|0}}while(0);ga=c[W>>2]|0;fa=c[y>>2]|0;la=-0.0- +g[X>>2];ja=c[Y>>2]|0;ta=+g[41168+(ja*12|0)>>2]*la;ma=+g[41172+(ja*12|0)>>2]*la;ra=+g[41176+(ja*12|0)>>2]*la;if((fa|0)>0){ja=0;do{oa=ja-ga|0;g[L+(ja<<2)>>2]=+g[ha+(ja+1024<<2)>>2]+ta*+g[ha+(oa+1024<<2)>>2]+ma*+g[ha+(oa+1023<<2)>>2]+ma*+g[ha+(oa+1025<<2)>>2]+ra*+g[ha+(oa+1022<<2)>>2]+ra*+g[ha+(oa+1026<<2)>>2];ja=ja+1|0;}while((ja|0)<(fa|0))}a:do{if(_){fa=0;ja=0;while(1){ga=c[O>>2]|0;oa=$+ja|0;ra=+g[ga+(oa<<2)>>2];ma=+g[ga+(fa<<2)>>2]*+g[L+(oa<<2)>>2]+ra*+g[L+(fa<<2)>>2];g[ha+(fa+1024<<2)>>2]=ra*ma;g[ha+(aa+ja<<2)>>2]=ma*+g[(c[O>>2]|0)+(fa<<2)>>2];oa=fa+1|0;if((oa|0)>=(Z|0)){break a}ga=~fa;fa=oa;ja=ga}}}while(0);ha=ca+1|0;if((ha|0)>=(s|0)){break}ca=ha;ea=c[j>>2]|0}Ea=a+16|0}}while(0);if((H|0)==7){H=a+24|0;j=c[H>>2]|0;y=u+12|0;z=c[y>>2]|0;Da=(j|0)>(z|0)?z:j;z=da(e<<2,s)|0;Ba=i;i=i+z|0;i=i+7&-8;r=Ba;xa=i;i=i+z|0;i=i+7&-8;z=xa;p=da(s<<2,v)|0;D=i;i=i+p|0;i=i+7&-8;p=D;if(G){dN(u,c[a+20>>2]|0,j,p,C,s)}else{Ca=(F|0)==0?1.5:.5;F=a+20|0;C=0;G=j;while(1){j=c[F>>2]|0;if((j|0)<(G|0)){D=(da(C,v)|0)+B|0;na=j;while(1){j=a+80+(D+na<<2)|0;g[j>>2]=+g[j>>2]-Ca;j=na+1|0;q=c[H>>2]|0;if((j|0)<(q|0)){na=j}else{Fa=q;break}}}else{Fa=G}na=C+1|0;if((na|0)<(s|0)){C=na;G=Fa}else{break}}dN(u,c[F>>2]|0,Fa,p,A,s)}A=a+32|0;Fa=c[A>>2]|0;F=a+20|0;if((s|0)>0){G=Fa;C=0;B=c[t>>2]|0;while(1){v=da(C,e)|0;na=c[F>>2]|0;D=B+32|0;q=c[D>>2]|0;if((b[q+(na<<1)>>1]<0){j=0;while(1){g[z+(j+v<<2)>>2]=0.0;k=j+1|0;K=c[D>>2]|0;if((k|0)<(b[K+(na<<1)>>1]<>2]|0)){j=G;D=na;while(1){K=b[x+(D<<1)>>1]|0;k=(K<>1]|0)-K<0){K=0;ca=j;while(1){Z=nM(ca)|0;g[z+(K+k<<2)>>2]=+(Z>>20|0);O=K+1|0;if((O|0)<(ea|0)){K=O;ca=Z}else{Ha=Z;break}}}else{Ha=j}iN(z+(k<<2)|0,ea,1.0);if((o|0)<(c[y>>2]|0)){j=Ha;D=o}else{break}}D=c[t>>2]|0;Ia=Ha;Ja=D;Ka=c[D+32>>2]|0}else{Ia=G;Ja=B;Ka=Ga}D=b[Ka+(c[H>>2]<<1)>>1]<>2]=La;oM(u,z,r,p,c[y>>2]|0,s,1<>2]|0;F=(c[t>>2]|0)+32|0;t=0;p=c[F>>2]|0;while(1){if((b[p+(y<<1)>>1]<0){z=da(t,e)|0;La=0;while(1){g[r+(La+z<<2)>>2]=0.0;A=La+1|0;Fa=c[F>>2]|0;if((A|0)<(b[Fa+(y<<1)>>1]<>2]|0;p=0;do{t=da(p,e)|0;y=b[Ma>>1]<>2]|0;s$(Na|0,Na+(e<<2)|0,p|0)|0;w=w+1|0;}while((w|0)<(s|0));zM(u,0,r,n|0,m|0,s,f);Ea=Da}Da=c[Ea>>2]|0;Ea=u+16|0;f=(e|0)>0;m=u+20|0;r=u+28|0;u=0;w=0;while(1){p=a+72+(w<<2)|0;Ca=+g[p>>2];b:do{if(f){l=u;Na=1;Ba=c[n+(w<<2)>>2]|0;x=d+(w<<2)|0;za=Ca;while(1){Aa=+g[Ba>>2];J=za+Aa;ya=+g[Ea>>2]*J-Aa*+g[m>>2];if((l|0)==0){g[x>>2]=J*+g[r>>2]*30517578125.0e-15}Ma=l+1|0;if((Ma|0)==(Da|0)){Oa=x+(s<<2)|0;Pa=0}else{Oa=x;Pa=Ma}if((Na|0)>=(e|0)){Qa=Pa;Ra=ya;break b}l=Pa;Na=Na+1|0;Ba=Ba+4|0;x=Oa;za=ya}}else{Qa=u;Ra=Ca}}while(0);g[p>>2]=Ra;x=w+1|0;if((x|0)<(s|0)){u=Qa;w=x}else{break}}c[E>>2]=(c[E>>2]|0)+1;i=h;return}function zM(a,b,d,e,f,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;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,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;k=i;l=a+44|0;m=c[l>>2]<>2]|0;o=i;i=i+(m+n<<2)|0;i=i+7&-8;p=o;q=(b|0)!=0;r=n<<2;s=(n|0)>0;t=a+64|0;u=a+60|0;v=a+36|0;a=q?0:j;j=0;do{if(q){w=c[l>>2]|0;n$(o|0,0,r|0)|0;if((b|0)>0){x=w;y=b;z=5}}else{n$(o|0,0,r|0)|0;x=m;y=1;z=5}if((z|0)==5){z=0;w=da(da(x,j)|0,y)|0;A=0;do{B=p+((da(A,x)|0)<<2)|0;UM(t,d+(A+w<<2)|0,B,c[u>>2]|0,n,(c[v>>2]|0)-a|0,y);A=A+1|0;}while((A|0)<(y|0))}if(s){A=f+(j<<2)|0;w=e+(j<<2)|0;B=0;while(1){g[(c[w>>2]|0)+(B<<2)>>2]=+g[p+(B<<2)>>2]+ +g[(c[A>>2]|0)+(B<<2)>>2];C=B+1|0;if((C|0)<(n|0)){B=C}else{D=n;break}}}else{D=0}if((D|0)<(m|0)){B=e+(j<<2)|0;A=D;do{g[(c[B>>2]|0)+(A<<2)>>2]=+g[p+(A<<2)>>2];A=A+1|0;}while((A|0)<(m|0))}if(s){A=f+(j<<2)|0;B=0;do{g[(c[A>>2]|0)+(B<<2)>>2]=+g[p+(B+m<<2)>>2];B=B+1|0;}while((B|0)<(n|0))}j=j+1|0;}while((j|0)<(h|0));i=k;return}function AM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;i=i+16|0;f=e|0;h=f|0;j=f;c[j>>2]=d;c[j+4>>2]=0;a:do{switch(b|0){case 10015:{j=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);if((j|0)==0){k=24;break a}c[j>>2]=c[a>>2];k=23;break};case 4031:{j=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);if((j|0)==0){k=24;break a}c[j>>2]=c[a+32>>2];k=23;break};case 10007:{j=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);if((j|0)==0){k=24;break a}d=a+36|0;c[j>>2]=c[d>>2];c[d>>2]=0;k=23;break};case 10016:{c[a+28>>2]=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);k=23;break};case 10010:{d=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);if((d|0)<0){k=24;break a}if((d|0)>=(c[(c[a>>2]|0)+8>>2]|0)){k=24;break a}c[a+20>>2]=d;k=23;break};case 10008:{d=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);if((d-1|0)>>>0>1>>>0){k=24;break a}c[a+12>>2]=d;k=23;break};case 10012:{d=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);if((d|0)<1){k=24;break a}if((d|0)>(c[(c[a>>2]|0)+8>>2]|0)){k=24;break a}c[a+24>>2]=d;k=23;break};case 4033:{d=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);if((d|0)==0){k=24;break a}c[d>>2]=c[a+48>>2];k=23;break};case 4027:{d=(y=c[h+4>>2]|0,c[h+4>>2]=y+8,c[(c[h>>2]|0)+y>>2]|0);if((d|0)==0){k=24;break a}c[d>>2]=(c[a+4>>2]|0)/(c[a+16>>2]|0)|0;k=23;break};case 4028:{d=c[a+8>>2]|0;j=da((c[a+4>>2]|0)+2072|0,d)|0;f=a|0;l=c[f>>2]|0;m=c[l+8>>2]|0;n=m<<1;o=n+j|0;j=o+n|0;n$(a+32|0,0,(m<<5)+48+(da((c[l+4>>2]<<2)+8288|0,d)|0)|0)|0;if((m|0)>0){p=0}else{k=23;break a}while(1){g[a+80+(j+p<<2)>>2]=-28.0;g[a+80+(p+o<<2)>>2]=-28.0;m=p+1|0;if((m|0)<(c[(c[f>>2]|0)+8>>2]<<1|0)){p=m}else{k=23;break}}break};default:{q=-5;i=e;return q|0}}}while(0);if((k|0)==23){q=0;i=e;return q|0}else if((k|0)==24){q=-1;i=e;return q|0}return 0}function BM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;f=i;if((b|0)==4){g=c[a+12>>2]|0;h=(g|0)>-1?g:-g|0;if((h|0)==0){j=0}else{j=(h<<1)-1|0}k=j+(g>>>31)|0;g=c[a+8>>2]|0;j=((g|0)>-1?g:-g|0)+h|0;if((g|0)<0){l=(j<<1|1)+k|0}else{l=k}if((j|0)==0){m=0}else{m=da((j<<1)-2|0,j)|0|1}k=m+l|0;l=c[a+4>>2]|0;m=((l|0)>-1?l:-l|0)+j|0;if((l|0)<0){l=m+1|0;n=(da((l<<1)-2|0,l)|0|1)+k|0}else{n=k}if((m|0)==0){o=0}else{o=(da(da(m,1431655766)|0,(da((m<<1)-3|0,m)|0)+4|0)|0)-1|0}k=o+n|0;n=c[a>>2]|0;o=((n|0)>-1?n:-n|0)+m|0;if((n|0)<0){n=o+1|0;p=k-1+(da(da(n,1431655766)|0,(da((n<<1)-3|0,n)|0)+4|0)|0)|0}else{p=k}OM(e,p,(((da((da(o,o)|0)+2|0,o)|0)>>>0)/3|0)<<3);i=f;return}else if((b|0)==2){o=c[a+4>>2]|0;p=(o|0)>-1?o:-o|0;if((p|0)==0){q=0}else{q=(p<<1)-1|0}k=q+(o>>>31)|0;o=c[a>>2]|0;q=((o|0)>-1?o:-o|0)+p|0;if((o|0)<0){r=(q<<1|1)+k|0}else{r=k}OM(e,r,q<<2);i=f;return}else if((b|0)==3){q=c[a+8>>2]|0;r=(q|0)>-1?q:-q|0;if((r|0)==0){s=0}else{s=(r<<1)-1|0}k=s+(q>>>31)|0;q=c[a+4>>2]|0;s=((q|0)>-1?q:-q|0)+r|0;if((q|0)<0){t=(s<<1|1)+k|0}else{t=k}if((s|0)==0){u=0}else{u=da((s<<1)-2|0,s)|0|1}k=u+t|0;t=c[a>>2]|0;u=((t|0)>-1?t:-t|0)+s|0;if((t|0)<0){t=u+1|0;v=(da((t<<1)-2|0,t)|0|1)+k|0}else{v=k}OM(e,v,da(u<<2,u)|0|2);i=f;return}else{u=i;i=i+((d<<2)+8)|0;i=i+7&-8;v=u;c[v>>2]=0;u=d+1|0;if((d|0)>=0){k=1;while(1){c[v+(k<<2)>>2]=(k<<1)-1;if((k|0)<(u|0)){k=k+1|0}else{break}}}k=c[a+(b-1<<2)>>2]|0;t=(k|0)>-1?k:-k|0;s=b-2|0;q=(k>>>31)+(c[v+(t<<2)>>2]|0)|0;k=c[a+(s<<2)>>2]|0;r=((k|0)>-1?k:-k|0)+t|0;if((k|0)<0){w=(c[v+(r+1<<2)>>2]|0)+q|0}else{w=q}a:do{if((s|0)>0){q=d+2|0;k=v+((q>>>0>2>>>0?u:1)<<2)|0;t=r;o=w;p=b-3|0;while(1){n=1;m=0;l=c[v>>2]|0;while(1){j=c[v+(n<<2)>>2]|0;x=m+l+j|0;c[v+(n-1<<2)>>2]=m;g=n+1|0;if(g>>>0>>0){n=g;m=x;l=j}else{break}}c[k>>2]=x;l=(c[v+(t<<2)>>2]|0)+o|0;m=c[a+(p<<2)>>2]|0;n=((m|0)>-1?m:-m|0)+t|0;if((m|0)<0){y=(c[v+(n+1<<2)>>2]|0)+l|0}else{y=l}if((p|0)<=0){z=n;A=y;break a}t=n;o=y;p=p-1|0}}else{z=r;A=w}}while(0);OM(e,A,(c[v+(z+1<<2)>>2]|0)+(c[v+(z<<2)>>2]|0)|0);i=f;return}}function CM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;f=i;if((b|0)==3){g=KM(e,da(d<<2,d)|0|2)|0;h=d+1|0;j=da((h<<1)-2|0,h)|0|1;h=j>>>0<=g>>>0;k=h<<31>>31;l=h?j:0;j=g-l|0;do{if((l|0)==(g|0)){m=0;n=0}else{h=((TM((j<<1)-1|0)|0)+1|0)>>>1;if((h|0)==0){m=0;n=0;break}m=da((h<<1)-2|0,h)|0|1;n=h}}while(0);g=j-m|0;c[a>>2]=k+d-n^k;k=n<<1|1;m=k>>>0<=g>>>0;j=m<<31>>31;l=g-(m?k:0)|0;k=(l+1|0)>>>1;if((k|0)==0){o=0}else{o=(k<<1)-1|0}m=l-o|0;c[a+4>>2]=j+n-k^j;c[a+8>>2]=k-m^-m;i=f;return}else if((b|0)==4){m=KM(e,(((da((da(d,d)|0)+2|0,d)|0)>>>0)/3|0)<<3)|0;k=d+1|0;j=(da(da(k,1431655766)|0,(da((k<<1)-3|0,k)|0)+4|0)|0)-1|0;k=j>>>0<=m>>>0;n=k<<31>>31;o=m-(k?j:0)|0;j=d;k=0;a:while(1){m=j;while(1){p=m+k>>1;if((p|0)==0){q=0}else{q=(da(da(p,1431655766)|0,(da((p<<1)-3|0,p)|0)+4|0)|0)-1|0}if(q>>>0>>0){break}if(q>>>0>o>>>0){m=p-1|0}else{r=18;break a}}l=p+1|0;if((p|0)<(m|0)){j=m;k=l}else{s=l;break}}if((r|0)==18){s=p+1|0}r=o-q|0;c[a>>2]=n+d-p^n;n=a+4|0;q=da((s<<1)-2|0,s)|0|1;s=q>>>0<=r>>>0;o=s<<31>>31;k=s?q:0;q=r-k|0;do{if((k|0)==(r|0)){t=0;u=0}else{s=((TM((q<<1)-1|0)|0)+1|0)>>>1;if((s|0)==0){t=0;u=0;break}t=da((s<<1)-2|0,s)|0|1;u=s}}while(0);r=q-t|0;c[n>>2]=o+p-u^o;o=u<<1|1;p=o>>>0<=r>>>0;n=p<<31>>31;t=r-(p?o:0)|0;o=(t+1|0)>>>1;if((o|0)==0){v=0}else{v=(o<<1)-1|0}p=t-v|0;c[a+8>>2]=n+u-o^n;c[a+12>>2]=o-p^-p;i=f;return}else if((b|0)==2){p=KM(e,d<<2)|0;o=d<<1|1;n=o>>>0<=p>>>0;u=n<<31>>31;v=p-(n?o:0)|0;o=(v+1|0)>>>1;if((o|0)==0){w=0}else{w=(o<<1)-1|0}n=v-w|0;c[a>>2]=u+d-o^u;c[a+4>>2]=o-n^-n;i=f;return}else{n=i;i=i+((d<<2)+8)|0;i=i+7&-8;o=n;u=d+2|0;c[o>>2]=0;w=n+4|0;c[w>>2]=1;b:do{if(b>>>0<7>>>0){v=2;do{c[o+(v<<2)>>2]=(v<<1)-1;v=v+1|0;}while(v>>>0>>0);if(!(b>>>0>2>>>0)){break}v=d+1|0;m=o+((v>>>0>2>>>0?v:2)<<2)|0;p=2;do{t=1;r=1;q=c[w>>2]|0;while(1){k=t+1|0;s=c[o+(k<<2)>>2]|0;x=r+q+s|0;c[o+(t<<2)>>2]=r;if(k>>>0>>0){t=k;r=x;q=s}else{break}}c[m>>2]=x;p=p+1|0;}while(p>>>0>>0)}else{p=(b<<1)-1|0;c[n+8>>2]=p;if(u>>>0>3>>>0){y=3;z=p;A=1}else{break}do{m=y-2|0;v=32-(y$(m^y-1|0)|0)|0;q=v-1|0;r=1<>>(q>>>0),p)|0)+~(A>>>(q>>>0))+((r-(t&A)+(da(t&z,p)|0)|0)>>>(q>>>0))|0,c[186648+(m>>v<<2)>>2]|0)|0)+A|0;c[o+(y<<2)>>2]=A;v=y+1|0;if(!(v>>>0>>0)){break b}m=(da(A,p)|0)-z|0;z=(da(c[186648+(y>>>1<<2)>>2]|0,m)|0)+z|0;c[o+(v<<2)>>2]=z;y=y+2|0;}while(y>>>0>>0)}}while(0);u=d;y=0;z=KM(e,(c[o+(d+1<<2)>>2]|0)+(c[o+(d<<2)>>2]|0)|0)|0;while(1){d=c[o+(u+1<<2)>>2]|0;e=z>>>0>=d>>>0;A=z-(e?d:0)|0;d=u;while(1){B=c[o+(d<<2)>>2]|0;if(B>>>0>A>>>0){d=d-1|0}else{break}}n=e<<31>>31;c[a+(y<<2)>>2]=n+u-d^n;n=d+2|0;x=1;w=0;p=c[o>>2]|0;while(1){v=c[o+(x<<2)>>2]|0;C=v-p-w|0;c[o+(x-1<<2)>>2]=w;m=x+1|0;if(m>>>0>>0){x=m;w=C;p=v}else{break}}c[o+((n>>>0>2>>>0?d+1|0:1)<<2)>>2]=C;p=y+1|0;if((p|0)<(b|0)){u=d;y=p;z=A-B|0}else{break}}i=f;return}}function DM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=c[a+20>>2]|0;d=c[a+28>>2]|0;a=32-(y$(d|0)|0)|0;e=d>>>((a-16|0)>>>0);d=da(e,e)|0;e=d>>>31;f=d>>>15>>>(e>>>0);d=da(f,f)|0;f=d>>>31;g=d>>>15>>>(f>>>0);return(b<<3)-((da(g,g)|0)>>>31|(f|(e|a<<1)<<1)<<1)|0}function EM(a,b,e){a=a|0;b=b|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;c[a>>2]=b;c[a+4>>2]=e;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;f=a+20|0;c[f>>2]=9;g=a+24|0;c[g>>2]=0;h=a+28|0;c[h>>2]=128;if((e|0)==0){i=0;j=0}else{c[g>>2]=1;i=d[b]|0;j=1}k=a+40|0;c[k>>2]=i;l=i>>>1^127;m=a+32|0;c[m>>2]=l;c[a+44>>2]=0;a=9;n=128;o=i;i=j;j=l;while(1){l=a+8|0;c[f>>2]=l;p=n<<8;c[h>>2]=p;if(i>>>0>>0){q=i+1|0;c[g>>2]=q;r=d[b+i|0]|0;s=q}else{r=0;s=i}c[k>>2]=r;q=((r|o<<8)>>>1&255|j<<8&2147483392)^255;c[m>>2]=q;if(p>>>0<8388609>>>0){a=l;n=p;o=r;i=s;j=q}else{break}}return}function FM(a,b){a=a|0;b=b|0;var d=0,e=0;d=((c[a+28>>2]|0)>>>0)/(b>>>0)|0;c[a+36>>2]=d;e=(((c[a+32>>2]|0)>>>0)/(d>>>0)|0)+1|0;return b-(e>>>0>b>>>0?b:e)|0}function GM(a,b){a=a|0;b=b|0;var d=0,e=0;d=(c[a+28>>2]|0)>>>(b>>>0);c[a+36>>2]=d;e=1<>2]|0)>>>0)/(d>>>0)|0)+1|0;return e-(e>>>0>>0?e:b)|0}function HM(a,b,e,f){a=a|0;b=b|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;g=c[a+36>>2]|0;h=da(g,f-e|0)|0;f=a+32|0;i=(c[f>>2]|0)-h|0;c[f>>2]=i;if((b|0)==0){j=a+28|0;k=(c[j>>2]|0)-h|0;l=j}else{k=da(g,e-b|0)|0;l=a+28|0}c[l>>2]=k;if(!(k>>>0<8388609>>>0)){return}b=a+20|0;e=a+40|0;g=a+24|0;j=a|0;h=c[a+4>>2]|0;a=c[b>>2]|0;m=k;k=c[e>>2]|0;n=c[g>>2]|0;o=i;while(1){i=a+8|0;c[b>>2]=i;p=m<<8;c[l>>2]=p;if(n>>>0>>0){q=n+1|0;c[g>>2]=q;r=d[(c[j>>2]|0)+n|0]|0;s=q}else{r=0;s=n}c[e>>2]=r;q=((r|k<<8)>>>1&255|o<<8&2147483392)^255;c[f>>2]=q;if(p>>>0<8388609>>>0){a=i;m=p;k=r;n=s;o=q}else{break}}return}function IM(a,b){a=a|0;b=b|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,q=0,r=0,s=0,t=0;e=a+28|0;f=c[e>>2]|0;g=a+32|0;h=c[g>>2]|0;i=f>>>(b>>>0);b=h>>>0>>0;j=b&1;if(b){k=i;l=h}else{b=h-i|0;c[g>>2]=b;k=f-i|0;l=b}c[e>>2]=k;if(!(k>>>0<8388609>>>0)){return j|0}b=a+20|0;i=a+40|0;f=a+24|0;h=a|0;m=c[a+4>>2]|0;a=c[b>>2]|0;n=k;k=c[i>>2]|0;o=c[f>>2]|0;p=l;while(1){l=a+8|0;c[b>>2]=l;q=n<<8;c[e>>2]=q;if(o>>>0>>0){r=o+1|0;c[f>>2]=r;s=d[(c[h>>2]|0)+o|0]|0;t=r}else{s=0;t=o}c[i>>2]=s;r=((s|k<<8)>>>1&255|p<<8&2147483392)^255;c[g>>2]=r;if(q>>>0<8388609>>>0){a=l;n=q;k=s;o=t;p=r}else{break}}return j|0}function JM(a,b,e){a=a|0;b=b|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,t=0;f=a+28|0;g=c[f>>2]|0;h=a+32|0;i=c[h>>2]|0;j=g>>>(e>>>0);e=-1;k=g;while(1){l=e+1|0;m=da(d[b+l|0]|0,j)|0;if(i>>>0>>0){e=l;k=m}else{break}}e=i-m|0;c[h>>2]=e;i=k-m|0;c[f>>2]=i;if(!(i>>>0<8388609>>>0)){return l|0}m=a+20|0;k=a+40|0;j=a+24|0;b=a|0;g=c[a+4>>2]|0;a=c[m>>2]|0;n=i;i=c[k>>2]|0;o=c[j>>2]|0;p=e;while(1){e=a+8|0;c[m>>2]=e;q=n<<8;c[f>>2]=q;if(o>>>0>>0){r=o+1|0;c[j>>2]=r;s=d[(c[b>>2]|0)+o|0]|0;t=r}else{s=0;t=o}c[k>>2]=s;r=((s|i<<8)>>>1&255|p<<8&2147483392)^255;c[h>>2]=r;if(q>>>0<8388609>>>0){a=e;n=q;i=s;o=t;p=r}else{break}}return l|0}function KM(a,b){a=a|0;b=b|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,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;e=b-1|0;f=32-(y$(e|0)|0)|0;if(!(f>>>0>8>>>0)){g=a+28|0;h=c[g>>2]|0;i=(h>>>0)/(b>>>0)|0;c[a+36>>2]=i;j=a+32|0;k=c[j>>2]|0;l=((k>>>0)/(i>>>0)|0)+1|0;m=l>>>0>b>>>0?b:l;l=b-m|0;n=da(e-l|0,i)|0;o=k-n|0;c[j>>2]=o;k=(m|0)==(b|0)?h-n|0:i;c[g>>2]=k;if(!(k>>>0<8388609>>>0)){p=l;return p|0}i=a+20|0;n=a+40|0;h=a+24|0;b=a|0;m=c[a+4>>2]|0;q=c[i>>2]|0;r=k;k=c[n>>2]|0;s=c[h>>2]|0;t=o;while(1){o=q+8|0;c[i>>2]=o;u=r<<8;c[g>>2]=u;if(s>>>0>>0){v=s+1|0;c[h>>2]=v;w=d[(c[b>>2]|0)+s|0]|0;x=v}else{w=0;x=s}c[n>>2]=w;v=((w|k<<8)>>>1&255|t<<8&2147483392)^255;c[j>>2]=v;if(u>>>0<8388609>>>0){q=o;r=u;k=w;s=x;t=v}else{p=l;break}}return p|0}l=f-8|0;f=e>>>(l>>>0);t=f+1|0;x=a+28|0;s=c[x>>2]|0;w=(s>>>0)/(t>>>0)|0;c[a+36>>2]=w;k=a+32|0;r=c[k>>2]|0;q=((r>>>0)/(w>>>0)|0)+1|0;j=q>>>0>t>>>0?t:q;q=t-j|0;n=da(f-q|0,w)|0;f=r-n|0;c[k>>2]=f;r=(t|0)==(j|0)?s-n|0:w;c[x>>2]=r;if(r>>>0<8388609>>>0){w=a+20|0;n=a+40|0;s=a+24|0;j=a|0;t=c[a+4>>2]|0;b=c[w>>2]|0;h=r;r=c[n>>2]|0;m=c[s>>2]|0;g=f;while(1){f=b+8|0;c[w>>2]=f;i=h<<8;c[x>>2]=i;if(m>>>0>>0){v=m+1|0;c[s>>2]=v;y=d[(c[j>>2]|0)+m|0]|0;z=v}else{y=0;z=m}c[n>>2]=y;v=((y|r<<8)>>>1&255|g<<8&2147483392)^255;c[k>>2]=v;if(i>>>0<8388609>>>0){b=f;h=i;r=y;m=z;g=v}else{break}}}g=q<>2]|0;m=a+16|0;y=c[m>>2]|0;if(y>>>0>>0){r=a+8|0;h=a|0;b=y+8|0;k=((b|0)>25?y+7|0:24)-y|0;n=c[a+4>>2]|0;j=z;s=y;t=c[r>>2]|0;while(1){if(t>>>0>>0){x=t+1|0;c[r>>2]=x;A=d[(c[h>>2]|0)+(n-x)|0]|0;B=x}else{A=0;B=t}C=A<>2]=D>>>(l>>>0);c[m>>2]=E-l;E=a+20|0;c[E>>2]=(c[E>>2]|0)+l;E=D&(1<>>0>e>>>0)){p=E;return p|0}c[a+44>>2]=1;p=e;return p|0}function LM(a,b){a=a|0;b=b|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,q=0,r=0,s=0,t=0,u=0;e=a+12|0;f=c[e>>2]|0;g=a+16|0;h=c[g>>2]|0;if(h>>>0>>0){i=a+8|0;j=a|0;k=h+(((h+8|0)>25?h+7|0:24)-h&-8)|0;l=c[a+4>>2]|0;m=f;n=h;o=c[i>>2]|0;while(1){if(o>>>0>>0){p=o+1|0;c[i>>2]=p;q=d[(c[j>>2]|0)+(l-p)|0]|0;r=p}else{q=0;r=o}s=q<>2]=t>>>(b>>>0);c[g>>2]=u-b;u=a+20|0;c[u>>2]=(c[u>>2]|0)+b;return t&(1<>2]|0;h=(g>>>0)/(e>>>0)|0;if((b|0)==0){i=g-(da(h,e-d|0)|0)|0}else{j=g-(da(h,e-b|0)|0)|0;e=a+32|0;c[e>>2]=j+(c[e>>2]|0);i=da(h,d-b|0)|0}c[f>>2]=i;if(!(i>>>0<8388609>>>0)){return}i=a+32|0;b=a+20|0;d=c[i>>2]|0;do{QM(a,d>>>23);d=c[i>>2]<<8&2147483392;c[i>>2]=d;h=c[f>>2]<<8;c[f>>2]=h;c[b>>2]=(c[b>>2]|0)+8;}while(h>>>0<8388609>>>0);return}function NM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+28|0;f=c[e>>2]|0;g=a+32|0;h=f>>>(d>>>0);d=f-h|0;f=(b|0)!=0;if(f){c[g>>2]=(c[g>>2]|0)+d}b=f?h:d;c[e>>2]=b;if(!(b>>>0<8388609>>>0)){return}b=a+20|0;d=c[g>>2]|0;do{QM(a,d>>>23);d=c[g>>2]<<8&2147483392;c[g>>2]=d;h=c[e>>2]<<8;c[e>>2]=h;c[b>>2]=(c[b>>2]|0)+8;}while(h>>>0<8388609>>>0);return}function OM(b,d,e){b=b|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,t=0,u=0,v=0,w=0;f=e-1|0;g=32-(y$(f|0)|0)|0;if(!(g>>>0>8>>>0)){h=b+28|0;i=c[h>>2]|0;j=(i>>>0)/(e>>>0)|0;if((d|0)==0){k=i-(da(j,f)|0)|0}else{l=i-(da(j,e-d|0)|0)|0;e=b+32|0;c[e>>2]=l+(c[e>>2]|0);k=j}c[h>>2]=k;if(!(k>>>0<8388609>>>0)){return}k=b+32|0;j=b+20|0;e=c[k>>2]|0;do{QM(b,e>>>23);e=c[k>>2]<<8&2147483392;c[k>>2]=e;l=c[h>>2]<<8;c[h>>2]=l;c[j>>2]=(c[j>>2]|0)+8;}while(l>>>0<8388609>>>0);return}j=g-8|0;g=f>>>(j>>>0);f=g+1|0;h=d>>>(j>>>0);e=b+28|0;k=c[e>>2]|0;l=(k>>>0)/(f>>>0)|0;if((h|0)==0){m=k-(da(l,g)|0)|0}else{g=k-(da(l,f-h|0)|0)|0;h=b+32|0;c[h>>2]=g+(c[h>>2]|0);m=l}c[e>>2]=m;if(m>>>0<8388609>>>0){m=b+32|0;l=b+20|0;h=c[m>>2]|0;do{QM(b,h>>>23);h=c[m>>2]<<8&2147483392;c[m>>2]=h;g=c[e>>2]<<8;c[e>>2]=g;c[l>>2]=(c[l>>2]|0)+8;}while(g>>>0<8388609>>>0)}l=(1<>2]|0;h=b+16|0;m=c[h>>2]|0;if((m+j|0)>>>0>32>>>0){g=b+24|0;f=b+8|0;k=b+4|0;i=b|0;n=b+44|0;o=7-m|0;p=((o|0)>-8?o:-8)+m|0;o=m;q=e;do{r=c[f>>2]|0;s=c[k>>2]|0;if((r+(c[g>>2]|0)|0)>>>0>>0){t=r+1|0;c[f>>2]=t;a[(c[i>>2]|0)+(s-t)|0]=q;u=0}else{u=-1}c[n>>2]=c[n>>2]|u;q=q>>>8;o=o-8|0;}while((o|0)>7);v=m-8-(p&-8)|0;w=q}else{v=m;w=e}c[d>>2]=l<>2]=v+j;v=b+20|0;c[v>>2]=(c[v>>2]|0)+j;return}function PM(b,d,e){b=b|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,t=0,u=0,v=0,w=0;f=b+12|0;g=c[f>>2]|0;h=b+16|0;i=c[h>>2]|0;if((i+e|0)>>>0>32>>>0){j=b+24|0;k=b+8|0;l=b+4|0;m=b|0;n=b+44|0;o=7-i|0;p=i+((o|0)>-8?o:-8)&-8;o=i;q=g;do{r=c[k>>2]|0;s=c[l>>2]|0;if((r+(c[j>>2]|0)|0)>>>0>>0){t=r+1|0;c[k>>2]=t;a[(c[m>>2]|0)+(s-t)|0]=q;u=0}else{u=-1}c[n>>2]=c[n>>2]|u;q=q>>>8;o=o-8|0;}while((o|0)>7);v=i-8-p|0;w=q}else{v=i;w=g}c[f>>2]=d<>2]=v+e;v=b+20|0;c[v>>2]=(c[v>>2]|0)+e;return}function QM(b,d){b=b|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;if((d|0)==255){e=b+36|0;c[e>>2]=(c[e>>2]|0)+1;return}e=d>>8;f=b+40|0;g=c[f>>2]|0;if((g|0)>-1){h=b+24|0;i=c[h>>2]|0;if(((c[b+8>>2]|0)+i|0)>>>0<(c[b+4>>2]|0)>>>0){c[h>>2]=i+1;a[(c[b>>2]|0)+i|0]=g+e;j=0}else{j=-1}g=b+44|0;c[g>>2]=c[g>>2]|j}j=b+36|0;g=c[j>>2]|0;if((g|0)!=0){i=b+24|0;h=b+8|0;k=b+4|0;l=e+255&255;e=b|0;m=b+44|0;b=g;do{g=c[i>>2]|0;if(((c[h>>2]|0)+g|0)>>>0<(c[k>>2]|0)>>>0){c[i>>2]=g+1;a[(c[e>>2]|0)+g|0]=l;n=0;o=c[j>>2]|0}else{n=-1;o=b}c[m>>2]=c[m>>2]|n;b=o-1|0;c[j>>2]=b;}while((b|0)!=0)}c[f>>2]=d&255;return}function RM(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,h=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.0,y=0.0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0.0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0,X=0,Y=0.0,Z=0.0,_=0,$=0,aa=0.0,ba=0.0,ca=0,ea=0,fa=0.0,ga=0.0;f=i;i=i+32|0;h=f|0;j=c[a+8>>2]|0;k=(j|0)>0?j:0;j=a|0;if((c[j>>2]|0)>0){l=a+44|0;m=0;do{n=d+(m<<3)|0;o=e+(b[(c[l>>2]|0)+(m<<1)>>1]<<3)|0;p=c[n+4>>2]|0;c[o>>2]=c[n>>2];c[o+4>>2]=p;m=m+1|0;}while((m|0)<(c[j>>2]|0))}c[h>>2]=1;j=0;m=1;while(1){l=j<<1;d=b[a+12+((l|1)<<1)>>1]|0;p=da(m,b[a+12+(l<<1)>>1]|0)|0;q=j+1|0;c[h+(q<<2)>>2]=p;if(d<<16>>16==1){break}else{j=q;m=p}}if(!((j|0)>-1)){i=f;return}m=a+48|0;p=b[a+12+((q<<1)-1<<1)>>1]|0;q=j;while(1){if((q|0)==0){r=1;s=0}else{j=q<<1;r=b[a+12+(j-1<<1)>>1]|0;s=j}j=b[a+12+(s<<1)>>1]|0;a:do{if((j|0)==2){d=c[h+(q<<2)>>2]|0;l=d<0&(p|0)>0){t=0}else{break}do{o=da(t,r)|0;n=c[m>>2]|0;u=e+(o+p<<3)|0;v=0;w=e+(o<<3)|0;while(1){o=u|0;x=+g[o>>2];y=+g[n>>2];z=u+4|0;A=+g[z>>2];B=+g[n+4>>2];C=x*y+A*B;D=y*A-x*B;E=w|0;g[o>>2]=+g[E>>2]-C;o=w+4|0;g[z>>2]=+g[o>>2]-D;g[E>>2]=C+ +g[E>>2];g[o>>2]=D+ +g[o>>2];o=v+1|0;if((o|0)<(p|0)){n=n+(l<<3)|0;u=u+8|0;v=o;w=w+8|0}else{break}}t=t+1|0;}while((t|0)<(d|0))}else if((j|0)==5){d=c[h+(q<<2)>>2]|0;l=d<>2]|0;v=da(l,p)|0;D=+g[w+(v<<3)>>2];C=+g[w+(v<<3)+4>>2];v=da(l<<1,p)|0;B=+g[w+(v<<3)>>2];x=+g[w+(v<<3)+4>>2];if((d|0)<=0){break}v=p<<1;u=p*3|0;n=p<<2;o=(p|0)>0;E=l*3|0;z=0;do{F=da(z,r)|0;if(o){G=0;H=e+(F+n<<3)|0;I=e+(F+u<<3)|0;J=e+(F+v<<3)|0;K=e+(F+p<<3)|0;L=e+(F<<3)|0;while(1){F=L|0;A=+g[F>>2];M=L+4|0;y=+g[M>>2];N=K|0;O=+g[N>>2];P=da(G,l)|0;Q=+g[w+(P<<3)>>2];R=K+4|0;S=+g[R>>2];T=+g[w+(P<<3)+4>>2];U=O*Q+S*T;V=Q*S-O*T;P=J|0;T=+g[P>>2];W=da(G<<1,l)|0;O=+g[w+(W<<3)>>2];X=J+4|0;S=+g[X>>2];Q=+g[w+(W<<3)+4>>2];Y=T*O+S*Q;Z=O*S-T*Q;W=I|0;Q=+g[W>>2];_=da(E,G)|0;T=+g[w+(_<<3)>>2];$=I+4|0;S=+g[$>>2];O=+g[w+(_<<3)+4>>2];aa=Q*T+S*O;ba=T*S-Q*O;_=H|0;O=+g[_>>2];ca=da(G<<2,l)|0;Q=+g[w+(ca<<3)>>2];ea=H+4|0;S=+g[ea>>2];T=+g[w+(ca<<3)+4>>2];fa=O*Q+S*T;ga=Q*S-O*T;T=U+fa;O=V+ga;S=U-fa;fa=V-ga;ga=Y+aa;V=Z+ba;U=Y-aa;aa=Z-ba;g[F>>2]=A+(ga+T);g[M>>2]=y+(V+O);ba=B*ga+(A+D*T);Z=B*V+(y+D*O);Y=-0.0-C*fa-x*aa;Q=x*U+C*S;g[N>>2]=ba-Y;g[R>>2]=Z-Q;g[_>>2]=ba+Y;g[ea>>2]=Q+Z;Z=D*ga+(A+B*T);T=D*V+(y+B*O);O=x*fa-C*aa;aa=C*U-x*S;g[P>>2]=O+Z;g[X>>2]=aa+T;g[W>>2]=Z-O;g[$>>2]=T-aa;$=G+1|0;if(($|0)<(p|0)){G=$;H=H+8|0;I=I+8|0;J=J+8|0;K=K+8|0;L=L+8|0}else{break}}}z=z+1|0;}while((z|0)<(d|0))}else if((j|0)==4){d=c[h+(q<<2)>>2]|0;z=d<0;v=z<<1;u=z*3|0;n=0;do{o=c[m>>2]|0;if(E){L=o;K=o;J=o;o=0;I=e+((da(n,r)|0)<<3)|0;while(1){H=I+(p<<3)|0;x=+g[H>>2];C=+g[J>>2];G=I+(p<<3)+4|0;B=+g[G>>2];D=+g[J+4>>2];aa=x*C+B*D;T=C*B-x*D;$=I+(w<<3)|0;D=+g[$>>2];x=+g[K>>2];W=I+(w<<3)+4|0;B=+g[W>>2];C=+g[K+4>>2];O=D*x+B*C;Z=x*B-D*C;X=I+(l<<3)|0;C=+g[X>>2];D=+g[L>>2];P=I+(l<<3)+4|0;B=+g[P>>2];x=+g[L+4>>2];S=C*D+B*x;U=D*B-C*x;ea=I|0;x=+g[ea>>2];C=x-O;_=I+4|0;B=+g[_>>2];D=B-Z;fa=O+x;g[ea>>2]=fa;x=Z+B;g[_>>2]=x;B=aa+S;Z=T+U;O=aa-S;S=T-U;g[$>>2]=fa-B;g[W>>2]=x-Z;g[ea>>2]=B+ +g[ea>>2];g[_>>2]=Z+ +g[_>>2];g[H>>2]=C-S;g[G>>2]=D+O;g[X>>2]=C+S;g[P>>2]=D-O;P=o+1|0;if((P|0)<(p|0)){L=L+(u<<3)|0;K=K+(v<<3)|0;J=J+(z<<3)|0;o=P;I=I+8|0}else{break}}}n=n+1|0;}while((n|0)<(d|0))}else if((j|0)==3){d=c[h+(q<<2)>>2]|0;n=d<>2]|0;u=n<<1;O=-0.0- +g[v+((da(n,p)|0)<<3)+4>>2];l=0;w=v;while(1){v=e+((da(l,r)|0)<<3)|0;E=p;I=w;o=w;while(1){J=v+(p<<3)|0;D=+g[J>>2];S=+g[I>>2];K=v+(p<<3)+4|0;C=+g[K>>2];Z=+g[I+4>>2];B=D*S+C*Z;x=S*C-D*Z;L=v+(z<<3)|0;Z=+g[L>>2];D=+g[o>>2];P=v+(z<<3)+4|0;C=+g[P>>2];S=+g[o+4>>2];fa=Z*D+C*S;U=D*C-Z*S;S=B+fa;Z=x+U;X=v|0;g[J>>2]=+g[X>>2]-S*.5;G=v+4|0;g[K>>2]=+g[G>>2]-Z*.5;C=(B-fa)*O;fa=(x-U)*O;g[X>>2]=+g[X>>2]+S;g[G>>2]=Z+ +g[G>>2];g[L>>2]=fa+ +g[J>>2];g[P>>2]=+g[K>>2]-C;g[J>>2]=+g[J>>2]-fa;g[K>>2]=C+ +g[K>>2];K=E-1|0;if((K|0)==0){break}else{v=v+8|0;E=K;I=I+(n<<3)|0;o=o+(u<<3)|0}}o=l+1|0;if((o|0)>=(d|0)){break a}l=o;w=c[m>>2]|0}}}while(0);if((q|0)>0){p=r;q=q-1|0}else{break}}i=f;return}function SM(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;d=GM(a,15)|0;if(d>>>0>>0){e=b;f=0;g=0;h=e+g|0;i=h>>>0<32768>>>0;j=i?h:32768;HM(a,g,j,32768);return f|0}k=((da(16384-c|0,32736-b|0)|0)>>>15)+1|0;a:do{if(k>>>0>1>>>0){l=b;m=1;n=k;while(1){o=n<<1;p=o+l|0;if(d>>>0

>>0){q=m;r=l;s=n;break a}t=m+1|0;u=((da(o-2|0,c)|0)>>>15)+1|0;if(u>>>0>1>>>0){l=p;m=t;n=u}else{v=p;w=t;x=u;y=5;break}}}else{v=b;w=1;x=k;y=5}}while(0);if((y|0)==5){y=(d-v|0)>>>1;q=y+w|0;r=(y<<1)+v|0;s=x}x=r+s|0;v=d>>>0>>0;e=s;f=v?-q|0:q;g=v?r:x;h=e+g|0;i=h>>>0<32768>>>0;j=i?h:32768;HM(a,g,j,32768);return f|0}function TM(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=(y$(a|0)|0)>>>1^15;c=a;a=b;d=0;e=1<>>0>c>>>0){f=c;g=d}else{f=c-b|0;g=d+e|0}if((a|0)>0){c=f;a=a-1|0;d=g;e=e>>>1}else{break}}return g|0}function UM(a,b,d,e,f,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.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;k=i;l=c[a>>2]>>h;m=l>>1;n=l>>2;o=m<<2;p=i;i=i+o|0;i=i+7&-8;q=p;r=i;i=i+o|0;i=i+7&-8;o=r;s=.7853981852531433/+(l|0);t=a+24|0;u=c[t>>2]|0;v=(n|0)>0;if(v){w=j<<1;x=-w|0;y=o;z=b+((da(m-1|0,j)|0)<<2)|0;j=b;b=0;while(1){A=+g[z>>2];B=+g[u+(b<>2];C=+g[j>>2];D=+g[u+(n-b<>2];E=C*D-A*B;F=-0.0-A*D-B*C;g[y>>2]=E-s*F;g[y+4>>2]=F+s*E;G=b+1|0;if((G|0)<(n|0)){y=y+8|0;z=z+(x<<2)|0;j=j+(w<<2)|0;b=G}else{break}}}RM(c[a+8+(h<<2)>>2]|0,r,p);p=c[t>>2]|0;do{if(v){t=q;a=0;while(1){E=+g[t>>2];b=t+4|0;F=+g[b>>2];C=+g[p+(a<>2];B=+g[p+(n-a<>2];D=E*C-F*B;A=F*C+E*B;g[t>>2]=D-s*A;g[b>>2]=A+s*D;b=a+1|0;if((b|0)<(n|0)){t=t+8|0;a=b}else{break}}if(!v){break}a=q;t=q+(m-1<<2)|0;b=o;w=0;while(1){g[b>>2]=-0.0- +g[a>>2];g[b+4>>2]=+g[t>>2];j=w+1|0;if((j|0)<(n|0)){a=a+8|0;t=t-8|0;b=b+8|0;w=j}else{break}}}}while(0);q=m-f>>1;v=o+(n<<2)|0;h=o+(n-1<<2)|0;o=m-q|0;p=d+(o<<2)|0;w=d+(o-1<<2)|0;o=(f|0)/2|0;b=d+(n-q-o<<2)|0;t=e+(f-1<<2)|0;f=n-o|0;a=(f|0)>0;if(a){j=r+((o<<2)-4)|0;x=m+o-1-(q+n)|0;z=h;y=w;u=0;while(1){g[y>>2]=+g[z>>2];G=u+1|0;if((G|0)<(f|0)){z=z-4|0;y=y-4|0;u=G}else{break}}H=j;I=d+(x<<2)|0;J=f}else{H=h;I=w;J=0}if((J|0)<(n|0)){w=H;H=I;I=b;b=e;h=t;x=J;while(1){s=+g[w>>2];g[I>>2]=+g[I>>2]-s*+g[b>>2];g[H>>2]=+g[H>>2]+s*+g[h>>2];J=x+1|0;if((J|0)<(n|0)){w=w-4|0;H=H-4|0;I=I+4|0;b=b+4|0;h=h-4|0;x=J}else{break}}}x=d+(l-1-q-f<<2)|0;if(a){a=r+((n<<3)-(o<<2))|0;r=m+n-(q+o)|0;o=0;q=v;m=p;while(1){g[m>>2]=+g[q>>2];l=o+1|0;if((l|0)<(f|0)){o=l;q=q+4|0;m=m+4|0}else{break}}K=f;L=a;M=d+(r<<2)|0}else{K=0;L=v;M=p}if((K|0)<(n|0)){N=K;O=L;P=M;Q=x;R=e;S=t}else{i=k;return}while(1){s=+g[O>>2];g[Q>>2]=s*+g[R>>2];g[P>>2]=s*+g[S>>2];t=N+1|0;if((t|0)<(n|0)){N=t;O=O+4|0;P=P+4|0;Q=Q-4|0;R=R+4|0;S=S-4|0}else{break}}i=k;return}function VM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do{if((a|0)==48e3){e=0;while(1){if((b<>2]=0;h=12192}else{e=0;while(1){f=e+1|0;if((f|0)<4){e=f}else{g=7;break}}}}while(0);do{if((g|0)==7){if((d|0)==0){h=0;break}c[d>>2]=-1;h=0}}while(0);return h|0}function WM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;f=i;i=i+56|0;h=f|0;j=f+24|0;k=f+40|0;n$(k|0,0,16)|0;l=d>>1;d=(l|0)>1;if(d){m=1;do{n=m<<1;o=c[a>>2]|0;g[b+(m<<2)>>2]=(+g[o+(n<<2)>>2]+(+g[o+(n-1<<2)>>2]+ +g[o+((n|1)<<2)>>2])*.5)*.5;m=m+1|0;}while((m|0)<(l|0))}m=c[a>>2]|0;p=(+g[m+4>>2]*.5+ +g[m>>2])*.5;g[b>>2]=p;if((e|0)==2){e=a+4|0;if(d){d=1;do{a=d<<1;m=c[e>>2]|0;n=b+(d<<2)|0;g[n>>2]=+g[n>>2]+(+g[m+(a<<2)>>2]+(+g[m+(a-1<<2)>>2]+ +g[m+((a|1)<<2)>>2])*.5)*.5;d=d+1|0;}while((d|0)<(l|0));q=+g[b>>2]}else{q=p}d=c[e>>2]|0;g[b>>2]=q+(+g[d+4>>2]*.5+ +g[d>>2])*.5}d=h|0;$M(b,d,0,0,4,l);g[d>>2]=+g[d>>2]*1.000100016593933;e=h+4|0;q=+g[e>>2];g[e>>2]=q-q*.00800000037997961*.00800000037997961;e=h+8|0;q=+g[e>>2];g[e>>2]=q-q*.01600000075995922*.01600000075995922;e=h+12|0;q=+g[e>>2];g[e>>2]=q-q*.024000000208616257*.024000000208616257;e=h+16|0;q=+g[e>>2];g[e>>2]=q-q*.03200000151991844*.03200000151991844;e=j|0;YM(e,d,4);g[e>>2]=+g[e>>2]*.8999999761581421;d=j+4|0;g[d>>2]=+g[d>>2]*.809999942779541;d=j+8|0;g[d>>2]=+g[d>>2]*.7289999127388;d=j+12|0;g[d>>2]=+g[d>>2]*.6560999155044556;d=k|0;ZM(b,e,b,l,4,d);g[d>>2]=0.0;g[e>>2]=.800000011920929;ZM(b,e,b,l,1,d);i=f;return}function XM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0;h=i;j=d>>2;k=i;i=i+(j*4|0)|0;i=i+7&-8;l=e+d>>2;m=i;i=i+(l*4|0)|0;i=i+7&-8;n=e>>1;o=i;i=i+(n<<2)|0;i=i+7&-8;p=o;q=(j|0)>0;if(q){r=0;do{g[k+(r<<2)>>2]=+g[a+(r<<1<<2)>>2];r=r+1|0;}while((r|0)<(j|0))}if((l|0)>0){r=0;do{g[m+(r<<2)>>2]=+g[b+(r<<1<<2)>>2];r=r+1|0;}while((r|0)<(l|0))}l=e>>2;e=(l|0)>0;do{if(e){if(q){s=0}else{n$(o|0,0,l<<2|0)|0;t=1.0;break}while(1){u=0.0;r=0;do{u=u+ +g[k+(r<<2)>>2]*+g[m+(r+s<<2)>>2];r=r+1|0;}while((r|0)<(j|0));g[p+(s<<2)>>2]=u<-1.0?-1.0:u;r=s+1|0;if((r|0)<(l|0)){s=r}else{v=11;break}}}else{v=11}}while(0);do{if((v|0)==11){if(q){w=1.0;x=0}else{t=1.0;break}while(1){y=+g[m+(x<<2)>>2];z=w+y*y;s=x+1|0;if((s|0)<(j|0)){w=z;x=s}else{t=z;break}}}}while(0);a:do{if(e){w=t;z=-1.0;y=-1.0;A=0.0;B=0.0;x=0;q=0;s=1;while(1){C=+g[p+(x<<2)>>2];do{if(C>0.0){D=C*9.999999960041972e-13;E=D*D;if(!(A*E>z*w)){F=B;G=A;H=y;I=z;J=q;K=s;break}if(B*E>y*w){F=w;G=B;H=E;I=y;J=x;K=q;break}F=B;G=w;H=y;I=E;J=q;K=x}else{F=B;G=A;H=y;I=z;J=q;K=s}}while(0);C=+g[m+(x+j<<2)>>2];u=+g[m+(x<<2)>>2];E=w+(C*C-u*u);k=x+1|0;if((k|0)>=(l|0)){L=J;M=K;break a}w=E<1.0?1.0:E;z=I;y=H;A=G;B=F;x=k;q=J;s=K}}else{L=0;M=1}}while(0);K=(n|0)>0;b:do{if(K){J=L<<1;l=M<<1;m=d>>1;if((m|0)>0){N=0}else{j=0;while(1){e=p+(j<<2)|0;g[e>>2]=0.0;s=j-J|0;if((((s|0)>-1?s:-s|0)|0)>2){s=j-l|0;if((((s|0)>-1?s:-s|0)|0)<=2){v=30}}else{v=30}if((v|0)==30){v=0;g[e>>2]=0.0}e=j+1|0;if((e|0)<(n|0)){j=e}else{O=m;break b}}}while(1){j=p+(N<<2)|0;g[j>>2]=0.0;e=N-J|0;if((((e|0)>-1?e:-e|0)|0)>2){e=N-l|0;if((((e|0)>-1?e:-e|0)|0)<=2){P=0.0;Q=0;v=26}}else{P=0.0;Q=0;v=26}if((v|0)==26){while(1){v=0;R=P+ +g[a+(Q<<2)>>2]*+g[b+(Q+N<<2)>>2];e=Q+1|0;if((e|0)<(m|0)){P=R;Q=e;v=26}else{break}}g[j>>2]=R<-1.0?-1.0:R}e=N+1|0;if((e|0)<(n|0)){N=e}else{O=m;break}}}else{O=d>>1}}while(0);if((O|0)>0){R=1.0;d=0;while(1){P=+g[b+(d<<2)>>2];F=R+P*P;N=d+1|0;if((N|0)<(O|0)){R=F;d=N}else{S=F;break}}}else{S=1.0}if(K){T=S;U=-1.0;V=-1.0;W=0.0;X=0.0;Y=0;Z=0}else{_=0;$=0;aa=$<<1;ba=aa-_|0;c[f>>2]=ba;i=h;return}while(1){S=+g[p+(Y<<2)>>2];do{if(S>0.0){R=S*9.999999960041972e-13;F=R*R;if(!(W*F>U*T)){ca=X;da=W;ea=V;fa=U;ga=Z;break}if(X*F>V*T){ca=T;da=X;ea=F;fa=V;ga=Y;break}ca=X;da=T;ea=V;fa=F;ga=Z}else{ca=X;da=W;ea=V;fa=U;ga=Z}}while(0);S=+g[b+(Y+O<<2)>>2];F=+g[b+(Y<<2)>>2];R=T+(S*S-F*F);K=Y+1|0;if((K|0)>=(n|0)){break}T=R<1.0?1.0:R;U=fa;V=ea;W=da;X=ca;Y=K;Z=ga}if((ga|0)<=0){_=0;$=ga;aa=$<<1;ba=aa-_|0;c[f>>2]=ba;i=h;return}if((ga|0)>=(n-1|0)){_=0;$=ga;aa=$<<1;ba=aa-_|0;c[f>>2]=ba;i=h;return}ca=+g[p+(ga-1<<2)>>2];X=+g[p+(ga<<2)>>2];da=+g[p+(ga+1<<2)>>2];if(da-ca>(X-ca)*.699999988079071){_=1;$=ga;aa=$<<1;ba=aa-_|0;c[f>>2]=ba;i=h;return}_=(ca-da>(X-da)*.699999988079071)<<31>>31;$=ga;aa=$<<1;ba=aa-_|0;c[f>>2]=ba;i=h;return}function YM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,h=0.0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0,q=0,r=0.0;d=+g[b>>2];if((c|0)>0){n$(a|0,0,c<<2|0)|0;e=+g[b>>2]}else{e=d}if(e!=0.0){f=0;h=d}else{return}while(1){if((f|0)>=(c|0)){i=11;break}if((f|0)>0){d=0.0;j=0;while(1){e=d+ +g[a+(j<<2)>>2]*+g[b+(f-j<<2)>>2];k=j+1|0;if((k|0)<(f|0)){d=e;j=k}else{l=e;break}}}else{l=0.0}j=f+1|0;d=(l+ +g[b+(j<<2)>>2])/h;e=-0.0-d;g[a+(f<<2)>>2]=e;k=j>>1;if((k|0)>0){m=f-1|0;n=0;do{o=a+(n<<2)|0;p=+g[o>>2];q=a+(m-n<<2)|0;r=+g[q>>2];g[o>>2]=p+r*e;g[q>>2]=r+p*e;n=n+1|0;}while((n|0)<(k|0))}e=h-h*d*d;if(e<+g[b>>2]*.0010000000474974513){i=11;break}else{f=j;h=e}}if((i|0)==11){return}}function ZM(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 h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0,u=0;if((d|0)<=0){return}h=e-1|0;i=(h|0)>0;if((e|0)<=0){if(i){j=0}else{k=0;do{l=+g[a+(k<<2)>>2];g[f>>2]=l;g[c+(k<<2)>>2]=l;k=k+1|0;}while((k|0)<(d|0));return}do{k=a+(j<<2)|0;l=+g[k>>2];m=e;n=h;while(1){g[f+(n<<2)>>2]=+g[f+(m-2<<2)>>2];o=n-1|0;if((o|0)>0){m=n;n=o}else{break}}g[f>>2]=+g[k>>2];g[c+(j<<2)>>2]=l;j=j+1|0;}while((j|0)<(d|0));return}if(i){p=0}else{i=0;do{q=+g[a+(i<<2)>>2];j=0;r=q;do{r=r+ +g[b+(j<<2)>>2]*+g[f+(j<<2)>>2];j=j+1|0;}while((j|0)<(e|0));g[f>>2]=q;g[c+(i<<2)>>2]=r;i=i+1|0;}while((i|0)<(d|0));return}do{i=a+(p<<2)|0;j=0;l=+g[i>>2];while(1){s=l+ +g[b+(j<<2)>>2]*+g[f+(j<<2)>>2];k=j+1|0;if((k|0)<(e|0)){j=k;l=s}else{t=e;u=h;break}}while(1){g[f+(u<<2)>>2]=+g[f+(t-2<<2)>>2];j=u-1|0;if((j|0)>0){t=u;u=j}else{break}}g[f>>2]=+g[i>>2];g[c+(p<<2)>>2]=s;p=p+1|0;}while((p|0)<(d|0));return}function _M(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 h=0,i=0,j=0,k=0,l=0.0,m=0,n=0.0,o=0.0,p=0,q=0.0,r=0;if((d|0)<=0){return}h=(e|0)>0;i=e-1|0;j=(i|0)>0;k=0;do{l=+g[a+(k<<2)>>2];if(h){m=0;n=l;while(1){o=n- +g[b+(m<<2)>>2]*+g[f+(m<<2)>>2];p=m+1|0;if((p|0)<(e|0)){m=p;n=o}else{q=o;break}}}else{q=l}if(j){m=e;p=i;while(1){g[f+(p<<2)>>2]=+g[f+(m-2<<2)>>2];r=p-1|0;if((r|0)>0){m=p;p=r}else{break}}}g[f>>2]=q;g[c+(k<<2)>>2]=q;k=k+1|0;}while((k|0)<(d|0));return}function $M(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 h=0,j=0,k=0,l=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0;h=i;j=i;i=i+(f<<2)|0;i=i+7&-8;k=j;if((f|0)>0){m$(j|0,a|0,f<<2)|0}if((d|0)>0){j=0;do{l=+g[c+(j<<2)>>2];g[k+(j<<2)>>2]=+g[a+(j<<2)>>2]*l;m=f-j-1|0;g[k+(m<<2)>>2]=+g[a+(m<<2)>>2]*l;j=j+1|0;}while((j|0)<(d|0))}if((e|0)>-1){n=e}else{o=+g[b>>2];p=o+10.0;g[b>>2]=p;i=h;return}while(1){if((n|0)<(f|0)){l=0.0;e=n;while(1){q=l+ +g[k+(e<<2)>>2]*+g[k+(e-n<<2)>>2];d=e+1|0;if((d|0)<(f|0)){l=q;e=d}else{r=q;break}}}else{r=0.0}g[b+(n<<2)>>2]=r;if((n|0)>0){n=n-1|0}else{break}}o=+g[b>>2];p=o+10.0;g[b>>2]=p;i=h;return}function aN(a,b,e,f,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;m=i;i=i+8|0;n=m|0;o=n;c[n>>2]=0;c[n+4>>2]=0;if((h|0)==0){p=+g[10040+(l<<2)>>2];q=+g[42480+(l<<2)>>2]}else{p=0.0;q=.149993896484375}n=c[j+4>>2]<<3;if((b|0)>=(e|0)){i=m;return}r=j+20|0;s=j+28|0;t=a+8|0;a=b;do{b=(a|0)<20?a<<1:40;u=29768+(l*84|0)+(h*42|0)+b|0;v=(b|1)+(29768+(l*84|0)+(h*42|0))|0;b=0;do{w=c[r>>2]|0;x=n-w-(y$(c[s>>2]|0)|0|-32)|0;do{if((x|0)>14){y=SM(j,(d[u]|0)<<7,(d[v]|0)<<6)|0}else{if((x|0)>1){w=JM(j,4568,2)|0;y=w>>1^-(w&1);break}if((x|0)<=0){y=-1;break}y=-(IM(j,1)|0)|0}}while(0);z=+(y|0);x=f+((da(c[t>>2]|0,b)|0)+a<<2)|0;A=+g[x>>2];g[x>>2]=A<-9.0?-9.0:A;x=f+((da(c[t>>2]|0,b)|0)+a<<2)|0;w=o+(b<<2)|0;A=+g[w>>2];g[x>>2]=z+(p*+g[x>>2]+A);g[w>>2]=z+A-q*z;b=b+1|0;}while((b|0)<(k|0));a=a+1|0;}while((a|0)<(e|0));i=m;return}function bN(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0.0,o=0;if((b|0)>=(d|0)){return}j=a+8|0;a=b;do{b=f+(a<<2)|0;k=c[b>>2]|0;a:do{if((k|0)>=1){l=0;m=k;while(1){n=+(LM(h,m)|0)+.5;o=e+((da(c[j>>2]|0,l)|0)+a<<2)|0;g[o>>2]=+g[o>>2]+(n*+(1<<14-(c[b>>2]|0)|0)*6103515625.0e-14+-.5);o=l+1|0;if((o|0)>=(i|0)){break a}l=o;m=c[b>>2]|0}}}while(0);a=a+1|0;}while((a|0)<(d|0));return}function cN(a,b,d,e,f,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0;l=(b|0)>=(d|0);m=a+8|0;a=(k|0)>1?-k|0:-1;if(l|(i|0)<(k|0)){n=i}else{o=b;p=i;while(1){i=f+(o<<2)|0;do{if((c[i>>2]|0)>7){q=p}else{if((c[h+(o<<2)>>2]|0)==0){r=0}else{q=p;break}do{s=+(LM(j,1)|0)+-.5;t=e+((da(c[m>>2]|0,r)|0)+o<<2)|0;g[t>>2]=+g[t>>2]+s*+(1<<13-(c[i>>2]|0)|0)*6103515625.0e-14;r=r+1|0;}while((r|0)<(k|0));q=a+p|0}}while(0);i=o+1|0;if((i|0)>=(d|0)|(q|0)<(k|0)){n=q;break}else{o=i;p=q}}}if(l|(n|0)<(k|0)){return}else{u=b;v=n}while(1){n=f+(u<<2)|0;do{if((c[n>>2]|0)>7){w=v}else{if((c[h+(u<<2)>>2]|0)==1){x=0}else{w=v;break}do{s=+(LM(j,1)|0)+-.5;b=e+((da(c[m>>2]|0,x)|0)+u<<2)|0;g[b>>2]=+g[b>>2]+s*+(1<<13-(c[n>>2]|0)|0)*6103515625.0e-14;x=x+1|0;}while((x|0)<(k|0));w=a+v|0}}while(0);n=u+1|0;if((n|0)>=(d|0)|(w|0)<(k|0)){break}else{u=n;v=w}}return}function dN(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=(b|0)>0;j=a+8|0;a=0;do{if(i){k=0;while(1){g[e+((da(c[j>>2]|0,a)|0)+k<<2)>>2]=0.0;l=k+1|0;if((l|0)<(b|0)){k=l}else{m=b;break}}}else{m=0}if((m|0)<(d|0)){k=m;while(1){l=(da(c[j>>2]|0,a)|0)+k|0;g[e+(l<<2)>>2]=+aa((+g[f+(l<<2)>>2]+ +g[30104+(k<<2)>>2])*.6931471805599453);l=k+1|0;if((l|0)<(d|0)){k=l}else{n=d;break}}}else{n=m}k=c[j>>2]|0;if((n|0)<(k|0)){l=n;o=k;do{g[e+((da(o,a)|0)+l<<2)>>2]=0.0;l=l+1|0;o=c[j>>2]|0;}while((l|0)<(o|0))}a=a+1|0;}while((a|0)<(h|0));return}function eN(a,e,f,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;var 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,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,_=0,$=0,aa=0,ba=0,ca=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,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;w=i;x=(m|0)>0?m:0;m=c[a+8>>2]|0;y=(x|0)>7?8:0;z=x-y|0;x=(r|0)==2;do{if(x){A=d[186624+(f-e)|0]|0;if((A|0)>(z|0)){B=z;C=0;D=0;break}E=z-A|0;F=(E|0)>7?8:0;B=E-F|0;C=A;D=F}else{B=z;C=0;D=0}}while(0);z=m<<2;F=i;i=i+z|0;i=i+7&-8;A=F;F=i;i=i+z|0;i=i+7&-8;E=F;F=i;i=i+z|0;i=i+7&-8;G=F;F=i;i=i+z|0;i=i+7&-8;z=F;F=(e|0)<(f|0);if(F){H=r<<3;I=a+32|0;J=c[I>>2]|0;K=f-1|0;L=da(j-5-s|0,r)|0;j=s+3|0;M=e;N=b[J+(e<<1)>>1]|0;while(1){O=M+1|0;P=b[J+(O<<1)>>1]|0;Q=(P<<16>>16)-(N<<16>>16)|0;R=(Q*3|0)<>4;c[G+(M<<2)>>2]=(H|0)>(R|0)?H:R;R=(da(da(L,K-M|0)|0,Q)|0)<>6;c[z+(M<<2)>>2]=R-((Q<>2]|0;I=a+52|0;N=1;M=H-1|0;do{j=N+M>>1;a:do{if(F){K=c[S>>2]|0;L=da(j,m)|0;J=c[I>>2]|0;P=1;O=0;Q=f;R=b[K+(f<<1)>>1]|0;while(1){U=O;V=Q;W=R;while(1){X=V-1|0;Y=b[K+(X<<1)>>1]|0;Z=da((W<<16>>16)-(Y<<16>>16)|0,r)|0;_=(da(Z,d[J+(X+L)|0]|0)|0)<>2;if((_|0)>0){Z=(c[z+(X<<2)>>2]|0)+_|0;$=(Z|0)<0?0:Z}else{$=_}aa=(c[g+(X<<2)>>2]|0)+$|0;if(!((aa|0)<(c[G+(X<<2)>>2]|0)&P)){break}_=((aa|0)<(T|0)?0:T)+U|0;if((X|0)>(e|0)){U=_;V=X;W=Y}else{ba=_;break a}}W=c[h+(X<<2)>>2]|0;V=((aa|0)<(W|0)?aa:W)+U|0;if((X|0)>(e|0)){P=0;O=V;Q=X;R=Y}else{ba=V;break}}}else{ba=0}}while(0);R=(ba|0)>(B|0);M=R?j-1|0:M;N=R?N:j+1|0;}while((N|0)<=(M|0));M=N-1|0;if(F){ba=c[S>>2]|0;Y=da(M,m)|0;X=c[I>>2]|0;I=(N|0)<(H|0);H=da(N,m)|0;m=(M|0)>0;M=e;N=e;aa=b[ba+(e<<1)>>1]|0;while(1){$=N+1|0;R=b[ba+($<<1)>>1]|0;Q=da((R<<16>>16)-(aa<<16>>16)|0,r)|0;O=(da(Q,d[X+(N+Y)|0]|0)|0)<>2;if(I){ca=(da(d[X+(N+H)|0]|0,Q)|0)<>2}else{ca=c[h+(N<<2)>>2]|0}if((O|0)>0){Q=(c[z+(N<<2)>>2]|0)+O|0;ea=(Q|0)<0?0:Q}else{ea=O}if((ca|0)>0){O=(c[z+(N<<2)>>2]|0)+ca|0;fa=(O|0)<0?0:O}else{fa=ca}O=c[g+(N<<2)>>2]|0;Q=ea+(m?O:0)|0;P=(O|0)>0?N:M;L=fa-Q+O|0;c[A+(N<<2)>>2]=Q;c[E+(N<<2)>>2]=(L|0)<0?0:L;if(($|0)<(f|0)){M=P;N=$;aa=R}else{ga=P;break}}}else{ga=e}aa=(r|0)>1;N=0;M=64;fa=0;while(1){m=M+fa>>1;b:do{if(F){ea=1;g=0;ca=f;while(1){z=ca-1|0;c:do{if(ea){H=g;X=z;while(1){I=((da(c[E+(X<<2)>>2]|0,m)|0)>>6)+(c[A+(X<<2)>>2]|0)|0;if((I|0)>=(c[G+(X<<2)>>2]|0)){ha=H;ia=X;ja=I;break c}Y=((I|0)<(T|0)?0:T)+H|0;if((X|0)>(e|0)){H=Y;X=X-1|0}else{ka=Y;break b}}}else{X=(da(c[E+(z<<2)>>2]|0,m)|0)>>6;ha=g;ia=z;ja=X+(c[A+(z<<2)>>2]|0)|0}}while(0);z=c[h+(ia<<2)>>2]|0;U=((ja|0)<(z|0)?ja:z)+ha|0;if((ia|0)>(e|0)){ea=0;g=U;ca=ia}else{ka=U;break}}}else{ka=0}}while(0);j=(ka|0)>(B|0);la=j?fa:m;ca=N+1|0;if((ca|0)<6){N=ca;M=j?m:M;fa=la}else{break}}fa=aa&1;M=s<<3;if(F){F=0;N=0;ka=f;while(1){ia=ka-1|0;ha=((da(c[E+(ia<<2)>>2]|0,la)|0)>>6)+(c[A+(ia<<2)>>2]|0)|0;if((ha|0)<(c[G+(ia<<2)>>2]|0)&(F|0)==0){ma=(ha|0)<(T|0)?0:T;na=0}else{ma=ha;na=1}ha=c[h+(ia<<2)>>2]|0;ja=(ma|0)<(ha|0)?ma:ha;c[o+(ia<<2)>>2]=ja;ha=ja+N|0;if((ia|0)>(e|0)){F=na;N=ha;ka=ia}else{oa=ha;break}}}else{oa=0}ka=f-1|0;d:do{if((ka|0)>(ga|0)){N=T+8|0;na=(u|0)==0;F=e+2|0;ma=f;A=oa;la=C;E=ka;while(1){ha=B-A|0;ia=c[S>>2]|0;ja=b[ia+(ma<<1)>>1]|0;j=b[ia+(e<<1)>>1]|0;ca=ja-j|0;g=(ha|0)/(ca|0)|0;ea=ha-(da(ca,g)|0)|0;ca=b[ia+(E<<1)>>1]|0;ia=ea+(j-ca)|0;j=ja-ca|0;ca=o+(E<<2)|0;ja=c[ca>>2]|0;ea=(da(j,g)|0)+ja+((ia|0)>0?ia:0)|0;ia=c[G+(E<<2)>>2]|0;if((ea|0)<(((ia|0)>(N|0)?ia:N)|0)){pa=A;qa=ea;ra=ja}else{if(na){if((IM(t,1)|0)!=0){sa=B;ta=ma;ua=A;va=la;break d}}else{if((ma|0)<=(F|0)){break}if((ea|0)>((da(j,(ma|0)<=(v|0)?7:9)|0)<>4|0)){break}NM(t,0,1)}pa=A+8|0;qa=ea-8|0;ra=c[ca>>2]|0}if((la|0)>0){wa=d[186624+(E-e)|0]|0}else{wa=la}ea=(qa|0)<(T|0)?0:T;j=pa-(ra+la)+ea+wa|0;c[ca>>2]=ea;ea=E-1|0;if((ea|0)>(ga|0)){ma=E;A=j;la=wa;E=ea}else{xa=E;ya=j;za=wa;Aa=42;break d}}NM(t,1,1);sa=B;ta=ma;ua=A;va=la}else{xa=f;ya=oa;za=C;Aa=42}}while(0);if((Aa|0)==42){sa=B+y|0;ta=xa;ua=ya;va=za}do{if((va|0)>0){if((u|0)==0){za=(KM(t,1-e+ta|0)|0)+e|0;c[k>>2]=za;Ba=za;break}else{za=c[k>>2]|0;ya=(za|0)<(ta|0)?za:ta;c[k>>2]=ya;OM(t,ya-e|0,1-e+ta|0);Ba=c[k>>2]|0;break}}else{c[k>>2]=0;Ba=0}}while(0);va=(Ba|0)>(e|0);Ba=va?0:D;do{if(va&(D|0)!=0){if((u|0)==0){c[l>>2]=IM(t,1)|0;break}else{NM(t,c[l>>2]|0,1);break}}else{c[l>>2]=0}}while(0);t=Ba+(sa-ua)|0;ua=c[S>>2]|0;sa=b[ua+(e<<1)>>1]|0;Ba=(b[ua+(ta<<1)>>1]|0)-sa|0;u=(t|0)/(Ba|0)|0;D=t-(da(Ba,u)|0)|0;e:do{if((ta|0)>(e|0)){Ba=e+1|0;t=da((b[ua+(Ba<<1)>>1]|0)-sa|0,u)|0;va=o+(e<<2)|0;c[va>>2]=t+(c[va>>2]|0);if((Ba|0)<(ta|0)){va=Ba;while(1){Ba=c[S>>2]|0;t=va+1|0;ya=da((b[Ba+(t<<1)>>1]|0)-(b[Ba+(va<<1)>>1]|0)|0,u)|0;Ba=o+(va<<2)|0;c[Ba>>2]=ya+(c[Ba>>2]|0);if((t|0)<(ta|0)){va=t}else{Ca=D;Da=e;break}}}else{Ca=D;Da=e}while(1){va=Da+1|0;la=c[S>>2]|0;A=(b[la+(va<<1)>>1]|0)-(b[la+(Da<<1)>>1]|0)|0;la=(Ca|0)<(A|0)?Ca:A;A=o+(Da<<2)|0;c[A>>2]=la+(c[A>>2]|0);if((va|0)>=(ta|0)){break}Ca=Ca-la|0;Da=va}va=a+56|0;la=aa?4:3;if(x){Ea=0;Fa=e}else{A=0;ma=e;while(1){t=ma+1|0;Ba=c[S>>2]|0;ya=(b[Ba+(t<<1)>>1]|0)-(b[Ba+(ma<<1)>>1]|0)<>2]|0)+A|0;if((ya|0)>1){xa=za-(c[h+(ma<<2)>>2]|0)|0;y=(xa|0)>0?xa:0;xa=za-y|0;c[Ba>>2]=xa;B=da(ya,r)|0;Aa=da((b[(c[va>>2]|0)+(ma<<1)>>1]|0)+M|0,B)|0;C=(Aa>>1)+(B*-21|0)|0;if((ya|0)==2){Ga=C+(B<<3>>2)|0}else{Ga=C}C=Ga+xa|0;do{if((C|0)<(B<<4|0)){Ha=Ga+(Aa>>2)|0}else{if((C|0)>=(B*24|0|0)){Ha=Ga;break}Ha=Ga+(Aa>>3)|0}}while(0);Aa=B<<3;C=(xa+(B<<2)+Ha|0)/(Aa|0)|0;ya=(C|0)<0?0:C;C=p+(ma<<2)|0;c[C>>2]=ya;oa=da(ya,r)|0;wa=c[Ba>>2]|0;if((oa|0)>(wa>>3|0)){oa=wa>>fa>>3;c[C>>2]=oa;Ia=oa}else{Ia=ya}ya=(Ia|0)<8?Ia:8;c[C>>2]=ya;oa=da(ya,Aa)|0;c[q+(ma<<2)>>2]=(oa|0)>=((c[Ba>>2]|0)+Ha|0);oa=da(c[C>>2]|0,T)|0;c[Ba>>2]=(c[Ba>>2]|0)-oa;Ja=y}else{oa=za-T|0;C=(oa|0)<0?0:oa;c[Ba>>2]=za-C;c[p+(ma<<2)>>2]=0;c[q+(ma<<2)>>2]=1;Ja=C}if((Ja|0)>0){C=Ja>>la;oa=p+(ma<<2)|0;Aa=c[oa>>2]|0;ya=8-Aa|0;wa=(C|0)<(ya|0)?C:ya;c[oa>>2]=wa+Aa;Aa=da(wa,T)|0;c[q+(ma<<2)>>2]=(Aa|0)>=(Ja-A|0);Ka=Ja-Aa|0}else{Ka=Ja}if((t|0)<(ta|0)){A=Ka;ma=t}else{La=Ka;Ma=ta;break e}}}while(1){ma=Fa+1|0;A=c[S>>2]|0;Aa=(b[A+(ma<<1)>>1]|0)-(b[A+(Fa<<1)>>1]|0)<>2]|0)+Ea|0;if((Aa|0)>1){oa=wa-(c[h+(Fa<<2)>>2]|0)|0;ya=(oa|0)>0?oa:0;oa=wa-ya|0;c[A>>2]=oa;C=Aa<<1;do{if((Aa|0)>2){if((c[l>>2]|0)!=0){Na=0;break}Na=(Fa|0)<(c[k>>2]|0)|0}else{Na=0}}while(0);t=Na|C;za=da((b[(c[va>>2]|0)+(Fa<<1)>>1]|0)+M|0,t)|0;Ba=(za>>1)+(t*-21|0)|0;if((Aa|0)==2){Oa=Ba+(t<<3>>2)|0}else{Oa=Ba}Ba=Oa+oa|0;do{if((Ba|0)<(t<<4|0)){Pa=Oa+(za>>2)|0}else{if((Ba|0)>=(t*24|0|0)){Pa=Oa;break}Pa=Oa+(za>>3)|0}}while(0);za=t<<3;Ba=((t<<2)+oa+Pa|0)/(za|0)|0;Aa=(Ba|0)<0?0:Ba;Ba=p+(Fa<<2)|0;c[Ba>>2]=Aa;C=c[A>>2]|0;if((Aa<<1|0)>(C>>3|0)){y=C>>fa>>3;c[Ba>>2]=y;Qa=y}else{Qa=Aa}Aa=(Qa|0)<8?Qa:8;c[Ba>>2]=Aa;y=da(Aa,za)|0;c[q+(Fa<<2)>>2]=(y|0)>=((c[A>>2]|0)+Pa|0);y=da(c[Ba>>2]|0,T)|0;c[A>>2]=(c[A>>2]|0)-y;Ra=ya}else{y=wa-T|0;Ba=(y|0)<0?0:y;c[A>>2]=wa-Ba;c[p+(Fa<<2)>>2]=0;c[q+(Fa<<2)>>2]=1;Ra=Ba}if((Ra|0)>0){Ba=Ra>>la;y=p+(Fa<<2)|0;za=c[y>>2]|0;Aa=8-za|0;C=(Ba|0)<(Aa|0)?Ba:Aa;c[y>>2]=C+za;za=da(C,T)|0;c[q+(Fa<<2)>>2]=(za|0)>=(Ra-Ea|0);Sa=Ra-za|0}else{Sa=Ra}if((ma|0)<(ta|0)){Ea=Sa;Fa=ma}else{La=Sa;Ma=ta;break}}}else{La=0;Ma=e}}while(0);c[n>>2]=La;if((Ma|0)<(f|0)){Ta=Ma}else{i=w;return ta|0}do{Ma=o+(Ta<<2)|0;La=p+(Ta<<2)|0;c[La>>2]=c[Ma>>2]>>fa>>3;c[Ma>>2]=0;c[q+(Ta<<2)>>2]=(c[La>>2]|0)<1;Ta=Ta+1|0;}while((Ta|0)<(f|0));i=w;return ta|0}function fN(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0.0,z=0.0,A=0,B=0.0,C=0.0,D=0,E=0,F=0;j=i;k=b<<2;l=i;i=i+k|0;i=i+7&-8;m=l;n=i;i=i+k|0;i=i+7&-8;o=n;p=i;i=i+k|0;i=i+7&-8;k=p;gN(a,b,1,f,d,e);e=(b|0)>1?b<<2:4;n$(n|0,0,e|0)|0;n$(l|0,0,e|0)|0;e=0;do{l=a+(e<<2)|0;q=+g[l>>2];n=k+(e<<2)|0;if(q>0.0){g[n>>2]=1.0}else{g[n>>2]=-1.0;g[l>>2]=-0.0-q}e=e+1|0;}while((e|0)<(b|0));if((b>>1|0)<(d|0)){e=0;q=0.0;do{q=q+ +g[a+(e<<2)>>2];e=e+1|0;}while((e|0)<(b|0));if(q>1.0000000036274937e-15&q<64.0){r=q}else{g[a>>2]=1.0;n$(a+4|0,0,((b|0)>2?(b<<2)-4|0:4)|0)|0;r=1.0}q=+(d-1|0)*(1.0/r);e=0;l=d;r=0.0;s=0.0;while(1){t=+g[a+(e<<2)>>2];n=~~+R(q*t);c[o+(e<<2)>>2]=n;u=+(n|0);v=r+u*u;w=s+t*u;g[m+(e<<2)>>2]=u*2.0;p=l-n|0;n=e+1|0;if((n|0)<(b|0)){e=n;l=p;r=v;s=w}else{x=p;y=v;z=w;break}}}else{x=d;y=0.0;z=0.0}do{if((x|0)>(b+3|0)){c[o>>2]=(c[o>>2]|0)+x;A=0}else{if((x|0)>0){B=z;C=y;D=0}else{A=0;break}while(1){s=C+1.0;r=0.0;q=-999999986991104.0;l=0;e=0;while(1){w=B+ +g[a+(e<<2)>>2];v=s+ +g[m+(e<<2)>>2];u=w*w;p=r*u>q*v;E=p?e:l;n=e+1|0;if((n|0)>=(b|0)){break}r=p?v:r;q=p?u:q;l=E;e=n}q=B+ +g[a+(E<<2)>>2];e=m+(E<<2)|0;r=+g[e>>2];g[e>>2]=r+2.0;e=o+(E<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=D+1|0;if((e|0)<(x|0)){B=q;C=s+r;D=e}else{A=0;break}}}}while(0);do{C=+g[k+(A<<2)>>2];D=a+(A<<2)|0;g[D>>2]=C*+g[D>>2];if(C<0.0){D=o+(A<<2)|0;c[D>>2]=-(c[D>>2]|0)}A=A+1|0;}while((A|0)<(b|0));BM(o,b,d,h);if((f|0)<2){F=1;i=j;return F|0}h=(b|0)/(f|0)|0;b=0;d=0;while(1){A=da(b,h)|0;a=0;k=d;do{k=((c[o+(a+A<<2)>>2]|0)!=0)<=(b|0)|(h|0)==0){return}i=+(b|0)/+((da(c[29008+(h-1<<2)>>2]|0,f)|0)+b|0);j=i*i*.5;i=+V(j*1.5707963705062866);k=+V((1.0-j)*1.5707963705062866);if((e<<3|0)>(b|0)){l=0}else{f=e>>2;h=1;while(1){if(((da((da(h,h)|0)+h|0,e)|0)+f|0)<(b|0)){h=h+1|0}else{l=h;break}}}h=(b|0)/(e|0)|0;if((e|0)<=0){return}b=(d|0)<0;d=(l|0)==0;f=h-1|0;m=(f|0)>0;n=h-3|0;o=(h-2|0)>0;p=h-l|0;q=(p|0)>0;r=h-(l<<1)|0;s=r-1|0;t=(r|0)>0;j=-0.0-k;u=-0.0-i;r=0;do{v=da(r,h)|0;do{if(b){do{if(!d){if(q){w=a+(v<<2)|0;x=0;while(1){y=+g[w>>2];z=w+(l<<2)|0;A=+g[z>>2];g[z>>2]=i*y+k*A;g[w>>2]=k*y-i*A;z=x+1|0;if((z|0)<(p|0)){w=w+4|0;x=z}else{break}}}if(!t){break}x=a+(v+s<<2)|0;w=s;while(1){A=+g[x>>2];z=x+(l<<2)|0;y=+g[z>>2];g[z>>2]=i*A+k*y;g[x>>2]=k*A-i*y;if((w|0)>0){x=x-4|0;w=w-1|0}else{break}}}}while(0);if(m){w=a+(v<<2)|0;x=w;z=0;y=+g[w>>2];while(1){w=x+4|0;A=+g[w>>2];B=k*y+i*A;g[w>>2]=B;g[x>>2]=i*y-k*A;C=z+1|0;if((C|0)<(f|0)){x=w;z=C;y=B}else{break}}}if(!o){break}z=a+(v+n<<2)|0;x=n;while(1){y=+g[z>>2];C=z+4|0;B=+g[C>>2];g[C>>2]=k*y+i*B;g[z>>2]=i*y-k*B;if((x|0)>0){z=z-4|0;x=x-1|0}else{break}}}else{x=a+(v<<2)|0;if(m){z=x;C=0;B=+g[x>>2];while(1){w=z+4|0;y=+g[w>>2];A=B*j+i*y;g[w>>2]=A;g[z>>2]=i*B-y*j;D=C+1|0;if((D|0)<(f|0)){z=w;C=D;B=A}else{break}}}if(o){C=a+(v+n<<2)|0;z=n;while(1){B=+g[C>>2];D=C+4|0;A=+g[D>>2];g[D>>2]=B*j+i*A;g[C>>2]=i*B-A*j;if((z|0)>0){C=C-4|0;z=z-1|0}else{break}}}if(d){break}if(q){z=x;C=0;while(1){A=+g[z>>2];D=z+(l<<2)|0;B=+g[D>>2];g[D>>2]=A*u+k*B;g[z>>2]=k*A-B*u;D=C+1|0;if((D|0)<(p|0)){z=z+4|0;C=D}else{break}}}if(!t){break}C=a+(v+s<<2)|0;z=s;while(1){B=+g[C>>2];x=C+(l<<2)|0;A=+g[x>>2];g[x>>2]=B*u+k*A;g[C>>2]=k*B-A*u;if((z|0)>0){C=C-4|0;z=z-1|0}else{break}}}}while(0);r=r+1|0;}while((r|0)<(e|0));return}function hN(a,b,d,e,f,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=+j;var k=0,l=0,m=0,n=0.0,o=0.0,p=0;k=i;l=i;i=i+(b<<2)|0;i=i+7&-8;m=l;CM(m,b,d,h);h=0;n=0.0;do{o=+(c[m+(h<<2)>>2]|0);n=n+o*o;h=h+1|0;}while((h|0)<(b|0));o=1.0/+T(n)*j;h=0;do{g[a+(h<<2)>>2]=o*+(c[m+(h<<2)>>2]|0);h=h+1|0;}while((h|0)<(b|0));gN(a,b,-1,f,d,e);if((f|0)<2){p=1;i=k;return p|0}e=(b|0)/(f|0)|0;b=0;d=0;while(1){a=da(b,e)|0;h=0;l=d;do{l=((c[m+(h+a<<2)>>2]|0)!=0)<0;if(d){e=1.0000000036274937e-15;f=0;h=a}else{return}while(1){i=+g[h>>2];j=e+i*i;k=f+1|0;if((k|0)<(b|0)){e=j;f=k;h=h+4|0}else{break}}e=1.0/+T(j)*c;if(d){l=0;m=a}else{return}while(1){g[m>>2]=e*+g[m>>2];a=l+1|0;if((a|0)<(b|0)){l=a;m=m+4|0}else{break}}return}function jN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0,s=0.0;e=(d|0)>0;do{if((c|0)==0){if(e){f=1.0000000036274937e-15;h=1.0000000036274937e-15;i=0}else{j=1.0000000036274937e-15;k=1.0000000036274937e-15;break}while(1){l=+g[a+(i<<2)>>2];m=+g[b+(i<<2)>>2];n=h+l*l;l=f+m*m;o=i+1|0;if((o|0)<(d|0)){f=l;h=n;i=o}else{j=n;k=l;break}}}else{if(e){p=1.0000000036274937e-15;q=1.0000000036274937e-15;r=0}else{j=1.0000000036274937e-15;k=1.0000000036274937e-15;break}while(1){l=+g[a+(r<<2)>>2];n=+g[b+(r<<2)>>2];m=l+n;s=l-n;n=q+m*m;m=p+s*s;o=r+1|0;if((o|0)<(d|0)){p=m;q=n;r=o}else{j=n;k=m;break}}}}while(0);return~~+R(+$(+(+T(k)),+(+T(j)))*10430.3818359375+.5)|0}function kN(a){a=a|0;var d=0,e=0,f=0,g=0;d=a+2340|0;e=c[d>>2]|0;f=32767/(e+1|0)|0;if((e|0)>0){e=0;g=0;do{g=g+f|0;b[a+4052+(e<<1)>>1]=g;e=e+1|0;}while((e|0)<(c[d>>2]|0))}c[a+4148>>2]=0;c[a+4152>>2]=3176576;return}function lN(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=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,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,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0;g=i;i=i+1376|0;h=g|0;j=g+32|0;k=a+2772|0;l=a+2316|0;m=c[l>>2]|0;n=a+4156|0;if((m|0)!=(c[n>>2]|0)){o=a+2340|0;p=c[o>>2]|0;q=32767/(p+1|0)|0;if((p|0)>0){p=0;r=0;do{r=r+q|0;b[a+4052+(p<<1)>>1]=r;p=p+1|0;}while((p|0)<(c[o>>2]|0));s=c[l>>2]|0}else{s=m}c[a+4148>>2]=0;c[a+4152>>2]=3176576;c[n>>2]=s}s=a+4160|0;do{if((c[s>>2]|0)==0){if((c[a+4164>>2]|0)==0){n=a+2340|0;if((c[n>>2]|0)>0){m=0;do{l=a+4052+(m<<1)|0;o=b[l>>1]|0;p=(b[a+2344+(m<<1)>>1]|0)-o|0;b[l>>1]=((p>>16)*16348|0)+o+(((p&65535)*16348|0)>>>16);m=m+1|0;}while((m|0)<(c[n>>2]|0))}n=a+2324|0;m=c[n>>2]|0;if((m|0)>0){p=0;o=0;l=0;while(1){r=c[d+16+(l<<2)>>2]|0;q=(r|0)>(o|0);t=q?l:p;u=l+1|0;if((u|0)<(m|0)){p=t;o=q?r:o;l=u}else{v=t;break}}}else{v=0}l=a+2332|0;o=c[l>>2]|0;p=k;s$(a+2772+(o<<2)|0,p|0,da((m<<2)-4|0,o)|0)|0;o=c[l>>2]|0;m$(p|0,a+4+((da(o,v)|0)<<2)|0,o<<2)|0;o=c[n>>2]|0;if((o|0)>0){p=a+4148|0;l=0;t=c[p>>2]|0;do{u=(c[d+16+(l<<2)>>2]|0)-t|0;t=((u>>16)*4634|0)+t+(((u&65535)*4634|0)>>>16)|0;c[p>>2]=t;l=l+1|0;}while((l|0)<(o|0))}if((c[s>>2]|0)!=0){break}}n$(a+4084|0,0,c[a+2340>>2]<<2|0)|0;i=g;return}}while(0);s=c[a+4148>>2]|0;d=255;while(1){if((d|0)>(f|0)){d=d>>1}else{break}}v=a+4152|0;k=c[v>>2]|0;o=(f|0)>0;if(o){l=s>>>4<<16>>16;t=(s>>19)+1>>1;s=0;p=k;while(1){n=(da(p,196314165)|0)+907633515|0;m=c[a+2772+((n>>24&d)<<2)>>2]|0;u=(da(m>>16,l)|0)+(da(m,t)|0)+((da(m&65535,l)|0)>>16)|0;do{if((u|0)>32767){w=32767}else{if((u|0)<-32768){w=-32768;break}w=u<<16>>16}}while(0);c[j+(s+16<<2)>>2]=w;u=s+1|0;if((u|0)<(f|0)){s=u;p=n}else{x=n;break}}}else{x=k}c[v>>2]=x;x=h|0;v=a+2340|0;ON(x,a+4052|0,c[v>>2]|0);k=a+4084|0;m$(j|0,k|0,64)|0;if(o){o=b[x>>1]|0;x=b[h+2>>1]|0;a=b[h+4>>1]|0;p=b[h+6>>1]|0;s=b[h+8>>1]|0;w=b[h+10>>1]|0;l=b[h+12>>1]|0;t=b[h+14>>1]|0;d=b[h+16>>1]|0;u=b[h+18>>1]|0;m=b[h+20>>1]|0;r=b[h+22>>1]|0;q=b[h+24>>1]|0;y=b[h+26>>1]|0;z=b[h+28>>1]|0;A=b[h+30>>1]|0;h=0;B=c[j+60>>2]|0;C=c[j+52>>2]|0;D=c[j+44>>2]|0;E=c[j+36>>2]|0;F=c[j+28>>2]|0;while(1){G=c[v>>2]|0;H=da(o,B>>16)|0;I=(da(o,B&65535)|0)>>16;J=c[j+(h+14<<2)>>2]|0;K=da(x,J>>16)|0;L=(da(x,J&65535)|0)>>16;M=da(a,C>>16)|0;N=(da(a,C&65535)|0)>>16;O=c[j+(h+12<<2)>>2]|0;P=da(p,O>>16)|0;Q=(da(p,O&65535)|0)>>16;R=da(s,D>>16)|0;S=(da(s,D&65535)|0)>>16;T=c[j+(h+10<<2)>>2]|0;U=da(w,T>>16)|0;V=(da(w,T&65535)|0)>>16;W=da(l,E>>16)|0;X=(da(l,E&65535)|0)>>16;Y=c[j+(h+8<<2)>>2]|0;Z=da(t,Y>>16)|0;_=(da(t,Y&65535)|0)>>16;$=da(d,F>>16)|0;aa=(da(d,F&65535)|0)>>16;ba=c[j+(h+6<<2)>>2]|0;ca=H+(G>>1)+I+K+L+M+N+P+Q+R+S+U+V+W+X+Z+_+$+aa+(da(u,ba>>16)|0)+((da(u,ba&65535)|0)>>16)|0;if((G|0)==16){G=c[j+(h+5<<2)>>2]|0;ba=da(m,G>>16)|0;aa=(da(m,G&65535)|0)>>16;G=c[j+(h+4<<2)>>2]|0;$=da(r,G>>16)|0;_=(da(r,G&65535)|0)>>16;G=c[j+(h+3<<2)>>2]|0;Z=da(q,G>>16)|0;X=(da(q,G&65535)|0)>>16;G=c[j+(h+2<<2)>>2]|0;W=da(y,G>>16)|0;V=(da(y,G&65535)|0)>>16;G=c[j+(h+1<<2)>>2]|0;U=da(z,G>>16)|0;S=(da(z,G&65535)|0)>>16;G=c[j+(h<<2)>>2]|0;ea=ba+ca+aa+$+_+Z+X+W+V+U+S+(da(A,G>>16)|0)+((da(A,G&65535)|0)>>16)|0}else{ea=ca}ca=j+(h+16<<2)|0;G=(c[ca>>2]|0)+(ea<<4)|0;c[ca>>2]=G;ca=e+(h<<1)|0;S=(b[ca>>1]|0)+((ea>>5)+1>>1)|0;if((S|0)>32767){fa=32767}else{fa=(S|0)<-32768?-32768:S&65535}b[ca>>1]=fa;ca=h+1|0;if((ca|0)<(f|0)){h=ca;B=G;C=J;D=O;E=T;F=Y}else{break}}}m$(k|0,j+(f<<2)|0,64)|0;i=g;return}function mN(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+8|0;k=j|0;a[k+1|0]=0;l=((f<<1)+g<<16>>16)*7|0;g=e+8>>4;if((g|0)<=0){i=j;return}e=k|0;k=0;f=d;while(1){d=c[h+(k<<2)>>2]|0;if((d|0)>0){m=d&31;a[e]=a[4816+((m>>>0<6>>>0?m:6)+l)|0]|0;m=0;do{d=f+(m<<2)|0;if((c[d>>2]|0)>0){n=((JM(b,e,8)|0)<<1)-1|0;c[d>>2]=da(n,c[d>>2]|0)|0}m=m+1|0;}while((m|0)<16)}m=k+1|0;if((m|0)<(g|0)){k=m;f=f+64|0}else{break}}i=j;return}function nN(a){a=a|0;n$(a|0,0,4260)|0;c[a+2376>>2]=1;c[a>>2]=65536;kN(a);AN(a);return 0} + + + +function BE(a,b,d,e,f,h,j,k,l,m,n,o,p,q,r){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=+m;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var 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,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0,_=0.0,$=0,aa=0,ba=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0.0,ma=0.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,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,db=0,eb=0,fb=0,gb=0.0,hb=0.0,ib=0.0,jb=0,kb=0,lb=0,mb=0,nb=0.0,ob=0.0,pb=0.0,qb=0,rb=0,sb=0.0,tb=0.0,ub=0,vb=0.0,wb=0.0,xb=0.0,yb=0.0,zb=0.0,Ab=0.0,Bb=0.0,Cb=0.0,Db=0.0,Eb=0.0,Fb=0.0,Gb=0.0,Hb=0.0,Ib=0,Jb=0,Kb=0.0,Lb=0,Mb=0,Nb=0.0,Ob=0.0,Pb=0,Qb=0,Rb=0.0,Sb=0.0,Tb=0.0,Ub=0.0,Vb=0.0,Wb=0.0,Xb=0.0,Yb=0.0,Zb=0,_b=0,$b=0.0,ac=0.0,bc=0.0,cc=0,dc=0,ec=0,fc=0.0,gc=0.0,hc=0.0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0.0,xc=0,yc=0.0,zc=0.0,Ac=0.0,Bc=0.0,Cc=0.0,Dc=0.0,Ec=0.0,Fc=0.0,Gc=0.0,Hc=0.0,Ic=0.0,Jc=0.0,Kc=0.0,Lc=0.0,Mc=0.0,Nc=0.0,Oc=0.0,Pc=0.0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0.0,Wc=0.0,Xc=0.0,Yc=0,Zc=0,_c=0.0,$c=0.0,ad=0.0,bd=0.0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0;s=i;i=i+648|0;t=s|0;u=s+40|0;v=s+56|0;w=s+136|0;x=s+376|0;y=s+392|0;z=s+408|0;A=s+424|0;B=s+440|0;C=s+456|0;D=s+472|0;E=s+488|0;F=s+528|0;G=s+568|0;H=s+608|0;I=E;J=m>0.0?m:.10000000149011612;m=+g[7094601];K=+g[7094602];L=+g[7094603];M=+g[7094604];N=+g[7094605];O=+g[7094607];P=+g[7094608];Q=+g[7094609];R=+g[7094610];S=+g[7094611];U=+g[7094612];V=+g[7094613];W=+g[7094614];X=+g[7094617];n$(a|0,0,84)|0;n$(I|0,0,36)|0;Y=+g[d>>2];Z=x|0;g[Z>>2]=Y;_=+g[d+4>>2];$=x+4|0;g[$>>2]=_;aa=x+8|0;ba=+g[d+8>>2]+.25;g[aa>>2]=ba;ca=J*+g[h>>2];da=J*+g[h+4>>2];ea=J*+g[h+8>>2];a:do{if((l|0)>0){h=u|0;d=u+4|0;x=u+8|0;fa=J;ga=D|0;ha=j+4|0;ia=D+4|0;ja=j+8|0;ka=D+8|0;la=1.0/J;ma=J*X;na=C|0;oa=C+4|0;pa=C+8|0;qa=y|0;ra=y+4|0;sa=y+8|0;ta=F;ua=(r|0)!=0;va=E|0;wa=E+8|0;xa=(n&4992|0)==0;ya=(n&2048|0)==0;za=E+12|0;Aa=E+16|0;Ba=E+4|0;Ca=E+32|0;Da=(n&1024|0)==0;Ea=A|0;Fa=A+4|0;Ga=A+8|0;Ha=B|0;Ia=B+4|0;Ja=B+8|0;Ka=G|0;La=G+8|0;Ma=G+12|0;Na=G+16|0;Oa=G+32|0;Pa=(n&32|0)==0;Qa=v|0;Ra=w|0;Sa=(n&512|0)==0;Ta=(n&128|0)==0;Ua=(n&256|0)==0;Va=(n&4096|0)==0;Wa=t|0;Xa=t+16|0;Ya=t+32|0;Za=t+4|0;_a=(n&1|0)==0;$a=(n&2|0)==0;ab=(n&64|0)==0;bb=H|0;cb=H+16|0;db=z|0;eb=z+4|0;fb=z+8|0;gb=ea;hb=da;ib=ca;jb=-1;kb=0;lb=f;mb=e;nb=Y;ob=_;pb=ba;b:while(1){g[h>>2]=nb;g[d>>2]=ob;g[x>>2]=pb+-2.0;qb=(yD(h)|0)&56;rb=(qb|0)!=0;sb=fa*(rb?N:L)*.1;tb=gb-sb;ub=(lb|0)==0;if((qb|lb|0)==0){vb=ib;wb=hb;xb=tb}else{yb=ib*la;zb=hb*la;Ab=+T(yb*yb+zb*zb);if(Ab!=0.0){Bb=Ab-(rb?m:M)*J*(Ab>2]=+g[j>>2];g[ia>>2]=+g[ha>>2];tb=+g[ja>>2];g[ka>>2]=tb;do{if(ub){if(rb){Fb=Q;Gb=U;Hb=xb;Ib=jb;Jb=0}else{Kb=xb;Lb=jb;Mb=0;Nb=S;Ob=O;Pb=14}}else{qb=tb<-300.0;Qb=qb&1;zb=qb?P:O;if(rb){Fb=Q;Gb=U;Hb=xb;Ib=jb;Jb=Qb;break}if(!(tb>1.0)){Kb=xb;Lb=jb;Mb=Qb;Nb=R;Ob=zb;Pb=14;break}Kb=ma-sb+5.0;Lb=kb;Mb=Qb;Nb=S;Ob=zb;Pb=14}}while(0);if((Pb|0)==14){Pb=0;g[ka>>2]=0.0;Fb=Ob;Gb=Nb;Hb=Kb;Ib=Lb;Jb=Mb}sb=+wB(ga);tb=sb>Fb?Fb:sb;sb=vb*la;zb=wb*la;yb=Hb*la;Cb=+g[ga>>2];Ab=+g[ia>>2];Bb=+g[ka>>2];Rb=tb-(sb*Cb+zb*Ab+yb*Bb);if(Rb>0.0){Sb=J*Gb*tb;tb=Sb>Rb?Rb:Sb;Tb=sb+Cb*tb;Ub=zb+Ab*tb;Vb=yb+Bb*tb}else{Tb=sb;Ub=zb;Vb=yb}yb=J*Tb;zb=J*Ub;sb=J*Vb;if((Jb|0)==0){Wb=sb;Xb=zb;Yb=yb;Zb=Ib;Pb=18}else{_b=4;$b=sb;ac=zb;bc=yb;cc=Ib}}else{Wb=xb;Xb=wb;Yb=vb;Zb=jb;Pb=18}do{if((Pb|0)==18){Pb=0;if((mb|0)!=4){_b=mb;$b=Wb;ac=Xb;bc=Yb;cc=Zb;break}_b=((ZF(Z)|0)&2^2)+2|0;$b=Wb;ac=Xb;bc=Yb;cc=Zb}}while(0);yb=+g[Z>>2];g[na>>2]=yb;zb=+g[$>>2];g[oa>>2]=zb;sb=+g[aa>>2];g[pa>>2]=sb;ub=kb-cc|0;Qb=rb^1;qb=Ta|(kb|0)==0;dc=lb;ec=0;tb=bc;Bb=ac;Ab=$b;fc=bc;gc=ac;hc=$b;Cb=yb;yb=zb;zb=sb;while(1){g[qa>>2]=tb+Cb;g[ra>>2]=Bb+yb;g[sa>>2]=Ab+zb;$F(F,Z,qa,_b,b);m$(I|0,ta|0,36)|0;if(ua){if((c[va>>2]|0)!=0){Tk[c[7092490]&255](1,102712,(ic=i,i=i+1|0,i=i+7&-8,c[ic>>2]=0,ic)|0);i=ic}TD(Z,wa,1)}c:do{if(!xa){ic=aG(Z,wa,Qa,Ra,20)|0;if((ic|0)<=0){break}jc=c[7094533]|0;if(Sa){if(qb){kc=0;while(1){if(!Ua){lc=c[v+(kc<<2)>>2]|0;if((c[jc+(lc*28|0)>>2]&64|0)!=0){mc=kc;nc=lc;Pb=53;break b}}if(!Va){lc=c[v+(kc<<2)>>2]|0;if((c[jc+(lc*28|0)>>2]&8|0)!=0){oc=kc;pc=lc;Pb=56;break b}}kc=kc+1|0;if((kc|0)>=(ic|0)){break c}}}else{qc=0}while(1){kc=v+(qc<<2)|0;if((c[jc+((c[kc>>2]|0)*28|0)>>2]&128|0)!=0){rc=qc;sc=kc;Pb=50;break b}if(!Ua){kc=c[v+(qc<<2)>>2]|0;if((c[jc+(kc*28|0)>>2]&64|0)!=0){mc=qc;nc=kc;Pb=53;break b}}if(!Va){kc=c[v+(qc<<2)>>2]|0;if((c[jc+(kc*28|0)>>2]&8|0)!=0){oc=qc;pc=kc;Pb=56;break b}}qc=qc+1|0;if((qc|0)>=(ic|0)){break c}}}if(qb){kc=0;while(1){if((c[v+(kc<<2)>>2]|0)==(o|0)){tc=kc;Pb=48;break b}if(!Ua){lc=c[v+(kc<<2)>>2]|0;if((c[jc+(lc*28|0)>>2]&64|0)!=0){mc=kc;nc=lc;Pb=53;break b}}if(!Va){lc=c[v+(kc<<2)>>2]|0;if((c[jc+(lc*28|0)>>2]&8|0)!=0){oc=kc;pc=lc;Pb=56;break b}}kc=kc+1|0;if((kc|0)>=(ic|0)){break c}}}else{uc=0}do{if((c[v+(uc<<2)>>2]|0)==(o|0)){tc=uc;Pb=48;break b}kc=v+(uc<<2)|0;if((c[jc+((c[kc>>2]|0)*28|0)>>2]&128|0)!=0){rc=uc;sc=kc;Pb=50;break b}if(!Ua){kc=c[v+(uc<<2)>>2]|0;if((c[jc+(kc*28|0)>>2]&64|0)!=0){mc=uc;nc=kc;Pb=53;break b}}if(!Va){kc=c[v+(uc<<2)>>2]|0;if((c[jc+(kc*28|0)>>2]&8|0)!=0){oc=uc;pc=kc;Pb=56;break b}}uc=uc+1|0;}while((uc|0)<(ic|0))}}while(0);if(!ya){if((AE(E,Z,wa,_b,p,q)|0)!=0){Pb=60;break b}}g[Z>>2]=+g[wa>>2];g[$>>2]=+g[za>>2];g[aa>>2]=+g[Aa>>2];d:do{if(+g[Ba>>2]<1.0){ic=hG(c[Ca>>2]|0)|0;do{if(Da){vc=ic+8|0}else{jc=ic+8|0;if(!(+g[jc>>2]+(+g[ic>>2]*0.0+ +g[ic+4>>2]*0.0)>W)){vc=jc;break}g[Ea>>2]=+g[Z>>2];g[Fa>>2]=+g[$>>2];g[Ga>>2]=+g[aa>>2]+.5;if((WF(Ea)|0)==(o|0)){Pb=66;break b}else{vc=jc}}}while(0);do{if(!(+g[vc>>2]!=0.0|(ub|0)<3&(cc|0)>-1)){sb=+g[Z>>2]+ +g[ic>>2]*-.25;g[Ea>>2]=sb;Sb=+g[$>>2]+ +g[ic+4>>2]*-.25;g[Fa>>2]=Sb;Rb=+g[aa>>2]+ +g[vc>>2]*-.25;g[Ha>>2]=sb;g[Ia>>2]=Sb;g[Ja>>2]=Rb;g[Ga>>2]=V+Rb;$F(G,Ea,Ha,_b,b);Rb=+g[La>>2];Sb=+g[Ma>>2];sb=+g[Na>>2];if((c[Ka>>2]|0)!=0){break}jc=hG(c[Oa>>2]|0)|0;if(!(+g[jc+8>>2]+(+g[jc>>2]*0.0+ +g[jc+4>>2]*0.0)>W)){break}wc=+g[qa>>2]-Rb;Rb=+g[ra>>2]-Sb;do{if(ua){if(!(sb- +g[aa>>2]>.125)){break}g[Ea>>2]=+g[Z>>2];g[Fa>>2]=+g[$>>2];g[Ga>>2]=sb;TD(Z,Ea,3)}}while(0);g[aa>>2]=sb;xc=dc;yc=wc;zc=Rb;Ac=0.0;Bc=fc;Cc=gc;Dc=0.0;break d}}while(0);Sb=+g[ic>>2];Ec=+g[ic+4>>2];Fc=Bb*Ec;Gc=+g[vc>>2];Hc=Ab*Gc;Ic=tb-Sb*(tb*Sb+Fc+Hc);Jc=Sb*Ic;Kc=Bb-Ec*(Hc+(Fc+Jc));Fc=Ab-Gc*(Hc+(Jc+Ec*Kc));Jc=gc*Ec;Hc=hc*Gc;Lc=fc-Sb*(fc*Sb+Jc+Hc);Mc=Sb*Lc;Nc=gc-Ec*(Hc+(Jc+Mc));Oc=hc-Gc*(Hc+(Mc+Ec*Nc));jc=Gc+(Sb*0.0+Ec*0.0)>W?1:dc;if(Pa){xc=jc;yc=Ic;zc=Kc;Ac=Fc;Bc=Lc;Cc=Nc;Dc=Oc;break}kc=(jc|0)==0;if(hc<0.0&Oc>hc&kc){Pc=hc}else{if(kc){xc=0;yc=Ic;zc=Kc;Ac=Fc;Bc=Lc;Cc=Nc;Dc=Oc;break}Pc=Oc-hc}if(!(Pc!=0.0)){xc=jc;yc=Ic;zc=Kc;Ac=Fc;Bc=Lc;Cc=Nc;Dc=Oc;break}Ec=Pc*10.0;if(Ec*Ec*1.0e-4>40.0&Qb){Pb=80;break b}else{xc=jc;yc=Ic;zc=Kc;Ac=Fc;Bc=Lc;Cc=Nc;Dc=Oc}}else{xc=dc;yc=tb;zc=Bb;Ac=Ab;Bc=fc;Cc=gc;Dc=hc}}while(0);if((ec|0)>19){Qc=0;Pb=102;break b}if(!(+g[Ba>>2]<1.0)){break}dc=xc;ec=ec+1|0;tb=yc;Bb=zc;Ab=Ac;fc=Bc;gc=Cc;hc=Dc;Cb=+g[Z>>2];yb=+g[$>>2];zb=+g[aa>>2]}if(!(Dc>10.0)){g[db>>2]=+g[Z>>2];g[eb>>2]=+g[$>>2];g[fb>>2]=+g[aa>>2]+-22.0;Rc=yD(db)|0;Sc=WF(Z)|0;ec=c[(c[7094533]|0)+(Sc*28|0)>>2]|0;Tc=(Rc>>>1&8|Rc<<1&16|Rc>>>3&4|ec<<3&16|ec<<1&8|ec<<2&4)&n;if((Tc|0)!=0){Pb=86;break}}g[h>>2]=+g[Z>>2];g[d>>2]=+g[$>>2];g[x>>2]=+g[aa>>2]+-10.0;$F(t,Z,h,_b,b);zb=+g[Xa>>2];ec=c[Ya>>2]|0;do{if((c[Wa>>2]|0)==0){if(!(+g[Za>>2]<1.0)){Pb=93;break}if(+g[aa>>2]-zb>10.0){Pb=93;break}dc=hG(ec)|0;if(!(+g[dc+8>>2]+(+g[dc>>2]*0.0+ +g[dc+4>>2]*0.0)>=+g[7094614])){Pb=93;break}if(_a){Uc=1}else{Pb=92;break b}}else{Pb=93}}while(0);do{if((Pb|0)==93){Pb=0;if(!$a){Pb=94;break b}if(ab){Uc=0;break}zb=+g[Z>>2];g[Ea>>2]=zb;yb=+g[$>>2];g[Fa>>2]=yb;Cb=+g[aa>>2];g[Ga>>2]=Cb;g[qa>>2]=zb;g[ra>>2]=yb;g[sa>>2]=Cb-(+g[7094616]+48.0);$F(H,Ea,qa,4,-1);if((c[bb>>2]|0)!=0){Uc=0;break}if(!(+g[cb>>2]<+g[aa>>2]- +g[7094613]+-1.0)){Uc=0;break}if(((yD(qa)|0)&32|0)==0){Pb=99;break b}else{Uc=0}}}while(0);ec=kb+1|0;Cb=+g[Z>>2];yb=+g[$>>2];zb=+g[aa>>2];if((ec|0)<(l|0)){gb=Dc;hb=Cc;ib=Bc;jb=cc;kb=ec;lb=Uc;mb=_b;nb=Cb;ob=yb;pb=zb}else{Vc=Dc;Wc=Cc;Xc=Bc;Yc=ec;Zc=_b;_c=Cb;$c=yb;ad=zb;bd=la;break a}}if((Pb|0)==48){g[a>>2]=+g[w+(tc*12|0)>>2];g[a+4>>2]=+g[w+(tc*12|0)+4>>2];g[a+8>>2]=+g[w+(tc*12|0)+8>>2];g[a+16>>2]=fc*la;g[a+20>>2]=gc*la;g[a+24>>2]=hc*la;c[a+12>>2]=o;m$(a+28|0,I|0,36)|0;c[a+68>>2]=512;c[a+64>>2]=_b;c[a+72>>2]=0;g[a+76>>2]=J*+(kb|0);c[a+80>>2]=kb;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}else if((Pb|0)==50){g[a>>2]=+g[w+(rc*12|0)>>2];g[a+4>>2]=+g[w+(rc*12|0)+4>>2];g[a+8>>2]=+g[w+(rc*12|0)+8>>2];g[a+16>>2]=fc*la;g[a+20>>2]=gc*la;g[a+24>>2]=hc*la;c[a+12>>2]=c[sc>>2];m$(a+28|0,I|0,36)|0;c[a+68>>2]=128;c[a+64>>2]=_b;c[a+72>>2]=0;g[a+76>>2]=J*+(kb|0);c[a+80>>2]=kb;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}else if((Pb|0)==53){g[a>>2]=+g[w+(mc*12|0)>>2];g[a+4>>2]=+g[w+(mc*12|0)+4>>2];g[a+8>>2]=+g[w+(mc*12|0)+8>>2];c[a+12>>2]=nc;g[a+16>>2]=fc*la;g[a+20>>2]=gc*la;g[a+24>>2]=hc*la;m$(a+28|0,I|0,36)|0;c[a+68>>2]=256;c[a+64>>2]=_b;c[a+72>>2]=0;g[a+76>>2]=J*+(kb|0);c[a+80>>2]=kb;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}else if((Pb|0)==56){g[a>>2]=+g[w+(oc*12|0)>>2];g[a+4>>2]=+g[w+(oc*12|0)+4>>2];g[a+8>>2]=+g[w+(oc*12|0)+8>>2];c[a+12>>2]=pc;g[a+16>>2]=fc*la;g[a+20>>2]=gc*la;g[a+24>>2]=hc*la;m$(a+28|0,I|0,36)|0;c[a+68>>2]=4096;c[a+64>>2]=_b;c[a+72>>2]=0;g[a+76>>2]=J*+(kb|0);c[a+80>>2]=kb;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}else if((Pb|0)==60){mb=a|0;g[mb>>2]=+g[wa>>2];g[a+4>>2]=+g[za>>2];g[a+8>>2]=+g[Aa>>2];c[a+12>>2]=WF(mb)|0;g[a+16>>2]=fc*la;g[a+20>>2]=gc*la;g[a+24>>2]=hc*la;m$(a+28|0,I|0,36)|0;c[a+68>>2]=2048;c[a+64>>2]=_b;c[a+72>>2]=0;g[a+76>>2]=J*+(kb|0);c[a+80>>2]=kb;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}else if((Pb|0)==66){g[a>>2]=+g[Ea>>2];g[a+4>>2]=+g[Fa>>2];g[a+8>>2]=+g[Ga>>2];c[a+12>>2]=o;g[a+16>>2]=fc*la;g[a+20>>2]=gc*la;g[a+24>>2]=hc*la;m$(a+28|0,I|0,36)|0;c[a+68>>2]=1024;c[a+64>>2]=_b;c[a+72>>2]=0;g[a+76>>2]=J*+(kb|0);c[a+80>>2]=kb;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}else if((Pb|0)==80){g[a>>2]=+g[Z>>2];g[a+4>>2]=+g[$>>2];g[a+8>>2]=+g[aa>>2];c[a+12>>2]=WF(Z)|0;g[a+16>>2]=Lc;g[a+20>>2]=Nc;g[a+24>>2]=Oc;m$(a+28|0,I|0,36)|0;c[a+68>>2]=32;c[a+64>>2]=_b;c[a+72>>2]=0;g[a+76>>2]=J*+(kb|0);c[a+80>>2]=kb;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}else if((Pb|0)==86){g[a>>2]=+g[Z>>2];g[a+4>>2]=+g[$>>2];g[a+8>>2]=+g[aa>>2];c[a+12>>2]=Sc;g[a+16>>2]=Bc*la;g[a+20>>2]=Cc*la;g[a+24>>2]=Dc*la;c[a+68>>2]=Tc;c[a+64>>2]=_b;c[a+72>>2]=Rc;g[a+76>>2]=J*+(kb|0);c[a+80>>2]=kb;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}else if((Pb|0)==92){g[a>>2]=+g[Z>>2];g[a+4>>2]=+g[$>>2];g[a+8>>2]=+g[aa>>2];c[a+12>>2]=WF(Z)|0;g[a+16>>2]=Bc*la;g[a+20>>2]=Cc*la;g[a+24>>2]=Dc*la;m$(a+28|0,I|0,36)|0;c[a+68>>2]=1;c[a+64>>2]=_b;c[a+72>>2]=0;g[a+76>>2]=J*+(kb|0);c[a+80>>2]=kb;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}else if((Pb|0)==94){g[a>>2]=+g[Z>>2];g[a+4>>2]=+g[$>>2];g[a+8>>2]=+g[aa>>2];c[a+12>>2]=WF(Z)|0;g[a+16>>2]=Bc*la;g[a+20>>2]=Cc*la;g[a+24>>2]=Dc*la;m$(a+28|0,I|0,36)|0;c[a+68>>2]=2;c[a+64>>2]=_b;c[a+72>>2]=0;g[a+76>>2]=J*+(kb|0);c[a+80>>2]=kb;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}else if((Pb|0)==99){g[a>>2]=+g[na>>2];g[a+4>>2]=+g[oa>>2];g[a+8>>2]=+g[pa>>2];c[a+12>>2]=WF(na)|0;g[a+16>>2]=Bc*la;g[a+20>>2]=Cc*la;g[a+24>>2]=Dc*la;m$(a+28|0,I|0,36)|0;c[a+68>>2]=64;c[a+64>>2]=_b;c[a+72>>2]=0;g[a+76>>2]=J*+(kb|0);c[a+80>>2]=kb;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}else if((Pb|0)==102){cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}}else{Vc=ea;Wc=da;Xc=ca;Yc=0;Zc=e;_c=Y;$c=_;ad=ba;bd=1.0/J}}while(0);g[a>>2]=_c;g[a+4>>2]=$c;g[a+8>>2]=ad;c[a+12>>2]=WF(Z)|0;g[a+16>>2]=Xc*bd;g[a+20>>2]=Wc*bd;g[a+24>>2]=Vc*bd;c[a+68>>2]=0;c[a+64>>2]=Zc;c[a+72>>2]=0;g[a+76>>2]=J*+(Yc|0);c[a+80>>2]=Yc;Qc=1;cd=36;dd=0;ed=240;fd=0;gd=80;hd=0;i=s;return Qc|0}function CE(a,b,c,d,e,f,g,h,i,j,k,l,m){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;k=k|0;l=l|0;m=m|0;return BE(a,b,c,d,e,f,g,h,i,j,2048,0,k,l,m)|0}function DE(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0,k=0.0;e=+g[7094603];f=+g[7094606];h=e*.5;i=a/e;e=i;a=+g[b+8>>2]+e*h*e- +g[c+8>>2];if(a<0.0){g[d>>2]=f;j=0;return j|0}e=+T(a/h);h=+g[c>>2]- +g[b>>2];a=+g[c+4>>2]- +g[b+4>>2];k=i+e;if(k==0.0){g[d>>2]=f;j=0;return j|0}e=+T(h*h+a*a)/k;g[d>>2]=e;if(!(e>f)){j=1;return j|0}g[d>>2]=f;j=0;return j|0}function EE(a,b){a=a|0;b=b|0;var d=0,e=0,f=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;d=(b|0)>-1?b:-b|0;e=c[7094523]|0;f=(c[a+52>>2]|0)+(d<<2)|0;h=c[f>>2]|0;if((h|0)!=0){return((b|0)>0?h:-h|0)|0}h=a+8|0;i=c[h>>2]|0;j=c[a+12>>2]|0;k=c[a+48>>2]|0;l=c[7094519]|0;m=a|0;n=a+4|0;a=e+(d<<3)|0;o=c[a>>2]|0;p=c[k+(o<<2)>>2]|0;if((p|0)==0){q=c[m>>2]|0;r=c[n>>2]|0;g[r+(q*12|0)>>2]=+g[l+(o*12|0)>>2];g[r+(q*12|0)+4>>2]=+g[l+(o*12|0)+4>>2];g[r+(q*12|0)+8>>2]=+g[l+(o*12|0)+8>>2];c[j+(i<<3)>>2]=q;c[k+(c[a>>2]<<2)>>2]=c[m>>2];c[m>>2]=(c[m>>2]|0)+1}else{c[j+(i<<3)>>2]=p}p=e+(d<<3)+4|0;d=c[p>>2]|0;e=c[k+(d<<2)>>2]|0;if((e|0)==0){a=c[m>>2]|0;q=c[n>>2]|0;g[q+(a*12|0)>>2]=+g[l+(d*12|0)>>2];g[q+(a*12|0)+4>>2]=+g[l+(d*12|0)+4>>2];g[q+(a*12|0)+8>>2]=+g[l+(d*12|0)+8>>2];c[j+(i<<3)+4>>2]=a;c[k+(c[p>>2]<<2)>>2]=c[m>>2];c[m>>2]=(c[m>>2]|0)+1;s=c[h>>2]|0;c[f>>2]=s;t=c[h>>2]|0;u=t+1|0;c[h>>2]=u;v=(b|0)>0;w=-t|0;x=v?t:w;return x|0}else{c[j+(i<<3)+4>>2]=e;s=c[h>>2]|0;c[f>>2]=s;t=c[h>>2]|0;u=t+1|0;c[h>>2]=u;v=(b|0)>0;w=-t|0;x=v?t:w;return x|0}return 0}function FE(a,b){a=a|0;b=b|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;d=(b|0)>-1?b:-b|0;e=c[7094527]|0;if((c[e+(d*24|0)+4>>2]&2|0)==0){f=0;return f|0}g=a+56|0;h=c[(c[g>>2]|0)+(d<<2)>>2]|0;if((h|0)!=0){return((b|0)>0?h:-h|0)|0}h=a+24|0;i=c[h>>2]|0;j=c[a+28>>2]|0;k=j+(i*24|0)|0;l=e+(d*24|0)|0;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];c[k+16>>2]=c[l+16>>2];c[k+20>>2]=c[l+20>>2];l=j+(i*24|0)+8|0;c[l>>2]=0;k=a+16|0;m=j+(i*24|0)+12|0;c[m>>2]=c[k>>2];i=e+(d*24|0)+8|0;if((c[i>>2]|0)>0){j=e+(d*24|0)+12|0;e=a+20|0;n=0;do{o=EE(a,c[(c[7094525]|0)+((c[j>>2]|0)+n<<2)>>2]|0)|0;if((o|0)!=0){c[(c[e>>2]|0)+((c[l>>2]|0)+(c[m>>2]|0)<<2)>>2]=o;c[l>>2]=(c[l>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+1}n=n+1|0;}while((n|0)<(c[i>>2]|0))}c[(c[g>>2]|0)+(d<<2)>>2]=c[h>>2];d=c[h>>2]|0;c[h>>2]=d+1;f=(b|0)>0?d:-d|0;return f|0}function GE(a){a=a|0;c[a+4>>2]=_J((c[7094518]|0)*12|0)|0;c[a>>2]=0;c[a+12>>2]=_J(c[7094522]<<3)|0;c[a+8>>2]=1;c[a+20>>2]=_J(c[7094524]<<2)|0;c[a+16>>2]=0;c[a+28>>2]=_J((c[7094526]|0)*24|0)|0;c[a+24>>2]=1;c[a+36>>2]=_J(c[7094528]<<2)|0;c[a+32>>2]=0;c[a+44>>2]=_J((c[7094530]|0)*48|0)|0;c[a+40>>2]=c[7094530];c[a+48>>2]=_J(c[7094518]<<2)|0;c[a+52>>2]=_J(c[7094522]<<2)|0;c[a+56>>2]=_J(c[7094526]<<2)|0;return}function HE(a){a=a|0;var b=0;b=c[7094519]|0;if((b|0)!=0){bK(b)}c[7094519]=c[a+4>>2];c[7094518]=c[a>>2];b=c[7094523]|0;if((b|0)!=0){bK(b)}c[7094523]=c[a+12>>2];c[7094522]=c[a+8>>2];b=c[7094525]|0;if((b|0)!=0){bK(b)}c[7094525]=c[a+20>>2];c[7094524]=c[a+16>>2];b=c[7094527]|0;if((b|0)!=0){bK(b)}c[7094527]=c[a+28>>2];c[7094526]=c[a+24>>2];b=c[7094529]|0;if((b|0)!=0){bK(b)}c[7094529]=c[a+36>>2];c[7094528]=c[a+32>>2];b=c[7094531]|0;if((b|0)!=0){bK(b)}c[7094531]=c[a+44>>2];c[7094530]=c[a+40>>2];bK(c[a+48>>2]|0);bK(c[a+52>>2]|0);bK(c[a+56>>2]|0);return}function IE(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=i;i=i+64|0;b=a|0;GE(b);if((c[7094530]|0)>1){d=b+44|0;e=b+32|0;f=b+36|0;g=1;do{h=c[7094531]|0;j=c[d>>2]|0;m$(j+(g*48|0)|0,h+(g*48|0)|0,48)|0;k=j+(g*48|0)+4|0;c[k>>2]=0;l=j+(g*48|0)+8|0;c[l>>2]=c[e>>2];j=h+(g*48|0)+4|0;if((c[j>>2]|0)>0){m=h+(g*48|0)+8|0;h=0;do{n=FE(b,c[(c[7094529]|0)+((c[m>>2]|0)+h<<2)>>2]|0)|0;if((n|0)!=0){c[(c[f>>2]|0)+((c[k>>2]|0)+(c[l>>2]|0)<<2)>>2]=n;c[k>>2]=(c[k>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+1}h=h+1|0;}while((h|0)<(c[j>>2]|0))}g=g+1|0;}while((g|0)<(c[7094530]|0))}if((c[7094534]|0)<=0){HE(b);o=c[7092490]|0;Tk[o&255](1,132304,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;q=60;r=0;i=a;return}g=c[7094535]|0;e=c[b+56>>2]|0;f=c[b+52>>2]|0;d=0;do{j=c[g+(d*44|0)+36>>2]&16777215;do{if(!((j|0)==11|(j|0)==18|(j|0)==19)){h=g+(d*44|0)+4|0;k=c[h>>2]|0;l=c[e+(((k|0)>-1?k:-k|0)<<2)>>2]|0;c[h>>2]=(k|0)<0?-l|0:l;l=g+(d*44|0)+8|0;k=c[l>>2]|0;h=c[f+(((k|0)>-1?k:-k|0)<<2)>>2]|0;c[l>>2]=h;if((k|0)>=0){break}c[l>>2]=-h}}while(0);d=d+1|0;}while((d|0)<(c[7094534]|0));HE(b);o=c[7092490]|0;Tk[o&255](1,132304,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;q=60;r=0;i=a;return}function JE(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0;b=c[a+12>>2]|0;d=c[7094525]|0;e=c[d+(b<<2)>>2]|0;f=c[7094523]|0;h=c[f+(((e|0)>-1?e:-e|0)<<3)+(e>>>31<<2)>>2]|0;e=c[7094519]|0;i=(c[a+8>>2]|0)-1|0;if((i|0)<=1){j=0.0;return+j}k=+g[e+(h*12|0)>>2];l=+g[e+(h*12|0)+4>>2];m=+g[e+(h*12|0)+8>>2];n=0.0;h=1;while(1){a=c[d+(b+h<<2)>>2]|0;o=a>>>31;p=(a|0)>-1?a:-a|0;a=c[f+(p<<3)+(o<<2)>>2]|0;q=+g[e+(a*12|0)>>2]-k;r=+g[e+(a*12|0)+4>>2]-l;s=+g[e+(a*12|0)+8>>2]-m;a=c[f+(p<<3)+((o^1)<<2)>>2]|0;t=+g[e+(a*12|0)>>2]-k;u=+g[e+(a*12|0)+4>>2]-l;v=+g[e+(a*12|0)+8>>2]-m;w=r*v-s*u;x=s*t-q*v;v=q*u-r*t;t=n+ +T(v*v+(w*w+x*x))*.5;a=h+1|0;if((a|0)<(i|0)){n=t;h=a}else{j=t;break}}return+j}function KE(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0.0,t=0.0;b=c[7094531]|0;d=c[b+(a*48|0)+8>>2]|0;e=c[7094529]|0;f=c[e+(d<<2)>>2]|0;h=c[7094527]|0;i=c[(c[7094525]|0)+(c[h+(((f|0)>-1?f:-f|0)*24|0)+12>>2]<<2)>>2]|0;f=c[(c[7094523]|0)+(((i|0)>-1?i:-i|0)<<3)>>2]|0;i=c[7094519]|0;j=+g[i+(f*12|0)>>2];k=+g[i+(f*12|0)+4>>2];l=+g[i+(f*12|0)+8>>2];f=c[b+(a*48|0)+4>>2]|0;if((f|0)<=0){m=0.0;n=m/3.0;return+n}b=c[7094521]|0;o=0.0;i=0;while(1){p=c[e+(d+i<<2)>>2]|0;q=(p|0)>-1?p:-p|0;p=h+(q*24|0)|0;r=(c[h+(q*24|0)+20>>2]|0)!=(a|0)^c[p>>2];s=j*+g[b+(r*20|0)>>2]+k*+g[b+(r*20|0)+4>>2]+l*+g[b+(r*20|0)+8>>2]- +g[b+(r*20|0)+12>>2];t=o- +JE(p)*s;p=i+1|0;if((p|0)<(f|0)){o=t;i=p}else{m=t;break}}n=m/3.0;return+n}function LE(a){a=a|0;return(c[(c[7094533]|0)+(a*28|0)+4>>2]|0)>>>2&1|0}function ME(a){a=a|0;var b=0,d=0,e=0;b=i;if((a|0)>-1&(c[7094530]|0)>(a|0)){d=c[(c[7094533]|0)+(a*28|0)+20>>2]|0;i=b;return d|0}else{hE(166232,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;d=0;i=b;return d|0}return 0}function NE(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;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.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;j=i;i=i+496|0;k=j|0;l=j+8|0;m=j+24|0;n=j+40|0;o=j+56|0;p=j+72|0;q=j+456|0;r=p|0;s=j+200|0;t=j+328|0;GD(b,132272,k)|0;if(!(+g[k>>2]!=0.0)){g[k>>2]=1.0e3}g[m+8>>2]=0.0;g[m+4>>2]=0.0;k=m|0;g[k>>2]=0.0;ED(b,173704,r,128)|0;if((a[r]|0)==0){u=0}else{u=oj(p+1|0)|0}p=l|0;AD(u,k,e,f,p);v=+g[p>>2];g[e>>2]=v+ +g[e>>2];k=l+4|0;w=+g[k>>2];u=e+4|0;g[u>>2]=w+ +g[u>>2];r=l+8|0;x=+g[r>>2];l=e+8|0;g[l>>2]=x+ +g[l>>2];y=v+ +g[f>>2];g[f>>2]=y;m=f+4|0;v=w+ +g[m>>2];g[m>>2]=v;m=f+8|0;w=x+ +g[m>>2];g[m>>2]=w;x=+g[u>>2]+v;v=+g[l>>2]+w;w=(+g[e>>2]+y)*.5;g[p>>2]=w;y=x*.5;g[k>>2]=y;x=v*.5;g[r>>2]=x;e=n|0;g[e>>2]=w;g[n+4>>2]=y;g[n+8>>2]=x+64.0;$F(q,e,p,4,-1);if((c[q>>2]|0)==0){x=+g[q+16>>2];y=+g[q+12>>2];g[d>>2]=+g[q+8>>2];g[d+4>>2]=y;g[d+8>>2]=x;z=x}else{Tk[c[7092490]&255](1,147088,(A=i,i=i+1|0,i=i+7&-8,c[A>>2]=0,A)|0);i=A;g[d>>2]=+g[p>>2];g[d+4>>2]=+g[k>>2];x=+g[r>>2];g[d+8>>2]=x;z=x}g[d+8>>2]=z+.125;ED(b,129632,s,128)|0;b=DD(0)|0;a:do{if((b|0)!=0){d=b;while(1){if((ED(d,119088,t,128)|0)!=0){if((k$(t,s)|0)==0){break}}q=DD(d)|0;if((q|0)==0){break a}else{d=q}}q=o|0;FD(d,99016,q)|0;z=+g[o+8>>2]- +g[r>>2];x=+g[7094603];y=+T(z/(x*.5));if(y!=0.0){g[h>>2]=+g[q>>2]- +g[p>>2];q=h+4|0;g[q>>2]=+g[o+4>>2]- +g[k>>2];e=h+8|0;g[e>>2]=z;z=+wB(h)/y*1.100000023841858;g[h>>2]=+g[h>>2]*z;g[q>>2]=z*+g[q>>2];g[e>>2]=x*y;B=1;C=128;D=0;E=128;F=0;G=128;H=0;i=j;return B|0}else{Tk[c[7092490]&255](1,57056,(A=i,i=i+1|0,i=i+7&-8,c[A>>2]=0,A)|0);i=A;B=0;C=128;D=0;E=128;F=0;G=128;H=0;i=j;return B|0}}}while(0);Tk[c[7092490]&255](1,108312,(A=i,i=i+8|0,c[A>>2]=s,A)|0);i=A;B=0;C=128;D=0;E=128;F=0;G=128;H=0;i=j;return B|0}function OE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.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.0,G=0;e=i;i=i+328|0;f=e+16|0;h=e+32|0;j=e+48|0;k=e+112|0;l=k;m=e+200|0;n=~~+UJ(50648,45632);o=+g[a>>2];p=h|0;g[p>>2]=o+ +g[b>>2];q=+g[a+4>>2];g[h+4>>2]=q+ +g[b+4>>2];r=+g[a+8>>2];g[h+8>>2]=r+ +g[b+8>>2];b=j|0;g[b>>2]=o+ +g[d>>2];g[j+4>>2]=q+ +g[d+4>>2];g[j+8>>2]=r+ +g[d+8>>2];d=DD(0)|0;if((d|0)==0){s=0;t=128;u=0;v=84;w=0;i=e;return s|0}j=e|0;h=e+64|0;a=e+80|0;x=e+96|0;y=f|0;z=f+4|0;A=f+8|0;f=k+80|0;B=d;a:while(1){b:do{if((ED(B,184736,m,128)|0)!=0){if((k$(m,180936)|0)!=0){break}if((NE(B,j,h,a,x)|0)==0){break}C=eG(h,a,-1,4)|0;c:do{if((C|0)!=0){d=c[7094533]|0;D=C;while(1){if((c[d+((c[D+4>>2]|0)*28|0)>>2]&128|0)!=0){break}D=c[D+16>>2]|0;if((D|0)==0){break c}}g[y>>2]=0.0;g[z>>2]=0.0;g[A>>2]=0.0;n$(l|0,0,84)|0;CE(k,-1,j,2,0,x,y,0,30,.10000000149011612,p,b,n)|0;if((c[f>>2]|0)<30){break a}cG(C);break b}}while(0);Tk[c[7092490]&255](1,176200,(D=i,i=i+1|0,i=i+7&-8,c[D>>2]=0,D)|0);i=D;cG(C)}}while(0);D=DD(B)|0;if((D|0)==0){s=0;E=20;break}else{B=D}}if((E|0)==20){t=128;u=0;v=84;w=0;i=e;return s|0}E=c[7094533]|0;B=0;r=0.0;f=C;while(1){n=c[f+4>>2]|0;do{if((c[E+(n*28|0)>>2]&128|0)==0){F=r;G=B}else{q=+KE(n);if(q>2]|0;if((n|0)==0){break}else{B=G;r=F;f=n}}cG(C);s=G;t=128;u=0;v=84;w=0;i=e;return s|0}function PE(a){a=a|0;return c[(c[7094533]|0)+(a*28|0)>>2]&128|0}function QE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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.0,A=0,B=0.0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;f=i;i=i+144|0;h=f|0;j=f+16|0;k=f+32|0;l=f+48|0;m=f+64|0;n=f+104|0;o=m;if((c[7094478]|0)==0){Tk[c[7092490]&255](3,172736,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;q=0;r=36;s=0;i=f;return q|0}t=k|0;g[t>>2]=+g[a>>2];u=a+4|0;v=k+4|0;g[v>>2]=+g[u>>2];w=a+8|0;x=k+8|0;g[x>>2]=+g[w>>2];k=WF(t)|0;do{if((k|0)==0){y=0;do{z=+(y|0)*4.0;A=0;do{B=+(A|0)*4.0;C=-1;do{D=B*+(C|0);E=-1;do{F=+g[u>>2];G=+g[w>>2];g[t>>2]=D+ +g[a>>2];g[v>>2]=B*+(E|0)+F;g[x>>2]=z+G;H=WF(t)|0;E=E+1|0;}while((E|0)<2&(H|0)==0);C=C+1|0;}while((C|0)<2&(H|0)==0);A=A+1|0;}while((A|0)<5&(H|0)==0);y=y+1|0;I=(H|0)==0;}while((y|0)<5&I);if(!I){J=H;K=13;break}L=e+4|0;M=e+8|0}else{J=k;K=13}}while(0);do{if((K|0)==13){k=l|0;g[k>>2]=+g[t>>2];g[l+4>>2]=+g[v>>2];z=+g[x>>2];g[x>>2]=z+.25;g[l+8>>2]=z+-50.0;$F(n,t,k,4,-1);m$(o|0,n|0,36)|0;if((c[m>>2]|0)==0){k=m+8|0;H=WF(k)|0;g[e>>2]=+g[k>>2];k=e+4|0;g[k>>2]=+g[m+12>>2];I=e+8|0;g[I>>2]=+g[m+16>>2];if((H|0)==0){L=k;M=I;break}else{q=H}r=36;s=0;i=f;return q|0}else{g[e>>2]=+g[t>>2];g[e+4>>2]=+g[v>>2];g[e+8>>2]=+g[x>>2];q=J;r=36;s=0;i=f;return q|0}}}while(0);g[e>>2]=+g[a>>2];g[L>>2]=+g[u>>2];g[M>>2]=+g[w>>2];z=+g[a>>2];a=h|0;g[a>>2]=z+ +g[b>>2];B=+g[u>>2];g[h+4>>2]=B+ +g[b+4>>2];D=+g[w>>2];g[h+8>>2]=D+ +g[b+8>>2];b=j|0;g[b>>2]=z+ +g[d>>2];g[j+4>>2]=B+ +g[d+4>>2];g[j+8>>2]=D+ +g[d+8>>2];d=eG(a,b,-1,4)|0;a:do{if((d|0)==0){N=0}else{b=c[7094533]|0;a=d;while(1){j=c[a+4>>2]|0;if((c[b+(j*28|0)+4>>2]&5|0)!=0){N=j;break a}j=c[a+16>>2]|0;if((j|0)==0){O=d;break}else{a=j}}while(1){a=c[O+4>>2]|0;if((a|0)!=0){N=a;break a}if((c[7094530]|0)>0){if((c[(c[7094533]|0)+20>>2]|0)!=0){N=0;break a}}else{hE(166232,(p=i,i=i+8|0,c[p>>2]=0,p)|0);i=p}a=c[O+16>>2]|0;if((a|0)==0){N=0;break}else{O=a}}}}while(0);cG(d);q=N;r=36;s=0;i=f;return q|0}function RE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0;d=c[7094527]|0;e=b+8|0;g[e>>2]=0.0;f=b+4|0;g[f>>2]=0.0;g[b>>2]=0.0;h=c[d+(a*24|0)+8>>2]|0;if((h|0)<=0){i=0.0;j=0.0;k=0.0;l=+(h|0);m=.5/l;n=m;o=i*n;g[b>>2]=o;p=n*j;g[f>>2]=p;q=n*k;g[e>>2]=q;return}r=c[d+(a*24|0)+12>>2]|0;a=c[7094525]|0;d=c[7094523]|0;s=c[7094519]|0;t=0;u=0.0;v=0.0;w=0.0;while(1){x=c[a+(r+t<<2)>>2]|0;y=(x|0)>-1?x:-x|0;x=c[d+(y<<3)>>2]|0;z=u+ +g[s+(x*12|0)>>2];g[b>>2]=z;A=v+ +g[s+(x*12|0)+4>>2];g[f>>2]=A;B=w+ +g[s+(x*12|0)+8>>2];g[e>>2]=B;x=c[d+(y<<3)+4>>2]|0;C=z+ +g[s+(x*12|0)>>2];g[b>>2]=C;z=A+ +g[s+(x*12|0)+4>>2];g[f>>2]=z;A=B+ +g[s+(x*12|0)+8>>2];g[e>>2]=A;x=t+1|0;if((x|0)<(h|0)){t=x;u=C;v=z;w=A}else{i=C;j=z;k=A;break}}l=+(h|0);m=.5/l;n=m;o=i*n;g[b>>2]=o;p=n*j;g[f>>2]=p;q=n*k;g[e>>2]=q;return}function SE(a){a=a|0;return(c[(c[7094533]|0)+(a*28|0)+8>>2]|0)>>>1&1^1|0}function TE(a){a=a|0;return c[(c[7094533]|0)+(a*28|0)>>2]&256|0}function UE(a,d){a=a|0;d=d|0;var e=0,f=0,h=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.0,D=0.0,E=0.0;e=i;i=i+16|0;f=e|0;h=c[7094533]|0;if((c[h+(a*28|0)+4>>2]&4|0)==0){j=0;i=e;return j|0}if((c[h+(d*28|0)+4>>2]&4|0)==0){j=0;i=e;return j|0}if((c[h+(d*28|0)+8>>2]&2|0)==0){j=0;i=e;return j|0}h=c[7094531]|0;k=0;while(1){if(+g[h+(a*48|0)+12+(k<<2)>>2]>+g[h+(d*48|0)+24+(k<<2)>>2]+10.0){j=0;l=25;break}m=k+1|0;if(+g[h+(a*48|0)+24+(k<<2)>>2]<+g[h+(d*48|0)+12+(k<<2)>>2]+-10.0){j=0;l=25;break}if((m|0)<3){k=m}else{l=6;break}}if((l|0)==6){k=h+(a*48|0)+4|0;m=c[k>>2]|0;if((m|0)<=0){j=0;i=e;return j|0}n=h+(a*48|0)+8|0;o=h+(d*48|0)+4|0;p=h+(d*48|0)+8|0;h=f|0;q=0;r=c[o>>2]|0;s=m;a:while(1){m=c[7094529]|0;t=c[m+((c[n>>2]|0)+q<<2)>>2]|0;u=t>>>31;v=(t|0)>-1?t:-t|0;if((r|0)>0){t=0;w=m;m=r;while(1){x=c[w+((c[p>>2]|0)+t<<2)>>2]|0;if((v|0)==(((x|0)>-1?x:-x|0)|0)){RE(v,h);if(((yD(h)|0)&56|0)!=0){break a}y=c[o>>2]|0}else{y=m}x=t+1|0;if((x|0)>=(y|0)){break}t=x;w=c[7094529]|0;m=y}z=y;A=c[k>>2]|0}else{z=r;A=s}m=q+1|0;if((m|0)<(A|0)){q=m;r=z;s=A}else{j=0;l=25;break}}if((l|0)==25){i=e;return j|0}A=c[7094527]|0;s=c[4939838]|0;if((s|0)==0){j=0;i=e;return j|0}z=c[s+44>>2]|0;do{if((z|0)==0){hE(169608,(r=i,i=i+1|0,i=i+7&-8,c[r>>2]=0,r)|0);i=r;r=c[4939838]|0;c[4939838]=c[r+44>>2];c[4938816]=(c[4938816]|0)+1;if((r|0)==0){j=0}else{B=r;break}i=e;return j|0}else{c[4939838]=z;c[4938816]=(c[4938816]|0)+1;B=s}}while(0);c[B>>2]=d;c[B+4>>2]=v;c[B+8>>2]=0;C=+g[h>>2];g[B+12>>2]=C;D=+g[f+4>>2];g[B+16>>2]=D;E=+g[f+8>>2];g[B+20>>2]=E;f=c[A+(v*24|0)>>2]^u;u=c[7094521]|0;g[B+24>>2]=C+ +g[u+(f*20|0)>>2]*-2.0;g[B+28>>2]=D+ +g[u+(f*20|0)+4>>2]*-2.0;g[B+32>>2]=E+ +g[u+(f*20|0)+8>>2]*-2.0;c[B+36>>2]=8;f=B+40|0;b[f>>1]=1;if(+KE(d)<800.0){b[f>>1]=201}c[B+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=B;c[4917222]=(c[4917222]|0)+1;j=1;i=e;return j|0}else if((l|0)==25){i=e;return j|0}return 0}function VE(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0,R=0,S=0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0.0,$=0.0,aa=0,ba=0,ca=0,da=0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0.0,ta=0.0,ua=0.0,va=0.0,wa=0.0,xa=0.0,ya=0,za=0,Aa=0,Ba=0.0,Ca=0.0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0.0,Ia=0.0,Ja=0,Ka=0,La=0,Ma=0,Na=0.0,Oa=0.0,Pa=0.0,Qa=0.0,Ra=0.0,Sa=0.0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0.0,Ya=0.0,Za=0,_a=0,$a=0,ab=0.0,bb=0.0,cb=0.0,db=0.0,eb=0.0,fb=0.0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0.0,qb=0,rb=0.0,sb=0.0,tb=0.0,ub=0.0,vb=0.0,wb=0.0,xb=0.0,yb=0.0,zb=0.0,Ab=0,Bb=0,Cb=0.0,Db=0.0,Eb=0.0,Fb=0.0,Gb=0.0,Hb=0.0,Ib=0,Jb=0,Kb=0,Lb=0.0,Mb=0.0,Nb=0,Ob=0.0,Pb=0.0,Qb=0,Rb=0,Sb=0,Tb=0.0,Ub=0.0,Vb=0.0,Wb=0.0,Xb=0.0,Yb=0.0,Zb=0,_b=0,$b=0,ac=0,bc=0;e=i;i=i+16|0;f=e|0;h=c[7094533]|0;if((c[h+(a*28|0)+4>>2]&1|0)==0){j=0;i=e;return j|0}if((c[h+(d*28|0)+4>>2]&1|0)==0){j=0;i=e;return j|0}h=c[7094531]|0;k=0;while(1){if(+g[h+(a*48|0)+12+(k<<2)>>2]>+g[h+(d*48|0)+24+(k<<2)>>2]+10.0){j=0;l=38;break}m=k+1|0;if(+g[h+(a*48|0)+24+(k<<2)>>2]<+g[h+(d*48|0)+12+(k<<2)>>2]+-10.0){j=0;l=38;break}if((m|0)<2){k=m}else{l=7;break}}if((l|0)==7){if(+g[h+(d*48|0)+20>>2]>+g[h+(a*48|0)+32>>2]){j=0;i=e;return j|0}k=h+(a*48|0)+4|0;m=c[k>>2]|0;if((m|0)<=0){j=0;i=e;return j|0}n=h+(a*48|0)+8|0;o=h+(d*48|0)+4|0;p=h+(d*48|0)+8|0;h=f|0;q=f+4|0;r=f+8|0;s=0.0;t=99999.0;f=0;u=0;v=0;w=0;x=0.0;y=0.0;z=0.0;A=0.0;B=0.0;C=0.0;D=0;E=0;F=m;while(1){m=c[7094529]|0;G=c[m+((c[n>>2]|0)+u<<2)>>2]|0;H=(G|0)>-1?G:-G|0;G=c[7094527]|0;do{if((c[G+(H*24|0)+4>>2]&4|0)==0){I=E;J=D;K=C;L=B;M=A;N=z;O=y;P=x;Q=w;R=v;S=f;U=t;V=s;W=F}else{X=c[o>>2]|0;if((X|0)<=0){I=E;J=D;K=C;L=B;M=A;N=z;O=y;P=x;Q=w;R=v;S=f;U=t;V=s;W=F;break}Y=G+(H*24|0)+8|0;Z=G+(H*24|0)+12|0;_=s;$=t;aa=f;ba=0;ca=v;da=w;ea=x;fa=y;ga=z;ha=A;ia=B;ja=C;ka=D;la=E;ma=m;na=G;oa=X;while(1){X=c[ma+((c[p>>2]|0)+ba<<2)>>2]|0;pa=(X|0)>-1?X:-X|0;do{if((c[na+(pa*24|0)+4>>2]&4|0)==0){qa=la;ra=ka;sa=ja;ta=ia;ua=ha;va=ga;wa=fa;xa=ea;ya=da;za=ca;Aa=aa;Ba=$;Ca=_;Da=oa}else{X=c[Y>>2]|0;if((X|0)<=0){qa=la;ra=ka;sa=ja;ta=ia;ua=ha;va=ga;wa=fa;xa=ea;ya=da;za=ca;Aa=aa;Ba=$;Ca=_;Da=oa;break}Ea=na+(pa*24|0)+8|0;Fa=na+(pa*24|0)+12|0;Ga=na+(pa*24|0)|0;Ha=_;Ia=$;Ja=aa;Ka=0;La=ca;Ma=da;Na=ea;Oa=fa;Pa=ga;Qa=ha;Ra=ia;Sa=ja;Ta=ka;Ua=la;Va=c[Ea>>2]|0;Wa=X;while(1){if((Va|0)>0){Xa=Ha;Ya=Ia;X=Ja;Za=0;_a=La;$a=Ma;ab=Na;bb=Oa;cb=Pa;db=Qa;eb=Ra;fb=Sa;gb=Ta;hb=Ua;while(1){ib=c[7094525]|0;jb=c[ib+((c[Z>>2]|0)+Ka<<2)>>2]|0;kb=(jb|0)>-1?jb:-jb|0;lb=c[ib+((c[Fa>>2]|0)+Za<<2)>>2]|0;do{if((kb|0)==(((lb|0)>-1?lb:-lb|0)|0)){ib=jb>>>31;mb=c[7094523]|0;nb=c[mb+(kb<<3)+4>>2]|0;ob=c[7094519]|0;pb=+g[ob+(nb*12|0)>>2];qb=c[mb+(kb<<3)>>2]|0;rb=+g[ob+(qb*12|0)>>2];sb=pb-rb;tb=+g[ob+(nb*12|0)+4>>2];ub=+g[ob+(qb*12|0)+4>>2];vb=tb-ub;wb=+g[ob+(nb*12|0)+8>>2];xb=+g[ob+(qb*12|0)+8>>2];yb=wb-xb;zb=+T(sb*sb+vb*vb+yb*yb);yb=(pb+rb)*.5;rb=(tb+ub)*.5;ub=(wb+xb)*.5;qb=c[mb+(kb<<3)+(ib<<2)>>2]|0;nb=c[mb+(kb<<3)+((ib^1)<<2)>>2]|0;xb=+g[ob+(qb*12|0)>>2]- +g[ob+(nb*12|0)>>2];wb=+g[ob+(qb*12|0)+4>>2]- +g[ob+(nb*12|0)+4>>2];tb=+g[ob+(qb*12|0)+8>>2]- +g[ob+(nb*12|0)+8>>2];nb=c[Ga>>2]|0;ob=c[7094521]|0;qb=ob+(nb*20|0)|0;ib=ob+(nb*20|0)+8|0;mb=ob+(nb*20|0)+4|0;g[h>>2]=wb*+g[ib>>2]-tb*+g[mb>>2];g[q>>2]=tb*+g[qb>>2]-xb*+g[ib>>2];g[r>>2]=xb*+g[mb>>2]-wb*+g[qb>>2];+wB(h);wb=+g[h>>2];xb=yb+wb*5.0;tb=+g[q>>2];pb=rb+tb*5.0;vb=+g[r>>2];sb=yb+wb*.1;wb=rb+tb*.1;tb=ub+vb*.1;rb=ub+vb*5.0+.125;vb=tb+(sb*-0.0+wb*-0.0);if(!(vbXa)){Ab=hb;Bb=gb;Cb=fb;Db=eb;Eb=db;Fb=cb;Gb=bb;Hb=ab;Ib=$a;Jb=_a;Kb=X;Lb=Ya;Mb=Xa;break}}Ab=d;Bb=jb;Cb=sb;Db=wb;Eb=tb;Fb=xb;Gb=pb;Hb=rb;Ib=2;Jb=1;Kb=1;Lb=vb;Mb=zb}else{Ab=hb;Bb=gb;Cb=fb;Db=eb;Eb=db;Fb=cb;Gb=bb;Hb=ab;Ib=$a;Jb=_a;Kb=X;Lb=Ya;Mb=Xa}}while(0);jb=Za+1|0;Nb=c[Ea>>2]|0;if((jb|0)<(Nb|0)){Xa=Mb;Ya=Lb;X=Kb;Za=jb;_a=Jb;$a=Ib;ab=Hb;bb=Gb;cb=Fb;db=Eb;eb=Db;fb=Cb;gb=Bb;hb=Ab}else{break}}Ob=Mb;Pb=Lb;Qb=Kb;Rb=Jb;Sb=Ib;Tb=Hb;Ub=Gb;Vb=Fb;Wb=Eb;Xb=Db;Yb=Cb;Zb=Bb;_b=Ab;$b=Nb;ac=c[Y>>2]|0}else{Ob=Ha;Pb=Ia;Qb=Ja;Rb=La;Sb=Ma;Tb=Na;Ub=Oa;Vb=Pa;Wb=Qa;Xb=Ra;Yb=Sa;Zb=Ta;_b=Ua;$b=Va;ac=Wa}hb=Ka+1|0;if((hb|0)<(ac|0)){Ha=Ob;Ia=Pb;Ja=Qb;Ka=hb;La=Rb;Ma=Sb;Na=Tb;Oa=Ub;Pa=Vb;Qa=Wb;Ra=Xb;Sa=Yb;Ta=Zb;Ua=_b;Va=$b;Wa=ac}else{break}}qa=_b;ra=Zb;sa=Yb;ta=Xb;ua=Wb;va=Vb;wa=Ub;xa=Tb;ya=Sb;za=Rb;Aa=Qb;Ba=Pb;Ca=Ob;Da=c[o>>2]|0}}while(0);pa=ba+1|0;if((pa|0)>=(Da|0)){break}_=Ca;$=Ba;aa=Aa;ba=pa;ca=za;da=ya;ea=xa;fa=wa;ga=va;ha=ua;ia=ta;ja=sa;ka=ra;la=qa;ma=c[7094529]|0;na=c[7094527]|0;oa=Da}I=qa;J=ra;K=sa;L=ta;M=ua;N=va;O=wa;P=xa;Q=ya;R=za;S=Aa;U=Ba;V=Ca;W=c[k>>2]|0}}while(0);G=u+1|0;if((G|0)<(W|0)){s=V;t=U;f=S;u=G;v=R;w=Q;x=P;y=O;z=N;A=M;B=L;C=K;D=J;E=I;F=W}else{break}}if((S|0)==0){j=0;i=e;return j|0}S=c[4939838]|0;if((S|0)==0){j=0;i=e;return j|0}W=c[S+44>>2]|0;do{if((W|0)==0){hE(169608,(F=i,i=i+1|0,i=i+7&-8,c[F>>2]=0,F)|0);i=F;F=c[4939838]|0;c[4939838]=c[F+44>>2];c[4938816]=(c[4938816]|0)+1;if((F|0)==0){j=0}else{bc=F;break}i=e;return j|0}else{c[4939838]=W;c[4938816]=(c[4938816]|0)+1;bc=S}}while(0);c[bc>>2]=I;c[bc+4>>2]=0;c[bc+8>>2]=J;g[bc+12>>2]=K;g[bc+16>>2]=L;g[bc+20>>2]=M;g[bc+24>>2]=N;g[bc+28>>2]=O;g[bc+32>>2]=P;c[bc+36>>2]=Q;Q=bc+40|0;b[Q>>1]=R;c[bc+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=bc;bc=c[7094533]|0;do{if((c[bc+(a*28|0)+8>>2]&2|0)!=0){if((c[bc+(d*28|0)+8>>2]&2|0)!=0){break}b[Q>>1]=~~(+g[7094623]+ +((R&65535)>>>0))}}while(0);c[4917238]=(c[4917238]|0)+1;j=1;i=e;return j|0}else if((l|0)==38){i=e;return j|0}return 0}function WE(a,d){a=a|0;d=d|0;var e=0,f=0,h=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,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ba=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0.0,va=0.0,wa=0.0,xa=0.0,ya=0.0,za=0.0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0.0,Wa=0.0,Xa=0.0,Ya=0.0,Za=0.0,_a=0.0,$a=0.0,ab=0.0,bb=0.0,cb=0.0,db=0.0,eb=0.0,fb=0.0,gb=0.0,hb=0.0,ib=0.0,jb=0.0,kb=0.0,lb=0.0,mb=0.0,nb=0.0,ob=0.0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0.0,yb=0.0,zb=0.0,Ab=0.0,Bb=0.0,Cb=0.0,Db=0.0,Eb=0.0,Fb=0.0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0.0,Mb=0,Nb=0,Ob=0.0,Pb=0.0,Qb=0.0,Rb=0.0,Sb=0.0,Tb=0.0,Ub=0.0,Vb=0.0,Wb=0.0,Xb=0.0,Yb=0.0,Zb=0.0,_b=0.0,$b=0.0,ac=0.0,bc=0.0,cc=0.0,dc=0.0,ec=0.0,fc=0.0,gc=0.0,hc=0.0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0.0,oc=0.0,pc=0.0,qc=0.0,rc=0.0,sc=0.0,tc=0.0,uc=0.0,vc=0.0,wc=0.0,xc=0.0,yc=0.0,zc=0.0,Ac=0.0,Bc=0.0,Cc=0.0,Dc=0.0,Ec=0.0,Fc=0.0,Gc=0.0,Hc=0.0,Ic=0.0,Jc=0.0,Kc=0.0,Lc=0.0,Mc=0.0,Nc=0.0,Oc=0.0,Pc=0,Qc=0,Rc=0.0,Sc=0,Tc=0,Uc=0,Vc=0.0,Wc=0,Xc=0,Yc=0.0,Zc=0.0,_c=0.0,$c=0.0,ad=0.0,bd=0.0,cd=0.0,dd=0.0,ed=0.0,fd=0.0,gd=0.0,hd=0.0,id=0.0,jd=0.0,kd=0.0,ld=0.0,md=0.0,nd=0.0,od=0.0,pd=0.0,qd=0.0,rd=0.0,sd=0.0,td=0.0,ud=0.0,vd=0.0,wd=0.0,xd=0.0,yd=0,zd=0,Ad=0,Bd=0,Cd=0.0,Dd=0.0,Ed=0.0,Fd=0.0,Gd=0.0,Hd=0.0,Id=0.0,Jd=0,Kd=0.0,Ld=0.0,Md=0.0,Nd=0.0,Od=0.0,Pd=0.0,Qd=0.0,Rd=0.0,Sd=0.0,Td=0.0,Ud=0.0,Vd=0.0,Wd=0.0,Xd=0.0,Yd=0.0,Zd=0.0,_d=0.0,$d=0.0,ae=0.0,be=0.0,ce=0.0,de=0.0,ee=0.0,fe=0.0,ge=0.0,he=0.0,ie=0.0,je=0.0,ke=0,le=0,me=0.0,ne=0,oe=0.0,pe=0.0,qe=0.0,re=0.0,se=0.0,te=0.0,ue=0.0,ve=0.0,we=0.0,xe=0.0,ye=0.0,ze=0.0,Ae=0.0,Be=0.0,Ce=0.0,De=0.0,Ee=0.0,Fe=0.0,Ge=0.0,He=0.0,Ie=0.0,Je=0.0,Ke=0.0,Le=0.0,Me=0.0,Ne=0.0,Oe=0.0,Pe=0.0,Qe=0.0,Re=0.0,Se=0.0,Te=0.0,Ue=0.0,Ve=0.0,We=0.0,Xe=0.0,Ye=0.0,Ze=0.0,_e=0.0,$e=0.0,af=0.0,bf=0.0,cf=0.0,df=0.0,ef=0.0,ff=0.0,gf=0.0,hf=0.0,jf=0.0,kf=0.0,lf=0.0,mf=0.0,nf=0,of=0,pf=0,qf=0.0,rf=0.0,sf=0.0,tf=0.0,uf=0.0,vf=0.0,wf=0.0,xf=0.0,yf=0.0,zf=0.0,Af=0.0,Bf=0.0,Cf=0.0,Df=0.0,Ef=0.0,Ff=0.0,Gf=0.0,Hf=0.0,If=0.0,Jf=0.0,Kf=0.0,Lf=0.0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0;e=i;i=i+184|0;f=e|0;h=e+40|0;j=e+56|0;k=e+72|0;l=e+88|0;m=e+104|0;n=e+144|0;o=m;p=c[7094533]|0;q=c[p+(a*28|0)+4>>2]|0;if((q&5|0)==0){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}if((c[p+(d*28|0)+4>>2]&5|0)==0){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}p=c[7094531]|0;w=q&4;q=0;while(1){if(+g[p+(a*48|0)+12+(q<<2)>>2]>+g[p+(d*48|0)+24+(q<<2)>>2]+10.0){r=0;x=118;break}y=q+1|0;if(+g[p+(a*48|0)+24+(q<<2)>>2]<+g[p+(d*48|0)+12+(q<<2)>>2]+-10.0){r=0;x=118;break}if((y|0)<2){q=y}else{x=5;break}}if((x|0)==5){q=p+(a*48|0)+4|0;y=c[q>>2]|0;if((y|0)<=0){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}z=p+(a*48|0)+8|0;A=(w|0)==0;w=h|0;B=h+4|0;C=h+8|0;h=p+(d*48|0)+4|0;D=p+(d*48|0)+8|0;p=j|0;E=j+4|0;F=j+8|0;G=k|0;H=k+4|0;I=k+8|0;J=0;K=0;L=0;M=0.0;N=0.0;O=99999.0;P=99999.0;Q=0.0;R=0.0;U=0.0;V=0.0;W=0.0;X=0.0;Y=0.0;Z=0.0;_=0.0;$=0.0;aa=0.0;ba=0.0;ca=0.0;da=0.0;ea=0.0;fa=0.0;ga=0.0;ha=0.0;ia=0;ja=0;ka=y;while(1){y=c[(c[7094529]|0)+((c[z>>2]|0)+ja<<2)>>2]|0;la=(y|0)>-1?y:-y|0;ma=c[7094527]|0;na=ma+(la*24|0)+4|0;oa=c[na>>2]|0;do{if((oa&4|0)==0){if(A){pa=ia;qa=ha;ra=ga;sa=fa;ta=ea;ua=da;va=ca;wa=ba;xa=aa;ya=$;za=_;Aa=Z;Ba=Y;Ca=X;Da=W;Ea=V;Fa=U;Ga=R;Ha=Q;Ia=P;Ja=O;Ka=N;La=M;Ma=L;Na=K;Oa=J;Pa=ka;break}Qa=y>>>31^1^c[ma+(la*24|0)>>2];Ra=c[7094521]|0;if(+g[Ra+(Qa*20|0)+8>>2]+(+g[Ra+(Qa*20|0)>>2]*0.0+ +g[Ra+(Qa*20|0)+4>>2]*0.0)<.7){pa=ia;qa=ha;ra=ga;sa=fa;ta=ea;ua=da;va=ca;wa=ba;xa=aa;ya=$;za=_;Aa=Z;Ba=Y;Ca=X;Da=W;Ea=V;Fa=U;Ga=R;Ha=Q;Ia=P;Ja=O;Ka=N;La=M;Ma=L;Na=K;Oa=J;Pa=ka}else{x=12}}else{x=12}}while(0);do{if((x|0)==12){x=0;Qa=ma+(la*24|0)+8|0;if((c[Qa>>2]|0)<=0){pa=ia;qa=ha;ra=ga;sa=fa;ta=ea;ua=da;va=ca;wa=ba;xa=aa;ya=$;za=_;Aa=Z;Ba=Y;Ca=X;Da=W;Ea=V;Fa=U;Ga=R;Ha=Q;Ia=P;Ja=O;Ka=N;La=M;Ma=L;Na=K;Oa=J;Pa=ka;break}Ra=ma+(la*24|0)+12|0;Sa=J;Ta=K;Ua=L;Va=M;Wa=N;Xa=O;Ya=P;Za=Q;_a=R;$a=U;ab=V;bb=W;cb=X;db=Y;eb=Z;fb=_;gb=$;hb=aa;ib=ba;jb=ca;kb=da;lb=ea;mb=fa;nb=ga;ob=ha;pb=ia;qb=0;rb=oa;while(1){sb=c[(c[7094525]|0)+((c[Ra>>2]|0)+qb<<2)>>2]|0;if((rb&4|0)==0){tb=(sb^y)>>>31^1}else{tb=sb>>>31}ub=(sb|0)>-1?sb:-sb|0;sb=c[7094523]|0;vb=c[sb+(ub<<3)+(((tb|0)==0)<<2)>>2]|0;wb=c[7094519]|0;xb=+g[wb+(vb*12|0)>>2];yb=+g[wb+(vb*12|0)+4>>2];zb=+g[wb+(vb*12|0)+8>>2];vb=c[sb+(ub<<3)+(tb<<2)>>2]|0;Ab=+g[wb+(vb*12|0)>>2];Bb=+g[wb+(vb*12|0)+4>>2];Cb=+g[wb+(vb*12|0)+8>>2];Db=Ab-xb;Eb=Bb-yb;Fb=(Cb-zb)*0.0;g[w>>2]=Eb-Fb;g[B>>2]=Fb-Db;g[C>>2]=Db*0.0-Eb*0.0;+wB(w);vb=c[h>>2]|0;if((vb|0)>0){Eb=+g[B>>2];Db=+g[w>>2];Fb=+g[C>>2];wb=c[D>>2]|0;sb=c[7094529]|0;Gb=c[7094527]|0;Hb=c[7094525]|0;Ib=c[7094523]|0;Jb=c[7094519]|0;Kb=Sa;Lb=xb*Db+yb*Eb+zb*Fb;Mb=Ta;Nb=Ua;Ob=Va;Pb=Wa;Qb=Xa;Rb=Ya;Sb=zb;zb=yb;yb=xb;xb=Cb;Cb=Bb;Bb=Ab;Ab=Za;Tb=_a;Ub=$a;Vb=ab;Wb=bb;Xb=cb;Yb=db;Zb=eb;_b=fb;$b=gb;ac=hb;bc=ib;cc=jb;dc=kb;ec=lb;fc=mb;gc=nb;hc=ob;ic=pb;jc=0;while(1){kc=c[sb+(wb+jc<<2)>>2]|0;lc=(kc|0)>-1?kc:-kc|0;do{if((c[Gb+(lc*24|0)+4>>2]&4|0)==0){mc=ic;nc=hc;oc=gc;pc=fc;qc=ec;rc=dc;sc=cc;tc=bc;uc=ac;vc=$b;wc=_b;xc=Zb;yc=Yb;zc=Xb;Ac=Wb;Bc=Vb;Cc=Ub;Dc=Tb;Ec=Ab;Fc=Bb;Gc=Cb;Hc=xb;Ic=yb;Jc=zb;Kc=Sb;Lc=Rb;Mc=Qb;Nc=Pb;Oc=Ob;Pc=Nb;Qc=Mb;Rc=Lb;Sc=Kb}else{kc=c[Gb+(lc*24|0)+8>>2]|0;if((kc|0)<=0){mc=ic;nc=hc;oc=gc;pc=fc;qc=ec;rc=dc;sc=cc;tc=bc;uc=ac;vc=$b;wc=_b;xc=Zb;yc=Yb;zc=Xb;Ac=Wb;Bc=Vb;Cc=Ub;Dc=Tb;Ec=Ab;Fc=Bb;Gc=Cb;Hc=xb;Ic=yb;Jc=zb;Kc=Sb;Lc=Rb;Mc=Qb;Nc=Pb;Oc=Ob;Pc=Nb;Qc=Mb;Rc=Lb;Sc=Kb;break}Tc=c[Gb+(lc*24|0)+12>>2]|0;Uc=Kb;Vc=Lb;Wc=Mb;Xc=Nb;Yc=Ob;Zc=Pb;_c=Qb;$c=Rb;ad=Sb;bd=zb;cd=yb;dd=xb;ed=Cb;fd=Bb;gd=Ab;hd=Tb;id=Ub;jd=Vb;kd=Wb;ld=Xb;md=Yb;nd=Zb;od=_b;pd=$b;qd=ac;rd=bc;sd=cc;td=dc;ud=ec;vd=fc;wd=gc;xd=hc;yd=ic;zd=0;while(1){Ad=c[Hb+(Tc+zd<<2)>>2]|0;Bd=(Ad|0)>-1?Ad:-Ad|0;Ad=c[Ib+(Bd<<3)>>2]|0;Cd=+g[Jb+(Ad*12|0)>>2];Dd=+g[Jb+(Ad*12|0)+4>>2];Ed=+g[Jb+(Ad*12|0)+8>>2];Ad=c[Ib+(Bd<<3)+4>>2]|0;Fd=+g[Jb+(Ad*12|0)>>2];Gd=+g[Jb+(Ad*12|0)+4>>2];Hd=+g[Jb+(Ad*12|0)+8>>2];Id=Cd*Db+Dd*Eb+Ed*Fb-Vc;do{if(Id<-.1|Id>.1){Jd=yd;Kd=xd;Ld=wd;Md=vd;Nd=ud;Od=td;Pd=sd;Qd=rd;Rd=qd;Sd=pd;Td=od;Ud=nd;Vd=md;Wd=ld;Xd=kd;Yd=jd;Zd=id;_d=hd;$d=gd;ae=fd;be=ed;ce=dd;de=cd;ee=bd;fe=ad;ge=$c;he=_c;ie=Zc;je=Yc;ke=Xc;le=Wc;me=Vc;ne=Uc}else{oe=Fd*Db+Gd*Eb+Hd*Fb-Vc;if(oe<-.1|oe>.1){Jd=yd;Kd=xd;Ld=wd;Md=vd;Nd=ud;Od=td;Pd=sd;Qd=rd;Rd=qd;Sd=pd;Td=od;Ud=nd;Vd=md;Wd=ld;Xd=kd;Yd=jd;Zd=id;_d=hd;$d=gd;ae=fd;be=ed;ce=dd;de=cd;ee=bd;fe=ad;ge=$c;he=_c;ie=Zc;je=Yc;ke=Xc;le=Wc;me=Vc;ne=Uc;break}oe=Fb*0.0;pe=oe-Eb;qe=Db-oe;oe=Eb*0.0-Db*0.0;re=pe*pe+qe*qe+oe*oe;se=(cd*pe+bd*qe+ad*oe)/re;te=(fd*pe+ed*qe+dd*oe)/re;ue=(Cd*pe+Dd*qe+Ed*oe)/re;ve=(Fd*pe+Gd*qe+Hd*oe)/re;if(se>te){we=cd;xe=bd;ye=fd;ze=ed;Ae=ad;Be=dd;Ce=se;De=te}else{we=fd;xe=ed;ye=cd;ze=bd;Ae=dd;Be=ad;Ce=te;De=se}if(ue>ve){Ee=Cd;Fe=Dd;Ge=Fd;He=Gd;Ie=Ed;Je=Hd;Ke=ue;Le=ve}else{Ee=Fd;Fe=Gd;Ge=Cd;He=Dd;Ie=Hd;Je=Ed;Ke=ve;Le=ue}if(!(Ce>Le&Ke>De)){Jd=yd;Kd=xd;Ld=wd;Md=vd;Nd=ud;Od=td;Pd=sd;Qd=rd;Rd=qd;Sd=pd;Td=od;Ud=nd;Vd=md;Wd=ld;Xd=kd;Yd=jd;Zd=id;_d=hd;$d=gd;ae=we;be=xe;ce=Ae;de=ye;ee=ze;fe=Be;ge=$c;he=_c;ie=Zc;je=Yc;ke=Xc;le=Wc;me=Vc;ne=Uc;break}ue=De;ve=Le;do{if(ue+-.5ve+-.1&uete+-.1&seYe+-1.0&Ze>2]=ve;ue=(We+Qe)*.5;g[E>>2]=ue;te=(Xe+Re)*.5;g[F>>2]=te;se=(Se+Me)*.5;g[G>>2]=se;re=(Te+Ne)*.5;g[H>>2]=re;oe=(Ue+Oe)*.5;g[I>>2]=oe;ff=Ze;gf=ve;hf=ue;jf=te;kf=se;lf=re;mf=oe}else{if(Ze>2]=Ve;g[E>>2]=We;g[F>>2]=Xe;g[G>>2]=Se;g[H>>2]=Te;g[I>>2]=Ue;ff=Ze;gf=Ve;hf=We;jf=Xe;kf=Se;lf=Te;mf=Ue;break}else{g[p>>2]=Pe;g[E>>2]=Qe;g[F>>2]=Re;g[G>>2]=Me;g[H>>2]=Ne;g[I>>2]=Oe;ff=Ye;gf=Pe;hf=Qe;jf=Re;kf=Me;lf=Ne;mf=Oe;break}}}while(0);oe=Me-Se;re=Ne-Te;se=Oe-Ue;te=+T(se*se+(re*re+oe*oe));if((c[na>>2]&4|0)==0){if(!(ff<$c)){if(!(ff<$c+1.0&te>Zc)){Jd=yd;Kd=xd;Ld=wd;Md=vd;Nd=ud;Od=td;Pd=sd;Qd=rd;Rd=qd;Sd=pd;Td=od;Ud=nd;Vd=md;Wd=ld;Xd=kd;Yd=jd;Zd=id;_d=hd;$d=gd;ae=we;be=xe;ce=Ae;de=ye;ee=ze;fe=Be;ge=$c;he=_c;ie=Zc;je=Yc;ke=Xc;le=Wc;me=ff;ne=Uc;break}}Jd=yd;Kd=Db;Ld=Eb;Md=Fb;Nd=kf;Od=lf;Pd=mf;Qd=gf;Rd=hf;Sd=jf;Td=od;Ud=nd;Vd=md;Wd=ld;Xd=kd;Yd=jd;Zd=id;_d=hd;$d=gd;ae=we;be=xe;ce=Ae;de=ye;ee=ze;fe=Be;ge=ff;he=_c;ie=te;je=Yc;ke=Xc;le=ub;me=ff;ne=1;break}else{if(!(ff<_c)){if(!(ff<_c+1.0&te>Yc)){Jd=yd;Kd=xd;Ld=wd;Md=vd;Nd=ud;Od=td;Pd=sd;Qd=rd;Rd=qd;Sd=pd;Td=od;Ud=nd;Vd=md;Wd=ld;Xd=kd;Yd=jd;Zd=id;_d=hd;$d=gd;ae=we;be=xe;ce=Ae;de=ye;ee=ze;fe=Be;ge=$c;he=_c;ie=Zc;je=Yc;ke=Xc;le=Wc;me=ff;ne=Uc;break}}Jd=ub;Kd=xd;Ld=wd;Md=vd;Nd=ud;Od=td;Pd=sd;Qd=rd;Rd=qd;Sd=pd;Td=Db;Ud=Eb;Vd=Fb;Wd=kf;Xd=lf;Yd=mf;Zd=gf;_d=hf;$d=jf;ae=we;be=xe;ce=Ae;de=ye;ee=ze;fe=Be;ge=$c;he=ff;ie=Zc;je=te;ke=1;le=Wc;me=ff;ne=Uc;break}}}while(0);Ad=zd+1|0;if((Ad|0)<(kc|0)){Uc=ne;Vc=me;Wc=le;Xc=ke;Yc=je;Zc=ie;_c=he;$c=ge;ad=fe;bd=ee;cd=de;dd=ce;ed=be;fd=ae;gd=$d;hd=_d;id=Zd;jd=Yd;kd=Xd;ld=Wd;md=Vd;nd=Ud;od=Td;pd=Sd;qd=Rd;rd=Qd;sd=Pd;td=Od;ud=Nd;vd=Md;wd=Ld;xd=Kd;yd=Jd;zd=Ad}else{mc=Jd;nc=Kd;oc=Ld;pc=Md;qc=Nd;rc=Od;sc=Pd;tc=Qd;uc=Rd;vc=Sd;wc=Td;xc=Ud;yc=Vd;zc=Wd;Ac=Xd;Bc=Yd;Cc=Zd;Dc=_d;Ec=$d;Fc=ae;Gc=be;Hc=ce;Ic=de;Jc=ee;Kc=fe;Lc=ge;Mc=he;Nc=ie;Oc=je;Pc=ke;Qc=le;Rc=me;Sc=ne;break}}}}while(0);lc=jc+1|0;if((lc|0)<(vb|0)){Kb=Sc;Lb=Rc;Mb=Qc;Nb=Pc;Ob=Oc;Pb=Nc;Qb=Mc;Rb=Lc;Sb=Kc;zb=Jc;yb=Ic;xb=Hc;Cb=Gc;Bb=Fc;Ab=Ec;Tb=Dc;Ub=Cc;Vb=Bc;Wb=Ac;Xb=zc;Yb=yc;Zb=xc;_b=wc;$b=vc;ac=uc;bc=tc;cc=sc;dc=rc;ec=qc;fc=pc;gc=oc;hc=nc;ic=mc;jc=lc}else{nf=Sc;of=Qc;pf=Pc;qf=Oc;rf=Nc;sf=Mc;tf=Lc;uf=Ec;vf=Dc;wf=Cc;xf=Bc;yf=Ac;zf=zc;Af=yc;Bf=xc;Cf=wc;Df=vc;Ef=uc;Ff=tc;Gf=sc;Hf=rc;If=qc;Jf=pc;Kf=oc;Lf=nc;Mf=mc;break}}}else{nf=Sa;of=Ta;pf=Ua;qf=Va;rf=Wa;sf=Xa;tf=Ya;uf=Za;vf=_a;wf=$a;xf=ab;yf=bb;zf=cb;Af=db;Bf=eb;Cf=fb;Df=gb;Ef=hb;Ff=ib;Gf=jb;Hf=kb;If=lb;Jf=mb;Kf=nb;Lf=ob;Mf=pb}jc=qb+1|0;if((jc|0)>=(c[Qa>>2]|0)){break}Sa=nf;Ta=of;Ua=pf;Va=qf;Wa=rf;Xa=sf;Ya=tf;Za=uf;_a=vf;$a=wf;ab=xf;bb=yf;cb=zf;db=Af;eb=Bf;fb=Cf;gb=Df;hb=Ef;ib=Ff;jb=Gf;kb=Hf;lb=If;mb=Jf;nb=Kf;ob=Lf;pb=Mf;qb=jc;rb=c[na>>2]|0}pa=Mf;qa=Lf;ra=Kf;sa=Jf;ta=If;ua=Hf;va=Gf;wa=Ff;xa=Ef;ya=Df;za=Cf;Aa=Bf;Ba=Af;Ca=zf;Da=yf;Ea=xf;Fa=wf;Ga=vf;Ha=uf;Ia=tf;Ja=sf;Ka=rf;La=qf;Ma=pf;Na=of;Oa=nf;Pa=c[q>>2]|0}}while(0);na=ja+1|0;if((na|0)<(Pa|0)){J=Oa;K=Na;L=Ma;M=La;N=Ka;O=Ja;P=Ia;Q=Ha;R=Ga;U=Fa;V=Ea;W=Da;X=Ca;Y=Ba;Z=Aa;_=za;$=ya;aa=xa;ba=wa;ca=va;da=ua;ea=ta;fa=sa;ga=ra;ha=qa;ia=pa;ja=na;ka=Pa}else{break}}Pa=(Ma|0)!=0;if(Pa&Ja>=0.0&Ja<+g[7094613]){Ma=c[4939838]|0;if((Ma|0)==0){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}ka=c[Ma+44>>2]|0;do{if((ka|0)==0){hE(169608,(Nf=i,i=i+1|0,i=i+7&-8,c[Nf>>2]=0,Nf)|0);i=Nf;ja=c[4939838]|0;c[4939838]=c[ja+44>>2];c[4938816]=(c[4938816]|0)+1;if((ja|0)==0){r=0}else{Of=ja;break}s=36;t=0;u=40;v=0;i=e;return r|0}else{c[4939838]=ka;c[4938816]=(c[4938816]|0)+1;Of=Ma}}while(0);c[Of>>2]=d;c[Of+4>>2]=0;c[Of+8>>2]=pa;g[Of+12>>2]=Fa+za*.1;g[Of+16>>2]=Ga+Aa*.1;g[Of+20>>2]=Ha+Ba*.1;g[Of+24>>2]=Ca+za*5.0;g[Of+28>>2]=Da+Aa*5.0;g[Of+32>>2]=Ea+Ba*5.0;c[Of+36>>2]=2;Ma=Of+40|0;b[Ma>>1]=0;ka=c[7094533]|0;do{if((c[ka+(a*28|0)+8>>2]&2|0)!=0){if((c[ka+(d*28|0)+8>>2]&2|0)!=0){break}b[Ma>>1]=~~(+g[7094623]+0.0)}}while(0);c[Of+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=Of;c[4917224]=(c[4917224]|0)+1;r=1;s=36;t=0;u=40;v=0;i=e;return r|0}Of=(Oa|0)!=0;do{if(Of){Oa=l|0;g[Oa>>2]=ta+qa*-2.0;g[l+4>>2]=ua+ra*-2.0;g[l+8>>2]=va+sa*-2.0- +g[7094615];Ma=WF(Oa)|0;Oa=c[7094533]|0;if((c[Oa+(Ma*28|0)+4>>2]&4|0)==0){Pf=1;break}if(!(Ia<+g[7094615]+24.0)){Pf=Of;break}if((c[Oa+(a*28|0)+8>>2]&2|0)==0){Pf=Of;break}if((c[Oa+(d*28|0)+8>>2]&2|0)==0){Pf=Of;break}Oa=c[4939838]|0;if((Oa|0)==0){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}Ma=c[Oa+44>>2]|0;do{if((Ma|0)==0){hE(169608,(Nf=i,i=i+1|0,i=i+7&-8,c[Nf>>2]=0,Nf)|0);i=Nf;ka=c[4939838]|0;c[4939838]=c[ka+44>>2];c[4938816]=(c[4938816]|0)+1;if((ka|0)==0){r=0}else{Qf=ka;break}s=36;t=0;u=40;v=0;i=e;return r|0}else{c[4939838]=Ma;c[4938816]=(c[4938816]|0)+1;Qf=Oa}}while(0);c[Qf>>2]=d;c[Qf+4>>2]=0;c[Qf+8>>2]=Na;g[Qf+12>>2]=wa;g[Qf+16>>2]=xa;g[Qf+20>>2]=ya;g[Qf+24>>2]=ta+qa*15.0;g[Qf+28>>2]=ua+ra*15.0;g[Qf+32>>2]=va+sa*15.0;c[Qf+36>>2]=9;b[Qf+40>>1]=~~+g[7094620];c[Qf+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=Qf;c[4917214]=(c[4917214]|0)+1;r=1;s=36;t=0;u=40;v=0;i=e;return r|0}else{Pf=0}}while(0);do{if(Pa&Ja>0.0&Ja<+g[7094616]){if(Pf){if(!(Ja-Ia<16.0)){break}}Qf=c[7094533]|0;if((c[Qf+(a*28|0)+8>>2]&2|0)==0){break}if((c[Qf+(d*28|0)+8>>2]&2|0)==0){break}Qf=c[4939838]|0;if((Qf|0)==0){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}Na=c[Qf+44>>2]|0;do{if((Na|0)==0){hE(169608,(Nf=i,i=i+1|0,i=i+7&-8,c[Nf>>2]=0,Nf)|0);i=Nf;Of=c[4939838]|0;c[4939838]=c[Of+44>>2];c[4938816]=(c[4938816]|0)+1;if((Of|0)==0){r=0}else{Rf=Of;break}s=36;t=0;u=40;v=0;i=e;return r|0}else{c[4939838]=Na;c[4938816]=(c[4938816]|0)+1;Rf=Qf}}while(0);c[Rf>>2]=d;c[Rf+4>>2]=0;c[Rf+8>>2]=pa;g[Rf+12>>2]=Fa+za*.1;g[Rf+16>>2]=Ga+Aa*.1;g[Rf+20>>2]=Ha+Ba*.1;g[Rf+24>>2]=Ca+za*5.0;g[Rf+28>>2]=Da+Aa*5.0;g[Rf+32>>2]=Ea+Ba*5.0;c[Rf+36>>2]=4;b[Rf+40>>1]=~~+g[7094622];c[Rf+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=Rf;c[4917242]=(c[4917242]|0)+1;r=1;s=36;t=0;u=40;v=0;i=e;return r|0}}while(0);if(!(Pa&Ja<0.0)){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}if(Ja>-0.0- +g[7094613]){Pa=c[4939838]|0;if((Pa|0)==0){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}Rf=c[Pa+44>>2]|0;do{if((Rf|0)==0){hE(169608,(Nf=i,i=i+1|0,i=i+7&-8,c[Nf>>2]=0,Nf)|0);i=Nf;Pf=c[4939838]|0;c[4939838]=c[Pf+44>>2];c[4938816]=(c[4938816]|0)+1;if((Pf|0)==0){r=0}else{Sf=Pf;break}s=36;t=0;u=40;v=0;i=e;return r|0}else{c[4939838]=Rf;c[4938816]=(c[4938816]|0)+1;Sf=Pa}}while(0);c[Sf>>2]=d;c[Sf+4>>2]=0;c[Sf+8>>2]=pa;g[Sf+12>>2]=Fa+za*.1;g[Sf+16>>2]=Ga+Aa*.1;g[Sf+20>>2]=Ha+Ba*.1;g[Sf+24>>2]=Ca+za*5.0;g[Sf+28>>2]=Da+Aa*5.0;g[Sf+32>>2]=Ea+Ba*5.0;c[Sf+36>>2]=2;b[Sf+40>>1]=1;c[Sf+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=Sf;c[4917218]=(c[4917218]|0)+1;r=1;s=36;t=0;u=40;v=0;i=e;return r|0}Ia=+g[7094635];do{if(Ia!=0.0){if(+S(+Ja)>2]=Ia;g[j+4>>2]=za;g[j+8>>2]=Ha;j=k|0;g[j>>2]=Ia;g[k+4>>2]=za;g[k+8>>2]=Aa+4.0;$F(n,Sf,j,2,-1);m$(o|0,n|0,36)|0;if((c[m>>2]|0)!=0){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}if(+g[m+4>>2]<1.0){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}n=m+16|0;g[n>>2]=+g[n>>2]+1.0;if((WF(m+8|0)|0)!=(d|0)){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}m=aG(Sf,j,f|0,0,10)|0;a:do{if((m|0)>0){j=c[7094533]|0;Sf=0;while(1){n=Sf+1|0;if((c[j+((c[f+(Sf<<2)>>2]|0)*28|0)>>2]&8|0)!=0){r=0;break}if((n|0)<(m|0)){Sf=n}else{break a}}s=36;t=0;u=40;v=0;i=e;return r|0}}while(0);m=c[4939838]|0;if((m|0)==0){r=0;s=36;t=0;u=40;v=0;i=e;return r|0}f=c[m+44>>2]|0;do{if((f|0)==0){hE(169608,(Nf=i,i=i+1|0,i=i+7&-8,c[Nf>>2]=0,Nf)|0);i=Nf;Sf=c[4939838]|0;c[4939838]=c[Sf+44>>2];c[4938816]=(c[4938816]|0)+1;if((Sf|0)==0){r=0}else{Tf=Sf;break}s=36;t=0;u=40;v=0;i=e;return r|0}else{c[4939838]=f;c[4938816]=(c[4938816]|0)+1;Tf=m}}while(0);c[Tf>>2]=d;c[Tf+4>>2]=0;c[Tf+8>>2]=pa;g[Tf+12>>2]=Fa;g[Tf+16>>2]=Ga;g[Tf+20>>2]=Ha;g[Tf+24>>2]=Ia;g[Tf+28>>2]=za;g[Tf+32>>2]=Aa;c[Tf+36>>2]=7;Aa=+S(+Ja);Ja=+g[7094603];za=Ja;pa=~~(+g[7094625]+Aa*50.0/za);m=Tf+40|0;b[m>>1]=pa;f=c[7094533]|0;do{if((c[f+(d*28|0)+4>>2]&4|0)==0){if((c[f+(d*28|0)>>2]&128|0)!=0){break}Ia=Ja*+T(Aa*2.0/za);Ha=Ia*Ia*1.0e-4;if(Ha>+g[7094618]){Nf=~~(+((pa&65535)>>>0)+ +g[7094633]);b[m>>1]=Nf;Uf=Nf}else{Uf=pa}if(!(Ha>+g[7094619])){break}b[m>>1]=~~(+g[7094634]+ +((Uf&65535)>>>0))}}while(0);c[Tf+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=Tf;c[4917216]=(c[4917216]|0)+1;r=1;s=36;t=0;u=40;v=0;i=e;return r|0}else if((x|0)==118){s=36;t=0;u=40;v=0;i=e;return r|0}return 0}function XE(a,b,c,d,e,f,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;var m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0.0,B=0,C=0.0,D=0.0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,U=0.0,V=0.0,W=0,X=0.0,Y=0.0,Z=0,_=0.0,$=0,aa=0.0,ba=0.0,ca=0,da=0.0,ea=0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0,pa=0.0;m=+g[b>>2];n=+g[a>>2];o=m-n;p=b+4|0;q=+g[p>>2];r=a+4|0;s=+g[r>>2];t=q-s;u=b+8|0;v=a+8|0;w=+g[d>>2];x=+g[c>>2];y=w-x;z=d+4|0;A=+g[z>>2];B=c+4|0;C=+g[B>>2];D=A-C;E=d+8|0;F=c+8|0;if(y!=0.0){G=D/y;H=C-x*G;I=y*G+D*H;J=(n*y+s*D+ +g[v>>2]*0.0-I)/y;K=(m*y+q*D+ +g[u>>2]*0.0-I)/y;L=K;M=H+G*K;N=J;O=G*J+H}else{L=x;M=q;N=x;O=s}if(o!=0.0){q=t/o;H=s-q*n;J=+g[F>>2];G=o*q+t*H;K=(o*x+t*C+J*0.0-G)/o;y=+g[E>>2];I=(o*w+t*A+y*0.0-G)/o;P=I;Q=H+q*I;R=K;S=H+q*K;U=J;V=y}else{P=n;Q=A;R=n;S=C;U=+g[F>>2];V=+g[E>>2]}y=+g[f+12>>2];J=+g[f>>2];K=+g[f+4>>2];q=+g[f+8>>2];H=q*0.0;I=(y-(N*J+O*K+H))/q;o=(y-(L*J+M*K+H))/q;q=+g[e+12>>2];H=+g[e>>2];K=+g[e+4>>2];J=+g[e+8>>2];y=J*0.0;G=(q-(R*H+S*K+y))/J;t=(q-(P*H+Q*K+y))/J;do{if((N-x)*(N-w)+(O-C)*(O-A)+(I-U)*(I-V)>0.0){W=0;X=l}else{J=N-n;y=O-s;K=+g[v>>2];H=I-K;q=+T(J*J+y*y+H*H);H=q;y=l;if(!(H>y+-.5&H>2]=n;g[h+4>>2]=+g[r>>2];g[h+8>>2]=+g[v>>2];g[j>>2]=+g[a>>2];g[j+4>>2]=+g[r>>2];g[j+8>>2]=+g[v>>2];g[i>>2]=N;g[i+4>>2]=O;g[i+8>>2]=I;g[k>>2]=N;g[k+4>>2]=O;g[k+8>>2]=I;W=1;X=q;break}q=+g[h>>2];y=n-q;e=h+4|0;H=+g[e>>2];J=s-H;f=h+8|0;D=+g[f>>2];m=K-D;Y=+T(y*y+J*J+m*m);m=+g[j>>2];J=n-m;Z=j+4|0;y=+g[Z>>2];_=s-y;$=j+8|0;aa=+g[$>>2];ba=K-aa;K=+T(J*J+_*_+ba*ba);ba=m-q;q=y-H;H=aa-D;D=+T(ba*ba+q*q+H*H);do{if(Y>K){if(!(Y>D)){break}g[j>>2]=n;g[Z>>2]=+g[r>>2];g[$>>2]=+g[v>>2]}else{if(!(K>D)){break}g[h>>2]=n;g[e>>2]=+g[r>>2];g[f>>2]=+g[v>>2]}}while(0);D=+g[i>>2];K=N-D;f=i+4|0;Y=+g[f>>2];H=O-Y;e=i+8|0;q=+g[e>>2];ba=I-q;aa=+T(K*K+H*H+ba*ba);ba=+g[k>>2];H=N-ba;$=k+4|0;K=+g[$>>2];y=O-K;Z=k+8|0;m=+g[Z>>2];_=I-m;J=+T(H*H+y*y+_*_);_=ba-D;D=K-Y;Y=m-q;q=+T(_*_+D*D+Y*Y);if(aa>J){if(!(aa>q)){W=1;X=l;break}g[k>>2]=N;g[$>>2]=O;g[Z>>2]=I;W=1;X=l;break}else{if(!(J>q)){W=1;X=l;break}g[i>>2]=N;g[f>>2]=O;g[e>>2]=I;W=1;X=l;break}}}while(0);do{if((L- +g[c>>2])*(L- +g[d>>2])+(M- +g[B>>2])*(M- +g[z>>2])+(o- +g[F>>2])*(o- +g[E>>2])>0.0){ca=W;da=X}else{l=+g[b>>2];I=L-l;O=+g[p>>2];N=M-O;n=+g[u>>2];s=o-n;V=+T(I*I+N*N+s*s);s=V;N=X;if(!(s>N+-.5&s>2]=l;g[h+4>>2]=+g[p>>2];g[h+8>>2]=+g[u>>2];g[j>>2]=+g[b>>2];g[j+4>>2]=+g[p>>2];g[j+8>>2]=+g[u>>2];g[i>>2]=L;g[i+4>>2]=M;g[i+8>>2]=o;g[k>>2]=L;g[k+4>>2]=M;g[k+8>>2]=o;ca=1;da=V;break}V=+g[h>>2];N=l-V;e=h+4|0;s=+g[e>>2];I=O-s;f=h+8|0;U=+g[f>>2];A=n-U;C=+T(N*N+I*I+A*A);A=+g[j>>2];I=l-A;Z=j+4|0;N=+g[Z>>2];w=O-N;$=j+8|0;O=+g[$>>2];x=n-O;n=+T(I*I+w*w+x*x);x=A-V;V=N-s;s=O-U;U=+T(x*x+V*V+s*s);do{if(C>n){if(!(C>U)){break}g[j>>2]=l;g[Z>>2]=+g[p>>2];g[$>>2]=+g[u>>2]}else{if(!(n>U)){break}g[h>>2]=l;g[e>>2]=+g[p>>2];g[f>>2]=+g[u>>2]}}while(0);l=+g[i>>2];U=L-l;f=i+4|0;n=+g[f>>2];C=M-n;e=i+8|0;s=+g[e>>2];V=o-s;x=+T(U*U+C*C+V*V);V=+g[k>>2];C=L-V;$=k+4|0;U=+g[$>>2];O=M-U;Z=k+8|0;N=+g[Z>>2];A=o-N;w=+T(C*C+O*O+A*A);A=V-l;l=U-n;n=N-s;s=+T(A*A+l*l+n*n);if(x>w){if(!(x>s)){ca=1;da=X;break}g[k>>2]=L;g[$>>2]=M;g[Z>>2]=o;ca=1;da=X;break}else{if(!(w>s)){ca=1;da=X;break}g[i>>2]=L;g[f>>2]=M;g[e>>2]=o;ca=1;da=X;break}}}while(0);do{if((R- +g[a>>2])*(R- +g[b>>2])+(S- +g[r>>2])*(S- +g[p>>2])+(G- +g[v>>2])*(G- +g[u>>2])>0.0){ea=ca;fa=da}else{X=R- +g[c>>2];o=S- +g[B>>2];M=G- +g[F>>2];L=+T(X*X+o*o+M*M);M=L;o=da;if(!(M>o+-.5&M>2]=R;g[h+4>>2]=S;g[h+8>>2]=G;g[j>>2]=R;g[j+4>>2]=S;g[j+8>>2]=G;g[i>>2]=+g[c>>2];g[i+4>>2]=+g[B>>2];g[i+8>>2]=+g[F>>2];g[k>>2]=+g[c>>2];g[k+4>>2]=+g[B>>2];g[k+8>>2]=+g[F>>2];ea=1;fa=L;break}L=+g[h>>2];o=R-L;W=h+4|0;M=+g[W>>2];X=S-M;e=h+8|0;s=+g[e>>2];w=G-s;x=+T(o*o+X*X+w*w);w=+g[j>>2];X=R-w;f=j+4|0;o=+g[f>>2];n=S-o;Z=j+8|0;l=+g[Z>>2];A=G-l;N=+T(X*X+n*n+A*A);A=w-L;L=o-M;M=l-s;s=+T(A*A+L*L+M*M);do{if(x>N){if(!(x>s)){break}g[j>>2]=R;g[f>>2]=S;g[Z>>2]=G}else{if(!(N>s)){break}g[h>>2]=R;g[W>>2]=S;g[e>>2]=G}}while(0);s=+g[c>>2];N=+g[i>>2];x=s-N;M=+g[B>>2];e=i+4|0;L=+g[e>>2];A=M-L;l=+g[F>>2];W=i+8|0;o=+g[W>>2];w=l-o;n=+T(x*x+A*A+w*w);w=+g[k>>2];A=s-w;Z=k+4|0;x=+g[Z>>2];X=M-x;f=k+8|0;M=+g[f>>2];U=l-M;l=+T(A*A+X*X+U*U);U=w-N;N=x-L;L=M-o;o=+T(U*U+N*N+L*L);if(n>l){if(!(n>o)){ea=1;fa=da;break}g[k>>2]=s;g[Z>>2]=+g[B>>2];g[f>>2]=+g[F>>2];ea=1;fa=da;break}else{if(!(l>o)){ea=1;fa=da;break}g[i>>2]=s;g[e>>2]=+g[B>>2];g[W>>2]=+g[F>>2];ea=1;fa=da;break}}}while(0);da=+g[a>>2];G=+g[r>>2];S=+g[v>>2];if((P-da)*(P- +g[b>>2])+(Q-G)*(Q- +g[p>>2])+(t-S)*(t- +g[u>>2])>0.0){if((ea|0)!=0){ga=fa;return+ga}R=+g[c>>2]-da;s=+g[B>>2]-G;o=+g[F>>2]-S;l=+T(R*R+s*s+o*o);if(l>2]=da;g[h+4>>2]=+g[r>>2];g[h+8>>2]=+g[v>>2];g[j>>2]=+g[a>>2];g[j+4>>2]=+g[r>>2];g[j+8>>2]=+g[v>>2];g[i>>2]=+g[c>>2];g[i+4>>2]=+g[B>>2];g[i+8>>2]=+g[F>>2];g[k>>2]=+g[c>>2];g[k+4>>2]=+g[B>>2];g[k+8>>2]=+g[F>>2];ha=l;ia=+g[a>>2];ja=+g[r>>2];ka=+g[v>>2]}else{ha=fa;ia=da;ja=G;ka=S}S=+g[d>>2]-ia;G=+g[z>>2]-ja;ja=+g[E>>2]-ka;ka=+T(S*S+G*G+ja*ja);if(ka>2]=ia;g[h+4>>2]=+g[r>>2];g[h+8>>2]=+g[v>>2];g[j>>2]=+g[a>>2];g[j+4>>2]=+g[r>>2];g[j+8>>2]=+g[v>>2];g[i>>2]=+g[d>>2];g[i+4>>2]=+g[z>>2];g[i+8>>2]=+g[E>>2];g[k>>2]=+g[d>>2];g[k+4>>2]=+g[z>>2];g[k+8>>2]=+g[E>>2];la=ka}else{la=ha}ha=+g[b>>2];ka=+g[c>>2]-ha;ia=+g[p>>2];ja=+g[B>>2]-ia;G=+g[u>>2];S=+g[F>>2]-G;da=+T(ka*ka+ja*ja+S*S);if(da>2]=ha;g[h+4>>2]=+g[p>>2];g[h+8>>2]=+g[u>>2];g[j>>2]=+g[b>>2];g[j+4>>2]=+g[p>>2];g[j+8>>2]=+g[u>>2];g[i>>2]=+g[c>>2];g[i+4>>2]=+g[B>>2];g[i+8>>2]=+g[F>>2];g[k>>2]=+g[c>>2];g[k+4>>2]=+g[B>>2];g[k+8>>2]=+g[F>>2];ma=da;na=+g[b>>2];oa=+g[p>>2];pa=+g[u>>2]}else{ma=la;na=ha;oa=ia;pa=G}G=+g[d>>2]-na;ia=+g[z>>2]-oa;oa=+g[E>>2]-pa;pa=+T(G*G+ia*ia+oa*oa);if(!(pa>2]=na;g[h+4>>2]=+g[p>>2];g[h+8>>2]=+g[u>>2];g[j>>2]=+g[b>>2];g[j+4>>2]=+g[p>>2];g[j+8>>2]=+g[u>>2];g[i>>2]=+g[d>>2];g[i+4>>2]=+g[z>>2];g[i+8>>2]=+g[E>>2];g[k>>2]=+g[d>>2];g[k+4>>2]=+g[z>>2];g[k+8>>2]=+g[E>>2];ga=pa;return+ga}pa=P- +g[d>>2];na=Q- +g[z>>2];ma=t- +g[E>>2];oa=+T(pa*pa+na*na+ma*ma);ma=oa;na=fa;if(!(ma>na+-.5&ma>2]=P;g[h+4>>2]=Q;g[h+8>>2]=t;g[j>>2]=P;g[j+4>>2]=Q;g[j+8>>2]=t;g[i>>2]=+g[d>>2];g[i+4>>2]=+g[z>>2];g[i+8>>2]=+g[E>>2];g[k>>2]=+g[d>>2];g[k+4>>2]=+g[z>>2];g[k+8>>2]=+g[E>>2];ga=oa;return+ga}oa=+g[h>>2];na=P-oa;u=h+4|0;ma=+g[u>>2];pa=Q-ma;p=h+8|0;ia=+g[p>>2];G=t-ia;ha=+T(na*na+pa*pa+G*G);G=+g[j>>2];pa=P-G;b=j+4|0;na=+g[b>>2];la=Q-na;F=j+8|0;da=+g[F>>2];S=t-da;ja=+T(pa*pa+la*la+S*S);S=G-oa;oa=na-ma;ma=da-ia;ia=+T(S*S+oa*oa+ma*ma);do{if(ha>ja){if(!(ha>ia)){break}g[j>>2]=P;g[b>>2]=Q;g[F>>2]=t}else{if(!(ja>ia)){break}g[h>>2]=P;g[u>>2]=Q;g[p>>2]=t}}while(0);t=+g[d>>2];Q=+g[i>>2];P=t-Q;ia=+g[z>>2];d=i+4|0;ja=+g[d>>2];ha=ia-ja;ma=+g[E>>2];p=i+8|0;oa=+g[p>>2];S=ma-oa;da=+T(P*P+ha*ha+S*S);S=+g[k>>2];ha=t-S;u=k+4|0;P=+g[u>>2];na=ia-P;h=k+8|0;ia=+g[h>>2];G=ma-ia;ma=+T(ha*ha+na*na+G*G);G=S-Q;Q=P-ja;ja=ia-oa;oa=+T(G*G+Q*Q+ja*ja);if(da>ma){if(!(da>oa)){ga=fa;return+ga}g[k>>2]=t;g[u>>2]=+g[z>>2];g[h>>2]=+g[E>>2];ga=fa;return+ga}else{if(!(ma>oa)){ga=fa;return+ga}g[i>>2]=t;g[d>>2]=+g[z>>2];g[p>>2]=+g[E>>2];ga=fa;return+ga}return 0.0}function YE(a,d){a=a|0;d=d|0;var e=0,f=0,h=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.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0.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.0,ua=0,va=0,wa=0,xa=0.0,ya=0,za=0.0,Aa=0,Ba=0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0.0,Na=0.0,Oa=0.0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0.0,Xa=0.0,Ya=0.0,Za=0.0,_a=0,$a=0.0,ab=0.0,bb=0,cb=0;e=i;i=i+400|0;f=e|0;h=e+40|0;j=e+48|0;k=e+64|0;l=e+80|0;m=e+96|0;n=e+112|0;o=e+128|0;p=e+144|0;q=e+160|0;r=e+176|0;s=e+192|0;t=e+232|0;u=e+320|0;v=e+360|0;w=s;x=c[7094533]|0;if((c[x+(a*28|0)+4>>2]&1|0)==0){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}if((c[x+(d*28|0)+4>>2]&1|0)==0){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}if((c[x+(a*28|0)+8>>2]&2|0)==0){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}if((c[x+(d*28|0)+8>>2]&2|0)==0){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}x=c[7094531]|0;E=+g[7094617];F=+g[7094603];G=F*.5;H=E/F;F=+g[7094606]*(+T(+g[7094636]/G)+H)*2.0;I=H;H=I*G*I;J=0;while(1){if(+g[x+(a*48|0)+12+(J<<2)>>2]>F+ +g[x+(d*48|0)+24+(J<<2)>>2]){K=80;break}L=J+1|0;if(+g[x+(a*48|0)+24+(J<<2)>>2]<+g[x+(d*48|0)+12+(J<<2)>>2]-F){K=80;break}if((L|0)<2){J=L}else{K=9;break}}if((K|0)==9){if(+g[x+(d*48|0)+20>>2]>H+ +g[x+(a*48|0)+32>>2]){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}J=x+(a*48|0)+4|0;L=c[J>>2]|0;if((L|0)>0){M=x+(a*48|0)+8|0;N=x+(d*48|0)+4|0;O=x+(d*48|0)+8|0;x=j|0;P=l|0;Q=k|0;R=m|0;H=999999.0;U=0;V=L;while(1){L=c[7094529]|0;W=c[L+((c[M>>2]|0)+U<<2)>>2]|0;X=(W|0)>-1?W:-W|0;W=c[7094527]|0;do{if((c[W+(X*24|0)+4>>2]&4|0)==0){Y=H;Z=V}else{_=c[N>>2]|0;if((_|0)<=0){Y=H;Z=V;break}$=W+(X*24|0)+8|0;aa=W+(X*24|0)+12|0;ba=W+(X*24|0)|0;I=H;ca=0;da=_;_=L;ea=W;while(1){fa=c[_+((c[O>>2]|0)+ca<<2)>>2]|0;ga=(fa|0)>-1?fa:-fa|0;do{if((c[ea+(ga*24|0)+4>>2]&4|0)==0){ha=I;ia=da}else{fa=c[$>>2]|0;if((fa|0)<=0){ha=I;ia=da;break}ja=ea+(ga*24|0)+8|0;ka=ea+(ga*24|0)+12|0;la=ea+(ga*24|0)|0;G=I;ma=0;na=c[ja>>2]|0;oa=fa;while(1){fa=c[7094525]|0;pa=c[fa+((c[aa>>2]|0)+ma<<2)>>2]|0;qa=(pa|0)>-1?pa:-pa|0;pa=c[7094523]|0;if((na|0)>0){ra=pa+(qa<<3)|0;sa=pa+(qa<<3)+4|0;ta=G;qa=0;ua=fa;fa=pa;while(1){pa=c[ua+((c[ka>>2]|0)+qa<<2)>>2]|0;va=(pa|0)>-1?pa:-pa|0;pa=c[7094519]|0;wa=c[7094521]|0;xa=+XE(pa+((c[ra>>2]|0)*12|0)|0,pa+((c[sa>>2]|0)*12|0)|0,pa+((c[fa+(va<<3)>>2]|0)*12|0)|0,pa+((c[fa+(va<<3)+4>>2]|0)*12|0)|0,wa+((c[ba>>2]|0)*20|0)|0,wa+((c[la>>2]|0)*20|0)|0,x,P,Q,R,ta);wa=qa+1|0;ya=c[ja>>2]|0;if((wa|0)>=(ya|0)){break}ta=xa;qa=wa;ua=c[7094525]|0;fa=c[7094523]|0}za=xa;Aa=ya;Ba=c[$>>2]|0}else{za=G;Aa=na;Ba=oa}fa=ma+1|0;if((fa|0)<(Ba|0)){G=za;ma=fa;na=Aa;oa=Ba}else{break}}ha=za;ia=c[N>>2]|0}}while(0);ga=ca+1|0;if((ga|0)>=(ia|0)){break}I=ha;ca=ga;da=ia;_=c[7094529]|0;ea=c[7094527]|0}Y=ha;Z=c[J>>2]|0}}while(0);W=U+1|0;if((W|0)<(Z|0)){H=Y;U=W;V=Z}else{break}}Z=j+4|0;V=j+8|0;U=l+4|0;J=l+8|0;Ca=Y;Da=+g[x>>2];Ea=+g[Q>>2];Fa=+g[Z>>2];Ga=+g[k+4>>2];Ha=+g[V>>2];Ia=+g[k+8>>2];Ja=+g[P>>2];Ka=+g[R>>2];La=+g[U>>2];Ma=+g[m+4>>2];Na=+g[J>>2];Oa=+g[m+8>>2];Pa=x;Qa=Z;Ra=V;Sa=P;Ta=U;Ua=J}else{Ca=999999.0;Da=0.0;Ea=0.0;Fa=0.0;Ga=0.0;Ha=0.0;Ia=0.0;Ja=0.0;Ka=0.0;La=0.0;Ma=0.0;Na=0.0;Oa=0.0;Pa=j|0;Qa=j+4|0;Ra=j+8|0;Sa=l|0;Ta=l+4|0;Ua=l+8|0}Y=(Da+Ea)*.5;g[Pa>>2]=Y;Ea=(Fa+Ga)*.5;g[Qa>>2]=Ea;Ga=(Ha+Ia)*.5;g[Ra>>2]=Ga;Ia=(Ja+Ka)*.5;g[Sa>>2]=Ia;Ka=(La+Ma)*.5;g[Ta>>2]=Ka;Ma=(Na+Oa)*.5;g[Ua>>2]=Ma;if(!(Ca>4.0&Ca48.0){K=35}else{if(!(+S(+(Ga-Ma))<8.0)){K=35;break}g[h>>2]=400.0;Va=7;Wa=Ia;Xa=Y;Ya=Ka;Za=Ea}}while(0);do{if((K|0)==35){if((DE(0.0,Pa,Sa,h)|0)!=0){g[h>>2]=+g[h>>2]*1.2000000476837158;Va=7;Wa=+g[Sa>>2];Xa=+g[Pa>>2];Ya=+g[Ta>>2];Za=+g[Qa>>2];break}if((DE(E,Pa,Sa,h)|0)==0){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}g[h>>2]=+g[h>>2]*1.0499999523162842;Ea=+g[Sa>>2];Ka=+g[Pa>>2];Y=Ea-Ka;g[p>>2]=Y;Ia=+g[Ta>>2];Ma=+g[Qa>>2];Ga=Ia-Ma;g[p+4>>2]=Ga;g[p+8>>2]=0.0;if(!(+T(Y*Y+Ga*Ga+0.0)<10.0)){Va=5;Wa=Ea;Xa=Ka;Ya=Ia;Za=Ma;break}y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}}while(0);l=p|0;g[l>>2]=Wa-Xa;j=p+4|0;g[j>>2]=Ya-Za;J=p+8|0;g[J>>2]=+g[Ua>>2]- +g[Ra>>2];+wB(l);Za=+g[Pa>>2]+ +g[l>>2];p=n|0;g[p>>2]=Za;Ya=+g[Qa>>2]+ +g[j>>2];U=n+4|0;g[U>>2]=Ya;Xa=+g[Ra>>2]+ +g[J>>2];P=n+8|0;g[P>>2]=Xa;n=o|0;g[n>>2]=Za;V=o+4|0;g[V>>2]=Ya;Z=o+8|0;g[Z>>2]=Xa+-100.0;$F(u,p,n,2,-1);m$(w|0,u|0,36)|0;u=s|0;if((c[u>>2]|0)!=0){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}o=s+4|0;do{if(+g[o>>2]<1.0){x=c[s+32>>2]|0;m=c[7094521]|0;if(+g[m+(x*20|0)+8>>2]+(+g[m+(x*20|0)>>2]*0.0+ +g[m+(x*20|0)+4>>2]*0.0)<.7){break}if(((yD(s+8|0)|0)&24|0)!=0){break}if(+g[P>>2]- +g[s+16>>2]>+g[7094616]){break}y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}}while(0);Xa=+g[Sa>>2]+ +g[l>>2]*-1.0;g[p>>2]=Xa;Ya=+g[Ta>>2]+ +g[j>>2]*-1.0;g[U>>2]=Ya;Za=+g[Ua>>2]+ +g[J>>2]*-1.0;g[P>>2]=Za;g[n>>2]=Xa;g[V>>2]=Ya;g[Z>>2]=Za+-100.0;$F(v,p,n,2,-1);m$(w|0,v|0,36)|0;if((c[u>>2]|0)!=0){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}do{if(+g[o>>2]<1.0){u=c[s+32>>2]|0;v=c[7094521]|0;if(+g[v+(u*20|0)+8>>2]+(+g[v+(u*20|0)>>2]*0.0+ +g[v+(u*20|0)+4>>2]*0.0)<.7){break}if(((yD(s+8|0)|0)&24|0)!=0){break}if(+g[P>>2]- +g[s+16>>2]>+g[7094616]){break}y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}}while(0);g[r+4>>2]=0.0;s=r|0;g[s>>2]=0.0;o=(Va|0)==5;g[r+8>>2]=o?+g[7094617]:0.0;g[l>>2]=+g[Sa>>2]- +g[Pa>>2];g[j>>2]=+g[Ta>>2]- +g[Qa>>2];g[J>>2]=0.0;+wB(l);Za=+g[j>>2];Ya=+g[J>>2]*0.0;Xa=Za-Ya;Wa=+g[l>>2];E=Ya-Wa;Ya=Wa*0.0-Za*0.0;r=c[7094533]|0;if((c[r+(a*28|0)>>2]&8|0)==0){_a=c[r+(d*28|0)>>2]<<9&4096^4157}else{_a=61}r=q|0;u=q+4|0;v=q+8|0;q=t+80|0;w=t+68|0;x=t|0;m=t+4|0;R=t+8|0;k=f|0;Q=0;a:while(1){do{if((Q|0)==1){Za=Xa+ +g[n>>2];g[n>>2]=Za;Wa=E+ +g[V>>2];g[V>>2]=Wa;g[Z>>2]=Ya+ +g[Z>>2];$a=Za;ab=Wa}else{Wa=+g[Sa>>2];if((Q|0)==2){Za=Wa-Xa;g[n>>2]=Za;Ma=+g[Ta>>2]-E;g[V>>2]=Ma;g[Z>>2]=+g[Ua>>2]-Ya;$a=Za;ab=Ma;break}else{g[n>>2]=Wa;Ma=+g[Ta>>2];g[V>>2]=Ma;g[Z>>2]=+g[Ua>>2];$a=Wa;ab=Ma;break}}}while(0);g[l>>2]=$a- +g[Pa>>2];g[j>>2]=ab- +g[Qa>>2];g[J>>2]=0.0;+wB(l);Ma=+g[h>>2];g[r>>2]=+g[l>>2]*Ma;g[u>>2]=+g[j>>2]*Ma;g[v>>2]=+g[J>>2]*Ma;xE(t,-1,Pa,2,1,r,s,3,30,.10000000149011612,_a,0,0)|0;if((c[q>>2]|0)>29){K=80;break}if((c[w>>2]&4120|0)!=0){K=80;break}g[p>>2]=+g[x>>2]+ +g[l>>2]*-64.0;g[U>>2]=+g[m>>2]+ +g[j>>2]*-64.0;g[P>>2]=+g[R>>2]+ +g[J>>2]*-64.0+1.0;ia=aG(x,p,k,0,10)|0;if((ia|0)>0){N=0;while(1){Ba=N+1|0;if((c[f+(N<<2)>>2]|0)==(d|0)){K=63;break a}if((Ba|0)<(ia|0)){N=Ba}else{break}}}N=Q+1|0;if((N|0)<3){Q=N}else{K=80;break}}if((K|0)==63){if((Q|0)>2){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}Q=c[4939838]|0;if((Q|0)==0){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}f=c[Q+44>>2]|0;do{if((f|0)==0){hE(169608,(k=i,i=i+1|0,i=i+7&-8,c[k>>2]=0,k)|0);i=k;k=c[4939838]|0;c[4939838]=c[k+44>>2];c[4938816]=(c[4938816]|0)+1;if((k|0)!=0){bb=k;break}y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}else{c[4939838]=f;c[4938816]=(c[4938816]|0)+1;bb=Q}}while(0);c[bb>>2]=d;c[bb+4>>2]=0;c[bb+8>>2]=0;g[bb+12>>2]=+g[Pa>>2];g[bb+16>>2]=+g[Qa>>2];g[bb+20>>2]=+g[Ra>>2];g[bb+24>>2]=+g[Sa>>2];g[bb+28>>2]=+g[Ta>>2];g[bb+32>>2]=+g[Ua>>2];c[bb+36>>2]=Va;ab=+g[Sa>>2];$a=+g[Pa>>2];Ya=ab-$a;g[l>>2]=Ya;E=+g[Ta>>2];Xa=+g[Qa>>2];Ma=E-Xa;g[j>>2]=Ma;Wa=+g[Ua>>2];Za=+g[Ra>>2];Ia=Wa-Za;g[J>>2]=0.0;do{if((Va|0)==7){if(!(Ia>+T(Ya*Ya+Ma*Ma+0.0))){K=71;break}J=~~(+g[7094625]+Ia*50.0/+g[7094603]);b[bb+40>>1]=J;cb=J}else{K=71}}while(0);if((K|0)==71){Ia=$a-ab;ab=Xa-E;E=Za-Wa;Xa=+T(Ia*Ia+ab*ab+E*E)*240.0;Va=~~(+g[7094626]+Xa/+g[7094607]);b[bb+40>>1]=Va;cb=Va}do{if((c[(c[7094533]|0)+(d*28|0)>>2]&128|0)==0){Xa=+g[7094603];E=Xa*+T(+S(+(Za-Wa))*2.0/Xa);Xa=E*E*1.0e-4;if(Xa>+g[7094618]){b[bb+40>>1]=~~(+g[7094633]+ +((cb&65535)>>>0));break}if(!(Xa>+g[7094619])){break}b[bb+40>>1]=~~(+g[7094634]+ +((cb&65535)>>>0))}}while(0);c[bb+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=bb;if(o){c[4917232]=(c[4917232]|0)+1;y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}else{c[4917216]=(c[4917216]|0)+1;y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}}else if((K|0)==80){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}}else if((K|0)==80){y=84;z=0;A=36;B=0;C=40;D=0;i=e;return 0}return 0}function ZE(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.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,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0.0,ha=0.0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0.0,ra=0.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.0,Ha=0.0,Ia=0,Ja=0,Ka=0,La=0.0,Ma=0.0,Na=0.0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0,Xa=0,Ya=0.0,Za=0.0,_a=0.0,$a=0,ab=0,bb=0,cb=0;e=i;i=i+128|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+88|0;m=k;n=c[7094533]|0;if((c[n+(a*28|0)+4>>2]&2|0)==0){o=0;p=36;q=0;i=e;return o|0}if((c[n+(d*28|0)+4>>2]&2|0)==0){o=0;p=36;q=0;i=e;return o|0}r=+g[7094603];s=+g[7094617]/r;t=s*r*.5*s;n=c[7094531]|0;u=c[n+(a*48|0)+4>>2]|0;if((u|0)<=0){o=0;p=36;q=0;i=e;return o|0}v=c[n+(a*48|0)+8>>2]|0;w=c[7094529]|0;x=c[7094527]|0;y=n+(d*48|0)+4|0;z=n+(d*48|0)+8|0;n=c[7094525]|0;A=0;B=0;s=-9999.0;r=-9999.0;C=0;D=0;E=0;F=0;while(1){G=c[w+(v+D<<2)>>2]|0;H=(G|0)>-1?G:-G|0;I=x+(H*24|0)|0;do{if((c[x+(H*24|0)+4>>2]&2|0)==0){J=F;K=E;L=C;M=r;N=s;O=B;P=A}else{Q=c[y>>2]|0;if((Q|0)<=0){J=F;K=E;L=C;M=r;N=s;O=B;P=A;break}R=c[z>>2]|0;S=x+(H*24|0)+8|0;T=x+(H*24|0)+12|0;U=A;V=B;W=s;X=r;Y=C;Z=0;_=E;$=F;while(1){aa=c[w+(R+Z<<2)>>2]|0;ba=(aa|0)>-1?aa:-aa|0;ca=x+(ba*24|0)|0;a:do{if((c[x+(ba*24|0)+4>>2]&2|0)==0){da=$;ea=_;fa=Y;ga=X;ha=W;ia=V;ja=U}else{ka=c[S>>2]|0;if((ka|0)<=0){da=$;ea=_;fa=Y;ga=X;ha=W;ia=V;ja=U;break}la=c[T>>2]|0;ma=c[x+(ba*24|0)+8>>2]|0;na=x+(ba*24|0)+12|0;if((ma|0)>0){oa=U;pa=V;qa=W;ra=X;sa=Y;ta=0;ua=_;va=$}else{wa=0;xa=ma;while(1){ya=wa+1|0;if((xa|0)==0&(ya|0)<(ka|0)){wa=ya;xa=0}else{da=$;ea=_;fa=Y;ga=X;ha=W;ia=V;ja=U;break a}}}while(1){xa=c[n+(la+ta<<2)>>2]|0;wa=c[na>>2]|0;ya=(xa|0)>-1?xa:-xa|0;za=0;while(1){Aa=c[n+(wa+za<<2)>>2]|0;Ba=za+1|0;if((ya|0)==(((Aa|0)>-1?Aa:-Aa|0)|0)){Ca=13;break}if((Ba|0)<(ma|0)){za=Ba}else{Da=va;Ea=ua;Fa=sa;Ga=ra;Ha=qa;Ia=pa;Ja=oa;Ka=Ba;break}}if((Ca|0)==13){Ca=0;La=+JE(I);Ma=+JE(ca);ya=La>qa&Ma>ra;Da=ya?ca:va;Ea=ya?I:ua;Fa=ya?xa:sa;Ga=ya?Ma:ra;Ha=ya?La:qa;Ia=ya?G:pa;Ja=ya?aa:oa;Ka=za}ya=ta+1|0;if((Ka|0)==(ma|0)&(ya|0)<(ka|0)){oa=Ja;pa=Ia;qa=Ha;ra=Ga;sa=Fa;ta=ya;ua=Ea;va=Da}else{da=Da;ea=Ea;fa=Fa;ga=Ga;ha=Ha;ia=Ia;ja=Ja;break}}}}while(0);aa=Z+1|0;if((aa|0)<(Q|0)){U=ja;V=ia;W=ha;X=ga;Y=fa;Z=aa;_=ea;$=da}else{J=da;K=ea;L=fa;M=ga;N=ha;O=ia;P=ja;break}}}}while(0);G=D+1|0;if((G|0)<(u|0)){A=P;B=O;s=N;r=M;C=L;D=G;E=K;F=J}else{break}}if((K|0)==0|(J|0)==0){o=0;p=36;q=0;i=e;return o|0}F=(L|0)>-1?L:-L|0;E=c[7094523]|0;D=L>>>31;L=c[E+(F<<3)+(D<<2)>>2]|0;C=c[7094519]|0;M=+g[C+(L*12|0)>>2];r=+g[C+(L*12|0)+4>>2];N=+g[C+(L*12|0)+8>>2];L=c[E+(F<<3)+((D^1)<<2)>>2]|0;s=+g[C+(L*12|0)>>2];ha=+g[C+(L*12|0)+4>>2];ga=+g[C+(L*12|0)+8>>2];Ha=(M+s)*.5;Ga=(r+ha)*.5;ra=(N+ga)*.5;L=K|0;C=c[L>>2]^O>>>31;D=c[7094521]|0;E=c[J>>2]^P>>>31;qa=s-M;M=ha-r;r=ga-N;B=D+(C*20|0)|0;A=j|0;u=D+(C*20|0)+4|0;ja=D+(C*20|0)+8|0;g[A>>2]=r*+g[u>>2]-M*+g[ja>>2];C=j+4|0;g[C>>2]=qa*+g[ja>>2]-r*+g[B>>2];ia=j+8|0;g[ia>>2]=M*+g[B>>2]-qa*+g[u>>2];+wB(A);N=+g[A>>2];ga=Ha+N*-32.0;ha=+g[C>>2];s=Ga+ha*-32.0;X=+g[ia>>2];W=ra+X*-32.0;La=Ha+N*32.0;N=Ga+ha*32.0;ha=ra+X*32.0;X=+g[B>>2];ra=+g[u>>2];Ga=+g[ja>>2];ia=~~(Ga+(X*0.0+ra*0.0));C=(((ia|0)>-1?ia:-ia|0)|0)<1;Ha=+g[D+(E*20|0)>>2];Ma=+g[D+(E*20|0)+4>>2];Na=+g[D+(E*20|0)+8>>2];E=~~(Na+(Ha*0.0+Ma*0.0));D=(((E|0)>-1?E:-E|0)|0)<1;if(!(C|D)){o=0;p=36;q=0;i=e;return o|0}do{if(C&D){if(!(X*Ha+ra*Ma+Ga*Na>.7)){break}E=~~(r+(qa*0.0+M*0.0));if((((E|0)>-1?E:-E|0)|0)>=1){break}E=c[4939838]|0;if((E|0)==0){o=0;p=36;q=0;i=e;return o|0}ia=c[E+44>>2]|0;do{if((ia|0)==0){hE(169608,(Oa=i,i=i+1|0,i=i+7&-8,c[Oa>>2]=0,Oa)|0);i=Oa;A=c[4939838]|0;c[4939838]=c[A+44>>2];c[4938816]=(c[4938816]|0)+1;if((A|0)==0){o=0}else{Pa=A;break}p=36;q=0;i=e;return o|0}else{c[4939838]=ia;c[4938816]=(c[4938816]|0)+1;Pa=E}}while(0);c[Pa>>2]=d;c[Pa+4>>2]=O;c[Pa+8>>2]=F;g[Pa+12>>2]=ga;g[Pa+16>>2]=s;g[Pa+20>>2]=W;g[Pa+24>>2]=La+ +g[B>>2]*-3.0;g[Pa+28>>2]=N+ +g[u>>2]*-3.0;g[Pa+32>>2]=ha+ +g[ja>>2]*-3.0;c[Pa+36>>2]=6;b[Pa+40>>1]=10;c[Pa+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=Pa;c[4917228]=(c[4917228]|0)+1;E=c[4939838]|0;if((E|0)==0){o=0;p=36;q=0;i=e;return o|0}ia=c[E+44>>2]|0;do{if((ia|0)==0){hE(169608,(Oa=i,i=i+1|0,i=i+7&-8,c[Oa>>2]=0,Oa)|0);i=Oa;A=c[4939838]|0;c[4939838]=c[A+44>>2];c[4938816]=(c[4938816]|0)+1;if((A|0)==0){o=0}else{Qa=A;break}p=36;q=0;i=e;return o|0}else{c[4939838]=ia;c[4938816]=(c[4938816]|0)+1;Qa=E}}while(0);c[Qa>>2]=a;c[Qa+4>>2]=P;c[Qa+8>>2]=F;g[Qa+12>>2]=La;g[Qa+16>>2]=N;g[Qa+20>>2]=ha;g[Qa+24>>2]=ga+ +g[B>>2]*-3.0;g[Qa+28>>2]=s+ +g[u>>2]*-3.0;g[Qa+32>>2]=W+ +g[ja>>2]*-3.0;c[Qa+36>>2]=6;b[Qa+40>>1]=10;c[Qa+44>>2]=c[(c[7094372]|0)+(d<<2)>>2];c[(c[7094372]|0)+(d<<2)>>2]=Qa;c[4917228]=(c[4917228]|0)+1;o=1;p=36;q=0;i=e;return o|0}}while(0);if(!C){o=0;p=36;q=0;i=e;return o|0}if((c[J+4>>2]&4|0)!=0){J=c[4939838]|0;if((J|0)==0){o=0;p=36;q=0;i=e;return o|0}C=c[J+44>>2]|0;do{if((C|0)==0){hE(169608,(Oa=i,i=i+1|0,i=i+7&-8,c[Oa>>2]=0,Oa)|0);i=Oa;Qa=c[4939838]|0;c[4939838]=c[Qa+44>>2];c[4938816]=(c[4938816]|0)+1;if((Qa|0)==0){o=0}else{Ra=Qa;break}p=36;q=0;i=e;return o|0}else{c[4939838]=C;c[4938816]=(c[4938816]|0)+1;Ra=J}}while(0);c[Ra>>2]=d;c[Ra+4>>2]=O;c[Ra+8>>2]=F;g[Ra+12>>2]=ga;g[Ra+16>>2]=s;g[Ra+20>>2]=W;J=Ra+24|0;g[J>>2]=La;C=Ra+28|0;g[C>>2]=N;Qa=Ra+32|0;M=ha+16.0;g[Qa>>2]=M;g[J>>2]=La+ +g[B>>2]*-15.0;g[C>>2]=N+ +g[u>>2]*-15.0;g[Qa>>2]=M+ +g[ja>>2]*-15.0;c[Ra+36>>2]=6;b[Ra+40>>1]=10;c[Ra+44>>2]=c[(c[7094372]|0)+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=Ra;c[4917228]=(c[4917228]|0)+1;Ra=c[4939838]|0;if((Ra|0)==0){o=0;p=36;q=0;i=e;return o|0}ja=c[Ra+44>>2]|0;do{if((ja|0)==0){hE(169608,(Oa=i,i=i+1|0,i=i+7&-8,c[Oa>>2]=0,Oa)|0);i=Oa;Qa=c[4939838]|0;c[4939838]=c[Qa+44>>2];c[4938816]=(c[4938816]|0)+1;if((Qa|0)==0){o=0}else{Sa=Qa;break}p=36;q=0;i=e;return o|0}else{c[4939838]=ja;c[4938816]=(c[4938816]|0)+1;Sa=Ra}}while(0);c[Sa>>2]=a;c[Sa+4>>2]=P;c[Sa+8>>2]=F;g[Sa+12>>2]=La;g[Sa+16>>2]=N;g[Sa+20>>2]=ha;g[Sa+24>>2]=ga;g[Sa+28>>2]=s;g[Sa+32>>2]=W;c[Sa+36>>2]=7;b[Sa+40>>1]=10;c[Sa+44>>2]=c[(c[7094372]|0)+(d<<2)>>2];c[(c[7094372]|0)+(d<<2)>>2]=Sa;c[4917216]=(c[4917216]|0)+1;o=1;p=36;q=0;i=e;return o|0}Sa=c[K+8>>2]|0;if((Sa|0)>0){d=c[K+12>>2]|0;K=c[7094525]|0;F=c[7094523]|0;P=c[7094519]|0;Ra=0;W=99999.0;s=0.0;ga=0.0;ja=0;while(1){Qa=c[K+(d+ja<<2)>>2]|0;u=(Qa|0)>-1?Qa:-Qa|0;Qa=c[F+(u<<3)>>2]|0;C=c[F+(u<<3)+4>>2]|0;ha=(+g[P+(Qa*12|0)+8>>2]+ +g[P+(C*12|0)+8>>2])*.5;if(ha>2]+ +g[P+(Qa*12|0)>>2])*.5;Ua=(+g[P+(C*12|0)+4>>2]+ +g[P+(Qa*12|0)+4>>2])*.5;Va=ha;Wa=u}else{Ta=ga;Ua=s;Va=W;Wa=Ra}u=ja+1|0;if((u|0)<(Sa|0)){Ra=Wa;W=Va;s=Ua;ga=Ta;ja=u}else{Xa=Wa;Ya=Va;Za=Ua;_a=Ta;break}}}else{Xa=0;Ya=99999.0;Za=0.0;_a=0.0}Wa=c[L>>2]|0;L=c[7094521]|0;ja=L+(Wa*20|0)|0;Ta=_a+ +g[ja>>2]*5.0;Ra=f|0;g[Ra>>2]=Ta;Sa=L+(Wa*20|0)+4|0;Ua=Za+ +g[Sa>>2]*5.0;g[f+4>>2]=Ua;P=L+(Wa*20|0)+8|0;Va=Ya+ +g[P>>2]*5.0;Wa=f+8|0;f=h|0;g[f>>2]=Ta;g[h+4>>2]=Ua;g[Wa>>2]=Va+5.0;g[h+8>>2]=Va+-100.0;$F(l,Ra,f,2,-1);m$(m|0,l|0,36)|0;l=k+16|0;g[l>>2]=+g[l>>2]+1.0;m=k+8|0;f=WF(m)|0;Ra=c[7094531]|0;h=c[Ra+(f*48|0)+4>>2]|0;b:do{if((h|0)>0){L=c[Ra+(f*48|0)+8>>2]|0;F=c[7094529]|0;d=c[7094527]|0;K=c[7094521]|0;u=0;while(1){Qa=c[F+(L+u<<2)>>2]|0;C=(Qa|0)>-1?Qa:-Qa|0;if((c[d+(C*24|0)+4>>2]&2|0)!=0){Qa=c[d+(C*24|0)>>2]|0;C=~~(+g[K+(Qa*20|0)+8>>2]+(+g[K+(Qa*20|0)>>2]*0.0+ +g[K+(Qa*20|0)+4>>2]*0.0));if((((C|0)>-1?C:-C|0)|0)<1){$a=u;break b}}C=u+1|0;if((C|0)<(h|0)){u=C}else{$a=C;break}}}else{$a=0}}while(0);if(($a|0)<(h|0)|(f|0)==(a|0)){o=0;p=36;q=0;i=e;return o|0}h=c[7094372]|0;$a=c[h+(a<<2)>>2]|0;c:do{if(($a|0)!=0){Ra=$a;while(1){if((c[Ra>>2]|0)==(f|0)){o=0;break}Ra=c[Ra+44>>2]|0;if((Ra|0)==0){break c}}p=36;q=0;i=e;return o|0}}while(0);$a=c[h+(f<<2)>>2]|0;d:do{if(($a|0)!=0){Ra=$a;while(1){if((c[Ra>>2]|0)==(a|0)){o=0;break}Ra=c[Ra+44>>2]|0;if((Ra|0)==0){break d}}p=36;q=0;i=e;return o|0}}while(0);if(!(+g[Wa>>2]- +g[l>>2]>2]|0;do{if(($a|0)==0){hE(169608,(Oa=i,i=i+1|0,i=i+7&-8,c[Oa>>2]=0,Oa)|0);i=Oa;Ra=c[4939838]|0;c[4939838]=c[Ra+44>>2];c[4938816]=(c[4938816]|0)+1;if((Ra|0)==0){o=0;p=36;q=0;i=e;return o|0}else{ab=Ra;bb=c[7094372]|0;break}}else{c[4939838]=$a;c[4938816]=(c[4938816]|0)+1;ab=Wa;bb=h}}while(0);c[ab>>2]=f;c[ab+4>>2]=O;c[ab+8>>2]=Xa;g[ab+12>>2]=_a;g[ab+16>>2]=Za;g[ab+20>>2]=Ya;g[ab+24>>2]=+g[m>>2];h=k+12|0;g[ab+28>>2]=+g[h>>2];g[ab+32>>2]=+g[l>>2];c[ab+36>>2]=6;b[ab+40>>1]=10;c[ab+44>>2]=c[bb+(a<<2)>>2];c[(c[7094372]|0)+(a<<2)>>2]=ab;c[4917228]=(c[4917228]|0)+1;ab=c[4939838]|0;if((ab|0)==0){o=0;p=36;q=0;i=e;return o|0}bb=c[ab+44>>2]|0;do{if((bb|0)==0){hE(169608,(Oa=i,i=i+1|0,i=i+7&-8,c[Oa>>2]=0,Oa)|0);i=Oa;k=c[4939838]|0;c[4939838]=c[k+44>>2];c[4938816]=(c[4938816]|0)+1;if((k|0)==0){o=0}else{cb=k;break}p=36;q=0;i=e;return o|0}else{c[4939838]=bb;c[4938816]=(c[4938816]|0)+1;cb=ab}}while(0);c[cb>>2]=a;c[cb+4>>2]=O;c[cb+8>>2]=Xa;g[cb+12>>2]=+g[m>>2];g[cb+16>>2]=+g[h>>2];g[cb+20>>2]=+g[l>>2];g[cb+24>>2]=_a+ +g[ja>>2]*-5.0;g[cb+28>>2]=Za+ +g[Sa>>2]*-5.0;g[cb+32>>2]=Ya+ +g[P>>2]*-5.0+10.0;c[cb+36>>2]=5;b[cb+40>>1]=10;c[cb+44>>2]=c[(c[7094372]|0)+(f<<2)>>2];c[(c[7094372]|0)+(f<<2)>>2]=cb;c[4917232]=(c[4917232]|0)+1;o=1;p=36;q=0;i=e;return o|0}function _E(){var a=0,d=0,e=0,f=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,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,_=0,$=0,aa=0,ba=0,ca=0,da=0.0,ea=0.0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0;a=i;i=i+784|0;d=a|0;e=a+392|0;f=a+520|0;j=a+528|0;k=a+544|0;l=a+560|0;m=a+576|0;n=a+592|0;o=a+608|0;p=a+624|0;q=a+640|0;r=a+656|0;s=a+744|0;t=a+8|0;u=a+136|0;v=a+264|0;w=e|0;x=DD(0)|0;if((x|0)==0){y=84;z=0;A=128;B=0;C=128;D=0;E=128;F=0;G=128;H=0;i=a;return}I=o+8|0;J=o+4|0;K=o|0;o=e+1|0;e=l|0;L=m|0;M=j|0;N=j+4|0;O=j+8|0;j=k|0;P=n|0;Q=k+4|0;R=n+4|0;S=k+8|0;k=n+8|0;n=s|0;T=p|0;U=p+4|0;V=p+8|0;p=q+8|0;W=q+4|0;X=q|0;q=r|0;Y=r+68|0;Z=r+4|0;_=r+8|0;$=l+4|0;aa=l+8|0;l=m+4|0;ba=m+8|0;m=x;do{a:do{if((ED(m,184736,v,128)|0)!=0){do{if((k$(v,160312)|0)==0){ED(m,173704,w,128)|0;Tk[c[7092490]&255](1,157632,(ca=i,i=i+8|0,c[ca>>2]=w,ca)|0);i=ca;g[I>>2]=0.0;g[J>>2]=0.0;g[K>>2]=0.0;AD(oj(o|0)|0,K,e,L,M);if((ED(m,129632,t,128)|0)==0){da=+g[N>>2];ea=+g[O>>2];Tk[c[7092490]&255](3,155080,(ca=i,i=i+24|0,h[ca>>3]=+g[M>>2],h[ca+8>>3]=da,h[ca+16>>3]=ea,ca)|0);i=ca;break a}x=DD(0)|0;if((x|0)==0){break a}else{fa=x}b:while(1){do{if((ED(fa,184736,v,128)|0)!=0){if((k$(v,153168)|0)!=0){break}if((ED(fa,119088,u,128)|0)==0){break}if((k$(u,t)|0)==0){break b}}}while(0);x=DD(fa)|0;if((x|0)==0){break a}else{fa=x}}if((ED(fa,129632,t,128)|0)!=0){break}Tk[c[7092490]&255](3,151144,(ca=i,i=i+1|0,i=i+7&-8,c[ca>>2]=0,ca)|0);i=ca;break a}else{if((k$(v,148896)|0)!=0){break a}ED(m,173704,w,128)|0;Tk[c[7092490]&255](1,146312,(ca=i,i=i+8|0,c[ca>>2]=w,ca)|0);i=ca;g[I>>2]=0.0;g[J>>2]=0.0;g[K>>2]=0.0;AD(oj(o|0)|0,K,e,L,M);if((ED(m,129632,t,128)|0)!=0){break}ea=+g[N>>2];da=+g[O>>2];Tk[c[7092490]&255](3,143936,(ca=i,i=i+24|0,h[ca>>3]=+g[M>>2],h[ca+8>>3]=ea,h[ca+16>>3]=da,ca)|0);i=ca;break a}}while(0);x=DD(0)|0;c:do{if((x|0)!=0){ga=x;while(1){if((ED(ga,119088,u,128)|0)!=0){if((k$(u,t)|0)==0){break}}ha=DD(ga)|0;if((ha|0)==0){break c}else{ga=ha}}if((FD(ga,99016,j)|0)==0){Tk[c[7092490]&255](3,139024,(ca=i,i=i+8|0,c[ca>>2]=t,ca)|0);i=ca;break a}ha=WF(j)|0;if((c[(c[7094533]|0)+(ha*28|0)>>2]&192|0)==0){g[P>>2]=+g[j>>2];g[R>>2]=+g[Q>>2];g[k>>2]=+g[S>>2]+-64.0;$F(s,j,P,4,-1);if((c[n>>2]|0)!=0){Tk[c[7092490]&255](3,137112,(ca=i,i=i+8|0,c[ca>>2]=t,ca)|0);i=ca;break a}GD(ga,135720,f)|0;da=+g[f>>2];if(da!=0.0){g[K>>2]=0.0;g[J>>2]=da;g[I>>2]=0.0;BB(K,T,0,0);g[T>>2]=+g[T>>2]*400.0;g[U>>2]=+g[U>>2]*400.0;g[V>>2]=+g[V>>2]*400.0}else{g[V>>2]=0.0;g[U>>2]=0.0;g[T>>2]=0.0}g[p>>2]=0.0;g[W>>2]=0.0;g[X>>2]=0.0;xE(r,-1,j,2,0,T,X,0,30,.10000000149011612,445,0,0)|0;ia=WF(q)|0;if((c[Y>>2]&24|0)!=0){Tk[c[7092490]&255](2,134224,(ca=i,i=i+8|0,c[ca>>2]=t,ca)|0);i=ca}g[j>>2]=+g[q>>2];g[Q>>2]=+g[Z>>2];g[S>>2]=+g[_>>2];ja=ia}else{ja=ha}da=+g[M>>2];ea=da+ +g[e>>2];g[e>>2]=ea;ka=+g[N>>2];la=ka+ +g[$>>2];g[$>>2]=la;ma=+g[O>>2];na=ma+ +g[aa>>2];g[aa>>2]=na;oa=da+ +g[L>>2];g[L>>2]=oa;da=ka+ +g[l>>2];g[l>>2]=da;ka=ma+ +g[ba>>2];g[ba>>2]=ka;ma=(ea+oa)*.5;oa=(la+da)*.5;da=(ka+na)*.5;ha=eG(e,L,-1,4)|0;d:do{if((ha|0)==0){Tk[c[7092490]&255](1,132736,(ca=i,i=i+1|0,i=i+7&-8,c[ca>>2]=0,ca)|0);i=ca}else{ia=ha;do{pa=c[ia+4>>2]|0;if((c[(c[7094533]|0)+(pa*28|0)>>2]&64|0)!=0){qa=c[4939838]|0;if((qa|0)==0){break d}ra=c[qa+44>>2]|0;if((ra|0)==0){hE(169608,(ca=i,i=i+1|0,i=i+7&-8,c[ca>>2]=0,ca)|0);i=ca;sa=c[4939838]|0;c[4939838]=c[sa+44>>2];c[4938816]=(c[4938816]|0)+1;if((sa|0)==0){break d}else{ta=sa}}else{c[4939838]=ra;c[4938816]=(c[4938816]|0)+1;ta=qa}c[ta>>2]=ja;c[ta+4>>2]=0;c[ta+8>>2]=0;g[ta+12>>2]=ma;g[ta+16>>2]=oa;g[ta+20>>2]=da;g[ta+24>>2]=+g[j>>2];g[ta+28>>2]=+g[Q>>2];g[ta+32>>2]=+g[S>>2];qa=ta+36|0;c[qa>>2]=10;do{if((HD(m,163064,d)|0)==0){ua=0}else{ra=c[d>>2]|0;if((ra|0)==2){ua=33554432;break}else if((ra|0)==1){ua=16777216;break}else{ua=0;break}}}while(0);c[qa>>2]=c[qa>>2]|ua;b[ta+40>>1]=~~+g[7094621];c[ta+44>>2]=c[(c[7094372]|0)+(pa<<2)>>2];c[(c[7094372]|0)+(pa<<2)>>2]=ta;c[4917220]=(c[4917220]|0)+1}ia=c[ia+16>>2]|0;}while((ia|0)!=0)}}while(0);cG(ha);break a}}while(0);Tk[c[7092490]&255](3,141288,(ca=i,i=i+8|0,c[ca>>2]=t,ca)|0);i=ca}}while(0);m=DD(m)|0;}while((m|0)!=0);y=84;z=0;A=128;B=0;C=128;D=0;E=128;F=0;G=128;H=0;i=a;return}function $E(){var a=0,d=0,e=0,f=0,h=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,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,_=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,Da=0,Ea=0,Fa=0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0.0,Na=0.0,Oa=0.0,Pa=0.0,Qa=0.0,Ra=0.0,Sa=0.0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0.0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0.0,gb=0,hb=0,ib=0,jb=0.0,kb=0;a=i;i=i+600|0;d=a|0;e=a+8|0;f=a+16|0;h=a+24|0;j=a+32|0;k=a+288|0;l=a+304|0;m=a+320|0;n=a+336|0;o=a+352|0;p=a+368|0;q=a+384|0;r=a+400|0;s=a+416|0;t=a+432|0;u=a+464|0;v=a+496|0;w=a+528|0;x=a+560|0;y=j|0;z=a+160|0;n$(n|0,0,12)|0;A=DD(0)|0;if((A|0)==0){B=128;C=0;D=128;E=0;i=a;return}F=j+1|0;j=n|0;n=k|0;G=l|0;H=m|0;I=m+4|0;J=m+8|0;K=k+4|0;L=l+4|0;M=l+8|0;N=t|0;O=t+4|0;P=t+8|0;Q=t+12|0;R=u|0;S=u+4|0;T=u+8|0;U=u+12|0;V=t+16|0;W=t+20|0;X=t+24|0;Y=t+28|0;Z=u+16|0;_=u+20|0;$=u+24|0;aa=u+28|0;ba=o|0;ca=o+4|0;da=o+8|0;o=v|0;ea=v+4|0;fa=v+8|0;ga=v+12|0;ha=w|0;ia=w+4|0;ja=w+8|0;ka=w+12|0;la=v+16|0;ma=v+20|0;na=v+24|0;oa=v+28|0;pa=w+16|0;qa=w+20|0;ra=w+24|0;sa=w+28|0;ta=p|0;ua=p+4|0;va=p+8|0;p=q|0;wa=q+4|0;xa=q+8|0;q=r|0;ya=r+4|0;za=r+8|0;r=x+4|0;Aa=s|0;Ba=s+4|0;Ca=s+8|0;Da=k+8|0;Ea=A;do{do{if((ED(Ea,184736,z,128)|0)!=0){if((k$(z,131768)|0)!=0){break}if((ED(Ea,173704,y,128)|0)==0){Tk[c[7092490]&255](3,130536,(Fa=i,i=i+1|0,i=i+7&-8,c[Fa>>2]=0,Fa)|0);i=Fa;break}A=oj(F|0)|0;if((A|0)<1){Tk[c[7092490]&255](3,129200,(Fa=i,i=i+1|0,i=i+7&-8,c[Fa>>2]=0,Fa)|0);i=Fa;break}AD(A,j,n,G,H);FD(Ea,99016,H)|0;Ga=+g[J>>2];Ha=+g[H>>2];Ia=+g[I>>2];GD(Ea,128168,e)|0;if(!(+g[e>>2]!=0.0)){g[e>>2]=8.0}GD(Ea,126744,f)|0;if(!(+g[f>>2]!=0.0)){g[f>>2]=+g[M>>2]- +g[Da>>2]- +g[e>>2]}GD(Ea,132272,h)|0;if(!(+g[h>>2]!=0.0)){g[h>>2]=200.0}Ja=+g[n>>2];Ka=+g[G>>2];La=+g[K>>2];Ma=+g[L>>2];Na=+g[M>>2];Oa=Na-(Ga-(Ga- +g[f>>2]))+2.0;Ga=Ja+-1.0;g[n>>2]=Ga;Pa=Ka+1.0;g[G>>2]=Pa;Qa=La+-1.0;g[K>>2]=Qa;Ra=Ma+1.0;g[L>>2]=Ra;g[Da>>2]=+g[Da>>2]+-1.0;g[M>>2]=Na+1.0;Sa=Ha+(Ja+Ka)*.5;Ka=Ia+(La+Ma)*.5;Ma=Na+2.0;Na=(Ga+Pa)*.5;La=(Qa+Ra)*.5;g[N>>2]=Ga;g[O>>2]=Na;g[P>>2]=Pa;g[Q>>2]=Na;g[R>>2]=La;g[S>>2]=Ra;g[T>>2]=La;g[U>>2]=Qa;g[V>>2]=Ga;g[W>>2]=Pa;g[X>>2]=Pa;g[Y>>2]=Ga;g[Z>>2]=Ra;g[_>>2]=Ra;g[$>>2]=Qa;g[aa>>2]=Qa;Qa=Oa+16.0;Ra=Ma+16.0;Ga=Ma+32.0;Pa=Ma+24.0;Ma=Oa+24.0;Ta=0;do{a:do{if((Ta|0)<8){g[ba>>2]=+g[H>>2]+ +g[t+(Ta<<2)>>2];g[ca>>2]=+g[I>>2]+ +g[u+(Ta<<2)>>2];g[da>>2]=Qa;Ua=0;Va=WF(ba)|0;while(1){if((Va|0)!=0){if((c[(c[7094533]|0)+(Va*28|0)+4>>2]&5|0)!=0){break}}g[da>>2]=+g[da>>2]+4.0;Wa=WF(ba)|0;Xa=Ua+1|0;if((Xa|0)<16){Ua=Xa;Va=Wa}else{break a}}if((Ua|0)<=15){Ya=Va;Za=24}}else{g[ba>>2]=Sa;g[ca>>2]=Ka;g[da>>2]=Pa;Wa=WF(ba)|0;if((Wa|0)==0){break}g[ba>>2]=Sa;g[ca>>2]=Ka;g[da>>2]=Ma;Ya=Wa;Za=24}}while(0);if((Za|0)==24){Za=0;Wa=0;do{Ia=+g[n>>2]+-4.0;g[n>>2]=Ia;Ja=+g[G>>2]+4.0;g[G>>2]=Ja;Ha=+g[K>>2]+-4.0;g[K>>2]=Ha;_a=+g[L>>2]+4.0;g[L>>2]=_a;g[Da>>2]=+g[Da>>2]+-4.0;g[M>>2]=+g[M>>2]+4.0;g[o>>2]=Ia;g[ea>>2]=Na;g[fa>>2]=Ja;g[ga>>2]=Na;g[ha>>2]=La;g[ia>>2]=_a;g[ja>>2]=La;g[ka>>2]=Ha;g[la>>2]=Ia;g[ma>>2]=Ja;g[na>>2]=Ja;g[oa>>2]=Ia;g[pa>>2]=_a;g[qa>>2]=_a;g[ra>>2]=Ha;g[sa>>2]=Ha;Xa=Wa;$a=1;Ha=Ia;Ia=La;while(1){g[ta>>2]=+g[H>>2]+Ha;g[ua>>2]=+g[I>>2]+Ia;g[va>>2]=Ra;ab=0;bb=WF(ta)|0;b:while(1){do{if((bb|0)!=0){if((c[(c[7094533]|0)+(bb*28|0)+4>>2]&5|0)==0){break}g[p>>2]=Sa;g[wa>>2]=Ka;g[xa>>2]=Ga;g[q>>2]=+g[ta>>2];g[ya>>2]=+g[ua>>2];g[za>>2]=+g[va>>2]+1.0;$F(x,p,q,4,-1);if(!(+g[r>>2]<1.0)){Za=31;break b}}}while(0);g[va>>2]=+g[va>>2]+4.0;cb=WF(ta)|0;db=ab+1|0;if((db|0)<16){ab=db;bb=cb}else{eb=Xa;break}}c:do{if((Za|0)==31){Za=0;if((ab|0)>15|(bb|0)==(Ya|0)){eb=Xa;break}if((c[(c[7094533]|0)+(bb*28|0)+4>>2]&1|0)==0){eb=Xa;break}cb=c[(c[7094372]|0)+(Ya<<2)>>2]|0;if((cb|0)!=0){db=cb;do{if((c[db>>2]|0)==(bb|0)){eb=Xa;break c}db=c[db+44>>2]|0;}while((db|0)!=0)}g[Aa>>2]=+g[ba>>2]-Sa;g[Ba>>2]=+g[ca>>2]-Ka;g[Ca>>2]=+g[da>>2]-Oa;+wB(Aa);_a=+g[ba>>2]+ +g[Aa>>2]*24.0;g[Aa>>2]=_a;g[Ba>>2]=+g[ca>>2]+ +g[Ba>>2]*24.0;g[Ca>>2]=+g[da>>2];db=0;Ja=_a;while(1){fb=+g[m+(db<<2)>>2];if(Ja>2]){break}cb=db+1|0;if(Ja>fb+ +g[l+(db<<2)>>2]){break}if((cb|0)>=3){eb=Xa;break c}db=cb;Ja=+g[s+(cb<<2)>>2]}if((db|0)>2){eb=Xa;break}cb=c[4939838]|0;if((cb|0)==0){eb=Xa;break}gb=c[cb+44>>2]|0;if((gb|0)==0){hE(169608,(Fa=i,i=i+1|0,i=i+7&-8,c[Fa>>2]=0,Fa)|0);i=Fa;hb=c[4939838]|0;c[4939838]=c[hb+44>>2];c[4938816]=(c[4938816]|0)+1;if((hb|0)==0){eb=Xa;break}ib=hb;jb=+g[Aa>>2]}else{c[4939838]=gb;c[4938816]=(c[4938816]|0)+1;ib=cb;jb=_a}c[ib>>2]=bb;c[ib+4>>2]=A;c[ib+8>>2]=~~+g[f>>2];g[ib+12>>2]=jb;g[ib+16>>2]=+g[Ba>>2];g[ib+20>>2]=+g[Ca>>2];g[ib+24>>2]=+g[ta>>2];g[ib+28>>2]=+g[ua>>2];g[ib+32>>2]=+g[va>>2];cb=ib+36|0;c[cb>>2]=11;do{if((HD(Ea,163064,d)|0)==0){kb=0}else{gb=c[d>>2]|0;if((gb|0)==2){kb=33554432;break}else if((gb|0)==1){kb=16777216;break}else{kb=0;break}}}while(0);c[cb>>2]=c[cb>>2]|kb;b[ib+40>>1]=~~(+g[7094632]+ +g[f>>2]*100.0/+g[h>>2]);c[ib+44>>2]=c[(c[7094372]|0)+(Ya<<2)>>2];c[(c[7094372]|0)+(Ya<<2)>>2]=ib;c[4917240]=(c[4917240]|0)+1;eb=9999}}while(0);if(($a|0)>=8){break}_a=+g[v+($a<<2)>>2];Ja=+g[w+($a<<2)>>2];Xa=eb;$a=$a+1|0;Ha=_a;Ia=Ja}Wa=eb+1|0;}while((Wa|0)<3)}Ta=Ta+1|0;}while((Ta|0)<9)}}while(0);Ea=DD(Ea)|0;}while((Ea|0)!=0);B=128;C=0;D=128;E=0;i=a;return}function aF(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var h=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,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0.0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0.0,ha=0,ia=0.0,ja=0,ka=0.0,la=0,ma=0,na=0,oa=0,pa=0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0.0,va=0.0,wa=0.0,xa=0.0,ya=0.0,za=0.0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0,Ha=0;h=i;i=i+88|0;j=h|0;k=h+8|0;l=h+24|0;m=h+40|0;n=h+56|0;o=h+72|0;if((c[7094530]|0)<=1){p=0;i=h;return p|0}q=k|0;r=l|0;s=k+4|0;t=l+4|0;u=k+8|0;k=l+8|0;l=m|0;v=n|0;w=m+4|0;x=n+4|0;y=m+8|0;m=n+8|0;n=(f|0)!=0;f=o|0;z=o+4|0;A=o+8|0;o=(d|0)>0;B=0;C=0;D=1;E=0;a:while(1){F=c[7094531]|0;G=F+(D*48|0)+4|0;H=c[G>>2]|0;do{if((H|0)>0){I=F+(D*48|0)+8|0;J=999999.0;K=B;L=0;M=E;N=H;while(1){O=c[(c[7094529]|0)+((c[I>>2]|0)+L<<2)>>2]|0;P=(O|0)>-1?O:-O|0;Q=c[7094527]|0;b:do{if((c[Q+(P*24|0)+4>>2]&4|0)==0){R=M;S=K;U=J;V=N}else{W=(c[7094521]|0)+((c[Q+(P*24|0)>>2]|0)*20|0)|0;X=Q+(P*24|0)+8|0;Y=c[X>>2]|0;if((Y|0)<=0){R=M;S=K;U=J;V=N;break}Z=Q+(P*24|0)+12|0;if(o){_=J;$=K;aa=0;ba=M}else{ca=0;while(1){da=ca+1|0;if((da|0)<(Y|0)){ca=da}else{R=M;S=K;U=J;V=N;break b}}}while(1){ca=c[(c[7094525]|0)+((c[Z>>2]|0)+aa<<2)>>2]|0;Y=(ca|0)>-1?ca:-ca|0;ca=c[7094523]|0;da=c[7094519]|0;ea=da+((c[ca+(Y<<3)>>2]|0)*12|0)|0;fa=da+((c[ca+(Y<<3)+4>>2]|0)*12|0)|0;ga=_;Y=$;ca=0;da=ba;while(1){ha=ca+1|0;ia=+XE(ea,fa,a+(ca*12|0)|0,a+(((ha|0)==(d|0)?0:ha)*12|0)|0,W,e,q,l,r,v,ga);ja=ia>2]|0)){_=ka;$=la;aa=da;ba=ma}else{break}}R=ma;S=la;U=ka;V=c[G>>2]|0}}while(0);O=L+1|0;if((O|0)<(V|0)){J=U;K=S;L=O;M=R;N=V}else{break}}if(U>192.0){na=C;oa=R;pa=S;break}J=+g[s>>2]+ +g[t>>2];ga=+g[u>>2]+ +g[k>>2];ia=(+g[q>>2]+ +g[r>>2])*.5;g[q>>2]=ia;qa=J*.5;g[s>>2]=qa;J=ga*.5;g[u>>2]=J;ga=+g[w>>2]+ +g[x>>2];ra=+g[y>>2]+ +g[m>>2];sa=(+g[l>>2]+ +g[v>>2])*.5;g[l>>2]=sa;ta=ga*.5;g[w>>2]=ta;ga=ra*.5;g[y>>2]=ga;if(n){ua=sa;va=ia;wa=ta;xa=qa;ya=ga;za=J}else{g[q>>2]=sa;g[s>>2]=ta;g[u>>2]=ga;g[l>>2]=ia;g[w>>2]=qa;g[y>>2]=J;ua=ia;va=sa;wa=qa;xa=ta;ya=J;za=ga}ga=ua-va;J=wa-xa;ta=+T(ga*ga+J*J+0.0);J=+g[7094603];if(ta>+g[7094606]*(+T(+g[7094636]/(J*.5))+ +g[7094617]/J)*2.0){na=C;oa=R;pa=S;break}if(ya+-32.0>za|ya32.0){if((DE(0.0,q,l,j)|0)==0){na=C;oa=R;pa=S;break}Aa=+g[u>>2];Ba=+g[y>>2]}else{Aa=za;Ba=ya}ta=Aa+1.0;g[u>>2]=ta;J=Ba+1.0;g[y>>2]=J;if(n){ga=+g[l>>2];g[f>>2]=ga;Ca=ga;Da=J;Ea=+g[w>>2]}else{J=+g[q>>2];g[f>>2]=J;Ca=J;Da=ta;Ea=+g[s>>2]}g[z>>2]=Ea;g[A>>2]=Da;if((R|0)==0){Fa=0.0}else{ta=+g[R+8>>2];Fa=(+g[R+12>>2]-(+g[R>>2]*Ca+ +g[R+4>>2]*Ea+ta*Da))/ta}g[A>>2]=Fa;if((bG(S,f,.10000000149011612)|0)==0){if(+g[y>>2]+-16.0>+g[u>>2]){na=C;oa=R;pa=S;break}}N=c[4939838]|0;if((N|0)==0){p=C;Ga=37;break a}M=c[N+44>>2]|0;if((M|0)==0){hE(169608,(L=i,i=i+1|0,i=i+7&-8,c[L>>2]=0,L)|0);i=L;L=c[4939838]|0;c[4939838]=c[L+44>>2];c[4938816]=(c[4938816]|0)+1;if((L|0)==0){p=C;Ga=37;break a}else{Ha=L}}else{c[4939838]=M;c[4938816]=(c[4938816]|0)+1;Ha=N}c[Ha>>2]=D;c[Ha+4>>2]=0;c[Ha+8>>2]=0;N=Ha+12|0;g[N>>2]=+g[q>>2];g[Ha+16>>2]=+g[s>>2];g[Ha+20>>2]=+g[u>>2];M=Ha+24|0;g[M>>2]=+g[l>>2];g[Ha+28>>2]=+g[w>>2];g[Ha+32>>2]=+g[y>>2];c[Ha+36>>2]=0;b[Ha+40>>1]=0;c[Ha+44>>2]=C;if(n){UD(N,M,1);na=Ha;oa=R;pa=S;break}else{UD(N,M,2);na=Ha;oa=R;pa=S;break}}else{na=C;oa=E;pa=B}}while(0);G=D+1|0;if((G|0)<(c[7094530]|0)){B=pa;C=na;D=G;E=oa}else{p=na;Ga=37;break}}if((Ga|0)==37){i=h;return p|0}return 0}function bF(){var a=0,d=0,e=0,f=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,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,_=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,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.0,Sa=0.0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0.0,Xa=0.0,Ya=0,Za=0,_a=0,$a=0.0,ab=0.0,bb=0.0,cb=0.0,db=0.0,eb=0.0,fb=0.0,gb=0.0,hb=0.0,ib=0.0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0.0,Ab=0.0,Bb=0.0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0;a=i;i=i+760|0;d=a|0;e=a+8|0;f=a+184|0;j=a+312|0;k=a+328|0;l=a+344|0;m=a+360|0;n=a+376|0;o=a+392|0;p=a+408|0;q=a+424|0;r=a+440|0;s=a+488|0;t=a+536|0;u=a+552|0;v=a+568|0;w=a+584|0;x=a+704|0;y=a+712|0;z=a+736|0;A=a+56|0;B=f|0;n$(q|0,0,12)|0;C=DD(0)|0;if((C|0)==0){D=120;E=0;F=48;G=0;H=48;I=0;J=128;K=0;L=128;M=0;N=40;O=0;i=a;return}P=f+1|0;f=j|0;Q=j+4|0;R=j+8|0;j=q|0;q=o|0;S=p|0;T=o+4|0;U=o+8|0;o=p+4|0;V=p+8|0;p=k|0;W=k+4|0;X=k+8|0;Y=l|0;Z=l+4|0;_=l+8|0;$=r|0;aa=r|0;ba=r+4|0;ca=r+12|0;da=r+16|0;ea=r+24|0;fa=r+28|0;ga=r+36|0;ha=r+40|0;ia=r+8|0;ja=y+12|0;ka=y|0;la=y+4|0;ma=y+8|0;na=s|0;oa=s|0;pa=s+4|0;qa=s+12|0;ra=s+16|0;sa=s+24|0;ta=s+28|0;ua=s+36|0;va=s+40|0;wa=s+8|0;xa=z+12|0;ya=z|0;za=z+4|0;Aa=z+8|0;Ba=m|0;Ca=m+4|0;Da=m+8|0;m=n|0;Ea=n+4|0;Fa=n+8|0;n=v|0;Ga=v+4|0;Ha=v+8|0;v=t|0;Ia=t+4|0;Ja=t+8|0;t=u|0;Ka=u+4|0;La=u+8|0;u=a+16|0;Ma=w|0;Na=w+12|0;Oa=w+16|0;Pa=w+20|0;w=C;do{do{if((ED(w,184736,A,128)|0)!=0){if((k$(A,125488)|0)!=0){break}GD(w,126744,x)|0;if(!(+g[x>>2]!=0.0)){g[x>>2]=32.0}if((ED(w,173704,B,128)|0)==0){Tk[c[7092490]&255](3,124512,(Qa=i,i=i+1|0,i=i+7&-8,c[Qa>>2]=0,Qa)|0);i=Qa;break}C=oj(P|0)|0;if((C|0)<1){Tk[c[7092490]&255](3,123664,(Qa=i,i=i+1|0,i=i+7&-8,c[Qa>>2]=0,Qa)|0);i=Qa;break}if((FD(w,99016,f)|0)==0){g[f>>2]=0.0;g[Q>>2]=0.0;g[R>>2]=0.0}AD(C,j,q,S,0);Ra=+g[f>>2];Sa=+g[q>>2]+Ra;g[q>>2]=Sa;Ta=+g[Q>>2];Ua=+g[T>>2]+Ta;g[T>>2]=Ua;Va=+g[R>>2];Wa=+g[U>>2]+Va;g[U>>2]=Wa;Xa=+g[S>>2]+Ra;g[S>>2]=Xa;Ra=+g[o>>2]+Ta;g[o>>2]=Ra;Ta=+g[V>>2]+Va;g[V>>2]=Ta;Va=(Sa+Xa)*.5;Xa=(Ua+Ra)*.5;Ra=(Ta+Wa)*.5;g[f>>2]=Va;g[Q>>2]=Xa;g[R>>2]=Ra;g[p>>2]=Va;g[W>>2]=Xa;g[X>>2]=Ra;g[Y>>2]=Va;g[Z>>2]=Xa;g[_>>2]=Ra;HD(w,122920,e)|0;Ya=c[e>>2]|0;if((Ya&1|0)==0){Za=2-(Ya>>>1&1)|0;_a=Za;$a=+g[l+(Za<<2)>>2];ab=+g[k+(Za<<2)>>2]}else{_a=0;$a=Va;ab=Va}Wa=+g[x>>2];Za=l+(_a<<2)|0;g[Za>>2]=$a-Wa;Ya=k+(_a<<2)|0;g[Ya>>2]=Wa+ab;Wa=+g[Y>>2];Ta=+g[Z>>2];Ua=+g[_>>2];Sa=+g[p>>2];bb=+g[W>>2];cb=+g[X>>2];YJ(121960,(Qa=i,i=i+56|0,c[Qa>>2]=C,h[Qa+8>>3]=Wa,h[Qa+16>>3]=Ta,h[Qa+24>>3]=Ua,h[Qa+32>>3]=Sa,h[Qa+40>>3]=bb,h[Qa+48>>3]=cb,Qa)|0);i=Qa;db=+g[V>>2]-Ra;Ra=Ua+db+24.0;g[ia>>2]=Ra;g[r+20>>2]=Ra;g[r+32>>2]=Ra;g[r+44>>2]=Ra;eb=+g[S>>2]-Va;fb=Wa+eb;g[aa>>2]=fb;gb=+g[o>>2]-Xa;hb=Ta+gb;g[ba>>2]=hb;g[ca>>2]=fb;fb=+g[T>>2]-Xa;Xa=Ta+fb;g[da>>2]=Xa;ib=+g[q>>2]-Va;Va=Wa+ib;g[ea>>2]=Va;g[fa>>2]=Xa;g[ga>>2]=Va;g[ha>>2]=hb;g[ja>>2]=Ra;g[ka>>2]=0.0;g[la>>2]=0.0;g[ma>>2]=1.0;Ra=cb+db+24.0;g[wa>>2]=Ra;g[s+20>>2]=Ra;g[s+32>>2]=Ra;g[s+44>>2]=Ra;hb=Sa+eb;g[oa>>2]=hb;eb=bb+gb;g[pa>>2]=eb;g[qa>>2]=hb;hb=bb+fb;g[ra>>2]=hb;fb=Sa+ib;g[sa>>2]=fb;g[ta>>2]=hb;g[ua>>2]=fb;g[va>>2]=eb;g[xa>>2]=Ra;g[ya>>2]=0.0;g[za>>2]=0.0;g[Aa>>2]=1.0;g[Ba>>2]=Wa;g[Ca>>2]=Ta;Ta=db+24.0;g[Da>>2]=Ua+Ta;g[m>>2]=Sa;g[Ea>>2]=bb;g[Fa>>2]=cb+Ta;if((WF(Ba)|0)==0){break}if((WF(m)|0)==0){break}else{jb=0}do{kb=(jb|0)==0;if(kb){lb=aF($,4,y,1)|0;mb=aF(na,4,z,0)|0;nb=lb}else{lb=aF(na,4,z,1)|0;mb=aF($,4,y,0)|0;nb=lb}lb=(nb|0)==0;do{if(!lb){ob=(mb|0)==0;pb=nb;while(1){qb=c[pb+44>>2]|0;if(!ob){rb=pb|0;sb=pb+12|0;tb=pb+16|0;ub=pb+20|0;vb=mb;while(1){wb=c[vb+44>>2]|0;xb=vb|0;yb=c[xb>>2]|0;YJ(121112,(Qa=i,i=i+16|0,c[Qa>>2]=c[rb>>2],c[Qa+8>>2]=yb,Qa)|0);i=Qa;if(kb){zb=+g[Ba>>2];Ab=+g[Ca>>2]}else{zb=+g[m>>2];Ab=+g[Ea>>2]}g[n>>2]=+g[sb>>2]-zb;g[Ga>>2]=+g[tb>>2]-Ab;g[Ha>>2]=0.0;+wB(n);g[v>>2]=+g[sb>>2];g[Ia>>2]=+g[tb>>2];g[Ja>>2]=+g[ub>>2];Ta=+g[n>>2];g[v>>2]=+g[sb>>2]+Ta;cb=+g[Ga>>2];g[Ia>>2]=+g[tb>>2]+cb;bb=+g[Ha>>2];g[Ja>>2]=+g[ub>>2]+bb+1.0;g[t>>2]=+g[sb>>2]+Ta*16.0;g[Ka>>2]=+g[tb>>2]+cb*16.0;g[La>>2]=+g[ub>>2]+bb*16.0+1.0;yb=aG(v,t,u,Ma,10)|0;do{if((yb|0)>=1){if((yb|0)>1){g[sb>>2]=+g[Na>>2];g[tb>>2]=+g[Oa>>2];Bb=+g[Pa>>2]}else{g[sb>>2]=+g[t>>2];g[tb>>2]=+g[Ka>>2];Bb=+g[La>>2]}g[ub>>2]=Bb;if((WF(sb)|0)==0){break}Cb=vb+24|0;if((WF(Cb)|0)==0){break}Db=c[4939838]|0;if((Db|0)==0){Eb=0}else{Fb=c[Db+44>>2]|0;if((Fb|0)==0){hE(169608,(Qa=i,i=i+1|0,i=i+7&-8,c[Qa>>2]=0,Qa)|0);i=Qa;Gb=c[4939838]|0;Hb=Gb;Ib=c[Gb+44>>2]|0}else{Hb=Db;Ib=Fb}c[4939838]=Ib;c[4938816]=(c[4938816]|0)+1;Eb=Hb}c[Eb>>2]=c[xb>>2];if(kb){c[Eb+8>>2]=~~+g[Ya>>2]&65535|~~+g[Za>>2]<<16}else{c[Eb+8>>2]=~~+g[Za>>2]&65535|~~+g[Ya>>2]<<16}c[Eb+4>>2]=c[e>>2]<<16|C;g[Eb+12>>2]=+g[sb>>2];g[Eb+16>>2]=+g[tb>>2];g[Eb+20>>2]=+g[ub>>2];g[Eb+24>>2]=+g[Cb>>2];g[Eb+28>>2]=+g[vb+28>>2];g[Eb+32>>2]=+g[vb+32>>2];Cb=Eb+36|0;c[Cb>>2]=19;do{if((HD(w,163064,d)|0)==0){Jb=0}else{Fb=c[d>>2]|0;if((Fb|0)==2){Jb=33554432;break}else if((Fb|0)==1){Jb=16777216;break}else{Jb=0;break}}}while(0);c[Cb>>2]=c[Cb>>2]|Jb;b[Eb+40>>1]=~~+g[7094631];c[4917236]=(c[4917236]|0)+1;Fb=c[rb>>2]|0;c[Eb+44>>2]=c[(c[7094372]|0)+(Fb<<2)>>2];c[(c[7094372]|0)+(Fb<<2)>>2]=Eb}}while(0);if((wb|0)==0){break}else{vb=wb}}}if((qb|0)==0){break}else{pb=qb}}if(lb){break}else{Kb=nb}while(1){pb=Kb+44|0;ob=c[pb>>2]|0;n$(Kb|0,0,48)|0;c[pb>>2]=c[4939838];c[4939838]=Kb;c[4938816]=(c[4938816]|0)-1;if((ob|0)==0){break}else{Kb=ob}}}}while(0);if((mb|0)!=0){lb=mb;while(1){kb=lb+44|0;ob=c[kb>>2]|0;n$(lb|0,0,48)|0;c[kb>>2]=c[4939838];c[4939838]=lb;c[4938816]=(c[4938816]|0)-1;if((ob|0)==0){break}else{lb=ob}}}jb=jb+1|0;}while((c[e>>2]&3|0)!=0&(jb|0)<2)}}while(0);w=DD(w)|0;}while((w|0)!=0);D=120;E=0;F=48;G=0;H=48;I=0;J=128;K=0;L=128;M=0;N=40;O=0;i=a;return}function cF(){var a=0,d=0,e=0,f=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,U=0.0,V=0.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;a=i;i=i+336|0;d=a|0;e=a+8|0;f=a+16|0;j=a+24|0;k=a+40|0;l=a+56|0;m=a+72|0;n=a+120|0;o=n;p=a+208|0;q=~~+UJ(50648,45632);r=DD(0)|0;if((r|0)==0){s=128;t=0;u=84;v=0;i=a;return}w=j|0;x=a+88|0;y=a+104|0;z=m|0;A=m+4|0;B=m+8|0;m=l|0;C=l+4|0;D=l+8|0;l=n+12|0;E=n|0;F=n+4|0;G=j+4|0;H=n+8|0;I=j+8|0;j=n+16|0;J=n+20|0;K=n+24|0;L=k|0;M=k+8|0;N=k+4|0;k=n+80|0;O=n+68|0;P=r;a:while(1){b:do{if((ED(P,184736,p,128)|0)!=0){if((k$(p,180936)|0)!=0){break}if((NE(P,w,x,y,z)|0)==0){break}Q=eG(x,y,-1,4)|0;c:do{if((Q|0)!=0){r=c[7094533]|0;R=Q;while(1){if((c[r+((c[R+4>>2]|0)*28|0)>>2]&128|0)!=0){break}R=c[R+16>>2]|0;if((R|0)==0){break c}}U=+g[A>>2];V=+g[B>>2];Tk[c[7092490]&255](1,119976,(W=i,i=i+24|0,h[W>>3]=+g[z>>2],h[W+8>>3]=U,h[W+16>>3]=V,W)|0);i=W;if(+g[z>>2]!=0.0){X=13}else{if(+g[A>>2]!=0.0){X=13}}d:do{if((X|0)==13){X=0;g[m>>2]=0.0;g[C>>2]=0.0;g[D>>2]=0.0;n$(o|0,0,84)|0;R=0;e:while(1){xE(n,-1,w,2,0,z,m,0,30,.10000000149011612,445,0,q)|0;Y=c[l>>2]|0;r=c[7094533]|0;Z=Q;while(1){_=c[Z+4>>2]|0;if((c[r+(_*28|0)>>2]&128|0)!=0&(_|0)==(Y|0)){break}Z=c[Z+16>>2]|0;if((Z|0)==0){break e}}g[w>>2]=+g[E>>2];g[G>>2]=+g[F>>2];g[I>>2]=+g[H>>2];g[z>>2]=+g[j>>2];g[A>>2]=+g[J>>2];g[B>>2]=+g[K>>2];R=R+1|0;if((R|0)>=20){break d}}if((Y|0)==0){break}else{$=Q}do{R=$+4|0;Z=c[R>>2]|0;f:do{if((c[(c[7094533]|0)+(Z*28|0)>>2]&128|0)!=0){r=c[(c[7094372]|0)+(Z<<2)>>2]|0;if((r|0)!=0){_=r;do{if((c[_>>2]|0)==(Y|0)){break f}_=c[_+44>>2]|0;}while((_|0)!=0)}_=c[4939838]|0;if((_|0)==0){X=27;break a}r=c[_+44>>2]|0;if((r|0)==0){hE(169608,(W=i,i=i+1|0,i=i+7&-8,c[W>>2]=0,W)|0);i=W;aa=c[4939838]|0;c[4939838]=c[aa+44>>2];c[4938816]=(c[4938816]|0)+1;if((aa|0)==0){X=27;break a}else{ba=aa}}else{c[4939838]=r;c[4938816]=(c[4938816]|0)+1;ba=_}c[ba>>2]=Y;c[ba+4>>2]=~~+g[B>>2];V=+g[z>>2];U=+g[A>>2];c[ba+8>>2]=~~+T(V*V+U*U);g[ba+12>>2]=+g[w>>2];g[ba+16>>2]=+g[G>>2];g[ba+20>>2]=+g[I>>2];g[ba+24>>2]=+g[E>>2];g[ba+28>>2]=+g[F>>2];g[ba+32>>2]=+g[H>>2];_=ba+36|0;c[_>>2]=18;do{if((HD(P,163064,d)|0)==0){ca=0}else{r=c[d>>2]|0;if((r|0)==1){ca=16777216;break}else if((r|0)==2){ca=33554432;break}else{ca=0;break}}}while(0);c[_>>2]=c[_>>2]|ca;b[ba+40>>1]=~~+g[7094629];r=c[R>>2]|0;c[ba+44>>2]=c[(c[7094372]|0)+(r<<2)>>2];c[(c[7094372]|0)+(r<<2)>>2]=ba;c[4917230]=(c[4917230]|0)+1}}while(0);$=c[$+16>>2]|0;}while(($|0)!=0)}}while(0);if(+S(+(+g[z>>2]))>100.0){break b}if(+S(+(+g[A>>2]))>100.0){break b}R=c[7094530]|0;if((R|0)>1){Z=1;r=R;while(1){R=c[7094372]|0;aa=c[7094533]|0;da=Q;g:while(1){ea=c[da+4>>2]|0;fa=c[R+(ea<<2)>>2]|0;if((fa|0)!=0){ga=fa;do{if((c[ga>>2]|0)==(Z|0)){ha=r;break g}ga=c[ga+44>>2]|0;}while((ga|0)!=0)}if((c[aa+(ea*28|0)>>2]&128|0)!=0&(ea|0)==(Z|0)){ha=r;break}ga=c[da+16>>2]|0;if((ga|0)==0){X=43;break}else{da=ga}}do{if((X|0)==43){X=0;da=c[7094531]|0;aa=da+(Z*48|0)+4|0;if((c[aa>>2]|0)<=0){ha=r;break}R=da+(Z*48|0)+8|0;da=0;do{ga=c[(c[7094529]|0)+((c[R>>2]|0)+da<<2)>>2]|0;h:do{if((c[(c[7094527]|0)+(((ga|0)>-1?ga:-ga|0)*24|0)+4>>2]&4|0)!=0){RE(ga,L);if(+g[M>>2]<+g[I>>2]){break}if((DE(+g[B>>2],w,L,f)|0)==0){break}U=+g[f>>2];if(!(U<150.0)){break}V=+g[N>>2]- +g[G>>2];g[m>>2]=U*(+g[L>>2]- +g[w>>2]);g[C>>2]=V*U;g[D>>2]=U*0.0;xE(n,-1,w,2,0,z,m,30,30,.10000000149011612,1468,Z,0)|0;if((c[k>>2]|0)>=30){break}fa=c[O>>2]|0;if((fa&56|0)!=0|(fa&1408|0)==0){break}fa=c[l>>2]|0;ia=Q;while(1){if((c[ia+4>>2]|0)==(fa|0)){break h}ja=c[ia+16>>2]|0;if((ja|0)==0){ka=Q;break}else{ia=ja}}do{ia=ka+4|0;fa=c[ia>>2]|0;i:do{if((c[(c[7094533]|0)+(fa*28|0)>>2]&128|0)!=0){ja=c[(c[7094372]|0)+(fa<<2)>>2]|0;if((ja|0)!=0){la=ja;do{if((c[la>>2]|0)==(Z|0)){break i}la=c[la+44>>2]|0;}while((la|0)!=0)}la=c[4939838]|0;if((la|0)==0){X=62;break a}ja=c[la+44>>2]|0;if((ja|0)==0){hE(169608,(W=i,i=i+1|0,i=i+7&-8,c[W>>2]=0,W)|0);i=W;ma=c[4939838]|0;c[4939838]=c[ma+44>>2];c[4938816]=(c[4938816]|0)+1;if((ma|0)==0){X=62;break a}else{na=ma}}else{c[4939838]=ja;c[4938816]=(c[4938816]|0)+1;na=la}c[na>>2]=c[l>>2];c[na+4>>2]=~~+g[B>>2];U=+g[m>>2];V=+g[C>>2];c[na+8>>2]=~~+T(U*U+V*V);g[na+12>>2]=+g[w>>2];g[na+16>>2]=+g[G>>2];g[na+20>>2]=+g[I>>2];g[na+24>>2]=+g[L>>2];g[na+28>>2]=+g[N>>2];g[na+32>>2]=+g[M>>2];la=na+36|0;c[la>>2]=18;do{if((HD(P,163064,e)|0)==0){oa=0}else{ja=c[e>>2]|0;if((ja|0)==2){oa=33554432;break}else if((ja|0)==1){oa=16777216;break}else{oa=0;break}}}while(0);c[la>>2]=c[la>>2]|oa;b[na+40>>1]=~~+g[7094630];ja=c[ia>>2]|0;c[na+44>>2]=c[(c[7094372]|0)+(ja<<2)>>2];c[(c[7094372]|0)+(ja<<2)>>2]=na;c[4917230]=(c[4917230]|0)+1}}while(0);ka=c[ka+16>>2]|0;}while((ka|0)!=0)}}while(0);da=da+1|0;}while((da|0)<(c[aa>>2]|0));ha=c[7094530]|0}}while(0);aa=Z+1|0;if((aa|0)<(ha|0)){Z=aa;r=ha}else{break}}}cG(Q);break b}}while(0);Tk[c[7092490]&255](1,176200,(W=i,i=i+1|0,i=i+7&-8,c[W>>2]=0,W)|0);i=W;cG(Q)}}while(0);r=DD(P)|0;if((r|0)==0){X=74;break}else{P=r}}if((X|0)==27){cG(Q);s=128;t=0;u=84;v=0;i=a;return}else if((X|0)==62){cG(Q);s=128;t=0;u=84;v=0;i=a;return}else if((X|0)==74){s=128;t=0;u=84;v=0;i=a;return}} + + + +function HS(b){b=b|0;var d=0,e=0,f=0,h=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.0,I=0.0,J=0.0,K=0.0,L=0,M=0.0,N=0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0,Z=0,_=0,$=0.0,aa=0,ba=0,ca=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0.0,ta=0,ua=0.0,va=0,wa=0.0,xa=0,ya=0,za=0.0,Aa=0,Ba=0,Ca=0.0,Da=0,Ea=0.0,Fa=0,Ga=0.0,Ha=0,Ia=0.0,Ja=0,Ka=0,La=0.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.0,Za=0.0,_a=0,$a=0,ab=0,bb=0;d=i;i=i+1152|0;e=d|0;f=d+1080|0;h=d+1096|0;j=d+1104|0;k=d+1120|0;l=d+1136|0;m=d+64|0;n=d+408|0;o=d+440|0;if((c[253725]|0)>0){p=d+632|0;q=d+664|0;r=d+752|0;s=d+784|0;t=d+832|0;u=b+24|0;v=b+28|0;w=b+32|0;x=b+36|0;y=b+40|0;z=b+44|0;b=d+856|0;A=d+888|0;B=d+976|0;C=d+1008|0;D=d+1056|0;E=0;do{F=c[253726]|0;a:do{if((c[F+(E*208|0)+4>>2]&68|0)==0){if((c[F+(E*208|0)>>2]|0)!=0){break}G=SS(c[F+(E*208|0)+8>>2]|0)|0;if((G|0)==0){break}if((c[F+(E*208|0)+64>>2]|0)==0){H=1.0}else{I=+g[F+(E*208|0)+28>>2];J=+g[F+(E*208|0)+32>>2];K=+g[F+(E*208|0)+36>>2];H=+T(I*I+J*J+K*K)}L=c[G+64>>2]|0;if((L|0)==2){M=H*+g[(c[(c[G+80>>2]|0)+4>>2]|0)+((c[F+(E*208|0)+80>>2]|0)*40|0)+36>>2]}else if((L|0)==3){N=c[G+84>>2]|0;M=+g[N+((c[N+80>>2]|0)+36+(da(56+((c[N+76>>2]|0)*48|0)|0,c[F+(E*208|0)+80>>2]|0)|0))>>2]}else if((L|0)==4){L=c[(c[G+84>>2]|0)+76>>2]|0;G=(c[F+(E*208|0)+80>>2]|0)*6|0;K=+g[L+(G+3<<2)>>2]- +g[L+(G<<2)>>2];J=+g[L+(G+4<<2)>>2]- +g[L+((G|1)<<2)>>2];I=+g[L+(G+5<<2)>>2]- +g[L+(G+2<<2)>>2];M=+T(K*K+J*J+I*I)*.5}else{break}if(!(M!=0.0)){break}I=+g[F+(E*208|0)+68>>2];J=I- +g[u>>2];K=+g[F+(E*208|0)+72>>2];O=K- +g[v>>2];P=+g[F+(E*208|0)+76>>2];Q=P- +g[w>>2];R=+g[(c[4917374]|0)+28>>2];if(J*+g[x>>2]+O*+g[y>>2]+Q*+g[z>>2]<-0.0-R){break}n$(p|0,0,28)|0;n$(q|0,0,84)|0;n$(r|0,0,28)|0;n$(s|0,0,48)|0;n$(t|0,0,20)|0;G=0;S=(J*J+O*O+Q*Q)/(M*M);L=1;N=E;Q=I;O=K;J=P;U=M;V=M;W=I;I=K;K=P;P=R;while(1){if((G|0)>=64){break a}X=G+1|0;do{if((G|0)<(c[253734]|0)){Y=c[253735]|0;Z=Y+(G<<8)|0;R=+g[Z>>2];if(!(R>S)){_=0;$=S;aa=L;ba=N;ca=Q;ea=O;fa=J;ga=U;ha=V;ia=W;ja=I;ka=K;la=P;break}ma=Y+(G<<8)+4|0;na=c[ma>>2]|0;oa=Y+(G<<8)+8|0;pa=c[oa>>2]|0;qa=Y+(G<<8)+12|0;c[b>>2]=c[qa>>2];c[b+4>>2]=c[qa+4>>2];c[b+8>>2]=c[qa+8>>2];c[b+12>>2]=c[qa+12>>2];c[b+16>>2]=c[qa+16>>2];c[b+20>>2]=c[qa+20>>2];c[b+24>>2]=c[qa+24>>2];ra=Y+(G<<8)+40|0;sa=+g[ra>>2];ta=Y+(G<<8)+44|0;ua=+g[ta>>2];va=Y+(G<<8)+48|0;wa=+g[va>>2];xa=Y+(G<<8)+52|0;m$(A|0,xa|0,84)|0;ya=Y+(G<<8)+136|0;za=+g[ya>>2];Aa=Y+(G<<8)+140|0;c[B>>2]=c[Aa>>2];c[B+4>>2]=c[Aa+4>>2];c[B+8>>2]=c[Aa+8>>2];c[B+12>>2]=c[Aa+12>>2];c[B+16>>2]=c[Aa+16>>2];c[B+20>>2]=c[Aa+20>>2];c[B+24>>2]=c[Aa+24>>2];Ba=Y+(G<<8)+168|0;Ca=+g[Ba>>2];Da=Y+(G<<8)+172|0;Ea=+g[Da>>2];Fa=Y+(G<<8)+176|0;Ga=+g[Fa>>2];Ha=Y+(G<<8)+180|0;Ia=+g[Ha>>2];Ja=Y+(G<<8)+184|0;m$(C|0,Ja|0,48)|0;Ka=Y+(G<<8)+232|0;La=+g[Ka>>2];Ma=Y+(G<<8)+236|0;c[D>>2]=c[Ma>>2];c[D+4>>2]=c[Ma+4>>2];c[D+8>>2]=c[Ma+8>>2];c[D+12>>2]=c[Ma+12>>2];c[D+16>>2]=c[Ma+16>>2];g[Z>>2]=S;c[ma>>2]=L;c[oa>>2]=N;c[qa>>2]=c[p>>2];c[qa+4>>2]=c[p+4>>2];c[qa+8>>2]=c[p+8>>2];c[qa+12>>2]=c[p+12>>2];c[qa+16>>2]=c[p+16>>2];c[qa+20>>2]=c[p+20>>2];c[qa+24>>2]=c[p+24>>2];g[ra>>2]=Q;g[ta>>2]=O;g[va>>2]=J;m$(xa|0,q|0,84)|0;g[ya>>2]=U;c[Aa>>2]=c[r>>2];c[Aa+4>>2]=c[r+4>>2];c[Aa+8>>2]=c[r+8>>2];c[Aa+12>>2]=c[r+12>>2];c[Aa+16>>2]=c[r+16>>2];c[Aa+20>>2]=c[r+20>>2];c[Aa+24>>2]=c[r+24>>2];g[Ba>>2]=V;g[Da>>2]=W;g[Fa>>2]=I;g[Ha>>2]=K;m$(Ja|0,s|0,48)|0;g[Ka>>2]=P;c[Ma>>2]=c[t>>2];c[Ma+4>>2]=c[t+4>>2];c[Ma+8>>2]=c[t+8>>2];c[Ma+12>>2]=c[t+12>>2];c[Ma+16>>2]=c[t+16>>2];c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];c[p+16>>2]=c[b+16>>2];c[p+20>>2]=c[b+20>>2];c[p+24>>2]=c[b+24>>2];m$(q|0,A|0,84)|0;c[r>>2]=c[B>>2];c[r+4>>2]=c[B+4>>2];c[r+8>>2]=c[B+8>>2];c[r+12>>2]=c[B+12>>2];c[r+16>>2]=c[B+16>>2];c[r+20>>2]=c[B+20>>2];c[r+24>>2]=c[B+24>>2];c[s>>2]=c[C>>2];c[s+4>>2]=c[C+4>>2];c[s+8>>2]=c[C+8>>2];c[s+12>>2]=c[C+12>>2];c[s+16>>2]=c[C+16>>2];c[s+20>>2]=c[C+20>>2];c[s+24>>2]=c[C+24>>2];c[s+28>>2]=c[C+28>>2];c[s+32>>2]=c[C+32>>2];c[s+36>>2]=c[C+36>>2];c[s+40>>2]=c[C+40>>2];c[s+44>>2]=c[C+44>>2];c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];_=0;$=R;aa=na;ba=pa;ca=sa;ea=ua;fa=wa;ga=za;ha=Ca;ia=Ea;ja=Ga;ka=Ia;la=La}else{c[253734]=X;pa=c[253735]|0;g[pa+(G<<8)>>2]=S;c[pa+(G<<8)+4>>2]=L;c[pa+(G<<8)+8>>2]=N;na=pa+(G<<8)+12|0;c[na>>2]=c[p>>2];c[na+4>>2]=c[p+4>>2];c[na+8>>2]=c[p+8>>2];c[na+12>>2]=c[p+12>>2];c[na+16>>2]=c[p+16>>2];c[na+20>>2]=c[p+20>>2];c[na+24>>2]=c[p+24>>2];g[pa+(G<<8)+40>>2]=Q;g[pa+(G<<8)+44>>2]=O;g[pa+(G<<8)+48>>2]=J;m$(pa+(G<<8)+52|0,q|0,84)|0;g[pa+(G<<8)+136>>2]=U;na=pa+(G<<8)+140|0;c[na>>2]=c[r>>2];c[na+4>>2]=c[r+4>>2];c[na+8>>2]=c[r+8>>2];c[na+12>>2]=c[r+12>>2];c[na+16>>2]=c[r+16>>2];c[na+20>>2]=c[r+20>>2];c[na+24>>2]=c[r+24>>2];g[pa+(G<<8)+168>>2]=V;g[pa+(G<<8)+172>>2]=W;g[pa+(G<<8)+176>>2]=I;g[pa+(G<<8)+180>>2]=K;m$(pa+(G<<8)+184|0,s|0,48)|0;g[pa+(G<<8)+232>>2]=P;na=pa+(G<<8)+236|0;c[na>>2]=c[t>>2];c[na+4>>2]=c[t+4>>2];c[na+8>>2]=c[t+8>>2];c[na+12>>2]=c[t+12>>2];c[na+16>>2]=c[t+16>>2];_=1;$=S;aa=L;ba=N;ca=Q;ea=O;fa=J;ga=U;ha=V;ia=W;ja=I;ka=K;la=P}}while(0);if(_){break}else{G=X;S=$;L=aa;N=ba;Q=ca;O=ea;J=fa;U=ga;V=ha;W=ia;I=ja;K=ka;P=la}}}}while(0);E=E+1|0;}while((E|0)<(c[253725]|0))}E=c[253734]|0;if((E|0)<=0){Na=340;Oa=0;Pa=28;Qa=0;Ra=188;Sa=0;i=d;return}ba=f|0;aa=f+4|0;_=f+8|0;f=0;t=E;b:while(1){E=c[253735]|0;s=f+1|0;c:do{if((s|0)<(t|0)){r=E+(f<<8)+4|0;q=E+(f<<8)+172|0;p=E+(f<<8)+168|0;D=E+(f<<8)+176|0;C=E+(f<<8)+180|0;B=s;A=t;b=E;while(1){if((c[r>>2]|0)==8){break}z=b+(B<<8)+172|0;y=b+(B<<8)+168|0;d:do{if((jQ(q,+g[p>>2],z,+g[y>>2])|0)==0){Ta=B}else{if((c[r>>2]|0)>0){Ua=0}else{Ta=B;break}while(1){x=Ua+1|0;if((jQ(E+(f<<8)+40+(Ua*12|0)|0,+g[E+(f<<8)+136+(Ua<<2)>>2],z,+g[y>>2])|0)!=0){break}if((x|0)<(c[r>>2]|0)){Ua=x}else{Ta=B;break d}}kQ(q,+g[p>>2],z,+g[y>>2],ba,h);g[q>>2]=+g[ba>>2];g[D>>2]=+g[aa>>2];g[C>>2]=+g[_>>2];g[p>>2]=+g[h>>2];c[E+(f<<8)+8+(c[r>>2]<<2)>>2]=c[b+(B<<8)+8>>2];g[E+(f<<8)+40+((c[r>>2]|0)*12|0)>>2]=+g[z>>2];g[E+(f<<8)+40+((c[r>>2]|0)*12|0)+4>>2]=+g[b+(B<<8)+176>>2];g[E+(f<<8)+40+((c[r>>2]|0)*12|0)+8>>2]=+g[b+(B<<8)+180>>2];g[E+(f<<8)+136+(c[r>>2]<<2)>>2]=+g[y>>2];c[r>>2]=(c[r>>2]|0)+1;x=(c[253734]|0)-1|0;if((B|0)<(x|0)){w=B;while(1){v=c[253735]|0;u=w+1|0;m$(v+(w<<8)|0,v+(u<<8)|0,256)|0;v=(c[253734]|0)-1|0;if((u|0)<(v|0)){w=u}else{Va=v;break}}}else{Va=x}c[253734]=Va;Ta=B-1|0}}while(0);y=Ta+1|0;z=c[253734]|0;if((y|0)>=(z|0)){Wa=z;break c}B=y;A=z;b=c[253735]|0}if((s|0)<(A|0)){f=s;t=A;continue b}else{Xa=A;break b}}else{Wa=t}}while(0);if((s|0)<(Wa|0)){f=s;t=Wa}else{Xa=Wa;break}}do{if((Xa|0)>16){c[253734]=16}else{if((Xa|0)>0){break}Na=340;Oa=0;Pa=28;Qa=0;Ra=188;Sa=0;i=d;return}}while(0);Xa=l|0;Wa=l+4|0;t=l+8|0;l=j|0;j=k|0;k=0;do{f=c[253735]|0;g[Xa>>2]=.5773500204086304;g[Wa>>2]=.5773500204086304;g[t>>2]=.5773500204086304;Ta=f+(k<<8)+172|0;fS(Ta,l,j,Xa)|0;la=+g[Xa>>2];ka=+g[Wa>>2];ja=+g[t>>2];if(la*la+ka*ka+ja*ja<.8999999761581421){g[Xa>>2]=0.0;g[Wa>>2]=0.0;g[t>>2]=1.0;Ya=0.0}else{Ya=la}la=+g[f+(k<<8)+168>>2];ja=la*3.0;Va=f+(k<<8)+232|0;if(ja>+g[Va>>2]){g[Va>>2]=ja;Za=+g[Xa>>2]}else{Za=Ya}Va=f+(k<<8)+220|0;g[Va>>2]=+g[Ta>>2]+Za*la;Ta=f+(k<<8)+224|0;g[Ta>>2]=+g[f+(k<<8)+176>>2]+ +g[Wa>>2]*la;h=f+(k<<8)+228|0;g[h>>2]=+g[f+(k<<8)+180>>2]+ +g[t>>2]*la;la=+g[Xa>>2]*-1.0;_=f+(k<<8)+184|0;g[_>>2]=la;ja=+g[Wa>>2]*-1.0;aa=f+(k<<8)+188|0;g[aa>>2]=ja;ka=+g[t>>2]*-1.0;ba=f+(k<<8)+192|0;g[ba>>2]=ka;ia=la*0.0;Ua=~~(ka*-1.0+(ia+ja*0.0));E=+(((Ua|0)>-1?Ua:-Ua|0)|0)>.8999999761581421;ha=E?0.0:-1.0;ga=E?-1.0:0.0;E=f+(k<<8)+196|0;g[E>>2]=ja*ha-ka*0.0;Ua=f+(k<<8)+200|0;g[Ua>>2]=ka*ga-la*ha;b=f+(k<<8)+204|0;g[b>>2]=ia-ja*ga;+wB(E);ga=+g[aa>>2];ja=+g[b>>2];ia=+g[ba>>2];ha=+g[Ua>>2];g[f+(k<<8)+208>>2]=ga*ja-ia*ha;la=+g[E>>2];ka=+g[_>>2];g[f+(k<<8)+212>>2]=ia*la-ka*ja;g[f+(k<<8)+216>>2]=ka*ha-ga*la;_=f+(k<<8)+236|0;g[_>>2]=ka;g[f+(k<<8)+240>>2]=ga;g[f+(k<<8)+244>>2]=ia;g[f+(k<<8)+248>>2]=ka*+g[Va>>2]+ga*+g[Ta>>2]+ia*+g[h>>2];a[f+(k<<8)+252|0]=3;HB(_);k=k+1|0;_a=c[253734]|0;}while((k|0)<(_a|0));if((_a|0)<=0){Na=340;Oa=0;Pa=28;Qa=0;Ra=188;Sa=0;i=d;return}_a=e|0;k=e+16|0;t=e+32|0;Wa=e+48|0;Xa=e+4|0;j=e+20|0;l=e+36|0;_=e+52|0;f=e+8|0;h=e+24|0;Ta=e+40|0;Va=e+56|0;E=e+12|0;Ua=e+28|0;ba=e+44|0;b=e+60|0;e=0;do{aa=c[253735]|0;n$(m|0,0,340)|0;n$(n|0,0,28)|0;n$(o|0,0,188)|0;if((c[5120183]|0)==0){$a=0;ab=c[253629]|0;bb=(c[5123027]|0)-512-(c[253630]|0)|0}else{$a=c[1013252+(e<<2)>>2]|0;ab=0;bb=0}B=aa+(e<<8)+232|0;Za=+g[B>>2];Ya=+g[aa+(e<<8)+220>>2];ia=+g[aa+(e<<8)+224>>2];ga=+g[aa+(e<<8)+228>>2];ka=+g[aa+(e<<8)+184>>2];la=+g[aa+(e<<8)+188>>2];ha=+g[aa+(e<<8)+192>>2];ja=+g[aa+(e<<8)+196>>2];fa=+g[aa+(e<<8)+200>>2];ea=+g[aa+(e<<8)+204>>2];ca=+g[aa+(e<<8)+208>>2];$=+g[aa+(e<<8)+212>>2];M=+g[aa+(e<<8)+216>>2];r=c[253194]|0;g[253413]=Ya;g[253414]=ia;g[253415]=ga;g[253416]=ka;g[253417]=la;g[253418]=ha;g[253419]=ja;g[253420]=fa;g[253421]=ea;g[253422]=ca;g[253423]=$;g[253424]=M;m$(1013700,m|0,340)|0;c[253510]=0;c[253511]=0;c[253512]=7;c[253513]=c[n>>2];c[253514]=c[n+4>>2];c[253515]=c[n+8>>2];c[253516]=c[n+12>>2];c[253517]=c[n+16>>2];c[253518]=c[n+20>>2];c[253519]=c[n+24>>2];c[253520]=ab;c[253521]=bb;c[253522]=512;c[253523]=512;c[253524]=$a;p=1014100;c[p>>2]=0;c[p+4>>2]=0;g[253527]=90.0;g[253528]=90.0;m$(1014116,o|0,188)|0;g[253576]=Za;p=1014308;c[p>>2]=0;c[p+4>>2]=0;c[253513]=c[253195];c[253514]=c[253192];p=c[253731]|0;c[253194]=r+2;n$(1014328,0,188)|0;g[253585]=1.0;g[253589]=1.0;g[253593]=1.0;g[253594]=Ya;g[253595]=ia;g[253596]=ga;g[_a>>2]=ka;g[k>>2]=la;g[t>>2]=ha;Za=-0.0-Ya;Ya=-0.0-ia;ia=-0.0-ga;g[Wa>>2]=ha*ia+(ka*Za+la*Ya);g[Xa>>2]=ja;g[j>>2]=fa;g[l>>2]=ea;g[_>>2]=ea*ia+(ja*Za+fa*Ya);g[f>>2]=ca;g[h>>2]=$;g[Ta>>2]=M;g[Va>>2]=M*ia+(ca*Za+$*Ya);g[E>>2]=0.0;g[Ua>>2]=0.0;g[ba>>2]=0.0;g[b>>2]=1.0;qS(_a,9200,1014388);m$(1013840,1014328,188)|0;r=aa+(e<<8)+168|0;Ya=+g[r>>2];$=+g[B>>2];Za=Ya+Ya;ca=2.0/Za;g[253529]=ca;g[253533]=0.0;ia=(Ya-Ya)/Za;g[253537]=ia;g[253541]=0.0;g[253530]=0.0;g[253534]=ca;g[253538]=ia;g[253542]=0.0;g[253531]=0.0;g[253535]=0.0;g[253539]=2.0/$;g[253543]=0.0;g[253532]=0.0;g[253536]=0.0;g[253540]=0.0;g[253544]=1.0;$=+g[253419];g[253545]=$;ia=+g[253420];g[253546]=ia;ca=+g[253421];g[253547]=ca;Za=+g[253413];Ya=-0.0- +g[r>>2];M=+g[253414];fa=+g[253415];g[253548]=ca*(ca*Ya+fa)+($*(Za+$*Ya)+ia*(M+ia*Ya));Ya=$*-1.0;g[253550]=Ya;$=ia*-1.0;g[253551]=$;ia=ca*-1.0;g[253552]=ia;ca=-0.0- +g[r>>2];g[253553]=ia*(ia*ca+fa)+(Ya*(Za+Ya*ca)+$*(M+$*ca));ca=+g[253422];g[253555]=ca;$=+g[253423];g[253556]=$;Ya=+g[253424];g[253557]=Ya;ia=-0.0- +g[r>>2];g[253558]=Ya*(Ya*ia+fa)+(ca*(Za+ca*ia)+$*(M+$*ia));ia=ca*-1.0;g[253560]=ia;ca=$*-1.0;g[253561]=ca;$=Ya*-1.0;g[253562]=$;Ya=-0.0- +g[r>>2];g[253563]=$*($*Ya+fa)+(ia*(Za+ia*Ya)+ca*(M+ca*Ya));Ya=+g[253416]*-1.0;g[253565]=Ya;ca=+g[253417]*-1.0;g[253566]=ca;ia=+g[253418]*-1.0;g[253567]=ia;$=-0.0- +g[B>>2];g[253568]=ia*(ia*$+fa)+(Ya*(Za+Ya*$)+ca*(M+ca*$));a[1014196]=3;HB(1014180);a[1014216]=3;HB(1014200);a[1014236]=3;HB(1014220);a[1014256]=3;HB(1014240);a[1014276]=3;HB(1014260);c[253512]=c[253512]|64;B=aa+(e<<8)+4|0;if((c[B>>2]|0)>0){r=0;do{DS(c[aa+(e<<8)+8+(r<<2)>>2]|0);r=r+1|0;}while((r|0)<(c[B>>2]|0))}CS((c[253732]|0)+(p*12|0)|0,(c[253731]|0)-p|0);if((c[5120183]|0)==0){PP(e,-1)}e=e+1|0;}while((e|0)<(c[253734]|0));Na=340;Oa=0;Pa=28;Qa=0;Ra=188;Sa=0;i=d;return}function IS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0,S=0.0,T=0.0,Y=0.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=i;i=i+792|0;e=d|0;f=d+616|0;h=d+656|0;j=d+672|0;k=d+696|0;l=d+760|0;m=d+776|0;n=d+64|0;o=d+392|0;p=d+424|0;if((c[(c[4917492]|0)+32>>2]|0)==2){q=+((c[a+72>>2]|0)%32768|0|0)*30517578125.0e-15*3.141592653589793;r=+V(q);s=+W(q);q=s*.8191520442889918;t=s*2.0;do{if(t>0.0){u=t>=1.0;if(u){v=u?2.0:0.0;break}v=t*2.0}else{v=0.0}}while(0);g[253784]=r;g[253785]=.5735764503479004;g[253786]=q;g[253787]=0.0;g[253788]=v;g[253789]=v;g[253790]=v;g[253791]=1.0;t=v*.20000000298023224;g[253792]=t;g[253793]=t;g[253794]=t;g[253795]=.20000000298023224;w=r;x=-.5735764503479004;y=q}else{w=+g[253784];x=+g[253785]*-1.0;y=+g[253786]}q=+g[(c[4917352]|0)+28>>2];r=+g[(c[4917354]|0)+28>>2];t=+g[(c[4917356]|0)+28>>2];if((b|0)==1){v=q;s=r/q;z=r-q;A=t+(v*+U(+s,+.6666666865348816)+z*2.0/3.0)*.5;B=t+(v*+U(+s,+.3333333432674408)+z/3.0)*.5}else if((b|0)==2){A=r;B=t+(q*+U(+(r/q),+.6666666865348816)+(r-q)*2.0/3.0)*.5}else{A=t+(q*+U(+(r/q),+.3333333432674408)+(r-q)/3.0)*.5;B=q}u=a+24|0;C=h|0;g[C>>2]=+g[u>>2];D=a+28|0;E=h+4|0;g[E>>2]=+g[D>>2];F=a+32|0;G=h+8|0;g[G>>2]=+g[F>>2];q=w*-1.0;h=f|0;H=f|0;g[H>>2]=q;I=f+4|0;g[I>>2]=x;w=y*-1.0;J=f+8|0;g[J>>2]=w;K=(b|0)==0;if(K){y=+g[a+36>>2]+ +g[a+48>>2];g[f+24>>2]=y;r=+g[a+40>>2]+ +g[a+52>>2];g[f+28>>2]=r;t=+g[a+44>>2]+ +g[a+56>>2];g[f+32>>2]=t;L=y;M=r;N=t}else{t=+g[a+60>>2];g[f+24>>2]=t;r=+g[a+64>>2];g[f+28>>2]=r;y=+g[a+68>>2];g[f+32>>2]=y;L=t;M=r;N=y}O=f+24|0;P=f+28|0;Q=f+32|0;R=~~(L*q+M*x+N*w);do{if(+(((R|0)>-1?R:-R|0)|0)>.8999999761581421){if(K){y=+g[a+36>>2]+ +g[a+60>>2];g[O>>2]=y;r=+g[a+40>>2]+ +g[a+64>>2];g[P>>2]=r;t=+g[a+44>>2]+ +g[a+68>>2];g[Q>>2]=t;S=r;T=t;Y=y;break}else{y=+g[a+48>>2];g[O>>2]=y;t=+g[a+52>>2];g[P>>2]=t;r=+g[a+56>>2];g[Q>>2]=r;S=t;T=r;Y=y;break}}else{S=M;T=N;Y=L}}while(0);K=f+12|0;g[K>>2]=S*w-T*x;R=f+16|0;g[R>>2]=T*q-Y*w;Z=f+20|0;g[Z>>2]=Y*x-S*q;+wB(K);q=+g[I>>2];S=+g[Z>>2];x=+g[J>>2];Y=+g[R>>2];g[O>>2]=q*S-x*Y;w=+g[K>>2];T=+g[H>>2];g[P>>2]=x*w-T*S;g[Q>>2]=T*Y-q*w;g[l+12>>2]=1.0;g[m+12>>2]=1.0;f=k|0;hQ(h,C,f);h=j|0;k=j+12|0;KB(h,k);w=B;_=a+16|0;q=w*+X(+g[_>>2]*3.141592653589793/360.0);$=a+20|0;Y=w*+X(+g[$>>2]*3.141592653589793/360.0);aa=a+36|0;w=+g[u>>2]+B*+g[aa>>2];ba=a+40|0;T=+g[D>>2]+B*+g[ba>>2];ca=a+44|0;S=+g[F>>2]+B*+g[ca>>2];da=a+48|0;ea=l|0;fa=a+52|0;B=T+q*+g[fa>>2];ga=l+4|0;ha=a+56|0;x=S+q*+g[ha>>2];ia=l+8|0;l=a+60|0;g[ea>>2]=w+q*+g[da>>2]+Y*+g[l>>2];ja=a+64|0;g[ga>>2]=B+Y*+g[ja>>2];ka=a+68|0;g[ia>>2]=x+Y*+g[ka>>2];a=m|0;dQ(f,ea,a);LB(a,h,k);x=-0.0-q;B=T+ +g[fa>>2]*x;L=S+ +g[ha>>2]*x;g[ea>>2]=w+ +g[da>>2]*x+Y*+g[l>>2];g[ga>>2]=B+Y*+g[ja>>2];g[ia>>2]=L+Y*+g[ka>>2];dQ(f,ea,a);LB(a,h,k);L=T+q*+g[fa>>2];B=S+q*+g[ha>>2];N=-0.0-Y;g[ea>>2]=w+q*+g[da>>2]+ +g[l>>2]*N;g[ga>>2]=L+ +g[ja>>2]*N;g[ia>>2]=B+ +g[ka>>2]*N;dQ(f,ea,a);LB(a,h,k);B=T+ +g[fa>>2]*x;T=S+ +g[ha>>2]*x;g[ea>>2]=w+ +g[da>>2]*x+ +g[l>>2]*N;g[ga>>2]=B+ +g[ja>>2]*N;g[ia>>2]=T+ +g[ka>>2]*N;dQ(f,ea,a);LB(a,h,k);N=A;T=N*+X(+g[_>>2]*3.141592653589793/360.0);B=N*+X(+g[$>>2]*3.141592653589793/360.0);N=+g[u>>2]+A*+g[aa>>2];x=+g[D>>2]+A*+g[ba>>2];w=+g[F>>2]+A*+g[ca>>2];A=x+T*+g[fa>>2];S=w+T*+g[ha>>2];g[ea>>2]=N+T*+g[da>>2]+B*+g[l>>2];g[ga>>2]=A+B*+g[ja>>2];g[ia>>2]=S+B*+g[ka>>2];dQ(f,ea,a);LB(a,h,k);S=-0.0-T;A=x+ +g[fa>>2]*S;L=w+ +g[ha>>2]*S;g[ea>>2]=N+ +g[da>>2]*S+B*+g[l>>2];g[ga>>2]=A+B*+g[ja>>2];g[ia>>2]=L+B*+g[ka>>2];dQ(f,ea,a);LB(a,h,k);L=x+T*+g[fa>>2];A=w+T*+g[ha>>2];q=-0.0-B;g[ea>>2]=N+T*+g[da>>2]+ +g[l>>2]*q;g[ga>>2]=L+ +g[ja>>2]*q;g[ia>>2]=A+ +g[ka>>2]*q;dQ(f,ea,a);LB(a,h,k);A=x+ +g[fa>>2]*S;x=w+ +g[ha>>2]*S;g[ea>>2]=N+ +g[da>>2]*S+ +g[l>>2]*q;g[ga>>2]=A+ +g[ja>>2]*q;g[ia>>2]=x+ +g[ka>>2]*q;dQ(f,ea,a);LB(a,h,k);if((c[5120196]|0)==0){g[h>>2]=+g[k>>2]+-8192.0}n$(n|0,0,328)|0;n$(o|0,0,28)|0;n$(p|0,0,188)|0;h=(c[5120183]|0)==0;if(h){a=c[1013340+(b<<2)>>2]|0;ea=c[a+232>>2]|0;la=(c[5123027]|0)-(c[253630]|0)-ea|0;ma=c[253629]|0;na=a;oa=ea}else{ea=c[1013340+(b<<2)>>2]|0;la=0;ma=0;na=ea;oa=c[ea+232>>2]|0}ea=c[na+228>>2]|0;q=+g[k>>2];x=+g[C>>2];A=+g[E>>2];S=+g[G>>2];N=+g[H>>2];w=+g[I>>2];L=+g[J>>2];T=+g[K>>2];B=+g[R>>2];Y=+g[Z>>2];M=+g[O>>2];y=+g[P>>2];r=+g[Q>>2];Q=c[253194]|0;g[253413]=x;g[253414]=A;g[253415]=S;g[253416]=N;g[253417]=w;g[253418]=L;g[253419]=T;g[253420]=B;g[253421]=Y;g[253422]=M;g[253423]=y;g[253424]=r;m$(1013700,n|0,328)|0;g[253507]=x;g[253508]=A;g[253509]=S;c[253510]=0;c[253511]=0;c[253512]=29;c[253513]=c[o>>2];c[253514]=c[o+4>>2];c[253515]=c[o+8>>2];c[253516]=c[o+12>>2];c[253517]=c[o+16>>2];c[253518]=c[o+20>>2];c[253519]=c[o+24>>2];c[253520]=ma;c[253521]=la;c[253522]=ea;c[253523]=oa;c[253524]=h?0:na;na=1014100;c[na>>2]=0;c[na+4>>2]=0;g[253527]=90.0;g[253528]=90.0;m$(1014116,p|0,188)|0;g[253576]=q;p=1014308;c[p>>2]=0;c[p+4>>2]=0;c[253513]=c[253195];c[253514]=c[253192];p=c[253731]|0;c[253194]=Q+2;n$(1014328,0,188)|0;g[253585]=1.0;g[253589]=1.0;g[253593]=1.0;g[253594]=x;g[253595]=A;g[253596]=S;Q=e|0;g[Q>>2]=N;g[e+16>>2]=w;g[e+32>>2]=L;q=-0.0-x;x=-0.0-A;A=-0.0-S;g[e+48>>2]=L*A+(N*q+w*x);g[e+4>>2]=T;g[e+20>>2]=B;g[e+36>>2]=Y;g[e+52>>2]=Y*A+(T*q+B*x);g[e+8>>2]=M;g[e+24>>2]=y;g[e+40>>2]=r;g[e+56>>2]=r*A+(M*q+y*x);g[e+12>>2]=0.0;g[e+28>>2]=0.0;g[e+44>>2]=0.0;g[e+60>>2]=1.0;qS(Q,9200,1014388);m$(1013840,1014328,188)|0;vS(1013652,j|0);ZU();nT();if((c[(c[4919856]|0)+32>>2]|0)!=0&(c[253725]|0)>0){pa=0}else{qa=c[253732]|0;ra=qa+(p*12|0)|0;sa=c[253731]|0;ta=sa-p|0;CS(ra,ta);ua=1014944+(b<<6)|0;cQ(1014116,1013900,ua);va=36;wa=0;xa=328;ya=0;za=28;Aa=0;Ba=188;Ca=0;i=d;return}do{DS(pa);pa=pa+1|0;}while((pa|0)<(c[253725]|0));qa=c[253732]|0;ra=qa+(p*12|0)|0;sa=c[253731]|0;ta=sa-p|0;CS(ra,ta);ua=1014944+(b<<6)|0;cQ(1014116,1013900,ua);va=36;wa=0;xa=328;ya=0;za=28;Aa=0;Ba=188;Ca=0;i=d;return}function JS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0;e=i;i=i+1080|0;f=e|0;j=e+368|0;k=e+1048|0;l=+g[253796];n$(f|0,0,368)|0;m=c[253355]|0;n=f+24|0;g[n>>2]=+g[m+(a*12|0)>>2];o=f+28|0;g[o>>2]=+g[m+(a*12|0)+4>>2];p=f+32|0;g[p>>2]=+g[m+(a*12|0)+8>>2];switch(b|0){case 2:{g[f+36>>2]=0.0;g[f+40>>2]=-1.0;g[f+44>>2]=0.0;g[f+48>>2]=1.0;n$(f+52|0,0,16)|0;g[f+68>>2]=-1.0;break};case 1:{g[f+36>>2]=1.0;n$(f+40|0,0,16)|0;g[f+56>>2]=1.0;g[f+60>>2]=0.0;g[f+64>>2]=1.0;g[f+68>>2]=0.0;break};case 0:{g[f+36>>2]=-1.0;n$(f+40|0,0,16)|0;g[f+56>>2]=-1.0;g[f+60>>2]=0.0;g[f+64>>2]=1.0;g[f+68>>2]=0.0;break};case 5:{g[f+36>>2]=0.0;g[f+40>>2]=0.0;g[f+44>>2]=1.0;g[f+48>>2]=-1.0;g[f+52>>2]=0.0;g[f+56>>2]=0.0;g[f+60>>2]=0.0;g[f+64>>2]=1.0;g[f+68>>2]=0.0;break};case 4:{g[f+36>>2]=0.0;g[f+40>>2]=0.0;g[f+44>>2]=-1.0;g[f+48>>2]=1.0;g[f+52>>2]=0.0;g[f+56>>2]=0.0;g[f+60>>2]=0.0;g[f+64>>2]=1.0;g[f+68>>2]=0.0;break};case 3:{g[f+36>>2]=0.0;g[f+40>>2]=1.0;g[f+44>>2]=0.0;g[f+48>>2]=1.0;n$(f+52|0,0,16)|0;g[f+68>>2]=1.0;break};default:{}}g[f+16>>2]=90.0;g[f+20>>2]=90.0;c[f>>2]=0;c[f+4>>2]=0;m=c[253341]|0;c[f+8>>2]=c[m+228>>2];c[f+12>>2]=c[m+232>>2];c[f+72>>2]=0;m=(d|0)!=0;if(!m){sT(f)}d=k|0;fS(1014540,e+1032|0,d,e+1064|0)|0;q=+g[d>>2]+ +g[k+4>>2]+ +g[k+8>>2];g[253796]=766.0/(q+1.0);if(q==0.0){q=+g[253635];r=+g[253636];s=+g[253637];Tk[c[4886344]&255](0,140552,(k=i,i=i+32|0,c[k>>2]=a,h[k+8>>3]=q,h[k+16>>3]=r,h[k+24>>3]=s,k)|0);i=k}n$(j|0,0,664)|0;k=c[253341]|0;c[j+436>>2]=c[k+228>>2];c[j+440>>2]=c[k+232>>2];c[j+388>>2]=0;c[j+392>>2]=1;c[j+396>>2]=129;g[j+456>>2]=90.0;g[j+460>>2]=90.0;s=+g[n>>2];g[j>>2]=s;r=+g[o>>2];g[j+4>>2]=r;q=+g[p>>2];g[j+8>>2]=q;g[j+12>>2]=+g[f+36>>2];g[j+16>>2]=+g[f+40>>2];g[j+20>>2]=+g[f+44>>2];g[j+24>>2]=+g[f+48>>2];g[j+28>>2]=+g[f+52>>2];g[j+32>>2]=+g[f+56>>2];g[j+36>>2]=+g[f+60>>2];g[j+40>>2]=+g[f+64>>2];g[j+44>>2]=+g[f+68>>2];g[j+376>>2]=s;g[j+380>>2]=r;g[j+384>>2]=q;c[j+444>>2]=k;c[j+448>>2]=b;c[j+452>>2]=a;zS(j);if(m){g[253796]=l;t=664;u=0;v=368;w=0;i=e;return}else{tT();t=664;u=0;v=368;w=0;i=e;return}}function KS(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|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;if((c[a>>2]|0)==-1){j=a;while(1){k=IB(b,d,c[j+52>>2]|0)|0;if((k|0)==1){l=j+56|0}else if((k|0)==2){l=j+60|0}else{KS(c[j+56>>2]|0,b,d,e,f,h,i);l=j+60|0}k=c[l>>2]|0;if((c[k>>2]|0)==-1){j=k}else{m=k;break}}}else{m=a}a=c[m+76>>2]|0;if((a|0)==0){return}j=i+4|0;l=i+8|0;k=(c[(c[253203]|0)+216>>2]|0)+(c[m+72>>2]<<2)|0;m=a;while(1){a=m-1|0;if((c[h>>2]|0)>=(f|0)){n=23;break}o=c[k>>2]|0;p=c[253203]|0;q=(c[p+180>>2]|0)+(o<<2)|0;r=c[p+176>>2]|0;p=c[r+(o*80|0)>>2]|0;do{if((c[p+88>>2]&48|0)==0){if((c[p+92>>2]&64|0)!=0){n=12;break}s=c[c[r+(o*80|0)+76>>2]>>2]|0;if((s|0)==3|(s|0)==4){break}else if((s|0)!=2){c[q>>2]=c[253194];break}s=r+(o*80|0)+56|0;if(((IB(b,d,s)|0)-1|0)>>>0<2>>>0){c[q>>2]=c[253194];break}if(!(+g[s>>2]*+g[i>>2]+ +g[r+(o*80|0)+60>>2]*+g[j>>2]+ +g[r+(o*80|0)+64>>2]*+g[l>>2]>-.5)){break}c[q>>2]=c[253194]}else{n=12}}while(0);if((n|0)==12){n=0;c[q>>2]=c[253194]}p=c[253194]|0;if((c[q>>2]|0)!=(p|0)){c[q>>2]=p;p=c[h>>2]|0;c[e+(p<<2)>>2]=c[r+(o*80|0)+76>>2];c[h>>2]=p+1}if((a|0)==0){n=23;break}k=k+4|0;m=a}if((n|0)==23){return}}function LS(a,b,d,e,f,h,j,k,l,m,n,o,p){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var 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.0,G=0,H=0.0,I=0.0,J=0.0,K=0,L=0.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.0,Y=0,Z=0;p=i;i=i+560|0;o=p|0;k=p+272|0;q=p+544|0;a:do{if((d|0)>0){r=o;s=k;t=q+8|0;u=q+4|0;v=q|0;w=k|0;x=o|0;y=a;z=0;A=0;while(1){B=b+(A*768|0)|0;C=(A|0)==0|0;D=b+(C*768|0)|0;E=e+(z*12|0)|0;F=+g[f+(z<<2)>>2];n$(r|0,0,272)|0;n$(s|0,0,272)|0;do{if((y|0)>61){G=0}else{c[t>>2]=0;c[u>>2]=0;c[v>>2]=0;if((y|0)<=0){c[w>>2]=0;g[x>>2]=0.0;G=0;break}H=+g[E>>2];I=+g[e+(z*12|0)+4>>2];J=+g[e+(z*12|0)+8>>2];K=0;do{L=H*+g[b+(A*768|0)+(K*12|0)>>2]+I*+g[b+(A*768|0)+(K*12|0)+4>>2]+J*+g[b+(A*768|0)+(K*12|0)+8>>2]-F;g[o+(K<<2)>>2]=L;do{if(L>.5){c[k+(K<<2)>>2]=0;M=0}else{N=k+(K<<2)|0;if(L<-.5){c[N>>2]=1;M=1;break}else{c[N>>2]=2;M=2;break}}}while(0);N=q+(M<<2)|0;c[N>>2]=(c[N>>2]|0)+1;K=K+1|0;}while((K|0)<(y|0));J=+g[x>>2];K=(c[v>>2]|0)==0;c[k+(y<<2)>>2]=c[w>>2];g[o+(y<<2)>>2]=J;if(K){G=0;break}if((c[u>>2]|0)==0){m$(D|0,B|0,y*12|0)|0;G=y;break}else{O=0;P=0}while(1){K=b+(A*768|0)+(O*12|0)|0;N=b+(C*768|0)+(P*12|0)|0;Q=c[k+(O<<2)>>2]|0;if((Q|0)==2){g[N>>2]=+g[K>>2];g[b+(C*768|0)+(P*12|0)+4>>2]=+g[b+(A*768|0)+(O*12|0)+4>>2];g[b+(C*768|0)+(P*12|0)+8>>2]=+g[b+(A*768|0)+(O*12|0)+8>>2];R=P+1|0;S=O+1|0}else if((Q|0)==0){g[N>>2]=+g[K>>2];g[b+(C*768|0)+(P*12|0)+4>>2]=+g[b+(A*768|0)+(O*12|0)+4>>2];g[b+(C*768|0)+(P*12|0)+8>>2]=+g[b+(A*768|0)+(O*12|0)+8>>2];T=P+1|0;U=b+(C*768|0)+(T*12|0)|0;V=T;W=19}else{U=N;V=P;W=19}do{if((W|0)==19){W=0;N=O+1|0;T=c[k+(N<<2)>>2]|0;if((T|0)==2|(T|0)==(Q|0)){R=V;S=N;break}T=(N|0)==(y|0)?0:N;J=+g[o+(O<<2)>>2];I=J- +g[o+(N<<2)>>2];if(I==0.0){X=0.0}else{X=J/I}I=+g[K>>2];g[U>>2]=I+X*(+g[b+(A*768|0)+(T*12|0)>>2]-I);I=+g[b+(A*768|0)+(O*12|0)+4>>2];g[U+4>>2]=I+X*(+g[b+(A*768|0)+(T*12|0)+4>>2]-I);I=+g[b+(A*768|0)+(O*12|0)+8>>2];g[U+8>>2]=I+X*(+g[b+(A*768|0)+(T*12|0)+8>>2]-I);R=V+1|0;S=N}}while(0);if((S|0)<(y|0)){O=S;P=R}else{G=R;break}}}}while(0);if((G|0)==0){break}C=A^1;B=z+1|0;if((B|0)<(d|0)){y=G;z=B;A=C}else{Y=G;Z=C;break a}}i=p;return}else{Y=a;Z=0}}while(0);if((Y|0)==0){i=p;return}a=c[m>>2]|0;if((a+Y|0)>(h|0)){i=p;return}h=c[n>>2]|0;c[l+(h<<3)>>2]=a;c[l+(h<<3)+4>>2]=Y;m$(j+(((c[m>>2]|0)*3|0)<<2)|0,b+(Z*768|0)|0,Y*12|0)|0;c[m>>2]=(c[m>>2]|0)+Y;c[n>>2]=(c[n>>2]|0)+1;i=p;return}function MS(a,b,d,e,f,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;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,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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0.0,oa=0,pa=0.0,qa=0,ra=0,sa=0;k=i;i=i+2936|0;l=k|0;m=k+8|0;n=k+296|0;o=k+304|0;p=k+312|0;q=k+1104|0;r=k+1368|0;s=k+2904|0;t=k+2920|0;if((a|0)<1){u=0;v=1536;w=0;x=264;y=0;z=792;A=0;B=256;C=0;i=k;return u|0}c[253194]=(c[253194]|0)+1;D=s|0;+MB(d,D);E=k+264|0;F=k+280|0;KB(E,F);G=t|0;H=d+4|0;I=t+4|0;J=d+8|0;K=t+8|0;t=s+4|0;L=s+8|0;M=0;do{N=b+(M*12|0)|0;LB(N,E,F);g[G>>2]=+g[N>>2]+ +g[d>>2];O=b+(M*12|0)+4|0;g[I>>2]=+g[O>>2]+ +g[H>>2];P=b+(M*12|0)+8|0;g[K>>2]=+g[P>>2]+ +g[J>>2];LB(G,E,F);g[G>>2]=+g[N>>2]+ +g[D>>2]*-20.0;g[I>>2]=+g[O>>2]+ +g[t>>2]*-20.0;g[K>>2]=+g[P>>2]+ +g[L>>2]*-20.0;LB(G,E,F);M=M+1|0;}while((M|0)<(a|0));M=(a|0)>64?64:a;if((M|0)>0){a=d+4|0;G=d+8|0;L=0;while(1){K=L+1|0;t=(K|0)==(M|0)?0:K;I=b+(L*12|0)|0;Q=+g[I>>2];R=+g[b+(t*12|0)>>2]-Q;J=b+(L*12|0)+4|0;S=+g[J>>2];T=+g[b+(t*12|0)+4>>2]-S;H=b+(L*12|0)+8|0;U=+g[H>>2];V=+g[b+(t*12|0)+8>>2]-U;W=Q-(Q+ +g[d>>2]);Q=S-(S+ +g[a>>2]);S=U-(U+ +g[G>>2]);U=T*S-V*Q;X=V*W-R*S;S=R*Q-T*W;W=+GB(U*U+X*X+S*S);T=W*U;g[p+(L*12|0)>>2]=T;U=W*X;g[p+(L*12|0)+4>>2]=U;X=W*S;g[p+(L*12|0)+8>>2]=X;g[q+(L<<2)>>2]=T*+g[I>>2]+U*+g[J>>2]+X*+g[H>>2];if((K|0)<(M|0)){L=K}else{break}}}X=+g[D>>2];g[p+(M*12|0)>>2]=X;L=s+4|0;U=+g[L>>2];g[p+(M*12|0)+4>>2]=U;G=s+8|0;T=+g[G>>2];g[p+(M*12|0)+8>>2]=T;S=+g[b>>2];W=+g[b+4>>2];Q=+g[b+8>>2];g[q+(M<<2)>>2]=X*S+U*W+T*Q+-32.0;b=M+1|0;R=-0.0-X;g[p+(b*12|0)>>2]=R;X=-0.0-U;g[p+(b*12|0)+4>>2]=X;U=-0.0-T;g[p+(b*12|0)+8>>2]=U;g[q+(b<<2)>>2]=S*R+W*X+Q*U+-20.0;b=M+2|0;c[l>>2]=0;KS(c[(c[253203]|0)+164>>2]|0,E,F,m|0,64,l,D);c[o>>2]=0;c[n>>2]=0;F=c[l>>2]|0;if((F|0)<=0){u=0;v=1536;w=0;x=264;y=0;z=792;A=0;B=256;C=0;i=k;return u|0}E=r|0;M=p|0;p=q|0;q=r|0;s=r+4|0;a=r+8|0;d=r+12|0;K=r+16|0;H=r+20|0;J=r+24|0;I=r+28|0;t=r+32|0;r=0;P=F;a:while(1){F=c[m+(r<<2)>>2]|0;O=c[F>>2]|0;b:do{if((O|0)==2){N=F+52|0;U=+g[N>>2];Y=F+56|0;Q=+g[Y>>2];Z=F+60|0;X=+g[Z>>2];if(U*+g[D>>2]+Q*+g[L>>2]+X*+g[G>>2]>-.5){_=P;break}$=F+72|0;if((c[$>>2]|0)<=0){_=P;break}aa=F+84|0;ba=3;ca=c[F+76>>2]|0;W=U;U=Q;Q=X;while(1){ea=c[aa>>2]|0;X=W*0.0;R=U*0.0;S=Q*0.0;fa=c[ca>>2]|0;g[q>>2]=+g[ea+(fa*84|0)>>2]+X;g[s>>2]=+g[ea+(fa*84|0)+4>>2]+R;g[a>>2]=+g[ea+(fa*84|0)+8>>2]+S;fa=c[ca+4>>2]|0;g[d>>2]=+g[ea+(fa*84|0)>>2]+X;g[K>>2]=+g[ea+(fa*84|0)+4>>2]+R;g[H>>2]=+g[ea+(fa*84|0)+8>>2]+S;fa=c[ca+8>>2]|0;g[J>>2]=+g[ea+(fa*84|0)>>2]+X;g[I>>2]=+g[ea+(fa*84|0)+4>>2]+R;g[t>>2]=+g[ea+(fa*84|0)+8>>2]+S;LS(3,E,b,M,p,e,f,0,j,o,n,0,0);if((c[n>>2]|0)==(h|0)){u=h;ga=34;break a}if((ba|0)>=(c[$>>2]|0)){_=P;break b}ba=ba+3|0;ca=ca+12|0;W=+g[N>>2];U=+g[Y>>2];Q=+g[Z>>2]}}else if((O|0)==3){Z=F+140|0;Y=c[Z>>2]|0;if((Y-1|0)<=0){_=P;break}N=F+136|0;ca=F+84|0;ba=0;$=c[N>>2]|0;aa=Y;while(1){if(($-1|0)>0){Y=0;fa=$;do{ea=c[ca>>2]|0;ha=(da(fa,ba)|0)+Y|0;Q=+g[ea+(ha*84|0)+4>>2];U=+g[ea+(ha*84|0)+8>>2];W=+g[ea+(ha*84|0)>>2]+ +g[ea+(ha*84|0)+28>>2]*0.0;g[q>>2]=W;S=Q+ +g[ea+(ha*84|0)+32>>2]*0.0;g[s>>2]=S;Q=U+ +g[ea+(ha*84|0)+36>>2]*0.0;g[a>>2]=Q;ia=fa+ha|0;U=+g[ea+(ia*84|0)+4>>2];R=+g[ea+(ia*84|0)+8>>2];X=+g[ea+(ia*84|0)>>2]+ +g[ea+(ia*84|0)+28>>2]*0.0;g[d>>2]=X;T=U+ +g[ea+(ia*84|0)+32>>2]*0.0;g[K>>2]=T;U=R+ +g[ea+(ia*84|0)+36>>2]*0.0;g[H>>2]=U;ia=ha+1|0;ja=ea+(ia*84|0)|0;ka=ea+(ia*84|0)+4|0;R=+g[ka>>2];la=ea+(ia*84|0)+8|0;V=+g[la>>2];ma=ea+(ia*84|0)+28|0;na=+g[ja>>2]+ +g[ma>>2]*0.0;g[J>>2]=na;oa=ea+(ia*84|0)+32|0;pa=R+ +g[oa>>2]*0.0;g[I>>2]=pa;qa=ea+(ia*84|0)+36|0;R=V+ +g[qa>>2]*0.0;g[t>>2]=R;V=W-X;W=S-T;S=Q-U;Q=na-X;X=pa-T;T=R-U;U=W*T-S*X;R=S*Q-V*T;T=V*X-W*Q;Q=+GB(T*T+(R*R+U*U));if(Q*T*+g[G>>2]+(Q*R*+g[L>>2]+ +g[D>>2]*Q*U)<-.1){LS(3,E,b,M,p,e,f,0,j,o,n,0,0);if((c[n>>2]|0)==(h|0)){u=h;ga=34;break a}}U=+g[ka>>2];Q=+g[la>>2];R=+g[ja>>2]+ +g[ma>>2]*0.0;g[q>>2]=R;T=U+ +g[oa>>2]*0.0;g[s>>2]=T;U=Q+ +g[qa>>2]*0.0;g[a>>2]=U;qa=c[N>>2]|0;oa=qa+ha|0;Q=+g[ea+(oa*84|0)+4>>2];W=+g[ea+(oa*84|0)+8>>2];X=+g[ea+(oa*84|0)>>2]+ +g[ea+(oa*84|0)+28>>2]*0.0;g[d>>2]=X;V=Q+ +g[ea+(oa*84|0)+32>>2]*0.0;g[K>>2]=V;Q=W+ +g[ea+(oa*84|0)+36>>2]*0.0;g[H>>2]=Q;oa=ia+qa|0;W=+g[ea+(oa*84|0)+4>>2];S=+g[ea+(oa*84|0)+8>>2];pa=+g[ea+(oa*84|0)>>2]+ +g[ea+(oa*84|0)+28>>2]*0.0;g[J>>2]=pa;na=W+ +g[ea+(oa*84|0)+32>>2]*0.0;g[I>>2]=na;W=S+ +g[ea+(oa*84|0)+36>>2]*0.0;g[t>>2]=W;S=R-X;R=T-V;T=U-Q;U=pa-X;X=na-V;V=W-Q;Q=R*V-T*X;W=T*U-S*V;V=S*X-R*U;U=+GB(V*V+(W*W+Q*Q));if(U*V*+g[G>>2]+(U*W*+g[L>>2]+ +g[D>>2]*U*Q)<-.05){LS(3,E,b,M,p,e,f,0,j,o,n,0,0);if((c[n>>2]|0)==(h|0)){u=h;ga=34;break a}}Y=Y+1|0;fa=c[N>>2]|0;}while((Y|0)<(fa-1|0));ra=fa;sa=c[Z>>2]|0}else{ra=$;sa=aa}Y=ba+1|0;if((Y|0)<(sa-1|0)){ba=Y;$=ra;aa=sa}else{break}}_=c[l>>2]|0}else if((O|0)==4){if((c[(c[4917430]|0)+32>>2]|0)==0){_=P;break}aa=F+72|0;if((c[aa>>2]|0)<=0){_=P;break}$=F+84|0;ba=0;Z=c[F+76>>2]|0;while(1){N=c[$>>2]|0;ca=c[Z>>2]|0;g[q>>2]=+g[N+(ca*84|0)>>2]+ +g[N+(ca*84|0)+28>>2]*0.0;g[s>>2]=+g[N+(ca*84|0)+4>>2]+ +g[N+(ca*84|0)+32>>2]*0.0;g[a>>2]=+g[N+(ca*84|0)+8>>2]+ +g[N+(ca*84|0)+36>>2]*0.0;ca=c[Z+4>>2]|0;g[d>>2]=+g[N+(ca*84|0)>>2]+ +g[N+(ca*84|0)+28>>2]*0.0;g[K>>2]=+g[N+(ca*84|0)+4>>2]+ +g[N+(ca*84|0)+32>>2]*0.0;g[H>>2]=+g[N+(ca*84|0)+8>>2]+ +g[N+(ca*84|0)+36>>2]*0.0;ca=c[Z+8>>2]|0;g[J>>2]=+g[N+(ca*84|0)>>2]+ +g[N+(ca*84|0)+28>>2]*0.0;g[I>>2]=+g[N+(ca*84|0)+4>>2]+ +g[N+(ca*84|0)+32>>2]*0.0;g[t>>2]=+g[N+(ca*84|0)+8>>2]+ +g[N+(ca*84|0)+36>>2]*0.0;LS(3,E,b,M,p,e,f,0,j,o,n,0,0);if((c[n>>2]|0)==(h|0)){u=h;ga=34;break a}ca=ba+3|0;if((ca|0)<(c[aa>>2]|0)){ba=ca;Z=Z+12|0}else{_=P;break}}}else{_=P}}while(0);F=r+1|0;if((F|0)<(_|0)){r=F;P=_}else{ga=33;break}}if((ga|0)==33){u=c[n>>2]|0;v=1536;w=0;x=264;y=0;z=792;A=0;B=256;C=0;i=k;return u|0}else if((ga|0)==34){v=1536;w=0;x=264;y=0;z=792;A=0;B=256;C=0;i=k;return u|0}return 0}function NS(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0;b=c[253412]|0;d=c[b+88>>2]|0;if((d|0)<2){e=0;f=d;h=c[4917438]|0;i=h+32|0;j=c[i>>2]|0;k=j+e|0;l=(k|0)<(f|0);m=f-1|0;n=l?k:m;o=(n|0)<0;p=o?0:n;return p|0}if((c[b+64>>2]|0)==3){d=c[b+84>>2]|0;q=(da(56+((c[d+76>>2]|0)*48|0)|0,c[a+80>>2]|0)|0)+(c[d+80>>2]|0)|0;r=+JB(d+q|0,d+(q+12)|0)}else{q=c[(c[b+80>>2]|0)+4>>2]|0;b=c[a+80>>2]|0;r=+JB(q+(b*40|0)|0,q+(b*40|0)+12|0)}s=+g[253416];t=+g[253417];u=+g[253418];v=+g[a+68>>2]*s+ +g[a+72>>2]*t+ +g[a+76>>2]*u-(s*+g[253413]+t*+g[253414]+u*+g[253415]);do{if(v>0.0){u=+S(+r);t=-0.0-v;s=(+g[253542]+(+g[253530]*0.0+u*+g[253534]+ +g[253538]*t))/(+g[253544]+(+g[253532]*0.0+u*+g[253536]+ +g[253540]*t));t=s>1.0?1.0:s;if(!(t!=0.0)){w=0.0;break}s=+g[(c[4917436]|0)+28>>2];w=1.0-t*(s>20.0?20.0:s)}else{w=0.0}}while(0);a=qk[c[4886378]&7](w*+(c[(c[253412]|0)+88>>2]|0))|0;b=c[(c[253412]|0)+88>>2]|0;if((a|0)<0){e=0;f=b;h=c[4917438]|0;i=h+32|0;j=c[i>>2]|0;k=j+e|0;l=(k|0)<(f|0);m=f-1|0;n=l?k:m;o=(n|0)<0;p=o?0:n;return p|0}e=(a|0)<(b|0)?a:b-1|0;f=b;h=c[4917438]|0;i=h+32|0;j=c[i>>2]|0;k=j+e|0;l=(k|0)<(f|0);m=f-1|0;n=l?k:m;o=(n|0)<0;p=o?0:n;return p|0}function OS(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;b=i;i=i+40|0;d=b|0;e=b+16|0;f=c[a+4>>2]|0;if((f&2|0)!=0&(c[253510]|0)==0){h=(c[253512]&6|0)==0}else{h=0}if((f&512|0)==0){f=c[253412]|0;j=c[a+80>>2]|0;k=f;l=c[f+80>>2]|0}else{f=c[253412]|0;m=c[f+80>>2]|0;n=m|0;o=a+80|0;p=(c[o>>2]|0)%(c[n>>2]|0)|0;c[o>>2]=p;o=a+96|0;c[o>>2]=(c[o>>2]|0)%(c[n>>2]|0)|0;j=p;k=f;l=m}m=a+80|0;f=c[l>>2]|0;l=c[a+96>>2]|0;if((j|0)>=(f|0)|(j|0)<0){q=8}else{if((l|0)>=(f|0)|(l|0)<0){q=8}}if((q|0)==8){Tk[c[4886344]&255](1,104680,(r=i,i=i+24|0,c[r>>2]=l,c[r+8>>2]=j,c[r+16>>2]=k,r)|0);i=r;c[m>>2]=0;c[a+96>>2]=0}k=NS(a)|0;j=c[(c[253412]|0)+80+(k<<2)>>2]|0;k=j+4|0;l=c[k>>2]|0;f=c[m>>2]|0;p=c[a+96>>2]|0;do{if((c[a+64>>2]|0)==0){n=mS(l+(f*40|0)+24|0,+g[l+(f*40|0)+36>>2])|0;if((f|0)==(p|0)){if((n|0)==2){c[253820]=(c[253820]|0)+1;i=b;return}else if((n|0)==0){c[253818]=(c[253818]|0)+1;break}else if((n|0)==1){c[253819]=(c[253819]|0)+1;q=20;break}else{q=20;break}}if((n|0)!=(mS(l+(p*40|0)+24|0,+g[l+(p*40|0)+36>>2])|0)){q=20;break}if((n|0)==2){c[253820]=(c[253820]|0)+1;i=b;return}else if((n|0)==0){c[253818]=(c[253818]|0)+1;break}else{c[253819]=(c[253819]|0)+1;q=20;break}}else{q=20}}while(0);do{if((q|0)==20){s=+g[l+(p*40|0)>>2];t=+g[l+(f*40|0)>>2];g[e>>2]=s>2];s=+g[l+(f*40|0)+12>>2];g[e+12>>2]=t>s?t:s;s=+g[l+(p*40|0)+4>>2];t=+g[l+(f*40|0)+4>>2];g[e+4>>2]=s>2];s=+g[l+(f*40|0)+16>>2];g[e+16>>2]=t>s?t:s;s=+g[l+(p*40|0)+8>>2];t=+g[l+(f*40|0)+8>>2];g[e+8>>2]=s>2];s=+g[l+(f*40|0)+20>>2];g[e+20>>2]=t>s?t:s;n=kS(e|0)|0;if((n|0)==0){c[253821]=(c[253821]|0)+1;break}else if((n|0)==1){c[253822]=(c[253822]|0)+1;break}else{c[253823]=(c[253823]|0)+1;i=b;return}}}while(0);if(h){if((c[(c[4917346]|0)+32>>2]|0)>1){q=26}}else{q=26}if((q|0)==26){dS(1014516,a)}a:do{if((c[253649]&1|0)==0){q=c[k>>2]|0;e=c[m>>2]|0;f=a+68|0;g[d>>2]=+g[f>>2]+ +g[q+(e*40|0)+24>>2];g[d+4>>2]=+g[a+72>>2]+ +g[q+(e*40|0)+28>>2];g[d+8>>2]=+g[a+76>>2]+ +g[q+(e*40|0)+32>>2];l=c[253203]|0;p=c[l+224>>2]|0;if((p|0)<=1){u=0;v=f;break}s=+g[q+(e*40|0)+36>>2];e=c[l+228>>2]|0;l=1;while(1){q=0;while(1){t=+g[d+(q<<2)>>2];if(!(t-s<+g[e+(l*72|0)+16+(q<<2)>>2])){w=q;break}n=q+1|0;if(!(s+t>+g[e+(l*72|0)+4+(q<<2)>>2])){w=q;break}if((n|0)<3){q=n}else{w=n;break}}q=l+1|0;if((w|0)==3){u=l;v=f;break a}if((q|0)<(p|0)){l=q}else{u=0;v=f;break}}}else{u=0;v=a+68|0}}while(0);w=hS(v)|0;v=c[j+24>>2]|0;d=j+20|0;if((c[d>>2]|0)<=0){i=b;return}m=a+112|0;k=a+108|0;f=a+104|0;a=j+32|0;if(h){h=v;j=1;while(1){l=c[m>>2]|0;b:do{if((l|0)==0){p=c[k>>2]|0;if(!((p|0)>0&(p|0)<(c[297930]|0))){break}e=rR(p)|0;p=c[253342]|0;q=c[e+64>>2]|0;c:do{if((q|0)>0){n=h+4|0;o=0;while(1){x=c[e+68+(o<<2)>>2]|0;o=o+1|0;if((k$(x|0,n)|0)==0){break}if((o|0)>=(q|0)){break c}}o=c[x+64>>2]|0;if((o|0)==(p|0)){break}if((c[o+80>>2]|0)==0){break b}Tk[c[4886344]&255](1,140488,(r=i,i=i+16|0,c[r>>2]=o,c[r+8>>2]=e,r)|0);i=r;break b}}while(0);Tk[c[4886344]&255](1,164856,(r=i,i=i+16|0,c[r>>2]=h+4,c[r+8>>2]=e,r)|0);i=r}else{UT(l)|0}}while(0);if((j|0)>=(c[d>>2]|0)){break}h=h+100|0;j=j+1|0}i=b;return}else{y=v;z=0}while(1){v=c[m>>2]|0;d:do{if((v|0)==0){j=c[k>>2]|0;if(!((j|0)>0&(j|0)<(c[297930]|0))){A=c[1060648+(c[(c[y+72>>2]|0)+(((c[f>>2]|0)%(c[y+68>>2]|0)|0)<<2)>>2]<<2)>>2]|0;break}h=rR(j)|0;j=c[253342]|0;x=c[h+64>>2]|0;e:do{if((x|0)>0){l=y+4|0;p=0;while(1){B=c[h+68+(p<<2)>>2]|0;p=p+1|0;if((k$(B|0,l)|0)==0){break}if((p|0)>=(x|0)){break e}}p=c[B+64>>2]|0;if((p|0)==(j|0)){break}if((c[p+80>>2]|0)==0){A=p;break d}Tk[c[4886344]&255](1,140488,(r=i,i=i+16|0,c[r>>2]=p,c[r+8>>2]=h,r)|0);i=r;A=p;break d}}while(0);Tk[c[4886344]&255](1,164856,(r=i,i=i+16|0,c[r>>2]=y+4,c[r+8>>2]=h,r)|0);i=r;A=j}else{A=UT(v)|0}}while(0);AS((c[a>>2]|0)+(z*36|0)|0,A,u,0,0,w);v=z+1|0;if((v|0)>=(c[d>>2]|0)){break}y=y+100|0;z=v}i=b;return}function PS(d,f){d=d|0;f=f|0;var h=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,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,_=0,$=0,aa=0,ba=0,ca=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,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0.0,Oa=0.0,Pa=0.0,Qa=0.0,Ra=0.0,Sa=0.0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0;h=i;i=i+232|0;j=h|0;k=h+16|0;l=h+32|0;m=h+48|0;n=h+64|0;o=h+224|0;p=h+72|0;q=h+136|0;c[o>>2]=3368045;r$(p|0,d|0)|0;r=sg(p|0,46)|0;if((r|0)==0){s=o}else{a[r]=0;s=r+1|0}r=n;o=j;t=k;u=l;v=f+64|0;w=f+72|0;x=l|0;y=l+4|0;z=l+8|0;l=j|0;A=k|0;B=j+4|0;C=j+8|0;j=k+4|0;D=k+8|0;k=m|0;E=m+4|0;F=m+8|0;G=m+12|0;m=f+88|0;$B(q,84,164840,(H=i,i=i+16|0,c[H>>2]=p,c[H+8>>2]=s,H)|0)|0;i=H;Kk[c[4886365]&255](q,r)|0;q=c[n>>2]|0;if((q|0)!=0){a:do{if((c[q>>2]|0)==860898377){n=q;s=c[q+4>>2]|0;if((s|0)!=15){Tk[c[4886344]&255](2,156824,(H=i,i=i+24|0,c[H>>2]=d,c[H+8>>2]=s,c[H+16>>2]=15,H)|0);i=H;break}c[v>>2]=2;c[w>>2]=(c[w>>2]|0)+(c[q+104>>2]|0);s=Kk[c[4886347]&255](40,1)|0;p=s;c[f+80>>2]=p;I=q+76|0;J=q+80|0;K=q+84|0;L=q+96|0;M=q+100|0;N=c[I>>2]|0;if((N|0)<1){Tk[c[4886344]&255](2,154552,(H=i,i=i+8|0,c[H>>2]=d,H)|0);i=H;break}O=s;c[O>>2]=N;N=Kk[c[4886347]&255]((c[I>>2]|0)*40|0,1)|0;c[s+4>>2]=N;P=c[I>>2]|0;if((P|0)>0){Q=N;N=n+(c[q+92>>2]|0)|0;R=0;while(1){g[Q+36>>2]=+g[N+36>>2];g[Q>>2]=+g[N>>2];g[Q+12>>2]=+g[N+12>>2];g[Q+24>>2]=+g[N+24>>2];g[Q+4>>2]=+g[N+4>>2];g[Q+16>>2]=+g[N+16>>2];g[Q+28>>2]=+g[N+28>>2];g[Q+8>>2]=+g[N+8>>2];g[Q+20>>2]=+g[N+20>>2];g[Q+32>>2]=+g[N+32>>2];S=R+1|0;if((S|0)<(P|0)){Q=Q+40|0;N=N+56|0;R=S}else{break}}}c[s+8>>2]=c[J>>2];R=da((c[J>>2]|0)*48|0,c[I>>2]|0)|0;N=Kk[c[4886347]&255](R,1)|0;c[s+12>>2]=N;R=c[J>>2]|0;Q=da(c[I>>2]|0,R)|0;if((Q|0)>0){P=N;N=n+(c[L>>2]|0)|0;S=0;while(1){g[P>>2]=+g[N+64>>2];g[P+12>>2]=+g[N+76>>2];g[P+24>>2]=+g[N+88>>2];g[P+36>>2]=+g[N+100>>2];g[P+4>>2]=+g[N+68>>2];g[P+16>>2]=+g[N+80>>2];g[P+28>>2]=+g[N+92>>2];g[P+40>>2]=+g[N+104>>2];g[P+8>>2]=+g[N+72>>2];g[P+20>>2]=+g[N+84>>2];g[P+32>>2]=+g[N+96>>2];g[P+44>>2]=+g[N+108>>2];T=S+1|0;if((T|0)<(Q|0)){P=P+48|0;N=N+112|0;S=T}else{break}}}S=Kk[c[4886347]&255](R<<6,1)|0;c[s+16>>2]=S;if((c[J>>2]|0)>0){N=S;S=n+(c[L>>2]|0)|0;P=0;while(1){TB(N|0,S|0,64);Q=P+1|0;if((Q|0)<(c[J>>2]|0)){N=N+64|0;S=S+112|0;P=Q}else{break}}}P=s+20|0;c[P>>2]=c[K>>2];S=Kk[c[4886347]&255]((c[K>>2]|0)*100|0,1)|0;N=s+24|0;c[N>>2]=S;b:do{if((c[K>>2]|0)>0){J=S;L=n+(c[M>>2]|0)|0;R=0;while(1){Q=L+72|0;I=L+76|0;T=L+84|0;U=L+88|0;V=L+80|0;W=L+92|0;X=L+96|0;Y=L+100|0;Z=L+104|0;_=c[V>>2]|0;if((_|0)>999){$=22;break}aa=c[T>>2]|0;if((aa*3|0|0)>5999){$=24;break}c[J>>2]=6;c[J+96>>2]=p;ba=J+4|0;TB(ba,L+4|0,64);lC(ba)|0;ca=o$(ba|0)|0;do{if((ca|0)>2){ba=ca-2+(J+4)|0;if((a[ba]|0)!=95){break}a[ba]=0}}while(0);c[J+68>>2]=c[I>>2];ca=Kk[c[4886347]&255](c[I>>2]<<2,1)|0;c[J+72>>2]=ca;if((c[I>>2]|0)>0){ba=ca;ca=L+(c[W>>2]|0)|0;ea=0;while(1){fa=WT(ca|0,-1,1)|0;if((c[fa+80>>2]|0)==0){ga=c[fa+68>>2]|0}else{ga=0}c[ba>>2]=ga;fa=ea+1|0;if((fa|0)<(c[I>>2]|0)){ba=ba+4|0;ca=ca+68|0;ea=fa}else{break}}}ea=J+88|0;c[ea>>2]=(c[T>>2]|0)*3|0;ca=Kk[c[4886347]&255]((c[T>>2]|0)*12|0,1)|0;ba=J+92|0;c[ba>>2]=ca;if((c[T>>2]|0)>0){I=ca;ca=L+(c[U>>2]|0)|0;W=0;while(1){c[I>>2]=c[ca>>2];c[I+4>>2]=c[ca+4>>2];c[I+8>>2]=c[ca+8>>2];fa=W+1|0;if((fa|0)<(c[T>>2]|0)){I=I+12|0;ca=ca+12|0;W=fa}else{break}}}W=J+76|0;c[W>>2]=c[V>>2];ca=da((c[V>>2]|0)*48|0,c[Q>>2]|0)|0;I=Kk[c[4886347]&255](ca,1)|0;ca=J+80|0;c[ca>>2]=I;T=c[V>>2]|0;U=da(c[Q>>2]|0,T)|0;if((U|0)>0){fa=I;I=L+(c[Y>>2]|0)|0;ha=0;while(1){g[fa>>2]=+(b[I>>1]|0)*.015625;g[fa+4>>2]=+(b[I+2>>1]|0)*.015625;g[fa+8>>2]=+(b[I+4>>1]|0)*.015625;ia=e[I+6>>1]|0;ja=ia>>>8<<2;ka=ia<<2;ia=1195840+((ka&1020)<<2)|0;g[fa+12>>2]=+g[1195840+((ja+256&1020)<<2)>>2]*+g[ia>>2];g[fa+16>>2]=+g[1195840+(ja<<2)>>2]*+g[ia>>2];g[fa+20>>2]=+g[1195840+((ka+256&1020)<<2)>>2];ka=ha+1|0;if((ka|0)<(U|0)){fa=fa+48|0;I=I+8|0;ha=ka}else{break}}}ha=Kk[c[4886347]&255](T<<3,1)|0;I=J+84|0;c[I>>2]=ha;fa=c[V>>2]|0;if((fa|0)>0){U=ha;ha=L+(c[X>>2]|0)|0;Y=0;while(1){g[U>>2]=+g[ha>>2];g[U+4>>2]=+g[ha+4>>2];Q=Y+1|0;if((Q|0)<(fa|0)){U=U+8|0;ha=ha+8|0;Y=Q}else{break}}}n$(o|0,0,12)|0;n$(t|0,0,12)|0;n$(u|0,0,12)|0;Y=c[ca>>2]|0;ha=c[W>>2]|0;U=c[O>>2]|0;fa=da(U,ha)|0;if((fa|0)>0){X=(fa|0)>1?fa:1;if((c[(c[4917366]|0)+32>>2]|0)==0){V=Y;T=0;while(1){n$(V+24|0,0,24)|0;Q=T+1|0;if((Q|0)<(fa|0)){V=V+48|0;T=Q}else{break}}}else{T=Y;V=0;while(1){Q=V+1|0;n$(T+12|0,0,36)|0;if((Q|0)<(fa|0)){T=T+48|0;V=Q}else{break}}}la=Y+(X*48|0)|0}else{la=Y}if((U|0)>0){V=la+12|0;T=la+16|0;fa=la+20|0;Q=0;ka=ha;ia=Y;ja=U;ma=ha;na=Y;oa=c[ea>>2]|0;while(1){if((oa|0)>0){pa=c[ba>>2]|0;qa=0;ra=ka;sa=ia;ta=c[(c[4917366]|0)+32>>2]|0;while(1){ua=da(ra,Q)|0;va=c[pa>>2]|0;wa=pa+4|0;xa=c[wa>>2]|0;ya=pa+8|0;za=c[ya>>2]|0;Aa=c[I>>2]|0;if((ta|0)==0){g[x>>2]=+g[V>>2];g[y>>2]=+g[T>>2];g[z>>2]=+g[fa>>2]}else{g[z>>2]=0.0;g[y>>2]=0.0;g[x>>2]=0.0}iS(l,A,x,sa+((va+ua|0)*48|0)|0,sa+((xa+ua|0)*48|0)|0,sa+((za+ua|0)*48|0)|0,Aa+(va<<3)|0,Aa+(xa<<3)|0,Aa+(za<<3)|0);Ba=c[W>>2]|0;za=da(Ba,Q)|0;Ca=c[ca>>2]|0;Aa=c[(c[4917366]|0)+32>>2]|0;if((Aa|0)==0){xa=(c[pa>>2]|0)+za|0;va=Ca+(xa*48|0)+24|0;g[va>>2]=+g[va>>2]+ +g[l>>2];va=Ca+(xa*48|0)+28|0;g[va>>2]=+g[va>>2]+ +g[B>>2];va=Ca+(xa*48|0)+32|0;g[va>>2]=+g[va>>2]+ +g[C>>2];va=Ca+(xa*48|0)+36|0;g[va>>2]=+g[va>>2]+ +g[A>>2];va=Ca+(xa*48|0)+40|0;g[va>>2]=+g[va>>2]+ +g[j>>2];va=Ca+(xa*48|0)+44|0;g[va>>2]=+g[va>>2]+ +g[D>>2];va=(c[wa>>2]|0)+za|0;wa=Ca+(va*48|0)+24|0;g[wa>>2]=+g[wa>>2]+ +g[l>>2];wa=Ca+(va*48|0)+28|0;g[wa>>2]=+g[wa>>2]+ +g[B>>2];wa=Ca+(va*48|0)+32|0;g[wa>>2]=+g[wa>>2]+ +g[C>>2];wa=Ca+(va*48|0)+36|0;g[wa>>2]=+g[wa>>2]+ +g[A>>2];wa=Ca+(va*48|0)+40|0;g[wa>>2]=+g[wa>>2]+ +g[j>>2];wa=Ca+(va*48|0)+44|0;g[wa>>2]=+g[wa>>2]+ +g[D>>2];wa=(c[ya>>2]|0)+za|0;ya=Ca+(wa*48|0)+24|0;g[ya>>2]=+g[ya>>2]+ +g[l>>2];ya=Ca+(wa*48|0)+28|0;g[ya>>2]=+g[ya>>2]+ +g[B>>2];ya=Ca+(wa*48|0)+32|0;g[ya>>2]=+g[ya>>2]+ +g[C>>2];ya=Ca+(wa*48|0)+36|0;g[ya>>2]=+g[ya>>2]+ +g[A>>2];ya=Ca+(wa*48|0)+40|0;g[ya>>2]=+g[ya>>2]+ +g[j>>2];ya=Ca+(wa*48|0)+44|0;g[ya>>2]=+g[ya>>2]+ +g[D>>2]}else{ya=0;do{wa=(c[pa+(ya<<2)>>2]|0)+za|0;va=Ca+(wa*48|0)+24|0;g[va>>2]=+g[va>>2]+ +g[l>>2];va=Ca+(wa*48|0)+28|0;g[va>>2]=+g[va>>2]+ +g[B>>2];va=Ca+(wa*48|0)+32|0;g[va>>2]=+g[va>>2]+ +g[C>>2];va=Ca+(wa*48|0)+36|0;g[va>>2]=+g[va>>2]+ +g[A>>2];va=Ca+(wa*48|0)+40|0;g[va>>2]=+g[va>>2]+ +g[j>>2];va=Ca+(wa*48|0)+44|0;g[va>>2]=+g[va>>2]+ +g[D>>2];va=Ca+(wa*48|0)+12|0;g[va>>2]=+g[va>>2]+ +g[x>>2];va=Ca+(wa*48|0)+16|0;g[va>>2]=+g[va>>2]+ +g[y>>2];va=Ca+(wa*48|0)+20|0;g[va>>2]=+g[va>>2]+ +g[z>>2];ya=ya+1|0;}while((ya|0)<3)}ya=qa+3|0;Da=c[ea>>2]|0;if((ya|0)<(Da|0)){pa=pa+12|0;qa=ya;ra=Ba;sa=Ca;ta=Aa}else{break}}Ea=Ba;Fa=Ca;Ga=c[O>>2]|0;Ha=Ba;Ia=Ca;Ja=Da}else{Ea=ka;Fa=ia;Ga=ja;Ha=ma;Ia=na;Ja=oa}ta=Q+1|0;if((ta|0)<(Ga|0)){Q=ta;ka=Ea;ia=Fa;ja=Ga;ma=Ha;na=Ia;oa=Ja}else{Ka=Ha;La=Ga;Ma=Ia;break}}}else{Ka=ha;La=U;Ma=Y}if((da(Ka,La)|0)>0){oa=Ma;na=0;while(1){+wB(oa+24|0);+wB(oa+36|0);+wB(oa+12|0);ma=na+1|0;if((ma|0)<(da(c[O>>2]|0,c[W>>2]|0)|0)){oa=oa+48|0;na=ma}else{break}}}na=R+1|0;if((na|0)<(c[K>>2]|0)){J=J+100|0;L=L+(c[Z>>2]|0)|0;R=na}else{break b}}if(($|0)==22){R=L+4|0;J=(a[R]|0)==0?162184:R;Tk[c[4886344]&255](2,152576,(H=i,i=i+32|0,c[H>>2]=d,c[H+8>>2]=999,c[H+16>>2]=J,c[H+24>>2]=_,H)|0);i=H;break a}else if(($|0)==24){J=L+4|0;R=(a[J]|0)==0?162184:J;Tk[c[4886344]&255](2,150376,(H=i,i=i+32|0,c[H>>2]=d,c[H+8>>2]=1999,c[H+16>>2]=R,c[H+24>>2]=aa,H)|0);i=H;break a}}}while(0);K=c[P>>2]|0;c[s+28>>2]=K;M=Kk[c[4886347]&255](K*36|0,1)|0;c[s+32>>2]=M;if((c[P>>2]|0)>0){K=c[N>>2]|0;n=M;M=0;while(1){S=K+76|0;R=c[S>>2]|0;J=da(c[O>>2]|0,R)|0;na=J*12|0;oa=J<<2;J=na+oa|0;W=J+oa|0;oa=W+(R<<3)|0;R=jk[c[4886350]&255](oa)|0;Y=R;U=R+na|0;ha=R+J|0;ma=R+W|0;ja=c[S>>2]|0;if((da(c[O>>2]|0,ja)|0)>0){ia=c[K+80>>2]|0;ka=0;while(1){g[Y+(ka*12|0)>>2]=+g[ia>>2];g[Y+(ka*12|0)+4>>2]=+g[ia+4>>2];g[Y+(ka*12|0)+8>>2]=+g[ia+8>>2];Q=ia+12|0;c[U+(ka<<2)>>2]=JU(Q)|0;Na=+g[ia+16>>2];ea=ia+32|0;Oa=+g[ea>>2];Pa=+g[ia+20>>2];ca=ia+28|0;Qa=+g[ca>>2];Ra=+g[ia+24>>2];Sa=+g[Q>>2];g[k>>2]=Ra;g[E>>2]=+g[ca>>2];g[F>>2]=+g[ea>>2];g[G>>2]=(Na*Oa-Pa*Qa)*+g[ia+36>>2]+(Pa*Ra-Oa*Sa)*+g[ia+40>>2]+(Qa*Sa-Na*Ra)*+g[ia+44>>2]<0.0?-1.0:1.0;c[ha+(ka<<2)>>2]=IU(k)|0;ea=ka+1|0;ca=c[S>>2]|0;if((ea|0)<(da(c[O>>2]|0,ca)|0)){ia=ia+48|0;ka=ea}else{Ta=ca;break}}}else{Ta=ja}if((Ta|0)>0){ka=c[K+84>>2]|0;ia=0;while(1){g[ma+(ia<<3)>>2]=+g[ka>>2];g[ma+(ia<<3)+4>>2]=+g[ka+4>>2];ha=ia+1|0;if((ha|0)<(Ta|0)){ka=ka+8|0;ia=ha}else{break}}}c[n>>2]=12;c[n+4>>2]=p;c[n+8>>2]=K;ia=K+88|0;c[n+12>>2]=c[ia>>2];c[n+16>>2]=c[S>>2];c[n+20>>2]=0;c[n+24>>2]=c[S>>2];ka=K+4|0;ma=pC(148224,(H=i,i=i+8|0,c[H>>2]=ka,H)|0)|0;i=H;ja=LU(ma,R,oa,0)|0;c[n+28>>2]=ja;c[ja+72>>2]=0;c[ja+76>>2]=na;c[ja+96>>2]=J;c[ja+80>>2]=W;c[ja+100>>2]=12;c[ja+104>>2]=4;c[ja+124>>2]=4;c[ja+108>>2]=8;c[ja+128>>2]=(c[S>>2]|0)*12|0;c[ja+132>>2]=c[S>>2]<<2;vk[c[4886351]&511](R);ja=pC(145568,(H=i,i=i+8|0,c[H>>2]=ka,H)|0)|0;i=H;c[n+32>>2]=OU(ja,c[ia>>2]|0,c[K+92>>2]|0,0)|0;ia=M+1|0;if((ia|0)<(c[P>>2]|0)){K=K+100|0;n=n+36|0;M=ia}else{break}}}vk[c[4886366]&511](c[r>>2]|0);c[m>>2]=(c[m>>2]|0)+1;Ua=c[f+68>>2]|0;Va=84;Wa=0;Xa=64;Ya=0;i=h;return Ua|0}else{Tk[c[4886344]&255](2,140448,(H=i,i=i+8|0,c[H>>2]=d,H)|0);i=H}}while(0);vk[c[4886366]&511](c[r>>2]|0)}c[v>>2]=0;Ua=0;Va=84;Wa=0;Xa=64;Ya=0;i=h;return Ua|0}function QS(b,d){b=b|0;d=d|0;var e=0,f=0,h=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,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,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;e=i;i=i+8|0;f=e|0;h=f;j=Kk[c[4886365]&255](b,h)|0;k=c[f>>2]|0;f=k;if((k|0)==0){c[d+64>>2]=0;l=0;i=e;return l|0}a:do{if((c[k>>2]|0)==894256210){m=k;n=k+4|0;o=c[n>>2]|0;if((o|0)!=2){Tk[c[4886344]&255](2,179488,(p=i,i=i+24|0,c[p>>2]=b,c[p+8>>2]=o,c[p+16>>2]=2,p)|0);i=p;vk[c[4886366]&511](c[h>>2]|0);break}o=c[k+100>>2]|0;if((o|0)>(j|0)){Tk[c[4886344]&255](2,175056,(p=i,i=i+8|0,c[p>>2]=b,p)|0);i=p;vk[c[4886366]&511](c[h>>2]|0);break}c[d+64>>2]=3;q=k+72|0;r=k+76|0;s=k+80|0;if((c[s>>2]|0)<0){t=c[r>>2]|0;u=(da((t*24|0)+16|0,c[q>>2]|0)|0)+o|0;v=t}else{u=o;v=c[r>>2]|0}do{if((v|0)>=0){if(((da(c[q>>2]|0,(v*48|0)+56|0)|0)+104|0)>>>0>u>>>0){break}o=d+72|0;c[o>>2]=(c[o>>2]|0)+u;o=Kk[c[4886347]&255](u,1)|0;c[d+84>>2]=o;c[o>>2]=c[k>>2];c[o+4>>2]=c[n>>2];TB(o+8|0,k+8|0,64);t=o+72|0;c[t>>2]=c[q>>2];w=o+76|0;c[w>>2]=c[r>>2];x=c[k+84>>2]|0;y=o+84|0;c[y>>2]=x;z=o+92|0;c[z>>2]=c[k+92>>2];c[d+88>>2]=x;if((c[t>>2]|0)<1){Tk[c[4886344]&255](2,168760,(p=i,i=i+8|0,c[p>>2]=b,p)|0);i=p;vk[c[4886366]&511](c[h>>2]|0);break a}x=o+104|0;A=o;c[o+80>>2]=104;B=c[s>>2]|0;if((B|0)<0){C=0;D=x;E=m+(-B|0)|0;while(1){g[D>>2]=+g[E>>2];g[D+12>>2]=+g[E+12>>2];g[D+24>>2]=+g[E+24>>2];g[D+4>>2]=+g[E+4>>2];g[D+16>>2]=+g[E+16>>2];g[D+28>>2]=+g[E+28>>2];g[D+8>>2]=+g[E+8>>2];g[D+20>>2]=+g[E+20>>2];g[D+32>>2]=+g[E+32>>2];g[D+36>>2]=+g[E+36>>2];a[D+40|0]=0;if((c[w>>2]|0)>0){F=0;while(1){$O(D+56+(F*48|0)|0,E+40+(F*24|0)|0);G=F+1|0;if((G|0)<(c[w>>2]|0)){F=G}else{H=G;break}}}else{H=0}F=D+56+(H*48|0)|0;G=C+1|0;if((G|0)<(c[t>>2]|0)){C=G;D=F;E=E+40+(H*24|0)|0}else{I=F;break}}}else{E=0;D=x;C=m+B|0;while(1){g[D>>2]=+g[C>>2];g[D+12>>2]=+g[C+12>>2];g[D+24>>2]=+g[C+24>>2];g[D+4>>2]=+g[C+4>>2];g[D+16>>2]=+g[C+16>>2];g[D+28>>2]=+g[C+28>>2];g[D+8>>2]=+g[C+8>>2];g[D+20>>2]=+g[C+20>>2];g[D+32>>2]=+g[C+32>>2];g[D+36>>2]=+g[C+36>>2];TB(D+40|0,C+40|0,16);F=c[w>>2]|0;G=F*48|0;if((G|0)!=0){J=G>>>2;G=0;do{g[D+56+(G<<2)>>2]=+g[C+56+(G<<2)>>2];G=G+1|0;}while((G|0)<(J|0))}J=D+56+(F*48|0)|0;G=E+1|0;if((G|0)<(c[t>>2]|0)){E=G;D=J;C=C+56+(F*48|0)|0}else{I=J;break}}}C=I;c[o+88>>2]=I-A;b:do{if((c[y>>2]|0)>0){D=o+u|0;E=0;t=C;w=m+(c[k+88>>2]|0)|0;c:while(1){B=t+12|0;if(B>>>0>D>>>0){K=29;break}x=c[w>>2]|0;J=t|0;c[J>>2]=x;G=B;B=t;c[t+4>>2]=12;if((x|0)>0){x=0;L=G;M=w+(c[w+4>>2]|0)|0;while(1){N=L+168|0;if(N>>>0>D>>>0){K=33;break c}c[L>>2]=7;O=L+4|0;TB(O,M+4|0,64);P=L+68|0;TB(P,M+68|0,64);Q=L;c[L+136>>2]=A-Q;R=c[M+140>>2]|0;S=L+140|0;c[S>>2]=R;T=c[M+148>>2]|0;U=L+148|0;c[U>>2]=T;if((R|0)>999){K=35;break c}if((T*3|0|0)>5999){K=37;break c}lC(O)|0;V=WT(P,-1,1)|0;if((c[V+80>>2]|0)==0){c[L+132>>2]=c[V+68>>2]}else{c[L+132>>2]=0}V=N;c[L+144>>2]=168;if((c[S>>2]|0)>0){N=0;P=V;W=M+(c[M+144>>2]|0)|0;while(1){X=c[W+20>>2]|0;if((X|0)<0){K=45;break c}if((P+44+((X*20|0)-20)|0)>>>0>D>>>0){K=45;break c}g[P>>2]=+g[W>>2];g[P+4>>2]=+g[W+4>>2];g[P+8>>2]=+g[W+8>>2];g[P+12>>2]=+g[W+12>>2];g[P+16>>2]=+g[W+16>>2];Y=P+20|0;c[Y>>2]=X;Z=P+24|0;_=W+24|0;if((X|0)>0){X=0;$=Z;aa=_;while(1){c[$>>2]=c[aa>>2];g[$+4>>2]=+g[aa+4>>2];g[$+8>>2]=+g[aa+8>>2];g[$+12>>2]=+g[aa+12>>2];g[$+16>>2]=+g[aa+16>>2];ba=$+20|0;ca=aa+20|0;ea=X+1|0;if((ea|0)<(c[Y>>2]|0)){X=ea;$=ba;aa=ca}else{fa=ba;ga=ca;break}}}else{fa=Z;ga=_}aa=fa;$=N+1|0;if(($|0)<(c[S>>2]|0)){N=$;P=aa;W=ga}else{ha=aa;break}}}else{ha=V}W=ha;c[L+152>>2]=ha-Q;P=c[U>>2]|0;if((P|0)<0){K=53;break c}if((W+(P*12|0)|0)>>>0>D>>>0){K=53;break c}if((P|0)>0){P=0;N=W;S=M+(c[M+152>>2]|0)|0;while(1){c[N>>2]=c[S>>2];c[N+4>>2]=c[S+4>>2];c[N+8>>2]=c[S+8>>2];aa=N+12|0;$=P+1|0;if(($|0)<(c[U>>2]|0)){P=$;N=aa;S=S+12|0}else{ia=aa;break}}}else{ia=W}c[L+164>>2]=ia-Q;S=ia;N=x+1|0;if((N|0)<(c[J>>2]|0)){x=N;L=S;M=M+(c[M+164>>2]|0)|0}else{ja=S;break}}}else{ja=G}c[t+8>>2]=ja-B;M=ja;L=E+1|0;if((L|0)<(c[y>>2]|0)){E=L;t=M;w=w+(c[w+8>>2]|0)|0}else{ka=M;break b}}if((K|0)==29){Tk[c[4886344]&255](2,171584,(p=i,i=i+8|0,c[p>>2]=b,p)|0);i=p;vk[c[4886366]&511](c[h>>2]|0);break a}else if((K|0)==33){Tk[c[4886344]&255](2,171584,(p=i,i=i+8|0,c[p>>2]=b,p)|0);i=p;vk[c[4886366]&511](c[h>>2]|0);break a}else if((K|0)==35){w=(a[O]|0)==0?162184:O;Tk[c[4886344]&255](2,165312,(p=i,i=i+32|0,c[p>>2]=b,c[p+8>>2]=999,c[p+16>>2]=w,c[p+24>>2]=R,p)|0);i=p;vk[c[4886366]&511](c[h>>2]|0);break a}else if((K|0)==37){w=(a[O]|0)==0?162184:O;Tk[c[4886344]&255](2,159200,(p=i,i=i+32|0,c[p>>2]=b,c[p+8>>2]=1999,c[p+16>>2]=w,c[p+24>>2]=T,p)|0);i=p;vk[c[4886366]&511](c[h>>2]|0);break a}else if((K|0)==45){Tk[c[4886344]&255](2,171584,(p=i,i=i+8|0,c[p>>2]=b,p)|0);i=p;vk[c[4886366]&511](c[h>>2]|0);break a}else if((K|0)==53){Tk[c[4886344]&255](2,171584,(p=i,i=i+8|0,c[p>>2]=b,p)|0);i=p;vk[c[4886366]&511](c[h>>2]|0);break a}}else{ka=C}}while(0);C=ka;c[o+96>>2]=ka-A;y=c[z>>2]|0;do{if((y|0)>=0){if((C+(y*36|0)|0)>>>0>(o+u|0)>>>0){break}if((y|0)>0){w=0;t=C;E=m+(c[k+96>>2]|0)|0;while(1){c[t>>2]=c[E>>2];TB(t+4|0,E+4|0,32);D=t+36|0;F=w+1|0;if((F|0)<(c[z>>2]|0)){w=F;t=D;E=E+36|0}else{la=D;break}}}else{la=C}c[o+100>>2]=la-A;vk[c[4886366]&511](c[h>>2]|0);l=c[d+68>>2]|0;i=e;return l|0}}while(0);Tk[c[4886344]&255](2,171584,(p=i,i=i+8|0,c[p>>2]=b,p)|0);i=p;vk[c[4886366]&511](c[h>>2]|0);break a}}while(0);Tk[c[4886344]&255](2,171584,(p=i,i=i+8|0,c[p>>2]=b,p)|0);i=p;vk[c[4886366]&511](c[h>>2]|0)}else{vk[c[4886366]&511](f)}}while(0);Tk[c[4886344]&255](2,126216,(p=i,i=i+8|0,c[p>>2]=b,p)|0);i=p;c[d+64>>2]=0;l=0;i=e;return l|0}function RS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+8|0;e=d|0;f=e;g=Kk[c[4886365]&255](a,f)|0;h=c[e>>2]|0;if((h|0)==0){c[b+64>>2]=0;j=0;i=d;return j|0}e=$S(b,h,g,a)|0;vk[c[4886366]&511](c[f>>2]|0);if((e|0)==0){Tk[c[4886344]&255](2,115816,(e=i,i=i+8|0,c[e>>2]=a,e)|0);i=e;c[b+64>>2]=0;j=0;i=d;return j|0}else{j=c[b+68>>2]|0;i=d;return j|0}return 0}function SS(a){a=a|0;var b=0;if((a|0)>0&(c[254852]|0)>(a|0)){b=1015312+(a<<2)|0}else{b=1015312}return c[b>>2]|0}function TS(){var a=0,b=0,d=0;if((c[254852]|0)==1024){a=0;return a|0}b=Kk[c[4886347]&255](92,1)|0;d=b;c[b+68>>2]=c[254852];c[1015312+(c[254852]<<2)>>2]=d;c[254852]=(c[254852]|0)+1;a=d;return a|0}function US(b){b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;i=i+128|0;e=d|0;f=d+64|0;a:do{if((b|0)==0){g=3}else{if((a[b]|0)==0){g=3;break}if((o$(b|0)|0)>>>0>63>>>0){Tk[c[4886344]&255](0,62424,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=0;break}k=c[254852]|0;do{if((k|0)>1){l=1;while(1){m=c[1015312+(l<<2)>>2]|0;n=l+1|0;if((k$(m|0,b)|0)==0){g=9;break}if((n|0)<(k|0)){l=n}else{g=10;break}}if((g|0)==9){j=(c[m+64>>2]|0)==0?0:l;break a}else if((g|0)==10){if((k|0)==1024){break}else{o=n;g=11;break}}}else{o=1;g=11}}while(0);do{if((g|0)==11){k=Kk[c[4886347]&255](92,1)|0;p=k;q=k+68|0;c[q>>2]=c[254852];c[1015312+(c[254852]<<2)>>2]=p;c[254852]=(c[254852]|0)+1;if((k|0)==0){break}TB(k,b,64);MP();c[k+64>>2]=0;c[k+88>>2]=0;TB(e,b,64);k=RB(e)|0;b:do{if((a[k]|0)==0){r=-1;s=0;t=o}else{u=0;while(1){v=u+1|0;if((VB(k,c[12168+(u<<3)>>2]|0)|0)==0){break}if((v|0)<3){u=v}else{r=-1;s=0;t=o;break b}}if((Kk[c[12172+(u<<3)>>2]&255](e,p)|0)==0){SB(b,e,64);r=u;s=1;t=0;break}else{j=c[q>>2]|0;break a}}}while(0);q=t;k=0;while(1){if((k|0)==(r|0)){w=q}else{l=c[12168+(k<<3)>>2]|0;$B(f,64,164840,(h=i,i=i+16|0,c[h>>2]=e,c[h+8>>2]=l,h)|0)|0;i=h;x=Kk[c[12172+(k<<3)>>2]&255](f,p)|0;if((x|0)==0){w=0}else{break}}l=k+1|0;if((l|0)<3){q=w;k=l}else{j=w;break a}}if((s|0)==0){j=x;break a}Tk[c[4886344]&255](1,48608,(h=i,i=i+16|0,c[h>>2]=b,c[h+8>>2]=f,h)|0);i=h;j=x;break a}}while(0);Tk[c[4886344]&255](2,54744,(h=i,i=i+8|0,c[h>>2]=b,h)|0);i=h;j=0}}while(0);if((g|0)==3){Tk[c[4886344]&255](0,105736,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;j=0}i=d;return j|0}function VS(a){a=a|0;YR();m$(a|0,20480800,11332)|0;MP();c[253181]=0;n$(1012728,-2|0,20)|0;xQ();mT();c[253180]=1;return}function WS(){var a=0;c[254852]=0;a=Kk[c[4886347]&255](92,1)|0;c[a+68>>2]=c[254852];c[1015312+(c[254852]<<2)>>2]=a;c[254852]=(c[254852]|0)+1;c[a+64>>2]=0;return}function XS(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;a=i;if((c[254852]|0)>1){b=1;d=0;while(1){e=c[1015312+(b<<2)>>2]|0;f=e+72|0;Tk[c[4886344]&255](0,44384,(g=i,i=i+24|0,c[g>>2]=c[f>>2],c[g+8>>2]=1,c[g+16>>2]=e,g)|0);i=g;e=(c[f>>2]|0)+d|0;f=b+1|0;if((f|0)<(c[254852]|0)){b=f;d=e}else{h=e;break}}}else{h=0}Tk[c[4886344]&255](0,183432,(g=i,i=i+8|0,c[g>>2]=h,g)|0);i=g;i=a;return}function YS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0;f=c[a+72>>2]|0;h=(f|0)>(b|0)?b:f-1|0;f=a;b=c[a+92>>2]|0;a:do{if((b|0)>0){i=0;j=f+(c[a+96>>2]|0)|0;while(1){if((k$(j+4|0,d)|0)==0){break}k=i+1|0;if((k|0)<(b|0)){i=k;j=j+36|0}else{break a}}i=(da(56+((c[a+76>>2]|0)*48|0)|0,h)|0)+(c[a+80>>2]|0)|0;k=c[j>>2]|0;l=f+(i+56)|0;g[e+12>>2]=+g[l+(k*48|0)>>2];g[e+16>>2]=+g[l+(k*48|0)+16>>2];g[e+20>>2]=+g[l+(k*48|0)+32>>2];g[e+24>>2]=+g[l+(k*48|0)+4>>2];g[e+28>>2]=+g[l+(k*48|0)+20>>2];g[e+32>>2]=+g[l+(k*48|0)+36>>2];g[e+36>>2]=+g[l+(k*48|0)+8>>2];g[e+40>>2]=+g[l+(k*48|0)+24>>2];g[e+44>>2]=+g[l+(k*48|0)+40>>2];g[e>>2]=+g[l+(k*48|0)+12>>2];g[e+4>>2]=+g[l+(k*48|0)+28>>2];g[e+8>>2]=+g[l+(k*48|0)+44>>2];return}}while(0);CB(e+12|0);g[e+8>>2]=0.0;g[e+4>>2]=0.0;g[e>>2]=0.0;return}function ZS(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;h=h|0;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.0;j=i;i=i+96|0;k=j|0;l=j+48|0;if((b|0)>0&(c[254852]|0)>(b|0)){m=1015312+(b<<2)|0}else{m=1015312}b=c[m>>2]|0;m=c[b+80>>2]|0;a:do{if((m|0)==0){n=c[b+64>>2]|0;if((n|0)==4){o=fT(a,c[b+84>>2]|0,d,e,f,h)|0;p=48;q=0;r=48;s=0;i=j;return o|0}else if((n|0)==3){n=b+84|0;YS(c[n>>2]|0,d,h,k);YS(c[n>>2]|0,e,h,l);t=k;u=l;break}else{CB(a+12|0);g[a+8>>2]=0.0;g[a+4>>2]=0.0;g[a>>2]=0.0;o=0;p=48;q=0;r=48;s=0;i=j;return o|0}}else{n=c[m>>2]|0;v=c[m+8>>2]|0;w=(v|0)>0;b:do{if(w){x=da((n|0)>(d|0)?d:n-1|0,v)|0;y=0;z=(c[m+12>>2]|0)+(x*48|0)|0;x=c[m+16>>2]|0;while(1){if((k$(x|0,h)|0)==0){A=z;break}B=y+1|0;if((B|0)<(v|0)){y=B;z=z+48|0;x=x+64|0}else{A=0;break}}if(!w){break}x=da((n|0)>(e|0)?e:n-1|0,v)|0;z=0;y=(c[m+12>>2]|0)+(x*48|0)|0;x=c[m+16>>2]|0;while(1){if((k$(x|0,h)|0)==0){break}B=z+1|0;if((B|0)<(v|0)){z=B;y=y+48|0;x=x+64|0}else{break b}}if(!((A|0)==0|(y|0)==0)){t=A;u=y;break a}}}while(0);CB(a+12|0);g[a+8>>2]=0.0;g[a+4>>2]=0.0;g[a>>2]=0.0;o=0;p=48;q=0;r=48;s=0;i=j;return o|0}}while(0);C=1.0-f;g[a>>2]=C*+g[t>>2]+ +g[u>>2]*f;A=a+12|0;g[A>>2]=C*+g[t+12>>2]+ +g[u+12>>2]*f;h=a+24|0;g[h>>2]=C*+g[t+24>>2]+ +g[u+24>>2]*f;m=a+36|0;g[m>>2]=C*+g[t+36>>2]+ +g[u+36>>2]*f;g[a+4>>2]=C*+g[t+4>>2]+ +g[u+4>>2]*f;g[a+16>>2]=C*+g[t+16>>2]+ +g[u+16>>2]*f;g[a+28>>2]=C*+g[t+28>>2]+ +g[u+28>>2]*f;g[a+40>>2]=C*+g[t+40>>2]+ +g[u+40>>2]*f;g[a+8>>2]=C*+g[t+8>>2]+ +g[u+8>>2]*f;g[a+20>>2]=C*+g[t+20>>2]+ +g[u+20>>2]*f;g[a+32>>2]=C*+g[t+32>>2]+ +g[u+32>>2]*f;g[a+44>>2]=C*+g[t+44>>2]+ +g[u+44>>2]*f;+wB(A);+wB(h);+wB(m);o=1;p=48;q=0;r=48;s=0;i=j;return o|0}function _S(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;if((a|0)>0&(c[254852]|0)>(a|0)){e=1015312+(a<<2)|0}else{e=1015312}a=c[e>>2]|0;e=c[a+64>>2]|0;do{if((e|0)==2){f=c[(c[a+80>>2]|0)+4>>2]|0;g[b>>2]=+g[f>>2];g[b+4>>2]=+g[f+4>>2];g[b+8>>2]=+g[f+8>>2];g[d>>2]=+g[f+12>>2];g[d+4>>2]=+g[f+16>>2];g[d+8>>2]=+g[f+20>>2];return}else if((e|0)==1){f=c[a+76>>2]|0;g[b>>2]=+g[f>>2];g[b+4>>2]=+g[f+4>>2];g[b+8>>2]=+g[f+8>>2];g[d>>2]=+g[f+12>>2];g[d+4>>2]=+g[f+16>>2];g[d+8>>2]=+g[f+20>>2];return}else if((e|0)==4){f=c[(c[a+84>>2]|0)+76>>2]|0;if((f|0)==0){break}g[b>>2]=+g[f>>2];g[b+4>>2]=+g[f+4>>2];g[b+8>>2]=+g[f+8>>2];g[d>>2]=+g[f+12>>2];g[d+4>>2]=+g[f+16>>2];g[d+8>>2]=+g[f+20>>2];return}else if((e|0)==3){f=c[a+84>>2]|0;h=c[f+80>>2]|0;g[b>>2]=+g[f+h>>2];g[b+4>>2]=+g[f+(h+4)>>2];g[b+8>>2]=+g[f+(h+8)>>2];g[d>>2]=+g[f+(h+12)>>2];g[d+4>>2]=+g[f+(h+16)>>2];g[d+8>>2]=+g[f+(h+20)>>2];return}}while(0);g[b+8>>2]=0.0;g[b+4>>2]=0.0;g[b>>2]=0.0;g[d+8>>2]=0.0;g[d+4>>2]=0.0;g[d>>2]=0.0;return}function $S(b,d,f,h){b=b|0;d=d|0;f=f|0;h=h|0;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,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,_=0,$=0,aa=0,ba=0,ca=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.0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0.0,Na=0.0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0.0,Va=0,Wa=0.0,Xa=0,Ya=0.0,Za=0,_a=0.0,$a=0,ab=0.0,bb=0,cb=0.0,db=0,eb=0.0,fb=0,gb=0.0,hb=0,ib=0.0,jb=0,kb=0.0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0;j=i;i=i+6400|0;k=j|0;l=j+6208|0;m=j+6256|0;n=j+6304|0;o=j+6352|0;p=j+6144|0;if(f>>>0<124>>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}if((kC(d,104e3,16)|0)!=0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}v=c[d+16>>2]|0;if((v|0)!=2){Tk[c[4886344]&255](2,164680,(w=i,i=i+24|0,c[w>>2]=h,c[w+8>>2]=v,c[w+16>>2]=2,w)|0);i=w;q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}v=d+20|0;x=c[v>>2]|0;if(x>>>0>f>>>0|x>>>0>16777216>>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}f=d+28|0;y=d+32|0;z=d+36|0;A=d+40|0;B=d+44|0;C=d+48|0;D=d+52|0;E=d+56|0;F=d+60|0;G=d+68|0;H=d+72|0;I=d+76|0;J=d+80|0;K=d+92|0;L=d+100|0;M=d+104|0;N=c[G>>2]|0;if(N>>>0>128>>>0){Tk[c[4886344]&255](2,140336,(w=i,i=i+24|0,c[w>>2]=h,c[w+8>>2]=128,c[w+16>>2]=N,w)|0);i=w;q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}O=c[D>>2]|0;P=c[B>>2]|0;if((P|0)<1|(O|0)<0|x>>>0>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}Q=(P*20|0)+O|0;if((Q|0)<0|Q>>>0>x>>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}a:do{if((P|0)==0){R=1;S=1}else{Q=0;T=1;U=1;V=d+O|0;b:while(1){W=c[V+12>>2]|0;if((W|0)==0|W>>>0>4>>>0){q=0;X=172;break}Y=da(c[C>>2]|0,W)|0;Z=c[V+8>>2]|0;switch(Z|0){case 0:case 1:{_=c[V+16>>2]|0;if((Y|0)<1|(_|0)<0|x>>>0<_>>>0){q=0;X=172;break b}$=_+Y|0;if(($|0)<0|$>>>0>x>>>0){q=0;X=172;break b}break};case 4:case 5:case 7:{$=c[V+16>>2]|0;if((Y|0)<1|($|0)<0|x>>>0<$>>>0){q=0;X=172;break b}_=$+(Y<<2)|0;if((_|0)<0|_>>>0>x>>>0){q=0;X=172;break b}break};default:{q=0;X=172;break b}}switch(c[V>>2]|0){case 0:case 2:{if((Z|0)==7&(W|0)==3){aa=U;ba=T}else{q=0;X=172;break b}break};case 6:{if((Z|0)==1&(W|0)==4){aa=U;ba=T}else{q=0;X=172;break b}break};case 1:{if((Z|0)==7&(W|0)==2){aa=U;ba=T}else{q=0;X=172;break b}break};case 4:{if(!((Z|0)==4|(Z|0)==1)){q=0;X=172;break b}if((W|0)!=4){q=0;X=172;break b}aa=U;ba=Z&255;break};case 5:{if(!((Z|0)==7|(Z|0)==1)){q=0;X=172;break b}if((W|0)!=4){q=0;X=172;break b}aa=Z&255;ba=T;break};case 3:{if((Z|0)==7&(W|0)==4){aa=U;ba=T}else{q=0;X=172;break b}break};default:{aa=U;ba=T}}W=Q+1|0;if(W>>>0

>>0){Q=W;T=ba;U=aa;V=V+20|0}else{R=ba;S=aa;break a}}if((X|0)==172){r=64;s=0;t=6144;u=0;i=j;return q|0}}}while(0);aa=c[F>>2]|0;ba=c[E>>2]|0;if((ba|0)<1|(aa|0)<0|x>>>0>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}P=(ba*12|0)+aa|0;if((P|0)<0|P>>>0>x>>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}c:do{if((ba|0)==0){ca=0}else{P=c[C>>2]|0;O=0;V=d+aa|0;while(1){if((c[V>>2]|0)>>>0>P>>>0){q=0;X=172;break}if((c[V+4>>2]|0)>>>0>P>>>0|(c[V+8>>2]|0)>>>0>P>>>0){q=0;X=172;break}U=O+1|0;if(U>>>0>>0){O=U;V=V+12|0}else{ca=ba;break c}}if((X|0)==172){r=64;s=0;t=6144;u=0;i=j;return q|0}}}while(0);ba=c[A>>2]|0;aa=c[z>>2]|0;if((aa|0)<1|(ba|0)<0|x>>>0>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}V=(aa*24|0)+ba|0;if((V|0)<0|V>>>0>x>>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}do{if((aa|0)==0){ea=N;fa=84;ga=ca}else{x=0;V=d+ba|0;O=c[f>>2]|0;while(1){P=V|0;U=c[P>>2]|0;if(U>>>0>>0){TB(p,d+((c[y>>2]|0)+U)|0,64)}else{a[p]=0}ha=c[V+12>>2]|0;if(ha>>>0>999>>>0){X=45;break}ia=c[V+20>>2]|0;if((ia*3|0)>>>0>5999>>>0){X=47;break}U=c[V+8>>2]|0;T=c[C>>2]|0;if(!(U>>>0>>0)){q=0;X=172;break}if((U+ha|0)>>>0>T>>>0){q=0;X=172;break}T=c[V+16>>2]|0;ja=c[E>>2]|0;if(!(T>>>0>>0)){q=0;X=172;break}if((T+ia|0)>>>0>ja>>>0){q=0;X=172;break}T=c[f>>2]|0;if(!((c[P>>2]|0)>>>0>>0)){q=0;X=172;break}if(!((c[V+4>>2]|0)>>>0>>0)){q=0;X=172;break}P=x+1|0;ka=c[z>>2]|0;if(P>>>0>>0){x=P;V=V+24|0;O=T}else{X=55;break}}if((X|0)==45){O=(a[p]|0)!=0?p:115800;Tk[c[4886344]&255](2,126160,(w=i,i=i+32|0,c[w>>2]=h,c[w+8>>2]=999,c[w+16>>2]=O,c[w+24>>2]=ha,w)|0);i=w;q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}else if((X|0)==47){O=(a[p]|0)!=0?p:115800;Tk[c[4886344]&255](2,105680,(w=i,i=i+32|0,c[w>>2]=h,c[w+8>>2]=1999,c[w+16>>2]=O,c[w+24>>2]=ia,w)|0);i=w;q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}else if((X|0)==55){ea=c[G>>2]|0;fa=(ka*92|0)+84|0;ga=ja;break}else if((X|0)==172){r=64;s=0;t=6144;u=0;i=j;return q|0}}}while(0);ja=c[I>>2]|0;ka=(ja|0)==0;if(!((ja|0)==(ea|0)|ka)){Tk[c[4886344]&255](2,62344,(w=i,i=i+24|0,c[w>>2]=h,c[w+8>>2]=ja,c[w+16>>2]=ea,w)|0);i=w;q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}d:do{if((ea|0)==0){la=0;ma=0}else{w=c[H>>2]|0;if((ea|0)<1|(w|0)<0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}h=c[v>>2]|0;if(h>>>0>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}ia=w+(ea*48|0)|0;if((ia|0)<0|ia>>>0>h>>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}h=0;ia=0;p=d+w|0;while(1){w=c[p+4>>2]|0;if(!((w|0)>-2&(w|0)<(ea|0))){q=0;X=172;break}w=c[p>>2]|0;if(!(w>>>0<(c[f>>2]|0)>>>0)){q=0;X=172;break}ha=ia+1+(o$(d+((c[y>>2]|0)+w)|0)|0)|0;w=h+1|0;if(w>>>0>>0){h=w;ia=ha;p=p+48|0}else{la=ha;ma=ea;break d}}if((X|0)==172){r=64;s=0;t=6144;u=0;i=j;return q|0}}}while(0);do{if(ka){na=0}else{X=c[J>>2]|0;if((ja|0)<1|(X|0)<0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}ea=c[v>>2]|0;if(ea>>>0>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}f=X+(ja*88|0)|0;if((f|0)<0|f>>>0>ea>>>0){q=0}else{na=ja;break}r=64;s=0;t=6144;u=0;i=j;return q|0}}while(0);ja=c[M>>2]|0;ka=(ja|0)==0;ea=c[K>>2]|0;do{if(ka){oa=fa+(((da(ea,na)|0)+ma|0)*48|0)|0}else{if((ea|0)<1|(ja|0)<0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}f=c[v>>2]|0;if(f>>>0>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}X=(ea<<5)+ja|0;if((X|0)<0|X>>>0>f>>>0){q=0;r=64;s=0;t=6144;u=0;i=j;return q|0}f=fa+(((da(ea,na)|0)+ma|0)*48|0)|0;if(ka){oa=f;break}oa=f+(ea*24|0)|0}}while(0);ea=c[C>>2]|0;ka=ea<<3;na=ea<<4;fa=S<<24>>24==7;c[b+64>>2]=4;ja=Kk[c[4886347]&255](oa+la+ka+na+(ma<<2)+(fa?na:ea<<2)+(ga*12|0)+ka+(ea*24|0)|0,1)|0;ea=ja;c[b+84>>2]=ja;c[ja>>2]=c[C>>2];c[ja+4>>2]=c[E>>2];c[ja+8>>2]=c[K>>2];b=c[z>>2]|0;c[ja+12>>2]=b;c[ja+16>>2]=c[G>>2];c[ja+20>>2]=c[I>>2];a[ja+60|0]=S;S=ja+84|0;ka=ja+24|0;c[ka>>2]=S;ga=S+(b*92|0)|0;b=ja+68|0;c[b>>2]=ga;S=c[G>>2]|0;na=S*12|0;ma=ja+72|0;c[ma>>2]=ga+(na<<2);la=c[I>>2]|0;oa=c[K>>2]|0;v=(da(la*12|0,oa)|0)+na|0;na=ga+(v<<2)|0;if((c[M>>2]|0)==0){c[ja+28>>2]=na;pa=na}else{c[ja+76>>2]=na;na=ga+((oa*6|0)+v<<2)|0;c[ja+28>>2]=na;pa=na}na=ja+28|0;v=c[C>>2]|0;f=v*3|0;X=ja+32|0;c[X>>2]=pa+(f<<2);p=(v<<1)+f|0;ia=ja+36|0;c[ia>>2]=pa+(p<<2);h=p+f|0;f=ja+40|0;c[f>>2]=pa+(h<<2);p=v<<2;ha=h+p|0;h=ja+44|0;c[h>>2]=pa+(ha<<2);w=ha+v|0;ha=pa+(w<<2)|0;if(fa){c[ja+48>>2]=ha;ba=pa+(p+w<<2)|0;c[ja+52>>2]=ba;qa=ba}else{c[ja+48>>2]=ha;ha=pa+(v+w<<2)|0;c[ja+52>>2]=ha;qa=ha}ha=ja+52|0;w=qa+p|0;p=ja+64|0;c[p>>2]=w;qa=ja+56|0;c[qa>>2]=w+(S<<2);v=ja+80|0;c[v>>2]=w+(((c[E>>2]|0)*3|0)+S<<2);w=(S|0)==0;if(w){c[b>>2]=0;ra=0}else{ra=ga}if((la|0)==0){c[ma>>2]=0}if(w){sa=oa}else{oa=l;w=m;la=l|0;ga=l+4|0;S=l+8|0;pa=l+12|0;ba=l+16|0;ca=l+20|0;N=l+24|0;aa=l+28|0;O=l+32|0;V=l+36|0;x=l+40|0;T=l+44|0;l=m|0;P=m+4|0;U=m+8|0;Q=m+16|0;W=m+20|0;Z=m+24|0;_=m+32|0;Y=m+36|0;$=m+40|0;ta=m+12|0;ua=m+28|0;va=m+44|0;m=0;wa=ra;ra=k|0;xa=d+(c[H>>2]|0)|0;while(1){ya=xa+36|0;za=+g[xa+20>>2];Aa=za*2.0;Ba=za*Aa;Ca=+g[xa+24>>2];Da=Ca*2.0;Ea=Ca*Da;Fa=+g[xa+28>>2];Ga=Fa*Fa*2.0;Ha=Aa*Ca;Ia=Aa*Fa;Aa=Da*Fa;Da=+g[xa+32>>2]*2.0;Ja=za*Da;za=Ca*Da;Ca=Fa*Da;Da=+g[ya>>2]*(1.0-(Ea+Ga));g[la>>2]=Da;Fa=+g[ya>>2]*(Ha-Ca);g[ga>>2]=Fa;Ka=+g[ya>>2]*(Ia+za);g[S>>2]=Ka;La=+g[xa+8>>2];g[pa>>2]=La;ya=xa+40|0;Ma=(Ha+Ca)*+g[ya>>2];g[ba>>2]=Ma;Ca=(1.0-(Ba+Ga))*+g[ya>>2];g[ca>>2]=Ca;Ga=(Aa-Ja)*+g[ya>>2];g[N>>2]=Ga;Ha=+g[xa+12>>2];g[aa>>2]=Ha;ya=xa+44|0;Na=(Ia-za)*+g[ya>>2];g[O>>2]=Na;za=(Aa+Ja)*+g[ya>>2];g[V>>2]=za;Ja=(1.0-(Ba+Ea))*+g[ya>>2];g[x>>2]=Ja;Ea=+g[xa+16>>2];g[T>>2]=Ea;Ba=1.0/(Da*Da+Ma*Ma+Na*Na);Aa=Da*Ba;g[l>>2]=Aa;Da=Ma*Ba;g[P>>2]=Da;Ma=Na*Ba;g[U>>2]=Ma;Ba=1.0/(Fa*Fa+Ca*Ca+za*za);Na=Fa*Ba;g[Q>>2]=Na;Fa=Ca*Ba;g[W>>2]=Fa;Ca=za*Ba;g[Z>>2]=Ca;Ba=1.0/(Ka*Ka+Ga*Ga+Ja*Ja);za=Ka*Ba;g[_>>2]=za;Ka=Ga*Ba;g[Y>>2]=Ka;Ga=Ja*Ba;g[$>>2]=Ga;g[ta>>2]=-0.0-(Aa*La+Da*Ha+Ma*Ea);g[ua>>2]=-0.0-(Na*La+Fa*Ha+Ca*Ea);g[va>>2]=-0.0-(La*za+Ka*Ha+Ga*Ea);ya=xa+4|0;Oa=c[ya>>2]|0;if((Oa|0)>-1){aT((c[b>>2]|0)+((Oa*12|0)<<2)|0,la,wa);aT(l,k+(((c[ya>>2]|0)*12|0)<<2)|0,ra)}else{m$(wa|0,oa|0,48)|0;m$(ra|0,w|0,48)|0}ya=m+1|0;if(ya>>>0<(c[G>>2]|0)>>>0){m=ya;wa=wa+48|0;ra=ra+48|0;xa=xa+48|0}else{break}}sa=c[K>>2]|0}if((sa|0)!=0){xa=n;ra=o;wa=n|0;m=n+4|0;w=n+8|0;oa=n+12|0;l=n+16|0;la=n+20|0;va=n+24|0;ua=n+28|0;ta=n+32|0;$=n+36|0;Y=n+40|0;_=n+44|0;n=o|0;o=d+(c[L>>2]|0)|0;L=0;Z=c[ma>>2]|0;ma=c[I>>2]|0;W=sa;while(1){if((ma|0)==0){Pa=o;Qa=Z;Ra=0;Sa=W}else{sa=o;Q=0;U=Z;P=d+(c[J>>2]|0)|0;while(1){Ea=+g[P+8>>2];T=c[P+4>>2]|0;if((T&1|0)==0){Ta=sa;Ua=Ea}else{Ta=sa+2|0;Ua=Ea+ +g[P+48>>2]*+(e[sa>>1]|0)}Ea=+g[P+12>>2];if((T&2|0)==0){Va=Ta;Wa=Ea}else{Va=Ta+2|0;Wa=Ea+ +g[P+52>>2]*+(e[Ta>>1]|0)}Ea=+g[P+16>>2];if((T&4|0)==0){Xa=Va;Ya=Ea}else{Xa=Va+2|0;Ya=Ea+ +g[P+56>>2]*+(e[Va>>1]|0)}Ea=+g[P+20>>2];if((T&8|0)==0){Za=Xa;_a=Ea}else{Za=Xa+2|0;_a=Ea+ +g[P+60>>2]*+(e[Xa>>1]|0)}Ea=+g[P+24>>2];if((T&16|0)==0){$a=Za;ab=Ea}else{$a=Za+2|0;ab=Ea+ +g[P+64>>2]*+(e[Za>>1]|0)}Ea=+g[P+28>>2];if((T&32|0)==0){bb=$a;cb=Ea}else{bb=$a+2|0;cb=Ea+ +g[P+68>>2]*+(e[$a>>1]|0)}Ea=+g[P+32>>2];if((T&64|0)==0){db=bb;eb=Ea}else{db=bb+2|0;eb=Ea+ +g[P+72>>2]*+(e[bb>>1]|0)}Ea=+g[P+36>>2];if((T&128|0)==0){fb=db;gb=Ea}else{fb=db+2|0;gb=Ea+ +g[P+76>>2]*+(e[db>>1]|0)}Ea=+g[P+40>>2];if((T&256|0)==0){hb=fb;ib=Ea}else{hb=fb+2|0;ib=Ea+ +g[P+80>>2]*+(e[fb>>1]|0)}Ea=+g[P+44>>2];if((T&512|0)==0){jb=hb;kb=Ea}else{jb=hb+2|0;kb=Ea+ +g[P+84>>2]*+(e[hb>>1]|0)}Ea=_a*2.0;Ga=_a*Ea;Ha=ab*2.0;Ka=ab*Ha;za=cb*cb*2.0;La=Ea*ab;Ca=Ea*cb;Ea=Ha*cb;Ha=eb*2.0;Fa=_a*Ha;Na=ab*Ha;Ma=cb*Ha;g[wa>>2]=(1.0-(Ka+za))*gb;g[m>>2]=(La-Ma)*gb;g[w>>2]=(Ca+Na)*gb;g[oa>>2]=Ua;g[l>>2]=(La+Ma)*ib;g[la>>2]=(1.0-(Ga+za))*ib;g[va>>2]=(Ea-Fa)*ib;g[ua>>2]=Wa;g[ta>>2]=(Ca-Na)*kb;g[$>>2]=(Ea+Fa)*kb;g[Y>>2]=(1.0-(Ga+Ka))*kb;g[_>>2]=Ya;T=c[P>>2]|0;if((T|0)>-1){aT((c[b>>2]|0)+((T*12|0)<<2)|0,wa,n)}else{m$(ra|0,xa|0,48)|0}aT(n,k+((Q*12|0)<<2)|0,U);lb=U+48|0;T=Q+1|0;mb=c[I>>2]|0;if(T>>>0>>0){sa=jb;Q=T;U=lb;P=P+88|0}else{break}}Pa=jb;Qa=lb;Ra=mb;Sa=c[K>>2]|0}P=L+1|0;if(P>>>0>>0){o=Pa;L=P;Z=Qa;ma=Ra;W=Sa}else{break}}}Sa=c[y>>2]|0;if((c[z>>2]|0)!=0){W=0;Ra=c[ka>>2]|0;ka=d+(c[A>>2]|0)|0;while(1){c[Ra>>2]=8;A=Ra+4|0;TB(A,d+((c[ka>>2]|0)+Sa)|0,64);lC(A)|0;A=WT(d+((c[ka+4>>2]|0)+Sa)|0,-1,1)|0;ma=Ra+68|0;c[ma>>2]=A;if((c[A+80>>2]|0)!=0){c[ma>>2]=c[253342]}c[Ra+72>>2]=ea;c[Ra+76>>2]=c[ka+8>>2];c[Ra+80>>2]=c[ka+12>>2];c[Ra+84>>2]=c[ka+16>>2];c[Ra+88>>2]=c[ka+20>>2];ma=W+1|0;if(ma>>>0<(c[z>>2]|0)>>>0){W=ma;Ra=Ra+92|0;ka=ka+24|0}else{break}}}ka=d+(c[D>>2]|0)|0;e:do{if((c[B>>2]|0)!=0){D=R<<24>>24==4;Ra=ja+48|0;W=Ra;z=Ra;if(fa){Ra=1;ea=ka;while(1){Sa=da(c[ea+12>>2]|0,c[C>>2]|0)|0;f:do{switch(c[ea>>2]|0){case 1:{m$(c[X>>2]|0,d+(c[ea+16>>2]|0)|0,Sa<<2)|0;break};case 3:{m$(c[f>>2]|0,d+(c[ea+16>>2]|0)|0,Sa<<2)|0;break};case 2:{m$(c[ia>>2]|0,d+(c[ea+16>>2]|0)|0,Sa<<2)|0;break};case 0:{m$(c[na>>2]|0,d+(c[ea+16>>2]|0)|0,Sa<<2)|0;break};case 6:{m$(c[ha>>2]|0,d+(c[ea+16>>2]|0)|0,Sa)|0;break};case 5:{m$(c[W>>2]|0,d+(c[ea+16>>2]|0)|0,Sa<<2)|0;break};case 4:{if(!D){m$(c[h>>2]|0,d+(c[ea+16>>2]|0)|0,Sa)|0;break f}ma=d+(c[ea+16>>2]|0)|0;if((Sa|0)>0){nb=0}else{break f}do{a[(c[h>>2]|0)+nb|0]=c[ma+(nb<<2)>>2];nb=nb+1|0;}while((nb|0)<(Sa|0));break};default:{}}}while(0);if(!(Ra>>>0<(c[B>>2]|0)>>>0)){break e}Ra=Ra+1|0;ea=ea+20|0}}else{ea=1;Ra=ka;while(1){W=da(c[Ra+12>>2]|0,c[C>>2]|0)|0;g:do{switch(c[Ra>>2]|0){case 0:{m$(c[na>>2]|0,d+(c[Ra+16>>2]|0)|0,W<<2)|0;break};case 2:{m$(c[ia>>2]|0,d+(c[Ra+16>>2]|0)|0,W<<2)|0;break};case 3:{m$(c[f>>2]|0,d+(c[Ra+16>>2]|0)|0,W<<2)|0;break};case 1:{m$(c[X>>2]|0,d+(c[Ra+16>>2]|0)|0,W<<2)|0;break};case 4:{if(!D){m$(c[h>>2]|0,d+(c[Ra+16>>2]|0)|0,W)|0;break g}Sa=d+(c[Ra+16>>2]|0)|0;if((W|0)>0){ob=0}else{break g}do{a[(c[h>>2]|0)+ob|0]=c[Sa+(ob<<2)>>2];ob=ob+1|0;}while((ob|0)<(W|0));break};case 5:{m$(c[z>>2]|0,d+(c[Ra+16>>2]|0)|0,W)|0;break};case 6:{m$(c[ha>>2]|0,d+(c[Ra+16>>2]|0)|0,W)|0;break};default:{}}}while(0);if(!(ea>>>0<(c[B>>2]|0)>>>0)){break e}ea=ea+1|0;Ra=Ra+20|0}}}}while(0);if((c[G>>2]|0)==0){pb=0}else{B=c[p>>2]|0;p=0;ha=d+(c[H>>2]|0)|0;while(1){c[B+(p<<2)>>2]=c[ha+4>>2];ob=p+1|0;h=c[G>>2]|0;if(ob>>>0>>0){p=ob;ha=ha+48|0}else{pb=h;break}}}if((c[E>>2]|0)==0){qb=pb}else{pb=c[qa>>2]|0;qa=0;ha=d+(c[F>>2]|0)|0;while(1){F=qa*3|0;c[pb+(F<<2)>>2]=c[ha>>2];c[pb+(F+1<<2)>>2]=c[ha+4>>2];c[pb+(F+2<<2)>>2]=c[ha+8>>2];F=qa+1|0;if(F>>>0<(c[E>>2]|0)>>>0){qa=F;ha=ha+12|0}else{break}}qb=c[G>>2]|0}h:do{if((qb|0)!=0){ha=c[v>>2]|0;qa=1;E=d+(c[H>>2]|0)|0;while(1){pb=d+((c[E>>2]|0)+(c[y>>2]|0))|0;F=(o$(pb|0)|0)+1|0;m$(ha|0,pb|0,F)|0;if(!(qa>>>0<(c[G>>2]|0)>>>0)){break h}ha=ha+F|0;qa=qa+1|0;E=E+48|0}}}while(0);G=c[M>>2]|0;if((G|0)==0){q=1;r=64;s=0;t=6144;u=0;i=j;return q|0}M=c[K>>2]|0;if((M|0)==0){q=1;r=64;s=0;t=6144;u=0;i=j;return q|0}K=d+G|0;G=0;d=c[ja+76>>2]|0;while(1){g[d>>2]=+g[K>>2];g[d+4>>2]=+g[K+4>>2];g[d+8>>2]=+g[K+8>>2];g[d+12>>2]=+g[K+12>>2];g[d+16>>2]=+g[K+16>>2];g[d+20>>2]=+g[K+20>>2];ja=G+1|0;if(ja>>>0>>0){K=K+32|0;G=ja;d=d+24|0}else{q=1;break}}r=64;s=0;t=6144;u=0;i=j;return q|0}function aT(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+4|0;e=b+16|0;f=a+8|0;h=b+32|0;g[c>>2]=+g[a>>2]*+g[b>>2]+ +g[d>>2]*+g[e>>2]+ +g[f>>2]*+g[h>>2];i=b+4|0;j=b+20|0;k=b+36|0;g[c+4>>2]=+g[a>>2]*+g[i>>2]+ +g[d>>2]*+g[j>>2]+ +g[f>>2]*+g[k>>2];l=b+8|0;m=b+24|0;n=b+40|0;g[c+8>>2]=+g[a>>2]*+g[l>>2]+ +g[d>>2]*+g[m>>2]+ +g[f>>2]*+g[n>>2];o=b+12|0;p=b+28|0;q=b+44|0;g[c+12>>2]=+g[a+12>>2]+(+g[a>>2]*+g[o>>2]+ +g[d>>2]*+g[p>>2]+ +g[f>>2]*+g[q>>2]);f=a+16|0;d=a+20|0;r=a+24|0;g[c+16>>2]=+g[f>>2]*+g[b>>2]+ +g[d>>2]*+g[e>>2]+ +g[r>>2]*+g[h>>2];g[c+20>>2]=+g[f>>2]*+g[i>>2]+ +g[d>>2]*+g[j>>2]+ +g[r>>2]*+g[k>>2];g[c+24>>2]=+g[f>>2]*+g[l>>2]+ +g[d>>2]*+g[m>>2]+ +g[r>>2]*+g[n>>2];g[c+28>>2]=+g[a+28>>2]+(+g[f>>2]*+g[o>>2]+ +g[d>>2]*+g[p>>2]+ +g[r>>2]*+g[q>>2]);r=a+32|0;d=a+36|0;f=a+40|0;g[c+32>>2]=+g[r>>2]*+g[b>>2]+ +g[d>>2]*+g[e>>2]+ +g[f>>2]*+g[h>>2];g[c+36>>2]=+g[r>>2]*+g[i>>2]+ +g[d>>2]*+g[j>>2]+ +g[f>>2]*+g[k>>2];g[c+40>>2]=+g[r>>2]*+g[l>>2]+ +g[d>>2]*+g[m>>2]+ +g[f>>2]*+g[n>>2];g[c+44>>2]=+g[a+44>>2]+(+g[r>>2]*+g[o>>2]+ +g[d>>2]*+g[p>>2]+ +g[f>>2]*+g[q>>2]);return}function bT(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0;d=i;i=i+16|0;e=d|0;if((c[253649]&1|0)!=0){f=0;i=d;return f|0}h=c[a+76>>2]|0;if((h|0)==0){j=186416}else{j=h+(((c[b+80>>2]|0)*6|0)<<2)|0}k=+g[j>>2];l=+g[j+12>>2]-k;m=+g[j+4>>2];n=+g[j+16>>2]-m;o=+g[j+8>>2];p=+g[j+20>>2]-o;g[e>>2]=k+l*.5+ +g[b+68>>2];g[e+4>>2]=m+n*.5+ +g[b+72>>2];g[e+8>>2]=+g[b+76>>2]+(o+p*.5);o=+T(l*l+n*n+p*p)*.5;b=c[253203]|0;j=c[b+224>>2]|0;if((j|0)<=1){f=0;i=d;return f|0}h=c[b+228>>2]|0;b=1;while(1){a=0;while(1){p=+g[e+(a<<2)>>2];if(!(p-o<+g[h+(b*72|0)+16+(a<<2)>>2])){q=a;break}r=a+1|0;if(!(o+p>+g[h+(b*72|0)+4+(a<<2)>>2])){q=a;break}if((r|0)<3){a=r}else{q=r;break}}a=b+1|0;if((q|0)==3){f=b;s=12;break}if((a|0)<(j|0)){b=a}else{f=0;s=12;break}}if((s|0)==12){i=d;return f|0}return 0}function cT(a){a=a|0;var b=0,d=0,e=0,f=0,h=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.0,v=0.0,w=0,x=0,y=0;b=i;i=i+24|0;d=b|0;e=c[253412]|0;f=c[e+84>>2]|0;h=f;j=c[f+24>>2]|0;k=a+4|0;l=c[k>>2]|0;if((l&2|0)==0){m=0}else{m=(c[253510]|0)==0}if((l&512|0)==0){n=c[a+80>>2]|0;o=f+8|0}else{l=f+8|0;p=a+80|0;q=(c[p>>2]|0)%(c[l>>2]|0)|0;c[p>>2]=q;p=a+96|0;c[p>>2]=(c[p>>2]|0)%(c[l>>2]|0)|0;n=q;o=l}l=a+80|0;q=c[o>>2]|0;o=c[a+96>>2]|0;if((n|0)>=(q|0)|(n|0)<0){r=8}else{if((o|0)>=(q|0)|(o|0)<0){r=8}else{s=o;t=n}}if((r|0)==8){Tk[c[4886344]&255](1,54688,(q=i,i=i+24|0,c[q>>2]=o,c[q+8>>2]=n,c[q+16>>2]=e,q)|0);i=q;c[l>>2]=0;c[a+96>>2]=0;s=0;t=0}l=c[f+76>>2]|0;do{if((l|0)==0){c[253822]=(c[253822]|0)+1}else{q=s*6|0;e=t*6|0;u=+g[l+(q<<2)>>2];v=+g[l+(e<<2)>>2];g[d>>2]=u>2];u=+g[l+(e+3<<2)>>2];g[d+12>>2]=v>u?v:u;u=+g[l+((q|1)<<2)>>2];v=+g[l+((e|1)<<2)>>2];g[d+4>>2]=u>2];u=+g[l+(e+4<<2)>>2];g[d+16>>2]=v>u?v:u;u=+g[l+(q+2<<2)>>2];v=+g[l+(e+2<<2)>>2];g[d+8>>2]=u>2];u=+g[l+(e+5<<2)>>2];g[d+20>>2]=v>u?v:u;e=kS(d|0)|0;if((e|0)==1){c[253822]=(c[253822]|0)+1;break}else if((e|0)==0){c[253821]=(c[253821]|0)+1;break}else{c[253823]=(c[253823]|0)+1;i=b;return}}}while(0);if(m){if((c[(c[4917346]|0)+32>>2]|0)>1){r=17}}else{r=17}if((r|0)==17){dS(1014516,a)}r=bT(h,a)|0;h=hS(a+68|0)|0;d=f+12|0;if((c[d>>2]|0)<=0){i=b;return}f=a+112|0;l=a+108|0;a=(r|0)==0;t=1;s=j;while(1){j=c[f>>2]|0;a:do{if((j|0)==0){e=c[l>>2]|0;if(!((e|0)>0&(e|0)<(c[297930]|0))){w=c[s+68>>2]|0;break}q=rR(e)|0;e=c[253342]|0;n=c[q+64>>2]|0;if((n|0)<=0){w=e;break}o=s+4|0;p=0;while(1){x=c[q+68+(p<<2)>>2]|0;y=p+1|0;if((k$(x|0,o)|0)==0){break}if((y|0)<(n|0)){p=y}else{w=e;break a}}w=c[x+64>>2]|0}else{w=UT(j)|0}}while(0);do{if(!m){if(!((c[(c[4917346]|0)+32>>2]|0)==2&a)){break}if((c[k>>2]&72|0)!=0){break}if(!(+g[w+76>>2]==3.0)){break}AS(s|0,c[253343]|0,0,0,0,0)}}while(0);do{if((c[(c[4917346]|0)+32>>2]|0)==3&a){if((c[k>>2]&256|0)==0){break}if(!(+g[w+76>>2]==3.0)){break}AS(s|0,c[253344]|0,0,0,0,0)}}while(0);if(!m){AS(s|0,w,r,0,0,h)}if((t|0)>=(c[d>>2]|0)){break}t=t+1|0;s=s+92|0}i=b;return}function dT(b){b=b|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.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,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,_=0,$=0,aa=0.0,ba=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0.0,va=0,wa=0.0,xa=0.0,ya=0.0,za=0.0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.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;e=i;i=i+6240|0;f=e|0;h=e+6144|0;j=e+6192|0;k=e+6208|0;l=e+6224|0;m=c[b+72>>2]|0;n=c[m+8>>2]|0;o=c[7094307]|0;if((n|0)==0){p=0;q=0}else{p=(c[o+96>>2]|0)%(n|0)|0;q=(c[o+80>>2]|0)%(n|0)|0}r=+g[o+100>>2];o=c[340902]|0;n=b+80|0;s=c[n>>2]|0;if((s+o|0)>999){t=c[b+88>>2]|0;u=6}else{v=c[b+88>>2]|0;if(((v*3|0)+(c[340901]|0)|0)>5999){t=v;u=6}else{w=o}}if((u|0)==6){pU(s,t*3|0);w=c[340902]|0}t=m+20|0;if((c[t>>2]|0)>0){eT(m,q,p,r,f|0)}if((c[n>>2]|0)>0){p=h;q=b+76|0;s=m+60|0;u=m+48|0;o=u|0;v=u;u=h+20|0;x=h+40|0;y=h+24|0;z=h+36|0;A=h+32|0;B=h+16|0;C=h+8|0;D=h+4|0;E=h|0;F=m+32|0;G=m+28|0;H=h+12|0;I=h+28|0;J=h+44|0;h=m+36|0;K=k|0;L=k+4|0;M=k+8|0;k=m+40|0;N=l|0;O=l+4|0;P=l+8|0;Q=l+12|0;l=m+52|0;R=m+44|0;S=1283560+(w<<4)|0;T=1267560+(w<<4)|0;U=1263560+(w<<2)|0;V=1259560+(w<<2)|0;W=1243560+(w<<4)|0;w=0;while(1){X=(c[q>>2]|0)+w|0;Y=X<<2;a:do{if((a[s]|0)==7){Z=0;while(1){r=+g[(c[o>>2]|0)+(Z+Y<<2)>>2];g[j+(Z<<2)>>2]=r;_=Z+1|0;if(!(r>0.0)){$=Z;break a}if((_|0)<4){Z=_}else{$=_;break}}}else{Z=0;while(1){r=+((d[(c[v>>2]|0)+(Z+Y)|0]|0)>>>0)/255.0;g[j+(Z<<2)>>2]=r;_=Z+1|0;if(!(r>0.0)){$=Z;break a}if((_|0)<4){Z=_}else{$=_;break}}}}while(0);do{if((c[t>>2]|0)==0|($|0)==0){m$(p|0,20568,48)|0;aa=+g[u>>2];ba=+g[x>>2];ca=+g[y>>2];da=+g[z>>2];ea=+g[A>>2];fa=+g[B>>2];ga=+g[C>>2];ha=+g[D>>2];ia=+g[E>>2]}else{n$(p|0,0,48)|0;if(($|0)<=0){aa=0.0;ba=0.0;ca=0.0;da=0.0;ea=0.0;fa=0.0;ga=0.0;ha=0.0;ia=0.0;break}Z=c[R>>2]|0;_=0;r=0.0;ja=0.0;ka=0.0;la=0.0;ma=0.0;na=0.0;oa=0.0;pa=0.0;qa=0.0;ra=0.0;sa=0.0;ta=0.0;while(1){ua=+g[j+(_<<2)>>2];va=(d[Z+(_+Y)|0]|0)*12|0;wa=r+ua*+g[f+(va<<2)>>2];g[E>>2]=wa;xa=ja+ua*+g[f+((va|1)<<2)>>2];g[D>>2]=xa;ya=ka+ua*+g[f+((va|2)<<2)>>2];g[C>>2]=ya;za=la+ua*+g[f+((va|3)<<2)>>2];g[H>>2]=za;Aa=ma+ua*+g[f+(va+4<<2)>>2];g[B>>2]=Aa;Ba=na+ua*+g[f+(va+5<<2)>>2];g[u>>2]=Ba;Ca=oa+ua*+g[f+(va+6<<2)>>2];g[y>>2]=Ca;Da=pa+ua*+g[f+(va+7<<2)>>2];g[I>>2]=Da;Ea=qa+ua*+g[f+(va+8<<2)>>2];g[A>>2]=Ea;Fa=ra+ua*+g[f+(va+9<<2)>>2];g[z>>2]=Fa;Ga=sa+ua*+g[f+(va+10<<2)>>2];g[x>>2]=Ga;Ha=ta+ua*+g[f+(va+11<<2)>>2];g[J>>2]=Ha;va=_+1|0;if((va|0)<($|0)){_=va;r=wa;ja=xa;ka=ya;la=za;ma=Aa;na=Ba;oa=Ca;pa=Da;qa=Ea;ra=Fa;sa=Ga;ta=Ha}else{aa=Ba;ba=Ga;ca=Ca;da=Fa;ea=Ea;fa=Aa;ga=ya;ha=xa;ia=wa;break}}}}while(0);ta=aa*ba-ca*da;sa=ca*ea-ba*fa;ra=da*fa-aa*ea;qa=da*ga-ba*ha;pa=ba*ia-ea*ga;oa=ea*ha-da*ia;na=ca*ha-aa*ga;ma=fa*ga-ca*ia;la=aa*ia-fa*ha;_=X<<1;Z=c[F>>2]|0;ka=+g[Z+(_<<2)>>2];g[T>>2]=ka;ja=+g[Z+((_|1)<<2)>>2];g[T+4>>2]=ja;g[T+8>>2]=ka;g[T+12>>2]=ja;_=X*3|0;Z=c[G>>2]|0;va=Z+(_<<2)|0;Ia=_+1|0;Ja=Z+(Ia<<2)|0;Ka=_+2|0;La=Z+(Ka<<2)|0;g[W>>2]=+g[H>>2]+(+g[E>>2]*+g[va>>2]+ +g[D>>2]*+g[Ja>>2]+ +g[C>>2]*+g[La>>2]);g[W+4>>2]=+g[I>>2]+(+g[B>>2]*+g[va>>2]+ +g[u>>2]*+g[Ja>>2]+ +g[y>>2]*+g[La>>2]);g[W+8>>2]=+g[J>>2]+(+g[A>>2]*+g[va>>2]+ +g[z>>2]*+g[Ja>>2]+ +g[x>>2]*+g[La>>2]);g[W+12>>2]=1.0;La=c[h>>2]|0;Ja=La+(_<<2)|0;_=La+(Ia<<2)|0;Ia=La+(Ka<<2)|0;g[K>>2]=ta*+g[Ja>>2]+sa*+g[_>>2]+ra*+g[Ia>>2];g[L>>2]=qa*+g[Ja>>2]+pa*+g[_>>2]+oa*+g[Ia>>2];g[M>>2]=na*+g[Ja>>2]+ma*+g[_>>2]+la*+g[Ia>>2];c[V>>2]=JU(K)|0;Ia=c[k>>2]|0;_=Ia+(Y<<2)|0;Ja=Y|1;Ka=Ia+(Ja<<2)|0;La=Y|2;va=Ia+(La<<2)|0;g[N>>2]=ta*+g[_>>2]+sa*+g[Ka>>2]+ra*+g[va>>2];g[O>>2]=qa*+g[_>>2]+pa*+g[Ka>>2]+oa*+g[va>>2];g[P>>2]=na*+g[_>>2]+ma*+g[Ka>>2]+la*+g[va>>2];va=Y|3;g[Q>>2]=+g[Ia+(va<<2)>>2];c[U>>2]=IU(N)|0;Ia=c[l>>2]|0;g[S>>2]=+(d[Ia+Y|0]|0)/255.0;g[S+4>>2]=+(d[Ia+Ja|0]|0)/255.0;g[S+8>>2]=+(d[Ia+La|0]|0)/255.0;g[S+12>>2]=+(d[Ia+va|0]|0)/255.0;va=w+1|0;if((va|0)<(c[n>>2]|0)){S=S+16|0;T=T+16|0;U=U+4|0;V=V+4|0;W=W+16|0;w=va}else{break}}}w=c[340902]|0;W=b+88|0;V=c[W>>2]|0;if((V|0)<=0){Ma=V;Na=w;Oa=Ma*3|0;Pa=c[340901]|0;Qa=Pa+Oa|0;c[340901]=Qa;Ra=c[n>>2]|0;Sa=Na+Ra|0;c[340902]=Sa;Ta=6144;Ua=0;i=e;return}V=b+76|0;U=1219560+(c[340901]<<2)|0;T=(c[m+56>>2]|0)+(((c[b+84>>2]|0)*3|0)<<2)|0;b=0;while(1){c[U>>2]=(c[T>>2]|0)+w-(c[V>>2]|0);c[U+4>>2]=(c[T+4>>2]|0)+w-(c[V>>2]|0);c[U+8>>2]=(c[T+8>>2]|0)+w-(c[V>>2]|0);m=b+1|0;Va=c[W>>2]|0;if((m|0)<(Va|0)){U=U+12|0;T=T+12|0;b=m}else{break}}Ma=Va;Na=c[340902]|0;Oa=Ma*3|0;Pa=c[340901]|0;Qa=Pa+Oa|0;c[340901]=Qa;Ra=c[n>>2]|0;Sa=Na+Ra|0;c[340902]=Sa;Ta=6144;Ua=0;i=e;return}function eT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.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,J=0,K=0,L=0,M=0;h=i;i=i+48|0;j=h|0;k=c[a+64>>2]|0;l=a+20|0;m=c[l>>2]|0;if((m|0)==0){n=a+16|0;if((c[n>>2]|0)>0){o=k;p=0}else{i=h;return}while(1){q=c[o>>2]|0;if((q|0)>-1){aT(f+((q*12|0)<<2)|0,20568,f+((p*12|0)<<2)|0)}else{m$(f+((p*12|0)<<2)|0,20568,48)|0}q=p+1|0;if((q|0)<(c[n>>2]|0)){o=o+4|0;p=q}else{break}}i=h;return}p=c[a+72>>2]|0;a=m*12|0;o=da(a,b)|0;if((d|0)==(b|0)){if((m|0)>0){r=k;s=0}else{i=h;return}while(1){b=c[r>>2]|0;if((b|0)>-1){n=s*12|0;aT(f+((b*12|0)<<2)|0,p+(n+o<<2)|0,f+(n<<2)|0)}else{n=s*12|0;m$(f+(n<<2)|0,p+(n+o<<2)|0,48)|0}n=s+1|0;if((n|0)<(c[l>>2]|0)){r=r+4|0;s=n}else{break}}i=h;return}s=da(a,d)|0;if((m|0)<=0){i=h;return}m=j|0;t=1.0-e;d=j+4|0;a=j+8|0;r=j+12|0;n=j+16|0;b=j+20|0;q=j+24|0;u=j+28|0;v=j+32|0;w=j+36|0;x=j+40|0;y=j+44|0;j=f+4|0;z=f+8|0;A=f+12|0;B=f+16|0;C=f+20|0;D=f+24|0;E=f+28|0;F=f+32|0;G=f+36|0;H=f+40|0;I=f+44|0;J=k;k=0;while(1){if((c[J>>2]|0)>-1){K=k*12|0;L=K+o|0;M=K+s|0;g[m>>2]=t*+g[p+(L<<2)>>2]+ +g[p+(M<<2)>>2]*e;g[d>>2]=t*+g[p+((L|1)<<2)>>2]+ +g[p+((M|1)<<2)>>2]*e;g[a>>2]=t*+g[p+((L|2)<<2)>>2]+ +g[p+((M|2)<<2)>>2]*e;g[r>>2]=t*+g[p+((L|3)<<2)>>2]+ +g[p+((M|3)<<2)>>2]*e;g[n>>2]=t*+g[p+(L+4<<2)>>2]+ +g[p+(M+4<<2)>>2]*e;g[b>>2]=t*+g[p+(L+5<<2)>>2]+ +g[p+(M+5<<2)>>2]*e;g[q>>2]=t*+g[p+(L+6<<2)>>2]+ +g[p+(M+6<<2)>>2]*e;g[u>>2]=t*+g[p+(L+7<<2)>>2]+ +g[p+(M+7<<2)>>2]*e;g[v>>2]=t*+g[p+(L+8<<2)>>2]+ +g[p+(M+8<<2)>>2]*e;g[w>>2]=t*+g[p+(L+9<<2)>>2]+ +g[p+(M+9<<2)>>2]*e;g[x>>2]=t*+g[p+(L+10<<2)>>2]+ +g[p+(M+10<<2)>>2]*e;g[y>>2]=t*+g[p+(L+11<<2)>>2]+ +g[p+(M+11<<2)>>2]*e;aT(f+(((c[J>>2]|0)*12|0)<<2)|0,m,f+(K<<2)|0);}else{K=k*12|0;M=K+o|0;L=K+s|0;g[f>>2]=t*+g[p+(M<<2)>>2]+ +g[p+(L<<2)>>2]*e;g[j>>2]=t*+g[p+((M|1)<<2)>>2]+ +g[p+((L|1)<<2)>>2]*e;g[z>>2]=t*+g[p+((M|2)<<2)>>2]+ +g[p+((L|2)<<2)>>2]*e;g[A>>2]=t*+g[p+((M|3)<<2)>>2]+ +g[p+((L|3)<<2)>>2]*e;g[B>>2]=t*+g[p+(M+4<<2)>>2]+ +g[p+(L+4<<2)>>2]*e;g[C>>2]=t*+g[p+(M+5<<2)>>2]+ +g[p+(L+5<<2)>>2]*e;g[D>>2]=t*+g[p+(M+6<<2)>>2]+ +g[p+(L+6<<2)>>2]*e;g[E>>2]=t*+g[p+(M+7<<2)>>2]+ +g[p+(L+7<<2)>>2]*e;g[F>>2]=t*+g[p+(M+8<<2)>>2]+ +g[p+(L+8<<2)>>2]*e;g[G>>2]=t*+g[p+(M+9<<2)>>2]+ +g[p+(L+9<<2)>>2]*e;g[H>>2]=t*+g[p+(M+10<<2)>>2]+ +g[p+(L+10<<2)>>2]*e;g[I>>2]=t*+g[p+(M+11<<2)>>2]+ +g[p+(L+11<<2)>>2]*e}L=k+1|0;if((L|0)<(c[l>>2]|0)){J=J+4|0;k=L}else{break}}i=h;return}function fT(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;h=h|0;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.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0;j=i;i=i+6144|0;k=j|0;l=b+16|0;m=c[l>>2]|0;a:do{if((m|0)>0){n=0;o=c[b+80>>2]|0;while(1){if((k$(h,o)|0)==0){p=n;break a}q=o+((o$(o|0)|0)+1)|0;r=n+1|0;if((r|0)<(m|0)){n=r;o=q}else{p=r;break}}}else{p=0}}while(0);if((p|0)>=(m|0)){CB(a+12|0);g[a+8>>2]=0.0;g[a+4>>2]=0.0;g[a>>2]=0.0;s=0;t=6144;u=0;i=j;return s|0}eT(b,d,e,f,k|0);e=c[l>>2]|0;if((e|0)>0){l=c[b+68>>2]|0;b=0;do{d=b*12|0;m=d|3;h=k+(m<<2)|0;f=+g[k+(d+4<<2)>>2];v=+g[k+(d+5<<2)>>2];w=+g[k+(d+6<<2)>>2];o=d+7|0;n=k+(o<<2)|0;x=+g[n>>2];y=+g[k+(d+8<<2)>>2];z=+g[k+(d+9<<2)>>2];A=+g[k+(d+10<<2)>>2];r=d+11|0;q=k+(r<<2)|0;B=+g[q>>2];C=l+(m<<2)|0;m=l+(o<<2)|0;o=l+(r<<2)|0;g[h>>2]=+g[h>>2]+(+g[k+(d<<2)>>2]*+g[C>>2]+ +g[k+((d|1)<<2)>>2]*+g[m>>2]+ +g[k+((d|2)<<2)>>2]*+g[o>>2]);g[n>>2]=x+(f*+g[C>>2]+v*+g[m>>2]+w*+g[o>>2]);g[q>>2]=B+(y*+g[C>>2]+z*+g[m>>2]+A*+g[o>>2]);b=b+1|0;}while((b|0)<(e|0))}e=p*12|0;g[a+12>>2]=+g[k+(e<<2)>>2];g[a+24>>2]=+g[k+((e|1)<<2)>>2];g[a+36>>2]=+g[k+((e|2)<<2)>>2];g[a>>2]=+g[k+((e|3)<<2)>>2];g[a+16>>2]=+g[k+(e+4<<2)>>2];g[a+28>>2]=+g[k+(e+5<<2)>>2];g[a+40>>2]=+g[k+(e+6<<2)>>2];g[a+4>>2]=+g[k+(e+7<<2)>>2];g[a+20>>2]=+g[k+(e+8<<2)>>2];g[a+32>>2]=+g[k+(e+9<<2)>>2];g[a+44>>2]=+g[k+(e+10<<2)>>2];g[a+8>>2]=+g[k+(e+11<<2)>>2];s=1;t=6144;u=0;i=j;return s|0}function gT(){var a=0;a=0;do{g[19122856+(a<<2)>>2]=+(v$()|0)*4.656612873077393e-10*2.0+-1.0;c[19123880+(a<<2)>>2]=~~(+(v$()|0)*4.656612873077393e-10*255.0)&255;a=a+1|0;}while((a|0)<256);return}function hT(a,b,d,e){a=+a;b=+b;d=+d;e=+e;var f=0,h=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0;f=i;i=i+8|0;h=f|0;j=~~+R(a);k=a- +(j|0);l=~~+R(b);a=b- +(l|0);m=~~+R(d);b=d- +(m|0);n=~~+R(e);d=+(n|0);o=j+1|0;p=l+1|0;q=m+1|0;r=1.0-k;s=1.0-a;t=1.0-b;u=0;do{v=c[19123880+((u+n&255)<<2)>>2]|0;w=c[19123880+((v+m&255)<<2)>>2]|0;x=c[19123880+((w+l&255)<<2)>>2]|0;y=c[19123880+((w+p&255)<<2)>>2]|0;w=c[19123880+((q+v&255)<<2)>>2]|0;v=c[19123880+((w+l&255)<<2)>>2]|0;z=c[19123880+((w+p&255)<<2)>>2]|0;g[h+(u<<2)>>2]=t*(s*(r*+g[19122856+(c[19123880+((x+j&255)<<2)>>2]<<2)>>2]+k*+g[19122856+(c[19123880+((x+o&255)<<2)>>2]<<2)>>2])+a*(r*+g[19122856+(c[19123880+((y+j&255)<<2)>>2]<<2)>>2]+k*+g[19122856+(c[19123880+((y+o&255)<<2)>>2]<<2)>>2]))+b*(s*(r*+g[19122856+(c[19123880+((v+j&255)<<2)>>2]<<2)>>2]+k*+g[19122856+(c[19123880+((v+o&255)<<2)>>2]<<2)>>2])+a*(r*+g[19122856+(c[19123880+((z+j&255)<<2)>>2]<<2)>>2]+k*+g[19122856+(c[19123880+((z+o&255)<<2)>>2]<<2)>>2]));u=u+1|0;}while((u|0)<2);k=e-d;i=f;return+((1.0-k)*+g[h>>2]+k*+g[h+4>>2])}function iT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=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.0;h=i;i=i+48|0;j=h|0;k=h+16|0;l=h+32|0;m=(f|0)!=0;if(m){f=c[7368824]|0;n=c[253192]|0;do{if((f|0)==0){o=6}else{if((n|0)<(f|0)|(n-f|0)>5){o=6;break}p=j|0;q=j+4|0;r=j+8|0;s=j+12|0}}while(0);if((o|0)==6){c[7368824]=n;n=k|0;c[n>>2]=0;o=k+4|0;c[o>>2]=0;f=k+8|0;c[f>>2]=256;t=k+12|0;c[t>>2]=256;vQ(a,b,0,c[253329]|0,n,1009468,0,0);k=j|0;u=j+4|0;v=j+8|0;w=j+12|0;j=c[253330]|0;x=c[253329]|0;y=256;while(1){c[k>>2]=0;c[u>>2]=0;c[v>>2]=y;c[w>>2]=y;z=y>>1;c[n>>2]=0;c[o>>2]=0;c[f>>2]=z;c[t>>2]=z;A=(z|0)==1?c[253334]|0:j;wQ(x,k,A,n,16384,9729);if((z|0)>1){j=x;x=A;y=z}else{p=k;q=u;r=v;s=w;break}}}c[p>>2]=0;c[q>>2]=0;c[r>>2]=0;c[s>>2]=0;s=l+8|0;g[s>>2]=1.0;r=l+4|0;g[r>>2]=1.0;q=l|0;g[q>>2]=1.0;w=l+12|0;g[w>>2]=(c[5120187]|0)==0?.10000000149011612:.029999999329447746;vQ(c[253334]|0,p,0,c[253333]|0,0,0,q,101);B=s;C=r;D=q;E=w}else{B=l+8|0;C=l+4|0;D=l|0;E=l+12|0}F=+He(+(+g[(c[4919902]|0)+28>>2]));g[B>>2]=F;g[C>>2]=F;g[D>>2]=F;g[E>>2]=1.0;if(m){cP(c[253298]|0,1);vQ(a,b,0,d,e,1009004,D,0);i=h;return}else{cP(c[253300]|0,1);vQ(a,b,0,d,e,1009004,D,0);i=h;return}}function jT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0;h=i;i=i+40|0;j=h|0;k=h+16|0;l=h+32|0;m=f*10.0;if(!(m>=.004000000189989805&(c[5120183]|0)!=0)){i=h;return}n=m>0.0;if(n){o=k|0;c[o>>2]=0;p=c[253331]|0;q=p+232|0;c[k+4>>2]=c[q>>2];c[k+8>>2]=c[p+228>>2];c[k+12>>2]=-(c[q>>2]|0);wQ(a,b,p,o,16384,9729)}o=m>1.0;if(o){wQ(c[253331]|0,0,c[253329]|0,0,16384,9729)}if(n&m<=1.0){n=j|0;g[n>>2]=1.0;g[j+4>>2]=1.0;g[j+8>>2]=1.0;g[j+12>>2]=m;vQ(c[253331]|0,0,0,d,e,0,n,101);i=h;return}if(o&m<=2.0){vQ(c[253331]|0,0,0,d,e,0,0,0);o=j|0;g[o>>2]=1.0;g[j+4>>2]=1.0;g[j+8>>2]=1.0;g[j+12>>2]=m+-1.0;vQ(c[253329]|0,0,0,d,e,0,o,101);i=h;return}if(!(m>2.0)){i=h;return}f=(m+-2.0)*.5/3.0;o=l+4|0;n=l|0;l=j+8|0;p=j+4|0;b=j|0;a=j+12|0;g[o>>2]=f;g[n>>2]=f;g[l>>2]=.5;g[p>>2]=.5;g[b>>2]=.5;g[a>>2]=1.0;vQ(c[253329]|0,0,n,c[253330]|0,0,1008540,b,0);m=f*2.0;g[o>>2]=m;g[n>>2]=m;g[l>>2]=.5;g[p>>2]=.5;g[b>>2]=.5;g[a>>2]=1.0;vQ(c[253329]|0,0,n,c[253330]|0,0,1008540,b,34);vQ(c[253330]|0,0,0,d,e,974204,0,0);i=h;return}function kT(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,V=0.0,W=0.0;f=i;i=i+408|0;h=f|0;j=f+16|0;k=f+32|0;l=f+48|0;m=f+56|0;n=f+64|0;o=f+80|0;p=f+144|0;q=f+160|0;r=f+176|0;s=f+240|0;t=f+304|0;u=f+368|0;v=f+384|0;w=f+400|0;if(+g[253809]*+g[7094070]+ +g[253810]*+g[7094071]+ +g[253811]*+g[7094072]<.25){x=64;y=0;i=f;return}c[m>>2]=0;do{if((c[5120179]|0)!=0){z=c[298957]^1;c[298957]=z;if((c[1195832+(z<<2)>>2]|0)==0){break}Tk[c[4920010]&255](c[1195820+(z<<2)>>2]|0,34918,m);if((c[m>>2]|0)!=0){break}x=64;y=0;i=f;return}}while(0);m=r|0;fQ(28376268,m);r=s|0;cQ(28376516,m,r);cQ(28376732,r,t|0);A=+g[7094230]/1.75;t=p|0;g[t>>2]=A*+g[253809];r=p+4|0;g[r>>2]=A*+g[253810];g[p+8>>2]=A*+g[253811];p=q|0;dQ(o|0,t,p);o=q+12|0;A=.5/+g[o>>2];g[o>>2]=A;g[t>>2]=A*+g[p>>2]+.5;g[r>>2]=+g[q+4>>2]*A+.5;q=n|0;g[q>>2]=1.0;p=n+4|0;g[p>>2]=1.0;o=n+8|0;g[o>>2]=1.0;m=n+12|0;g[m>>2]=1.0;n=c[253311]|0;s=n+228|0;z=da(c[s>>2]|0,c[b>>2]|0)|0;if((a|0)==0){B=c[5123026]|0;c[u>>2]=(z|0)/(B|0)|0;C=n+232|0;D=da(c[C>>2]|0,c[b+4>>2]|0)|0;E=c[5123027]|0;c[u+4>>2]=(D|0)/(E|0)|0;c[u+8>>2]=(da(c[s>>2]|0,c[b+8>>2]|0)|0)/(B|0)|0;c[u+12>>2]=(da(c[C>>2]|0,c[b+12>>2]|0)|0)/(E|0)|0}else{E=c[a+228>>2]|0;c[u>>2]=(z|0)/(E|0)|0;z=n+232|0;n=da(c[z>>2]|0,c[b+4>>2]|0)|0;C=c[a+232>>2]|0;c[u+4>>2]=(n|0)/(C|0)|0;c[u+8>>2]=(da(c[s>>2]|0,c[b+8>>2]|0)|0)/(E|0)|0;c[u+12>>2]=(da(c[z>>2]|0,c[b+12>>2]|0)|0)/(C|0)|0}C=v|0;c[C>>2]=0;z=c[253331]|0;E=z+232|0;c[v+4>>2]=c[E>>2];c[v+8>>2]=c[z+228>>2];c[v+12>>2]=-(c[E>>2]|0);wQ(a,b,z,C,16384,9729);vQ(c[253311]|0,u|0,0,c[253331]|0,C,0,q,19);C=l+4|0;u=l|0;l=k|0;z=k+4|0;b=k+8|0;a=k+12|0;k=h|0;E=h+4|0;v=h+8|0;s=h+12|0;h=j|0;n=j+4|0;B=j+8|0;D=j+12|0;A=1.6666667461395264;j=0;while(1){F=c[1013324+(j<<2)>>2]|0;G=c[1013324+((j^1)<<2)>>2]|0;H=c[253331]|0;I=+(c[H+228>>2]|0);J=+(c[H+232>>2]|0);K=+g[t>>2];L=+g[r>>2];M=+U(+A,+.20000000298023224);g[C>>2]=1.0;g[u>>2]=1.0;g[l>>2]=.22500000894069672;g[z>>2]=.22500000894069672;g[b>>2]=.22500000894069672;g[a>>2]=1.0;c[k>>2]=0;c[E>>2]=0;H=F+228|0;c[v>>2]=c[H>>2];N=F+232|0;c[s>>2]=c[N>>2];c[h>>2]=0;c[n>>2]=0;c[B>>2]=~~I;c[D>>2]=~~J;vQ(F,k,u,G,h,974204,l,0);J=1.0-L;L=1.0/M;I=1.0-L;O=K*I;P=J*I;I=L+P;Q=L+O;if((F|0)==0){L=+(c[5123026]|0);c[k>>2]=~~(O*L);R=+(c[5123027]|0);c[E>>2]=~~(P*R);c[v>>2]=~~(L*(Q-O));c[s>>2]=~~(R*(I-P));vQ(0,k,u,G,h,974204,l,34);R=M*M;L=1.0/R;S=1.0-L;T=K*S;V=J*S;S=+(c[5123026]|0);c[k>>2]=~~(T*S);W=+(c[5123027]|0);c[E>>2]=~~(V*W);c[v>>2]=~~(S*(L+T-T));c[s>>2]=~~(W*(L+V-V));vQ(0,k,u,G,h,974204,l,34);V=M*R;R=1.0/V;L=1.0-R;W=K*L;T=J*L;L=+(c[5123026]|0);c[k>>2]=~~(W*L);S=+(c[5123027]|0);c[E>>2]=~~(T*S);c[v>>2]=~~(L*(R+W-W));c[s>>2]=~~(S*(R+T-T));vQ(0,k,u,G,h,974204,l,34);T=1.0/(M*V);V=1.0-T;R=K*V;S=J*V;V=+(c[5123026]|0);c[k>>2]=~~(R*V);W=+(c[5123027]|0);c[E>>2]=~~(S*W);c[v>>2]=~~(V*(T+R-R));c[s>>2]=~~(W*(T+S-S));vQ(0,k,u,G,h,974204,l,34)}else{S=+(c[H>>2]|0);c[k>>2]=~~(O*S);T=+(c[N>>2]|0);c[E>>2]=~~(P*T);c[v>>2]=~~(S*(Q-O));c[s>>2]=~~(T*(I-P));vQ(F,k,u,G,h,974204,l,34);P=M*M;I=1.0/P;T=1.0-I;O=K*T;Q=J*T;T=+(c[H>>2]|0);c[k>>2]=~~(O*T);S=+(c[N>>2]|0);c[E>>2]=~~(Q*S);c[v>>2]=~~(T*(I+O-O));c[s>>2]=~~(S*(I+Q-Q));vQ(F,k,u,G,h,974204,l,34);Q=M*P;P=1.0/Q;I=1.0-P;S=K*I;O=J*I;I=+(c[H>>2]|0);c[k>>2]=~~(S*I);T=+(c[N>>2]|0);c[E>>2]=~~(O*T);c[v>>2]=~~(I*(P+S-S));c[s>>2]=~~(T*(P+O-O));vQ(F,k,u,G,h,974204,l,34);O=1.0/(M*Q);Q=1.0-O;M=K*Q;K=J*Q;Q=+(c[H>>2]|0);c[k>>2]=~~(M*Q);J=+(c[N>>2]|0);c[E>>2]=~~(K*J);c[v>>2]=~~(Q*(O+M-M));c[s>>2]=~~(J*(O+K-K));vQ(F,k,u,G,h,974204,l,34)}G=j+1|0;if((G|0)<2){A=A+.6666666865348816;j=G}else{break}}g[w+4>>2]=1.0;j=w|0;g[j>>2]=1.0;g[q>>2]=1.0;g[p>>2]=1.0;g[o>>2]=1.0;g[m>>2]=1.0;vQ(c[253331]|0,0,j,d,e,974204,q,34);x=64;y=0;i=f;return}function lT(){c[(c[7093892]|0)+1279160>>2]=0;c[4919818]=0;c[4917398]=0;c[4919820]=0;c[4917396]=0;c[4919816]=0;c[4917394]=0;c[4919814]=0;c[4917392]=0;return}function mT(){c[4919820]=c[4917398];c[4919816]=c[4917396];c[4919814]=c[4917394];return}function nT(){var a=0,b=0,d=0,e=0;c[253410]=1023;c[253411]=130944;a=-((c[253649]|0)>>>3&1^1)|0;if((c[253729]|0)<=0){return}b=c[253730]|0;d=0;while(1){e=UT(c[b+4>>2]|0)|0;AS(b|0,e,c[b+8>>2]&a,0,0,0);e=d+1|0;if((e|0)<(c[253729]|0)){b=b+20|0;d=e}else{break}}return}function oT(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=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.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0;h=i;i=i+24|0;j=h|0;if(!((c[253180]|0)!=0&(f|0)>0)){i=h;return}k=d*24|0;l=j|0;m=j+4|0;n=j+8|0;o=j+12|0;p=j+16|0;q=j+20|0;j=0;while(1){if(((c[4917392]|0)+d|0)>(c[4954624]|0)){break}r=c[4917394]|0;if((r|0)>=(c[4954626]|0)){break}s=c[(c[7093892]|0)+1000624>>2]|0;c[s+(r*20|0)>>2]=5;c[s+(r*20|0)+4>>2]=b;t=s+(r*20|0)+12|0;c[t>>2]=d;u=(c[(c[7093892]|0)+1000628>>2]|0)+((c[4917392]|0)*24|0)|0;v=s+(r*20|0)+16|0;c[v>>2]=u;m$(u|0,e+((da(j,d)|0)*24|0)|0,k)|0;if((c[5123022]|0)==3){a[(c[v>>2]|0)+20|0]=-1;a[(c[v>>2]|0)+21|0]=-1;a[(c[v>>2]|0)+22|0]=-1;a[(c[v>>2]|0)+23|0]=-1}c[4917394]=(c[4917394]|0)+1;c[4917392]=(c[4917392]|0)+d;u=c[253203]|0;do{if((u|0)==0){w=0}else{x=c[u+224>>2]|0;if((x|0)==1){w=0;break}y=c[v>>2]|0;z=y|0;g[l>>2]=+g[z>>2];A=y+4|0;g[m>>2]=+g[A>>2];B=y+8|0;g[n>>2]=+g[B>>2];g[o>>2]=+g[z>>2];g[p>>2]=+g[A>>2];g[q>>2]=+g[B>>2];if((c[t>>2]|0)>1){B=1;A=y;while(1){LB(A+(B*24|0)|0,l,o);y=B+1|0;if((y|0)>=(c[t>>2]|0)){break}B=y;A=c[v>>2]|0}A=c[253203]|0;C=A;D=c[A+224>>2]|0}else{C=u;D=x}a:do{if((D|0)>1){E=+g[o>>2];F=+g[p>>2];G=+g[q>>2];H=+g[l>>2];I=+g[m>>2];J=+g[n>>2];A=c[C+228>>2]|0;B=1;while(1){do{if(!(E<+g[A+(B*72|0)+4>>2])){if(F<+g[A+(B*72|0)+8>>2]){break}if(G<+g[A+(B*72|0)+12>>2]){break}if(H>+g[A+(B*72|0)+16>>2]){break}if(I>+g[A+(B*72|0)+20>>2]){break}if(!(J>+g[A+(B*72|0)+24>>2])){K=B;break a}}}while(0);y=B+1|0;if((y|0)<(D|0)){B=y}else{K=y;break}}}else{K=1}}while(0);w=(K|0)==(D|0)?0:K}}while(0);c[s+(r*20|0)+8>>2]=w;u=j+1|0;if((u|0)<(f|0)){j=u}else{L=25;break}}if((L|0)==25){i=h;return}Tk[c[4886344]&255](1,103896,(L=i,i=i+1|0,i=i+7&-8,c[L>>2]=0,L)|0);i=L;i=h;return}function pT(b){b=b|0;var d=0,e=0,f=0,h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;d=i;if((c[253180]|0)==0){i=d;return}if((c[4917396]|0)>1022){Tk[c[4886344]&255](1,164576,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=d;return}do{if((NB(+g[b+68>>2])|0)==0){if((NB(+g[b+72>>2])|0)!=0){break}if((NB(+g[b+76>>2])|0)!=0){break}f=c[b>>2]|0;if((f|0)<0|f>>>0>7>>>0){Tk[c[4886345]&255](1,126120,(e=i,i=i+8|0,c[e>>2]=f,e)|0);i=e}m$((c[7093892]|0)+787840+((c[4917396]|0)*208|0)|0,b|0,140)|0;c[(c[7093892]|0)+787840+((c[4917396]|0)*208|0)+148>>2]=0;h=+g[b+32>>2];j=+g[b+48>>2];k=+g[b+36>>2];l=+g[b+44>>2];m=+g[b+40>>2];n=+g[b+28>>2];c[(c[7093892]|0)+787840+((c[4917396]|0)*208|0)+152>>2]=(h*j-k*l)*+g[b+52>>2]+ +g[b+56>>2]*(k*m-j*n)+(l*n-h*m)*+g[b+60>>2]<0.0;c[4917396]=(c[4917396]|0)+1;i=d;return}}while(0);if(a[186456]|0){i=d;return}a[186456]=1;Tk[c[4886344]&255](2,140224,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=d;return}function qT(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=+f;var h=0,i=0;h=c[4917398]|0;if(!((h|0)<32&(c[253180]|0)!=0&b>0.0)){return}i=c[5123022]|0;if((i|0)==4|(i|0)==2){return}c[4917398]=h+1;i=c[7093892]|0;g[i+786432+(h*44|0)>>2]=+g[a>>2];g[i+786432+(h*44|0)+4>>2]=+g[a+4>>2];g[i+786432+(h*44|0)+8>>2]=+g[a+8>>2];g[i+786432+(h*44|0)+24>>2]=b;g[i+786432+(h*44|0)+12>>2]=d;g[i+786432+(h*44|0)+16>>2]=e;g[i+786432+(h*44|0)+20>>2]=f;c[i+786432+(h*44|0)+40>>2]=0;return}function rT(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=+f;var h=0,i=0;h=c[4917398]|0;if(!((h|0)<32&(c[253180]|0)!=0&b>0.0)){return}i=c[5123022]|0;if((i|0)==4|(i|0)==2){return}c[4917398]=h+1;i=c[7093892]|0;g[i+786432+(h*44|0)>>2]=+g[a>>2];g[i+786432+(h*44|0)+4>>2]=+g[a+4>>2];g[i+786432+(h*44|0)+8>>2]=+g[a+8>>2];g[i+786432+(h*44|0)+24>>2]=b;g[i+786432+(h*44|0)+12>>2]=d;g[i+786432+(h*44|0)+16>>2]=e;g[i+786432+(h*44|0)+20>>2]=f;c[i+786432+(h*44|0)+40>>2]=1;return}function sT(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0;m$(1014644,a+112|0,256)|0;c[253629]=c[a>>2];c[253630]=c[a+4>>2];c[253631]=c[a+8>>2];c[253632]=c[a+12>>2];g[253633]=+g[a+16>>2];g[253634]=+g[a+20>>2];g[253635]=+g[a+24>>2];g[253636]=+g[a+28>>2];g[253637]=+g[a+32>>2];g[253638]=+g[a+36>>2];g[253639]=+g[a+40>>2];g[253640]=+g[a+44>>2];g[253641]=+g[a+48>>2];g[253642]=+g[a+52>>2];g[253643]=+g[a+56>>2];g[253644]=+g[a+60>>2];g[253645]=+g[a+64>>2];g[253646]=+g[a+68>>2];c[253648]=c[a+72>>2];b=a+76|0;d=c[b>>2]|0;c[253649]=d;c[253658]=0;e=(d&1|0)==0;do{if(e){d=c[a+80>>2]|0;f=d^c[253650];c[253650]=d;d=c[a+84>>2]|0;h=d^c[253651]|f;c[253651]=d;d=c[a+88>>2]|0;f=d^c[253652]|h;c[253652]=d;d=c[a+92>>2]|0;h=d^c[253653]|f;c[253653]=d;d=c[a+96>>2]|0;f=d^c[253654]|h;c[253654]=d;d=c[a+100>>2]|0;h=d^c[253655]|f;c[253655]=d;d=c[a+104>>2]|0;f=d^c[253656]|h;c[253656]=d;d=c[a+108>>2]|0;h=d^c[253657]|f;c[253657]=d;if((h|0)!=0){c[253658]=1}g[253787]=0.0;g[253791]=1.0;g[253795]=1.0;g[253784]=+g[253809];g[253785]=+g[253810];g[253786]=+g[253811];if(!e){i=7;break}if(!(+g[(c[4919874]|0)+28>>2]!=0.0)){i=7;break}h=(c[(c[4917492]|0)+32>>2]|0)==0;if(h){j=1015212}else{j=(c[4917486]|0)+28|0}g[253796]=+g[j>>2];if((c[(c[4917306]|0)+32>>2]|0)==1){g[253790]=1.0;g[253789]=1.0;g[253788]=1.0;if(h){k=1015216}else{k=(c[4917490]|0)+28|0}l=+g[k>>2];g[253794]=l;g[253793]=l;g[253792]=l;break}else{l=+T_(1.0,(c[(c[4917432]|0)+32>>2]|0)-8-(c[253581]|0)|0);m=+g[253806];if((c[(c[4917492]|0)+32>>2]|0)==0){g[253788]=l*m;n=+g[253807];g[253789]=l*n;o=+g[253808];g[253790]=l*o;p=l*+g[253804];g[253792]=m*p;g[253793]=n*p;g[253794]=o*p;break}else{h=(c[4917488]|0)+28|0;g[253788]=m*l*+g[h>>2];p=+g[253807];g[253789]=p*l*+g[h>>2];o=+g[253808];g[253790]=o*l*+g[h>>2];h=(c[4917490]|0)+28|0;g[253792]=m*l*+g[h>>2];g[253793]=p*l*+g[h>>2];g[253794]=o*l*+g[h>>2];break}}}else{g[253787]=0.0;g[253791]=1.0;g[253795]=1.0;g[253784]=+g[253809];g[253785]=+g[253810];g[253786]=+g[253811];i=7}}while(0);if((i|0)==7){g[253796]=1.0;g[253788]=0.0;g[253789]=0.0;g[253790]=0.0;g[253792]=0.0;g[253793]=0.0;g[253794]=0.0}if((c[(c[4917498]|0)+32>>2]|0)==0){g[253797]=+g[253198];q=1012796}else{g[253797]=+g[(c[4917494]|0)+28>>2];q=(c[4917496]|0)+28|0}g[253798]=+g[q>>2];if((c[(c[4917484]|0)+32>>2]|0)==0){g[253799]=+He(+(+g[253200]));g[253800]=+He(+(+g[253201]));r=+He(+(+g[253202]))}else{g[253799]=+He(+(+g[(c[4917478]|0)+28>>2]));g[253800]=+He(+(+g[(c[4917482]|0)+28>>2]));r=+He(+(+g[(c[4917480]|0)+28>>2]))}g[253801]=r;q=c[b>>2]|0;do{if((q&16|0)==0){g[253660]=0.0}else{g[253660]=+g[a+368>>2];if((q&32|0)==0){break}b=a+372|0;g[253784]=+g[b>>2];g[253785]=+g[b+4>>2];g[253786]=+g[b+8>>2];b=a+384|0;g[253788]=+g[b>>2];g[253789]=+g[b+4>>2];g[253790]=+g[b+8>>2];g[253792]=+g[a+396>>2];g[253793]=+g[a+400>>2];g[253794]=+g[a+404>>2]}}while(0);g[253659]=+(c[253648]|0)*.0010000000474974513;c[253731]=c[4919818];a=c[7093892]|0;c[253732]=a;q=c[4919816]|0;c[253725]=(c[4917396]|0)-q;c[253726]=a+787840+(q*208|0);q=c[4919820]|0;c[253727]=(c[4917398]|0)-q;c[253728]=a+786432+(q*44|0);q=c[4919814]|0;c[253729]=(c[4917394]|0)-q;c[253730]=(c[a+1000624>>2]|0)+(q*20|0);c[253734]=0;c[253735]=a+1000632;do{if((c[(c[4919852]|0)+32>>2]|0)!=0){if((c[(c[4917292]|0)+32>>2]|0)==1|(c[5123022]|0)==4){break}s=c[253195]|0;t=s+1|0;c[253195]=t;u=c[253193]|0;v=u+1|0;c[253193]=v;return}}while(0);c[253727]=0;s=c[253195]|0;t=s+1|0;c[253195]=t;u=c[253193]|0;v=u+1|0;c[253193]=v;return}function tT(){c[4919818]=c[253731];c[4919816]=c[4917396];c[4919820]=c[4917398];c[4919814]=c[4917394];return} + + + +function oN(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=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,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,_=0,$=0,aa=0,ba=0,ca=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,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0;h=i;i=i+32|0;j=h|0;k=d+2336|0;l=c[k>>2]|0;m=i;i=i+(l<<1)|0;i=i+7&-8;n=m;m=d+2328|0;o=c[m>>2]|0;p=i;i=i+(o+l<<2)|0;i=i+7&-8;l=p;p=d+2332|0;q=c[p>>2]<<2;r=i;i=i+q|0;i=i+7&-8;s=r;r=i;i=i+(q+64)|0;i=i+7&-8;q=r;t=d+2765|0;u=a[d+2767|0]|0;if((o|0)>0){o=b[6272+(a[t]>>1<<2)+(a[d+2766|0]<<1)>>1]<<4;v=a[d+2770|0]|0;w=0;while(1){x=(da(v,196314165)|0)+907633515|0;y=g+(w<<2)|0;z=c[y>>2]<<14;A=d+4+(w<<2)|0;c[A>>2]=z;do{if((z|0)>0){B=z-1280|0;c[A>>2]=B;C=B}else{if((z|0)>=0){C=0;break}B=z|1280;c[A>>2]=B;C=B}}while(0);z=C+o|0;c[A>>2]=(x|0)<0?-z|0:z;z=w+1|0;if((z|0)<(c[m>>2]|0)){v=(c[y>>2]|0)+x|0;w=z}else{break}}}w=d+1284|0;m$(r|0,w|0,64)|0;v=d+2324|0;if((c[v>>2]|0)<=0){m$(w|0,r|0,64)|0;i=h;return}m=d+2340|0;o=j;C=d|0;g=d+4160|0;z=e+136|0;B=u<<24>>24>3;u=f;D=j|0;E=j+2|0;F=j+4|0;G=j+6|0;I=j+8|0;J=j+10|0;K=j+12|0;L=j+14|0;M=j+16|0;N=j+18|0;O=j+20|0;P=j+22|0;Q=j+24|0;R=j+26|0;S=j+28|0;T=j+30|0;j=d+4164|0;U=d+2308|0;V=f;f=c[k>>2]|0;W=d+4|0;X=0;while(1){Y=e+32+(X>>1<<5)|0;m$(o|0,Y|0,c[m>>2]<<1)|0;Z=X*5|0;_=e+96+(Z<<1)|0;$=a[t]|0;aa=c[e+16+(X<<2)>>2]|0;ba=aa>>>6;ca=pN((aa|0)>0?aa:-aa|0)|0;ea=aa<>16;ga=536870911/(fa|0)|0;ha=ga<<16;ia=ha>>16;ja=536870912-(da(fa,ia)|0)-((da(ea&65535,ia)|0)>>16)<<3;fa=(da(ja,(ga>>15)+1>>1)|0)+ha+(da(ja>>16,ia)|0)+((da(ja&65528,ia)|0)>>16)|0;ja=62-ca|0;ha=ja-47|0;if((ha|0)<1){ga=47-ja|0;ja=-2147483648>>ga;ka=2147483647>>>(ga>>>0);do{if((ja|0)>(ka|0)){if((fa|0)>(ja|0)){la=ja;break}la=(fa|0)<(ka|0)?ka:fa}else{if((fa|0)>(ka|0)){la=ka;break}la=(fa|0)<(ja|0)?ja:fa}}while(0);ma=la<>ha:0}ja=c[C>>2]|0;if((aa|0)==(ja|0)){na=65536}else{ka=pN((ja|0)>0?ja:-ja|0)|0;x=ja<>16)+(da(ia,x>>16)|0)|0;y=I$(ja,(ja|0)<0|0?-1:0,ea,(ea|0)<0|0?-1:0)|0;A=x-((y>>>29|H<<3)&-8)|0;y=(da(A>>16,ia)|0)+ja+((da(A&65535,ia)|0)>>16)|0;A=ka+28+(1-ca)|0;ka=A-16|0;if((ka|0)<0){ja=16-A|0;A=-2147483648>>ja;x=2147483647>>>(ja>>>0);do{if((A|0)>(x|0)){if((y|0)>(A|0)){oa=A;break}oa=(y|0)<(x|0)?x:y}else{if((y|0)>(x|0)){oa=x;break}oa=(y|0)<(A|0)?A:y}}while(0);pa=oa<>ka:0}A=pa>>16;x=pa&65535;ca=0;while(1){ia=q+(ca<<2)|0;ea=c[ia>>2]|0;ha=ea<<16>>16;c[ia>>2]=((da(ha,x)|0)>>16)+(da(ha,A)|0)+(da((ea>>15)+1>>1,pa)|0);ea=ca+1|0;if((ea|0)<16){ca=ea}else{na=pa;break}}}c[C>>2]=aa;do{if((c[g>>2]|0)==0){qa=33}else{if((c[j>>2]|0)!=2){qa=33;break}if(!($<<24>>24!=2&(X|0)<2)){qa=33;break}n$(_|0,0,10)|0;b[e+96+(Z+2<<1)>>1]=4096;ca=c[U>>2]|0;c[e+(X<<2)>>2]=ca;ra=ca;qa=36}}while(0);do{if((qa|0)==33){qa=0;if($<<24>>24==2){ra=c[e+(X<<2)>>2]|0;qa=36;break}else{sa=W;ta=f;ua=c[p>>2]|0;qa=52;break}}}while(0);do{if((qa|0)==36){qa=0;$=(X|0)==0;do{if($){ca=c[k>>2]|0;A=c[m>>2]|0;va=-2-ra+ca-A|0;wa=ca;xa=A;qa=40}else{if(!((X|0)!=2|B)){A=c[k>>2]|0;ca=-2-ra+A-(c[m>>2]|0)|0;m$(d+1348+(A<<1)|0,u|0,c[p>>2]<<2)|0;va=ca;wa=c[k>>2]|0;xa=c[m>>2]|0;qa=40;break}if((na|0)==65536){break}ca=ra+2|0;if((ca|0)<=0){break}A=na>>16;x=f-1|0;ka=na&65535;y=0;do{ja=l+(x-y<<2)|0;ea=c[ja>>2]|0;ha=ea<<16>>16;c[ja>>2]=((da(ha,ka)|0)>>16)+(da(ha,A)|0)+(da((ea>>15)+1>>1,na)|0);y=y+1|0;}while((y|0)<(ca|0))}}while(0);do{if((qa|0)==40){qa=0;MN(n+(va<<1)|0,d+1348+((da(c[p>>2]|0,X)|0)+va<<1)|0,Y,wa-va|0,xa);if($){ca=c[z>>2]<<16>>16;ya=((da(ca,ma&65535)|0)>>16)+(da(ca,ma>>16)|0)<<2}else{ya=ma}ca=ra+2|0;if((ca|0)<=0){break}y=ya>>16;A=c[k>>2]|0;ka=ya&65535;x=f-1|0;ea=0;ha=0;while(1){ja=b[n+(ha-1+A<<1)>>1]|0;c[l+(x+ha<<2)>>2]=((da(ja,ka)|0)>>16)+(da(ja,y)|0);ja=ea+1|0;ia=~ea;if((ja|0)<(ca|0)){ea=ja;ha=ia}else{break}}}}while(0);$=c[p>>2]|0;if(($|0)<=0){za=$;Aa=f;break}ha=b[_>>1]|0;ea=b[e+96+(Z+1<<1)>>1]|0;ca=b[e+96+(Z+2<<1)>>1]|0;y=b[e+96+(Z+3<<1)>>1]|0;ka=b[e+96+(Z+4<<1)>>1]|0;x=f;A=l+(f+2-ra<<2)|0;ia=0;while(1){ja=c[A>>2]|0;fa=ha<<16>>16;ga=da(fa,ja>>16)|0;Ba=(da(fa,ja&65535)|0)>>16;ja=c[A-4>>2]|0;fa=ea<<16>>16;Ca=da(fa,ja>>16)|0;Da=(da(fa,ja&65535)|0)>>16;ja=c[A-8>>2]|0;fa=ca<<16>>16;Ea=da(fa,ja>>16)|0;Fa=(da(fa,ja&65535)|0)>>16;ja=c[A-12>>2]|0;fa=y<<16>>16;Ga=da(fa,ja>>16)|0;Ha=(da(fa,ja&65535)|0)>>16;ja=c[A-16>>2]|0;fa=ka<<16>>16;Ia=ga+2+Ba+Ca+Da+Ea+Fa+Ga+Ha+(da(fa,ja>>16)|0)+((da(fa,ja&65535)|0)>>16)|0;ja=(Ia<<1)+(c[W+(ia<<2)>>2]|0)|0;c[s+(ia<<2)>>2]=ja;c[l+(x<<2)>>2]=ja<<1;ja=x+1|0;Ia=ia+1|0;if((Ia|0)<($|0)){x=ja;A=A+4|0;ia=Ia}else{sa=s;ta=ja;ua=$;qa=52;break}}}}while(0);do{if((qa|0)==52){qa=0;if((ua|0)<=0){za=ua;Aa=ta;break}Z=ba<<16>>16;_=(aa>>21)+1>>1;Y=0;while(1){$=c[m>>2]|0;ia=c[q+(Y+15<<2)>>2]|0;A=b[D>>1]|0;x=da(A,ia>>16)|0;ka=(da(A,ia&65535)|0)>>16;ia=c[q+(Y+14<<2)>>2]|0;A=b[E>>1]|0;y=da(A,ia>>16)|0;ca=(da(A,ia&65535)|0)>>16;ia=c[q+(Y+13<<2)>>2]|0;A=b[F>>1]|0;ea=da(A,ia>>16)|0;ha=(da(A,ia&65535)|0)>>16;ia=c[q+(Y+12<<2)>>2]|0;A=b[G>>1]|0;ja=da(A,ia>>16)|0;Ia=(da(A,ia&65535)|0)>>16;ia=c[q+(Y+11<<2)>>2]|0;A=b[I>>1]|0;fa=da(A,ia>>16)|0;Ha=(da(A,ia&65535)|0)>>16;ia=c[q+(Y+10<<2)>>2]|0;A=b[J>>1]|0;Ga=da(A,ia>>16)|0;Fa=(da(A,ia&65535)|0)>>16;ia=c[q+(Y+9<<2)>>2]|0;A=b[K>>1]|0;Ea=da(A,ia>>16)|0;Da=(da(A,ia&65535)|0)>>16;ia=c[q+(Y+8<<2)>>2]|0;A=b[L>>1]|0;Ca=da(A,ia>>16)|0;Ba=(da(A,ia&65535)|0)>>16;ia=c[q+(Y+7<<2)>>2]|0;A=b[M>>1]|0;ga=da(A,ia>>16)|0;Ja=(da(A,ia&65535)|0)>>16;ia=c[q+(Y+6<<2)>>2]|0;A=b[N>>1]|0;Ka=x+($>>1)+ka+y+ca+ea+ha+ja+Ia+fa+Ha+Ga+Fa+Ea+Da+Ca+Ba+ga+Ja+(da(A,ia>>16)|0)+((da(A,ia&65535)|0)>>16)|0;if(($|0)==16){$=c[q+(Y+5<<2)>>2]|0;ia=b[O>>1]|0;A=da(ia,$>>16)|0;Ja=(da(ia,$&65535)|0)>>16;$=c[q+(Y+4<<2)>>2]|0;ia=b[P>>1]|0;ga=da(ia,$>>16)|0;Ba=(da(ia,$&65535)|0)>>16;$=c[q+(Y+3<<2)>>2]|0;ia=b[Q>>1]|0;Ca=da(ia,$>>16)|0;Da=(da(ia,$&65535)|0)>>16;$=c[q+(Y+2<<2)>>2]|0;ia=b[R>>1]|0;Ea=da(ia,$>>16)|0;Fa=(da(ia,$&65535)|0)>>16;$=c[q+(Y+1<<2)>>2]|0;ia=b[S>>1]|0;Ga=da(ia,$>>16)|0;Ha=(da(ia,$&65535)|0)>>16;$=c[q+(Y<<2)>>2]|0;ia=b[T>>1]|0;La=A+Ka+Ja+ga+Ba+Ca+Da+Ea+Fa+Ga+Ha+(da(ia,$>>16)|0)+((da(ia,$&65535)|0)>>16)|0}else{La=Ka}Ka=(c[sa+(Y<<2)>>2]|0)+(La<<4)|0;c[q+(Y+16<<2)>>2]=Ka;$=((da(Ka>>16,Z)|0)+(da(Ka,_)|0)+((da(Ka&65535,Z)|0)>>16)>>7)+1>>1;if(($|0)>32767){Ma=32767}else{Ma=($|0)<-32768?-32768:$&65535}b[V+(Y<<1)>>1]=Ma;$=Y+1|0;Ka=c[p>>2]|0;if(($|0)<(Ka|0)){Y=$}else{za=Ka;Aa=ta;break}}}}while(0);m$(r|0,q+(za<<2)|0,64)|0;aa=X+1|0;if((aa|0)>=(c[v>>2]|0)){break}V=V+(za<<1)|0;f=Aa;W=W+(za<<2)|0;X=aa}m$(w|0,r|0,64)|0;i=h;return}function pN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!(a>>>0>65535>>>0)){b=a&65535;c=b<<16>>16;do{if(b<<16>>16==0){d=16}else{do{if((c&65280|0)==0){if((c&65520|0)==0){e=12;f=b;break}e=8;f=c>>>4&65535}else{if((c&61440|0)==0){e=4;f=c>>>8&65535;break}else{e=0;f=c>>>12&65535;break}}}while(0);g=f<<16>>16;if((g&12|0)!=0){d=(g>>>3&1|e)^1;break}if((g&14|0)==0){d=e|3;break}else{d=e|2;break}}}while(0);h=d+16|0;return h|0}d=a>>>16&65535;a=d<<16>>16;if(d<<16>>16==0){h=16;return h|0}do{if((a&65280|0)==0){if((a&65520|0)==0){i=12;j=d;break}i=8;j=a>>>4&65535}else{if((a&61440|0)==0){i=4;j=a>>>8&65535;break}else{i=0;j=a>>>12&65535;break}}}while(0);a=j<<16>>16;if((a&12|0)!=0){h=(a>>>3&1|i)^1;return h|0}if((a&14|0)==0){h=i|3;return h|0}else{h=i|2;return h|0}return 0}function qN(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;k=b+2328|0;l=c[k>>2]|0;m=i;i=i+140|0;i=i+7&-8;n=i;i=i+((l<<2)+60&-64)|0;i=i+7&-8;o=n;c[m+136>>2]=0;if((g|0)==0){p=c[b+2388>>2]|0;q=4}else if((g|0)==2){n=c[b+2388>>2]|0;if((c[b+2420+(n<<2)>>2]|0)==1){p=n;q=4}else{q=5}}else{q=5}if((q|0)==4){sN(b,d,p,g,h);g=b+2765|0;tN(d,o,a[g]|0,a[b+2766|0]|0,c[k>>2]|0);rN(b,m,h);oN(b,m,e,o);BN(b,m,e,0);c[b+4160>>2]=0;c[b+4164>>2]=a[g]|0;c[b+2376>>2]=0}else if((q|0)==5){BN(b,m,e,1)}q=c[k>>2]|0;g=(c[b+2336>>2]|0)-q|0;s$(b+1348|0,b+1348+(q<<1)|0,g<<1|0)|0;m$(b+1348+(g<<1)|0,e|0,c[k>>2]<<1)|0;DN(b,e,l);lN(b,m,e,l);c[b+2308>>2]=c[m+((c[b+2324>>2]|0)-1<<2)>>2];c[f>>2]=l;i=j;return 0}function rN(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=i;i=i+64|0;h=g|0;j=g+32|0;k=d+2324|0;yN(e+16|0,d+2736|0,d+2312|0,(f|0)==2|0,c[k>>2]|0);f=h|0;zN(f,d+2744|0,c[d+2732>>2]|0);l=e+32|0;m=e+64|0;n=m|0;o=d+2340|0;ON(n,f,c[o>>2]|0);f=d+2767|0;do{if((c[d+2376>>2]|0)==1){a[f]=4;p=8}else{q=a[f]|0;if(!(q<<24>>24<4)){p=8;break}r=c[o>>2]|0;if((r|0)>0){s=q<<24>>24;q=0;do{t=b[d+2344+(q<<1)>>1]|0;b[j+(q<<1)>>1]=((da((b[h+(q<<1)>>1]|0)-t|0,s)|0)>>>2)+t;q=q+1|0;}while((q|0)<(r|0))}ON(l|0,j|0,r)}}while(0);if((p|0)==8){m$(l|0,m|0,c[o>>2]<<1)|0}m=c[o>>2]|0;m$(d+2344|0,h|0,m<<1)|0;if((c[d+4160>>2]|0)!=0){JN(l|0,m,63570);JN(n,c[o>>2]|0,63570)}if((a[d+2765|0]|0)!=2){n$(e|0,0,c[k>>2]<<2|0)|0;n$(e+96|0,0,(c[k>>2]|0)*10|0|0)|0;a[d+2768|0]=0;c[e+136>>2]=0;i=g;return}KN(b[d+2762>>1]|0,a[d+2764|0]|0,e|0,c[d+2316>>2]|0,c[k>>2]|0);o=c[8200+(a[d+2768|0]<<2)>>2]|0;if((c[k>>2]|0)>0){n=0;do{m=(a[d+2740+n|0]|0)*5|0;l=n*5|0;b[e+96+(l<<1)>>1]=a[o+m|0]<<7;b[e+96+(l+1<<1)>>1]=a[o+(m+1)|0]<<7;b[e+96+(l+2<<1)>>1]=a[o+(m+2)|0]<<7;b[e+96+(l+3<<1)>>1]=a[o+(m+3)|0]<<7;b[e+96+(l+4<<1)>>1]=a[o+(m+4)|0]<<7;n=n+1|0;}while((n|0)<(c[k>>2]|0))}c[e+136>>2]=b[8576+(a[d+2769|0]<<1)>>1]|0;i=g;return}function sN(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;l=i;i=i+48|0;m=l|0;n=l+32|0;do{if((j|0)==0){if((c[f+2404+(h<<2)>>2]|0)!=0){o=3;break}p=JM(g,4728,8)|0;q=p&255;r=p>>>1&255}else{o=3}}while(0);if((o|0)==3){h=(JM(g,4736,8)|0)+2|0;q=h&255;r=h>>>1&255}h=f+2736|0;j=f+2765|0;a[j]=r;a[f+2766|0]=q&1;q=(k|0)==2;if(q){a[h|0]=JM(g,5968,8)|0}else{p=h|0;a[p]=(JM(g,5944+(r<<24>>24<<3)|0,8)|0)<<3;r=JM(g,4688,8)|0;a[p]=(d[p]|0)+r}r=f+2324|0;if((c[r>>2]|0)>1){p=1;do{a[f+2736+p|0]=JM(g,5968,8)|0;p=p+1|0;}while((p|0)<(c[r>>2]|0))}p=f+2732|0;h=c[p>>2]|0;s=da(b[h>>1]|0,a[j]>>1)|0;t=(JM(g,(c[h+12>>2]|0)+s|0,8)|0)&255;a[f+2744|0]=t;GN(m|0,n|0,c[p>>2]|0,t<<24>>24);t=c[p>>2]|0;if((b[t+2>>1]|0)>0){n=0;s=t;do{t=JM(g,(c[s+24>>2]|0)+(b[m+(n<<1)>>1]|0)|0,8)|0;if((t|0)==8){u=(JM(g,6344,8)|0)+8|0}else if((t|0)==0){u=-(JM(g,6344,8)|0)|0}else{u=t}n=n+1|0;a[f+2744+n|0]=u+252;s=c[p>>2]|0;}while((n|0)<(b[s+2>>1]|0))}if((c[r>>2]|0)==4){a[f+2767|0]=JM(g,6280,8)|0}else{a[f+2767|0]=4}if((a[j]|0)!=2){v=a[j]|0;w=v<<24>>24;x=f+2396|0;c[x>>2]=w;y=JM(g,4712,8)|0;z=y&255;A=f+2770|0;a[A]=z;i=l;return}do{if(q){if((c[f+2396>>2]|0)!=2){o=23;break}s=JM(g,5832,8)|0;if(!((s&65535)<<16>>16>0)){o=23;break}n=f+2400|0;p=s+65527+(e[n>>1]|0)&65535;b[f+2762>>1]=p;B=p;C=n}else{o=23}}while(0);if((o|0)==23){o=(JM(g,5800,8)|0)<<16>>16;q=f+2762|0;b[q>>1]=da(o,c[f+2316>>2]>>1)|0;o=JM(g,c[f+2380>>2]|0,8)|0;n=(e[q>>1]|0)+o&65535;b[q>>1]=n;B=n;C=f+2400|0}b[C>>1]=B;a[f+2764|0]=JM(g,c[f+2384>>2]|0,8)|0;B=(JM(g,8216,8)|0)&255;C=f+2768|0;a[C]=B;a:do{if((c[r>>2]|0)>0){n=0;q=B;while(1){a[f+2740+n|0]=JM(g,c[8504+(q<<24>>24<<2)>>2]|0,8)|0;o=n+1|0;if((o|0)>=(c[r>>2]|0)){break a}n=o;q=a[C]|0}}}while(0);if((k|0)==0){a[f+2769|0]=JM(g,8192,8)|0;v=a[j]|0;w=v<<24>>24;x=f+2396|0;c[x>>2]=w;y=JM(g,4712,8)|0;z=y&255;A=f+2770|0;a[A]=z;i=l;return}else{a[f+2769|0]=0;v=a[j]|0;w=v<<24>>24;x=f+2396|0;c[x>>2]=w;y=JM(g,4712,8)|0;z=y&255;A=f+2770|0;a[A]=z;i=l;return}}function tN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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=i;i=i+160|0;h=g|0;j=g+80|0;k=f>>4;l=((k<<4|0)<(f|0))+k|0;k=5616+((JM(a,5592+((d>>1)*9|0)|0,8)|0)*18|0)|0;m=(l|0)>0;do{if(m){n=0;do{o=j+(n<<2)|0;c[o>>2]=0;p=JM(a,k,8)|0;q=h+(n<<2)|0;c[q>>2]=p;if((p|0)==17){p=0;do{p=p+1|0;r=JM(a,5778+((p|0)==10)|0,8)|0;c[q>>2]=r;}while((r|0)==17);c[o>>2]=p}n=n+1|0;}while((n|0)<(l|0));if(m){s=0}else{break}do{n=c[h+(s<<2)>>2]|0;q=b+(s<<16>>12<<2)|0;if((n|0)>0){FN(q,a,n)}else{n$(q|0,0,64)|0}s=s+1|0;}while((s|0)<(l|0));if(m){t=0}else{break}do{q=c[j+(t<<2)>>2]|0;if((q|0)>0){n=t<<16>>12;r=0;do{u=b+(r+n<<2)|0;v=c[u>>2]|0;w=0;do{v=(JM(a,5936,8)|0)+(v<<1)|0;w=w+1|0;}while((w|0)<(q|0));c[u>>2]=v;r=r+1|0;}while((r|0)<16);r=h+(t<<2)|0;c[r>>2]=c[r>>2]|q<<5}t=t+1|0;}while((t|0)<(l|0))}}while(0);mN(a,b,f,d,e,h|0);i=g;return}function uN(b,d,e){b=b|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;f=d<<16>>16;c[b+2332>>2]=f*5|0;g=b+2324|0;h=da(c[g>>2]<<16>>16,(f*327680|0)>>16)|0;i=b+2316|0;j=b+2320|0;if((c[i>>2]|0)==(d|0)){if((c[j>>2]|0)==(e|0)){k=0;l=4}else{l=3}}else{l=3}if((l|0)==3){m=RN(b+2432|0,f*1e3|0,e,0)|0;c[j>>2]=e;if((c[i>>2]|0)==(d|0)){k=m;l=4}else{n=m;o=0}}do{if((l|0)==4){if((h|0)==(c[b+2328>>2]|0)){p=k}else{n=k;o=1;break}return p|0}}while(0);k=(d|0)==8;l=(c[g>>2]|0)==4;g=b+2384|0;do{if(k){if(l){c[g>>2]=5896;break}else{c[g>>2]=5928;break}}else{if(l){c[g>>2]=5856;break}else{c[g>>2]=5912;break}}}while(0);if(!o){c[b+2336>>2]=f*20|0;f=b+2340|0;if((d&-5|0)==8){c[f>>2]=10;c[b+2732>>2]=6456}else{c[f>>2]=16;c[b+2732>>2]=6416}do{if((d|0)==16){c[b+2380>>2]=4688}else if((d|0)==12){c[b+2380>>2]=4696}else{if(!k){break}c[b+2380>>2]=4712}}while(0);c[b+2376>>2]=1;c[b+2308>>2]=100;a[b+2312|0]=10;c[b+4164>>2]=0;n$(b+1284|0,0,1024)|0}c[i>>2]=d;c[b+2328>>2]=h;p=n;return p|0}function vN(a){a=a|0;c[a>>2]=8544;return 0}function wN(a){a=a|0;nN(a)|0;return nN(a+4260|0)|0}function xN(d,f,g,h,j,k,l){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var 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,A=0,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,_=0,$=0,aa=0,ba=0,ca=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;m=i;i=i+32|0;n=m|0;o=m+8|0;p=m+16|0;q=m+24|0;r=q;s=i;i=i+1280|0;c[n>>2]=0;c[q>>2]=0;c[q+4>>2]=0;t=d;u=d;v=f+4|0;w=c[v>>2]|0;if((h|0)!=0&(w|0)>0){h=0;while(1){c[u+(h*4260|0)+2388>>2]=0;x=h+1|0;y=c[v>>2]|0;if((x|0)<(y|0)){h=x}else{A=y;break}}}else{A=w}w=f+4|0;h=d+8536|0;if((A|0)>(c[h>>2]|0)){v=nN(d+4260|0)|0;B=v;C=c[w>>2]|0}else{B=0;C=A}do{if((C|0)==1){if((c[h>>2]|0)!=2){D=0;break}D=(c[f+12>>2]|0)==((c[d+2316>>2]|0)*1e3|0|0)}else{D=0}}while(0);A=d+2388|0;a:do{if((c[A>>2]|0)==0&(C|0)>0){v=f+16|0;y=f+12|0;x=f+8|0;E=B;F=0;b:while(1){switch(c[v>>2]|0){case 40:{c[u+(F*4260|0)+2392>>2]=2;c[u+(F*4260|0)+2324>>2]=4;break};case 60:{c[u+(F*4260|0)+2392>>2]=3;c[u+(F*4260|0)+2324>>2]=4;break};case 0:{c[u+(F*4260|0)+2392>>2]=1;c[u+(F*4260|0)+2324>>2]=2;break};case 10:{c[u+(F*4260|0)+2392>>2]=1;c[u+(F*4260|0)+2324>>2]=2;break};case 20:{c[u+(F*4260|0)+2392>>2]=1;c[u+(F*4260|0)+2324>>2]=4;break};default:{G=-203;H=112;break b}}I=c[y>>2]>>10;if(!((I|0)==15|(I|0)==11|(I|0)==7)){G=-200;H=112;break}J=(uN(u+(F*4260|0)|0,I+1|0,c[x>>2]|0)|0)+E|0;I=F+1|0;K=c[w>>2]|0;if((I|0)<(K|0)){E=J;F=I}else{L=J;M=K;break a}}if((H|0)==112){i=m;return G|0}}else{L=B;M=C}}while(0);C=f|0;B=c[C>>2]|0;do{if((B|0)==2){if((M|0)!=2){N=2;break}if((c[d+8532>>2]|0)!=1){if((c[h>>2]|0)!=1){N=2;break}}F=d+8520|0;z=0;b[F>>1]=z;b[F+2>>1]=z>>16;F=d+8528|0;z=0;b[F>>1]=z;b[F+2>>1]=z>>16;m$(d+6692|0,d+2432|0,300)|0;N=c[C>>2]|0}else{N=B}}while(0);c[d+8532>>2]=N;c[h>>2]=c[w>>2];N=f+8|0;if(((c[N>>2]|0)-8e3|0)>>>0>4e4>>>0){G=-200;i=m;return G|0}B=(g|0)==1;do{if(!B){if((c[A>>2]|0)!=0){break}M=c[w>>2]|0;do{if((M|0)>0){F=0;do{E=u+(F*4260|0)+2392|0;x=(c[E>>2]|0)>0;y=IM(j,1)|0;if(x){x=0;v=y;while(1){c[u+(F*4260|0)+2404+(x<<2)>>2]=v;K=x+1|0;J=(K|0)<(c[E>>2]|0);I=IM(j,1)|0;if(J){x=K;v=I}else{O=I;break}}}else{O=y}c[u+(F*4260|0)+2416>>2]=O;F=F+1|0;P=c[w>>2]|0;}while((F|0)<(P|0));if((P|0)>0){Q=0}else{R=P;break}while(1){F=u+(Q*4260|0)+2420|0;n$(F|0,0,12)|0;do{if((c[u+(Q*4260|0)+2416>>2]|0)!=0){v=u+(Q*4260|0)+2392|0;x=c[v>>2]|0;if((x|0)==1){c[F>>2]=1;break}E=(JM(j,c[8848+(x-2<<2)>>2]|0,8)|0)+1|0;if((c[v>>2]|0)>0){S=0}else{break}do{c[u+(Q*4260|0)+2420+(S<<2)>>2]=E>>>(S>>>0)&1;S=S+1|0;}while((S|0)<(c[v>>2]|0))}}while(0);F=Q+1|0;y=c[w>>2]|0;if((F|0)<(y|0)){Q=F}else{R=y;break}}}else{R=M}}while(0);if((g|0)!=0){break}M=d+2392|0;y=c[M>>2]|0;if((y|0)<=0){break}F=q;v=d+6680|0;E=s|0;x=0;I=R;K=y;while(1){if((I|0)>0){y=v+(x<<2)|0;J=(x|0)>0;T=x-1|0;U=0;V=I;while(1){W=u+(U*4260|0)|0;if((c[u+(U*4260|0)+2420+(x<<2)>>2]|0)==0){X=V}else{do{if((V|0)==2&(U|0)==0){_N(j,F);if((c[y>>2]|0)!=0){break}$N(j,n)}}while(0);if(J){if((c[u+(U*4260|0)+2420+(T<<2)>>2]|0)==0){H=48}else{Y=2}}else{H=48}if((H|0)==48){H=0;Y=0}sN(W,j,x,1,Y);tN(j,E,a[u+(U*4260|0)+2765|0]|0,a[u+(U*4260|0)+2766|0]|0,c[u+(U*4260|0)+2328>>2]|0);X=c[w>>2]|0}Z=U+1|0;if((Z|0)<(X|0)){U=Z;V=X}else{break}}_=X;$=c[M>>2]|0}else{_=I;$=K}V=x+1|0;if((V|0)<($|0)){x=V;I=_;K=$}else{break}}}}while(0);$=c[w>>2]|0;do{if(($|0)==2){do{if((g|0)==2){if((c[d+2420+(c[A>>2]<<2)>>2]|0)!=1){H=55;break}_N(j,q);if((c[d+6680+(c[A>>2]<<2)>>2]|0)==0){H=59}else{H=60}}else if((g|0)==0){_N(j,q);if((c[d+6664+(c[A>>2]<<2)>>2]|0)==0){H=59}else{H=60}}else{H=55}}while(0);if((H|0)==55){c[q>>2]=b[d+8520>>1]|0;c[r+4>>2]=b[d+8522>>1]|0}else if((H|0)==59){$N(j,n)}else if((H|0)==60){c[n>>2]=0}_=c[w>>2]|0;if((_|0)!=2){aa=_;break}if((c[n>>2]|0)!=0){aa=2;break}if((c[d+8540>>2]|0)!=1){aa=2;break}n$(d+5544|0,0,1024)|0;c[d+6568>>2]=100;a[d+6572|0]=10;c[d+8424>>2]=0;c[d+6636>>2]=1;aa=c[w>>2]|0}else{aa=$}}while(0);$=(c[d+2328>>2]|0)+2|0;r=da(aa<<1,$)|0;_=i;i=i+r|0;i=i+7&-8;r=_;c[p>>2]=r;X=r+($<<1)|0;c[p+4>>2]=X;do{if((g|0)==0){ba=(c[n>>2]|0)==0|0;H=70}else{if((c[d+8540>>2]|0)==0){ba=1;H=70;break}if(!((aa|0)==2&(g|0)==2)){ba=0;H=70;break}ca=(c[d+6680+(c[d+6648>>2]<<2)>>2]|0)==1|0;H=71}}while(0);if((H|0)==70){if((aa|0)>0){ca=ba;H=71}else{ea=L;H=89}}do{if((H|0)==71){ba=(g|0)==2;aa=d+8540|0;c:do{if((ca|0)==0){$=L;Y=0;while(1){if((Y|0)==0){R=c[A>>2]|0;s=(R|0)<1;if(s|ba^1){fa=s?0:2}else{fa=(c[u+2420+(R-1<<2)>>2]|0)!=0?2:0}ga=(qN(u,j,_+4|0,o,g,fa)|0)+$|0}else{n$((c[p+(Y<<2)>>2]|0)+4|0,0,c[o>>2]<<1|0)|0;ga=$}R=u+(Y*4260|0)+2388|0;c[R>>2]=(c[R>>2]|0)+1;R=Y+1|0;s=c[w>>2]|0;if((R|0)<(s|0)){$=ga;Y=R}else{ha=ga;ia=s;break}}}else{if(ba){Y=L;$=0;while(1){s=(c[A>>2]|0)-$|0;if((s|0)<1){ja=0}else{ja=(c[u+($*4260|0)+2420+(s-1<<2)>>2]|0)!=0?2:0}s=(qN(u+($*4260|0)|0,j,(c[p+($<<2)>>2]|0)+4|0,o,2,ja)|0)+Y|0;R=u+($*4260|0)+2388|0;c[R>>2]=(c[R>>2]|0)+1;R=$+1|0;Q=c[w>>2]|0;if((R|0)<(Q|0)){Y=s;$=R}else{ha=s;ia=Q;break c}}}else{ka=L;la=0}while(1){do{if(((c[A>>2]|0)-la|0)<1){ma=0}else{if((la|0)>0){if((c[aa>>2]|0)!=0){ma=1;break}}ma=2}}while(0);W=(qN(u+(la*4260|0)|0,j,(c[p+(la<<2)>>2]|0)+4|0,o,g,ma)|0)+ka|0;$=u+(la*4260|0)+2388|0;c[$>>2]=(c[$>>2]|0)+1;$=la+1|0;Y=c[w>>2]|0;if(($|0)<(Y|0)){ka=W;la=$}else{ha=W;ia=Y;break}}}}while(0);if(!((c[C>>2]|0)==2&(ia|0)==2)){ea=ha;H=89;break}aa=d+2316|0;HN(d+8520|0,r,X,q,c[aa>>2]|0,c[o>>2]|0);na=c[o>>2]|0;oa=aa;pa=ha}}while(0);if((H|0)==89){H=d+8524|0;c[_>>2]=e[H>>1]|e[H+2>>1]<<16;ha=c[o>>2]|0;q=r+(ha<<1)|0;z=e[q>>1]|e[q+2>>1]<<16;b[H>>1]=z;b[H+2>>1]=z>>16;na=ha;oa=d+2316|0;pa=ea}ea=da(c[N>>2]|0,na)|0;N=(ea|0)/((c[oa>>2]<<16>>16)*1e3|0|0)|0;c[l>>2]=N;ea=c[C>>2]|0;if((ea|0)==2){ha=i;i=i+(N<<1)|0;i=i+7&-8;qa=ha}else{qa=k}ha=c[w>>2]|0;d:do{if((((ea|0)<(ha|0)?ea:ha)|0)>0){N=pa;H=0;q=r;X=na;while(1){ia=(SN(u+(H*4260|0)+2432|0,qa,q+2|0,X)|0)+N|0;la=c[C>>2]|0;do{if((la|0)==2){if((c[l>>2]|0)>0){ra=0}else{sa=2;break}do{b[k+((ra<<1)+H<<1)>>1]=b[qa+(ra<<1)>>1]|0;ra=ra+1|0;}while((ra|0)<(c[l>>2]|0));sa=c[C>>2]|0}else{sa=la}}while(0);la=H+1|0;ka=c[w>>2]|0;if((la|0)>=(((sa|0)<(ka|0)?sa:ka)|0)){ta=ia;ua=sa;va=ka;break d}N=ia;H=la;q=c[p+(la<<2)>>2]|0;X=c[o>>2]|0}}else{ta=pa;ua=ea;va=ha}}while(0);do{if((ua|0)==2&(va|0)==1){if(D){ha=(SN(d+6692|0,qa,_+2|0,c[o>>2]|0)|0)+ta|0;if((c[l>>2]|0)>0){wa=0}else{xa=ha;break}while(1){b[k+((wa<<1|1)<<1)>>1]=b[qa+(wa<<1)>>1]|0;ea=wa+1|0;if((ea|0)<(c[l>>2]|0)){wa=ea}else{xa=ha;break}}}else{if((c[l>>2]|0)>0){ya=0}else{xa=ta;break}while(1){ha=ya<<1;b[k+((ha|1)<<1)>>1]=b[k+(ha<<1)>>1]|0;ha=ya+1|0;if((ha|0)<(c[l>>2]|0)){ya=ha}else{xa=ta;break}}}}else{xa=ta}}while(0);if((c[d+4164>>2]|0)==2){c[f+20>>2]=da(c[8872+((c[oa>>2]|0)-8>>2<<2)>>2]|0,c[d+2308>>2]|0)|0}else{c[f+20>>2]=0}if(!B){c[d+8540>>2]=c[n>>2];G=xa;i=m;return G|0}if((c[h>>2]|0)>0){za=0}else{G=xa;i=m;return G|0}while(1){a[t+(za*4260|0)+2312|0]=10;n=za+1|0;if((n|0)<(c[h>>2]|0)){za=n}else{G=xa;break}}i=m;return G|0}function yN(b,d,e,f,g){b=b|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;if((g|0)>0){h=0}else{return}do{i=a[d+h|0]|0;do{if((h|f|0)==0){j=(a[e]|0)-16|0;k=((i|0)>(j|0)?i:j)&255;a[e]=k;l=k}else{k=i-4|0;j=a[e]|0;if((k|0)>(j+8|0)){m=(k<<1)+248&255;a[e]=m;l=m;break}else{m=j+k&255;a[e]=m;l=m;break}}}while(0);if(l<<24>>24>63){n=63}else{n=l<<24>>24<0?0:l}a[e]=n;i=n<<24>>24;m=(i*29|0)+2090+((i*7281|0)>>16)|0;c[b+(h<<2)>>2]=LN((m|0)<3967?m:3967)|0;h=h+1|0;}while((h|0)<(g|0));return}function zN(e,f,g){e=e|0;f=f|0;g=g|0;var h=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,J=0,K=0,L=0,M=0,N=0,O=0;h=i;i=i+112|0;j=h|0;k=h+16|0;l=h+48|0;m=h+80|0;n=a[f]|0;o=g+2|0;p=b[o>>1]|0;q=da(p<<16>>16,n<<24>>24)|0;r=c[g+8>>2]|0;if(p<<16>>16>0){p=0;do{b[e+(p<<1)>>1]=d[r+(p+q)|0]<<7;p=p+1|0;}while((p|0)<(b[o>>1]|0));s=a[f]|0}else{s=n}GN(k|0,j|0,g,s<<24>>24);s=b[o>>1]|0;if(s<<16>>16>0){k=s<<16>>16;n=b[g+4>>1]|0;p=0;q=k;while(1){r=q-1|0;t=(da(d[j+r|0]|0,p)|0)>>8;u=a[f+q|0]|0;v=u<<24>>24<<10;if(u<<24>>24>0){w=v-102|0}else{w=u<<24>>24<0?v|102:v}v=(da(w>>16,n)|0)+t+((da(w&65535,n)|0)>>16)|0;b[l+(r<<1)>>1]=v;if((r|0)>0){p=v<<16>>16;q=r}else{x=k;break}}}else{x=s<<16>>16}QN(m|0,e,x);x=b[o>>1]|0;if(x<<16>>16>0){y=0}else{z=x<<16>>16;A=g+32|0;B=c[A>>2]|0;PN(e,B,z);i=h;return}while(1){x=b[m+(y<<1)>>1]|0;s=(x&65535)<<16;if((s|0)<1){C=0}else{do{if(s>>>0>65535>>>0){k=x<<16>>16;if(x<<16>>16==0){D=8;E=16}else{do{if((k&65280|0)==0){if((k&65520|0)==0){F=12;G=x;break}F=8;G=k>>>4&65535}else{if((k&61440|0)==0){F=4;G=k>>>8&65535;break}else{F=0;G=k>>>12&65535;break}}}while(0);k=G<<16>>16;do{if((k&12|0)==0){if((k&14|0)==0){H=F|3;break}else{H=F|2;break}}else{H=(k>>>3&1|F)^1}}while(0);k=24-H|0;if((H|0)==24){I=s;J=24;break}if((k|0)<0){K=-k|0;L=k;M=H;N=28;break}else{D=k;E=H}}I=s<<32-D|s>>>(D>>>0);J=E}else{K=8;L=-8;M=32;N=28}}while(0);if((N|0)==28){N=0;I=s>>>((L+32|0)>>>0)|s<>>(J>>1>>>0);k=(da(I&127,13959168)|0)>>>16;C=(da(x>>16,k)|0)+x+((da(x&65535,k)|0)>>>16)|0}k=e+(y<<1)|0;x=((b[l+(y<<1)>>1]<<14|0)/(C|0)|0)+(b[k>>1]|0)|0;if((x|0)>32767){O=32767}else{O=(x|0)<0?0:x&65535}b[k>>1]=O;k=y+1|0;x=b[o>>1]|0;if((k|0)<(x|0)){y=k}else{z=x;break}}A=g+32|0;B=c[A>>2]|0;PN(e,B,z);i=h;return}function AN(a){a=a|0;c[a+4168>>2]=c[a+2328>>2]<<7;c[a+4240>>2]=65536;c[a+4244>>2]=65536;c[a+4256>>2]=20;c[a+4252>>2]=2;return}function BN(d,e,f,g){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,B=0,C=0,D=0,E=0;h=c[d+2316>>2]|0;i=d+4248|0;if((h|0)!=(c[i>>2]|0)){c[d+4168>>2]=c[d+2328>>2]<<7;c[d+4240>>2]=65536;c[d+4244>>2]=65536;c[d+4256>>2]=20;c[d+4252>>2]=2;c[i>>2]=h}if((g|0)!=0){CN(d,e,f);f=d+4160|0;c[f>>2]=(c[f>>2]|0)+1;return}f=d+4168|0;g=a[d+2765|0]|0;c[d+4164>>2]=g<<24>>24;a:do{if(g<<24>>24==2){i=d+2332|0;j=c[d+2324>>2]|0;k=j-1|0;l=e+(k<<2)|0;m=c[l>>2]|0;n=d+4172|0;o=n;do{if((m|0)<1|(j|0)==0){n$(n|0,0,10)|0;p=0;q=0;r=d+4176|0}else{s=f|0;t=j+65535|0;u=0;v=0;w=0;x=m;while(1){y=k+w|0;z=y*5|0;A=(b[e+96+(z+1<<1)>>1]|0)+(b[e+96+(z<<1)>>1]|0)+(b[e+96+(z+2<<1)>>1]|0)+(b[e+96+(z+3<<1)>>1]|0)+(b[e+96+(z+4<<1)>>1]|0)|0;if((A|0)>(v|0)){z=e+96+(((t+w<<16>>16)*5|0)<<1)|0;b[o>>1]=b[z>>1]|0;b[o+2>>1]=b[z+2>>1]|0;b[o+4>>1]=b[z+4>>1]|0;b[o+6>>1]=b[z+6>>1]|0;b[o+8>>1]=b[z+8>>1]|0;c[s>>2]=c[e+(y<<2)>>2]<<8;B=A;C=c[l>>2]|0}else{B=v;C=x}A=u+1|0;y=~u;if((da(c[i>>2]|0,A)|0)>=(C|0)|(A|0)==(j|0)){break}else{u=A;v=B;w=y;x=C}}n$(o|0,0,10)|0;x=B&65535;w=d+4176|0;b[w>>1]=x;if((B|0)<11469){p=B;q=x;r=w;break}if((B|0)<=15565){D=j;E=i;break a}b[d+4172>>1]=0;b[d+4174>>1]=0;b[w>>1]=(da((255016960/(B|0)|0)<<16>>16,x<<16>>16)|0)>>>14;b[d+4178>>1]=0;b[d+4180>>1]=0;D=j;E=i;break a}}while(0);b[d+4172>>1]=0;b[d+4174>>1]=0;b[r>>1]=(da((11744256/(((p|0)>1?p:1)|0)|0)<<16>>16,q<<16>>16)|0)>>>10;b[d+4178>>1]=0;b[d+4180>>1]=0;D=j;E=i}else{c[f>>2]=(h<<16>>16)*4608|0;n$(d+4172|0,0,10)|0;D=c[d+2324>>2]|0;E=d+2332|0}}while(0);m$(d+4182|0,e+64|0,c[d+2340>>2]<<1)|0;b[d+4236>>1]=c[e+136>>2];h=e+16+(D-2<<2)|0;e=d+4240|0;f=c[h+4>>2]|0;c[e>>2]=c[h>>2];c[e+4>>2]=f;c[d+4256>>2]=c[E>>2];c[d+4252>>2]=D;return}function CN(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=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,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,_=0,$=0,aa=0,ba=0,ca=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;f=i;i=i+64|0;g=f|0;h=f+8|0;j=f+16|0;k=f+24|0;l=f+32|0;m=a+4256|0;n=c[m>>2]|0;o=i;i=i+(n<<2)|0;i=i+7&-8;p=o;o=a+2336|0;q=c[o>>2]|0;r=i;i=i+(q<<1)|0;i=i+7&-8;s=r;r=a+2328|0;t=i;i=i+((c[r>>2]|0)+q<<2)|0;i=i+7&-8;q=t;t=c[a+4240>>2]|0;u=t>>>6;v=a+4244|0;w=c[v>>2]|0;x=w>>6;if((c[a+2376>>2]|0)!=0){n$(a+4182|0,0,32)|0}y=a+4252|0;z=(n|0)>0;do{if(z){A=c[y>>2]|0;B=0;do{C=c[a+4+((da(A-2|0,n)|0)+B<<2)>>2]|0;D=u<<16>>16;E=((da(D,C&65535)|0)>>16)+(da(D,C>>16)|0)+(da((t>>21)+1>>1,C)|0)>>8;if((E|0)>32767){F=32767}else{F=(E|0)<-32768?-32768:E&65535}b[p+(B<<1)>>1]=F;B=B+1|0;}while((B|0)<(n|0));if(!z){break}B=c[y>>2]|0;A=0;do{E=c[a+4+((da(B-1|0,n)|0)+A<<2)>>2]|0;C=x<<16>>16;D=((da(C,E&65535)|0)>>16)+(da(C,E>>16)|0)+(da((w>>21)+1>>1,E)|0)>>8;if((D|0)>32767){G=32767}else{G=(D|0)<-32768?-32768:D&65535}b[p+(n+A<<1)>>1]=G;A=A+1|0;}while((A|0)<(n|0))}}while(0);ZN(j,g,p,n);n=c[m>>2]|0;ZN(k,h,p+(n<<1)|0,n);n=c[y>>2]|0;if((c[j>>2]>>c[h>>2]|0)<(c[k>>2]>>c[g>>2]|0)){g=(da(c[m>>2]|0,n-1|0)|0)-128|0;H=(g|0)<0?0:g}else{g=(da(c[m>>2]|0,n)|0)-128|0;H=(g|0)<0?0:g}g=a+4172|0;n=a+4224|0;m=b[n>>1]|0;k=a+4160|0;h=c[k>>2]|0;j=(h|0)>1?1:h;h=b[186864+(j<<1)>>1]|0;y=a+4164|0;p=b[((c[y>>2]|0)==2?186472:186480)+(j<<1)>>1]|0;j=a+4182|0;G=j|0;z=a+2340|0;JN(G,c[z>>2]|0,64881);F=c[z>>2]|0;m$(l|0,j|0,F<<1)|0;do{if((c[k>>2]|0)==0){if((c[y>>2]|0)==2){j=((((16384-(b[g>>1]|0)&65535)-(b[a+4174>>1]|0)&65535)-(b[a+4176>>1]|0)&65535)-(b[a+4178>>1]|0)&65535)-(b[a+4180>>1]|0)&65535;I=p;J=(da(b[a+4236>>1]|0,j<<16>>16<3277?3277:j<<16>>16)|0)>>>14&65535;K=F;break}else{j=NN(G,F)|0;t=(j|0)>134217728?134217728:j;j=(t|0)<4194304?33554432:t<<3;t=p<<16>>16;u=(((da(j&65528,t)|0)>>16)+(da(j>>16,t)|0)|0)>>>14&65535;I=u;J=16384;K=c[z>>2]|0;break}}else{I=p;J=m;K=F}}while(0);F=a+4220|0;m=c[F>>2]|0;p=a+4168|0;G=(c[p>>2]>>7)+1>>1;y=c[o>>2]|0;k=y-2-K-G|0;u=l|0;MN(s+(k<<1)|0,a+1348+(k<<1)|0,u,y-k|0,K);K=c[v>>2]|0;v=EN((K|0)>0?K:-K|0)|0;t=K<>16;j=536870911/(K|0)|0;A=j<<16;B=A>>16;D=536870912-(da(K,B)|0)-((da(t&65535,B)|0)>>16)<<3;t=(da(D,(j>>15)+1>>1)|0)+A+(da(D>>16,B)|0)+((da(D&65528,B)|0)>>16)|0;B=62-v|0;v=B-46|0;if((v|0)<1){D=46-B|0;B=-2147483648>>D;A=2147483647>>>(D>>>0);do{if((B|0)>(A|0)){if((t|0)>(B|0)){L=B;break}L=(t|0)<(A|0)?A:t}else{if((t|0)>(A|0)){L=A;break}L=(t|0)<(B|0)?B:t}}while(0);M=L<>v:0}v=(M|0)<1073741823?M:1073741823;M=c[z>>2]|0;t=M+k|0;k=c[o>>2]|0;if((t|0)<(k|0)){o=v>>16;D=v&65535;v=t;do{t=b[s+(v<<1)>>1]|0;c[q+(v<<2)>>2]=((da(t,D)|0)>>16)+(da(t,o)|0);v=v+1|0;}while((v|0)<(k|0))}v=c[a+2324>>2]|0;if((v|0)>0){o=h<<16>>16;h=I<<16>>16;I=a+2316|0;D=a+4174|0;s=a+4176|0;t=a+4178|0;L=a+4180|0;B=c[a+2332>>2]|0;A=J;j=m;K=y;y=G;E=0;while(1){if((B|0)>0){C=A<<16>>16;N=b[g>>1]|0;O=b[D>>1]|0;P=b[s>>1]|0;Q=b[t>>1]|0;R=b[L>>1]|0;S=q+(K+2-y<<2)|0;T=j;U=K;V=0;while(1){W=c[S>>2]|0;X=N<<16>>16;Y=da(X,W>>16)|0;Z=(da(X,W&65535)|0)>>16;W=c[S-4>>2]|0;X=O<<16>>16;_=da(X,W>>16)|0;$=(da(X,W&65535)|0)>>16;W=c[S-8>>2]|0;X=P<<16>>16;aa=da(X,W>>16)|0;ba=(da(X,W&65535)|0)>>16;W=c[S-12>>2]|0;X=Q<<16>>16;ca=da(X,W>>16)|0;ea=(da(X,W&65535)|0)>>16;W=c[S-16>>2]|0;X=R<<16>>16;fa=da(X,W>>16)|0;ga=(da(X,W&65535)|0)>>16;W=(da(T,196314165)|0)+907633515|0;X=c[a+4+((W>>>25)+H<<2)>>2]|0;c[q+(U<<2)>>2]=Y+2+Z+_+$+aa+ba+ca+ea+fa+ga+(da(X>>16,C)|0)+((da(X&65535,C)|0)>>16)<<2;X=U+1|0;ga=V+1|0;if((ga|0)<(B|0)){S=S+4|0;T=W;U=X;V=ga}else{ha=W;ia=X;ja=N;ka=O;la=P;ma=Q;na=R;oa=C;break}}}else{ha=j;ia=K;ja=b[g>>1]|0;ka=b[D>>1]|0;la=b[s>>1]|0;ma=b[t>>1]|0;na=b[L>>1]|0;oa=A<<16>>16}b[g>>1]=(da(ja<<16>>16,o)|0)>>>15;b[D>>1]=(da(ka<<16>>16,o)|0)>>>15;b[s>>1]=(da(la<<16>>16,o)|0)>>>15;b[t>>1]=(da(ma<<16>>16,o)|0)>>>15;b[L>>1]=(da(na<<16>>16,o)|0)>>>15;C=(da(oa,h)|0)>>>15&65535;R=c[p>>2]|0;Q=((R>>16)*655|0)+R+(((R&65535)*655|0)>>>16)|0;R=(c[I>>2]<<16>>16)*4608|0;P=(Q|0)<(R|0)?Q:R;c[p>>2]=P;R=(P>>7)+1>>1;P=E+1|0;if((P|0)<(v|0)){A=C;j=ha;K=ia;y=R;E=P}else{pa=C;qa=ha;ra=R;break}}}else{pa=J;qa=m;ra=G}G=k-16|0;m=a+1284|0;m$(q+(G<<2)|0,m|0,64)|0;a=c[r>>2]|0;if((a|0)<=0){sa=a;ta=sa+G|0;ua=q+(ta<<2)|0;va=ua;m$(m|0,va|0,64)|0;c[F>>2]=qa;b[n>>1]=pa;wa=d|0;c[wa>>2]=ra;xa=d+4|0;c[xa>>2]=ra;ya=d+8|0;c[ya>>2]=ra;za=d+12|0;c[za>>2]=ra;i=f;return}a=k-1|0;J=b[u>>1]|0;u=k-2|0;ha=b[l+2>>1]|0;E=k-3|0;y=b[l+4>>1]|0;ia=k-4|0;K=b[l+6>>1]|0;j=k-5|0;A=b[l+8>>1]|0;v=k-6|0;p=b[l+10>>1]|0;I=k-7|0;h=b[l+12>>1]|0;oa=k-8|0;o=b[l+14>>1]|0;na=k-9|0;L=b[l+16>>1]|0;ma=k-10|0;t=b[l+18>>1]|0;la=x<<16>>16;x=(w>>21)+1>>1;w=0;s=M;while(1){M=a+w|0;ka=c[q+(M<<2)>>2]|0;D=da(J,ka>>16)|0;ja=(da(J,ka&65535)|0)>>16;ka=c[q+(u+w<<2)>>2]|0;g=da(ha,ka>>16)|0;B=(da(ha,ka&65535)|0)>>16;ka=c[q+(E+w<<2)>>2]|0;H=da(y,ka>>16)|0;R=(da(y,ka&65535)|0)>>16;ka=c[q+(ia+w<<2)>>2]|0;C=da(K,ka>>16)|0;P=(da(K,ka&65535)|0)>>16;ka=c[q+(j+w<<2)>>2]|0;Q=da(A,ka>>16)|0;O=(da(A,ka&65535)|0)>>16;ka=c[q+(v+w<<2)>>2]|0;N=da(p,ka>>16)|0;V=(da(p,ka&65535)|0)>>16;ka=c[q+(I+w<<2)>>2]|0;U=da(h,ka>>16)|0;T=(da(h,ka&65535)|0)>>16;ka=c[q+(oa+w<<2)>>2]|0;S=da(o,ka>>16)|0;X=(da(o,ka&65535)|0)>>16;ka=c[q+(na+w<<2)>>2]|0;W=da(L,ka>>16)|0;ga=(da(L,ka&65535)|0)>>16;ka=c[q+(ma+w<<2)>>2]|0;fa=D+(s>>1)+ja+g+B+H+R+C+P+Q+O+N+V+U+T+S+X+W+ga+(da(t,ka>>16)|0)+((da(t,ka&65535)|0)>>16)|0;ka=c[z>>2]|0;if((ka|0)>10){ga=fa;W=10;while(1){X=c[q+(M-W<<2)>>2]|0;S=b[l+(W<<1)>>1]|0;T=(da(S,X>>16)|0)+ga+((da(S,X&65535)|0)>>16)|0;X=W+1|0;if((X|0)<(ka|0)){ga=T;W=X}else{Aa=T;break}}}else{Aa=fa}W=q+(w+k<<2)|0;ga=(c[W>>2]|0)+(Aa<<4)|0;c[W>>2]=ga;W=(((da(la,ga&65535)|0)>>16)+(da(la,ga>>16)|0)+(da(x,ga)|0)>>7)+1>>1;if((W|0)>32767){Ba=32767}else{Ba=(W|0)<-32768?-32768:W&65535}b[e+(w<<1)>>1]=Ba;W=w+1|0;ga=c[r>>2]|0;if((W|0)>=(ga|0)){sa=ga;break}w=W;s=c[z>>2]|0}ta=sa+G|0;ua=q+(ta<<2)|0;va=ua;m$(m|0,va|0,64)|0;c[F>>2]=qa;b[n>>1]=pa;wa=d|0;c[wa>>2]=ra;xa=d+4|0;c[xa>>2]=ra;ya=d+8|0;c[ya>>2]=ra;za=d+12|0;c[za>>2]=ra;i=f;return}function DN(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=i;i=i+16|0;g=f|0;h=f+8|0;if((c[a+4160>>2]|0)!=0){ZN(a+4228|0,a+4232|0,d,e);c[a+4216>>2]=1;i=f;return}j=a+4216|0;do{if((c[j>>2]|0)!=0){ZN(h,g,d,e);k=c[g>>2]|0;l=c[a+4232>>2]|0;do{if((k|0)>(l|0)){m=a+4228|0;c[m>>2]=c[m>>2]>>k-l}else{if((k|0)>=(l|0)){break}c[h>>2]=c[h>>2]>>l-k}}while(0);k=c[h>>2]|0;l=a+4228|0;m=c[l>>2]|0;if((k|0)<=(m|0)){break}n=EN(m)|0;o=m<>2]=o;l=25-n|0;n=k>>((l|0)>0?l:0);c[h>>2]=n;l=(o|0)/(((n|0)>1?n:1)|0)|0;if((l|0)<1){p=0}else{n=EN(l)|0;o=24-n|0;k=-o|0;do{if((n|0)==24){q=l}else{if((o|0)<0){q=l>>>((o+32|0)>>>0)|l<>>(o>>>0);break}}}while(0);o=((n&1|0)==0?46214:32768)>>>(n>>1>>>0);l=(da(q&127,13959168)|0)>>>16;p=(da(l,o>>16)|0)+o+((da(l,o&65535)|0)>>>16)<<4}o=((65536-p|0)/(e|0)|0)<<2;if((e|0)>0){r=0;s=p}else{break}do{l=d+(r<<1)|0;k=b[l>>1]|0;b[l>>1]=((da(k,s&65532)|0)>>>16)+(da(k,s>>16)|0);s=s+o|0;r=r+1|0;}while((s|0)<65537&(r|0)<(e|0))}}while(0);c[j>>2]=0;i=f;return}function EN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!(a>>>0>65535>>>0)){b=a&65535;c=b<<16>>16;do{if(b<<16>>16==0){d=16}else{do{if((c&65280|0)==0){if((c&65520|0)==0){e=12;f=b;break}e=8;f=c>>>4&65535}else{if((c&61440|0)==0){e=4;f=c>>>8&65535;break}else{e=0;f=c>>>12&65535;break}}}while(0);g=f<<16>>16;if((g&12|0)!=0){d=(g>>>3&1|e)^1;break}if((g&14|0)==0){d=e|3;break}else{d=e|2;break}}}while(0);h=d+16|0;return h|0}d=a>>>16&65535;a=d<<16>>16;if(d<<16>>16==0){h=16;return h|0}do{if((a&65280|0)==0){if((a&65520|0)==0){i=12;j=d;break}i=8;j=a>>>4&65535}else{if((a&61440|0)==0){i=4;j=a>>>8&65535;break}else{i=0;j=a>>>12&65535;break}}}while(0);a=j<<16>>16;if((a&12|0)!=0){h=(a>>>3&1|i)^1;return h|0}if((a&14|0)==0){h=i|3;return h|0}else{h=i|2;return h|0}return 0}function FN(a,b,e){a=a|0;b=b|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,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,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;do{if((e|0)>0){f=JM(b,4888+(d[4864+e|0]|0)|0,8)|0;g=e-f|0;if((f|0)<=0){h=g;i=0;j=4;break}k=JM(b,5040+(d[4864+f|0]|0)|0,8)|0;l=f-k|0;if((k|0)<=0){h=g;i=l;j=4;break}f=JM(b,5192+(d[4864+k|0]|0)|0,8)|0;m=k-f|0;k=a+4|0;if((f|0)<=0){n=l;o=g;p=m;q=k;j=7;break}r=JM(b,5344+(d[4864+f|0]|0)|0,8)|0;c[a>>2]=r;s=f-r|0;t=l;u=g;v=m;w=k}else{h=0;i=0;j=4}}while(0);if((j|0)==4){n=i;o=h;p=0;q=a+4|0;j=7}if((j|0)==7){c[a>>2]=0;s=0;t=n;u=o;v=p;w=q}c[w>>2]=s;s=a+8|0;if((v|0)>0){w=JM(b,5344+(d[4864+v|0]|0)|0,8)|0;c[s>>2]=w;x=v-w|0}else{c[s>>2]=0;x=0}c[a+12>>2]=x;do{if((t|0)>0){x=JM(b,5192+(d[4864+t|0]|0)|0,8)|0;s=t-x|0;w=a+16|0;v=a+20|0;if((x|0)<=0){y=s;z=w;A=v;j=15;break}q=JM(b,5344+(d[4864+x|0]|0)|0,8)|0;c[w>>2]=q;B=x-q|0;C=s;D=v}else{y=0;z=a+16|0;A=a+20|0;j=15}}while(0);if((j|0)==15){c[z>>2]=0;B=0;C=y;D=A}c[D>>2]=B;B=a+24|0;if((C|0)>0){D=JM(b,5344+(d[4864+C|0]|0)|0,8)|0;c[B>>2]=D;E=C-D|0}else{c[B>>2]=0;E=0}c[a+28>>2]=E;do{if((u|0)>0){E=JM(b,5040+(d[4864+u|0]|0)|0,8)|0;B=u-E|0;if((E|0)<=0){F=B;j=21;break}D=JM(b,5192+(d[4864+E|0]|0)|0,8)|0;C=E-D|0;E=a+32|0;A=a+36|0;if((D|0)<=0){G=B;H=C;I=E;J=A;j=24;break}y=JM(b,5344+(d[4864+D|0]|0)|0,8)|0;c[E>>2]=y;K=D-y|0;L=B;M=C;N=A}else{F=0;j=21}}while(0);if((j|0)==21){G=F;H=0;I=a+32|0;J=a+36|0;j=24}if((j|0)==24){c[I>>2]=0;K=0;L=G;M=H;N=J}c[N>>2]=K;K=a+40|0;if((M|0)>0){N=JM(b,5344+(d[4864+M|0]|0)|0,8)|0;c[K>>2]=N;O=M-N|0}else{c[K>>2]=0;O=0}c[a+44>>2]=O;do{if((L|0)>0){O=JM(b,5192+(d[4864+L|0]|0)|0,8)|0;K=L-O|0;N=a+48|0;M=a+52|0;if((O|0)<=0){P=K;Q=N;R=M;j=32;break}J=JM(b,5344+(d[4864+O|0]|0)|0,8)|0;c[N>>2]=J;S=O-J|0;T=K;U=M}else{P=0;Q=a+48|0;R=a+52|0;j=32}}while(0);if((j|0)==32){c[Q>>2]=0;S=0;T=P;U=R}c[U>>2]=S;S=a+56|0;U=a+60|0;if((T|0)>0){a=JM(b,5344+(d[4864+T|0]|0)|0,8)|0;c[S>>2]=a;V=T-a|0;c[U>>2]=V;return}else{c[S>>2]=0;V=0;c[U>>2]=V;return}}function GN(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f+2|0;i=b[h>>1]|0;if(!(i<<16>>16>0)){return}j=da(i<<16>>16,g)|0;g=f+16|0;i=0;k=(c[f+20>>2]|0)+((j|0)/2|0)|0;while(1){j=a[k]|0;f=j&255;b[d+(i<<1)>>1]=((j&255)>>>1&7)*9;a[e+i|0]=a[(c[g>>2]|0)+(((b[h>>1]|0)-1&-(f&1))+i)|0]|0;l=i|1;b[d+(l<<1)>>1]=((j&255)>>>5&255)*9;a[e+l|0]=a[(c[g>>2]|0)+(l+((b[h>>1]|0)-1&-(f>>>4&1)))|0]|0;f=i+2|0;if((f|0)<(b[h>>1]|0)){i=f;k=k+1|0}else{break}}return}function HN(a,d,f,g,h,i){a=a|0;d=d|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,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0;j=a+4|0;k=d;z=e[j>>1]|e[j+2>>1]<<16;b[k>>1]=z;b[k+2>>1]=z>>16;k=a+8|0;l=f;z=e[k>>1]|e[k+2>>1]<<16;b[l>>1]=z;b[l+2>>1]=z>>16;l=d+(i<<1)|0;z=e[l>>1]|e[l+2>>1]<<16;b[j>>1]=z;b[j+2>>1]=z>>16;j=f+(i<<1)|0;z=e[j>>1]|e[j+2>>1]<<16;b[k>>1]=z;b[k+2>>1]=z>>16;k=a|0;j=b[k>>1]|0;l=a+2|0;a=b[l>>1]|0;m=h<<3;n=(65536/(m|0)|0)<<16>>16;o=((da((c[g>>2]|0)-j<<16>>16,n)|0)>>15)+1>>1;p=g+4|0;q=((da((c[p>>2]|0)-a<<16>>16,n)|0)>>15)+1>>1;if((h|0)>0){h=0;n=j;j=a;while(1){a=n+o|0;r=j+q|0;s=h+1|0;t=b[d+(s<<1)>>1]|0;u=(b[d+(h+2<<1)>>1]|0)+(b[d+(h<<1)>>1]|0)+(t<<1)|0;v=f+(s<<1)|0;w=a<<16>>16;x=r<<16>>16;y=((da(t>>5,x)|0)+(b[v>>1]<<8)+(da(u>>7,w)|0)+((da(t<<11&63488,x)|0)>>16)+((da(u<<9&65024,w)|0)>>16)>>7)+1>>1;if((y|0)>32767){A=32767}else{A=(y|0)<-32768?-32768:y&65535}b[v>>1]=A;if((s|0)<(m|0)){h=s;n=a;j=r}else{break}}}if((m|0)<(i|0)){j=c[g>>2]<<16>>16;n=c[p>>2]<<16>>16;h=m;while(1){m=h+1|0;A=b[d+(m<<1)>>1]|0;q=(b[d+(h+2<<1)>>1]|0)+(b[d+(h<<1)>>1]|0)+(A<<1)|0;o=f+(m<<1)|0;r=((da(A>>5,n)|0)+(b[o>>1]<<8)+(da(q>>7,j)|0)+((da(A<<11&63488,n)|0)>>16)+((da(q<<9&65024,j)|0)>>16)>>7)+1>>1;if((r|0)>32767){B=32767}else{B=(r|0)<-32768?-32768:r&65535}b[o>>1]=B;if((m|0)<(i|0)){h=m}else{break}}}b[k>>1]=c[g>>2];b[l>>1]=c[p>>2];if((i|0)>0){C=0}else{return}do{C=C+1|0;p=d+(C<<1)|0;l=b[p>>1]|0;g=f+(C<<1)|0;k=b[g>>1]|0;h=k+l|0;B=l-k|0;if((h|0)>32767){D=32767}else{D=(h|0)<-32768?-32768:h&65535}b[p>>1]=D;if((B|0)>32767){E=32767}else{E=(B|0)<-32768?-32768:B&65535}b[g>>1]=E;}while((C|0)<(i|0));return}function IN(a,b,d){a=a|0;b=b|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;e=d-65536|0;f=b-1|0;b=d>>16;if((f|0)>0){g=0;h=d;i=b;while(1){j=a+(g<<2)|0;k=c[j>>2]|0;l=k<<16>>16;c[j>>2]=((da(l,h&65535)|0)>>16)+(da(l,i)|0)+(da((k>>15)+1>>1,h)|0);k=(((da(h,e)|0)>>15)+1>>1)+h|0;l=g+1|0;j=k>>16;if((l|0)<(f|0)){g=l;h=k;i=j}else{m=k;n=j;break}}}else{m=d;n=b}b=a+(f<<2)|0;f=c[b>>2]|0;a=f<<16>>16;c[b>>2]=((da(a,m&65535)|0)>>16)+(da(a,n)|0)+(da((f>>15)+1>>1,m)|0);return}function JN(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=d-65536|0;f=c-1|0;if((f|0)>0){c=0;g=d;while(1){h=a+(c<<1)|0;b[h>>1]=(((da(b[h>>1]|0,g)|0)>>>15)+1|0)>>>1;h=(((da(g,e)|0)>>15)+1>>1)+g|0;i=c+1|0;if((i|0)<(f|0)){c=i;g=h}else{j=h;break}}}else{j=d}d=a+(f<<1)|0;b[d>>1]=(((da(b[d>>1]|0,j)|0)>>>15)+1|0)>>>1;return}function KN(b,d,e,f,g){b=b|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;h=(g|0)==4;if((f|0)==8){i=h?9056:9048;j=h?11:3}else{i=h?8912:8888;j=h?34:12}h=f<<16;f=h>>15;k=(h>>16)*18|0;h=f+(b<<16>>16)|0;if((g|0)<=0){return}b=d<<24>>24;if((f|0)>(k|0)){d=0;do{l=h+(a[i+((da(d,j)|0)+b)|0]|0)|0;m=e+(d<<2)|0;c[m>>2]=l;if((l|0)>(f|0)){n=f}else{n=(l|0)<(k|0)?k:l}c[m>>2]=n;d=d+1|0;}while((d|0)<(g|0));return}else{d=0;do{n=h+(a[i+((da(d,j)|0)+b)|0]|0)|0;m=e+(d<<2)|0;c[m>>2]=n;if((n|0)>(k|0)){o=k}else{o=(n|0)<(f|0)?f:n}c[m>>2]=o;d=d+1|0;}while((d|0)<(g|0));return}}function LN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;if((a|0)<0){b=0;return b|0}c=a>>7;d=1<>16)+e<>7}else{f=da(((da(e*-174|0,128-e|0)|0)>>16)+e|0,d>>7)|0}b=f+d|0;return b|0}function MN(a,c,d,e,f){a=a|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;if((f|0)>=(e|0)){g=a;h=f<<1;n$(g|0,0,h|0)|0;return}i=d+2|0;j=d+4|0;k=d+6|0;l=d+8|0;m=d+10|0;if((f|0)>6){n=f}else{o=f;do{p=da(b[d>>1]|0,b[c+(o-1<<1)>>1]|0)|0;q=(da(b[i>>1]|0,b[c+(o-2<<1)>>1]|0)|0)+p|0;p=q+(da(b[j>>1]|0,b[c+(o-3<<1)>>1]|0)|0)|0;q=p+(da(b[k>>1]|0,b[c+(o-4<<1)>>1]|0)|0)|0;p=q+(da(b[l>>1]|0,b[c+(o-5<<1)>>1]|0)|0)|0;q=p+(da(b[m>>1]|0,b[c+(o-6<<1)>>1]|0)|0)|0;p=((b[c+(o<<1)>>1]<<12)-q>>11)+1>>1;if((p|0)>32767){r=32767}else{r=(p|0)<-32768?-32768:p&65535}b[a+(o<<1)>>1]=r;o=o+1|0;}while((o|0)<(e|0));g=a;h=f<<1;n$(g|0,0,h|0)|0;return}do{o=n-1|0;r=da(b[d>>1]|0,b[c+(o<<1)>>1]|0)|0;p=(da(b[i>>1]|0,b[c+(n-2<<1)>>1]|0)|0)+r|0;r=p+(da(b[j>>1]|0,b[c+(n-3<<1)>>1]|0)|0)|0;p=r+(da(b[k>>1]|0,b[c+(n-4<<1)>>1]|0)|0)|0;r=p+(da(b[l>>1]|0,b[c+(n-5<<1)>>1]|0)|0)|0;p=r+(da(b[m>>1]|0,b[c+(n-6<<1)>>1]|0)|0)|0;r=6;do{q=(da(b[d+(r<<1)>>1]|0,b[c+(o-r<<1)>>1]|0)|0)+p|0;p=q+(da(b[d+((r|1)<<1)>>1]|0,b[c+(o+~r<<1)>>1]|0)|0)|0;r=r+2|0;}while((r|0)<(f|0));r=((b[c+(n<<1)>>1]<<12)-p>>11)+1>>1;if((r|0)>32767){s=32767}else{s=(r|0)<-32768?-32768:r&65535}b[a+(n<<1)>>1]=s;n=n+1|0;}while((n|0)<(e|0));g=a;h=f<<1;n$(g|0,0,h|0)|0;return}function NN(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;e=i;i=i+128|0;f=e|0;g=d&1;do{if((d|0)>0){h=0;j=0;do{k=b[a+(h<<1)>>1]|0;j=k+j|0;c[f+(g<<6)+(h<<2)>>2]=k<<12;h=h+1|0;}while((h|0)<(d|0));if((j|0)>4095){l=0}else{break}i=e;return l|0}}while(0);a=d-1|0;a:do{if((a|0)>0){d=0;h=1073741824;k=g;m=a;while(1){n=c[f+(k<<6)+(m<<2)>>2]|0;if((n+16773022|0)>>>0>33546044>>>0){l=0;break}o=-(n<<7)|0;n=o;p=(o|0)<0|0?-1:0;I$(n,p,n,p)|0;o=1073741824-H|0;q=(o|0)>0?o:-o|0;do{if(q>>>0>65535>>>0){r=q>>>16&65535;s=r<<16>>16;if(r<<16>>16==0){t=16;break}do{if((s&65280|0)==0){if((s&65520|0)==0){u=12;v=r;break}u=8;v=s>>>4&65535}else{if((s&61440|0)==0){u=4;v=s>>>8&65535;break}else{u=0;v=s>>>12&65535;break}}}while(0);s=v<<16>>16;if((s&12|0)!=0){t=(s>>>3&1|u)^1;break}if((s&14|0)==0){t=u|3;break}else{t=u|2;break}}else{s=q&65535;r=s<<16>>16;do{if(s<<16>>16==0){w=16}else{do{if((r&65280|0)==0){if((r&65520|0)==0){x=12;y=s;break}x=8;y=r>>>4&65535}else{if((r&61440|0)==0){x=4;y=r>>>8&65535;break}else{x=0;y=r>>>12&65535;break}}}while(0);z=y<<16>>16;if((z&12|0)!=0){w=(z>>>3&1|x)^1;break}if((z&14|0)==0){w=x|3;break}else{w=x|2;break}}}while(0);t=w+16|0}}while(0);q=32-t|0;r=o<>16;z=536870911/(s|0)|0;A=z<<16;B=A>>16;C=536870912-(da(s,B)|0)-((da(r&65535,B)|0)>>16)<<3;r=(da(C,(z>>15)+1>>1)|0)+A+(da(C>>16,B)|0)+((da(C&65528,B)|0)>>16)|0;B=-30-q+(62-t)|0;if((B|0)<1){C=-B|0;A=-2147483648>>C;z=2147483647>>>(C>>>0);do{if((A|0)>(z|0)){if((r|0)>(A|0)){D=A;break}D=(r|0)<(z|0)?z:r}else{if((r|0)>(z|0)){D=z;break}D=(r|0)<(A|0)?A:r}}while(0);E=D<>B:0}A=o;z=(o|0)<0|0?-1:0;s=m&1;F=m-1|0;G=E;I=(E|0)<0|0?-1:0;J=q-1|0;if((q|0)==1){K=0;do{L=c[f+(k<<6)+(K<<2)>>2]|0;M=c[f+(k<<6)+(F-K<<2)>>2]|0;N=I$(M,(M|0)<0|0?-1:0,n,p)|0;M=H;O=z$(N>>>30|M<<2,M>>>30|0<<2,1,0)|0;M=L-(O>>>1|H<<31)|0;O=I$(M,(M|0)<0|0?-1:0,G,I)|0;M=H;L=z$(O>>>1|M<<31,M>>>1|0<<31,O&1,M&0)|0;c[f+(s<<6)+(K<<2)>>2]=L;K=K+1|0;}while((K|0)<(m|0))}else{K=0;do{q=c[f+(k<<6)+(F-K<<2)>>2]|0;o=I$(q,(q|0)<0|0?-1:0,n,p)|0;q=H;B=z$(o>>>30|q<<2,q>>>30|0<<2,1,0)|0;q=(c[f+(k<<6)+(K<<2)>>2]|0)-(B>>>1|H<<31)|0;B=I$(q,(q|0)<0|0?-1:0,G,I)|0;q=D$(B|0,H|0,J|0)|0;B=z$(q,H,1,0)|0;c[f+(s<<6)+(K<<2)>>2]=B>>>1|H<<31;K=K+1|0;}while((K|0)<(m|0))}I$(h<<2|0>>>30,d<<2|h>>>30,A,z)|0;K=H;J=K&-4;I=((K|0)<0|0?-1:0)|0;if((F|0)>0){d=I;h=J;k=s;m=F}else{P=I;Q=J;R=s;break a}}i=e;return l|0}else{P=0;Q=1073741824;R=g}}while(0);g=c[f+(R<<6)>>2]|0;if((g+16773022|0)>>>0>33546044>>>0){l=0;i=e;return l|0}R=-(g<<7)|0;g=R;f=(R|0)<0|0?-1:0;I$(g,f,g,f)|0;f=1073741824-H|0;g=I$(f,(f|0)<0|0?-1:0,Q,P)|0;l=(g>>>30|H<<2)&-4;i=e;return l|0}function ON(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;g=i;i=i+208|0;h=g|0;j=g+64|0;k=g+104|0;l=g+144|0;m=(f|0)==16?8160:8176;n=(f|0)>0;if(n){o=0;do{p=b[e+(o<<1)>>1]|0;q=p>>8;r=b[8584+(q<<1)>>1]|0;s=((da((b[8584+(q+1<<1)>>1]|0)-r|0,p-(q<<8)|0)|0)+(r<<8)>>3)+1>>1;c[h+(d[m+o|0]<<2)>>2]=s;o=o+1|0;}while((o|0)<(f|0));t=c[h>>2]|0}else{t=0}o=f>>1;m=j|0;c[m>>2]=65536;e=-t|0;t=j+4|0;c[t>>2]=e;s=(o|0)>1;a:do{if(s){r=1;q=65536;p=e;while(1){u=c[h+(r<<1<<2)>>2]|0;v=u;w=(u|0)<0|0?-1:0;x=j+(r<<2)|0;y=I$(v,w,p,(p|0)<0|0?-1:0)|0;z=H;A=z$(y>>>15|z<<17,z>>>15|0<<17,1,0)|0;z=r+1|0;y=j+(z<<2)|0;c[y>>2]=(q<<1)-(A>>>1|H<<31);b:do{if((r|0)>1){A=r;B=q;C=p;while(1){D=c[j+(A-2<<2)>>2]|0;E=A-1|0;F=I$(B,(B|0)<0|0?-1:0,v,w)|0;G=H;I=z$(F>>>15|G<<17,G>>>15|0<<17,1,0)|0;c[j+(A<<2)>>2]=D+C-(I>>>1|H<<31);if((E|0)<=1){break b}A=E;B=D;C=c[j+(E<<2)>>2]|0}}}while(0);c[t>>2]=(c[t>>2]|0)-u;if((z|0)>=(o|0)){break a}r=z;q=c[x>>2]|0;p=c[y>>2]|0}}}while(0);t=k|0;c[t>>2]=65536;e=-(c[h+4>>2]|0)|0;p=k+4|0;c[p>>2]=e;c:do{if(s){q=1;r=65536;w=e;while(1){v=c[h+((q<<1|1)<<2)>>2]|0;C=v;B=(v|0)<0|0?-1:0;A=k+(q<<2)|0;E=I$(C,B,w,(w|0)<0|0?-1:0)|0;D=H;I=z$(E>>>15|D<<17,D>>>15|0<<17,1,0)|0;D=q+1|0;E=k+(D<<2)|0;c[E>>2]=(r<<1)-(I>>>1|H<<31);d:do{if((q|0)>1){I=q;G=r;F=w;while(1){J=c[k+(I-2<<2)>>2]|0;K=I-1|0;L=I$(G,(G|0)<0|0?-1:0,C,B)|0;M=H;N=z$(L>>>15|M<<17,M>>>15|0<<17,1,0)|0;c[k+(I<<2)>>2]=J+F-(N>>>1|H<<31);if((K|0)<=1){break d}I=K;G=J;F=c[k+(K<<2)>>2]|0}}}while(0);c[p>>2]=(c[p>>2]|0)-v;if((D|0)>=(o|0)){break c}q=D;r=c[A>>2]|0;w=c[E>>2]|0}}}while(0);if((o|0)>0){p=f-1|0;h=0;e=c[m>>2]|0;m=c[t>>2]|0;while(1){t=h+1|0;s=c[j+(t<<2)>>2]|0;w=e+s|0;r=c[k+(t<<2)>>2]|0;q=r-m|0;c[l+(h<<2)>>2]=-(q+w|0);c[l+(p-h<<2)>>2]=q-w;if((t|0)<(o|0)){h=t;e=s;m=r}else{break}}}m=l|0;do{if(n){e=0;h=0;while(1){o=0;p=h;k=0;do{j=c[l+(k<<2)>>2]|0;r=(j|0)>0?j:-j|0;j=(r|0)>(o|0);o=j?r:o;p=j?k:p;k=k+1|0;}while((k|0)<(f|0));k=(o>>4)+1>>1;if((k|0)<=32767){O=e;break}E=(k|0)<163838?k:163838;IN(m,f,65470-(((E<<14)-536854528|0)/((da(E,p+1|0)|0)>>2|0)|0)|0);E=e+1|0;if((E|0)<10){e=E;h=p}else{O=E;break}}if((O|0)==10){if(n){P=0}else{Q=0;break}do{h=l+(P<<2)|0;e=(c[h>>2]>>4)+1>>1;if((e|0)>32767){R=32767}else{R=(e|0)<-32768?-32768:e&65535}b[a+(P<<1)>>1]=R;c[h>>2]=R<<16>>16<<5;P=P+1|0;}while((P|0)<(f|0))}else{if(n){S=0}else{Q=0;break}do{b[a+(S<<1)>>1]=(((c[l+(S<<2)>>2]|0)>>>4)+1|0)>>>1;S=S+1|0;}while((S|0)<(f|0))}if(n){T=0}else{Q=0;break}while(1){if((NN(a,f)|0)>=107374){U=38;break}IN(m,f,65536-(2<>1]=(((c[l+(h<<2)>>2]|0)>>>4)+1|0)>>>1;h=h+1|0;}while((h|0)<(f|0));h=T+1|0;if((h|0)<16){T=h}else{U=38;break}}if((U|0)==38){i=g;return}}else{Q=0}}while(0);while(1){if((NN(a,f)|0)>=107374){U=38;break}IN(m,f,65536-(2<>1]|0;j=b[c>>1]|0;k=(i<<16>>16)-(j<<16>>16)|0;if(f){l=0;m=k}else{n=0;o=1;p=k;k=i;while(1){i=b[a+(o<<1)>>1]|0;q=(i<<16>>16)-(k<<16>>16)-(b[c+(o<<1)>>1]|0)|0;r=(q|0)<(p|0);s=r?o:n;t=r?q:p;if((o|0)<(e|0)){n=s;o=o+1|0;p=t;k=i}else{l=s;m=t;break}}}u=a+(e<<1)|0;k=b[g>>1]|0;p=32768-(b[u>>1]|0)-(k<<16>>16)|0;o=(p|0)<(m|0);n=o?d:l;if(((o?p:m)|0)>-1){v=34;break}do{if((n|0)==0){b[a>>1]=j}else{if((n|0)==(d|0)){b[u>>1]=-32768-k;break}a:do{if((n|0)>0){p=1;o=0;t=j;while(1){s=(t<<16>>16)+o|0;if((p|0)>=(n|0)){w=s;break a}i=b[c+(p<<1)>>1]|0;p=p+1|0;o=s;t=i}}else{w=0}}while(0);t=c+(n<<1)|0;o=b[t>>1]|0;p=o>>1;i=p+w|0;b:do{if((n|0)<(d|0)){s=d;q=32768;r=k;while(1){x=q-(r<<16>>16)|0;y=s-1|0;if((y|0)<=(n|0)){z=x;break b}s=y;q=x;r=b[c+(y<<1)>>1]|0}}else{z=32768}}while(0);r=z-p|0;q=a+(n-1<<1)|0;s=a+(n<<1)|0;y=(b[s>>1]|0)+(b[q>>1]|0)|0;x=(y>>1)+(y&1)|0;do{if((i|0)>(r|0)){if((x|0)>(i|0)){A=i&65535;break}if((x|0)<(r|0)){A=r&65535;break}else{A=x&65535;break}}else{if((x|0)>(r|0)){A=r&65535;break}if((x|0)<(i|0)){A=i&65535;break}else{A=x&65535;break}}}while(0);x=(A&65535)-(o>>>1)&65535;b[q>>1]=x;b[s>>1]=x+(b[t>>1]|0)}}while(0);if((h|0)>=20){break}h=h+1|0}if((v|0)==34){return}if((h|0)!=20){return}YN(a,d);h=b[a>>1]|0;v=b[c>>1]|0;A=h<<16>>16>v<<16>>16?h:v;b[a>>1]=A;if((d|0)>1){v=1;h=A;do{A=a+(v<<1)|0;z=b[A>>1]|0;w=(b[c+(v<<1)>>1]|0)+(h<<16>>16)|0;h=((z|0)>(w|0)?z:w)&65535;b[A>>1]=h;v=v+1|0;}while((v|0)<(d|0))}v=b[u>>1]|0;h=32768-(b[g>>1]|0)|0;g=((v|0)<(h|0)?v:h)&65535;b[u>>1]=g;u=d-2|0;if((u|0)>-1){B=u;C=g}else{return}while(1){g=a+(B<<1)|0;u=b[g>>1]|0;d=(C<<16>>16)-(b[c+(B+1<<1)>>1]|0)|0;h=((u|0)<(d|0)?u:d)&65535;b[g>>1]=h;if((B|0)>0){B=B-1|0;C=h}else{break}}return}function QN(a,c,d){a=a|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;e=b[c>>1]|0;f=(b[c+2>>1]|0)-e|0;g=131072/(((f|0)>1?f:1)|0)|0;f=g+(131072/(((e|0)>1?e:1)|0)|0)|0;b[a>>1]=(f|0)<32767?f&65535:32767;f=d-1|0;if((f|0)>1){d=1;e=g;while(1){h=d+1|0;i=c+(h<<1)|0;j=(b[i>>1]|0)-(b[c+(d<<1)>>1]|0)|0;k=131072/(((j|0)>1?j:1)|0)|0;j=k+e|0;b[a+(d<<1)>>1]=(j|0)<32767?j&65535:32767;j=d+2|0;l=(b[c+(j<<1)>>1]|0)-(b[i>>1]|0)|0;i=131072/(((l|0)>1?l:1)|0)|0;l=i+k|0;b[a+(h<<1)>>1]=(l|0)<32767?l&65535:32767;if((j|0)<(f|0)){d=j;e=i}else{m=i;break}}}else{m=g}g=32768-(b[c+(f<<1)>>1]|0)|0;c=(131072/(((g|0)>1?g:1)|0)|0)+m|0;b[a+(f<<1)>>1]=(c|0)<32767?c&65535:32767;return}function RN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;n$(b|0,0,300)|0;do{if((f|0)==0){if(!((d|0)==16e3|(d|0)==12e3|(d|0)==8e3)){g=-1;return g|0}if((e|0)==48e3|(e|0)==24e3|(e|0)==16e3|(e|0)==12e3|(e|0)==8e3){c[b+292>>2]=a[((e>>12)-((e|0)>16e3)>>((e|0)>24e3))-1+(30608+((((d>>12)-((d|0)>16e3)>>((d|0)>24e3))-1|0)*5|0))|0]|0;break}else{g=-1;return g|0}}else{if(!((d|0)==48e3|(d|0)==24e3|(d|0)==16e3|(d|0)==12e3|(d|0)==8e3)){g=-1;return g|0}if((e|0)==16e3|(e|0)==12e3|(e|0)==8e3){c[b+292>>2]=a[(e>>12)-1+(30592+((((d>>12)-((d|0)>16e3)>>((d|0)>24e3))-1|0)*3|0))|0]|0;break}else{g=-1;return g|0}}}while(0);f=(d|0)/1e3|0;c[b+284>>2]=f;c[b+288>>2]=(e|0)/1e3|0;c[b+268>>2]=f*10|0;do{if((e|0)>(d|0)){f=b+264|0;if((d<<1|0)==(e|0)){c[f>>2]=1;h=0;break}else{c[f>>2]=2;h=1;break}}else{f=b+264|0;if((e|0)>=(d|0)){c[f>>2]=0;h=0;break}c[f>>2]=3;f=e<<2;if((f|0)==(d*3|0|0)){c[b+280>>2]=3;c[b+276>>2]=18;c[b+296>>2]=6016;h=0;break}i=e*3|0;if((i|0)==(d<<1|0)){c[b+280>>2]=2;c[b+276>>2]=18;c[b+296>>2]=6080;h=0;break}if((e<<1|0)==(d|0)){c[b+280>>2]=1;c[b+276>>2]=24;c[b+296>>2]=6240;h=0;break}if((i|0)==(d|0)){c[b+280>>2]=1;c[b+276>>2]=36;c[b+296>>2]=6200;h=0;break}if((f|0)==(d|0)){c[b+280>>2]=1;c[b+276>>2]=36;c[b+296>>2]=6160;h=0;break}if((e*6|0|0)==(d|0)){c[b+280>>2]=1;c[b+276>>2]=36;c[b+296>>2]=6120;h=0;break}else{g=-1;return g|0}}}while(0);f=e<<16>>16;i=(e>>15)+1>>1;j=d<>16,f)|0)+(da(k,i)|0)+((da(k&65535,f)|0)>>16)|0)<(j|0)){k=k+1|0}else{break}}c[b+272>>2]=k;g=0;return g|0}function SN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=a+284|0;g=a+292|0;h=c[g>>2]|0;i=(c[f>>2]|0)-h|0;j=a+168|0;m$(a+168+(h<<1)|0,d|0,i<<1)|0;h=c[a+264>>2]|0;if((h|0)==1){k=a;XN(k,b,j|0,c[f>>2]|0);XN(k,b+(c[a+288>>2]<<1)|0,d+(i<<1)|0,e-(c[f>>2]|0)|0)}else if((h|0)==3){k=a;UN(k,b,j|0,c[f>>2]|0);UN(k,b+(c[a+288>>2]<<1)|0,d+(i<<1)|0,e-(c[f>>2]|0)|0)}else if((h|0)==2){h=a;VN(h,b,j|0,c[f>>2]|0);VN(h,b+(c[a+288>>2]<<1)|0,d+(i<<1)|0,e-(c[f>>2]|0)|0)}else{m$(b|0,j|0,c[f>>2]<<1)|0;m$(b+(c[a+288>>2]<<1)|0,d+(i<<1)|0,e-(c[f>>2]|0)<<1)|0}f=c[g>>2]|0;m$(j|0,d+(e-f<<1)|0,f<<1)|0;return 0}function TN(a,d,e,f,g){a=a|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;if((g|0)<=0){return}h=a+4|0;i=f+2|0;j=0;k=c[a>>2]|0;do{l=(b[e+(j<<1)>>1]<<8)+k|0;c[d+(j<<2)>>2]=l;m=l<<2;l=m>>16;n=b[f>>1]|0;o=m&65532;k=(da(l,n)|0)+(c[h>>2]|0)+((da(o,n)|0)>>16)|0;c[a>>2]=k;n=b[i>>1]|0;c[h>>2]=((da(o,n)|0)>>16)+(da(l,n)|0);j=j+1|0;}while((j|0)<(g|0));return}function UN(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=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,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,_=0,$=0,aa=0,ba=0,ca=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,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;g=i;i=i+2064|0;h=g|0;j=h;k=a+24|0;l=a+276|0;m=c[l>>2]|0;m$(j|0,k|0,m<<2)|0;n=a+296|0;o=c[n>>2]|0;p=o+4|0;q=c[a+272>>2]|0;r=a+268|0;s=a;t=a+280|0;a=o+6|0;u=o+8|0;v=o+10|0;w=o+12|0;x=o+14|0;y=o+16|0;z=o+18|0;A=o+20|0;B=o+22|0;C=o+24|0;D=o+26|0;E=o+28|0;F=o+30|0;G=o+32|0;H=o+34|0;I=o+36|0;J=o+38|0;K=d;d=e;e=f;f=m;m=o;while(1){L=c[r>>2]|0;M=(e|0)<(L|0)?e:L;TN(s,h+(f<<2)|0,d,m,M);L=M<<16;N=c[l>>2]|0;O=c[t>>2]|0;do{if((N|0)==24){if((L|0)>0){P=0;Q=K}else{R=K;break}while(1){S=P>>16;T=(c[h+(S+23<<2)>>2]|0)+(c[h+(S<<2)>>2]|0)|0;U=b[p>>1]|0;V=da(T>>16,U)|0;W=(da(T&65535,U)|0)>>16;U=(c[h+(S+22<<2)>>2]|0)+(c[h+(S+1<<2)>>2]|0)|0;T=b[a>>1]|0;X=da(U>>16,T)|0;Y=(da(U&65535,T)|0)>>16;T=(c[h+(S+21<<2)>>2]|0)+(c[h+(S+2<<2)>>2]|0)|0;U=b[u>>1]|0;Z=da(T>>16,U)|0;_=(da(T&65535,U)|0)>>16;U=(c[h+(S+20<<2)>>2]|0)+(c[h+(S+3<<2)>>2]|0)|0;T=b[v>>1]|0;$=da(U>>16,T)|0;aa=(da(U&65535,T)|0)>>16;T=(c[h+(S+19<<2)>>2]|0)+(c[h+(S+4<<2)>>2]|0)|0;U=b[w>>1]|0;ba=da(T>>16,U)|0;ca=(da(T&65535,U)|0)>>16;U=(c[h+(S+18<<2)>>2]|0)+(c[h+(S+5<<2)>>2]|0)|0;T=b[x>>1]|0;ea=da(U>>16,T)|0;fa=(da(U&65535,T)|0)>>16;T=(c[h+(S+17<<2)>>2]|0)+(c[h+(S+6<<2)>>2]|0)|0;U=b[y>>1]|0;ga=da(T>>16,U)|0;ha=(da(T&65535,U)|0)>>16;U=(c[h+(S+16<<2)>>2]|0)+(c[h+(S+7<<2)>>2]|0)|0;T=b[z>>1]|0;ia=da(U>>16,T)|0;ja=(da(U&65535,T)|0)>>16;T=(c[h+(S+15<<2)>>2]|0)+(c[h+(S+8<<2)>>2]|0)|0;U=b[A>>1]|0;ka=da(T>>16,U)|0;la=(da(T&65535,U)|0)>>16;U=(c[h+(S+14<<2)>>2]|0)+(c[h+(S+9<<2)>>2]|0)|0;T=b[B>>1]|0;ma=da(U>>16,T)|0;na=(da(U&65535,T)|0)>>16;T=(c[h+(S+13<<2)>>2]|0)+(c[h+(S+10<<2)>>2]|0)|0;U=b[C>>1]|0;oa=da(T>>16,U)|0;pa=(da(T&65535,U)|0)>>16;U=(c[h+(S+12<<2)>>2]|0)+(c[h+(S+11<<2)>>2]|0)|0;S=b[D>>1]|0;T=(W+V+X+Y+Z+_+$+aa+ba+ca+ea+fa+ga+ha+ia+ja+ka+la+ma+na+oa+pa+(da(U>>16,S)|0)+((da(U&65535,S)|0)>>16)>>5)+1>>1;if((T|0)>32767){qa=32767}else{qa=(T|0)<-32768?-32768:T&65535}T=Q+2|0;b[Q>>1]=qa;S=P+q|0;if((S|0)<(L|0)){P=S;Q=T}else{R=T;break}}}else if((N|0)==18){if((L|0)<=0){R=K;break}T=O<<16>>16;S=O-1|0;U=0;pa=K;while(1){oa=U>>16;na=(da(U&65535,T)|0)>>16;ma=na*9|0;la=c[h+(oa<<2)>>2]|0;ka=b[o+(ma+2<<1)>>1]|0;ja=da(ka,la>>16)|0;ia=(da(ka,la&65535)|0)>>16;la=c[h+(oa+1<<2)>>2]|0;ka=b[o+(ma+3<<1)>>1]|0;ha=da(ka,la>>16)|0;ga=(da(ka,la&65535)|0)>>16;la=c[h+(oa+2<<2)>>2]|0;ka=b[o+(ma+4<<1)>>1]|0;fa=da(ka,la>>16)|0;ea=(da(ka,la&65535)|0)>>16;la=c[h+(oa+3<<2)>>2]|0;ka=b[o+(ma+5<<1)>>1]|0;ca=da(ka,la>>16)|0;ba=(da(ka,la&65535)|0)>>16;la=c[h+(oa+4<<2)>>2]|0;ka=b[o+(ma+6<<1)>>1]|0;aa=da(ka,la>>16)|0;$=(da(ka,la&65535)|0)>>16;la=c[h+(oa+5<<2)>>2]|0;ka=b[o+(ma+7<<1)>>1]|0;_=da(ka,la>>16)|0;Z=(da(ka,la&65535)|0)>>16;la=c[h+(oa+6<<2)>>2]|0;ka=b[o+(ma+8<<1)>>1]|0;Y=da(ka,la>>16)|0;X=(da(ka,la&65535)|0)>>16;la=c[h+(oa+7<<2)>>2]|0;ka=b[o+(ma+9<<1)>>1]|0;V=da(ka,la>>16)|0;W=(da(ka,la&65535)|0)>>16;la=c[h+(oa+8<<2)>>2]|0;ka=b[o+(ma+10<<1)>>1]|0;ma=da(ka,la>>16)|0;ra=(da(ka,la&65535)|0)>>16;la=(S-na|0)*9|0;na=c[h+(oa+17<<2)>>2]|0;ka=b[o+(la+2<<1)>>1]|0;sa=da(ka,na>>16)|0;ta=(da(ka,na&65535)|0)>>16;na=c[h+(oa+16<<2)>>2]|0;ka=b[o+(la+3<<1)>>1]|0;ua=da(ka,na>>16)|0;va=(da(ka,na&65535)|0)>>16;na=c[h+(oa+15<<2)>>2]|0;ka=b[o+(la+4<<1)>>1]|0;wa=da(ka,na>>16)|0;xa=(da(ka,na&65535)|0)>>16;na=c[h+(oa+14<<2)>>2]|0;ka=b[o+(la+5<<1)>>1]|0;ya=da(ka,na>>16)|0;za=(da(ka,na&65535)|0)>>16;na=c[h+(oa+13<<2)>>2]|0;ka=b[o+(la+6<<1)>>1]|0;Aa=da(ka,na>>16)|0;Ba=(da(ka,na&65535)|0)>>16;na=c[h+(oa+12<<2)>>2]|0;ka=b[o+(la+7<<1)>>1]|0;Ca=da(ka,na>>16)|0;Da=(da(ka,na&65535)|0)>>16;na=c[h+(oa+11<<2)>>2]|0;ka=b[o+(la+8<<1)>>1]|0;Ea=da(ka,na>>16)|0;Fa=(da(ka,na&65535)|0)>>16;na=c[h+(oa+10<<2)>>2]|0;ka=b[o+(la+9<<1)>>1]|0;Ga=da(ka,na>>16)|0;Ha=(da(ka,na&65535)|0)>>16;na=c[h+(oa+9<<2)>>2]|0;oa=b[o+(la+10<<1)>>1]|0;la=(ia+ja+ha+ga+fa+ea+ca+ba+aa+$+_+Z+Y+X+V+W+ma+ra+sa+ta+ua+va+wa+xa+ya+za+Aa+Ba+Ca+Da+Ea+Fa+Ga+Ha+(da(oa,na>>16)|0)+((da(oa,na&65535)|0)>>16)>>5)+1>>1;if((la|0)>32767){Ia=32767}else{Ia=(la|0)<-32768?-32768:la&65535}la=pa+2|0;b[pa>>1]=Ia;na=U+q|0;if((na|0)<(L|0)){U=na;pa=la}else{R=la;break}}}else if((N|0)==36){if((L|0)>0){Ja=0;Ka=K}else{R=K;break}while(1){pa=Ja>>16;U=(c[h+(pa+35<<2)>>2]|0)+(c[h+(pa<<2)>>2]|0)|0;S=b[p>>1]|0;T=da(U>>16,S)|0;la=(da(U&65535,S)|0)>>16;S=(c[h+(pa+34<<2)>>2]|0)+(c[h+(pa+1<<2)>>2]|0)|0;U=b[a>>1]|0;na=da(S>>16,U)|0;oa=(da(S&65535,U)|0)>>16;U=(c[h+(pa+33<<2)>>2]|0)+(c[h+(pa+2<<2)>>2]|0)|0;S=b[u>>1]|0;Ha=da(U>>16,S)|0;Ga=(da(U&65535,S)|0)>>16;S=(c[h+(pa+32<<2)>>2]|0)+(c[h+(pa+3<<2)>>2]|0)|0;U=b[v>>1]|0;Fa=da(S>>16,U)|0;Ea=(da(S&65535,U)|0)>>16;U=(c[h+(pa+31<<2)>>2]|0)+(c[h+(pa+4<<2)>>2]|0)|0;S=b[w>>1]|0;Da=da(U>>16,S)|0;Ca=(da(U&65535,S)|0)>>16;S=(c[h+(pa+30<<2)>>2]|0)+(c[h+(pa+5<<2)>>2]|0)|0;U=b[x>>1]|0;Ba=da(S>>16,U)|0;Aa=(da(S&65535,U)|0)>>16;U=(c[h+(pa+29<<2)>>2]|0)+(c[h+(pa+6<<2)>>2]|0)|0;S=b[y>>1]|0;za=da(U>>16,S)|0;ya=(da(U&65535,S)|0)>>16;S=(c[h+(pa+28<<2)>>2]|0)+(c[h+(pa+7<<2)>>2]|0)|0;U=b[z>>1]|0;xa=da(S>>16,U)|0;wa=(da(S&65535,U)|0)>>16;U=(c[h+(pa+27<<2)>>2]|0)+(c[h+(pa+8<<2)>>2]|0)|0;S=b[A>>1]|0;va=da(U>>16,S)|0;ua=(da(U&65535,S)|0)>>16;S=(c[h+(pa+26<<2)>>2]|0)+(c[h+(pa+9<<2)>>2]|0)|0;U=b[B>>1]|0;ta=da(S>>16,U)|0;sa=(da(S&65535,U)|0)>>16;U=(c[h+(pa+25<<2)>>2]|0)+(c[h+(pa+10<<2)>>2]|0)|0;S=b[C>>1]|0;ra=da(U>>16,S)|0;ma=(da(U&65535,S)|0)>>16;S=(c[h+(pa+24<<2)>>2]|0)+(c[h+(pa+11<<2)>>2]|0)|0;U=b[D>>1]|0;W=da(S>>16,U)|0;V=(da(S&65535,U)|0)>>16;U=(c[h+(pa+23<<2)>>2]|0)+(c[h+(pa+12<<2)>>2]|0)|0;S=b[E>>1]|0;X=da(U>>16,S)|0;Y=(da(U&65535,S)|0)>>16;S=(c[h+(pa+22<<2)>>2]|0)+(c[h+(pa+13<<2)>>2]|0)|0;U=b[F>>1]|0;Z=da(S>>16,U)|0;_=(da(S&65535,U)|0)>>16;U=(c[h+(pa+21<<2)>>2]|0)+(c[h+(pa+14<<2)>>2]|0)|0;S=b[G>>1]|0;$=da(U>>16,S)|0;aa=(da(U&65535,S)|0)>>16;S=(c[h+(pa+20<<2)>>2]|0)+(c[h+(pa+15<<2)>>2]|0)|0;U=b[H>>1]|0;ba=da(S>>16,U)|0;ca=(da(S&65535,U)|0)>>16;U=(c[h+(pa+19<<2)>>2]|0)+(c[h+(pa+16<<2)>>2]|0)|0;S=b[I>>1]|0;ea=da(U>>16,S)|0;fa=(da(U&65535,S)|0)>>16;S=(c[h+(pa+18<<2)>>2]|0)+(c[h+(pa+17<<2)>>2]|0)|0;pa=b[J>>1]|0;U=(la+T+na+oa+Ha+Ga+Fa+Ea+Da+Ca+Ba+Aa+za+ya+xa+wa+va+ua+ta+sa+ra+ma+W+V+X+Y+Z+_+$+aa+ba+ca+ea+fa+(da(S>>16,pa)|0)+((da(S&65535,pa)|0)>>16)>>5)+1>>1;if((U|0)>32767){La=32767}else{La=(U|0)<-32768?-32768:U&65535}U=Ka+2|0;b[Ka>>1]=La;pa=Ja+q|0;if((pa|0)<(L|0)){Ja=pa;Ka=U}else{R=U;break}}}else{R=K}}while(0);L=e-M|0;if((L|0)<=1){break}N=c[l>>2]|0;m$(j|0,h+(M<<2)|0,N<<2)|0;K=R;d=d+(M<<1)|0;e=L;f=N;m=c[n>>2]|0}m$(k|0,h+(M<<2)|0,c[l>>2]<<2)|0;i=g;return}function VN(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;g=i;i=i+976|0;h=g|0;j=h;k=a+24|0;m$(j|0,k|0,32)|0;l=c[a+272>>2]|0;m=a+268|0;n=a;a=h+16|0;o=d;d=e;e=f;while(1){f=c[m>>2]|0;p=(e|0)<(f|0)?e:f;WN(n,a,d,p);f=p<<17;if((f|0)>0){q=0;r=o;while(1){s=((q&65535)*12|0)>>>16;t=q>>16;u=da(b[5496+(s<<3)>>1]|0,b[h+(t<<1)>>1]|0)|0;v=(da(b[5498+(s<<3)>>1]|0,b[h+(t+1<<1)>>1]|0)|0)+u|0;u=v+(da(b[5500+(s<<3)>>1]|0,b[h+(t+2<<1)>>1]|0)|0)|0;v=u+(da(b[5502+(s<<3)>>1]|0,b[h+(t+3<<1)>>1]|0)|0)|0;u=11-s|0;s=v+(da(b[5502+(u<<3)>>1]|0,b[h+(t+4<<1)>>1]|0)|0)|0;v=s+(da(b[5500+(u<<3)>>1]|0,b[h+(t+5<<1)>>1]|0)|0)|0;s=v+(da(b[5498+(u<<3)>>1]|0,b[h+(t+6<<1)>>1]|0)|0)|0;v=(s+(da(b[5496+(u<<3)>>1]|0,b[h+(t+7<<1)>>1]|0)|0)>>14)+1>>1;if((v|0)>32767){w=32767}else{w=(v|0)<-32768?-32768:v&65535}v=r+2|0;b[r>>1]=w;t=q+l|0;if((t|0)<(f|0)){q=t;r=v}else{x=v;break}}}else{x=o}r=e-p|0;if((r|0)<=0){break}m$(j|0,h+(p<<1<<1)|0,32)|0;o=x;d=d+(p<<1)|0;e=r}m$(k|0,h+(p<<1<<1)|0,32)|0;i=g;return}function WN(a,d,e,f){a=a|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;if((f|0)<=0){return}g=a+4|0;h=a+8|0;i=a+12|0;j=a+16|0;k=a+20|0;l=0;do{m=b[e+(l<<1)>>1]<<10;n=c[a>>2]|0;o=m-n|0;p=(((o&65535)*1746|0)>>>16)+((o>>16)*1746|0)|0;o=p+n|0;c[a>>2]=p+m;p=c[g>>2]|0;n=o-p|0;q=(((n&65535)*14986|0)>>>16)+((n>>16)*14986|0)|0;n=q+p|0;c[g>>2]=q+o;o=n-(c[h>>2]|0)|0;q=(((o&65535)*-26453|0)>>16)+((o>>16)*-26453|0)|0;c[h>>2]=o+n+q;o=(q+n>>9)+1>>1;if((o|0)>32767){r=32767}else{r=(o|0)<-32768?-32768:o&65535}o=l<<1;b[d+(o<<1)>>1]=r;n=c[i>>2]|0;q=m-n|0;p=(((q&65535)*6854|0)>>>16)+((q>>16)*6854|0)|0;q=p+n|0;c[i>>2]=p+m;m=c[j>>2]|0;p=q-m|0;n=(((p&65535)*25769|0)>>>16)+((p>>16)*25769|0)|0;p=n+m|0;c[j>>2]=n+q;q=p-(c[k>>2]|0)|0;n=(((q&65535)*-9994|0)>>16)+((q>>16)*-9994|0)|0;c[k>>2]=q+p+n;q=(n+p>>9)+1>>1;if((q|0)>32767){s=32767}else{s=(q|0)<-32768?-32768:q&65535}b[d+((o|1)<<1)>>1]=s;l=l+1|0;}while((l|0)<(f|0));return}function XN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;WN(a,b,c,d);return}function YN(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;if((c|0)>1){d=1}else{return}do{e=b[a+(d<<1)>>1]|0;f=d;while(1){g=f-1|0;h=b[a+(g<<1)>>1]|0;if(!(e<<16>>16>16)){i=f;break}b[a+(f<<1)>>1]=h;if((g|0)>0){f=g}else{i=g;break}}b[a+(i<<1)>>1]=e;d=d+1|0;}while((d|0)<(c|0));return}function ZN(a,d,e,f){a=a|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,v=0,w=0,x=0;g=f-1|0;a:do{if((g|0)>0){f=0;h=0;while(1){i=b[e+(f<<1)>>1]|0;j=(da(i,i)|0)+h|0;i=b[e+((f|1)<<1)>>1]|0;k=j+(da(i,i)|0)|0;i=f+2|0;if((k|0)<0){break}if((i|0)<(g|0)){f=i;h=k}else{l=k;m=0;n=i;break a}}l=k>>>2;m=2;n=f}else{l=0;m=0;n=0}}while(0);if((n|0)<(g|0)){k=n;h=m;i=l;while(1){j=b[e+(k<<1)>>1]|0;o=da(j,j)|0;j=b[e+(k+1<<1)>>1]|0;p=(((da(j,j)|0)+o|0)>>>(h>>>0))+i|0;if((p|0)<0){q=p>>>2;r=h+2|0}else{q=p;r=h}p=k+2|0;if((p|0)<(g|0)){k=p;h=r;i=q}else{s=p;t=r;u=q;break}}}else{s=n;t=m;u=l}if((s|0)==(g|0)){s=b[e+(g<<1)>>1]|0;v=((da(s,s)|0)>>>(t>>>0))+u|0}else{v=u}if(!(v>>>0>1073741823>>>0)){w=v;x=t;c[d>>2]=x;c[a>>2]=w;return}w=v>>>2;x=t+2|0;c[d>>2]=x;c[a>>2]=w;return}function _N(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=JM(a,4776,8)|0;f=(e|0)/5|0;g=JM(a,4720,8)|0;h=JM(a,4704,8)|0;i=JM(a,4720,8)|0;j=JM(a,4704,8)|0;a=g+(f*3|0)|0;g=b[4744+(a<<1)>>1]|0;k=(b[4744+(a+1<<1)>>1]|0)-g|0;a=(da((da(k>>16,429522944)|0)+((k&65535)*6554|0)>>16,h<<17>>16|1)|0)+g|0;g=i+(((f*-5|0)+e|0)*3|0)|0;e=b[4744+(g<<1)>>1]|0;f=(b[4744+(g+1<<1)>>1]|0)-e|0;g=(da((da(f>>16,429522944)|0)+((f&65535)*6554|0)>>16,j<<17>>16|1)|0)+e|0;c[d+4>>2]=g;c[d>>2]=a-g;return}function $N(a,b){a=a|0;b=b|0;c[b>>2]=JM(a,4808,8)|0;return}function aO(b,e,f){b=b|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,v=0,w=0,x=0;if(f>>>0<8>>>0){g=-132;return g|0}if((j$(e,116224,8)|0)!=0){g=-132;return g|0}if(f>>>0<9>>>0){g=-133;return g|0}h=a[e+8|0]|0;i=h&255;if((h&255)>>>0>15>>>0){g=-134;return g|0}if(f>>>0<19>>>0){g=-133;return g|0}j=a[e+9|0]|0;k=j&255;l=(d[e+11|0]|0)<<8|(d[e+10|0]|0);m=(d[e+13|0]|0)<<8|(d[e+12|0]|0)|(d[e+14|0]|0)<<16|(d[e+15|0]|0)<<24;n=((d[e+17|0]|0)<<8|(d[e+16|0]|0))<<16>>16;o=a[e+18|0]|0;p=o&255;do{if((o<<24>>24|0)==1){if(j<<24>>24==0|(j&255)>>>0>8>>>0){g=-133;return g|0}q=k+21|0;if(q>>>0>f>>>0){g=-133;return g|0}if((h&255)>>>0<2>>>0&q>>>0>>0){g=-133;return g|0}q=a[e+19|0]|0;r=q&255;if(q<<24>>24==0){g=-133;return g|0}s=a[e+20|0]|0;t=s&255;if((s&255)>>>0>(q&255)>>>0){g=-133;return g|0}q=t+r|0;s=0;do{u=a[e+(s+21)|0]|0;s=s+1|0;if(!((u&255|0)<(q|0)|u<<24>>24==-1)){g=-133;v=23;break}}while((s|0)<(k|0));if((v|0)==23){return g|0}if((b|0)==0){g=0;return g|0}else{m$(b+32|0,e+21|0,k)|0;w=t;x=r;break}}else if((o<<24>>24|0)==0){if(j<<24>>24==0|(j&255)>>>0>2>>>0){g=-133;return g|0}if((h&255)>>>0<2>>>0&f>>>0>19>>>0){g=-133;return g|0}if((b|0)==0){g=0;return g|0}else{a[b+32|0]=0;a[b+33|0]=1;w=k-1|0;x=1;break}}else if((o<<24>>24|0)==(-1|0)){g=-130;return g|0}else{g=-133;return g|0}}while(0);c[b>>2]=i;c[b+4>>2]=k;c[b+8>>2]=l;c[b+12>>2]=m;c[b+16>>2]=n;c[b+20>>2]=p;c[b+24>>2]=x;c[b+28>>2]=w;g=0;return g|0}function bO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=c[a+8>>2]|0;d=a|0;e=c[d>>2]|0;if((b|0)>0){f=b;b=e;while(1){g=f-1|0;W_(c[b+(g<<2)>>2]|0);h=c[d>>2]|0;if((g|0)>0){f=g;b=h}else{i=h;break}}}else{i=e}W_(i);W_(c[a+4>>2]|0);W_(c[a+12>>2]|0);return}function cO(b,e,f){b=b|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,v=0;if(f>>>0<8>>>0){g=-132;return g|0}if((j$(e,168904,8)|0)!=0){g=-132;return g|0}if(f>>>0<16>>>0){g=-133;return g|0}h=(d[e+9|0]|0)<<8|(d[e+8|0]|0)|(d[e+10|0]|0)<<16|(d[e+11|0]|0)<<24;i=e+12|0;j=f-12|0;if(h>>>0>j>>>0){g=-133;return g|0}f=(b|0)!=0;do{if(f){k=ke(h|0,1)|0;if(H){g=-129;return g|0}l=V_(k)|0;if((l|0)==0){g=-129;return g|0}else{m$(l|0,i|0,h)|0;a[l+h|0]=0;c[b+12>>2]=l;break}}}while(0);i=j-h|0;if(i>>>0<4>>>0){g=-133;return g|0}j=(d[e+(h+13)|0]|0)<<8|(d[e+(h+12)|0]|0)|(d[e+(h+14)|0]|0)<<16|(d[e+(h+15)|0]|0)<<24;l=e+(h+16)|0;h=i-4|0;if(j>>>0>h>>>2>>>0){g=-133;return g|0}if(j>>>0>2147483646>>>0){g=-129;return g|0}do{if(f){i=j+1|0;e=i<<2;if((i&1073741823|0)!=(i|0)){g=-129;return g|0}i=V_(e)|0;c[b+4>>2]=i;k=V_(e)|0;c[b>>2]=k;if((i|0)==0|(k|0)==0){g=-129}else{break}return g|0}}while(0);a:do{if((j|0)>0){k=b+4|0;i=b|0;e=b+8|0;if(f){m=h;n=l;o=0}else{p=h;q=l;r=0;while(1){if((j-r|0)>>>0>p>>>2>>>0){g=-133;s=29;break}t=(d[q+1|0]|0)<<8|(d[q]|0)|(d[q+2|0]|0)<<16|(d[q+3|0]|0)<<24;u=p-4|0;if(t>>>0>u>>>0){g=-133;s=29;break}if((t|0)<0){g=-129;s=29;break}v=r+1|0;if((v|0)<(j|0)){p=u-t|0;q=q+(t+4)|0;r=v}else{break a}}if((s|0)==29){return g|0}}while(1){if((j-o|0)>>>0>m>>>2>>>0){g=-133;s=29;break}r=(d[n+1|0]|0)<<8|(d[n]|0)|(d[n+2|0]|0)<<16|(d[n+3|0]|0)<<24;q=m-4|0;if(r>>>0>q>>>0){g=-133;s=29;break}if((r|0)<0){g=-129;s=29;break}c[(c[k>>2]|0)+(o<<2)>>2]=r;p=ke(r|0,1)|0;if(H){g=-129;s=29;break}v=V_(p)|0;c[(c[i>>2]|0)+(o<<2)>>2]=v;v=(c[i>>2]|0)+(o<<2)|0;if((c[v>>2]|0)==0){g=-129;s=29;break}p=o+1|0;c[e>>2]=p;m$(c[v>>2]|0,n+4|0,r)|0;a[(c[(c[i>>2]|0)+(o<<2)>>2]|0)+r|0]=0;if((p|0)<(j|0)){m=q-r|0;n=n+(r+4)|0;o=p}else{break a}}if((s|0)==29){return g|0}}}while(0);if(!f){g=0;return g|0}c[(c[b>>2]|0)+(j<<2)>>2]=0;c[(c[b+4>>2]|0)+(j<<2)>>2]=0;g=0;return g|0}function dO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+16|0;f=e|0;if((a|0)==0){g=cO(0,b,d)|0;i=e;return g|0}h=f;n$(h|0,0,16)|0;j=cO(f,b,d)|0;if((j|0)>=0){d=a;c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];g=j;i=e;return g|0}h=c[f+8>>2]|0;d=f|0;a=c[d>>2]|0;if((h|0)>0){b=h;h=a;while(1){k=b-1|0;W_(c[h+(k<<2)>>2]|0);l=c[d>>2]|0;if((k|0)>0){b=k;h=l}else{m=l;break}}}else{m=a}W_(m);W_(c[f+4>>2]|0);W_(c[f+12>>2]|0);g=j;i=e;return g|0}function eO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;g=i;i=i+16|0;h=g|0;j=V_(8960)|0;k=j;if((j|0)==0){l=-129}else{n$(j|0,0,8960)|0;m=j+56|0;c[m>>2]=-1;c[m+4>>2]=-1;m=j+16|0;c[m>>2]=a;n=b;c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];a:do{if((c[j>>2]|0)==0){o=-128}else{n=j+64|0;EO(n)|0;if((e|0)!=0){m$(GO(n,e)|0,d|0,e)|0;HO(n,e)|0}n=c[b+4>>2]|0;do{if((n|0)==0){p=0;q=0}else{r=(Wk[n&63](a,0,0,1)|0)!=-1;s=r&1;if(!r){p=0;q=s;break}r=c[j+8>>2]|0;if((r|0)==0){o=-131;break a}t=jk[r&255](c[m>>2]|0)|0;if((t|0)==(e|0)&(H|0)==0){p=1;q=s}else{o=-131;break a}}}while(0);c[j+20>>2]=q;n=j+28|0;c[n>>2]=V_(352)|0;AO(j+128|0,-1)|0;s=c[n>>2]|0;t=j+40|0;r=j+32|0;u=j+36|0;v=sO(k,s+44|0,s+332|0,t,r,u,0)|0;b:do{if((v|0)<0){w=v}else{s=j+24|0;x=j+48|0;y=j+464|0;z=j+96|0;while(1){c[s>>2]=1;A=c[n>>2]|0;c[A>>2]=0;c[A+4>>2]=0;A=c[x+4>>2]|0;B=(c[n>>2]|0)+8|0;c[B>>2]=c[x>>2];c[B+4>>2]=A;A=(c[n>>2]|0)+24|0;c[A>>2]=-1;c[A+4>>2]=-1;c[(c[n>>2]|0)+40>>2]=c[y>>2];C=tO(k,c[n>>2]|0,h)|0;if(p|(C|0)<1){break}bO((c[n>>2]|0)+332|0);c[s>>2]=0;c[z>>2]=(c[z>>2]|0)+1;A=c[n>>2]|0;B=sO(k,A+44|0,A+332|0,t,r,u,h)|0;if((B|0)<0){w=B;break b}}if((C|0)<0){w=C;break}c[j+92>>2]=1;if((f|0)==0){D=k;i=g;return D|0}c[f>>2]=0;D=k;i=g;return D|0}}while(0);c[j+12>>2]=0;iO(k);o=w}}while(0);W_(j);l=o}if((f|0)==0){D=0;i=g;return D|0}c[f>>2]=l;D=0;i=g;return D|0}function fO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=eO(a,b,d,e,f)|0;if((g|0)==0){h=0;return h|0}e=gO(g)|0;if((e|0)>-1){h=g;return h|0}if((f|0)!=0){c[f>>2]=e}W_(g);h=0;return h|0}function gO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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,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,_=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,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,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=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=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0;b=i;i=i+2512|0;d=b|0;e=b+16|0;f=b+24|0;g=b+56|0;h=b+72|0;j=a+92|0;do{if((c[a+20>>2]|0)==0){k=106}else{c[j>>2]=2;l=b+2120|0;m=b+2152|0;n=a+8652|0;o=c[n>>2]|0;p=o<<5;q=V_(p)|0;if((q|0)==0){r=-129;break}s=a+64|0;t=s;c[l>>2]=c[t>>2];c[l+4>>2]=c[t+4>>2];c[l+8>>2]=c[t+8>>2];c[l+12>>2]=c[t+12>>2];c[l+16>>2]=c[t+16>>2];c[l+20>>2]=c[t+20>>2];c[l+24>>2]=c[t+24>>2];u=a+128|0;v=u;m$(m|0,v|0,360)|0;w=a+48|0;x=c[w>>2]|0;y=c[w+4>>2]|0;z=a+488|0;m$(q|0,z|0,p)|0;EO(s)|0;AO(u,-1)|0;A=h;B=a+4|0;C=a+16|0;Wk[c[B>>2]&63](c[C>>2]|0,0,0,2)|0;D=jk[c[a+8>>2]&255](c[C>>2]|0)|0;E=H;F=a+56|0;c[F>>2]=D;c[F+4>>2]=E;c[w>>2]=D;c[w+4>>2]=E;G=0;I=a+28|0;a:do{if((E|0)<(G|0)|(E|0)==(G|0)&D>>>0<0>>>0){J=-128}else{K=c[I>>2]|0;L=K+8|0;M=c[L>>2]|0;N=c[L+4>>2]|0;if((E|0)<(N|0)|(E|0)==(N|0)&D>>>0>>0){J=-137;break}L=c[K+40>>2]|0;K=a+40|0;O=c[K>>2]|0;P=a+32|0;Q=c[P>>2]|0;R=f;S=h|0;T=h+8|0;U=h+20|0;V=h+16|0;W=h+24|0;X=(Q|0)>0;Y=-1;Z=-1;_=E;$=D;aa=0;ba=65536;ca=E;da=D;ea=E;fa=D;b:while(1){ga=A$($,_,ba,(ba|0)<0|0?-1:0)|0;ha=H;ia=0;ja=(ha|0)>(ia|0)|(ha|0)==(ia|0)&ga>>>0>0>>>0;ia=ja?ga:0;ga=ja?ha:0;if((fa|0)==(ia|0)&(ea|0)==(ga|0)){ka=ea;la=fa}else{ha=c[B>>2]|0;if((ha|0)==0){J=-128;break a}if((Wk[ha&63](c[C>>2]|0,ia,ga,0)|0)!=0){J=-128;break a}c[w>>2]=ia;c[w+4>>2]=ga;KO(s)|0;ka=c[w+4>>2]|0;la=c[w>>2]|0}c:do{if((ka|0)<(ca|0)|(ka|0)==(ca|0)&la>>>0>>0){ha=aa;ja=ga;ma=ia;na=Y;oa=Z;while(1){pa=rO(a,g,da,ca)|0;qa=H;ra=-1;if((qa|0)<(ra|0)|(qa|0)==(ra|0)&pa>>>0<-1>>>0){k=24;break b}if((pa|0)==(-1|0)&(qa|0)==(-1|0)){sa=ha;ta=na;ua=oa;break c}ra=zO(g)|0;c[S>>2]=ma;c[S+4>>2]=ja;c[T>>2]=pa;c[T+4>>2]=qa;c[U>>2]=ra;va=A$(c[w>>2]|0,c[w+4>>2]|0,pa,qa)|0;c[V>>2]=va;va=yO(g)|0;c[W>>2]=va;c[W+4>>2]=H;if((ra|0)==(L|0)){c[R>>2]=c[A>>2];c[R+4>>2]=c[A+4>>2];c[R+8>>2]=c[A+8>>2];c[R+12>>2]=c[A+12>>2];c[R+16>>2]=c[A+16>>2];c[R+20>>2]=c[A+20>>2];c[R+24>>2]=c[A+24>>2];c[R+28>>2]=c[A+28>>2];wa=1}else{wa=ha}d:do{if(X){va=0;while(1){xa=va+1|0;if((c[O+(va<<2)>>2]|0)==(ra|0)){ya=wa;break d}if((xa|0)<(Q|0)){va=xa}else{ya=0;break}}}else{ya=0}}while(0);ra=z$(pa,qa,1,0)|0;va=c[w+4>>2]|0;if((va|0)<(ca|0)|(va|0)==(ca|0)&(c[w>>2]|0)>>>0>>0){ha=ya;ja=H;ma=ra;na=qa;oa=pa}else{sa=ya;ta=qa;ua=pa;break}}}else{sa=aa;ta=Y;ua=Z}}while(0);oa=0;na=(ta|0)<(oa|0)|(ta|0)==(oa|0)&ua>>>0<0>>>0;if((ia|0)==0&(ga|0)==0&na){J=-137;break a}oa=ba<<1;ma=z$(ia,ga,65306,0)|0;ja=H;if(!na){k=22;break}na=(ja|0)<(E|0)|(ja|0)==(E|0)&ma>>>0>>0;Y=ta;Z=ua;_=ga;$=ia;aa=sa;ba=(oa|0)<1048576?oa:1048576;ca=na?ja:E;da=na?ma:D;ea=c[w+4>>2]|0;fa=c[w>>2]|0}do{if((k|0)==22){if((sa|0)==0){break}c[A>>2]=c[R>>2];c[A+4>>2]=c[R+4>>2];c[A+8>>2]=c[R+8>>2];c[A+12>>2]=c[R+12>>2];c[A+16>>2]=c[R+16>>2];c[A+20>>2]=c[R+20>>2];c[A+24>>2]=c[R+24>>2];c[A+28>>2]=c[R+28>>2]}else if((k|0)==24){fa=pa;if((fa|0)<0){J=fa;break a}}}while(0);R=c[V>>2]|0;fa=z$(R,(R|0)<0|0?-1:0,c[T>>2]|0,c[T+4>>2]|0)|0;R=H;c[F>>2]=fa;c[F+4>>2]=R;if((R|0)<(N|0)|(R|0)==(N|0)&fa>>>0>>0){J=-137;break}fa=a+36|0;R=c[I>>2]|0;ea=a+24|0;da=c[ea>>2]|0;c[e>>2]=0;c[e+4>>2]=0;ca=a+464|0;ba=N;aa=M;$=R;R=da;_=da;da=0;Z=0;Y=1;e:while(1){za=c[K>>2]|0;Aa=c[P>>2]|0;if((R|0)<(_|0)){Ba=$;Ca=_}else{if((_|0)>1073741823){J=-129;break a}Q=_<<1|1;O=Y_($,Q*352|0)|0;X=O;if((O|0)==0){J=-129;break a}c[I>>2]=X;Ba=X;Ca=Q}if((Y|0)<=0){break}Q=c[K>>2]|0;X=c[P>>2]|0;O=(X|0)>0;L=0;f:while(1){S=c[h+(L<<5)+20>>2]|0;if(O){ma=0;while(1){na=ma+1|0;if((c[Q+(ma<<2)>>2]|0)==(S|0)){Da=L;Ea=1;break f}if((na|0)<(X|0)){ma=na}else{break}}}ma=L+1|0;if((ma|0)<(Y|0)){L=ma}else{Da=ma;Ea=0;break}}if((Da|0)<1){break}L=Da-1|0;X=h+(L<<5)|0;Q=c[X>>2]|0;O=c[X+4>>2]|0;X=h+(L<<5)+8|0;L=c[X>>2]|0;ia=c[X+4>>2]|0;do{if(Ea){X=h+(Da<<5)+8|0;ga=c[X>>2]|0;ma=c[X+4>>2]|0;X=c[h+(Da<<5)+16>>2]|0;S=z$(X,(X|0)<0|0?-1:0,ga,ma)|0;X=H;if((c[h+(Da<<5)+20>>2]|0)!=(c[Ba+((R-1|0)*352|0)+40>>2]|0)){Fa=X;Ga=S;Ha=-1;Ia=-1;Ja=da;Ka=Z;break}na=h+(Da<<5)+24|0;Fa=X;Ga=S;Ha=c[na+4>>2]|0;Ia=c[na>>2]|0;Ja=ma;Ka=ga}else{Fa=ba;Ga=aa;Ha=-1;Ia=-1;Ja=da;Ka=Z}}while(0);do{if((R|0)>1){ga=R-1|0;ma=Ba+(ga*352|0)|0;na=c[ma>>2]|0;S=c[ma+4>>2]|0;ma=G$(na,S,ga,(ga|0)<0|0?-1:0)|0;ga=H;X=z$(Q,O,-65536,-1)|0;ja=A$(X,H,ma,ga)|0;X=H;oa=A$(Ga,Fa,ma,ga)|0;ha=H;if(!(((S|0)>(ha|0)|(S|0)==(ha|0)&na>>>0>oa>>>0)&((S|0)<(X|0)|(S|0)==(X|0)&na>>>0>>0))){La=-1;Ma=-1;break}oa=z$(ma,ga,na,S)|0;S=H;na=(S|0)<(X|0)|(S|0)==(X|0)&oa>>>0>>0;ja=z$(na?ma:0,na?ga:0,oa,S)|0;La=H;Ma=ja}else{La=-1;Ma=-1}}while(0);if((Fa|0)<(O|0)|(Fa|0)==(O|0)&Ga>>>0>>0){ja=(Aa|0)>0;S=R-1|0;oa=Ba+(S*352|0)+40|0;ga=Da;na=O;ma=Q;X=La;ha=Ma;ra=ia;va=L;xa=Ja;Na=Ka;Oa=Ha;Pa=Ia;Qa=Fa;Ra=Ga;while(1){if((ha|0)==(-1|0)&(X|0)==(-1|0)){Sa=A$(ma,na,Ra,Qa)|0;Ta=H;Ua=z$(Sa>>>1|Ta<<31,Ta>>1|((Ta|0)<0|0?-1:0)<<31,Ra,Qa)|0;Va=H;Wa=Ua}else{Va=X;Wa=ha}Ua=A$(Wa,Va,Ra,Qa)|0;Ta=H;Sa=0;Xa=(Ta|0)<(Sa|0)|(Ta|0)==(Sa|0)&Ua>>>0<65536>>>0;Ua=Xa?Ra:Wa;Sa=Xa?Qa:Va;Ta=Xa?Pa:-1;Ya=Xa?Oa:-1;if(!((c[w>>2]|0)==(Ua|0)&(c[w+4>>2]|0)==(Sa|0))){Xa=c[B>>2]|0;if((Xa|0)==0){J=-128;break a}if((Wk[Xa&63](c[C>>2]|0,Ua,Sa,0)|0)!=0){J=-128;break a}c[w>>2]=Ua;c[w+4>>2]=Sa;KO(s)|0}Xa=h+(ga-1<<5)+8|0;Za=rO(a,d,c[Xa>>2]|0,c[Xa+4>>2]|0)|0;Xa=H;_a=-1;if((Xa|0)<(_a|0)|(Xa|0)==(_a|0)&Za>>>0<-1>>>0){k=54;break e}g:do{if((Za|0)==(-1|0)&(Xa|0)==(-1|0)){$a=Qa;ab=Ra;bb=0;cb=0;db=Ya;eb=Ta;fb=xa;gb=Na;hb=ra;ib=va;jb=Sa;kb=Ua;lb=ga}else{_a=zO(d)|0;mb=yO(d)|0;nb=H;h:do{if(ja){ob=0;while(1){pb=ob+1|0;if((c[za+(ob<<2)>>2]|0)==(_a|0)){break}if((pb|0)<(Aa|0)){ob=pb}else{break h}}ob=(_a|0)==(c[oa>>2]|0);$a=c[w+4>>2]|0;ab=c[w>>2]|0;bb=0;cb=65536;db=ob?nb:Ya;eb=ob?mb:Ta;fb=ob?Xa:xa;gb=ob?Za:Na;hb=ra;ib=va;jb=na;kb=ma;lb=ga;break g}}while(0);if((ga|0)>=64){$a=Qa;ab=Ra;bb=0;cb=0;db=Ya;eb=Ta;fb=xa;gb=Na;hb=Xa;ib=Za;jb=Sa;kb=Ua;lb=ga;break}qa=h+(ga<<5)|0;c[qa>>2]=Ua;c[qa+4>>2]=Sa;qa=h+(ga<<5)+8|0;c[qa>>2]=Za;c[qa+4>>2]=Xa;qa=A$(c[w>>2]|0,c[w+4>>2]|0,Za,Xa)|0;c[h+(ga<<5)+16>>2]=qa;c[h+(ga<<5)+20>>2]=_a;qa=h+(ga<<5)+24|0;c[qa>>2]=mb;c[qa+4>>2]=nb;$a=Qa;ab=Ra;bb=0;cb=0;db=Ya;eb=Ta;fb=xa;gb=Na;hb=Xa;ib=Za;jb=Sa;kb=Ua;lb=ga+1|0}}while(0);Ua=z$(kb,jb,-65536,-1)|0;Sa=H;if((Sa|0)>($a|0)|(Sa|0)==($a|0)&Ua>>>0>ab>>>0){if((lb|0)>0){Ta=0;Ya=Sa;qa=Ua;while(1){ob=h+(Ta<<5)+24|0;pb=c[ob>>2]|0;qb=c[ob+4>>2]|0;ob=0;i:do{if((qb|0)<(ob|0)|(qb|0)==(ob|0)&pb>>>0<0>>>0){rb=Ya;sb=qa}else{tb=2147483647;if((qb|0)>(tb|0)|(qb|0)==(tb|0)&pb>>>0>-48001>>>0){tb=A$(-1,2147483647,pb,qb)|0;ub=47999-tb|0;vb=(ub|0)<0|0?-1:0;wb=ub;xb=-2147483648;yb=0}else{vb=0;wb=48e3;xb=qb;yb=pb}ub=z$(wb,vb,yb,xb)|0;tb=H;zb=h+(Ta<<5)+8|0;Ab=c[zb>>2]|0;Bb=c[zb+4>>2]|0;zb=c[h+(Ta<<5)+20>>2]|0;if((Ta|0)>0){Cb=Ta}else{rb=Ya;sb=qa;break}j:while(1){Db=Cb-1|0;Eb=h+(Db<<5)+24|0;Fb=c[Eb>>2]|0;Gb=c[Eb+4>>2]|0;do{if(!((Gb|0)<(tb|0)|(Gb|0)==(tb|0)&Fb>>>0>>0)){if((c[h+(Db<<5)+20>>2]|0)!=(zb|0)){break}Eb=h+(Db<<5)+8|0;Hb=c[Eb>>2]|0;Ib=c[Eb+4>>2]|0;Eb=A$(Fb,Gb,pb,qb)|0;Jb=H;Kb=G$(Fb,Gb,Eb,Jb)|0;Lb=H;Mb=A$(Hb,Ib,Ab,Bb)|0;Nb=H;Ob=0;if((Lb|0)>(Ob|0)|(Lb|0)==(Ob|0)&Kb>>>0>0>>>0){Ob=A$(Hb,Ib,ab,$a)|0;Pb=G$(Ob,H,Kb,Lb)|0;Ob=H;if((Ob|0)<(Nb|0)|(Ob|0)==(Nb|0)&Pb>>>0>>0){break}}Pb=I$(Kb,Lb,Mb,Nb)|0;Ob=A$(Hb,Ib,Pb,H)|0;Pb=H;Ib=I$(Kb,Lb,Eb,Jb)|0;Lb=A$(Fb,Gb,Ib,H)|0;Ib=H;do{if((Ib|0)<(Jb|0)|(Ib|0)==(Jb|0)&Lb>>>0>>0){Kb=0;if((Ib|0)<(Kb|0)|(Ib|0)==(Kb|0)&Lb>>>0<1>>>0){Qb=0;Rb=0;break}Kb=Eb>>>1|Jb<<31;Hb=Jb>>1|((Jb|0)<0|0?-1:0)<<31;Sb=Ib;Tb=Lb;Ub=0;Vb=0;Wb=0;while(1){Xb=Vb<<1|0>>>31;Yb=Ub<<1|Vb>>>31;Zb=Tb<<1|0>>>31;_b=Sb<<1|Tb>>>31;if((Sb|0)<(Hb|0)|(Sb|0)==(Hb|0)&Tb>>>0>>0){$b=Yb;ac=Xb;bc=_b;cc=Zb}else{dc=A$(Zb,_b,Eb,Jb)|0;$b=Yb|0;ac=Xb|1;bc=H;cc=dc}dc=Wb+1|0;if((dc|0)<63){Sb=bc;Tb=cc;Ub=$b;Vb=ac;Wb=dc}else{break}}Wb=Mb&1;Vb=Nb&0;Ub=Mb>>>1|Nb<<31;Tb=Nb>>1|((Nb|0)<0|0?-1:0)<<31;Sb=$b;Kb=ac;Hb=0;dc=0;Xb=0;while(1){if((Kb&1|0)==0&(Sb&0|0)==0){ec=Hb>>1|((Hb|0)<0|0?-1:0)<<31;fc=dc>>>1|Hb<<31}else{Yb=z$(dc>>>1|Hb<<31,Hb>>1|((Hb|0)<0|0?-1:0)<<31,Ub,Tb)|0;_b=z$(Yb,H,Wb&dc,Vb&Hb)|0;ec=H;fc=_b}_b=Kb>>>1|Sb<<31;Yb=Xb+1|0;if((Yb|0)<63){Sb=Sb>>1|((Sb|0)<0|0?-1:0)<<31;Kb=_b;Hb=ec;dc=fc;Xb=Yb}else{Qb=ec;Rb=fc;break}}}else{Qb=Nb;Rb=Mb}}while(0);Mb=A$(cb,bb,Rb,Qb)|0;gc=z$(Mb,H,Ob,Pb)|0;hc=H;if(!((hc|0)<($a|0)|(hc|0)==($a|0)&gc>>>0>>0)){break j}}}while(0);if((Db|0)>0){Cb=Db}else{rb=Ya;sb=qa;break i}}Bb=(Ya|0)<(hc|0)|(Ya|0)==(hc|0)&qa>>>0>>0;rb=Bb?Ya:hc;sb=Bb?qa:gc}}while(0);qb=Ta+1|0;if((qb|0)<(lb|0)){Ta=qb;Ya=rb;qa=sb}else{ic=rb;jc=sb;break}}}else{ic=Sa;jc=Ua}qa=(ic|0)>=(Sa|0)&((ic|0)>(Sa|0)|jc>>>0>=Ua>>>0);kc=qa?-1:ic;lc=qa?-1:jc}else{kc=-1;lc=-1}if(($a|0)<(jb|0)|($a|0)==(jb|0)&ab>>>0>>0){ga=lb;na=jb;ma=kb;X=kc;ha=lc;ra=hb;va=ib;xa=fb;Na=gb;Oa=db;Pa=eb;Qa=$a;Ra=ab}else{mc=lb;nc=hb;oc=ib;pc=Xa;qc=Za;rc=fb;sc=gb;tc=db;uc=eb;vc=S;break}}}else{mc=Da;nc=ia;oc=L;pc=-1;qc=-1;rc=Ja;sc=Ka;tc=Ha;uc=Ia;vc=R-1|0}S=Ba+(vc*352|0)+24|0;if((c[S>>2]|0)==(-1|0)&(c[S+4>>2]|0)==(-1|0)){S=(uc|0)==(-1|0)&(tc|0)==(-1|0);Ra=S?oc:sc;Qa=S?nc:rc;Pa=wO(a,za,Aa,Ba+(vc*352|0)|0,Ra,Qa,c[Ba+(vc*352|0)+40>>2]|0,uc,tc,e)|0;if((Pa|0)<0){J=Pa;break a}else{wc=Qa;xc=Ra;yc=S?-1:pc;zc=S?-1:qc}}else{wc=rc;xc=sc;yc=pc;zc=qc}S=(zc|0)!=(oc|0)|(yc|0)!=(nc|0);do{if(S){if((c[w>>2]|0)==(oc|0)&(c[w+4>>2]|0)==(nc|0)){break}Ra=c[B>>2]|0;if((Ra|0)==0){J=-128;break a}if((Wk[Ra&63](c[C>>2]|0,oc,nc,0)|0)!=0){J=-128;break a}c[w>>2]=oc;c[w+4>>2]=nc;KO(s)|0}}while(0);L=Ba+(R*352|0)|0;ia=sO(a,Ba+(R*352|0)+44|0,Ba+(R*352|0)+332|0,K,P,fa,S?0:d)|0;if((ia|0)<0){J=ia;break a}ia=L|0;c[ia>>2]=oc;c[ia+4>>2]=nc;ia=c[w+4>>2]|0;Ra=Ba+(R*352|0)+8|0;c[Ra>>2]=c[w>>2];c[Ra+4>>2]=ia;c[Ba+(R*352|0)+40>>2]=c[ca>>2];ia=Ba+(R*352|0)+24|0;c[ia>>2]=-1;c[ia+4>>2]=-1;ia=tO(a,L,0)|0;if((ia|0)<0){J=ia;break a}ia=c[w>>2]|0;L=c[w+4>>2]|0;Ra=R+1|0;c[ea>>2]=Ra;ba=L;aa=ia;$=Ba;R=Ra;_=Ca;da=wc;Z=xc;Y=mc}if((k|0)==54){J=Za;break}Y=R-1|0;Z=Ba+(Y*352|0)+24|0;if((c[Z>>2]|0)==(-1|0)&(c[Z+4>>2]|0)==(-1|0)){Z=wO(a,za,Aa,Ba+(Y*352|0)|0,c[T>>2]|0,c[T+4>>2]|0,c[U>>2]|0,c[W>>2]|0,c[W+4>>2]|0,e)|0;if((Z|0)<0){J=Z;break}}Z=Y_(Ba,R*352|0)|0;if((Z|0)!=0){c[I>>2]=Z}W_(c[K>>2]|0);c[K>>2]=0;c[P>>2]=0;c[fa>>2]=0;J=0}}while(0);BO(u)|0;FO(s)|0;c[t>>2]=c[l>>2];c[t+4>>2]=c[l+4>>2];c[t+8>>2]=c[l+8>>2];c[t+12>>2]=c[l+12>>2];c[t+16>>2]=c[l+16>>2];c[t+20>>2]=c[l+20>>2];c[t+24>>2]=c[l+24>>2];m$(v|0,m|0,360)|0;c[w>>2]=x;c[w+4>>2]=y;c[n>>2]=o;m$(z|0,q|0,p)|0;W_(q);F=c[I>>2]|0;A=F+32|0;D=c[A+4>>2]|0;E=a+104|0;c[E>>2]=c[A>>2];c[E+4>>2]=D;c[a+100>>2]=c[F+52>>2];if((J|0)<0){r=J;break}F=c[B>>2]|0;D=c[C>>2]|0;E=c[a+72>>2]|0;A=c[a+76>>2]|0;G=z$(E,(E|0)<0|0?-1:0,c[w>>2]|0,c[w+4>>2]|0)|0;E=A$(G,H,A,(A|0)<0|0?-1:0)|0;A=(Wk[F&63](D,E,H,0)|0)>>31&-128;if((A|0)>-1){k=106}else{r=A}}}while(0);do{if((k|0)==106){c[j>>2]=3;J=uO(a)|0;if((J|0)>-1){Ac=0}else{r=J;break}i=b;return Ac|0}}while(0);c[a+12>>2]=0;iO(a);Ac=r;i=b;return Ac|0}function hO(a){a=a|0;if((a|0)==0){return}iO(a);W_(a);return}function iO(a){a=a|0;var b=0,d=0,e=0;W_(c[a+8680>>2]|0);b=c[a+8656>>2]|0;if((b|0)!=0){mM(b)}b=c[a+28>>2]|0;do{if((c[a+20>>2]|0)==0){d=c[a+92>>2]|0;if(!((d|0)>2|(d|0)==1)){break}bO(b+332|0)}else{if((b|0)==0){break}d=c[a+24>>2]|0;if((d|0)>0){e=0}else{break}do{bO(b+(e*352|0)+332|0);e=e+1|0;}while((e|0)<(d|0))}}while(0);W_(b);W_(c[a+40>>2]|0);BO(a+128|0)|0;FO(a+64|0)|0;b=c[a+12>>2]|0;if((b|0)==0){return}jk[b&255](c[a+16>>2]|0)|0;return}function jO(a){a=a|0;return c[a+20>>2]|0}function kO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a+24>>2]|0;e=(c[a+20>>2]|0)==0?0:(d|0)>(b|0)?b:d-1|0;if((e|0)<0){f=c[a+96>>2]|0}else{f=e}return(c[a+28>>2]|0)+(f*352|0)+44|0}function lO(a,b){a=a|0;b=b|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;d=c[a+24>>2]|0;if((c[a+92>>2]|0)<2){e=-1;f=-131;return(H=e,f)|0}if(!((c[a+20>>2]|0)!=0&(d|0)>(b|0))){e=-1;f=-131;return(H=e,f)|0}g=c[a+28>>2]|0;if((b|0)>=0){a=g+(b*352|0)+24|0;h=c[a>>2]|0;i=c[a+4>>2]|0;a=g+(b*352|0)+32|0;j=c[a>>2]|0;k=c[a+4>>2]|0;a=k^i;l=0;do{if((a|0)<(l|0)|(a|0)==(l|0)&(j^h)>>>0<0>>>0){m=0;if((i|0)<(m|0)|(i|0)==(m|0)&h>>>0<0>>>0){m=A$(0,-2147483648,h,i)|0;n=H;o=A$(-1,2147483647,j,k)|0;p=H;q=z$(m,n,-2,2147483647)|0;r=H;if((r|0)<(p|0)|(r|0)==(p|0)&q>>>0>>0){s=0;t=0;break}q=A$(1,0,m,n)|0;n=z$(q,H,o,p)|0;s=H;t=n;break}else{n=h^0;p=i^-2147483648;if((p|0)<(k|0)|(p|0)==(k|0)&n>>>0>>0){s=0;t=0;break}o=A$(0,0,j,k)|0;q=z$(o^0,H^-2147483648,n,p)|0;s=H;t=q;break}}else{q=A$(h,i,j,k)|0;s=H;t=q}}while(0);k=A$(t,s,c[g+(b*352|0)+52>>2]|0,0)|0;e=H;f=k;return(H=e,f)|0}if((d|0)>0){u=0;v=0;w=0;x=0;y=0}else{e=0;f=0;return(H=e,f)|0}while(1){k=g+(y*352|0)+24|0;b=c[k>>2]|0;s=c[k+4>>2]|0;k=g+(y*352|0)+32|0;t=c[k>>2]|0;j=c[k+4>>2]|0;k=j^s;i=0;do{if((k|0)<(i|0)|(k|0)==(i|0)&(t^b)>>>0<0>>>0){h=0;if((s|0)<(h|0)|(s|0)==(h|0)&b>>>0<0>>>0){h=A$(0,-2147483648,b,s)|0;l=H;a=A$(-1,2147483647,t,j)|0;q=H;p=z$(h,l,-2,2147483647)|0;n=H;if((n|0)<(q|0)|(n|0)==(q|0)&p>>>0>>0){z=u;A=v;break}p=A$(1,0,h,l)|0;l=z$(p,H,a,q)|0;z=H;A=l;break}else{l=b^0;q=s^-2147483648;if((q|0)<(j|0)|(q|0)==(j|0)&l>>>0>>0){z=u;A=v;break}a=A$(0,0,t,j)|0;p=z$(a^0,H^-2147483648,l,q)|0;z=H;A=p;break}}else{p=A$(b,s,t,j)|0;z=H;A=p}}while(0);j=c[g+(y*352|0)+52>>2]|0;t=z$(A,z,x,w)|0;s=A$(t,H,j,0)|0;j=H;t=y+1|0;if((t|0)<(d|0)){u=z;v=A;w=j;x=s;y=t}else{e=j;f=s;break}}return(H=e,f)|0}function mO(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=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,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,_=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,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,db=0,eb=0,fb=0;h=i;i=i+1040|0;j=h|0;k=h+16|0;l=a+92|0;do{if((c[l>>2]|0)>3){if((c[a+8648>>2]|0)<(c[a+8652>>2]|0)){m=1}else{break}i=h;return m|0}}while(0);n=a+20|0;o=a+28|0;p=c[o>>2]|0;q=(c[n>>2]|0)!=0;r=a+96|0;if(q){s=c[r>>2]|0}else{s=0}t=a+56|0;u=(f|0)==0;f=a+8652|0;v=a+8688|0;w=a+104|0;x=j+4|0;y=a+112|0;z=a+24|0;A=j;B=p+44|0;C=p+332|0;D=a+464|0;E=a+128|0;F=a+100|0;G=k|0;I=b;b=e;e=d;d=g;g=c[p+(s*352|0)+40>>2]|0;J=s;a:while(1){s=I;K=b;L=e;M=g;b:while(1){N=s;O=K;P=L;c:while(1){if((N|0)==0){Q=rO(a,j,c[t>>2]|0,c[t+4>>2]|0)|0;R=H;S=Q}else{Q=N;c[A>>2]=c[Q>>2];c[A+4>>2]=c[Q+4>>2];c[A+8>>2]=c[Q+8>>2];c[A+12>>2]=c[Q+12>>2];R=O;S=P}Q=0;if((R|0)<(Q|0)|(R|0)==(Q|0)&S>>>0<0>>>0){T=12;break a}do{if((c[l>>2]|0)>2){if((M|0)==(zO(j)|0)){T=21;break}if((xO(j)|0)==0){T=22;break}if(u){m=-2;T=146;break a}Q=c[l>>2]|0;if((Q|0)<=3){U=Q;T=23;break}c[f>>2]=0;c[v>>2]=0;c[w>>2]=-1;c[w+4>>2]=-1;if((c[n>>2]|0)==0){bO((c[o>>2]|0)+332|0)}c[l>>2]=2}else{T=21}}while(0);if((T|0)==21){T=0;Q=c[x>>2]|0;V=z$(c[y>>2]|0,c[y+4>>2]|0,Q,(Q|0)<0|0?-1:0)|0;c[y>>2]=V;c[y+4>>2]=H;T=22}if((T|0)==22){T=0;U=c[l>>2]|0;T=23}if((T|0)==23){T=0;if((U|0)>=3){T=35;break b}}if(!q){break}W=zO(j)|0;V=c[z>>2]|0;if((V|0)>0){X=0}else{N=0;O=R;P=S;continue}while(1){Q=X+1|0;if((c[p+(X*352|0)+40>>2]|0)==(W|0)){T=28;break b}if((Q|0)<(V|0)){X=Q}else{N=0;O=R;P=S;continue c}}}do{P=sO(a,B,C,0,0,0,j)|0;if((P|0)<0){m=P;T=146;break a}P=tO(a,p,j)|0;if((P|0)<0){m=P;T=146;break a}Y=c[D>>2]|0;c[(c[o>>2]|0)+40>>2]=Y;c[r>>2]=(c[r>>2]|0)+1;}while((P|0)>0);if((c[f>>2]|0)<1){s=0;K=R;L=S;M=Y}else{T=34;break a}}do{if((T|0)==28){T=0;c[r>>2]=X;LO(E,W)|0;c[l>>2]=3;L=p+(X*352|0)+8|0;K=c[L+4>>2]|0;if((R|0)>(K|0)|(R|0)==(K|0)&S>>>0>(c[L>>2]|0)>>>0){Z=X;_=W;$=d;T=36;break}L=p+(X*352|0)+32|0;K=c[L+4>>2]|0;c[w>>2]=c[L>>2];c[w+4>>2]=K;c[F>>2]=c[p+(X*352|0)+52>>2];Z=X;_=W;$=1;T=36}else if((T|0)==35){T=0;if((U|0)==3){Z=J;_=M;$=d;T=36}else{aa=J;ba=M;ca=d}}}while(0);if((T|0)==36){T=0;M=uO(a)|0;if((M|0)<0){m=M;T=146;break}else{aa=Z;ba=_;ca=$}}JO(E,j)|0;if((c[l>>2]|0)<=3){I=0;b=R;e=S;d=ca;g=ba;J=aa;continue}M=vO(a,G)|0;if((M|0)<0){K=vO(a,G)|0;if((ca|0)==0){m=-3;T=146;break}else{da=K}}else{da=M}M=-da|0;K=c[f>>2]|0;if((K|0)<=0){I=0;b=R;e=S;d=ca;g=ba;J=aa;continue}L=K-1|0;s=a+488+(L<<5)+16|0;P=c[s>>2]|0;O=c[s+4>>2]|0;s=c[a+488+(L<<5)+12>>2]|0;L=c[w>>2]|0;N=c[w+4>>2]|0;if((L|0)==(-1|0)&(N|0)==(-1|0)){if((s|0)!=0){c[f>>2]=0;I=0;b=R;e=S;d=ca;g=ba;J=aa;continue}V=p+(aa*352|0)+32|0;Q=c[V>>2]|0;ea=c[V+4>>2]|0;d:do{if((P|0)==(-1|0)&(O|0)==(-1|0)){fa=ea;ga=Q}else{do{if((da|0)<0){V=0;if((O|0)<(V|0)|(O|0)==(V|0)&P>>>0<0>>>0){V=da-1|0;ha=(V|0)<0|0?-1:0;if(!((ha|0)>(O|0)|(ha|0)==(O|0)&V>>>0>P>>>0)){fa=ea;ga=Q;break d}}V=A$(-1,2147483647,M,(M|0)<0|0?-1:0)|0;ha=H;if(!((ha|0)<(O|0)|(ha|0)==(O|0)&V>>>0

>>0)){ia=M;ja=O;ka=P;break}V=A$(-1,2147483647,P,O)|0;ia=~da-V|0;ja=-2147483648;ka=0}else{if((da|0)<=0){ia=0;ja=O;ka=P;break}V=-1;if((O|0)>(V|0)|(O|0)==(V|0)&P>>>0>-1>>>0){V=(da|0)<0|0?-1:0;if((V|0)>(O|0)|(V|0)==(O|0)&da>>>0>P>>>0){fa=ea;ga=Q;break d}}V=A$(0,-2147483648,M,(M|0)<0|0?-1:0)|0;ha=H;if(!((ha|0)>(O|0)|(ha|0)==(O|0)&V>>>0>P>>>0)){ia=M;ja=O;ka=P;break}ia=1-da+P|0;ja=2147483647;ka=-1}}while(0);V=z$(ia,(ia|0)<0|0?-1:0,ka,ja)|0;fa=H;ga=V}}while(0);V=ea^fa;ha=0;do{if((V|0)<(ha|0)|(V|0)==(ha|0)&(Q^ga)>>>0<0>>>0){la=0;if((fa|0)<(la|0)|(fa|0)==(la|0)&ga>>>0<0>>>0){la=A$(0,-2147483648,ga,fa)|0;ma=H;na=A$(-1,2147483647,Q,ea)|0;oa=H;pa=z$(la,ma,-2,2147483647)|0;qa=H;if((qa|0)<(oa|0)|(qa|0)==(oa|0)&pa>>>0>>0){ra=3840;break}pa=A$(1,0,la,ma)|0;ma=z$(pa,H,na,oa)|0;sa=H;ta=ma;T=63;break}else{ma=ga^0;oa=fa^-2147483648;if((oa|0)<(ea|0)|(oa|0)==(ea|0)&ma>>>0>>0){ra=3840;break}na=A$(0,0,Q,ea)|0;pa=z$(na^0,H^-2147483648,ma,oa)|0;sa=H;ta=pa;T=63;break}}else{pa=A$(ga,fa,Q,ea)|0;sa=H;ta=pa;T=63}}while(0);do{if((T|0)==63){T=0;ea=c[p+(aa*352|0)+52>>2]|0;Q=-1;if(!((sa|0)>(Q|0)|(sa|0)==(Q|0)&ta>>>0>-1>>>0)){ra=3840;break}Q=ea-3840|0;ha=(Q|0)<0;V=ha?0:(Q|0)<0|0?-1:0;if((sa|0)>(V|0)|(sa|0)==(V|0)&ta>>>0>(ha?0:Q)>>>0){ra=3840;break}ra=ea-ta|0}}while(0);c[F>>2]=ra;ua=fa;va=ga}else{ua=N;va=L}do{if((P|0)==(-1|0)&(O|0)==(-1|0)){do{if((da|0)>0){ea=0;if((ua|0)<(ea|0)|(ua|0)==(ea|0)&va>>>0<0>>>0){ea=~da;Q=(ea|0)<0|0?-1:0;if(!((Q|0)>(ua|0)|(Q|0)==(ua|0)&ea>>>0>va>>>0)){T=79;break}}ea=A$(-1,2147483647,da,(da|0)<0|0?-1:0)|0;Q=H;if(!((Q|0)<(ua|0)|(Q|0)==(ua|0)&ea>>>0>>0)){wa=da;xa=ua;ya=va;T=78;break}ea=A$(-1,2147483647,va,ua)|0;wa=da-1-ea|0;xa=-2147483648;ya=0;T=78}else{if((da|0)>=0){wa=0;xa=ua;ya=va;T=78;break}ea=-1;if((ua|0)>(ea|0)|(ua|0)==(ea|0)&va>>>0>-1>>>0){ea=(M|0)<0|0?-1:0;if((ea|0)>(ua|0)|(ea|0)==(ua|0)&M>>>0>va>>>0){T=79;break}}ea=A$(0,-2147483648,da,(da|0)<0|0?-1:0)|0;Q=H;if(!((Q|0)>(ua|0)|(Q|0)==(ua|0)&ea>>>0>va>>>0)){wa=da;xa=ua;ya=va;T=78;break}wa=da+1+va|0;xa=2147483647;ya=-1;T=78}}while(0);if((T|0)==78){T=0;ea=z$(wa,(wa|0)<0|0?-1:0,ya,xa)|0;za=H;Aa=ea;break}else if((T|0)==79){T=0;ea=p+(aa*352|0)+24|0;za=c[ea+4>>2]|0;Aa=c[ea>>2]|0;break}}else{za=O;Aa=P}}while(0);e:do{if((s|0)==0){T=111}else{P=za^ua;O=0;do{if((P|0)<(O|0)|(P|0)==(O|0)&(Aa^va)>>>0<0>>>0){L=0;if((za|0)<(L|0)|(za|0)==(L|0)&Aa>>>0<0>>>0){L=A$(0,-2147483648,Aa,za)|0;N=H;ea=A$(-1,2147483647,va,ua)|0;Q=H;ha=z$(L,N,-2,2147483647)|0;V=H;if((V|0)<(Q|0)|(V|0)==(Q|0)&ha>>>0>>0){T=111;break e}ha=z$(ea,Q,1,0)|0;Q=A$(ha,H,L,N)|0;Ba=H;Ca=Q;break}else{Q=Aa^0;N=za^-2147483648;if((N|0)<(ua|0)|(N|0)==(ua|0)&Q>>>0>>0){T=111;break e}L=A$(0,0,va,ua)|0;ha=z$(Q,N,L^0,H^-2147483648)|0;Ba=H;Ca=ha;break}}else{ha=A$(Aa,za,va,ua)|0;Ba=H;Ca=ha}}while(0);O=(da|0)<0|0?-1:0;if(!((Ba|0)<(O|0)|(Ba|0)==(O|0)&Ca>>>0>>0)){T=111;break}O=0;P=(za|0)<(O|0)|(za|0)==(O|0)&Aa>>>0<0>>>0;O=A$(0,-2147483648,Aa,za)|0;ha=H;L=z$(O,ha,-2,2147483647)|0;N=H;Q=A$(1,0,O,ha)|0;ha=H;O=Aa^0;ea=za^-2147483648;V=Ba;pa=Ca;oa=ua;ma=va;na=0;while(1){la=c[k+(na<<2)>>2]|0;qa=la;Da=(la|0)<0|0?-1:0;Ea=A$(qa,Da,pa,V)|0;Fa=H;Ga=0;f:do{if((Fa|0)>(Ga|0)|(Fa|0)==(Ga|0)&Ea>>>0>0>>>0){Ha=0;if((V|0)<(Ha|0)|(V|0)==(Ha|0)&pa>>>0<0>>>0){Ia=na;Ja=ua;Ka=va;break e}c[a+488+(na<<5)+12>>2]=1;La=za;Ma=Aa}else{do{if((la|0)>0){Ha=0;if((oa|0)<(Ha|0)|(oa|0)==(Ha|0)&ma>>>0<0>>>0){Ha=~la;Na=(Ha|0)<0|0?-1:0;if(!((Na|0)>(oa|0)|(Na|0)==(oa|0)&Ha>>>0>ma>>>0)){La=oa;Ma=ma;break f}}Ha=A$(-1,2147483647,qa,Da)|0;Na=H;if(!((Na|0)<(oa|0)|(Na|0)==(oa|0)&Ha>>>0>>0)){Oa=la;Pa=oa;Qa=ma;break}Ha=A$(-1,2147483647,ma,oa)|0;Oa=la+~Ha|0;Pa=-2147483648;Qa=0}else{if((la|0)>=0){Oa=0;Pa=oa;Qa=ma;break}Ha=-1;if((oa|0)>(Ha|0)|(oa|0)==(Ha|0)&ma>>>0>-1>>>0){Ha=-la|0;Na=(Ha|0)<0|0?-1:0;if((Na|0)>(oa|0)|(Na|0)==(oa|0)&Ha>>>0>ma>>>0){La=oa;Ma=ma;break f}}Ha=A$(0,-2147483648,qa,Da)|0;Na=H;if(!((Na|0)>(oa|0)|(Na|0)==(oa|0)&Ha>>>0>ma>>>0)){Oa=la;Pa=oa;Qa=ma;break}Oa=ma+1+la|0;Pa=2147483647;Qa=-1}}while(0);Ha=z$(Oa,(Oa|0)<0|0?-1:0,Qa,Pa)|0;La=H;Ma=Ha}}while(0);la=a+488+(na<<5)+16|0;c[la>>2]=Ma;c[la+4>>2]=La;la=La^za;Da=0;do{if((la|0)<(Da|0)|(la|0)==(Da|0)&(Ma^Aa)>>>0<0>>>0){if(P){qa=A$(-1,2147483647,Ma,La)|0;Ga=H;Ha=(N|0)<(Ga|0)|(N|0)==(Ga|0)&L>>>0>>0;Na=z$(Q,ha,qa,Ga)|0;Ra=Ha?Fa:H;Sa=Ha?Ea:Na;break}if((ea|0)<(La|0)|(ea|0)==(La|0)&O>>>0>>0){Ra=Fa;Sa=Ea;break}Na=A$(0,0,Ma,La)|0;Ha=z$(Na^0,H^-2147483648,O,ea)|0;Ra=H;Sa=Ha}else{Ha=A$(Aa,za,Ma,La)|0;Ra=H;Sa=Ha}}while(0);Ea=na+1|0;if((Ea|0)<(K|0)){V=Ra;pa=Sa;oa=La;ma=Ma;na=Ea}else{Ia=Ea;Ja=ua;Ka=va;break}}}}while(0);if((T|0)==111){T=0;do{if((da|0)<0){s=0;if((za|0)<(s|0)|(za|0)==(s|0)&Aa>>>0<0>>>0){s=da-1|0;na=(s|0)<0|0?-1:0;if(!((na|0)>(za|0)|(na|0)==(za|0)&s>>>0>Aa>>>0)){Ta=0;Ua=0;break}}s=A$(-1,2147483647,M,(M|0)<0|0?-1:0)|0;na=H;if(!((na|0)<(za|0)|(na|0)==(za|0)&s>>>0>>0)){Va=M;Wa=za;Xa=Aa;T=121;break}s=A$(-1,2147483647,Aa,za)|0;Va=~da-s|0;Wa=-2147483648;Xa=0;T=121}else{if((da|0)<=0){Va=0;Wa=za;Xa=Aa;T=121;break}s=-1;if((za|0)>(s|0)|(za|0)==(s|0)&Aa>>>0>-1>>>0){s=(da|0)<0|0?-1:0;if((s|0)>(za|0)|(s|0)==(za|0)&da>>>0>Aa>>>0){Ta=0;Ua=0;break}}s=A$(0,-2147483648,M,(M|0)<0|0?-1:0)|0;na=H;if(!((na|0)>(za|0)|(na|0)==(za|0)&s>>>0>Aa>>>0)){Va=M;Wa=za;Xa=Aa;T=121;break}Va=1-da+Aa|0;Wa=2147483647;Xa=-1;T=121}}while(0);if((T|0)==121){T=0;M=z$(Va,(Va|0)<0|0?-1:0,Xa,Wa)|0;Ta=H;Ua=M}M=0;s=(za|0)<(M|0)|(za|0)==(M|0)&Aa>>>0<0>>>0;M=A$(-1,2147483647,Aa,za)|0;na=M;M=-1;ma=(za|0)>(M|0)|(za|0)==(M|0)&Aa>>>0>-1>>>0;M=Aa+1|0;oa=0;pa=da;while(1){V=-pa|0;do{if((pa|0)<0){if(s){ea=pa-1|0;O=(ea|0)<0|0?-1:0;if(!((O|0)>(za|0)|(O|0)==(za|0)&ea>>>0>Aa>>>0)){Ya=0;Za=0;break}}ea=A$(-1,2147483647,V,(V|0)<0|0?-1:0)|0;O=H;if(!((O|0)<(za|0)|(O|0)==(za|0)&ea>>>0>>0)){_a=V;$a=za;ab=Aa;T=132;break}_a=~pa-na|0;$a=-2147483648;ab=0;T=132}else{if((pa|0)<=0){_a=0;$a=za;ab=Aa;T=132;break}if(ma){ea=(pa|0)<0|0?-1:0;if((ea|0)>(za|0)|(ea|0)==(za|0)&pa>>>0>Aa>>>0){Ya=0;Za=0;break}}ea=A$(0,-2147483648,V,(V|0)<0|0?-1:0)|0;O=H;ha=(O|0)>(za|0)|(O|0)==(za|0)&ea>>>0>Aa>>>0;_a=ha?M-pa|0:V;$a=ha?2147483647:za;ab=ha?-1:Aa;T=132}}while(0);if((T|0)==132){T=0;V=z$(_a,(_a|0)<0|0?-1:0,ab,$a)|0;Ya=H;Za=V}V=c[k+(oa<<2)>>2]|0;ha=pa-V|0;do{if((V|0)>0){ea=0;if((Ya|0)<(ea|0)|(Ya|0)==(ea|0)&Za>>>0<0>>>0){ea=~V;O=(ea|0)<0|0?-1:0;if(!((O|0)>(Ya|0)|(O|0)==(Ya|0)&ea>>>0>Za>>>0)){bb=Ya;cb=Za;break}}ea=A$(-1,2147483647,V,(V|0)<0|0?-1:0)|0;O=H;if(!((O|0)<(Ya|0)|(O|0)==(Ya|0)&ea>>>0>>0)){db=V;eb=Ya;fb=Za;T=143;break}ea=A$(-1,2147483647,Za,Ya)|0;db=V-1-ea|0;eb=-2147483648;fb=0;T=143}else{if((V|0)>=0){db=0;eb=Ya;fb=Za;T=143;break}ea=-1;if((Ya|0)>(ea|0)|(Ya|0)==(ea|0)&Za>>>0>-1>>>0){ea=-V|0;O=(ea|0)<0|0?-1:0;if((O|0)>(Ya|0)|(O|0)==(Ya|0)&ea>>>0>Za>>>0){bb=Ya;cb=Za;break}}ea=A$(0,-2147483648,V,(V|0)<0|0?-1:0)|0;O=H;if(!((O|0)>(Ya|0)|(O|0)==(Ya|0)&ea>>>0>Za>>>0)){db=V;eb=Ya;fb=Za;T=143;break}db=Za+1+V|0;eb=2147483647;fb=-1;T=143}}while(0);if((T|0)==143){T=0;V=z$(db,(db|0)<0|0?-1:0,fb,eb)|0;bb=H;cb=V}V=a+488+(oa<<5)+16|0;c[V>>2]=cb;c[V+4>>2]=bb;V=oa+1|0;if((V|0)<(K|0)){oa=V;pa=ha}else{Ia=K;Ja=Ta;Ka=Ua;break}}}c[w>>2]=Ka;c[w+4>>2]=Ja;c[f>>2]=Ia;if((Ia|0)>0){m=1;T=146;break}else{I=0;b=R;e=S;d=ca;g=ba;J=aa}}if((T|0)==12){aa=-1;m=(R|0)<(aa|0)|(R|0)==(aa|0)&S>>>0<-1>>>0?S:-2;i=h;return m|0}else if((T|0)==34){S=uO(a)|0;m=(S|0)<0?S:1;i=h;return m|0}else if((T|0)==146){i=h;return m|0}return 0}function nO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=oO(a,0,0,e)|0;if(!((f|0)>-1)){g=f;return g|0}if((c[a+92>>2]|0)<=3){g=f;return g|0}f=a+8684|0;e=c[f>>2]|0;h=(c[a+8688>>2]|0)-e|0;if((h|0)<=0){g=h;return g|0}if((c[a+20>>2]|0)==0){i=0}else{i=c[a+96>>2]|0}j=c[(c[a+28>>2]|0)+(i*352|0)+48>>2]|0;i=(c[a+8680>>2]|0)+((da(j,e)|0)<<2)|0;if((da(j,h)|0)>(d|0)){k=(d|0)/(j|0)|0}else{k=h}pO(a,b,i,k,j);c[f>>2]=k+e;g=k;return g|0}function oO(a,b,d,e){a=a|0;b=b|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,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,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,_=0,$=0,aa=0,ba=0;f=a+92|0;g=c[f>>2]|0;if((g|0)<2){h=-131;return h|0}i=a+20|0;j=a+28|0;k=a+8684|0;l=a+8688|0;m=a+8648|0;n=a+8652|0;o=a+100|0;p=a+104|0;q=a+8680|0;r=a+24|0;s=a+8656|0;t=a+112|0;u=a+120|0;v=b;w=a+96|0;x=g;a:while(1){do{if((x|0)>3){if((c[i>>2]|0)==0){y=0}else{y=c[w>>2]|0}z=c[(c[j>>2]|0)+(y*352|0)+48>>2]|0;A=c[k>>2]|0;B=(c[l>>2]|0)-A|0;if((B|0)>0){C=8;break a}g=c[m>>2]|0;if((g|0)>=(c[n>>2]|0)){C=45;break}c[m>>2]=g+1;D=c[o>>2]|0;E=a+488+(g<<5)|0;F=c[E>>2]|0;G=a+488+(g<<5)+4|0;I=fM(F,c[G>>2]|0)|0;if((I|0)<0){J=-136}else{K=da(dM(F,48e3)|0,I)|0;J=(K|0)>5760?-136:K}K=a+488+(g<<5)+16|0;I=c[K>>2]|0;F=c[K+4>>2]|0;b:do{if((c[a+488+(g<<5)+12>>2]|0)==0){L=J}else{K=c[p>>2]|0;M=c[p+4>>2]|0;N=0;O=(F|0)<(N|0)|(F|0)==(N|0)&I>>>0<0>>>0;if(O){N=-1;if(!((M|0)>(N|0)|(M|0)==(N|0)&K>>>0>-1>>>0)){C=19}}else{N=0;if((M|0)<(N|0)|(M|0)==(N|0)&K>>>0<0>>>0){L=0;break}else{C=19}}if((C|0)==19){C=0;if(((((F|0)>(M|0)|(F|0)==(M|0)&I>>>0>K>>>0)&1)-(((M|0)>(F|0)|(M|0)==(F|0)&K>>>0>I>>>0)&1)|0)<1){L=0;break}}N=M^F;P=0;do{if((N|0)<(P|0)|(N|0)==(P|0)&(K^I)>>>0<0>>>0){if(O){Q=A$(0,-2147483648,I,F)|0;R=H;S=A$(-1,2147483647,K,M)|0;T=H;U=z$(Q,R,-2,2147483647)|0;V=H;if((V|0)<(T|0)|(V|0)==(T|0)&U>>>0>>0){L=J;break b}U=A$(1,0,Q,R)|0;R=z$(U,H,S,T)|0;W=H;X=R;break}else{R=I^0;T=F^-2147483648;if((T|0)<(M|0)|(T|0)==(M|0)&R>>>0>>0){L=J;break b}S=A$(0,0,K,M)|0;U=z$(S^0,H^-2147483648,R,T)|0;W=H;X=U;break}}else{U=A$(I,F,K,M)|0;W=H;X=U}}while(0);M=(J|0)<0|0?-1:0;L=(W|0)<(M|0)|(W|0)==(M|0)&X>>>0>>0?X:J}}while(0);c[p>>2]=I;c[p+4>>2]=F;if((da(J,z)|0)<=(d|0)){if((jM(c[s>>2]|0,c[E>>2]|0,c[G>>2]|0,b,(d|0)/(z|0)|0,0)|0)<0){h=-136;C=49;break a}if((L|0)<=0){C=45;break}g=(L|0)<(D|0)?L:D;c[o>>2]=D-g;if((g|0)>0&(g|0)<(L|0)){M=L-g|0;s$(v|0,b+((da(g,z)|0)<<2)|0,da(z<<2,M)|0)|0;Y=M}else{Y=L-g|0}g=c[G>>2]|0;M=z$(c[t>>2]|0,c[t+4>>2]|0,g,(g|0)<0|0?-1:0)|0;c[t>>2]=M;c[t+4>>2]=H;M=z$(c[u>>2]|0,c[u+4>>2]|0,Y,(Y|0)<0|0?-1:0)|0;c[u>>2]=M;c[u+4>>2]=H;if((Y|0)>0){C=43;break a}else{C=45;break}}M=c[q>>2]|0;if((M|0)==0){do{if((c[i>>2]|0)==0){Z=184320}else{g=c[j>>2]|0;K=c[r>>2]|0;if((K|0)>0){_=1;$=0}else{Z=23040;break}do{O=c[g+($*352|0)+48>>2]|0;_=(_|0)>(O|0)?_:O;$=$+1|0;}while(($|0)<(K|0));Z=_*23040|0}}while(0);F=V_(Z)|0;I=F;c[q>>2]=I;K=(F|0)==0;if(K){h=K?-129:0;C=49;break a}else{aa=I}}else{aa=M}if((jM(c[s>>2]|0,c[E>>2]|0,c[G>>2]|0,aa,5760,0)|0)<0){h=-136;C=49;break a}I=(L|0)<(D|0)?L:D;c[o>>2]=D-I;c[k>>2]=I;c[l>>2]=L;K=c[G>>2]|0;F=z$(c[t>>2]|0,c[t+4>>2]|0,K,(K|0)<0|0?-1:0)|0;c[t>>2]=F;c[t+4>>2]=H;F=L-I|0;K=z$(c[u>>2]|0,c[u+4>>2]|0,F,(F|0)<0|0?-1:0)|0;c[u>>2]=K;c[u+4>>2]=H;if((I|0)>=(L|0)){C=45}}else{C=45}}while(0);if((C|0)==45){C=0;I=mO(a,0,-1,-1,1,0)|0;if((I|0)==-2){C=46;break}if((I|0)<0){h=I;C=49;break}}x=c[f>>2]|0}if((C|0)==8){if((da(B,z)|0)>(d|0)){ba=(d|0)/(z|0)|0}else{ba=B}m$(v|0,(c[q>>2]|0)+((da(A,z)|0)<<2)|0,da(z<<2,ba)|0)|0;c[k>>2]=ba+A;if((e|0)==0){h=ba;return h|0}c[e>>2]=c[w>>2];h=ba;return h|0}else if((C|0)==43){if((e|0)==0){h=Y;return h|0}c[e>>2]=c[w>>2];h=Y;return h|0}else if((C|0)==46){if((e|0)==0){h=0;return h|0}c[e>>2]=c[w>>2];h=0;return h|0}else if((C|0)==49){return h|0}return 0} + + + +function wR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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,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,_=0,$=0,aa=0,ba=0,ca=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,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,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0;h=i;i=i+1296|0;j=h|0;k=h+32|0;l=h+64|0;m=h+96|0;n=h+128|0;o=h+160|0;p=h+192|0;q=h+224|0;r=h+232|0;s=h+240|0;t=h+248|0;u=h+256|0;v=h+264|0;w=h+1288|0;x=v|0;y=w|0;n$(y|0,-1|0,6)|0;if((b|0)==0|(e|0)==0){z=1024;A=0;i=h;return}c[e>>2]=0;B=(f|0)!=0;if(B){c[f>>2]=0}C=(g|0)!=0;if(C){c[g>>2]=0}D=jk[c[4886350]&255](16)|0;if((D|0)==0){z=1024;A=0;i=h;return}E=D+4|0;F=D;n$(D|0,0,16)|0;G=Kk[c[4886365]&255](b,u)|0;c[E>>2]=G;H=c[u>>2]|0;c[F>>2]=H;if(!((H|0)!=0&(G|0)>0)){vk[c[4886351]&511](D);z=1024;A=0;i=h;return}u=D+12|0;I=D+8|0;c[I>>2]=H;c[u>>2]=G;G=c[u>>2]|0;do{if(!(G>>>0<8>>>0)){H=c[I>>2]|0;J=H+8|0;c[I>>2]=J;K=G-8|0;c[u>>2]=K;if((H|0)==0){break}if((j$(H,109768,8)|0)!=0){L=c[F>>2]|0;if((L|0)!=0){vk[c[4886366]&511](L)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}if(K>>>0<8>>>0){K=c[F>>2]|0;if((K|0)!=0){vk[c[4886366]&511](K)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}c[I>>2]=H+16;c[u>>2]=G-16;K=ZB(c[J>>2]|0)|0;if(!((ZB(c[H+12>>2]|0)|0)==1229472850&(K|0)==13)){K=c[F>>2]|0;if((K|0)!=0){vk[c[4886366]&511](K)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}K=c[u>>2]|0;do{if(!(K>>>0<13>>>0)){H=c[I>>2]|0;c[I>>2]=H+13;J=K-13|0;c[u>>2]=J;L=H;if((H|0)==0){break}if(J>>>0<4>>>0){J=c[F>>2]|0;if((J|0)!=0){vk[c[4886366]&511](J)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}c[I>>2]=H+17;c[u>>2]=K-17;J=H;M=ZB(c[J>>2]|0)|0;N=H+4|0;O=ZB(c[N>>2]|0)|0;do{if(!((M|0)==0|(O|0)==0)){if(M>>>0>(536870911/(O>>>0)|0)>>>0){break}do{if((a[H+10|0]|0)==0){if((a[H+11|0]|0)!=0){break}P=H+12|0;if(!((d[P]|0)>>>0<2>>>0)){Q=c[F>>2]|0;if((Q|0)!=0){vk[c[4886366]&511](Q)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}Q=H+9|0;a:do{if((a[Q]|0)==3){R=c[u>>2]|0;b:do{if(!(R>>>0<8>>>0)){S=R;while(1){T=c[I>>2]|0;c[I>>2]=T+8;c[u>>2]=S-8;if((T|0)==0){break b}U=ZB(c[T>>2]|0)|0;if((ZB(c[T+4>>2]|0)|0)==1347179589){break}if((U|0)==0){V=c[u>>2]|0}else{T=U+4|0;U=c[u>>2]|0;if(U>>>0>>0){break b}c[I>>2]=(c[I>>2]|0)+T;W=U-T|0;c[u>>2]=W;V=W}if(V>>>0<8>>>0){break b}else{S=V}}S=c[I>>2]|0;W=c[F>>2]|0;if((S-W|0)>>>0<8>>>0){X=S;Y=c[u>>2]|0}else{T=S-8|0;c[I>>2]=T;S=(c[u>>2]|0)+8|0;c[u>>2]=S;X=T;Y=S}do{if(!(Y>>>0<8>>>0)){c[I>>2]=X+8;c[u>>2]=Y-8;if((X|0)==0){break}S=ZB(c[X>>2]|0)|0;if((ZB(c[X+4>>2]|0)|0)!=1347179589){T=c[F>>2]|0;if((T|0)!=0){vk[c[4886366]&511](T)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}if(((S>>>0)%3|0|0)!=0){T=c[F>>2]|0;if((T|0)!=0){vk[c[4886366]&511](T)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}do{if((S|0)!=0){T=c[u>>2]|0;if(T>>>0>>0){break}U=c[I>>2]|0;Z=U+S|0;c[I>>2]=Z;_=T-S|0;c[u>>2]=_;if((U|0)==0){break}do{if(!(_>>>0<4>>>0)){c[I>>2]=U+(S+4);c[u>>2]=_-4;if((Z|0)==0){break}else{$=0}do{T=$<<2;a[v+T|0]=0;a[v+(T|1)|0]=0;a[v+(T|2)|0]=0;a[v+(T|3)|0]=-1;$=$+1|0;}while($>>>0<256>>>0);T=(S>>>0)/3|0;if(S>>>0>2>>>0){aa=0}else{break a}while(1){ba=aa*3|0;ca=aa<<2;a[v+ca|0]=a[U+ba|0]|0;a[v+(ca|1)|0]=a[U+(ba+1)|0]|0;a[v+(ca|2)|0]=a[U+(ba+2)|0]|0;a[v+(ca|3)|0]=-1;aa=aa+1|0;if(!(aa>>>0>>0)){break a}}}}while(0);U=c[F>>2]|0;if((U|0)!=0){vk[c[4886366]&511](U)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}while(0);S=c[F>>2]|0;if((S|0)!=0){vk[c[4886366]&511](S)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}while(0);if((W|0)!=0){vk[c[4886366]&511](W)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}while(0);R=c[F>>2]|0;if((R|0)!=0){vk[c[4886366]&511](R)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}while(0);R=c[u>>2]|0;c:do{if(R>>>0<8>>>0){ea=0}else{S=R;while(1){U=c[I>>2]|0;c[I>>2]=U+8;c[u>>2]=S-8;if((U|0)==0){ea=0;break c}Z=ZB(c[U>>2]|0)|0;if((ZB(c[U+4>>2]|0)|0)==1951551059){break}if((Z|0)==0){fa=c[u>>2]|0}else{U=Z+4|0;Z=c[u>>2]|0;if(Z>>>0>>0){ea=0;break c}c[I>>2]=(c[I>>2]|0)+U;_=Z-U|0;c[u>>2]=_;fa=_}if(fa>>>0<8>>>0){ea=0;break c}else{S=fa}}S=c[I>>2]|0;_=c[F>>2]|0;if((S-_|0)>>>0<8>>>0){ga=S;ha=c[u>>2]|0}else{U=S-8|0;c[I>>2]=U;S=(c[u>>2]|0)+8|0;c[u>>2]=S;ga=U;ha=S}do{if(!(ha>>>0<8>>>0)){c[I>>2]=ga+8;c[u>>2]=ha-8;if((ga|0)==0){break}S=ZB(c[ga>>2]|0)|0;if((ZB(c[ga+4>>2]|0)|0)!=1951551059){U=c[F>>2]|0;if((U|0)!=0){vk[c[4886366]&511](U)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}do{if((S|0)!=0){U=c[u>>2]|0;if(U>>>0>>0){break}Z=c[I>>2]|0;T=Z+S|0;c[I>>2]=T;ca=U-S|0;c[u>>2]=ca;if((Z|0)==0){break}do{if(!(ca>>>0<4>>>0)){c[I>>2]=Z+(S+4);c[u>>2]=ca-4;if((T|0)==0){break}U=d[Q]|0;if((U|0)==0){if((S|0)==2){a[y]=a[Z]|0;a[w+1|0]=a[Z+1|0]|0;ea=1;break c}ba=c[F>>2]|0;if((ba|0)!=0){vk[c[4886366]&511](ba)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}else if((U|0)==2){if((S|0)==6){a[y]=a[Z]|0;a[w+1|0]=a[Z+1|0]|0;a[w+2|0]=a[Z+2|0]|0;a[w+3|0]=a[Z+3|0]|0;a[w+4|0]=a[Z+4|0]|0;a[w+5|0]=a[Z+5|0]|0;ea=1;break c}ba=c[F>>2]|0;if((ba|0)!=0){vk[c[4886366]&511](ba)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}else if((U|0)==3){if(!(S>>>0>256>>>0)){U=0;while(1){a[v+(U<<2|3)|0]=a[Z+U|0]|0;ba=U+1|0;if(ba>>>0>>0){U=ba}else{ea=1;break c}}}U=c[F>>2]|0;if((U|0)!=0){vk[c[4886366]&511](U)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}else{U=c[F>>2]|0;if((U|0)!=0){vk[c[4886366]&511](U)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}}while(0);Z=c[F>>2]|0;if((Z|0)!=0){vk[c[4886366]&511](Z)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}while(0);S=c[F>>2]|0;if((S|0)!=0){vk[c[4886366]&511](S)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}while(0);if((_|0)!=0){vk[c[4886366]&511](_)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}while(0);R=c[F>>2]|0;c[I>>2]=R;S=c[E>>2]|0;c[u>>2]=S;if(S>>>0<8>>>0){if((R|0)!=0){vk[c[4886366]&511](R)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}W=R+8|0;c[I>>2]=W;Z=S-8|0;c[u>>2]=Z;d:do{if(Z>>>0<8>>>0){ia=-1;ja=0}else{c[I>>2]=R+16;c[u>>2]=S-16;T=W;while(1){ca=ZB(c[T>>2]|0)|0;if((ZB(c[T+4>>2]|0)|0)==1229209940){break}if((ca|0)==0){ka=c[u>>2]|0}else{U=ca+4|0;ca=c[u>>2]|0;if(ca>>>0>>0){ia=-1;ja=0;break d}c[I>>2]=(c[I>>2]|0)+U;ba=ca-U|0;c[u>>2]=ba;ka=ba}if(ka>>>0<8>>>0){ia=-1;ja=0;break d}ba=c[I>>2]|0;c[I>>2]=ba+8;c[u>>2]=ka-8;if((ba|0)==0){ia=-1;ja=0;break d}else{T=ba}}T=c[I>>2]|0;if((T-(c[F>>2]|0)|0)>>>0<8>>>0){la=0;ma=0}else{c[I>>2]=T-8;c[u>>2]=(c[u>>2]|0)+8;la=0;ma=0}e:while(1){na=ma;while(1){T=c[u>>2]|0;if(T>>>0<8>>>0){oa=T;pa=158;break e}_=c[I>>2]|0;c[I>>2]=_+8;ba=T-8|0;c[u>>2]=ba;if((_|0)==0){oa=ba;pa=158;break e}qa=ZB(c[_>>2]|0)|0;if((ZB(c[_+4>>2]|0)|0)!=1229209940){pa=163;break e}ra=na+8|0;if((qa|0)==0){na=ra}else{break}}_=qa+4|0;sa=c[u>>2]|0;if(sa>>>0<_>>>0){pa=172;break}c[I>>2]=(c[I>>2]|0)+_;c[u>>2]=sa-_;la=qa+la|0;ma=_+ra|0}if((pa|0)==158){if((na|0)==-1){c[I>>2]=c[F>>2];c[u>>2]=c[E>>2];ia=-1;ja=0;break}_=c[I>>2]|0;if((_-(c[F>>2]|0)|0)>>>0>>0){ia=-1;ja=0;break}c[I>>2]=_+(-na|0);c[u>>2]=oa+na;ia=-1;ja=0;break}else if((pa|0)==163){_=c[I>>2]|0;ba=c[F>>2]|0;T=ba;if((_-T|0)>>>0<8>>>0){ta=_}else{U=_-8|0;c[I>>2]=U;c[u>>2]=(c[u>>2]|0)+8;ta=U}do{if((na|0)==-1){c[I>>2]=ba;c[u>>2]=c[E>>2]}else{if((ta-T|0)>>>0>>0){break}c[I>>2]=ta+(-na|0);c[u>>2]=(c[u>>2]|0)+na}}while(0);T=jk[c[4886350]&255](la)|0;if((T|0)==0){ia=-1;ja=0;break}else{ua=T}f:while(1){do{ba=c[u>>2]|0;if(ba>>>0<8>>>0){pa=180;break f}U=c[I>>2]|0;c[I>>2]=U+8;c[u>>2]=ba-8;if((U|0)==0){pa=180;break f}va=ZB(c[U>>2]|0)|0;if((ZB(c[U+4>>2]|0)|0)!=1229209940){pa=182;break f}}while((va|0)==0);U=c[u>>2]|0;if(U>>>0>>0){pa=188;break}ba=c[I>>2]|0;c[I>>2]=ba+va;_=U-va|0;c[u>>2]=_;if((ba|0)==0){pa=188;break}if(_>>>0<4>>>0){pa=190;break}c[I>>2]=ba+(va+4);c[u>>2]=_-4;m$(ua|0,ba|0,va)|0;ua=ua+va|0}if((pa|0)==180){vk[c[4886351]&511](T);ia=-1;ja=0;break}else if((pa|0)==182){ba=c[I>>2]|0;if(!((ba-(c[F>>2]|0)|0)>>>0<8>>>0)){c[I>>2]=ba-8;c[u>>2]=(c[u>>2]|0)+8}c[s>>2]=0;ba=T+2|0;_=la-6|0;c[t>>2]=_;do{if((XC(0,s,ba,t)|0)==0){U=c[s>>2]|0;if((U|0)==0){break}ca=jk[c[4886350]&255](U)|0;if((ca|0)==0){vk[c[4886351]&511](T);ia=-1;ja=0;break d}c[t>>2]=_;U=XC(ca,s,ba,t)|0;vk[c[4886351]&511](T);if((U|0)==0){U=c[s>>2]|0;if((U|0)!=0){ia=U;ja=ca;break d}}vk[c[4886351]&511](ca);ia=-1;ja=0;break d}}while(0);vk[c[4886351]&511](T);ia=-1;ja=0;break}else if((pa|0)==188){vk[c[4886351]&511](T);ia=-1;ja=0;break}else if((pa|0)==190){vk[c[4886351]&511](T);ia=-1;ja=0;break}}else if((pa|0)==172){if((ra|0)==-1){c[I>>2]=c[F>>2];c[u>>2]=c[E>>2];ia=-1;ja=0;break}ba=c[I>>2]|0;if((ba-(c[F>>2]|0)|0)>>>0>>0){ia=-1;ja=0;break}c[I>>2]=ba+(-8-na);c[u>>2]=sa+ra;ia=-1;ja=0;break}}}while(0);if((ia|0)==0|(ja|0)==0){W=c[F>>2]|0;if((W|0)!=0){vk[c[4886366]&511](W)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}W=da(M<<2,O)|0;S=jk[c[4886350]&255](W)|0;if((S|0)==0){vk[c[4886351]&511](ja);W=c[F>>2]|0;if((W|0)!=0){vk[c[4886366]&511](W)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}W=d[P]|0;g:do{if((W|0)==1){R=ZB(c[J>>2]|0)|0;Z=ZB(c[N>>2]|0)|0;c[m>>2]=8;c[n>>2]=0;c[o>>2]=8;c[p>>2]=0;c[m+4>>2]=8;c[n+4>>2]=4;c[o+4>>2]=8;c[p+4>>2]=0;c[m+8>>2]=4;c[n+8>>2]=0;c[o+8>>2]=8;c[p+8>>2]=4;c[m+12>>2]=4;c[n+12>>2]=2;c[o+12>>2]=4;c[p+12>>2]=0;c[m+16>>2]=2;c[n+16>>2]=0;c[o+16>>2]=4;c[p+16>>2]=2;c[m+20>>2]=2;c[n+20>>2]=1;c[o+20>>2]=2;c[p+20>>2]=0;c[m+24>>2]=1;c[n+24>>2]=0;c[o+24>>2]=2;c[p+24>>2]=1;ba=(R+7|0)>>>3;c[k>>2]=ba;_=(Z+7|0)>>>3;c[l>>2]=_;ca=R+3|0;U=ca>>>3;c[k+4>>2]=U;c[l+4>>2]=_;wa=ca>>>2;c[k+8>>2]=wa;ca=Z+3|0;xa=ca>>>3;c[l+8>>2]=xa;ya=R+1|0;za=ya>>>2;c[k+12>>2]=za;Aa=ca>>>2;c[l+12>>2]=Aa;ca=ya>>>1;c[k+16>>2]=ca;ya=Z+1|0;Ba=ya>>>2;c[l+16>>2]=Ba;Ca=R>>>1;c[k+20>>2]=Ca;Da=ya>>>1;c[l+20>>2]=Da;c[k+24>>2]=R;ya=Z>>>1;c[l+24>>2]=ya;h:do{switch(d[Q]|0){case 0:{Z=d[H+8|0]|0;switch(Z|0){case 1:case 2:case 4:{Ea=1;Fa=8/(Z>>>0)|0;pa=250;break h;break};case 8:case 16:{Ea=Z>>>3;Fa=1;pa=250;break h;break};default:{break h}}break};case 2:{Z=d[H+8|0]|0;if(!((Z|0)==8|(Z|0)==16)){break h}Ea=(Z>>>3)*3|0;Fa=1;pa=250;break};case 3:{Z=d[H+8|0]|0;if((Z|0)==8){Ea=1;Fa=1;pa=250;break h}else if(!((Z|0)==1|(Z|0)==2|(Z|0)==4)){break h}Ea=1;Fa=8/(Z>>>0)|0;pa=250;break};case 4:{Z=d[H+8|0]|0;if(!((Z|0)==8|(Z|0)==16)){break h}Ea=Z>>>3<<1;Fa=1;pa=250;break};case 6:{Z=d[H+8|0]|0;if(!((Z|0)==8|(Z|0)==16)){break h}Ea=Z>>>3<<2;Fa=1;pa=250;break};default:{}}}while(0);i:do{if((pa|0)==250){T=Fa-1|0;Z=(((da(Ea,ba)|0)+T|0)>>>0)/(Fa>>>0)|0;c[j>>2]=Z;Ga=(((da(Ea,U)|0)+T|0)>>>0)/(Fa>>>0)|0;c[j+4>>2]=Ga;Ha=(((da(Ea,wa)|0)+T|0)>>>0)/(Fa>>>0)|0;c[j+8>>2]=Ha;Ia=(((da(Ea,za)|0)+T|0)>>>0)/(Fa>>>0)|0;c[j+12>>2]=Ia;Ja=(((da(Ea,ca)|0)+T|0)>>>0)/(Fa>>>0)|0;c[j+16>>2]=Ja;Ka=(((da(Ea,Ca)|0)+T|0)>>>0)/(Fa>>>0)|0;c[j+20>>2]=Ka;La=(((da(Ea,R)|0)+T|0)>>>0)/(Fa>>>0)|0;c[j+24>>2]=La;if(((da(((Ha|0)!=0)+Ha|0,xa)|0)+(da(Ga+Z+((Z|0)!=0)+((Ga|0)!=0)|0,_)|0)+(da(((Ia|0)!=0)+Ia|0,Aa)|0)+(da(((Ja|0)!=0)+Ja|0,Ba)|0)+(da(((Ka|0)!=0)+Ka|0,Da)|0)+(da(((La|0)!=0)+La|0,ya)|0)|0)!=(ia|0)){break}if((xR(ja,_,Z,Ea)|0)==0){break}else{Ma=Z;Na=_;Oa=ja;Pa=1}while(1){if(!(Pa>>>0<7>>>0)){break}Z=Oa+(da(((Ma|0)!=0)+Ma|0,Na)|0)|0;La=c[l+(Pa<<2)>>2]|0;Ka=c[j+(Pa<<2)>>2]|0;if((xR(Z,La,Ka,Ea)|0)==0){break i}else{Ma=Ka;Na=La;Oa=Z;Pa=Pa+1|0}}Z=Fa>>>0>1>>>0;La=H+8|0;Ka=0;Ja=ja;Ia=_;while(1){if((Ia|0)==0){Qa=Ja}else{Ga=o+(Ka<<2)|0;Ha=p+(Ka<<2)|0;Ra=m+(Ka<<2)|0;Sa=n+(Ka<<2)|0;Ta=k+(Ka<<2)|0;Ua=c[j+(Ka<<2)>>2]|0;Va=(Ua|0)==0;Wa=(Ua>>>0)/(Ea>>>0)|0;Ua=(Wa|0)==0;Xa=0;Ya=Ja;while(1){Za=Va?Ya:Ya+1|0;if(Ua){_a=Za}else{$a=0;ab=Za;Za=0;while(1){if(Z){bb=c[Ta>>2]|0;cb=0;db=Za;while(1){if(db>>>0>>0){eb=d[La]|0;fb=da(eb,T-cb|0)|0;a[q]=(((1<>>(fb>>>0);fb=da(c[Ga>>2]|0,Xa)|0;eb=da(fb+(c[Ha>>2]|0)|0,R)|0;fb=da(c[Ra>>2]|0,db)|0;if((yR(L,S+(fb+(c[Sa>>2]|0)+eb<<2)|0,q,ea,y,x)|0)==0){break i}gb=db+1|0}else{gb=db}eb=cb+1|0;if(eb>>>0>>0){cb=eb;db=gb}else{hb=gb;break}}}else{db=da(c[Ga>>2]|0,Xa)|0;cb=da(db+(c[Ha>>2]|0)|0,R)|0;db=da(c[Ra>>2]|0,$a)|0;if((yR(L,S+(db+(c[Sa>>2]|0)+cb<<2)|0,ab,ea,y,x)|0)==0){break i}else{hb=Za}}cb=ab+Ea|0;db=$a+1|0;if(db>>>0>>0){$a=db;ab=cb;Za=hb}else{_a=cb;break}}}Za=Xa+1|0;if(Za>>>0>>0){Xa=Za;Ya=_a}else{Qa=_a;break}}}Ya=Ka+1|0;if(!(Ya>>>0<7>>>0)){break g}Ka=Ya;Ja=Qa;Ia=c[l+(Ya<<2)>>2]|0}}}while(0);vk[c[4886351]&511](S);vk[c[4886351]&511](ja);R=c[F>>2]|0;if((R|0)!=0){vk[c[4886366]&511](R)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}else if((W|0)==0){R=ZB(c[J>>2]|0)|0;_=ZB(c[N>>2]|0)|0;j:do{switch(d[Q]|0){case 0:{ya=d[H+8|0]|0;switch(ya|0){case 1:case 2:case 4:{ib=1;jb=8/(ya>>>0)|0;pa=221;break j;break};case 8:case 16:{ib=ya>>>3;jb=1;pa=221;break j;break};default:{break j}}break};case 2:{ya=d[H+8|0]|0;if(!((ya|0)==8|(ya|0)==16)){break j}ib=(ya>>>3)*3|0;jb=1;pa=221;break};case 3:{ya=d[H+8|0]|0;if((ya|0)==8){ib=1;jb=1;pa=221;break j}else if(!((ya|0)==1|(ya|0)==2|(ya|0)==4)){break j}ib=1;jb=8/(ya>>>0)|0;pa=221;break};case 4:{ya=d[H+8|0]|0;if(!((ya|0)==8|(ya|0)==16)){break j}ib=ya>>>3<<1;jb=1;pa=221;break};case 6:{ya=d[H+8|0]|0;if(!((ya|0)==8|(ya|0)==16)){break j}ib=ya>>>3<<2;jb=1;pa=221;break};default:{}}}while(0);k:do{if((pa|0)==221){ya=jb-1|0;Da=(((da(ib,R)|0)+ya|0)>>>0)/(jb>>>0)|0;if((da(Da+1|0,_)|0)!=(ia|0)){break}if((xR(ja,_,Da,ib)|0)==0){break}if((_|0)==0){break g}Ba=(Da>>>0)/(ib>>>0)|0;Da=(Ba|0)==0;Aa=jb>>>0>1>>>0;xa=H+8|0;Ca=0;ca=S;za=ja;while(1){wa=za+1|0;if(Da){kb=ca;lb=wa}else{U=0;ba=ca;Ia=wa;wa=0;while(1){if(Aa){Ja=0;Ka=ba;T=wa;while(1){if(T>>>0>>0){La=d[xa]|0;Z=da(La,ya-Ja|0)|0;a[r]=(((1<>>(Z>>>0);if((yR(L,Ka,r,ea,y,x)|0)==0){break k}mb=T+1|0;nb=Ka+4|0}else{mb=T;nb=Ka}Z=Ja+1|0;if(Z>>>0>>0){Ja=Z;Ka=nb;T=mb}else{ob=mb;pb=nb;break}}}else{if((yR(L,ba,Ia,ea,y,x)|0)==0){break k}ob=wa;pb=ba+4|0}T=Ia+ib|0;Ka=U+1|0;if(Ka>>>0>>0){U=Ka;ba=pb;Ia=T;wa=ob}else{kb=pb;lb=T;break}}}wa=Ca+1|0;if(wa>>>0<_>>>0){Ca=wa;ca=kb;za=lb}else{break g}}}}while(0);vk[c[4886351]&511](S);vk[c[4886351]&511](ja);_=c[F>>2]|0;if((_|0)!=0){vk[c[4886366]&511](_)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}else{vk[c[4886351]&511](S);vk[c[4886351]&511](ja);_=c[F>>2]|0;if((_|0)!=0){vk[c[4886366]&511](_)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}while(0);c[e>>2]=S;if(B){c[f>>2]=M}if(C){c[g>>2]=O}vk[c[4886351]&511](ja);Q=c[F>>2]|0;if((Q|0)!=0){vk[c[4886366]&511](Q)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}while(0);Q=c[F>>2]|0;if((Q|0)!=0){vk[c[4886366]&511](Q)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}while(0);O=c[F>>2]|0;if((O|0)!=0){vk[c[4886366]&511](O)}vk[c[4886351]&511](D);Tk[c[4886344]&255](2,167048,(O=i,i=i+8|0,c[O>>2]=b,O)|0);i=O;z=1024;A=0;i=h;return}}while(0);K=c[F>>2]|0;if((K|0)!=0){vk[c[4886366]&511](K)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}}while(0);b=c[F>>2]|0;if((b|0)!=0){vk[c[4886366]&511](b)}vk[c[4886351]&511](D);z=1024;A=0;i=h;return}function xR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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,J=0,K=0,L=0;h=i;i=i+8|0;j=h|0;c[j>>2]=0;c[j+4>>2]=0;if((b|0)==0|(g|0)==0){k=0;i=h;return k|0}if((e|0)==0|(f|0)==0){k=1;i=h;return k|0}l=j;j=-f|0;m=(f>>>0)/(g>>>0)|0;n=(m|0)==0;o=~f;f=g+o|0;p=b;b=0;a:while(1){q=p+1|0;r=(b|0)!=0;if(r){s=p+j|0}else{s=l}if(n){t=q}else{u=d[p]|0;v=q;q=l;w=s;x=l;y=0;while(1){z=0;do{switch(u|0){case 2:{A=v+z|0;a[A]=(a[A]|0)+(a[w+z|0]|0);break};case 4:{A=a[q+z|0]|0;B=a[w+z|0]|0;C=a[x+z|0]|0;D=A&255;E=B&255;F=C&255;G=E+D-F|0;H=G-D|0;D=(H|0)>-1?H:-H|0;H=G-E|0;E=(H|0)>-1?H:-H|0;H=G-F|0;F=(H|0)>-1?H:-H|0;if((D|0)>(E|0)|(D|0)>(F|0)){I=(E|0)>(F|0)?C:B}else{I=A}A=v+z|0;a[A]=(a[A]|0)+I;break};case 3:{A=v+z|0;a[A]=(((d[w+z|0]|0)+(d[q+z|0]|0)|0)>>>1)+(d[A]|0);break};case 1:{A=v+z|0;a[A]=(a[A]|0)+(a[q+z|0]|0);break};case 0:{break};default:{k=0;J=21;break a}}z=z+1|0;}while(z>>>0>>0);if(r){K=v+f|0;L=v+o|0}else{K=w;L=x}z=v+g|0;A=y+1|0;if(A>>>0>>0){q=v;v=z;w=K;x=L;y=A}else{t=z;break}}}y=b+1|0;if(y>>>0>>0){p=t;b=y}else{k=1;J=21;break}}if((J|0)==21){i=h;return k|0}return 0}function yR(b,c,e,f,g,h){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;if((b|0)==0|(c|0)==0|(e|0)==0|(g|0)==0|(h|0)==0){i=0;return i|0}switch(d[b+9|0]|0){case 0:{j=b+8|0;k=d[j]|0;switch(k|0){case 8:case 16:{a[c]=a[e]|0;a[c+1|0]=a[e]|0;a[c+2|0]=a[e]|0;l=c+3|0;a[l]=-1;if((f|0)==0){i=1;return i|0}if((a[j]|0)==8){if((a[g+1|0]|0)!=(a[e]|0)){i=1;return i|0}a[l]=0;i=1;return i|0}if((a[g]|0)!=(a[e]|0)){i=1;return i|0}if((a[g+1|0]|0)!=(a[e+1|0]|0)){i=1;return i|0}a[l]=0;i=1;return i|0};case 1:case 2:case 4:{l=(da(d[e]|0,(255/((1<>2]|0)==0|(l|0)<0){m=132;n=0;o=488;p=0;i=g;return}q=HY(g+488|0)|0;r=h|0;c[r>>2]=q;c[q>>2]=150;c[(c[r>>2]|0)+8>>2]=190;UW(h,80,488);lX(h,c[j>>2]|0,l);WW(h,1)|0;c[h+44>>2]=2;ZW(h)|0;l=h+112|0;r=c[l>>2]|0;q=h+116|0;s=c[q>>2]|0;t=da(s,r)|0;u=t<<2;do{if(!((r|0)==0|(s|0)==0)){if((((u>>>0)/(r>>>0)|0)>>>2|0)!=(s|0)|t>>>0>536870911>>>0){break}v=h+124|0;if((c[v>>2]|0)!=3){break}w=r*3|0;x=jk[c[4886350]&255](u)|0;c[e>>2]=c[l>>2];y=c[q>>2]|0;c[f>>2]=y;z=h+140|0;A=c[z>>2]|0;if(A>>>0>>0){y=A;do{c[k>>2]=x+(da(w,y)|0);$W(h,k,1)|0;y=c[z>>2]|0;}while(y>>>0<(c[q>>2]|0)>>>0)}c[k>>2]=x;y=da(c[v>>2]|0,t)|0;z=u;w=x;while(1){a[w+(z-1)|0]=-1;A=c[k>>2]|0;a[A+(z-2)|0]=a[A+(y-1)|0]|0;A=c[k>>2]|0;a[A+(z-3)|0]=a[A+(y-2)|0]|0;A=y-3|0;B=c[k>>2]|0;C=z-4|0;a[B+C|0]=a[B+A|0]|0;if((A|0)==0){break}y=A;z=C;w=c[k>>2]|0}c[d>>2]=x;YW(h)|0;VW(h);vk[c[4886366]&511](c[j>>2]|0);m=132;n=0;o=488;p=0;i=g;return}}while(0);vk[c[4886366]&511](c[j>>2]|0);VW(h);j=c[l>>2]|0;l=c[q>>2]|0;q=c[h+124>>2]|0;Tk[c[4886345]&255](1,109584,(h=i,i=i+40|0,c[h>>2]=b,c[h+8>>2]=j,c[h+16>>2]=l,c[h+24>>2]=u,c[h+32>>2]=q,h)|0);i=h}function AR(a){a=a|0;var b=0,d=0;b=i;i=i+200|0;d=b|0;hk[c[(c[a>>2]|0)+12>>2]&255](a,d);zW(a);Tk[c[4886345]&255](0,127056,(a=i,i=i+8|0,c[a>>2]=d,a)|0);i=a}function BR(a){a=a|0;var b=0,d=0;b=i;i=i+200|0;d=b|0;hk[c[(c[a>>2]|0)+12>>2]&255](a,d);Tk[c[4886344]&255](0,141680,(a=i,i=i+8|0,c[a>>2]=d,a)|0);i=a;i=b;return}function CR(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+576|0;k=j|0;l=HY(j+432|0)|0;m=k|0;c[m>>2]=l;c[l>>2]=150;c[(c[m>>2]|0)+8>>2]=190;iV(k,80,432);m=k+24|0;l=c[m>>2]|0;if((l|0)==0){n=rk[c[c[k+4>>2]>>2]&63](k,0,28)|0;c[m>>2]=n;o=n}else{o=l}c[o+8>>2]=306;c[o+12>>2]=26;c[o+16>>2]=10;c[o+20>>2]=a;c[o+24>>2]=b;c[k+28>>2]=e;b=k+32|0;c[b>>2]=f;f=k+36|0;c[f>>2]=3;c[k+40>>2]=2;EW(k);DW(k,d,1);if((d|0)>84){d=c[k+84>>2]|0;c[d+8>>2]=1;c[d+12>>2]=1}mV(k,1);d=(da(c[f>>2]|0,e)|0)+h|0;h=k+260|0;e=c[h>>2]|0;f=c[b>>2]|0;if(!(e>>>0>>0)){lV(k);p=c[m>>2]|0;q=p+24|0;r=c[q>>2]|0;s=p+4|0;t=c[s>>2]|0;u=r-t|0;jV(k);v=132;w=0;x=432;y=0;i=j;return u|0}o=j+568|0;a=e;e=f;do{c[o>>2]=g+(da(e+~a|0,d)|0);nV(k,o,1)|0;a=c[h>>2]|0;e=c[b>>2]|0;}while(a>>>0>>0);lV(k);p=c[m>>2]|0;q=p+24|0;r=c[q>>2]|0;s=p+4|0;t=c[s>>2]|0;u=r-t|0;jV(k);v=132;w=0;x=432;y=0;i=j;return u|0}function DR(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=da(d*3|0,e)|0;i=jk[c[4886348]&255](h)|0;j=CR(i,h,b,d,e,f,g)|0;Tk[c[4886369]&255](a,i,j);vk[c[4886349]&511](i);return}function ER(a){a=a|0;var b=0;b=c[a+24>>2]|0;c[b>>2]=c[b+20>>2];c[b+4>>2]=c[b+24>>2];return}function FR(a){a=a|0;var b=0;b=c[a+24>>2]|0;jV(a);Tk[c[4886345]&255](0,166952,(a=i,i=i+8|0,c[a>>2]=c[b+24>>2],a)|0);i=a;return 0}function GR(a){a=a|0;return}function HR(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;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,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=i;i=i+1088|0;l=k|0;m=k+8|0;c[g>>2]=0;n=(h|0)!=0;if(n){c[h>>2]=0}o=(j|0)!=0;if(o){c[j>>2]=0}p=Kk[c[4886365]&255](f,l)|0;q=c[l>>2]|0;if((q|0)==0|(p|0)<0){r=1080;s=0;i=k;return}if((p|0)<54){Tk[c[4886345]&255](1,109552,(t=i,i=i+8|0,c[t>>2]=f,t)|0);i=t}u=a[q]|0;a[m|0]=u;v=a[q+1|0]|0;a[m+1|0]=v;w=c[q+2>>2]|0;c[m+4>>2]=w;c[m+8>>2]=c[q+6>>2];x=c[q+10>>2]|0;c[m+12>>2]=x;c[m+16>>2]=c[q+14>>2];y=c[q+18>>2]|0;c[m+20>>2]=y;z=c[q+22>>2]|0;c[m+24>>2]=z;b[m+28>>1]=b[q+26>>1]|0;A=b[q+28>>1]|0;B=m+30|0;b[B>>1]=A;C=c[q+30>>2]|0;c[m+32>>2]=C;c[m+36>>2]=c[q+34>>2];c[m+40>>2]=c[q+38>>2];c[m+44>>2]=c[q+42>>2];c[m+48>>2]=c[q+46>>2];c[m+52>>2]=c[q+50>>2];D=q+54|0;do{if(A<<16>>16==8){if((p|0)<1078){Tk[c[4886345]&255](1,109552,(t=i,i=i+8|0,c[t>>2]=f,t)|0);i=t}else{m$(m+56|0,D|0,1024)|0;break}}}while(0);D=q+x|0;if((x|0)>(p|0)){Tk[c[4886345]&255](1,166848,(t=i,i=i+8|0,c[t>>2]=f,t)|0);i=t}if(!(u<<24>>24==66|v<<24>>24==77)){Tk[c[4886345]&255](1,141624,(t=i,i=i+8|0,c[t>>2]=f,t)|0);i=t}if((w|0)!=(p|0)){Tk[c[4886345]&255](1,126992,(t=i,i=i+24|0,c[t>>2]=w,c[t+8>>2]=p,c[t+16>>2]=f,t)|0);i=t}if((C|0)!=0){Tk[c[4886345]&255](1,116576,(t=i,i=i+8|0,c[t>>2]=f,t)|0);i=t}C=A&65535;if((A&65535)>>>0<8>>>0){Tk[c[4886345]&255](1,106320,(t=i,i=i+8|0,c[t>>2]=f,t)|0);i=t}if(!((C|0)==8|(C|0)==16|(C|0)==24|(C|0)==32)){Tk[c[4886345]&255](1,62944,(t=i,i=i+16|0,c[t>>2]=C,c[t+8>>2]=f,t)|0);i=t}A=(z|0)<0?-z|0:z;z=da(A,y)|0;if((y|0)<1|(A|0)==0|z>>>0>536870911>>>0){E=c[4886345]|0;Tk[E&255](1,55336,(t=i,i=i+8|0,c[t>>2]=f,t)|0);i=t}w=z<<2;if((((w>>>0)/(y>>>0)|0)>>>2|0)!=(A|0)){E=c[4886345]|0;Tk[E&255](1,55336,(t=i,i=i+8|0,c[t>>2]=f,t)|0);i=t}if((((da(C,z)|0)>>>3)+x|0)>(p|0)){Tk[c[4886345]&255](1,48984,(t=i,i=i+8|0,c[t>>2]=f,t)|0);i=t}if(n){c[h>>2]=y}if(o){c[j>>2]=A}j=jk[c[4886350]&255](w)|0;c[g>>2]=j;do{if((A|0)>0){g=y<<2;if((y|0)>0){F=D;G=A}else{break}while(1){w=G-1|0;o=F;h=1;n=j+(da(g,w)|0)|0;while(1){t=e[B>>1]|0;if((t|0)==32){f=a[o]|0;p=a[o+1|0]|0;x=a[o+3|0]|0;a[n]=a[o+2|0]|0;a[n+1|0]=p;a[n+2|0]=f;a[n+3|0]=x;H=n+4|0;I=o+4|0}else if((t|0)==24){x=a[o]|0;f=a[o+1|0]|0;a[n]=a[o+2|0]|0;a[n+1|0]=f;a[n+2|0]=x;a[n+3|0]=-1;H=n+4|0;I=o+3|0}else if((t|0)==16){x=b[n>>1]|0;a[n+2|0]=(x&65535)>>>7&255&-8;a[n+3|0]=(x&65535)>>>2&255&-8;a[n+4|0]=(x&255)<<3;a[n+5|0]=-1;H=n+6|0;I=o}else if((t|0)==8){t=d[o]|0;a[n]=a[m+56+(t<<2)+2|0]|0;a[n+1|0]=a[m+56+(t<<2)+1|0]|0;a[n+2|0]=a[m+56+(t<<2)|0]|0;a[n+3|0]=-1;H=n+4|0;I=o+1|0}else{H=n;I=o}if((h|0)>=(y|0)){break}o=I;h=h+1|0;n=H}if((w|0)>0){F=I;G=w}else{break}}}}while(0);vk[c[4886366]&511](c[l>>2]|0);r=1080;s=0;i=k;return}function IR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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,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,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;h=i;i=i+8|0;j=h|0;c[e>>2]=0;k=(f|0)!=0;if(k){c[f>>2]=0}l=(g|0)!=0;if(l){c[g>>2]=0}m=Kk[c[4886365]&255](b,j)|0;n=c[j>>2]|0;if((n|0)==0|(m|0)<0){i=h;return}if((m|0)<18){Tk[c[4886345]&255](1,109376,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o}p=n+m|0;q=a[n]|0;r=a[n+1|0]|0;s=a[n+2|0]|0;t=n+12|0;u=(d[t]|d[t+1|0]<<8)<<16>>16;t=n+14|0;v=(d[t]|d[t+1|0]<<8)<<16>>16;t=a[n+16|0]|0;w=a[n+17|0]|0;x=n+18|0;if(!((s<<24>>24|0)==2|(s<<24>>24|0)==10|(s<<24>>24|0)==3)){Tk[c[4886345]&255](1,166720,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o}if(!(r<<24>>24==0)){Tk[c[4886345]&255](1,141544,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o}r=t&255;do{if(!((t<<24>>24|0)==32|(t<<24>>24|0)==24)){if(s<<24>>24==3){break}Tk[c[4886345]&255](1,126888,(o=i,i=i+1|0,i=i+7&-8,c[o>>2]=0,o)|0);i=o}}while(0);y=u&65535;z=v&65535;A=da(z,y)|0;B=A<<2;if(u<<16>>16==0|v<<16>>16==0|(B|0)<0){C=c[4886345]|0;Tk[C&255](1,116504,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o}if((((B>>>0)/(y>>>0)|0)>>>2|0)!=(z|0)){C=c[4886345]|0;Tk[C&255](1,116504,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o}C=jk[c[4886350]&255](B)|0;do{if(q<<24>>24==0){D=x}else{B=(q&255)+18|0;if((B|0)>(m|0)){Tk[c[4886345]&255](1,109376,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o}else{D=n+B|0;break}}}while(0);a:do{if((s<<24>>24|0)==10){n=z-1|0;if(!((n|0)>-1)){break}m=y<<2;q=r>>>3;x=q+1|0;B=D;v=n;b:while(1){n=B;u=0;E=v;F=C+(da(m,v)|0)|0;c:while(1){G=n+1|0;if(G>>>0>p>>>0){H=39;break b}I=a[n]|0;J=(I&127)+1&255;if(I<<24>>24<0){if((n+x|0)>>>0>p>>>0){H=42;break b}if((r|0)==24){K=-1;L=n+4|0}else if((r|0)==32){K=a[n+4|0]|0;L=n+5|0}else{H=46;break b}I=a[G]|0;M=a[n+2|0]|0;N=a[n+3|0]|0;O=u;P=E;Q=F;R=0;while(1){a[Q]=N;a[Q+1|0]=M;a[Q+2|0]=I;S=Q+4|0;a[Q+3|0]=K;T=O+1|0;if((T|0)==(y|0)){if((P|0)<=0){U=P;V=L;break c}W=P-1|0;X=C+(da(m,W)|0)|0;Y=W;Z=0}else{X=S;Y=P;Z=T}T=R+1&255;if((T&255)>>>0<(J&255)>>>0){O=Z;P=Y;Q=X;R=T}else{_=X;$=Y;aa=Z;ba=L;break}}}else{if((n+((da(J&255,q)|0)+1)|0)>>>0>p>>>0){H=53;break b}else{ca=G;ea=u;fa=E;ga=F;ha=0}while(1){if((r|0)==24){R=a[ca]|0;Q=a[ca+1|0]|0;a[ga]=a[ca+2|0]|0;a[ga+1|0]=Q;a[ga+2|0]=R;a[ga+3|0]=-1;ia=ca+3|0}else if((r|0)==32){R=a[ca]|0;Q=a[ca+1|0]|0;P=a[ca+3|0]|0;a[ga]=a[ca+2|0]|0;a[ga+1|0]=Q;a[ga+2|0]=R;a[ga+3|0]=P;ia=ca+4|0}else{H=57;break b}P=ga+4|0;R=ea+1|0;if((R|0)==(y|0)){if((fa|0)<=0){U=fa;V=ia;break c}Q=fa-1|0;ja=C+(da(m,Q)|0)|0;ka=Q;la=0}else{ja=P;ka=fa;la=R}R=ha+1&255;if((R&255)>>>0<(J&255)>>>0){ca=ia;ea=la;fa=ka;ga=ja;ha=R}else{_=ja;$=ka;aa=la;ba=ia;break}}}if(aa>>>0>>0){n=ba;u=aa;E=$;F=_}else{U=$;V=ba;break}}F=U-1|0;if((F|0)>-1){B=V;v=F}else{break a}}if((H|0)==39){Tk[c[4886345]&255](1,106272,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o}else if((H|0)==42){Tk[c[4886345]&255](1,106272,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o}else if((H|0)==46){Tk[c[4886345]&255](1,62880,(o=i,i=i+16|0,c[o>>2]=r,c[o+8>>2]=b,o)|0);i=o}else if((H|0)==53){Tk[c[4886345]&255](1,106272,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o}else if((H|0)==57){Tk[c[4886345]&255](1,62880,(o=i,i=i+16|0,c[o>>2]=r,c[o+8>>2]=b,o)|0);i=o}}else if((s<<24>>24|0)==2|(s<<24>>24|0)==3){if((D+((da(A,r)|0)>>>3)|0)>>>0>p>>>0){Tk[c[4886345]&255](1,106272,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o}v=z-1|0;if(!((v|0)>-1)){break}B=y<<2;m=D;q=v;while(1){v=C+(da(B,q)|0)|0;if((t<<24>>24|0)==8){x=m;F=0;E=v;while(1){u=x+1|0;n=a[x]|0;a[E]=n;a[E+1|0]=n;a[E+2|0]=n;a[E+3|0]=-1;n=F+1|0;if(n>>>0>>0){x=u;F=n;E=E+4|0}else{ma=u;break}}}else if((t<<24>>24|0)==24){E=m;F=0;x=v;while(1){u=a[E]|0;n=a[E+1|0]|0;J=E+3|0;a[x]=a[E+2|0]|0;a[x+1|0]=n;a[x+2|0]=u;a[x+3|0]=-1;u=F+1|0;if(u>>>0>>0){E=J;F=u;x=x+4|0}else{ma=J;break}}}else if((t<<24>>24|0)==32){x=m;F=0;E=v;while(1){J=a[x]|0;u=a[x+1|0]|0;n=x+4|0;G=a[x+3|0]|0;a[E]=a[x+2|0]|0;a[E+1|0]=u;a[E+2|0]=J;a[E+3|0]=G;G=F+1|0;if(G>>>0>>0){x=n;F=G;E=E+4|0}else{ma=n;break}}}else{break}E=q-1|0;if((E|0)>-1){m=ma;q=E}else{break a}}Tk[c[4886345]&255](1,62880,(o=i,i=i+16|0,c[o>>2]=r,c[o+8>>2]=b,o)|0);i=o}}while(0);if(!((w&32)==0)){Tk[c[4886344]&255](2,55208,(o=i,i=i+8|0,c[o>>2]=b,o)|0);i=o}if(k){c[f>>2]=y}if(l){c[g>>2]=z}c[e>>2]=C;vk[c[4886366]&511](c[j>>2]|0);i=h;return}function JR(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+8|0;k=j|0;l=(g|0)!=0;if(l){c[g>>2]=0}m=(h|0)!=0;if(m){c[h>>2]=0}c[f>>2]=0;n=Kk[c[4886365]&255](e,k)|0;o=c[k>>2]|0;if((o|0)==0|(n|0)<0){i=j;return}if(n>>>0<128>>>0){Tk[c[4886344]&255](0,109200,(p=i,i=i+8|0,c[p>>2]=e,p)|0);i=p;vk[c[4886366]&511](c[k>>2]|0);i=j;return}q=o+n|0;r=(b[o+8>>1]|0)+1&65535;s=(b[o+10>>1]|0)+1&65535;t=r&65535;u=s&65535;v=da(u,t)|0;do{if((a[o]|0)==10){if((a[o+1|0]|0)!=5){break}if((a[o+2|0]|0)!=1){break}if((a[o+65|0]|0)!=1){break}if((a[o+3|0]|0)!=8|(r&65535)>>>0>1023>>>0|(s&65535)>>>0>1023>>>0){break}w=jk[c[4886350]&255](v)|0;c[k>>2]=o+128;x=w+v|0;a:do{if((v|0)!=0){y=w;z=0;A=0;b:while(1){B=z;C=A;while(1){if(!(B<<24>>24==0)){break}D=c[k>>2]|0;E=D+1|0;if(E>>>0>q>>>0){break b}c[k>>2]=E;F=a[D]|0;if(!((F&-64)<<24>>24==-64)){B=1;C=F;continue}G=D+2|0;if(G>>>0>q>>>0){break b}c[k>>2]=G;B=F&63;C=a[E]|0}E=y+1|0;a[y]=C;if(E>>>0>>0){y=E;z=B-1&255;A=C}else{break a}}Tk[c[4886344]&255](0,141496,(p=i,i=i+8|0,c[p>>2]=e,p)|0);i=p;vk[c[4886366]&511](o);vk[c[4886351]&511](w)}}while(0);do{if(((c[k>>2]|0)-o|0)<(q-769|0)){if((a[o+(n-769)|0]|0)!=12){break}x=n-768|0;A=jk[c[4886350]&255](v<<2)|0;if((v|0)!=0){z=n-767|0;y=n-766|0;E=A;F=0;while(1){G=(d[w+F|0]|0)*3|0;a[E]=a[o+(G+x)|0]|0;a[E+1|0]=a[o+(z+G)|0]|0;a[E+2|0]=a[o+(y+G)|0]|0;a[E+3|0]=-1;G=F+1|0;if(G>>>0>>0){E=E+4|0;F=G}else{break}}}if(l){c[g>>2]=t}if(m){c[h>>2]=u}c[f>>2]=A;vk[c[4886366]&511](o);vk[c[4886351]&511](w);i=j;return}}while(0);Tk[c[4886344]&255](0,126856,(p=i,i=i+8|0,c[p>>2]=e,p)|0);i=p;vk[c[4886366]&511](o);vk[c[4886351]&511](w);i=j;return}}while(0);f=a[o+3|0]|0;Tk[c[4886344]&255](0,166584,(p=i,i=i+32|0,c[p>>2]=e,c[p+8>>2]=t,c[p+16>>2]=u,c[p+24>>2]=f,p)|0);i=p;i=j;return}function KR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+64|0;e=d|0;f=nj()|0;if((f|0)==0){g=64;h=0;i=d;return}if((c[(c[4917460]|0)+32>>2]|0)!=0){g=64;h=0;i=d;return}switch(f|0){case 1284:{m$(e|0,116424,19)|0;break};case 1285:{m$(e|0,106216,17)|0;break};case 1283:{m$(e|0,126824,18)|0;break};case 1282:{m$(e|0,141464,21)|0;break};case 1280:{m$(e|0,108984,16)|0;break};case 1281:{m$(e|0,166536,17)|0;break};default:{$B(e,64,62824,(j=i,i=i+8|0,c[j>>2]=f,j)|0)|0;i=j}}Tk[c[4886345]&255](0,55152,(j=i,i=i+24|0,c[j>>2]=e,c[j+8>>2]=a,c[j+16>>2]=b,j)|0);i=j}function LR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0;if((e+1|0)>>>0>12>>>0){f=0;return f|0}if((e|0)==-1){c[a>>2]=c[(c[4919886]|0)+32>>2];h=c[(c[4919888]|0)+32>>2]|0;c[b>>2]=h;i=(c[4919890]|0)+28|0;j=h}else{c[a>>2]=c[9388+(e<<4)>>2];h=c[9392+(e<<4)>>2]|0;c[b>>2]=h;i=9396+(e<<4)|0;j=h}g[d>>2]=+(c[a>>2]|0)/(+g[i>>2]*+(j|0));f=1;return f|0}function MR(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=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;h=i;i=i+8|0;j=h|0;xj(3333,j|0);k=e*3|0;l=c[j>>2]|0;m=k-1+l&-l;n=da(m,f)|0;o=jk[c[4886348]&255](l+17+n|0)|0;l=o;p=c[j>>2]|0;j=l+17+p&-p;dh(b|0,d|0,e|0,f|0,6407,5121,j|0);d=j-l|0;l=m-k|0;m=o+(d-18)|0;n$(m|0,0,18)|0;a[o+(d-16)|0]=2;a[o+(d-6)|0]=e;a[o+(d-5)|0]=e>>>8;a[o+(d-4)|0]=f;a[o+(d-3)|0]=f>>>8;a[o+(d-2)|0]=24;j=o+d|0;b=d+n|0;n=o+b|0;if((d|0)<(b|0)){b=j;d=j;while(1){p=d+k|0;if((e|0)>0){q=b;r=d;while(1){s=a[r]|0;a[q]=a[r+2|0]|0;a[q+1|0]=a[r+1|0]|0;t=q+3|0;a[q+2|0]=s;s=r+3|0;if(s>>>0

>>0){q=t;r=s}else{u=t;v=s;break}}}else{u=b;v=d}r=v+l|0;if(r>>>0>>0){b=u;d=r}else{break}}}d=da(k,f)|0;if((c[5123023]|0)==0){w=c[4886369]|0;x=d+18|0;Tk[w&255](g,m,x);y=c[4886349]|0;vk[y&511](o);i=h;return}XQ(j,d);w=c[4886369]|0;x=d+18|0;Tk[w&255](g,m,x);y=c[4886349]|0;vk[y&511](o);i=h;return}function NR(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+8|0;h=g|0;xj(3333,h|0);j=d*3|0;k=c[h>>2]|0;l=j-1+k&-k;m=da(l,e)|0;n=jk[c[4886348]&255](k-1+m|0)|0;k=n;o=c[h>>2]|0;h=k-1+o&-o;dh(a|0,b|0,d|0,e|0,6407,5121,h|0);b=n+(h-k)|0;if((c[5123023]|0)!=0){XQ(b,m)}DR(f,c[(c[4917360]|0)+32>>2]|0,d,e,b,l-j|0);vk[c[4886349]&511](n);i=g;return}function OR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if((c[340901]|0)!=0){zT()}b=c[a+4>>2]|0;d=c[a+8>>2]|0;e=c[a+12>>2]|0;f=c[a+16>>2]|0;g=c[a+20>>2]|0;if((c[a+24>>2]|0)==0){MR(b,d,e,f,g);h=a+28|0;return h|0}else{NR(b,d,e,f,g);h=a+28|0;return h|0}return 0}function PR(){var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.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;b=i;i=i+4104|0;e=b|0;f=b+8|0;$B(f,4096,143416,(g=i,i=i+8|0,c[g>>2]=(c[253203]|0)+64,g)|0)|0;i=g;h=c[5123026]|0;j=c[5123027]|0;xj(3333,e|0);k=h*3|0;l=c[e>>2]|0;m=k-1+l&-l;n=l-1+(da(m,j)|0)|0;l=jk[c[4886348]&255](n)|0;n=l;o=c[e>>2]|0;e=n-1+o&-o;dh(0,0,h|0,j|0,6407,5121,e|0);j=e-n|0;n=m-k|0;k=jk[c[4886348]&255](49170)|0;n$(k|0,0,18)|0;a[k+2|0]=2;a[k+12|0]=-128;a[k+14|0]=-128;a[k+16|0]=24;p=+(c[5123026]|0)*.001953125;q=+(c[5123027]|0)/384.0;m=0;do{e=m*3|0;h=m<<7;o=0;do{r=n+((c[5123026]|0)*3|0)|0;s=o<<2;t=j+(~~(p*+(s|0))*3|0)|0;u=0;v=0;w=0;x=0;do{y=da(r,~~(q*+(x+e|0)))|0;z=t+y|0;A=j+(~~(p*+(s|1|0))*3|0)+y|0;B=j+(~~(p*+(s|2|0))*3|0)+y|0;C=j+(~~(p*+(s|3|0))*3|0)+y|0;u=(d[l+C|0]|0)+((d[l+B|0]|0)+((d[l+A|0]|0)+((d[l+z|0]|0)+u)))|0;v=(d[l+(C+1)|0]|0)+((d[l+(B+1)|0]|0)+((d[l+(A+1)|0]|0)+((d[l+(z+1)|0]|0)+v)))|0;w=(d[l+(C+2)|0]|0)+((d[l+(B+2)|0]|0)+((d[l+(A+2)|0]|0)+((d[l+(z+2)|0]|0)+w)))|0;x=x+1|0;}while((x|0)<3);x=(o+h|0)*3|0;a[k+(x+18)|0]=(w|0)/12|0;a[k+(x+19)|0]=(v|0)/12|0;a[k+(x+20)|0]=(u|0)/12|0;o=o+1|0;}while((o|0)<128);m=m+1|0;}while((m|0)<128);if((c[5123023]|0)==0){D=c[4886369]|0;Tk[D&255](f,k,49170);E=c[4886349]|0;vk[E&511](k);F=c[4886349]|0;vk[F&511](l);G=c[4886344]|0;Tk[G&255](0,140808,(g=i,i=i+8|0,c[g>>2]=f,g)|0);i=g;H=4096;I=0;i=b;return}XQ(k+18|0,49152);D=c[4886369]|0;Tk[D&255](f,k,49170);E=c[4886349]|0;vk[E&511](k);F=c[4886349]|0;vk[F&511](l);G=c[4886344]|0;Tk[G&255](0,140808,(g=i,i=i+8|0,c[g>>2]=f,g)|0);i=g;H=4096;I=0;i=b;return}function QR(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;a=i;i=i+4096|0;b=a|0;if((k$(jk[c[4886360]&255](1)|0,138280)|0)==0){PR();d=4096;e=0;i=a;return}f=(k$(jk[c[4886360]&255](1)|0,136664)|0)==0;a:do{if((Ok[c[4886359]&63]()|0)==2&(f^1)){g=jk[c[4886360]&255](1)|0;$B(b,4096,135200,(h=i,i=i+8|0,c[h>>2]=g,h)|0)|0;i=h}else{g=c[46600]|0;if((g|0)==-1){c[46600]=0;j=0;k=8}else{if((g|0)<1e4){j=g;k=8}}b:do{if((k|0)==8){while(1){k=0;if(j>>>0>9999>>>0){$B(b,4096,152680,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0)|0;i=h}else{g=(j|0)/1e3|0;l=(g*-1e3|0)+j|0;m=(l|0)/100|0;n=l+(m*-100|0)|0;l=(n|0)/10|0;$B(b,4096,150472,(h=i,i=i+32|0,c[h>>2]=g,c[h+8>>2]=m,c[h+16>>2]=l,c[h+24>>2]=n+(l*-10|0),h)|0)|0;i=h}l=(jk[c[4886370]&255](b)|0)==0;o=c[46600]|0;if(l){break}l=o+1|0;c[46600]=l;if((l|0)<1e4){j=l;k=8}else{break b}}if((o|0)>9998){break}c[46600]=o+1;break a}}while(0);Tk[c[4886344]&255](0,133592,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;d=4096;e=0;i=a;return}}while(0);o=c[5123026]|0;k=c[5123027]|0;j=NP(28)|0;if((j|0)!=0){c[j>>2]=6;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=o;c[j+16>>2]=k;TB(28384736,b,4096);c[j+20>>2]=28384736;c[j+24>>2]=0}if(f){d=4096;e=0;i=a;return}Tk[c[4886344]&255](0,140808,(h=i,i=i+8|0,c[h>>2]=b,h)|0);i=h;d=4096;e=0;i=a;return}function RR(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;a=i;i=i+4096|0;b=a|0;if((k$(jk[c[4886360]&255](1)|0,138280)|0)==0){PR();d=4096;e=0;i=a;return}f=(k$(jk[c[4886360]&255](1)|0,136664)|0)==0;do{if((Ok[c[4886359]&63]()|0)==2&(f^1)){g=jk[c[4886360]&255](1)|0;$B(b,4096,132424,(h=i,i=i+8|0,c[h>>2]=g,h)|0)|0;i=h}else{g=c[46602]|0;if((g|0)==-1){c[46602]=0;j=0;k=8}else{if((g|0)<1e4){j=g;k=8}else{l=g}}a:do{if((k|0)==8){while(1){k=0;if(j>>>0>9999>>>0){$B(b,4096,148304,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0)|0;i=h}else{g=(j|0)/1e3|0;m=(g*-1e3|0)+j|0;n=(m|0)/100|0;o=m+(n*-100|0)|0;m=(o|0)/10|0;$B(b,4096,145648,(h=i,i=i+32|0,c[h>>2]=g,c[h+8>>2]=n,c[h+16>>2]=m,c[h+24>>2]=o+(m*-10|0),h)|0)|0;i=h}m=(jk[c[4886370]&255](b)|0)==0;o=c[46602]|0;if(m){l=o;break a}m=o+1|0;c[46602]=m;if((m|0)<1e4){j=m;k=8}else{l=m;break}}}}while(0);if((l|0)!=1e4){c[46602]=l+1;break}Tk[c[4886344]&255](0,133592,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;d=4096;e=0;i=a;return}}while(0);l=c[5123026]|0;k=c[5123027]|0;j=NP(28)|0;if((j|0)!=0){c[j>>2]=6;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=l;c[j+16>>2]=k;TB(28384736,b,4096);c[j+20>>2]=28384736;c[j+24>>2]=1}if(f){d=4096;e=0;i=a;return}Tk[c[4886344]&255](0,140808,(h=i,i=i+8|0,c[h>>2]=b,h)|0);i=h;d=4096;e=0;i=a;return}function SR(b){b=b|0;var d=0,e=0,f=0,g=0,h=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=i;i=i+8|0;e=d|0;if((c[340901]|0)!=0){zT()}xj(3333,e|0);f=b+4|0;g=c[f>>2]|0;h=g*3|0;j=c[e>>2]|0;e=j-1|0;k=-j|0;j=e+h&k;l=j-h|0;m=h+3&-4;n=m-h|0;o=e+(c[b+12>>2]|0)&k;k=b+8|0;dh(0,0,g|0,c[k>>2]|0,6407,5121,o|0);e=da(c[k>>2]|0,j)|0;if((c[5123023]|0)!=0){XQ(o,e)}j=b+16|0;p=c[j>>2]|0;if((c[b+20>>2]|0)!=0){q=c[k>>2]|0;r=da(q,h)|0;s=CR(p,r,c[(c[4919908]|0)+32>>2]|0,c[f>>2]|0,q,o,l)|0;hk[c[4886374]&255](c[j>>2]|0,s);t=b+24|0;i=d;return t|0}s=o+e|0;if((e|0)>0){e=o;o=p;while(1){q=e+h|0;if((g|0)>0){f=e;r=o;while(1){a[r]=a[f+2|0]|0;a[r+1|0]=a[f+1|0]|0;u=r+3|0;a[r+2|0]=a[f]|0;v=f+3|0;if(v>>>0>>0){f=v;r=u}else{w=v;x=u;break}}}else{w=e;x=o}n$(x|0,0,n|0)|0;r=w+l|0;if(r>>>0>>0){e=r;o=x+n|0}else{break}}y=c[j>>2]|0}else{y=p}p=da(c[k>>2]|0,m)|0;hk[c[4886374]&255](y,p);t=b+24|0;i=d;return t|0}function TR(){xf(+1.0);nf(1028);cf(+1.0,+1.0,+1.0,+1.0);if((c[4920100]|0)!=0){bP(1);YQ(c[(c[4917302]|0)+4>>2]|0);eP(8448);kg(3553);bP(0)}ni(515);c[5120116]=65792;c[5120117]=0;c[5120118]=0;c[5120123]=0;vk[c[4919940]&511](0);hk[c[4920092]&255](34962,0);hk[c[4920092]&255](34963,0);c[5120125]=0;c[5120126]=0;Rj(1);kg(2929);Xc(3089);kg(2884);kg(3042);if((c[5120197]|0)==0){return}Xc(34895);return}function UR(){var a=0,b=0,d=0,e=0;a=i;c[4919926]=rk[c[4886352]&63](130064,128832,33)|0;c[4919848]=rk[c[4886352]&63](127856,126456,33)|0;c[4919834]=rk[c[4886352]&63](125168,128832,33)|0;c[4919850]=rk[c[4886352]&63](124288,128832,33)|0;c[4919832]=rk[c[4886352]&63](123416,128832,33)|0;c[4919846]=rk[c[4886352]&63](122576,128832,33)|0;c[4919838]=rk[c[4886352]&63](121728,128832,33)|0;c[4919842]=rk[c[4886352]&63](120816,128832,33)|0;c[4919828]=rk[c[4886352]&63](119592,128832,33)|0;c[4919916]=rk[c[4886352]&63](118256,128832,33)|0;c[4919844]=rk[c[4886352]&63](117312,126456,33)|0;c[4919914]=rk[c[4886352]&63](116096,126456,33)|0;c[4919912]=rk[c[4886352]&63](114496,128832,33)|0;c[4919830]=rk[c[4886352]&63](113456,126456,33)|0;c[4919840]=rk[c[4886352]&63](112544,111680,33)|0;c[4917382]=rk[c[4886352]&63](110944,126456,33)|0;c[4917364]=rk[c[4886352]&63](110136,128832,33)|0;c[4919896]=rk[c[4886352]&63](108800,126456,32)|0;uk[c[4886355]&7](c[4917382]|0,0.0,16.0,1);c[4919870]=rk[c[4886352]&63](107728,128832,33)|0;c[4917300]=rk[c[4886352]&63](106952,126456,33)|0;c[4919894]=rk[c[4886352]&63](105896,126456,33)|0;c[4917316]=rk[c[4886352]&63](105040,104128,33)|0;c[4919872]=rk[c[4886352]&63](103136,126456,33)|0;b=rk[c[4886352]&63](102416,126456,33)|0;c[4919836]=b;uk[c[4886355]&7](b,0.0,4.0,1);c[4917386]=rk[c[4886352]&63](101496,128832,33)|0;c[4917458]=rk[c[4886352]&63](100544,126456,33)|0;c[4917416]=rk[c[4886352]&63](99496,64416,33)|0;c[4917474]=rk[c[4886352]&63](63744,128832,1)|0;c[4917412]=rk[c[4886352]&63](62592,126456,33)|0;c[4919886]=rk[c[4886352]&63](61696,60968,33)|0;c[4919888]=rk[c[4886352]&63](60240,59608,33)|0;c[4919890]=rk[c[4886352]&63](59016,128832,33)|0;c[4917334]=rk[c[4886352]&63](58416,128832,33)|0;c[4917292]=rk[c[4886352]&63](57496,126456,33)|0;c[4917296]=rk[c[4886352]&63](56576,126456,0)|0;c[4917310]=rk[c[4886352]&63](55888,54904,33)|0;c[4917314]=rk[c[4886352]&63](54192,126456,33)|0;b=rk[c[4886352]&63](53712,126456,33)|0;c[4917468]=b;uk[c[4886355]&7](b,0.0,1.0,0);c[4917328]=rk[c[4886352]&63](53224,128832,33)|0;c[4917466]=rk[c[4886352]&63](52752,126456,33)|0;c[4917378]=rk[c[4886352]&63](52176,126456,1)|0;c[4917500]=rk[c[4886352]&63](51672,126456,33)|0;c[4917298]=rk[c[4886352]&63](50952,128832,33)|0;c[4917484]=rk[c[4886352]&63](50128,126456,512)|0;c[4917478]=rk[c[4886352]&63](49464,48760,512)|0;c[4917482]=rk[c[4886352]&63](48168,47760,512)|0;c[4917480]=rk[c[4886352]&63](47392,47048,512)|0;c[4919910]=rk[c[4886352]&63](46736,128832,1)|0;c[4917498]=rk[c[4886352]&63](46416,126456,512)|0;c[4917494]=rk[c[4886352]&63](45896,47760,512)|0;c[4917496]=rk[c[4886352]&63](45280,44944,512)|0;c[4919902]=rk[c[4886352]&63](44496,126456,512)|0;c[4917320]=rk[c[4886352]&63](44032,126456,33)|0;c[4919874]=rk[c[4886352]&63](43672,128832,1)|0;c[4917318]=rk[c[4886352]&63](43384,126456,33)|0;c[4917402]=rk[c[4886352]&63](43064,126456,33)|0;c[4917324]=rk[c[4886352]&63](185896,126456,33)|0;c[4919878]=rk[c[4886352]&63](185600,126456,33)|0;c[4917384]=rk[c[4886352]&63](185048,126456,33)|0;c[4919892]=rk[c[4886352]&63](184376,126456,33)|0;c[4919876]=rk[c[4886352]&63](183992,183528,33)|0;c[4917326]=rk[c[4886352]&63](183184,126456,33)|0;c[4919904]=rk[c[4886352]&63](182792,182480,33)|0;c[4919906]=rk[c[4886352]&63](182272,183528,33)|0;c[4919864]=rk[c[4886352]&63](182032,126456,33)|0;c[4917374]=rk[c[4886352]&63](181680,181240,1)|0;c[4917366]=rk[c[4886352]&63](180576,126456,33)|0;c[4917420]=rk[c[4886352]&63](180216,128832,33)|0;c[4917456]=rk[c[4886352]&63](179600,126456,33)|0;c[4917454]=rk[c[4886352]&63](179088,59608,33)|0;c[4917452]=rk[c[4886352]&63](178704,128832,33)|0;c[4917470]=rk[c[4886352]&63](178296,126456,33)|0;c[4917492]=rk[c[4886352]&63](177824,126456,512)|0;c[4917486]=rk[c[4886352]&63](177328,176936,512)|0;c[4917488]=rk[c[4886352]&63](176488,176936,512)|0;c[4917490]=rk[c[4886352]&63](175920,175656,512)|0;c[4919858]=rk[c[4886352]&63](175216,126456,33)|0;c[4917306]=rk[c[4886352]&63](174744,126456,33)|0;c[4917308]=rk[c[4886352]&63](174416,128832,33)|0;c[4917350]=rk[c[4886352]&63](174216,128832,33)|0;c[4917348]=rk[c[4886352]&63](173960,59608,33)|0;c[4917352]=rk[c[4886352]&63](173760,54904,33)|0;c[4917354]=rk[c[4886352]&63](173448,173e3,33)|0;c[4917356]=rk[c[4886352]&63](172448,172112,33)|0;c[4917462]=rk[c[4886352]&63](171688,128832,33)|0;c[4917476]=rk[c[4886352]&63](171288,126456,544)|0;c[4917432]=rk[c[4886352]&63](171112,111680,32)|0;c[4917446]=rk[c[4886352]&63](170936,128832,32)|0;c[4917332]=rk[c[4886352]&63](170720,126456,544)|0;c[4917440]=rk[c[4886352]&63](170504,170336,513)|0;c[4917438]=rk[c[4886352]&63](169992,126456,1)|0;c[4917502]=rk[c[4886352]&63](169352,126456,1)|0;b=rk[c[4886352]&63](169200,54904,512)|0;c[4917290]=b;uk[c[4886355]&7](b,.0010000000474974513,200.0,0);c[4917288]=rk[c[4886352]&63](168880,168440,1)|0;c[4917312]=rk[c[4886352]&63](168096,168440,1)|0;c[4917460]=rk[c[4886352]&63](167888,128832,1)|0;c[4919824]=rk[c[4886352]&63](167624,126456,1)|0;c[4917450]=rk[c[4886352]&63](167480,128832,1)|0;c[4919860]=rk[c[4886352]&63](167240,126456,1)|0;c[4919852]=rk[c[4886352]&63](166472,128832,1)|0;c[4919866]=rk[c[4886352]&63](165952,128832,1)|0;c[4919822]=rk[c[4886352]&63](165704,126456,1)|0;c[4917302]=rk[c[4886352]&63](165400,165064,1)|0;c[4917304]=rk[c[4886352]&63](164776,126456,33)|0;c[4917472]=rk[c[4886352]&63](164304,128832,1)|0;c[4919826]=rk[c[4886352]&63](164152,128832,1)|0;c[4917368]=rk[c[4886352]&63](164032,163640,1)|0;c[4917372]=rk[c[4886352]&63](163248,162800,1)|0;c[4917370]=rk[c[4886352]&63](162504,162288,1)|0;c[4919920]=rk[c[4886352]&63](161960,161768,512)|0;c[4919868]=rk[c[4886352]&63](161512,128832,512)|0;c[4919918]=rk[c[4886352]&63](161360,126456,1)|0;c[4917418]=rk[c[4886352]&63](161144,128832,1)|0;c[4917422]=rk[c[4886352]&63](160912,128832,1)|0;c[4917344]=rk[c[4886352]&63](160504,126456,256)|0;c[4919884]=rk[c[4886352]&63](160008,126456,256)|0;c[4919882]=rk[c[4886352]&63](159768,126456,512)|0;c[4917376]=rk[c[4886352]&63](159272,126456,0)|0;c[4917362]=rk[c[4886352]&63](158944,126456,0)|0;c[4917408]=rk[c[4886352]&63](158752,126456,512)|0;c[4919854]=rk[c[4886352]&63](158648,128832,512)|0;c[4917444]=rk[c[4886352]&63](158488,126456,0)|0;c[4917380]=rk[c[4886352]&63](158368,126456,512)|0;c[4919808]=rk[c[4886352]&63](158248,157872,512)|0;c[4919810]=rk[c[4886352]&63](157416,157104,512)|0;c[4919812]=rk[c[4886352]&63](156904,156528,512)|0;c[4917330]=rk[c[4886352]&63](156344,126456,512)|0;c[4917424]=rk[c[4886352]&63](156200,126456,512)|0;c[4917436]=rk[c[4886352]&63](156016,155944,512)|0;c[4917404]=rk[c[4886352]&63](155680,126456,512)|0;c[4919856]=rk[c[4886352]&63](155384,128832,512)|0;c[4917464]=rk[c[4886352]&63](154960,128832,512)|0;c[4917410]=rk[c[4886352]&63](154816,126456,512)|0;c[4917400]=rk[c[4886352]&63](154592,126456,512)|0;c[4917342]=rk[c[4886352]&63](154408,126456,512)|0;c[4917322]=rk[c[4886352]&63](154176,126456,512)|0;c[4917294]=rk[c[4886352]&63](154072,126456,512)|0;c[4917434]=rk[c[4886352]&63](153976,126456,512)|0;c[4919880]=rk[c[4886352]&63](153824,126456,512)|0;c[4917414]=rk[c[4886352]&63](153680,126456,512)|0;c[4917336]=rk[c[4886352]&63](153360,126456,512)|0;c[4917338]=rk[c[4886352]&63](152960,126456,512)|0;c[4917340]=rk[c[4886352]&63](152848,126456,512)|0;c[4919898]=rk[c[4886352]&63](152648,126456,512)|0;c[4917390]=rk[c[4886352]&63](152456,152368,512)|0;c[4917388]=rk[c[4886352]&63](152248,64416,512)|0;c[4919862]=rk[c[4886352]&63](152088,151984,512)|0;c[4917442]=rk[c[4886352]&63](151800,126456,512)|0;c[4917406]=rk[c[4886352]&63](151464,126456,512)|0;c[4917346]=rk[c[4886352]&63](150984,128832,0)|0;c[4917430]=rk[c[4886352]&63](150688,126456,1)|0;c[4919908]=rk[c[4886352]&63](150440,150192,1)|0;c[4917360]=rk[c[4886352]&63](150048,150192,1)|0;b=c[4886352]|0;d=pC(149776,(e=i,i=i+8|0,c[e>>2]=600,e)|0)|0;i=e;c[4917428]=rk[b&63](149912,d,0)|0;d=c[4886352]|0;b=pC(149776,(e=i,i=i+8|0,c[e>>2]=3e3,e)|0)|0;i=e;c[4917426]=rk[d&63](149560,b,0)|0;hk[c[4886357]&255](149432,202);hk[c[4886357]&255](149072,36);hk[c[4886357]&255](148704,46);hk[c[4886357]&255](148496,324);hk[c[4886357]&255](148280,106);hk[c[4886357]&255](147928,112);hk[c[4886357]&255](147720,120);hk[c[4886357]&255](147568,336);hk[c[4886357]&255](147384,398);hk[c[4886357]&255](147168,226);i=a;return}function VR(){var a=0,b=0;a=i;Tk[c[4886344]&255](0,140640,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2346],b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2350],b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2354],b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2358],b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2362],b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2366],b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2370],b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2374],b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2378],b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2382],b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2386],b)|0);i=b;Tk[c[4886344]&255](0,136456,(b=i,i=i+8|0,c[b>>2]=c[2390],b)|0);i=b;Tk[c[4886344]&255](0,140640,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}function WR(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0;a=i;i=i+1024|0;Tk[c[4886344]&255](0,141440,(b=i,i=i+8|0,c[b>>2]=20481824,b)|0);i=b;Tk[c[4886344]&255](0,141160,(b=i,i=i+8|0,c[b>>2]=20480800,b)|0);i=b;Tk[c[4886344]&255](0,140992,(b=i,i=i+8|0,c[b>>2]=20482848,b)|0);i=b;Tk[c[4886344]&255](0,140792,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;d=a|0;e=o$(20483872)|0;if((e|0)>0){f=20483872;g=e;while(1){TB(d,f,1024);Tk[c[4886344]&255](0,131448,(b=i,i=i+8|0,c[b>>2]=d,b)|0);i=b;e=g-1023|0;if((e|0)>0){f=f+1023|0;g=e}else{break}}}Tk[c[4886344]&255](0,140640,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;Tk[c[4886344]&255](0,140392,(b=i,i=i+8|0,c[b>>2]=c[5123016],b)|0);i=b;Tk[c[4886344]&255](0,140040,(b=i,i=i+8|0,c[b>>2]=c[5123017],b)|0);i=b;g=c[5123019]|0;f=c[5123020]|0;Tk[c[4886344]&255](0,139848,(b=i,i=i+24|0,c[b>>2]=c[5123018],c[b+8>>2]=g,c[b+16>>2]=f,b)|0);i=b;f=c[5123026]|0;g=c[5123027]|0;d=c[186872+(((c[(c[4917474]|0)+32>>2]|0)==1)<<2)>>2]|0;Tk[c[4886344]&255](0,139760,(b=i,i=i+32|0,c[b>>2]=c[(c[4917416]|0)+32>>2],c[b+8>>2]=f,c[b+16>>2]=g,c[b+24>>2]=d,b)|0);i=b;d=c[5123029]|0;g=c[4886344]|0;if((d|0)==0){Tk[g&255](0,139168,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}else{Tk[g&255](0,139544,(b=i,i=i+8|0,c[b>>2]=d,b)|0);i=b}d=c[4886344]|0;g=c[253581]|0;if((c[5123023]|0)==0){Tk[d&255](0,138480,(b=i,i=i+8|0,c[b>>2]=g,b)|0);i=b}else{Tk[d&255](0,138760,(b=i,i=i+8|0,c[b>>2]=g,b)|0);i=b}Tk[c[4886344]&255](0,138256,(b=i,i=i+8|0,c[b>>2]=c[(c[4917302]|0)+4>>2],b)|0);i=b;Tk[c[4886344]&255](0,138088,(b=i,i=i+8|0,c[b>>2]=c[(c[4917382]|0)+32>>2],b)|0);i=b;Tk[c[4886344]&255](0,137976,(b=i,i=i+8|0,c[b>>2]=c[(c[4917300]|0)+32>>2],b)|0);i=b;Tk[c[4886344]&255](0,137920,(b=i,i=i+8|0,c[b>>2]=c[186880+(((c[4920100]|0)!=0)<<2)>>2],b)|0);i=b;Tk[c[4886344]&255](0,137816,(b=i,i=i+8|0,c[b>>2]=c[186880+(((c[4919992]|0)!=0)<<2)>>2],b)|0);i=b;Tk[c[4886344]&255](0,137760,(b=i,i=i+8|0,c[b>>2]=c[186880+(((c[5123025]|0)!=0)<<2)>>2],b)|0);i=b;Tk[c[4886344]&255](0,137624,(b=i,i=i+8|0,c[b>>2]=c[186880+(((c[5123024]|0)!=0)<<2)>>2],b)|0);i=b;g=c[5123022]|0;if((c[(c[4917292]|0)+32>>2]|0)!=0|(g|0)==4){Tk[c[4886344]&255](0,137264,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;h=c[5123022]|0}else{h=g}if((h|0)==3){Tk[c[4886344]&255](0,136944,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;j=c[5123022]|0}else{j=h}if((j|0)==2){Tk[c[4886344]&255](0,136776,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b}if((c[(c[4919822]|0)+32>>2]|0)==0){i=a;return}Tk[c[4886344]&255](0,136640,(b=i,i=i+1|0,i=i+7&-8,c[b>>2]=0,b)|0);i=b;i=a;return}function XR(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;a=i;i=i+24|0;b=a|0;d=a+8|0;e=c[5120182]|0;if((e|0)==0){Tk[c[4886344]&255](0,144864,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;i=a;return}else if((e|0)==1){xj(36935,b|0);Tk[c[4886344]&255](0,144704,(f=i,i=i+8|0,c[f>>2]=c[b>>2],f)|0);i=f;xj(36936,b|0);Tk[c[4886344]&255](0,144488,(f=i,i=i+8|0,c[f>>2]=c[b>>2],f)|0);i=f;xj(36937,b|0);Tk[c[4886344]&255](0,144160,(f=i,i=i+8|0,c[f>>2]=c[b>>2],f)|0);i=f;xj(36938,b|0);Tk[c[4886344]&255](0,143768,(f=i,i=i+8|0,c[f>>2]=c[b>>2],f)|0);i=f;xj(36939,b|0);Tk[c[4886344]&255](0,143576,(f=i,i=i+8|0,c[f>>2]=c[b>>2],f)|0);i=f;i=a;return}else if((e|0)==2){e=d|0;xj(34811,e|0);b=d+4|0;g=c[b>>2]|0;h=d+8|0;j=c[h>>2]|0;k=d+12|0;d=c[k>>2]|0;Tk[c[4886344]&255](0,143336,(f=i,i=i+32|0,c[f>>2]=c[e>>2],c[f+8>>2]=g,c[f+16>>2]=j,c[f+24>>2]=d,f)|0);i=f;xj(34812,e|0);d=c[b>>2]|0;j=c[h>>2]|0;g=c[k>>2]|0;Tk[c[4886344]&255](0,142920,(f=i,i=i+32|0,c[f>>2]=c[e>>2],c[f+8>>2]=d,c[f+16>>2]=j,c[f+24>>2]=g,f)|0);i=f;xj(34813,e|0);g=c[b>>2]|0;b=c[h>>2]|0;h=c[k>>2]|0;Tk[c[4886344]&255](0,142592,(f=i,i=i+32|0,c[f>>2]=c[e>>2],c[f+8>>2]=g,c[f+16>>2]=b,c[f+24>>2]=h,f)|0);i=f;i=a;return}else{i=a;return}}function YR(){var a=0,b=0,d=0,e=0,f=0,h=0.0,j=0,k=0.0,l=0,m=0;a=i;i=i+1032|0;b=a|0;d=a+1024|0;Tk[c[4886344]&255](0,146856,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;n$(1012720,0,204624)|0;n$(28375576,0,1908)|0;n$(1219560,0,471760)|0;if((8|0)!=0){Tk[c[4886344]&255](2,146504,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;f=0}else{f=0}do{h=+(f|0);g[1195840+(f<<2)>>2]=+W(h*360.0/1023.0*3.141592653589793/180.0);j=(f|0)<512;g[1199936+(f<<2)>>2]=j?1.0:-1.0;k=h*.0009765625;g[1208128+(f<<2)>>2]=k;g[1212224+(f<<2)>>2]=1.0-k;do{if(j){if((f|0)<256){g[1204032+(f<<2)>>2]=h*.00390625;break}else{g[1204032+(f<<2)>>2]=1.0- +g[1204032+(f-256<<2)>>2];break}}else{g[1204032+(f<<2)>>2]=-0.0- +g[1204032+(f-512<<2)>>2]}}while(0);f=f+1|0;}while((f|0)<1024);iR();gT();UR();f=c[(c[4917428]|0)+32>>2]|0;j=(f|0)<600?600:f;c[4954626]=j;f=c[(c[4917426]|0)+32>>2]|0;l=(f|0)<3e3?3e3:f;c[4954624]=l;f=Kk[c[4886347]&255]((j*20|0)+1279164+(l*24|0)|0,1)|0;c[7093892]=f;c[f+1000624>>2]=f+1279164;c[(c[7093892]|0)+1000628>>2]=f+(((c[4954626]|0)*20|0)+1279164);lT();f=b|0;if((c[5123026]|0)==0){eV();nQ();r$(f|0,20480800)|0;lC(f)|0;xj(3379,d|0);f=c[d>>2]|0;c[5123016]=(f|0)>0?f:0}TR();mR();if((c[5120183]|0)!=0){sQ()}MQ();TU();aU();qR();WS();DQ();do{if((c[5120179]|0)!=0){if((c[(c[4919858]|0)+32>>2]|0)==0){break}hk[c[4920040]&255](2,1195820)}}while(0);f=nj()|0;if((f|0)==0){WR();m=c[4886344]|0;Tk[m&255](0,145912,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=a;return}Tk[c[4886344]&255](0,146160,(e=i,i=i+8|0,c[e>>2]=f,e)|0);i=e;WR();m=c[4886344]|0;Tk[m&255](0,145912,(e=i,i=i+1|0,i=i+7&-8,c[e>>2]=0,e)|0);i=e;i=a;return}function ZR(a){a=a|0;var b=0,d=0;b=i;Tk[c[4886344]&255](0,145600,(d=i,i=i+8|0,c[d>>2]=a,d)|0);i=d;vk[c[4886358]&511](148496);vk[c[4886358]&511](147720);vk[c[4886358]&511](147928);vk[c[4886358]&511](149432);vk[c[4886358]&511](149072);vk[c[4886358]&511](148704);vk[c[4886358]&511](147568);vk[c[4886358]&511](147384);vk[c[4886358]&511](148280);vk[c[4886358]&511](145384);vk[c[4886358]&511](147168);if((c[253180]|0)!=0){MP();do{if((c[5120179]|0)!=0){if((c[(c[4919858]|0)+32>>2]|0)==0){break}hk[c[4920064]&255](2,1195820)}}while(0);if((c[5120183]|0)!=0){tQ()}nR();UU()}EQ();if((a|0)==0){c[253180]=0;i=b;return}NQ();aV();n$(944504,0,68212)|0;n$(20480800,0,11332)|0;n$(20480416,0,284)|0;c[253180]=0;i=b;return}function _R(){MP();if((Ok[c[4886382]&63]()|0)!=0){return}pP();return}function $R(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+64|0;MP();dV(c[(c[4917416]|0)+32>>2]|0,c[(c[4917474]|0)+32>>2]|0,c[(c[4917412]|0)+32>>2]|0)|0;TR();d=b|0;e=nj()|0;if((e|0)==0){f=64;g=0;h=a|0;m$(h|0,20480800,11332)|0;i=b;return}if((c[(c[4917460]|0)+32>>2]|0)!=0){f=64;g=0;h=a|0;m$(h|0,20480800,11332)|0;i=b;return}switch(e|0){case 1280:{m$(d|0,108984,16)|0;break};case 1281:{m$(d|0,166536,17)|0;break};case 1285:{m$(d|0,106216,17)|0;break};case 1284:{m$(d|0,116424,19)|0;break};case 1283:{m$(d|0,126824,18)|0;break};case 1282:{m$(d|0,141464,21)|0;break};default:{$B(d,64,62824,(j=i,i=i+8|0,c[j>>2]=e,j)|0)|0;i=j}}Tk[c[4886345]&255](0,55152,(j=i,i=i+24|0,c[j>>2]=d,c[j+8>>2]=145184,c[j+16>>2]=1549,j)|0);i=j}function aS(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;m$(19545376,b|0,156)|0;n$(30211992,0,124)|0;if((a|0)==8){c[7552998]=124;c[7552999]=176;c[7553e3]=128;c[7553001]=20;c[7553002]=142;c[7553003]=10;c[7553004]=254;c[7553005]=36;c[7553006]=252;c[7553018]=128;c[7553019]=18;c[7553020]=4;c[7553021]=4;c[7553022]=148;c[7553007]=90;c[7553008]=322;c[7553009]=98;c[7553010]=12;c[7553011]=6;c[7553012]=4;c[7553013]=78;c[7553014]=24;c[7553015]=4;c[7553016]=4;c[7553017]=28;c[7553023]=48;c[7553024]=164;c[7553025]=104;c[7553026]=16;c[7553027]=98;c[7553028]=262;e=30211992;i=d;return e|0}else{Tk[c[4886344]&255](0,145040,(b=i,i=i+16|0,c[b>>2]=8,c[b+8>>2]=a,b)|0);i=b;e=0;i=d;return e|0}return 0}function bS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0;if((a|0)<=0){return}d=c|0;e=c+4|0;f=c+8|0;h=c+12|0;i=c+16|0;j=c+20|0;k=c+24|0;l=c+28|0;m=c+32|0;n=c+36|0;o=c+40|0;p=c+44|0;c=0;q=b;while(1){r=+g[q>>2]- +g[d>>2];s=+g[q+4>>2]- +g[e>>2];t=+g[q+8>>2]- +g[f>>2];g[q+28>>2]=r*+g[h>>2]+s*+g[i>>2]+t*+g[j>>2];g[q+32>>2]=r*+g[k>>2]+s*+g[l>>2]+t*+g[m>>2];g[q+36>>2]=r*+g[n>>2]+s*+g[o>>2]+t*+g[p>>2];b=c+1|0;if((b|0)<(a|0)){c=b;q=q+44|0}else{break}}return}function cS(a){a=a|0;var b=0,d=0,e=0,f=0,h=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=c[253727]|0;d=(b|0)>0;do{if(d){e=0;f=c[253728]|0;while(1){h=+g[f>>2]- +g[253582];i=+g[f+4>>2]- +g[253583];j=+g[f+8>>2]- +g[253584];g[f+28>>2]=h*+g[253585]+i*+g[253586]+j*+g[253587];g[f+32>>2]=h*+g[253588]+i*+g[253589]+j*+g[253590];g[f+36>>2]=h*+g[253591]+i*+g[253592]+j*+g[253593];k=e+1|0;if((k|0)<(b|0)){e=k;f=f+44|0}else{break}}if(!d){l=0;break}f=c[253728]|0;e=0;k=0;while(1){j=+g[f+(k*44|0)+24>>2];m=0;while(1){i=+g[f+(k*44|0)+28+(m<<2)>>2];if(i- +g[a+12+(m<<2)>>2]>j){n=e;break}o=m+1|0;if(+g[a+(m<<2)>>2]-i>j){n=e;break}if((o|0)<3){m=o}else{p=10;break}}if((p|0)==10){p=0;n=1<>2]=(l|0)!=0;n=a+28|0;b=c[n>>2]|0;if((b|0)<=0){return}p=a+24|0;a=c[(c[253203]|0)+176>>2]|0;d=0;k=b;while(1){b=c[a+(((c[p>>2]|0)+d|0)*80|0)+76>>2]|0;e=c[b>>2]|0;if((e|0)==2|(e|0)==3|(e|0)==4|(e|0)==11){c[b+4>>2]=l;q=c[n>>2]|0}else{q=k}b=d+1|0;if((b|0)<(q|0)){d=b;k=q}else{break}}return}function dS(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0.0,M=0.0,N=0.0,O=0,P=0;e=i;i=i+32|0;f=e|0;h=e+16|0;j=d+148|0;if((c[j>>2]|0)!=0){i=e;return}c[j>>2]=1;j=d+4|0;if((c[j>>2]&128|0)==0){k=d+68|0;l=d+72|0;m=d+76|0}else{k=d+12|0;l=d+16|0;m=d+20|0}n=+g[k>>2];o=+g[l>>2];p=+g[m>>2];do{if((c[b+80>>2]&1|0)==0){m=c[253203]|0;if((c[m+280>>2]|0)==0){q=8;break}eS(d,m)}else{q=8}}while(0);if((q|0)==8){r=+g[253579]*150.0;g[d+188>>2]=r;g[d+184>>2]=r;g[d+180>>2]=r;r=+g[253579]*150.0;g[d+204>>2]=r;g[d+200>>2]=r;g[d+196>>2]=r;g[d+156>>2]=+g[253809];g[d+160>>2]=+g[253810];g[d+164>>2]=+g[253811]}q=c[(c[4917466]|0)+32>>2]|0;if((q|0)==0){m=d+180|0;g[m>>2]=+g[m>>2]+ +g[253579]*32.0;m=d+184|0;g[m>>2]=+g[m>>2]+ +g[253579]*32.0;m=d+188|0;g[m>>2]=+g[m>>2]+ +g[253579]*32.0}m=d+196|0;r=+g[m>>2];l=d+200|0;s=+g[l>>2];k=d+204|0;t=+g[k>>2];u=+T(r*r+s*s+t*t);v=d+156|0;w=h|0;g[w>>2]=u*+g[v>>2];x=d+160|0;y=h+4|0;g[y>>2]=u*+g[x>>2];z=d+164|0;A=h+8|0;g[A>>2]=u*+g[z>>2];h=b+392|0;if((c[h>>2]|0)>0){B=b+396|0;b=f|0;C=f+4|0;D=f+8|0;f=0;do{E=c[B>>2]|0;g[b>>2]=+g[E+(f*44|0)>>2]-n;g[C>>2]=+g[E+(f*44|0)+4>>2]-o;g[D>>2]=+g[E+(f*44|0)+8>>2]-p;u=+wB(b);F=+g[E+(f*44|0)+24>>2];G=u<16.0?16.0:u;u=F*F*16.0/(G*G);H=+g[m>>2]+u*+g[E+(f*44|0)+12>>2];g[m>>2]=H;I=+g[l>>2]+u*+g[E+(f*44|0)+16>>2];g[l>>2]=I;J=+g[k>>2]+u*+g[E+(f*44|0)+20>>2];g[k>>2]=J;g[w>>2]=+g[w>>2]+u*+g[b>>2];g[y>>2]=+g[y>>2]+u*+g[C>>2];g[A>>2]=+g[A>>2]+u*+g[D>>2];f=f+1|0;}while((f|0)<(c[h>>2]|0));K=c[(c[4917466]|0)+32>>2]|0;L=H;M=I;N=J}else{K=q;L=r;M=s;N=t}do{if((K|0)==0){t=+(c[253580]|0);q=d+180|0;if(+g[q>>2]>t){g[q>>2]=t}q=d+184|0;if(+g[q>>2]>t){g[q>>2]=t}q=d+188|0;if(!(+g[q>>2]>t)){break}g[q>>2]=t}}while(0);do{if((c[(c[4919884]|0)+32>>2]|0)!=0){if((c[j>>2]&4|0)==0){break}K=~~+g[d+180>>2];t=+g[d+184>>2];s=+(K|0);do{if(t>s){O=~~t}else{r=+g[d+188>>2];if(!(r>s)){O=K;break}O=~~r}}while(0);K=~~L;s=+(K|0);do{if(M>s){P=~~M}else{if(!(N>s)){P=K;break}P=~~N}}while(0);Tk[c[4886344]&255](0,104944,(K=i,i=i+16|0,c[K>>2]=O,c[K+8>>2]=P,K)|0);i=K}}while(0);P=d+192|0;a[P]=qk[c[4886378]&7](+g[d+180>>2])|0;a[P+1|0]=qk[c[4886378]&7](+g[d+184>>2])|0;a[P+2|0]=qk[c[4886378]&7](+g[d+188>>2])|0;a[P+3|0]=-1;+wB(w);N=+g[w>>2];M=+g[y>>2];L=+g[A>>2];g[d+168>>2]=N*+g[d+28>>2]+M*+g[d+32>>2]+L*+g[d+36>>2];g[d+172>>2]=N*+g[d+40>>2]+M*+g[d+44>>2]+L*+g[d+48>>2];g[d+176>>2]=N*+g[d+52>>2]+M*+g[d+56>>2]+L*+g[d+60>>2];g[v>>2]=N;g[x>>2]=M;g[z>>2]=L;i=e;return}function eS(a,b){a=a|0;b=b|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0,r=0.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.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0.0,Q=0,S=0,T=0.0,U=0,V=0,W=0.0,X=0,Y=0,Z=0.0,_=0,$=0.0,aa=0.0,ba=0.0,ca=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0.0,va=0,wa=0.0,xa=0.0,ya=0.0,za=0.0,Aa=0.0,Ba=0.0,Ca=0,Da=0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0,La=0,Ma=0.0,Na=0.0,Oa=0.0,Pa=0.0,Qa=0.0,Ra=0.0,Sa=0,Ta=0.0;e=i;i=i+16|0;f=e|0;if((c[a+4>>2]&128|0)==0){h=a+68|0;j=a+72|0;k=a+76|0}else{h=a+12|0;j=a+16|0;k=a+20|0}l=(+g[h>>2]- +g[b+232>>2])*+g[b+256>>2];h=~~+R(l);m=l- +(h|0);if((h|0)<0){n=0}else{o=(c[b+268>>2]|0)-1|0;n=(h|0)<(o|0)?h:o}l=(+g[j>>2]- +g[b+236>>2])*+g[b+260>>2];j=~~+R(l);p=l- +(j|0);if((j|0)<0){q=0}else{o=(c[b+272>>2]|0)-1|0;q=(j|0)<(o|0)?j:o}l=(+g[k>>2]- +g[b+240>>2])*+g[b+264>>2];k=~~+R(l);r=l- +(k|0);if((k|0)<0){s=0}else{o=(c[b+276>>2]|0)-1|0;s=(k|0)<(o|0)?k:o}o=a+188|0;g[o>>2]=0.0;k=a+184|0;g[k>>2]=0.0;j=a+180|0;g[j>>2]=0.0;h=a+204|0;g[h>>2]=0.0;t=a+200|0;g[t>>2]=0.0;u=a+196|0;g[u>>2]=0.0;v=f+8|0;g[v>>2]=0.0;w=f+4|0;g[w>>2]=0.0;x=f|0;g[x>>2]=0.0;f=c[b+268>>2]|0;y=f<<3;z=c[b+272>>2]|0;A=da(y,z)|0;B=c[b+280>>2]|0;C=(da(y,q)|0)+(n<<3)+(da(s,A)|0)|0;D=b+284|0;l=0.0;E=0;F=0.0;G=0.0;H=0.0;I=0.0;J=0.0;K=0.0;L=0.0;M=0.0;N=0.0;while(1){if((E&1|0)==0){O=0;P=1.0-m;Q=C}else{O=(n+1|0)>=(f-1|0)|0;P=m;Q=C+8|0}if((E&2|0)==0){S=O;T=1.0-p;U=Q}else{S=(q+1|0)<(z-1|0)?O:1;T=p;U=Q+y|0}if((E&4|0)==0){V=S;W=1.0-r;X=U}else{V=(s+1|0)<((c[b+276>>2]|0)-1|0)?S:1;W=r;X=U+A|0}Y=B+X|0;Z=P*T*W;do{if((V|0)==0){_=c[D>>2]|0;if((_|0)==0){if(((d[B+(X+1)|0]|0)+(d[Y]|0)+(d[B+(X+2)|0]|0)+(d[B+(X+3)|0]|0)+(d[B+(X+4)|0]|0)|0)==(-(d[B+(X+5)|0]|0)|0)){$=l;aa=F;ba=G;ca=H;ea=I;fa=J;ga=K;ha=L;ia=M;ja=N;break}ka=F+Z*+(d[Y]|0|0);g[j>>2]=ka;la=G+Z*+(d[B+(X+1)|0]|0|0);g[k>>2]=la;ma=H+Z*+(d[B+(X+2)|0]|0|0);g[o>>2]=ma;na=I+Z*+(d[B+(X+3)|0]|0|0);g[u>>2]=na;oa=J+Z*+(d[B+(X+4)|0]|0|0);g[t>>2]=oa;pa=+(d[B+(X+5)|0]|0|0);qa=ka;ra=la;sa=ma;ta=na;ua=oa}else{va=((X|0)/8|0)*6|0;if(!(+g[_+(va<<2)>>2]+ +g[_+((va|1)<<2)>>2]+ +g[_+(va+2<<2)>>2]+ +g[_+(va+3<<2)>>2]+ +g[_+(va+4<<2)>>2]+ +g[_+(va+5<<2)>>2]!=0.0)){$=l;aa=F;ba=G;ca=H;ea=I;fa=J;ga=K;ha=L;ia=M;ja=N;break}va=((X|0)/8|0)*6|0;oa=F+Z*+g[_+(va<<2)>>2];g[j>>2]=oa;na=G+Z*+g[_+((va|1)<<2)>>2];g[k>>2]=na;ma=H+Z*+g[_+(va+2<<2)>>2];g[o>>2]=ma;la=I+Z*+g[_+(va+3<<2)>>2];g[u>>2]=la;ka=J+Z*+g[_+(va+4<<2)>>2];g[t>>2]=ka;pa=+g[_+(va+5<<2)>>2];qa=oa;ra=na;sa=ma;ta=la;ua=ka}ka=K+Z*pa;g[h>>2]=ka;va=(d[B+(X+7)|0]|0)<<2;_=(d[B+(X+6)|0]|0)<<2;la=+g[1195840+(_<<2)>>2];ma=la*+g[1195840+(va<<2)>>2];na=+g[1195840+((_+256&1020)<<2)>>2];oa=Z*+g[1195840+((va+256&1020)<<2)>>2]*la+L;g[x>>2]=oa;la=Z*ma+M;g[w>>2]=la;ma=Z*na+N;g[v>>2]=ma;$=l+Z;aa=qa;ba=ra;ca=sa;ea=ta;fa=ua;ga=ka;ha=oa;ia=la;ja=ma}else{$=l;aa=F;ba=G;ca=H;ea=I;fa=J;ga=K;ha=L;ia=M;ja=N}}while(0);Y=E+1|0;if((Y|0)<8){l=$;E=Y;F=aa;G=ba;H=ca;I=ea;J=fa;K=ga;L=ha;M=ia;N=ja}else{break}}if(!($>0.0&$<.99)){wa=aa;xa=ba;ya=ca;za=ea;Aa=fa;Ba=ga;Ca=c[4919920]|0;Da=Ca+28|0;Ea=+g[Da>>2];Fa=wa*Ea;g[j>>2]=Fa;Ga=+g[Da>>2];Ha=xa*Ga;g[k>>2]=Ha;Ia=+g[Da>>2];Ja=ya*Ia;g[o>>2]=Ja;Ka=c[4919868]|0;La=Ka+28|0;Ma=+g[La>>2];Na=za*Ma;g[u>>2]=Na;Oa=+g[La>>2];Pa=Aa*Oa;g[t>>2]=Pa;Qa=+g[La>>2];Ra=Ba*Qa;g[h>>2]=Ra;Sa=a+156|0;Ta=+MB(x,Sa);i=e;return}ja=1.0/$;$=ja*aa;g[j>>2]=$;aa=ja*ba;g[k>>2]=aa;ba=ja*ca;g[o>>2]=ba;ca=ja*ea;g[u>>2]=ca;ea=ja*fa;g[t>>2]=ea;fa=ja*ga;g[h>>2]=fa;wa=$;xa=aa;ya=ba;za=ca;Aa=ea;Ba=fa;Ca=c[4919920]|0;Da=Ca+28|0;Ea=+g[Da>>2];Fa=wa*Ea;g[j>>2]=Fa;Ga=+g[Da>>2];Ha=xa*Ga;g[k>>2]=Ha;Ia=+g[Da>>2];Ja=ya*Ia;g[o>>2]=Ja;Ka=c[4919868]|0;La=Ka+28|0;Ma=+g[La>>2];Na=za*Ma;g[u>>2]=Na;Oa=+g[La>>2];Pa=Aa*Oa;g[t>>2]=Pa;Qa=+g[La>>2];Ra=Ba*Qa;g[h>>2]=Ra;Sa=a+156|0;Ta=+MB(x,Sa);i=e;return}function fS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+208|0;h=f|0;j=c[253203]|0;if((c[j+280>>2]|0)==0){k=0;l=208;m=0;i=f;return k|0}n$(h|0,0,208)|0;g[h+68>>2]=+g[a>>2];g[h+72>>2]=+g[a+4>>2];g[h+76>>2]=+g[a+8>>2];eS(h,j);g[b>>2]=+g[h+180>>2];g[b+4>>2]=+g[h+184>>2];g[b+8>>2]=+g[h+188>>2];g[d>>2]=+g[h+196>>2];g[d+4>>2]=+g[h+200>>2];g[d+8>>2]=+g[h+204>>2];g[e>>2]=+g[h+156>>2];g[e+4>>2]=+g[h+160>>2];g[e+8>>2]=+g[h+164>>2];k=1;l=208;m=0;i=f;return k|0}function gS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0;f=i;i=i+208|0;h=f|0;if((c[e+280>>2]|0)==0){j=0;k=208;l=0;i=f;return j|0}n$(h|0,0,208)|0;g[h+68>>2]=+g[a>>2];g[h+72>>2]=+g[a+4>>2];g[h+76>>2]=+g[a+8>>2];eS(h,e);m=+g[h+156>>2];n=+g[d>>2];o=+g[h+160>>2];e=d+4|0;p=+g[h+164>>2];h=d+8|0;if(m*n+o*+g[e>>2]+p*+g[h>>2]>.20000000298023224){g[b>>2]=m;g[b+4>>2]=o;g[b+8>>2]=p;j=1;k=208;l=0;i=f;return j|0}else{g[b>>2]=n;g[b+4>>2]=+g[e>>2];g[b+8>>2]=+g[h>>2];j=1;k=208;l=0;i=f;return j|0}return 0}function hS(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0;b=c[253354]|0;if(!((c[(c[4919892]|0)+32>>2]|0)!=0&(b|0)!=0&(b|0)>0)){d=-1;e=d+1|0;return e|0}f=+g[a>>2];h=c[253355]|0;i=+g[a+4>>2];j=+g[a+8>>2];k=68719476736.0;a=0;l=-1;while(1){m=f- +g[h+(a*12|0)>>2];n=i- +g[h+(a*12|0)+4>>2];o=j- +g[h+(a*12|0)+8>>2];p=m*m+n*n+o*o;q=k>p;r=q?a:l;s=a+1|0;if((s|0)<(b|0)){k=q?p:k;a=s;l=r}else{d=r;break}}e=d+1|0;return e|0}function iS(a,b,c,d,e,f,h,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0;l=i;i=i+16|0;m=l|0;n=+g[d>>2];o=+g[e>>2]-n;p=+g[h>>2];q=+g[j>>2]-p;r=+g[h+4>>2];s=+g[j+4>>2]-r;t=+g[f>>2]-n;n=+g[k>>2]-p;p=+g[k+4>>2]-r;r=q*p-s*n;k=+S(+r)>1.0e-5;if(k){g[a>>2]=(-0.0-(s*t-o*p))/r;g[b>>2]=(-0.0-(o*n-q*t))/r}j=e+4|0;h=d+4|0;t=+g[h>>2];o=+g[j>>2]-t;u=f+4|0;v=+g[u>>2]-t;if(k){g[a+4>>2]=(-0.0-(s*v-p*o))/r;g[b+4>>2]=(-0.0-(n*o-q*v))/r}w=e+8|0;x=d+8|0;v=+g[x>>2];o=+g[w>>2]-v;y=f+8|0;t=+g[y>>2]-v;if(k){g[a+8>>2]=(-0.0-(s*t-p*o))/r;g[b+8>>2]=(-0.0-(n*o-q*t))/r}+wB(a);+wB(b);r=+g[c>>2];t=+g[c+4>>2];do{if(r==0.0&t==0.0){if(!(+g[c+8>>2]==0.0)){z=10;break}q=+g[d>>2];o=+g[f>>2]-q;n=+g[h>>2];p=+g[u>>2]-n;s=+g[x>>2];v=+g[y>>2]-s;A=+g[e>>2]-q;q=+g[j>>2]-n;n=+g[w>>2]-s;g[m>>2]=p*n-v*q;g[m+4>>2]=v*A-o*n;g[m+8>>2]=o*q-p*A}else{z=10}}while(0);if((z|0)==10){g[m>>2]=r;g[m+4>>2]=t;g[m+8>>2]=+g[c+8>>2]}z=m|0;+wB(z);t=+g[a>>2];r=+g[z>>2];w=m+4|0;A=+g[w>>2];j=a+4|0;p=+g[j>>2];q=A*p;e=m+8|0;o=+g[e>>2];m=a+8|0;n=+g[m>>2];v=o*n;s=t-r*(t*r+q+v);g[a>>2]=s;t=r*s;s=p-A*(q+t+v);g[j>>2]=s;g[m>>2]=n-o*(v+(t+s*A));+wB(a);g[c>>2]=+g[z>>2];g[c+4>>2]=+g[w>>2];g[c+8>>2]=+g[e>>2];i=l;return}function jS(a){a=a|0;var b=0,d=0,e=0,f=0,h=0.0,j=0,k=0.0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0;b=i;i=i+16|0;d=b|0;e=a+4|0;f=c[e>>2]|0;h=+g[f+12>>2];j=c[a>>2]|0;k=+g[j+12>>2];l=a+8|0;m=c[l>>2]|0;n=+g[m+16>>2];o=+g[j+16>>2];p=+g[m+12>>2];q=+g[f+16>>2];r=(h-k)*(n-o)-(p-k)*(q-o);if(+S(+r)<9.99999993922529e-9){s=0;i=b;return s|0}t=d|0;u=d+4|0;v=d+8|0;d=0;w=j;x=k;y=o;z=f;A=h;f=m;h=n;n=p;p=q;m=j;q=o;o=k;while(1){j=a+(d<<2)|0;k=x+10.0;B=A-k;C=h-y;D=n-k;E=p-y;F=(B*C-D*E)/r;G=q-y;H=o-k;k=(D*G-C*H)/r;C=(E*H-B*G)/r;G=F*+g[m>>2]+k*+g[z>>2]+C*+g[f>>2];I=w+40|0;g[I>>2]=G;B=F*+g[m+4>>2]+k*+g[z+4>>2]+C*+g[f+4>>2];J=w+44|0;g[J>>2]=B;H=F*+g[m+8>>2]+k*+g[z+8>>2]+C*+g[f+8>>2];g[I>>2]=G- +g[w>>2];g[J>>2]=B- +g[w+4>>2];g[w+48>>2]=H- +g[w+8>>2];+wB(I);I=c[j>>2]|0;H=+g[I+12>>2];B=+g[I+16>>2]+10.0;J=c[e>>2]|0;G=+g[J+12>>2]-H;K=c[l>>2]|0;C=+g[K+16>>2]-B;k=+g[K+12>>2]-H;F=+g[J+16>>2]-B;E=(G*C-k*F)/r;L=c[a>>2]|0;D=+g[L+16>>2]-B;B=+g[L+12>>2]-H;H=(k*D-C*B)/r;C=(F*B-G*D)/r;D=E*+g[L>>2]+H*+g[J>>2]+C*+g[K>>2];g[t>>2]=D;G=E*+g[L+4>>2]+H*+g[J+4>>2]+C*+g[K+4>>2];g[u>>2]=G;B=E*+g[L+8>>2]+H*+g[J+8>>2]+C*+g[K+8>>2];g[v>>2]=B;g[t>>2]=D- +g[I>>2];g[u>>2]=G- +g[I+4>>2];g[v>>2]=B- +g[I+8>>2];+wB(t);I=c[j>>2]|0;B=+g[I+32>>2];G=+g[I+48>>2];D=+g[I+36>>2];C=+g[I+44>>2];H=+g[I+40>>2];E=+g[I+28>>2];g[I+52>>2]=(B*G-D*C)*+g[t>>2]+(D*H-G*E)*+g[u>>2]+(C*E-B*H)*+g[v>>2]<0.0?-1.0:1.0;I=d+1|0;if((I|0)>=3){s=1;break}j=c[a+(I<<2)>>2]|0;K=c[e>>2]|0;J=c[l>>2]|0;L=c[a>>2]|0;d=I;w=j;x=+g[j+12>>2];y=+g[j+16>>2];z=K;A=+g[K+12>>2];f=J;h=+g[J+16>>2];n=+g[J+12>>2];p=+g[K+16>>2];m=L;q=+g[L+16>>2];o=+g[L+12>>2]}i=b;return s|0}function kS(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0;b=i;i=i+40|0;d=b|0;e=b+16|0;if((c[(c[4917410]|0)+32>>2]|0)!=0){f=1;i=b;return f|0}h=e|0;j=e+12|0;KB(h,j);e=d|0;k=d+4|0;l=d+8|0;d=0;do{m=+g[a+((d&1)*12|0)>>2];n=+g[a+((d>>>1&1)*12|0)+4>>2];o=+g[a+((d>>>2&1)*12|0)+8>>2];g[e>>2]=+g[253582]+(m*+g[253585]+n*+g[253588]+o*+g[253591]);g[k>>2]=+g[253583]+(m*+g[253586]+n*+g[253589]+o*+g[253592]);g[l>>2]=+g[253584]+(m*+g[253587]+n*+g[253590]+o*+g[253593]);LB(e,h,j);d=d+1|0;}while((d|0)<8);d=(c[253512]|0)>>>6&1|4;e=0;l=0;while(1){k=IB(h,j,1014180+(l*20|0)|0)|0;if((k|0)==3){p=1}else if((k|0)==2){f=2;q=9;break}else{p=e}k=l+1|0;if((k|0)<(d|0)){e=p;l=k}else{break}}if((q|0)==9){i=b;return f|0}f=(p|0)!=0|0;i=b;return f|0}function lS(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=(c[253512]|0)>>>6&1|4;d=a|0;e=a+12|0;a=0;f=0;while(1){g=IB(d,e,1014180+(f*20|0)|0)|0;if((g|0)==2){h=2;i=6;break}else if((g|0)==3){j=1}else{j=a}g=f+1|0;if((g|0)<(b|0)){a=j;f=g}else{break}}if((i|0)==6){return h|0}h=(j|0)!=0|0;return h|0}function mS(a,b){a=a|0;b=+b;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0;d=+g[a>>2];e=+g[a+4>>2];f=+g[a+8>>2];h=+g[253582]+(d*+g[253585]+e*+g[253588]+f*+g[253591]);i=+g[253583]+(d*+g[253586]+e*+g[253589]+f*+g[253592]);j=+g[253584]+(d*+g[253587]+e*+g[253590]+f*+g[253593]);a=(c[253512]|0)>>>6&1|4;if((c[(c[4917410]|0)+32>>2]|0)!=0){k=1;return k|0}f=-0.0-b;l=0;m=0;do{e=h*+g[1014180+(l*20|0)>>2]+i*+g[1014184+(l*20|0)>>2]+j*+g[1014188+(l*20|0)>>2]- +g[1014192+(l*20|0)>>2];if(eb?m:1;l=l+1|0;}while((l|0)<(a|0));if((n|0)==6){return k|0}k=(m|0)!=0|0;return k|0}function nS(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0;d=(c[253512]|0)>>>6&1|4;if((c[(c[4917410]|0)+32>>2]|0)!=0){e=1;return e|0}f=+g[a>>2];h=+g[a+4>>2];i=+g[a+8>>2];j=-0.0-b;a=0;k=0;do{l=f*+g[1014180+(a*20|0)>>2]+h*+g[1014184+(a*20|0)>>2]+i*+g[1014188+(a*20|0)>>2]- +g[1014192+(a*20|0)>>2];if(lb?k:1;a=a+1|0;}while((a|0)<(d|0));if((m|0)==6){return e|0}e=(k|0)!=0|0;return e|0}function oS(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0.0,k=0,l=0.0,m=0,n=0.0;f=a+4|0;h=a+8|0;i=+g[b+48>>2]+(+g[a>>2]*+g[b>>2]+ +g[f>>2]*+g[b+16>>2]+ +g[h>>2]*+g[b+32>>2]);g[d>>2]=i;j=+g[b+52>>2]+(+g[a>>2]*+g[b+4>>2]+ +g[f>>2]*+g[b+20>>2]+ +g[h>>2]*+g[b+36>>2]);k=d+4|0;g[k>>2]=j;l=+g[b+56>>2]+(+g[a>>2]*+g[b+8>>2]+ +g[f>>2]*+g[b+24>>2]+ +g[h>>2]*+g[b+40>>2]);m=d+8|0;g[m>>2]=l;n=+g[b+60>>2]+(+g[a>>2]*+g[b+12>>2]+ +g[f>>2]*+g[b+28>>2]+ +g[h>>2]*+g[b+44>>2]);b=d+12|0;g[b>>2]=n;g[e>>2]=i*+g[c>>2]+j*+g[c+16>>2]+l*+g[c+32>>2]+n*+g[c+48>>2];g[e+4>>2]=+g[d>>2]*+g[c+4>>2]+ +g[k>>2]*+g[c+20>>2]+ +g[m>>2]*+g[c+36>>2]+ +g[b>>2]*+g[c+52>>2];g[e+8>>2]=+g[d>>2]*+g[c+8>>2]+ +g[k>>2]*+g[c+24>>2]+ +g[m>>2]*+g[c+40>>2]+ +g[b>>2]*+g[c+56>>2];g[e+12>>2]=+g[d>>2]*+g[c+12>>2]+ +g[k>>2]*+g[c+28>>2]+ +g[m>>2]*+g[c+44>>2]+ +g[b>>2]*+g[c+60>>2];return}function pS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0,j=0.0;f=a+12|0;h=+g[a>>2]/+g[f>>2];g[d>>2]=h;i=d+4|0;g[i>>2]=+g[a+4>>2]/+g[f>>2];j=+g[f>>2];f=d+8|0;g[f>>2]=(+g[a+8>>2]+j)/(j*2.0);j=(h+1.0)*.5*+(c[b+436>>2]|0);g[e>>2]=j;h=(+g[i>>2]+1.0)*.5*+(c[b+440>>2]|0);b=e+4|0;g[b>>2]=h;g[e+8>>2]=+g[f>>2];g[e>>2]=+(~~(j+.5)|0);g[b>>2]=+(~~(h+.5)|0);return}function qS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=0;do{e=d<<2;f=a+(e<<2)|0;h=a+((e|1)<<2)|0;i=a+((e|2)<<2)|0;j=a+((e|3)<<2)|0;g[c+(e<<2)>>2]=+g[f>>2]*+g[b>>2]+ +g[h>>2]*+g[b+16>>2]+ +g[i>>2]*+g[b+32>>2]+ +g[j>>2]*+g[b+48>>2];g[c+((e|1)<<2)>>2]=+g[f>>2]*+g[b+4>>2]+ +g[h>>2]*+g[b+20>>2]+ +g[i>>2]*+g[b+36>>2]+ +g[j>>2]*+g[b+52>>2];g[c+((e|2)<<2)>>2]=+g[f>>2]*+g[b+8>>2]+ +g[h>>2]*+g[b+24>>2]+ +g[i>>2]*+g[b+40>>2]+ +g[j>>2]*+g[b+56>>2];g[c+((e|3)<<2)>>2]=+g[f>>2]*+g[b+12>>2]+ +g[h>>2]*+g[b+28>>2]+ +g[i>>2]*+g[b+44>>2]+ +g[j>>2]*+g[b+60>>2];d=d+1|0;}while((d|0)<4);return}function rS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0.0,v=0,w=0,x=0.0,y=0,z=0.0,A=0,B=0.0,C=0,D=0.0,E=0,F=0.0,G=0,H=0.0,I=0,J=0.0,K=0,L=0,M=0.0;e=i;i=i+64|0;f=e|0;if((c[a>>2]|0)!=0){m$(d|0,b+188|0,188)|0;h=64;j=0;i=e;return}k=+g[a+68>>2];l=d|0;g[l>>2]=k;m=+g[a+72>>2];n=d+4|0;g[n>>2]=m;o=+g[a+76>>2];p=d+8|0;g[p>>2]=o;q=a+28|0;r=+g[q>>2];s=d+12|0;g[s>>2]=r;t=a+32|0;u=+g[t>>2];v=d+16|0;g[v>>2]=u;w=a+36|0;x=+g[w>>2];y=d+20|0;g[y>>2]=x;z=+g[a+40>>2];A=d+24|0;g[A>>2]=z;B=+g[a+44>>2];C=d+28|0;g[C>>2]=B;D=+g[a+48>>2];E=d+32|0;g[E>>2]=D;F=+g[a+52>>2];G=d+36|0;g[G>>2]=F;H=+g[a+56>>2];I=d+40|0;g[I>>2]=H;J=+g[a+60>>2];K=d+44|0;g[K>>2]=J;L=f|0;g[L>>2]=r;g[f+16>>2]=z;g[f+32>>2]=F;g[f+48>>2]=k;g[f+4>>2]=u;g[f+20>>2]=B;g[f+36>>2]=H;g[f+52>>2]=m;g[f+8>>2]=x;g[f+24>>2]=D;g[f+40>>2]=J;g[f+56>>2]=o;g[f+12>>2]=0.0;g[f+28>>2]=0.0;g[f+44>>2]=0.0;g[f+60>>2]=1.0;bQ(L,d+124|0);qS(L,b+248|0,d+60|0);o=+g[b>>2]- +g[l>>2];J=+g[b+4>>2]- +g[n>>2];D=+g[b+8>>2]- +g[p>>2];do{if((c[a+64>>2]|0)==0){M=1.0}else{x=+g[q>>2];m=+g[t>>2];H=+g[w>>2];B=+T(x*x+m*m+H*H);if(!(B!=0.0)){M=0.0;break}M=1.0/B}}while(0);g[d+48>>2]=M*(o*+g[s>>2]+J*+g[v>>2]+D*+g[y>>2]);g[d+52>>2]=M*(o*+g[A>>2]+J*+g[C>>2]+D*+g[E>>2]);g[d+56>>2]=M*(o*+g[G>>2]+J*+g[I>>2]+D*+g[K>>2]);h=64;j=0;i=e;return}function sS(b,d,e,f,h,i,j){b=b|0;d=+d;e=+e;f=+f;h=+h;i=+i;j=+j;var k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0;do{if(j==0.0){if(!(d==-0.0-e)){k=4;break}l=+g[b>>2];m=+g[b+4>>2];n=+g[b+8>>2];o=+T(e*e+h*h);p=e/o;q=h/o;o=+g[b+12>>2];r=p*o;s=+g[b+16>>2];t=p*s;u=+g[b+20>>2];v=p*u;p=+g[b+24>>2];w=r+q*p;g[b+528>>2]=w;x=+g[b+28>>2];y=t+q*x;g[b+532>>2]=y;z=+g[b+32>>2];A=v+q*z;g[b+536>>2]=A;B=-0.0-q;g[b+548>>2]=r+p*B;g[b+552>>2]=t+x*B;g[b+556>>2]=v+z*B;C=n;D=m;E=l;F=o;G=s;H=u;I=w;J=y;K=A}else{k=4}}while(0);if((k|0)==4){A=+g[b+24>>2];y=+g[b>>2]+A*j;w=+g[b+28>>2];u=+g[b+4>>2]+w*j;s=+g[b+32>>2];o=+g[b+8>>2]+s*j;l=e+j;e=h*h;m=+T(e+l*l);n=+g[b+12>>2];B=l/m;l=+g[b+16>>2];z=+g[b+20>>2];v=h/m;m=n*B+A*v;g[b+528>>2]=m;x=B*l+v*w;g[b+532>>2]=x;t=B*z+v*s;g[b+536>>2]=t;v=d+j;j=+T(e+v*v);e=(-0.0-v)/j;v=(-0.0-h)/j;g[b+548>>2]=n*e+A*v;g[b+552>>2]=e*l+v*w;g[b+556>>2]=e*z+v*s;C=o;D=u;E=y;F=n;G=l;H=z;I=m;J=x;K=t}t=+T(f*f+h*h);x=f/t;f=h/t;t=x*F;F=x*G;k=b+572|0;G=x*H;L=b+576|0;H=+g[b+36>>2];g[b+568>>2]=t+f*H;x=+g[b+40>>2];g[k>>2]=F+f*x;h=+g[b+44>>2];g[L>>2]=G+f*h;M=b+592|0;N=b+596|0;m=-0.0-f;g[b+588>>2]=t+H*m;g[M>>2]=F+x*m;g[N>>2]=G+h*m;a[b+544|0]=3;g[b+540>>2]=E*I+D*J+C*K;HB(b+528|0);O=b+548|0;a[b+564|0]=3;g[b+560>>2]=E*+g[O>>2]+D*+g[b+552>>2]+C*+g[b+556>>2];HB(O);O=b+568|0;a[b+584|0]=3;g[b+580>>2]=E*+g[O>>2]+D*+g[k>>2]+C*+g[L>>2];HB(O);O=b+588|0;a[b+604|0]=3;g[b+600>>2]=E*+g[O>>2]+D*+g[M>>2]+C*+g[N>>2];HB(O);if(!(i!=0.0)){return}K=+g[b+12>>2];J=+g[b+16>>2];I=+g[b+20>>2];m=K*-1.0;O=b+608|0;g[O>>2]=m;h=J*-1.0;g[b+612>>2]=h;G=I*-1.0;g[b+616>>2]=G;a[b+624|0]=3;g[b+620>>2]=(E+K*i)*m+(D+J*i)*h+(C+I*i)*G;HB(O);O=b+396|0;c[O>>2]=c[O>>2]|64;return}function tS(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;var f=0.0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;f=+g[(c[4917312]|0)+28>>2];do{if(f!=0.0){h=c[a+660>>2]|0;if((h|0)==2){i=b/(-0.0-f);break}else if((h|0)==1){i=b/f;break}else{i=0.0;break}}else{i=f}}while(0);f=b;j=f*+X(+g[a+460>>2]*3.141592653589793/360.0);k=f*+X(+g[a+456>>2]*3.141592653589793/360.0);f=k+k;l=j+j;m=b*2.0;g[a+464>>2]=m/f;g[a+480>>2]=0.0;g[a+496>>2]=(i*2.0+(k-k))/f;g[a+512>>2]=m*i/f;g[a+468>>2]=0.0;g[a+484>>2]=m/l;g[a+500>>2]=(j-j)/l;g[a+516>>2]=0.0;g[a+476>>2]=0.0;g[a+492>>2]=0.0;g[a+508>>2]=-1.0;g[a+524>>2]=0.0;if((e|0)==0){return}sS(a,-0.0-k,k,j,b,d,i);return}function uS(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0;b=+g[(c[4917290]|0)+28>>2];d=+g[a+652>>2];e=d-b;f=a+472|0;g[f>>2]=0.0;h=a+488|0;g[h>>2]=0.0;i=(-0.0-(b+d))/e;j=a+504|0;g[j>>2]=i;k=b*d*-2.0/e;l=a+520|0;g[l>>2]=k;if((c[a+388>>2]|0)==0){return}e=+g[a+408>>2];d=+g[a+412>>2];b=+g[a+416>>2];m=e*+g[a+24>>2]+d*+g[a+28>>2]+b*+g[a+32>>2];n=-0.0-m;o=e*+g[a+36>>2]+d*+g[a+40>>2]+b*+g[a+44>>2];p=e*+g[a+12>>2]+d*+g[a+16>>2]+b*+g[a+20>>2];q=e*+g[a>>2]+d*+g[a+4>>2]+b*+g[a+8>>2]- +g[a+420>>2];if(m>-0.0){r=-1.0}else{r=+(m!=-0.0|0)}if(o<0.0){s=-1.0}else{s=+(o!=0.0|0)}m=2.0/(p+((r+ +g[a+496>>2])/+g[a+464>>2]*n+o*((s+ +g[a+500>>2])/+g[a+484>>2]))+q*((i+1.0)/k));g[f>>2]=m*n;g[h>>2]=o*m;g[j>>2]=1.0-p*m;g[l>>2]=q*m;return}function vS(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0.0,j=0,k=0.0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0;e=d+4|0;f=+g[e>>2];h=d+16|0;i=+g[h>>2];j=d+20|0;k=+g[j>>2];l=d+8|0;m=+g[l>>2];n=+g[d>>2];o=d+12|0;p=+g[o>>2];q=i-f;g[b+464>>2]=2.0/q;g[b+480>>2]=0.0;g[b+496>>2]=0.0;g[b+512>>2]=(f+i)/q;g[b+468>>2]=0.0;q=k-m;g[b+484>>2]=2.0/q;g[b+500>>2]=0.0;g[b+516>>2]=(-0.0-k-m)/q;g[b+472>>2]=0.0;g[b+488>>2]=0.0;q=p-n;g[b+504>>2]=-2.0/q;g[b+520>>2]=(-0.0-(n+p))/q;g[b+476>>2]=0.0;g[b+492>>2]=0.0;g[b+508>>2]=0.0;g[b+524>>2]=1.0;q=+g[b+24>>2];g[b+528>>2]=q;p=+g[b+28>>2];g[b+532>>2]=p;n=+g[b+32>>2];g[b+536>>2]=n;d=b|0;m=+g[d>>2];k=+g[e>>2];e=b+4|0;i=+g[e>>2];r=b+8|0;f=+g[r>>2];g[b+540>>2]=n*(n*k+f)+(q*(m+q*k)+p*(i+k*p));k=q*-1.0;g[b+548>>2]=k;q=p*-1.0;g[b+552>>2]=q;p=n*-1.0;g[b+556>>2]=p;n=-0.0- +g[h>>2];g[b+560>>2]=p*(p*n+f)+(k*(m+k*n)+q*(i+q*n));n=+g[b+36>>2];g[b+568>>2]=n;q=+g[b+40>>2];g[b+572>>2]=q;k=+g[b+44>>2];g[b+576>>2]=k;p=+g[l>>2];g[b+580>>2]=k*(k*p+f)+(n*(m+n*p)+q*(i+p*q));p=n*-1.0;g[b+588>>2]=p;n=q*-1.0;g[b+592>>2]=n;q=k*-1.0;g[b+596>>2]=q;k=-0.0- +g[j>>2];g[b+600>>2]=q*(q*k+f)+(p*(m+p*k)+n*(i+n*k));k=+g[b+12>>2]*-1.0;g[b+608>>2]=k;n=+g[b+16>>2]*-1.0;g[b+612>>2]=n;i=+g[b+20>>2]*-1.0;g[b+616>>2]=i;p=-0.0- +g[o>>2];g[b+620>>2]=i*(i*p+ +g[r>>2])+(k*(+g[d>>2]+k*p)+n*(+g[e>>2]+n*p));a[b+544|0]=3;HB(b+528|0);a[b+564|0]=3;HB(b+548|0);a[b+584|0]=3;HB(b+568|0);a[b+604|0]=3;HB(b+588|0);a[b+624|0]=3;HB(b+608|0);e=b+396|0;c[e>>2]=c[e>>2]|64;return}function wS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0;d=i;i=i+16|0;e=d|0;if((a|0)==0){n$(b|0,0,20)|0;g[b>>2]=1.0;i=d;return}f=c[a>>2]|0;if((f|0)==2){h=b;j=a+52|0;c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[h+16>>2]=c[j+16>>2];i=d;return}else if((f|0)==4){j=c[a+84>>2]|0;h=c[a+76>>2]|0;k=e|0;vB(k,j+((c[h>>2]|0)*84|0)|0,j+((c[h+4>>2]|0)*84|0)|0,j+((c[h+8>>2]|0)*84|0)|0)|0;g[b>>2]=+g[k>>2];g[b+4>>2]=+g[e+4>>2];g[b+8>>2]=+g[e+8>>2];g[b+12>>2]=+g[e+12>>2];i=d;return}else if((f|0)==5){f=e|0;k=c[a+16>>2]|0;vB(f,k|0,k+24|0,k+48|0)|0;g[b>>2]=+g[f>>2];g[b+4>>2]=+g[e+4>>2];g[b+8>>2]=+g[e+8>>2];g[b+12>>2]=+g[e+12>>2];i=d;return}else{n$(b|0,0,20)|0;g[b>>2]=1.0;i=d;return}}function xS(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.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.0;j=i;i=i+40|0;k=j|0;l=j+24|0;wS(c[a+8>>2]|0,k);if((b|0)==1023){m=+g[k>>2];n=+g[k+4>>2];o=+g[k+8>>2];p=+g[k+12>>2];q=m;r=n;s=o;t=p;u=m;v=n;w=o;x=p}else{c[253410]=b;a=(c[253726]|0)+(b*208|0)|0;c[253357]=a;rS(a,1013652,1014328);p=+g[k>>2];o=+g[k+4>>2];n=+g[k+8>>2];m=p*+g[253585]+o*+g[253588]+n*+g[253591];y=p*+g[253586]+o*+g[253589]+n*+g[253592];z=p*+g[253587]+o*+g[253590]+n*+g[253593];a=k+12|0;A=+g[a>>2];B=+g[253582];C=+g[253583];D=+g[253584];E=A+(p*B+C*o+D*n);g[a>>2]=E;q=m;r=y;s=z;t=A+(m*B+y*C+z*D);u=p;v=o;w=n;x=E}a=d+12|0;g[a>>2]=q;k=d+16|0;g[k>>2]=r;b=d+20|0;g[b>>2]=s;F=d+24|0;yB(F,a);G=d+36|0;E=+g[k>>2];H=d+32|0;n=+g[H>>2];o=+g[b>>2];I=d+28|0;p=+g[I>>2];g[G>>2]=E*n-o*p;D=+g[F>>2];z=+g[a>>2];J=d+40|0;g[J>>2]=o*D-z*n;K=d+44|0;g[K>>2]=z*p-E*D;L=c[253725]|0;if((L|0)<=0){M=0;i=j;return M|0}N=c[253726]|0;O=0;while(1){if((c[N+(O*208|0)>>2]|0)==7){P=N+(O*208|0)+68|0;Q=N+(O*208|0)+72|0;R=N+(O*208|0)+76|0;D=+g[P>>2]*u+ +g[Q>>2]*v+ +g[R>>2]*w-x;if(!(D>64.0|D<-64.0)){break}}S=O+1|0;if((S|0)<(L|0)){O=S}else{M=0;T=21;break}}if((T|0)==21){i=j;return M|0}T=N+(O*208|0)+84|0;g[f>>2]=+g[T>>2];L=N+(O*208|0)+88|0;g[f+4>>2]=+g[L>>2];S=N+(O*208|0)+92|0;g[f+8>>2]=+g[S>>2];x=+g[P>>2];do{if(+g[T>>2]==x){w=+g[Q>>2];if(!(+g[L>>2]==w)){U=w;break}if(!(+g[S>>2]==+g[R>>2])){U=w;break}w=t*q;g[d>>2]=w;P=d+4|0;g[P>>2]=t*r;f=d+8|0;g[f>>2]=t*s;g[e>>2]=w;g[e+4>>2]=+g[P>>2];g[e+8>>2]=+g[f>>2];g[e+12>>2]=+g[219094]- +g[a>>2];g[e+16>>2]=+g[219095]- +g[k>>2];g[e+20>>2]=+g[219096]- +g[b>>2];g[e+24>>2]=+g[F>>2];g[e+28>>2]=+g[I>>2];g[e+32>>2]=+g[H>>2];g[e+36>>2]=+g[G>>2];g[e+40>>2]=+g[J>>2];g[e+44>>2]=+g[K>>2];c[h>>2]=1;M=1;i=j;return M|0}else{U=+g[Q>>2]}}while(0);w=-0.0-(q*x+r*U+s*+g[R>>2]-t);g[d>>2]=x+ +g[a>>2]*w;g[d+4>>2]=+g[Q>>2]+ +g[k>>2]*w;g[d+8>>2]=+g[R>>2]+ +g[b>>2]*w;g[e>>2]=+g[T>>2];g[e+4>>2]=+g[L>>2];g[e+8>>2]=+g[S>>2];S=e+12|0;DB(N+(O*208|0)+28|0,S|0);L=S|0;g[L>>2]=+g[219094]- +g[L>>2];S=e+16|0;g[S>>2]=+g[219095]- +g[S>>2];T=e+20|0;g[T>>2]=+g[219096]- +g[T>>2];b=e+24|0;w=+g[219094]- +g[b>>2];g[b>>2]=w;R=e+28|0;x=+g[219095]- +g[R>>2];g[R>>2]=x;d=e+32|0;t=+g[219096]- +g[d>>2];g[d>>2]=t;do{if((c[N+(O*208|0)+96>>2]|0)==0){k=c[N+(O*208|0)+104>>2]|0;if((k|0)==0){break}Q=l|0;g[Q>>2]=w;g[l+4>>2]=x;g[l+8>>2]=t;xB(b,L,Q,+(k|0));s=+g[S>>2];U=+g[d>>2];r=+g[T>>2];q=+g[R>>2];g[e+36>>2]=s*U-r*q;v=+g[b>>2];u=+g[L>>2];g[e+40>>2]=r*v-u*U;g[e+44>>2]=u*q-s*v}else{k=c[N+(O*208|0)+80>>2]|0;v=+(c[253648]|0);if((k|0)==0){s=+W(v*.003000000026077032);q=+(c[N+(O*208|0)+104>>2]|0)+s*4.0;Q=l|0;g[Q>>2]=w;g[l+4>>2]=x;g[l+8>>2]=t;xB(b,L,Q,q);q=+g[S>>2];s=+g[d>>2];u=+g[T>>2];U=+g[R>>2];g[e+36>>2]=q*s-u*U;r=+g[b>>2];D=+g[L>>2];g[e+40>>2]=u*r-D*s;g[e+44>>2]=D*U-q*r;break}else{Q=l|0;g[Q>>2]=w;g[l+4>>2]=x;g[l+8>>2]=t;xB(b,L,Q,+(k|0)*(v/1.0e3));v=+g[S>>2];r=+g[d>>2];q=+g[T>>2];U=+g[R>>2];g[e+36>>2]=v*r-q*U;D=+g[b>>2];s=+g[L>>2];g[e+40>>2]=q*D-s*r;g[e+44>>2]=s*U-v*D;break}}}while(0);c[h>>2]=0;M=1;i=j;return M|0}function yS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0,R=0.0,S=0.0,T=0.0,U=0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ba=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0;d=i;i=i+1512|0;e=d|0;f=d+24|0;h=d+88|0;j=d+120|0;k=d+136|0;l=d+1416|0;m=d+1464|0;n=k;o=d+800|0;if((c[253510]|0)!=0){Tk[c[4886344]&255](1,104880,(p=i,i=i+1|0,i=i+7&-8,c[p>>2]=0,p)|0);i=p;q=0;r=48;s=0;t=48;u=0;v=616;w=0;x=664;y=0;i=d;return q|0}if((c[(c[4917406]|0)+32>>2]|0)!=0){q=0;r=48;s=0;t=48;u=0;v=616;w=0;x=664;y=0;i=d;return q|0}if((c[(c[4919824]|0)+32>>2]|0)==1){q=0;r=48;s=0;t=48;u=0;v=616;w=0;x=664;y=0;i=d;return q|0}n$(1014328,0,188)|0;g[253585]=1.0;g[253589]=1.0;g[253593]=1.0;z=+g[253413];g[253594]=z;A=+g[253414];g[253595]=A;B=+g[253415];g[253596]=B;C=+g[253416];p=f|0;g[p>>2]=C;D=+g[253417];g[f+16>>2]=D;E=+g[253418];g[f+32>>2]=E;F=-0.0-z;z=-0.0-A;A=-0.0-B;g[f+48>>2]=E*A+(C*F+D*z);D=+g[253419];g[f+4>>2]=D;C=+g[253420];g[f+20>>2]=C;E=+g[253421];g[f+36>>2]=E;g[f+52>>2]=E*A+(D*F+C*z);C=+g[253422];g[f+8>>2]=C;D=+g[253423];g[f+24>>2]=D;E=+g[253424];g[f+40>>2]=E;g[f+56>>2]=E*A+(C*F+D*z);g[f+12>>2]=0.0;g[f+28>>2]=0.0;g[f+44>>2]=0.0;g[f+60>>2]=1.0;qS(p,9200,1014388);m$(1013840,1014328,188)|0;p=c[a>>2]|0;f=p>>>7&1023;wT(c[1126184+((p>>>17&16383)<<2)>>2]|0,p>>>2&31,c[a+4>>2]|0);p=a+8|0;G=c[p>>2]|0;vk[c[9328+(c[G>>2]<<2)>>2]&511](G);if((c[340902]|0)<=0){q=0;r=48;s=0;t=48;u=0;v=616;w=0;x=664;y=0;i=d;return q|0}G=d+104|0;H=h|0;I=h+12|0;J=h+4|0;K=h+8|0;h=0;L=-1;do{oS(1243560+(h<<4)|0,1014388,1014116,G,H);z=+g[I>>2];D=-0.0-z;F=+g[H>>2];do{if(FD){M=0;break}M=2}else{M=1}}while(0);F=+g[J>>2];do{if(FD){N=M;break}N=M|8}else{N=M|4}}while(0);F=+g[K>>2];do{if(FD){O=N;break}O=N|32}else{O=N|16}}while(0);L=O&L;h=h+1|0;}while((h|0)<(c[340902]|0));if((L|0)!=0){q=0;r=48;s=0;t=48;u=0;v=616;w=0;x=664;y=0;i=d;return q|0}L=c[340901]|0;h=(L|0)/3|0;if((L|0)>0){L=j|0;O=j+4|0;N=j+8|0;D=1.0e8;j=h;K=0;while(1){M=c[1219560+(K<<2)>>2]|0;F=+g[1243560+(M<<4)>>2]- +g[253413];z=+g[1243564+(M<<4)>>2]- +g[253414];C=+g[1243568+(M<<4)>>2]- +g[253415];A=F*F+z*z+C*C;E=A>2]|0);M=((F*+g[L>>2]+z*+g[O>>2]+C*+g[N>>2]>=0.0)<<31>>31)+j|0;J=K+3|0;if((J|0)<(c[340901]|0)){D=E;j=M;K=J}else{P=E;Q=M;break}}}else{P=1.0e8;Q=h}if((Q|0)==0){q=0;r=48;s=0;t=48;u=0;v=616;w=0;x=664;y=0;i=d;return q|0}wS(c[p>>2]|0,e);if((f|0)!=1023){c[253410]=f;p=(c[253726]|0)+(f*208|0)|0;c[253357]=p;rS(p,1013652,1014328);p=e+12|0;g[p>>2]=+g[p>>2]+(+g[e>>2]*+g[253582]+ +g[253583]*+g[e+4>>2]+ +g[253584]*+g[e+8>>2])}p=c[253725]|0;a:do{if((p|0)>0){f=c[253726]|0;D=+g[e>>2];E=+g[e+4>>2];C=+g[e+8>>2];z=+g[e+12>>2];Q=0;while(1){if((c[f+(Q*208|0)>>2]|0)==7){R=+g[f+(Q*208|0)+68>>2];S=+g[f+(Q*208|0)+72>>2];T=+g[f+(Q*208|0)+76>>2];F=D*R+E*S+C*T-z;if(!(F>64.0|F<-64.0)){break}}h=Q+1|0;if((h|0)<(p|0)){Q=h}else{U=26;break a}}if(!(+g[f+(Q*208|0)+84>>2]==R)){U=26;break}if(!(+g[f+(Q*208|0)+88>>2]==S)){U=26;break}if(!(+g[f+(Q*208|0)+92>>2]==T)){U=26}}else{U=26}}while(0);do{if((U|0)==26){T=+g[(c[340894]|0)+172>>2];if(P<=T*T){break}else{q=0}r=48;s=0;t=48;u=0;v=616;w=0;x=664;y=0;i=d;return q|0}}while(0);P=+g[253413];T=+g[253414];S=+g[253415];R=+g[253416];z=+g[253417];C=+g[253418];E=+g[253419];D=+g[253420];F=+g[253421];A=+g[253422];B=+g[253423];V=+g[253424];m$(o|0,1013700,616)|0;m$(n|0,1013652,664)|0;c[k+388>>2]=1;g[k+652>>2]=0.0;n=k+396|0;c[n>>2]=c[n>>2]&-65;U=k+392|0;if((xS(a,b,l,m,k+376|0,U)|0)==0){q=0;r=48;s=0;t=48;u=0;v=616;w=0;x=664;y=0;i=d;return q|0}if((c[U>>2]|0)!=0){c[n>>2]=c[n>>2]|1}W=P- +g[l>>2];X=T- +g[l+4>>2];Y=S- +g[l+8>>2];n=l+12|0;U=l+16|0;b=l+20|0;Z=W*+g[n>>2]+X*+g[U>>2]+Y*+g[b>>2];a=m+12|0;_=+g[a>>2];p=m+16|0;$=+g[p>>2];e=m+20|0;aa=+g[e>>2];h=l+24|0;K=l+28|0;j=l+32|0;ba=W*+g[h>>2]+X*+g[K>>2]+Y*+g[j>>2];N=m+24|0;O=m+28|0;L=m+32|0;M=l+36|0;J=l+40|0;H=l+44|0;ca=+g[H>>2];da=W*+g[M>>2]+X*+g[J>>2]+Y*ca;l=m+36|0;Y=+g[l>>2];I=m+40|0;X=+g[I>>2];W=$*Z+0.0+ +g[O>>2]*ba+X*da;G=m+44|0;ea=+g[G>>2];fa=Z*aa+0.0+ba*+g[L>>2]+da*ea;ga=+g[m>>2];g[k>>2]=_*Z+0.0+ +g[N>>2]*ba+Y*da+ga;da=+g[m+4>>2];g[k+4>>2]=W+da;W=+g[m+8>>2];g[k+8>>2]=fa+W;fa=+g[219094]-_;g[k+408>>2]=fa;_=+g[219095]-$;g[k+412>>2]=_;$=+g[219096]-aa;g[k+416>>2]=$;g[k+420>>2]=ga*fa+da*_+$*W;W=+g[n>>2];$=+g[U>>2];_=+g[b>>2];da=R*W+z*$+C*_;fa=+g[a>>2];ga=+g[p>>2];aa=+g[e>>2];ba=+g[h>>2];Z=+g[K>>2];ha=+g[j>>2];ia=R*ba+z*Z+C*ha;ja=+g[N>>2];ka=+g[O>>2];la=+g[L>>2];ma=+g[M>>2];na=+g[J>>2];oa=R*ma+z*na+C*ca;g[k+12>>2]=fa*da+0.0+ja*ia+Y*oa;g[k+16>>2]=da*ga+0.0+ia*ka+oa*X;g[k+20>>2]=da*aa+0.0+ia*la+oa*ea;ea=E*W+D*$+F*_;_=E*ba+D*Z+F*ha;ha=+g[H>>2];Z=E*ma+D*na+F*ha;na=+g[l>>2];g[k+24>>2]=fa*ea+0.0+ja*_+na*Z;ja=+g[I>>2];g[k+28>>2]=ea*ga+0.0+_*ka+Z*ja;ka=+g[G>>2];g[k+32>>2]=ea*aa+0.0+_*la+Z*ka;Z=A*+g[n>>2]+B*+g[U>>2]+V*+g[b>>2];la=A*+g[h>>2]+B*+g[K>>2]+V*+g[j>>2];_=Z*+g[p>>2]+0.0+la*+g[O>>2];aa=Z*+g[e>>2]+0.0+la*+g[L>>2];ea=A*+g[M>>2]+B*+g[J>>2]+V*ha;g[k+36>>2]=+g[a>>2]*Z+0.0+ +g[N>>2]*la+na*ea;g[k+40>>2]=_+ea*ja;g[k+44>>2]=aa+ea*ka;zS(k);g[253413]=P;g[253414]=T;g[253415]=S;g[253416]=R;g[253417]=z;g[253418]=C;g[253419]=E;g[253420]=D;g[253421]=F;g[253422]=A;g[253423]=B;g[253424]=V;m$(1013700,o|0,616)|0;q=1;r=48;s=0;t=48;u=0;v=616;w=0;x=664;y=0;i=d;return q|0}function zS(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;b=i;i=i+64|0;d=b|0;if((c[a+436>>2]|0)<1){i=b;return}if((c[a+440>>2]|0)<1){i=b;return}e=c[253194]|0;c[253194]=e+1;m$(1013652,a|0,664)|0;c[253513]=c[253195];c[253514]=c[253192];a=c[253731]|0;c[253194]=e+2;n$(1014328,0,188)|0;g[253585]=1.0;g[253589]=1.0;g[253593]=1.0;f=+g[253413];g[253594]=f;h=+g[253414];g[253595]=h;j=+g[253415];g[253596]=j;k=+g[253416];e=d|0;g[e>>2]=k;l=+g[253417];g[d+16>>2]=l;m=+g[253418];g[d+32>>2]=m;n=-0.0-f;f=-0.0-h;h=-0.0-j;g[d+48>>2]=m*h+(k*n+l*f);l=+g[253419];g[d+4>>2]=l;k=+g[253420];g[d+20>>2]=k;m=+g[253421];g[d+36>>2]=m;g[d+52>>2]=m*h+(l*n+k*f);k=+g[253422];g[d+8>>2]=k;l=+g[253423];g[d+24>>2]=l;m=+g[253424];g[d+40>>2]=m;g[d+56>>2]=m*h+(k*n+l*f);g[d+12>>2]=0.0;g[d+28>>2]=0.0;g[d+44>>2]=0.0;g[d+60>>2]=1.0;qS(e,9200,1014388);m$(1013840,1014328,188)|0;tS(1013652,+g[(c[4917288]|0)+28>>2],+g[253576],1);ES();CS((c[253732]|0)+(a*12|0)|0,(c[253731]|0)-a|0);if((c[(c[4919880]|0)+32>>2]|0)==0){i=b;return}MP();aP(c[253241]|0);dP(0);vk[c[4886363]&511](96);i=b;return}function AS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[253731]&65535;i=c[253732]|0;c[i+(h*12|0)>>2]=d<<2|e|f<<1|c[253411]|c[b+72>>2]<<17;c[i+(h*12|0)+4>>2]=g;c[i+(h*12|0)+8>>2]=a;c[253731]=(c[253731]|0)+1;return}function BS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c[e>>2]=a>>>2&31;c[d>>2]=c[1126184+((a>>>17&16383)<<2)>>2];c[b>>2]=a>>>7&1023;c[g>>2]=a>>>1&1;c[f>>2]=a&1;return}function CS(a,b){a=a|0;b=b|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0;e=i;i=i+2048|0;f=e|0;h=e+1024|0;if((b|0)<1){OP(a,b);i=e;return}j=(b|0)>65536?65536:b;b=f;n$(b|0,0,1024)|0;k=a;l=j*12|0;m=a+(j*12|0)|0;if((l|0)>0){n=k;do{o=f+((d[n]|0)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;n=n+12|0;}while(n>>>0>>0)}m=h|0;c[m>>2]=0;n=1;o=0;do{o=(c[f+(n-1<<2)>>2]|0)+o|0;c[h+(n<<2)>>2]=o;n=n+1|0;}while((n|0)<256);n=(j|0)>0;if(n){o=0;p=k;while(1){q=h+((d[p]|0)<<2)|0;r=c[q>>2]|0;c[q>>2]=r+1;q=28487136+(r*12|0)|0;r=a+(o*12|0)|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];r=o+1|0;if((r|0)<(j|0)){o=r;p=p+12|0}else{break}}}n$(b|0,0,1024)|0;p=l|1;o=28487136+p|0;if((p|0)>1){p=28487137;do{r=f+((d[p]|0)<<2)|0;c[r>>2]=(c[r>>2]|0)+1;p=p+12|0;}while(p>>>0>>0)}c[m>>2]=0;o=1;p=0;do{p=(c[f+(o-1<<2)>>2]|0)+p|0;c[h+(o<<2)>>2]=p;o=o+1|0;}while((o|0)<256);if(n){o=0;p=28487137;while(1){r=h+((d[p]|0)<<2)|0;q=c[r>>2]|0;c[r>>2]=q+1;r=a+(q*12|0)|0;q=28487136+(o*12|0)|0;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];q=o+1|0;if((q|0)<(j|0)){o=q;p=p+12|0}else{break}}}n$(b|0,0,1024)|0;p=k+2|0;o=l|2;q=k+o|0;if((o|0)>2){o=p;do{k=f+((d[o]|0)<<2)|0;c[k>>2]=(c[k>>2]|0)+1;o=o+12|0;}while(o>>>0>>0)}c[m>>2]=0;q=1;o=0;do{o=(c[f+(q-1<<2)>>2]|0)+o|0;c[h+(q<<2)>>2]=o;q=q+1|0;}while((q|0)<256);if(n){q=0;o=p;while(1){p=h+((d[o]|0)<<2)|0;k=c[p>>2]|0;c[p>>2]=k+1;p=28487136+(k*12|0)|0;k=a+(q*12|0)|0;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];c[p+8>>2]=c[k+8>>2];k=q+1|0;if((k|0)<(j|0)){q=k;o=o+12|0}else{break}}}n$(b|0,0,1024)|0;b=l|3;l=28487136+b|0;if((b|0)>3){b=28487139;do{o=f+((d[b]|0)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;b=b+12|0;}while(b>>>0>>0)}c[m>>2]=0;m=1;l=0;do{l=(c[f+(m-1<<2)>>2]|0)+l|0;c[h+(m<<2)>>2]=l;m=m+1|0;}while((m|0)<256);if(n){m=0;l=28487139;while(1){f=h+((d[l]|0)<<2)|0;b=c[f>>2]|0;c[f>>2]=b+1;f=a+(b*12|0)|0;b=28487136+(m*12|0)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];b=m+1|0;if((b|0)<(j|0)){m=b;l=l+12|0}else{break}}}if((c[253512]&6|0)!=0){OP(a,j);i=e;return}a:do{if(n){l=0;while(1){m=a+(l*12|0)|0;h=c[m>>2]|0;s=c[1126184+((h>>>17&16383)<<2)>>2]|0;t=+g[s+76>>2];if(t>1.0){break a}if(t==0.0){u=33;break}l=l+1|0;if((yS(m,h>>>7&1023)|0)!=0){break}if((l|0)>=(j|0)){break a}}if((u|0)==33){Tk[c[4886345]&255](1,164936,(l=i,i=i+8|0,c[l>>2]=s,l)|0);i=l}if((c[(c[4917380]|0)+32>>2]|0)==0){break}i=e;return}}while(0);OP(a,j);i=e;return}function DS(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0.0,q=0,r=0,s=0;b=i;c[253410]=a;d=c[253726]|0;e=d+(a*208|0)|0;c[253357]=e;c[d+(a*208|0)+144>>2]=0;c[253411]=c[253410]<<7;f=d+(a*208|0)+4|0;h=c[f>>2]|0;do{if((h&4|0)!=0){if((c[253512]&1|0)==0){break}i=b;return}}while(0);switch(c[e>>2]|0){case 2:case 3:case 6:case 4:case 5:{if(!((h&2|0)==0|(c[253510]|0)!=0)){i=b;return}h=UT(c[d+(a*208|0)+112>>2]|0)|0;a:do{if((c[253649]&1|0)==0){j=c[253203]|0;k=c[j+224>>2]|0;if((k|0)<=1){l=0;break}m=+g[d+(a*208|0)+132>>2];n=c[j+228>>2]|0;j=1;while(1){o=0;while(1){p=+g[d+(a*208|0)+68+(o<<2)>>2];if(!(p-m<+g[n+(j*72|0)+16+(o<<2)>>2])){q=o;break}r=o+1|0;if(!(m+p>+g[n+(j*72|0)+4+(o<<2)>>2])){q=o;break}if((r|0)<3){o=r}else{q=r;break}}o=j+1|0;if((q|0)==3){l=j;break a}if((o|0)<(k|0)){j=o}else{l=0;break}}}else{l=0}}while(0);q=c[253731]&65535;j=c[253732]|0;c[j+(q*12|0)>>2]=c[253411]|l<<2|c[h+72>>2]<<17;c[j+(q*12|0)+4>>2]=0;c[j+(q*12|0)+8>>2]=29024;c[253731]=(c[253731]|0)+1;i=b;return};case 0:{rS(e,1013652,1014328);q=SS(c[d+(a*208|0)+8>>2]|0)|0;c[253412]=q;if((q|0)==0){a=c[253731]&65535;d=c[253732]|0;c[d+(a*12|0)>>2]=c[253411]|c[(c[253342]|0)+72>>2]<<17;c[d+(a*12|0)+4>>2]=0;c[d+(a*12|0)+8>>2]=29024;c[253731]=(c[253731]|0)+1;i=b;return}switch(c[q+64>>2]|0){case 2:{OS(e);i=b;return};case 3:{ZO(e);i=b;return};case 4:{cT(e);i=b;return};case 1:{WU(e);i=b;return};case 0:{if(!((c[f>>2]&2|0)==0|(c[253510]|0)!=0)){i=b;return}f=c[253731]&65535;e=c[253732]|0;c[e+(f*12|0)>>2]=c[253411]|c[(c[253342]|0)+72>>2]<<17;c[e+(f*12|0)+4>>2]=0;c[e+(f*12|0)+8>>2]=29024;c[253731]=(c[253731]|0)+1;i=b;return};default:{Tk[c[4886345]&255](1,126264,(s=i,i=i+1|0,i=i+7&-8,c[s>>2]=0,s)|0);i=s}}break};case 7:{i=b;return};default:{Tk[c[4886345]&255](1,115864,(s=i,i=i+1|0,i=i+7&-8,c[s>>2]=0,s)|0);i=s}}}function ES(){var a=0.0,b=0.0,d=0.0,e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0;ZU();nT();if((c[253512]&2|0)==0){if((c[253649]&1|0)==0){a=+g[253413];b=+g[253414];d=+g[253415];e=0;f=0.0;do{h=+g[((e&1|0)==0?1014292:1014280)>>2]-a;i=+g[((e&2|0)==0?1014296:1014284)>>2]-b;j=+g[((e&4|0)==0?1014300:1014288)>>2]-d;k=h*h+i*i+j*j;f=k>f?k:f;e=e+1|0;}while((e|0)<8);l=+T(f)}else{l=2048.0}g[253576]=l}uS(1013652);if((c[(c[4919856]|0)+32>>2]|0)!=0&(c[253725]|0)>0){m=0}else{return}do{DS(m);m=m+1|0;}while((m|0)<(c[253725]|0));return}function FS(a,b,c){a=a|0;b=b|0;c=c|0;return}function GS(a){a=a|0;var b=0,d=0,e=0,f=0,h=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;a=i;i=i+664|0;b=a|0;d=c[253727]|0;if((d|0)<=0){i=a;return}e=b;f=b+428|0;h=b+432|0;j=b+436|0;k=b+440|0;l=b+388|0;m=b+392|0;n=b+456|0;o=b+460|0;p=b+396|0;q=b+652|0;r=b|0;s=b+4|0;t=b+8|0;u=b+12|0;v=b+16|0;w=b+20|0;x=b+24|0;y=b+28|0;z=b+32|0;A=b+36|0;B=b+40|0;C=b+44|0;D=0;E=d;while(1){if((c[253733]&1<>2]=c[253629];c[h>>2]=(c[5123027]|0)-512-(c[253630]|0);c[j>>2]=512;c[k>>2]=512;c[l>>2]=0;c[m>>2]=1;g[n>>2]=90.0;g[o>>2]=90.0;c[p>>2]=7;d=c[253728]|0;g[q>>2]=+g[d+(D*44|0)+24>>2];g[r>>2]=+g[d+(D*44|0)>>2];g[s>>2]=+g[d+(D*44|0)+4>>2];g[t>>2]=+g[d+(D*44|0)+8>>2];d=0;do{switch(d|0){case 5:{g[u>>2]=0.0;g[v>>2]=0.0;g[w>>2]=1.0;g[x>>2]=-1.0;g[y>>2]=0.0;g[z>>2]=0.0;g[A>>2]=0.0;g[B>>2]=1.0;g[C>>2]=0.0;break};case 4:{g[u>>2]=0.0;g[v>>2]=0.0;g[w>>2]=-1.0;g[x>>2]=1.0;g[y>>2]=0.0;g[z>>2]=0.0;g[A>>2]=0.0;g[B>>2]=1.0;g[C>>2]=0.0;break};case 3:{g[u>>2]=0.0;g[v>>2]=1.0;g[w>>2]=0.0;g[x>>2]=1.0;n$(y|0,0,16)|0;g[C>>2]=1.0;break};case 0:{g[u>>2]=-1.0;n$(v|0,0,16)|0;g[z>>2]=-1.0;g[A>>2]=0.0;g[B>>2]=1.0;g[C>>2]=0.0;break};case 2:{g[u>>2]=0.0;g[v>>2]=-1.0;g[w>>2]=0.0;g[x>>2]=1.0;n$(y|0,0,16)|0;g[C>>2]=-1.0;break};case 1:{g[u>>2]=1.0;n$(v|0,0,16)|0;g[z>>2]=1.0;g[A>>2]=0.0;g[B>>2]=1.0;g[C>>2]=0.0;break};default:{}}zS(b);PP(D,d);d=d+1|0;}while((d|0)<6);F=c[253727]|0}else{F=E}d=D+1|0;if((d|0)<(F|0)){D=d;E=F}else{break}}i=a;return} + + + +function AP(b){b=b|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0,n=0.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;e=i;i=i+72|0;f=e|0;h=e+64|0;j=+g[553065];g[553068]=1.0/j;k=+g[553066];g[553069]=1.0/k;l=+g[553067];g[553070]=1.0/l;m=c[553040]|0;n=j*+ca(+g[m>>2]/j);g[553062]=n;o=~~((j*+R(+g[m+12>>2]/j)-n)/j+1.0);c[553071]=o;j=k*+ca(+g[m+4>>2]/k);g[553063]=j;p=~~((k*+R(+g[m+16>>2]/k)-j)/k+1.0);c[553072]=p;k=l*+ca(+g[m+8>>2]/l);g[553064]=k;q=~~((l*+R(+g[m+20>>2]/l)-k)/l+1.0);c[553073]=q;m=da(da(p,o)|0,q)|0;q=b+4|0;o=c[q>>2]|0;if((o|0)!=(m<<3|0)){Tk[c[4886344]&255](2,168464,(r=i,i=i+1|0,i=i+7&-8,c[r>>2]=0,r)|0);i=r;c[553074]=0;i=e;return}p=Kk[c[4886347]&255](o,1)|0;c[553074]=p;m$(p|0,(c[5145342]|0)+(c[b>>2]|0)|0,c[q>>2]|0)|0;q=(m|0)>0;if(q){b=0;do{p=b<<3;o=c[553074]|0;s=o+p|0;t=(c[(c[4917432]|0)+32>>2]|0)-(c[253581]|0)|0;u=(d[s]|0)<255){t=(u|0)>(w|0)?u:w;y=(t|0)>(o|0)?t:o;z=((u*255|0|0)/(y|0)|0)&255;A=((o*255|0|0)/(y|0)|0)&255;B=((w*255|0|0)/(y|0)|0)&255}else{z=u&255;A=o&255;B=w&255}a[s]=z;a[v]=B;a[x]=A;x=p|3;p=c[553074]|0;v=p+x|0;s=(c[(c[4917432]|0)+32>>2]|0)-(c[253581]|0)|0;w=(d[v]|0)<255){s=(w|0)>(u|0)?w:u;p=(s|0)>(x|0)?s:x;C=((w*255|0|0)/(p|0)|0)&255;D=((x*255|0|0)/(p|0)|0)&255;E=((u*255|0|0)/(p|0)|0)&255}else{C=w&255;D=x&255;E=u&255}a[v]=C;a[o]=E;a[y]=D;b=b+1|0;}while((b|0)<(m|0))}if((c[(c[4917466]|0)+32>>2]|0)==0){i=e;return}b=f|0;$B(b,64,143e3,(r=i,i=i+8|0,c[r>>2]=2212080,r)|0)|0;i=r;f=Kk[c[4886365]&255](b,h)|0;if((c[h>>2]|0)==0){i=e;return}l=+T_(1.0,(c[(c[4917432]|0)+32>>2]|0)-(c[253581]|0)|0);D=m*24|0;if((f|0)!=(D|0)){Tk[c[4886345]&255](1,127616,(r=i,i=i+24|0,c[r>>2]=b,c[r+8>>2]=f,c[r+16>>2]=D,r)|0);i=r}r=Kk[c[4886347]&255](f,1)|0;c[553075]=r;f=c[h>>2]|0;if(q){q=0;do{h=q*6|0;g[r+(h<<2)>>2]=l*+g[f+(h<<2)>>2];D=h|1;g[r+(D<<2)>>2]=l*+g[f+(D<<2)>>2];D=h+2|0;g[r+(D<<2)>>2]=l*+g[f+(D<<2)>>2];D=h+3|0;g[r+(D<<2)>>2]=l*+g[f+(D<<2)>>2];D=h+4|0;g[r+(D<<2)>>2]=l*+g[f+(D<<2)>>2];D=h+5|0;g[r+(D<<2)>>2]=l*+g[f+(D<<2)>>2];q=q+1|0;}while((q|0)<(m|0))}if((f|0)==0){i=e;return}vk[c[4886366]&511](f);i=e;return}function BP(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;i=i+2056|0;e=d|0;f=d+8|0;h=d+1032|0;g[553065]=64.0;g[553066]=64.0;g[553067]=128.0;c[e>>2]=(c[5145342]|0)+(c[b>>2]|0);j=Kk[c[4886347]&255]((c[b+4>>2]|0)+1|0,1)|0;c[553080]=j;r$(j|0,c[e>>2]|0)|0;c[553081]=c[553080];if((a[cC(e,1)|0]|0)!=123){k=1024;l=0;m=1024;n=0;i=d;return}while(1){j=cC(e,1)|0;b=a[j]|0;if((b<<24>>24|0)==0|(b<<24>>24|0)==125){o=17;break}TB(f,j,1024);j=cC(e,1)|0;b=a[j]|0;if((b<<24>>24|0)==0|(b<<24>>24|0)==125){o=17;break}TB(h,j,1024);if((kC(f,117136,17)|0)==0){j=sg(h|0,59)|0;if((j|0)==0){o=6;break}a[j]=0;if((c[(c[4917292]|0)+32>>2]|0)==0){continue}ST(h,j+1|0,63536);continue}if((kC(f,55736,11)|0)==0){j=sg(h|0,59)|0;if((j|0)==0){o=11;break}a[j]=0;ST(h,j+1|0,63536);continue}if((VB(f,44848)|0)==0){qi(h|0,183920,(p=i,i=i+24|0,c[p>>2]=2212260,c[p+8>>2]=2212264,c[p+16>>2]=2212268,p)|0)|0;i=p;continue}if((VB(f,180128)|0)!=0){continue}qi(h|0,175560,(p=i,i=i+16|0,c[p>>2]=1012792,c[p+8>>2]=1012796,p)|0)|0;i=p}if((o|0)==6){Tk[c[4886344]&255](2,106720,(p=i,i=i+8|0,c[p>>2]=h,p)|0);i=p;k=1024;l=0;m=1024;n=0;i=d;return}else if((o|0)==11){Tk[c[4886344]&255](2,49296,(p=i,i=i+8|0,c[p>>2]=h,p)|0);i=p;k=1024;l=0;m=1024;n=0;i=d;return}else if((o|0)==17){k=1024;l=0;m=1024;n=0;i=d;return}}function CP(b,d){b=b|0;d=d|0;var e=0,f=0;e=bC(2212324)|0;TB(b,e,d);do{if((c[553081]|0)!=0){if((a[e]|0)==0){break}else{f=1}return f|0}}while(0);c[553081]=c[553080];f=0;return f|0}function DP(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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=i;i=i+2048|0;h=g|0;j=g+1024|0;c[e>>2]=0;k=bC(2212324)|0;TB(j,k,1024);do{if((c[553081]|0)!=0){if((a[k]|0)==0){break}if((a[j]|0)==123){l=0}else{Tk[c[4886344]&255](0,171992,(m=i,i=i+8|0,c[m>>2]=j,m)|0);i=m;l=0}while(1){n=bC(2212324)|0;TB(h,n,1024);if((c[553081]|0)==0){o=8}else{if((a[n]|0)==0){o=8}}if((o|0)==8){o=0;c[553081]=c[553080];Tk[c[4886344]&255](0,169120,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m}if((a[h]|0)==125){p=1;o=20;break}n=bC(2212324)|0;TB(j,n,1024);if((c[553081]|0)==0){o=12;break}if((a[n]|0)==0){o=12;break}if((a[j]|0)==125){o=14;break}if((c[e>>2]|0)==64){o=16;break}n=o$(h|0)|0;q=l+1+n|0;n=(o$(j|0)|0)+1+q|0;if((n|0)>(d|0)){o=18;break}r=b+l|0;r$(r|0,h|0)|0;c[f+(c[e>>2]<<3)>>2]=r;r=b+q|0;r$(r|0,j|0)|0;q=c[e>>2]|0;c[f+(q<<3)+4>>2]=r;c[e>>2]=q+1;l=n}if((o|0)==12){c[553081]=c[553080];Tk[c[4886344]&255](0,169120,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;p=1;s=1024;t=0;u=1024;v=0;i=g;return p|0}else if((o|0)==14){Tk[c[4886344]&255](0,165624,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;p=1;s=1024;t=0;u=1024;v=0;i=g;return p|0}else if((o|0)==16){Tk[c[4886344]&255](0,162456,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;p=1;s=1024;t=0;u=1024;v=0;i=g;return p|0}else if((o|0)==18){Tk[c[4886344]&255](0,159680,(m=i,i=i+1|0,i=i+7&-8,c[m>>2]=0,m)|0);i=m;p=1;s=1024;t=0;u=1024;v=0;i=g;return p|0}else if((o|0)==20){s=1024;t=0;u=1024;v=0;i=g;return p|0}}}while(0);c[553081]=c[553080];p=0;s=1024;t=0;u=1024;v=0;i=g;return p|0}function EP(a){a=a|0;var b=0,d=0,e=0,f=0,h=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;b=i;i=i+2584|0;d=b+2048|0;e=b+2056|0;f=b+2568|0;h=b|0;j=e|0;if((DP(h,2048,d,j)|0)==0){k=512;l=0;m=2048;n=0;i=b;return}else{o=0}while(1){p=c[d>>2]|0;if((p|0)>0){q=o;r=0;while(1){if((VB(c[e+(r<<3)>>2]|0,157080)|0)==0){s=((VB(c[e+(r<<3)+4>>2]|0,a)|0)==0)+q|0}else{s=q}t=r+1|0;if((t|0)<(p|0)){q=s;r=t}else{u=s;break}}}else{u=o}if((DP(h,2048,d,j)|0)==0){break}else{o=u}}if((u|0)==0){k=512;l=0;m=2048;n=0;i=b;return}c[253354]=u;c[253355]=Kk[c[4886347]&255](u*12|0,1)|0;c[253356]=Kk[c[4886347]&255](c[253354]<<2,1)|0;u=f|0;o=f+4|0;s=f+8|0;f=0;a:while(1){while(1){if((DP(h,2048,d,j)|0)==0){break a}r=c[d>>2]|0;if((r|0)>0){v=0;w=0;x=0}else{continue}while(1){q=c[e+(v<<3)>>2]|0;if((VB(q,157080)|0)==0){p=(VB(c[e+(v<<3)+4>>2]|0,a)|0)==0;y=p?1:w}else{y=w}if((VB(q,154752)|0)==0){qi(c[e+(v<<3)+4>>2]|0,183920,(q=i,i=i+24|0,c[q>>2]=u,c[q+8>>2]=o,c[q+16>>2]=s,q)|0)|0;i=q;z=1}else{z=x}q=v+1|0;if((q|0)<(r|0)){v=q;w=y;x=z}else{break}}if(!((y|0)==0|(z|0)==0)){break}}r=c[253355]|0;g[r+(f*12|0)>>2]=+g[u>>2];g[r+(f*12|0)+4>>2]=+g[o>>2];g[r+(f*12|0)+8>>2]=+g[s>>2];f=f+1|0}k=512;l=0;m=2048;n=0;i=b;return}function FP(){var a=0,b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0;a=i;i=i+16|0;b=a|0;d=c[553047]|0;if((d|0)<=0){i=a;return}e=b|0;f=b+4|0;h=b+8|0;b=0;j=d;while(1){d=c[553048]|0;k=c[d+(b*80|0)+12>>2]|0;do{if((k&2|0)==0){if((k&1|0)==0){l=j;break}g[e>>2]=(+g[d+(b*80|0)+16>>2]+ +g[d+(b*80|0)+28>>2])*.5;g[f>>2]=(+g[d+(b*80|0)+20>>2]+ +g[d+(b*80|0)+32>>2])*.5;m=(+g[d+(b*80|0)+24>>2]+ +g[d+(b*80|0)+36>>2])*.5;n=7}else{g[e>>2]=+g[d+(b*80|0)+40>>2];g[f>>2]=+g[d+(b*80|0)+44>>2];m=+g[d+(b*80|0)+48>>2];n=7}}while(0);if((n|0)==7){n=0;g[h>>2]=m;c[d+(b*80|0)+8>>2]=hS(e)|0;l=c[553047]|0}k=b+1|0;if((k|0)<(l|0)){b=k;j=l}else{break}}i=a;return}function GP(){var a=0,b=0,d=0,e=0,f=0,g=0;a=i;if((c[253354]|0)>0){b=0}else{i=a;return}do{d=pC(152816,(e=i,i=i+8|0,c[e>>2]=b,e)|0)|0;i=e;e=aR(d,0,128,128,0,85,32856)|0;c[(c[253356]|0)+(b<<2)>>2]=e;b=b+1|0;f=c[253354]|0;}while((b|0)<(f|0));if((f|0)>0){g=0}else{i=a;return}do{mT();JS(g,0,0);MP();lT();mT();JS(g,1,0);MP();lT();mT();JS(g,2,0);MP();lT();mT();JS(g,3,0);MP();lT();mT();JS(g,4,0);MP();lT();mT();JS(g,5,0);MP();lT();g=g+1|0;}while((g|0)<(c[253354]|0));i=a;return}function HP(){var a=0,b=0,d=0,e=0,f=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,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=i;i=i+24|0;b=a|0;d=Ok[c[4886346]&63]()|0;e=c[553046]|0;f=(e|0)>0;if(f){n$(c[553049]|0,-1|0,e<<2|0)|0}j=c[553043]|0;k=c[553044]|0;if((j-k|0)>0){l=c[553045]|0;m=0;n=k;k=j;while(1){j=n+m|0;o=l+(j*80|0)+76|0;p=c[o>>2]|0;if((p|0)>0){q=l+(j*80|0)+72|0;j=c[553058]|0;r=c[553049]|0;s=0;t=p;while(1){p=c[j+((c[q>>2]|0)+s<<2)>>2]|0;u=r+(p<<2)|0;do{if((c[u>>2]|0)==-1){v=c[553048]|0;if(!(((c[c[v+(p*80|0)+76>>2]>>2]|0)-2|0)>>>0<3>>>0)){w=t;break}x=c[v+(p*80|0)>>2]|0;if((c[x+100>>2]|0)!=0){w=t;break}if((c[x+176>>2]|0)!=0){w=t;break}y=c[x+208>>2]|0;if((y|0)!=0){if((y|0)>1){w=t;break}y=c[x+212>>2]|0;if(!((y|0)==1|(y|0)==3)){w=t;break}}y=c[v+(p*80|0)+4>>2]|0;z=c[v+(p*80|0)+8>>2]|0;c[u>>2]=p;A=s+1|0;B=c[o>>2]|0;if((A|0)<(B|0)){C=A;D=B}else{w=B;break}while(1){B=c[j+((c[q>>2]|0)+C<<2)>>2]|0;A=r+(B<<2)|0;do{if((c[A>>2]|0)==-1){if(!(((c[c[v+(B*80|0)+76>>2]>>2]|0)-2|0)>>>0<3>>>0)){E=D;break}if((x|0)!=(c[v+(B*80|0)>>2]|0)){E=D;break}if((y|0)!=(c[v+(B*80|0)+4>>2]|0)){E=D;break}if((z|0)!=(c[v+(B*80|0)+8>>2]|0)){E=D;break}c[A>>2]=p;E=c[o>>2]|0}else{E=D}}while(0);A=C+1|0;if((A|0)<(E|0)){C=A;D=E}else{w=E;break}}}else{w=t}}while(0);p=s+1|0;if((p|0)<(w|0)){s=p;t=w}else{break}}F=c[553043]|0;G=c[553044]|0}else{F=k;G=n}t=m+1|0;if((t|0)<(F-G|0)){m=t;n=G;k=F}else{break}}}do{if(f){F=c[553049]|0;k=0;do{G=F+(k<<2)|0;a:do{if((c[G>>2]|0)==(k|0)){n=0;do{if((n|0)!=(k|0)){if((c[F+(n<<2)>>2]|0)==(k|0)){break a}}n=n+1|0;}while((n|0)<(e|0));c[G>>2]=-1}}while(0);k=k+1|0;}while((k|0)<(e|0));if(!f){H=0;I=0;break}k=c[553049]|0;F=0;G=0;n=0;while(1){m=c[k+(n<<2)>>2]|0;if((m|0)==(n|0)){J=G+1|0;K=F}else{J=G;K=((m|0)==-1)+F|0}m=n+1|0;if((m|0)<(e|0)){F=K;G=J;n=m}else{H=K;I=J;break}}}else{H=0;I=0}}while(0);c[553053]=Kk[c[4886347]&255](I*80|0,1)|0;J=I<<2;c[553054]=Kk[c[4886347]&255](J,1)|0;c[553055]=Kk[c[4886347]&255](J,1)|0;c[553056]=Kk[c[4886347]&255](J,1)|0;c[553052]=I;J=Kk[c[4886347]&255](c[553057]<<2,1)|0;c[553059]=J;if((c[553057]|0)>0){K=c[553058]|0;n=0;do{c[J+(n<<2)>>2]=c[K+(n<<2)>>2];n=n+1|0;}while((n|0)<(c[553057]|0))}MP();if(!f){n=Ok[c[4886346]&63]()|0;Tk[c[4886344]&255](0,145784,(L=i,i=i+32|0,c[L>>2]=e,c[L+8>>2]=I,c[L+16>>2]=H,h[L+24>>3]=+(n-d|0)/1.0e3,L)|0);i=L;i=a;return}n=b|0;K=b+12|0;J=b+4|0;G=b+8|0;F=b+16|0;k=b+20|0;b=c[553053]|0;m=0;w=0;while(1){E=c[553049]|0;do{if((c[E+(w<<2)>>2]|0)==(w|0)){D=c[553048]|0;C=c[(c[D+(w*80|0)+76>>2]|0)+104>>2]|0;l=0;t=0;s=0;o=w;r=w;while(1){if((r|0)==(w|0)){q=c[D+(o*80|0)+76>>2]|0;M=(c[q+80>>2]|0)+s|0;N=(c[q+72>>2]|0)+t|0;O=l+1|0}else{M=s;N=t;O=l}q=o+1|0;if((q|0)>=(e|0)){break}l=O;t=N;s=M;o=q;r=c[E+(q<<2)>>2]|0}if((M|0)==0|(N|0)==0|(O|0)<2){P=m;Q=b;break}r=Kk[c[4886347]&255](72,1)|0;o=r;c[1044260+(c[261064]<<2)>>2]=o;n$(r|0,0,72)|0;s=c[261064]|0;c[261064]=s+1;t=pC(150640,(L=i,i=i+8|0,c[L>>2]=s,L)|0)|0;i=L;TB(r,t,64);t=jk[c[4886350]&255](N<<2)|0;s=t;KB(n,K);l=c[553049]|0;q=w;while(1){j=q+1|0;if((c[l+(q<<2)>>2]|0)==(w|0)){R=54;break}if((j|0)<(e|0)){q=j}else{S=0;break}}do{if((R|0)==54){R=0;l=c[553048]|0;LB(l+(q*80|0)+16|0,n,K);LB(l+(q*80|0)+28|0,n,K);j=c[l+(q*80|0)+76>>2]|0;l=j+72|0;if((c[l>>2]|0)<=0){S=0;break}p=c[j+76>>2]|0;u=j+88|0;j=s;v=0;while(1){c[j>>2]=(c[u>>2]|0)+(c[p+(v<<2)>>2]|0);z=v+1|0;if((z|0)<(c[l>>2]|0)){j=j+4|0;v=z}else{S=z;break}}}}while(0);q=Kk[c[4886347]&255](152,1)|0;n$(q|0,0,152)|0;v=q;c[v>>2]=11;c[q+104>>2]=C;c[q+108>>2]=o;c[q+72>>2]=N;c[q+80>>2]=M;c[q+92>>2]=0;j=c[s>>2]|0;l=q+96|0;c[l>>2]=j;p=c[s>>2]|0;u=q+100|0;c[u>>2]=p;if((N|0)>0){z=0;y=j;j=p;do{p=s+(z<<2)|0;x=c[p>>2]|0;y=y>>>0>>0?y:x;c[l>>2]=y;x=c[p>>2]|0;j=j>>>0>x>>>0?j:x;c[u>>2]=j;z=z+1|0;}while((z|0)<(N|0))}g[q+12>>2]=+g[n>>2];g[q+16>>2]=+g[J>>2];g[q+20>>2]=+g[G>>2];g[q+24>>2]=+g[K>>2];g[q+28>>2]=+g[F>>2];g[q+32>>2]=+g[k>>2];g[b+16>>2]=+g[n>>2];g[b+20>>2]=+g[J>>2];g[b+24>>2]=+g[G>>2];g[b+28>>2]=+g[K>>2];g[b+32>>2]=+g[F>>2];g[b+36>>2]=+g[k>>2];c[b+12>>2]=1;c[b+76>>2]=v;c[b+4>>2]=c[D+(w*80|0)+4>>2];c[b+8>>2]=c[D+(w*80|0)+8>>2];c[b>>2]=c[D+(w*80|0)>>2];hk[c[4920044]&255](1,r+64|0);RU(o);Yk[c[4920084]&255](34963,S<<2,t,35044);SU();KR(148464,3213);vk[c[4886351]&511](t);z=c[553049]|0;j=c[553058]|0;u=c[553059]|0;y=~m;l=0;do{do{if((c[z+(l<<2)>>2]|0)==(w|0)){s=c[553057]|0;if((s|0)>0){T=0;U=s}else{break}while(1){if((c[j+(T<<2)>>2]|0)==(l|0)){c[u+(T<<2)>>2]=y;V=c[553057]|0}else{V=U}s=T+1|0;if((s|0)<(V|0)){T=s;U=V}else{break}}}}while(0);l=l+1|0;}while((l|0)<(e|0));P=m+1|0;Q=b+80|0}else{P=m;Q=b}}while(0);E=w+1|0;if((E|0)<(e|0)){b=Q;m=P;w=E}else{break}}w=Ok[c[4886346]&63]()|0;Tk[c[4886344]&255](0,145784,(L=i,i=i+32|0,c[L>>2]=e,c[L+8>>2]=I,c[L+16>>2]=H,h[L+24>>3]=+(w-d|0)/1.0e3,L)|0);i=L;if(!f){i=a;return}n$(c[553049]|0,-1|0,e<<2|0)|0;i=a;return}function IP(e){e=e|0;var f=0,h=0,j=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.0,z=0,A=0,B=0,C=0,D=0,E=0,H=0,I=0,J=0,K=0.0,L=0.0,M=0,N=0.0,O=0,P=0,Q=0,S=0,T=0,U=0,V=0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ba=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0,la=0.0,ma=0,na=0,oa=0.0;f=i;i=i+90472|0;if((c[253196]|0)!=0){Tk[c[4886345]&255](1,143504,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}g[253803]=1.0;g[253804]=.5;g[253809]=.44999998807907104;g[253810]=.30000001192092896;g[253811]=.8999999761581421;+wB(1015236);g[253198]=-2.0;g[253199]=2.0;g[253200]=-8.0;g[253201]=-2.0;g[253202]=0.0;c[253196]=1;Kk[c[4886365]&255](e,f+86112|0)|0;if((c[(f+86112|0)>>2]|0)==0){Tk[c[4886345]&255](1,140912,(h=i,i=i+8|0,c[h>>2]=e,h)|0);i=h}c[253203]=0;n$(2212016,0,312)|0;TB(2212016,e,64);TB(2212080,QB(2212016)|0,64);SB(2212080,2212080,64);j=Kk[c[4886347]&255](0,1)|0;c[6924886]=0;l=c[(f+86112|0)>>2]|0;c[5145342]=l;m=c[l+4>>2]|0;if((m|0)!=46){Tk[c[4886345]&255](1,138416,(h=i,i=i+24|0,c[h>>2]=e,c[h+8>>2]=m,c[h+16>>2]=46,h)|0);i=h}BP(l+8|0);m=c[l+20>>2]|0;if(((m>>>0)%72|0|0)!=0){Tk[c[4886345]&255](1,128960,(h=i,i=i+8|0,c[h>>2]=2212016,h)|0);i=h}e=(c[5145342]|0)+(c[l+16>>2]|0)|0;n=Kk[c[4886347]&255](((m>>>0)/72|0)*72|0,1)|0;c[553038]=n;c[553037]=(m>>>0)/72|0;m$(n|0,e|0,((m>>>0)/72|0)*72|0)|0;m=c[l+124>>2]|0;if((m|0)!=0){e=c[5145342]|0;n=c[l+120>>2]|0;MP();c[253349]=128;a:do{if((m|0)<98304){c[253197]=0}else{c[253197]=1;o=c[l+116>>2]|0;if(!(o>>>0>103>>>0)){break}p=0;q=(c[5145342]|0)+(c[(l+112|0)>>2]|0)|0;while(1){if((c[q+28>>2]&-2147483647|0)==1){break}r=p+1|0;if(r>>>0<((o>>>0)/104|0)>>>0){p=r;q=q+104|0}else{break a}}c[253197]=0}}while(0);q=jk[c[4886350]&255](131072)|0;p=((m|0)/49152|0)>>((c[253197]|0)!=0);do{if((p|0)==1){s=2}else{if(!((c[(c[4917420]|0)+32>>2]|0)!=0&(p|0)>1023)){s=p;break}Tk[c[4886344]&255](2,113560,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h;s=1024}}while(0);do{if((c[(c[4917420]|0)+32>>2]|0)==0){c[253348]=s;t=s}else{c[253352]=512;p=c[253349]|0;c[253353]=512/(p|0)|0;b:do{if((da((512/(p|0)|0)<<1,512/(p|0)|0)|0)<(s|0)){m=c[5123016]|0;o=512/(p|0)|0;r=512;while(1){if((r|0)==(m|0)){u=o;break b}v=r<<1;c[253352]=v;c[253353]=(v|0)/(p|0)|0;if((da(((v|0)/(p|0)|0)<<1,(v|0)/(p|0)|0)|0)<(s|0)){o=(v|0)/(p|0)|0;r=v}else{u=(v|0)/(p|0)|0;break}}}else{u=512/(p|0)|0}}while(0);p=da(u,u)|0;r=(s|0)/(p|0)|0;c[253348]=r;if(((s|0)%(p|0)|0|0)==0){t=r;break}c[253348]=r+1|0;t=r+1|0}}while(0);c[253350]=Kk[c[4886347]&255](t<<2,1)|0;if((c[253197]|0)!=0){c[253351]=Kk[c[4886347]&255](c[253348]<<2,1)|0}do{if((c[(c[4917466]|0)+32>>2]|0)==0){w=0}else{if((c[5120187]|0)!=0&(c[5120188]|0)!=0){if((c[(c[4917500]|0)+32>>2]|0)!=0){w=34842;break}}w=32856}}while(0);if((c[(c[4917420]|0)+32>>2]|0)!=0&(c[253348]|0)>0){t=0;do{u=pC(112632,(h=i,i=i+8|0,c[h>>2]=t,h)|0)|0;i=h;r=c[253352]|0;p=aR(u,0,r,r,0,112,w)|0;c[(c[253350]|0)+(t<<2)>>2]=p;if((c[253197]|0)!=0){p=pC(111784,(h=i,i=i+8|0,c[h>>2]=t,h)|0)|0;i=h;r=c[253352]|0;u=aR(p,0,r,r,3,112,0)|0;c[(c[253351]|0)+(t<<2)>>2]=u}t=t+1|0;}while((t|0)<(c[253348]|0))}c:do{if((s|0)>0){x=0.0;t=0;d:while(1){if((c[(c[4917420]|0)+32>>2]|0)==0){z=t;A=0;B=0}else{u=c[253353]|0;r=da(u,u)|0;p=(t|0)%(r|0)|0;o=c[253349]|0;z=(t|0)/(r|0)|0;A=da((p|0)/(u|0)|0,o)|0;B=da(o,(p|0)%(u|0)|0)|0}c[(f+86104|0)>>2]=0;do{if((c[(c[4917466]|0)+32>>2]|0)==0){C=55}else{u=da((c[253197]|0)!=0?2:1,t)|0;$B(f+86040|0|0,64,111016,(h=i,i=i+16|0,c[h>>2]=2212080,c[h+8>>2]=u,h)|0)|0;i=h;u=Kk[c[4886365]&255](f+86040|0|0,f+86104|0)|0;p=c[(f+86104|0)>>2]|0;if((p|0)==0){C=55;break}if((u|0)==0){C=48;break d}else{D=u;E=p}while(1){p=E+1|0;if((a[E]|0)==10){if((a[p]|0)==10){break}}u=D-1|0;if((u|0)==0){C=48;break d}else{D=u;E=p}}p=E+2|0;u=D-2|0;while(1){if((u|0)==0){C=52;break}o=u-1|0;r=p+1|0;if((a[p]|0)==10){H=r;I=o;break}else{p=r;u=o}}if((C|0)==52){C=0;H=p+1|0;I=-1}u=c[253349]|0;if((I|0)==(da(u*12|0,u)|0)){J=H}else{C=54;break d}}}while(0);do{if((C|0)==55){C=0;u=c[253349]|0;if((c[253197]|0)==0){J=e+((da(da(t*3|0,u)|0,u)|0)+n)|0;break}else{J=e+((da(da(t*6|0,u)|0,u)|0)+n)|0;break}}}while(0);K=+T_(1.0,(c[(c[4917432]|0)+32>>2]|0)-8-(c[253581]|0)|0);u=c[253349]|0;if((da(u,u)|0)==0){L=x;M=u}else{N=x;u=0;while(1){e:do{if((c[(c[4917466]|0)+32>>2]|0)==0){o=u*3|0;r=J+o|0;if((c[(c[4917444]|0)+32>>2]|0)!=2){m=u<<2;v=(c[(c[4917432]|0)+32>>2]|0)-(c[253581]|0)|0;O=d[r]<255){v=(O|0)>(P|0)?O:P;S=(v|0)>(Q|0)?v:Q;T=((O*255|0|0)/(S|0)|0)&255;U=((Q*255|0|0)/(S|0)|0)&255;V=((P*255|0|0)/(S|0)|0)&255}else{T=O&255;U=Q&255;V=P&255}a[q+m|0]=T;a[q+(m|1)|0]=V;a[q+(m|2)|0]=U;a[q+(m|3)|0]=-1;W=N;break}X=+((d[r]|0)>>>0)*.33000001311302185+ +((d[J+(o+1)|0]|0)>>>0)*.6850000023841858+ +((d[J+(o+2)|0]|0)>>>0)*.06300000101327896;if(X>255.0){Y=1.0}else{Y=X/255.0}X=Y*5.0;o=~~+R(X);Z=(1.0-(X- +(o|0)))*.5;_=(1.0-(1.0-(X- +(o|0))))*.5;switch(o|0){case 3:{$=0.0;aa=Z;ba=.5;break};case 4:{$=_;aa=0.0;ba=.5;break};case 5:{$=.5;aa=0.0;ba=Z;break};case 0:{$=.5;aa=_;ba=0.0;break};case 1:{$=Z;aa=.5;ba=0.0;break};case 2:{$=0.0;aa=.5;ba=_;break};default:{$=0.0;aa=0.0;ba=0.0}}o=u<<2;a[q+o|0]=~~($*255.0);a[q+(o|1)|0]=~~(aa*255.0);a[q+(o|2)|0]=~~(ba*255.0);a[q+(o|3)|0]=-1;W=Y>N?Y:N}else{do{if((c[(f+86104|0)>>2]|0)==0){o=u*3|0;_=+((d[J+o|0]|0)+1|0);Z=+((d[J+(o+1)|0]|0)+1|0);X=+((d[J+(o+2)|0]|0)+1|0);if(!(_+Z+X<12.0)){ea=_;fa=Z;ga=X;break}ea=(_+Z+X)*.33329999446868896;fa=(_+Z+X)*.33329999446868896;ga=(_+Z+X)*.33329999446868896}else{o=u*12|0;X=(bl(J+o|0),+g[k>>2]);Z=(bl(J+(o+4)|0),+g[k>>2]);ea=X;fa=Z;ga=(bl(J+(o+8)|0),+g[k>>2])}}while(0);Z=K*ea;X=K*fa;_=K*ga;do{if((c[5120187]|0)!=0&(c[5120188]|0)!=0){if((c[(c[4917500]|0)+32>>2]|0)==0){break}o=u<<3;b[q+o>>1]=mQ(Z)|0;b[q+(o|2)>>1]=mQ(X)|0;b[q+(o|4)>>1]=mQ(_)|0;b[q+(o|6)>>1]=mQ(1.0)|0;W=N;break e}}while(0);o=u<<2;ha=Z*.03125>X*.03125?Z*.03125:X*.03125;ia=ha>_*.03125?ha:_*.03125;ha=ia>.003921568859368563?ia:.003921568859368563;if(ha<1.0){ja=ha*255.0}else{ja=255.0}r=~~+ca(ja);a[q+(o|3)|0]=r;a[q+o|0]=~~(Z*.03125*(255.0/+(r&255|0))*255.0);a[q+(o|1)|0]=~~(X*.03125*(255.0/+(r&255|0))*255.0);a[q+(o|2)|0]=~~(_*.03125*(255.0/+(r&255|0))*255.0);W=N}}while(0);p=u+1|0;r=c[253349]|0;if((p|0)<(da(r,r)|0)){N=W;u=p}else{L=W;M=r;break}}}if((c[(c[4917420]|0)+32>>2]|0)==0){u=pC(107864,(h=i,i=i+8|0,c[h>>2]=t,h)|0)|0;i=h;r=c[253349]|0;p=aR(u,q,r,r,0,112,w)|0;c[(c[253350]|0)+(t<<2)>>2]=p}else{bR(c[(c[253350]|0)+(z<<2)>>2]|0,q,B,A,M,M)}p=c[(f+86104|0)>>2]|0;if((p|0)!=0){vk[c[4886366]&511](p)}do{if((c[253197]|0)!=0){p=c[253349]|0;r=(da(da((t<<1|1)*3|0,p)|0,p)|0)+n|0;if((da(p,p)|0)==0){ka=p}else{p=0;while(1){u=p*3|0;o=a[e+(u+r)|0]|0;m=p<<2;a[q+m|0]=o;P=a[e+((r+1|0)+u)|0]|0;a[q+(m|1)|0]=P;Q=a[e+((r+2|0)+u)|0]|0;a[q+(m|2)|0]=Q;do{if(o<<24>>24==0){if(!((Q|P)<<24>>24==0)){break}a[q+(m|2)|0]=127;a[q+(m|1)|0]=127;a[q+m|0]=127}}while(0);a[q+(m|3)|0]=-1;P=p+1|0;Q=c[253349]|0;if((P|0)<(da(Q,Q)|0)){p=P}else{ka=Q;break}}}if((c[(c[4917420]|0)+32>>2]|0)==0){p=pC(107032,(h=i,i=i+8|0,c[h>>2]=t,h)|0)|0;i=h;r=c[253349]|0;Q=aR(p,q,r,r,3,112,0)|0;c[(c[253351]|0)+(t<<2)>>2]=Q;break}else{bR(c[(c[253351]|0)+(z<<2)>>2]|0,q,B,A,ka,ka);break}}}while(0);Q=t+1|0;if((Q|0)<(s|0)){x=L;t=Q}else{la=L;break c}}if((C|0)==48){Tk[c[4886345]&255](1,110272,(h=i,i=i+8|0,c[h>>2]=f+86040|0|0,h)|0);i=h}else if((C|0)==54){Tk[c[4886345]&255](1,108960,(h=i,i=i+16|0,c[h>>2]=f+86040|0|0,c[h+8>>2]=I,h)|0);i=h}}else{la=0.0}}while(0);if((c[(c[4917444]|0)+32>>2]|0)==2){Tk[c[4886344]&255](0,105984,(h=i,i=i+8|0,c[h>>2]=~~(la*255.0),h)|0);i=h}vk[c[4886351]&511](q)}q=c[l+28>>2]|0;if((q&15|0)!=0){Tk[c[4886345]&255](1,128960,(h=i,i=i+8|0,c[h>>2]=2212016,h)|0);i=h}I=c[l+24>>2]|0;s=c[5145342]|0;ka=Kk[c[4886347]&255]((q>>>4)*40|0,1)|0;c[553042]=ka;c[553041]=q>>>4;if((q>>>4|0)!=0){A=ka;ka=s+I|0;I=0;while(1){la=+g[ka>>2];g[A>>2]=la;L=+g[ka+4>>2];g[A+4>>2]=L;s=L<0.0?la<0.0|0|2:la<0.0|0;W=+g[ka+8>>2];g[A+8>>2]=W;if(W<0.0){ma=(s|4)&255}else{ma=s&255}g[A+12>>2]=+g[ka+12>>2];do{if(la==1.0){na=0}else{if(L==1.0){na=1;break}na=W==1.0?2:3}}while(0);a[A+16|0]=na;a[A+17|0]=ma;s=I+1|0;if((s|0)<(q>>>4|0)){A=A+20|0;ka=ka+16|0;I=s}else{break}}}I=c[l+108>>2]|0;ka=(c[5145342]|0)+(c[l+104>>2]|0)|0;if(((I>>>0)%72|0|0)!=0){Tk[c[4886345]&255](1,128960,(h=i,i=i+8|0,c[h>>2]=2212016,h)|0);i=h}c[553060]=((I>>>0)/72|0)+1|0;A=Kk[c[4886347]&255]((((I>>>0)/72|0)+1|0)*72|0,1)|0;c[553061]=A;f:do{if(I>>>0>71>>>0){q=c[5145342]|0;ma=q+(c[l+72>>2]|0)|0;na=c[l+76>>2]|0;if(((na>>>0)%12|0|0)!=0){Tk[c[4886345]&255](1,128960,(h=i,i=i+8|0,c[h>>2]=2212016,h)|0);i=h}s=q+(c[(l+80|0)>>2]|0)|0;q=c[l+84>>2]|0;if((q&7|0)!=0){Tk[c[4886345]&255](1,128960,(h=i,i=i+8|0,c[h>>2]=2212016,h)|0);i=h}B=ka;z=A+72|0;e=0;while(1){n=c[B+64>>2]|0;c[z>>2]=n;if(!(n>>>0<((na>>>0)/12|0)>>>0)){C=123;break}M=c[ma+(n*12|0)>>2]|0;if(M>>>0>((q>>>3)-6|0)>>>0){C=125;break}n=c[553042]|0;g[z+4>>2]=-0.0- +g[n+((c[s+(M<<3)>>2]|0)*20|0)+12>>2];g[z+16>>2]=+g[n+((c[s+(M+1<<3)>>2]|0)*20|0)+12>>2];g[z+8>>2]=-0.0- +g[n+((c[s+(M+2<<3)>>2]|0)*20|0)+12>>2];g[z+20>>2]=+g[n+((c[s+(M+3<<3)>>2]|0)*20|0)+12>>2];g[z+12>>2]=-0.0- +g[n+((c[s+(M+4<<3)>>2]|0)*20|0)+12>>2];g[z+24>>2]=+g[n+((c[s+(M+5<<3)>>2]|0)*20|0)+12>>2];n=WT(B|0,-1,1)|0;w=z+36|0;c[w>>2]=c[(n+156|0)>>2];c[w+4>>2]=c[(n+156|0)+4>>2];c[w+8>>2]=c[(n+156|0)+8>>2];c[w+12>>2]=c[(n+156|0)+12>>2];W=+g[253579];c[z+28>>2]=uB(+g[(n+156|0)>>2]*W,W*+g[n+160>>2],W*+g[n+164>>2],1.0)|0;W=+g[n+168>>2];if(W<1.0){oa=8.0}else{oa=W*8.0}g[z+32>>2]=1.0/oa;n=c[B+68>>2]|0;w=z+52|0;if((n|0)==-1){c[w>>2]=0}else{c[w>>2]=1;w=c[s+(n+M<<3)>>2]|0;M=c[553042]|0;g[z+56>>2]=+g[219094]- +g[M+(w*20|0)>>2];g[z+60>>2]=+g[219095]- +g[M+(w*20|0)+4>>2];g[z+64>>2]=+g[219096]- +g[M+(w*20|0)+8>>2];g[z+68>>2]=-0.0- +g[M+(w*20|0)+12>>2]}w=e+1|0;if((w|0)<((I>>>0)/72|0|0)){B=B+72|0;z=z+72|0;e=w}else{break f}}if((C|0)==123){Tk[c[4886345]&255](1,116176,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}else if((C|0)==125){Tk[c[4886345]&255](1,114584,(h=i,i=i+1|0,i=i+7&-8,c[h>>2]=0,h)|0);i=h}}}while(0);c[(f+86032|0)>>2]=0;I=c[l+116>>2]|0;if(((I>>>0)%104|0|0)!=0){Tk[c[4886345]&255](1,128960,(h=i,i=i+8|0,c[h>>2]=2212016,h)|0);i=h}A=c[5145342]|0;ka=A+(c[l+88>>2]|0)|0;if((((c[(l+92|0)>>2]|0)>>>0)%44|0|0)!=0){Tk[c[4886345]&255](1,128960,(h=i,i=i+8|0,c[h>>2]=2212016,h)|0);i=h}e=A+(c[l+96>>2]|0)|0;if((c[l+100>>2]&3|0)!=0){Tk[c[4886345]&255](1,128960,(h=i,i=i+8|0,c[h>>2]=2212016,h)|0);i=h}c[553048]=Kk[c[4886347]&255](((I>>>0)/104|0)*80|0,1)|0;c[553047]=(I>>>0)/104|0;A=((I>>>0)/104|0)<<2;c[553049]=Kk[c[4886347]&255](A,1)|0;c[553050]=Kk[c[4886347]&255](A,1)|0;c[553051]=Kk[c[4886347]&255](A,1)|0;do{if((c[(c[4917466]|0)+32>>2]|0)!=0){$B(f+86040|0|0,64,125304,(h=i,i=i+8|0,c[h>>2]=2212080,h)|0)|0;i=h;A=Kk[c[4886365]&255](f+86040|0|0,f+86032|0)|0;if((c[(f+86032|0)>>2]|0)==0){break}z=(((c[(l+92|0)>>2]|0)>>>0)/44|0)*12|0;if((A|0)==(z|0)){break}Tk[c[4886345]&255](1,127616,(h=i,i=i+24|0,c[h>>2]=f+86040|0|0,c[h+8>>2]=A,c[h+16>>2]=z,h)|0);i=h}}while(0);c[f+86136>>2]=j;c[f+86144>>2]=l;c[f+87472>>2]=I;c[f+87488>>2]=ka;c[f+87496>>2]=e;c[f+90368>>2]=C;c[f+90376>>2]=h;c[f+90408>>2]=0;c[f+90412>>2]=0;_RE_LoadWorldMap$0(f);C=c[f+90368>>2]|0;h=c[f+90376>>2]|0;F=c[f+90408>>2]|0;y=c[f+90412>>2]|0;G=+g[f+90412>>2];c[f+90408>>2]=0;c[f+90412>>2]=0;if((F|0)==5){return}}function JP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a>>2]|0;a=c[b>>2]|0;b=c[(c[d>>2]|0)+72>>2]|0;e=c[(c[a>>2]|0)+72>>2]|0;if((b|0)<(e|0)){f=-1;return f|0}if((b|0)>(e|0)){f=1;return f|0}e=c[d+4>>2]|0;b=c[a+4>>2]|0;if((e|0)<(b|0)){f=-1;return f|0}if((e|0)>(b|0)){f=1;return f|0}b=c[d+8>>2]|0;d=c[a+8>>2]|0;if((b|0)<(d|0)){f=-1;return f|0}f=(b|0)>(d|0)|0;return f|0}function KP(a,b){a=a|0;b=b|0;var d=0;c[a+48>>2]=b;if((c[a>>2]|0)==-1){d=a}else{return}while(1){KP(c[d+56>>2]|0,d);a=c[d+60>>2]|0;c[a+48>>2]=d;if((c[a>>2]|0)==-1){d=a}else{break}}return}function LP(){var a=0,b=0,d=0,e=0,f=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0;a=i;a:do{switch(c[(c[4917322]|0)+32>>2]|0){case 6:{b=c[7094298]|0;d=c[7094299]|0;Tk[c[4886344]&255](0,63472,(e=i,i=i+24|0,c[e>>2]=c[7094297],c[e+8>>2]=b,c[e+16>>2]=d,e)|0);i=e;break};case 1:{d=c[4886344]|0;b=c[7094281]|0;f=c[7094285]|0;j=c[7094280]|0;k=c[253824]|0;l=c[7094282]|0;m=(c[7094283]|0)/3|0;n=(c[7094284]|0)/3|0;o=+(ZQ()|0)/1.0e6;p=+g[7094286]/+(da(c[5123027]|0,c[5123026]|0)|0);Tk[d&255](0,114200,(e=i,i=i+72|0,c[e>>2]=b,c[e+8>>2]=f,c[e+16>>2]=j,c[e+24>>2]=k,c[e+32>>2]=l,c[e+40>>2]=m,c[e+48>>2]=n,h[e+56>>3]=o,h[e+64>>3]=p,e)|0);i=e;break};case 4:{n=c[7094295]|0;if((n|0)==0){break a}m=c[253826]|0;l=(c[7094296]|0)/3|0;Tk[c[4886344]&255](0,117048,(e=i,i=i+32|0,c[e>>2]=c[253825],c[e+8>>2]=m,c[e+16>>2]=n,c[e+24>>2]=l,e)|0);i=e;break};case 5:{Tk[c[4886344]&255](0,106664,(e=i,i=i+8|0,h[e>>3]=+g[253576],e)|0);i=e;break};case 2:{l=c[253813]|0;n=c[253814]|0;m=c[253815]|0;k=c[253816]|0;j=c[253817]|0;Tk[c[4886344]&255](0,168280,(e=i,i=i+48|0,c[e>>2]=c[253812],c[e+8>>2]=l,c[e+16>>2]=n,c[e+24>>2]=m,c[e+32>>2]=k,c[e+40>>2]=j,e)|0);i=e;j=c[253819]|0;k=c[253820]|0;m=c[253821]|0;n=c[253822]|0;l=c[253823]|0;Tk[c[4886344]&255](0,142792,(e=i,i=i+48|0,c[e>>2]=c[253818],c[e+8>>2]=j,c[e+16>>2]=k,c[e+24>>2]=m,c[e+32>>2]=n,c[e+40>>2]=l,e)|0);i=e;break};case 3:{Tk[c[4886344]&255](0,127544,(e=i,i=i+8|0,c[e>>2]=c[253802],e)|0);i=e;break};case 0:{n$(1015248,0,60)|0;n$(28377120,0,104)|0;i=a;return};case 7:{l=c[7094292]|0;n=c[7094293]|0;m=c[7094294]|0;Tk[c[4886344]&255](0,55656,(e=i,i=i+32|0,c[e>>2]=c[7094291],c[e+8>>2]=l,c[e+16>>2]=n,c[e+24>>2]=m,e)|0);i=e;m=c[7094301]|0;n=c[7094302]|0;l=c[7094303]|0;k=c[7094304]|0;Tk[c[4886344]&255](0,49200,(e=i,i=i+40|0,c[e>>2]=c[7094300],c[e+8>>2]=m,c[e+16>>2]=n,c[e+24>>2]=l,c[e+32>>2]=k,e)|0);i=e;break};default:{}}}while(0);n$(1015248,0,60)|0;n$(28377120,0,104)|0;i=a;return}function MP(){var a=0,b=0;if((c[253180]|0)==0){return}a=c[7093892]|0;b=a+1279160|0;c[(c[b>>2]|0)+(a+1017016)>>2]=0;c[b>>2]=0;if((c[(c[4917330]|0)+32>>2]|0)!=0){return}uP(a+1017016|0);return}function NP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=c[7093892]|0;e=a+3&-4;a=d+1279160|0;f=c[a>>2]|0;g=f+e|0;if((g+4|0)<=262144){c[a>>2]=g;h=d+1017016+f|0;i=b;return h|0}if((e|0)>262140){Tk[c[4886345]&255](0,44792,(f=i,i=i+8|0,c[f>>2]=e,f)|0);i=f;return 0}else{h=0;i=b;return h|0}return 0}function OP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[7093892]|0;e=d+1279160|0;f=c[e>>2]|0;if((f+1372|0)>262144){return}c[e>>2]=f+1368;c[d+1017016+f>>2]=3;c[f+1360+(d+1017016)>>2]=a;c[f+1364+(d+1017016)>>2]=b;m$(f+4+(d+1017016)|0,1014516,692)|0;m$(f+696+(d+1017016)|0,1013652,664)|0;return}function PP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[7093892]|0;e=d+1279160|0;f=c[e>>2]|0;if((f+16|0)>262144){return}c[e>>2]=f+12;c[d+1017016+f>>2]=10;c[f+4+(d+1017016)>>2]=a;c[f+8+(d+1017016)>>2]=b;return}function QP(){var a=0,b=0,d=0;a=c[7093892]|0;b=a+1279160|0;d=c[b>>2]|0;if((d+1364|0)>262144){return}c[b>>2]=d+1360;c[a+1017016+d>>2]=11;m$(d+4+(a+1017016)|0,1014516,692)|0;m$(d+696+(a+1017016)|0,1013652,664)|0;return}function RP(a){a=a|0;var b=0,d=0,e=0;if((c[253180]|0)==0){return}b=c[7093892]|0;d=b+1279160|0;e=c[d>>2]|0;if((e+24|0)>262144){return}c[d>>2]=e+20;c[b+1017016+e>>2]=1;d=(a|0)==0?186440:a;g[e+4+(b+1017016)>>2]=+g[d>>2];g[e+8+(b+1017016)>>2]=+g[d+4>>2];g[e+12+(b+1017016)>>2]=+g[d+8>>2];g[e+16+(b+1017016)>>2]=+g[d+12>>2];return}function SP(a,b,d,e,f,h,i,j,k){a=+a;b=+b;d=+d;e=+e;f=+f;h=+h;i=+i;j=+j;k=k|0;var l=0,m=0,n=0;if((c[253180]|0)==0){return}l=c[7093892]|0;m=l+1279160|0;n=c[m>>2]|0;if((n+44|0)>262144){return}c[m>>2]=n+40;c[l+1017016+n>>2]=2;c[n+4+(l+1017016)>>2]=UT(k)|0;g[n+8+(l+1017016)>>2]=a;g[n+12+(l+1017016)>>2]=b;g[n+16+(l+1017016)>>2]=d;g[n+20+(l+1017016)>>2]=e;g[n+24+(l+1017016)>>2]=f;g[n+28+(l+1017016)>>2]=h;g[n+32+(l+1017016)>>2]=i;g[n+36+(l+1017016)>>2]=j;return}function TP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;if((c[253180]|0)==0){i=b;return}c[5120112]=0;c[253192]=(c[253192]|0)+1;c[253195]=0;d=c[4917424]|0;if((c[d+32>>2]|0)==0){if((c[d+20>>2]|0)==0){e=d}else{d=c[7093892]|0;f=d+1279160|0;c[(c[f>>2]|0)+(d+1017016)>>2]=0;c[f>>2]=0;if((c[(c[4917330]|0)+32>>2]|0)==0){uP(d+1017016|0)}kg(2960);e=c[4917424]|0}c[e+20>>2]=0}else{e=c[5123020]|0;do{if((e|0)<4){Tk[c[4886344]&255](0,183840,(g=i,i=i+8|0,c[g>>2]=e,g)|0);i=g;hk[c[4886353]&255](180088,175536);c[(c[4917424]|0)+20>>2]=0}else{if((c[(c[4917346]|0)+32>>2]|0)==2){Tk[c[4886344]&255](0,171896,(g=i,i=i+1|0,i=i+7&-8,c[g>>2]=0,g)|0);i=g;hk[c[4886353]&255](180088,175536);c[(c[4917424]|0)+20>>2]=0;break}d=c[7093892]|0;f=d+1279160|0;c[(c[f>>2]|0)+(d+1017016)>>2]=0;c[f>>2]=0;if((c[(c[4917330]|0)+32>>2]|0)==0){uP(d+1017016|0)}Xc(2960);Cj(-1|0);Nd(0);nh(519,0,-1|0);qj(7680,7682,7682)}}while(0);c[(c[4917424]|0)+20>>2]=0}e=c[4917302]|0;if((c[e+20>>2]|0)!=0){do{if((c[253180]|0)==0){h=e}else{d=c[7093892]|0;f=d+1279160|0;c[(c[f>>2]|0)+(d+1017016)>>2]=0;c[f>>2]=0;if((c[(c[4917330]|0)+32>>2]|0)!=0){h=e;break}uP(d+1017016|0);h=c[4917302]|0}}while(0);YQ(c[h+4>>2]|0);c[(c[4917302]|0)+20>>2]=0}h=(c[4917472]|0)+20|0;if((c[h>>2]|0)!=0){c[h>>2]=0;do{if((c[253180]|0)!=0){h=c[7093892]|0;e=h+1279160|0;c[(c[e>>2]|0)+(h+1017016)>>2]=0;c[e>>2]=0;if((c[(c[4917330]|0)+32>>2]|0)!=0){break}uP(h+1017016|0)}}while(0);lR()}do{if((c[(c[4917460]|0)+32>>2]|0)==0){do{if((c[253180]|0)!=0){h=c[7093892]|0;e=h+1279160|0;c[(c[e>>2]|0)+(h+1017016)>>2]=0;c[e>>2]=0;if((c[(c[4917330]|0)+32>>2]|0)!=0){break}uP(h+1017016|0)}}while(0);h=nj()|0;if((h|0)==0){break}Tk[c[4886345]&255](0,169056,(g=i,i=i+8|0,c[g>>2]=h,g)|0);i=g}}while(0);c[253647]=a;i=b;return}function UP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((c[253180]|0)==0){return}d=c[7093892]|0;e=d+1279160|0;f=c[e>>2]|0;if((f+8|0)>262144){return}c[e>>2]=f+4;c[d+1017016+f>>2]=5;c[(c[e>>2]|0)+(d+1017016)>>2]=0;c[e>>2]=0;LP();if((c[(c[4917330]|0)+32>>2]|0)==0){uP(d+1017016|0)}lT();if((a|0)!=0){c[a>>2]=c[253827]}c[253827]=0;if((b|0)!=0){c[b>>2]=c[7094305]}c[7094305]=0;return}function VP(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;if((c[253180]|0)==0){return}g=c[7093892]|0;h=g+1279160|0;i=c[h>>2]|0;if((i+28|0)>262144){return}c[h>>2]=i+24;c[g+1017016+i>>2]=7;c[i+4+(g+1017016)>>2]=a;c[i+8+(g+1017016)>>2]=b;c[i+12+(g+1017016)>>2]=d;c[i+16+(g+1017016)>>2]=e;c[i+20+(g+1017016)>>2]=f;return}function WP(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;i=da(b,a)|0;j=i*84|0;k=j+68|0;l=jk[c[4886350]&255](k)|0;m=l;n$(l|0,0,k|0)|0;k=a<<2;n=jk[c[4886350]&255](k)|0;c[l+144>>2]=n;m$(n|0,e|0,k)|0;k=b<<2;n=jk[c[4886350]&255](k)|0;c[l+148>>2]=n;m$(n|0,e+260|0,k)|0;c[l+72>>2]=f;k=f<<2;f=jk[c[4886350]&255](k)|0;c[l+76>>2]=f;m$(f|0,h|0,k)|0;c[l+80>>2]=i;i=l+84|0;c[i>>2]=jk[c[4886350]&255](j)|0;c[l+136>>2]=a;c[l+140>>2]=b;c[l>>2]=3;j=l+12|0;k=l+24|0;KB(j,k);if((a|0)>0&(b|0)>0){h=0;do{f=0;do{e=(da(f,a)|0)+h|0;n=(c[i>>2]|0)+(e*84|0)|0;m$(n|0,d+(f*5460|0)+(h*84|0)|0,84)|0;LB(n|0,j,k);f=f+1|0;}while((f|0)<(b|0));h=h+1|0;}while((h|0)<(a|0))}o=+g[j>>2];p=+g[l+16>>2];q=p+ +g[l+28>>2];r=+g[l+20>>2];s=r+ +g[l+32>>2];t=(o+ +g[k>>2])*.5;g[l+36>>2]=t;u=q*.5;g[l+40>>2]=u;q=s*.5;g[l+44>>2]=q;s=o-t;o=p-u;p=r-q;r=+T(s*s+o*o+p*p);g[l+48>>2]=r;g[l+112>>2]=t;g[l+116>>2]=u;g[l+120>>2]=q;g[l+124>>2]=r;return m|0}function XP(a){a=a|0;vk[c[4886351]&511](c[a+144>>2]|0);vk[c[4886351]&511](c[a+148>>2]|0);vk[c[4886351]&511](c[a+76>>2]|0);vk[c[4886351]&511](c[a+84>>2]|0);vk[c[4886351]&511](a);return}function YP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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.0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0,N=0.0,O=0.0,P=0,Q=0,R=0,S=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0,ca=0.0,ea=0,fa=0.0,ga=0.0,ha=0,ia=0.0,ja=0.0,ka=0,la=0.0,ma=0.0,na=0,oa=0.0,pa=0.0,qa=0,ra=0.0,sa=0.0,ta=0,ua=0.0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0.0,Na=0.0,Oa=0.0,Pa=0,Qa=0,Ra=0,Sa=0.0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0.0,Xa=0.0,Ya=0.0,Za=0.0,_a=0.0,$a=0.0,ab=0.0,bb=0.0,cb=0.0,db=0.0,eb=0.0,fb=0.0,gb=0.0,hb=0.0,ib=0.0,jb=0.0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=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=0,Nb=0;e=i;i=i+356344|0;f=e|0;h=e+88|0;j=e+176|0;k=e+696|0;l=e+784|0;m=e+920|0;n=e+355824|0;o=n;p=i;i=i+12|0;i=i+7&-8;q=e+800|0;n$(q|0,0,40)|0;r=e+840|0;n$(r|0,0,40)|0;s=e+880|0;n$(s|0,0,40)|0;if((a|0)>0){t=(b|0)>0;u=0;do{if(t){v=0;do{m$(m+(v*5460|0)+(u*84|0)|0,d+(((da(v,a)|0)+u|0)*84|0)|0,84)|0;v=v+1|0;}while((v|0)<(b|0))}u=u+1|0;}while((u|0)<(a|0))}u=p|0;d=p+4|0;t=p+8|0;p=f;f=0;v=b;b=a;while(1){n$(n+(f*260|0)|0,0,260)|0;w=(v|0)>0;x=b;a=0;y=0;a:while(1){if(w){z=a+1|0;A=a+2|0;B=0.0;C=0;while(1){D=+g[m+(C*5460|0)+(a*84|0)>>2];E=+g[m+(C*5460|0)+(A*84|0)>>2];F=+g[m+(C*5460|0)+(a*84|0)+4>>2];G=+g[m+(C*5460|0)+(A*84|0)+4>>2];H=+g[m+(C*5460|0)+(a*84|0)+8>>2];I=+g[m+(C*5460|0)+(A*84|0)+8>>2];J=(E+(D+ +g[m+(C*5460|0)+(z*84|0)>>2]*2.0))*.25-D;K=(G+(F+ +g[m+(C*5460|0)+(z*84|0)+4>>2]*2.0))*.25-F;L=(I+(H+ +g[m+(C*5460|0)+(z*84|0)+8>>2]*2.0))*.25-H;g[u>>2]=E-D;g[d>>2]=G-F;g[t>>2]=I-H;+wB(u);H=+g[u>>2];I=+g[d>>2];F=+g[t>>2];G=J*H+K*I+L*F;D=J-H*G;H=K-I*G;I=L-F*G;G=I*I+(D*D+H*H);H=G>B?G:B;M=C+1|0;if((M|0)<(v|0)){B=H;C=M}else{N=H;break}}}else{N=0.0}O=+T(N);do{if(O<.10000000149011612){g[n+(f*260|0)+(a+1<<2)>>2]=999.0;C=y+1|0;if((C|0)<(x|0)){P=x;Q=a;R=C}else{break a}}else{C=x+2|0;if((C|0)>65){S=14;break a}B=1.0/O;if(!(O>+g[(c[4917310]|0)+28>>2])){g[n+(f*260|0)+(a+1<<2)>>2]=B;z=y+1|0;if((z|0)<(x|0)){P=x;Q=a;R=z;break}else{break a}}z=a+2|0;g[n+(f*260|0)+(z<<2)>>2]=B;if(!w){P=C;Q=z;R=0;break}A=a+1|0;M=x+1|0;U=a+3|0;V=(x|0)<(U|0);W=0;while(1){X=m+(W*5460|0)+(A*84|0)|0;B=+g[X>>2];H=(+g[m+(W*5460|0)+(a*84|0)>>2]+B)*.5;Y=m+(W*5460|0)+(A*84|0)+4|0;G=+g[Y>>2];D=(+g[m+(W*5460|0)+(a*84|0)+4>>2]+G)*.5;Z=m+(W*5460|0)+(A*84|0)+8|0;I=+g[Z>>2];F=(+g[m+(W*5460|0)+(a*84|0)+8>>2]+I)*.5;_=m+(W*5460|0)+(A*84|0)+12|0;L=+g[_>>2];K=(+g[m+(W*5460|0)+(a*84|0)+12>>2]+L)*.5;$=m+(W*5460|0)+(A*84|0)+16|0;J=+g[$>>2];E=(+g[m+(W*5460|0)+(a*84|0)+16>>2]+J)*.5;aa=m+(W*5460|0)+(A*84|0)+20|0;ba=+g[aa>>2];ca=(+g[m+(W*5460|0)+(a*84|0)+20>>2]+ba)*.5;ea=m+(W*5460|0)+(A*84|0)+24|0;fa=+g[ea>>2];ga=(+g[m+(W*5460|0)+(a*84|0)+24>>2]+fa)*.5;ha=m+(W*5460|0)+(A*84|0)+68|0;ia=+g[ha>>2];ja=(+g[m+(W*5460|0)+(a*84|0)+68>>2]+ia)*.5;ka=m+(W*5460|0)+(A*84|0)+72|0;la=+g[ka>>2];ma=(+g[m+(W*5460|0)+(a*84|0)+72>>2]+la)*.5;na=m+(W*5460|0)+(A*84|0)+76|0;oa=+g[na>>2];pa=(+g[m+(W*5460|0)+(a*84|0)+76>>2]+oa)*.5;qa=m+(W*5460|0)+(A*84|0)+80|0;ra=+g[qa>>2];sa=(+g[m+(W*5460|0)+(a*84|0)+80>>2]+ra)*.5;ta=m+(W*5460|0)+(z*84|0)|0;ua=(B+ +g[ta>>2])*.5;va=m+(W*5460|0)+(z*84|0)+4|0;B=(G+ +g[va>>2])*.5;wa=m+(W*5460|0)+(z*84|0)+8|0;G=(I+ +g[wa>>2])*.5;xa=m+(W*5460|0)+(z*84|0)+12|0;I=(L+ +g[xa>>2])*.5;ya=m+(W*5460|0)+(z*84|0)+16|0;L=(J+ +g[ya>>2])*.5;za=m+(W*5460|0)+(z*84|0)+20|0;J=(ba+ +g[za>>2])*.5;Aa=m+(W*5460|0)+(z*84|0)+24|0;ba=(fa+ +g[Aa>>2])*.5;Ba=m+(W*5460|0)+(z*84|0)+68|0;fa=(ia+ +g[Ba>>2])*.5;Ca=m+(W*5460|0)+(z*84|0)+72|0;ia=(la+ +g[Ca>>2])*.5;Da=m+(W*5460|0)+(z*84|0)+76|0;la=(oa+ +g[Da>>2])*.5;Ea=m+(W*5460|0)+(z*84|0)+80|0;oa=(ra+ +g[Ea>>2])*.5;ra=(H+ua)*.5;Fa=(D+B)*.5;Ga=(F+G)*.5;Ha=(K+I)*.5;Ia=(E+L)*.5;Ja=(ca+J)*.5;Ka=(ga+ba)*.5;La=(ja+fa)*.5;Ma=(ma+ia)*.5;Na=(pa+la)*.5;Oa=(sa+oa)*.5;if(!V){Pa=M;do{m$(m+(W*5460|0)+(Pa*84|0)|0,m+(W*5460|0)+((Pa-2|0)*84|0)|0,84)|0;Pa=Pa-1|0;}while((Pa|0)>(U|0))}g[X>>2]=H;g[Y>>2]=D;g[Z>>2]=F;g[_>>2]=K;g[$>>2]=E;g[aa>>2]=ca;g[ea>>2]=ga;m$(m+(W*5460|0)+(A*84|0)+28|0,q|0,40)|0;g[ha>>2]=ja;g[ka>>2]=ma;g[na>>2]=pa;g[qa>>2]=sa;g[ta>>2]=ra;g[va>>2]=Fa;g[wa>>2]=Ga;g[xa>>2]=Ha;g[ya>>2]=Ia;g[za>>2]=Ja;g[Aa>>2]=Ka;m$(m+(W*5460|0)+(z*84|0)+28|0,s|0,40)|0;g[Ba>>2]=La;g[Ca>>2]=Ma;g[Da>>2]=Na;g[Ea>>2]=Oa;g[m+(W*5460|0)+(U*84|0)>>2]=ua;g[m+(W*5460|0)+(U*84|0)+4>>2]=B;g[m+(W*5460|0)+(U*84|0)+8>>2]=G;g[m+(W*5460|0)+(U*84|0)+12>>2]=I;g[m+(W*5460|0)+(U*84|0)+16>>2]=L;g[m+(W*5460|0)+(U*84|0)+20>>2]=J;g[m+(W*5460|0)+(U*84|0)+24>>2]=ba;m$(m+(W*5460|0)+(U*84|0)+28|0,r|0,40)|0;g[m+(W*5460|0)+(U*84|0)+68>>2]=fa;g[m+(W*5460|0)+(U*84|0)+72>>2]=ia;g[m+(W*5460|0)+(U*84|0)+76>>2]=la;g[m+(W*5460|0)+(U*84|0)+80>>2]=oa;Pa=W+1|0;if((Pa|0)<(v|0)){W=Pa}else{P=C;Q=z;R=0;break}}}}while(0);x=P;a=(Q+2|0)%(P-1|0)|0;y=R}if((S|0)==14){S=0;g[n+(f*260|0)+(a+1<<2)>>2]=1.0/O}do{if((x|0)>(v|0)){if(w){Qa=0}else{break}while(1){y=Qa+1|0;if((y|0)<(x|0)){z=y;do{C=m+(z*5460|0)+(Qa*84|0)|0;if((z|0)<(v|0)){W=C;m$(p|0,W|0,84)|0;U=m+(Qa*5460|0)+(z*84|0)|0;m$(W|0,U|0,84)|0;m$(U|0,p|0,84)|0}else{m$(C|0,m+(Qa*5460|0)+(z*84|0)|0,84)|0}z=z+1|0;}while((z|0)<(x|0))}if((y|0)<(v|0)){Qa=y}else{break}}}else{if((x|0)>0){Ra=0}else{break}while(1){z=Ra+1|0;if((z|0)<(v|0)){C=z;do{U=m+(Ra*5460|0)+(C*84|0)|0;if((C|0)<(x|0)){W=U;m$(p|0,W|0,84)|0;A=m+(C*5460|0)+(Ra*84|0)|0;m$(W|0,A|0,84)|0;m$(A|0,p|0,84)|0}else{m$(U|0,m+(C*5460|0)+(Ra*84|0)|0,84)|0}C=C+1|0;}while((C|0)<(v|0))}if((z|0)<(x|0)){Ra=z}else{break}}}}while(0);a=f+1|0;if((a|0)<2){f=a;b=v;v=x}else{break}}b=m|0;if(w&(x|0)>1){w=0;do{f=1;do{Ra=f+1|0;p=m+(f*5460|0)+(w*84|0)|0;O=+g[p>>2];Qa=m+(f*5460|0)+(w*84|0)+4|0;N=+g[Qa>>2];Sa=(N+ +g[m+(Ra*5460|0)+(w*84|0)+4>>2])*.5;S=m+(f*5460|0)+(w*84|0)+8|0;Ta=+g[S>>2];Ua=(Ta+ +g[m+(Ra*5460|0)+(w*84|0)+8>>2])*.5;R=m+(f*5460|0)+(w*84|0)+12|0;Va=+g[R>>2];Wa=(Va+ +g[m+(Ra*5460|0)+(w*84|0)+12>>2])*.5;P=m+(f*5460|0)+(w*84|0)+16|0;Xa=+g[P>>2];Ya=(Xa+ +g[m+(Ra*5460|0)+(w*84|0)+16>>2])*.5;Q=m+(f*5460|0)+(w*84|0)+20|0;Za=+g[Q>>2];_a=(Za+ +g[m+(Ra*5460|0)+(w*84|0)+20>>2])*.5;r=m+(f*5460|0)+(w*84|0)+24|0;$a=+g[r>>2];ab=($a+ +g[m+(Ra*5460|0)+(w*84|0)+24>>2])*.5;s=m+(f*5460|0)+(w*84|0)+68|0;bb=+g[s>>2];cb=(bb+ +g[m+(Ra*5460|0)+(w*84|0)+68>>2])*.5;q=m+(f*5460|0)+(w*84|0)+72|0;db=+g[q>>2];eb=(db+ +g[m+(Ra*5460|0)+(w*84|0)+72>>2])*.5;t=m+(f*5460|0)+(w*84|0)+76|0;fb=+g[t>>2];gb=(fb+ +g[m+(Ra*5460|0)+(w*84|0)+76>>2])*.5;d=m+(f*5460|0)+(w*84|0)+80|0;hb=+g[d>>2];ib=(hb+ +g[m+(Ra*5460|0)+(w*84|0)+80>>2])*.5;u=f-1|0;jb=(N+ +g[m+(u*5460|0)+(w*84|0)+4>>2])*.5;N=(Ta+ +g[m+(u*5460|0)+(w*84|0)+8>>2])*.5;Ta=(Va+ +g[m+(u*5460|0)+(w*84|0)+12>>2])*.5;Va=(Xa+ +g[m+(u*5460|0)+(w*84|0)+16>>2])*.5;Xa=(Za+ +g[m+(u*5460|0)+(w*84|0)+20>>2])*.5;Za=($a+ +g[m+(u*5460|0)+(w*84|0)+24>>2])*.5;$a=(bb+ +g[m+(u*5460|0)+(w*84|0)+68>>2])*.5;bb=(db+ +g[m+(u*5460|0)+(w*84|0)+72>>2])*.5;db=(fb+ +g[m+(u*5460|0)+(w*84|0)+76>>2])*.5;fb=(hb+ +g[m+(u*5460|0)+(w*84|0)+80>>2])*.5;g[p>>2]=((O+ +g[m+(Ra*5460|0)+(w*84|0)>>2])*.5+(O+ +g[m+(u*5460|0)+(w*84|0)>>2])*.5)*.5;g[Qa>>2]=(Sa+jb)*.5;g[S>>2]=(Ua+N)*.5;g[R>>2]=(Wa+Ta)*.5;g[P>>2]=(Ya+Va)*.5;g[Q>>2]=(_a+Xa)*.5;g[r>>2]=(ab+Za)*.5;g[s>>2]=(cb+$a)*.5;g[q>>2]=(eb+bb)*.5;g[t>>2]=(gb+db)*.5;g[d>>2]=(ib+fb)*.5;f=f+2|0;}while((f|0)<(x|0));w=w+1|0;}while((w|0)<(v|0))}w=(x|0)>0;if(w&(v|0)>1){f=0;do{d=1;do{t=d+1|0;q=m+(f*5460|0)+(d*84|0)|0;fb=+g[q>>2];s=m+(f*5460|0)+(d*84|0)+4|0;ib=+g[s>>2];db=(ib+ +g[m+(f*5460|0)+(t*84|0)+4>>2])*.5;r=m+(f*5460|0)+(d*84|0)+8|0;gb=+g[r>>2];bb=(gb+ +g[m+(f*5460|0)+(t*84|0)+8>>2])*.5;Q=m+(f*5460|0)+(d*84|0)+12|0;eb=+g[Q>>2];$a=(eb+ +g[m+(f*5460|0)+(t*84|0)+12>>2])*.5;P=m+(f*5460|0)+(d*84|0)+16|0;cb=+g[P>>2];Za=(cb+ +g[m+(f*5460|0)+(t*84|0)+16>>2])*.5;R=m+(f*5460|0)+(d*84|0)+20|0;ab=+g[R>>2];Xa=(ab+ +g[m+(f*5460|0)+(t*84|0)+20>>2])*.5;S=m+(f*5460|0)+(d*84|0)+24|0;_a=+g[S>>2];Va=(_a+ +g[m+(f*5460|0)+(t*84|0)+24>>2])*.5;Qa=m+(f*5460|0)+(d*84|0)+68|0;Ya=+g[Qa>>2];Ta=(Ya+ +g[m+(f*5460|0)+(t*84|0)+68>>2])*.5;u=m+(f*5460|0)+(d*84|0)+72|0;Wa=+g[u>>2];N=(Wa+ +g[m+(f*5460|0)+(t*84|0)+72>>2])*.5;Ra=m+(f*5460|0)+(d*84|0)+76|0;Ua=+g[Ra>>2];jb=(Ua+ +g[m+(f*5460|0)+(t*84|0)+76>>2])*.5;p=m+(f*5460|0)+(d*84|0)+80|0;Sa=+g[p>>2];O=(Sa+ +g[m+(f*5460|0)+(t*84|0)+80>>2])*.5;a=d-1|0;hb=(ib+ +g[m+(f*5460|0)+(a*84|0)+4>>2])*.5;ib=(gb+ +g[m+(f*5460|0)+(a*84|0)+8>>2])*.5;gb=(eb+ +g[m+(f*5460|0)+(a*84|0)+12>>2])*.5;eb=(cb+ +g[m+(f*5460|0)+(a*84|0)+16>>2])*.5;cb=(ab+ +g[m+(f*5460|0)+(a*84|0)+20>>2])*.5;ab=(_a+ +g[m+(f*5460|0)+(a*84|0)+24>>2])*.5;_a=(Ya+ +g[m+(f*5460|0)+(a*84|0)+68>>2])*.5;Ya=(Wa+ +g[m+(f*5460|0)+(a*84|0)+72>>2])*.5;Wa=(Ua+ +g[m+(f*5460|0)+(a*84|0)+76>>2])*.5;Ua=(Sa+ +g[m+(f*5460|0)+(a*84|0)+80>>2])*.5;g[q>>2]=((fb+ +g[m+(f*5460|0)+(t*84|0)>>2])*.5+(fb+ +g[m+(f*5460|0)+(a*84|0)>>2])*.5)*.5;g[s>>2]=(db+hb)*.5;g[r>>2]=(bb+ib)*.5;g[Q>>2]=($a+gb)*.5;g[P>>2]=(Za+eb)*.5;g[R>>2]=(Xa+cb)*.5;g[S>>2]=(Va+ab)*.5;g[Qa>>2]=(Ta+_a)*.5;g[u>>2]=(N+Ya)*.5;g[Ra>>2]=(jb+Wa)*.5;g[p>>2]=(O+Ua)*.5;d=d+2|0;}while((d|0)<(v|0));f=f+1|0;}while((f|0)<(x|0))}f=v-1|0;if((f|0)>1){d=1;p=v;Ra=f;while(1){f=d+1|0;do{if(+g[n+(d<<2)>>2]!=999.0){kb=p}else{if((f|0)<(p|0)){lb=d;mb=f}else{kb=Ra;break}while(1){if(w){u=0;do{m$(m+(u*5460|0)+(lb*84|0)|0,m+(u*5460|0)+(mb*84|0)|0,84)|0;u=u+1|0;}while((u|0)<(x|0))}g[n+(lb<<2)>>2]=+g[n+(mb<<2)>>2];u=mb+1|0;if((u|0)<(p|0)){lb=mb;mb=u}else{kb=Ra;break}}}}while(0);u=kb-1|0;if((f|0)<(u|0)){d=f;p=kb;Ra=u}else{nb=kb;break}}}else{nb=v}v=x-1|0;if((v|0)>1){kb=(nb|0)>0;Ra=1;p=x;d=v;while(1){mb=Ra+1|0;do{if(+g[n+260+(Ra<<2)>>2]!=999.0){ob=p}else{if((mb|0)<(p|0)){pb=Ra;qb=mb}else{ob=d;break}while(1){if(kb){lb=0;do{m$(m+(pb*5460|0)+(lb*84|0)|0,m+(qb*5460|0)+(lb*84|0)|0,84)|0;lb=lb+1|0;}while((lb|0)<(nb|0))}g[n+260+(pb<<2)>>2]=+g[n+260+(qb<<2)>>2];lb=qb+1|0;if((lb|0)<(p|0)){pb=qb;qb=lb}else{ob=d;break}}}}while(0);f=ob-1|0;if((mb|0)<(f|0)){Ra=mb;p=ob;d=f}else{rb=ob;sb=f;break}}}else{rb=x;sb=v}do{if((rb|0)>(nb|0)){v=h;do{if((nb|0)>(rb|0)){if((rb|0)>0){tb=0}else{break}while(1){x=tb+1|0;if((x|0)<(nb|0)){ob=x;do{d=m+(ob*5460|0)+(tb*84|0)|0;if((ob|0)<(rb|0)){p=d;m$(v|0,p|0,84)|0;Ra=m+(tb*5460|0)+(ob*84|0)|0;m$(p|0,Ra|0,84)|0;m$(Ra|0,v|0,84)|0}else{m$(d|0,m+(tb*5460|0)+(ob*84|0)|0,84)|0}ob=ob+1|0;}while((ob|0)<(nb|0))}if((x|0)<(rb|0)){tb=x}else{break}}}else{if((nb|0)>0){ub=0}else{break}while(1){ob=ub+1|0;if((ob|0)<(rb|0)){d=ob;do{Ra=m+(ub*5460|0)+(d*84|0)|0;if((d|0)<(nb|0)){p=Ra;m$(v|0,p|0,84)|0;qb=m+(d*5460|0)+(ub*84|0)|0;m$(p|0,qb|0,84)|0;m$(qb|0,v|0,84)|0}else{m$(Ra|0,m+(d*5460|0)+(ub*84|0)|0,84)|0}d=d+1|0;}while((d|0)<(rb|0))}if((ob|0)<(nb|0)){ub=ob}else{break}}}}while(0);v=j;m$(v|0,o|0,520)|0;mb=(nb|0)>0;if(mb){m$(n+260|0,v|0,nb<<2)|0}if((rb|0)>0){v=0;do{g[n+(v<<2)>>2]=+g[j+260+(sb-v<<2)>>2];v=v+1|0;}while((v|0)<(rb|0))}v=k;if(!mb){vb=rb;wb=nb;break}d=(rb|0)/2|0;if((rb|0)>1){xb=0}else{vb=rb;wb=nb;break}while(1){x=0;do{Ra=m+(xb*5460|0)+(x*84|0)|0;m$(v|0,Ra|0,84)|0;qb=m+(xb*5460|0)+((sb-x|0)*84|0)|0;m$(Ra|0,qb|0,84)|0;m$(qb|0,v|0,84)|0;x=x+1|0;}while((x|0)<(d|0));x=xb+1|0;if((x|0)<(nb|0)){xb=x}else{vb=rb;wb=nb;break}}}else{vb=nb;wb=rb}}while(0);rb=wb-1|0;nb=vb-1|0;if((rb|0)>0){xb=(nb|0)>0;sb=(vb*6|0)-6|0;k=0;j=0;while(1){if(xb){o=da(j,vb)|0;ub=k;tb=0;while(1){h=tb+o|0;d=h+1|0;v=h+vb|0;c[28388832+(ub<<2)>>2]=h;c[28388832+(ub+1<<2)>>2]=v;c[28388832+(ub+2<<2)>>2]=d;c[28388832+(ub+3<<2)>>2]=d;c[28388832+(ub+4<<2)>>2]=v;c[28388832+(ub+5<<2)>>2]=v+1;v=tb+1|0;if((v|0)<(nb|0)){ub=ub+6|0;tb=v}else{break}}yb=sb+k|0}else{yb=k}tb=j+1|0;if((tb|0)<(rb|0)){k=yb;j=tb}else{zb=yb;break}}}else{zb=0}yb=(vb|0)>0;j=(wb|0)>0;if(yb&j){k=0;do{sb=0;do{m$(29830304+(((da(sb,vb)|0)+k|0)*84|0)|0,m+(sb*5460|0)+(k*84|0)|0,84)|0;sb=sb+1|0;}while((sb|0)<(wb|0));k=k+1|0;}while((k|0)<(vb|0))}ZP(vb,wb,b);if(yb){k=l|0;sb=0;nb=29475400+((da(rb,vb)|0)*84|0)|0;while(1){if(j){xb=0;do{m$(29475400+(((da(xb,vb)|0)+sb|0)*84|0)|0,m+(xb*5460|0)+(sb*84|0)|0,84)|0;xb=xb+1|0;}while((xb|0)<(wb|0));c[k>>2]=nb}xb=sb+1|0;if((xb|0)<(vb|0)){sb=xb;nb=nb+84|0}else{break}}}if((zb|0)>0){nb=l|0;sb=l+4|0;k=l+8|0;xb=0;tb=28388832;while(1){c[nb>>2]=29475400+((c[tb>>2]|0)*84|0);c[sb>>2]=29475400+((c[tb+4>>2]|0)*84|0);c[k>>2]=29475400+((c[tb+8>>2]|0)*84|0);jS(nb)|0;ub=xb+3|0;if((ub|0)<(zb|0)){xb=ub;tb=tb+12|0}else{break}}}if(!yb){Ab=12;Bb=0;Cb=n|0;Db=WP(vb,wb,b,Cb,zb,28388832)|0;Eb=520;Fb=0;Gb=354900;Hb=0;Ib=40;Jb=0;Kb=40;Lb=0;Mb=40;Nb=0;i=e;return Db|0}yb=l|0;tb=l+4|0;l=0;xb=da(rb,vb)|0;while(1){if(j){nb=0;do{k=(da(nb,vb)|0)+l|0;g[m+(nb*5460|0)+(l*84|0)+40>>2]=+g[29475440+(k*84|0)>>2];g[m+(nb*5460|0)+(l*84|0)+44>>2]=+g[29475444+(k*84|0)>>2];g[m+(nb*5460|0)+(l*84|0)+48>>2]=+g[29475448+(k*84|0)>>2];g[m+(nb*5460|0)+(l*84|0)+52>>2]=+g[29475452+(k*84|0)>>2];nb=nb+1|0;}while((nb|0)<(wb|0));c[yb>>2]=29475400+(xb*84|0);c[tb>>2]=m+(rb*5460|0)+(l*84|0)}nb=l+1|0;if((nb|0)<(vb|0)){l=nb;xb=xb+1|0}else{break}}Ab=12;Bb=0;Cb=n|0;Db=WP(vb,wb,b,Cb,zb,28388832)|0;Eb=520;Fb=0;Gb=354900;Hb=0;Ib=40;Jb=0;Kb=40;Lb=0;Mb=40;Nb=0;i=e;return Db|0}function ZP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0.0,V=0.0;e=i;i=i+176|0;f=e|0;h=e+16|0;j=e+32|0;k=e+128|0;l=e+144|0;m=(b|0)>0;a:do{if(m){n=a-1|0;o=0;while(1){p=+g[d+(o*5460|0)>>2]- +g[d+(o*5460|0)+(n*84|0)>>2];q=+g[d+(o*5460|0)+4>>2]- +g[d+(o*5460|0)+(n*84|0)+4>>2];r=+g[d+(o*5460|0)+8>>2]- +g[d+(o*5460|0)+(n*84|0)+8>>2];s=o+1|0;if(p*p+q*q+r*r>1.0){t=o;break a}if((s|0)<(b|0)){o=s}else{t=s;break}}}else{t=0}}while(0);o=(t|0)==(b|0);t=(a|0)>0;if(!t){u=96;v=0;i=e;return}n=b-1|0;s=0;while(1){r=+g[d+(s*84|0)>>2]- +g[d+(n*5460|0)+(s*84|0)>>2];q=+g[d+(s*84|0)+4>>2]- +g[d+(n*5460|0)+(s*84|0)+4>>2];p=+g[d+(s*84|0)+8>>2]- +g[d+(n*5460|0)+(s*84|0)+8>>2];w=s+1|0;if(r*r+q*q+p*p>1.0){x=s;break}if((w|0)<(a|0)){s=w}else{x=w;break}}s=(x|0)==(a|0);if(!t){u=96;v=0;i=e;return}t=a-1|0;x=1-a|0;n=b-1|0;w=1-b|0;y=k|0;z=k+4|0;A=k+8|0;k=h+8|0;B=h+4|0;C=h|0;h=f|0;D=f+4|0;E=f+8|0;f=0;do{if(m){F=0;do{p=+g[d+(F*5460|0)+(f*84|0)>>2];q=+g[d+(F*5460|0)+(f*84|0)+4>>2];r=+g[d+(F*5460|0)+(f*84|0)+8>>2];G=0;do{H=j+(G*12|0)+8|0;g[H>>2]=0.0;I=j+(G*12|0)+4|0;g[I>>2]=0.0;J=j+(G*12|0)|0;g[J>>2]=0.0;K=l+(G<<2)|0;c[K>>2]=0;L=c[186560+(G<<3)>>2]|0;M=c[186564+(G<<3)>>2]|0;N=1;do{O=(da(L,N)|0)+f|0;P=(da(M,N)|0)+F|0;do{if(o){if((O|0)<0){Q=t+O|0;break}else{Q=O+((O|0)<(a|0)?0:x)|0;break}}else{Q=O}}while(0);do{if(s){if((P|0)<0){R=n+P|0;break}else{R=P+((P|0)<(b|0)?0:w)|0;break}}else{R=P}}while(0);if(!((R|0)<(b|0)&(((Q|0)>=(a|0)|(Q|0)<0|(R|0)<0)^1))){break}g[y>>2]=+g[d+(R*5460|0)+(Q*84|0)>>2]-p;g[z>>2]=+g[d+(R*5460|0)+(Q*84|0)+4>>2]-q;g[A>>2]=+g[d+(R*5460|0)+(Q*84|0)+8>>2]-r;N=N+1|0;if(!(+MB(y,y)==0.0)){S=25;break}}while((N|0)<4);if((S|0)==25){S=0;c[K>>2]=1;g[J>>2]=+g[y>>2];g[I>>2]=+g[z>>2];g[H>>2]=+g[A>>2]}G=G+1|0;}while((G|0)<8);g[k>>2]=0.0;g[B>>2]=0.0;g[C>>2]=0.0;G=0;while(1){N=G+1|0;do{if((c[l+(G<<2)>>2]|0)!=0){M=N&7;if((c[l+(M<<2)>>2]|0)==0){break}r=+g[j+(M*12|0)+4>>2];q=+g[j+(G*12|0)+8>>2];p=+g[j+(M*12|0)+8>>2];T=+g[j+(G*12|0)+4>>2];g[h>>2]=r*q-p*T;U=+g[j+(G*12|0)>>2];V=+g[j+(M*12|0)>>2];g[D>>2]=p*U-V*q;g[E>>2]=V*T-r*U;if(+MB(h,h)==0.0){break}g[C>>2]=+g[h>>2]+ +g[C>>2];g[B>>2]=+g[D>>2]+ +g[B>>2];g[k>>2]=+g[E>>2]+ +g[k>>2]}}while(0);if((N|0)<8){G=N}else{break}}+MB(C,d+(F*5460|0)+(f*84|0)+28|0);F=F+1|0;}while((F|0)<(b|0))}f=f+1|0;}while((f|0)<(a|0));u=96;v=0;i=e;return}function _P(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=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.0,J=0.0,K=0.0;h=i;i=i+355424|0;j=h|0;k=h+354904|0;l=c[a+136>>2]|0;m=l+1|0;if((l|0)>64){n=0;o=520;p=0;q=354900;r=0;i=h;return n|0}s=c[a+140>>2]|0;t=(l|0)>-1;if(t){u=a+144|0;v=a+84|0;w=e+4|0;x=e+8|0;y=0;z=0;while(1){if((z|0)==(b|0)){if((s|0)>0){A=c[v>>2]|0;B=0;do{C=(da(l,B)|0)+b|0;D=C-1|0;E=j+(B*5460|0)+(b*84|0)|0;g[E>>2]=(+g[A+(D*84|0)>>2]+ +g[A+(C*84|0)>>2])*.5;g[j+(B*5460|0)+(b*84|0)+4>>2]=(+g[A+(D*84|0)+4>>2]+ +g[A+(C*84|0)+4>>2])*.5;g[j+(B*5460|0)+(b*84|0)+8>>2]=(+g[A+(D*84|0)+8>>2]+ +g[A+(C*84|0)+8>>2])*.5;g[j+(B*5460|0)+(b*84|0)+12>>2]=(+g[A+(D*84|0)+12>>2]+ +g[A+(C*84|0)+12>>2])*.5;g[j+(B*5460|0)+(b*84|0)+16>>2]=(+g[A+(D*84|0)+16>>2]+ +g[A+(C*84|0)+16>>2])*.5;g[j+(B*5460|0)+(b*84|0)+20>>2]=(+g[A+(D*84|0)+20>>2]+ +g[A+(C*84|0)+20>>2])*.5;g[j+(B*5460|0)+(b*84|0)+24>>2]=(+g[A+(D*84|0)+24>>2]+ +g[A+(C*84|0)+24>>2])*.5;g[j+(B*5460|0)+(b*84|0)+68>>2]=(+g[A+(D*84|0)+68>>2]+ +g[A+(C*84|0)+68>>2])*.5;g[j+(B*5460|0)+(b*84|0)+72>>2]=(+g[A+(D*84|0)+72>>2]+ +g[A+(C*84|0)+72>>2])*.5;g[j+(B*5460|0)+(b*84|0)+76>>2]=(+g[A+(D*84|0)+76>>2]+ +g[A+(C*84|0)+76>>2])*.5;g[j+(B*5460|0)+(b*84|0)+80>>2]=(+g[A+(D*84|0)+80>>2]+ +g[A+(C*84|0)+80>>2])*.5;if((B|0)==(d|0)){g[E>>2]=+g[e>>2];g[j+(d*5460|0)+(b*84|0)+4>>2]=+g[w>>2];g[j+(d*5460|0)+(b*84|0)+8>>2]=+g[x>>2]}B=B+1|0;}while((B|0)<(s|0))}g[k+(b<<2)>>2]=f;F=y}else{g[k+(z<<2)>>2]=+g[(c[u>>2]|0)+(y<<2)>>2];if((s|0)>0){B=c[v>>2]|0;A=0;do{m$(j+(A*5460|0)+(z*84|0)|0,B+(((da(l,A)|0)+y|0)*84|0)|0,84)|0;A=A+1|0;}while((A|0)<(s|0))}F=y+1|0}A=z+1|0;if((A|0)<(m|0)){y=F;z=A}else{break}}}if((s|0)>0){m$(k+260|0,c[a+148>>2]|0,(s|0)>1?s<<2:4)|0}z=j|0;F=s-1|0;if((F|0)>0){y=(l|0)>0;v=(m*6|0)-6|0;u=0;b=0;while(1){if(y){x=da(b,m)|0;d=u;w=0;while(1){e=w+x|0;A=e+1|0;B=e+m|0;c[29371872+(d<<2)>>2]=e;c[29371872+(d+1<<2)>>2]=B;c[29371872+(d+2<<2)>>2]=A;c[29371872+(d+3<<2)>>2]=A;c[29371872+(d+4<<2)>>2]=B;c[29371872+(d+5<<2)>>2]=B+1;B=w+1|0;if((B|0)<(l|0)){d=d+6|0;w=B}else{break}}G=v+u|0}else{G=u}w=b+1|0;if((w|0)<(F|0)){u=G;b=w}else{H=G;break}}}else{H=0}if(t&(s|0)>0){t=0;do{G=0;do{m$(29830304+(((da(G,m)|0)+t|0)*84|0)|0,j+(G*5460|0)+(t*84|0)|0,84)|0;G=G+1|0;}while((G|0)<(s|0));t=t+1|0;}while((t|0)<(m|0))}ZP(m,s,z);f=+g[a+112>>2];I=+g[a+116>>2];J=+g[a+120>>2];K=+g[a+124>>2];vk[c[4886351]&511](c[a+144>>2]|0);vk[c[4886351]&511](c[a+148>>2]|0);vk[c[4886351]&511](c[a+76>>2]|0);vk[c[4886351]&511](c[a+84>>2]|0);vk[c[4886351]&511](a);a=WP(m,s,z,k|0,H,29371872)|0;g[a+124>>2]=K;g[a+112>>2]=f;g[a+116>>2]=I;g[a+120>>2]=J;n=a;o=520;p=0;q=354900;r=0;i=h;return n|0}function $P(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=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,J=0,K=0.0,L=0.0,M=0.0;h=i;i=i+355424|0;j=h|0;k=h+354904|0;l=k;m=c[a+136>>2]|0;n=c[a+140>>2]|0;o=n+1|0;if((n|0)>64){p=0;q=520;r=0;s=354900;t=0;i=h;return p|0}u=(n|0)>-1;if(u){v=a+148|0;w=a+84|0;x=e+4|0;y=e+8|0;z=0;A=0;while(1){if((A|0)==(b|0)){if((m|0)>0){B=b-1|0;C=c[w>>2]|0;D=0;do{E=(da(m,B)|0)+D|0;F=(da(m,b)|0)+D|0;G=j+(b*5460|0)+(D*84|0)|0;g[G>>2]=(+g[C+(E*84|0)>>2]+ +g[C+(F*84|0)>>2])*.5;g[j+(b*5460|0)+(D*84|0)+4>>2]=(+g[C+(E*84|0)+4>>2]+ +g[C+(F*84|0)+4>>2])*.5;g[j+(b*5460|0)+(D*84|0)+8>>2]=(+g[C+(E*84|0)+8>>2]+ +g[C+(F*84|0)+8>>2])*.5;g[j+(b*5460|0)+(D*84|0)+12>>2]=(+g[C+(E*84|0)+12>>2]+ +g[C+(F*84|0)+12>>2])*.5;g[j+(b*5460|0)+(D*84|0)+16>>2]=(+g[C+(E*84|0)+16>>2]+ +g[C+(F*84|0)+16>>2])*.5;g[j+(b*5460|0)+(D*84|0)+20>>2]=(+g[C+(E*84|0)+20>>2]+ +g[C+(F*84|0)+20>>2])*.5;g[j+(b*5460|0)+(D*84|0)+24>>2]=(+g[C+(E*84|0)+24>>2]+ +g[C+(F*84|0)+24>>2])*.5;g[j+(b*5460|0)+(D*84|0)+68>>2]=(+g[C+(E*84|0)+68>>2]+ +g[C+(F*84|0)+68>>2])*.5;g[j+(b*5460|0)+(D*84|0)+72>>2]=(+g[C+(E*84|0)+72>>2]+ +g[C+(F*84|0)+72>>2])*.5;g[j+(b*5460|0)+(D*84|0)+76>>2]=(+g[C+(E*84|0)+76>>2]+ +g[C+(F*84|0)+76>>2])*.5;g[j+(b*5460|0)+(D*84|0)+80>>2]=(+g[C+(E*84|0)+80>>2]+ +g[C+(F*84|0)+80>>2])*.5;if((D|0)==(d|0)){g[G>>2]=+g[e>>2];g[j+(b*5460|0)+(d*84|0)+4>>2]=+g[x>>2];g[j+(b*5460|0)+(d*84|0)+8>>2]=+g[y>>2]}D=D+1|0;}while((D|0)<(m|0))}g[k+260+(b<<2)>>2]=f;H=z}else{g[k+260+(A<<2)>>2]=+g[(c[v>>2]|0)+(z<<2)>>2];if((m|0)>0){D=c[w>>2]|0;C=0;do{m$(j+(A*5460|0)+(C*84|0)|0,D+(((da(m,z)|0)+C|0)*84|0)|0,84)|0;C=C+1|0;}while((C|0)<(m|0))}H=z+1|0}C=A+1|0;if((C|0)<(o|0)){z=H;A=C}else{break}}}if((m|0)>0){m$(l|0,c[a+144>>2]|0,(m|0)>1?m<<2:4)|0}l=j|0;A=m-1|0;if((n|0)>0){H=(A|0)>0;z=(m*6|0)-6|0;w=0;v=0;while(1){if(H){b=da(v,m)|0;y=w;d=0;while(1){x=d+b|0;e=x+1|0;C=x+m|0;c[29273568+(y<<2)>>2]=x;c[29273568+(y+1<<2)>>2]=C;c[29273568+(y+2<<2)>>2]=e;c[29273568+(y+3<<2)>>2]=e;c[29273568+(y+4<<2)>>2]=C;c[29273568+(y+5<<2)>>2]=C+1;C=d+1|0;if((C|0)<(A|0)){y=y+6|0;d=C}else{break}}I=z+w|0}else{I=w}d=v+1|0;if((d|0)<(n|0)){w=I;v=d}else{J=I;break}}}else{J=0}if((m|0)>0&u){u=0;do{I=0;do{m$(29830304+(((da(I,m)|0)+u|0)*84|0)|0,j+(I*5460|0)+(u*84|0)|0,84)|0;I=I+1|0;}while((I|0)<(o|0));u=u+1|0;}while((u|0)<(m|0))}ZP(m,o,l);f=+g[a+112>>2];K=+g[a+116>>2];L=+g[a+120>>2];M=+g[a+124>>2];vk[c[4886351]&511](c[a+144>>2]|0);vk[c[4886351]&511](c[a+148>>2]|0);vk[c[4886351]&511](c[a+76>>2]|0);vk[c[4886351]&511](c[a+84>>2]|0);vk[c[4886351]&511](a);a=WP(m,o,l,k|0,J,29273568)|0;g[a+124>>2]=M;g[a+112>>2]=f;g[a+116>>2]=K;g[a+120>>2]=L;p=a;q=520;r=0;s=354900;t=0;i=h;return p|0}function aQ(a){a=a|0;g[a>>2]=1.0;g[a+16>>2]=0.0;g[a+32>>2]=0.0;g[a+48>>2]=0.0;g[a+4>>2]=0.0;g[a+20>>2]=1.0;g[a+36>>2]=0.0;g[a+52>>2]=0.0;g[a+8>>2]=0.0;g[a+24>>2]=0.0;g[a+40>>2]=1.0;g[a+56>>2]=0.0;g[a+12>>2]=0.0;g[a+28>>2]=0.0;g[a+44>>2]=0.0;g[a+60>>2]=1.0;return}function bQ(a,b){a=a|0;b=b|0;g[b>>2]=+g[a>>2];g[b+16>>2]=+g[a+16>>2];g[b+32>>2]=+g[a+32>>2];g[b+48>>2]=+g[a+48>>2];g[b+4>>2]=+g[a+4>>2];g[b+20>>2]=+g[a+20>>2];g[b+36>>2]=+g[a+36>>2];g[b+52>>2]=+g[a+52>>2];g[b+8>>2]=+g[a+8>>2];g[b+24>>2]=+g[a+24>>2];g[b+40>>2]=+g[a+40>>2];g[b+56>>2]=+g[a+56>>2];g[b+12>>2]=+g[a+12>>2];g[b+28>>2]=+g[a+28>>2];g[b+44>>2]=+g[a+44>>2];g[b+60>>2]=+g[a+60>>2];return}function cQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=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;d=a+16|0;e=b+4|0;f=a+32|0;h=b+8|0;i=a+48|0;j=b+12|0;g[c>>2]=+g[a>>2]*+g[b>>2]+ +g[d>>2]*+g[e>>2]+ +g[f>>2]*+g[h>>2]+ +g[i>>2]*+g[j>>2];k=a+4|0;l=a+20|0;m=a+36|0;n=a+52|0;g[c+4>>2]=+g[k>>2]*+g[b>>2]+ +g[l>>2]*+g[e>>2]+ +g[m>>2]*+g[h>>2]+ +g[n>>2]*+g[j>>2];o=a+8|0;p=a+24|0;q=a+40|0;r=a+56|0;g[c+8>>2]=+g[o>>2]*+g[b>>2]+ +g[p>>2]*+g[e>>2]+ +g[q>>2]*+g[h>>2]+ +g[r>>2]*+g[j>>2];s=a+12|0;t=a+28|0;u=a+44|0;v=a+60|0;g[c+12>>2]=+g[s>>2]*+g[b>>2]+ +g[t>>2]*+g[e>>2]+ +g[u>>2]*+g[h>>2]+ +g[v>>2]*+g[j>>2];j=b+16|0;h=b+20|0;e=b+24|0;w=b+28|0;g[c+16>>2]=+g[a>>2]*+g[j>>2]+ +g[d>>2]*+g[h>>2]+ +g[f>>2]*+g[e>>2]+ +g[i>>2]*+g[w>>2];g[c+20>>2]=+g[k>>2]*+g[j>>2]+ +g[l>>2]*+g[h>>2]+ +g[m>>2]*+g[e>>2]+ +g[n>>2]*+g[w>>2];g[c+24>>2]=+g[o>>2]*+g[j>>2]+ +g[p>>2]*+g[h>>2]+ +g[q>>2]*+g[e>>2]+ +g[r>>2]*+g[w>>2];g[c+28>>2]=+g[s>>2]*+g[j>>2]+ +g[t>>2]*+g[h>>2]+ +g[u>>2]*+g[e>>2]+ +g[v>>2]*+g[w>>2];w=b+32|0;e=b+36|0;h=b+40|0;j=b+44|0;g[c+32>>2]=+g[a>>2]*+g[w>>2]+ +g[d>>2]*+g[e>>2]+ +g[f>>2]*+g[h>>2]+ +g[i>>2]*+g[j>>2];g[c+36>>2]=+g[k>>2]*+g[w>>2]+ +g[l>>2]*+g[e>>2]+ +g[m>>2]*+g[h>>2]+ +g[n>>2]*+g[j>>2];g[c+40>>2]=+g[o>>2]*+g[w>>2]+ +g[p>>2]*+g[e>>2]+ +g[q>>2]*+g[h>>2]+ +g[r>>2]*+g[j>>2];g[c+44>>2]=+g[s>>2]*+g[w>>2]+ +g[t>>2]*+g[e>>2]+ +g[u>>2]*+g[h>>2]+ +g[v>>2]*+g[j>>2];j=b+48|0;h=b+52|0;e=b+56|0;w=b+60|0;g[c+48>>2]=+g[a>>2]*+g[j>>2]+ +g[d>>2]*+g[h>>2]+ +g[f>>2]*+g[e>>2]+ +g[i>>2]*+g[w>>2];g[c+52>>2]=+g[k>>2]*+g[j>>2]+ +g[l>>2]*+g[h>>2]+ +g[m>>2]*+g[e>>2]+ +g[n>>2]*+g[w>>2];g[c+56>>2]=+g[o>>2]*+g[j>>2]+ +g[p>>2]*+g[h>>2]+ +g[q>>2]*+g[e>>2]+ +g[r>>2]*+g[w>>2];g[c+60>>2]=+g[s>>2]*+g[j>>2]+ +g[t>>2]*+g[h>>2]+ +g[u>>2]*+g[e>>2]+ +g[v>>2]*+g[w>>2];return}function dQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=b+4|0;e=b+8|0;f=b+12|0;g[c>>2]=+g[a>>2]*+g[b>>2]+ +g[a+16>>2]*+g[d>>2]+ +g[a+32>>2]*+g[e>>2]+ +g[a+48>>2]*+g[f>>2];g[c+4>>2]=+g[a+4>>2]*+g[b>>2]+ +g[a+20>>2]*+g[d>>2]+ +g[a+36>>2]*+g[e>>2]+ +g[a+52>>2]*+g[f>>2];g[c+8>>2]=+g[a+8>>2]*+g[b>>2]+ +g[a+24>>2]*+g[d>>2]+ +g[a+40>>2]*+g[e>>2]+ +g[a+56>>2]*+g[f>>2];g[c+12>>2]=+g[a+12>>2]*+g[b>>2]+ +g[a+28>>2]*+g[d>>2]+ +g[a+44>>2]*+g[e>>2]+ +g[a+60>>2]*+g[f>>2];return}function eQ(a,b){a=a|0;b=b|0;var c=0;if(+g[a>>2]!=+g[b>>2]){c=0;return c|0}if(+g[a+16>>2]!=+g[b+16>>2]){c=0;return c|0}if(+g[a+32>>2]!=+g[b+32>>2]){c=0;return c|0}if(+g[a+48>>2]!=+g[b+48>>2]){c=0;return c|0}if(+g[a+4>>2]!=+g[b+4>>2]){c=0;return c|0}if(+g[a+20>>2]!=+g[b+20>>2]){c=0;return c|0}if(+g[a+36>>2]!=+g[b+36>>2]){c=0;return c|0}if(+g[a+52>>2]!=+g[b+52>>2]){c=0;return c|0}if(+g[a+8>>2]!=+g[b+8>>2]){c=0;return c|0}if(+g[a+24>>2]!=+g[b+24>>2]){c=0;return c|0}if(+g[a+40>>2]!=+g[b+40>>2]){c=0;return c|0}if(+g[a+56>>2]!=+g[b+56>>2]){c=0;return c|0}if(+g[a+12>>2]!=+g[b+12>>2]){c=0;return c|0}if(+g[a+28>>2]!=+g[b+28>>2]){c=0;return c|0}if(+g[a+44>>2]!=+g[b+44>>2]){c=0;return c|0}c=+g[a+60>>2]==+g[b+60>>2]|0;return c|0}function fQ(a,b){a=a|0;b=b|0;g[b>>2]=1.0;g[b+16>>2]=0.0;g[b+32>>2]=0.0;g[b+48>>2]=+g[a>>2];g[b+4>>2]=0.0;g[b+20>>2]=1.0;g[b+36>>2]=0.0;g[b+52>>2]=+g[a+4>>2];g[b+8>>2]=0.0;g[b+24>>2]=0.0;g[b+40>>2]=1.0;g[b+56>>2]=+g[a+8>>2];g[b+12>>2]=0.0;g[b+28>>2]=0.0;g[b+44>>2]=0.0;g[b+60>>2]=1.0;return}function gQ(a,b,c,d,e,f,h){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;h=h|0;var i=0.0;i=b-a;g[h>>2]=2.0/i;g[h+16>>2]=0.0;g[h+32>>2]=0.0;g[h+48>>2]=(-0.0-(a+b))/i;g[h+4>>2]=0.0;i=d-c;g[h+20>>2]=2.0/i;g[h+36>>2]=0.0;g[h+52>>2]=(-0.0-(c+d))/i;g[h+8>>2]=0.0;g[h+24>>2]=0.0;i=f-e;g[h+40>>2]=2.0/i;g[h+56>>2]=(-0.0-(e+f))/i;g[h+12>>2]=0.0;g[h+28>>2]=0.0;g[h+44>>2]=0.0;g[h+60>>2]=1.0;return}function hQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=a|0;g[c>>2]=+g[d>>2];e=a+12|0;g[c+4>>2]=+g[e>>2];f=a+24|0;g[c+8>>2]=+g[f>>2];g[c+12>>2]=0.0;h=a+4|0;g[c+16>>2]=+g[h>>2];i=a+16|0;g[c+20>>2]=+g[i>>2];j=a+28|0;g[c+24>>2]=+g[j>>2];g[c+28>>2]=0.0;k=a+8|0;g[c+32>>2]=+g[k>>2];l=a+20|0;g[c+36>>2]=+g[l>>2];m=a+32|0;g[c+40>>2]=+g[m>>2];g[c+44>>2]=0.0;a=b+4|0;n=b+8|0;g[c+48>>2]=-0.0-(+g[b>>2]*+g[d>>2]+ +g[a>>2]*+g[h>>2]+ +g[n>>2]*+g[k>>2]);g[c+52>>2]=-0.0-(+g[b>>2]*+g[e>>2]+ +g[a>>2]*+g[i>>2]+ +g[n>>2]*+g[l>>2]);g[c+56>>2]=-0.0-(+g[b>>2]*+g[f>>2]+ +g[a>>2]*+g[j>>2]+ +g[n>>2]*+g[m>>2]);g[c+60>>2]=1.0;return}function iQ(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0.0;e=1.0-c;g[d>>2]=e*+g[a>>2]+ +g[b>>2]*c;g[d+4>>2]=e*+g[a+4>>2]+ +g[b+4>>2]*c;g[d+8>>2]=e*+g[a+8>>2]+ +g[b+8>>2]*c;return}function jQ(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;var e=0.0,f=0.0;e=b+d;d=+g[a>>2]- +g[c>>2];b=+g[a+4>>2]- +g[c+4>>2];f=+g[a+8>>2]- +g[c+8>>2];return d*d+b*b+f*f<=e*e|0}function kQ(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;var h=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0.0;h=+g[a>>2]*.5;g[e>>2]=h;i=a+4|0;j=+g[i>>2]*.5;k=e+4|0;g[k>>2]=j;l=a+8|0;m=+g[l>>2]*.5;n=e+8|0;g[n>>2]=m;g[e>>2]=h+ +g[c>>2]*.5;e=c+4|0;g[k>>2]=j+ +g[e>>2]*.5;k=c+8|0;g[n>>2]=m+ +g[k>>2]*.5;m=+g[a>>2]- +g[c>>2];j=+g[i>>2]- +g[e>>2];h=+g[l>>2]- +g[k>>2];o=+T(m*m+j*j+h*h)*.5;g[f>>2]=(b>d?b:d)+o;return}function lQ(a){a=a|0;var b=0;b=1;while(1){if((b|0)<(a|0)){b=b<<1}else{break}}return b|0}function mQ(a){a=+a;var b=0,d=0,e=0,f=0,h=0,i=0,j=0,l=0,m=0,n=0;b=(g[k>>2]=a,c[k>>2]|0);d=b>>>31;e=b>>>23&255;f=b&8388607;b=e-127|0;h=(b|0)>-15;do{if((b|0)<16|h^1){i=e-112|0;j=h?i:0;if((j|0)==0){l=(e|0)!=0|(f|0)==0?0:1023;m=0;break}else if((j|0)==31){n=3;break}else{l=f>>>13;m=i<<10;break}}else{n=3}}while(0);if((n|0)==3){l=(e|0)!=255|(f|0)==0?0:1023;m=31744}return(m|d<<15|l)&65535|0}function nQ(){var b=0,d=0,e=0,f=0,g=0,h=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=i;i=i+256|0;d=mC(20483872,127520)|0;if((d|0)==0){e=c[4886345]|0;Tk[e&255](0,142752,(f=i,i=i+8|0,c[f>>2]=127520,f)|0);i=f}g=a[d+22|0]|0;if(!((g<<24>>24|0)==32|(g<<24>>24|0)==0)){e=c[4886345]|0;Tk[e&255](0,142752,(f=i,i=i+8|0,c[f>>2]=127520,f)|0);i=f}Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=127520,f)|0);i=f;c[5120177]=0;c[5120178]=0;c[4919990]=0;c[4919988]=0;c[4919936]=0;c[4919934]=0;c[4919932]=0;c[4920052]=0;c[4920058]=0;e=mC(20483872,63448)|0;if((e|0)==0){h=c[4886345]|0;Tk[h&255](0,142752,(f=i,i=i+8|0,c[f>>2]=63448,f)|0);i=f}g=a[e+21|0]|0;if(!((g<<24>>24|0)==32|(g<<24>>24|0)==0)){h=c[4886345]|0;Tk[h&255](0,142752,(f=i,i=i+8|0,c[f>>2]=63448,f)|0);i=f}c[4919936]=Pf(55632)|0;c[4919934]=Pf(49176)|0;c[4919932]=Pf(44760)|0;c[4920052]=Pf(183808)|0;c[4920058]=Pf(180056)|0;Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=63448,f)|0);i=f;c[4920092]=0;c[4920070]=0;c[4920044]=0;c[4919998]=0;c[4920084]=0;c[4920082]=0;c[4920022]=0;c[4920026]=0;c[4920024]=0;h=mC(20483872,175504)|0;if((h|0)==0){j=c[4886345]|0;Tk[j&255](0,142752,(f=i,i=i+8|0,c[f>>2]=175504,f)|0);i=f}g=a[h+27|0]|0;if(!((g<<24>>24|0)==32|(g<<24>>24|0)==0)){j=c[4886345]|0;Tk[j&255](0,142752,(f=i,i=i+8|0,c[f>>2]=175504,f)|0);i=f}c[4920092]=Pf(171880)|0;c[4920070]=Pf(169032)|0;c[4920044]=Pf(165584)|0;c[4919998]=Pf(162416)|0;c[4920084]=Pf(159624)|0;c[4920082]=Pf(157056)|0;c[4920022]=Pf(154728)|0;c[4920026]=Pf(152784)|0;c[4920024]=Pf(150616)|0;Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=175504,f)|0);i=f;c[4920066]=0;c[4920020]=0;c[4920060]=0;c[4920072]=0;c[4919980]=0;c[4920076]=0;c[4920074]=0;c[4920098]=0;c[4919994]=0;c[4919940]=0;c[4919938]=0;c[4919978]=0;c[4919972]=0;c[4919964]=0;c[4919956]=0;c[4919974]=0;c[4919968]=0;c[4919960]=0;c[4919952]=0;c[4919976]=0;c[4919970]=0;c[4919962]=0;c[4919954]=0;c[4919966]=0;c[4919958]=0;c[4919950]=0;c[4919948]=0;c[4919946]=0;c[4919944]=0;c[4920016]=0;c[4920014]=0;c[4920018]=0;c[4920030]=0;c[4920004]=0;c[4920032]=0;c[4920002]=0;c[492e4]=0;c[4920006]=0;j=mC(20483872,148440)|0;if((j|0)==0){k=c[4886345]|0;Tk[k&255](0,142752,(f=i,i=i+8|0,c[f>>2]=148440,f)|0);i=f}g=a[j+21|0]|0;if(!((g<<24>>24|0)==32|(g<<24>>24|0)==0)){k=c[4886345]|0;Tk[k&255](0,142752,(f=i,i=i+8|0,c[f>>2]=148440,f)|0);i=f}c[4920066]=Pf(145760)|0;c[4920020]=Pf(143488)|0;c[4920060]=Pf(140888)|0;c[4920072]=Pf(138392)|0;c[4919980]=Pf(136736)|0;c[4920076]=Pf(135288)|0;c[4920074]=Pf(133760)|0;c[4920098]=Pf(132528)|0;c[4919994]=Pf(131544)|0;c[4919940]=Pf(130200)|0;c[4919938]=Pf(128936)|0;c[4919978]=Pf(127968)|0;c[4919972]=Pf(126520)|0;c[4919964]=Pf(125288)|0;c[4919956]=Pf(124384)|0;c[4919974]=Pf(123480)|0;c[4919968]=Pf(122688)|0;c[4919960]=Pf(121792)|0;c[4919952]=Pf(120928)|0;c[4919976]=Pf(119704)|0;c[4919970]=Pf(118336)|0;c[4919962]=Pf(117384)|0;c[4919954]=Pf(116160)|0;c[4919966]=Pf(114568)|0;c[4919958]=Pf(113544)|0;c[4919950]=Pf(112616)|0;c[4919948]=Pf(111760)|0;c[4919946]=Pf(110992)|0;c[4919944]=Pf(110248)|0;c[4920016]=Pf(108928)|0;c[4920014]=Pf(107832)|0;c[4920018]=Pf(107016)|0;c[4920030]=Pf(105960)|0;c[4920004]=Pf(105128)|0;c[4920032]=Pf(104216)|0;c[4920002]=Pf(103280)|0;c[492e4]=Pf(102512)|0;c[4920006]=Pf(101592)|0;Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=148440,f)|0);i=f;c[4920094]=0;c[4920034]=0;c[4920028]=0;k=mC(20483872,100680)|0;if((k|0)==0){l=c[4886345]|0;Tk[l&255](0,142752,(f=i,i=i+8|0,c[f>>2]=100680,f)|0);i=f}g=a[k+20|0]|0;if(!((g<<24>>24|0)==32|(g<<24>>24|0)==0)){l=c[4886345]|0;Tk[l&255](0,142752,(f=i,i=i+8|0,c[f>>2]=100680,f)|0);i=f}c[4920094]=Pf(99584)|0;c[4920034]=Pf(64920)|0;c[4920028]=Pf(63824)|0;Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=100680,f)|0);i=f;c[5120187]=0;l=mC(20483872,62672)|0;if((l|0)==0){m=c[4886345]|0;Tk[m&255](0,142752,(f=i,i=i+8|0,c[f>>2]=62672,f)|0);i=f}g=a[l+27|0]|0;if(!((g<<24>>24|0)==32|(g<<24>>24|0)==0)){m=c[4886345]|0;Tk[m&255](0,142752,(f=i,i=i+8|0,c[f>>2]=62672,f)|0);i=f}m=b|0;TB(m,$b(35724)|0,256);qi(m|0,61808,(f=i,i=i+16|0,c[f>>2]=20480720,c[f+8>>2]=20480724,f)|0)|0;i=f;Tk[c[4886344]&255](0,61064,(f=i,i=i+8|0,c[f>>2]=m,f)|0);i=f;c[5120182]=0;m=mC(20483872,60368)|0;do{if((m|0)==0){n=22}else{g=a[m+22|0]|0;if(!((g<<24>>24|0)==32|(g<<24>>24|0)==0)){n=22;break}c[5120182]=1}}while(0);do{if((n|0)==22){m=mC(20483872,59688)|0;if((m|0)==0){break}g=a[m+14|0]|0;if(!((g<<24>>24|0)==32|(g<<24>>24|0)==0)){break}c[5120182]=2}}while(0);c[5120186]=0;g=mC(20483872,59104)|0;do{if((g|0)==0){n=28}else{m=a[g+31|0]|0;if(!((m<<24>>24|0)==32|(m<<24>>24|0)==0)){n=28;break}c[5120186]=1;Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=59104,f)|0);i=f}}while(0);if((n|0)==28){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=59104,f)|0);i=f}c[5120187]=0;g=mC(20483872,58568)|0;do{if((g|0)==0){n=35}else{m=a[g+20|0]|0;if(!((m<<24>>24|0)==32|(m<<24>>24|0)==0)){n=35;break}if((c[(c[4919828]|0)+32>>2]|0)==0){o=c[5120187]|0}else{c[5120187]=1;o=1}Tk[c[4886344]&255](0,c[186888+(o<<2)>>2]|0,(f=i,i=i+8|0,c[f>>2]=58568,f)|0);i=f}}while(0);if((n|0)==35){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=58568,f)|0);i=f}c[5120188]=0;o=mC(20483872,57600)|0;do{if((o|0)==0){n=42}else{g=a[o+23|0]|0;if(!((g<<24>>24|0)==32|(g<<24>>24|0)==0)){n=42;break}if((c[(c[4919916]|0)+32>>2]|0)==0){p=c[5120188]|0}else{c[5120188]=1;p=1}Tk[c[4886344]&255](0,c[186888+(p<<2)>>2]|0,(f=i,i=i+8|0,c[f>>2]=57600,f)|0);i=f}}while(0);if((n|0)==42){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=57600,f)|0);i=f}c[5120183]=0;c[5120189]=0;p=mC(20483872,55968)|0;do{if((p|0)==0){n=46}else{o=a[p+27|0]|0;if(!((o<<24>>24|0)==32|(o<<24>>24|0)==0)){n=46;break}c[5120189]=1;Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=55968,f)|0);i=f}}while(0);if((n|0)==46){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=55968,f)|0);i=f}c[5120179]=0;p=mC(20483872,54984)|0;do{if((p|0)==0){n=50}else{o=a[p+22|0]|0;if(!((o<<24>>24|0)==32|(o<<24>>24|0)==0)){n=50;break}c[4920040]=Pf(54248)|0;c[4920064]=Pf(53776)|0;c[4919996]=Pf(53312)|0;c[4920096]=Pf(52856)|0;c[4920050]=Pf(52256)|0;c[4920008]=Pf(51760)|0;c[4920012]=Pf(51056)|0;c[4920010]=Pf(50208)|0;c[5120179]=1;Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=54984,f)|0);i=f}}while(0);if((n|0)==50){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=54984,f)|0);i=f}c[5120192]=0;p=mC(20483872,49552)|0;do{if((p|0)==0){n=54}else{o=a[p+23|0]|0;if(!((o<<24>>24|0)==32|(o<<24>>24|0)==0)){n=54;break}c[4920086]=Pf(48832)|0;c[5120192]=1;Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=49552,f)|0);i=f}}while(0);if((n|0)==54){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=49552,f)|0);i=f}c[5120191]=0;p=mC(20483872,48280)|0;do{if((p|0)==0){n=58}else{o=a[p+30|0]|0;if(!((o<<24>>24|0)==32|(o<<24>>24|0)==0)){n=58;break}c[4919982]=Pf(47824)|0;c[5120191]=1;Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=48280,f)|0);i=f}}while(0);if((n|0)==58){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=48280,f)|0);i=f}c[5120193]=0;p=mC(20483872,47448)|0;do{if((p|0)==0){n=65}else{o=a[p+19|0]|0;if(!((o<<24>>24|0)==32|(o<<24>>24|0)==0)){n=65;break}if((c[(c[4917320]|0)+32>>2]|0)==0){q=c[5120193]|0}else{c[5120193]=1;q=1}Tk[c[4886344]&255](0,c[186888+(q<<2)>>2]|0,(f=i,i=i+8|0,c[f>>2]=47448,f)|0);i=f}}while(0);if((n|0)==65){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=47448,f)|0);i=f}c[5120194]=0;q=mC(20483872,47096)|0;do{if((q|0)==0){n=72}else{p=a[q+23|0]|0;if(!((p<<24>>24|0)==32|(p<<24>>24|0)==0)){n=72;break}if((c[(c[4917320]|0)+32>>2]|0)==0){r=c[5120194]|0}else{c[5120194]=1;r=1}Tk[c[4886344]&255](0,c[186888+(r<<2)>>2]|0,(f=i,i=i+8|0,c[f>>2]=47096,f)|0);i=f}}while(0);if((n|0)==72){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=47096,f)|0);i=f}c[5120195]=0;r=mC(20483872,46752)|0;do{if((r|0)==0){n=79}else{q=a[r+26|0]|0;if(!((q<<24>>24|0)==32|(q<<24>>24|0)==0)){n=79;break}if((c[(c[4917320]|0)+32>>2]|0)==0){s=c[5120195]|0}else{c[5120195]=1;s=1}Tk[c[4886344]&255](0,c[186888+(s<<2)>>2]|0,(f=i,i=i+8|0,c[f>>2]=46752,f)|0);i=f}}while(0);if((n|0)==79){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=46752,f)|0);i=f}c[5120190]=0;s=mC(20483872,46456)|0;do{if((s|0)==0){n=85}else{r=a[s+31|0]|0;if(!((r<<24>>24|0)==32|(r<<24>>24|0)==0)){n=85;break}r=(c[4919848]|0)+32|0;if((c[r>>2]|0)==0){t=0}else{c[5120190]=c[5120190]|1;t=(c[r>>2]|0)!=0|0}Tk[c[4886344]&255](0,c[186888+(t<<2)>>2]|0,(f=i,i=i+8|0,c[f>>2]=46456,f)|0);i=f}}while(0);if((n|0)==85){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=46456,f)|0);i=f}t=mC(20483872,45960)|0;do{if((t|0)==0){n=91}else{s=a[t+31|0]|0;if(!((s<<24>>24|0)==32|(s<<24>>24|0)==0)){n=91;break}s=(c[4919848]|0)+32|0;r=c[s>>2]|0;if((r|0)>1){c[5120190]=c[5120190]|2;u=c[s>>2]|0}else{u=r}Tk[c[4886344]&255](0,c[186888+(((u|0)>1)<<2)>>2]|0,(f=i,i=i+8|0,c[f>>2]=45960,f)|0);i=f}}while(0);if((n|0)==91){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=45960,f)|0);i=f}c[4920056]=0;u=mC(20483872,45344)|0;do{if((u|0)==0){n=95}else{t=a[u+19|0]|0;if(!((t<<24>>24|0)==32|(t<<24>>24|0)==0)){n=95;break}c[4920056]=Pf(44968)|0;Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=45344,f)|0);i=f}}while(0);if((n|0)==95){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=45344,f)|0);i=f}c[5120196]=0;u=mC(20483872,44536)|0;do{if((u|0)==0){n=99}else{t=a[u+18|0]|0;if(!((t<<24>>24|0)==32|(t<<24>>24|0)==0)){n=99;break}c[5120196]=1;Tk[c[4886344]&255](0,168160,(f=i,i=i+8|0,c[f>>2]=44536,f)|0);i=f}}while(0);if((n|0)==99){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=44536,f)|0);i=f}c[5120197]=0;u=mC(20483872,44056)|0;do{if((u|0)==0){n=106}else{t=a[u+24|0]|0;if(!((t<<24>>24|0)==32|(t<<24>>24|0)==0)){n=106;break}if((c[(c[4919914]|0)+32>>2]|0)==0){v=c[5120197]|0}else{c[5120197]=1;v=1}Tk[c[4886344]&255](0,c[186888+(v<<2)>>2]|0,(f=i,i=i+8|0,c[f>>2]=44056,f)|0);i=f}}while(0);if((n|0)==106){Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=44056,f)|0);i=f}c[5120198]=5121;n=mC(20483872,43704)|0;do{if((n|0)!=0){v=a[n+33|0]|0;if(!((v<<24>>24|0)==32|(v<<24>>24|0)==0)){break}v=(c[4919912]|0)+32|0;if((c[v>>2]|0)==0){w=0}else{c[5120198]=33640;w=(c[v>>2]|0)!=0|0}Tk[c[4886344]&255](0,c[186888+(w<<2)>>2]|0,(f=i,i=i+8|0,c[f>>2]=43704,f)|0);i=f;i=b;return}}while(0);Tk[c[4886344]&255](0,142752,(f=i,i=i+8|0,c[f>>2]=43704,f)|0);i=f;i=b;return}function oQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+8|0;d=b|0;xj(36006,d|0);hk[c[4920090]&255](36160,c[a+68>>2]|0);e=jk[c[4920080]&255](36160)|0;switch(e|0){case 36058:{Tk[c[4886344]&255](2,116960,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;break};case 36057:{Tk[c[4886344]&255](2,127432,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;break};case 36060:{Tk[c[4886344]&255](2,63384,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;break};case 36059:{Tk[c[4886344]&255](2,106600,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;break};case 36055:{Tk[c[4886344]&255](2,142440,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;break};case 36053:{hk[c[4920090]&255](36160,c[d>>2]|0);g=1;i=b;return g|0};case 36054:{Tk[c[4886344]&255](2,167928,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;break};case 36061:{Tk[c[4886344]&255](2,112648,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;break};default:{Tk[c[4886344]&255](2,55592,(f=i,i=i+16|0,c[f>>2]=a,c[f+8>>2]=e,f)|0);i=f}}hk[c[4920090]&255](36160,c[d>>2]|0);g=0;i=b;return g|0}function pQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;if((o$(a|0)|0)>>>0>63>>>0){Tk[c[4886345]&255](1,49144,(f=i,i=i+8|0,c[f>>2]=a,f)|0);i=f;return 0}if((b|0)<1){g=c[4886345]|0;Tk[g&255](1,44728,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;return 0}h=c[5120184]|0;if((h|0)<(b|0)){g=c[4886345]|0;Tk[g&255](1,44728,(f=i,i=i+8|0,c[f>>2]=b,f)|0);i=f;return 0}if((d|0)<1|(h|0)<(d|0)){Tk[c[4886345]&255](1,183776,(f=i,i=i+8|0,c[f>>2]=d,f)|0);i=f;return 0}if((c[256902]|0)==64){Tk[c[4886345]&255](1,180024,(f=i,i=i+1|0,i=i+7&-8,c[f>>2]=0,f)|0);i=f;return 0}else{f=Kk[c[4886347]&255](236,1)|0;h=f;c[1027612+(c[256902]<<2)>>2]=h;TB(f,a,64);a=c[256902]|0;c[256902]=a+1;c[f+64>>2]=a;c[f+228>>2]=b;c[f+232>>2]=d;hk[c[4920042]&255](1,f+68|0);i=e;return h|0}return 0}function qQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;if((b|0)==34041|(b|0)==35056){c[a+224>>2]=b;g=a+220|0;h=0}else if((b|0)==6407|(b|0)==6408|(b|0)==32849|(b|0)==32856|(b|0)==34843|(b|0)==34842|(b|0)==34837|(b|0)==34836){c[a+136>>2]=b;g=a+72+(d<<2)|0;h=d+36064|0}else if((b|0)==6401|(b|0)==36166|(b|0)==36167|(b|0)==36168|(b|0)==36169){c[a+216>>2]=b;g=a+212|0;h=36128}else if((b|0)==6402|(b|0)==33189|(b|0)==33190|(b|0)==33191){c[a+208>>2]=b;g=a+204|0;h=36096}else{Tk[c[4886344]&255](2,175448,(d=i,i=i+8|0,c[d>>2]=b,d)|0);i=d;i=f;return}d=c[g>>2]|0;j=(d|0)==0;if(j){hk[c[4920038]&255](1,g);k=c[g>>2]|0}else{k=d}hk[c[4920088]&255](36161,k);if((e|0)!=0&(c[5120191]|0)!=0){fk[c[4919982]&127](36161,e,b,c[a+228>>2]|0,c[a+232>>2]|0)}else{Yk[c[4919984]&255](36161,b,c[a+228>>2]|0,c[a+232>>2]|0)}if(!j){i=f;return}j=c[4920048]|0;a=c[g>>2]|0;if((h|0)==0){Yk[j&255](36160,36096,36161,a);Yk[c[4920048]&255](36160,36128,36161,c[g>>2]|0);i=f;return}else{Yk[j&255](36160,h,36161,a);i=f;return}}function rQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;if((c[5120124]|0)==(a|0)){i=b;return}d=(a|0)==0;do{if((c[(c[4917434]|0)+32>>2]|0)==0){e=c[4920090]|0;if(d){f=e;g=7}else{h=e;g=8}}else{if(d){cV(154696);f=c[4920090]|0;g=7;break}else{e=pC(157032,(j=i,i=i+8|0,c[j>>2]=a,j)|0)|0;i=j;cV(e);h=c[4920090]|0;g=8;break}}}while(0);if((g|0)==7){hk[f&255](36160,0);c[5120124]=0;i=b;return}else if((g|0)==8){hk[h&255](36160,c[a+68>>2]|0);c[5120124]=a;i=b;return}}function _RE_LoadWorldMap$0(b){b=b|0;var e=0,f=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,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.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,db=0,eb=0,fb=0,gb=0;e=c[b+86136>>2]|0;f=c[b+86144>>2]|0;j=c[b+87472>>2]|0;k=c[b+87488>>2]|0;l=c[b+87496>>2]|0;m=c[b+90368>>2]|0;n=c[b+90376>>2]|0;a:do{b:do{o=1;if(o){o=0;if(j>>>0>103>>>0){p=0;q=c[553048]|0;r=(c[5145342]|0)+(c[(f+112|0)>>2]|0)|0;while(1){s=c[r+8>>2]|0;if((s|0)==3){c[q+76>>2]=Kk[c[4886347]&255](152,1)|0}else if((s|0)==1){c[q+76>>2]=Kk[c[4886347]&255](152,1)|0}else if((s|0)==4){c[q+76>>2]=Kk[c[4886347]&255](40,1)|0}s=p+1|0;if((s|0)<((j>>>0)/104|0|0)){p=s;q=q+80|0;r=r+104|0}else{break}}r=0;q=0;p=0;s=0;t=0;u=c[553048]|0;v=(c[5145342]|0)+(c[(f+112|0)>>2]|0)|0;c:while(1){w=c[v+8>>2]|0;x=1;if(x){x=0;if((w|0)==2){y=c[(b+86032|0)>>2]|0;z=c[v+28>>2]|0;c[u+4>>2]=(c[v+4>>2]|0)+1;A=v|0;B=c[A>>2]|0;do{if((z|0)<0){C=z}else{D=z>>((c[253197]|0)!=0);if((c[253352]|0)<=0){C=D;break}E=c[253353]|0;C=(D|0)/(da(E,E)|0)|0}}while(0);if(!((B|0)>-1&(c[553037]|0)>(B|0))){m=155;break}E=WT((c[553038]|0)+(B*72|0)|0,(c[(c[4917476]|0)+32>>2]|0)==0?(c[(c[4917292]|0)+32>>2]|0)!=0|(c[5123022]|0)==4?-3:C:-2,1)|0;D=(c[E+80>>2]|0)==0?E:c[253342]|0;E=u|0;c[E>>2]=D;do{if((c[(c[4917332]|0)+32>>2]|0)!=0){if((c[D+100>>2]|0)!=0){break}c[E>>2]=c[253342]}}while(0);if((c[(c[553038]|0)+((c[A>>2]|0)*72|0)+64>>2]&128|0)==0){E=c[v+96>>2]|0;D=c[v+100>>2]|0;if(E>>>0>32>>>0|D>>>0>32>>>0){m=162;break}F=v+12|0;G=c[F>>2]|0;H=da(D,E)|0;if((H|0)>0){I=0;do{J=I+G|0;g[(b+16|0)+(I*84|0)>>2]=+g[k+(J*44|0)>>2];g[(b+16|0)+(I*84|0)+28>>2]=+g[k+(J*44|0)+28>>2];g[(b+16|0)+(I*84|0)+4>>2]=+g[k+(J*44|0)+4>>2];g[(b+16|0)+(I*84|0)+32>>2]=+g[k+(J*44|0)+32>>2];g[(b+16|0)+(I*84|0)+8>>2]=+g[k+(J*44|0)+8>>2];g[(b+16|0)+(I*84|0)+36>>2]=+g[k+(J*44|0)+36>>2];K=(b+16|0)+(I*84|0)+12|0;L=c[(k+(J*44|0)+12|0)+4>>2]|0;c[K>>2]=c[(k+(J*44|0)+12|0)>>2];c[K+4>>2]=L;M=+g[k+(J*44|0)+20>>2];if((z|0)>-1&(c[253352]|0)>0){L=c[253353]|0;K=(z>>((c[253197]|0)!=0)|0)%(da(L,L)|0)|0;g[(b+16|0)+(I*84|0)+20>>2]=M/+(L|0)+1.0/+(L|0)*+((K|0)%(L|0)|0|0);N=+g[k+(J*44|0)+24>>2]/+(L|0)+1.0/+(L|0)*+((K|0)/(L|0)|0|0)}else{g[(b+16|0)+(I*84|0)+20>>2]=M;N=+g[k+(J*44|0)+24>>2]}g[(b+16|0)+(I*84|0)+24>>2]=N;do{if((y|0)==0){L=a[k+(J*44|0)+40|0]|0;if((c[(c[4917466]|0)+32>>2]|0)==0){O=+((L&255)>>>0);P=+((d[k+(J*44|0)+41|0]|0)>>>0);Q=+((d[k+(J*44|0)+42|0]|0)>>>0);break}else{O=+((L&255)+1|0);P=+((d[k+(J*44|0)+41|0]|0)+1|0);Q=+((d[k+(J*44|0)+42|0]|0)+1|0);break}}else{L=((c[F>>2]|0)+I|0)*3|0;O=+g[y+(L<<2)>>2];P=+g[y+(L+1<<2)>>2];Q=+g[y+(L+2<<2)>>2]}}while(0);M=+(d[k+(J*44|0)+43|0]|0)/255.0;L=(b+16|0)+(I*84|0)+68|0;R=+T_(1.0,(c[(c[4917432]|0)+32>>2]|0)-(c[253581]|0)|0)*.003921568859368563;S=O*R;U=P*R;V=Q*R;do{if((c[(c[4917466]|0)+32>>2]|0)==0){if(!(S>1.0|U>1.0|V>1.0)){W=S;X=V;Y=U;break}R=S>U?S:U;Z=R>V?R:V;W=S/Z;X=V/Z;Y=U/Z}else{W=S;X=V;Y=U}}while(0);g[L>>2]=W;g[(b+16|0)+(I*84|0)+72>>2]=Y;g[(b+16|0)+(I*84|0)+76>>2]=X;g[(b+16|0)+(I*84|0)+80>>2]=M;I=I+1|0;}while((I|0)<(H|0))}H=YP(E,D,b+16|0|0)|0;c[u+76>>2]=H;U=+g[v+60>>2];V=+g[v+64>>2];S=+g[v+68>>2];Z=V+ +g[v+76>>2];R=S+ +g[v+80>>2];_=(U+ +g[v+72>>2])*.5;g[H+112>>2]=_;g[H+116>>2]=Z*.5;g[H+120>>2]=R*.5;g[H+124>>2]=+T((U-_)*(U-_)+(V-Z*.5)*(V-Z*.5)+(S-R*.5)*(S-R*.5))}else{c[u+76>>2]=186464}H=c[u+76>>2]|0;c[u+12>>2]=3;g[u+16>>2]=+g[H+12>>2];g[u+20>>2]=+g[H+16>>2];g[u+24>>2]=+g[H+20>>2];g[u+28>>2]=+g[H+24>>2];g[u+32>>2]=+g[H+28>>2];g[u+36>>2]=+g[H+32>>2];g[u+40>>2]=+g[H+36>>2];g[u+44>>2]=+g[H+40>>2];g[u+48>>2]=+g[H+44>>2];g[u+52>>2]=+g[H+48>>2];$=s;aa=p;ba=q+1|0;ca=r}else{x=1}}if(x){x=0;if((w|0)==3){H=c[(b+86032|0)>>2]|0;c[u+4>>2]=(c[v+4>>2]|0)+1;ea=c[v>>2]|0;if(!((ea|0)>-1&(c[553037]|0)>(ea|0))){m=180;break}I=WT((c[553038]|0)+(ea*72|0)|0,(c[(c[4917476]|0)+32>>2]|0)==0?-3:-2,1)|0;y=(c[I+80>>2]|0)==0?I:c[253342]|0;I=u|0;c[I>>2]=y;do{if((c[(c[4917332]|0)+32>>2]|0)!=0){if((c[y+100>>2]|0)!=0){break}c[I>>2]=c[253342]}}while(0);y=c[v+16>>2]|0;D=c[v+24>>2]|0;E=u+76|0;F=c[E>>2]|0;c[F>>2]=4;c[(F+72|0)>>2]=D;c[(F+76|0)>>2]=Kk[c[4886347]&255](D<<2,1)|0;c[F+80>>2]=y;z=F+84|0;c[(F+84|0)>>2]=Kk[c[4886347]&255](y*84|0,1)|0;c[E>>2]=F;c[u+12>>2]=1;E=u+16|0;G=u+28|0;KB(E,G);A=v+12|0;J=c[A>>2]|0;d:do{if((y|0)>0){if((H|0)==0){fa=0}else{K=0;while(1){ga=K+J|0;ha=c[z>>2]|0;ia=ha+(K*84|0)|0;g[ia>>2]=+g[k+(ga*44|0)>>2];g[ha+(K*84|0)+28>>2]=+g[k+(ga*44|0)+28>>2];g[ha+(K*84|0)+4>>2]=+g[k+(ga*44|0)+4>>2];g[ha+(K*84|0)+32>>2]=+g[k+(ga*44|0)+32>>2];g[ha+(K*84|0)+8>>2]=+g[k+(ga*44|0)+8>>2];g[ha+(K*84|0)+36>>2]=+g[k+(ga*44|0)+36>>2];LB(ia,E,G);ia=c[z>>2]|0;g[ia+(K*84|0)+12>>2]=+g[k+(ga*44|0)+12>>2];g[ia+(K*84|0)+20>>2]=+g[k+(ga*44|0)+20>>2];g[ia+(K*84|0)+16>>2]=+g[k+(ga*44|0)+16>>2];g[ia+(K*84|0)+24>>2]=+g[k+(ga*44|0)+24>>2];ha=((c[A>>2]|0)+K|0)*3|0;R=+g[H+(ha<<2)>>2];S=+g[H+(ha+1<<2)>>2];Z=+g[H+(ha+2<<2)>>2];V=+(d[k+(ga*44|0)+43|0]|0)/255.0;ga=ia+(K*84|0)+68|0;_=+T_(1.0,(c[(c[4917432]|0)+32>>2]|0)-(c[253581]|0)|0)*.003921568859368563;do{if((c[(c[4917466]|0)+32>>2]|0)==0){if(!(R*_>1.0|S*_>1.0|Z*_>1.0)){ja=R*_;ka=Z*_;la=S*_;break}U=R*_>S*_?R*_:S*_;ma=U>Z*_?U:Z*_;ja=R*_/ma;ka=Z*_/ma;la=S*_/ma}else{ja=R*_;ka=Z*_;la=S*_}}while(0);g[ga>>2]=ja;g[ia+(K*84|0)+72>>2]=la;g[ia+(K*84|0)+76>>2]=ka;g[ia+(K*84|0)+80>>2]=V;K=K+1|0;if((K|0)>=(y|0)){break d}}}do{K=fa+J|0;L=c[z>>2]|0;ha=L+(fa*84|0)|0;g[ha>>2]=+g[k+(K*44|0)>>2];g[L+(fa*84|0)+28>>2]=+g[k+(K*44|0)+28>>2];g[L+(fa*84|0)+4>>2]=+g[k+(K*44|0)+4>>2];g[L+(fa*84|0)+32>>2]=+g[k+(K*44|0)+32>>2];g[L+(fa*84|0)+8>>2]=+g[k+(K*44|0)+8>>2];g[L+(fa*84|0)+36>>2]=+g[k+(K*44|0)+36>>2];LB(ha,E,G);ha=c[z>>2]|0;g[ha+(fa*84|0)+12>>2]=+g[k+(K*44|0)+12>>2];g[ha+(fa*84|0)+20>>2]=+g[k+(K*44|0)+20>>2];g[ha+(fa*84|0)+16>>2]=+g[k+(K*44|0)+16>>2];g[ha+(fa*84|0)+24>>2]=+g[k+(K*44|0)+24>>2];L=a[k+(K*44|0)+40|0]|0;if((c[(c[4917466]|0)+32>>2]|0)==0){na=+((L&255)>>>0);oa=+((d[k+(K*44|0)+41|0]|0)>>>0);pa=+((d[k+(K*44|0)+42|0]|0)>>>0)}else{na=+((L&255)+1|0);oa=+((d[k+(K*44|0)+41|0]|0)+1|0);pa=+((d[k+(K*44|0)+42|0]|0)+1|0)}M=+(d[k+(K*44|0)+43|0]|0)/255.0;K=ha+(fa*84|0)+68|0;_=+T_(1.0,(c[(c[4917432]|0)+32>>2]|0)-(c[253581]|0)|0)*.003921568859368563;S=na*_;Z=oa*_;R=pa*_;do{if((c[(c[4917466]|0)+32>>2]|0)==0){if(!(S>1.0|Z>1.0|R>1.0)){qa=S;ra=R;sa=Z;break}_=S>Z?S:Z;ma=_>R?_:R;qa=S/ma;ra=R/ma;sa=Z/ma}else{qa=S;ra=R;sa=Z}}while(0);g[K>>2]=qa;g[ha+(fa*84|0)+72>>2]=sa;g[ha+(fa*84|0)+76>>2]=ra;g[ha+(fa*84|0)+80>>2]=M;fa=fa+1|0;}while((fa|0)<(y|0))}}while(0);G=c[v+20>>2]|0;if((D|0)>0){E=c[(F+76|0)>>2]|0;J=E;H=0;A=0;while(1){ia=H+G|0;ga=0;do{L=c[l+(ia+ga<<2)>>2]|0;c[J+(ga<<2)>>2]=L;ga=ga+1|0;if(!(L>>>0>>0)){m=202;break c}}while((ga|0)<3);ga=c[J>>2]|0;ia=c[J+4>>2]|0;if((ga|0)==(ia|0)){m=205}else{L=c[J+8>>2]|0;if((ia|0)==(L|0)|(ga|0)==(L|0)){m=205}else{ta=A;ua=J}}if((m|0)==205){m=0;ta=A+1|0;ua=J-12|0}L=H+3|0;if((L|0)<(D|0)){J=ua+12|0;H=L;A=ta}else{break}}if((ta|0)==0){va=E;wa=0}else{Tk[c[4886344]&255](2,118352,(n=i,i=i+32|0,c[n>>2]=c[I>>2],c[n+8>>2]=(D|0)/3|0,c[n+16>>2]=y,c[n+24>>2]=((D|0)/3|0)-ta,n)|0);i=n;c[(F+72|0)>>2]=(c[(F+72|0)>>2]|0)+(ta*-3|0);va=c[(F+76|0)>>2]|0;wa=0}while(1){c[(b|0|0)>>2]=(c[z>>2]|0)+((c[va>>2]|0)*84|0);c[((b|0)+4|0)>>2]=(c[z>>2]|0)+((c[va+4>>2]|0)*84|0);c[((b|0)+8|0)>>2]=(c[z>>2]|0)+((c[va+8>>2]|0)*84|0);jS(b|0|0)|0;A=wa+3|0;if((A|0)<(D|0)){va=va+12|0;wa=A}else{break}}}$=s;aa=p+1|0;ba=q;ca=r}else{x=1}}if(x){x=0;if((w|0)==1){D=c[(b+86032|0)>>2]|0;z=c[v+28>>2]|0;c[u+4>>2]=(c[v+4>>2]|0)+1;xa=c[v>>2]|0;do{if((z|0)<0){ya=z}else{F=z>>((c[253197]|0)!=0);if((c[253352]|0)<=0){ya=F;break}y=c[253353]|0;ya=(F|0)/(da(y,y)|0)|0}}while(0);if(!((xa|0)>-1&(c[553037]|0)>(xa|0))){m=215;break}y=WT((c[553038]|0)+(xa*72|0)|0,(c[(c[4917476]|0)+32>>2]|0)==0?(c[(c[4917292]|0)+32>>2]|0)!=0|(c[5123022]|0)==4?-3:ya:-2,1)|0;F=(c[y+80>>2]|0)==0?y:c[253342]|0;y=u|0;c[y>>2]=F;do{if((c[(c[4917332]|0)+32>>2]|0)!=0){if((c[F+100>>2]|0)!=0){break}c[y>>2]=c[253342]}}while(0);F=c[v+16>>2]|0;if((F|0)>64){Tk[c[4886344]&255](2,121808,(n=i,i=i+8|0,c[n>>2]=F,n)|0);i=n;c[y>>2]=c[253342];za=64}else{za=F}F=c[v+24>>2]|0;I=u+76|0;E=c[I>>2]|0;c[E>>2]=2;c[(E+72|0)>>2]=F;c[(E+76|0)>>2]=Kk[c[4886347]&255](F<<2,1)|0;c[E+80>>2]=za;A=E+84|0;c[(E+84|0)>>2]=Kk[c[4886347]&255](za*84|0,1)|0;c[u+12>>2]=5;H=u+16|0;J=u+28|0;KB(H,J);G=v+12|0;L=c[G>>2]|0;if((za|0)>0){ga=0;do{ia=ga+L|0;Aa=c[A>>2]|0;Ba=Aa+(ga*84|0)|0;g[Ba>>2]=+g[k+(ia*44|0)>>2];g[Aa+(ga*84|0)+28>>2]=+g[k+(ia*44|0)+28>>2];g[Aa+(ga*84|0)+4>>2]=+g[k+(ia*44|0)+4>>2];g[Aa+(ga*84|0)+32>>2]=+g[k+(ia*44|0)+32>>2];g[Aa+(ga*84|0)+8>>2]=+g[k+(ia*44|0)+8>>2];g[Aa+(ga*84|0)+36>>2]=+g[k+(ia*44|0)+36>>2];LB(Ba,H,J);Ba=c[A>>2]|0;g[Ba+(ga*84|0)+12>>2]=+g[k+(ia*44|0)+12>>2];g[Ba+(ga*84|0)+16>>2]=+g[k+(ia*44|0)+16>>2];Z=+g[k+(ia*44|0)+20>>2];if((z|0)>-1&(c[253352]|0)>0){Aa=c[253353]|0;Ca=da(Aa,Aa)|0;g[Ba+(ga*84|0)+20>>2]=Z/+(Aa|0)+1.0/+(Aa|0)*+(((z>>((c[253197]|0)!=0)|0)%(Ca|0)|0|0)%(Aa|0)|0|0);Da=+g[k+(ia*44|0)+24>>2]/+(Aa|0)+1.0/+(Aa|0)*+(((z>>((c[253197]|0)!=0)|0)%(Ca|0)|0|0)/(Aa|0)|0|0)}else{g[Ba+(ga*84|0)+20>>2]=Z;Da=+g[k+(ia*44|0)+24>>2]}g[Ba+(ga*84|0)+24>>2]=Da;do{if((D|0)==0){Aa=a[k+(ia*44|0)+40|0]|0;if((c[(c[4917466]|0)+32>>2]|0)==0){Ea=+((Aa&255)>>>0);Fa=+((d[k+(ia*44|0)+41|0]|0)>>>0);Ga=+((d[k+(ia*44|0)+42|0]|0)>>>0);break}else{Ea=+((Aa&255)+1|0);Fa=+((d[k+(ia*44|0)+41|0]|0)+1|0);Ga=+((d[k+(ia*44|0)+42|0]|0)+1|0);break}}else{Aa=((c[G>>2]|0)+ga|0)*3|0;Ea=+g[D+(Aa<<2)>>2];Fa=+g[D+(Aa+1<<2)>>2];Ga=+g[D+(Aa+2<<2)>>2]}}while(0);Z=+(d[k+(ia*44|0)+43|0]|0)/255.0;Aa=Ba+(ga*84|0)+68|0;R=+T_(1.0,(c[(c[4917432]|0)+32>>2]|0)-(c[253581]|0)|0)*.003921568859368563;S=Ea*R;V=Fa*R;ma=Ga*R;do{if((c[(c[4917466]|0)+32>>2]|0)==0){if(!(S>1.0|V>1.0|ma>1.0)){Ha=S;Ia=ma;Ja=V;break}R=S>V?S:V;_=R>ma?R:ma;Ha=S/_;Ia=ma/_;Ja=V/_}else{Ha=S;Ia=ma;Ja=V}}while(0);g[Aa>>2]=Ha;g[Ba+(ga*84|0)+72>>2]=Ja;g[Ba+(ga*84|0)+76>>2]=Ia;g[Ba+(ga*84|0)+80>>2]=Z;ga=ga+1|0;}while((ga|0)<(za|0))}ga=c[v+20>>2]|0;do{if((F|0)>0){D=0;G=c[(E+76|0)>>2]|0;z=0;while(1){J=D+ga|0;H=0;do{L=c[l+(J+H<<2)>>2]|0;c[G+(H<<2)>>2]=L;H=H+1|0;if(!(L>>>0>>0)){m=240;break c}}while((H|0)<3);H=c[G>>2]|0;J=c[G+4>>2]|0;if((H|0)==(J|0)){m=243}else{ha=c[G+8>>2]|0;if((J|0)==(ha|0)|(H|0)==(ha|0)){m=243}else{Ka=z;La=G}}if((m|0)==243){m=0;Ka=z+1|0;La=G-12|0}ha=D+3|0;if((ha|0)<(F|0)){D=ha;G=La+12|0;z=Ka}else{break}}if((Ka|0)==0){break}Tk[c[4886344]&255](2,119720,(n=i,i=i+32|0,c[n>>2]=c[y>>2],c[n+8>>2]=(F|0)/3|0,c[n+16>>2]=za,c[n+24>>2]=((F|0)/3|0)-Ka,n)|0);i=n;c[(E+72|0)>>2]=(c[(E+72|0)>>2]|0)+(Ka*-3|0)}}while(0);Z=+g[v+84>>2];g[(E+52|0)>>2]=Z;M=+g[v+88>>2];g[(E+56|0)>>2]=M;V=+g[v+92>>2];g[(E+60|0)>>2]=V;y=c[A>>2]|0;g[E+64>>2]=Z*+g[y>>2]+M*+g[y+4>>2]+V*+g[y+8>>2];HB(E+52|0);do{if(+g[(E+52|0)>>2]==1.0){Ma=0}else{if(+g[(E+56|0)>>2]==1.0){Ma=1;break}Ma=+g[(E+60|0)>>2]==1.0?2:3}}while(0);a[E+68|0]=Ma;y=u+56|0;ga=E+52|0;c[y>>2]=c[ga>>2];c[y+4>>2]=c[ga+4>>2];c[y+8>>2]=c[ga+8>>2];c[y+12>>2]=c[ga+12>>2];c[y+16>>2]=c[ga+16>>2];c[I>>2]=E;if((F|0)>0){ga=0;y=c[(E+76|0)>>2]|0;while(1){c[(b|0|0)>>2]=(c[A>>2]|0)+((c[y>>2]|0)*84|0);c[((b|0)+4|0)>>2]=(c[A>>2]|0)+((c[y+4>>2]|0)*84|0);c[((b|0)+8|0)>>2]=(c[A>>2]|0)+((c[y+8>>2]|0)*84|0);jS(b|0|0)|0;z=ga+3|0;if((z|0)<(F|0)){ga=z;y=y+12|0}else{break}}}$=s;aa=p;ba=q;ca=r+1|0}else if((w|0)==4){c[u+4>>2]=(c[v+4>>2]|0)+1;Na=c[v>>2]|0;if(!((Na|0)>-1&(c[553037]|0)>(Na|0))){m=255;break}y=WT((c[553038]|0)+(Na*72|0)|0,(c[(c[4917476]|0)+32>>2]|0)==0?-3:-2,1)|0;ga=(c[y+80>>2]|0)==0?y:c[253342]|0;y=u|0;c[y>>2]=ga;do{if((c[(c[4917332]|0)+32>>2]|0)!=0){if((c[ga+100>>2]|0)!=0){break}c[y>>2]=c[253342]}}while(0);y=u+76|0;ga=c[y>>2]|0;c[ga>>2]=9;c[y>>2]=ga;g[ga+4>>2]=+g[v+48>>2];g[ga+28>>2]=+g[v+60>>2];g[ga+16>>2]=+g[v+84>>2];g[ga+8>>2]=+g[v+52>>2];g[ga+32>>2]=+g[v+64>>2];g[ga+20>>2]=+g[v+88>>2];g[ga+12>>2]=+g[v+56>>2];g[ga+36>>2]=+g[v+68>>2];g[ga+24>>2]=+g[v+92>>2];c[u+12>>2]=0;$=s+1|0;aa=p;ba=q;ca=r}else if(1){m=260;break}else{x=1}}ga=t+1|0;if((ga|0)<((j>>>0)/104|0|0)){r=ca;q=ba;p=aa;s=$;t=ga;u=u+80|0;v=v+104|0}else{Oa=ca;Pa=ba;Qa=aa;Ra=$;break b}}if((m|0)==155){Tk[c[4886345]&255](1,122704,(n=i,i=i+8|0,c[n>>2]=B,n)|0);i=n}else if((m|0)==162){Tk[c[4886345]&255](1,117400,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}else if((m|0)==180){Tk[c[4886345]&255](1,122704,(n=i,i=i+8|0,c[n>>2]=ea,n)|0);i=n}else if((m|0)==202){Tk[c[4886345]&255](1,120944,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}else if((m|0)==215){Tk[c[4886345]&255](1,122704,(n=i,i=i+8|0,c[n>>2]=xa,n)|0);i=n}else if((m|0)==240){Tk[c[4886345]&255](1,120944,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}else if((m|0)==255){Tk[c[4886345]&255](1,122704,(n=i,i=i+8|0,c[n>>2]=Na,n)|0);i=n}else if((m|0)==260){Tk[c[4886345]&255](1,124400,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}}else{o=1}}if(o){o=0;if(1){Oa=0;Pa=0;Qa=0;Ra=0}else{o=1}}}while(0);v=c[(b+86032|0)>>2]|0;if((v|0)!=0){vk[c[4886366]&511](v)}yP();v=c[553047]|0;if((v|0)>0){u=0;t=v;while(1){v=c[(c[553048]|0)+(u*80|0)+76>>2]|0;do{if((c[v>>2]|0)==3){if((c[(v+128|0)>>2]|0)!=0){Sa=t;break}c[(v+128|0)>>2]=2;wP(u+1|0,v);Sa=c[553047]|0}else{Sa=t}}while(0);v=u+1|0;if((v|0)<(Sa|0)){u=v;t=Sa}else{break}}}zP();Tk[c[4886344]&255](0,123496,(n=i,i=i+32|0,c[n>>2]=Oa,c[n+8>>2]=Pa,c[n+16>>2]=Qa,c[n+24>>2]=Ra,n)|0);i=n;t=c[f+52>>2]|0;u=(c[5145342]|0)+(c[f+48>>2]|0)|0;if((t&3|0)!=0){Tk[c[4886345]&255](1,128960,(n=i,i=i+8|0,c[n>>2]=2212016,n)|0);i=n}v=Kk[c[4886347]&255](t>>>2<<2,1)|0;c[553058]=v;c[553057]=t>>>2;if((t>>>2|0)!=0){o=0;do{c[v+(o<<2)>>2]=c[u+(o<<2)>>2];o=o+1|0;}while((o|0)<(t>>>2|0))}t=c[f+36>>2]|0;o=(c[5145342]|0)+(c[f+32>>2]|0)|0;if(((t>>>0)%36|0|0)!=0){Ta=c[4886345]|0;Tk[Ta&255](1,128960,(n=i,i=i+8|0,c[n>>2]=2212016,n)|0);i=n}u=c[f+44>>2]|0;if(((u>>>0)%48|0|0)!=0){Ta=c[4886345]|0;Tk[Ta&255](1,128960,(n=i,i=i+8|0,c[n>>2]=2212016,n)|0);i=n}v=((u>>>0)/48|0)+((t>>>0)/36|0)|0;s=Kk[c[4886347]&255](v*80|0,1)|0;c[553045]=s;c[553043]=v;c[553044]=(t>>>0)/36|0;if(t>>>0>35>>>0){v=t>>>0>71>>>0?((t>>>0)/36|0)*80|0:80;p=o;o=s;q=0;while(1){g[o+24>>2]=+(c[p+12>>2]|0);g[o+36>>2]=+(c[p+24>>2]|0);g[o+28>>2]=+(c[p+16>>2]|0);g[o+40>>2]=+(c[p+28>>2]|0);g[o+32>>2]=+(c[p+20>>2]|0);g[o+44>>2]=+(c[p+32>>2]|0);c[o+52>>2]=(c[553042]|0)+((c[p>>2]|0)*20|0);c[o>>2]=-1;r=c[p+4>>2]|0;ga=c[553045]|0;if((r|0)>-1){c[o+56>>2]=ga+(r*80|0)}else{c[o+56>>2]=ga+((((t>>>0)/36|0)+~r|0)*80|0)}r=c[p+8>>2]|0;ga=c[553045]|0;if((r|0)>-1){c[o+60>>2]=ga+(r*80|0)}else{c[o+60>>2]=ga+((((t>>>0)/36|0)+~r|0)*80|0)}r=q+1|0;if((r|0)<((t>>>0)/36|0|0)){p=p+36|0;o=o+80|0;q=r}else{break}}Ua=s+v|0}else{Ua=s}if(u>>>0>47>>>0){q=(c[5145342]|0)+(c[(f+40|0)>>2]|0)|0;o=Ua;p=0;while(1){g[o+24>>2]=+(c[q+8>>2]|0);g[o+36>>2]=+(c[q+20>>2]|0);g[o+28>>2]=+(c[q+12>>2]|0);g[o+40>>2]=+(c[q+24>>2]|0);g[o+32>>2]=+(c[q+16>>2]|0);g[o+44>>2]=+(c[q+28>>2]|0);t=c[q>>2]|0;c[o+64>>2]=t;c[o+68>>2]=c[q+4>>2];if((t|0)>=(c[553076]|0)){c[553076]=t+1}c[o+72>>2]=c[q+32>>2];c[o+76>>2]=c[q+36>>2];t=p+1|0;if((t|0)<((u>>>0)/48|0|0)){q=q+48|0;o=o+80|0;p=t}else{break}}}KP(c[553045]|0,0);p=c[f+68>>2]|0;if(((p>>>0)%40|0|0)!=0){Tk[c[4886345]&255](1,128960,(n=i,i=i+8|0,c[n>>2]=2212016,n)|0);i=n}o=c[f+64>>2]|0;q=c[5145342]|0;c[553039]=(p>>>0)/40|0;u=Kk[c[4886347]&255](((p>>>0)/40|0)<<5,1)|0;c[553040]=u;e:do{if(p>>>0>39>>>0){s=0;v=u;t=q+o|0;while(1){r=TS()|0;if((r|0)==0){break}c[r+64>>2]=1;c[r+76>>2]=v;$B(r|0,64,126536,(n=i,i=i+8|0,c[n>>2]=s,n)|0)|0;i=n;g[v>>2]=+g[t>>2];g[v+12>>2]=+g[t+12>>2];g[v+4>>2]=+g[t+4>>2];g[v+16>>2]=+g[t+16>>2];g[v+8>>2]=+g[t+8>>2];g[v+20>>2]=+g[t+20>>2];c[v+24>>2]=c[t+24>>2];r=c[t+28>>2]|0;c[v+28>>2]=r;if((s|0)==0){c[553046]=r}r=s+1|0;if((r|0)<((p>>>0)/40|0|0)){s=r;v=v+32|0;t=t+40|0}else{break e}}Tk[c[4886345]&255](1,127984,(n=i,i=i+1|0,i=i+7&-8,c[n>>2]=0,n)|0);i=n}}while(0);p=(c[553076]|0)+63&-64;o=Kk[c[4886347]&255](p,1)|0;c[553079]=o;n$(o|0,-1|0,p|0)|0;p=c[f+140>>2]|0;do{if((p|0)!=0){o=c[5145342]|0;q=c[f+136>>2]|0;c[553076]=c[o+q>>2];c[553077]=c[o+(q+4)>>2];u=c[253204]|0;if((u|0)==0){t=Kk[c[4886347]&255](p-8|0,1)|0;m$(t|0,o+(q+8)|0,p-8|0)|0;c[553078]=t;break}else{c[553078]=u;break}}}while(0);AP(f+128|0);p=c[553047]|0;if((p|0)>0){u=0;t=c[553048]|0;q=p;while(1){p=c[t+76>>2]|0;do{if(((c[p>>2]|0)-2|0)>>>0<3>>>0){if((c[(p+80|0)>>2]|0)<=0){Va=q;break}o=0;do{v=c[(p+84|0)>>2]|0;gS(v+(o*84|0)|0,v+(o*84|0)+56|0,v+(o*84|0)+28|0,2212016)|0;o=o+1|0;}while((o|0)<(c[(p+80|0)>>2]|0));Va=c[553047]|0}else{Va=q}}while(0);p=u+1|0;if((p|0)<(Va|0)){u=p;t=t+80|0;q=Va}else{break}}}do{if((c[(c[4919892]|0)+32>>2]|0)!=0){EP(136760);if((c[253354]|0)==0){EP(135312);if((c[253354]|0)==0){break}}FP()}}while(0);q=Ok[c[4886346]&63]()|0;t=c[553047]|0;if((t|0)>0){u=c[553048]|0;p=u;o=0;while(1){x=c[p>>2]|0;do{if((c[x+176>>2]|0)==0){if((c[x+100>>2]|0)!=0){Wa=o;break}v=c[x+208>>2]|0;if((v|0)!=0){if((v|0)>1){Wa=o;break}v=c[x+212>>2]|0;if(!((v|0)==1|(v|0)==3)){Wa=o;break}}v=c[p+76>>2]|0;if(!(((c[v>>2]|0)-2|0)>>>0<3>>>0)){Wa=o;break}if((c[v+72>>2]|0)==0){Wa=o;break}Wa=((c[v+80>>2]|0)!=0)+o|0}else{Wa=o}}while(0);x=p+80|0;if(x>>>0<(u+(t*80|0)|0)>>>0){p=x;o=Wa}else{Xa=Wa;break}}}else{Xa=0}o=jk[c[4886350]&255](Xa<<2)|0;p=c[553047]|0;if((p|0)>0){t=c[553048]|0;u=t;x=0;v=t;while(1){t=c[u>>2]|0;do{if((c[t+176>>2]|0)==0){if((c[t+100>>2]|0)!=0){Ya=x;Za=v;break}s=c[t+208>>2]|0;if((s|0)!=0){if((s|0)>1){Ya=x;Za=v;break}s=c[t+212>>2]|0;if(!((s|0)==1|(s|0)==3)){Ya=x;Za=v;break}}s=c[u+76>>2]|0;if(!(((c[s>>2]|0)-2|0)>>>0<3>>>0)){Ya=x;Za=v;break}if((c[s+72>>2]|0)==0){Ya=x;Za=v;break}if((c[s+80>>2]|0)==0){Ya=x;Za=v;break}c[o+(x<<2)>>2]=u;Ya=x+1|0;Za=c[553048]|0}else{Ya=x;Za=v}}while(0);t=u+80|0;if(t>>>0<(Za+(p*80|0)|0)>>>0){u=t;x=Ya;v=Za}else{break}}}Ie(o|0,Xa|0,4,144);v=o+(Xa<<2)|0;if(o>>>0>>0){x=o;u=0;while(1){p=0;t=0;s=x;while(1){r=s>>>0>>0;if(!((t|0)<4194304&(p|0)<4194304&r)){_a=r;break}r=c[s>>2]|0;ga=c[(c[r>>2]|0)+72>>2]|0;y=r;r=0;w=0;F=s;do{A=c[y+76>>2]|0;w=((c[A+80>>2]|0)*84|0)+w|0;r=(c[A+72>>2]<<2)+r|0;F=F+4|0;if(!(F>>>0>>0)){break}y=c[F>>2]|0;}while((c[(c[y>>2]|0)+72>>2]|0)==(ga|0));ga=w+t|0;if((t|0)!=0&(ga|0)>4194304){_a=1;break}y=r+p|0;if((p|0)!=0&(y|0)>4194304){_a=1;break}else{p=y;t=ga;s=F}}t=x>>>0>>0;if(t){p=x;ga=0;y=0;while(1){A=c[(c[p>>2]|0)+76>>2]|0;E=(c[A+80>>2]|0)+y|0;I=(c[A+72>>2]|0)+ga|0;A=p+4|0;if(A>>>0>>0){p=A;ga=I;y=E}else{$a=I;ab=E;break}}}else{$a=0;ab=0}Tk[c[4886344]&255](0,133792,(n=i,i=i+24|0,c[n>>2]=u,c[n+8>>2]=ab,c[n+16>>2]=($a|0)/3|0,n)|0);i=n;y=jk[c[4886348]&255](ab*84|0)|0;ga=jk[c[4886348]&255]($a<<2)|0;if(t){p=x;E=0;I=0;while(1){A=c[(c[p>>2]|0)+76>>2]|0;c[A+92>>2]=E;z=c[A+76>>2]|0;c[(A+96|0)>>2]=(c[z>>2]|0)+I;c[(A+100|0)>>2]=(c[z>>2]|0)+I;if((c[(A+72|0)>>2]|0)>0){G=E;D=z;z=0;while(1){Ba=G+1|0;c[ga+(G<<2)>>2]=(c[D>>2]|0)+I;Aa=c[(A+96|0)>>2]|0;ha=(c[D>>2]|0)+I|0;c[(A+96|0)>>2]=Aa>>>0>>0?Aa:ha;ha=c[(A+100|0)>>2]|0;Aa=(c[D>>2]|0)+I|0;c[(A+100|0)>>2]=ha>>>0>Aa>>>0?ha:Aa;Aa=z+1|0;if((Aa|0)<(c[(A+72|0)>>2]|0)){G=Ba;D=D+4|0;z=Aa}else{bb=Ba;break}}}else{bb=E}c[A+88>>2]=I;z=c[A+80>>2]|0;if((z|0)>0){D=c[A+84>>2]|0;G=I;F=0;while(1){g[y+(G*84|0)>>2]=+g[D+(F*84|0)>>2];g[y+(G*84|0)+40>>2]=+g[D+(F*84|0)+40>>2];g[y+(G*84|0)+28>>2]=+g[D+(F*84|0)+28>>2];g[y+(G*84|0)+56>>2]=+g[D+(F*84|0)+56>>2];g[y+(G*84|0)+4>>2]=+g[D+(F*84|0)+4>>2];g[y+(G*84|0)+44>>2]=+g[D+(F*84|0)+44>>2];g[y+(G*84|0)+32>>2]=+g[D+(F*84|0)+32>>2];g[y+(G*84|0)+60>>2]=+g[D+(F*84|0)+60>>2];g[y+(G*84|0)+8>>2]=+g[D+(F*84|0)+8>>2];g[y+(G*84|0)+48>>2]=+g[D+(F*84|0)+48>>2];g[y+(G*84|0)+36>>2]=+g[D+(F*84|0)+36>>2];g[y+(G*84|0)+64>>2]=+g[D+(F*84|0)+64>>2];g[y+(G*84|0)+52>>2]=+g[D+(F*84|0)+52>>2];g[y+(G*84|0)+12>>2]=+g[D+(F*84|0)+12>>2];g[y+(G*84|0)+20>>2]=+g[D+(F*84|0)+20>>2];g[y+(G*84|0)+16>>2]=+g[D+(F*84|0)+16>>2];g[y+(G*84|0)+24>>2]=+g[D+(F*84|0)+24>>2];g[y+(G*84|0)+68>>2]=+g[D+(F*84|0)+68>>2];g[y+(G*84|0)+72>>2]=+g[D+(F*84|0)+72>>2];g[y+(G*84|0)+76>>2]=+g[D+(F*84|0)+76>>2];g[y+(G*84|0)+80>>2]=+g[D+(F*84|0)+80>>2];r=F+1|0;if((r|0)<(z|0)){G=G+1|0;F=r}else{break}}cb=((z|0)>1?z:1)+I|0}else{cb=I}F=p+4|0;if(F>>>0>>0){p=F;E=bb;I=cb}else{db=bb;eb=cb;break}}}else{db=0;eb=0}I=pC(132552,(n=i,i=i+8|0,c[n>>2]=u,n)|0)|0;i=n;E=MU(I,eb,y,191,0)|0;I=pC(131568,(n=i,i=i+8|0,c[n>>2]=u,n)|0)|0;i=n;p=OU(I,db,ga,0)|0;if(t){I=x;do{F=c[(c[I>>2]|0)+76>>2]|0;c[F+104>>2]=E;c[F+108>>2]=p;I=I+4|0;}while(I>>>0>>0)}vk[c[4886349]&511](ga);vk[c[4886349]&511](y);if(_a){x=s;u=u+1|0}else{break}}}vk[c[4886351]&511](o);u=Ok[c[4886346]&63]()|0;Tk[c[4886344]&255](0,130224,(n=i,i=i+8|0,h[n>>3]=+(u-q|0)/1.0e3,n)|0);i=n;if((c[(c[4917422]|0)+32>>2]|0)!=0){HP()}c[553036]=(Kk[c[4886347]&255](0,1)|0)-e;c[253203]=2212016;QU();SU();if(!((c[(c[4919892]|0)+32>>2]|0)!=0&(c[253354]|0)!=0)){fb=c[4886366]|0;gb=c[(b+86112|0)>>2]|0;vk[fb&511](gb);i=b;c[b+90408>>2]=5;break a}GP();fb=c[4886366]|0;gb=c[(b+86112|0)>>2]|0;vk[fb&511](gb);i=b;c[b+90408>>2]=5;break a}while(0);c[b+90368>>2]=m;c[b+90376>>2]=n} + + + +function PV(a){a=a|0;var b=0;b=rk[c[c[a+4>>2]>>2]&63](a,1,140)|0;c[a+420>>2]=b;c[b>>2]=10;c[b+60>>2]=0;c[b+44>>2]=0;c[b+92>>2]=0;c[b+76>>2]=0;c[b+64>>2]=0;c[b+48>>2]=0;c[b+96>>2]=0;c[b+80>>2]=0;c[b+68>>2]=0;c[b+52>>2]=0;c[b+100>>2]=0;c[b+84>>2]=0;c[b+72>>2]=0;c[b+56>>2]=0;c[b+104>>2]=0;c[b+88>>2]=0;if((c[a+264>>2]|0)==0){return}c[b+136>>2]=0;return}function QV(a,b){a=a|0;b=b|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,B=0;d=c[a+420>>2]|0;e=(b|0)!=0;c[d+8>>2]=e?294:8;do{if((c[a+264>>2]|0)==0){f=d+4|0;if(e){c[f>>2]=4;break}else{c[f>>2]=110;break}}else{c[d+120>>2]=a;c[d+108>>2]=b;f=(c[a+360>>2]|0)==0;g=d+4|0;do{if((c[a+368>>2]|0)==0){if(f){c[g>>2]=100;break}else{c[g>>2]=148;break}}else{if(f){c[g>>2]=120;break}c[g>>2]=132;h=d+136|0;if((c[h>>2]|0)!=0){break}c[h>>2]=rk[c[c[a+4>>2]>>2]&63](a,1,1e3)|0}}while(0);c[d+124>>2]=c[(c[a+292>>2]|0)+24>>2];c[d+128>>2]=0;c[d+132>>2]=0}}while(0);b=a+288|0;if((c[b>>2]|0)<=0){i=d+12|0;c[i>>2]=0;j=d+16|0;c[j>>2]=0;k=a+236|0;l=c[k>>2]|0;m=d+36|0;n=l;c[m>>2]=n;o=d+40|0;c[o>>2]=0;return}g=a+360|0;f=a+368|0;h=a|0;p=a;q=d+76|0;r=a+4|0;s=d+20|0;t=d+44|0;u=a+364|0;v=d+92|0;w=d+60|0;if(e){x=0}else{e=0;do{y=c[a+292+(e<<2)>>2]|0;do{if((c[g>>2]|0)==0){if((c[f>>2]|0)!=0){break}z=c[y+20>>2]|0;ZV(a,1,z,t+(z<<2)|0);c[s+(e<<2)>>2]=0}}while(0);if((c[u>>2]|0)!=0){z=c[y+24>>2]|0;ZV(a,0,z,w+(z<<2)|0)}e=e+1|0;}while((e|0)<(c[b>>2]|0));i=d+12|0;c[i>>2]=0;j=d+16|0;c[j>>2]=0;k=a+236|0;l=c[k>>2]|0;m=d+36|0;n=l;c[m>>2]=n;o=d+40|0;c[o>>2]=0;return}do{e=c[a+292+(x<<2)>>2]|0;do{if((c[g>>2]|0)==0){if((c[f>>2]|0)!=0){break}w=c[e+20>>2]|0;if(w>>>0>3>>>0){c[(c[h>>2]|0)+20>>2]=52;c[(c[h>>2]|0)+24>>2]=w;vk[c[c[h>>2]>>2]&511](p)}t=q+(w<<2)|0;w=c[t>>2]|0;if((w|0)==0){z=rk[c[c[r>>2]>>2]&63](p,1,1028)|0;c[t>>2]=z;A=z}else{A=w}n$(A|0,0,1028)|0;c[s+(x<<2)>>2]=0}}while(0);if((c[u>>2]|0)!=0){y=c[e+24>>2]|0;if(y>>>0>3>>>0){c[(c[h>>2]|0)+20>>2]=52;c[(c[h>>2]|0)+24>>2]=y;vk[c[c[h>>2]>>2]&511](p)}w=v+(y<<2)|0;y=c[w>>2]|0;if((y|0)==0){z=rk[c[c[r>>2]>>2]&63](p,1,1028)|0;c[w>>2]=z;B=z}else{B=y}n$(B|0,0,1028)|0}x=x+1|0;}while((x|0)<(c[b>>2]|0));i=d+12|0;c[i>>2]=0;j=d+16|0;c[j>>2]=0;k=a+236|0;l=c[k>>2]|0;m=d+36|0;n=l;c[m>>2]=n;o=d+40|0;c[o>>2]=0;return}function RV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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;b=i;i=i+32|0;d=b|0;e=b+16|0;f=c[a+420>>2]|0;if((c[a+264>>2]|0)!=0){$V(f)}n$(d|0,0,16)|0;n$(e|0,0,16)|0;g=a+288|0;if((c[g>>2]|0)<=0){i=b;return}h=a+360|0;j=a+368|0;k=a;l=f+76|0;m=a+364|0;n=f+92|0;f=0;do{o=c[a+292+(f<<2)>>2]|0;do{if((c[h>>2]|0)==0){if((c[j>>2]|0)!=0){break}p=c[o+20>>2]|0;q=d+(p<<2)|0;if((c[q>>2]|0)!=0){break}r=a+120+(p<<2)|0;s=c[r>>2]|0;if((s|0)==0){t=BW(k)|0;c[r>>2]=t;u=t}else{u=s}bW(a,u,c[l+(p<<2)>>2]|0);c[q>>2]=1}}while(0);do{if((c[m>>2]|0)!=0){q=c[o+24>>2]|0;p=e+(q<<2)|0;if((c[p>>2]|0)!=0){break}s=a+136+(q<<2)|0;t=c[s>>2]|0;if((t|0)==0){r=BW(k)|0;c[s>>2]=r;v=r}else{v=t}bW(a,v,c[n+(q<<2)>>2]|0);c[p>>2]=1}}while(0);f=f+1|0;}while((f|0)<(c[g>>2]|0));i=b;return}function SV(b){b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;i=i+16|0;e=c[b+420>>2]|0;f=e;g=b+24|0;h=c[g>>2]|0;j=c[h>>2]|0;if((c[b+264>>2]|0)!=0){k=e+112|0;c[k>>2]=j;l=e+116|0;c[l>>2]=c[(c[g>>2]|0)+4>>2];$V(f);aW(f,127,7);c[e+12>>2]=0;c[e+16>>2]=0;c[c[g>>2]>>2]=c[k>>2];c[(c[g>>2]|0)+4>>2]=c[l>>2];i=d;return}l=c[h+4>>2]|0;h=e+12|0;k=c[h>>2]|0;f=e+16|0;m=c[f>>2]|0;n=e+20|0;e=d|0;c[e>>2]=c[n>>2];c[e+4>>2]=c[n+4>>2];c[e+8>>2]=c[n+8>>2];c[e+12>>2]=c[n+12>>2];a:do{if((m|0)>0){o=127<<17-m|k;p=m+7|0;q=j;r=l;b:while(1){s=o>>>16;t=s&255;u=q+1|0;a[q]=s;s=r-1|0;if((s|0)==0){v=c[g>>2]|0;if((jk[c[v+12>>2]&255](b)|0)==0){w=u;break}x=c[v>>2]|0;y=c[v+4>>2]|0}else{x=u;y=s}do{if((t|0)==255){s=x+1|0;a[x]=0;u=y-1|0;if((u|0)!=0){z=s;A=u;break}u=c[g>>2]|0;if((jk[c[u+12>>2]&255](b)|0)==0){w=s;break b}z=c[u>>2]|0;A=c[u+4>>2]|0}else{z=x;A=y}}while(0);t=p-8|0;if((t|0)>7){o=o<<8;p=t;q=z;r=A}else{B=z;C=A;D=0;E=0;break a}}r=b|0;c[(c[r>>2]|0)+20>>2]=25;vk[c[c[r>>2]>>2]&511](b);B=w;C=0;D=m;E=k}else{B=j;C=l;D=0;E=0}}while(0);c[c[g>>2]>>2]=B;c[(c[g>>2]|0)+4>>2]=C;c[h>>2]=E;c[f>>2]=D;c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];i=d;return}function TV(d,e){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,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;f=c[d+420>>2]|0;g=f;h=c[d+372>>2]|0;i=d+24|0;j=f+112|0;c[j>>2]=c[c[i>>2]>>2];k=f+116|0;l=k;c[k>>2]=c[(c[i>>2]|0)+4>>2];k=d+236|0;do{if((c[k>>2]|0)!=0){if((c[f+36>>2]|0)!=0){break}_V(g,c[f+40>>2]|0)}}while(0);m=d+316|0;if((c[m>>2]|0)>0){n=f+20|0;o=d|0;p=d;q=f+108|0;r=0;do{s=c[d+320+(r<<2)>>2]|0;t=c[d+292+(s<<2)>>2]|0;u=b[c[e+(r<<2)>>2]>>1]>>h;v=n+(s<<2)|0;s=u-(c[v>>2]|0)|0;c[v>>2]=u;if((s|0)<0){w=-s|0;x=s-1|0}else{w=s;x=s}do{if((w|0)==0){y=0}else{s=0;u=w;while(1){z=s+1|0;v=u>>1;if((v|0)==0){break}else{s=z;u=v}}if((s|0)<=10){y=z;break}c[(c[o>>2]|0)+20>>2]=6;vk[c[c[o>>2]>>2]&511](p);y=z}}while(0);u=c[t+20>>2]|0;if((c[q>>2]|0)==0){v=c[g+44+(u<<2)>>2]|0;aW(g,c[v+(y<<2)>>2]|0,a[v+1024+y|0]|0)}else{v=(c[g+76+(u<<2)>>2]|0)+(y<<2)|0;c[v>>2]=(c[v>>2]|0)+1}if((y|0)!=0){aW(g,x,y)}r=r+1|0;}while((r|0)<(c[m>>2]|0))}c[c[i>>2]>>2]=c[j>>2];c[(c[i>>2]|0)+4>>2]=c[l>>2];l=c[k>>2]|0;if((l|0)==0){return 1}k=f+36|0;i=c[k>>2]|0;j=k|0;if((i|0)==0){c[j>>2]=l;k=f+40|0;c[k>>2]=(c[k>>2]|0)+1&7;A=l}else{A=i}c[j>>2]=A-1;return 1}function UV(d,e){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,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;f=c[d+420>>2]|0;g=f;h=d+24|0;i=f+112|0;c[i>>2]=c[c[h>>2]>>2];j=f+116|0;k=j;c[j>>2]=c[(c[h>>2]|0)+4>>2];j=d+236|0;do{if((c[j>>2]|0)!=0){if((c[f+36>>2]|0)!=0){break}_V(g,c[f+40>>2]|0)}}while(0);l=c[d+364>>2]|0;m=c[d+372>>2]|0;n=c[d+380>>2]|0;o=c[e>>2]|0;e=c[d+360>>2]|0;do{if((e|0)<=(l|0)){p=f+128|0;q=d|0;r=d;s=f+124|0;t=f+108|0;u=e;v=0;while(1){w=b[o+(c[n+(u<<2)>>2]<<1)>>1]|0;x=w<<16>>16;do{if(w<<16>>16==0){y=v+1|0}else{if(w<<16>>16<0){z=-x>>m;A=z;B=~z}else{z=x>>m;A=z;B=z}if((A|0)==0){y=v+1|0;break}if((c[p>>2]|0)!=0){$V(g)}if((v|0)>15){z=v;do{C=c[s>>2]|0;if((c[t>>2]|0)==0){D=c[g+60+(C<<2)>>2]|0;aW(g,c[D+960>>2]|0,a[D+1264|0]|0)}else{D=(c[g+92+(C<<2)>>2]|0)+960|0;c[D>>2]=(c[D>>2]|0)+1}z=z-16|0;}while((z|0)>15);E=v&15}else{E=v}z=A;D=1;while(1){C=z>>1;if((C|0)==0){break}else{z=C;D=D+1|0}}if((D|0)>10){c[(c[q>>2]|0)+20>>2]=6;vk[c[c[q>>2]>>2]&511](r)}z=c[s>>2]|0;C=D+(E<<4)|0;if((c[t>>2]|0)==0){F=c[g+60+(z<<2)>>2]|0;aW(g,c[F+(C<<2)>>2]|0,a[F+1024+C|0]|0)}else{F=(c[g+92+(z<<2)>>2]|0)+(C<<2)|0;c[F>>2]=(c[F>>2]|0)+1}aW(g,B,D);y=0}}while(0);if((u|0)<(l|0)){u=u+1|0;v=y}else{break}}if((y|0)<=0){break}v=f+128|0;u=(c[v>>2]|0)+1|0;c[v>>2]=u;if((u|0)!=32767){break}$V(g)}}while(0);c[c[h>>2]>>2]=c[i>>2];c[(c[h>>2]|0)+4>>2]=c[k>>2];k=c[j>>2]|0;if((k|0)==0){return 1}j=f+36|0;h=c[j>>2]|0;i=j|0;if((h|0)==0){c[i>>2]=k;j=f+40|0;c[j>>2]=(c[j>>2]|0)+1&7;G=k}else{G=h}c[i>>2]=G-1;return 1}function VV(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[a+420>>2]|0;f=e;g=c[a+372>>2]|0;h=a+24|0;i=e+112|0;c[i>>2]=c[c[h>>2]>>2];j=e+116|0;k=j;c[j>>2]=c[(c[h>>2]|0)+4>>2];j=a+236|0;do{if((c[j>>2]|0)!=0){if((c[e+36>>2]|0)!=0){break}_V(f,c[e+40>>2]|0)}}while(0);l=a+316|0;if((c[l>>2]|0)>0){a=0;do{aW(f,b[c[d+(a<<2)>>2]>>1]>>g,1);a=a+1|0;}while((a|0)<(c[l>>2]|0))}c[c[h>>2]>>2]=c[i>>2];c[(c[h>>2]|0)+4>>2]=c[k>>2];k=c[j>>2]|0;if((k|0)==0){return 1}j=e+36|0;h=c[j>>2]|0;i=j|0;if((h|0)==0){c[i>>2]=k;j=e+40|0;c[j>>2]=(c[j>>2]|0)+1&7;m=k}else{m=h}c[i>>2]=m-1;return 1}function WV(d,f){d=d|0;f=f|0;var g=0,h=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,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=i;i=i+256|0;h=g|0;j=c[d+420>>2]|0;k=j;l=d+24|0;m=j+112|0;c[m>>2]=c[c[l>>2]>>2];n=j+116|0;o=n;c[n>>2]=c[(c[l>>2]|0)+4>>2];n=d+236|0;do{if((c[n>>2]|0)!=0){if((c[j+36>>2]|0)!=0){break}_V(k,c[j+40>>2]|0)}}while(0);p=c[d+364>>2]|0;q=c[d+372>>2]|0;r=c[d+380>>2]|0;s=c[f>>2]|0;f=c[d+360>>2]|0;d=(f|0)>(p|0);do{if(d){t=j+132|0;u=0;v=0;w=t;x=t}else{t=0;y=f;while(1){z=b[s+(c[r+(y<<2)>>2]<<1)>>1]|0;A=z<<16>>16;B=(z<<16>>16<0?-A|0:A)>>q;c[h+(y<<2)>>2]=B;C=(B|0)==1?y:t;if((y|0)<(p|0)){t=C;y=y+1|0}else{break}}y=j+136|0;t=j+132|0;B=t;if(d){u=0;v=0;w=t;x=B;break}A=j+124|0;z=j+108|0;D=(c[y>>2]|0)+(c[B>>2]|0)|0;E=0;F=f;G=0;while(1){H=c[h+(F<<2)>>2]|0;do{if((H|0)==0){I=G+1|0;J=E;K=D}else{if((G|0)<16|(F|0)>(C|0)){L=D;M=E;N=G}else{O=D;P=E;Q=G;while(1){$V(k);R=c[A>>2]|0;if((c[z>>2]|0)==0){S=c[k+60+(R<<2)>>2]|0;aW(k,c[S+960>>2]|0,a[S+1264|0]|0)}else{S=(c[k+92+(R<<2)>>2]|0)+960|0;c[S>>2]=(c[S>>2]|0)+1}S=Q-16|0;if(!((c[z>>2]|0)!=0|(P|0)==0)){R=O;T=P;while(1){aW(k,a[R]|0,1);U=T-1|0;if((U|0)==0){break}else{R=R+1|0;T=U}}}T=c[y>>2]|0;if((S|0)<16){L=T;M=0;N=S;break}else{O=T;P=0;Q=S}}}if((H|0)>1){a[L+M|0]=H&1;I=N;J=M+1|0;K=L;break}$V(k);Q=c[A>>2]|0;P=N<<4|1;if((c[z>>2]|0)==0){O=c[k+60+(Q<<2)>>2]|0;aW(k,c[O+(P<<2)>>2]|0,a[O+1024+P|0]|0)}else{O=(c[k+92+(Q<<2)>>2]|0)+(P<<2)|0;c[O>>2]=(c[O>>2]|0)+1}aW(k,(e[s+(c[r+(F<<2)>>2]<<1)>>1]|0)>>>15&65535^1,1);if(!((c[z>>2]|0)!=0|(M|0)==0)){O=L;P=M;while(1){aW(k,a[O]|0,1);Q=P-1|0;if((Q|0)==0){break}else{O=O+1|0;P=Q}}}I=0;J=0;K=c[y>>2]|0}}while(0);if((F|0)<(p|0)){D=K;E=J;F=F+1|0;G=I}else{u=J;v=I;w=t;x=B;break}}}}while(0);do{if(!((v|0)<1&(u|0)==0)){I=j+128|0;J=(c[I>>2]|0)+1|0;c[I>>2]=J;I=(c[x>>2]|0)+u|0;c[w>>2]=I;if(!((J|0)==32767|I>>>0>937>>>0)){break}$V(k)}}while(0);c[c[l>>2]>>2]=c[m>>2];c[(c[l>>2]|0)+4>>2]=c[o>>2];o=c[n>>2]|0;if((o|0)==0){i=g;return 1}n=j+36|0;l=c[n>>2]|0;m=n|0;if((l|0)==0){c[m>>2]=o;n=j+40|0;c[n>>2]=(c[n>>2]|0)+1&7;V=o}else{V=l}c[m>>2]=V-1;i=g;return 1}function XV(a,d){a=a|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,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;e=c[a+420>>2]|0;f=a+236|0;g=c[f>>2]|0;if((g|0)!=0){h=e+36|0;i=c[h>>2]|0;if((i|0)==0){j=a+288|0;if((c[j>>2]|0)>0){k=e+20|0;l=0;do{c[k+(l<<2)>>2]=0;l=l+1|0;}while((l|0)<(c[j>>2]|0));m=c[f>>2]|0}else{m=g}g=h|0;c[g>>2]=m;n=m;o=g}else{n=i;o=h|0}c[o>>2]=n-1}n=a+316|0;if((c[n>>2]|0)<=0){return 1}o=e+20|0;h=e+76|0;i=e+92|0;e=a+384|0;g=a+380|0;m=a|0;f=a;j=0;do{l=c[a+320+(j<<2)>>2]|0;k=c[a+292+(l<<2)>>2]|0;p=d+(j<<2)|0;q=c[p>>2]|0;r=o+(l<<2)|0;l=c[h+(c[k+20>>2]<<2)>>2]|0;s=c[i+(c[k+24>>2]<<2)>>2]|0;k=c[e>>2]|0;t=c[g>>2]|0;u=(b[q>>1]|0)-(c[r>>2]|0)|0;v=(u|0)<0?-u|0:u;do{if((v|0)==0){w=0}else{u=0;x=v;while(1){y=u+1|0;z=x>>1;if((z|0)==0){break}else{u=y;x=z}}if((u|0)<=10){w=y;break}c[(c[m>>2]|0)+20>>2]=6;vk[c[c[m>>2]>>2]&511](f);w=y}}while(0);v=l+(w<<2)|0;c[v>>2]=(c[v>>2]|0)+1;do{if((k|0)>=1){v=s+960|0;x=1;z=0;while(1){A=b[q+(c[t+(x<<2)>>2]<<1)>>1]|0;B=A<<16>>16;if(A<<16>>16==0){C=z+1|0}else{if((z|0)>15){D=z-16|0;E=D>>>4;c[v>>2]=E+1+(c[v>>2]|0);F=D-(E<<4)|0}else{F=z}E=A<<16>>16<0?-B|0:B;B=1;while(1){A=E>>1;if((A|0)==0){break}else{E=A;B=B+1|0}}if((B|0)>10){c[(c[m>>2]|0)+20>>2]=6;vk[c[c[m>>2]>>2]&511](f)}E=s+(B+(F<<4)<<2)|0;c[E>>2]=(c[E>>2]|0)+1;C=0}if((x|0)<(k|0)){x=x+1|0;z=C}else{break}}if((C|0)<=0){break}c[s>>2]=(c[s>>2]|0)+1}}while(0);c[r>>2]=b[c[p>>2]>>1]|0;j=j+1|0;}while((j|0)<(c[n>>2]|0));return 1}function YV(d,e){d=d|0;e=e|0;var f=0,g=0,h=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,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,_=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,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,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0;f=i;i=i+40|0;g=f|0;h=c[d+420>>2]|0;j=d+24|0;k=c[j>>2]|0;l=c[k>>2]|0;m=g|0;c[m>>2]=l;n=c[k+4>>2]|0;k=g+4|0;c[k>>2]=n;o=g+8|0;p=h+12|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];c[o+16>>2]=c[p+16>>2];c[o+20>>2]=c[p+20>>2];q=g+32|0;c[q>>2]=d;r=d+236|0;do{if((c[r>>2]|0)==0){s=d}else{if((c[h+36>>2]|0)!=0){s=d;break}t=c[h+40>>2]|0;u=g+12|0;v=c[u>>2]|0;w=g+8|0;do{if((v|0)>0){x=c[w>>2]|127<<17-v;y=v+7|0;z=l;A=n;a:while(1){B=x>>>16;C=B&255;D=z+1|0;a[z]=B;B=A-1|0;if((B|0)==0){E=c[j>>2]|0;if((jk[c[E+12>>2]&255](d)|0)==0){F=D;break}G=c[E>>2]|0;H=c[E+4>>2]|0}else{G=D;H=B}do{if((C|0)==255){B=G+1|0;a[G]=0;D=H-1|0;if((D|0)!=0){I=B;J=D;break}D=c[j>>2]|0;if((jk[c[D+12>>2]&255](d)|0)==0){F=B;break a}I=c[D>>2]|0;J=c[D+4>>2]|0}else{I=G;J=H}}while(0);C=y-8|0;if((C|0)>7){x=x<<8;y=C;z=I;A=J}else{K=13;break}}if((K|0)==13){c[m>>2]=I;c[k>>2]=J;L=I;break}c[m>>2]=F;c[k>>2]=0;M=0;i=f;return M|0}else{L=l}}while(0);c[w>>2]=0;c[u>>2]=0;c[m>>2]=L+1;a[L]=-1;v=(c[k>>2]|0)-1|0;c[k>>2]=v;do{if((v|0)==0){A=c[q>>2]|0;z=c[A+24>>2]|0;if((jk[c[z+12>>2]&255](A)|0)==0){M=0;i=f;return M|0}else{A=c[z>>2]|0;c[m>>2]=A;y=c[z+4>>2]|0;c[k>>2]=y;N=A;O=y;break}}else{N=c[m>>2]|0;O=v}}while(0);c[m>>2]=N+1;a[N]=t+208;v=O-1|0;c[k>>2]=v;u=c[q>>2]|0;do{if((v|0)==0){w=c[u+24>>2]|0;if((jk[c[w+12>>2]&255](u)|0)==0){M=0;i=f;return M|0}else{c[m>>2]=c[w>>2];c[k>>2]=c[w+4>>2];break}}}while(0);if((c[u+288>>2]|0)>0){P=0}else{s=u;break}while(1){c[g+16+(P<<2)>>2]=0;v=P+1|0;t=c[q>>2]|0;if((v|0)<(c[t+288>>2]|0)){P=v}else{s=t;break}}}}while(0);P=d+316|0;b:do{if((c[P>>2]|0)>0){O=h+44|0;N=h+60|0;L=g+12|0;l=g+8|0;F=0;I=s;c:while(1){J=c[d+320+(F<<2)>>2]|0;H=c[d+292+(J<<2)>>2]|0;G=e+(F<<2)|0;n=c[G>>2]|0;u=g+16+(J<<2)|0;J=c[O+(c[H+20>>2]<<2)>>2]|0;t=c[N+(c[H+24>>2]<<2)>>2]|0;H=c[I+384>>2]|0;v=c[I+380>>2]|0;w=(b[n>>1]|0)-(c[u>>2]|0)|0;if((w|0)<0){Q=-w|0;R=w-1|0}else{Q=w;R=w}do{if((Q|0)==0){S=0}else{w=0;y=Q;while(1){T=w+1|0;A=y>>1;if((A|0)==0){break}else{w=T;y=A}}if((w|0)<=10){S=T;break}y=I|0;c[(c[y>>2]|0)+20>>2]=6;vk[c[c[y>>2]>>2]&511](I);S=T}}while(0);y=c[J+(S<<2)>>2]|0;A=a[J+1024+S|0]|0;z=A<<24>>24;x=c[L>>2]|0;if(A<<24>>24==0){A=I|0;c[(c[A>>2]|0)+20>>2]=41;vk[c[c[A>>2]>>2]&511](I)}A=x+z|0;x=c[l>>2]|((1<7){y=I+24|0;z=x;C=A;D=c[m>>2]|0;B=c[k>>2]|0;while(1){E=z>>>16;U=E&255;V=D+1|0;a[D]=E;E=B-1|0;if((E|0)==0){W=c[y>>2]|0;if((jk[c[W+12>>2]&255](I)|0)==0){X=V;K=131;break c}Y=c[W>>2]|0;Z=c[W+4>>2]|0}else{Y=V;Z=E}do{if((U|0)==255){E=Y+1|0;a[Y]=0;V=Z-1|0;if((V|0)!=0){_=E;$=V;break}V=c[y>>2]|0;if((jk[c[V+12>>2]&255](I)|0)==0){X=E;K=131;break c}_=c[V>>2]|0;$=c[V+4>>2]|0}else{_=Y;$=Z}}while(0);aa=z<<8;ba=C-8|0;if((ba|0)>7){z=aa;C=ba;D=_;B=$}else{break}}c[m>>2]=_;c[k>>2]=$;ca=aa;da=ba}else{ca=x;da=A}c[l>>2]=ca;c[L>>2]=da;if((S|0)==0){ea=da;fa=ca}else{B=da+S|0;D=((1<7){C=c[q>>2]|0;z=C+24|0;y=D;J=B;U=c[m>>2]|0;w=c[k>>2]|0;while(1){V=y>>>16;E=V&255;W=U+1|0;a[U]=V;V=w-1|0;if((V|0)==0){ga=c[z>>2]|0;if((jk[c[ga+12>>2]&255](C)|0)==0){ha=W;K=132;break c}ia=c[ga>>2]|0;ja=c[ga+4>>2]|0}else{ia=W;ja=V}do{if((E|0)==255){V=ia+1|0;a[ia]=0;W=ja-1|0;if((W|0)!=0){ka=V;la=W;break}W=c[z>>2]|0;if((jk[c[W+12>>2]&255](C)|0)==0){ha=V;K=132;break c}ka=c[W>>2]|0;la=c[W+4>>2]|0}else{ka=ia;la=ja}}while(0);ma=y<<8;na=J-8|0;if((na|0)>7){y=ma;J=na;U=ka;w=la}else{break}}c[m>>2]=ka;c[k>>2]=la;oa=ma;pa=na}else{oa=D;pa=B}c[l>>2]=oa;c[L>>2]=pa;ea=pa;fa=oa}do{if((H|0)>=1){w=t+960|0;U=t+1264|0;J=1;y=0;C=ea;z=fa;while(1){A=b[n+(c[v+(J<<2)>>2]<<1)>>1]|0;x=A<<16>>16;if(A<<16>>16==0){qa=y+1|0;ra=C;sa=z}else{if((y|0)>15){E=y;W=C;V=z;while(1){ga=c[w>>2]|0;ta=a[U]|0;ua=ta<<24>>24;if(ta<<24>>24==0){ta=c[q>>2]|0;va=ta|0;c[(c[va>>2]|0)+20>>2]=41;vk[c[c[va>>2]>>2]&511](ta)}ta=W+ua|0;va=V|((1<7){ga=c[q>>2]|0;ua=ga+24|0;wa=va;xa=ta;ya=c[m>>2]|0;za=c[k>>2]|0;while(1){Aa=wa>>>16;Ba=Aa&255;Ca=ya+1|0;a[ya]=Aa;Aa=za-1|0;if((Aa|0)==0){Da=c[ua>>2]|0;if((jk[c[Da+12>>2]&255](ga)|0)==0){Ea=Ca;K=133;break c}Fa=c[Da>>2]|0;Ga=c[Da+4>>2]|0}else{Fa=Ca;Ga=Aa}do{if((Ba|0)==255){Aa=Fa+1|0;a[Fa]=0;Ca=Ga-1|0;if((Ca|0)!=0){Ha=Aa;Ia=Ca;break}Ca=c[ua>>2]|0;if((jk[c[Ca+12>>2]&255](ga)|0)==0){Ea=Aa;K=133;break c}Ha=c[Ca>>2]|0;Ia=c[Ca+4>>2]|0}else{Ha=Fa;Ia=Ga}}while(0);Ja=wa<<8;Ka=xa-8|0;if((Ka|0)>7){wa=Ja;xa=Ka;ya=Ha;za=Ia}else{break}}c[m>>2]=Ha;c[k>>2]=Ia;La=Ja;Ma=Ka}else{La=va;Ma=ta}c[l>>2]=La;c[L>>2]=Ma;za=E-16|0;if((za|0)>15){E=za;W=Ma;V=La}else{Na=za;Oa=Ma;Pa=La;break}}}else{Na=y;Oa=C;Pa=z}if(A<<16>>16<0){Qa=-x|0;Ra=x-1|0}else{Qa=x;Ra=x}V=Qa;W=1;while(1){E=V>>1;if((E|0)==0){break}else{V=E;W=W+1|0}}if((W|0)>10){V=c[q>>2]|0;x=V|0;c[(c[x>>2]|0)+20>>2]=6;vk[c[c[x>>2]>>2]&511](V)}V=W+(Na<<4)|0;x=c[t+(V<<2)>>2]|0;A=a[t+1024+V|0]|0;V=A<<24>>24;if(A<<24>>24==0){A=c[q>>2]|0;E=A|0;c[(c[E>>2]|0)+20>>2]=41;vk[c[c[E>>2]>>2]&511](A)}A=Oa+V|0;E=Pa|((1<7){x=c[q>>2]|0;V=x+24|0;za=E;ya=A;xa=c[m>>2]|0;wa=c[k>>2]|0;while(1){ga=za>>>16;ua=ga&255;Ba=xa+1|0;a[xa]=ga;ga=wa-1|0;if((ga|0)==0){Ca=c[V>>2]|0;if((jk[c[Ca+12>>2]&255](x)|0)==0){Sa=Ba;K=134;break c}Ta=c[Ca>>2]|0;Ua=c[Ca+4>>2]|0}else{Ta=Ba;Ua=ga}do{if((ua|0)==255){ga=Ta+1|0;a[Ta]=0;Ba=Ua-1|0;if((Ba|0)!=0){Va=ga;Wa=Ba;break}Ba=c[V>>2]|0;if((jk[c[Ba+12>>2]&255](x)|0)==0){Sa=ga;K=134;break c}Va=c[Ba>>2]|0;Wa=c[Ba+4>>2]|0}else{Va=Ta;Wa=Ua}}while(0);Xa=za<<8;Ya=ya-8|0;if((Ya|0)>7){za=Xa;ya=Ya;xa=Va;wa=Wa}else{break}}c[m>>2]=Va;c[k>>2]=Wa;Za=Xa;_a=Ya}else{Za=E;_a=A}c[l>>2]=Za;c[L>>2]=_a;if((W|0)==0){wa=c[q>>2]|0;xa=wa|0;c[(c[xa>>2]|0)+20>>2]=41;vk[c[c[xa>>2]>>2]&511](wa)}wa=_a+W|0;xa=Za|((1<7){ya=c[q>>2]|0;za=ya+24|0;x=xa;V=wa;ua=c[m>>2]|0;ta=c[k>>2]|0;while(1){va=x>>>16;Ba=va&255;ga=ua+1|0;a[ua]=va;va=ta-1|0;if((va|0)==0){Ca=c[za>>2]|0;if((jk[c[Ca+12>>2]&255](ya)|0)==0){$a=ga;K=135;break c}ab=c[Ca>>2]|0;bb=c[Ca+4>>2]|0}else{ab=ga;bb=va}do{if((Ba|0)==255){va=ab+1|0;a[ab]=0;ga=bb-1|0;if((ga|0)!=0){cb=va;db=ga;break}ga=c[za>>2]|0;if((jk[c[ga+12>>2]&255](ya)|0)==0){$a=va;K=135;break c}cb=c[ga>>2]|0;db=c[ga+4>>2]|0}else{cb=ab;db=bb}}while(0);eb=x<<8;fb=V-8|0;if((fb|0)>7){x=eb;V=fb;ua=cb;ta=db}else{break}}c[m>>2]=cb;c[k>>2]=db;gb=eb;hb=fb}else{gb=xa;hb=wa}c[l>>2]=gb;c[L>>2]=hb;qa=0;ra=hb;sa=gb}if((J|0)<(H|0)){J=J+1|0;y=qa;C=ra;z=sa}else{break}}if((qa|0)<=0){break}z=c[t>>2]|0;C=a[t+1024|0]|0;y=C<<24>>24;if(C<<24>>24==0){C=c[q>>2]|0;J=C|0;c[(c[J>>2]|0)+20>>2]=41;vk[c[c[J>>2]>>2]&511](C)}C=ra+y|0;J=sa|((1<7){z=c[q>>2]|0;y=z+24|0;U=J;w=C;ta=c[m>>2]|0;ua=c[k>>2]|0;while(1){V=U>>>16;x=V&255;ya=ta+1|0;a[ta]=V;V=ua-1|0;if((V|0)==0){za=c[y>>2]|0;if((jk[c[za+12>>2]&255](z)|0)==0){ib=ya;K=136;break c}jb=c[za>>2]|0;kb=c[za+4>>2]|0}else{jb=ya;kb=V}do{if((x|0)==255){V=jb+1|0;a[jb]=0;ya=kb-1|0;if((ya|0)!=0){lb=V;mb=ya;break}ya=c[y>>2]|0;if((jk[c[ya+12>>2]&255](z)|0)==0){ib=V;K=136;break c}lb=c[ya>>2]|0;mb=c[ya+4>>2]|0}else{lb=jb;mb=kb}}while(0);nb=U<<8;ob=w-8|0;if((ob|0)>7){U=nb;w=ob;ta=lb;ua=mb}else{break}}c[m>>2]=lb;c[k>>2]=mb;pb=nb;qb=ob}else{pb=J;qb=C}c[l>>2]=pb;c[L>>2]=qb}}while(0);c[u>>2]=b[c[G>>2]>>1]|0;t=F+1|0;if((t|0)>=(c[P>>2]|0)){break b}F=t;I=c[q>>2]|0}if((K|0)==131){c[m>>2]=X;c[k>>2]=0;M=0;i=f;return M|0}else if((K|0)==132){c[m>>2]=ha;c[k>>2]=0;M=0;i=f;return M|0}else if((K|0)==133){c[m>>2]=Ea;c[k>>2]=0;M=0;i=f;return M|0}else if((K|0)==134){c[m>>2]=Sa;c[k>>2]=0;M=0;i=f;return M|0}else if((K|0)==135){c[m>>2]=$a;c[k>>2]=0;M=0;i=f;return M|0}else if((K|0)==136){c[m>>2]=ib;c[k>>2]=0;M=0;i=f;return M|0}}}while(0);c[c[j>>2]>>2]=c[m>>2];c[(c[j>>2]|0)+4>>2]=c[k>>2];c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];c[p+16>>2]=c[o+16>>2];c[p+20>>2]=c[o+20>>2];o=c[r>>2]|0;if((o|0)==0){M=1;i=f;return M|0}r=h+36|0;p=c[r>>2]|0;k=r|0;if((p|0)==0){c[k>>2]=o;r=h+40|0;c[r>>2]=(c[r>>2]|0)+1&7;rb=o}else{rb=p}c[k>>2]=rb-1;M=1;i=f;return M|0}function ZV(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;h=i;i=i+1296|0;j=h|0;k=h+264|0;if(f>>>0>3>>>0){l=b|0;c[(c[l>>2]|0)+20>>2]=52;c[(c[l>>2]|0)+24>>2]=f;vk[c[c[l>>2]>>2]&511](b)}l=(e|0)!=0;if(l){m=b+120+(f<<2)|0}else{m=b+136+(f<<2)|0}e=c[m>>2]|0;if((e|0)==0){m=b|0;c[(c[m>>2]|0)+20>>2]=52;c[(c[m>>2]|0)+24>>2]=f;vk[c[c[m>>2]>>2]&511](b)}m=c[g>>2]|0;if((m|0)==0){f=b;n=rk[c[c[b+4>>2]>>2]&63](f,1,1280)|0;c[g>>2]=n;o=n;p=f}else{o=m;p=b}m=b|0;b=1;f=0;while(1){n=a[e+b|0]|0;g=n&255;q=g+f|0;if((q|0)>256){c[(c[m>>2]|0)+20>>2]=9;vk[c[c[m>>2]>>2]&511](p)}if(n<<24>>24==0){r=f}else{n$(j+f|0,b&255|0,g|0)|0;r=q}q=b+1|0;if((q|0)<17){b=q;f=r}else{break}}a[j+r|0]=0;f=a[j|0]|0;if(!(f<<24>>24==0)){b=f<<24>>24;q=0;g=0;n=f;while(1){if((n<<24>>24|0)==(b|0)){f=q;s=g;while(1){t=f+1|0;c[k+(f<<2)>>2]=s;u=s+1|0;v=a[j+t|0]|0;if((v<<24>>24|0)==(b|0)){f=t;s=u}else{w=t;x=u;y=v;break}}}else{w=q;x=g;y=n}if((x|0)>=(1<>2]|0)+20>>2]=9;vk[c[c[m>>2]>>2]&511](p)}if(y<<24>>24==0){break}else{b=b+1|0;q=w;g=x<<1;n=y}}}n$(o+1024|0,0,256)|0;y=l?15:255;if((r|0)>0){z=0}else{i=h;return}do{l=d[e+17+z|0]|0;n=o+1024+l|0;if(l>>>0>y>>>0){A=27}else{if((a[n]|0)!=0){A=27}}if((A|0)==27){A=0;c[(c[m>>2]|0)+20>>2]=9;vk[c[c[m>>2]>>2]&511](p)}c[o+(l<<2)>>2]=c[k+(z<<2)>>2];a[n]=a[j+z|0]|0;z=z+1|0;}while((z|0)<(r|0));i=h;return}function _V(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;$V(b);do{if((c[b+108>>2]|0)==0){aW(b,127,7);c[b+12>>2]=0;c[b+16>>2]=0;e=b+112|0;f=c[e>>2]|0;c[e>>2]=f+1;a[f]=-1;f=b+116|0;g=(c[f>>2]|0)-1|0;c[f>>2]=g;if((g|0)==0){g=b+120|0;h=c[g>>2]|0;i=c[h+24>>2]|0;if((jk[c[i+12>>2]&255](h)|0)==0){c[(c[c[g>>2]>>2]|0)+20>>2]=25;h=c[g>>2]|0;vk[c[c[h>>2]>>2]&511](h)}h=c[i>>2]|0;c[e>>2]=h;c[f>>2]=c[i+4>>2];j=h}else{j=c[e>>2]|0}c[e>>2]=j+1;a[j]=d+208;h=(c[f>>2]|0)-1|0;c[f>>2]=h;if((h|0)!=0){break}h=b+120|0;i=c[h>>2]|0;g=c[i+24>>2]|0;if((jk[c[g+12>>2]&255](i)|0)==0){c[(c[c[h>>2]>>2]|0)+20>>2]=25;i=c[h>>2]|0;vk[c[c[i>>2]>>2]&511](i)}c[e>>2]=c[g>>2];c[f>>2]=c[g+4>>2]}}while(0);d=b+120|0;j=c[d>>2]|0;if((c[j+360>>2]|0)!=0){c[b+128>>2]=0;c[b+132>>2]=0;return}if((c[j+288>>2]|0)>0){k=0}else{return}do{c[b+20+(k<<2)>>2]=0;k=k+1|0;}while((k|0)<(c[(c[d>>2]|0)+288>>2]|0));return}function $V(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=b+128|0;e=c[d>>2]|0;if((e|0)==0){return}else{f=0;g=e}while(1){e=g>>1;if((e|0)==0){break}else{f=f+1|0;g=e}}if((f|0)>14){g=b+120|0;c[(c[c[g>>2]>>2]|0)+20>>2]=41;e=c[g>>2]|0;vk[c[c[e>>2]>>2]&511](e)}e=c[b+124>>2]|0;g=f<<4;h=b+108|0;if((c[h>>2]|0)==0){i=c[b+60+(e<<2)>>2]|0;aW(b,c[i+(g<<2)>>2]|0,a[i+1024+g|0]|0)}else{i=(c[b+92+(e<<2)>>2]|0)+(g<<2)|0;c[i>>2]=(c[i>>2]|0)+1}if((f|0)!=0){aW(b,c[d>>2]|0,f)}c[d>>2]=0;d=b+132|0;f=c[d>>2]|0;if(!((c[h>>2]|0)!=0|(f|0)==0)){h=c[b+136>>2]|0;i=f;while(1){aW(b,a[h]|0,1);f=i-1|0;if((f|0)==0){break}else{h=h+1|0;i=f}}}c[d>>2]=0;return}function aW(b,d,e){b=b|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;f=b+16|0;g=c[f>>2]|0;if((e|0)==0){h=b+120|0;c[(c[c[h>>2]>>2]|0)+20>>2]=41;i=c[h>>2]|0;vk[c[c[i>>2]>>2]&511](i)}if((c[b+108>>2]|0)!=0){return}i=g+e|0;h=b+12|0;j=c[h>>2]|((1<7){d=b+112|0;k=b+116|0;l=b+120|0;b=7-g-e|0;e=i+((b|0)>-8?b:-8)&-8;b=i;g=j;do{m=g>>>16;n=m&255;o=c[d>>2]|0;c[d>>2]=o+1;a[o]=m;m=(c[k>>2]|0)-1|0;c[k>>2]=m;if((m|0)==0){m=c[l>>2]|0;o=c[m+24>>2]|0;if((jk[c[o+12>>2]&255](m)|0)==0){c[(c[c[l>>2]>>2]|0)+20>>2]=25;m=c[l>>2]|0;vk[c[c[m>>2]>>2]&511](m)}c[d>>2]=c[o>>2];c[k>>2]=c[o+4>>2]}do{if((n|0)==255){o=c[d>>2]|0;c[d>>2]=o+1;a[o]=0;o=(c[k>>2]|0)-1|0;c[k>>2]=o;if((o|0)!=0){break}o=c[l>>2]|0;m=c[o+24>>2]|0;if((jk[c[m+12>>2]&255](o)|0)==0){c[(c[c[l>>2]>>2]|0)+20>>2]=25;o=c[l>>2]|0;vk[c[c[o>>2]>>2]&511](o)}c[d>>2]=c[m>>2];c[k>>2]=c[m+4>>2]}}while(0);g=g<<8;b=b-8|0;}while((b|0)>7);p=i-8-e|0;q=g}else{p=i;q=j}c[h>>2]=q;c[f>>2]=p;return}function bW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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=i;i=i+2104|0;g=f|0;h=f+40|0;j=f+1072|0;k=g|0;n$(k|0,0,33)|0;n$(h|0,0,1028)|0;n$(j|0,-1|0,1028)|0;c[e+1024>>2]=1;l=1e9;m=0;n=-1;a:while(1){if((m|0)<257){o=c[e+(m<<2)>>2]|0;p=(o|0)==0|(o|0)>(l|0);q=p?n:m;l=p?l:o;m=m+1|0;n=q;continue}else{r=-1;s=0;t=1e9}while(1){q=c[e+(s<<2)>>2]|0;o=(q|0)==0|(q|0)>(t|0)|(s|0)==(n|0);u=o?r:s;p=s+1|0;if((p|0)<257){r=u;s=p;t=o?t:q}else{break}}if((u|0)<0){break}q=e+(u<<2)|0;o=e+(n<<2)|0;c[o>>2]=(c[o>>2]|0)+(c[q>>2]|0);c[q>>2]=0;q=h+(n<<2)|0;c[q>>2]=(c[q>>2]|0)+1;q=j+(n<<2)|0;o=c[q>>2]|0;if((o|0)>-1){p=o;while(1){o=h+(p<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=j+(p<<2)|0;v=c[o>>2]|0;if((v|0)>-1){p=v}else{w=o;break}}}else{w=q}c[w>>2]=u;p=h+(u<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=c[j+(u<<2)>>2]|0;if((p|0)>-1){x=p}else{l=1e9;m=0;n=-1;continue}while(1){p=h+(x<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=c[j+(x<<2)>>2]|0;if((p|0)>-1){x=p}else{l=1e9;m=0;n=-1;continue a}}}n=b|0;m=b;b=0;while(1){l=c[h+(b<<2)>>2]|0;if((l|0)!=0){if((l|0)>32){c[(c[n>>2]|0)+20>>2]=40;vk[c[c[n>>2]>>2]&511](m)}x=g+l|0;a[x]=(a[x]|0)+1}x=b+1|0;if((x|0)<257){b=x}else{y=32;break}}while(1){b=g+y|0;m=a[b]|0;if(m<<24>>24==0){z=y-1|0}else{n=y-2|0;x=y-1|0;l=g+x|0;j=m;while(1){m=n;while(1){A=g+m|0;if((a[A]|0)==0){m=m-1|0}else{break}}a[b]=j-2;a[l]=(a[l]|0)+1;u=g+(m+1)|0;a[u]=(a[u]|0)+2;a[A]=(a[A]|0)-1;u=a[b]|0;if(u<<24>>24==0){z=x;break}else{j=u}}}if((z|0)>16){y=z}else{B=16;break}}while(1){C=g+B|0;D=a[C]|0;if(D<<24>>24==0){B=B-1|0}else{break}}a[C]=D-1;m$(d|0,k|0,17)|0;k=0;D=1;while(1){C=k;B=0;while(1){if((c[h+(B<<2)>>2]|0)==(D|0)){a[d+17+C|0]=B;E=C+1|0}else{E=C}g=B+1|0;if((g|0)<256){C=E;B=g}else{break}}B=D+1|0;if((B|0)<33){k=E;D=B}else{break}}c[d+276>>2]=0;i=f;return}function cW(a){a=a|0;var b=0;sW(a,0);if((c[a+208>>2]|0)==0){DV(a);LW(a);HW(a,0)}LV(a);if((c[a+212>>2]|0)==0){PV(a)}else{oV(a)}if((c[a+200>>2]|0)>1){b=1}else{b=(c[a+216>>2]|0)!=0|0}yV(a,b);dW(a,0);gW(a);vk[c[(c[a+4>>2]|0)+24>>2]&511](a);vk[c[c[a+404>>2]>>2]&511](a);return}function dW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a+4|0;e=a;f=rk[c[c[d>>2]>>2]&63](e,1,64)|0;c[a+392>>2]=f;c[f>>2]=38;if((c[a+208>>2]|0)!=0){return}if((b|0)!=0){b=a|0;c[(c[b>>2]|0)+20>>2]=3;vk[c[c[b>>2]>>2]&511](e);return}b=a+76|0;if((c[b>>2]|0)<=0){return}g=f+24|0;f=0;h=c[a+84>>2]|0;while(1){a=da(c[h+36>>2]|0,c[h+28>>2]|0)|0;i=da(c[h+40>>2]|0,c[h+12>>2]|0)|0;c[g+(f<<2)>>2]=Wk[c[(c[d>>2]|0)+8>>2]&63](e,1,a,i)|0;i=f+1|0;if((i|0)<(c[b>>2]|0)){f=i;h=h+88|0}else{break}}return}function eW(a,b){a=a|0;b=b|0;var d=0;d=c[a+392>>2]|0;if((c[a+208>>2]|0)!=0){return}c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=b;if((b|0)==0){c[d+4>>2]=134;return}else{d=a|0;c[(c[d>>2]|0)+20>>2]=3;vk[c[c[d>>2]>>2]&511](a);return}}function fW(a,b,d,e){a=a|0;b=b|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,t=0,u=0,v=0;f=c[a+392>>2]|0;g=f+8|0;h=g;i=a+284|0;if(!((c[h>>2]|0)>>>0<(c[i>>2]|0)>>>0)){return}j=f+12|0;k=j;l=a+280|0;m=a+396|0;n=f+24|0;o=a+400|0;p=f+16|0;f=p;q=p|0;p=g|0;g=c[k>>2]|0;while(1){r=c[l>>2]|0;if(g>>>0>>0){Gk[c[(c[m>>2]|0)+4>>2]&63](a,b,d,e,n,k,r);s=c[k>>2]|0;t=c[l>>2]|0}else{s=g;t=r}if((s|0)!=(t|0)){u=12;break}r=(Kk[c[(c[o>>2]|0)+4>>2]&255](a,n)|0)==0;v=(c[f>>2]|0)!=0;if(r){u=7;break}if(v){c[d>>2]=(c[d>>2]|0)+1;c[q>>2]=0}c[j>>2]=0;r=(c[h>>2]|0)+1|0;c[p>>2]=r;if(r>>>0<(c[i>>2]|0)>>>0){g=0}else{u=12;break}}if((u|0)==7){if(v){return}c[d>>2]=(c[d>>2]|0)-1;c[q>>2]=1;return}else if((u|0)==12){return}}function gW(a){a=a|0;var b=0;b=rk[c[c[a+4>>2]>>2]&63](a,1,32)|0;c[a+404>>2]=b;c[b>>2]=106;c[b+4>>2]=212;c[b+8>>2]=148;c[b+12>>2]=308;c[b+16>>2]=160;c[b+20>>2]=114;c[b+24>>2]=60;c[b+28>>2]=0;return}function hW(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[d+404>>2]|0;f=d+24|0;g=c[f>>2]|0;h=g|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i]=-1;i=g+4|0;h=(c[i>>2]|0)-1|0;c[i>>2]=h;do{if((h|0)==0){if((jk[c[g+12>>2]&255](d)|0)!=0){break}i=d|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](d)}}while(0);g=c[f>>2]|0;h=g|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i]=-40;i=g+4|0;h=(c[i>>2]|0)-1|0;c[i>>2]=h;do{if((h|0)==0){if((jk[c[g+12>>2]&255](d)|0)!=0){break}i=d|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](d)}}while(0);c[e+28>>2]=0;do{if((c[d+244>>2]|0)!=0){e=c[f>>2]|0;g=e|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h]=-1;h=e+4|0;g=(c[h>>2]|0)-1|0;c[h>>2]=g;do{if((g|0)==0){if((jk[c[e+12>>2]&255](d)|0)!=0){break}h=d|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](d)}}while(0);e=c[f>>2]|0;g=e|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h]=-32;h=e+4|0;g=(c[h>>2]|0)-1|0;c[h>>2]=g;do{if((g|0)==0){if((jk[c[e+12>>2]&255](d)|0)!=0){break}h=d|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](d)}}while(0);e=c[f>>2]|0;g=e|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h]=0;h=e+4|0;g=(c[h>>2]|0)-1|0;c[h>>2]=g;do{if((g|0)==0){if((jk[c[e+12>>2]&255](d)|0)!=0){break}h=d|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](d)}}while(0);e=c[f>>2]|0;g=e|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h]=16;h=e+4|0;g=(c[h>>2]|0)-1|0;c[h>>2]=g;do{if((g|0)==0){if((jk[c[e+12>>2]&255](d)|0)!=0){break}h=d|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](d)}}while(0);e=c[f>>2]|0;g=e|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h]=74;h=e+4|0;g=(c[h>>2]|0)-1|0;c[h>>2]=g;do{if((g|0)==0){if((jk[c[e+12>>2]&255](d)|0)!=0){break}h=d|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](d)}}while(0);e=c[f>>2]|0;g=e|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h]=70;h=e+4|0;g=(c[h>>2]|0)-1|0;c[h>>2]=g;do{if((g|0)==0){if((jk[c[e+12>>2]&255](d)|0)!=0){break}h=d|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](d)}}while(0);e=c[f>>2]|0;g=e|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h]=73;h=e+4|0;g=(c[h>>2]|0)-1|0;c[h>>2]=g;do{if((g|0)==0){if((jk[c[e+12>>2]&255](d)|0)!=0){break}h=d|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](d)}}while(0);e=c[f>>2]|0;g=e|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h]=70;h=e+4|0;g=(c[h>>2]|0)-1|0;c[h>>2]=g;do{if((g|0)==0){if((jk[c[e+12>>2]&255](d)|0)!=0){break}h=d|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](d)}}while(0);e=c[f>>2]|0;g=e|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h]=0;h=e+4|0;g=(c[h>>2]|0)-1|0;c[h>>2]=g;do{if((g|0)==0){if((jk[c[e+12>>2]&255](d)|0)!=0){break}h=d|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](d)}}while(0);e=a[d+248|0]|0;g=c[f>>2]|0;h=g|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i]=e;e=g+4|0;i=(c[e>>2]|0)-1|0;c[e>>2]=i;do{if((i|0)==0){if((jk[c[g+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);g=a[d+249|0]|0;i=c[f>>2]|0;e=i|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h]=g;g=i+4|0;h=(c[g>>2]|0)-1|0;c[g>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}g=d|0;c[(c[g>>2]|0)+20>>2]=25;vk[c[c[g>>2]>>2]&511](d)}}while(0);i=a[d+250|0]|0;h=c[f>>2]|0;g=h|0;e=c[g>>2]|0;c[g>>2]=e+1;a[e]=i;i=h+4|0;e=(c[i>>2]|0)-1|0;c[i>>2]=e;do{if((e|0)==0){if((jk[c[h+12>>2]&255](d)|0)!=0){break}i=d|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](d)}}while(0);h=b[d+252>>1]|0;e=c[f>>2]|0;i=e|0;g=c[i>>2]|0;c[i>>2]=g+1;a[g]=(h&65535)>>>8;g=e+4|0;i=(c[g>>2]|0)-1|0;c[g>>2]=i;do{if((i|0)==0){if((jk[c[e+12>>2]&255](d)|0)!=0){break}g=d|0;c[(c[g>>2]|0)+20>>2]=25;vk[c[c[g>>2]>>2]&511](d)}}while(0);e=c[f>>2]|0;i=e|0;g=c[i>>2]|0;c[i>>2]=g+1;a[g]=h;g=e+4|0;i=(c[g>>2]|0)-1|0;c[g>>2]=i;do{if((i|0)==0){if((jk[c[e+12>>2]&255](d)|0)!=0){break}g=d|0;c[(c[g>>2]|0)+20>>2]=25;vk[c[c[g>>2]>>2]&511](d)}}while(0);e=b[d+254>>1]|0;i=c[f>>2]|0;h=i|0;g=c[h>>2]|0;c[h>>2]=g+1;a[g]=(e&65535)>>>8;g=i+4|0;h=(c[g>>2]|0)-1|0;c[g>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}g=d|0;c[(c[g>>2]|0)+20>>2]=25;vk[c[c[g>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;g=c[h>>2]|0;c[h>>2]=g+1;a[g]=e;g=i+4|0;h=(c[g>>2]|0)-1|0;c[g>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}g=d|0;c[(c[g>>2]|0)+20>>2]=25;vk[c[c[g>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=0;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=0;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;if((h|0)!=0){break}if((jk[c[i+12>>2]&255](d)|0)!=0){break}i=d|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](d)}}while(0);if((c[d+256>>2]|0)==0){return}i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=-1;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=-18;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=0;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=14;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=65;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=100;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=111;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=98;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=101;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=0;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=100;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=0;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=0;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=0;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=0;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;do{if((h|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}e=d|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](d)}}while(0);i=c[d+80>>2]|0;if((i|0)==3){h=c[f>>2]|0;e=h|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g]=1;g=h+4|0;e=(c[g>>2]|0)-1|0;c[g>>2]=e;if((e|0)!=0){return}if((jk[c[h+12>>2]&255](d)|0)!=0){return}h=d|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](d);return}else if((i|0)==5){i=c[f>>2]|0;h=i|0;e=c[h>>2]|0;c[h>>2]=e+1;a[e]=2;e=i+4|0;h=(c[e>>2]|0)-1|0;c[e>>2]=h;if((h|0)!=0){return}if((jk[c[i+12>>2]&255](d)|0)!=0){return}i=d|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](d);return}else{i=c[f>>2]|0;f=i|0;h=c[f>>2]|0;c[f>>2]=h+1;a[h]=0;h=i+4|0;f=(c[h>>2]|0)-1|0;c[h>>2]=f;if((f|0)!=0){return}if((jk[c[i+12>>2]&255](d)|0)!=0){return}i=d|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](d);return}}function iW(b){b=b|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;d=b+84|0;e=b+76|0;f=c[e>>2]|0;if((f|0)>0){g=0;h=0;i=c[d>>2]|0;while(1){j=(oW(b,c[i+16>>2]|0)|0)+h|0;k=g+1|0;l=c[e>>2]|0;if((k|0)<(l|0)){g=k;h=j;i=i+88|0}else{m=j;n=l;break}}}else{m=0;n=f}f=b+212|0;i=b+264|0;h=(c[i>>2]|0)==0;a:do{if((c[f>>2]|0)==0){b:do{if(h){do{if((c[b+72>>2]|0)==8){if((c[b+376>>2]|0)!=8){break}if((n|0)>0){g=0;e=1;l=c[d>>2]|0;while(1){if((c[l+20>>2]|0)>1){o=13}else{if((c[l+24>>2]|0)>1){o=13}else{p=e}}if((o|0)==13){o=0;p=0}j=g+1|0;if((j|0)<(n|0)){g=j;e=p;l=l+88|0}else{q=p;break}}}else{q=1}if((m|0)==0|(q|0)==0){if((q|0)==0){break}qW(b,192);break a}l=b|0;c[(c[l>>2]|0)+20>>2]=77;hk[c[(c[l>>2]|0)+4>>2]&255](b,0);l=(c[i>>2]|0)!=0;if((c[f>>2]|0)==0){if(l){break b}else{break}}else{if(l){o=18;break a}else{o=19;break a}}}}while(0);qW(b,193);break a}}while(0);qW(b,194)}else{if(h){o=19}else{o=18}}}while(0);if((o|0)==18){qW(b,202)}else if((o|0)==19){qW(b,201)}if((c[i>>2]|0)==0){return}i=b+376|0;if((c[i>>2]|0)==8){return}o=b+24|0;h=c[o>>2]|0;f=h|0;q=c[f>>2]|0;c[f>>2]=q+1;a[q]=-1;q=h+4|0;f=(c[q>>2]|0)-1|0;c[q>>2]=f;do{if((f|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}q=b|0;c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](b)}}while(0);h=c[o>>2]|0;f=h|0;q=c[f>>2]|0;c[f>>2]=q+1;a[q]=-38;q=h+4|0;f=(c[q>>2]|0)-1|0;c[q>>2]=f;do{if((f|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}q=b|0;c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](b)}}while(0);h=c[o>>2]|0;f=h|0;q=c[f>>2]|0;c[f>>2]=q+1;a[q]=0;q=h+4|0;f=(c[q>>2]|0)-1|0;c[q>>2]=f;do{if((f|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}q=b|0;c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](b)}}while(0);h=c[o>>2]|0;f=h|0;q=c[f>>2]|0;c[f>>2]=q+1;a[q]=6;q=h+4|0;f=(c[q>>2]|0)-1|0;c[q>>2]=f;do{if((f|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}q=b|0;c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](b)}}while(0);h=c[o>>2]|0;f=h|0;q=c[f>>2]|0;c[f>>2]=q+1;a[q]=0;q=h+4|0;f=(c[q>>2]|0)-1|0;c[q>>2]=f;do{if((f|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}q=b|0;c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](b)}}while(0);h=c[o>>2]|0;f=h|0;q=c[f>>2]|0;c[f>>2]=q+1;a[q]=0;q=h+4|0;f=(c[q>>2]|0)-1|0;c[q>>2]=f;do{if((f|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}q=b|0;c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](b)}}while(0);h=c[i>>2]|0;i=(da(h,h)|0)+255|0;h=c[o>>2]|0;f=h|0;q=c[f>>2]|0;c[f>>2]=q+1;a[q]=i;i=h+4|0;q=(c[i>>2]|0)-1|0;c[i>>2]=q;do{if((q|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}i=b|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](b)}}while(0);h=c[o>>2]|0;o=h|0;q=c[o>>2]|0;c[o>>2]=q+1;a[q]=0;q=h+4|0;o=(c[q>>2]|0)-1|0;c[q>>2]=o;if((o|0)!=0){return}if((jk[c[h+12>>2]&255](b)|0)!=0){return}h=b|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](b);return}function jW(b){b=b|0;var d=0,e=0,f=0,g=0,h=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=i;i=i+32|0;e=d|0;f=d+16|0;g=c[b+404>>2]|0;do{if((c[b+212>>2]|0)==0){h=b+288|0;if((c[h>>2]|0)<=0){break}j=b+360|0;k=b+368|0;l=b+364|0;m=0;do{n=c[b+292+(m<<2)>>2]|0;do{if((c[j>>2]|0)==0){if((c[k>>2]|0)!=0){break}pW(b,c[n+20>>2]|0,0)}}while(0);if((c[l>>2]|0)!=0){pW(b,c[n+24>>2]|0,1)}m=m+1|0;}while((m|0)<(c[h>>2]|0))}else{n$(f|0,0,16)|0;n$(e|0,0,16)|0;h=c[b+288>>2]|0;a:do{if((h|0)>0){m=(c[b+364>>2]|0)==0;if((c[b+360>>2]|0)!=0){if(m){o=0;p=0;break}else{q=0}while(1){a[f+(c[(c[b+292+(q<<2)>>2]|0)+24>>2]|0)|0]=1;l=q+1|0;if((l|0)<(h|0)){q=l}else{o=0;p=0;break a}}}n=(c[b+368>>2]|0)==0;if(m){l=0;while(1){if(n){a[e+(c[(c[b+292+(l<<2)>>2]|0)+20>>2]|0)|0]=1}k=l+1|0;if((k|0)<(h|0)){l=k}else{o=0;p=0;break}}}else{l=0;while(1){m=c[b+292+(l<<2)>>2]|0;if(n){a[e+(c[m+20>>2]|0)|0]=1}a[f+(c[m+24>>2]|0)|0]=1;m=l+1|0;if((m|0)<(h|0)){l=m}else{o=0;p=0;break}}}}else{o=0;p=0}}while(0);do{p=(a[e+o|0]|0)+p+(a[f+o|0]|0)|0;o=o+1|0;}while((o|0)<16);if((p|0)==0){break}h=b+24|0;l=c[h>>2]|0;n=l|0;m=c[n>>2]|0;c[n>>2]=m+1;a[m]=-1;m=l+4|0;n=(c[m>>2]|0)-1|0;c[m>>2]=n;do{if((n|0)==0){if((jk[c[l+12>>2]&255](b)|0)!=0){break}m=b|0;c[(c[m>>2]|0)+20>>2]=25;vk[c[c[m>>2]>>2]&511](b)}}while(0);l=c[h>>2]|0;n=l|0;m=c[n>>2]|0;c[n>>2]=m+1;a[m]=-52;m=l+4|0;n=(c[m>>2]|0)-1|0;c[m>>2]=n;do{if((n|0)==0){if((jk[c[l+12>>2]&255](b)|0)!=0){break}m=b|0;c[(c[m>>2]|0)+20>>2]=25;vk[c[c[m>>2]>>2]&511](b)}}while(0);l=(p<<1)+2|0;n=c[h>>2]|0;m=n|0;k=c[m>>2]|0;c[m>>2]=k+1;a[k]=l>>>8;k=n+4|0;m=(c[k>>2]|0)-1|0;c[k>>2]=m;do{if((m|0)==0){if((jk[c[n+12>>2]&255](b)|0)!=0){break}k=b|0;c[(c[k>>2]|0)+20>>2]=25;vk[c[c[k>>2]>>2]&511](b)}}while(0);n=c[h>>2]|0;m=n|0;k=c[m>>2]|0;c[m>>2]=k+1;a[k]=l;k=n+4|0;m=(c[k>>2]|0)-1|0;c[k>>2]=m;do{if((m|0)==0){if((jk[c[n+12>>2]&255](b)|0)!=0){break}k=b|0;c[(c[k>>2]|0)+20>>2]=25;vk[c[c[k>>2]>>2]&511](b)}}while(0);n=b|0;m=b;l=0;do{do{if((a[e+l|0]|0)!=0){k=c[h>>2]|0;j=k|0;r=c[j>>2]|0;c[j>>2]=r+1;a[r]=l;r=k+4|0;j=(c[r>>2]|0)-1|0;c[r>>2]=j;do{if((j|0)==0){if((jk[c[k+12>>2]&255](b)|0)!=0){break}c[(c[n>>2]|0)+20>>2]=25;vk[c[c[n>>2]>>2]&511](m)}}while(0);k=(a[b+168+l|0]<<4)+(a[b+152+l|0]|0)&255;j=c[h>>2]|0;r=j|0;s=c[r>>2]|0;c[r>>2]=s+1;a[s]=k;k=j+4|0;s=(c[k>>2]|0)-1|0;c[k>>2]=s;if((s|0)!=0){break}if((jk[c[j+12>>2]&255](b)|0)!=0){break}c[(c[n>>2]|0)+20>>2]=25;vk[c[c[n>>2]>>2]&511](m)}}while(0);do{if((a[f+l|0]|0)!=0){j=c[h>>2]|0;s=j|0;k=c[s>>2]|0;c[s>>2]=k+1;a[k]=l+16;k=j+4|0;s=(c[k>>2]|0)-1|0;c[k>>2]=s;do{if((s|0)==0){if((jk[c[j+12>>2]&255](b)|0)!=0){break}c[(c[n>>2]|0)+20>>2]=25;vk[c[c[n>>2]>>2]&511](m)}}while(0);j=a[b+184+l|0]|0;s=c[h>>2]|0;k=s|0;r=c[k>>2]|0;c[k>>2]=r+1;a[r]=j;j=s+4|0;r=(c[j>>2]|0)-1|0;c[j>>2]=r;if((r|0)!=0){break}if((jk[c[s+12>>2]&255](b)|0)!=0){break}c[(c[n>>2]|0)+20>>2]=25;vk[c[c[n>>2]>>2]&511](m)}}while(0);l=l+1|0;}while((l|0)<16)}}while(0);f=b+236|0;e=g+28|0;g=b+24|0;if((c[f>>2]|0)!=(c[e>>2]|0)){p=c[g>>2]|0;o=p|0;q=c[o>>2]|0;c[o>>2]=q+1;a[q]=-1;q=p+4|0;o=(c[q>>2]|0)-1|0;c[q>>2]=o;do{if((o|0)==0){if((jk[c[p+12>>2]&255](b)|0)!=0){break}q=b|0;c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](b)}}while(0);p=c[g>>2]|0;o=p|0;q=c[o>>2]|0;c[o>>2]=q+1;a[q]=-35;q=p+4|0;o=(c[q>>2]|0)-1|0;c[q>>2]=o;do{if((o|0)==0){if((jk[c[p+12>>2]&255](b)|0)!=0){break}q=b|0;c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](b)}}while(0);p=c[g>>2]|0;o=p|0;q=c[o>>2]|0;c[o>>2]=q+1;a[q]=0;q=p+4|0;o=(c[q>>2]|0)-1|0;c[q>>2]=o;do{if((o|0)==0){if((jk[c[p+12>>2]&255](b)|0)!=0){break}q=b|0;c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](b)}}while(0);p=c[g>>2]|0;o=p|0;q=c[o>>2]|0;c[o>>2]=q+1;a[q]=4;q=p+4|0;o=(c[q>>2]|0)-1|0;c[q>>2]=o;do{if((o|0)==0){if((jk[c[p+12>>2]&255](b)|0)!=0){break}q=b|0;c[(c[q>>2]|0)+20>>2]=25;vk[c[c[q>>2]>>2]&511](b)}}while(0);p=c[f>>2]|0;o=c[g>>2]|0;q=o|0;l=c[q>>2]|0;c[q>>2]=l+1;a[l]=p>>>8;l=o+4|0;q=(c[l>>2]|0)-1|0;c[l>>2]=q;do{if((q|0)==0){if((jk[c[o+12>>2]&255](b)|0)!=0){break}l=b|0;c[(c[l>>2]|0)+20>>2]=25;vk[c[c[l>>2]>>2]&511](b)}}while(0);o=c[g>>2]|0;q=o|0;l=c[q>>2]|0;c[q>>2]=l+1;a[l]=p;p=o+4|0;l=(c[p>>2]|0)-1|0;c[p>>2]=l;do{if((l|0)==0){if((jk[c[o+12>>2]&255](b)|0)!=0){break}p=b|0;c[(c[p>>2]|0)+20>>2]=25;vk[c[c[p>>2]>>2]&511](b)}}while(0);c[e>>2]=c[f>>2]}f=c[g>>2]|0;e=f|0;o=c[e>>2]|0;c[e>>2]=o+1;a[o]=-1;o=f+4|0;e=(c[o>>2]|0)-1|0;c[o>>2]=e;do{if((e|0)==0){if((jk[c[f+12>>2]&255](b)|0)!=0){break}o=b|0;c[(c[o>>2]|0)+20>>2]=25;vk[c[c[o>>2]>>2]&511](b)}}while(0);f=c[g>>2]|0;e=f|0;o=c[e>>2]|0;c[e>>2]=o+1;a[o]=-38;o=f+4|0;e=(c[o>>2]|0)-1|0;c[o>>2]=e;do{if((e|0)==0){if((jk[c[f+12>>2]&255](b)|0)!=0){break}o=b|0;c[(c[o>>2]|0)+20>>2]=25;vk[c[c[o>>2]>>2]&511](b)}}while(0);f=b+288|0;e=(c[f>>2]<<1)+6|0;o=c[g>>2]|0;l=o|0;p=c[l>>2]|0;c[l>>2]=p+1;a[p]=e>>>8;p=o+4|0;l=(c[p>>2]|0)-1|0;c[p>>2]=l;do{if((l|0)==0){if((jk[c[o+12>>2]&255](b)|0)!=0){break}p=b|0;c[(c[p>>2]|0)+20>>2]=25;vk[c[c[p>>2]>>2]&511](b)}}while(0);o=c[g>>2]|0;l=o|0;p=c[l>>2]|0;c[l>>2]=p+1;a[p]=e;e=o+4|0;p=(c[e>>2]|0)-1|0;c[e>>2]=p;do{if((p|0)==0){if((jk[c[o+12>>2]&255](b)|0)!=0){break}e=b|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](b)}}while(0);o=c[g>>2]|0;p=c[f>>2]&255;e=o|0;l=c[e>>2]|0;c[e>>2]=l+1;a[l]=p;p=o+4|0;l=(c[p>>2]|0)-1|0;c[p>>2]=l;do{if((l|0)==0){if((jk[c[o+12>>2]&255](b)|0)!=0){break}p=b|0;c[(c[p>>2]|0)+20>>2]=25;vk[c[c[p>>2]>>2]&511](b)}}while(0);if((c[f>>2]|0)>0){o=b|0;l=b;p=b+360|0;e=b+368|0;q=b+364|0;m=0;while(1){n=c[b+292+(m<<2)>>2]|0;h=c[g>>2]|0;s=c[n>>2]&255;r=h|0;j=c[r>>2]|0;c[r>>2]=j+1;a[j]=s;s=h+4|0;j=(c[s>>2]|0)-1|0;c[s>>2]=j;do{if((j|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}c[(c[o>>2]|0)+20>>2]=25;vk[c[c[o>>2]>>2]&511](l)}}while(0);do{if((c[p>>2]|0)==0){if((c[e>>2]|0)!=0){t=0;break}t=c[n+20>>2]<<4}else{t=0}}while(0);if((c[q>>2]|0)==0){u=0}else{u=c[n+24>>2]|0}h=c[g>>2]|0;j=h|0;s=c[j>>2]|0;c[j>>2]=s+1;a[s]=u+t;s=h+4|0;j=(c[s>>2]|0)-1|0;c[s>>2]=j;do{if((j|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}c[(c[o>>2]|0)+20>>2]=25;vk[c[c[o>>2]>>2]&511](l)}}while(0);h=m+1|0;if((h|0)<(c[f>>2]|0)){m=h}else{v=p;break}}}else{v=b+360|0}p=c[g>>2]|0;m=c[v>>2]&255;v=p|0;f=c[v>>2]|0;c[v>>2]=f+1;a[f]=m;m=p+4|0;f=(c[m>>2]|0)-1|0;c[m>>2]=f;do{if((f|0)==0){if((jk[c[p+12>>2]&255](b)|0)!=0){break}m=b|0;c[(c[m>>2]|0)+20>>2]=25;vk[c[c[m>>2]>>2]&511](b)}}while(0);p=c[g>>2]|0;f=c[b+364>>2]&255;m=p|0;v=c[m>>2]|0;c[m>>2]=v+1;a[v]=f;f=p+4|0;v=(c[f>>2]|0)-1|0;c[f>>2]=v;do{if((v|0)==0){if((jk[c[p+12>>2]&255](b)|0)!=0){break}f=b|0;c[(c[f>>2]|0)+20>>2]=25;vk[c[c[f>>2]>>2]&511](b)}}while(0);p=c[g>>2]|0;g=(c[b+368>>2]<<4)+(c[b+372>>2]|0)&255;v=p|0;f=c[v>>2]|0;c[v>>2]=f+1;a[f]=g;g=p+4|0;f=(c[g>>2]|0)-1|0;c[g>>2]=f;if((f|0)!=0){i=d;return}if((jk[c[p+12>>2]&255](b)|0)!=0){i=d;return}p=b|0;c[(c[p>>2]|0)+20>>2]=25;vk[c[c[p>>2]>>2]&511](b);i=d;return}function kW(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+24|0;e=c[d>>2]|0;f=e|0;g=c[f>>2]|0;c[f>>2]=g+1;a[g]=-1;g=e+4|0;f=(c[g>>2]|0)-1|0;c[g>>2]=f;do{if((f|0)==0){if((jk[c[e+12>>2]&255](b)|0)!=0){break}g=b|0;c[(c[g>>2]|0)+20>>2]=25;vk[c[c[g>>2]>>2]&511](b)}}while(0);e=c[d>>2]|0;d=e|0;f=c[d>>2]|0;c[d>>2]=f+1;a[f]=-39;f=e+4|0;d=(c[f>>2]|0)-1|0;c[f>>2]=d;if((d|0)!=0){return}if((jk[c[e+12>>2]&255](b)|0)!=0){return}e=b|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](b);return}function lW(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+24|0;e=c[d>>2]|0;f=e|0;g=c[f>>2]|0;c[f>>2]=g+1;a[g]=-1;g=e+4|0;f=(c[g>>2]|0)-1|0;c[g>>2]=f;do{if((f|0)==0){if((jk[c[e+12>>2]&255](b)|0)!=0){break}g=b|0;c[(c[g>>2]|0)+20>>2]=25;vk[c[c[g>>2]>>2]&511](b)}}while(0);e=c[d>>2]|0;f=e|0;g=c[f>>2]|0;c[f>>2]=g+1;a[g]=-40;g=e+4|0;f=(c[g>>2]|0)-1|0;c[g>>2]=f;do{if((f|0)==0){if((jk[c[e+12>>2]&255](b)|0)!=0){break}g=b|0;c[(c[g>>2]|0)+20>>2]=25;vk[c[c[g>>2]>>2]&511](b)}}while(0);if((c[b+88>>2]|0)!=0){oW(b,0)|0}if((c[b+92>>2]|0)!=0){oW(b,1)|0}if((c[b+96>>2]|0)!=0){oW(b,2)|0}if((c[b+100>>2]|0)!=0){oW(b,3)|0}do{if((c[b+212>>2]|0)==0){if((c[b+120>>2]|0)!=0){pW(b,0,0)}if((c[b+136>>2]|0)!=0){pW(b,0,1)}if((c[b+124>>2]|0)!=0){pW(b,1,0)}if((c[b+140>>2]|0)!=0){pW(b,1,1)}if((c[b+128>>2]|0)!=0){pW(b,2,0)}if((c[b+144>>2]|0)!=0){pW(b,2,1)}if((c[b+132>>2]|0)!=0){pW(b,3,0)}if((c[b+148>>2]|0)==0){break}pW(b,3,1)}}while(0);e=c[d>>2]|0;f=e|0;g=c[f>>2]|0;c[f>>2]=g+1;a[g]=-1;g=e+4|0;f=(c[g>>2]|0)-1|0;c[g>>2]=f;do{if((f|0)==0){if((jk[c[e+12>>2]&255](b)|0)!=0){break}g=b|0;c[(c[g>>2]|0)+20>>2]=25;vk[c[c[g>>2]>>2]&511](b)}}while(0);e=c[d>>2]|0;d=e|0;f=c[d>>2]|0;c[d>>2]=f+1;a[f]=-39;f=e+4|0;d=(c[f>>2]|0)-1|0;c[f>>2]=d;if((d|0)!=0){return}if((jk[c[e+12>>2]&255](b)|0)!=0){return}e=b|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](b);return}function mW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if(e>>>0>65533>>>0){f=b|0;c[(c[f>>2]|0)+20>>2]=12;vk[c[c[f>>2]>>2]&511](b)}f=b+24|0;g=c[f>>2]|0;h=g|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i]=-1;i=g+4|0;h=(c[i>>2]|0)-1|0;c[i>>2]=h;do{if((h|0)==0){if((jk[c[g+12>>2]&255](b)|0)!=0){break}i=b|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](b)}}while(0);g=c[f>>2]|0;h=g|0;i=c[h>>2]|0;c[h>>2]=i+1;a[i]=d;d=g+4|0;i=(c[d>>2]|0)-1|0;c[d>>2]=i;do{if((i|0)==0){if((jk[c[g+12>>2]&255](b)|0)!=0){break}d=b|0;c[(c[d>>2]|0)+20>>2]=25;vk[c[c[d>>2]>>2]&511](b)}}while(0);g=e+2|0;e=c[f>>2]|0;i=e|0;d=c[i>>2]|0;c[i>>2]=d+1;a[d]=g>>>8;d=e+4|0;i=(c[d>>2]|0)-1|0;c[d>>2]=i;do{if((i|0)==0){if((jk[c[e+12>>2]&255](b)|0)!=0){break}d=b|0;c[(c[d>>2]|0)+20>>2]=25;vk[c[c[d>>2]>>2]&511](b)}}while(0);e=c[f>>2]|0;f=e|0;i=c[f>>2]|0;c[f>>2]=i+1;a[i]=g;g=e+4|0;i=(c[g>>2]|0)-1|0;c[g>>2]=i;if((i|0)!=0){return}if((jk[c[e+12>>2]&255](b)|0)!=0){return}e=b|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](b);return}function nW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=c[b+24>>2]|0;f=e|0;g=c[f>>2]|0;c[f>>2]=g+1;a[g]=d;d=e+4|0;g=(c[d>>2]|0)-1|0;c[d>>2]=g;if((g|0)!=0){return}if((jk[c[e+12>>2]&255](b)|0)!=0){return}e=b|0;c[(c[e>>2]|0)+20>>2]=25;vk[c[c[e>>2]>>2]&511](b);return}function oW(d,f){d=d|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;g=c[d+88+(f<<2)>>2]|0;if((g|0)==0){h=d|0;c[(c[h>>2]|0)+20>>2]=54;c[(c[h>>2]|0)+24>>2]=f;vk[c[c[h>>2]>>2]&511](d)}h=d+384|0;i=c[h>>2]|0;if((i|0)<0){j=0}else{k=c[d+380>>2]|0;l=0;m=0;while(1){n=(e[g+(c[k+(l<<2)>>2]<<1)>>1]|0)>>>0>255>>>0?1:m;if((l|0)<(i|0)){l=l+1|0;m=n}else{j=n;break}}}m=g+128|0;if((c[m>>2]|0)!=0){return j|0}l=d+24|0;i=c[l>>2]|0;k=i|0;n=c[k>>2]|0;c[k>>2]=n+1;a[n]=-1;n=i+4|0;k=(c[n>>2]|0)-1|0;c[n>>2]=k;do{if((k|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}n=d|0;c[(c[n>>2]|0)+20>>2]=25;vk[c[c[n>>2]>>2]&511](d)}}while(0);i=c[l>>2]|0;k=i|0;n=c[k>>2]|0;c[k>>2]=n+1;a[n]=-37;n=i+4|0;k=(c[n>>2]|0)-1|0;c[n>>2]=k;do{if((k|0)==0){if((jk[c[i+12>>2]&255](d)|0)!=0){break}n=d|0;c[(c[n>>2]|0)+20>>2]=25;vk[c[c[n>>2]>>2]&511](d)}}while(0);i=(j|0)!=0;k=c[h>>2]|0;if(i){o=(k<<1)+2|0}else{o=k+1|0}k=o+3|0;o=c[l>>2]|0;n=o|0;p=c[n>>2]|0;c[n>>2]=p+1;a[p]=k>>>8;p=o+4|0;n=(c[p>>2]|0)-1|0;c[p>>2]=n;do{if((n|0)==0){if((jk[c[o+12>>2]&255](d)|0)!=0){break}p=d|0;c[(c[p>>2]|0)+20>>2]=25;vk[c[c[p>>2]>>2]&511](d)}}while(0);o=c[l>>2]|0;n=o|0;p=c[n>>2]|0;c[n>>2]=p+1;a[p]=k;k=o+4|0;p=(c[k>>2]|0)-1|0;c[k>>2]=p;do{if((p|0)==0){if((jk[c[o+12>>2]&255](d)|0)!=0){break}k=d|0;c[(c[k>>2]|0)+20>>2]=25;vk[c[c[k>>2]>>2]&511](d)}}while(0);o=c[l>>2]|0;p=o|0;k=c[p>>2]|0;c[p>>2]=k+1;a[k]=(j<<4)+f;f=o+4|0;k=(c[f>>2]|0)-1|0;c[f>>2]=k;do{if((k|0)==0){if((jk[c[o+12>>2]&255](d)|0)!=0){break}f=d|0;c[(c[f>>2]|0)+20>>2]=25;vk[c[c[f>>2]>>2]&511](d)}}while(0);a:do{if((c[h>>2]|0)>=0){o=d+380|0;k=d|0;f=d;if(i){q=0}else{p=0;while(1){n=c[l>>2]|0;r=b[g+(c[(c[o>>2]|0)+(p<<2)>>2]<<1)>>1]&255;s=n|0;t=c[s>>2]|0;c[s>>2]=t+1;a[t]=r;r=n+4|0;t=(c[r>>2]|0)-1|0;c[r>>2]=t;do{if((t|0)==0){if((jk[c[n+12>>2]&255](d)|0)!=0){break}c[(c[k>>2]|0)+20>>2]=25;vk[c[c[k>>2]>>2]&511](f)}}while(0);if((p|0)<(c[h>>2]|0)){p=p+1|0}else{break a}}}while(1){p=b[g+(c[(c[o>>2]|0)+(q<<2)>>2]<<1)>>1]|0;n=c[l>>2]|0;t=n|0;r=c[t>>2]|0;c[t>>2]=r+1;a[r]=(p&65535)>>>8;r=n+4|0;t=(c[r>>2]|0)-1|0;c[r>>2]=t;do{if((t|0)==0){if((jk[c[n+12>>2]&255](d)|0)!=0){break}c[(c[k>>2]|0)+20>>2]=25;vk[c[c[k>>2]>>2]&511](f)}}while(0);n=c[l>>2]|0;t=n|0;r=c[t>>2]|0;c[t>>2]=r+1;a[r]=p;r=n+4|0;t=(c[r>>2]|0)-1|0;c[r>>2]=t;do{if((t|0)==0){if((jk[c[n+12>>2]&255](d)|0)!=0){break}c[(c[k>>2]|0)+20>>2]=25;vk[c[c[k>>2]>>2]&511](f)}}while(0);if((q|0)<(c[h>>2]|0)){q=q+1|0}else{break}}}}while(0);c[m>>2]=1;return j|0}function pW(b,e,f){b=b|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;if((f|0)==0){g=b+120+(e<<2)|0;h=e}else{g=b+136+(e<<2)|0;h=e+16|0}e=c[g>>2]|0;if((e|0)==0){g=b|0;c[(c[g>>2]|0)+20>>2]=52;c[(c[g>>2]|0)+24>>2]=h;vk[c[c[g>>2]>>2]&511](b)}g=e+276|0;if((c[g>>2]|0)!=0){return}f=b+24|0;i=c[f>>2]|0;j=i|0;k=c[j>>2]|0;c[j>>2]=k+1;a[k]=-1;k=i+4|0;j=(c[k>>2]|0)-1|0;c[k>>2]=j;do{if((j|0)==0){if((jk[c[i+12>>2]&255](b)|0)!=0){break}k=b|0;c[(c[k>>2]|0)+20>>2]=25;vk[c[c[k>>2]>>2]&511](b)}}while(0);i=c[f>>2]|0;j=i|0;k=c[j>>2]|0;c[j>>2]=k+1;a[k]=-60;k=i+4|0;j=(c[k>>2]|0)-1|0;c[k>>2]=j;do{if((j|0)==0){if((jk[c[i+12>>2]&255](b)|0)!=0){break}k=b|0;c[(c[k>>2]|0)+20>>2]=25;vk[c[c[k>>2]>>2]&511](b)}}while(0);i=(d[e+16|0]|0)+((d[e+15|0]|0)+((d[e+14|0]|0)+((d[e+13|0]|0)+((d[e+12|0]|0)+((d[e+11|0]|0)+((d[e+10|0]|0)+((d[e+9|0]|0)+((d[e+8|0]|0)+((d[e+7|0]|0)+((d[e+6|0]|0)+((d[e+5|0]|0)+((d[e+4|0]|0)+((d[e+3|0]|0)+((d[e+2|0]|0)+(d[e+1|0]|0)))))))))))))))|0;j=i+19|0;k=c[f>>2]|0;l=k|0;m=c[l>>2]|0;c[l>>2]=m+1;a[m]=j>>>8;m=k+4|0;l=(c[m>>2]|0)-1|0;c[m>>2]=l;do{if((l|0)==0){if((jk[c[k+12>>2]&255](b)|0)!=0){break}m=b|0;c[(c[m>>2]|0)+20>>2]=25;vk[c[c[m>>2]>>2]&511](b)}}while(0);k=c[f>>2]|0;l=k|0;m=c[l>>2]|0;c[l>>2]=m+1;a[m]=j;j=k+4|0;m=(c[j>>2]|0)-1|0;c[j>>2]=m;do{if((m|0)==0){if((jk[c[k+12>>2]&255](b)|0)!=0){break}j=b|0;c[(c[j>>2]|0)+20>>2]=25;vk[c[c[j>>2]>>2]&511](b)}}while(0);k=c[f>>2]|0;m=k|0;j=c[m>>2]|0;c[m>>2]=j+1;a[j]=h;h=k+4|0;j=(c[h>>2]|0)-1|0;c[h>>2]=j;do{if((j|0)==0){if((jk[c[k+12>>2]&255](b)|0)!=0){break}h=b|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](b)}}while(0);k=b|0;j=b;h=1;do{m=a[e+h|0]|0;l=c[f>>2]|0;n=l|0;o=c[n>>2]|0;c[n>>2]=o+1;a[o]=m;m=l+4|0;o=(c[m>>2]|0)-1|0;c[m>>2]=o;do{if((o|0)==0){if((jk[c[l+12>>2]&255](b)|0)!=0){break}c[(c[k>>2]|0)+20>>2]=25;vk[c[c[k>>2]>>2]&511](j)}}while(0);h=h+1|0;}while((h|0)<17);if((i|0)>0){h=0;do{l=a[e+17+h|0]|0;o=c[f>>2]|0;m=o|0;n=c[m>>2]|0;c[m>>2]=n+1;a[n]=l;l=o+4|0;n=(c[l>>2]|0)-1|0;c[l>>2]=n;do{if((n|0)==0){if((jk[c[o+12>>2]&255](b)|0)!=0){break}c[(c[k>>2]|0)+20>>2]=25;vk[c[c[k>>2]>>2]&511](j)}}while(0);h=h+1|0;}while((h|0)<(i|0))}c[g>>2]=1;return}function qW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=b+24|0;f=c[e>>2]|0;g=f|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h]=-1;h=f+4|0;g=(c[h>>2]|0)-1|0;c[h>>2]=g;do{if((g|0)==0){if((jk[c[f+12>>2]&255](b)|0)!=0){break}h=b|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](b)}}while(0);f=c[e>>2]|0;g=f|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h]=d;d=f+4|0;h=(c[d>>2]|0)-1|0;c[d>>2]=h;do{if((h|0)==0){if((jk[c[f+12>>2]&255](b)|0)!=0){break}d=b|0;c[(c[d>>2]|0)+20>>2]=25;vk[c[c[d>>2]>>2]&511](b)}}while(0);f=b+76|0;h=((c[f>>2]|0)*3|0)+8|0;d=c[e>>2]|0;g=d|0;i=c[g>>2]|0;c[g>>2]=i+1;a[i]=h>>>8;i=d+4|0;g=(c[i>>2]|0)-1|0;c[i>>2]=g;do{if((g|0)==0){if((jk[c[d+12>>2]&255](b)|0)!=0){break}i=b|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](b)}}while(0);d=c[e>>2]|0;g=d|0;i=c[g>>2]|0;c[g>>2]=i+1;a[i]=h;h=d+4|0;i=(c[h>>2]|0)-1|0;c[h>>2]=i;do{if((i|0)==0){if((jk[c[d+12>>2]&255](b)|0)!=0){break}h=b|0;c[(c[h>>2]|0)+20>>2]=25;vk[c[c[h>>2]>>2]&511](b)}}while(0);d=b+68|0;if((c[d>>2]|0)>65535){j=15}else{if((c[b+64>>2]|0)>65535){j=15}}if((j|0)==15){j=b|0;c[(c[j>>2]|0)+20>>2]=42;c[(c[j>>2]|0)+24>>2]=65535;vk[c[c[j>>2]>>2]&511](b)}j=c[e>>2]|0;i=c[b+72>>2]&255;h=j|0;g=c[h>>2]|0;c[h>>2]=g+1;a[g]=i;i=j+4|0;g=(c[i>>2]|0)-1|0;c[i>>2]=g;do{if((g|0)==0){if((jk[c[j+12>>2]&255](b)|0)!=0){break}i=b|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](b)}}while(0);j=c[d>>2]|0;d=c[e>>2]|0;g=d|0;i=c[g>>2]|0;c[g>>2]=i+1;a[i]=j>>>8;i=d+4|0;g=(c[i>>2]|0)-1|0;c[i>>2]=g;do{if((g|0)==0){if((jk[c[d+12>>2]&255](b)|0)!=0){break}i=b|0;c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](b)}}while(0);d=c[e>>2]|0;g=d|0;i=c[g>>2]|0;c[g>>2]=i+1;a[i]=j;j=d+4|0;i=(c[j>>2]|0)-1|0;c[j>>2]=i;do{if((i|0)==0){if((jk[c[d+12>>2]&255](b)|0)!=0){break}j=b|0;c[(c[j>>2]|0)+20>>2]=25;vk[c[c[j>>2]>>2]&511](b)}}while(0);d=c[b+64>>2]|0;i=c[e>>2]|0;j=i|0;g=c[j>>2]|0;c[j>>2]=g+1;a[g]=d>>>8;g=i+4|0;j=(c[g>>2]|0)-1|0;c[g>>2]=j;do{if((j|0)==0){if((jk[c[i+12>>2]&255](b)|0)!=0){break}g=b|0;c[(c[g>>2]|0)+20>>2]=25;vk[c[c[g>>2]>>2]&511](b)}}while(0);i=c[e>>2]|0;j=i|0;g=c[j>>2]|0;c[j>>2]=g+1;a[g]=d;d=i+4|0;g=(c[d>>2]|0)-1|0;c[d>>2]=g;do{if((g|0)==0){if((jk[c[i+12>>2]&255](b)|0)!=0){break}d=b|0;c[(c[d>>2]|0)+20>>2]=25;vk[c[c[d>>2]>>2]&511](b)}}while(0);i=c[e>>2]|0;g=c[f>>2]&255;d=i|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j]=g;g=i+4|0;j=(c[g>>2]|0)-1|0;c[g>>2]=j;do{if((j|0)==0){if((jk[c[i+12>>2]&255](b)|0)!=0){break}g=b|0;c[(c[g>>2]|0)+20>>2]=25;vk[c[c[g>>2]>>2]&511](b)}}while(0);if((c[f>>2]|0)<=0){return}i=b|0;j=b;g=0;d=c[b+84>>2]|0;while(1){h=c[e>>2]|0;k=c[d>>2]&255;l=h|0;m=c[l>>2]|0;c[l>>2]=m+1;a[m]=k;k=h+4|0;m=(c[k>>2]|0)-1|0;c[k>>2]=m;do{if((m|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](j)}}while(0);h=c[e>>2]|0;m=(c[d+8>>2]<<4)+(c[d+12>>2]|0)&255;k=h|0;l=c[k>>2]|0;c[k>>2]=l+1;a[l]=m;m=h+4|0;l=(c[m>>2]|0)-1|0;c[m>>2]=l;do{if((l|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](j)}}while(0);h=c[e>>2]|0;l=c[d+16>>2]&255;m=h|0;k=c[m>>2]|0;c[m>>2]=k+1;a[k]=l;l=h+4|0;k=(c[l>>2]|0)-1|0;c[l>>2]=k;do{if((k|0)==0){if((jk[c[h+12>>2]&255](b)|0)!=0){break}c[(c[i>>2]|0)+20>>2]=25;vk[c[c[i>>2]>>2]&511](j)}}while(0);h=g+1|0;if((h|0)<(c[f>>2]|0)){g=h;d=d+88|0}else{break}}return}function rW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+28|0;if((c[b>>2]|0)>>>0>16777215>>>0){d=3}else{if((c[a+32>>2]|0)>>>0>16777215>>>0){d=3}}if((d|0)==3){d=a|0;c[(c[d>>2]|0)+20>>2]=42;c[(c[d>>2]|0)+24>>2]=65500;vk[c[c[d>>2]>>2]&511](a)}d=c[a+56>>2]|0;e=a+376|0;f=c[e>>2]|0;g=da(f,c[a+60>>2]|0)|0;if(!(d>>>0>>0)){c[a+64>>2]=da(c[b>>2]|0,f)|0;c[a+68>>2]=da(f,c[a+32>>2]|0)|0;c[a+276>>2]=1;c[a+280>>2]=1;return}if(!(d<<1>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,2)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,2)|0;c[a+276>>2]=2;c[a+280>>2]=2;return}if(!((d*3|0)>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,3)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,3)|0;c[a+276>>2]=3;c[a+280>>2]=3;return}if(!(d<<2>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,4)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,4)|0;c[a+276>>2]=4;c[a+280>>2]=4;return}if(!((d*5|0)>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,5)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,5)|0;c[a+276>>2]=5;c[a+280>>2]=5;return}if(!((d*6|0)>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,6)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,6)|0;c[a+276>>2]=6;c[a+280>>2]=6;return}if(!((d*7|0)>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,7)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,7)|0;c[a+276>>2]=7;c[a+280>>2]=7;return}if(!(d<<3>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,8)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,8)|0;c[a+276>>2]=8;c[a+280>>2]=8;return}if(!((d*9|0)>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,9)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,9)|0;c[a+276>>2]=9;c[a+280>>2]=9;return}if(!((d*10|0)>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,10)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,10)|0;c[a+276>>2]=10;c[a+280>>2]=10;return}if(!((d*11|0)>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,11)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,11)|0;c[a+276>>2]=11;c[a+280>>2]=11;return}if(!((d*12|0)>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,12)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,12)|0;c[a+276>>2]=12;c[a+280>>2]=12;return}if(!((d*13|0)>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,13)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,13)|0;c[a+276>>2]=13;c[a+280>>2]=13;return}if(!((d*14|0)>>>0>>0)){c[a+64>>2]=O_(da(c[b>>2]|0,f)|0,14)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,14)|0;c[a+276>>2]=14;c[a+280>>2]=14;return}h=da(c[b>>2]|0,f)|0;if((d*15|0)>>>0>>0){c[a+64>>2]=O_(h,16)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,16)|0;c[a+276>>2]=16;c[a+280>>2]=16;return}else{c[a+64>>2]=O_(h,15)|0;c[a+68>>2]=O_(da(c[e>>2]|0,c[a+32>>2]|0)|0,15)|0;c[a+276>>2]=15;c[a+280>>2]=15;return}}function sW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=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,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,_=0,$=0,aa=0,ba=0;d=i;i=i+2600|0;e=d|0;f=d+40|0;g=f;h=a;j=rk[c[c[a+4>>2]>>2]&63](h,1,36)|0;c[a+388>>2]=j;c[j>>2]=42;c[j+4>>2]=304;c[j+8>>2]=204;c[j+16>>2]=0;k=(b|0)==0;if(k){rW(a);l=c[a+376>>2]|0}else{b=a+276|0;m=c[b>>2]|0;n=a+280|0;if((m|0)==(c[n>>2]|0)){o=m}else{m=a|0;c[(c[m>>2]|0)+20>>2]=7;c[(c[m>>2]|0)+24>>2]=c[b>>2];c[(c[m>>2]|0)+28>>2]=c[n>>2];vk[c[c[m>>2]>>2]&511](h);o=c[b>>2]|0}c[a+376>>2]=o;l=o}o=a+376|0;if((l-1|0)>>>0>15>>>0){b=a|0;c[(c[b>>2]|0)+20>>2]=7;c[(c[b>>2]|0)+24>>2]=c[o>>2];c[(c[b>>2]|0)+28>>2]=c[o>>2];vk[c[c[b>>2]>>2]&511](h);p=c[o>>2]|0}else{p=l}switch(p|0){case 5:{c[a+380>>2]=18048;q=16;break};case 2:{c[a+380>>2]=18448;q=16;break};case 3:{c[a+380>>2]=18344;q=16;break};case 4:{c[a+380>>2]=18216;q=16;break};case 6:{c[a+380>>2]=17840;q=16;break};case 7:{c[a+380>>2]=17576;q=16;break};default:{c[a+380>>2]=18528;if((p|0)<8){q=16}else{r=63}}}if((q|0)==16){r=(da(p,p)|0)-1|0}p=a+384|0;c[p>>2]=r;r=a+68|0;l=c[r>>2]|0;do{if((l|0)==0){q=21}else{if((c[a+64>>2]|0)==0){q=21;break}if((c[a+76>>2]|0)<1){q=21;break}if((c[a+36>>2]|0)<1){q=21}else{s=l}}}while(0);if((q|0)==21){l=a|0;c[(c[l>>2]|0)+20>>2]=33;vk[c[c[l>>2]>>2]&511](h);s=c[r>>2]|0}if((s|0)>65500){q=24}else{if((c[a+64>>2]|0)>65500){q=24}}if((q|0)==24){s=a|0;c[(c[s>>2]|0)+20>>2]=42;c[(c[s>>2]|0)+24>>2]=65500;vk[c[c[s>>2]>>2]&511](h)}s=a+72|0;if((c[s>>2]|0)!=8){l=a|0;c[(c[l>>2]|0)+20>>2]=16;c[(c[l>>2]|0)+24>>2]=c[s>>2];vk[c[c[l>>2]>>2]&511](h)}l=a+76|0;s=c[l>>2]|0;if((s|0)>10){b=a|0;c[(c[b>>2]|0)+20>>2]=27;c[(c[b>>2]|0)+24>>2]=c[l>>2];c[(c[b>>2]|0)+28>>2]=10;vk[c[c[b>>2]>>2]&511](h);t=c[l>>2]|0}else{t=s}s=a+268|0;c[s>>2]=1;b=a+272|0;c[b>>2]=1;m=a+84|0;do{if((t|0)>0){n=a|0;u=c[m>>2]|0;v=0;w=1;x=1;y=t;while(1){z=u+8|0;A=c[z>>2]|0;B=u+12|0;if((A-1|0)>>>0>3>>>0){q=33}else{if(((c[B>>2]|0)-1|0)>>>0>3>>>0){q=33}else{C=w;D=A;E=x;F=y}}if((q|0)==33){q=0;c[(c[n>>2]|0)+20>>2]=19;vk[c[c[n>>2]>>2]&511](h);C=c[s>>2]|0;D=c[z>>2]|0;E=c[b>>2]|0;F=c[l>>2]|0}z=(C|0)>(D|0)?C:D;c[s>>2]=z;A=c[B>>2]|0;G=(E|0)>(A|0)?E:A;c[b>>2]=G;A=v+1|0;if((A|0)<(F|0)){u=u+88|0;v=A;w=z;x=G;y=F}else{break}}if((F|0)<=0){H=G;break}y=a+276|0;x=a+224|0;w=a+280|0;v=a+64|0;u=c[m>>2]|0;n=0;while(1){c[u+4>>2]=n;z=c[y>>2]|0;A=(c[x>>2]|0)!=0?8:4;a:do{if((z|0)>(A|0)){I=1}else{B=c[s>>2]|0;J=c[u+8>>2]|0;K=1;while(1){L=K<<1;if(((B|0)%(da(L,J)|0)|0|0)!=0){I=K;break a}if((da(L,z)|0)>(A|0)){I=L;break}else{K=L}}}}while(0);A=da(I,z)|0;K=u+36|0;c[K>>2]=A;J=c[w>>2]|0;B=(c[x>>2]|0)!=0?8:4;b:do{if((J|0)>(B|0)){M=1}else{L=c[b>>2]|0;N=c[u+12>>2]|0;O=1;while(1){P=O<<1;if(((L|0)%(da(P,N)|0)|0|0)!=0){M=O;break b}if((da(P,J)|0)>(B|0)){M=P;break}else{O=P}}}}while(0);B=da(M,J)|0;z=u+40|0;c[z>>2]=B;O=B<<1;do{if((A|0)>(O|0)){c[K>>2]=O}else{N=A<<1;if((B|0)<=(N|0)){break}c[z>>2]=N}}while(0);B=u+8|0;A=da(c[B>>2]|0,c[v>>2]|0)|0;c[u+28>>2]=O_(A,da(c[o>>2]|0,c[s>>2]|0)|0)|0;A=u+12|0;O=da(c[A>>2]|0,c[r>>2]|0)|0;c[u+32>>2]=O_(O,da(c[o>>2]|0,c[b>>2]|0)|0)|0;O=da(da(c[B>>2]|0,c[v>>2]|0)|0,c[K>>2]|0)|0;c[u+44>>2]=O_(O,da(c[o>>2]|0,c[s>>2]|0)|0)|0;O=da(da(c[A>>2]|0,c[r>>2]|0)|0,c[z>>2]|0)|0;c[u+48>>2]=O_(O,da(c[o>>2]|0,c[b>>2]|0)|0)|0;c[u+52>>2]=1;O=n+1|0;if((O|0)<(c[l>>2]|0)){u=u+88|0;n=O}else{break}}H=c[b>>2]|0}else{H=1}}while(0);c[a+284>>2]=O_(c[r>>2]|0,da(c[o>>2]|0,H)|0)|0;H=a+204|0;r=c[H>>2]|0;do{if((r|0)==0){c[a+264>>2]=0;c[a+200>>2]=1}else{b=e;s=a+200|0;if((c[s>>2]|0)<1){M=a|0;c[(c[M>>2]|0)+20>>2]=20;c[(c[M>>2]|0)+24>>2]=0;vk[c[c[M>>2]>>2]&511](h);Q=c[H>>2]|0}else{Q=r}do{if((c[Q+20>>2]|0)==0){if((c[Q+24>>2]|0)!=63){q=56;break}c[a+264>>2]=0;M=c[l>>2]|0;if((M|0)<=0){R=0;S=M;break}n$(b|0,0,((M|0)>1?M<<2:4)|0)|0;R=0;S=M}else{q=56}}while(0);do{if((q|0)==56){c[a+264>>2]=1;b=c[l>>2]|0;if((b|0)<=0){R=1;S=b;break}n$(g|0,-1|0,b<<8|0)|0;R=1;S=b}}while(0);if((c[s>>2]|0)<1){T=R;U=S}else{b=a|0;M=a+264|0;I=1;m=Q;while(1){G=c[m>>2]|0;if((G-1|0)>>>0>3>>>0){c[(c[b>>2]|0)+20>>2]=27;c[(c[b>>2]|0)+24>>2]=G;c[(c[b>>2]|0)+28>>2]=4;vk[c[c[b>>2]>>2]&511](h)}F=(G|0)>0;if(F){E=0;do{D=c[m+4+(E<<2)>>2]|0;if((D|0)<0){q=67}else{if((D|0)>=(c[l>>2]|0)){q=67}}if((q|0)==67){q=0;c[(c[b>>2]|0)+20>>2]=20;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h)}do{if((E|0)>0){if((D|0)>(c[m+4+(E-1<<2)>>2]|0)){break}c[(c[b>>2]|0)+20>>2]=20;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h)}}while(0);E=E+1|0;}while((E|0)<(G|0))}E=c[m+20>>2]|0;z=c[m+24>>2]|0;K=c[m+28>>2]|0;D=c[m+32>>2]|0;do{if((c[M>>2]|0)==0){if(!((E|0)==0&(z|0)==63&(K|0)==0&(D|0)==0)){c[(c[b>>2]|0)+20>>2]=18;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h)}if(F){V=0}else{break}do{C=e+(c[m+4+(V<<2)>>2]<<2)|0;if((c[C>>2]|0)!=0){c[(c[b>>2]|0)+20>>2]=20;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h)}c[C>>2]=1;V=V+1|0;}while((V|0)<(G|0))}else{if(E>>>0>63>>>0){q=75}else{if((z|0)<(E|0)|(z|0)>63|K>>>0>10>>>0|D>>>0>10>>>0){q=75}}if((q|0)==75){q=0;c[(c[b>>2]|0)+20>>2]=18;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h)}C=(E|0)==0;do{if(C){if((z|0)==0){break}c[(c[b>>2]|0)+20>>2]=18;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h)}else{if((G|0)==1){break}c[(c[b>>2]|0)+20>>2]=18;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h)}}while(0);if(!F){break}t=(K|0)==0;n=(D|0)==(K-1|0);u=0;do{v=c[m+4+(u<<2)>>2]|0;do{if(C){W=0}else{if((c[f+(v<<8)>>2]|0)>=0){W=E;break}c[(c[b>>2]|0)+20>>2]=18;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h);W=E}}while(0);c:do{if((W|0)<=(z|0)){if(!n){if(t){X=W}else{x=W;while(1){c[(c[b>>2]|0)+20>>2]=18;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h);c[f+(v<<8)+(x<<2)>>2]=D;if((x|0)<(z|0)){x=x+1|0}else{break c}}}while(1){x=f+(v<<8)+(X<<2)|0;if((c[x>>2]|0)>=0){c[(c[b>>2]|0)+20>>2]=18;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h)}c[x>>2]=D;if((X|0)<(z|0)){X=X+1|0}else{break c}}}if(t){x=W;while(1){w=f+(v<<8)+(x<<2)|0;if((c[w>>2]|0)>=1){c[(c[b>>2]|0)+20>>2]=18;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h)}c[w>>2]=D;if((x|0)<(z|0)){x=x+1|0}else{break c}}}else{Y=W}while(1){x=f+(v<<8)+(Y<<2)|0;w=c[x>>2]|0;do{if((w|0)<0){c[(c[b>>2]|0)+20>>2]=18;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h)}else{if((K|0)==(w|0)){break}c[(c[b>>2]|0)+20>>2]=18;c[(c[b>>2]|0)+24>>2]=I;vk[c[c[b>>2]>>2]&511](h)}}while(0);c[x>>2]=D;if((Y|0)<(z|0)){Y=Y+1|0}else{break}}}}while(0);u=u+1|0;}while((u|0)<(G|0))}}while(0);if((I|0)<(c[s>>2]|0)){I=I+1|0;m=m+36|0}else{break}}T=c[M>>2]|0;U=c[l>>2]|0}m=(U|0)>0;do{if((T|0)==0){if(!m){break}I=a|0;b=0;G=U;while(1){if((c[e+(b<<2)>>2]|0)==0){c[(c[I>>2]|0)+20>>2]=46;vk[c[c[I>>2]>>2]&511](h);Z=c[l>>2]|0}else{Z=G}z=b+1|0;if((z|0)<(Z|0)){b=z;G=Z}else{break}}}else{if(!m){break}G=a|0;b=0;I=U;while(1){if((c[f+(b<<8)>>2]|0)<0){c[(c[G>>2]|0)+20>>2]=46;vk[c[c[G>>2]>>2]&511](h);_=c[l>>2]|0}else{_=I}z=b+1|0;if((z|0)<(_|0)){b=z;I=_}else{break}}}}while(0);if((c[o>>2]|0)>=8){break}m=c[H>>2]|0;if((c[s>>2]|0)>0){M=0;I=0;while(1){if((I|0)!=(M|0)){m$(m+(M*36|0)|0,m+(I*36|0)|0,36)|0}b=c[p>>2]|0;if((c[m+(M*36|0)+20>>2]|0)>(b|0)){$=M}else{G=m+(M*36|0)+24|0;if((c[G>>2]|0)>(b|0)){c[G>>2]=b}$=M+1|0}b=I+1|0;if((b|0)<(c[s>>2]|0)){M=$;I=b}else{aa=$;break}}}else{aa=0}c[s>>2]=aa}}while(0);if((c[a+264>>2]|0)==0){if((c[o>>2]|0)<8){q=135}}else{q=135}do{if((q|0)==135){if((c[a+212>>2]|0)!=0){break}c[a+216>>2]=1}}while(0);do{if(k){c[j+20>>2]=0;ba=a+216|0}else{q=a+216|0;o=j+20|0;if((c[q>>2]|0)==0){c[o>>2]=2;ba=q;break}else{c[o>>2]=1;ba=q;break}}}while(0);c[j+32>>2]=0;c[j+24>>2]=0;k=c[a+200>>2]|0;if((c[ba>>2]|0)==0){c[j+28>>2]=k;i=d;return}else{c[j+28>>2]=k<<1;i=d;return}}function tW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=c[a+388>>2]|0;d=b+20|0;e=c[d>>2]|0;a:do{if((e|0)==1){wW(a);xW(a);do{if((c[a+360>>2]|0)==0){if((c[a+368>>2]|0)==0){break}c[d>>2]=2;f=b+24|0;c[f>>2]=(c[f>>2]|0)+1;g=11;break a}}while(0);hk[c[c[a+420>>2]>>2]&255](a,1);hk[c[c[a+400>>2]>>2]&255](a,2);c[b+12>>2]=0}else if((e|0)==0){wW(a);xW(a);if((c[a+208>>2]|0)==0){vk[c[c[a+408>>2]>>2]&511](a);vk[c[c[a+412>>2]>>2]&511](a);hk[c[c[a+396>>2]>>2]&255](a,0)}vk[c[c[a+416>>2]>>2]&511](a);f=a+216|0;hk[c[c[a+420>>2]>>2]&255](a,c[f>>2]|0);hk[c[c[a+400>>2]>>2]&255](a,(c[b+28>>2]|0)>1?3:0);hk[c[c[a+392>>2]>>2]&255](a,0);h=b+12|0;if((c[f>>2]|0)==0){c[h>>2]=1;break}else{c[h>>2]=0;break}}else if((e|0)==2){g=11}else{h=a|0;c[(c[h>>2]|0)+20>>2]=49;vk[c[c[h>>2]>>2]&511](a)}}while(0);if((g|0)==11){if((c[a+216>>2]|0)==0){wW(a);xW(a)}hk[c[c[a+420>>2]>>2]&255](a,0);hk[c[c[a+400>>2]>>2]&255](a,2);g=a+404|0;if((c[b+32>>2]|0)==0){vk[c[(c[g>>2]|0)+4>>2]&511](a)}vk[c[(c[g>>2]|0)+8>>2]&511](a);c[b+12>>2]=0}g=c[b+24>>2]|0;e=b+28|0;c[b+16>>2]=(g|0)==((c[e>>2]|0)-1|0);b=a+8|0;a=c[b>>2]|0;if((a|0)==0){return}c[a+12>>2]=g;c[(c[b>>2]|0)+16>>2]=c[e>>2];return}function uW(a){a=a|0;var b=0;c[(c[a+388>>2]|0)+12>>2]=0;b=a+404|0;vk[c[(c[b>>2]|0)+4>>2]&511](a);vk[c[(c[b>>2]|0)+8>>2]&511](a);return}function vW(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+388>>2]|0;vk[c[(c[a+420>>2]|0)+8>>2]&511](a);d=b+20|0;e=c[d>>2]|0;do{if((e|0)==2){if((c[a+216>>2]|0)!=0){c[d>>2]=1}f=b+32|0;c[f>>2]=(c[f>>2]|0)+1}else if((e|0)==1){c[d>>2]=2}else if((e|0)==0){c[d>>2]=2;if((c[a+216>>2]|0)!=0){break}f=b+32|0;c[f>>2]=(c[f>>2]|0)+1}}while(0);a=b+24|0;c[a>>2]=(c[a>>2]|0)+1;return}function wW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=c[a+204>>2]|0;do{if((b|0)==0){d=a+76|0;e=c[d>>2]|0;if((e|0)>4){f=a|0;c[(c[f>>2]|0)+20>>2]=27;c[(c[f>>2]|0)+24>>2]=c[d>>2];c[(c[f>>2]|0)+28>>2]=4;vk[c[c[f>>2]>>2]&511](a);g=c[d>>2]|0}else{g=e}c[a+288>>2]=g;if((g|0)<=0){break}e=a+84|0;f=0;do{c[a+292+(f<<2)>>2]=(c[e>>2]|0)+(f*88|0);f=f+1|0;}while((f|0)<(c[d>>2]|0))}else{d=c[(c[a+388>>2]|0)+32>>2]|0;f=b+(d*36|0)|0;c[a+288>>2]=c[f>>2];if((c[f>>2]|0)>0){e=a+84|0;h=0;do{c[a+292+(h<<2)>>2]=(c[e>>2]|0)+((c[b+(d*36|0)+4+(h<<2)>>2]|0)*88|0);h=h+1|0;}while((h|0)<(c[f>>2]|0))}if((c[a+264>>2]|0)==0){break}c[a+360>>2]=c[b+(d*36|0)+20>>2];c[a+364>>2]=c[b+(d*36|0)+24>>2];c[a+368>>2]=c[b+(d*36|0)+28>>2];c[a+372>>2]=c[b+(d*36|0)+32>>2];return}}while(0);c[a+360>>2]=0;b=c[a+376>>2]|0;c[a+364>>2]=(da(b,b)|0)-1;c[a+368>>2]=0;c[a+372>>2]=0;return}function xW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;b=a+288|0;d=c[b>>2]|0;do{if((d|0)==1){e=c[a+292>>2]|0;c[a+308>>2]=c[e+28>>2];f=e+32|0;c[a+312>>2]=c[f>>2];c[e+56>>2]=1;c[e+60>>2]=1;c[e+64>>2]=1;c[e+68>>2]=c[e+36>>2];c[e+72>>2]=1;g=c[e+12>>2]|0;h=((c[f>>2]|0)>>>0)%(g>>>0)|0;c[e+76>>2]=(h|0)==0?g:h;c[a+316>>2]=1;c[a+320>>2]=0}else{if((d-1|0)>>>0>3>>>0){h=a|0;c[(c[h>>2]|0)+20>>2]=27;c[(c[h>>2]|0)+24>>2]=c[b>>2];c[(c[h>>2]|0)+28>>2]=4;vk[c[c[h>>2]>>2]&511](a)}h=a+376|0;c[a+308>>2]=O_(c[a+64>>2]|0,da(c[h>>2]|0,c[a+268>>2]|0)|0)|0;c[a+312>>2]=O_(c[a+68>>2]|0,da(c[h>>2]|0,c[a+272>>2]|0)|0)|0;h=a+316|0;c[h>>2]=0;if((c[b>>2]|0)<=0){break}g=a|0;e=a;f=0;do{i=c[a+292+(f<<2)>>2]|0;j=c[i+8>>2]|0;c[i+56>>2]=j;k=c[i+12>>2]|0;c[i+60>>2]=k;l=da(j,k)|0;c[i+64>>2]=l;c[i+68>>2]=da(c[i+36>>2]|0,j)|0;m=((c[i+28>>2]|0)>>>0)%(j>>>0)|0;c[i+72>>2]=(m|0)==0?j:m;m=((c[i+32>>2]|0)>>>0)%(k>>>0)|0;c[i+76>>2]=(m|0)==0?k:m;if(((c[h>>2]|0)+l|0)>10){c[(c[g>>2]|0)+20>>2]=14;vk[c[c[g>>2]>>2]&511](e)}if((l|0)>0){m=l;do{m=m-1|0;l=c[h>>2]|0;c[h>>2]=l+1;c[a+320+(l<<2)>>2]=f;}while((m|0)>0)}f=f+1|0;}while((f|0)<(c[b>>2]|0))}}while(0);b=c[a+240>>2]|0;if((b|0)<=0){return}d=da(c[a+308>>2]|0,b)|0;c[a+236>>2]=(d|0)<65535?d:65535;return}function yW(a){a=a|0;var b=0;b=c[a+4>>2]|0;if((b|0)==0){return}hk[c[b+36>>2]&255](a,1);b=a+20|0;if((c[a+16>>2]|0)==0){c[b>>2]=100;return}else{c[b>>2]=200;c[a+308>>2]=0;return}}function zW(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[b>>2]|0;if((d|0)!=0){vk[c[d+40>>2]&511](a)}c[b>>2]=0;c[a+20>>2]=0;return}function AW(a){a=a|0;var b=0;b=rk[c[c[a+4>>2]>>2]&63](a,0,132)|0;c[b+128>>2]=0;return b|0}function BW(a){a=a|0;var b=0;b=rk[c[c[a+4>>2]>>2]&63](a,0,280)|0;c[b+276>>2]=0;return b|0}function CW(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=a+20|0;if((c[h>>2]|0)!=100){i=a|0;c[(c[i>>2]|0)+20>>2]=21;c[(c[i>>2]|0)+24>>2]=c[h>>2];vk[c[c[i>>2]>>2]&511](a)}if(d>>>0>3>>>0){i=a|0;c[(c[i>>2]|0)+20>>2]=32;c[(c[i>>2]|0)+24>>2]=d;vk[c[c[i>>2]>>2]&511](a)}i=a+88+(d<<2)|0;if((c[i>>2]|0)==0){c[i>>2]=AW(a)|0}if((g|0)==0){g=0;do{a=((da(c[e+(g<<2)>>2]|0,f)|0)+50|0)/100|0;d=(a|0)<1?1:a;b[(c[i>>2]|0)+(g<<1)>>1]=(d|0)>32767?32767:d&65535;g=g+1|0;}while((g|0)<64);j=c[i>>2]|0;k=j+128|0;c[k>>2]=0;return}else{g=0;do{d=((da(c[e+(g<<2)>>2]|0,f)|0)+50|0)/100|0;a=(d|0)<1?1:d;d=(a|0)>32767?32767:a;b[(c[i>>2]|0)+(g<<1)>>1]=(d|0)>255?255:d&65535;g=g+1|0;}while((g|0)<64);j=c[i>>2]|0;k=j+128|0;c[k>>2]=0;return}}function DW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=(b|0)<1?1:b;b=(d|0)>100?100:d;if((b|0)<50){e=5e3/(b|0)|0}else{e=200-(b<<1)|0}CW(a,0,3192,e,c);CW(a,1,3912,e,c);return}function EW(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=d+20|0;if((c[e>>2]|0)!=100){f=d|0;c[(c[f>>2]|0)+20>>2]=21;c[(c[f>>2]|0)+24>>2]=c[e>>2];vk[c[c[f>>2]>>2]&511](d)}f=d+84|0;if((c[f>>2]|0)==0){c[f>>2]=rk[c[c[d+4>>2]>>2]&63](d,0,880)|0}c[d+56>>2]=1;c[d+60>>2]=1;f=d+72|0;c[f>>2]=8;if((c[e>>2]|0)!=100){g=d|0;c[(c[g>>2]|0)+20>>2]=21;c[(c[g>>2]|0)+24>>2]=c[e>>2];vk[c[c[g>>2]>>2]&511](d)}g=d+88|0;h=c[g>>2]|0;if((h|0)==0){i=AW(d)|0;c[g>>2]=i;j=0;k=i}else{j=0;k=h}do{h=(((c[3192+(j<<2)>>2]|0)*50|0)+50|0)/100|0;i=(h|0)<1?1:h;h=(i|0)>32767?32767:i;b[k+(j<<1)>>1]=(h|0)>255?255:h&65535;j=j+1|0;k=c[g>>2]|0}while((j|0)<64);c[k+128>>2]=0;if((c[e>>2]|0)!=100){k=d|0;c[(c[k>>2]|0)+20>>2]=21;c[(c[k>>2]|0)+24>>2]=c[e>>2];vk[c[c[k>>2]>>2]&511](d)}k=d+92|0;e=c[k>>2]|0;if((e|0)==0){j=AW(d)|0;c[k>>2]=j;l=0;m=j}else{l=0;m=e}do{e=(((c[3912+(l<<2)>>2]|0)*50|0)+50|0)/100|0;j=(e|0)<1?1:e;e=(j|0)>32767?32767:j;b[m+(l<<1)>>1]=(e|0)>255?255:e&65535;l=l+1|0;m=c[k>>2]|0}while((l|0)<64);c[m+128>>2]=0;GW(d,d+120|0,3816,3448);GW(d,d+136|0,3864,3480);GW(d,d+124|0,3840,3464);GW(d,d+140|0,3888,3648);a[d+152|0]=0;a[d+168|0]=1;a[d+184|0]=5;a[d+153|0]=0;a[d+169|0]=1;a[d+185|0]=5;a[d+154|0]=0;a[d+170|0]=1;a[d+186|0]=5;a[d+155|0]=0;a[d+171|0]=1;a[d+187|0]=5;a[d+156|0]=0;a[d+172|0]=1;a[d+188|0]=5;a[d+157|0]=0;a[d+173|0]=1;a[d+189|0]=5;a[d+158|0]=0;a[d+174|0]=1;a[d+190|0]=5;a[d+159|0]=0;a[d+175|0]=1;a[d+191|0]=5;a[d+160|0]=0;a[d+176|0]=1;a[d+192|0]=5;a[d+161|0]=0;a[d+177|0]=1;a[d+193|0]=5;a[d+162|0]=0;a[d+178|0]=1;a[d+194|0]=5;a[d+163|0]=0;a[d+179|0]=1;a[d+195|0]=5;a[d+164|0]=0;a[d+180|0]=1;a[d+196|0]=5;a[d+165|0]=0;a[d+181|0]=1;a[d+197|0]=5;a[d+166|0]=0;a[d+182|0]=1;a[d+198|0]=5;a[d+167|0]=0;a[d+183|0]=1;a[d+199|0]=5;n$(d+200|0,0,16)|0;c[d+216>>2]=(c[f>>2]|0)>8;c[d+220>>2]=0;c[d+224>>2]=1;n$(d+228|0,0,16)|0;a[d+248|0]=1;a[d+249|0]=1;a[d+250|0]=0;b[d+252>>1]=1;b[d+254>>1]=1;FW(d);return}function FW(a){a=a|0;var b=0,d=0,e=0,f=0;switch(c[a+40>>2]|0){case 3:{b=a+20|0;if((c[b>>2]|0)!=100){d=a|0;c[(c[d>>2]|0)+20>>2]=21;c[(c[d>>2]|0)+24>>2]=c[b>>2];vk[c[c[d>>2]>>2]&511](a)}c[a+80>>2]=3;c[a+256>>2]=0;c[a+244>>2]=1;c[a+76>>2]=3;d=a+84|0;b=c[d>>2]|0;c[b>>2]=1;c[b+8>>2]=2;c[b+12>>2]=2;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;b=c[d>>2]|0;c[b+88>>2]=2;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=1;c[b+108>>2]=1;c[b+112>>2]=1;b=c[d>>2]|0;c[b+176>>2]=3;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=1;c[b+196>>2]=1;c[b+200>>2]=1;return};case 5:{b=a+20|0;if((c[b>>2]|0)!=100){d=a|0;c[(c[d>>2]|0)+20>>2]=21;c[(c[d>>2]|0)+24>>2]=c[b>>2];vk[c[c[d>>2]>>2]&511](a)}c[a+80>>2]=5;c[a+244>>2]=0;c[a+256>>2]=1;c[a+76>>2]=4;d=a+84|0;b=c[d>>2]|0;c[b>>2]=1;c[b+8>>2]=2;c[b+12>>2]=2;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;b=c[d>>2]|0;c[b+88>>2]=2;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=1;c[b+108>>2]=1;c[b+112>>2]=1;b=c[d>>2]|0;c[b+176>>2]=3;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=1;c[b+196>>2]=1;c[b+200>>2]=1;b=c[d>>2]|0;c[b+264>>2]=4;c[b+272>>2]=2;c[b+276>>2]=2;c[b+280>>2]=0;c[b+284>>2]=0;c[b+288>>2]=0;return};case 1:{b=a+20|0;if((c[b>>2]|0)!=100){d=a|0;c[(c[d>>2]|0)+20>>2]=21;c[(c[d>>2]|0)+24>>2]=c[b>>2];vk[c[c[d>>2]>>2]&511](a)}c[a+80>>2]=1;c[a+256>>2]=0;c[a+244>>2]=1;c[a+76>>2]=1;d=c[a+84>>2]|0;c[d>>2]=1;c[d+8>>2]=1;c[d+12>>2]=1;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;return};case 0:{d=a+20|0;if((c[d>>2]|0)!=100){b=a|0;c[(c[b>>2]|0)+20>>2]=21;c[(c[b>>2]|0)+24>>2]=c[d>>2];vk[c[c[b>>2]>>2]&511](a)}c[a+80>>2]=0;c[a+244>>2]=0;c[a+256>>2]=0;b=c[a+36>>2]|0;d=a+76|0;c[d>>2]=b;if((b-1|0)>>>0>9>>>0){e=a|0;c[(c[e>>2]|0)+20>>2]=27;c[(c[e>>2]|0)+24>>2]=c[d>>2];c[(c[e>>2]|0)+28>>2]=10;vk[c[c[e>>2]>>2]&511](a);f=c[d>>2]|0}else{f=b}if((f|0)<=0){return}f=a+84|0;b=0;do{e=c[f>>2]|0;c[e+(b*88|0)>>2]=b;c[e+(b*88|0)+8>>2]=1;c[e+(b*88|0)+12>>2]=1;c[e+(b*88|0)+16>>2]=0;c[e+(b*88|0)+20>>2]=0;c[e+(b*88|0)+24>>2]=0;b=b+1|0;}while((b|0)<(c[d>>2]|0));return};case 4:{d=a+20|0;if((c[d>>2]|0)!=100){b=a|0;c[(c[b>>2]|0)+20>>2]=21;c[(c[b>>2]|0)+24>>2]=c[d>>2];vk[c[c[b>>2]>>2]&511](a)}c[a+80>>2]=4;c[a+244>>2]=0;c[a+256>>2]=1;c[a+76>>2]=4;b=a+84|0;d=c[b>>2]|0;c[d>>2]=67;c[d+8>>2]=1;c[d+12>>2]=1;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;d=c[b>>2]|0;c[d+88>>2]=77;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;d=c[b>>2]|0;c[d+176>>2]=89;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=0;c[d+196>>2]=0;c[d+200>>2]=0;d=c[b>>2]|0;c[d+264>>2]=75;c[d+272>>2]=1;c[d+276>>2]=1;c[d+280>>2]=0;c[d+284>>2]=0;c[d+288>>2]=0;return};case 2:{d=a+20|0;if((c[d>>2]|0)!=100){b=a|0;c[(c[b>>2]|0)+20>>2]=21;c[(c[b>>2]|0)+24>>2]=c[d>>2];vk[c[c[b>>2]>>2]&511](a)}c[a+80>>2]=3;c[a+256>>2]=0;c[a+244>>2]=1;c[a+76>>2]=3;b=a+84|0;d=c[b>>2]|0;c[d>>2]=1;c[d+8>>2]=2;c[d+12>>2]=2;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;d=c[b>>2]|0;c[d+88>>2]=2;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=1;c[d+108>>2]=1;c[d+112>>2]=1;d=c[b>>2]|0;c[d+176>>2]=3;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=1;c[d+196>>2]=1;c[d+200>>2]=1;return};default:{d=a|0;c[(c[d>>2]|0)+20>>2]=10;vk[c[c[d>>2]>>2]&511](a);return}}}function GW(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[b>>2]|0;if((g|0)==0){h=BW(a)|0;c[b>>2]=h;i=h}else{i=g}m$(i|0,e|0,17)|0;i=(d[e+16|0]|0)+((d[e+15|0]|0)+((d[e+14|0]|0)+((d[e+13|0]|0)+((d[e+12|0]|0)+((d[e+11|0]|0)+((d[e+10|0]|0)+((d[e+9|0]|0)+((d[e+8|0]|0)+((d[e+7|0]|0)+((d[e+6|0]|0)+((d[e+5|0]|0)+((d[e+4|0]|0)+((d[e+3|0]|0)+((d[e+2|0]|0)+(d[e+1|0]|0)))))))))))))))|0;if(!((i-1|0)>>>0>255>>>0)){j=c[b>>2]|0;k=j+17|0;m$(k|0,f|0,i)|0;l=c[b>>2]|0;m=l+276|0;c[m>>2]=0;return}e=a|0;c[(c[e>>2]|0)+20>>2]=9;vk[c[c[e>>2]>>2]&511](a);j=c[b>>2]|0;k=j+17|0;m$(k|0,f|0,i)|0;l=c[b>>2]|0;m=l+276|0;c[m>>2]=0;return}function HW(a,b){a=a|0;b=b|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;if((b|0)==0){d=a}else{b=a|0;c[(c[b>>2]|0)+20>>2]=3;e=a;vk[c[c[b>>2]>>2]&511](e);d=e}e=a+4|0;b=rk[c[c[e>>2]>>2]&63](d,1,64)|0;f=a+396|0;c[f>>2]=b;c[b>>2]=148;g=b+4|0;if((c[(c[a+412>>2]|0)+8>>2]|0)==0){c[g>>2]=8;h=a+76|0;if((c[h>>2]|0)<=0){return}i=a+276|0;j=a+268|0;k=a+272|0;l=b+8|0;b=0;m=c[a+84>>2]|0;while(1){n=da(c[i>>2]|0,c[m+28>>2]|0)|0;o=da(n,c[j>>2]|0)|0;c[l+(b<<2)>>2]=Wk[c[(c[e>>2]|0)+8>>2]&63](d,1,(o|0)/(c[m+8>>2]|0)|0,c[k>>2]|0)|0;o=b+1|0;if((o|0)<(c[h>>2]|0)){b=o;m=m+88|0}else{break}}return}c[g>>2]=10;g=c[f>>2]|0;f=c[a+272>>2]|0;m=a+76|0;b=da(f*20|0,c[m>>2]|0)|0;h=rk[c[c[e>>2]>>2]&63](d,1,b)|0;b=c[a+84>>2]|0;if((c[m>>2]|0)<=0){return}k=a+276|0;l=a+268|0;a=f*3|0;j=f*12|0;i=g+8|0;g=f*5|0;o=f<<1;n=f<<2;if((f|0)>0){p=b;q=0;r=h}else{s=b;b=0;t=h;while(1){h=da(c[k>>2]|0,c[s+28>>2]|0)|0;u=da(h,c[l>>2]|0)|0;h=t+(f<<2)|0;m$(h|0,Wk[c[(c[e>>2]|0)+8>>2]&63](d,1,(u|0)/(c[s+8>>2]|0)|0,a)|0,j)|0;c[i+(b<<2)>>2]=h;h=b+1|0;if((h|0)<(c[m>>2]|0)){s=s+88|0;b=h;t=t+(g<<2)|0}else{break}}return}while(1){t=da(c[k>>2]|0,c[p+28>>2]|0)|0;b=da(t,c[l>>2]|0)|0;t=Wk[c[(c[e>>2]|0)+8>>2]&63](d,1,(b|0)/(c[p+8>>2]|0)|0,a)|0;b=r+(f<<2)|0;m$(b|0,t|0,j)|0;s=0;do{c[r+(s<<2)>>2]=c[t+(s+o<<2)>>2];c[r+(s+n<<2)>>2]=c[t+(s<<2)>>2];s=s+1|0;}while((s|0)<(f|0));c[i+(q<<2)>>2]=b;s=q+1|0;if((s|0)<(c[m>>2]|0)){p=p+88|0;q=s;r=r+(g<<2)|0}else{break}}return}function IW(a,b){a=a|0;b=b|0;var d=0;d=c[a+396>>2]|0;if((b|0)!=0){b=a|0;c[(c[b>>2]|0)+20>>2]=3;vk[c[c[b>>2]>>2]&511](a)}c[d+48>>2]=c[a+32>>2];c[d+52>>2]=0;c[d+56>>2]=0;c[d+60>>2]=c[a+272>>2]<<1;return}function JW(a,b,d,e,f,g,h){a=a|0;b=b|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,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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;i=c[a+396>>2]|0;j=a+272|0;k=(c[j>>2]|0)*3|0;l=i+48|0;m=l;if(!((c[g>>2]|0)>>>0>>0)){return}n=i+60|0;o=n;p=i+52|0;q=p;r=a+408|0;s=i+8|0;t=s;u=s;s=a+32|0;v=l|0;l=a+76|0;w=a+28|0;x=a+412|0;y=i+56|0;i=y;z=y|0;a:while(1){y=c[d>>2]|0;do{if(y>>>0>>0){A=e-y|0;B=c[q>>2]|0;C=(c[o>>2]|0)-B|0;D=C>>>0>>0?C:A;fk[c[(c[r>>2]|0)+4>>2]&127](a,b+(y<<2)|0,u,B,D);do{if((c[m>>2]|0)==(c[s>>2]|0)){B=c[l>>2]|0;if((B|0)<=0){break}A=0;C=c[j>>2]|0;E=B;while(1){if((C|0)<1){F=C;G=E}else{B=t+(A<<2)|0;H=1;while(1){I=c[B>>2]|0;Q_(I,0,I,-H|0,1,c[w>>2]|0);J=c[j>>2]|0;if((H|0)<(J|0)){H=H+1|0}else{break}}F=J;G=c[l>>2]|0}H=A+1|0;if((H|0)<(G|0)){A=H;C=F;E=G}else{break}}}}while(0);c[d>>2]=(c[d>>2]|0)+D;E=(c[q>>2]|0)+D|0;c[p>>2]=E;c[v>>2]=(c[m>>2]|0)-D;K=E;L=c[o>>2]|0;M=24}else{if((c[m>>2]|0)!=0){M=29;break a}E=c[q>>2]|0;C=c[o>>2]|0;if((E|0)>=(C|0)){K=E;L=C;M=24;break}A=c[l>>2]|0;if((A|0)>0){H=0;B=A;A=E;E=C;while(1){I=c[t+(H<<2)>>2]|0;N=c[w>>2]|0;if((A|0)<(E|0)){O=A-1|0;P=A;do{Q_(I,O,I,P,1,N);P=P+1|0;}while((P|0)<(E|0));Q=c[l>>2]|0}else{Q=B}P=H+1|0;if((P|0)>=(Q|0)){break}H=P;B=Q;A=c[q>>2]|0;E=c[o>>2]|0}R=c[o>>2]|0}else{R=C}c[p>>2]=R;M=25}}while(0);if((M|0)==24){M=0;if((K|0)==(L|0)){M=25}}if((M|0)==25){M=0;fk[c[(c[x>>2]|0)+4>>2]&127](a,u,c[i>>2]|0,f,c[g>>2]|0);c[g>>2]=(c[g>>2]|0)+1;y=(c[i>>2]|0)+(c[j>>2]|0)|0;c[z>>2]=(y|0)<(k|0)?y:0;y=c[q>>2]|0;if((y|0)<(k|0)){S=y}else{c[p>>2]=0;S=0}c[n>>2]=(c[j>>2]|0)+S}if(!((c[g>>2]|0)>>>0>>0)){M=29;break}}if((M|0)==29){return}}function KW(a,b,d,e,f,g,h){a=a|0;b=b|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,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,J=0,K=0,L=0;i=c[a+396>>2]|0;j=c[d>>2]|0;if(!(j>>>0>>0)){return}k=a+272|0;l=i+52|0;m=l;n=a+408|0;o=i+8|0;p=o;q=o;o=i+48|0;i=o;r=o|0;o=a+76|0;s=a+28|0;t=a+412|0;u=j;while(1){if(!((c[g>>2]|0)>>>0>>0)){v=29;break}j=e-u|0;w=c[m>>2]|0;x=(c[k>>2]|0)-w|0;y=x>>>0>>0?x:j;fk[c[(c[n>>2]|0)+4>>2]&127](a,b+(u<<2)|0,q,w,y);c[d>>2]=(c[d>>2]|0)+y;w=(c[m>>2]|0)+y|0;c[l>>2]=w;j=c[i>>2]|0;c[r>>2]=j-y;do{if((j|0)==(y|0)){x=c[k>>2]|0;if((w|0)>=(x|0)){z=w;break}A=c[o>>2]|0;if((A|0)>0){B=0;C=A;A=w;D=x;while(1){E=c[p+(B<<2)>>2]|0;F=c[s>>2]|0;if((A|0)<(D|0)){G=A-1|0;H=A;do{Q_(E,G,E,H,1,F);H=H+1|0;}while((H|0)<(D|0));I=c[o>>2]|0}else{I=C}H=B+1|0;if((H|0)>=(I|0)){break}B=H;C=I;A=c[m>>2]|0;D=c[k>>2]|0}J=c[k>>2]|0}else{J=x}c[l>>2]=J;z=J}else{z=w}}while(0);if((z|0)==(c[k>>2]|0)){fk[c[(c[t>>2]|0)+4>>2]&127](a,q,0,f,c[g>>2]|0);c[l>>2]=0;c[g>>2]=(c[g>>2]|0)+1}if((c[i>>2]|0)==0){K=c[g>>2]|0;if(K>>>0>>0){v=20;break}}w=c[d>>2]|0;if(w>>>0>>0){u=w}else{v=29;break}}if((v|0)==20){u=c[o>>2]|0;a:do{if((u|0)>0){e=a+280|0;d=0;i=c[a+84>>2]|0;l=u;q=K;while(1){t=da(c[i+40>>2]|0,c[i+12>>2]|0)|0;k=(t|0)/(c[e>>2]|0)|0;t=c[f+(d<<2)>>2]|0;z=da(c[i+36>>2]|0,c[i+28>>2]|0)|0;J=da(q,k)|0;m=da(k,h)|0;if((J|0)<(m|0)){k=J-1|0;I=J;do{Q_(t,k,t,I,1,z);I=I+1|0;}while((I|0)<(m|0));L=c[o>>2]|0}else{L=l}m=d+1|0;if((m|0)>=(L|0)){break a}d=m;i=i+88|0;l=L;q=c[g>>2]|0}}}while(0);c[g>>2]=h;return}else if((v|0)==29){return}}function LW(b){b=b|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;d=b;e=rk[c[c[b+4>>2]>>2]&63](d,1,112)|0;c[b+412>>2]=e;c[e>>2]=318;c[e+4>>2]=84;f=e+8|0;c[f>>2]=0;if((c[b+220>>2]|0)!=0){g=b|0;c[(c[g>>2]|0)+20>>2]=26;vk[c[c[g>>2]>>2]&511](d)}g=b+76|0;if((c[g>>2]|0)<=0){return}h=b+276|0;i=b+280|0;j=b+268|0;k=b+272|0;l=e+52|0;m=b+228|0;n=e+12|0;o=b|0;p=1;q=c[b+84>>2]|0;r=0;while(1){s=da(c[q+36>>2]|0,c[q+8>>2]|0)|0;t=(s|0)/(c[h>>2]|0)|0;s=da(c[q+40>>2]|0,c[q+12>>2]|0)|0;u=(s|0)/(c[i>>2]|0)|0;s=c[j>>2]|0;v=c[k>>2]|0;c[l+(r<<2)>>2]=u;w=(v|0)==(u|0);a:do{if((s|0)==(t|0)&w){x=n+(r<<2)|0;if((c[m>>2]|0)==0){c[x>>2]=18;y=p;break}else{c[x>>2]=110;c[f>>2]=1;y=p;break}}else{x=(s|0)==(t<<1|0);if(x&w){c[n+(r<<2)>>2]=142;y=0;break}do{if(x){if((v|0)!=(u<<1|0)){break}z=n+(r<<2)|0;if((c[m>>2]|0)==0){c[z>>2]=100;y=p;break a}else{c[z>>2]=140;c[f>>2]=1;y=p;break a}}}while(0);do{if(((s|0)%(t|0)|0|0)==0){if(((v|0)%(u|0)|0|0)!=0){break}c[n+(r<<2)>>2]=32;a[e+(r+92)|0]=(s|0)/(t|0)|0;a[e+(r+102)|0]=(v|0)/(u|0)|0;y=0;break a}}while(0);c[(c[o>>2]|0)+20>>2]=39;vk[c[c[o>>2]>>2]&511](d);y=p}}while(0);u=r+1|0;if((u|0)<(c[g>>2]|0)){p=y;q=q+88|0;r=u}else{break}}if(!((c[m>>2]|0)!=0&(y|0)==0)){return}y=b|0;c[(c[y>>2]|0)+20>>2]=101;hk[c[(c[y>>2]|0)+4>>2]&255](d,0);return}function MW(a){a=a|0;return}function NW(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;g=c[a+412>>2]|0;h=a+76|0;if((c[h>>2]|0)<=0){return}i=g+52|0;j=g+12|0;g=c[a+84>>2]|0;k=0;while(1){l=(c[e+(k<<2)>>2]|0)+((da(c[i+(k<<2)>>2]|0,f)|0)<<2)|0;Yk[c[j+(k<<2)>>2]&255](a,g,(c[b+(k<<2)>>2]|0)+(d<<2)|0,l);l=k+1|0;if((l|0)<(c[h>>2]|0)){g=g+88|0;k=l}else{break}}return}function OW(b,e,f,g){b=b|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;h=da(c[e+36>>2]|0,c[e+28>>2]|0)|0;e=b+272|0;i=c[e>>2]|0;j=i+2|0;k=c[b+28>>2]|0;l=h-k|0;if((l|0)>0&(j|0)>0){m=k-1|0;n=0;do{o=c[f+(n-1<<2)>>2]|0;n$(o+k|0,a[o+m|0]|0,l|0)|0;n=n+1|0;}while((n|0)<(j|0));p=c[e>>2]|0}else{p=i}i=c[b+228>>2]|0;b=65536-(i<<9)|0;j=i<<6;if((p|0)<=0){return}p=h-2|0;if((p|0)==0){i=0;do{n=c[g+(i<<2)>>2]|0;l=c[f+(i<<2)>>2]|0;m=c[f+(i-1<<2)>>2]|0;i=i+1|0;k=c[f+(i<<2)>>2]|0;o=(d[k]|0)+(d[m]|0)|0;q=d[l]|0;r=o+q|0;s=l+1|0;l=(d[k+1|0]|0)+(d[m+1|0]|0)+(d[s]|0)|0;a[n]=((da(q,b)|0)+32768+(da(r+o+l|0,j)|0)|0)>>>16;o=d[s]|0;a[n+1|0]=((da(o,b)|0)+32768+(da(r-o+(l<<1)|0,j)|0)|0)>>>16;}while((i|0)<(c[e>>2]|0));return}i=h-1|0;h=0;do{l=c[g+(h<<2)>>2]|0;o=c[f+(h<<2)>>2]|0;r=c[f+(h-1<<2)>>2]|0;h=h+1|0;n=c[f+(h<<2)>>2]|0;s=r+1|0;q=n+1|0;m=(d[n]|0)+(d[r]|0)|0;r=d[o]|0;n=m+r|0;k=o+1|0;t=(d[q]|0)+(d[s]|0)+(d[k]|0)|0;a[l]=((da(r,b)|0)+32768+(da(n+m+t|0,j)|0)|0)>>>16;m=l+i|0;r=k;k=s;s=q;q=p;u=t;t=n;n=l;while(1){l=n+1|0;v=r+1|0;w=d[r]|0;x=k+1|0;y=s+1|0;z=(d[y]|0)+(d[x]|0)+(d[v]|0)|0;a[l]=((da(w,b)|0)+32768+(da(t+u-w+z|0,j)|0)|0)>>>16;w=q-1|0;if((w|0)==0){break}else{r=v;k=x;s=y;q=w;t=u;u=z;n=l}}n=d[o+i|0]|0;a[m]=((da(n,b)|0)+32768+(da(u-n+(z<<1)|0,j)|0)|0)>>>16;}while((h|0)<(c[e>>2]|0));return}function PW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=b+272|0;h=b+28|0;Q_(e,0,f,0,c[g>>2]|0,c[h>>2]|0);e=c[g>>2]|0;g=c[h>>2]|0;h=(da(c[d+36>>2]|0,c[d+28>>2]|0)|0)-g|0;if(!((h|0)>0&(e|0)>0)){return}d=g-1|0;b=0;do{i=c[f+(b<<2)>>2]|0;n$(i+g|0,a[i+d|0]|0,h|0)|0;b=b+1|0;}while((b|0)<(e|0));return}function QW(b,e,f,g){b=b|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;h=da(c[e+36>>2]|0,c[e+28>>2]|0)|0;e=b+272|0;i=c[e>>2]|0;j=c[b+28>>2]|0;b=(h<<1)-j|0;if((b|0)>0&(i|0)>0){k=j-1|0;l=0;do{m=c[f+(l<<2)>>2]|0;n$(m+j|0,a[m+k|0]|0,b|0)|0;l=l+1|0;}while((l|0)<(i|0));n=c[e>>2]|0}else{n=i}if((n|0)<=0){return}if((h|0)==0){i=0;do{i=i+1|0;}while((i|0)<(n|0));return}else{o=0}do{n=0;i=c[f+(o<<2)>>2]|0;l=c[g+(o<<2)>>2]|0;b=0;while(1){a[l]=((d[i]|0)+b+(d[i+1|0]|0)|0)>>>1;k=n+1|0;if(k>>>0>>0){n=k;i=i+2|0;l=l+1|0;b=b^1}else{break}}o=o+1|0;}while((o|0)<(c[e>>2]|0));return}function RW(b,e,f,g){b=b|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,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;h=da(c[e+36>>2]|0,c[e+28>>2]|0)|0;e=b+272|0;i=c[e>>2]|0;j=i+2|0;k=c[b+28>>2]|0;l=(h<<1)-k|0;if((l|0)>0&(j|0)>0){m=k-1|0;n=0;do{o=c[f+(n-1<<2)>>2]|0;n$(o+k|0,a[o+m|0]|0,l|0)|0;n=n+1|0;}while((n|0)<(j|0));p=c[e>>2]|0}else{p=i}i=c[b+228>>2]|0;b=(i*-80|0)+16384|0;j=i<<4;if((p|0)<=0){return}p=h-2|0;i=h-1|0;n=h<<1;h=0;l=0;while(1){m=c[g+(h<<2)>>2]|0;k=c[f+(l<<2)>>2]|0;o=c[f+((l|1)<<2)>>2]|0;q=c[f+(l-1<<2)>>2]|0;r=l+2|0;s=c[f+(r<<2)>>2]|0;t=d[k]|0;u=d[o]|0;v=d[q]|0;w=d[s]|0;x=k+2|0;y=o+2|0;z=q+2|0;A=s+2|0;a[m]=((da((d[k+1|0]|0)+t+u+(d[o+1|0]|0)|0,b)|0)+32768+(da(w+v+(d[z]|0)+(d[A]|0)+(u+t+v+(d[q+1|0]|0)+w+(d[s+1|0]|0)+(d[x]|0)+(d[y]|0)<<1)|0,j)|0)|0)>>>16;w=m+i|0;v=m;m=A;A=z;z=y;y=x;x=p;while(1){t=v+1|0;B=d[y+1|0]|0;C=d[z+1|0]|0;D=B+(d[y]|0)+(d[z]|0)+C|0;E=d[A+1|0]|0;F=d[m+1|0]|0;G=E+(d[A]|0)+(d[m]|0)+F+(d[y-1|0]|0)|0;if((x|0)==0){break}u=y+2|0;k=z+2|0;H=A+2|0;I=m+2|0;a[t]=((da(D,b)|0)+32768+(da((d[H]|0)+(d[A-1|0]|0)+((d[u]|0)+G+(d[z-1|0]|0)+(d[k]|0)<<1)+(d[m-1|0]|0)+(d[I]|0)|0,j)|0)|0)>>>16;v=t;m=I;A=H;z=k;y=u;x=x-1|0}a[w]=((da(D,b)|0)+32768+(da(F+E+(d[q+(n-3)|0]|0)+(d[s+(n-3)|0]|0)+(C+B+G+(d[o+(n-3)|0]|0)<<1)|0,j)|0)|0)>>>16;if((r|0)<(c[e>>2]|0)){h=h+1|0;l=r}else{break}}return}function SW(b,e,f,g){b=b|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;h=da(c[e+36>>2]|0,c[e+28>>2]|0)|0;e=b+272|0;i=c[e>>2]|0;j=c[b+28>>2]|0;b=(h<<1)-j|0;if((b|0)>0&(i|0)>0){k=j-1|0;l=0;do{m=c[f+(l<<2)>>2]|0;n$(m+j|0,a[m+k|0]|0,b|0)|0;l=l+1|0;}while((l|0)<(i|0));n=c[e>>2]|0}else{n=i}if((n|0)<=0){return}if((h|0)==0){i=0;do{i=i+2|0;}while((i|0)<(n|0));return}else{o=0;p=0}while(1){n=0;i=c[f+(p<<2)>>2]|0;l=c[f+((p|1)<<2)>>2]|0;b=c[g+(o<<2)>>2]|0;k=1;while(1){a[b]=((d[i]|0)+k+(d[i+1|0]|0)+(d[l]|0)+(d[l+1|0]|0)|0)>>>2;j=n+1|0;if(j>>>0>>0){n=j;i=i+2|0;l=l+2|0;b=b+1|0;k=k^3}else{break}}k=p+2|0;if((k|0)<(c[e>>2]|0)){o=o+1|0;p=k}else{break}}return}function TW(b,e,f,g){b=b|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,B=0,C=0,D=0;h=c[b+412>>2]|0;i=da(c[e+36>>2]|0,c[e+28>>2]|0)|0;j=c[e+4>>2]|0;e=a[h+92+j|0]|0;k=e&255;l=a[h+102+j|0]|0;j=l&255;h=da(j,k)|0;m=h>>>1;n=b+272|0;o=c[n>>2]|0;p=c[b+28>>2]|0;b=(da(k,i)|0)-p|0;if((b|0)>0&(o|0)>0){q=p-1|0;r=0;do{s=c[f+(r<<2)>>2]|0;n$(s+p|0,a[s+q|0]|0,b|0)|0;r=r+1|0;}while((r|0)<(o|0));t=c[n>>2]|0}else{t=o}if((t|0)<=0){return}o=(i|0)==0;r=l<<24>>24==0;l=e<<24>>24==0;e=0;b=0;q=t;while(1){if(o){u=q}else{t=0;p=0;s=c[g+(e<<2)>>2]|0;while(1){if(r){v=0}else{w=0;x=0;while(1){if(l){y=x}else{z=0;A=(c[f+(w+b<<2)>>2]|0)+p|0;B=x;while(1){C=(d[A]|0)+B|0;D=z+1|0;if((D|0)<(k|0)){z=D;A=A+1|0;B=C}else{y=C;break}}}B=w+1|0;if((B|0)<(j|0)){w=B;x=y}else{v=y;break}}}a[s]=(v+m|0)/(h|0)|0;x=t+1|0;if(x>>>0>>0){t=x;p=p+k|0;s=s+1|0}else{break}}u=c[n>>2]|0}s=b+j|0;if((s|0)<(u|0)){e=e+1|0;b=s;q=u}else{break}}return}function UW(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;c[a+4>>2]=0;if((b|0)!=80){e=a|0;c[(c[e>>2]|0)+20>>2]=13;c[(c[e>>2]|0)+24>>2]=80;c[(c[e>>2]|0)+28>>2]=b;vk[c[c[e>>2]>>2]&511](a)}e=a|0;if((d|0)==488){f=a}else{c[(c[e>>2]|0)+20>>2]=22;c[(c[e>>2]|0)+24>>2]=488;c[(c[e>>2]|0)+28>>2]=d;d=a;vk[c[c[e>>2]>>2]&511](d);f=d}d=c[e>>2]|0;b=a+12|0;g=c[b>>2]|0;n$(a|0,0,488)|0;c[e>>2]=d;c[b>>2]=g;c[a+16>>2]=1;$Z(f);c[a+8>>2]=0;c[a+24>>2]=0;c[a+308>>2]=0;n$(a+164|0,0,48)|0;bY(a);RX(a);c[a+20>>2]=200;return}function VW(a){a=a|0;zW(a);return}function WW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+20|0;if(!(((c[d>>2]|0)-200|0)>>>0<2>>>0)){e=a|0;c[(c[e>>2]|0)+20>>2]=21;c[(c[e>>2]|0)+24>>2]=c[d>>2];vk[c[c[e>>2]>>2]&511](a)}e=XW(a)|0;if((e|0)==2){if((b|0)==0){f=a}else{b=a|0;c[(c[b>>2]|0)+20>>2]=53;d=a;vk[c[c[b>>2]>>2]&511](d);f=d}yW(f);g=2;return g|0}else if((e|0)==1){g=1;return g|0}else{g=e;return g|0}return 0}function XW(a){a=a|0;var b=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;b=a+20|0;switch(c[b>>2]|0){case 201:{e=a+456|0;break};case 202:{f=1;return f|0};case 200:{g=a+456|0;vk[c[(c[g>>2]|0)+4>>2]&511](a);vk[c[(c[a+24>>2]|0)+8>>2]&511](a);c[b>>2]=201;e=g;break};case 203:case 204:case 205:case 206:case 207:case 208:case 210:{f=jk[c[c[a+456>>2]>>2]&255](a)|0;return f|0};default:{g=a|0;c[(c[g>>2]|0)+20>>2]=21;c[(c[g>>2]|0)+24>>2]=c[b>>2];vk[c[c[g>>2]>>2]&511](a);f=0;return f|0}}g=jk[c[c[e>>2]>>2]&255](a)|0;if((g|0)!=1){f=g;return f|0}g=c[a+36>>2]|0;if((g|0)==4){do{if((c[a+296>>2]|0)==0){c[a+40>>2]=4}else{e=a+300|0;i=d[e]|0;if((i|0)==2){c[a+40>>2]=5;break}else if((i|0)==0){c[a+40>>2]=4;break}else{i=a|0;c[(c[i>>2]|0)+20>>2]=116;c[(c[i>>2]|0)+24>>2]=d[e]|0;hk[c[(c[i>>2]|0)+4>>2]&255](a,-1);c[a+40>>2]=5;break}}}while(0);c[a+44>>2]=4}else if((g|0)==3){do{if((c[a+284>>2]|0)==0){if((c[a+296>>2]|0)!=0){i=a+300|0;e=d[i]|0;if((e|0)==1){c[a+40>>2]=3;break}else if((e|0)==0){c[a+40>>2]=2;break}else{e=a|0;c[(c[e>>2]|0)+20>>2]=116;c[(c[e>>2]|0)+24>>2]=d[i]|0;hk[c[(c[e>>2]|0)+4>>2]&255](a,-1);c[a+40>>2]=3;break}}e=c[a+216>>2]|0;i=c[e>>2]|0;j=c[e+88>>2]|0;k=c[e+176>>2]|0;if((i|0)==1&(j|0)==2&(k|0)==3){c[a+40>>2]=3;break}if((i|0)==82&(j|0)==71&(k|0)==66){c[a+40>>2]=2;break}else{e=a|0;l=c[e>>2]|0;c[l+24>>2]=i;c[l+28>>2]=j;c[l+32>>2]=k;c[(c[e>>2]|0)+20>>2]=113;hk[c[(c[e>>2]|0)+4>>2]&255](a,1);c[a+40>>2]=3;break}}else{c[a+40>>2]=3}}while(0);c[a+44>>2]=2}else if((g|0)==1){c[a+40>>2]=1;c[a+44>>2]=1}else{c[a+40>>2]=0;c[a+44>>2]=0}g=c[a+424>>2]|0;c[a+48>>2]=g;c[a+52>>2]=g;h[a+56>>3]=1.0;c[a+64>>2]=0;c[a+68>>2]=0;c[a+72>>2]=0;c[a+76>>2]=1;c[a+80>>2]=1;c[a+84>>2]=0;c[a+88>>2]=2;c[a+92>>2]=1;c[a+96>>2]=256;c[a+136>>2]=0;c[a+100>>2]=0;c[a+104>>2]=0;c[a+108>>2]=0;c[b>>2]=202;f=1;return f|0}function YW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=a+20|0;d=c[b>>2]|0;do{if((d-205|0)>>>0<2>>>0){if((c[a+64>>2]|0)!=0){e=6;break}if((c[a+140>>2]|0)>>>0<(c[a+116>>2]|0)>>>0){f=a|0;c[(c[f>>2]|0)+20>>2]=69;vk[c[c[f>>2]>>2]&511](a)}vk[c[(c[a+440>>2]|0)+4>>2]&511](a);c[b>>2]=210}else{e=6}}while(0);do{if((e|0)==6){if((d|0)==207){c[b>>2]=210;break}else if((d|0)==210){break}else{f=a|0;c[(c[f>>2]|0)+20>>2]=21;c[(c[f>>2]|0)+24>>2]=c[b>>2];vk[c[c[f>>2]>>2]&511](a);break}}}while(0);b=a+456|0;while(1){d=c[b>>2]|0;if((c[d+20>>2]|0)!=0){break}if((jk[c[d>>2]&255](a)|0)==0){g=0;e=13;break}}if((e|0)==13){return g|0}vk[c[(c[a+24>>2]|0)+24>>2]&511](a);yW(a);g=1;return g|0}function ZW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=a+20|0;d=c[b>>2]|0;do{if((d|0)==202){lY(a);if((c[a+64>>2]|0)==0){c[b>>2]=203;e=5;break}c[b>>2]=207;f=1;return f|0}else if((d|0)==203){e=5}else if((d|0)!=204){g=a|0;c[(c[g>>2]|0)+20>>2]=21;c[(c[g>>2]|0)+24>>2]=c[b>>2];vk[c[c[g>>2]>>2]&511](a)}}while(0);if((e|0)==5){e=a+456|0;a:do{if((c[(c[e>>2]|0)+16>>2]|0)!=0){b=a+8|0;d=a+328|0;g=a;b:while(1){h=c[b>>2]|0;while(1){if((h|0)!=0){vk[c[h>>2]&511](g)}i=jk[c[c[e>>2]>>2]&255](a)|0;if((i|0)==2){break a}else if((i|0)==0){f=0;break b}j=c[b>>2]|0;if((j|0)==0){h=0;continue}if((i&-3|0)!=1){continue b}i=j+4|0;j=(c[i>>2]|0)+1|0;c[i>>2]=j;h=c[b>>2]|0;k=h+8|0;l=c[k>>2]|0;if((j|0)>=(l|0)){break}}c[k>>2]=(c[d>>2]|0)+l}return f|0}}while(0);c[a+152>>2]=c[a+144>>2]}f=_W(a)|0;return f|0} + + + +function jY(a){a=a|0;var b=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;b=a+20|0;if((c[b>>2]|0)!=202){d=a|0;c[(c[d>>2]|0)+20>>2]=21;c[(c[d>>2]|0)+24>>2]=c[b>>2];vk[c[c[d>>2]>>2]&511](a)}QX(a);d=a+216|0;b=a+36|0;e=c[b>>2]|0;do{if((e|0)>0){f=a+312|0;g=a+320|0;h=a+76|0;i=a+316|0;j=a+324|0;k=0;l=c[d>>2]|0;while(1){m=c[g>>2]|0;n=(c[h>>2]|0)!=0?8:4;a:do{if((m|0)>(n|0)){o=1}else{p=c[f>>2]|0;q=c[l+8>>2]|0;r=1;while(1){s=r<<1;if(((p|0)%(da(s,q)|0)|0|0)!=0){o=r;break a}if((da(m,s)|0)>(n|0)){o=s;break}else{r=s}}}}while(0);n=da(m,o)|0;r=l+36|0;c[r>>2]=n;q=c[j>>2]|0;p=(c[h>>2]|0)!=0?8:4;b:do{if((q|0)>(p|0)){t=1}else{s=c[i>>2]|0;u=c[l+12>>2]|0;v=1;while(1){w=v<<1;if(((s|0)%(da(w,u)|0)|0|0)!=0){t=v;break b}if((da(q,w)|0)>(p|0)){t=w;break}else{v=w}}}}while(0);p=da(q,t)|0;m=l+40|0;c[m>>2]=p;v=p<<1;do{if((n|0)>(v|0)){c[r>>2]=v}else{u=n<<1;if((p|0)<=(u|0)){break}c[m>>2]=u}}while(0);m=k+1|0;x=c[b>>2]|0;if((m|0)<(x|0)){k=m;l=l+88|0}else{break}}if((x|0)<=0){y=x;break}l=a+28|0;k=a+312|0;i=a+424|0;h=a+32|0;j=a+316|0;f=0;g=c[d>>2]|0;while(1){m=da(da(c[g+8>>2]|0,c[l>>2]|0)|0,c[g+36>>2]|0)|0;c[g+44>>2]=O_(m,da(c[i>>2]|0,c[k>>2]|0)|0)|0;m=da(da(c[g+12>>2]|0,c[h>>2]|0)|0,c[g+40>>2]|0)|0;c[g+48>>2]=O_(m,da(c[i>>2]|0,c[j>>2]|0)|0)|0;m=f+1|0;p=c[b>>2]|0;if((m|0)<(p|0)){f=m;g=g+88|0}else{y=p;break}}}else{y=e}}while(0);switch(c[a+44>>2]|0){case 1:{c[a+120>>2]=1;z=1;break};case 2:case 3:{c[a+120>>2]=3;z=3;break};case 4:case 5:{c[a+120>>2]=4;z=4;break};default:{c[a+120>>2]=y;z=y}}c[a+124>>2]=(c[a+84>>2]|0)==0?z:1;if((kY(a)|0)==0){c[a+128>>2]=1;return}else{c[a+128>>2]=c[a+316>>2];return}}function kY(a){a=a|0;var b=0,d=0;if((c[a+76>>2]|0)!=0){return 0}if((c[a+304>>2]|0)!=0){return 0}if((c[a+40>>2]|0)!=3){return 0}if((c[a+36>>2]|0)!=3){return 0}if((c[a+44>>2]|0)!=2){return 0}if((c[a+120>>2]|0)!=3){return 0}b=c[a+216>>2]|0;if((c[b+8>>2]|0)!=2){return 0}if((c[b+96>>2]|0)!=1){return 0}if((c[b+184>>2]|0)!=1){return 0}if((c[b+12>>2]|0)>2){return 0}if((c[b+100>>2]|0)!=1){return 0}if((c[b+188>>2]|0)!=1){return 0}d=c[b+36>>2]|0;if((d|0)!=(c[a+320>>2]|0)){return 0}if((c[b+124>>2]|0)!=(d|0)){return 0}if((c[b+212>>2]|0)!=(d|0)){return 0}d=c[b+40>>2]|0;if((d|0)!=(c[a+324>>2]|0)){return 0}if((c[b+128>>2]|0)==(d|0)){return(c[b+216>>2]|0)==(d|0)|0}else{return 0}return 0}function lY(b){b=b|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;d=b+4|0;e=b;f=rk[c[c[d>>2]>>2]&63](e,1,28)|0;g=b+440|0;c[g>>2]=f;c[f>>2]=28;c[f+4>>2]=182;c[f+8>>2]=0;f=c[g>>2]|0;jY(b);g=rk[c[c[d>>2]>>2]&63](e,1,1408)|0;h=b+332|0;c[h>>2]=g+256;n$(g|0,0,256)|0;i=0;do{a[g+(i+256)|0]=i;i=i+1|0;}while((i|0)<256);n$(g+512|0,-1|0,384)|0;n$(g+896|0,0,384)|0;m$(g+1280|0,c[h>>2]|0,128)|0;h=b+120|0;g=f+12|0;i=g;j=g|0;c[j>>2]=0;g=f+16|0;k=g;c[g>>2]=kY(b)|0;g=f+20|0;c[g>>2]=0;l=f+24|0;c[l>>2]=0;do{if((c[b+84>>2]|0)==0){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;m=b+68|0}else{if((c[b+64>>2]|0)==0){c[b+100>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0}f=b+68|0;if((c[f>>2]|0)!=0){n=b|0;c[(c[n>>2]|0)+20>>2]=48;vk[c[c[n>>2]>>2]&511](e)}do{if((c[h>>2]|0)==3){if((c[b+136>>2]|0)!=0){c[b+104>>2]=1;break}if((c[b+92>>2]|0)==0){c[b+100>>2]=1;break}else{c[b+108>>2]=1;break}}else{c[b+100>>2]=1;c[b+104>>2]=0;c[b+108>>2]=0;c[b+136>>2]=0}}while(0);if((c[b+100>>2]|0)!=0){t_(b);c[g>>2]=c[b+480>>2]}if((c[b+108>>2]|0)==0){if((c[b+104>>2]|0)==0){m=f;break}}D_(b);c[l>>2]=c[b+480>>2];m=f}}while(0);if((c[m>>2]|0)==0){if((c[k>>2]|0)==0){wX(b);zY(b)}else{oY(b)}uY(b,c[b+108>>2]|0)}DX(b);if((c[b+228>>2]|0)==0){FX(b)}else{aX(b)}k=b+456|0;if((c[(c[k>>2]|0)+16>>2]|0)==0){o=(c[b+64>>2]|0)!=0|0}else{o=1}oX(b,o);if((c[m>>2]|0)==0){WX(b,0)}vk[c[(c[d>>2]|0)+24>>2]&511](e);vk[c[(c[k>>2]|0)+8>>2]&511](b);e=b+8|0;d=c[e>>2]|0;if((d|0)==0){return}if((c[b+64>>2]|0)!=0){return}if((c[(c[k>>2]|0)+16>>2]|0)==0){return}k=c[b+36>>2]|0;if((c[b+224>>2]|0)==0){p=k}else{p=(k*3|0)+2|0}c[d+4>>2]=0;d=da(c[b+328>>2]|0,p)|0;c[(c[e>>2]|0)+8>>2]=d;c[(c[e>>2]|0)+12>>2]=0;c[(c[e>>2]|0)+16>>2]=(c[b+108>>2]|0)!=0?3:2;c[j>>2]=(c[i>>2]|0)+1;return}function mY(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=c[a+440>>2]|0;d=b+8|0;do{if((c[d>>2]|0)==0){e=a+84|0;a:do{if((c[e>>2]|0)!=0){if((c[a+136>>2]|0)!=0){break}do{if((c[a+92>>2]|0)!=0){if((c[a+108>>2]|0)==0){break}c[a+480>>2]=c[b+24>>2];c[d>>2]=1;break a}}while(0);if((c[a+100>>2]|0)==0){f=a|0;c[(c[f>>2]|0)+20>>2]=47;vk[c[c[f>>2]>>2]&511](a);break}else{c[a+480>>2]=c[b+20>>2];break}}}while(0);vk[c[c[a+468>>2]>>2]&511](a);vk[c[(c[a+448>>2]|0)+8>>2]&511](a);if((c[a+68>>2]|0)!=0){break}if((c[b+16>>2]|0)==0){vk[c[c[a+476>>2]>>2]&511](a)}vk[c[c[a+472>>2]>>2]&511](a);if((c[e>>2]|0)!=0){hk[c[c[a+480>>2]>>2]&255](a,c[d>>2]|0)}hk[c[c[a+452>>2]>>2]&255](a,(c[d>>2]|0)!=0?3:0);hk[c[c[a+444>>2]>>2]&255](a,0)}else{c[d>>2]=0;hk[c[c[a+480>>2]>>2]&255](a,0);hk[c[c[a+452>>2]>>2]&255](a,2);hk[c[c[a+444>>2]>>2]&255](a,2)}}while(0);f=a+8|0;g=c[f>>2]|0;if((g|0)==0){return}h=b+12|0;c[g+12>>2]=c[h>>2];c[(c[f>>2]|0)+16>>2]=((c[d>>2]|0)!=0?2:1)+(c[h>>2]|0);if((c[a+64>>2]|0)==0){return}if((c[(c[a+456>>2]|0)+20>>2]|0)!=0){return}h=(c[f>>2]|0)+16|0;c[h>>2]=(c[h>>2]|0)+((c[a+108>>2]|0)!=0?2:1);return}function nY(a){a=a|0;var b=0;b=c[a+440>>2]|0;if((c[a+84>>2]|0)!=0){vk[c[(c[a+480>>2]|0)+8>>2]&511](a)}a=b+12|0;c[a>>2]=(c[a>>2]|0)+1;return}function oY(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+4|0;d=a;e=rk[c[c[b>>2]>>2]&63](d,1,48)|0;f=a+472|0;c[f>>2]=e;c[e>>2]=32;c[e+8>>2]=0;g=da(c[a+120>>2]|0,c[a+112>>2]|0)|0;c[e+40>>2]=g;h=e+4|0;if((c[a+316>>2]|0)==2){c[h>>2]=24;c[e+12>>2]=6;c[e+32>>2]=rk[c[(c[b>>2]|0)+4>>2]&63](d,1,g)|0}else{c[h>>2]=18;c[e+12>>2]=68;c[e+32>>2]=0}e=c[f>>2]|0;f=e+16|0;c[f>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;h=e+20|0;g=h;c[h>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;h=e+24|0;a=h;c[h>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;h=e+28|0;c[h>>2]=rk[c[c[b>>2]>>2]&63](d,1,1024)|0;d=0;b=-128;while(1){c[(c[f>>2]|0)+(d<<2)>>2]=(b*91881|0)+32768>>16;c[(c[g>>2]|0)+(d<<2)>>2]=(b*116130|0)+32768>>16;c[(c[a>>2]|0)+(d<<2)>>2]=b*-46802|0;c[(c[h>>2]|0)+(d<<2)>>2]=(b*-22554|0)+32768;e=d+1|0;if((e|0)<256){d=e;b=b+1|0}else{break}}return}function pY(a){a=a|0;var b=0;b=c[a+472>>2]|0;c[b+36>>2]=0;c[b+44>>2]=c[a+116>>2];return}function qY(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;i=i+8|0;j=e|0;k=c[a+472>>2]|0;l=k+36|0;m=l;if((c[m>>2]|0)==0){n=k+44|0;o=c[n>>2]|0;p=o>>>0<2>>>0?o:2;o=c[g>>2]|0;q=h-o|0;h=p>>>0>q>>>0?q:p;p=j|0;c[p>>2]=c[f+(o<<2)>>2];if(h>>>0>1>>>0){c[j+4>>2]=c[f+(o+1<<2)>>2]}else{c[j+4>>2]=c[k+32>>2];c[l>>2]=1}Yk[c[k+12>>2]&255](a,b,c[d>>2]|0,p);r=h;s=n}else{Q_(k+32|0,0,f+(c[g>>2]<<2)|0,0,1,c[k+40>>2]|0);c[l>>2]=0;r=1;s=k+44|0}c[g>>2]=(c[g>>2]|0)+r;c[s>>2]=(c[s>>2]|0)-r;if((c[m>>2]|0)!=0){i=e;return}c[d>>2]=(c[d>>2]|0)+1;i=e;return}function rY(b,e,f,g){b=b|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,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;h=c[b+472>>2]|0;i=c[b+332>>2]|0;j=c[h+16>>2]|0;k=c[h+20>>2]|0;l=c[h+24>>2]|0;m=c[h+28>>2]|0;h=f<<1;n=c[e>>2]|0;o=c[n+(h<<2)>>2]|0;p=c[n+((h|1)<<2)>>2]|0;h=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;n=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;e=c[g+4>>2]|0;g=b+112|0;b=c[g>>2]|0;q=b>>>1;if((q|0)==0){r=f;s=e;t=o;u=p;v=h;w=n;x=b}else{b=q*6|0;y=q<<1;z=f+b|0;A=n+q|0;B=f;f=e;C=o;D=p;E=h;F=n;n=q;while(1){G=d[E]|0;H=d[F]|0;I=c[j+(H<<2)>>2]|0;J=(c[l+(H<<2)>>2]|0)+(c[m+(G<<2)>>2]|0)>>16;H=c[k+(G<<2)>>2]|0;G=d[C]|0;a[B]=a[i+(G+I)|0]|0;a[B+1|0]=a[i+(G+J)|0]|0;a[B+2|0]=a[i+(G+H)|0]|0;G=d[C+1|0]|0;a[B+3|0]=a[i+(G+I)|0]|0;a[B+4|0]=a[i+(G+J)|0]|0;a[B+5|0]=a[i+(G+H)|0]|0;G=d[D]|0;a[f]=a[i+(G+I)|0]|0;a[f+1|0]=a[i+(G+J)|0]|0;a[f+2|0]=a[i+(G+H)|0]|0;G=d[D+1|0]|0;a[f+3|0]=a[i+(G+I)|0]|0;a[f+4|0]=a[i+(G+J)|0]|0;a[f+5|0]=a[i+(G+H)|0]|0;H=n-1|0;if((H|0)==0){break}else{B=B+6|0;f=f+6|0;C=C+2|0;D=D+2|0;E=E+1|0;F=F+1|0;n=H}}r=z;s=e+b|0;t=o+y|0;u=p+y|0;v=h+q|0;w=A;x=c[g>>2]|0}if((x&1|0)==0){return}x=d[v]|0;v=d[w]|0;w=c[j+(v<<2)>>2]|0;j=(c[l+(v<<2)>>2]|0)+(c[m+(x<<2)>>2]|0)>>16;m=c[k+(x<<2)>>2]|0;x=d[t]|0;a[r]=a[i+(x+w)|0]|0;a[r+1|0]=a[i+(x+j)|0]|0;a[r+2|0]=a[i+(x+m)|0]|0;x=d[u]|0;a[s]=a[i+(x+w)|0]|0;a[s+1|0]=a[i+(x+j)|0]|0;a[s+2|0]=a[i+(x+m)|0]|0;return}function sY(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Yk[c[(c[a+472>>2]|0)+12>>2]&255](a,b,c[d>>2]|0,f+(c[g>>2]<<2)|0);c[g>>2]=(c[g>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+1;return}function tY(b,e,f,g){b=b|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,B=0,C=0,D=0;h=c[b+472>>2]|0;i=c[b+332>>2]|0;j=c[h+16>>2]|0;k=c[h+20>>2]|0;l=c[h+24>>2]|0;m=c[h+28>>2]|0;h=c[(c[e>>2]|0)+(f<<2)>>2]|0;n=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;o=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;g=b+112|0;b=c[g>>2]|0;e=b>>>1;if((e|0)==0){p=f;q=h;r=n;s=o;t=b}else{b=e*6|0;u=e<<1;v=o+e|0;w=f;x=h;y=n;z=o;o=e;while(1){A=d[y]|0;B=d[z]|0;C=c[j+(B<<2)>>2]|0;D=(c[l+(B<<2)>>2]|0)+(c[m+(A<<2)>>2]|0)>>16;B=c[k+(A<<2)>>2]|0;A=d[x]|0;a[w]=a[i+(A+C)|0]|0;a[w+1|0]=a[i+(A+D)|0]|0;a[w+2|0]=a[i+(A+B)|0]|0;A=d[x+1|0]|0;a[w+3|0]=a[i+(A+C)|0]|0;a[w+4|0]=a[i+(A+D)|0]|0;a[w+5|0]=a[i+(A+B)|0]|0;B=o-1|0;if((B|0)==0){break}else{w=w+6|0;x=x+2|0;y=y+1|0;z=z+1|0;o=B}}p=f+b|0;q=h+u|0;r=n+e|0;s=v;t=c[g>>2]|0}if((t&1|0)==0){return}t=d[r]|0;r=d[s]|0;s=(c[l+(r<<2)>>2]|0)+(c[m+(t<<2)>>2]|0)>>16;m=c[k+(t<<2)>>2]|0;t=d[q]|0;a[p]=a[i+(t+(c[j+(r<<2)>>2]|0))|0]|0;a[p+1|0]=a[i+(t+s)|0]|0;a[p+2|0]=a[i+(t+m)|0]|0;return}function uY(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=a+4|0;e=a;f=rk[c[c[d>>2]>>2]&63](e,1,28)|0;c[a+452>>2]=f;c[f>>2]=142;g=f+8|0;c[g>>2]=0;h=f+12|0;c[h>>2]=0;if((c[a+84>>2]|0)==0){return}i=c[a+316>>2]|0;j=f+16|0;c[j>>2]=i;f=c[d>>2]|0;if((b|0)==0){b=da(c[a+120>>2]|0,c[a+112>>2]|0)|0;c[h>>2]=Wk[c[f+8>>2]&63](e,1,b,i)|0;return}else{b=c[f+16>>2]|0;f=da(c[a+120>>2]|0,c[a+112>>2]|0)|0;h=P_(c[a+116>>2]|0,i)|0;c[g>>2]=ik[b&15](e,1,0,f,h,c[j>>2]|0)|0;return}}function vY(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+452>>2]|0;do{if((b|0)==3){if((c[d+8>>2]|0)==0){e=a|0;c[(c[e>>2]|0)+20>>2]=3;vk[c[c[e>>2]>>2]&511](a)}c[d+4>>2]=30}else if((b|0)==2){if((c[d+8>>2]|0)==0){e=a|0;c[(c[e>>2]|0)+20>>2]=3;vk[c[c[e>>2]>>2]&511](a)}c[d+4>>2]=34}else if((b|0)==0){if((c[a+84>>2]|0)==0){c[d+4>>2]=c[(c[a+472>>2]|0)+4>>2];break}c[d+4>>2]=32;e=d+12|0;if((c[e>>2]|0)!=0){break}c[e>>2]=Rk[c[(c[a+4>>2]|0)+28>>2]&15](a,c[d+8>>2]|0,0,c[d+16>>2]|0,1)|0}else{e=a|0;c[(c[e>>2]|0)+20>>2]=3;vk[c[c[e>>2]>>2]&511](a)}}while(0);c[d+24>>2]=0;c[d+20>>2]=0;return}function wY(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+8|0;k=j|0;l=c[a+452>>2]|0;m=h-(c[g>>2]|0)|0;h=c[l+16>>2]|0;c[k>>2]=0;n=l+12|0;Gk[c[(c[a+472>>2]|0)+4>>2]&63](a,b,d,e,c[n>>2]|0,k,m>>>0>h>>>0?h:m);Yk[c[(c[a+480>>2]|0)+4>>2]&255](a,c[n>>2]|0,f+(c[g>>2]<<2)|0,c[k>>2]|0);c[g>>2]=(c[g>>2]|0)+(c[k>>2]|0);i=j;return}function xY(a,b,d,e,f,g,h){a=a|0;b=b|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;h=c[a+452>>2]|0;f=h+24|0;i=f;j=c[i>>2]|0;if((j|0)==0){k=h+16|0;l=Rk[c[(c[a+4>>2]|0)+28>>2]&15](a,c[h+8>>2]|0,c[h+20>>2]|0,c[k>>2]|0,1)|0;c[h+12>>2]=l;m=c[i>>2]|0;n=l;o=k}else{m=j;n=c[h+12>>2]|0;o=h+16|0}Gk[c[(c[a+472>>2]|0)+4>>2]&63](a,b,d,e,n,i,c[o>>2]|0);n=c[i>>2]|0;if(n>>>0>m>>>0){e=n-m|0;Yk[c[(c[a+480>>2]|0)+4>>2]&255](a,(c[h+12>>2]|0)+(m<<2)|0,0,e);c[g>>2]=(c[g>>2]|0)+e;p=c[i>>2]|0}else{p=n}n=c[o>>2]|0;if(p>>>0>>0){return}p=h+20|0;c[p>>2]=(c[p>>2]|0)+n;c[f>>2]=0;return}function yY(a,b,d,e,f,g,h){a=a|0;b=b|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;e=c[a+452>>2]|0;d=e+24|0;b=d;i=c[b>>2]|0;if((i|0)==0){j=e+20|0;k=j;l=e+16|0;m=Rk[c[(c[a+4>>2]|0)+28>>2]&15](a,c[e+8>>2]|0,c[k>>2]|0,c[l>>2]|0,0)|0;c[e+12>>2]=m;n=c[b>>2]|0;o=m;p=l;q=j;r=k}else{k=e+20|0;n=i;o=c[e+12>>2]|0;p=e+16|0;q=k;r=k}k=(c[p>>2]|0)-n|0;e=c[g>>2]|0;i=h-e|0;h=k>>>0>i>>>0?i:k;k=(c[a+116>>2]|0)-(c[r>>2]|0)|0;i=h>>>0>k>>>0?k:h;Yk[c[(c[a+480>>2]|0)+4>>2]&255](a,o+(n<<2)|0,f+(e<<2)|0,i);c[g>>2]=(c[g>>2]|0)+i;g=(c[b>>2]|0)+i|0;i=d|0;c[i>>2]=g;d=c[p>>2]|0;if(g>>>0>>0){return}c[q>>2]=(c[r>>2]|0)+d;c[i>>2]=0;return}function zY(b){b=b|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;d=b+4|0;e=b;f=rk[c[c[d>>2]>>2]&63](e,1,160)|0;c[b+472>>2]=f;c[f>>2]=56;c[f+4>>2]=22;c[f+8>>2]=0;if((c[b+304>>2]|0)!=0){g=b|0;c[(c[g>>2]|0)+20>>2]=26;vk[c[c[g>>2]>>2]&511](e)}g=b+36|0;if((c[g>>2]|0)<=0){return}h=b+320|0;i=b+324|0;j=b+312|0;k=b+316|0;l=f+100|0;m=f+52|0;n=b+112|0;o=f+12|0;p=b|0;q=c[b+216>>2]|0;b=0;while(1){r=da(c[q+36>>2]|0,c[q+8>>2]|0)|0;s=(r|0)/(c[h>>2]|0)|0;r=da(c[q+40>>2]|0,c[q+12>>2]|0)|0;t=(r|0)/(c[i>>2]|0)|0;r=c[j>>2]|0;u=c[k>>2]|0;c[l+(b<<2)>>2]=t;do{if((c[q+52>>2]|0)==0){c[m+(b<<2)>>2]=60}else{v=(t|0)==(u|0);if((s|0)==(r|0)&v){c[m+(b<<2)>>2]=8;break}w=(s<<1|0)==(r|0);a:do{if(w&v){c[m+(b<<2)>>2]=64}else{do{if(w){if((t<<1|0)!=(u|0)){break}c[m+(b<<2)>>2]=62;break a}}while(0);do{if(((r|0)%(s|0)|0|0)==0){if(((u|0)%(t|0)|0|0)!=0){break}c[m+(b<<2)>>2]=138;a[f+(b+140)|0]=(r|0)/(s|0)|0;a[f+(b+150)|0]=(u|0)/(t|0)|0;break a}}while(0);c[(c[p>>2]|0)+20>>2]=39;vk[c[c[p>>2]>>2]&511](e)}}while(0);w=c[(c[d>>2]|0)+8>>2]|0;v=P_(c[n>>2]|0,c[j>>2]|0)|0;c[o+(b<<2)>>2]=Wk[w&63](e,1,v,c[k>>2]|0)|0}}while(0);t=b+1|0;if((t|0)<(c[g>>2]|0)){q=q+88|0;b=t}else{break}}return}function AY(a){a=a|0;var b=0;b=c[a+472>>2]|0;c[b+92>>2]=c[a+316>>2];c[b+96>>2]=c[a+116>>2];return}function BY(a,b,d,e,f,g,h){a=a|0;b=b|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;e=c[a+472>>2]|0;i=e+92|0;j=c[i>>2]|0;k=a+316|0;l=c[k>>2]|0;if((j|0)<(l|0)){m=l;n=j}else{j=a+36|0;if((c[j>>2]|0)>0){l=e+52|0;o=e+100|0;p=e+12|0;q=0;r=c[a+216>>2]|0;while(1){s=(c[b+(q<<2)>>2]|0)+((da(c[o+(q<<2)>>2]|0,c[d>>2]|0)|0)<<2)|0;Yk[c[l+(q<<2)>>2]&255](a,r,s,p+(q<<2)|0);s=q+1|0;if((s|0)<(c[j>>2]|0)){q=s;r=r+88|0}else{break}}}c[i>>2]=0;m=c[k>>2]|0;n=0}r=m-n|0;m=e+96|0;q=m;j=c[q>>2]|0;p=r>>>0>j>>>0?j:r;r=c[g>>2]|0;j=h-r|0;h=p>>>0>j>>>0?j:p;fk[c[(c[a+476>>2]|0)+4>>2]&127](a,e+12|0,n,f+(r<<2)|0,h);c[g>>2]=(c[g>>2]|0)+h;c[m>>2]=(c[q>>2]|0)-h;q=(c[i>>2]|0)+h|0;c[i>>2]=q;if((q|0)<(c[k>>2]|0)){return}c[d>>2]=(c[d>>2]|0)+1;return}function CY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=0;return}function DY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=d;return}function EY(b,d,e,f){b=b|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;d=c[f>>2]|0;f=b+316|0;g=c[f>>2]|0;if((g|0)<=0){return}h=b+112|0;b=0;i=g;while(1){g=c[d+(b<<2)>>2]|0;j=c[h>>2]|0;k=g+j|0;if((j|0)>0){j=g;g=c[e+(b<<2)>>2]|0;while(1){l=a[g]|0;a[j]=l;m=j+2|0;a[j+1|0]=l;if(m>>>0>>0){j=m;g=g+1|0}else{break}}n=c[f>>2]|0}else{n=i}g=b+1|0;if((g|0)<(n|0)){b=g;i=n}else{break}}return}function FY(b,d,e,f){b=b|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;d=c[f>>2]|0;f=b+316|0;if((c[f>>2]|0)<=0){return}g=b+112|0;b=0;h=0;while(1){i=c[d+(h<<2)>>2]|0;j=c[g>>2]|0;k=i+j|0;if((j|0)>0){l=i;i=c[e+(b<<2)>>2]|0;while(1){m=a[i]|0;a[l]=m;n=l+2|0;a[l+1|0]=m;if(n>>>0>>0){l=n;i=i+1|0}else{break}}o=c[g>>2]|0}else{o=j}Q_(d,h,d,h|1,1,o);i=h+2|0;if((i|0)<(c[f>>2]|0)){b=b+1|0;h=i}else{break}}return}function GY(b,d,e,f){b=b|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;g=c[b+472>>2]|0;h=c[f>>2]|0;f=c[d+4>>2]|0;d=a[g+140+f|0]|0;i=d&255;j=a[g+150+f|0]|0;f=j&255;g=b+316|0;if((c[g>>2]|0)<=0){return}k=b+112|0;b=d<<24>>24!=0;d=f-1|0;l=-i|0;m=((l|0)>-1?l:-1)+i+1|0;if((j&255)>>>0>1>>>0){j=0;i=0;while(1){l=c[h+(i<<2)>>2]|0;n=c[k>>2]|0;o=l+n|0;if((n|0)>0){if(b){p=l;l=c[e+(j<<2)>>2]|0;while(1){n$(p|0,a[l]|0,m|0)|0;q=p+m|0;if(q>>>0>>0){p=q;l=l+1|0}else{break}}}else{do{}while((n|0)>0)}}Q_(h,i,h,i+1|0,d,c[k>>2]|0);n=i+f|0;if((n|0)>=(c[g>>2]|0)){break}j=j+1|0;i=n}return}else{i=0;j=0;while(1){d=c[h+(j<<2)>>2]|0;n=c[k>>2]|0;l=d+n|0;if((n|0)>0){if(b){p=d;d=c[e+(i<<2)>>2]|0;while(1){n$(p|0,a[d]|0,m|0)|0;o=p+m|0;if(o>>>0>>0){p=o;d=d+1|0}else{break}}}else{do{}while((n|0)>0)}}n=j+f|0;if((n|0)>=(c[g>>2]|0)){break}i=i+1|0;j=n}return}}function HY(a){a=a|0;c[a>>2]=16;c[a+4>>2]=120;c[a+8>>2]=284;c[a+12>>2]=110;c[a+16>>2]=52;c[a+104>>2]=0;c[a+108>>2]=0;c[a+20>>2]=0;c[a+112>>2]=17064;c[a+116>>2]=126;c[a+120>>2]=0;c[a+124>>2]=0;c[a+128>>2]=0;return a|0}function IY(a){a=a|0;vk[c[(c[a>>2]|0)+8>>2]&511](a);zW(a);Ji(1)}function JY(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=c[a>>2]|0;if((b|0)>=0){if((c[d+104>>2]|0)<(b|0)){return}vk[c[d+8>>2]&511](a);return}b=d+108|0;e=c[b>>2]|0;if((e|0)==0){f=4}else{if((c[d+104>>2]|0)>2){f=4}else{g=e}}if((f|0)==4){vk[c[d+8>>2]&511](a);g=c[b>>2]|0}c[b>>2]=g+1;return}function KY(a){a=a|0;var b=0,d=0;b=i;i=i+200|0;d=b|0;hk[c[(c[a>>2]|0)+12>>2]&255](a,d);Rc(c[p>>2]|0,174400,(a=i,i=i+8|0,c[a>>2]=d,a)|0)|0;i=a;i=b;return}function LY(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;f=c[b>>2]|0;b=c[f+20>>2]|0;do{if((b|0)>0){if((b|0)>(c[f+116>>2]|0)){g=4;break}h=(c[f+112>>2]|0)+(b<<2)|0;g=8}else{g=4}}while(0);do{if((g|0)==4){j=c[f+120>>2]|0;if((j|0)==0){g=9;break}k=c[f+124>>2]|0;if((b|0)<(k|0)){g=9;break}if((b|0)>(c[f+128>>2]|0)){g=9;break}h=j+(b-k<<2)|0;g=8}}while(0);if((g|0)==8){k=c[h>>2]|0;if((k|0)==0){g=9}else{l=k}}if((g|0)==9){c[f+24>>2]=b;l=c[c[f+112>>2]>>2]|0}b=l;while(1){m=b+1|0;k=a[b]|0;if((k<<24>>24|0)==0){g=12;break}else if((k<<24>>24|0)==37){g=13;break}else{b=m}}do{if((g|0)==12){n=f+24|0}else if((g|0)==13){b=f+24|0;if((a[m]|0)!=115){n=b;break}fe(d|0,l|0,(o=i,i=i+8|0,c[o>>2]=b,o)|0)|0;i=o;i=e;return}}while(0);m=c[f+28>>2]|0;g=c[f+32>>2]|0;b=c[f+36>>2]|0;k=c[f+40>>2]|0;h=c[f+44>>2]|0;j=c[f+48>>2]|0;p=c[f+52>>2]|0;fe(d|0,l|0,(o=i,i=i+64|0,c[o>>2]=c[n>>2],c[o+8>>2]=m,c[o+16>>2]=g,c[o+24>>2]=b,c[o+32>>2]=k,c[o+40>>2]=h,c[o+48>>2]=j,c[o+56>>2]=p,o)|0)|0;i=o;i=e;return}function MY(a){a=a|0;var b=0;b=a|0;c[(c[b>>2]|0)+108>>2]=0;c[(c[b>>2]|0)+20>>2]=0;return}function NY(a,b,e){a=a|0;b=b|0;e=e|0;var f=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.0,t=0,u=0.0,v=0.0,w=0,x=0.0,y=0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0;f=e+7|0;h=e+1|0;i=e+6|0;j=e+2|0;k=e+5|0;l=e+3|0;m=e+4|0;n=a;o=0;while(1){p=c[b+(o<<2)>>2]|0;q=d[p+e|0]|0;r=d[p+f|0]|0;s=+(r+q|0);t=q-r|0;u=+(t|0);r=d[p+h|0]|0;q=d[p+i|0]|0;v=+(q+r|0);w=r-q|0;q=d[p+j|0]|0;r=d[p+k|0]|0;x=+(r+q|0);y=q-r|0;r=d[p+l|0]|0;q=d[p+m|0]|0;z=+(q+r|0);A=s+z;B=s-z;z=v+x;g[n>>2]=z+A+-1024.0;g[n+16>>2]=A-z;z=(v-x+B)*.7071067690849304;g[n+8>>2]=B+z;g[n+24>>2]=B-z;z=+(y+r-q|0);B=+(w+t|0);x=(z-B)*.3826834261417389;v=z*.5411961078643799+x;z=B*1.3065630197525024+x;x=+(y+w|0)*.7071067690849304;B=u+x;A=u-x;g[n+20>>2]=A+v;g[n+12>>2]=A-v;g[n+4>>2]=B+z;g[n+28>>2]=B-z;w=o+1|0;if((w|0)<8){n=n+32|0;o=w}else{C=a;D=7;break}}while(1){z=+g[C>>2];a=C+224|0;B=+g[a>>2];v=z+B;A=z-B;o=C+32|0;B=+g[o>>2];n=C+192|0;z=+g[n>>2];x=B+z;u=B-z;m=C+64|0;z=+g[m>>2];l=C+160|0;B=+g[l>>2];s=z+B;E=z-B;k=C+96|0;B=+g[k>>2];j=C+128|0;z=+g[j>>2];F=B+z;G=v+F;H=v-F;F=x+s;g[C>>2]=F+G;g[j>>2]=G-F;F=(x-s+H)*.7071067690849304;g[m>>2]=H+F;g[n>>2]=H-F;F=E+(B-z);z=A+u;B=(F-z)*.3826834261417389;H=F*.5411961078643799+B;F=z*1.3065630197525024+B;B=(u+E)*.7071067690849304;E=A+B;u=A-B;g[l>>2]=u+H;g[k>>2]=u-H;g[o>>2]=E+F;g[a>>2]=E-F;if((D|0)>0){C=C+4|0;D=D-1|0}else{break}}return}function OY(a,b,e){a=a|0;b=b|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,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;f=e+7|0;g=e+1|0;h=e+6|0;i=e+2|0;j=e+5|0;k=e+3|0;l=e+4|0;m=a;n=0;while(1){o=c[b+(n<<2)>>2]|0;p=d[o+e|0]|0;q=d[o+f|0]|0;r=q+p|0;s=p-q|0;q=d[o+g|0]|0;p=d[o+h|0]|0;t=p+q|0;u=q-p|0;p=d[o+i|0]|0;q=d[o+j|0]|0;v=q+p|0;w=p-q|0;q=d[o+k|0]|0;p=d[o+l|0]|0;o=p+q|0;x=o+r|0;y=r-o|0;o=v+t|0;c[m>>2]=o-1024+x;c[m+16>>2]=x-o;o=((t-v+y|0)*181|0)>>8;c[m+8>>2]=o+y;c[m+24>>2]=y-o;o=q-p+w|0;p=u+s|0;q=((o-p|0)*98|0)>>8;y=q+((o*139|0)>>8)|0;o=q+((p*334|0)>>8)|0;p=((w+u|0)*181|0)>>8;u=p+s|0;w=s-p|0;c[m+20>>2]=y+w;c[m+12>>2]=w-y;c[m+4>>2]=o+u;c[m+28>>2]=u-o;o=n+1|0;if((o|0)<8){m=m+32|0;n=o}else{z=a;A=7;break}}while(1){a=c[z>>2]|0;n=z+224|0;m=c[n>>2]|0;l=m+a|0;k=a-m|0;m=z+32|0;a=c[m>>2]|0;j=z+192|0;i=c[j>>2]|0;h=i+a|0;g=a-i|0;i=z+64|0;a=c[i>>2]|0;f=z+160|0;e=c[f>>2]|0;b=e+a|0;o=a-e|0;e=z+96|0;a=c[e>>2]|0;u=z+128|0;y=c[u>>2]|0;w=y+a|0;p=w+l|0;s=l-w|0;w=b+h|0;c[z>>2]=p+w;c[u>>2]=p-w;w=((h-b+s|0)*181|0)>>8;c[i>>2]=w+s;c[j>>2]=s-w;w=a-y+o|0;y=g+k|0;a=((w-y|0)*98|0)>>8;s=a+((w*139|0)>>8)|0;w=a+((y*334|0)>>8)|0;y=((o+g|0)*181|0)>>8;g=y+k|0;o=k-y|0;c[f>>2]=s+o;c[e>>2]=o-s;c[m>>2]=w+g;c[n>>2]=g-w;if((A|0)>0){z=z+4|0;A=A-1|0}else{break}}return}function PY(a,b,e){a=a|0;b=b|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,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=e+7|0;g=e+1|0;h=e+6|0;i=e+2|0;j=e+5|0;k=e+3|0;l=e+4|0;m=a;n=0;while(1){o=c[b+(n<<2)>>2]|0;p=d[o+e|0]|0;q=d[o+f|0]|0;r=q+p|0;s=d[o+g|0]|0;t=d[o+h|0]|0;u=t+s|0;v=d[o+i|0]|0;w=d[o+j|0]|0;x=w+v|0;y=d[o+k|0]|0;z=d[o+l|0]|0;o=z+y|0;A=o+r|0;B=r-o|0;o=x+u|0;r=u-x|0;x=p-q|0;q=s-t|0;t=v-w|0;w=y-z|0;c[m>>2]=(A+o<<2)-4096;c[m+16>>2]=A-o<<2;o=((B+r|0)*4433|0)+1024|0;c[m+8>>2]=o+(B*6270|0)>>11;c[m+24>>2]=o+(r*-15137|0)>>11;r=t+x|0;o=w+q|0;B=((o+r|0)*9633|0)+1024|0;A=(w+x|0)*-7373|0;z=(t+q|0)*-20995|0;y=B+(r*-3196|0)|0;r=B+(o*-16069|0)|0;c[m+4>>2]=A+(x*12299|0)+y>>11;c[m+12>>2]=z+(q*25172|0)+r>>11;c[m+20>>2]=z+(t*16819|0)+y>>11;c[m+28>>2]=A+(w*2446|0)+r>>11;r=n+1|0;if((r|0)<8){m=m+32|0;n=r}else{C=a;D=7;break}}while(1){a=c[C>>2]|0;n=C+224|0;m=c[n>>2]|0;l=m+a|0;k=C+32|0;j=c[k>>2]|0;i=C+192|0;h=c[i>>2]|0;g=h+j|0;f=C+64|0;e=c[f>>2]|0;b=C+160|0;r=c[b>>2]|0;w=r+e|0;A=C+96|0;y=c[A>>2]|0;t=C+128|0;z=c[t>>2]|0;q=z+y|0;x=l+2+q|0;o=l-q|0;q=w+g|0;l=g-w|0;w=a-m|0;m=j-h|0;h=e-r|0;r=y-z|0;c[C>>2]=x+q>>2;c[t>>2]=x-q>>2;q=((o+l|0)*4433|0)+16384|0;c[f>>2]=q+(o*6270|0)>>15;c[i>>2]=q+(l*-15137|0)>>15;l=h+w|0;q=r+m|0;i=((q+l|0)*9633|0)+16384|0;o=(r+w|0)*-7373|0;f=(h+m|0)*-20995|0;x=i+(l*-3196|0)|0;l=i+(q*-16069|0)|0;c[k>>2]=o+(w*12299|0)+x>>15;c[A>>2]=f+(m*25172|0)+l>>15;c[b>>2]=f+(h*16819|0)+x>>15;c[n>>2]=o+(r*2446|0)+l>>15;if((D|0)>0){C=C+4|0;D=D-1|0}else{break}}return}function QY(a,b,e){a=a|0;b=b|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,t=0,u=0,v=0,w=0,x=0,y=0,z=0;n$(a|0,0,256)|0;f=e+6|0;g=e+1|0;h=e+5|0;i=e+2|0;j=e+4|0;k=e+3|0;l=a;m=0;while(1){n=c[b+(m<<2)>>2]|0;o=d[n+e|0]|0;p=d[n+f|0]|0;q=p+o|0;r=d[n+g|0]|0;s=d[n+h|0]|0;t=s+r|0;u=d[n+i|0]|0;v=d[n+j|0]|0;w=v+u|0;x=d[n+k|0]|0;n=o-p|0;p=r-s|0;s=u-v|0;v=w+q|0;c[l>>2]=(x+t+v<<2)-3584;u=((x*-4|0)+v|0)*2896|0;v=(q-w|0)*7542|0;r=(t-w|0)*2578|0;c[l+8>>2]=v+1024+r+u>>11;w=((q-t|0)*7223|0)+1024|0;c[l+16>>2]=w+r+((t-(x<<1)|0)*-5793|0)>>11;c[l+24>>2]=w-v+u>>11;u=(p+n|0)*7663|0;v=(n-p|0)*1395|0;w=(s+p|0)*-11295|0;p=(s+n|0)*5027|0;c[l+4>>2]=1024-v+u+p>>11;c[l+12>>2]=v+1024+u+w>>11;c[l+20>>2]=(s*15326|0)+1024+p+w>>11;w=m+1|0;if((w|0)<7){l=l+32|0;m=w}else{y=a;z=0;break}}while(1){a=c[y>>2]|0;m=y+192|0;l=c[m>>2]|0;k=l+a|0;j=y+32|0;i=c[j>>2]|0;h=y+160|0;g=c[h>>2]|0;f=g+i|0;e=y+64|0;b=c[e>>2]|0;w=y+128|0;p=c[w>>2]|0;s=p+b|0;u=y+96|0;v=c[u>>2]|0;n=a-l|0;l=i-g|0;g=b-p|0;p=s+k|0;c[y>>2]=((v+f+p|0)*10700|0)+16384>>15;b=((v*-4|0)+p|0)*3783|0;p=(k-s|0)*9850|0;i=(f-s|0)*3367|0;c[e>>2]=p+16384+i+b>>15;e=((k-f|0)*9434|0)+16384|0;c[w>>2]=e+i+((f-(v<<1)|0)*-7566|0)>>15;c[m>>2]=e-p+b>>15;b=(l+n|0)*10009|0;p=(n-l|0)*1822|0;e=(g+l|0)*-14752|0;l=(g+n|0)*6565|0;c[j>>2]=16384-p+b+l>>15;c[u>>2]=p+16384+b+e>>15;c[h>>2]=(g*20017|0)+16384+l+e>>15;e=z+1|0;if((e|0)<7){y=y+4|0;z=e}else{break}}return}function RY(a,b,e){a=a|0;b=b|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,t=0,u=0,v=0,w=0,x=0,y=0;n$(a|0,0,256)|0;f=e+5|0;g=e+1|0;h=e+4|0;i=e+2|0;j=e+3|0;k=a;l=0;while(1){m=c[b+(l<<2)>>2]|0;n=d[m+e|0]|0;o=d[m+f|0]|0;p=o+n|0;q=d[m+g|0]|0;r=d[m+h|0]|0;s=r+q|0;t=d[m+i|0]|0;u=d[m+j|0]|0;m=u+t|0;v=m+p|0;w=n-o|0;o=q-r|0;r=t-u|0;c[k>>2]=(v+s<<2)-3072;c[k+8>>2]=((p-m|0)*10033|0)+1024>>11;c[k+16>>2]=(((s*-2|0)+v|0)*5793|0)+1024>>11;v=((r+w|0)*2998|0)+1024>>11;c[k+4>>2]=v+(o+w<<2);c[k+12>>2]=w-o-r<<2;c[k+20>>2]=v+(r-o<<2);o=l+1|0;if((o|0)<6){k=k+32|0;l=o}else{x=a;y=0;break}}while(1){a=c[x>>2]|0;l=x+160|0;k=c[l>>2]|0;j=k+a|0;i=x+32|0;h=c[i>>2]|0;g=x+128|0;f=c[g>>2]|0;e=f+h|0;b=x+64|0;o=c[b>>2]|0;r=x+96|0;v=c[r>>2]|0;w=v+o|0;s=w+j|0;m=a-k|0;k=h-f|0;f=o-v|0;c[x>>2]=((s+e|0)*14564|0)+16384>>15;c[b>>2]=((j-w|0)*17837|0)+16384>>15;c[g>>2]=(((e*-2|0)+s|0)*10298|0)+16384>>15;s=(f+m|0)*5331|0;c[i>>2]=((k+m|0)*14564|0)+16384+s>>15;c[r>>2]=((m-k-f|0)*14564|0)+16384>>15;c[l>>2]=((f-k|0)*14564|0)+16384+s>>15;s=y+1|0;if((s|0)<6){x=x+4|0;y=s}else{break}}return}function SY(a,b,e){a=a|0;b=b|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,t=0,u=0,v=0;n$(a|0,0,256)|0;f=e+4|0;g=e+1|0;h=e+3|0;i=e+2|0;j=a;k=0;while(1){l=c[b+(k<<2)>>2]|0;m=d[l+e|0]|0;n=d[l+f|0]|0;o=n+m|0;p=d[l+g|0]|0;q=d[l+h|0]|0;r=q+p|0;s=d[l+i|0]|0;l=r+o|0;t=m-n|0;n=p-q|0;c[j>>2]=(l+s<<3)-5120;q=(l-(s<<2)|0)*2896|0;s=((o-r|0)*6476|0)+512|0;c[j+8>>2]=s+q>>10;c[j+16>>2]=s-q>>10;q=(n+t|0)*6810|0;c[j+4>>2]=(t*4209|0)+512+q>>10;c[j+12>>2]=(n*-17828|0)+512+q>>10;q=k+1|0;if((q|0)<5){j=j+32|0;k=q}else{u=a;v=0;break}}while(1){a=c[u>>2]|0;k=u+128|0;j=c[k>>2]|0;i=j+a|0;h=u+32|0;g=c[h>>2]|0;f=u+96|0;e=c[f>>2]|0;b=e+g|0;q=u+64|0;n=c[q>>2]|0;t=b+i|0;s=a-j|0;j=g-e|0;c[u>>2]=((t+n|0)*10486|0)+16384>>15;e=(t-(n<<2)|0)*3707|0;n=((i-b|0)*8290|0)+16384|0;c[q>>2]=n+e>>15;c[k>>2]=n-e>>15;e=(j+s|0)*8716|0;c[h>>2]=(s*5387|0)+16384+e>>15;c[f>>2]=(j*-22820|0)+16384+e>>15;e=v+1|0;if((e|0)<5){u=u+4|0;v=e}else{break}}return}function TY(a,b,e){a=a|0;b=b|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;n$(a|0,0,256)|0;f=e+3|0;g=e+1|0;h=e+2|0;i=a;j=0;while(1){k=c[b+(j<<2)>>2]|0;l=d[k+e|0]|0;m=d[k+f|0]|0;n=m+l|0;o=d[k+g|0]|0;p=d[k+h|0]|0;k=p+o|0;q=l-m|0;m=o-p|0;c[i>>2]=(k+n<<4)-8192;c[i+8>>2]=n-k<<4;k=((m+q|0)*4433|0)+256|0;c[i+4>>2]=k+(q*6270|0)>>9;c[i+12>>2]=k+(m*-15137|0)>>9;m=j+1|0;if((m|0)<4){i=i+32|0;j=m}else{break}}j=c[a>>2]|0;i=a+96|0;h=c[i>>2]|0;g=j+2+h|0;f=a+32|0;e=c[f>>2]|0;b=a+64|0;m=c[b>>2]|0;k=m+e|0;q=j-h|0;h=e-m|0;c[a>>2]=k+g>>2;c[b>>2]=g-k>>2;k=((h+q|0)*4433|0)+16384|0;c[f>>2]=k+(q*6270|0)>>15;c[i>>2]=k+(h*-15137|0)>>15;h=a+4|0;k=c[h>>2]|0;i=a+100|0;q=c[i>>2]|0;f=k+2+q|0;g=a+36|0;b=c[g>>2]|0;m=a+68|0;e=c[m>>2]|0;j=e+b|0;n=k-q|0;q=b-e|0;c[h>>2]=j+f>>2;c[m>>2]=f-j>>2;j=((q+n|0)*4433|0)+16384|0;c[g>>2]=j+(n*6270|0)>>15;c[i>>2]=j+(q*-15137|0)>>15;q=a+8|0;j=c[q>>2]|0;i=a+104|0;n=c[i>>2]|0;g=j+2+n|0;f=a+40|0;m=c[f>>2]|0;h=a+72|0;e=c[h>>2]|0;b=e+m|0;k=j-n|0;n=m-e|0;c[q>>2]=b+g>>2;c[h>>2]=g-b>>2;b=((n+k|0)*4433|0)+16384|0;c[f>>2]=b+(k*6270|0)>>15;c[i>>2]=b+(n*-15137|0)>>15;n=a+12|0;b=c[n>>2]|0;i=a+108|0;k=c[i>>2]|0;f=b+2+k|0;g=a+44|0;h=c[g>>2]|0;q=a+76|0;a=c[q>>2]|0;e=a+h|0;m=b-k|0;k=h-a|0;c[n>>2]=e+f>>2;c[q>>2]=f-e>>2;e=((k+m|0)*4433|0)+16384|0;c[g>>2]=e+(m*6270|0)>>15;c[i>>2]=e+(k*-15137|0)>>15;return}function UY(a,b,e){a=a|0;b=b|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;n$(a|0,0,256)|0;f=e+2|0;g=e+1|0;h=c[b>>2]|0;i=d[h+e|0]|0;j=d[h+f|0]|0;k=j+i|0;l=d[h+g|0]|0;h=(k+l<<4)-6144|0;c[a>>2]=h;c[a+8>>2]=(((l*-2|0)+k|0)*5793|0)+256>>9;k=((i-j|0)*10033|0)+256>>9;j=a+4|0;c[j>>2]=k;i=a+32|0;l=c[b+4>>2]|0;m=d[l+e|0]|0;n=d[l+f|0]|0;o=n+m|0;p=d[l+g|0]|0;l=(o+p<<4)-6144|0;c[i>>2]=l;q=(((p*-2|0)+o|0)*5793|0)+256>>9;c[a+40>>2]=q;o=((m-n|0)*10033|0)+256>>9;c[a+36>>2]=o;n=c[b+8>>2]|0;b=d[n+e|0]|0;e=d[n+f|0]|0;f=e+b|0;m=d[n+g|0]|0;g=(f+m<<4)-6144|0;n=(((m*-2|0)+f|0)*5793|0)+256>>9;f=((b-e|0)*10033|0)+256>>9;e=g+h|0;c[a>>2]=((e+l|0)*14564|0)+16384>>15;c[a+64>>2]=(((l*-2|0)+e|0)*10298|0)+16384>>15;c[i>>2]=((h-g|0)*17837|0)+16384>>15;g=f+k|0;c[j>>2]=((g+o|0)*14564|0)+16384>>15;c[a+68>>2]=(((o*-2|0)+g|0)*10298|0)+16384>>15;c[a+36>>2]=((k-f|0)*17837|0)+16384>>15;f=a+8|0;k=c[f>>2]|0;g=n+k|0;c[f>>2]=((g+q|0)*14564|0)+16384>>15;c[a+72>>2]=(((q*-2|0)+g|0)*10298|0)+16384>>15;c[a+40>>2]=((k-n|0)*17837|0)+16384>>15;return}function VY(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;n$(a|0,0,256)|0;f=c[b>>2]|0;g=d[f+e|0]|0;h=e+1|0;i=d[f+h|0]|0;f=i+g|0;j=g-i|0;i=c[b+4>>2]|0;b=d[i+e|0]|0;e=d[i+h|0]|0;h=e+b|0;i=b-e|0;c[a>>2]=(h+f<<4)-8192;c[a+32>>2]=f-h<<4;c[a+4>>2]=i+j<<4;c[a+36>>2]=j-i<<4;return}function WY(a,b,e){a=a|0;b=b|0;e=e|0;n$(a|0,0,256)|0;c[a>>2]=((d[(c[b>>2]|0)+e|0]|0)<<6)-8192;return}function XY(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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;f=i;i=i+32|0;g=e+8|0;h=e+1|0;j=e+7|0;k=e+2|0;l=e+6|0;m=e+3|0;n=e+5|0;o=e+4|0;p=f|0;q=0;r=a;while(1){s=c[b+(q<<2)>>2]|0;t=d[s+e|0]|0;u=d[s+g|0]|0;v=u+t|0;w=d[s+h|0]|0;x=d[s+j|0]|0;y=x+w|0;z=d[s+k|0]|0;A=d[s+l|0]|0;B=A+z|0;C=d[s+m|0]|0;D=d[s+n|0]|0;E=D+C|0;F=d[s+o|0]|0;s=t-u|0;u=z-A|0;A=C-D|0;D=B+v+E|0;C=F+y|0;c[r>>2]=(D+C<<1)-2304;c[r+24>>2]=(((C*-2|0)+D|0)*5793|0)+2048>>12;D=((F*-2|0)+y|0)*5793|0;y=((v-B|0)*10887|0)+2048|0;c[r+8>>2]=y+((B-E|0)*8875|0)+D>>12;c[r+16>>2]=y+((E-v|0)*2012|0)-D>>12;c[r+12>>2]=((s-u-A|0)*10033|0)+2048>>12;D=(w-x|0)*10033|0;x=(u+s|0)*7447|0;w=(A+s|0)*3962|0;c[r+4>>2]=D+2048+x+w>>12;s=(u-A|0)*11409|0;A=2048-D|0;c[r+20>>2]=A+x-s>>12;c[r+28>>2]=A+w+s>>12;if((q|0)==8){G=a;H=p;I=7;break}else if((q|0)==7){q=8;r=p;continue}q=q+1|0;r=r+32|0}while(1){r=c[G>>2]|0;q=c[H>>2]|0;p=q+r|0;a=G+32|0;o=c[a>>2]|0;n=G+224|0;m=c[n>>2]|0;l=m+o|0;k=G+64|0;j=c[k>>2]|0;h=G+192|0;g=c[h>>2]|0;e=g+j|0;b=G+96|0;s=c[b>>2]|0;w=G+160|0;A=c[w>>2]|0;x=A+s|0;D=G+128|0;u=c[D>>2]|0;v=r-q|0;q=j-g|0;g=s-A|0;A=e+p+x|0;s=u+l|0;c[G>>2]=((A+s|0)*12945|0)+16384>>15;c[h>>2]=(((s*-2|0)+A|0)*9154|0)+16384>>15;A=((u*-2|0)+l|0)*9154|0;l=((p-e|0)*17203|0)+16384|0;c[k>>2]=l+((e-x|0)*14024|0)+A>>15;c[D>>2]=l+((x-p|0)*3179|0)-A>>15;c[b>>2]=((v-q-g|0)*15855|0)+16384>>15;b=(o-m|0)*15855|0;m=(q+v|0)*11768|0;o=(g+v|0)*6262|0;c[a>>2]=b+16384+m+o>>15;a=(q-g|0)*18029|0;g=16384-b|0;c[w>>2]=g+m-a>>15;c[n>>2]=g+o+a>>15;if((I|0)>0){G=G+4|0;H=H+4|0;I=I-1|0}else{break}}i=f;return}function YY(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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,J=0,K=0,L=0,M=0;f=i;i=i+64|0;g=e+9|0;h=e+1|0;j=e+8|0;k=e+2|0;l=e+7|0;m=e+3|0;n=e+6|0;o=e+4|0;p=e+5|0;q=f|0;r=0;s=a;while(1){t=c[b+(r<<2)>>2]|0;u=d[t+e|0]|0;v=d[t+g|0]|0;w=v+u|0;x=d[t+h|0]|0;y=d[t+j|0]|0;z=y+x|0;A=d[t+k|0]|0;B=d[t+l|0]|0;C=B+A|0;D=d[t+m|0]|0;E=d[t+n|0]|0;F=E+D|0;G=d[t+o|0]|0;H=d[t+p|0]|0;t=H+G|0;I=t+w|0;J=w-t|0;t=F+z|0;w=z-F|0;F=u-v|0;v=x-y|0;y=A-B|0;B=D-E|0;E=G-H|0;c[s>>2]=(t+C+I<<1)-2560;H=C<<1;c[s+16>>2]=((t-H|0)*-3580|0)+2048+((I-H|0)*9373|0)>>12;H=(J+w|0)*6810|0;c[s+8>>2]=(J*4209|0)+2048+H>>12;c[s+24>>2]=(w*-17828|0)+2048+H>>12;H=E+F|0;w=v-B|0;c[s+20>>2]=H-(w+y)<<1;J=y<<13;c[s+4>>2]=(F*11443|0)+2048+(v*10323|0)+J+(B*5260|0)+(E*1812|0)>>12;y=(w<<12)-J+((H+w|0)*2531|0)|0;w=((F-E|0)*7791|0)+((B+v|0)*-4815|0)+2048|0;c[s+12>>2]=w+y>>12;c[s+28>>2]=w-y>>12;if((r|0)==9){K=a;L=q;M=7;break}else if((r|0)==7){r=8;s=q;continue}r=r+1|0;s=s+32|0}while(1){s=c[K>>2]|0;r=c[L+32>>2]|0;q=r+s|0;a=K+32|0;p=c[a>>2]|0;o=c[L>>2]|0;n=o+p|0;m=K+64|0;l=c[m>>2]|0;k=K+224|0;j=c[k>>2]|0;h=j+l|0;g=K+96|0;e=c[g>>2]|0;b=K+192|0;y=c[b>>2]|0;w=y+e|0;v=K+128|0;B=c[v>>2]|0;E=K+160|0;F=c[E>>2]|0;H=F+B|0;J=H+q|0;I=q-H|0;H=w+n|0;q=n-w|0;w=s-r|0;r=p-o|0;o=l-j|0;j=e-y|0;y=B-F|0;c[K>>2]=((H+h+J|0)*10486|0)+16384>>15;F=h<<1;c[v>>2]=((H-F|0)*-4582|0)+16384+((J-F|0)*11997|0)>>15;F=(I+q|0)*8716|0;c[m>>2]=(I*5387|0)+16384+F>>15;c[b>>2]=(q*-22820|0)+16384+F>>15;F=y+w|0;q=r-j|0;c[E>>2]=((F-(q+o)|0)*10486|0)+16384>>15;E=o*10486|0;c[a>>2]=(w*14647|0)+16384+(r*13213|0)+E+(j*6732|0)+(y*2320|0)>>15;a=(q*5243|0)-E+((F+q|0)*3240|0)|0;q=((w-y|0)*9973|0)+((j+r|0)*-6163|0)+16384|0;c[g>>2]=q+a>>15;c[k>>2]=q-a>>15;if((M|0)>0){K=K+4|0;L=L+4|0;M=M-1|0}else{break}}i=f;return}function ZY(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0;f=i;i=i+96|0;g=e+10|0;h=e+1|0;j=e+9|0;k=e+2|0;l=e+8|0;m=e+3|0;n=e+7|0;o=e+4|0;p=e+6|0;q=e+5|0;r=f|0;s=0;t=a;while(1){u=c[b+(s<<2)>>2]|0;v=d[u+e|0]|0;w=d[u+g|0]|0;x=w+v|0;y=d[u+h|0]|0;z=d[u+j|0]|0;A=z+y|0;B=d[u+k|0]|0;C=d[u+l|0]|0;D=C+B|0;E=d[u+m|0]|0;F=d[u+n|0]|0;G=F+E|0;H=d[u+o|0]|0;I=d[u+p|0]|0;J=I+H|0;K=d[u+q|0]|0;u=v-w|0;w=y-z|0;z=B-C|0;C=E-F|0;F=H-I|0;c[t>>2]=(A+x+D+G+J+K<<1)-2816;I=K<<1;K=x-I|0;x=A-I|0;A=D-I|0;D=G-I|0;G=J-I|0;I=((K+D|0)*11116|0)+((A+G|0)*1649|0)|0;J=(x-D|0)*7587|0;H=(K-x|0)*9746|0;c[t+8>>2]=(D*-8342|0)+2048+(G*-11395|0)+J+I>>12;c[t+16>>2]=(x*511|0)+2048+(A*-11116|0)+(G*4813|0)+H+J>>12;c[t+24>>2]=(K*-13275|0)+2048+(A*-6461|0)+H+I>>12;I=(w+u|0)*10538|0;H=(z+u|0)*8756|0;A=(C+u|0)*6263|0;K=(z+w|0)*-6263|0;J=(C+w|0)*-11467|0;G=(C+z|0)*3264|0;c[t+4>>2]=(u*-14090|0)+2048+I+H+A+(F*3264|0)>>12;c[t+12>>2]=(w*10456|0)+2048+I+K+J+(F*-8756|0)>>12;c[t+20>>2]=(z*-16294|0)+2048+K+H+G+(F*11467|0)>>12;c[t+28>>2]=(C*10695|0)+2048+G+J+A+(F*-10538|0)>>12;if((s|0)==7){s=8;t=r;continue}else if((s|0)==10){L=a;M=r;N=7;break}s=s+1|0;t=t+32|0}while(1){t=c[L>>2]|0;s=c[M+64>>2]|0;r=s+t|0;a=L+32|0;q=c[a>>2]|0;p=c[M+32>>2]|0;o=p+q|0;n=L+64|0;m=c[n>>2]|0;l=c[M>>2]|0;k=l+m|0;j=L+96|0;h=c[j>>2]|0;g=L+224|0;e=c[g>>2]|0;b=e+h|0;F=L+128|0;A=c[F>>2]|0;J=L+192|0;G=c[J>>2]|0;C=G+A|0;H=L+160|0;K=c[H>>2]|0;z=t-s|0;s=q-p|0;p=m-l|0;l=h-e|0;e=A-G|0;c[L>>2]=((o+r+k+b+C+K|0)*8666|0)+16384>>15;G=K<<1;K=r-G|0;r=o-G|0;o=k-G|0;k=b-G|0;b=C-G|0;G=((K+k|0)*11759|0)+((o+b|0)*1744|0)|0;C=(r-k|0)*8026|0;A=(K-r|0)*10310|0;c[n>>2]=(k*-8825|0)+16384+(b*-12054|0)+C+G>>15;c[F>>2]=(r*540|0)+16384+(o*-11759|0)+(b*5091|0)+A+C>>15;c[J>>2]=(K*-14043|0)+16384+(o*-6835|0)+A+G>>15;G=(s+z|0)*11148|0;A=(p+z|0)*9262|0;o=(l+z|0)*6626|0;K=(p+s|0)*-6626|0;J=(l+s|0)*-12131|0;C=(l+p|0)*3453|0;c[a>>2]=(z*-14905|0)+16384+G+A+o+(e*3453|0)>>15;c[j>>2]=(s*11061|0)+16384+G+K+J+(e*-9262|0)>>15;c[H>>2]=(p*-17237|0)+16384+K+A+C+(e*12131|0)>>15;c[g>>2]=(l*11314|0)+16384+C+J+o+(e*-11148|0)>>15;if((N|0)>0){L=L+4|0;M=M+4|0;N=N-1|0}else{break}}i=f;return}function _Y(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;f=i;i=i+128|0;g=e+11|0;h=e+1|0;j=e+10|0;k=e+2|0;l=e+9|0;m=e+3|0;n=e+8|0;o=e+4|0;p=e+7|0;q=e+5|0;r=e+6|0;s=f|0;t=0;u=a;while(1){v=c[b+(t<<2)>>2]|0;w=d[v+e|0]|0;x=d[v+g|0]|0;y=x+w|0;z=d[v+h|0]|0;A=d[v+j|0]|0;B=A+z|0;C=d[v+k|0]|0;D=d[v+l|0]|0;E=D+C|0;F=d[v+m|0]|0;G=d[v+n|0]|0;H=G+F|0;I=d[v+o|0]|0;J=d[v+p|0]|0;K=J+I|0;L=d[v+q|0]|0;M=d[v+r|0]|0;v=M+L|0;N=v+y|0;O=y-v|0;v=B-K|0;y=H+E|0;P=E-H|0;H=w-x|0;x=z-A|0;A=C-D|0;D=F-G|0;G=I-J|0;J=L-M|0;c[u>>2]=B-1536+y+K+N;c[u+24>>2]=O-(v+P);c[u+16>>2]=((N-y|0)*10033|0)+4096>>13;c[u+8>>2]=4096-P+v+((O+P|0)*11190|0)>>13;P=(G+x|0)*4433|0;O=P+(x*6270|0)|0;x=P+(G*-15137|0)|0;G=(A+H|0)*9191|0;P=(D+H|0)*7053|0;v=(D+A|0)*-1512|0;c[u+4>>2]=(H*-4758|0)+4096+G+P+O+(J*1512|0)>>13;c[u+12>>2]=((H-D|0)*10703|0)+4096+x+((J+A|0)*-4433|0)>>13;c[u+20>>2]=(A*-19165|0)+4096+G+v-x+(J*7053|0)>>13;c[u+28>>2]=(D*5946|0)+4096+v+P-O+(J*-9191|0)>>13;if((t|0)==11){Q=a;R=s;S=7;break}else if((t|0)==7){t=8;u=s;continue}t=t+1|0;u=u+32|0}while(1){u=c[Q>>2]|0;t=c[R+96>>2]|0;s=t+u|0;a=Q+32|0;r=c[a>>2]|0;q=c[R+64>>2]|0;p=q+r|0;o=Q+64|0;n=c[o>>2]|0;m=c[R+32>>2]|0;l=m+n|0;k=Q+96|0;j=c[k>>2]|0;h=c[R>>2]|0;g=h+j|0;e=Q+128|0;b=c[e>>2]|0;J=Q+224|0;O=c[J>>2]|0;P=O+b|0;v=Q+160|0;D=c[v>>2]|0;x=Q+192|0;G=c[x>>2]|0;A=G+D|0;H=A+s|0;y=s-A|0;A=p-P|0;s=g+l|0;N=l-g|0;g=u-t|0;t=r-q|0;q=n-m|0;m=j-h|0;h=b-O|0;O=D-G|0;c[Q>>2]=((s+p+P+H|0)*7282|0)+8192>>14;c[x>>2]=((y-(A+N)|0)*7282|0)+8192>>14;c[e>>2]=((H-s|0)*8918|0)+8192>>14;c[o>>2]=((A-N|0)*7282|0)+8192+((y+N|0)*9947|0)>>14;N=(h+t|0)*3941|0;y=N+(t*5573|0)|0;t=N+(h*-13455|0)|0;h=(q+g|0)*8170|0;N=(m+g|0)*6269|0;A=(m+q|0)*-1344|0;c[a>>2]=(g*-4229|0)+8192+h+N+y+(O*1344|0)>>14;c[k>>2]=((g-m|0)*9514|0)+8192+t+((O+q|0)*-3941|0)>>14;c[v>>2]=(q*-17036|0)+8192+h+A-t+(O*6269|0)>>14;c[J>>2]=(m*5285|0)+8192+A+N-y+(O*-8170|0)>>14;if((S|0)>0){Q=Q+4|0;R=R+4|0;S=S-1|0}else{break}}i=f;return}function $Y(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;f=i;i=i+160|0;g=e+12|0;h=e+1|0;j=e+11|0;k=e+2|0;l=e+10|0;m=e+3|0;n=e+9|0;o=e+4|0;p=e+8|0;q=e+5|0;r=e+7|0;s=e+6|0;t=f|0;u=0;v=a;while(1){w=c[b+(u<<2)>>2]|0;x=d[w+e|0]|0;y=d[w+g|0]|0;z=y+x|0;A=d[w+h|0]|0;B=d[w+j|0]|0;C=B+A|0;D=d[w+k|0]|0;E=d[w+l|0]|0;F=E+D|0;G=d[w+m|0]|0;H=d[w+n|0]|0;I=H+G|0;J=d[w+o|0]|0;K=d[w+p|0]|0;L=K+J|0;M=d[w+q|0]|0;N=d[w+r|0]|0;O=N+M|0;P=d[w+s|0]|0;w=x-y|0;y=A-B|0;B=D-E|0;E=G-H|0;H=J-K|0;K=M-N|0;c[v>>2]=z-1664+C+F+I+L+O+P;N=P<<1;P=z-N|0;z=C-N|0;C=F-N|0;F=I-N|0;I=L-N|0;L=O-N|0;c[v+8>>2]=(z*8672|0)+4096+(P*11249|0)+(C*4108|0)+(F*-1396|0)+(I*-6581|0)+(L*-10258|0)>>13;N=((P-C|0)*9465|0)+((F-I|0)*-3570|0)+((z-L|0)*-2592|0)|0;O=((P+C|0)*793|0)+((F+I|0)*-7678|0)+((z+L|0)*3989|0)|0;c[v+16>>2]=O+4096+N>>13;c[v+24>>2]=4096-O+N>>13;N=(y+w|0)*10832|0;O=(B+w|0)*9534|0;L=((K+H|0)*2773|0)+((E+w|0)*7682|0)|0;z=((H-K|0)*7682|0)+((B+y|0)*-2773|0)|0;I=(E+y|0)*-9534|0;F=(E+B|0)*-5384|0;c[v+4>>2]=(w*-16549|0)+4096+N+O+(H*2611|0)+L>>13;c[v+12>>2]=(y*6859|0)+4096+N+I+(H*-19183|0)+z>>13;c[v+20>>2]=(B*-12879|0)+4096+O+F+(K*18515|0)+z>>13;c[v+28>>2]=(E*18068|0)+4096+F+I+(K*-14273|0)+L>>13;if((u|0)==7){u=8;v=t;continue}else if((u|0)==12){Q=a;R=t;S=7;break}u=u+1|0;v=v+32|0}while(1){v=c[Q>>2]|0;u=c[R+128>>2]|0;t=u+v|0;a=Q+32|0;s=c[a>>2]|0;r=c[R+96>>2]|0;q=r+s|0;p=Q+64|0;o=c[p>>2]|0;n=c[R+64>>2]|0;m=n+o|0;l=Q+96|0;k=c[l>>2]|0;j=c[R+32>>2]|0;h=j+k|0;g=Q+128|0;e=c[g>>2]|0;b=c[R>>2]|0;L=b+e|0;K=Q+160|0;I=c[K>>2]|0;F=Q+224|0;E=c[F>>2]|0;z=E+I|0;O=Q+192|0;B=c[O>>2]|0;H=v-u|0;u=s-r|0;r=o-n|0;n=k-j|0;j=e-b|0;b=I-E|0;c[Q>>2]=((q+t+m+h+L+z+B|0)*6205|0)+8192>>14;E=B<<1;B=t-E|0;t=q-E|0;q=m-E|0;m=h-E|0;h=L-E|0;L=z-E|0;c[p>>2]=(t*6568|0)+8192+(B*8520|0)+(q*3112|0)+(m*-1058|0)+(h*-4985|0)+(L*-7770|0)>>14;p=((B-q|0)*7169|0)+((m-h|0)*-2704|0)+((t-L|0)*-1963|0)|0;E=((B+q|0)*601|0)+((m+h|0)*-5816|0)+((t+L|0)*3021|0)|0;c[g>>2]=E+8192+p>>14;c[O>>2]=8192-E+p>>14;p=(u+H|0)*8204|0;E=(r+H|0)*7221|0;O=((b+j|0)*2100|0)+((n+H|0)*5819|0)|0;g=((j-b|0)*5819|0)+((r+u|0)*-2100|0)|0;L=(n+u|0)*-7221|0;t=(n+r|0)*-4078|0;c[a>>2]=(H*-12534|0)+8192+p+E+(j*1978|0)+O>>14;c[l>>2]=(u*5195|0)+8192+p+L+(j*-14529|0)+g>>14;c[K>>2]=(r*-9754|0)+8192+E+t+(b*14023|0)+g>>14;c[F>>2]=(n*13685|0)+8192+t+L+(b*-10811|0)+O>>14;if((S|0)>0){Q=Q+4|0;R=R+4|0;S=S-1|0}else{break}}i=f;return}function aZ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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,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=i;i=i+192|0;g=e+13|0;h=e+1|0;j=e+12|0;k=e+2|0;l=e+11|0;m=e+3|0;n=e+10|0;o=e+4|0;p=e+9|0;q=e+5|0;r=e+8|0;s=e+6|0;t=e+7|0;u=f|0;v=0;w=a;while(1){x=c[b+(v<<2)>>2]|0;y=d[x+e|0]|0;z=d[x+g|0]|0;A=z+y|0;B=d[x+h|0]|0;C=d[x+j|0]|0;D=C+B|0;E=d[x+k|0]|0;F=d[x+l|0]|0;G=F+E|0;H=d[x+m|0]|0;I=d[x+n|0]|0;J=I+H|0;K=d[x+o|0]|0;L=d[x+p|0]|0;M=L+K|0;N=d[x+q|0]|0;O=d[x+r|0]|0;P=O+N|0;Q=d[x+s|0]|0;R=d[x+t|0]|0;x=R+Q|0;S=x+A|0;T=A-x|0;x=P+D|0;A=D-P|0;P=M+G|0;D=G-M|0;M=y-z|0;z=B-C|0;C=E-F|0;F=H-I|0;I=K-L|0;L=N-O|0;O=Q-R|0;c[w>>2]=J-1792+P+x+S;R=J<<1;c[w+16>>2]=((P-R|0)*-7223|0)+4096+((x-R|0)*2578|0)+((S-R|0)*10438|0)>>13;R=(T+A|0)*9058|0;c[w+8>>2]=(D*5027|0)+4096+(T*2237|0)+R>>13;c[w+24>>2]=(D*-11295|0)+4096+(A*-14084|0)+R>>13;R=C+z|0;A=L-I|0;c[w+28>>2]=M-R+F-A-O;D=F<<13;F=(A*11512|0)-D+(R*-1297|0)|0;R=((O+I|0)*6164|0)+((C+M|0)*9810|0)|0;c[w+20>>2]=(C*-19447|0)+4096+(I*9175|0)+F+R>>13;I=((L-O|0)*3826|0)+((z+M|0)*10935|0)|0;c[w+12>>2]=(z*-3474|0)+4096+(L*-25148|0)+F+I>>13;c[w+4>>2]=(D|4096)+O+((O+M|0)*-9232|0)+I+R>>13;if((v|0)==7){v=8;w=u;continue}else if((v|0)==13){U=a;V=u;W=7;break}v=v+1|0;w=w+32|0}while(1){w=c[U>>2]|0;v=c[V+160>>2]|0;u=v+w|0;a=U+32|0;t=c[a>>2]|0;s=c[V+128>>2]|0;r=s+t|0;q=U+64|0;p=c[q>>2]|0;o=c[V+96>>2]|0;n=o+p|0;m=U+96|0;l=c[m>>2]|0;k=c[V+64>>2]|0;j=k+l|0;h=U+128|0;g=c[h>>2]|0;e=c[V+32>>2]|0;b=e+g|0;R=U+160|0;I=c[R>>2]|0;M=c[V>>2]|0;O=M+I|0;D=U+192|0;F=c[D>>2]|0;L=U+224|0;z=c[L>>2]|0;C=z+F|0;A=C+u|0;T=u-C|0;C=O+r|0;u=r-O|0;O=b+n|0;r=n-b|0;b=w-v|0;v=t-s|0;s=p-o|0;o=l-k|0;k=g-e|0;e=I-M|0;M=F-z|0;c[U>>2]=((O+j+C+A|0)*5350|0)+8192>>14;z=j<<1;c[h>>2]=((O-z|0)*-4717|0)+8192+((C-z|0)*1684|0)+((A-z|0)*6817|0)>>14;z=(T+u|0)*5915|0;c[q>>2]=(r*3283|0)+8192+(T*1461|0)+z>>14;c[D>>2]=(r*-7376|0)+8192+(u*-9198|0)+z>>14;z=s+v|0;u=e-k|0;c[L>>2]=((b-z+o-u-M|0)*5350|0)+8192>>14;L=o*5350|0;o=(u*7518|0)-L+(z*-847|0)|0;z=((M+k|0)*4025|0)+((s+b|0)*6406|0)|0;c[R>>2]=(s*-12700|0)+8192+(k*5992|0)+o+z>>14;k=((e-M|0)*2499|0)+((v+b|0)*7141|0)|0;c[m>>2]=(v*-2269|0)+8192+(e*-16423|0)+o+k>>14;c[a>>2]=(b*-6029|0)+8192+L+(M*-679|0)+k+z>>14;if((W|0)>0){U=U+4|0;V=V+4|0;W=W-1|0}else{break}}i=f;return}function bZ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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,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;f=i;i=i+224|0;g=e+14|0;h=e+1|0;j=e+13|0;k=e+2|0;l=e+12|0;m=e+3|0;n=e+11|0;o=e+4|0;p=e+10|0;q=e+5|0;r=e+9|0;s=e+6|0;t=e+8|0;u=e+7|0;v=f|0;w=0;x=a;while(1){y=c[b+(w<<2)>>2]|0;z=d[y+e|0]|0;A=d[y+g|0]|0;B=A+z|0;C=d[y+h|0]|0;D=d[y+j|0]|0;E=D+C|0;F=d[y+k|0]|0;G=d[y+l|0]|0;H=G+F|0;I=d[y+m|0]|0;J=d[y+n|0]|0;K=J+I|0;L=d[y+o|0]|0;M=d[y+p|0]|0;N=M+L|0;O=d[y+q|0]|0;P=d[y+r|0]|0;Q=P+O|0;R=d[y+s|0]|0;S=d[y+t|0]|0;T=S+R|0;U=d[y+u|0]|0;y=z-A|0;A=C-D|0;D=F-G|0;G=I-J|0;J=L-M|0;M=O-P|0;P=R-S|0;S=N+B+Q|0;R=K+E+T|0;O=U+H|0;c[x>>2]=S-1920+R+O;L=O<<1;c[x+24>>2]=((R-L|0)*-3580|0)+4096+((S-L|0)*9373|0)>>13;L=((N+E|0)>>>1)+H+(U*-2|0)|0;U=((E-N|0)*6476|0)+((B-K|0)*11332|0)+((T-Q|0)*7752|0)+4096|0;c[x+8>>2]=U+((T-L|0)*-18336|0)+((K-L|0)*12543|0)>>13;c[x+16>>2]=U+((B-L|0)*-748|0)+((Q-L|0)*6541|0)>>13;L=D*10033|0;Q=((M+G|0)*4712|0)+((J+A|0)*11018|0)+((y-P|0)*11522|0)|0;c[x+4>>2]=L+4096+(G*3897|0)+(J*-4209|0)+(P*13930|0)+Q>>13;c[x+12>>2]=((y-J-M|0)*11018|0)+4096+((A-G-P|0)*6810|0)>>13;c[x+20>>2]=((y-D-G+M+P|0)*10033|0)+4096>>13;c[x+28>>2]=(y*-2912|0)+4096+(A*-17828|0)-L+(M*-7121|0)+Q>>13;if((w|0)==14){V=a;W=v;X=7;break}else if((w|0)==7){w=8;x=v;continue}w=w+1|0;x=x+32|0}while(1){x=c[V>>2]|0;w=c[W+192>>2]|0;v=w+x|0;a=V+32|0;u=c[a>>2]|0;t=c[W+160>>2]|0;s=t+u|0;r=V+64|0;q=c[r>>2]|0;p=c[W+128>>2]|0;o=p+q|0;n=V+96|0;m=c[n>>2]|0;l=c[W+96>>2]|0;k=l+m|0;j=V+128|0;h=c[j>>2]|0;g=c[W+64>>2]|0;e=g+h|0;b=V+160|0;Q=c[b>>2]|0;M=c[W+32>>2]|0;L=M+Q|0;A=V+192|0;y=c[A>>2]|0;P=c[W>>2]|0;G=P+y|0;D=V+224|0;J=c[D>>2]|0;B=x-w|0;w=u-t|0;t=q-p|0;p=m-l|0;l=h-g|0;g=Q-M|0;M=y-P|0;P=e+v+L|0;y=k+s+G|0;Q=J+o|0;c[V>>2]=((y+P+Q|0)*9321|0)+16384>>15;h=Q<<1;c[A>>2]=((y-h|0)*-4073|0)+16384+((P-h|0)*10664|0)>>15;h=(e+s>>1)+o+(J*-2|0)|0;J=((s-e|0)*7369|0)+((v-k|0)*12893|0)+((G-L|0)*8820|0)+16384|0;c[r>>2]=J+((G-h|0)*-20862|0)+((k-h|0)*14271|0)>>15;c[j>>2]=J+((v-h|0)*-852|0)+((L-h|0)*7442|0)>>15;h=t*11415|0;L=((g+p|0)*5361|0)+((l+w|0)*12536|0)+((B-M|0)*13109|0)|0;c[a>>2]=h+16384+(p*4434|0)+(l*-4788|0)+(M*15850|0)+L>>15;c[n>>2]=((B-l-g|0)*12536|0)+16384+((w-p-M|0)*7748|0)>>15;c[b>>2]=((B-t-p+g+M|0)*11415|0)+16384>>15;c[D>>2]=(B*-3314|0)+16384+(w*-20284|0)-h+(g*-8102|0)+L>>15;if((X|0)>0){V=V+4|0;W=W+4|0;X=X-1|0}else{break}}i=f;return}function cZ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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,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,_=0,$=0;f=i;i=i+256|0;g=e+15|0;h=e+1|0;j=e+14|0;k=e+2|0;l=e+13|0;m=e+3|0;n=e+12|0;o=e+4|0;p=e+11|0;q=e+5|0;r=e+10|0;s=e+6|0;t=e+9|0;u=e+7|0;v=e+8|0;w=f|0;x=0;y=a;while(1){z=c[b+(x<<2)>>2]|0;A=d[z+e|0]|0;B=d[z+g|0]|0;C=B+A|0;D=d[z+h|0]|0;E=d[z+j|0]|0;F=E+D|0;G=d[z+k|0]|0;H=d[z+l|0]|0;I=H+G|0;J=d[z+m|0]|0;K=d[z+n|0]|0;L=K+J|0;M=d[z+o|0]|0;N=d[z+p|0]|0;O=N+M|0;P=d[z+q|0]|0;Q=d[z+r|0]|0;R=Q+P|0;S=d[z+s|0]|0;T=d[z+t|0]|0;U=T+S|0;V=d[z+u|0]|0;W=d[z+v|0]|0;z=W+V|0;X=z+C|0;Y=C-z|0;z=U+F|0;C=F-U|0;U=R+I|0;F=I-R|0;R=O+L|0;I=L-O|0;O=A-B|0;B=D-E|0;E=G-H|0;H=J-K|0;K=M-N|0;N=P-Q|0;Q=S-T|0;T=V-W|0;c[y>>2]=(U+R+z+X<<2)-8192;c[y+16>>2]=((z-U|0)*4433|0)+1024+((X-R|0)*10703|0)>>11;R=((Y-F|0)*11363|0)+((I-C|0)*2260|0)|0;c[y+8>>2]=(F*17799|0)+1024+(C*11893|0)+R>>11;c[y+24>>2]=(I*-8697|0)+1024+(Y*-1730|0)+R>>11;R=((Q-T|0)*3363|0)+((B+O|0)*11086|0)|0;Y=((T+N|0)*5461|0)+((E+O|0)*10217|0)|0;I=((K-T|0)*7350|0)+((H+O|0)*8956|0)|0;C=((Q-N|0)*11529|0)+((E+B|0)*1136|0)|0;F=((Q+K|0)*-10217|0)+((H+B|0)*-5461|0)|0;X=((N-K|0)*3363|0)+((H+E|0)*-11086|0)|0;c[y+4>>2]=(O*-18730|0)+1024+(T*6387|0)+Y+R+I>>11;c[y+12>>2]=(B*589|0)+1024+(Q*-13631|0)+F+C+R>>11;c[y+20>>2]=(E*-9222|0)+1024+(N*10055|0)+X+C+Y>>11;c[y+28>>2]=(H*8728|0)+1024+(K*17760|0)+X+F+I>>11;if((x|0)==15){Z=a;_=w;$=7;break}else if((x|0)==7){x=8;y=w;continue}x=x+1|0;y=y+32|0}while(1){y=c[Z>>2]|0;x=c[_+224>>2]|0;w=x+y|0;a=Z+32|0;v=c[a>>2]|0;u=c[_+192>>2]|0;t=u+v|0;s=Z+64|0;r=c[s>>2]|0;q=c[_+160>>2]|0;p=q+r|0;o=Z+96|0;n=c[o>>2]|0;m=c[_+128>>2]|0;l=m+n|0;k=Z+128|0;j=c[k>>2]|0;h=c[_+96>>2]|0;g=h+j|0;e=Z+160|0;b=c[e>>2]|0;I=c[_+64>>2]|0;F=I+b|0;X=Z+192|0;K=c[X>>2]|0;H=c[_+32>>2]|0;Y=H+K|0;C=Z+224|0;N=c[C>>2]|0;E=c[_>>2]|0;R=E+N|0;Q=R+w|0;B=w-R|0;R=Y+t|0;w=t-Y|0;Y=F+p|0;t=p-F|0;F=g+l|0;p=l-g|0;g=y-x|0;x=v-u|0;u=r-q|0;q=n-m|0;m=j-h|0;h=b-I|0;I=K-H|0;H=N-E|0;c[Z>>2]=F+8+Y+R+Q>>4;c[k>>2]=((R-Y|0)*4433|0)+65536+((Q-F|0)*10703|0)>>17;F=((B-t|0)*11363|0)+((p-w|0)*2260|0)|0;c[s>>2]=(t*17799|0)+65536+(w*11893|0)+F>>17;c[X>>2]=(p*-8697|0)+65536+(B*-1730|0)+F>>17;F=((I-H|0)*3363|0)+((x+g|0)*11086|0)|0;B=((H+h|0)*5461|0)+((u+g|0)*10217|0)|0;p=((m-H|0)*7350|0)+((q+g|0)*8956|0)|0;X=((I-h|0)*11529|0)+((u+x|0)*1136|0)|0;w=((I+m|0)*-10217|0)+((q+x|0)*-5461|0)|0;t=((h-m|0)*3363|0)+((q+u|0)*-11086|0)|0;c[a>>2]=(g*-18730|0)+65536+(H*6387|0)+B+F+p>>17;c[o>>2]=(x*589|0)+65536+(I*-13631|0)+w+X+F>>17;c[e>>2]=(u*-9222|0)+65536+(h*10055|0)+t+X+B>>17;c[C>>2]=(q*8728|0)+65536+(m*17760|0)+t+w+p>>17;if(($|0)>0){Z=Z+4|0;_=_+4|0;$=$-1|0}else{break}}i=f;return}function dZ(a,b,e){a=a|0;b=b|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,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,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;f=e+15|0;g=e+1|0;h=e+14|0;i=e+2|0;j=e+13|0;k=e+3|0;l=e+12|0;m=e+4|0;n=e+11|0;o=e+5|0;p=e+10|0;q=e+6|0;r=e+9|0;s=e+7|0;t=e+8|0;u=a;v=0;while(1){w=c[b+(v<<2)>>2]|0;x=d[w+e|0]|0;y=d[w+f|0]|0;z=y+x|0;A=d[w+g|0]|0;B=d[w+h|0]|0;C=B+A|0;D=d[w+i|0]|0;E=d[w+j|0]|0;F=E+D|0;G=d[w+k|0]|0;H=d[w+l|0]|0;I=H+G|0;J=d[w+m|0]|0;K=d[w+n|0]|0;L=K+J|0;M=d[w+o|0]|0;N=d[w+p|0]|0;O=N+M|0;P=d[w+q|0]|0;Q=d[w+r|0]|0;R=Q+P|0;S=d[w+s|0]|0;T=d[w+t|0]|0;w=T+S|0;U=w+z|0;V=z-w|0;w=R+C|0;z=C-R|0;R=O+F|0;C=F-O|0;O=L+I|0;F=I-L|0;L=x-y|0;y=A-B|0;B=D-E|0;E=G-H|0;H=J-K|0;K=M-N|0;N=P-Q|0;Q=S-T|0;c[u>>2]=(R+O+w+U<<2)-8192;c[u+16>>2]=((w-R|0)*4433|0)+1024+((U-O|0)*10703|0)>>11;O=((V-C|0)*11363|0)+((F-z|0)*2260|0)|0;c[u+8>>2]=(C*17799|0)+1024+(z*11893|0)+O>>11;c[u+24>>2]=(F*-8697|0)+1024+(V*-1730|0)+O>>11;O=((N-Q|0)*3363|0)+((y+L|0)*11086|0)|0;V=((Q+K|0)*5461|0)+((B+L|0)*10217|0)|0;F=((H-Q|0)*7350|0)+((E+L|0)*8956|0)|0;z=((N-K|0)*11529|0)+((B+y|0)*1136|0)|0;C=((N+H|0)*-10217|0)+((E+y|0)*-5461|0)|0;U=((K-H|0)*3363|0)+((E+B|0)*-11086|0)|0;c[u+4>>2]=(L*-18730|0)+1024+(Q*6387|0)+V+O+F>>11;c[u+12>>2]=(y*589|0)+1024+(N*-13631|0)+C+z+O>>11;c[u+20>>2]=(B*-9222|0)+1024+(K*10055|0)+U+z+V>>11;c[u+28>>2]=(E*8728|0)+1024+(H*17760|0)+U+C+F>>11;F=v+1|0;if((F|0)<8){u=u+32|0;v=F}else{W=a;X=7;break}}while(1){a=c[W>>2]|0;v=W+224|0;u=c[v>>2]|0;t=u+a|0;s=W+32|0;r=c[s>>2]|0;q=W+192|0;p=c[q>>2]|0;o=p+r|0;n=W+64|0;m=c[n>>2]|0;l=W+160|0;k=c[l>>2]|0;j=k+m|0;i=W+96|0;h=c[i>>2]|0;g=W+128|0;f=c[g>>2]|0;e=f+h|0;b=e+t|0;F=t-e|0;e=j+o|0;t=o-j|0;j=a-u|0;u=r-p|0;p=m-k|0;k=h-f|0;c[W>>2]=e+4+b>>3;c[g>>2]=4-e+b>>3;b=(F+t|0)*4433|0;c[n>>2]=(F*6270|0)+32768+b>>16;c[q>>2]=(t*-15137|0)+32768+b>>16;b=p+j|0;t=k+u|0;q=(t+b|0)*9633|0;F=(k+j|0)*-7373|0;n=(p+u|0)*-20995|0;e=q+(b*-3196|0)|0;b=q+(t*-16069|0)|0;c[s>>2]=(j*12299|0)+32768+F+e>>16;c[i>>2]=(u*25172|0)+32768+n+b>>16;c[l>>2]=(p*16819|0)+32768+n+e>>16;c[v>>2]=(k*2446|0)+32768+F+b>>16;if((X|0)>0){W=W+4|0;X=X-1|0}else{break}}return}function eZ(a,b,e){a=a|0;b=b|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,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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;n$(a+224|0,0,32)|0;f=e+13|0;g=e+1|0;h=e+12|0;i=e+2|0;j=e+11|0;k=e+3|0;l=e+10|0;m=e+4|0;n=e+9|0;o=e+5|0;p=e+8|0;q=e+6|0;r=e+7|0;s=a;t=0;while(1){u=c[b+(t<<2)>>2]|0;v=d[u+e|0]|0;w=d[u+f|0]|0;x=w+v|0;y=d[u+g|0]|0;z=d[u+h|0]|0;A=z+y|0;B=d[u+i|0]|0;C=d[u+j|0]|0;D=C+B|0;E=d[u+k|0]|0;F=d[u+l|0]|0;G=F+E|0;H=d[u+m|0]|0;I=d[u+n|0]|0;J=I+H|0;K=d[u+o|0]|0;L=d[u+p|0]|0;M=L+K|0;N=d[u+q|0]|0;O=d[u+r|0]|0;u=O+N|0;P=u+x|0;Q=x-u|0;u=M+A|0;x=A-M|0;M=J+D|0;A=D-J|0;J=v-w|0;w=y-z|0;z=B-C|0;C=E-F|0;F=H-I|0;I=K-L|0;L=N-O|0;c[s>>2]=(M+G+u+P<<2)-7168;O=G<<1;c[s+16>>2]=((M-O|0)*-7223|0)+1024+((u-O|0)*2578|0)+((P-O|0)*10438|0)>>11;O=(Q+x|0)*9058|0;c[s+8>>2]=(A*5027|0)+1024+(Q*2237|0)+O>>11;c[s+24>>2]=(A*-11295|0)+1024+(x*-14084|0)+O>>11;O=z+w|0;x=I-F|0;c[s+28>>2]=J-O+C-x-L<<2;A=C<<13;C=(x*11512|0)-A+(O*-1297|0)|0;O=((L+F|0)*6164|0)+((z+J|0)*9810|0)|0;c[s+20>>2]=(z*-19447|0)+1024+(F*9175|0)+C+O>>11;F=((I-L|0)*3826|0)+((w+J|0)*10935|0)|0;c[s+12>>2]=(w*-3474|0)+1024+(I*-25148|0)+C+F>>11;c[s+4>>2]=(A|1024)+L+((L+J|0)*-9232|0)+F+O>>11;O=t+1|0;if((O|0)<7){s=s+32|0;t=O}else{R=a;S=7;break}}while(1){a=c[R>>2]|0;t=R+192|0;s=c[t>>2]|0;r=s+a|0;q=R+32|0;p=c[q>>2]|0;o=R+160|0;n=c[o>>2]|0;m=n+p|0;l=R+64|0;k=c[l>>2]|0;j=R+128|0;i=c[j>>2]|0;h=i+k|0;g=R+96|0;f=c[g>>2]|0;e=a-s|0;s=p-n|0;n=k-i|0;i=h+r|0;c[R>>2]=((f+m+i|0)*10700|0)+32768>>16;k=((f*-4|0)+i|0)*3783|0;i=(r-h|0)*9850|0;p=(m-h|0)*3367|0;c[l>>2]=i+32768+p+k>>16;l=((r-m|0)*9434|0)+32768|0;c[j>>2]=l+p+((m-(f<<1)|0)*-7566|0)>>16;c[t>>2]=l-i+k>>16;k=(s+e|0)*10009|0;i=(e-s|0)*1822|0;l=(n+s|0)*-14752|0;s=(n+e|0)*6565|0;c[q>>2]=32768-i+k+s>>16;c[g>>2]=i+32768+k+l>>16;c[o>>2]=(n*20017|0)+32768+s+l>>16;if((S|0)>0){R=R+4|0;S=S-1|0}else{break}}return}function fZ(a,b,e){a=a|0;b=b|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,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,J=0,K=0,L=0,M=0,N=0,O=0;n$(a+192|0,0,64)|0;f=e+11|0;g=e+1|0;h=e+10|0;i=e+2|0;j=e+9|0;k=e+3|0;l=e+8|0;m=e+4|0;n=e+7|0;o=e+5|0;p=e+6|0;q=a;r=0;while(1){s=c[b+(r<<2)>>2]|0;t=d[s+e|0]|0;u=d[s+f|0]|0;v=u+t|0;w=d[s+g|0]|0;x=d[s+h|0]|0;y=x+w|0;z=d[s+i|0]|0;A=d[s+j|0]|0;B=A+z|0;C=d[s+k|0]|0;D=d[s+l|0]|0;E=D+C|0;F=d[s+m|0]|0;G=d[s+n|0]|0;H=G+F|0;I=d[s+o|0]|0;J=d[s+p|0]|0;s=J+I|0;K=s+v|0;L=v-s|0;s=y-H|0;v=E+B|0;M=B-E|0;E=t-u|0;u=w-x|0;x=z-A|0;A=C-D|0;D=F-G|0;G=I-J|0;c[q>>2]=(v+y+H+K<<2)-6144;c[q+24>>2]=L-(s+M)<<2;c[q+16>>2]=((K-v|0)*10033|0)+1024>>11;c[q+8>>2]=1024-M+s+((L+M|0)*11190|0)>>11;M=(D+u|0)*4433|0;L=M+(u*6270|0)|0;u=M+(D*-15137|0)|0;D=(x+E|0)*9191|0;M=(A+E|0)*7053|0;s=(A+x|0)*-1512|0;c[q+4>>2]=(E*-4758|0)+1024+D+M+L+(G*1512|0)>>11;c[q+12>>2]=((E-A|0)*10703|0)+1024+u+((G+x|0)*-4433|0)>>11;c[q+20>>2]=(x*-19165|0)+1024+D+s-u+(G*7053|0)>>11;c[q+28>>2]=(A*5946|0)+1024+s+M-L+(G*-9191|0)>>11;G=r+1|0;if((G|0)<6){q=q+32|0;r=G}else{N=a;O=7;break}}while(1){a=c[N>>2]|0;r=N+160|0;q=c[r>>2]|0;p=q+a|0;o=N+32|0;n=c[o>>2]|0;m=N+128|0;l=c[m>>2]|0;k=l+n|0;j=N+64|0;i=c[j>>2]|0;h=N+96|0;g=c[h>>2]|0;f=g+i|0;e=f+p|0;b=a-q|0;q=n-l|0;l=i-g|0;c[N>>2]=((e+k|0)*14564|0)+32768>>16;c[j>>2]=((p-f|0)*17837|0)+32768>>16;c[m>>2]=(((k*-2|0)+e|0)*10298|0)+32768>>16;e=(l+b|0)*5331|0;c[o>>2]=((q+b|0)*14564|0)+32768+e>>16;c[h>>2]=((b-q-l|0)*14564|0)+32768>>16;c[r>>2]=((l-q|0)*14564|0)+32768+e>>16;if((O|0)>0){N=N+4|0;O=O-1|0}else{break}}return}function gZ(a,b,e){a=a|0;b=b|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,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;n$(a+160|0,0,96)|0;f=e+9|0;g=e+1|0;h=e+8|0;i=e+2|0;j=e+7|0;k=e+3|0;l=e+6|0;m=e+4|0;n=e+5|0;o=a;p=0;while(1){q=c[b+(p<<2)>>2]|0;r=d[q+e|0]|0;s=d[q+f|0]|0;t=s+r|0;u=d[q+g|0]|0;v=d[q+h|0]|0;w=v+u|0;x=d[q+i|0]|0;y=d[q+j|0]|0;z=y+x|0;A=d[q+k|0]|0;B=d[q+l|0]|0;C=B+A|0;D=d[q+m|0]|0;E=d[q+n|0]|0;q=E+D|0;F=q+t|0;G=t-q|0;q=C+w|0;t=w-C|0;C=r-s|0;s=u-v|0;v=x-y|0;y=A-B|0;B=D-E|0;c[o>>2]=(q+z+F<<2)-5120;E=z<<1;c[o+16>>2]=((q-E|0)*-3580|0)+1024+((F-E|0)*9373|0)>>11;E=(G+t|0)*6810|0;c[o+8>>2]=(G*4209|0)+1024+E>>11;c[o+24>>2]=(t*-17828|0)+1024+E>>11;E=B+C|0;t=s-y|0;c[o+20>>2]=E-(t+v)<<2;G=v<<13;c[o+4>>2]=(C*11443|0)+1024+(s*10323|0)+G+(y*5260|0)+(B*1812|0)>>11;v=(t<<12)-G+((E+t|0)*2531|0)|0;t=((C-B|0)*7791|0)+((y+s|0)*-4815|0)+1024|0;c[o+12>>2]=t+v>>11;c[o+28>>2]=t-v>>11;v=p+1|0;if((v|0)<5){o=o+32|0;p=v}else{H=a;I=7;break}}while(1){a=c[H>>2]|0;p=H+128|0;o=c[p>>2]|0;n=o+a|0;m=H+32|0;l=c[m>>2]|0;k=H+96|0;j=c[k>>2]|0;i=j+l|0;h=H+64|0;g=c[h>>2]|0;f=i+n|0;e=a-o|0;o=l-j|0;c[H>>2]=((f+g|0)*10486|0)+16384>>15;j=(f-(g<<2)|0)*3707|0;g=((n-i|0)*8290|0)+16384|0;c[h>>2]=g+j>>15;c[p>>2]=g-j>>15;j=(o+e|0)*8716|0;c[m>>2]=(e*5387|0)+16384+j>>15;c[k>>2]=(o*-22820|0)+16384+j>>15;if((I|0)>0){H=H+4|0;I=I-1|0}else{break}}return}function hZ(a,b,e){a=a|0;b=b|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,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;n$(a+128|0,0,128)|0;f=e+7|0;g=e+1|0;h=e+6|0;i=e+2|0;j=e+5|0;k=e+3|0;l=e+4|0;m=a;n=0;while(1){o=c[b+(n<<2)>>2]|0;p=d[o+e|0]|0;q=d[o+f|0]|0;r=q+p|0;s=d[o+g|0]|0;t=d[o+h|0]|0;u=t+s|0;v=d[o+i|0]|0;w=d[o+j|0]|0;x=w+v|0;y=d[o+k|0]|0;z=d[o+l|0]|0;o=z+y|0;A=o+r|0;B=r-o|0;o=x+u|0;r=u-x|0;x=p-q|0;q=s-t|0;t=v-w|0;w=y-z|0;c[m>>2]=(A+o<<3)-8192;c[m+16>>2]=A-o<<3;o=((B+r|0)*4433|0)+512|0;c[m+8>>2]=o+(B*6270|0)>>10;c[m+24>>2]=o+(r*-15137|0)>>10;r=t+x|0;o=w+q|0;B=((o+r|0)*9633|0)+512|0;A=(w+x|0)*-7373|0;z=(t+q|0)*-20995|0;y=B+(r*-3196|0)|0;r=B+(o*-16069|0)|0;c[m+4>>2]=A+(x*12299|0)+y>>10;c[m+12>>2]=z+(q*25172|0)+r>>10;c[m+20>>2]=z+(t*16819|0)+y>>10;c[m+28>>2]=A+(w*2446|0)+r>>10;r=n+1|0;if((r|0)<4){m=m+32|0;n=r}else{C=a;D=7;break}}while(1){a=c[C>>2]|0;n=C+96|0;m=c[n>>2]|0;l=a+2+m|0;k=C+32|0;j=c[k>>2]|0;i=C+64|0;h=c[i>>2]|0;g=h+j|0;f=a-m|0;m=j-h|0;c[C>>2]=g+l>>2;c[i>>2]=l-g>>2;g=((m+f|0)*4433|0)+16384|0;c[k>>2]=g+(f*6270|0)>>15;c[n>>2]=g+(m*-15137|0)>>15;if((D|0)>0){C=C+4|0;D=D-1|0}else{break}}return}function iZ(a,b,e){a=a|0;b=b|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,t=0,u=0,v=0,w=0;n$(a|0,0,256)|0;f=e+5|0;g=e+1|0;h=e+4|0;i=e+2|0;j=e+3|0;k=a;l=0;while(1){m=c[b+(l<<2)>>2]|0;n=d[m+e|0]|0;o=d[m+f|0]|0;p=o+n|0;q=d[m+g|0]|0;r=d[m+h|0]|0;s=r+q|0;t=d[m+i|0]|0;u=d[m+j|0]|0;m=u+t|0;v=m+p|0;w=n-o|0;o=q-r|0;r=t-u|0;c[k>>2]=(v+s<<3)-6144;c[k+8>>2]=((p-m|0)*10033|0)+512>>10;c[k+16>>2]=(((s*-2|0)+v|0)*5793|0)+512>>10;v=((r+w|0)*2998|0)+512>>10;c[k+4>>2]=v+(o+w<<3);c[k+12>>2]=w-o-r<<3;c[k+20>>2]=v+(r-o<<3);o=l+1|0;if((o|0)<3){k=k+32|0;l=o}else{break}}l=c[a>>2]|0;k=a+64|0;j=c[k>>2]|0;i=j+l|0;h=a+32|0;g=c[h>>2]|0;c[a>>2]=((i+g|0)*14564|0)+16384>>15;c[k>>2]=(((g*-2|0)+i|0)*10298|0)+16384>>15;c[h>>2]=((l-j|0)*17837|0)+16384>>15;j=a+4|0;l=c[j>>2]|0;h=a+68|0;i=c[h>>2]|0;g=i+l|0;k=a+36|0;f=c[k>>2]|0;c[j>>2]=((g+f|0)*14564|0)+16384>>15;c[h>>2]=(((f*-2|0)+g|0)*10298|0)+16384>>15;c[k>>2]=((l-i|0)*17837|0)+16384>>15;i=a+8|0;l=c[i>>2]|0;k=a+72|0;g=c[k>>2]|0;f=g+l|0;h=a+40|0;j=c[h>>2]|0;c[i>>2]=((f+j|0)*14564|0)+16384>>15;c[k>>2]=(((j*-2|0)+f|0)*10298|0)+16384>>15;c[h>>2]=((l-g|0)*17837|0)+16384>>15;g=a+12|0;l=c[g>>2]|0;h=a+76|0;f=c[h>>2]|0;j=f+l|0;k=a+44|0;i=c[k>>2]|0;c[g>>2]=((j+i|0)*14564|0)+16384>>15;c[h>>2]=(((i*-2|0)+j|0)*10298|0)+16384>>15;c[k>>2]=((l-f|0)*17837|0)+16384>>15;f=a+16|0;l=c[f>>2]|0;k=a+80|0;j=c[k>>2]|0;i=j+l|0;h=a+48|0;g=c[h>>2]|0;c[f>>2]=((i+g|0)*14564|0)+16384>>15;c[k>>2]=(((g*-2|0)+i|0)*10298|0)+16384>>15;c[h>>2]=((l-j|0)*17837|0)+16384>>15;j=a+20|0;l=c[j>>2]|0;h=a+84|0;i=c[h>>2]|0;g=i+l|0;k=a+52|0;a=c[k>>2]|0;c[j>>2]=((g+a|0)*14564|0)+16384>>15;c[h>>2]=(((a*-2|0)+g|0)*10298|0)+16384>>15;c[k>>2]=((l-i|0)*17837|0)+16384>>15;return}function jZ(a,b,e){a=a|0;b=b|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;n$(a|0,0,256)|0;f=e+3|0;g=e+1|0;h=e+2|0;i=c[b>>2]|0;j=d[i+e|0]|0;k=d[i+f|0]|0;l=k+j|0;m=d[i+g|0]|0;n=d[i+h|0]|0;i=n+m|0;o=j-k|0;k=m-n|0;n=i+l<<5;c[a>>2]=n-16384;m=l-i<<5;c[a+8>>2]=m;i=((k+o|0)*4433|0)+128|0;l=i+(o*6270|0)>>8;o=a+4|0;c[o>>2]=l;j=i+(k*-15137|0)>>8;c[a+12>>2]=j;k=c[b+4>>2]|0;b=d[k+e|0]|0;e=d[k+f|0]|0;f=e+b|0;i=d[k+g|0]|0;g=d[k+h|0]|0;h=g+i|0;k=b-e|0;e=i-g|0;g=(h+f<<5)-16384|0;i=f-h<<5;h=((e+k|0)*4433|0)+128|0;f=h+(k*6270|0)>>8;k=h+(e*-15137|0)>>8;e=n-16382|0;c[a>>2]=e+g>>2;c[a+32>>2]=e-g>>2;g=l+2|0;c[o>>2]=g+f>>2;c[a+36>>2]=g-f>>2;f=m|2;c[a+8>>2]=f+i>>2;c[a+40>>2]=f-i>>2;i=j+2|0;c[a+12>>2]=i+k>>2;c[a+44>>2]=i-k>>2;return}function kZ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;n$(a|0,0,256)|0;f=c[b>>2]|0;b=d[f+e|0]|0;g=d[f+(e+1)|0]|0;c[a>>2]=(g+b<<5)-8192;c[a+4>>2]=b-g<<5;return}function lZ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0;f=i;i=i+256|0;g=e+7|0;h=e+1|0;j=e+6|0;k=e+2|0;l=e+5|0;m=e+3|0;n=e+4|0;o=f|0;p=0;q=a;while(1){r=c[b+(p<<2)>>2]|0;s=d[r+e|0]|0;t=d[r+g|0]|0;u=t+s|0;v=d[r+h|0]|0;w=d[r+j|0]|0;x=w+v|0;y=d[r+k|0]|0;z=d[r+l|0]|0;A=z+y|0;B=d[r+m|0]|0;C=d[r+n|0]|0;r=C+B|0;D=r+u|0;E=u-r|0;r=A+x|0;u=x-A|0;A=s-t|0;t=v-w|0;w=y-z|0;z=B-C|0;c[q>>2]=(D+r<<2)-4096;c[q+16>>2]=D-r<<2;r=(E+u|0)*4433|0;c[q+8>>2]=(E*6270|0)+1024+r>>11;c[q+24>>2]=(u*-15137|0)+1024+r>>11;r=w+A|0;u=z+t|0;E=(u+r|0)*9633|0;D=(z+A|0)*-7373|0;C=(w+t|0)*-20995|0;B=E+(r*-3196|0)|0;r=E+(u*-16069|0)|0;c[q+4>>2]=(A*12299|0)+1024+D+B>>11;c[q+12>>2]=(t*25172|0)+1024+C+r>>11;c[q+20>>2]=(w*16819|0)+1024+C+B>>11;c[q+28>>2]=(z*2446|0)+1024+D+r>>11;if((p|0)==15){F=a;G=o;H=7;break}else if((p|0)==7){p=8;q=o;continue}p=p+1|0;q=q+32|0}while(1){q=c[F>>2]|0;p=c[G+224>>2]|0;o=p+q|0;a=F+32|0;n=c[a>>2]|0;m=c[G+192>>2]|0;l=m+n|0;k=F+64|0;j=c[k>>2]|0;h=c[G+160>>2]|0;g=h+j|0;e=F+96|0;b=c[e>>2]|0;r=c[G+128>>2]|0;D=r+b|0;z=F+128|0;B=c[z>>2]|0;C=c[G+96>>2]|0;w=C+B|0;t=F+160|0;A=c[t>>2]|0;u=c[G+64>>2]|0;E=u+A|0;y=F+192|0;v=c[y>>2]|0;s=c[G+32>>2]|0;x=s+v|0;I=F+224|0;J=c[I>>2]|0;K=c[G>>2]|0;L=K+J|0;M=L+o|0;N=o-L|0;L=x+l|0;o=l-x|0;x=E+g|0;l=g-E|0;E=w+D|0;g=D-w|0;w=q-p|0;p=n-m|0;m=j-h|0;h=b-r|0;r=B-C|0;C=A-u|0;u=v-s|0;s=J-K|0;c[F>>2]=E+4+x+L+M>>3;c[z>>2]=((L-x|0)*4433|0)+32768+((M-E|0)*10703|0)>>16;E=((N-l|0)*11363|0)+((g-o|0)*2260|0)|0;c[k>>2]=(l*17799|0)+32768+(o*11893|0)+E>>16;c[y>>2]=(g*-8697|0)+32768+(N*-1730|0)+E>>16;E=((u-s|0)*3363|0)+((p+w|0)*11086|0)|0;N=((s+C|0)*5461|0)+((m+w|0)*10217|0)|0;g=((r-s|0)*7350|0)+((h+w|0)*8956|0)|0;y=((u-C|0)*11529|0)+((m+p|0)*1136|0)|0;o=((u+r|0)*-10217|0)+((h+p|0)*-5461|0)|0;l=((C-r|0)*3363|0)+((h+m|0)*-11086|0)|0;c[a>>2]=(w*-18730|0)+32768+(s*6387|0)+N+E+g>>16;c[e>>2]=(p*589|0)+32768+(u*-13631|0)+o+y+E>>16;c[t>>2]=(m*-9222|0)+32768+(C*10055|0)+l+y+N>>16;c[I>>2]=(h*8728|0)+32768+(r*17760|0)+l+o+g>>16;if((H|0)>0){F=F+4|0;G=G+4|0;H=H-1|0}else{break}}i=f;return}function mZ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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,J=0,K=0;f=i;i=i+192|0;n$(a|0,0,256)|0;g=e+6|0;h=e+1|0;j=e+5|0;k=e+2|0;l=e+4|0;m=e+3|0;n=f|0;o=0;p=a;while(1){q=c[b+(o<<2)>>2]|0;r=d[q+e|0]|0;s=d[q+g|0]|0;t=s+r|0;u=d[q+h|0]|0;v=d[q+j|0]|0;w=v+u|0;x=d[q+k|0]|0;y=d[q+l|0]|0;z=y+x|0;A=d[q+m|0]|0;q=r-s|0;s=u-v|0;v=x-y|0;y=z+t|0;c[p>>2]=(A+w+y<<2)-3584;x=((A*-4|0)+y|0)*2896|0;y=(t-z|0)*7542|0;u=(w-z|0)*2578|0;c[p+8>>2]=y+1024+u+x>>11;z=((t-w|0)*7223|0)+1024|0;c[p+16>>2]=z+u+((w-(A<<1)|0)*-5793|0)>>11;c[p+24>>2]=z-y+x>>11;x=(s+q|0)*7663|0;y=(q-s|0)*1395|0;z=(v+s|0)*-11295|0;s=(v+q|0)*5027|0;c[p+4>>2]=1024-y+x+s>>11;c[p+12>>2]=y+1024+x+z>>11;c[p+20>>2]=(v*15326|0)+1024+s+z>>11;if((o|0)==7){o=8;p=n;continue}else if((o|0)==13){B=a;C=n;D=0;break}o=o+1|0;p=p+32|0}while(1){p=c[B>>2]|0;o=c[C+160>>2]|0;n=o+p|0;a=B+32|0;m=c[a>>2]|0;l=c[C+128>>2]|0;k=l+m|0;j=B+64|0;h=c[j>>2]|0;g=c[C+96>>2]|0;e=g+h|0;b=B+96|0;z=c[b>>2]|0;s=c[C+64>>2]|0;v=s+z|0;x=B+128|0;y=c[x>>2]|0;q=c[C+32>>2]|0;A=q+y|0;w=B+160|0;u=c[w>>2]|0;t=c[C>>2]|0;r=t+u|0;E=B+192|0;F=c[E>>2]|0;G=B+224|0;H=c[G>>2]|0;I=H+F|0;J=I+n|0;K=n-I|0;I=r+k|0;n=k-r|0;r=A+e|0;k=e-A|0;A=p-o|0;o=m-l|0;l=h-g|0;g=z-s|0;s=y-q|0;q=u-t|0;t=F-H|0;c[B>>2]=((r+v+I+J|0)*5350|0)+16384>>15;H=v<<1;c[x>>2]=((r-H|0)*-4717|0)+16384+((I-H|0)*1684|0)+((J-H|0)*6817|0)>>15;H=(K+n|0)*5915|0;c[j>>2]=(k*3283|0)+16384+(K*1461|0)+H>>15;c[E>>2]=(k*-7376|0)+16384+(n*-9198|0)+H>>15;H=l+o|0;n=q-s|0;c[G>>2]=((A-H+g-n-t|0)*5350|0)+16384>>15;G=g*5350|0;g=(n*7518|0)-G+(H*-847|0)|0;H=((t+s|0)*4025|0)+((l+A|0)*6406|0)|0;c[w>>2]=(l*-12700|0)+16384+(s*5992|0)+g+H>>15;s=((q-t|0)*2499|0)+((o+A|0)*7141|0)|0;c[b>>2]=(o*-2269|0)+16384+(q*-16423|0)+g+s>>15;c[a>>2]=(A*-6029|0)+16384+G+(t*-679|0)+s+H>>15;H=D+1|0;if((H|0)<7){B=B+4|0;C=C+4|0;D=H}else{break}}i=f;return}function nZ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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;f=i;i=i+128|0;n$(a|0,0,256)|0;g=e+5|0;h=e+1|0;j=e+4|0;k=e+2|0;l=e+3|0;m=f|0;n=0;o=a;while(1){p=c[b+(n<<2)>>2]|0;q=d[p+e|0]|0;r=d[p+g|0]|0;s=r+q|0;t=d[p+h|0]|0;u=d[p+j|0]|0;v=u+t|0;w=d[p+k|0]|0;x=d[p+l|0]|0;p=x+w|0;y=p+s|0;z=q-r|0;r=t-u|0;u=w-x|0;c[o>>2]=(y+v<<2)-3072;c[o+8>>2]=((s-p|0)*10033|0)+1024>>11;c[o+16>>2]=(((v*-2|0)+y|0)*5793|0)+1024>>11;y=((u+z|0)*2998|0)+1024>>11;c[o+4>>2]=y+(r+z<<2);c[o+12>>2]=z-r-u<<2;c[o+20>>2]=y+(u-r<<2);if((n|0)==7){n=8;o=m;continue}else if((n|0)==11){A=a;B=m;C=0;break}n=n+1|0;o=o+32|0}while(1){o=c[A>>2]|0;n=c[B+96>>2]|0;m=n+o|0;a=A+32|0;l=c[a>>2]|0;k=c[B+64>>2]|0;j=k+l|0;h=A+64|0;g=c[h>>2]|0;e=c[B+32>>2]|0;b=e+g|0;r=A+96|0;u=c[r>>2]|0;y=c[B>>2]|0;z=y+u|0;v=A+128|0;p=c[v>>2]|0;s=A+224|0;x=c[s>>2]|0;w=x+p|0;t=A+160|0;q=c[t>>2]|0;D=A+192|0;E=c[D>>2]|0;F=E+q|0;G=F+m|0;H=m-F|0;F=j-w|0;m=z+b|0;I=b-z|0;z=o-n|0;n=l-k|0;k=g-e|0;e=u-y|0;y=p-x|0;x=q-E|0;c[A>>2]=((m+j+w+G|0)*7282|0)+16384>>15;c[D>>2]=((H-(F+I)|0)*7282|0)+16384>>15;c[v>>2]=((G-m|0)*8918|0)+16384>>15;c[h>>2]=((F-I|0)*7282|0)+16384+((H+I|0)*9947|0)>>15;I=(y+n|0)*3941|0;H=I+(n*5573|0)|0;n=I+(y*-13455|0)|0;y=(k+z|0)*8170|0;I=(e+z|0)*6269|0;F=(e+k|0)*-1344|0;c[a>>2]=(z*-4229|0)+16384+y+I+H+(x*1344|0)>>15;c[r>>2]=((z-e|0)*9514|0)+16384+n+((x+k|0)*-3941|0)>>15;c[t>>2]=(k*-17036|0)+16384+y+F-n+(x*6269|0)>>15;c[s>>2]=(e*5285|0)+16384+F+I-H+(x*-8170|0)>>15;x=C+1|0;if((x|0)<6){A=A+4|0;B=B+4|0;C=x}else{break}}i=f;return}function oZ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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=i;i=i+64|0;n$(a|0,0,256)|0;g=e+4|0;h=e+1|0;j=e+3|0;k=e+2|0;l=f|0;m=0;n=a;while(1){o=c[b+(m<<2)>>2]|0;p=d[o+e|0]|0;q=d[o+g|0]|0;r=q+p|0;s=d[o+h|0]|0;t=d[o+j|0]|0;u=t+s|0;v=d[o+k|0]|0;o=u+r|0;w=p-q|0;q=s-t|0;c[n>>2]=(o+v<<2)-2560;t=(o-(v<<2)|0)*2896|0;v=((r-u|0)*6476|0)+1024|0;c[n+8>>2]=v+t>>11;c[n+16>>2]=v-t>>11;t=(q+w|0)*6810|0;c[n+4>>2]=(w*4209|0)+1024+t>>11;c[n+12>>2]=(q*-17828|0)+1024+t>>11;if((m|0)==7){m=8;n=l;continue}else if((m|0)==9){x=a;y=l;z=0;break}m=m+1|0;n=n+32|0}while(1){n=c[x>>2]|0;m=c[y+32>>2]|0;l=m+n|0;a=x+32|0;k=c[a>>2]|0;j=c[y>>2]|0;h=j+k|0;g=x+64|0;e=c[g>>2]|0;b=x+224|0;t=c[b>>2]|0;q=t+e|0;w=x+96|0;v=c[w>>2]|0;u=x+192|0;r=c[u>>2]|0;o=r+v|0;s=x+128|0;p=c[s>>2]|0;A=x+160|0;B=c[A>>2]|0;C=B+p|0;D=C+l|0;E=l-C|0;C=o+h|0;l=h-o|0;o=n-m|0;m=k-j|0;j=e-t|0;t=v-r|0;r=p-B|0;c[x>>2]=((C+q+D|0)*10486|0)+16384>>15;B=q<<1;c[s>>2]=((C-B|0)*-4582|0)+16384+((D-B|0)*11997|0)>>15;B=(E+l|0)*8716|0;c[g>>2]=(E*5387|0)+16384+B>>15;c[u>>2]=(l*-22820|0)+16384+B>>15;B=r+o|0;l=m-t|0;c[A>>2]=((B-(l+j)|0)*10486|0)+16384>>15;A=j*10486|0;c[a>>2]=(o*14647|0)+16384+(m*13213|0)+A+(t*6732|0)+(r*2320|0)>>15;a=(l*5243|0)-A+((B+l|0)*3240|0)|0;l=((o-r|0)*9973|0)+((t+m|0)*-6163|0)+16384|0;c[w>>2]=l+a>>15;c[b>>2]=l-a>>15;a=z+1|0;if((a|0)<5){x=x+4|0;y=y+4|0;z=a}else{break}}i=f;return}function pZ(a,b,e){a=a|0;b=b|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,t=0,u=0,v=0,w=0,x=0,y=0;n$(a|0,0,256)|0;f=e+3|0;g=e+1|0;h=e+2|0;i=a;j=0;while(1){k=c[b+(j<<2)>>2]|0;l=d[k+e|0]|0;m=d[k+f|0]|0;n=m+l|0;o=d[k+g|0]|0;p=d[k+h|0]|0;k=p+o|0;q=l-m|0;m=o-p|0;c[i>>2]=(k+n<<3)-4096;c[i+8>>2]=n-k<<3;k=((m+q|0)*4433|0)+512|0;c[i+4>>2]=k+(q*6270|0)>>10;c[i+12>>2]=k+(m*-15137|0)>>10;m=j+1|0;if((m|0)<8){i=i+32|0;j=m}else{r=a;s=0;break}}while(1){a=c[r>>2]|0;j=r+224|0;i=c[j>>2]|0;h=i+a|0;g=r+32|0;f=c[g>>2]|0;e=r+192|0;b=c[e>>2]|0;m=b+f|0;k=r+64|0;q=c[k>>2]|0;n=r+160|0;p=c[n>>2]|0;o=p+q|0;l=r+96|0;t=c[l>>2]|0;u=r+128|0;v=c[u>>2]|0;w=v+t|0;x=h+2+w|0;y=h-w|0;w=o+m|0;h=m-o|0;o=a-i|0;i=f-b|0;b=q-p|0;p=t-v|0;c[r>>2]=x+w>>2;c[u>>2]=x-w>>2;w=((y+h|0)*4433|0)+16384|0;c[k>>2]=w+(y*6270|0)>>15;c[e>>2]=w+(h*-15137|0)>>15;h=b+o|0;w=p+i|0;e=((w+h|0)*9633|0)+16384|0;y=(p+o|0)*-7373|0;k=(b+i|0)*-20995|0;x=e+(h*-3196|0)|0;h=e+(w*-16069|0)|0;c[g>>2]=y+(o*12299|0)+x>>15;c[l>>2]=k+(i*25172|0)+h>>15;c[n>>2]=k+(b*16819|0)+x>>15;c[j>>2]=y+(p*2446|0)+h>>15;h=s+1|0;if((h|0)<4){r=r+4|0;s=h}else{break}}return}function qZ(a,b,e){a=a|0;b=b|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,t=0;n$(a|0,0,256)|0;f=e+2|0;g=e+1|0;h=a;i=0;while(1){j=c[b+(i<<2)>>2]|0;k=d[j+e|0]|0;l=d[j+f|0]|0;m=l+k|0;n=d[j+g|0]|0;c[h>>2]=(m+n<<3)-3072;c[h+8>>2]=(((n*-2|0)+m|0)*5793|0)+512>>10;c[h+4>>2]=((k-l|0)*10033|0)+512>>10;l=i+1|0;if((l|0)<6){h=h+32|0;i=l}else{o=a;p=0;break}}while(1){a=c[o>>2]|0;i=o+160|0;h=c[i>>2]|0;g=h+a|0;f=o+32|0;e=c[f>>2]|0;b=o+128|0;l=c[b>>2]|0;k=l+e|0;m=o+64|0;n=c[m>>2]|0;j=o+96|0;q=c[j>>2]|0;r=q+n|0;s=r+g|0;t=a-h|0;h=e-l|0;l=n-q|0;c[o>>2]=((s+k|0)*14564|0)+16384>>15;c[m>>2]=((g-r|0)*17837|0)+16384>>15;c[b>>2]=(((k*-2|0)+s|0)*10298|0)+16384>>15;s=(l+t|0)*5331|0;c[f>>2]=((h+t|0)*14564|0)+16384+s>>15;c[j>>2]=((t-h-l|0)*14564|0)+16384>>15;c[i>>2]=((l-h|0)*14564|0)+16384+s>>15;s=p+1|0;if((s|0)<3){o=o+4|0;p=s}else{break}}return}function rZ(a,b,e){a=a|0;b=b|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;n$(a|0,0,256)|0;f=e+1|0;g=c[b>>2]|0;h=d[g+e|0]|0;i=d[g+f|0]|0;g=(i+h<<3)-2048|0;c[a>>2]=g;j=h-i<<3;i=a+4|0;c[i>>2]=j;h=a+32|0;k=c[b+4>>2]|0;l=d[k+e|0]|0;m=d[k+f|0]|0;k=(m+l<<3)-2048|0;c[h>>2]=k;n=l-m<<3;c[a+36>>2]=n;m=c[b+8>>2]|0;l=d[m+e|0]|0;o=d[m+f|0]|0;m=(o+l<<3)-2048|0;c[a+64>>2]=m;p=l-o<<3;c[a+68>>2]=p;o=c[b+12>>2]|0;b=d[o+e|0]|0;e=d[o+f|0]|0;f=(e+b<<3)-2048|0;o=b-e<<3;e=f+g|0;b=m+k|0;l=g-f|0;f=k-m|0;c[a>>2]=b+e;c[a+64>>2]=e-b;b=((f+l|0)*4433|0)+4096|0;c[h>>2]=b+(l*6270|0)>>13;c[a+96>>2]=b+(f*-15137|0)>>13;f=o+j|0;b=p+n|0;l=j-o|0;o=n-p|0;c[i>>2]=b+f;c[a+68>>2]=f-b;b=((o+l|0)*4433|0)+4096|0;c[a+36>>2]=b+(l*6270|0)>>13;c[a+100>>2]=b+(o*-15137|0)>>13;return}function sZ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;n$(a|0,0,256)|0;f=d[(c[b>>2]|0)+e|0]|0;g=d[(c[b+4>>2]|0)+e|0]|0;c[a>>2]=(g+f<<5)-8192;c[a+32>>2]=f-g<<5;return}function tZ(d,e,f,h,j){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0;k=i;i=i+256|0;l=c[d+332>>2]|0;d=k|0;m=f;f=c[e+84>>2]|0;e=d;n=8;while(1){o=b[m+16>>1]|0;p=b[m+32>>1]|0;do{if((o|p)<<16>>16==0){if((b[m+48>>1]|0)!=0){q=0;r=10;break}if((b[m+64>>1]|0)!=0){q=0;r=10;break}if((b[m+80>>1]|0)!=0){q=0;r=10;break}if((b[m+96>>1]|0)!=0){q=0;r=10;break}if((b[m+112>>1]|0)!=0){q=0;r=10;break}s=+(b[m>>1]|0)*+g[f>>2];g[e>>2]=s;g[e+32>>2]=s;g[e+64>>2]=s;g[e+96>>2]=s;g[e+128>>2]=s;g[e+160>>2]=s;g[e+192>>2]=s;g[e+224>>2]=s}else{q=p;r=10}}while(0);if((r|0)==10){r=0;s=+(b[m>>1]|0)*+g[f>>2];t=+(q<<16>>16|0)*+g[f+64>>2];u=+(b[m+64>>1]|0)*+g[f+128>>2];v=+(b[m+96>>1]|0)*+g[f+192>>2];w=s+u;x=s-u;u=t+v;s=(t-v)*1.4142135381698608-u;v=w+u;t=w-u;u=x+s;w=x-s;s=+(o<<16>>16|0)*+g[f+32>>2];x=+(b[m+48>>1]|0)*+g[f+96>>2];y=+(b[m+80>>1]|0)*+g[f+160>>2];z=+(b[m+112>>1]|0)*+g[f+224>>2];A=x+y;B=y-x;x=s+z;y=s-z;z=A+x;s=(B+y)*1.8477590084075928;C=s-B*2.613126039505005-z;B=(x-A)*1.4142135381698608-C;A=s-y*1.0823922157287598-B;g[e>>2]=v+z;g[e+224>>2]=v-z;g[e+32>>2]=u+C;g[e+192>>2]=u-C;g[e+64>>2]=w+B;g[e+160>>2]=w-B;g[e+96>>2]=t+A;g[e+128>>2]=t-A}p=n-1|0;if((p|0)>0){m=m+2|0;f=f+4|0;e=e+4|0;n=p}else{break}}n=j+7|0;e=j+1|0;f=j+6|0;m=j+2|0;q=j+5|0;r=j+3|0;p=j+4|0;D=d;d=0;while(1){E=c[h+(d<<2)>>2]|0;A=+g[D>>2]+128.5;t=+g[D+16>>2];B=A+t;w=A-t;t=+g[D+8>>2];A=+g[D+24>>2];C=t+A;u=(t-A)*1.4142135381698608-C;A=B+C;t=B-C;C=w+u;B=w-u;u=+g[D+20>>2];w=+g[D+12>>2];z=u+w;v=u-w;w=+g[D+4>>2];u=+g[D+28>>2];y=w+u;s=w-u;u=z+y;w=(v+s)*1.8477590084075928;x=w-v*2.613126039505005-u;v=(y-z)*1.4142135381698608-x;z=w-s*1.0823922157287598-v;a[E+j|0]=a[l+(~~(A+u)&1023)|0]|0;a[E+n|0]=a[l+(~~(A-u)&1023)|0]|0;a[E+e|0]=a[l+(~~(C+x)&1023)|0]|0;a[E+f|0]=a[l+(~~(C-x)&1023)|0]|0;a[E+m|0]=a[l+(~~(B+v)&1023)|0]|0;a[E+q|0]=a[l+(~~(B-v)&1023)|0]|0;a[E+r|0]=a[l+(~~(t+z)&1023)|0]|0;a[E+p|0]=a[l+(~~(t-z)&1023)|0]|0;E=d+1|0;if((E|0)<8){D=D+32|0;d=E}else{break}}i=k;return}function uZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+256|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=8;while(1){n=b[l+16>>1]|0;o=b[l+32>>1]|0;do{if((n|o)<<16>>16==0){if((b[l+48>>1]|0)!=0){p=0;q=10;break}if((b[l+64>>1]|0)!=0){p=0;q=10;break}if((b[l+80>>1]|0)!=0){p=0;q=10;break}if((b[l+96>>1]|0)!=0){p=0;q=10;break}if((b[l+112>>1]|0)!=0){p=0;q=10;break}r=da(b[l>>1]|0,c[f>>2]|0)|0;c[e>>2]=r;c[e+32>>2]=r;c[e+64>>2]=r;c[e+96>>2]=r;c[e+128>>2]=r;c[e+160>>2]=r;c[e+192>>2]=r;c[e+224>>2]=r}else{p=o;q=10}}while(0);if((q|0)==10){q=0;o=da(b[l>>1]|0,c[f>>2]|0)|0;r=da(p<<16>>16,c[f+64>>2]|0)|0;s=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;t=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;u=s+o|0;v=o-s|0;s=t+r|0;o=(((r-t|0)*362|0)>>8)-s|0;t=s+u|0;r=u-s|0;s=o+v|0;u=v-o|0;o=da(n<<16>>16,c[f+32>>2]|0)|0;v=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;w=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;x=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;y=w+v|0;z=w-v|0;v=x+o|0;w=o-x|0;x=v+y|0;o=((w+z|0)*473|0)>>8;A=((z*-669|0)>>8)-x+o|0;z=(((v-y|0)*362|0)>>8)-A|0;y=z+(((w*277|0)>>8)-o)|0;c[e>>2]=x+t;c[e+224>>2]=t-x;c[e+32>>2]=A+s;c[e+192>>2]=s-A;c[e+64>>2]=z+u;c[e+160>>2]=u-z;c[e+128>>2]=y+r;c[e+96>>2]=r-y}y=m-1|0;if((y|0)>0){l=l+2|0;f=f+4|0;e=e+4|0;m=y}else{break}}m=h+1|0;e=h+2|0;f=h+3|0;l=h+4|0;p=h+5|0;y=h+6|0;r=h+7|0;z=d;d=0;while(1){u=c[g+(d<<2)>>2]|0;A=u+h|0;s=c[z+4>>2]|0;x=c[z+8>>2]|0;do{if((s|x|0)==0){if((c[z+12>>2]|0)!=0){B=0;q=19;break}if((c[z+16>>2]|0)!=0){B=0;q=19;break}if((c[z+20>>2]|0)!=0){B=0;q=19;break}if((c[z+24>>2]|0)!=0){B=0;q=19;break}if((c[z+28>>2]|0)!=0){B=0;q=19;break}t=a[k+(((c[z>>2]|0)>>>5&1023)+128)|0]|0;a[A]=t;a[u+m|0]=t;a[u+e|0]=t;a[u+f|0]=t;a[u+l|0]=t;a[u+p|0]=t;a[u+y|0]=t;a[u+r|0]=t}else{B=x;q=19}}while(0);if((q|0)==19){q=0;x=c[z>>2]|0;n=c[z+16>>2]|0;t=n+x|0;o=x-n|0;n=c[z+24>>2]|0;x=n+B|0;w=(((B-n|0)*362|0)>>8)-x|0;n=x+t|0;v=t-x|0;x=w+o|0;t=o-w|0;w=c[z+20>>2]|0;o=c[z+12>>2]|0;C=o+w|0;D=w-o|0;o=c[z+28>>2]|0;w=o+s|0;E=s-o|0;o=w+C|0;F=((E+D|0)*473|0)>>8;G=((D*-669|0)>>8)-o+F|0;D=(((w-C|0)*362|0)>>8)-G|0;C=D+(((E*277|0)>>8)-F)|0;a[A]=a[k+(((o+n|0)>>>5&1023)+128)|0]|0;a[u+r|0]=a[k+(((n-o|0)>>>5&1023)+128)|0]|0;a[u+m|0]=a[k+(((G+x|0)>>>5&1023)+128)|0]|0;a[u+y|0]=a[k+(((x-G|0)>>>5&1023)+128)|0]|0;a[u+e|0]=a[k+(((D+t|0)>>>5&1023)+128)|0]|0;a[u+p|0]=a[k+(((t-D|0)>>>5&1023)+128)|0]|0;a[u+l|0]=a[k+(((C+v|0)>>>5&1023)+128)|0]|0;a[u+f|0]=a[k+(((v-C|0)>>>5&1023)+128)|0]|0}C=d+1|0;if((C|0)<8){z=z+32|0;d=C}else{break}}i=j;return}function vZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+256|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=8;while(1){n=b[l+16>>1]|0;o=b[l+32>>1]|0;do{if((n|o)<<16>>16==0){if((b[l+48>>1]|0)!=0){p=0;q=10;break}if((b[l+64>>1]|0)!=0){p=0;q=10;break}if((b[l+80>>1]|0)!=0){p=0;q=10;break}if((b[l+96>>1]|0)!=0){p=0;q=10;break}if((b[l+112>>1]|0)!=0){p=0;q=10;break}r=da(c[f>>2]<<2,b[l>>1]|0)|0;c[e>>2]=r;c[e+32>>2]=r;c[e+64>>2]=r;c[e+96>>2]=r;c[e+128>>2]=r;c[e+160>>2]=r;c[e+192>>2]=r;c[e+224>>2]=r}else{p=o;q=10}}while(0);if((q|0)==10){q=0;o=da(p<<16>>16,c[f+64>>2]|0)|0;r=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;s=(r+o|0)*4433|0;t=s+(o*6270|0)|0;o=s+(r*-15137|0)|0;r=da(c[f+128>>2]<<13,b[l+64>>1]|0)|0;s=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;u=r+s|0;v=s-r|0;r=u+t|0;s=u-t|0;t=v+o|0;u=v-o|0;o=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;v=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;w=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;x=da(n<<16>>16,c[f+32>>2]|0)|0;y=w+o|0;z=x+v|0;A=(z+y|0)*9633|0;B=A+(y*-16069|0)|0;y=A+(z*-3196|0)|0;z=(x+o|0)*-7373|0;A=z+(o*2446|0)+B|0;o=z+(x*12299|0)+y|0;x=(w+v|0)*-20995|0;z=x+(v*16819|0)+y|0;y=x+(w*25172|0)+B|0;c[e>>2]=o+r>>11;c[e+224>>2]=r-o>>11;c[e+32>>2]=y+t>>11;c[e+192>>2]=t-y>>11;c[e+64>>2]=z+u>>11;c[e+160>>2]=u-z>>11;c[e+96>>2]=A+s>>11;c[e+128>>2]=s-A>>11}A=m-1|0;if((A|0)>0){l=l+2|0;f=f+4|0;e=e+4|0;m=A}else{break}}m=h+1|0;e=h+2|0;f=h+3|0;l=h+4|0;p=h+5|0;A=h+6|0;s=h+7|0;z=d;d=0;while(1){u=c[g+(d<<2)>>2]|0;y=u+h|0;t=c[z+4>>2]|0;o=c[z+8>>2]|0;do{if((t|o|0)==0){if((c[z+12>>2]|0)!=0){C=0;q=19;break}if((c[z+16>>2]|0)!=0){C=0;q=19;break}if((c[z+20>>2]|0)!=0){C=0;q=19;break}if((c[z+24>>2]|0)!=0){C=0;q=19;break}if((c[z+28>>2]|0)!=0){C=0;q=19;break}r=a[k+((((c[z>>2]|0)+16|0)>>>5&1023)+128)|0]|0;a[y]=r;a[u+m|0]=r;a[u+e|0]=r;a[u+f|0]=r;a[u+l|0]=r;a[u+p|0]=r;a[u+A|0]=r;a[u+s|0]=r}else{C=o;q=19}}while(0);if((q|0)==19){q=0;o=c[z+24>>2]|0;n=(o+C|0)*4433|0;r=n+(C*6270|0)|0;B=n+(o*-15137|0)|0;o=(c[z>>2]|0)+16|0;n=c[z+16>>2]|0;w=o+n<<13;x=o-n<<13;n=w+r|0;o=w-r|0;r=x+B|0;w=x-B|0;B=c[z+28>>2]|0;x=c[z+20>>2]|0;v=c[z+12>>2]|0;D=v+B|0;E=t+x|0;F=(E+D|0)*9633|0;G=F+(D*-16069|0)|0;D=F+(E*-3196|0)|0;E=(t+B|0)*-7373|0;F=E+(B*2446|0)+G|0;B=E+(t*12299|0)+D|0;E=(v+x|0)*-20995|0;H=E+(x*16819|0)+D|0;D=E+(v*25172|0)+G|0;a[y]=a[k+(((B+n|0)>>>18&1023)+128)|0]|0;a[u+s|0]=a[k+(((n-B|0)>>>18&1023)+128)|0]|0;a[u+m|0]=a[k+(((D+r|0)>>>18&1023)+128)|0]|0;a[u+A|0]=a[k+(((r-D|0)>>>18&1023)+128)|0]|0;a[u+e|0]=a[k+(((H+w|0)>>>18&1023)+128)|0]|0;a[u+p|0]=a[k+(((w-H|0)>>>18&1023)+128)|0]|0;a[u+f|0]=a[k+(((F+o|0)>>>18&1023)+128)|0]|0;a[u+l|0]=a[k+(((o-F|0)>>>18&1023)+128)|0]|0}F=d+1|0;if((F|0)<8){z=z+32|0;d=F}else{break}}i=j;return}function wZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+200|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;p=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;q=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;r=(p-q|0)*7223|0;s=(o-p|0)*2578|0;t=(p*-15083|0)+n+s+r|0;u=q+o|0;v=(u*10438|0)+n|0;w=r+(q*-637|0)+v|0;q=s+(o*-20239|0)+v|0;v=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;o=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;s=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;r=(o+v|0)*7663|0;x=(v-o|0)*1395|0;y=(s+o|0)*-11295|0;o=r+x+y|0;z=(s+v|0)*5027|0;v=z+(r-x)|0;x=z+(s*15326|0)+y|0;c[e>>2]=v+w>>11;c[e+168>>2]=w-v>>11;c[e+28>>2]=o+t>>11;c[e+140>>2]=t-o>>11;c[e+56>>2]=x+q>>11;c[e+112>>2]=q-x>>11;c[e+84>>2]=((p-u|0)*11585|0)+n>>11;n=m+1|0;if((n|0)<7){l=l+2|0;f=f+4|0;e=e+4|0;m=n}else{break}}m=h+6|0;e=h+1|0;f=h+5|0;l=h+2|0;n=h+4|0;u=h+3|0;p=d;d=0;while(1){x=c[g+(d<<2)>>2]|0;q=(c[p>>2]<<13)+131072|0;o=c[p+8>>2]|0;t=c[p+16>>2]|0;v=c[p+24>>2]|0;w=(t-v|0)*7223|0;y=(o-t|0)*2578|0;s=(t*-15083|0)+q+y+w|0;z=v+o|0;r=(z*10438|0)+q|0;A=w+(v*-637|0)+r|0;v=y+(o*-20239|0)+r|0;r=c[p+4>>2]|0;o=c[p+12>>2]|0;y=c[p+20>>2]|0;w=(o+r|0)*7663|0;B=(r-o|0)*1395|0;C=(y+o|0)*-11295|0;o=w+B+C|0;D=(y+r|0)*5027|0;r=w-B+D|0;B=D+(y*15326|0)+C|0;a[x+h|0]=a[k+(((r+A|0)>>>18&1023)+128)|0]|0;a[x+m|0]=a[k+(((A-r|0)>>>18&1023)+128)|0]|0;a[x+e|0]=a[k+(((o+s|0)>>>18&1023)+128)|0]|0;a[x+f|0]=a[k+(((s-o|0)>>>18&1023)+128)|0]|0;a[x+l|0]=a[k+(((B+v|0)>>>18&1023)+128)|0]|0;a[x+n|0]=a[k+(((v-B|0)>>>18&1023)+128)|0]|0;a[x+u|0]=a[k+(((((t-z|0)*11585|0)+q|0)>>>18&1023)+128)|0]|0;q=d+1|0;if((q|0)<7){p=p+28|0;d=q}else{break}}i=j;return}function xZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+144|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da((c[f+128>>2]|0)*5793|0,b[l+64>>1]|0)|0;p=o+n|0;q=(o*-2|0)+n>>11;n=da((c[f+64>>2]|0)*10033|0,b[l+32>>1]|0)|0;o=n+p|0;r=p-n|0;n=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;p=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;s=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;t=(s+n|0)*2998|0;u=t+(p+n<<13)|0;v=t+(s-p<<13)|0;t=n-p-s<<2;c[e>>2]=u+o>>11;c[e+120>>2]=o-u>>11;c[e+24>>2]=t+q;c[e+96>>2]=q-t;c[e+48>>2]=v+r>>11;c[e+72>>2]=r-v>>11;v=m+1|0;if((v|0)<6){l=l+2|0;f=f+4|0;e=e+4|0;m=v}else{break}}m=h+5|0;e=h+1|0;f=h+4|0;l=h+2|0;v=h+3|0;r=d;d=0;while(1){t=c[g+(d<<2)>>2]|0;q=(c[r>>2]<<13)+131072|0;u=(c[r+16>>2]|0)*5793|0;o=q+u|0;s=q-u-u|0;u=(c[r+8>>2]|0)*10033|0;q=o+u|0;p=o-u|0;u=c[r+4>>2]|0;o=c[r+12>>2]|0;n=c[r+20>>2]|0;w=(n+u|0)*2998|0;x=w+(o+u<<13)|0;y=w+(n-o<<13)|0;w=u-o-n<<13;a[t+h|0]=a[k+(((x+q|0)>>>18&1023)+128)|0]|0;a[t+m|0]=a[k+(((q-x|0)>>>18&1023)+128)|0]|0;a[t+e|0]=a[k+(((w+s|0)>>>18&1023)+128)|0]|0;a[t+f|0]=a[k+(((s-w|0)>>>18&1023)+128)|0]|0;a[t+l|0]=a[k+(((y+p|0)>>>18&1023)+128)|0]|0;a[t+v|0]=a[k+(((p-y|0)>>>18&1023)+128)|0]|0;y=d+1|0;if((y|0)<6){r=r+24|0;d=y}else{break}}i=j;return}function yZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+104|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;p=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;q=(p+o|0)*6476|0;r=o-p|0;p=(r*2896|0)+n|0;o=p+q|0;s=p-q|0;q=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;p=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;t=(p+q|0)*6810|0;u=t+(q*4209|0)|0;q=t+(p*-17828|0)|0;c[e>>2]=u+o>>11;c[e+80>>2]=o-u>>11;c[e+20>>2]=q+s>>11;c[e+60>>2]=s-q>>11;c[e+40>>2]=(r*-11584|0)+n>>11;n=m+1|0;if((n|0)<5){l=l+2|0;f=f+4|0;e=e+4|0;m=n}else{break}}m=h+4|0;e=h+1|0;f=h+3|0;l=h+2|0;n=d;d=0;while(1){r=c[g+(d<<2)>>2]|0;q=(c[n>>2]<<13)+131072|0;s=c[n+8>>2]|0;u=c[n+16>>2]|0;o=(u+s|0)*6476|0;p=s-u|0;u=(p*2896|0)+q|0;s=u+o|0;t=u-o|0;o=c[n+4>>2]|0;u=c[n+12>>2]|0;v=(u+o|0)*6810|0;w=v+(o*4209|0)|0;o=v+(u*-17828|0)|0;a[r+h|0]=a[k+(((w+s|0)>>>18&1023)+128)|0]|0;a[r+m|0]=a[k+(((s-w|0)>>>18&1023)+128)|0]|0;a[r+e|0]=a[k+(((o+t|0)>>>18&1023)+128)|0]|0;a[r+f|0]=a[k+(((t-o|0)>>>18&1023)+128)|0]|0;a[r+l|0]=a[k+((((p*-11584|0)+q|0)>>>18&1023)+128)|0]|0;q=d+1|0;if((q|0)<5){n=n+20|0;d=q}else{break}}i=j;return}function zZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;i=i+64|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(b[l>>1]|0,c[f>>2]|0)|0;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;p=o+n<<2;q=n-o<<2;o=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;n=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;r=((n+o|0)*4433|0)+1024|0;s=r+(o*6270|0)>>11;o=r+(n*-15137|0)>>11;c[e>>2]=s+p;c[e+48>>2]=p-s;c[e+16>>2]=o+q;c[e+32>>2]=q-o;o=m+1|0;if((o|0)<4){l=l+2|0;f=f+4|0;e=e+4|0;m=o}else{break}}m=h+3|0;e=h+1|0;f=h+2|0;l=d;d=0;while(1){o=c[g+(d<<2)>>2]|0;q=(c[l>>2]|0)+16|0;s=c[l+8>>2]|0;p=q+s<<13;n=q-s<<13;s=c[l+4>>2]|0;q=c[l+12>>2]|0;r=(q+s|0)*4433|0;t=r+(s*6270|0)|0;s=r+(q*-15137|0)|0;a[o+h|0]=a[k+(((t+p|0)>>>18&1023)+128)|0]|0;a[o+m|0]=a[k+(((p-t|0)>>>18&1023)+128)|0]|0;a[o+e|0]=a[k+(((s+n|0)>>>18&1023)+128)|0]|0;a[o+f|0]=a[k+(((n-s|0)>>>18&1023)+128)|0]|0;s=d+1|0;if((s|0)<4){l=l+16|0;d=s}else{break}}i=j;return}function AZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+40|0;k=j|0;l=c[d+332>>2]|0;d=c[e+84>>2]|0;e=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;m=da((c[d+64>>2]|0)*5793|0,b[f+32>>1]|0)|0;n=m+e|0;o=da((c[d+32>>2]|0)*10033|0,b[f+16>>1]|0)|0;p=o+n>>11;c[k>>2]=p;c[k+24>>2]=n-o>>11;o=k+12|0;c[o>>2]=(m*-2|0)+e>>11;e=da(c[d+4>>2]<<13,b[f+2>>1]|0)|0|1024;m=da((c[d+68>>2]|0)*5793|0,b[f+34>>1]|0)|0;n=m+e|0;q=da((c[d+36>>2]|0)*10033|0,b[f+18>>1]|0)|0;r=q+n>>11;c[k+4>>2]=r;c[k+28>>2]=n-q>>11;q=(m*-2|0)+e>>11;c[k+16>>2]=q;e=da(c[d+8>>2]<<13,b[f+4>>1]|0)|0|1024;m=da((c[d+72>>2]|0)*5793|0,b[f+36>>1]|0)|0;n=m+e|0;s=da((c[d+40>>2]|0)*10033|0,b[f+20>>1]|0)|0;f=s+n>>11;c[k+8>>2]=f;d=n-s>>11;c[k+32>>2]=d;s=(m*-2|0)+e>>11;c[k+20>>2]=s;e=h+2|0;m=h+1|0;n=c[g>>2]|0;t=(p<<13)+131072|0;p=t+(f*5793|0)|0;u=r*10033|0;a[n+h|0]=a[l+(((p+u|0)>>>18&1023)+128)|0]|0;a[n+e|0]=a[l+(((p-u|0)>>>18&1023)+128)|0]|0;a[n+m|0]=a[l+((((f*-11586|0)+t|0)>>>18&1023)+128)|0]|0;t=c[g+4>>2]|0;f=(c[o>>2]<<13)+131072|0;o=f+(s*5793|0)|0;n=q*10033|0;a[t+h|0]=a[l+(((o+n|0)>>>18&1023)+128)|0]|0;a[t+e|0]=a[l+(((o-n|0)>>>18&1023)+128)|0]|0;a[t+m|0]=a[l+((((s*-11586|0)+f|0)>>>18&1023)+128)|0]|0;f=c[g+8>>2]|0;g=(c[k+24>>2]<<13)+131072|0;s=g+(d*5793|0)|0;t=(c[k+28>>2]|0)*10033|0;a[f+h|0]=a[l+(((s+t|0)>>>18&1023)+128)|0]|0;a[f+e|0]=a[l+(((s-t|0)>>>18&1023)+128)|0]|0;a[f+m|0]=a[l+((((d*-11586|0)+g|0)>>>18&1023)+128)|0]|0;i=j;return}function BZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;i=c[d+332>>2]|0;d=c[e+84>>2]|0;e=da(b[f>>1]|0,c[d>>2]|0)|0;j=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;k=e+4|0;e=j+k|0;l=k-j|0;j=da(b[f+2>>1]|0,c[d+4>>2]|0)|0;k=da(b[f+18>>1]|0,c[d+36>>2]|0)|0;d=k+j|0;f=j-k|0;k=c[g>>2]|0;a[k+h|0]=a[i+(((d+e|0)>>>3&1023)+128)|0]|0;j=h+1|0;a[k+j|0]=a[i+(((e-d|0)>>>3&1023)+128)|0]|0;d=c[g+4>>2]|0;a[d+h|0]=a[i+(((f+l|0)>>>3&1023)+128)|0]|0;a[d+j|0]=a[i+(((l-f|0)>>>3&1023)+128)|0]|0;return}function CZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=a[(c[d+332>>2]|0)+((((da(b[f>>1]|0,c[c[e+84>>2]>>2]|0)|0)+4|0)>>>3&1023)+128)|0]|0;a[(c[g>>2]|0)+h|0]=i;return}function DZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+288|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;p=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;q=da((c[f+192>>2]|0)*5793|0,b[l+96>>1]|0)|0;r=q+n|0;s=n-q-q|0;q=o-p|0;n=s+(q*5793|0)|0;t=(p+o|0)*10887|0;u=o*8875|0;o=p*2012|0;p=t-o+r|0;v=r-t+u|0;t=r-u+o|0;o=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;u=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;r=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;w=da((c[f+96>>2]|0)*-10033|0,b[l+48>>1]|0)|0;x=(u+o|0)*7447|0;y=(r+o|0)*3962|0;z=x-w+y|0;A=(u-r|0)*11409|0;B=w-A+x|0;x=A+w+y|0;y=(o-u-r|0)*10033|0;c[e>>2]=z+p>>11;c[e+256>>2]=p-z>>11;c[e+32>>2]=y+n>>11;c[e+224>>2]=n-y>>11;c[e+64>>2]=B+v>>11;c[e+192>>2]=v-B>>11;c[e+96>>2]=x+t>>11;c[e+160>>2]=t-x>>11;c[e+128>>2]=(q*-11586|0)+s>>11;s=m+1|0;if((s|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=s}else{break}}m=h+8|0;e=h+1|0;f=h+7|0;l=h+2|0;s=h+6|0;q=h+3|0;x=h+5|0;t=h+4|0;B=d;d=0;while(1){v=c[g+(d<<2)>>2]|0;y=(c[B>>2]<<13)+131072|0;n=c[B+8>>2]|0;z=c[B+16>>2]|0;p=(c[B+24>>2]|0)*5793|0;r=p+y|0;u=y-p-p|0;p=n-z|0;y=u+(p*5793|0)|0;o=(z+n|0)*10887|0;w=n*8875|0;n=z*2012|0;z=o-n+r|0;A=r-o+w|0;o=r-w+n|0;n=c[B+4>>2]|0;w=c[B+20>>2]|0;r=c[B+28>>2]|0;C=(c[B+12>>2]|0)*-10033|0;D=(w+n|0)*7447|0;E=(r+n|0)*3962|0;F=D-C+E|0;G=(w-r|0)*11409|0;H=C-G+D|0;D=G+C+E|0;E=(n-w-r|0)*10033|0;a[v+h|0]=a[k+(((F+z|0)>>>18&1023)+128)|0]|0;a[v+m|0]=a[k+(((z-F|0)>>>18&1023)+128)|0]|0;a[v+e|0]=a[k+(((E+y|0)>>>18&1023)+128)|0]|0;a[v+f|0]=a[k+(((y-E|0)>>>18&1023)+128)|0]|0;a[v+l|0]=a[k+(((H+A|0)>>>18&1023)+128)|0]|0;a[v+s|0]=a[k+(((A-H|0)>>>18&1023)+128)|0]|0;a[v+q|0]=a[k+(((D+o|0)>>>18&1023)+128)|0]|0;a[v+x|0]=a[k+(((o-D|0)>>>18&1023)+128)|0]|0;a[v+t|0]=a[k+((((p*-11586|0)+u|0)>>>18&1023)+128)|0]|0;u=d+1|0;if((u|0)<9){B=B+32|0;d=u}else{break}}i=j;return}function EZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+320|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;p=(o*9373|0)+n|0;q=(o*-3580|0)+n|0;r=(o*-11586|0)+n>>11;n=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;o=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;s=(o+n|0)*6810|0;t=s+(n*4209|0)|0;n=s+(o*-17828|0)|0;o=t+p|0;s=p-t|0;t=n+q|0;p=q-n|0;n=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;q=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;u=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;v=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;w=v+q|0;x=q-v|0;v=x*2531|0;q=u<<13;y=w*7791|0;z=v+q|0;A=y+(n*11443|0)+z|0;B=(n*1812|0)-y+z|0;z=w*4815|0;w=q-v-(x<<12)|0;v=n-u-x<<2;x=(n*10323|0)-z-w|0;u=w+((n*5260|0)-z)|0;c[e>>2]=A+o>>11;c[e+288>>2]=o-A>>11;c[e+32>>2]=x+t>>11;c[e+256>>2]=t-x>>11;c[e+64>>2]=v+r;c[e+224>>2]=r-v;c[e+96>>2]=u+p>>11;c[e+192>>2]=p-u>>11;c[e+128>>2]=B+s>>11;c[e+160>>2]=s-B>>11;B=m+1|0;if((B|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=B}else{break}}m=h+9|0;e=h+1|0;f=h+8|0;l=h+2|0;B=h+7|0;s=h+3|0;u=h+6|0;p=h+4|0;v=h+5|0;r=d;d=0;while(1){x=c[g+(d<<2)>>2]|0;t=(c[r>>2]<<13)+131072|0;A=c[r+16>>2]|0;o=t+(A*9373|0)|0;z=t+(A*-3580|0)|0;n=t+(A*-11586|0)|0;A=c[r+8>>2]|0;t=c[r+24>>2]|0;w=(t+A|0)*6810|0;q=w+(A*4209|0)|0;A=w+(t*-17828|0)|0;t=q+o|0;w=o-q|0;q=A+z|0;o=z-A|0;A=c[r+4>>2]|0;z=c[r+12>>2]|0;y=c[r+20>>2]<<13;C=c[r+28>>2]|0;D=C+z|0;E=z-C|0;C=E*2531|0;z=D*7791|0;F=C+y|0;G=z+(A*11443|0)+F|0;H=(A*1812|0)-z+F|0;F=D*4815|0;D=y-C-(E<<12)|0;C=(A-E<<13)-y|0;y=(A*10323|0)-F-D|0;E=D+((A*5260|0)-F)|0;a[x+h|0]=a[k+(((G+t|0)>>>18&1023)+128)|0]|0;a[x+m|0]=a[k+(((t-G|0)>>>18&1023)+128)|0]|0;a[x+e|0]=a[k+(((y+q|0)>>>18&1023)+128)|0]|0;a[x+f|0]=a[k+(((q-y|0)>>>18&1023)+128)|0]|0;a[x+l|0]=a[k+(((C+n|0)>>>18&1023)+128)|0]|0;a[x+B|0]=a[k+(((n-C|0)>>>18&1023)+128)|0]|0;a[x+s|0]=a[k+(((E+o|0)>>>18&1023)+128)|0]|0;a[x+u|0]=a[k+(((o-E|0)>>>18&1023)+128)|0]|0;a[x+p|0]=a[k+(((H+w|0)>>>18&1023)+128)|0]|0;a[x+v|0]=a[k+(((w-H|0)>>>18&1023)+128)|0]|0;H=d+1|0;if((H|0)<10){r=r+32|0;d=H}else{break}}i=j;return}function FZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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,J=0,K=0,L=0,M=0;j=i;i=i+352|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;p=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;q=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;r=(p-q|0)*20862|0;s=(p-o|0)*3529|0;t=q+o|0;u=t-p|0;v=(u*11116|0)+n|0;w=s+(p*-14924|0)+r+v|0;x=r+(q*17333|0)+v|0;r=s+(o*-12399|0)+v|0;s=v+(t*-9467|0)|0;t=s+(q*-6461|0)|0;q=(p*15929|0)+(o*-11395|0)+s|0;s=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;o=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;p=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;v=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;y=o+s|0;z=(p+y+v|0)*3264|0;A=y*7274|0;y=(p+s|0)*5492|0;B=z+((v+s|0)*3e3|0)|0;C=A+(s*-7562|0)+y+B|0;s=z+((p+o|0)*-9527|0)|0;D=y+(p*-9766|0)+s|0;y=(v+o|0)*-14731|0;E=A+(o*16984|0)+y+s|0;s=y+(v*17223|0)+B|0;B=(p*8203|0)+(o*-12019|0)+(v*-13802|0)+z|0;c[e>>2]=C+x>>11;c[e+320>>2]=x-C>>11;c[e+32>>2]=E+w>>11;c[e+288>>2]=w-E>>11;c[e+64>>2]=D+t>>11;c[e+256>>2]=t-D>>11;c[e+96>>2]=s+r>>11;c[e+224>>2]=r-s>>11;c[e+128>>2]=B+q>>11;c[e+192>>2]=q-B>>11;c[e+160>>2]=(u*-11585|0)+n>>11;n=m+1|0;if((n|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=n}else{break}}m=h+10|0;e=h+1|0;f=h+9|0;l=h+2|0;n=h+8|0;u=h+3|0;B=h+7|0;q=h+4|0;s=h+6|0;r=h+5|0;D=d;d=0;while(1){t=c[g+(d<<2)>>2]|0;E=(c[D>>2]<<13)+131072|0;w=c[D+8>>2]|0;C=c[D+16>>2]|0;x=c[D+24>>2]|0;z=(C-x|0)*20862|0;v=(C-w|0)*3529|0;o=x+w|0;p=o-C|0;y=(p*11116|0)+E|0;A=v+(C*-14924|0)+z+y|0;F=z+(x*17333|0)+y|0;z=v+(w*-12399|0)+y|0;v=y+(o*-9467|0)|0;o=v+(x*-6461|0)|0;x=(C*15929|0)+(w*-11395|0)+v|0;v=c[D+4>>2]|0;w=c[D+12>>2]|0;C=c[D+20>>2]|0;y=c[D+28>>2]|0;G=w+v|0;H=(G+C+y|0)*3264|0;I=G*7274|0;G=(C+v|0)*5492|0;J=H+((y+v|0)*3e3|0)|0;K=I+(v*-7562|0)+G+J|0;v=H+((C+w|0)*-9527|0)|0;L=G+(C*-9766|0)+v|0;G=(y+w|0)*-14731|0;M=I+(w*16984|0)+G+v|0;v=G+(y*17223|0)+J|0;J=(C*8203|0)+(w*-12019|0)+(y*-13802|0)+H|0;a[t+h|0]=a[k+(((K+F|0)>>>18&1023)+128)|0]|0;a[t+m|0]=a[k+(((F-K|0)>>>18&1023)+128)|0]|0;a[t+e|0]=a[k+(((M+A|0)>>>18&1023)+128)|0]|0;a[t+f|0]=a[k+(((A-M|0)>>>18&1023)+128)|0]|0;a[t+l|0]=a[k+(((L+o|0)>>>18&1023)+128)|0]|0;a[t+n|0]=a[k+(((o-L|0)>>>18&1023)+128)|0]|0;a[t+u|0]=a[k+(((v+z|0)>>>18&1023)+128)|0]|0;a[t+B|0]=a[k+(((z-v|0)>>>18&1023)+128)|0]|0;a[t+q|0]=a[k+(((J+x|0)>>>18&1023)+128)|0]|0;a[t+s|0]=a[k+(((x-J|0)>>>18&1023)+128)|0]|0;a[t+r|0]=a[k+((((p*-11585|0)+E|0)>>>18&1023)+128)|0]|0;E=d+1|0;if((E|0)<11){D=D+32|0;d=E}else{break}}i=j;return} + + + +function GZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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,J=0,K=0,L=0,M=0;j=i;i=i+384|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da((c[f+128>>2]|0)*10033|0,b[l+64>>1]|0)|0;p=o+n|0;q=n-o|0;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;r=o*11190|0;s=o<<13;o=da(c[f+192>>2]<<13,b[l+96>>1]|0)|0;t=s-o|0;u=t+n|0;v=n-t|0;t=o+r|0;n=t+p|0;w=p-t|0;t=r-s-o|0;o=t+q|0;s=q-t|0;t=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;q=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;r=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;p=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;x=q*10703|0;y=q*-4433|0;z=r+t|0;A=(p+z|0)*7053|0;B=A+(z*2139|0)|0;z=x+(t*2295|0)+B|0;C=(p+r|0)*-8565|0;D=(r*-12112|0)+y+C+B|0;B=(p*12998|0)-x+A+C|0;C=y+(t*-5540|0)+(p*-16244|0)+A|0;A=t-p|0;p=q-r|0;r=(A+p|0)*4433|0;q=r+(A*6270|0)|0;A=r+(p*-15137|0)|0;c[e>>2]=z+n>>11;c[e+352>>2]=n-z>>11;c[e+32>>2]=q+u>>11;c[e+320>>2]=u-q>>11;c[e+64>>2]=D+o>>11;c[e+288>>2]=o-D>>11;c[e+96>>2]=B+s>>11;c[e+256>>2]=s-B>>11;c[e+128>>2]=A+v>>11;c[e+224>>2]=v-A>>11;c[e+160>>2]=C+w>>11;c[e+192>>2]=w-C>>11;C=m+1|0;if((C|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=C}else{break}}m=h+11|0;e=h+1|0;f=h+10|0;l=h+2|0;C=h+9|0;w=h+3|0;A=h+8|0;v=h+4|0;B=h+7|0;s=h+5|0;D=h+6|0;o=d;d=0;while(1){q=c[g+(d<<2)>>2]|0;u=(c[o>>2]<<13)+131072|0;z=(c[o+16>>2]|0)*10033|0;n=u+z|0;p=u-z|0;z=c[o+8>>2]|0;r=z*11190|0;t=z<<13;z=c[o+24>>2]<<13;y=t-z|0;x=y+u|0;E=u-y|0;y=z+r|0;u=y+n|0;F=n-y|0;y=r-t-z|0;z=y+p|0;t=p-y|0;y=c[o+4>>2]|0;p=c[o+12>>2]|0;r=c[o+20>>2]|0;n=c[o+28>>2]|0;G=p*10703|0;H=p*-4433|0;I=r+y|0;J=(I+n|0)*7053|0;K=J+(I*2139|0)|0;I=G+(y*2295|0)+K|0;L=(n+r|0)*-8565|0;M=(r*-12112|0)+H+L+K|0;K=(n*12998|0)-G+J+L|0;L=H+(y*-5540|0)+(n*-16244|0)+J|0;J=y-n|0;n=p-r|0;r=(J+n|0)*4433|0;p=r+(J*6270|0)|0;J=r+(n*-15137|0)|0;a[q+h|0]=a[k+(((I+u|0)>>>18&1023)+128)|0]|0;a[q+m|0]=a[k+(((u-I|0)>>>18&1023)+128)|0]|0;a[q+e|0]=a[k+(((p+x|0)>>>18&1023)+128)|0]|0;a[q+f|0]=a[k+(((x-p|0)>>>18&1023)+128)|0]|0;a[q+l|0]=a[k+(((M+z|0)>>>18&1023)+128)|0]|0;a[q+C|0]=a[k+(((z-M|0)>>>18&1023)+128)|0]|0;a[q+w|0]=a[k+(((K+t|0)>>>18&1023)+128)|0]|0;a[q+A|0]=a[k+(((t-K|0)>>>18&1023)+128)|0]|0;a[q+v|0]=a[k+(((J+E|0)>>>18&1023)+128)|0]|0;a[q+B|0]=a[k+(((E-J|0)>>>18&1023)+128)|0]|0;a[q+s|0]=a[k+(((L+F|0)>>>18&1023)+128)|0]|0;a[q+D|0]=a[k+(((F-L|0)>>>18&1023)+128)|0]|0;L=d+1|0;if((L|0)<12){o=o+32|0;d=L}else{break}}i=j;return}function HZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;j=i;i=i+416|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;p=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;q=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;r=q+p|0;s=p-q|0;q=r*9465|0;p=(s*793|0)+n|0;t=q+(o*11249|0)+p|0;u=(o*4108|0)-q+p|0;p=r*2592|0;q=(s*3989|0)+n|0;v=(o*8672|0)-p+q|0;w=p+(o*-10258|0)+q|0;q=r*3570|0;r=n+(s*-7678|0)|0;p=(o*-1396|0)-q+r|0;x=q+(o*-6581|0)+r|0;r=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;q=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;y=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;z=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;A=(q+r|0)*10832|0;B=(y+r|0)*9534|0;C=z+r|0;D=C*7682|0;E=A+(r*-16549|0)+B+D|0;F=(y+q|0)*-2773|0;G=(z+q|0)*-9534|0;H=A+(q*6859|0)+F+G|0;A=(z+y|0)*-5384|0;I=F+(y*-12879|0)+B+A|0;B=G+(z*18068|0)+D+A|0;A=C*2773|0;C=(y-q|0)*7682|0;D=(q*-3818|0)+(r*2611|0)+C+A|0;r=C+(y*3150|0)+(z*-14273|0)+A|0;c[e>>2]=E+t>>11;c[e+384>>2]=t-E>>11;c[e+32>>2]=H+v>>11;c[e+352>>2]=v-H>>11;c[e+64>>2]=I+u>>11;c[e+320>>2]=u-I>>11;c[e+96>>2]=B+p>>11;c[e+288>>2]=p-B>>11;c[e+128>>2]=D+x>>11;c[e+256>>2]=x-D>>11;c[e+160>>2]=r+w>>11;c[e+224>>2]=w-r>>11;c[e+192>>2]=((s-o|0)*11585|0)+n>>11;n=m+1|0;if((n|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=n}else{break}}m=h+12|0;e=h+1|0;f=h+11|0;l=h+2|0;n=h+10|0;o=h+3|0;s=h+9|0;r=h+4|0;w=h+8|0;D=h+5|0;x=h+7|0;B=h+6|0;p=d;d=0;while(1){I=c[g+(d<<2)>>2]|0;u=(c[p>>2]<<13)+131072|0;H=c[p+8>>2]|0;v=c[p+16>>2]|0;E=c[p+24>>2]|0;t=E+v|0;A=v-E|0;E=t*9465|0;v=(A*793|0)+u|0;z=E+(H*11249|0)+v|0;y=(H*4108|0)-E+v|0;v=t*2592|0;E=(A*3989|0)+u|0;C=(H*8672|0)-v+E|0;q=v+(H*-10258|0)+E|0;E=t*3570|0;t=u+(A*-7678|0)|0;v=(H*-1396|0)-E+t|0;G=E+(H*-6581|0)+t|0;t=c[p+4>>2]|0;E=c[p+12>>2]|0;F=c[p+20>>2]|0;J=c[p+28>>2]|0;K=(E+t|0)*10832|0;L=(F+t|0)*9534|0;M=J+t|0;N=M*7682|0;O=K+(t*-16549|0)+L+N|0;P=(F+E|0)*-2773|0;Q=(J+E|0)*-9534|0;R=K+(E*6859|0)+P+Q|0;K=(J+F|0)*-5384|0;S=P+(F*-12879|0)+L+K|0;L=Q+(J*18068|0)+N+K|0;K=M*2773|0;M=(F-E|0)*7682|0;N=(E*-3818|0)+(t*2611|0)+M+K|0;t=M+(F*3150|0)+(J*-14273|0)+K|0;a[I+h|0]=a[k+(((O+z|0)>>>18&1023)+128)|0]|0;a[I+m|0]=a[k+(((z-O|0)>>>18&1023)+128)|0]|0;a[I+e|0]=a[k+(((R+C|0)>>>18&1023)+128)|0]|0;a[I+f|0]=a[k+(((C-R|0)>>>18&1023)+128)|0]|0;a[I+l|0]=a[k+(((S+y|0)>>>18&1023)+128)|0]|0;a[I+n|0]=a[k+(((y-S|0)>>>18&1023)+128)|0]|0;a[I+o|0]=a[k+(((L+v|0)>>>18&1023)+128)|0]|0;a[I+s|0]=a[k+(((v-L|0)>>>18&1023)+128)|0]|0;a[I+r|0]=a[k+(((N+G|0)>>>18&1023)+128)|0]|0;a[I+w|0]=a[k+(((G-N|0)>>>18&1023)+128)|0]|0;a[I+D|0]=a[k+(((t+q|0)>>>18&1023)+128)|0]|0;a[I+x|0]=a[k+(((q-t|0)>>>18&1023)+128)|0]|0;a[I+B|0]=a[k+(((((A-H|0)*11585|0)+u|0)>>>18&1023)+128)|0]|0;u=d+1|0;if((u|0)<13){p=p+32|0;d=u}else{break}}i=j;return}function IZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;j=i;i=i+448|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;p=(o*10438|0)+n|0;q=(o*2578|0)+n|0;r=(o*-7223|0)+n|0;s=(o*-11586|0)+n>>11;n=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;o=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;t=(o+n|0)*9058|0;u=t+(n*2237|0)|0;v=t+(o*-14084|0)|0;t=(o*-11295|0)+(n*5027|0)|0;n=u+p|0;o=p-u|0;u=v+q|0;p=q-v|0;v=t+r|0;q=r-t|0;t=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;r=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;w=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;x=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;y=x<<13;z=w+t|0;A=(r+t|0)*10935|0;B=z*9810|0;C=A+(t*-9232|0)+B+y|0;D=z*6164|0;z=t-r|0;E=(z*3826|0)-y|0;F=D+(t*-8693|0)+E|0;t=((w+r|0)*-1297|0)-y|0;G=A+(r*-3474|0)+t|0;A=B+(w*-19447|0)+t|0;t=(w-r|0)*11512|0;B=t+(w*-13850|0)+D+y|0;y=t+(r*5529|0)+E|0;E=z-w+x<<2;c[e>>2]=C+n>>11;c[e+416>>2]=n-C>>11;c[e+32>>2]=G+u>>11;c[e+384>>2]=u-G>>11;c[e+64>>2]=A+v>>11;c[e+352>>2]=v-A>>11;c[e+96>>2]=E+s;c[e+320>>2]=s-E;c[e+128>>2]=B+q>>11;c[e+288>>2]=q-B>>11;c[e+160>>2]=y+p>>11;c[e+256>>2]=p-y>>11;c[e+192>>2]=F+o>>11;c[e+224>>2]=o-F>>11;F=m+1|0;if((F|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=F}else{break}}m=h+13|0;e=h+1|0;f=h+12|0;l=h+2|0;F=h+11|0;o=h+3|0;y=h+10|0;p=h+4|0;B=h+9|0;q=h+5|0;E=h+8|0;s=h+6|0;A=h+7|0;v=d;d=0;while(1){G=c[g+(d<<2)>>2]|0;u=(c[v>>2]<<13)+131072|0;C=c[v+16>>2]|0;n=u+(C*10438|0)|0;x=u+(C*2578|0)|0;w=u+(C*-7223|0)|0;z=u+(C*-11586|0)|0;C=c[v+8>>2]|0;u=c[v+24>>2]|0;r=(u+C|0)*9058|0;t=r+(C*2237|0)|0;D=r+(u*-14084|0)|0;r=(u*-11295|0)+(C*5027|0)|0;C=t+n|0;u=n-t|0;t=D+x|0;n=x-D|0;D=r+w|0;x=w-r|0;r=c[v+4>>2]|0;w=c[v+12>>2]|0;H=c[v+20>>2]|0;I=c[v+28>>2]<<13;J=H+r|0;K=(w+r|0)*10935|0;L=J*9810|0;M=K+(r*-9232|0)+L+I|0;N=J*6164|0;J=r-w|0;O=(J*3826|0)-I|0;P=N+(r*-8693|0)+O|0;r=((H+w|0)*-1297|0)-I|0;Q=K+(w*-3474|0)+r|0;K=L+(H*-19447|0)+r|0;r=(H-w|0)*11512|0;L=I+(H*-13850|0)+r+N|0;N=r+(w*5529|0)+O|0;O=(J-H<<13)+I|0;a[G+h|0]=a[k+(((M+C|0)>>>18&1023)+128)|0]|0;a[G+m|0]=a[k+(((C-M|0)>>>18&1023)+128)|0]|0;a[G+e|0]=a[k+(((Q+t|0)>>>18&1023)+128)|0]|0;a[G+f|0]=a[k+(((t-Q|0)>>>18&1023)+128)|0]|0;a[G+l|0]=a[k+(((K+D|0)>>>18&1023)+128)|0]|0;a[G+F|0]=a[k+(((D-K|0)>>>18&1023)+128)|0]|0;a[G+o|0]=a[k+(((O+z|0)>>>18&1023)+128)|0]|0;a[G+y|0]=a[k+(((z-O|0)>>>18&1023)+128)|0]|0;a[G+p|0]=a[k+(((L+x|0)>>>18&1023)+128)|0]|0;a[G+B|0]=a[k+(((x-L|0)>>>18&1023)+128)|0]|0;a[G+q|0]=a[k+(((N+n|0)>>>18&1023)+128)|0]|0;a[G+E|0]=a[k+(((n-N|0)>>>18&1023)+128)|0]|0;a[G+s|0]=a[k+(((P+u|0)>>>18&1023)+128)|0]|0;a[G+A|0]=a[k+(((u-P|0)>>>18&1023)+128)|0]|0;P=d+1|0;if((P|0)<14){v=v+32|0;d=P}else{break}}i=j;return}function JZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;j=i;i=i+480|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;p=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;q=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;r=(q*-3580|0)+n|0;s=(q*9373|0)+n|0;t=(q*-11586|0)+n|0;n=o-p|0;q=p+o|0;p=q*10958|0;u=n*374|0;v=o*11795|0;o=u+p+s|0;w=v-p+u+r|0;u=q*4482|0;p=n*-3271|0;x=s-u+p|0;y=u-v+p+r|0;p=q*6476|0;q=n*2896|0;v=q+p+r|0;r=s-p+q|0;q=t+(n*5792|0)|0;p=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;s=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;u=da((c[f+160>>2]|0)*10033|0,b[l+80>>1]|0)|0;z=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;A=s-z|0;B=(A+p|0)*6810|0;C=B+(p*4209|0)|0;D=B+(A*-17828|0)|0;A=s*-6810|0;B=s*-11018|0;s=p-z|0;E=(s*11522|0)+u|0;F=(z*20131|0)-B+E|0;G=A+(p*-9113|0)+E|0;E=(s*10033|0)-u|0;s=(z+p|0)*4712|0;H=A+(p*3897|0)-u+s|0;p=u+B+(z*-7121|0)+s|0;c[e>>2]=F+o>>11;c[e+448>>2]=o-F>>11;c[e+32>>2]=C+v>>11;c[e+416>>2]=v-C>>11;c[e+64>>2]=E+q>>11;c[e+384>>2]=q-E>>11;c[e+96>>2]=H+w>>11;c[e+352>>2]=w-H>>11;c[e+128>>2]=D+r>>11;c[e+320>>2]=r-D>>11;c[e+160>>2]=p+x>>11;c[e+288>>2]=x-p>>11;c[e+192>>2]=G+y>>11;c[e+256>>2]=y-G>>11;c[e+224>>2]=(n*-11584|0)+t>>11;t=m+1|0;if((t|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=t}else{break}}m=h+14|0;e=h+1|0;f=h+13|0;l=h+2|0;t=h+12|0;n=h+3|0;G=h+11|0;y=h+4|0;p=h+10|0;x=h+5|0;D=h+9|0;r=h+6|0;H=h+8|0;w=h+7|0;E=d;d=0;while(1){q=c[g+(d<<2)>>2]|0;C=(c[E>>2]<<13)+131072|0;v=c[E+8>>2]|0;F=c[E+16>>2]|0;o=c[E+24>>2]|0;s=(o*-3580|0)+C|0;z=(o*9373|0)+C|0;B=(o*-11586|0)+C|0;C=v-F|0;o=F+v|0;F=o*10958|0;u=C*374|0;A=v*11795|0;v=u+F+z|0;I=A-F+u+s|0;u=o*4482|0;F=C*-3271|0;J=z-u+F|0;K=u-A+F+s|0;F=o*6476|0;o=C*2896|0;A=o+F+s|0;s=z-F+o|0;o=B+(C*5792|0)|0;F=c[E+4>>2]|0;z=c[E+12>>2]|0;u=(c[E+20>>2]|0)*10033|0;L=c[E+28>>2]|0;M=z-L|0;N=(M+F|0)*6810|0;O=N+(F*4209|0)|0;P=N+(M*-17828|0)|0;M=z*-6810|0;N=z*-11018|0;z=F-L|0;Q=(z*11522|0)+u|0;R=(L*20131|0)-N+Q|0;S=M+(F*-9113|0)+Q|0;Q=(z*10033|0)-u|0;z=(L+F|0)*4712|0;T=M+(F*3897|0)-u+z|0;F=u+N+(L*-7121|0)+z|0;a[q+h|0]=a[k+(((R+v|0)>>>18&1023)+128)|0]|0;a[q+m|0]=a[k+(((v-R|0)>>>18&1023)+128)|0]|0;a[q+e|0]=a[k+(((O+A|0)>>>18&1023)+128)|0]|0;a[q+f|0]=a[k+(((A-O|0)>>>18&1023)+128)|0]|0;a[q+l|0]=a[k+(((Q+o|0)>>>18&1023)+128)|0]|0;a[q+t|0]=a[k+(((o-Q|0)>>>18&1023)+128)|0]|0;a[q+n|0]=a[k+(((T+I|0)>>>18&1023)+128)|0]|0;a[q+G|0]=a[k+(((I-T|0)>>>18&1023)+128)|0]|0;a[q+y|0]=a[k+(((P+s|0)>>>18&1023)+128)|0]|0;a[q+p|0]=a[k+(((s-P|0)>>>18&1023)+128)|0]|0;a[q+x|0]=a[k+(((F+J|0)>>>18&1023)+128)|0]|0;a[q+D|0]=a[k+(((J-F|0)>>>18&1023)+128)|0]|0;a[q+r|0]=a[k+(((S+K|0)>>>18&1023)+128)|0]|0;a[q+H|0]=a[k+(((K-S|0)>>>18&1023)+128)|0]|0;a[q+w|0]=a[k+((((C*-11584|0)+B|0)>>>18&1023)+128)|0]|0;B=d+1|0;if((B|0)<15){E=E+32|0;d=B}else{break}}i=j;return}function KZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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,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=i;i=i+512|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;p=o*10703|0;q=o*4433|0;o=p+n|0;r=n-p|0;p=q+n|0;s=n-q|0;q=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;n=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;t=q-n|0;u=t*2260|0;v=t*11363|0;t=v+(n*20995|0)|0;w=u+(q*7373|0)|0;x=v+(q*-4926|0)|0;q=u+(n*-4176|0)|0;n=t+o|0;u=o-t|0;t=w+p|0;o=p-w|0;w=x+s|0;p=s-x|0;x=q+r|0;s=r-q|0;q=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;r=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;v=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;y=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;z=v+q|0;A=(r+q|0)*11086|0;B=z*10217|0;C=(y+q|0)*8956|0;D=(q-y|0)*7350|0;E=z*5461|0;z=(q-r|0)*3363|0;F=A+(q*-18730|0)+B+C|0;G=z+(q*-15038|0)+E+D|0;q=(v+r|0)*1136|0;H=(v-r|0)*11529|0;I=y+r|0;J=I*-5461|0;K=A+(r*589|0)+q+J|0;A=I*-10217|0;I=z+(r*16154|0)+H+A|0;r=(y+v|0)*-11086|0;z=q+(v*-9222|0)+B+r|0;B=J+(y*8728|0)+C+r|0;r=(y-v|0)*3363|0;C=A+(y*25733|0)+D+r|0;D=H+(v*-6278|0)+E+r|0;c[e>>2]=F+n>>11;c[e+480>>2]=n-F>>11;c[e+32>>2]=K+t>>11;c[e+448>>2]=t-K>>11;c[e+64>>2]=z+w>>11;c[e+416>>2]=w-z>>11;c[e+96>>2]=B+x>>11;c[e+384>>2]=x-B>>11;c[e+128>>2]=C+s>>11;c[e+352>>2]=s-C>>11;c[e+160>>2]=D+p>>11;c[e+320>>2]=p-D>>11;c[e+192>>2]=I+o>>11;c[e+288>>2]=o-I>>11;c[e+224>>2]=G+u>>11;c[e+256>>2]=u-G>>11;G=m+1|0;if((G|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=G}else{break}}m=h+15|0;e=h+1|0;f=h+14|0;l=h+2|0;G=h+13|0;u=h+3|0;I=h+12|0;o=h+4|0;D=h+11|0;p=h+5|0;C=h+10|0;s=h+6|0;B=h+9|0;x=h+7|0;z=h+8|0;w=d;d=0;while(1){K=c[g+(d<<2)>>2]|0;t=(c[w>>2]<<13)+131072|0;F=c[w+16>>2]|0;n=F*10703|0;r=F*4433|0;F=t+n|0;E=t-n|0;n=t+r|0;v=t-r|0;r=c[w+8>>2]|0;t=c[w+24>>2]|0;H=r-t|0;y=H*2260|0;A=H*11363|0;H=A+(t*20995|0)|0;J=y+(r*7373|0)|0;q=A+(r*-4926|0)|0;r=y+(t*-4176|0)|0;t=H+F|0;y=F-H|0;H=J+n|0;F=n-J|0;J=q+v|0;n=v-q|0;q=r+E|0;v=E-r|0;r=c[w+4>>2]|0;E=c[w+12>>2]|0;A=c[w+20>>2]|0;L=c[w+28>>2]|0;M=A+r|0;N=(E+r|0)*11086|0;O=M*10217|0;P=(L+r|0)*8956|0;Q=(r-L|0)*7350|0;R=M*5461|0;M=(r-E|0)*3363|0;S=N+(r*-18730|0)+O+P|0;T=M+(r*-15038|0)+R+Q|0;r=(A+E|0)*1136|0;U=(A-E|0)*11529|0;V=L+E|0;W=V*-5461|0;X=N+(E*589|0)+r+W|0;N=V*-10217|0;V=M+(E*16154|0)+U+N|0;E=(L+A|0)*-11086|0;M=r+(A*-9222|0)+O+E|0;O=W+(L*8728|0)+P+E|0;E=(L-A|0)*3363|0;P=N+(L*25733|0)+Q+E|0;Q=U+(A*-6278|0)+R+E|0;a[K+h|0]=a[k+(((S+t|0)>>>18&1023)+128)|0]|0;a[K+m|0]=a[k+(((t-S|0)>>>18&1023)+128)|0]|0;a[K+e|0]=a[k+(((X+H|0)>>>18&1023)+128)|0]|0;a[K+f|0]=a[k+(((H-X|0)>>>18&1023)+128)|0]|0;a[K+l|0]=a[k+(((M+J|0)>>>18&1023)+128)|0]|0;a[K+G|0]=a[k+(((J-M|0)>>>18&1023)+128)|0]|0;a[K+u|0]=a[k+(((O+q|0)>>>18&1023)+128)|0]|0;a[K+I|0]=a[k+(((q-O|0)>>>18&1023)+128)|0]|0;a[K+o|0]=a[k+(((P+v|0)>>>18&1023)+128)|0]|0;a[K+D|0]=a[k+(((v-P|0)>>>18&1023)+128)|0]|0;a[K+p|0]=a[k+(((Q+n|0)>>>18&1023)+128)|0]|0;a[K+C|0]=a[k+(((n-Q|0)>>>18&1023)+128)|0]|0;a[K+s|0]=a[k+(((V+F|0)>>>18&1023)+128)|0]|0;a[K+B|0]=a[k+(((F-V|0)>>>18&1023)+128)|0]|0;a[K+x|0]=a[k+(((T+y|0)>>>18&1023)+128)|0]|0;a[K+z|0]=a[k+(((y-T|0)>>>18&1023)+128)|0]|0;T=d+1|0;if((T|0)<16){w=w+32|0;d=T}else{break}}i=j;return}function LZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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,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=i;i=i+256|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=8;while(1){n=b[l+16>>1]|0;o=b[l+32>>1]|0;do{if((n|o)<<16>>16==0){if((b[l+48>>1]|0)!=0){p=0;q=10;break}if((b[l+64>>1]|0)!=0){p=0;q=10;break}if((b[l+80>>1]|0)!=0){p=0;q=10;break}if((b[l+96>>1]|0)!=0){p=0;q=10;break}if((b[l+112>>1]|0)!=0){p=0;q=10;break}r=da(c[f>>2]<<2,b[l>>1]|0)|0;c[e>>2]=r;c[e+32>>2]=r;c[e+64>>2]=r;c[e+96>>2]=r;c[e+128>>2]=r;c[e+160>>2]=r;c[e+192>>2]=r;c[e+224>>2]=r}else{p=o;q=10}}while(0);if((q|0)==10){q=0;o=da(p<<16>>16,c[f+64>>2]|0)|0;r=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;s=(r+o|0)*4433|0;t=s+(o*6270|0)|0;o=s+(r*-15137|0)|0;r=da(c[f+128>>2]<<13,b[l+64>>1]|0)|0;s=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;u=r+s|0;v=s-r|0;r=u+t|0;s=u-t|0;t=v+o|0;u=v-o|0;o=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;v=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;w=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;x=da(n<<16>>16,c[f+32>>2]|0)|0;y=w+o|0;z=x+v|0;A=(z+y|0)*9633|0;B=A+(y*-16069|0)|0;y=A+(z*-3196|0)|0;z=(x+o|0)*-7373|0;A=z+(o*2446|0)+B|0;o=z+(x*12299|0)+y|0;x=(w+v|0)*-20995|0;z=x+(v*16819|0)+y|0;y=x+(w*25172|0)+B|0;c[e>>2]=o+r>>11;c[e+224>>2]=r-o>>11;c[e+32>>2]=y+t>>11;c[e+192>>2]=t-y>>11;c[e+64>>2]=z+u>>11;c[e+160>>2]=u-z>>11;c[e+96>>2]=A+s>>11;c[e+128>>2]=s-A>>11}A=m-1|0;if((A|0)>0){l=l+2|0;f=f+4|0;e=e+4|0;m=A}else{break}}m=h+15|0;e=h+1|0;f=h+14|0;l=h+2|0;p=h+13|0;q=h+3|0;A=h+12|0;s=h+4|0;z=h+11|0;u=h+5|0;y=h+10|0;t=h+6|0;o=h+9|0;r=h+7|0;B=h+8|0;w=d;d=0;while(1){x=c[g+(d<<2)>>2]|0;v=(c[w>>2]<<13)+131072|0;C=c[w+16>>2]|0;D=C*10703|0;E=C*4433|0;C=v+D|0;F=v-D|0;D=v+E|0;G=v-E|0;E=c[w+8>>2]|0;v=c[w+24>>2]|0;H=E-v|0;I=H*2260|0;J=H*11363|0;H=J+(v*20995|0)|0;K=I+(E*7373|0)|0;L=J+(E*-4926|0)|0;E=I+(v*-4176|0)|0;v=H+C|0;I=C-H|0;H=K+D|0;C=D-K|0;K=L+G|0;D=G-L|0;L=E+F|0;G=F-E|0;E=c[w+4>>2]|0;F=c[w+12>>2]|0;J=c[w+20>>2]|0;M=c[w+28>>2]|0;N=J+E|0;O=(F+E|0)*11086|0;P=N*10217|0;Q=(M+E|0)*8956|0;R=(E-M|0)*7350|0;S=N*5461|0;N=(E-F|0)*3363|0;T=O+(E*-18730|0)+P+Q|0;U=N+(E*-15038|0)+S+R|0;E=(J+F|0)*1136|0;V=(J-F|0)*11529|0;W=M+F|0;X=W*-5461|0;Y=O+(F*589|0)+E+X|0;O=W*-10217|0;W=N+(F*16154|0)+V+O|0;F=(M+J|0)*-11086|0;N=E+(J*-9222|0)+P+F|0;P=X+(M*8728|0)+Q+F|0;F=(M-J|0)*3363|0;Q=O+(M*25733|0)+R+F|0;R=V+(J*-6278|0)+S+F|0;a[x+h|0]=a[k+(((T+v|0)>>>18&1023)+128)|0]|0;a[x+m|0]=a[k+(((v-T|0)>>>18&1023)+128)|0]|0;a[x+e|0]=a[k+(((Y+H|0)>>>18&1023)+128)|0]|0;a[x+f|0]=a[k+(((H-Y|0)>>>18&1023)+128)|0]|0;a[x+l|0]=a[k+(((N+K|0)>>>18&1023)+128)|0]|0;a[x+p|0]=a[k+(((K-N|0)>>>18&1023)+128)|0]|0;a[x+q|0]=a[k+(((P+L|0)>>>18&1023)+128)|0]|0;a[x+A|0]=a[k+(((L-P|0)>>>18&1023)+128)|0]|0;a[x+s|0]=a[k+(((Q+G|0)>>>18&1023)+128)|0]|0;a[x+z|0]=a[k+(((G-Q|0)>>>18&1023)+128)|0]|0;a[x+u|0]=a[k+(((R+D|0)>>>18&1023)+128)|0]|0;a[x+y|0]=a[k+(((D-R|0)>>>18&1023)+128)|0]|0;a[x+t|0]=a[k+(((W+C|0)>>>18&1023)+128)|0]|0;a[x+o|0]=a[k+(((C-W|0)>>>18&1023)+128)|0]|0;a[x+r|0]=a[k+(((U+I|0)>>>18&1023)+128)|0]|0;a[x+B|0]=a[k+(((I-U|0)>>>18&1023)+128)|0]|0;U=d+1|0;if((U|0)<8){w=w+32|0;d=U}else{break}}i=j;return}function MZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;j=i;i=i+224|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;p=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;q=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;r=(p-q|0)*7223|0;s=(o-p|0)*2578|0;t=(p*-15083|0)+n+s+r|0;u=q+o|0;v=(u*10438|0)+n|0;w=r+(q*-637|0)+v|0;q=s+(o*-20239|0)+v|0;v=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;o=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;s=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;r=(o+v|0)*7663|0;x=(v-o|0)*1395|0;y=(s+o|0)*-11295|0;o=r+x+y|0;z=(s+v|0)*5027|0;v=z+(r-x)|0;x=z+(s*15326|0)+y|0;c[e>>2]=v+w>>11;c[e+192>>2]=w-v>>11;c[e+32>>2]=o+t>>11;c[e+160>>2]=t-o>>11;c[e+64>>2]=x+q>>11;c[e+128>>2]=q-x>>11;c[e+96>>2]=((p-u|0)*11585|0)+n>>11;n=m+1|0;if((n|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=n}else{break}}m=h+13|0;e=h+1|0;f=h+12|0;l=h+2|0;n=h+11|0;u=h+3|0;p=h+10|0;x=h+4|0;q=h+9|0;o=h+5|0;t=h+8|0;v=h+6|0;w=h+7|0;y=d;d=0;while(1){s=c[g+(d<<2)>>2]|0;z=(c[y>>2]<<13)+131072|0;r=c[y+16>>2]|0;A=z+(r*10438|0)|0;B=z+(r*2578|0)|0;C=z+(r*-7223|0)|0;D=z+(r*-11586|0)|0;r=c[y+8>>2]|0;z=c[y+24>>2]|0;E=(z+r|0)*9058|0;F=E+(r*2237|0)|0;G=E+(z*-14084|0)|0;E=(z*-11295|0)+(r*5027|0)|0;r=F+A|0;z=A-F|0;F=G+B|0;A=B-G|0;G=E+C|0;B=C-E|0;E=c[y+4>>2]|0;C=c[y+12>>2]|0;H=c[y+20>>2]|0;I=c[y+28>>2]<<13;J=H+E|0;K=(C+E|0)*10935|0;L=J*9810|0;M=K+(E*-9232|0)+L+I|0;N=J*6164|0;J=E-C|0;O=(J*3826|0)-I|0;P=N+(E*-8693|0)+O|0;E=((H+C|0)*-1297|0)-I|0;Q=K+(C*-3474|0)+E|0;K=L+(H*-19447|0)+E|0;E=(H-C|0)*11512|0;L=I+(H*-13850|0)+E+N|0;N=E+(C*5529|0)+O|0;O=(J-H<<13)+I|0;a[s+h|0]=a[k+(((M+r|0)>>>18&1023)+128)|0]|0;a[s+m|0]=a[k+(((r-M|0)>>>18&1023)+128)|0]|0;a[s+e|0]=a[k+(((Q+F|0)>>>18&1023)+128)|0]|0;a[s+f|0]=a[k+(((F-Q|0)>>>18&1023)+128)|0]|0;a[s+l|0]=a[k+(((K+G|0)>>>18&1023)+128)|0]|0;a[s+n|0]=a[k+(((G-K|0)>>>18&1023)+128)|0]|0;a[s+u|0]=a[k+(((O+D|0)>>>18&1023)+128)|0]|0;a[s+p|0]=a[k+(((D-O|0)>>>18&1023)+128)|0]|0;a[s+x|0]=a[k+(((L+B|0)>>>18&1023)+128)|0]|0;a[s+q|0]=a[k+(((B-L|0)>>>18&1023)+128)|0]|0;a[s+o|0]=a[k+(((N+A|0)>>>18&1023)+128)|0]|0;a[s+t|0]=a[k+(((A-N|0)>>>18&1023)+128)|0]|0;a[s+v|0]=a[k+(((P+z|0)>>>18&1023)+128)|0]|0;a[s+w|0]=a[k+(((z-P|0)>>>18&1023)+128)|0]|0;P=d+1|0;if((P|0)<7){y=y+32|0;d=P}else{break}}i=j;return}function NZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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,J=0,K=0,L=0,M=0;j=i;i=i+192|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da((c[f+128>>2]|0)*5793|0,b[l+64>>1]|0)|0;p=o+n|0;q=(o*-2|0)+n>>11;n=da((c[f+64>>2]|0)*10033|0,b[l+32>>1]|0)|0;o=n+p|0;r=p-n|0;n=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;p=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;s=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;t=(s+n|0)*2998|0;u=t+(p+n<<13)|0;v=t+(s-p<<13)|0;t=n-p-s<<2;c[e>>2]=u+o>>11;c[e+160>>2]=o-u>>11;c[e+32>>2]=t+q;c[e+128>>2]=q-t;c[e+64>>2]=v+r>>11;c[e+96>>2]=r-v>>11;v=m+1|0;if((v|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=v}else{break}}m=h+11|0;e=h+1|0;f=h+10|0;l=h+2|0;v=h+9|0;r=h+3|0;t=h+8|0;q=h+4|0;u=h+7|0;o=h+5|0;s=h+6|0;p=d;d=0;while(1){n=c[g+(d<<2)>>2]|0;w=(c[p>>2]<<13)+131072|0;x=(c[p+16>>2]|0)*10033|0;y=w+x|0;z=w-x|0;x=c[p+8>>2]|0;A=x*11190|0;B=x<<13;x=c[p+24>>2]<<13;C=B-x|0;D=C+w|0;E=w-C|0;C=x+A|0;w=C+y|0;F=y-C|0;C=A-B-x|0;x=C+z|0;B=z-C|0;C=c[p+4>>2]|0;z=c[p+12>>2]|0;A=c[p+20>>2]|0;y=c[p+28>>2]|0;G=z*10703|0;H=z*-4433|0;I=A+C|0;J=(I+y|0)*7053|0;K=J+(I*2139|0)|0;I=G+(C*2295|0)+K|0;L=(y+A|0)*-8565|0;M=(A*-12112|0)+H+L+K|0;K=(y*12998|0)-G+J+L|0;L=H+(C*-5540|0)+(y*-16244|0)+J|0;J=C-y|0;y=z-A|0;A=(J+y|0)*4433|0;z=A+(J*6270|0)|0;J=A+(y*-15137|0)|0;a[n+h|0]=a[k+(((I+w|0)>>>18&1023)+128)|0]|0;a[n+m|0]=a[k+(((w-I|0)>>>18&1023)+128)|0]|0;a[n+e|0]=a[k+(((z+D|0)>>>18&1023)+128)|0]|0;a[n+f|0]=a[k+(((D-z|0)>>>18&1023)+128)|0]|0;a[n+l|0]=a[k+(((M+x|0)>>>18&1023)+128)|0]|0;a[n+v|0]=a[k+(((x-M|0)>>>18&1023)+128)|0]|0;a[n+r|0]=a[k+(((K+B|0)>>>18&1023)+128)|0]|0;a[n+t|0]=a[k+(((B-K|0)>>>18&1023)+128)|0]|0;a[n+q|0]=a[k+(((J+E|0)>>>18&1023)+128)|0]|0;a[n+u|0]=a[k+(((E-J|0)>>>18&1023)+128)|0]|0;a[n+o|0]=a[k+(((L+F|0)>>>18&1023)+128)|0]|0;a[n+s|0]=a[k+(((F-L|0)>>>18&1023)+128)|0]|0;L=d+1|0;if((L|0)<6){p=p+32|0;d=L}else{break}}i=j;return}function OZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+160|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;p=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;q=(p+o|0)*6476|0;r=o-p|0;p=(r*2896|0)+n|0;o=p+q|0;s=p-q|0;q=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;p=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;t=(p+q|0)*6810|0;u=t+(q*4209|0)|0;q=t+(p*-17828|0)|0;c[e>>2]=u+o>>11;c[e+128>>2]=o-u>>11;c[e+32>>2]=q+s>>11;c[e+96>>2]=s-q>>11;c[e+64>>2]=(r*-11584|0)+n>>11;n=m+1|0;if((n|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=n}else{break}}m=h+9|0;e=h+1|0;f=h+8|0;l=h+2|0;n=h+7|0;r=h+3|0;q=h+6|0;s=h+4|0;u=h+5|0;o=d;d=0;while(1){p=c[g+(d<<2)>>2]|0;t=(c[o>>2]<<13)+131072|0;v=c[o+16>>2]|0;w=t+(v*9373|0)|0;x=t+(v*-3580|0)|0;y=t+(v*-11586|0)|0;v=c[o+8>>2]|0;t=c[o+24>>2]|0;z=(t+v|0)*6810|0;A=z+(v*4209|0)|0;v=z+(t*-17828|0)|0;t=A+w|0;z=w-A|0;A=v+x|0;w=x-v|0;v=c[o+4>>2]|0;x=c[o+12>>2]|0;B=c[o+20>>2]<<13;C=c[o+28>>2]|0;D=C+x|0;E=x-C|0;C=E*2531|0;x=D*7791|0;F=C+B|0;G=x+(v*11443|0)+F|0;H=(v*1812|0)-x+F|0;F=D*4815|0;D=B-C-(E<<12)|0;C=(v-E<<13)-B|0;B=(v*10323|0)-F-D|0;E=D+((v*5260|0)-F)|0;a[p+h|0]=a[k+(((G+t|0)>>>18&1023)+128)|0]|0;a[p+m|0]=a[k+(((t-G|0)>>>18&1023)+128)|0]|0;a[p+e|0]=a[k+(((B+A|0)>>>18&1023)+128)|0]|0;a[p+f|0]=a[k+(((A-B|0)>>>18&1023)+128)|0]|0;a[p+l|0]=a[k+(((C+y|0)>>>18&1023)+128)|0]|0;a[p+n|0]=a[k+(((y-C|0)>>>18&1023)+128)|0]|0;a[p+r|0]=a[k+(((E+w|0)>>>18&1023)+128)|0]|0;a[p+q|0]=a[k+(((w-E|0)>>>18&1023)+128)|0]|0;a[p+s|0]=a[k+(((H+z|0)>>>18&1023)+128)|0]|0;a[p+u|0]=a[k+(((z-H|0)>>>18&1023)+128)|0]|0;H=d+1|0;if((H|0)<5){o=o+32|0;d=H}else{break}}i=j;return}function PZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+128|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(b[l>>1]|0,c[f>>2]|0)|0;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;p=o+n<<2;q=n-o<<2;o=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;n=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;r=((n+o|0)*4433|0)+1024|0;s=r+(o*6270|0)>>11;o=r+(n*-15137|0)>>11;c[e>>2]=s+p;c[e+96>>2]=p-s;c[e+32>>2]=o+q;c[e+64>>2]=q-o;o=m+1|0;if((o|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=o}else{break}}m=h+7|0;e=h+1|0;f=h+6|0;l=h+2|0;o=h+5|0;q=h+3|0;s=h+4|0;p=d;d=0;while(1){n=c[g+(d<<2)>>2]|0;r=c[p+8>>2]|0;t=c[p+24>>2]|0;u=(t+r|0)*4433|0;v=u+(r*6270|0)|0;r=u+(t*-15137|0)|0;t=(c[p>>2]|0)+16|0;u=c[p+16>>2]|0;w=t+u<<13;x=t-u<<13;u=w+v|0;t=w-v|0;v=x+r|0;w=x-r|0;r=c[p+28>>2]|0;x=c[p+20>>2]|0;y=c[p+12>>2]|0;z=c[p+4>>2]|0;A=y+r|0;B=z+x|0;C=(B+A|0)*9633|0;D=C+(A*-16069|0)|0;A=C+(B*-3196|0)|0;B=(z+r|0)*-7373|0;C=B+(r*2446|0)+D|0;r=B+(z*12299|0)+A|0;z=(y+x|0)*-20995|0;B=z+(x*16819|0)+A|0;A=z+(y*25172|0)+D|0;a[n+h|0]=a[k+(((r+u|0)>>>18&1023)+128)|0]|0;a[n+m|0]=a[k+(((u-r|0)>>>18&1023)+128)|0]|0;a[n+e|0]=a[k+(((A+v|0)>>>18&1023)+128)|0]|0;a[n+f|0]=a[k+(((v-A|0)>>>18&1023)+128)|0]|0;a[n+l|0]=a[k+(((B+w|0)>>>18&1023)+128)|0]|0;a[n+o|0]=a[k+(((w-B|0)>>>18&1023)+128)|0]|0;a[n+q|0]=a[k+(((C+t|0)>>>18&1023)+128)|0]|0;a[n+s|0]=a[k+(((t-C|0)>>>18&1023)+128)|0]|0;C=d+1|0;if((C|0)<4){p=p+32|0;d=C}else{break}}i=j;return}function QZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+72|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da((c[f+64>>2]|0)*5793|0,b[l+32>>1]|0)|0;p=o+n|0;q=da((c[f+32>>2]|0)*10033|0,b[l+16>>1]|0)|0;c[e>>2]=q+p>>11;c[e+48>>2]=p-q>>11;c[e+24>>2]=(o*-2|0)+n>>11;n=m+1|0;if((n|0)<6){l=l+2|0;f=f+4|0;e=e+4|0;m=n}else{break}}m=h+5|0;e=h+1|0;f=h+4|0;l=h+2|0;n=h+3|0;o=d;d=0;while(1){q=c[g+(d<<2)>>2]|0;p=(c[o>>2]<<13)+131072|0;r=(c[o+16>>2]|0)*5793|0;s=p+r|0;t=p-r-r|0;r=(c[o+8>>2]|0)*10033|0;p=s+r|0;u=s-r|0;r=c[o+4>>2]|0;s=c[o+12>>2]|0;v=c[o+20>>2]|0;w=(v+r|0)*2998|0;x=w+(s+r<<13)|0;y=w+(v-s<<13)|0;w=r-s-v<<13;a[q+h|0]=a[k+(((x+p|0)>>>18&1023)+128)|0]|0;a[q+m|0]=a[k+(((p-x|0)>>>18&1023)+128)|0]|0;a[q+e|0]=a[k+(((w+t|0)>>>18&1023)+128)|0]|0;a[q+f|0]=a[k+(((t-w|0)>>>18&1023)+128)|0]|0;a[q+l|0]=a[k+(((y+u|0)>>>18&1023)+128)|0]|0;a[q+n|0]=a[k+(((u-y|0)>>>18&1023)+128)|0]|0;y=d+1|0;if((y|0)<3){o=o+24|0;d=y}else{break}}i=j;return}function RZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+32|0;k=j|0;l=c[d+332>>2]|0;d=c[e+84>>2]|0;e=da(b[f>>1]|0,c[d>>2]|0)|0;m=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;n=m+e|0;c[k>>2]=n;o=k+16|0;c[o>>2]=e-m;m=da(b[f+2>>1]|0,c[d+4>>2]|0)|0;e=da(b[f+18>>1]|0,c[d+36>>2]|0)|0;p=e+m|0;c[k+4>>2]=p;q=m-e|0;c[k+20>>2]=q;e=da(b[f+4>>1]|0,c[d+8>>2]|0)|0;m=da(b[f+20>>1]|0,c[d+40>>2]|0)|0;r=m+e|0;c[k+8>>2]=r;s=e-m|0;c[k+24>>2]=s;m=da(b[f+6>>1]|0,c[d+12>>2]|0)|0;e=da(b[f+22>>1]|0,c[d+44>>2]|0)|0;d=e+m|0;c[k+12>>2]=d;f=m-e|0;c[k+28>>2]=f;k=h+3|0;e=h+1|0;m=h+2|0;t=c[g>>2]|0;u=n+4|0;n=u+r<<13;v=u-r<<13;r=(d+p|0)*4433|0;u=r+(p*6270|0)|0;p=r+(d*-15137|0)|0;a[t+h|0]=a[l+(((u+n|0)>>>16&1023)+128)|0]|0;a[t+k|0]=a[l+(((n-u|0)>>>16&1023)+128)|0]|0;a[t+e|0]=a[l+(((p+v|0)>>>16&1023)+128)|0]|0;a[t+m|0]=a[l+(((v-p|0)>>>16&1023)+128)|0]|0;p=c[g+4>>2]|0;g=(c[o>>2]|0)+4|0;o=g+s<<13;v=g-s<<13;s=(f+q|0)*4433|0;g=s+(q*6270|0)|0;q=s+(f*-15137|0)|0;a[p+h|0]=a[l+(((g+o|0)>>>16&1023)+128)|0]|0;a[p+k|0]=a[l+(((o-g|0)>>>16&1023)+128)|0]|0;a[p+e|0]=a[l+(((q+v|0)>>>16&1023)+128)|0]|0;a[p+m|0]=a[l+(((v-q|0)>>>16&1023)+128)|0]|0;i=j;return}function SZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;i=c[d+332>>2]|0;d=c[e+84>>2]|0;e=c[g>>2]|0;g=(da(b[f>>1]|0,c[d>>2]|0)|0)+4|0;j=da(b[f+2>>1]|0,c[d+4>>2]|0)|0;a[e+h|0]=a[i+(((j+g|0)>>>3&1023)+128)|0]|0;a[e+(h+1)|0]=a[i+(((g-j|0)>>>3&1023)+128)|0]|0;return}function TZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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,J=0,K=0;j=i;i=i+512|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;p=o*10703|0;q=o*4433|0;o=p+n|0;r=n-p|0;p=q+n|0;s=n-q|0;q=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;n=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;t=q-n|0;u=t*2260|0;v=t*11363|0;t=v+(n*20995|0)|0;w=u+(q*7373|0)|0;x=v+(q*-4926|0)|0;q=u+(n*-4176|0)|0;n=t+o|0;u=o-t|0;t=w+p|0;o=p-w|0;w=x+s|0;p=s-x|0;x=q+r|0;s=r-q|0;q=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;r=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;v=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;y=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;z=v+q|0;A=(r+q|0)*11086|0;B=z*10217|0;C=(y+q|0)*8956|0;D=(q-y|0)*7350|0;E=z*5461|0;z=(q-r|0)*3363|0;F=A+(q*-18730|0)+B+C|0;G=z+(q*-15038|0)+E+D|0;q=(v+r|0)*1136|0;H=(v-r|0)*11529|0;I=y+r|0;J=I*-5461|0;K=A+(r*589|0)+q+J|0;A=I*-10217|0;I=z+(r*16154|0)+H+A|0;r=(y+v|0)*-11086|0;z=q+(v*-9222|0)+B+r|0;B=J+(y*8728|0)+C+r|0;r=(y-v|0)*3363|0;C=A+(y*25733|0)+D+r|0;D=H+(v*-6278|0)+E+r|0;c[e>>2]=F+n>>11;c[e+480>>2]=n-F>>11;c[e+32>>2]=K+t>>11;c[e+448>>2]=t-K>>11;c[e+64>>2]=z+w>>11;c[e+416>>2]=w-z>>11;c[e+96>>2]=B+x>>11;c[e+384>>2]=x-B>>11;c[e+128>>2]=C+s>>11;c[e+352>>2]=s-C>>11;c[e+160>>2]=D+p>>11;c[e+320>>2]=p-D>>11;c[e+192>>2]=I+o>>11;c[e+288>>2]=o-I>>11;c[e+224>>2]=G+u>>11;c[e+256>>2]=u-G>>11;G=m+1|0;if((G|0)<8){l=l+2|0;f=f+4|0;e=e+4|0;m=G}else{break}}m=h+7|0;e=h+1|0;f=h+6|0;l=h+2|0;G=h+5|0;u=h+3|0;I=h+4|0;o=d;d=0;while(1){D=c[g+(d<<2)>>2]|0;p=c[o+8>>2]|0;C=c[o+24>>2]|0;s=(C+p|0)*4433|0;B=s+(p*6270|0)|0;p=s+(C*-15137|0)|0;C=(c[o>>2]|0)+16|0;s=c[o+16>>2]|0;x=C+s<<13;z=C-s<<13;s=x+B|0;C=x-B|0;B=z+p|0;x=z-p|0;p=c[o+28>>2]|0;z=c[o+20>>2]|0;w=c[o+12>>2]|0;K=c[o+4>>2]|0;t=w+p|0;F=K+z|0;n=(F+t|0)*9633|0;r=n+(t*-16069|0)|0;t=n+(F*-3196|0)|0;F=(K+p|0)*-7373|0;n=F+(p*2446|0)+r|0;p=F+(K*12299|0)+t|0;K=(w+z|0)*-20995|0;F=K+(z*16819|0)+t|0;t=K+(w*25172|0)+r|0;a[D+h|0]=a[k+(((p+s|0)>>>18&1023)+128)|0]|0;a[D+m|0]=a[k+(((s-p|0)>>>18&1023)+128)|0]|0;a[D+e|0]=a[k+(((t+B|0)>>>18&1023)+128)|0]|0;a[D+f|0]=a[k+(((B-t|0)>>>18&1023)+128)|0]|0;a[D+l|0]=a[k+(((F+x|0)>>>18&1023)+128)|0]|0;a[D+G|0]=a[k+(((x-F|0)>>>18&1023)+128)|0]|0;a[D+u|0]=a[k+(((n+C|0)>>>18&1023)+128)|0]|0;a[D+I|0]=a[k+(((C-n|0)>>>18&1023)+128)|0]|0;n=d+1|0;if((n|0)<16){o=o+32|0;d=n}else{break}}i=j;return}function UZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+392|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;p=(o*10438|0)+n|0;q=(o*2578|0)+n|0;r=(o*-7223|0)+n|0;s=(o*-11586|0)+n>>11;n=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;o=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;t=(o+n|0)*9058|0;u=t+(n*2237|0)|0;v=t+(o*-14084|0)|0;t=(o*-11295|0)+(n*5027|0)|0;n=u+p|0;o=p-u|0;u=v+q|0;p=q-v|0;v=t+r|0;q=r-t|0;t=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;r=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;w=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;x=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;y=x<<13;z=w+t|0;A=(r+t|0)*10935|0;B=z*9810|0;C=A+(t*-9232|0)+B+y|0;D=z*6164|0;z=t-r|0;E=(z*3826|0)-y|0;F=D+(t*-8693|0)+E|0;t=((w+r|0)*-1297|0)-y|0;G=A+(r*-3474|0)+t|0;A=B+(w*-19447|0)+t|0;t=(w-r|0)*11512|0;B=t+(w*-13850|0)+D+y|0;y=t+(r*5529|0)+E|0;E=z-w+x<<2;c[e>>2]=C+n>>11;c[e+364>>2]=n-C>>11;c[e+28>>2]=G+u>>11;c[e+336>>2]=u-G>>11;c[e+56>>2]=A+v>>11;c[e+308>>2]=v-A>>11;c[e+84>>2]=E+s;c[e+280>>2]=s-E;c[e+112>>2]=B+q>>11;c[e+252>>2]=q-B>>11;c[e+140>>2]=y+p>>11;c[e+224>>2]=p-y>>11;c[e+168>>2]=F+o>>11;c[e+196>>2]=o-F>>11;F=m+1|0;if((F|0)<7){l=l+2|0;f=f+4|0;e=e+4|0;m=F}else{break}}m=h+6|0;e=h+1|0;f=h+5|0;l=h+2|0;F=h+4|0;o=h+3|0;y=d;d=0;while(1){p=c[g+(d<<2)>>2]|0;B=(c[y>>2]<<13)+131072|0;q=c[y+8>>2]|0;E=c[y+16>>2]|0;s=c[y+24>>2]|0;A=(E-s|0)*7223|0;v=(q-E|0)*2578|0;G=(E*-15083|0)+B+v+A|0;u=s+q|0;C=(u*10438|0)+B|0;n=A+(s*-637|0)+C|0;s=v+(q*-20239|0)+C|0;C=c[y+4>>2]|0;q=c[y+12>>2]|0;v=c[y+20>>2]|0;A=(q+C|0)*7663|0;x=(C-q|0)*1395|0;w=(v+q|0)*-11295|0;q=A+x+w|0;z=(v+C|0)*5027|0;C=A-x+z|0;x=z+(v*15326|0)+w|0;a[p+h|0]=a[k+(((C+n|0)>>>18&1023)+128)|0]|0;a[p+m|0]=a[k+(((n-C|0)>>>18&1023)+128)|0]|0;a[p+e|0]=a[k+(((q+G|0)>>>18&1023)+128)|0]|0;a[p+f|0]=a[k+(((G-q|0)>>>18&1023)+128)|0]|0;a[p+l|0]=a[k+(((x+s|0)>>>18&1023)+128)|0]|0;a[p+F|0]=a[k+(((s-x|0)>>>18&1023)+128)|0]|0;a[p+o|0]=a[k+(((((E-u|0)*11585|0)+B|0)>>>18&1023)+128)|0]|0;B=d+1|0;if((B|0)<14){y=y+28|0;d=B}else{break}}i=j;return}function VZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+288|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da((c[f+128>>2]|0)*10033|0,b[l+64>>1]|0)|0;p=o+n|0;q=n-o|0;o=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;r=o*11190|0;s=o<<13;o=da(c[f+192>>2]<<13,b[l+96>>1]|0)|0;t=s-o|0;u=t+n|0;v=n-t|0;t=o+r|0;n=t+p|0;w=p-t|0;t=r-s-o|0;o=t+q|0;s=q-t|0;t=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;q=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;r=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;p=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;x=q*10703|0;y=q*-4433|0;z=r+t|0;A=(p+z|0)*7053|0;B=A+(z*2139|0)|0;z=x+(t*2295|0)+B|0;C=(p+r|0)*-8565|0;D=(r*-12112|0)+y+C+B|0;B=(p*12998|0)-x+A+C|0;C=y+(t*-5540|0)+(p*-16244|0)+A|0;A=t-p|0;p=q-r|0;r=(A+p|0)*4433|0;q=r+(A*6270|0)|0;A=r+(p*-15137|0)|0;c[e>>2]=z+n>>11;c[e+264>>2]=n-z>>11;c[e+24>>2]=q+u>>11;c[e+240>>2]=u-q>>11;c[e+48>>2]=D+o>>11;c[e+216>>2]=o-D>>11;c[e+72>>2]=B+s>>11;c[e+192>>2]=s-B>>11;c[e+96>>2]=A+v>>11;c[e+168>>2]=v-A>>11;c[e+120>>2]=C+w>>11;c[e+144>>2]=w-C>>11;C=m+1|0;if((C|0)<6){l=l+2|0;f=f+4|0;e=e+4|0;m=C}else{break}}m=h+5|0;e=h+1|0;f=h+4|0;l=h+2|0;C=h+3|0;w=d;d=0;while(1){A=c[g+(d<<2)>>2]|0;v=(c[w>>2]<<13)+131072|0;B=(c[w+16>>2]|0)*5793|0;s=v+B|0;D=v-B-B|0;B=(c[w+8>>2]|0)*10033|0;v=s+B|0;o=s-B|0;B=c[w+4>>2]|0;s=c[w+12>>2]|0;q=c[w+20>>2]|0;u=(q+B|0)*2998|0;z=u+(s+B<<13)|0;n=u+(q-s<<13)|0;u=B-s-q<<13;a[A+h|0]=a[k+(((z+v|0)>>>18&1023)+128)|0]|0;a[A+m|0]=a[k+(((v-z|0)>>>18&1023)+128)|0]|0;a[A+e|0]=a[k+(((u+D|0)>>>18&1023)+128)|0]|0;a[A+f|0]=a[k+(((D-u|0)>>>18&1023)+128)|0]|0;a[A+l|0]=a[k+(((n+o|0)>>>18&1023)+128)|0]|0;a[A+C|0]=a[k+(((o-n|0)>>>18&1023)+128)|0]|0;n=d+1|0;if((n|0)<12){w=w+24|0;d=n}else{break}}i=j;return}function WZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+200|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da(b[l+64>>1]|0,c[f+128>>2]|0)|0;p=(o*9373|0)+n|0;q=(o*-3580|0)+n|0;r=(o*-11586|0)+n>>11;n=da(b[l+32>>1]|0,c[f+64>>2]|0)|0;o=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;s=(o+n|0)*6810|0;t=s+(n*4209|0)|0;n=s+(o*-17828|0)|0;o=t+p|0;s=p-t|0;t=n+q|0;p=q-n|0;n=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;q=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;u=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;v=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;w=v+q|0;x=q-v|0;v=x*2531|0;q=u<<13;y=w*7791|0;z=v+q|0;A=y+(n*11443|0)+z|0;B=(n*1812|0)-y+z|0;z=w*4815|0;w=q-v-(x<<12)|0;v=n-u-x<<2;x=(n*10323|0)-z-w|0;u=w+((n*5260|0)-z)|0;c[e>>2]=A+o>>11;c[e+180>>2]=o-A>>11;c[e+20>>2]=x+t>>11;c[e+160>>2]=t-x>>11;c[e+40>>2]=v+r;c[e+140>>2]=r-v;c[e+60>>2]=u+p>>11;c[e+120>>2]=p-u>>11;c[e+80>>2]=B+s>>11;c[e+100>>2]=s-B>>11;B=m+1|0;if((B|0)<5){l=l+2|0;f=f+4|0;e=e+4|0;m=B}else{break}}m=h+4|0;e=h+1|0;f=h+3|0;l=h+2|0;B=d;d=0;while(1){s=c[g+(d<<2)>>2]|0;u=(c[B>>2]<<13)+131072|0;p=c[B+8>>2]|0;v=c[B+16>>2]|0;r=(v+p|0)*6476|0;x=p-v|0;v=(x*2896|0)+u|0;p=v+r|0;t=v-r|0;r=c[B+4>>2]|0;v=c[B+12>>2]|0;A=(v+r|0)*6810|0;o=A+(r*4209|0)|0;r=A+(v*-17828|0)|0;a[s+h|0]=a[k+(((o+p|0)>>>18&1023)+128)|0]|0;a[s+m|0]=a[k+(((p-o|0)>>>18&1023)+128)|0]|0;a[s+e|0]=a[k+(((r+t|0)>>>18&1023)+128)|0]|0;a[s+f|0]=a[k+(((t-r|0)>>>18&1023)+128)|0]|0;a[s+l|0]=a[k+((((x*-11584|0)+u|0)>>>18&1023)+128)|0]|0;u=d+1|0;if((u|0)<10){B=B+20|0;d=u}else{break}}i=j;return}function XZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+128|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=4;while(1){n=b[l+16>>1]|0;o=b[l+32>>1]|0;do{if((n|o)<<16>>16==0){if((b[l+48>>1]|0)!=0){p=0;q=10;break}if((b[l+64>>1]|0)!=0){p=0;q=10;break}if((b[l+80>>1]|0)!=0){p=0;q=10;break}if((b[l+96>>1]|0)!=0){p=0;q=10;break}if((b[l+112>>1]|0)!=0){p=0;q=10;break}r=da(c[f>>2]<<2,b[l>>1]|0)|0;c[e>>2]=r;c[e+16>>2]=r;c[e+32>>2]=r;c[e+48>>2]=r;c[e+64>>2]=r;c[e+80>>2]=r;c[e+96>>2]=r;c[e+112>>2]=r}else{p=o;q=10}}while(0);if((q|0)==10){q=0;o=da(p<<16>>16,c[f+64>>2]|0)|0;r=da(b[l+96>>1]|0,c[f+192>>2]|0)|0;s=(r+o|0)*4433|0;t=s+(o*6270|0)|0;o=s+(r*-15137|0)|0;r=da(c[f+128>>2]<<13,b[l+64>>1]|0)|0;s=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;u=r+s|0;v=s-r|0;r=u+t|0;s=u-t|0;t=v+o|0;u=v-o|0;o=da(b[l+112>>1]|0,c[f+224>>2]|0)|0;v=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;w=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;x=da(n<<16>>16,c[f+32>>2]|0)|0;y=w+o|0;z=x+v|0;A=(z+y|0)*9633|0;B=A+(y*-16069|0)|0;y=A+(z*-3196|0)|0;z=(x+o|0)*-7373|0;A=z+(o*2446|0)+B|0;o=z+(x*12299|0)+y|0;x=(w+v|0)*-20995|0;z=x+(v*16819|0)+y|0;y=x+(w*25172|0)+B|0;c[e>>2]=o+r>>11;c[e+112>>2]=r-o>>11;c[e+16>>2]=y+t>>11;c[e+96>>2]=t-y>>11;c[e+32>>2]=z+u>>11;c[e+80>>2]=u-z>>11;c[e+48>>2]=A+s>>11;c[e+64>>2]=s-A>>11}A=m-1|0;if((A|0)>0){l=l+2|0;f=f+4|0;e=e+4|0;m=A}else{break}}m=h+3|0;e=h+1|0;f=h+2|0;l=d;d=0;while(1){p=c[g+(d<<2)>>2]|0;q=(c[l>>2]|0)+16|0;A=c[l+8>>2]|0;s=q+A<<13;z=q-A<<13;A=c[l+4>>2]|0;q=c[l+12>>2]|0;u=(q+A|0)*4433|0;y=u+(A*6270|0)|0;A=u+(q*-15137|0)|0;a[p+h|0]=a[k+(((y+s|0)>>>18&1023)+128)|0]|0;a[p+m|0]=a[k+(((s-y|0)>>>18&1023)+128)|0]|0;a[p+e|0]=a[k+(((A+z|0)>>>18&1023)+128)|0]|0;a[p+f|0]=a[k+(((z-A|0)>>>18&1023)+128)|0]|0;A=d+1|0;if((A|0)<8){l=l+16|0;d=A}else{break}}i=j;return}function YZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;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;j=i;i=i+72|0;k=c[d+332>>2]|0;d=j|0;l=f;f=c[e+84>>2]|0;e=d;m=0;while(1){n=da(c[f>>2]<<13,b[l>>1]|0)|0|1024;o=da((c[f+128>>2]|0)*5793|0,b[l+64>>1]|0)|0;p=o+n|0;q=(o*-2|0)+n>>11;n=da((c[f+64>>2]|0)*10033|0,b[l+32>>1]|0)|0;o=n+p|0;r=p-n|0;n=da(b[l+16>>1]|0,c[f+32>>2]|0)|0;p=da(b[l+48>>1]|0,c[f+96>>2]|0)|0;s=da(b[l+80>>1]|0,c[f+160>>2]|0)|0;t=(s+n|0)*2998|0;u=t+(p+n<<13)|0;v=t+(s-p<<13)|0;t=n-p-s<<2;c[e>>2]=u+o>>11;c[e+60>>2]=o-u>>11;c[e+12>>2]=t+q;c[e+48>>2]=q-t;c[e+24>>2]=v+r>>11;c[e+36>>2]=r-v>>11;v=m+1|0;if((v|0)<3){l=l+2|0;f=f+4|0;e=e+4|0;m=v}else{break}}m=h+2|0;e=h+1|0;f=d;d=0;while(1){l=c[g+(d<<2)>>2]|0;v=(c[f>>2]<<13)+131072|0;r=c[f+8>>2]|0;t=v+(r*5793|0)|0;q=(c[f+4>>2]|0)*10033|0;a[l+h|0]=a[k+(((t+q|0)>>>18&1023)+128)|0]|0;a[l+m|0]=a[k+(((t-q|0)>>>18&1023)+128)|0]|0;a[l+e|0]=a[k+((((r*-11586|0)+v|0)>>>18&1023)+128)|0]|0;v=d+1|0;if((v|0)<6){f=f+12|0;d=v}else{break}}i=j;return}function ZZ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;j=i;i=i+32|0;k=j|0;l=c[d+332>>2]|0;d=c[e+84>>2]|0;e=da(b[f>>1]|0,c[d>>2]|0)|0;m=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;n=m+e<<13;o=e-m<<13;m=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;e=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;p=(e+m|0)*4433|0;q=p+(m*6270|0)|0;m=p+(e*-15137|0)|0;e=q+n|0;c[k>>2]=e;c[k+24>>2]=n-q;q=m+o|0;c[k+8>>2]=q;n=o-m|0;c[k+16>>2]=n;m=da(b[f+2>>1]|0,c[d+4>>2]|0)|0;o=da(b[f+34>>1]|0,c[d+68>>2]|0)|0;p=o+m<<13;r=m-o<<13;o=da(b[f+18>>1]|0,c[d+36>>2]|0)|0;m=da(b[f+50>>1]|0,c[d+100>>2]|0)|0;d=(m+o|0)*4433|0;f=d+(o*6270|0)|0;o=d+(m*-15137|0)|0;m=f+p|0;c[k+4>>2]=m;d=p-f|0;c[k+28>>2]=d;f=o+r|0;c[k+12>>2]=f;p=r-o|0;c[k+20>>2]=p;o=h+1|0;r=c[g>>2]|0;s=e+32768|0;a[r+h|0]=a[l+(((s+m|0)>>>16&1023)+128)|0]|0;a[r+o|0]=a[l+(((s-m|0)>>>16&1023)+128)|0]|0;m=c[g+4>>2]|0;s=q+32768|0;a[m+h|0]=a[l+(((s+f|0)>>>16&1023)+128)|0]|0;a[m+o|0]=a[l+(((s-f|0)>>>16&1023)+128)|0]|0;f=c[g+8>>2]|0;s=n+32768|0;a[f+h|0]=a[l+(((s+p|0)>>>16&1023)+128)|0]|0;a[f+o|0]=a[l+(((s-p|0)>>>16&1023)+128)|0]|0;p=c[g+12>>2]|0;g=(c[k+24>>2]|0)+32768|0;a[p+h|0]=a[l+(((g+d|0)>>>16&1023)+128)|0]|0;a[p+o|0]=a[l+(((g-d|0)>>>16&1023)+128)|0]|0;i=j;return}function _Z(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;i=c[d+332>>2]|0;d=c[e+84>>2]|0;e=(da(b[f>>1]|0,c[d>>2]|0)|0)+4|0;j=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;a[(c[g>>2]|0)+h|0]=a[i+(((j+e|0)>>>3&1023)+128)|0]|0;a[(c[g+4>>2]|0)+h|0]=a[i+(((e-j|0)>>>3&1023)+128)|0]|0;return}function $Z(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+16|0;e=d|0;f=d+8|0;g=b+4|0;c[g>>2]=0;c[e>>2]=r_(b)|0;h=l_(b,84)|0;if((h|0)==0){s_(b);j=b|0;c[(c[j>>2]|0)+20>>2]=56;c[(c[j>>2]|0)+24>>2]=0;vk[c[c[j>>2]>>2]&511](b)}c[h>>2]=44;c[h+4>>2]=42;c[h+8>>2]=18;c[h+12>>2]=24;c[h+16>>2]=6;c[h+20>>2]=8;c[h+24>>2]=76;c[h+28>>2]=12;c[h+32>>2]=10;c[h+36>>2]=134;c[h+40>>2]=252;c[h+48>>2]=1e9;b=h+44|0;c[b>>2]=c[e>>2];c[h+56>>2]=0;c[h+64>>2]=0;c[h+52>>2]=0;c[h+60>>2]=0;c[h+68>>2]=0;c[h+72>>2]=0;c[h+76>>2]=84;c[g>>2]=h;h=mj(61472)|0;if((h|0)==0){i=d;return}a[f]=120;g=qi(h|0,161880,(h=i,i=i+16|0,c[h>>2]=e,c[h+8>>2]=f,h)|0)|0;i=h;if((g|0)<=0){i=d;return}g=a[f]|0;if((g<<24>>24|0)==109|(g<<24>>24|0)==77){g=(c[e>>2]|0)*1e3|0;c[e>>2]=g;k=g}else{k=c[e>>2]|0}c[b>>2]=k*1e3|0;i=d;return}function a_(a,b,d){a=a|0;b=b|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,q=0,r=0,s=0,t=0,u=0,v=0;e=c[a+4>>2]|0;if(d>>>0>999999984>>>0){f=a|0;c[(c[f>>2]|0)+20>>2]=56;c[(c[f>>2]|0)+24>>2]=1;vk[c[c[f>>2]>>2]&511](a)}f=d&7;if((f|0)==0){g=d}else{g=d+8-f|0}if(b>>>0>1>>>0){f=a|0;c[(c[f>>2]|0)+20>>2]=15;c[(c[f>>2]|0)+24>>2]=b;vk[c[c[f>>2]>>2]&511](a)}f=e+52+(b<<2)|0;d=c[f>>2]|0;a:do{if((d|0)==0){h=0;i=10}else{j=d;while(1){if(!((c[j+8>>2]|0)>>>0>>0)){k=j;break a}l=c[j>>2]|0;if((l|0)==0){h=j;i=10;break}else{j=l}}}}while(0);do{if((i|0)==10){d=g+16|0;j=(h|0)==0;l=c[(j?23048:29e3)+(b<<2)>>2]|0;m=999999984-g|0;n=l>>>0>m>>>0?m:l;l=d+n|0;m=l_(a,l)|0;if((m|0)==0){o=a|0;p=n;while(1){q=p>>>1;if(p>>>0<100>>>0){c[(c[o>>2]|0)+20>>2]=56;c[(c[o>>2]|0)+24>>2]=2;vk[c[c[o>>2]>>2]&511](a)}r=d+q|0;s=l_(a,r)|0;if((s|0)==0){p=q}else{t=q;u=r;v=s;break}}}else{t=n;u=l;v=m}p=v;d=e+76|0;c[d>>2]=(c[d>>2]|0)+u;c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=t+g;if(j){c[f>>2]=p;k=p;break}else{c[h>>2]=p;k=p;break}}}while(0);h=k+4|0;f=c[h>>2]|0;c[h>>2]=f+g;h=k+8|0;c[h>>2]=(c[h>>2]|0)-g;return k+16+f|0}function b_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[a+4>>2]|0;if(d>>>0>999999984>>>0){f=a|0;c[(c[f>>2]|0)+20>>2]=56;c[(c[f>>2]|0)+24>>2]=3;vk[c[c[f>>2]>>2]&511](a)}f=d&7;if((f|0)==0){g=d}else{g=d+8-f|0}if(b>>>0>1>>>0){f=a|0;c[(c[f>>2]|0)+20>>2]=15;c[(c[f>>2]|0)+24>>2]=b;vk[c[c[f>>2]>>2]&511](a)}f=g+16|0;d=n_(a,f)|0;if((d|0)==0){h=a|0;c[(c[h>>2]|0)+20>>2]=56;c[(c[h>>2]|0)+24>>2]=4;vk[c[c[h>>2]>>2]&511](a)}a=e+76|0;c[a>>2]=(c[a>>2]|0)+f;f=e+60+(b<<2)|0;c[d>>2]=c[f>>2];c[d+4>>2]=g;c[d+8>>2]=0;c[f>>2]=d;return d+16|0}function c_(a,b,d,e){a=a|0;b=b|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;f=c[a+4>>2]|0;g=999999984/(d>>>0)|0;if((g|0)==0){h=a|0;c[(c[h>>2]|0)+20>>2]=72;vk[c[c[h>>2]>>2]&511](a)}h=(g|0)<(e|0)?g:e;c[f+80>>2]=h;f=a_(a,b,e<<2)|0;if((e|0)==0){return f|0}g=~e;i=h;h=0;while(1){j=e-h|0;k=i>>>0>>0?i:j;j=b_(a,b,da(k,d)|0)|0;if((k|0)==0){l=h}else{m=~i;n=h+g|0;o=n>>>0>>0?m:n;n=h;m=k;p=j;while(1){c[f+(n<<2)>>2]=p;j=m-1|0;if((j|0)==0){break}else{n=n+1|0;m=j;p=p+d|0}}l=h-1-o|0}if(l>>>0>>0){i=k;h=l}else{break}}return f|0}function d_(a,b,d,e){a=a|0;b=b|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;f=c[a+4>>2]|0;g=d<<7;h=999999984/(g>>>0)|0;if((h|0)==0){i=a|0;c[(c[i>>2]|0)+20>>2]=72;vk[c[c[i>>2]>>2]&511](a)}i=(h|0)<(e|0)?h:e;c[f+80>>2]=i;f=a_(a,b,e<<2)|0;if((e|0)==0){return f|0}h=~e;j=i;i=0;while(1){k=e-i|0;l=j>>>0>>0?j:k;k=b_(a,b,da(g,l)|0)|0;if((l|0)==0){m=i}else{n=~j;o=i+h|0;p=o>>>0>>0?n:o;o=i;n=l;q=k;while(1){c[f+(o<<2)>>2]=q;k=n-1|0;if((k|0)==0){break}else{o=o+1|0;n=k;q=q+(d<<7)|0}}m=i-1-p|0}if(m>>>0>>0){j=l;i=m}else{break}}return f|0}function e_(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)!=1){i=a|0;c[(c[i>>2]|0)+20>>2]=15;c[(c[i>>2]|0)+24>>2]=b;vk[c[c[i>>2]>>2]&511](a)}i=a_(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;d=h+68|0;c[i+44>>2]=c[d>>2];c[d>>2]=i;return i|0}function f_(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[a+4>>2]|0;if((b|0)!=1){i=a|0;c[(c[i>>2]|0)+20>>2]=15;c[(c[i>>2]|0)+24>>2]=b;vk[c[c[i>>2]>>2]&511](a)}i=a_(a,b,128)|0;c[i>>2]=0;c[i+4>>2]=f;c[i+8>>2]=e;c[i+12>>2]=g;c[i+32>>2]=d;c[i+40>>2]=0;d=h+72|0;c[i+44>>2]=c[d>>2];c[d>>2]=i;return i|0}function g_(a){a=a|0;var b=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;b=c[a+4>>2]|0;d=b+68|0;e=c[d>>2]|0;if((e|0)==0){f=0;g=0}else{h=0;i=0;j=e;while(1){if((c[j>>2]|0)==0){e=c[j+8>>2]|0;k=(da(e,c[j+12>>2]|0)|0)+i|0;l=k;m=(da(c[j+4>>2]|0,e)|0)+h|0}else{l=i;m=h}e=c[j+44>>2]|0;if((e|0)==0){f=m;g=l;break}else{h=m;i=l;j=e}}}j=b+72|0;l=c[j>>2]|0;if((l|0)==0){n=f;o=g}else{i=f;f=g;g=l;while(1){if((c[g>>2]|0)==0){l=c[g+8>>2]|0;m=(da(c[g+12>>2]<<7,l)|0)+f|0;p=m;q=(da(l<<7,c[g+4>>2]|0)|0)+i|0}else{p=f;q=i}l=c[g+44>>2]|0;if((l|0)==0){n=q;o=p;break}else{i=q;f=p;g=l}}}if((o|0)<1){return}g=p_(a,o,n,c[b+76>>2]|0)|0;if((g|0)<(n|0)){n=(g|0)/(o|0)|0;r=(n|0)<1?1:n}else{r=1e9}n=c[d>>2]|0;if((n|0)!=0){d=b+80|0;o=n;do{n=o|0;if((c[n>>2]|0)==0){g=c[o+4>>2]|0;p=c[o+12>>2]|0;if(((((g-1|0)>>>0)/(p>>>0)|0)+1|0)>(r|0)){f=o+16|0;c[f>>2]=da(p,r)|0;p=o+8|0;q_(a,o+48|0,da(c[p>>2]|0,g)|0);c[o+40>>2]=1;s=c[f>>2]|0;t=p}else{c[o+16>>2]=g;s=g;t=o+8|0}c[n>>2]=c_(a,1,c[t>>2]|0,s)|0;c[o+20>>2]=c[d>>2];c[o+24>>2]=0;c[o+28>>2]=0;c[o+36>>2]=0}o=c[o+44>>2]|0;}while((o|0)!=0)}o=c[j>>2]|0;if((o|0)==0){return}j=b+80|0;b=o;do{o=b|0;if((c[o>>2]|0)==0){d=c[b+4>>2]|0;s=c[b+12>>2]|0;if(((((d-1|0)>>>0)/(s>>>0)|0)+1|0)>(r|0)){t=b+16|0;c[t>>2]=da(s,r)|0;s=b+8|0;q_(a,b+48|0,da(d<<7,c[s>>2]|0)|0);c[b+40>>2]=1;u=c[t>>2]|0;v=s}else{c[b+16>>2]=d;u=d;v=b+8|0}c[o>>2]=d_(a,1,c[v>>2]|0,u)|0;c[b+20>>2]=c[j>>2];c[b+24>>2]=0;c[b+28>>2]=0;c[b+36>>2]=0}b=c[b+44>>2]|0;}while((b|0)!=0);return}function h_(a,b,d,e,f){a=a|0;b=b|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,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,J=0,K=0;g=e+d|0;h=b+4|0;do{if(g>>>0>(c[h>>2]|0)>>>0){i=4}else{if((c[b+12>>2]|0)>>>0>>0){i=4;break}if((c[b>>2]|0)==0){i=4}}}while(0);if((i|0)==4){e=a|0;c[(c[e>>2]|0)+20>>2]=23;vk[c[c[e>>2]>>2]&511](a)}e=b+24|0;j=c[e>>2]|0;if(j>>>0>d>>>0){i=7}else{if(g>>>0>((c[b+16>>2]|0)+j|0)>>>0){i=7}}a:do{if((i|0)==7){if((c[b+40>>2]|0)==0){j=a|0;c[(c[j>>2]|0)+20>>2]=71;vk[c[c[j>>2]>>2]&511](a)}j=b+36|0;if((c[j>>2]|0)!=0){k=c[b+8>>2]|0;l=c[e>>2]|0;m=b+20|0;n=b+16|0;o=c[n>>2]|0;b:do{if((o|0)>0){p=b+28|0;q=b+48|0;r=b|0;s=b+52|0;t=c[m>>2]|0;u=(t|0)<(o|0)?t:o;t=(c[p>>2]|0)-l|0;v=(u|0)<(t|0)?u:t;t=(c[h>>2]|0)-l|0;u=(v|0)<(t|0)?v:t;if((u|0)<1){break}t=0;v=da(l,k)|0;w=u;while(1){u=da(w,k)|0;fk[c[s>>2]&127](a,q,c[(c[r>>2]|0)+(t<<2)>>2]|0,v,u);x=c[m>>2]|0;y=c[n>>2]|0;z=x+t|0;if((z|0)>=(y|0)){break b}A=y-z|0;y=(x|0)<(A|0)?x:A;A=z+(c[e>>2]|0)|0;x=(c[p>>2]|0)-A|0;B=(y|0)<(x|0)?y:x;x=(c[h>>2]|0)-A|0;A=(B|0)<(x|0)?B:x;if((A|0)<1){break b}t=z;v=u+v|0;w=A}}}while(0);c[j>>2]=0}n=c[b+16>>2]|0;if((c[e>>2]|0)>>>0>>0){C=d}else{m=g-n|0;C=(m|0)<0?0:m}c[e>>2]=C;m=c[b+8>>2]|0;k=b+20|0;l=b+16|0;if((n|0)<=0){break}o=b+28|0;w=b+48|0;v=w|0;t=b|0;p=c[k>>2]|0;r=(p|0)<(n|0)?p:n;n=(c[o>>2]|0)-C|0;p=(r|0)<(n|0)?r:n;n=(c[h>>2]|0)-C|0;r=(p|0)<(n|0)?p:n;if((r|0)<1){break}n=0;p=da(m,C)|0;q=r;while(1){r=da(q,m)|0;fk[c[v>>2]&127](a,w,c[(c[t>>2]|0)+(n<<2)>>2]|0,p,r);s=c[k>>2]|0;A=c[l>>2]|0;u=s+n|0;if((u|0)>=(A|0)){break a}z=A-u|0;A=(s|0)<(z|0)?s:z;z=u+(c[e>>2]|0)|0;s=(c[o>>2]|0)-z|0;x=(A|0)<(s|0)?A:s;s=(c[h>>2]|0)-z|0;z=(x|0)<(s|0)?x:s;if((z|0)<1){break a}n=u;p=r+p|0;q=z}}}while(0);h=b+28|0;C=c[h>>2]|0;do{if(C>>>0>>0){do{if(C>>>0>>0){if((f|0)==0){D=d;E=0;break}q=a|0;c[(c[q>>2]|0)+20>>2]=23;vk[c[c[q>>2]>>2]&511](a);F=d;i=29}else{F=C;i=29}}while(0);do{if((i|0)==29){if((f|0)==0){D=F;E=0;break}c[h>>2]=g;D=F;E=1}}while(0);if((c[b+32>>2]|0)==0){if(E){break}q=a|0;c[(c[q>>2]|0)+20>>2]=23;vk[c[c[q>>2]>>2]&511](a);break}q=c[b+8>>2]|0;p=c[e>>2]|0;n=D-p|0;o=g-p|0;if(!(n>>>0>>0)){break}p=b|0;l=n;do{S_(c[(c[p>>2]|0)+(l<<2)>>2]|0,q);l=l+1|0;}while(l>>>0>>0)}}while(0);if((f|0)==0){G=b|0;H=c[G>>2]|0;I=c[e>>2]|0;J=d-I|0;K=H+(J<<2)|0;return K|0}c[b+36>>2]=1;G=b|0;H=c[G>>2]|0;I=c[e>>2]|0;J=d-I|0;K=H+(J<<2)|0;return K|0}function i_(a,b,d,e,f){a=a|0;b=b|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,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,J=0,K=0;g=e+d|0;h=b+4|0;do{if(g>>>0>(c[h>>2]|0)>>>0){i=4}else{if((c[b+12>>2]|0)>>>0>>0){i=4;break}if((c[b>>2]|0)==0){i=4}}}while(0);if((i|0)==4){e=a|0;c[(c[e>>2]|0)+20>>2]=23;vk[c[c[e>>2]>>2]&511](a)}e=b+24|0;j=c[e>>2]|0;if(j>>>0>d>>>0){i=7}else{if(g>>>0>((c[b+16>>2]|0)+j|0)>>>0){i=7}}a:do{if((i|0)==7){if((c[b+40>>2]|0)==0){j=a|0;c[(c[j>>2]|0)+20>>2]=71;vk[c[c[j>>2]>>2]&511](a)}j=b+36|0;if((c[j>>2]|0)!=0){k=c[b+8>>2]<<7;l=c[e>>2]|0;m=b+20|0;n=b+16|0;o=c[n>>2]|0;b:do{if((o|0)>0){p=b+28|0;q=b+48|0;r=b|0;s=b+52|0;t=c[m>>2]|0;u=(t|0)<(o|0)?t:o;t=(c[p>>2]|0)-l|0;v=(u|0)<(t|0)?u:t;t=(c[h>>2]|0)-l|0;u=(v|0)<(t|0)?v:t;if((u|0)<1){break}t=0;v=da(l,k)|0;w=u;while(1){u=da(w,k)|0;fk[c[s>>2]&127](a,q,c[(c[r>>2]|0)+(t<<2)>>2]|0,v,u);x=c[m>>2]|0;y=c[n>>2]|0;z=x+t|0;if((z|0)>=(y|0)){break b}A=y-z|0;y=(x|0)<(A|0)?x:A;A=z+(c[e>>2]|0)|0;x=(c[p>>2]|0)-A|0;B=(y|0)<(x|0)?y:x;x=(c[h>>2]|0)-A|0;A=(B|0)<(x|0)?B:x;if((A|0)<1){break b}t=z;v=u+v|0;w=A}}}while(0);c[j>>2]=0}n=c[b+16>>2]|0;if((c[e>>2]|0)>>>0>>0){C=d}else{m=g-n|0;C=(m|0)<0?0:m}c[e>>2]=C;m=c[b+8>>2]<<7;k=b+20|0;l=b+16|0;if((n|0)<=0){break}o=b+28|0;w=b+48|0;v=w|0;t=b|0;p=c[k>>2]|0;r=(p|0)<(n|0)?p:n;n=(c[o>>2]|0)-C|0;p=(r|0)<(n|0)?r:n;n=(c[h>>2]|0)-C|0;r=(p|0)<(n|0)?p:n;if((r|0)<1){break}n=0;p=da(m,C)|0;q=r;while(1){r=da(q,m)|0;fk[c[v>>2]&127](a,w,c[(c[t>>2]|0)+(n<<2)>>2]|0,p,r);s=c[k>>2]|0;A=c[l>>2]|0;u=s+n|0;if((u|0)>=(A|0)){break a}z=A-u|0;A=(s|0)<(z|0)?s:z;z=u+(c[e>>2]|0)|0;s=(c[o>>2]|0)-z|0;x=(A|0)<(s|0)?A:s;s=(c[h>>2]|0)-z|0;z=(x|0)<(s|0)?x:s;if((z|0)<1){break a}n=u;p=r+p|0;q=z}}}while(0);h=b+28|0;C=c[h>>2]|0;do{if(C>>>0>>0){do{if(C>>>0>>0){if((f|0)==0){D=d;E=0;break}q=a|0;c[(c[q>>2]|0)+20>>2]=23;vk[c[c[q>>2]>>2]&511](a);F=d;i=29}else{F=C;i=29}}while(0);do{if((i|0)==29){if((f|0)==0){D=F;E=0;break}c[h>>2]=g;D=F;E=1}}while(0);if((c[b+32>>2]|0)==0){if(E){break}q=a|0;c[(c[q>>2]|0)+20>>2]=23;vk[c[c[q>>2]>>2]&511](a);break}q=c[b+8>>2]<<7;p=c[e>>2]|0;n=D-p|0;o=g-p|0;if(!(n>>>0>>0)){break}p=b|0;l=n;do{S_(c[(c[p>>2]|0)+(l<<2)>>2]|0,q);l=l+1|0;}while(l>>>0>>0)}}while(0);if((f|0)==0){G=b|0;H=c[G>>2]|0;I=c[e>>2]|0;J=d-I|0;K=H+(J<<2)|0;return K|0}c[b+36>>2]=1;G=b|0;H=c[G>>2]|0;I=c[e>>2]|0;J=d-I|0;K=H+(J<<2)|0;return K|0}function j_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[a+4>>2]|0;do{if(b>>>0>1>>>0){e=a|0;c[(c[e>>2]|0)+20>>2]=15;c[(c[e>>2]|0)+24>>2]=b;vk[c[c[e>>2]>>2]&511](a)}else{if((b|0)!=1){break}e=d+68|0;f=c[e>>2]|0;if((f|0)!=0){g=f;do{f=g+40|0;if((c[f>>2]|0)!=0){c[f>>2]=0;hk[c[g+56>>2]&255](a,g+48|0)}g=c[g+44>>2]|0;}while((g|0)!=0)}c[e>>2]=0;g=d+72|0;f=c[g>>2]|0;if((f|0)!=0){h=f;do{f=h+40|0;if((c[f>>2]|0)!=0){c[f>>2]=0;hk[c[h+56>>2]&255](a,h+48|0)}h=c[h+44>>2]|0;}while((h|0)!=0)}c[g>>2]=0}}while(0);h=d+60+(b<<2)|0;e=c[h>>2]|0;c[h>>2]=0;if((e|0)!=0){h=d+76|0;f=h;i=e;while(1){e=c[i>>2]|0;j=(c[i+4>>2]|0)+16+(c[i+8>>2]|0)|0;o_(a,i,j);c[h>>2]=(c[f>>2]|0)-j;if((e|0)==0){break}else{i=e}}}i=d+52+(b<<2)|0;b=c[i>>2]|0;c[i>>2]=0;if((b|0)==0){return}i=d+76|0;d=i;f=b;while(1){b=c[f>>2]|0;h=(c[f+4>>2]|0)+16+(c[f+8>>2]|0)|0;m_(a,f,h);c[i>>2]=(c[d>>2]|0)-h;if((b|0)==0){break}else{f=b}}return}function k_(a){a=a|0;var b=0;j_(a,1);j_(a,0);b=a+4|0;m_(a,c[b>>2]|0,84);c[b>>2]=0;s_(a);return}function l_(a,b){a=a|0;b=b|0;return V_(b)|0}function m_(a,b,c){a=a|0;b=b|0;c=c|0;W_(b);return}function n_(a,b){a=a|0;b=b|0;return V_(b)|0}function o_(a,b,c){a=a|0;b=b|0;c=c|0;W_(b);return}function p_(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return c|0}function q_(a,b,d){a=a|0;b=b|0;d=d|0;d=a|0;c[(c[d>>2]|0)+20>>2]=51;vk[c[c[d>>2]>>2]&511](a);return}function r_(a){a=a|0;return 0}function s_(a){a=a|0;return}function t_(b){b=b|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;d=b+4|0;e=b;f=rk[c[c[d>>2]>>2]&63](e,1,88)|0;g=b+480|0;c[g>>2]=f;c[f>>2]=208;c[f+8>>2]=286;c[f+12>>2]=314;c[f+68>>2]=0;c[f+52>>2]=0;f=b+120|0;if((c[f>>2]|0)>4){h=b|0;c[(c[h>>2]|0)+20>>2]=57;c[(c[h>>2]|0)+24>>2]=4;vk[c[c[h>>2]>>2]&511](e)}h=b+96|0;i=c[h>>2]|0;if((i|0)>256){j=b|0;c[(c[j>>2]|0)+20>>2]=59;c[(c[j>>2]|0)+24>>2]=256;vk[c[c[j>>2]>>2]&511](e);k=c[h>>2]|0}else{k=i}i=c[g>>2]|0;h=i+32|0;j=h;l=h;h=c[f>>2]|0;if((h|0)>1){m=1;while(1){n=m+1|0;o=1;p=n;do{p=da(p,n)|0;o=o+1|0;}while((o|0)<(h|0));if((p|0)>(k|0)){q=m;r=p;break}else{m=n}}}else{m=(k|0)>1?k:1;q=m;r=m+1|0}if((q|0)<2){m=b|0;c[(c[m>>2]|0)+20>>2]=58;c[(c[m>>2]|0)+24>>2]=r;vk[c[c[m>>2]>>2]&511](e)}if((h|0)>0){m=0;r=1;while(1){c[l+(m<<2)>>2]=q;o=da(r,q)|0;s=m+1|0;if((s|0)<(h|0)){m=s;r=o}else{t=o;break}}}else{t=1}r=b+44|0;m=0;q=t;t=0;a:while(1){o=m;s=t;while(1){if((s|0)<(h|0)){if((c[r>>2]|0)==2){u=c[9160+(s<<2)>>2]|0}else{u=s}v=l+(u<<2)|0;w=c[v>>2]|0;x=w+1|0;y=da((q|0)/(w|0)|0,x)|0;if((y|0)<=(k|0)){break}}if((o|0)==0){break a}else{o=0;s=0}}c[v>>2]=x;m=1;q=y;t=s+1|0}t=b|0;y=c[t>>2]|0;if((c[f>>2]|0)==3){c[y+24>>2]=q;c[y+28>>2]=c[l>>2];c[y+32>>2]=c[i+36>>2];c[y+36>>2]=c[i+40>>2];c[(c[t>>2]|0)+20>>2]=96;hk[c[(c[t>>2]|0)+4>>2]&255](e,1)}else{c[y+20>>2]=97;c[(c[t>>2]|0)+24>>2]=q;hk[c[(c[t>>2]|0)+4>>2]&255](e,1)}t=Wk[c[(c[d>>2]|0)+8>>2]&63](e,1,q,c[f>>2]|0)|0;y=c[f>>2]|0;if((y|0)>0){l=q;m=0;x=y;while(1){y=c[j+(m<<2)>>2]|0;v=(l|0)/(y|0)|0;b:do{if((y|0)>0){k=y-1|0;u=(k|0)/2|0;r=t+(m<<2)|0;if((v|0)>0){z=0}else{h=0;while(1){o=da(h,v)|0;if((o|0)<(q|0)){n=o;do{n=n+l|0;}while((n|0)<(q|0))}n=h+1|0;if((n|0)<(y|0)){h=n}else{A=x;break b}}}do{h=da(z,v)|0;if((h|0)<(q|0)){n=(((z*255|0)+u|0)/(k|0)|0)&255;o=h;do{h=0;do{a[(c[r>>2]|0)+(h+o)|0]=n;h=h+1|0;}while((h|0)<(v|0));o=o+l|0;}while((o|0)<(q|0))}z=z+1|0;}while((z|0)<(y|0));A=c[f>>2]|0}else{A=x}}while(0);y=m+1|0;if((y|0)<(A|0)){l=v;m=y;x=A}else{break}}}c[i+16>>2]=t;c[i+20>>2]=q;x_(b);if((c[b+88>>2]|0)!=2){return}q=(c[b+112>>2]<<1)+4|0;if((c[f>>2]|0)<=0){return}b=(c[g>>2]|0)+68|0;g=0;do{c[b+(g<<2)>>2]=rk[c[(c[d>>2]|0)+4>>2]&63](e,1,q)|0;g=g+1|0;}while((g|0)<(c[f>>2]|0));return}function u_(a,b){a=a|0;b=b|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,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;b=a+480|0;e=c[b>>2]|0;c[a+136>>2]=c[e+16>>2];c[a+132>>2]=c[e+20>>2];f=c[a+88>>2]|0;if((f|0)==1){g=a+120|0;c[e+4>>2]=(c[g>>2]|0)==3?88:54;c[e+48>>2]=0;if((c[e+28>>2]|0)==0){x_(a)}if((c[e+52>>2]|0)!=0){return}h=c[b>>2]|0;if((c[g>>2]|0)<=0){return}i=h+32|0;j=a+4|0;k=a;l=h+52|0;h=0;do{m=c[i+(h<<2)>>2]|0;a:do{if((h|0)>0){n=0;while(1){o=n+1|0;if((m|0)==(c[i+(n<<2)>>2]|0)){break}if((o|0)<(h|0)){n=o}else{p=14;break a}}o=c[l+(n<<2)>>2]|0;if((o|0)==0){p=14}else{q=o}}else{p=14}}while(0);if((p|0)==14){p=0;o=rk[c[c[j>>2]>>2]&63](k,1,1024)|0;r=(m<<9)-512|0;s=0;while(1){t=0;do{u=255-((d[42496+(s<<4)+t|0]|0)<<1)|0;v=u*255|0;if((u|0)<0){w=-((-v|0)/(r|0)|0)|0}else{w=(v|0)/(r|0)|0}c[o+(s<<6)+(t<<2)>>2]=w;t=t+1|0;}while((t|0)<16);t=s+1|0;if((t|0)<16){s=t}else{q=o;break}}}c[l+(h<<2)>>2]=q;h=h+1|0;}while((h|0)<(c[g>>2]|0));return}else if((f|0)==2){c[e+4>>2]=26;c[e+84>>2]=0;g=e+68|0;h=g;if((c[g>>2]|0)==0){g=a+112|0;q=(c[g>>2]<<1)+4|0;l=a+120|0;if((c[l>>2]|0)<=0){return}w=a+4|0;k=a;j=(c[b>>2]|0)+68|0;b=0;while(1){c[j+(b<<2)>>2]=rk[c[(c[w>>2]|0)+4>>2]&63](k,1,q)|0;p=b+1|0;i=c[l>>2]|0;if((p|0)<(i|0)){b=p}else{x=i;y=g;break}}}else{x=c[a+120>>2]|0;y=a+112|0}g=(c[y>>2]<<1)+4|0;y=a+120|0;if((x|0)>0){z=0}else{return}do{S_(c[h+(z<<2)>>2]|0,g);z=z+1|0;}while((z|0)<(c[y>>2]|0));return}else if((f|0)==0){f=e+4|0;if((c[a+120>>2]|0)==3){c[f>>2]=116;return}else{c[f>>2]=76;return}}else{f=a|0;c[(c[f>>2]|0)+20>>2]=49;vk[c[c[f>>2]>>2]&511](a);return}}function v_(a){a=a|0;return}function w_(a){a=a|0;var b=0;b=a|0;c[(c[b>>2]|0)+20>>2]=47;vk[c[c[b>>2]>>2]&511](a);return}function x_(b){b=b|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;d=c[b+480>>2]|0;e=(c[b+88>>2]|0)==1;c[d+28>>2]=e?1:0;f=b+120|0;g=d+24|0;c[g>>2]=Wk[c[(c[b+4>>2]|0)+8>>2]&63](b,1,e?766:256,c[f>>2]|0)|0;if((c[f>>2]|0)<=0){return}b=d+32|0;h=0;i=c[d+20>>2]|0;do{d=c[b+(h<<2)>>2]|0;i=(i|0)/(d|0)|0;if(e){j=(c[g>>2]|0)+(h<<2)|0;c[j>>2]=(c[j>>2]|0)+255}j=c[(c[g>>2]|0)+(h<<2)>>2]|0;k=d-1|0;l=k<<1;m=0;n=(d+254|0)/(l|0)|0;d=0;while(1){if((m|0)>(n|0)){o=d;while(1){p=o+1|0;q=(((p<<1|1)*255|0)+k|0)/(l|0)|0;if((m|0)>(q|0)){o=p}else{r=q;s=p;break}}}else{r=n;s=d}a[j+m|0]=da(s,i)|0;o=m+1|0;if((o|0)<256){m=o;n=r;d=s}else{break}}if(e){d=j+255|0;n=1;do{a[j+(-n|0)|0]=a[j]|0;a[j+(n+255)|0]=a[d]|0;n=n+1|0;}while((n|0)<256)}h=h+1|0;}while((h|0)<(c[f>>2]|0));return}function y_(b,e,f,g){b=b|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;h=c[(c[b+480>>2]|0)+24>>2]|0;i=c[h>>2]|0;j=c[h+4>>2]|0;k=c[h+8>>2]|0;h=c[b+112>>2]|0;if((g|0)<1|(h|0)==0){return}else{l=0}do{b=c[f+(l<<2)>>2]|0;m=h;n=c[e+(l<<2)>>2]|0;while(1){a[b]=((a[j+(d[n+1|0]|0)|0]|0)+(a[i+(d[n]|0)|0]|0)&255)+(a[k+(d[n+2|0]|0)|0]|0);o=m-1|0;if((o|0)==0){break}else{b=b+1|0;m=o;n=n+3|0}}l=l+1|0;}while((l|0)<(g|0));return}function z_(b,e,f,g){b=b|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;h=c[(c[b+480>>2]|0)+24>>2]|0;i=c[b+112>>2]|0;j=c[b+120>>2]|0;if((g|0)<=0){return}b=(i|0)==0;k=(j|0)>0;l=0;do{if(!b){m=c[e+(l<<2)>>2]|0;n=c[f+(l<<2)>>2]|0;o=i;while(1){if(k){p=m;q=0;r=0;while(1){s=(d[(c[h+(q<<2)>>2]|0)+(d[p]|0)|0]|0)+r|0;t=q+1|0;if((t|0)<(j|0)){p=p+1|0;q=t;r=s}else{break}}u=m+j|0;v=s&255}else{u=m;v=0}a[n]=v;r=o-1|0;if((r|0)==0){break}else{m=u;n=n+1|0;o=r}}}l=l+1|0;}while((l|0)<(g|0));return}function A_(b,e,f,g){b=b|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;h=c[b+480>>2]|0;i=c[h+24>>2]|0;j=c[i>>2]|0;k=c[i+4>>2]|0;l=c[i+8>>2]|0;i=c[b+112>>2]|0;if((g|0)<=0){return}b=h+48|0;m=h+52|0;h=m+4|0;n=m+8|0;o=(i|0)==0;p=b|0;q=0;r=c[b>>2]|0;do{b=c[m>>2]|0;s=c[h>>2]|0;t=c[n>>2]|0;if(!o){u=c[f+(q<<2)>>2]|0;v=0;w=i;x=c[e+(q<<2)>>2]|0;while(1){a[u]=((a[k+((d[x+1|0]|0)+(c[s+(r<<6)+(v<<2)>>2]|0))|0]|0)+(a[j+((d[x]|0)+(c[b+(r<<6)+(v<<2)>>2]|0))|0]|0)&255)+(a[l+((d[x+2|0]|0)+(c[t+(r<<6)+(v<<2)>>2]|0))|0]|0);y=w-1|0;if((y|0)==0){break}else{u=u+1|0;v=v+1&15;w=y;x=x+3|0}}}r=r+1&15;c[p>>2]=r;q=q+1|0;}while((q|0)<(g|0));return}function B_(b,e,f,g){b=b|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;h=c[b+480>>2]|0;i=c[b+120>>2]|0;j=c[b+112>>2]|0;if((g|0)<=0){return}b=h+48|0;k=b;l=(i|0)>0;m=b|0;b=h+24|0;n=h+52|0;h=(j|0)==0;o=0;do{p=f+(o<<2)|0;S_(c[p>>2]|0,j);q=c[k>>2]|0;if(l){r=e+(o<<2)|0;s=0;do{t=c[(c[b>>2]|0)+(s<<2)>>2]|0;u=c[n+(s<<2)>>2]|0;if(!h){v=0;w=c[p>>2]|0;x=j;y=(c[r>>2]|0)+s|0;while(1){a[w]=(a[w]|0)+(a[t+((d[y]|0)+(c[u+(q<<6)+(v<<2)>>2]|0))|0]|0);z=x-1|0;if((z|0)==0){break}else{v=v+1&15;w=w+1|0;x=z;y=y+i|0}}}s=s+1|0;}while((s|0)<(i|0))}c[m>>2]=q+1&15;o=o+1|0;}while((o|0)<(g|0));return}function C_(e,f,g,h){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,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,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;i=c[e+480>>2]|0;j=c[e+120>>2]|0;k=c[e+112>>2]|0;l=c[e+332>>2]|0;if((h|0)<=0){return}e=(j|0)>0;m=i+84|0;n=m;o=i+68|0;p=i+24|0;q=i+16|0;i=(k|0)==0;r=k-1|0;s=da(r,j)|0;t=-j|0;u=k+1|0;v=0;do{w=g+(v<<2)|0;S_(c[w>>2]|0,k);if(e){x=f+(v<<2)|0;y=0;do{z=c[w>>2]|0;if((c[n>>2]|0)==0){A=j;B=1;C=c[o+(y<<2)>>2]|0;D=y;E=z}else{A=t;B=-1;C=(c[o+(y<<2)>>2]|0)+(u<<1)|0;D=y+s|0;E=z+r|0}z=c[(c[p>>2]|0)+(y<<2)>>2]|0;F=c[(c[q>>2]|0)+(y<<2)>>2]|0;if(i){G=C;H=0}else{I=da(k,B)|0;J=E;K=(c[x>>2]|0)+D|0;L=C;M=0;N=k;O=0;P=0;while(1){Q=L+(B<<1)|0;R=d[l+((P+8+(b[Q>>1]|0)>>4)+(d[K]|0))|0]|0;S=a[z+R|0]|0;a[J]=(a[J]|0)+S;T=R-(d[F+(S&255)|0]|0)|0;S=T<<1;R=S+T|0;b[L>>1]=R+M;U=R+S|0;V=U+O|0;R=N-1|0;if((R|0)==0){break}else{J=J+B|0;K=K+A|0;L=Q;M=V;N=R;O=T;P=U+S|0}}G=C+(I<<1)|0;H=V&65535}b[G>>1]=H;y=y+1|0;}while((y|0)<(j|0))}c[m>>2]=(c[n>>2]|0)==0;v=v+1|0;}while((v|0)<(h|0));return}function D_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+4|0;d=a;e=rk[c[c[b>>2]>>2]&63](d,1,44)|0;c[a+480>>2]=e;c[e>>2]=114;c[e+12>>2]=168;f=e+32|0;c[f>>2]=0;c[e+40>>2]=0;if((c[a+120>>2]|0)!=3){g=a|0;c[(c[g>>2]|0)+20>>2]=48;vk[c[c[g>>2]>>2]&511](d)}g=e+24|0;c[g>>2]=rk[c[c[b>>2]>>2]&63](d,1,128)|0;h=0;do{i=rk[c[(c[b>>2]|0)+4>>2]&63](d,1,4096)|0;c[(c[g>>2]|0)+(h<<2)>>2]=i;h=h+1|0;}while((h|0)<32);c[e+28>>2]=1;if((c[a+108>>2]|0)==0){c[e+16>>2]=0}else{h=c[a+96>>2]|0;do{if((h|0)<8){g=a|0;c[(c[g>>2]|0)+20>>2]=58;c[(c[g>>2]|0)+24>>2]=8;vk[c[c[g>>2]>>2]&511](d)}else{if((h|0)<=256){break}g=a|0;c[(c[g>>2]|0)+20>>2]=59;c[(c[g>>2]|0)+24>>2]=256;vk[c[c[g>>2]>>2]&511](d)}}while(0);c[e+16>>2]=Wk[c[(c[b>>2]|0)+8>>2]&63](d,1,h,3)|0;c[e+20>>2]=h}h=a+88|0;if((c[h>>2]|0)==0){return}c[h>>2]=2;c[f>>2]=rk[c[(c[b>>2]|0)+4>>2]&63](d,1,((c[a+112>>2]|0)*6|0)+12|0)|0;G_(a);return}function E_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=c[a+480>>2]|0;e=c[d+24>>2]|0;f=a+88|0;if((c[f>>2]|0)==0){g=0}else{c[f>>2]=2;g=2}do{if((b|0)==0){c[d+4>>2]=(g|0)==2?4:126;c[d+8>>2]=82;h=c[a+132>>2]|0;do{if((h|0)<1){i=a|0;c[(c[i>>2]|0)+20>>2]=58;c[(c[i>>2]|0)+24>>2]=1;vk[c[c[i>>2]>>2]&511](a)}else{if((h|0)<=256){break}i=a|0;c[(c[i>>2]|0)+20>>2]=59;c[(c[i>>2]|0)+24>>2]=256;vk[c[c[i>>2]>>2]&511](a)}}while(0);if((c[f>>2]|0)!=2){break}h=((c[a+112>>2]|0)*6|0)+12|0;i=d+32|0;j=c[i>>2]|0;if((j|0)==0){k=rk[c[(c[a+4>>2]|0)+4>>2]&63](a,1,h)|0;c[i>>2]=k;l=k}else{l=j}S_(l,h);if((c[d+40>>2]|0)==0){G_(a)}c[d+36>>2]=0}else{c[d+4>>2]=92;c[d+8>>2]=40;c[d+28>>2]=1}}while(0);a=d+28|0;if((c[a>>2]|0)==0){return}else{m=0}do{S_(c[e+(m<<2)>>2]|0,4096);m=m+1|0;}while((m|0)<32);c[a>>2]=0;return}function F_(a){a=a|0;c[(c[a+480>>2]|0)+28>>2]=1;return}function G_(a){a=a|0;var b=0,d=0,e=0;b=c[a+480>>2]|0;d=rk[c[c[a+4>>2]>>2]&63](a,1,2044)|0;a=d+1020|0;e=a;c[b+40>>2]=a;c[e>>2]=0;c[d+1024>>2]=1;c[d+1016>>2]=-1;c[d+1028>>2]=2;c[d+1012>>2]=-2;c[d+1032>>2]=3;c[d+1008>>2]=-3;c[d+1036>>2]=4;c[d+1004>>2]=-4;c[d+1040>>2]=5;c[d+1e3>>2]=-5;c[d+1044>>2]=6;c[d+996>>2]=-6;c[d+1048>>2]=7;c[d+992>>2]=-7;c[d+1052>>2]=8;c[d+988>>2]=-8;c[d+1056>>2]=9;c[d+984>>2]=-9;c[d+1060>>2]=10;c[d+980>>2]=-10;c[d+1064>>2]=11;c[d+976>>2]=-11;c[d+1068>>2]=12;c[d+972>>2]=-12;c[d+1072>>2]=13;c[d+968>>2]=-13;c[d+1076>>2]=14;c[d+964>>2]=-14;c[d+1080>>2]=15;c[d+960>>2]=-15;d=16;a=16;do{c[e+(d<<2)>>2]=a;c[e+(-d<<2)>>2]=-a;d=d+1|0;a=(d&1^1)+a|0;}while((d|0)<48);d=-a|0;b=48;do{c[e+(b<<2)>>2]=a;c[e+(-b<<2)>>2]=d;b=b+1|0;}while((b|0)<256);return}function H_(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;f=c[(c[a+480>>2]|0)+24>>2]|0;h=c[a+112>>2]|0;if((g|0)<1|(h|0)==0){return}else{i=0}do{a=h;j=c[e+(i<<2)>>2]|0;while(1){k=(c[f+((d[j]|0)>>>3<<2)>>2]|0)+((d[j+1|0]|0)>>>2<<6)+((d[j+2|0]|0)>>>3<<1)|0;l=b[k>>1]|0;m=l+1&65535;b[k>>1]=m<<16>>16==0?l:m;m=a-1|0;if((m|0)==0){break}else{a=m;j=j+3|0}}i=i+1|0;}while((i|0)<(g|0));return}function I_(d){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,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,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,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;e=d+480|0;f=c[e>>2]|0;g=d+136|0;c[g>>2]=c[f+16>>2];h=c[f+20>>2]|0;i=d;j=rk[c[c[d+4>>2]>>2]&63](i,1,h<<5)|0;k=j;c[j>>2]=0;c[j+4>>2]=31;c[j+8>>2]=0;c[j+12>>2]=63;c[j+16>>2]=0;c[j+20>>2]=31;N_(c[(c[e>>2]|0)+24>>2]|0,k);do{if((h|0)>1){j=1;while(1){if((j<<1|0)>(h|0)){l=k;m=0;n=0;o=0;while(1){p=c[l+24>>2]|0;q=(p|0)>(n|0);r=q?l:o;s=m+1|0;if((s|0)<(j|0)){l=l+32|0;m=s;n=q?p:n;o=r}else{t=r;break}}}else{o=k;n=0;m=0;l=0;while(1){r=c[o+28>>2]|0;if((r|0)>(m|0)){p=(c[o+24>>2]|0)>0;u=p?o:l;v=p?r:m}else{u=l;v=m}r=n+1|0;if((r|0)<(j|0)){o=o+32|0;n=r;m=v;l=u}else{t=u;break}}}if((t|0)==0){w=j;break}l=k+(j<<5)|0;m=t+4|0;c[k+(j<<5)+4>>2]=c[m>>2];n=t+12|0;c[k+(j<<5)+12>>2]=c[n>>2];o=t+20|0;c[k+(j<<5)+20>>2]=c[o>>2];r=t|0;p=l|0;c[p>>2]=c[r>>2];q=t+8|0;s=k+(j<<5)+8|0;c[s>>2]=c[q>>2];x=t+16|0;y=k+(j<<5)+16|0;c[y>>2]=c[x>>2];z=c[m>>2]|0;A=c[r>>2]|0;r=z-A<<4;B=c[n>>2]|0;C=c[q>>2]|0;q=(B-C|0)*12|0;D=c[o>>2]|0;E=c[x>>2]|0;x=(r|0)>(q|0);F=(D-E<<3|0)>((x?r:q)|0)?2:x&1^1;if((F|0)==1){x=(C+B|0)/2|0;c[n>>2]=x;c[s>>2]=x+1}else if((F|0)==0){x=(A+z|0)/2|0;c[m>>2]=x;c[p>>2]=x+1}else if((F|0)==2){F=(E+D|0)/2|0;c[o>>2]=F;c[y>>2]=F+1}N_(c[(c[e>>2]|0)+24>>2]|0,t);N_(c[(c[e>>2]|0)+24>>2]|0,l);l=j+1|0;if((l|0)<(h|0)){j=l}else{w=l;break}}if((w|0)>0){G=w;break}else{H=w}I=d+132|0;c[I>>2]=H;J=d|0;K=c[J>>2]|0;L=K+20|0;c[L>>2]=98;M=c[J>>2]|0;N=M+24|0;c[N>>2]=H;O=c[J>>2]|0;P=O+4|0;Q=c[P>>2]|0;hk[Q&255](i,1);R=f+28|0;c[R>>2]=1;return}else{G=1}}while(0);w=0;while(1){h=c[(c[e>>2]|0)+24>>2]|0;t=c[k+(w<<5)>>2]|0;u=c[k+(w<<5)+4>>2]|0;v=c[k+(w<<5)+8>>2]|0;j=c[k+(w<<5)+12>>2]|0;l=c[k+(w<<5)+16>>2]|0;F=c[k+(w<<5)+20>>2]|0;if((t|0)>(u|0)){S=0;T=0;U=0;V=0}else{y=(v|0)>(j|0);o=(l|0)>(F|0);D=t;t=0;E=0;x=0;p=0;while(1){if(y){W=t;X=E;Y=x;Z=p}else{m=c[h+(D<<2)>>2]|0;z=D<<3|4;A=v;s=t;n=E;B=x;C=p;while(1){if(o){_=s;$=n;aa=B;ba=C}else{q=A<<2|2;r=l;ca=m+(A<<6)+(l<<1)|0;ea=s;fa=n;ga=B;ha=C;while(1){ia=b[ca>>1]|0;ja=ia&65535;if(ia<<16>>16==0){ka=ha;la=ga;ma=fa;na=ea}else{ka=(da(ja,r<<3|4)|0)+ha|0;la=(da(ja,q)|0)+ga|0;ma=(da(ja,z)|0)+fa|0;na=ja+ea|0}if((r|0)<(F|0)){r=r+1|0;ca=ca+2|0;ea=na;fa=ma;ga=la;ha=ka}else{_=na;$=ma;aa=la;ba=ka;break}}}if((A|0)<(j|0)){A=A+1|0;s=_;n=$;B=aa;C=ba}else{W=_;X=$;Y=aa;Z=ba;break}}}if((D|0)<(u|0)){D=D+1|0;t=W;E=X;x=Y;p=Z}else{S=W;T=X;U=Y;V=Z;break}}}p=S>>1;a[(c[c[g>>2]>>2]|0)+w|0]=(p+T|0)/(S|0)|0;a[(c[(c[g>>2]|0)+4>>2]|0)+w|0]=(p+U|0)/(S|0)|0;a[(c[(c[g>>2]|0)+8>>2]|0)+w|0]=(p+V|0)/(S|0)|0;p=w+1|0;if((p|0)<(G|0)){w=p}else{H=G;break}}I=d+132|0;c[I>>2]=H;J=d|0;K=c[J>>2]|0;L=K+20|0;c[L>>2]=98;M=c[J>>2]|0;N=M+24|0;c[N>>2]=H;O=c[J>>2]|0;P=O+4|0;Q=c[P>>2]|0;hk[Q&255](i,1);R=f+28|0;c[R>>2]=1;return}function J_(e,f,g,h){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,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,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,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;i=c[e+480>>2]|0;j=c[i+24>>2]|0;k=c[e+112>>2]|0;l=c[e+332>>2]|0;m=c[i+40>>2]|0;n=c[e+136>>2]|0;o=c[n>>2]|0;p=c[n+4>>2]|0;q=c[n+8>>2]|0;if((h|0)<=0){return}n=i+36|0;r=n;s=i+32|0;i=(k|0)==0;t=k-1|0;u=t*3|0;v=(k*3|0)+3|0;w=0;do{x=c[f+(w<<2)>>2]|0;y=c[g+(w<<2)>>2]|0;if((c[r>>2]|0)==0){z=3;A=1;B=c[s>>2]|0;C=y;D=x;E=1}else{z=-3;A=-1;B=(c[s>>2]|0)+(v<<1)|0;C=y+t|0;D=x+u|0;E=0}c[n>>2]=E;if(i){F=B;G=0;H=0;I=0}else{x=z+1|0;y=z+2|0;J=da(k,z)|0;K=D;L=C;M=B;N=k;O=0;P=0;Q=0;R=0;S=0;T=0;U=0;V=0;W=0;while(1){X=M+(z<<1)|0;Y=d[l+((d[K]|0)+(c[m+(W+8+(b[X>>1]|0)>>4<<2)>>2]|0))|0]|0;Z=d[l+((d[K+1|0]|0)+(c[m+(V+8+(b[M+(x<<1)>>1]|0)>>4<<2)>>2]|0))|0]|0;_=d[l+((d[K+2|0]|0)+(c[m+(U+8+(b[M+(y<<1)>>1]|0)>>4<<2)>>2]|0))|0]|0;$=_>>>3;aa=Z>>>2;ba=Y>>>3;ca=(c[j+(ba<<2)>>2]|0)+(aa<<6)+($<<1)|0;ea=b[ca>>1]|0;if(ea<<16>>16==0){M_(e,ba,aa,$);fa=b[ca>>1]|0}else{fa=ea}ea=(fa&65535)-1|0;a[L]=ea;ca=Y-(d[o+ea|0]|0)|0;Y=Z-(d[p+ea|0]|0)|0;Z=_-(d[q+ea|0]|0)|0;ea=ca<<1;_=ea+ca|0;b[M>>1]=_+Q;$=_+ea|0;ga=$+T|0;_=Y<<1;aa=_+Y|0;b[M+2>>1]=aa+P;ba=aa+_|0;ha=ba+S|0;aa=Z<<1;ia=aa+Z|0;b[M+4>>1]=ia+O;ja=ia+aa|0;ka=ja+R|0;ia=N-1|0;if((ia|0)==0){break}else{K=K+z|0;L=L+A|0;M=X;N=ia;O=ka;P=ha;Q=ga;R=Z;S=Y;T=ca;U=ja+aa|0;V=ba+_|0;W=$+ea|0}}F=B+(J<<1)|0;G=ka&65535;H=ha&65535;I=ga&65535}b[F>>1]=I;b[F+2>>1]=H;b[F+4>>1]=G;w=w+1|0;}while((w|0)<(h|0));return}function K_(e,f,g,h){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;i=c[(c[e+480>>2]|0)+24>>2]|0;j=c[e+112>>2]|0;if((h|0)<=0){return}k=(j|0)==0;l=0;do{if(!k){m=c[g+(l<<2)>>2]|0;n=j;o=c[f+(l<<2)>>2]|0;while(1){p=(d[o]|0)>>>3;q=(d[o+1|0]|0)>>>2;r=(d[o+2|0]|0)>>>3;s=(c[i+(p<<2)>>2]|0)+(q<<6)+(r<<1)|0;t=b[s>>1]|0;if(t<<16>>16==0){M_(e,p,q,r);u=b[s>>1]&255}else{u=t&255}a[m]=u-1;t=n-1|0;if((t|0)==0){break}else{m=m+1|0;n=t;o=o+3|0}}}l=l+1|0;}while((l|0)<(h|0));return}function L_(a){a=a|0;return}function M_(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;j=i;i=i+1920|0;k=j|0;l=j+512|0;m=j+1536|0;n=j+1792|0;o=c[(c[e+480>>2]|0)+24>>2]|0;p=f>>2;f=g>>3;g=h>>2;h=p<<5;q=h|4;r=f<<5;s=r|2;t=g<<5;u=t|4;v=c[e+132>>2]|0;w=h|28;h=w+q>>1;x=r|30;r=x+s>>1;y=t|28;t=y+u>>1;if((v|0)>0){z=c[e+136>>2]|0;A=c[z>>2]|0;B=c[z+4>>2]|0;C=c[z+8>>2]|0;z=0;D=2147483647;while(1){E=d[A+z|0]|0;do{if((E|0)<(q|0)){F=E-q<<1;G=E-w<<1;H=da(G,G)|0;I=da(F,F)|0}else{if((E|0)>(w|0)){F=E-w<<1;G=E-q<<1;H=da(G,G)|0;I=da(F,F)|0;break}if((E|0)>(h|0)){F=E-q<<1;H=da(F,F)|0;I=0;break}else{F=E-w<<1;H=da(F,F)|0;I=0;break}}}while(0);E=d[B+z|0]|0;do{if((E|0)<(s|0)){F=(E-s|0)*3|0;G=(E-x|0)*3|0;J=da(G,G)|0;K=(da(F,F)|0)+I|0}else{if((E|0)>(x|0)){F=(E-x|0)*3|0;G=(E-s|0)*3|0;J=da(G,G)|0;K=(da(F,F)|0)+I|0;break}if((E|0)>(r|0)){F=(E-s|0)*3|0;J=da(F,F)|0;K=I;break}else{F=(E-x|0)*3|0;J=da(F,F)|0;K=I;break}}}while(0);E=J+H|0;F=d[C+z|0]|0;do{if((F|0)<(u|0)){G=F-u|0;L=F-y|0;M=da(L,L)|0;N=(da(G,G)|0)+K|0}else{if((F|0)>(y|0)){G=F-y|0;L=F-u|0;M=da(L,L)|0;N=(da(G,G)|0)+K|0;break}if((F|0)>(t|0)){G=F-u|0;M=da(G,G)|0;N=K;break}else{G=F-y|0;M=da(G,G)|0;N=K;break}}}while(0);F=E+M|0;c[l+(z<<2)>>2]=N;O=(F|0)<(D|0)?F:D;F=z+1|0;if((F|0)<(v|0)){z=F;D=O}else{P=0;Q=0;break}}while(1){if((c[l+(P<<2)>>2]|0)>(O|0)){R=Q}else{a[m+Q|0]=P;R=Q+1|0}D=P+1|0;if((D|0)<(v|0)){P=D;Q=R}else{S=R;break}}}else{S=0}R=k|0;k=127;Q=R;while(1){c[Q>>2]=2147483647;if((k|0)>0){k=k-1|0;Q=Q+4|0}else{break}}Q=n|0;if((S|0)>0){k=e+136|0;e=0;do{P=a[m+e|0]|0;v=P&255;O=c[k>>2]|0;l=q-(d[(c[O>>2]|0)+v|0]|0)|0;D=l<<1;z=da(D,D)|0;D=s-(d[(c[O+4>>2]|0)+v|0]|0)|0;N=D*3|0;M=(da(N,N)|0)+z|0;z=u-(d[(c[O+8>>2]|0)+v|0]|0)|0;v=(D*72|0)+144|0;D=z<<4;O=D+64|0;N=D+192|0;K=D+320|0;D=R;y=Q;t=M+(da(z,z)|0)|0;z=(l<<6)+256|0;l=3;while(1){M=7;C=D;H=y;J=t;I=v;while(1){if((J|0)<(c[C>>2]|0)){c[C>>2]=J;a[H]=P}x=O+J|0;r=C+4|0;if((x|0)<(c[r>>2]|0)){c[r>>2]=x;a[H+1|0]=P}r=N+x|0;x=C+8|0;if((r|0)<(c[x>>2]|0)){c[x>>2]=r;a[H+2|0]=P}x=K+r|0;r=C+12|0;if((x|0)<(c[r>>2]|0)){c[r>>2]=x;a[H+3|0]=P}if((M|0)>0){M=M-1|0;C=C+16|0;H=H+4|0;J=J+I|0;I=I+288|0}else{break}}if((l|0)>0){D=D+128|0;y=y+32|0;t=t+z|0;z=z+512|0;l=l-1|0}else{break}}e=e+1|0;}while((e|0)<(S|0))}S=p<<2;p=f<<3;f=g<<2;g=o+(S<<2)|0;e=0;R=Q;while(1){Q=e+p|0;u=c[g>>2]|0;s=f|1;b[u+(Q<<6)+(f<<1)>>1]=(d[R]|0)+1;b[u+(Q<<6)+(s<<1)>>1]=(d[R+1|0]|0)+1;b[u+(Q<<6)+(s+1<<1)>>1]=(d[R+2|0]|0)+1;b[u+(Q<<6)+((f|3)<<1)>>1]=(d[R+3|0]|0)+1;Q=e+1|0;if((Q|0)<8){e=Q;R=R+4|0}else{break}}R=o+((S|1)<<2)|0;e=0;g=n+32|0;while(1){Q=e+p|0;u=c[R>>2]|0;s=f|1;b[u+(Q<<6)+(f<<1)>>1]=(d[g]|0)+1;b[u+(Q<<6)+(s<<1)>>1]=(d[g+1|0]|0)+1;b[u+(Q<<6)+(s+1<<1)>>1]=(d[g+2|0]|0)+1;b[u+(Q<<6)+((f|3)<<1)>>1]=(d[g+3|0]|0)+1;Q=e+1|0;if((Q|0)<8){e=Q;g=g+4|0}else{break}}g=o+((S|2)<<2)|0;e=0;R=n+64|0;while(1){Q=e+p|0;u=c[g>>2]|0;s=f|1;b[u+(Q<<6)+(f<<1)>>1]=(d[R]|0)+1;b[u+(Q<<6)+(s<<1)>>1]=(d[R+1|0]|0)+1;b[u+(Q<<6)+(s+1<<1)>>1]=(d[R+2|0]|0)+1;b[u+(Q<<6)+((f|3)<<1)>>1]=(d[R+3|0]|0)+1;Q=e+1|0;if((Q|0)<8){e=Q;R=R+4|0}else{break}}R=o+((S|3)<<2)|0;S=0;o=n+96|0;while(1){n=S+p|0;e=c[R>>2]|0;g=f|1;b[e+(n<<6)+(f<<1)>>1]=(d[o]|0)+1;b[e+(n<<6)+(g<<1)>>1]=(d[o+1|0]|0)+1;b[e+(n<<6)+(g+1<<1)>>1]=(d[o+2|0]|0)+1;b[e+(n<<6)+((f|3)<<1)>>1]=(d[o+3|0]|0)+1;n=S+1|0;if((n|0)<8){S=n;o=o+4|0}else{break}}i=j;return}function N_(a,d){a=a|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,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,J=0;e=a;a=d|0;f=c[a>>2]|0;g=d+4|0;h=c[g>>2]|0;i=d+8|0;j=c[i>>2]|0;k=d+12|0;l=c[k>>2]|0;m=d+16|0;n=c[m>>2]|0;o=d+20|0;p=c[o>>2]|0;a:do{if((f|0)<(h|0)){q=(j|0)>(l|0);r=(n|0)>(p|0);s=f;b:while(1){if(!q){t=c[e+(s<<2)>>2]|0;u=j;while(1){if(!r){v=n;w=t+(u<<6)+(n<<1)|0;while(1){if((b[w>>1]|0)!=0){break b}if((v|0)<(p|0)){v=v+1|0;w=w+2|0}else{break}}}if((u|0)<(l|0)){u=u+1|0}else{break}}}if((s|0)<(h|0)){s=s+1|0}else{x=f;break a}}c[a>>2]=s;x=s}else{x=f}}while(0);c:do{if((h|0)>(x|0)){f=(j|0)>(l|0);a=(n|0)>(p|0);r=h;d:while(1){if(!f){q=c[e+(r<<2)>>2]|0;u=j;while(1){if(!a){t=n;w=q+(u<<6)+(n<<1)|0;while(1){if((b[w>>1]|0)!=0){break d}if((t|0)<(p|0)){t=t+1|0;w=w+2|0}else{break}}}if((u|0)<(l|0)){u=u+1|0}else{break}}}if((r|0)>(x|0)){r=r-1|0}else{y=h;break c}}c[g>>2]=r;y=r}else{y=h}}while(0);e:do{if((j|0)<(l|0)){h=(x|0)>(y|0);g=(n|0)>(p|0);a=j;f:while(1){if(!h){f=x;while(1){if(!g){s=n;u=(c[e+(f<<2)>>2]|0)+(a<<6)+(n<<1)|0;while(1){if((b[u>>1]|0)!=0){break f}if((s|0)<(p|0)){s=s+1|0;u=u+2|0}else{break}}}if((f|0)<(y|0)){f=f+1|0}else{break}}}if((a|0)<(l|0)){a=a+1|0}else{z=j;break e}}c[i>>2]=a;z=a}else{z=j}}while(0);g:do{if((l|0)>(z|0)){j=(x|0)>(y|0);i=(n|0)>(p|0);g=l;h:while(1){if(!j){h=x;while(1){if(!i){r=n;f=(c[e+(h<<2)>>2]|0)+(g<<6)+(n<<1)|0;while(1){if((b[f>>1]|0)!=0){break h}if((r|0)<(p|0)){r=r+1|0;f=f+2|0}else{break}}}if((h|0)<(y|0)){h=h+1|0}else{break}}}if((g|0)>(z|0)){g=g-1|0}else{A=l;break g}}c[k>>2]=g;A=g}else{A=l}}while(0);i:do{if((n|0)<(p|0)){l=(x|0)>(y|0);k=(z|0)>(A|0);i=n;j:while(1){if(!l){j=x;while(1){if(!k){a=z;h=(c[e+(j<<2)>>2]|0)+(z<<6)+(i<<1)|0;while(1){if((b[h>>1]|0)!=0){break j}if((a|0)<(A|0)){a=a+1|0;h=h+64|0}else{break}}}if((j|0)<(y|0)){j=j+1|0}else{break}}}if((i|0)<(p|0)){i=i+1|0}else{B=n;break i}}c[m>>2]=i;B=i}else{B=n}}while(0);k:do{if((p|0)>(B|0)){n=(x|0)>(y|0);m=(z|0)>(A|0);k=p;l:while(1){m:do{if(!n){if(m){l=x;while(1){if((l|0)<(y|0)){l=l+1|0}else{break m}}}else{C=x}while(1){l=z;g=(c[e+(C<<2)>>2]|0)+(z<<6)+(k<<1)|0;while(1){if((b[g>>1]|0)!=0){break l}if((l|0)<(A|0)){l=l+1|0;g=g+64|0}else{break}}if((C|0)<(y|0)){C=C+1|0}else{break}}}}while(0);if((k|0)>(B|0)){k=k-1|0}else{D=p;break k}}c[o>>2]=k;D=k}else{D=p}}while(0);p=y-x<<4;o=(A-z|0)*12|0;C=D-B<<3;c[d+24>>2]=(da(o,o)|0)+(da(p,p)|0)+(da(C,C)|0);if((x|0)>(y|0)){E=0;F=d+28|0;c[F>>2]=E;return}C=(B|0)>(D|0);if((z|0)>(A|0)){E=0;F=d+28|0;c[F>>2]=E;return}else{G=x;H=0}while(1){x=c[e+(G<<2)>>2]|0;if(C){I=H}else{p=z;o=H;while(1){m=B;n=x+(p<<6)+(B<<1)|0;i=o;while(1){J=((b[n>>1]|0)!=0)+i|0;if((m|0)<(D|0)){m=m+1|0;n=n+2|0;i=J}else{break}}if((p|0)<(A|0)){p=p+1|0;o=J}else{I=J;break}}}if((G|0)<(y|0)){G=G+1|0;H=I}else{E=I;break}}F=d+28|0;c[F>>2]=E;return}function O_(a,b){a=a|0;b=b|0;return(a-1+b|0)/(b|0)|0|0}function P_(a,b){a=a|0;b=b|0;var c=0;c=a-1+b|0;return c-((c|0)%(b|0)|0)|0}function Q_(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;if((f|0)<=0){return}h=d+(e<<2)|0;e=a+(b<<2)|0;b=f;while(1){m$(c[h>>2]|0,c[e>>2]|0,g)|0;f=b-1|0;if((f|0)>0){h=h+4|0;e=e+4|0;b=f}else{break}}return}function R_(a,b,c){a=a|0;b=b|0;c=c|0;m$(b|0,a|0,c<<7)|0;return}function S_(a,b){a=a|0;b=b|0;n$(a|0,0,b|0)|0;return}function T_(a,b){a=+a;b=b|0;return+(+d$(a,b))}function U_(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;e=b;b=V_((o$(e|0)|0)+1|0)|0;r$(b|0,e|0)|0;f=ii(b|0,60848)|0;if((f|0)!=0){a[f]=0}f=ii(b|0,161640)|0;if((f|0)!=0){a[f]=0}if((k$(b,137952)|0)!=0){if((k$(b,114320)|0)!=0){if((k$(b,61544)|0)!=0){if((k$(b,48032)|0)!=0){if((k$(b,183056)|0)==0){b=178992}}else{b=43944}}else{b=54056}}else{b=104920}}else{b=124952}do{if((k$(b,174544)|0)!=0){if((k$(b,171216)|0)==0){g=100;break}if((k$(b,168360)|0)==0){g=4;break}if((k$(b,164968)|0)==0){g=54;break}if((k$(b,161904)|0)==0){g=62;break}if((k$(b,158872)|0)==0){g=132;break}if((k$(b,156488)|0)==0){g=94;break}if((k$(b,154328)|0)==0){g=6;break}if((k$(b,152408)|0)==0){g=6;break}if((k$(b,150112)|0)==0){g=8;break}if((k$(b,147824)|0)==0){g=10;break}if((k$(b,145296)|0)==0){g=4;break}if((k$(b,142864)|0)==0){g=106;break}if((k$(b,140608)|0)==0){g=4;break}if((k$(b,138064)|0)==0){g=82;break}if((k$(b,136432)|0)==0){g=14;break}if((k$(b,135016)|0)==0){g=68;break}if((k$(b,133384)|0)==0){g=140;break}if((k$(b,132256)|0)==0){g=66;break}if((k$(b,131312)|0)==0){g=204;break}if((k$(b,129832)|0)==0){g=150;break}if((k$(b,128576)|0)==0){g=56;break}if((k$(b,127600)|0)==0){g=42;break}if((k$(b,126304)|0)==0){g=48;break}if((k$(b,124984)|0)==0){g=56;break}if((k$(b,124104)|0)==0){g=194;break}if((k$(b,123256)|0)==0){g=16;break}if((k$(b,122432)|0)==0){g=118;break}if((k$(b,121608)|0)==0){g=92;break}if((k$(b,120648)|0)==0){g=36;break}if((k$(b,119384)|0)==0){g=92;break}if((k$(b,118048)|0)==0){g=102;break}if((k$(b,117096)|0)==0){g=108;break}if((k$(b,115896)|0)==0){g=160;break}if((k$(b,114360)|0)==0){g=104;break}if((k$(b,113272)|0)==0){g=20;break}if((k$(b,112360)|0)==0){g=4;break}if((k$(b,111560)|0)==0){g=4;break}if((k$(b,110832)|0)==0){g=6;break}if((k$(b,109936)|0)==0){g=8;break}if((k$(b,108616)|0)==0){g=12;break}if((k$(b,107536)|0)==0){g=136;break}if((k$(b,106680)|0)==0){g=66;break}if((k$(b,105768)|0)==0){g=38;break}if((k$(b,104960)|0)==0){g=20;break}if((k$(b,103968)|0)==0){g=156;break}if((k$(b,103040)|0)==0){g=22;break}if((k$(b,102304)|0)==0){g=54;break}if((k$(b,101360)|0)==0){g=62;break}if((k$(b,100368)|0)==0){g=124;break}if((k$(b,99272)|0)==0){g=44;break}if((k$(b,64232)|0)==0){g=40;break}if((k$(b,63512)|0)==0){g=12;break}if((k$(b,62456)|0)==0){g=114;break}if((k$(b,61584)|0)==0){g=102;break}if((k$(b,60856)|0)==0){g=50;break}if((k$(b,60040)|0)==0){g=206;break}if((k$(b,59480)|0)==0){g=22;break}if((k$(b,58912)|0)==0){g=156;break}if((k$(b,58248)|0)==0){g=28;break}if((k$(b,57352)|0)==0){g=66;break}if((k$(b,56392)|0)==0){g=12;break}if((k$(b,54056)|0)==0){g=62;break}if((k$(b,55720)|0)==0){g=194;break}if((k$(b,54800)|0)==0){g=74;break}if((k$(b,54080)|0)==0){g=136;break}if((k$(b,53552)|0)==0){g=106;break}if((k$(b,53120)|0)==0){g=70;break}if((k$(b,52592)|0)==0){g=14;break}if((k$(b,52112)|0)==0){g=102;break}if((k$(b,51560)|0)==0){g=128;break}if((k$(b,50800)|0)==0){g=74;break}if((k$(b,124952)|0)==0){g=26;break}if((k$(b,49952)|0)==0){g=290;break}if((k$(b,43944)|0)==0){g=84;break}if((k$(b,178992)|0)==0){g=168;break}if((k$(b,49264)|0)==0){g=50;break}if((k$(b,48656)|0)==0){g=234;break}if((k$(b,48064)|0)==0){g=78;break}if((k$(b,104920)|0)==0){g=156;break}if((k$(b,47688)|0)==0){g=90;break}if((k$(b,47272)|0)==0){g=34;break}if((k$(b,46920)|0)==0){g=142;break}if((k$(b,46608)|0)==0){g=42;break}if((k$(b,46312)|0)==0){g=196;break}if((k$(b,45800)|0)==0){g=164;break}if((k$(b,45152)|0)==0){g=86;break}if((k$(b,44824)|0)==0){g=20;break}if((k$(b,44400)|0)==0){g=48;break}if((k$(b,43960)|0)==0){g=102;break}if((k$(b,43592)|0)==0){g=74;break}if((k$(b,43280)|0)==0){g=70;break}if((k$(b,43e3)|0)==0){g=70;break}if((k$(b,185856)|0)==0){g=188;break}if((k$(b,185464)|0)==0){g=152;break}if((k$(b,184936)|0)==0){g=6;break}if((k$(b,184256)|0)==0){g=242;break}if((k$(b,183904)|0)==0){g=38;break}if((k$(b,183456)|0)==0){g=20;break}if((k$(b,183072)|0)==0){g=152;break}if((k$(b,182688)|0)==0){g=132;break}if((k$(b,182408)|0)==0){g=184;break}if((k$(b,182208)|0)==0){g=128;break}if((k$(b,181888)|0)==0){g=112;break}if((k$(b,181552)|0)==0){g=272;break}if((k$(b,181120)|0)==0){g=208;break}if((k$(b,180456)|0)==0){g=274;break}if((k$(b,180112)|0)==0){g=226;break}if((k$(b,179544)|0)==0){g=4;break}if((k$(b,179016)|0)==0){g=4;break}if((k$(b,178592)|0)==0){g=4;break}if((k$(b,178184)|0)==0){g=196;break}if((k$(b,177672)|0)==0){g=62;break}if((k$(b,177248)|0)==0){g=58;break}if((k$(b,176840)|0)==0){g=112;break}if((k$(b,176392)|0)==0){g=90;break}if((k$(b,175840)|0)==0){g=14;break}if((k$(b,175544)|0)==0){g=22;break}if((k$(b,175120)|0)==0){g=64;break}if((k$(b,174560)|0)==0){g=16;break}if((k$(b,174376)|0)==0){g=70;break}if((k$(b,174184)|0)==0){g=166;break}if((k$(b,173920)|0)==0){g=58;break}if((k$(b,173688)|0)==0){g=4;break}if((k$(b,173352)|0)==0){g=4;break}if((k$(b,172960)|0)==0){g=14;break}if((k$(b,172336)|0)==0){g=274;break}if((k$(b,171976)|0)==0){g=292;break}if((k$(b,171640)|0)==0){g=152;break}if((k$(b,171232)|0)==0){g=58;break}if((k$(b,171096)|0)==0){g=86;break}if((k$(b,170912)|0)==0){g=6;break}if((k$(b,170616)|0)==0){g=92;break}if((k$(b,170472)|0)==0){g=164;break}if((k$(b,170224)|0)==0){g=110;break}if((k$(b,169880)|0)==0){g=78;break}if((k$(b,169304)|0)==0){g=300;break}if((k$(b,169104)|0)==0){g=320;break}if((k$(b,168792)|0)==0){g=50;break}if((k$(b,168376)|0)==0){g=40;break}if((k$(b,168072)|0)==0){g=174;break}if((k$(b,167856)|0)==0){g=176;break}if((k$(b,167592)|0)==0){g=4;break}if((k$(b,167448)|0)==0){g=6;break}if((k$(b,167176)|0)==0){g=58;break}if((k$(b,166456)|0)==0){g=202;break}if((k$(b,165864)|0)==0){g=4;break}if((k$(b,165600)|0)==0){g=8;break}if((k$(b,165368)|0)==0){g=4;break}if((k$(b,164984)|0)==0){g=138;break}if((k$(b,164664)|0)==0){g=8;break}if((k$(b,164264)|0)==0){g=6;break}if((k$(b,164120)|0)==0){g=30;break}if((k$(b,163944)|0)==0){g=52;break}if((k$(b,163544)|0)==0){g=84;break}if((k$(b,163216)|0)==0){g=6;break}if((k$(b,162696)|0)==0){g=72;break}if((k$(b,162432)|0)==0){g=4;break}if((k$(b,162200)|0)==0){g=122;break}if((k$(b,161920)|0)==0){g=36;break}if((k$(b,161672)|0)==0){g=52;break}if((k$(b,161472)|0)==0){g=8;break}if((k$(b,161264)|0)==0){g=22;break}if((k$(b,161104)|0)==0){g=124;break}if((k$(b,160768)|0)==0){g=10;break}if((k$(b,160472)|0)==0){g=4;break}if((k$(b,159960)|0)==0){g=8;break}Rc(c[p>>2]|0,159640,(f=i,i=i+16|0,c[f>>2]=e,c[f+8>>2]=b,f)|0)|0;i=f;g=0}else{g=198}}while(0);i=d;return g|0} + + + +function V_(a){a=a|0;var b=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,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,_=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,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0;do{if(a>>>0<245>>>0){if(a>>>0<11>>>0){b=16}else{b=a+11&-8}d=b>>>3;e=c[7094686]|0;f=e>>>(d>>>0);if((f&3|0)!=0){g=(f&1^1)+d|0;h=g<<1;i=28378784+(h<<2)|0;j=28378784+(h+2<<2)|0;h=c[j>>2]|0;k=h+8|0;l=c[k>>2]|0;do{if((i|0)==(l|0)){c[7094686]=e&~(1<>>0<(c[7094690]|0)>>>0){Qc();return 0}m=l+12|0;if((c[m>>2]|0)==(h|0)){c[m>>2]=i;c[j>>2]=l;break}else{Qc();return 0}}}while(0);l=g<<3;c[h+4>>2]=l|3;j=h+(l|4)|0;c[j>>2]=c[j>>2]|1;n=k;return n|0}if(!(b>>>0>(c[7094688]|0)>>>0)){o=b;break}if((f|0)!=0){j=2<>>12&16;i=j>>>(l>>>0);j=i>>>5&8;m=i>>>(j>>>0);i=m>>>2&4;p=m>>>(i>>>0);m=p>>>1&2;q=p>>>(m>>>0);p=q>>>1&1;r=(j|l|i|m|p)+(q>>>(p>>>0))|0;p=r<<1;q=28378784+(p<<2)|0;m=28378784+(p+2<<2)|0;p=c[m>>2]|0;i=p+8|0;l=c[i>>2]|0;do{if((q|0)==(l|0)){c[7094686]=e&~(1<>>0<(c[7094690]|0)>>>0){Qc();return 0}j=l+12|0;if((c[j>>2]|0)==(p|0)){c[j>>2]=q;c[m>>2]=l;break}else{Qc();return 0}}}while(0);l=r<<3;m=l-b|0;c[p+4>>2]=b|3;q=p;e=q+b|0;c[q+(b|4)>>2]=m|1;c[q+l>>2]=m;l=c[7094688]|0;if((l|0)!=0){q=c[7094691]|0;d=l>>>3;l=d<<1;f=28378784+(l<<2)|0;k=c[7094686]|0;h=1<>2]|0;if(!(g>>>0<(c[7094690]|0)>>>0)){s=g;t=d;break}Qc();return 0}}while(0);c[t>>2]=q;c[s+12>>2]=q;c[q+8>>2]=s;c[q+12>>2]=f}c[7094688]=m;c[7094691]=e;n=i;return n|0}l=c[7094687]|0;if((l|0)==0){o=b;break}h=(l&-l)-1|0;l=h>>>12&16;k=h>>>(l>>>0);h=k>>>5&8;p=k>>>(h>>>0);k=p>>>2&4;r=p>>>(k>>>0);p=r>>>1&2;d=r>>>(p>>>0);r=d>>>1&1;g=c[28379048+((h|l|k|p|r)+(d>>>(r>>>0))<<2)>>2]|0;r=g;d=g;p=(c[g+4>>2]&-8)-b|0;while(1){g=c[r+16>>2]|0;if((g|0)==0){k=c[r+20>>2]|0;if((k|0)==0){break}else{u=k}}else{u=g}g=(c[u+4>>2]&-8)-b|0;k=g>>>0

>>0;r=u;d=k?u:d;p=k?g:p}r=d;i=c[7094690]|0;if(r>>>0>>0){Qc();return 0}e=r+b|0;m=e;if(!(r>>>0>>0)){Qc();return 0}e=c[d+24>>2]|0;f=c[d+12>>2]|0;do{if((f|0)==(d|0)){q=d+20|0;g=c[q>>2]|0;if((g|0)==0){k=d+16|0;l=c[k>>2]|0;if((l|0)==0){v=0;break}else{w=l;x=k}}else{w=g;x=q}while(1){q=w+20|0;g=c[q>>2]|0;if((g|0)!=0){w=g;x=q;continue}q=w+16|0;g=c[q>>2]|0;if((g|0)==0){break}else{w=g;x=q}}if(x>>>0>>0){Qc();return 0}else{c[x>>2]=0;v=w;break}}else{q=c[d+8>>2]|0;if(q>>>0>>0){Qc();return 0}g=q+12|0;if((c[g>>2]|0)!=(d|0)){Qc();return 0}k=f+8|0;if((c[k>>2]|0)==(d|0)){c[g>>2]=f;c[k>>2]=q;v=f;break}else{Qc();return 0}}}while(0);a:do{if((e|0)!=0){f=c[d+28>>2]|0;i=28379048+(f<<2)|0;do{if((d|0)==(c[i>>2]|0)){c[i>>2]=v;if((v|0)!=0){break}c[7094687]=c[7094687]&~(1<>>0<(c[7094690]|0)>>>0){Qc();return 0}q=e+16|0;if((c[q>>2]|0)==(d|0)){c[q>>2]=v}else{c[e+20>>2]=v}if((v|0)==0){break a}}}while(0);if(v>>>0<(c[7094690]|0)>>>0){Qc();return 0}c[v+24>>2]=e;f=c[d+16>>2]|0;do{if((f|0)!=0){if(f>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[v+16>>2]=f;c[f+24>>2]=v;break}}}while(0);f=c[d+20>>2]|0;if((f|0)==0){break}if(f>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[v+20>>2]=f;c[f+24>>2]=v;break}}}while(0);if(p>>>0<16>>>0){e=p+b|0;c[d+4>>2]=e|3;f=r+(e+4)|0;c[f>>2]=c[f>>2]|1}else{c[d+4>>2]=b|3;c[r+(b|4)>>2]=p|1;c[r+(p+b)>>2]=p;f=c[7094688]|0;if((f|0)!=0){e=c[7094691]|0;i=f>>>3;f=i<<1;q=28378784+(f<<2)|0;k=c[7094686]|0;g=1<>2]|0;if(!(l>>>0<(c[7094690]|0)>>>0)){y=l;z=i;break}Qc();return 0}}while(0);c[z>>2]=e;c[y+12>>2]=e;c[e+8>>2]=y;c[e+12>>2]=q}c[7094688]=p;c[7094691]=m}n=d+8|0;return n|0}else{if(a>>>0>4294967231>>>0){o=-1;break}f=a+11|0;g=f&-8;k=c[7094687]|0;if((k|0)==0){o=g;break}r=-g|0;i=f>>>8;do{if((i|0)==0){A=0}else{if(g>>>0>16777215>>>0){A=31;break}f=(i+1048320|0)>>>16&8;l=i<>>16&4;j=l<>>16&2;B=14-(h|f|l)+(j<>>15)|0;A=g>>>((B+7|0)>>>0)&1|B<<1}}while(0);i=c[28379048+(A<<2)>>2]|0;b:do{if((i|0)==0){C=0;D=r;E=0}else{if((A|0)==31){F=0}else{F=25-(A>>>1)|0}d=0;m=r;p=i;q=g<>2]&-8;l=B-g|0;if(l>>>0>>0){if((B|0)==(g|0)){C=p;D=l;E=p;break b}else{G=p;H=l}}else{G=d;H=m}l=c[p+20>>2]|0;B=c[p+16+(q>>>31<<2)>>2]|0;j=(l|0)==0|(l|0)==(B|0)?e:l;if((B|0)==0){C=G;D=H;E=j;break}else{d=G;m=H;p=B;q=q<<1;e=j}}}}while(0);if((E|0)==0&(C|0)==0){i=2<>>12&16;e=i>>>(r>>>0);i=e>>>5&8;q=e>>>(i>>>0);e=q>>>2&4;p=q>>>(e>>>0);q=p>>>1&2;m=p>>>(q>>>0);p=m>>>1&1;I=c[28379048+((i|r|e|q|p)+(m>>>(p>>>0))<<2)>>2]|0}else{I=E}if((I|0)==0){J=D;K=C}else{p=I;m=D;q=C;while(1){e=(c[p+4>>2]&-8)-g|0;r=e>>>0>>0;i=r?e:m;e=r?p:q;r=c[p+16>>2]|0;if((r|0)!=0){p=r;m=i;q=e;continue}r=c[p+20>>2]|0;if((r|0)==0){J=i;K=e;break}else{p=r;m=i;q=e}}}if((K|0)==0){o=g;break}if(!(J>>>0<((c[7094688]|0)-g|0)>>>0)){o=g;break}q=K;m=c[7094690]|0;if(q>>>0>>0){Qc();return 0}p=q+g|0;k=p;if(!(q>>>0

>>0)){Qc();return 0}e=c[K+24>>2]|0;i=c[K+12>>2]|0;do{if((i|0)==(K|0)){r=K+20|0;d=c[r>>2]|0;if((d|0)==0){j=K+16|0;B=c[j>>2]|0;if((B|0)==0){L=0;break}else{M=B;N=j}}else{M=d;N=r}while(1){r=M+20|0;d=c[r>>2]|0;if((d|0)!=0){M=d;N=r;continue}r=M+16|0;d=c[r>>2]|0;if((d|0)==0){break}else{M=d;N=r}}if(N>>>0>>0){Qc();return 0}else{c[N>>2]=0;L=M;break}}else{r=c[K+8>>2]|0;if(r>>>0>>0){Qc();return 0}d=r+12|0;if((c[d>>2]|0)!=(K|0)){Qc();return 0}j=i+8|0;if((c[j>>2]|0)==(K|0)){c[d>>2]=i;c[j>>2]=r;L=i;break}else{Qc();return 0}}}while(0);c:do{if((e|0)!=0){i=c[K+28>>2]|0;m=28379048+(i<<2)|0;do{if((K|0)==(c[m>>2]|0)){c[m>>2]=L;if((L|0)!=0){break}c[7094687]=c[7094687]&~(1<>>0<(c[7094690]|0)>>>0){Qc();return 0}r=e+16|0;if((c[r>>2]|0)==(K|0)){c[r>>2]=L}else{c[e+20>>2]=L}if((L|0)==0){break c}}}while(0);if(L>>>0<(c[7094690]|0)>>>0){Qc();return 0}c[L+24>>2]=e;i=c[K+16>>2]|0;do{if((i|0)!=0){if(i>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[L+16>>2]=i;c[i+24>>2]=L;break}}}while(0);i=c[K+20>>2]|0;if((i|0)==0){break}if(i>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[L+20>>2]=i;c[i+24>>2]=L;break}}}while(0);d:do{if(J>>>0<16>>>0){e=J+g|0;c[K+4>>2]=e|3;i=q+(e+4)|0;c[i>>2]=c[i>>2]|1}else{c[K+4>>2]=g|3;c[q+(g|4)>>2]=J|1;c[q+(J+g)>>2]=J;i=J>>>3;if(J>>>0<256>>>0){e=i<<1;m=28378784+(e<<2)|0;r=c[7094686]|0;j=1<>2]|0;if(!(d>>>0<(c[7094690]|0)>>>0)){O=d;P=i;break}Qc();return 0}}while(0);c[P>>2]=k;c[O+12>>2]=k;c[q+(g+8)>>2]=O;c[q+(g+12)>>2]=m;break}e=p;j=J>>>8;do{if((j|0)==0){Q=0}else{if(J>>>0>16777215>>>0){Q=31;break}r=(j+1048320|0)>>>16&8;i=j<>>16&4;B=i<>>16&2;l=14-(d|r|i)+(B<>>15)|0;Q=J>>>((l+7|0)>>>0)&1|l<<1}}while(0);j=28379048+(Q<<2)|0;c[q+(g+28)>>2]=Q;c[q+(g+20)>>2]=0;c[q+(g+16)>>2]=0;m=c[7094687]|0;l=1<>2]=e;c[q+(g+24)>>2]=j;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break}l=c[j>>2]|0;if((Q|0)==31){R=0}else{R=25-(Q>>>1)|0}e:do{if((c[l+4>>2]&-8|0)==(J|0)){S=l}else{j=l;m=J<>>31<<2)|0;i=c[T>>2]|0;if((i|0)==0){break}if((c[i+4>>2]&-8|0)==(J|0)){S=i;break e}else{j=i;m=m<<1}}if(T>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[T>>2]=e;c[q+(g+24)>>2]=j;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break d}}}while(0);l=S+8|0;m=c[l>>2]|0;i=c[7094690]|0;if(S>>>0>>0){Qc();return 0}if(m>>>0>>0){Qc();return 0}else{c[m+12>>2]=e;c[l>>2]=e;c[q+(g+8)>>2]=m;c[q+(g+12)>>2]=S;c[q+(g+24)>>2]=0;break}}}while(0);n=K+8|0;return n|0}}while(0);K=c[7094688]|0;if(!(o>>>0>K>>>0)){S=K-o|0;T=c[7094691]|0;if(S>>>0>15>>>0){J=T;c[7094691]=J+o;c[7094688]=S;c[J+(o+4)>>2]=S|1;c[J+K>>2]=S;c[T+4>>2]=o|3}else{c[7094688]=0;c[7094691]=0;c[T+4>>2]=K|3;S=T+(K+4)|0;c[S>>2]=c[S>>2]|1}n=T+8|0;return n|0}T=c[7094689]|0;if(o>>>0>>0){S=T-o|0;c[7094689]=S;T=c[7094692]|0;K=T;c[7094692]=K+o;c[K+(o+4)>>2]=S|1;c[T+4>>2]=o|3;n=T+8|0;return n|0}do{if((c[4954356]|0)==0){T=qc(30)|0;if((T-1&T|0)==0){c[4954358]=T;c[4954357]=T;c[4954359]=-1;c[4954360]=-1;c[4954361]=0;c[7094797]=0;c[4954356]=(Xj(0)|0)&-16^1431655768;break}else{Qc();return 0}}}while(0);T=o+48|0;S=c[4954358]|0;K=o+47|0;J=S+K|0;R=-S|0;S=J&R;if(!(S>>>0>o>>>0)){n=0;return n|0}Q=c[7094796]|0;do{if((Q|0)!=0){O=c[7094794]|0;P=O+S|0;if(P>>>0<=O>>>0|P>>>0>Q>>>0){n=0}else{break}return n|0}}while(0);f:do{if((c[7094797]&4|0)==0){Q=c[7094692]|0;g:do{if((Q|0)==0){U=182}else{P=Q;O=28379192;while(1){V=O|0;L=c[V>>2]|0;if(!(L>>>0>P>>>0)){W=O+4|0;if((L+(c[W>>2]|0)|0)>>>0>P>>>0){break}}L=c[O+8>>2]|0;if((L|0)==0){U=182;break g}else{O=L}}if((O|0)==0){U=182;break}P=J-(c[7094689]|0)&R;if(!(P>>>0<2147483647>>>0)){X=0;break}e=wj(P|0)|0;L=(e|0)==((c[V>>2]|0)+(c[W>>2]|0)|0);Y=L?e:-1;Z=L?P:0;_=e;$=P;U=191}}while(0);do{if((U|0)==182){Q=wj(0)|0;if((Q|0)==-1){X=0;break}P=Q;e=c[4954357]|0;L=e-1|0;if((L&P|0)==0){aa=S}else{aa=S-P+(L+P&-e)|0}e=c[7094794]|0;P=e+aa|0;if(!(aa>>>0>o>>>0&aa>>>0<2147483647>>>0)){X=0;break}L=c[7094796]|0;if((L|0)!=0){if(P>>>0<=e>>>0|P>>>0>L>>>0){X=0;break}}L=wj(aa|0)|0;P=(L|0)==(Q|0);Y=P?Q:-1;Z=P?aa:0;_=L;$=aa;U=191}}while(0);h:do{if((U|0)==191){L=-$|0;if(!((Y|0)==-1)){ba=Z;ca=Y;U=202;break f}do{if((_|0)!=-1&$>>>0<2147483647>>>0&$>>>0>>0){P=c[4954358]|0;Q=K-$+P&-P;if(!(Q>>>0<2147483647>>>0)){da=$;break}if((wj(Q|0)|0)==-1){wj(L|0)|0;X=Z;break h}else{da=Q+$|0;break}}else{da=$}}while(0);if((_|0)==-1){X=Z}else{ba=da;ca=_;U=202;break f}}}while(0);c[7094797]=c[7094797]|4;ea=X;U=199}else{ea=0;U=199}}while(0);do{if((U|0)==199){if(!(S>>>0<2147483647>>>0)){break}X=wj(S|0)|0;_=wj(0)|0;if(!((_|0)!=-1&(X|0)!=-1&X>>>0<_>>>0)){break}da=_-X|0;_=da>>>0>(o+40|0)>>>0;if(_){ba=_?da:ea;ca=X;U=202}}}while(0);do{if((U|0)==202){ea=(c[7094794]|0)+ba|0;c[7094794]=ea;if(ea>>>0>(c[7094795]|0)>>>0){c[7094795]=ea}ea=c[7094692]|0;i:do{if((ea|0)==0){S=c[7094690]|0;if((S|0)==0|ca>>>0>>0){c[7094690]=ca}c[7094798]=ca;c[7094799]=ba;c[7094801]=0;c[7094695]=c[4954356];c[7094694]=-1;S=0;do{X=S<<1;da=28378784+(X<<2)|0;c[28378784+(X+3<<2)>>2]=da;c[28378784+(X+2<<2)>>2]=da;S=S+1|0;}while(S>>>0<32>>>0);S=ca+8|0;if((S&7|0)==0){fa=0}else{fa=-S&7}S=ba-40-fa|0;c[7094692]=ca+fa;c[7094689]=S;c[ca+(fa+4)>>2]=S|1;c[ca+(ba-36)>>2]=40;c[7094693]=c[4954360]}else{S=28379192;while(1){ga=c[S>>2]|0;ha=S+4|0;ia=c[ha>>2]|0;if((ca|0)==(ga+ia|0)){U=214;break}da=c[S+8>>2]|0;if((da|0)==0){break}else{S=da}}do{if((U|0)==214){if((c[S+12>>2]&8|0)!=0){break}da=ea;if(!(da>>>0>=ga>>>0&da>>>0>>0)){break}c[ha>>2]=ia+ba;X=(c[7094689]|0)+ba|0;_=ea+8|0;if((_&7|0)==0){ja=0}else{ja=-_&7}_=X-ja|0;c[7094692]=da+ja;c[7094689]=_;c[da+(ja+4)>>2]=_|1;c[da+(X+4)>>2]=40;c[7094693]=c[4954360];break i}}while(0);if(ca>>>0<(c[7094690]|0)>>>0){c[7094690]=ca}S=ca+ba|0;X=28379192;while(1){ka=X|0;if((c[ka>>2]|0)==(S|0)){U=224;break}da=c[X+8>>2]|0;if((da|0)==0){break}else{X=da}}do{if((U|0)==224){if((c[X+12>>2]&8|0)!=0){break}c[ka>>2]=ca;S=X+4|0;c[S>>2]=(c[S>>2]|0)+ba;S=ca+8|0;if((S&7|0)==0){la=0}else{la=-S&7}S=ca+(ba+8)|0;if((S&7|0)==0){ma=0}else{ma=-S&7}S=ca+(ma+ba)|0;da=S;_=la+o|0;Z=ca+_|0;$=Z;K=S-(ca+la)-o|0;c[ca+(la+4)>>2]=o|3;j:do{if((da|0)==(c[7094692]|0)){T=(c[7094689]|0)+K|0;c[7094689]=T;c[7094692]=$;c[ca+(_+4)>>2]=T|1}else{if((da|0)==(c[7094691]|0)){T=(c[7094688]|0)+K|0;c[7094688]=T;c[7094691]=$;c[ca+(_+4)>>2]=T|1;c[ca+(T+_)>>2]=T;break}T=ba+4|0;Y=c[ca+(T+ma)>>2]|0;if((Y&3|0)==1){aa=Y&-8;W=Y>>>3;k:do{if(Y>>>0<256>>>0){V=c[ca+((ma|8)+ba)>>2]|0;R=c[ca+(ba+12+ma)>>2]|0;J=28378784+(W<<1<<2)|0;do{if((V|0)!=(J|0)){if(V>>>0<(c[7094690]|0)>>>0){Qc();return 0}if((c[V+12>>2]|0)==(da|0)){break}Qc();return 0}}while(0);if((R|0)==(V|0)){c[7094686]=c[7094686]&~(1<>>0<(c[7094690]|0)>>>0){Qc();return 0}L=R+8|0;if((c[L>>2]|0)==(da|0)){na=L;break}Qc();return 0}}while(0);c[V+12>>2]=R;c[na>>2]=V}else{J=S;L=c[ca+((ma|24)+ba)>>2]|0;O=c[ca+(ba+12+ma)>>2]|0;do{if((O|0)==(J|0)){Q=ma|16;P=ca+(T+Q)|0;e=c[P>>2]|0;if((e|0)==0){M=ca+(Q+ba)|0;Q=c[M>>2]|0;if((Q|0)==0){oa=0;break}else{pa=Q;qa=M}}else{pa=e;qa=P}while(1){P=pa+20|0;e=c[P>>2]|0;if((e|0)!=0){pa=e;qa=P;continue}P=pa+16|0;e=c[P>>2]|0;if((e|0)==0){break}else{pa=e;qa=P}}if(qa>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[qa>>2]=0;oa=pa;break}}else{P=c[ca+((ma|8)+ba)>>2]|0;if(P>>>0<(c[7094690]|0)>>>0){Qc();return 0}e=P+12|0;if((c[e>>2]|0)!=(J|0)){Qc();return 0}M=O+8|0;if((c[M>>2]|0)==(J|0)){c[e>>2]=O;c[M>>2]=P;oa=O;break}else{Qc();return 0}}}while(0);if((L|0)==0){break}O=c[ca+(ba+28+ma)>>2]|0;V=28379048+(O<<2)|0;do{if((J|0)==(c[V>>2]|0)){c[V>>2]=oa;if((oa|0)!=0){break}c[7094687]=c[7094687]&~(1<>>0<(c[7094690]|0)>>>0){Qc();return 0}R=L+16|0;if((c[R>>2]|0)==(J|0)){c[R>>2]=oa}else{c[L+20>>2]=oa}if((oa|0)==0){break k}}}while(0);if(oa>>>0<(c[7094690]|0)>>>0){Qc();return 0}c[oa+24>>2]=L;J=ma|16;O=c[ca+(J+ba)>>2]|0;do{if((O|0)!=0){if(O>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[oa+16>>2]=O;c[O+24>>2]=oa;break}}}while(0);O=c[ca+(T+J)>>2]|0;if((O|0)==0){break}if(O>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[oa+20>>2]=O;c[O+24>>2]=oa;break}}}while(0);ra=ca+((aa|ma)+ba)|0;sa=aa+K|0}else{ra=da;sa=K}T=ra+4|0;c[T>>2]=c[T>>2]&-2;c[ca+(_+4)>>2]=sa|1;c[ca+(sa+_)>>2]=sa;T=sa>>>3;if(sa>>>0<256>>>0){W=T<<1;Y=28378784+(W<<2)|0;O=c[7094686]|0;L=1<>2]|0;if(!(V>>>0<(c[7094690]|0)>>>0)){ta=V;ua=T;break}Qc();return 0}}while(0);c[ua>>2]=$;c[ta+12>>2]=$;c[ca+(_+8)>>2]=ta;c[ca+(_+12)>>2]=Y;break}W=Z;L=sa>>>8;do{if((L|0)==0){va=0}else{if(sa>>>0>16777215>>>0){va=31;break}O=(L+1048320|0)>>>16&8;aa=L<>>16&4;V=aa<>>16&2;R=14-(T|O|aa)+(V<>>15)|0;va=sa>>>((R+7|0)>>>0)&1|R<<1}}while(0);L=28379048+(va<<2)|0;c[ca+(_+28)>>2]=va;c[ca+(_+20)>>2]=0;c[ca+(_+16)>>2]=0;Y=c[7094687]|0;R=1<>2]=W;c[ca+(_+24)>>2]=L;c[ca+(_+12)>>2]=W;c[ca+(_+8)>>2]=W;break}R=c[L>>2]|0;if((va|0)==31){wa=0}else{wa=25-(va>>>1)|0}l:do{if((c[R+4>>2]&-8|0)==(sa|0)){xa=R}else{L=R;Y=sa<>>31<<2)|0;aa=c[ya>>2]|0;if((aa|0)==0){break}if((c[aa+4>>2]&-8|0)==(sa|0)){xa=aa;break l}else{L=aa;Y=Y<<1}}if(ya>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[ya>>2]=W;c[ca+(_+24)>>2]=L;c[ca+(_+12)>>2]=W;c[ca+(_+8)>>2]=W;break j}}}while(0);R=xa+8|0;Y=c[R>>2]|0;J=c[7094690]|0;if(xa>>>0>>0){Qc();return 0}if(Y>>>0>>0){Qc();return 0}else{c[Y+12>>2]=W;c[R>>2]=W;c[ca+(_+8)>>2]=Y;c[ca+(_+12)>>2]=xa;c[ca+(_+24)>>2]=0;break}}}while(0);n=ca+(la|8)|0;return n|0}}while(0);X=ea;_=28379192;while(1){za=c[_>>2]|0;if(!(za>>>0>X>>>0)){Aa=c[_+4>>2]|0;Ba=za+Aa|0;if(Ba>>>0>X>>>0){break}}_=c[_+8>>2]|0}_=za+(Aa-39)|0;if((_&7|0)==0){Ca=0}else{Ca=-_&7}_=za+(Aa-47+Ca)|0;Z=_>>>0<(ea+16|0)>>>0?X:_;_=Z+8|0;$=ca+8|0;if(($&7|0)==0){Da=0}else{Da=-$&7}$=ba-40-Da|0;c[7094692]=ca+Da;c[7094689]=$;c[ca+(Da+4)>>2]=$|1;c[ca+(ba-36)>>2]=40;c[7094693]=c[4954360];c[Z+4>>2]=27;c[_>>2]=c[7094798];c[_+4>>2]=c[7094799];c[_+8>>2]=c[7094800];c[_+12>>2]=c[7094801];c[7094798]=ca;c[7094799]=ba;c[7094801]=0;c[7094800]=_;_=Z+28|0;c[_>>2]=7;if((Z+32|0)>>>0>>0){$=_;while(1){_=$+4|0;c[_>>2]=7;if(($+8|0)>>>0>>0){$=_}else{break}}}if((Z|0)==(X|0)){break}$=Z-ea|0;_=X+($+4)|0;c[_>>2]=c[_>>2]&-2;c[ea+4>>2]=$|1;c[X+$>>2]=$;_=$>>>3;if($>>>0<256>>>0){K=_<<1;da=28378784+(K<<2)|0;S=c[7094686]|0;j=1<<_;do{if((S&j|0)==0){c[7094686]=S|j;Ea=da;Fa=28378784+(K+2<<2)|0}else{_=28378784+(K+2<<2)|0;Y=c[_>>2]|0;if(!(Y>>>0<(c[7094690]|0)>>>0)){Ea=Y;Fa=_;break}Qc();return 0}}while(0);c[Fa>>2]=ea;c[Ea+12>>2]=ea;c[ea+8>>2]=Ea;c[ea+12>>2]=da;break}K=ea;j=$>>>8;do{if((j|0)==0){Ga=0}else{if($>>>0>16777215>>>0){Ga=31;break}S=(j+1048320|0)>>>16&8;X=j<>>16&4;_=X<>>16&2;Y=14-(Z|S|X)+(_<>>15)|0;Ga=$>>>((Y+7|0)>>>0)&1|Y<<1}}while(0);j=28379048+(Ga<<2)|0;c[ea+28>>2]=Ga;c[ea+20>>2]=0;c[ea+16>>2]=0;da=c[7094687]|0;Y=1<>2]=K;c[ea+24>>2]=j;c[ea+12>>2]=ea;c[ea+8>>2]=ea;break}Y=c[j>>2]|0;if((Ga|0)==31){Ha=0}else{Ha=25-(Ga>>>1)|0}m:do{if((c[Y+4>>2]&-8|0)==($|0)){Ia=Y}else{j=Y;da=$<>>31<<2)|0;X=c[Ja>>2]|0;if((X|0)==0){break}if((c[X+4>>2]&-8|0)==($|0)){Ia=X;break m}else{j=X;da=da<<1}}if(Ja>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[Ja>>2]=K;c[ea+24>>2]=j;c[ea+12>>2]=ea;c[ea+8>>2]=ea;break i}}}while(0);$=Ia+8|0;Y=c[$>>2]|0;da=c[7094690]|0;if(Ia>>>0>>0){Qc();return 0}if(Y>>>0>>0){Qc();return 0}else{c[Y+12>>2]=K;c[$>>2]=K;c[ea+8>>2]=Y;c[ea+12>>2]=Ia;c[ea+24>>2]=0;break}}}while(0);ea=c[7094689]|0;if(!(ea>>>0>o>>>0)){break}Y=ea-o|0;c[7094689]=Y;ea=c[7094692]|0;$=ea;c[7094692]=$+o;c[$+(o+4)>>2]=Y|1;c[ea+4>>2]=o|3;n=ea+8|0;return n|0}}while(0);c[(Fc()|0)>>2]=12;n=0;return n|0}function W_(a){a=a|0;var b=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,J=0,K=0,L=0,M=0,N=0,O=0;if((a|0)==0){return}b=a-8|0;d=b;e=c[7094690]|0;if(b>>>0>>0){Qc()}f=c[a-4>>2]|0;g=f&3;if((g|0)==1){Qc()}h=f&-8;i=a+(h-8)|0;j=i;a:do{if((f&1|0)==0){k=c[b>>2]|0;if((g|0)==0){return}l=-8-k|0;m=a+l|0;n=m;o=k+h|0;if(m>>>0>>0){Qc()}if((n|0)==(c[7094691]|0)){p=a+(h-4)|0;if((c[p>>2]&3|0)!=3){q=n;r=o;break}c[7094688]=o;c[p>>2]=c[p>>2]&-2;c[a+(l+4)>>2]=o|1;c[i>>2]=o;return}p=k>>>3;if(k>>>0<256>>>0){k=c[a+(l+8)>>2]|0;s=c[a+(l+12)>>2]|0;t=28378784+(p<<1<<2)|0;do{if((k|0)!=(t|0)){if(k>>>0>>0){Qc()}if((c[k+12>>2]|0)==(n|0)){break}Qc()}}while(0);if((s|0)==(k|0)){c[7094686]=c[7094686]&~(1<>>0>>0){Qc()}v=s+8|0;if((c[v>>2]|0)==(n|0)){u=v;break}Qc()}}while(0);c[k+12>>2]=s;c[u>>2]=k;q=n;r=o;break}t=m;p=c[a+(l+24)>>2]|0;v=c[a+(l+12)>>2]|0;do{if((v|0)==(t|0)){w=a+(l+20)|0;x=c[w>>2]|0;if((x|0)==0){y=a+(l+16)|0;z=c[y>>2]|0;if((z|0)==0){A=0;break}else{B=z;C=y}}else{B=x;C=w}while(1){w=B+20|0;x=c[w>>2]|0;if((x|0)!=0){B=x;C=w;continue}w=B+16|0;x=c[w>>2]|0;if((x|0)==0){break}else{B=x;C=w}}if(C>>>0>>0){Qc()}else{c[C>>2]=0;A=B;break}}else{w=c[a+(l+8)>>2]|0;if(w>>>0>>0){Qc()}x=w+12|0;if((c[x>>2]|0)!=(t|0)){Qc()}y=v+8|0;if((c[y>>2]|0)==(t|0)){c[x>>2]=v;c[y>>2]=w;A=v;break}else{Qc()}}}while(0);if((p|0)==0){q=n;r=o;break}v=c[a+(l+28)>>2]|0;m=28379048+(v<<2)|0;do{if((t|0)==(c[m>>2]|0)){c[m>>2]=A;if((A|0)!=0){break}c[7094687]=c[7094687]&~(1<>>0<(c[7094690]|0)>>>0){Qc()}k=p+16|0;if((c[k>>2]|0)==(t|0)){c[k>>2]=A}else{c[p+20>>2]=A}if((A|0)==0){q=n;r=o;break a}}}while(0);if(A>>>0<(c[7094690]|0)>>>0){Qc()}c[A+24>>2]=p;t=c[a+(l+16)>>2]|0;do{if((t|0)!=0){if(t>>>0<(c[7094690]|0)>>>0){Qc()}else{c[A+16>>2]=t;c[t+24>>2]=A;break}}}while(0);t=c[a+(l+20)>>2]|0;if((t|0)==0){q=n;r=o;break}if(t>>>0<(c[7094690]|0)>>>0){Qc()}else{c[A+20>>2]=t;c[t+24>>2]=A;q=n;r=o;break}}else{q=d;r=h}}while(0);d=q;if(!(d>>>0>>0)){Qc()}A=a+(h-4)|0;e=c[A>>2]|0;if((e&1|0)==0){Qc()}do{if((e&2|0)==0){if((j|0)==(c[7094692]|0)){B=(c[7094689]|0)+r|0;c[7094689]=B;c[7094692]=q;c[q+4>>2]=B|1;if((q|0)!=(c[7094691]|0)){return}c[7094691]=0;c[7094688]=0;return}if((j|0)==(c[7094691]|0)){B=(c[7094688]|0)+r|0;c[7094688]=B;c[7094691]=q;c[q+4>>2]=B|1;c[d+B>>2]=B;return}B=(e&-8)+r|0;C=e>>>3;b:do{if(e>>>0<256>>>0){u=c[a+h>>2]|0;g=c[a+(h|4)>>2]|0;b=28378784+(C<<1<<2)|0;do{if((u|0)!=(b|0)){if(u>>>0<(c[7094690]|0)>>>0){Qc()}if((c[u+12>>2]|0)==(j|0)){break}Qc()}}while(0);if((g|0)==(u|0)){c[7094686]=c[7094686]&~(1<>>0<(c[7094690]|0)>>>0){Qc()}f=g+8|0;if((c[f>>2]|0)==(j|0)){D=f;break}Qc()}}while(0);c[u+12>>2]=g;c[D>>2]=u}else{b=i;f=c[a+(h+16)>>2]|0;t=c[a+(h|4)>>2]|0;do{if((t|0)==(b|0)){p=a+(h+12)|0;v=c[p>>2]|0;if((v|0)==0){m=a+(h+8)|0;k=c[m>>2]|0;if((k|0)==0){E=0;break}else{F=k;G=m}}else{F=v;G=p}while(1){p=F+20|0;v=c[p>>2]|0;if((v|0)!=0){F=v;G=p;continue}p=F+16|0;v=c[p>>2]|0;if((v|0)==0){break}else{F=v;G=p}}if(G>>>0<(c[7094690]|0)>>>0){Qc()}else{c[G>>2]=0;E=F;break}}else{p=c[a+h>>2]|0;if(p>>>0<(c[7094690]|0)>>>0){Qc()}v=p+12|0;if((c[v>>2]|0)!=(b|0)){Qc()}m=t+8|0;if((c[m>>2]|0)==(b|0)){c[v>>2]=t;c[m>>2]=p;E=t;break}else{Qc()}}}while(0);if((f|0)==0){break}t=c[a+(h+20)>>2]|0;u=28379048+(t<<2)|0;do{if((b|0)==(c[u>>2]|0)){c[u>>2]=E;if((E|0)!=0){break}c[7094687]=c[7094687]&~(1<>>0<(c[7094690]|0)>>>0){Qc()}g=f+16|0;if((c[g>>2]|0)==(b|0)){c[g>>2]=E}else{c[f+20>>2]=E}if((E|0)==0){break b}}}while(0);if(E>>>0<(c[7094690]|0)>>>0){Qc()}c[E+24>>2]=f;b=c[a+(h+8)>>2]|0;do{if((b|0)!=0){if(b>>>0<(c[7094690]|0)>>>0){Qc()}else{c[E+16>>2]=b;c[b+24>>2]=E;break}}}while(0);b=c[a+(h+12)>>2]|0;if((b|0)==0){break}if(b>>>0<(c[7094690]|0)>>>0){Qc()}else{c[E+20>>2]=b;c[b+24>>2]=E;break}}}while(0);c[q+4>>2]=B|1;c[d+B>>2]=B;if((q|0)!=(c[7094691]|0)){H=B;break}c[7094688]=B;return}else{c[A>>2]=e&-2;c[q+4>>2]=r|1;c[d+r>>2]=r;H=r}}while(0);r=H>>>3;if(H>>>0<256>>>0){d=r<<1;e=28378784+(d<<2)|0;A=c[7094686]|0;E=1<>2]|0;if(!(h>>>0<(c[7094690]|0)>>>0)){I=h;J=r;break}Qc()}}while(0);c[J>>2]=q;c[I+12>>2]=q;c[q+8>>2]=I;c[q+12>>2]=e;return}e=q;I=H>>>8;do{if((I|0)==0){K=0}else{if(H>>>0>16777215>>>0){K=31;break}J=(I+1048320|0)>>>16&8;d=I<>>16&4;A=d<>>16&2;r=14-(E|J|d)+(A<>>15)|0;K=H>>>((r+7|0)>>>0)&1|r<<1}}while(0);I=28379048+(K<<2)|0;c[q+28>>2]=K;c[q+20>>2]=0;c[q+16>>2]=0;r=c[7094687]|0;d=1<>2]=e;c[q+24>>2]=I;c[q+12>>2]=q;c[q+8>>2]=q}else{A=c[I>>2]|0;if((K|0)==31){L=0}else{L=25-(K>>>1)|0}d:do{if((c[A+4>>2]&-8|0)==(H|0)){M=A}else{J=A;E=H<>>31<<2)|0;h=c[N>>2]|0;if((h|0)==0){break}if((c[h+4>>2]&-8|0)==(H|0)){M=h;break d}else{J=h;E=E<<1}}if(N>>>0<(c[7094690]|0)>>>0){Qc()}else{c[N>>2]=e;c[q+24>>2]=J;c[q+12>>2]=q;c[q+8>>2]=q;break c}}}while(0);A=M+8|0;B=c[A>>2]|0;E=c[7094690]|0;if(M>>>0>>0){Qc()}if(B>>>0>>0){Qc()}else{c[B+12>>2]=e;c[A>>2]=e;c[q+8>>2]=B;c[q+12>>2]=M;c[q+24>>2]=0;break}}}while(0);q=(c[7094694]|0)-1|0;c[7094694]=q;if((q|0)==0){O=28379200}else{return}while(1){q=c[O>>2]|0;if((q|0)==0){break}else{O=q+8|0}}c[7094694]=-1;return}function X_(a,b){a=a|0;b=b|0;var d=0,e=0;do{if((a|0)==0){d=0}else{e=da(b,a)|0;if(!((b|a)>>>0>65535>>>0)){d=e;break}d=((e>>>0)/(a>>>0)|0|0)==(b|0)?e:-1}}while(0);b=V_(d)|0;if((b|0)==0){return b|0}if((c[b-4>>2]&3|0)==0){return b|0}n$(b|0,0,d|0)|0;return b|0}function Y_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if((a|0)==0){d=V_(b)|0;return d|0}if(b>>>0>4294967231>>>0){c[(Fc()|0)>>2]=12;d=0;return d|0}if(b>>>0<11>>>0){e=16}else{e=b+11&-8}f=Z_(a-8|0,e)|0;if((f|0)!=0){d=f+8|0;return d|0}f=V_(b)|0;if((f|0)==0){d=0;return d|0}e=c[a-4>>2]|0;g=(e&-8)-((e&3|0)==0?8:4)|0;m$(f|0,a|0,g>>>0>>0?g:b)|0;W_(a);d=f;return d|0}function Z_(a,b){a=a|0;b=b|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;d=a+4|0;e=c[d>>2]|0;f=e&-8;g=a;h=g+f|0;i=h;j=c[7094690]|0;if(g>>>0>>0){Qc();return 0}k=e&3;if(!((k|0)!=1&g>>>0>>0)){Qc();return 0}l=g+(f|4)|0;m=c[l>>2]|0;if((m&1|0)==0){Qc();return 0}if((k|0)==0){if(b>>>0<256>>>0){n=0;return n|0}do{if(!(f>>>0<(b+4|0)>>>0)){if((f-b|0)>>>0>c[4954358]<<1>>>0){break}else{n=a}return n|0}}while(0);n=0;return n|0}if(!(f>>>0>>0)){k=f-b|0;if(!(k>>>0>15>>>0)){n=a;return n|0}c[d>>2]=e&1|b|2;c[g+(b+4)>>2]=k|3;c[l>>2]=c[l>>2]|1;__(g+b|0,k);n=a;return n|0}if((i|0)==(c[7094692]|0)){k=(c[7094689]|0)+f|0;if(!(k>>>0>b>>>0)){n=0;return n|0}l=k-b|0;c[d>>2]=e&1|b|2;c[g+(b+4)>>2]=l|1;c[7094692]=g+b;c[7094689]=l;n=a;return n|0}if((i|0)==(c[7094691]|0)){l=(c[7094688]|0)+f|0;if(l>>>0>>0){n=0;return n|0}k=l-b|0;if(k>>>0>15>>>0){c[d>>2]=e&1|b|2;c[g+(b+4)>>2]=k|1;c[g+l>>2]=k;o=g+(l+4)|0;c[o>>2]=c[o>>2]&-2;p=g+b|0;q=k}else{c[d>>2]=e&1|l|2;e=g+(l+4)|0;c[e>>2]=c[e>>2]|1;p=0;q=0}c[7094688]=q;c[7094691]=p;n=a;return n|0}if((m&2|0)!=0){n=0;return n|0}p=(m&-8)+f|0;if(p>>>0>>0){n=0;return n|0}q=p-b|0;e=m>>>3;a:do{if(m>>>0<256>>>0){l=c[g+(f+8)>>2]|0;k=c[g+(f+12)>>2]|0;o=28378784+(e<<1<<2)|0;do{if((l|0)!=(o|0)){if(l>>>0>>0){Qc();return 0}if((c[l+12>>2]|0)==(i|0)){break}Qc();return 0}}while(0);if((k|0)==(l|0)){c[7094686]=c[7094686]&~(1<>>0>>0){Qc();return 0}s=k+8|0;if((c[s>>2]|0)==(i|0)){r=s;break}Qc();return 0}}while(0);c[l+12>>2]=k;c[r>>2]=l}else{o=h;s=c[g+(f+24)>>2]|0;t=c[g+(f+12)>>2]|0;do{if((t|0)==(o|0)){u=g+(f+20)|0;v=c[u>>2]|0;if((v|0)==0){w=g+(f+16)|0;x=c[w>>2]|0;if((x|0)==0){y=0;break}else{z=x;A=w}}else{z=v;A=u}while(1){u=z+20|0;v=c[u>>2]|0;if((v|0)!=0){z=v;A=u;continue}u=z+16|0;v=c[u>>2]|0;if((v|0)==0){break}else{z=v;A=u}}if(A>>>0>>0){Qc();return 0}else{c[A>>2]=0;y=z;break}}else{u=c[g+(f+8)>>2]|0;if(u>>>0>>0){Qc();return 0}v=u+12|0;if((c[v>>2]|0)!=(o|0)){Qc();return 0}w=t+8|0;if((c[w>>2]|0)==(o|0)){c[v>>2]=t;c[w>>2]=u;y=t;break}else{Qc();return 0}}}while(0);if((s|0)==0){break}t=c[g+(f+28)>>2]|0;l=28379048+(t<<2)|0;do{if((o|0)==(c[l>>2]|0)){c[l>>2]=y;if((y|0)!=0){break}c[7094687]=c[7094687]&~(1<>>0<(c[7094690]|0)>>>0){Qc();return 0}k=s+16|0;if((c[k>>2]|0)==(o|0)){c[k>>2]=y}else{c[s+20>>2]=y}if((y|0)==0){break a}}}while(0);if(y>>>0<(c[7094690]|0)>>>0){Qc();return 0}c[y+24>>2]=s;o=c[g+(f+16)>>2]|0;do{if((o|0)!=0){if(o>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[y+16>>2]=o;c[o+24>>2]=y;break}}}while(0);o=c[g+(f+20)>>2]|0;if((o|0)==0){break}if(o>>>0<(c[7094690]|0)>>>0){Qc();return 0}else{c[y+20>>2]=o;c[o+24>>2]=y;break}}}while(0);if(q>>>0<16>>>0){c[d>>2]=p|c[d>>2]&1|2;y=g+(p|4)|0;c[y>>2]=c[y>>2]|1;n=a;return n|0}else{c[d>>2]=c[d>>2]&1|b|2;c[g+(b+4)>>2]=q|3;d=g+(p|4)|0;c[d>>2]=c[d>>2]|1;__(g+b|0,q);n=a;return n|0}return 0}function __(a,b){a=a|0;b=b|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,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;d=a;e=d+b|0;f=e;g=c[a+4>>2]|0;a:do{if((g&1|0)==0){h=c[a>>2]|0;if((g&3|0)==0){return}i=d+(-h|0)|0;j=i;k=h+b|0;l=c[7094690]|0;if(i>>>0>>0){Qc()}if((j|0)==(c[7094691]|0)){m=d+(b+4)|0;if((c[m>>2]&3|0)!=3){n=j;o=k;break}c[7094688]=k;c[m>>2]=c[m>>2]&-2;c[d+(4-h)>>2]=k|1;c[e>>2]=k;return}m=h>>>3;if(h>>>0<256>>>0){p=c[d+(8-h)>>2]|0;q=c[d+(12-h)>>2]|0;r=28378784+(m<<1<<2)|0;do{if((p|0)!=(r|0)){if(p>>>0>>0){Qc()}if((c[p+12>>2]|0)==(j|0)){break}Qc()}}while(0);if((q|0)==(p|0)){c[7094686]=c[7094686]&~(1<>>0>>0){Qc()}t=q+8|0;if((c[t>>2]|0)==(j|0)){s=t;break}Qc()}}while(0);c[p+12>>2]=q;c[s>>2]=p;n=j;o=k;break}r=i;m=c[d+(24-h)>>2]|0;t=c[d+(12-h)>>2]|0;do{if((t|0)==(r|0)){u=16-h|0;v=d+(u+4)|0;w=c[v>>2]|0;if((w|0)==0){x=d+u|0;u=c[x>>2]|0;if((u|0)==0){y=0;break}else{z=u;A=x}}else{z=w;A=v}while(1){v=z+20|0;w=c[v>>2]|0;if((w|0)!=0){z=w;A=v;continue}v=z+16|0;w=c[v>>2]|0;if((w|0)==0){break}else{z=w;A=v}}if(A>>>0>>0){Qc()}else{c[A>>2]=0;y=z;break}}else{v=c[d+(8-h)>>2]|0;if(v>>>0>>0){Qc()}w=v+12|0;if((c[w>>2]|0)!=(r|0)){Qc()}x=t+8|0;if((c[x>>2]|0)==(r|0)){c[w>>2]=t;c[x>>2]=v;y=t;break}else{Qc()}}}while(0);if((m|0)==0){n=j;o=k;break}t=c[d+(28-h)>>2]|0;l=28379048+(t<<2)|0;do{if((r|0)==(c[l>>2]|0)){c[l>>2]=y;if((y|0)!=0){break}c[7094687]=c[7094687]&~(1<>>0<(c[7094690]|0)>>>0){Qc()}i=m+16|0;if((c[i>>2]|0)==(r|0)){c[i>>2]=y}else{c[m+20>>2]=y}if((y|0)==0){n=j;o=k;break a}}}while(0);if(y>>>0<(c[7094690]|0)>>>0){Qc()}c[y+24>>2]=m;r=16-h|0;t=c[d+r>>2]|0;do{if((t|0)!=0){if(t>>>0<(c[7094690]|0)>>>0){Qc()}else{c[y+16>>2]=t;c[t+24>>2]=y;break}}}while(0);t=c[d+(r+4)>>2]|0;if((t|0)==0){n=j;o=k;break}if(t>>>0<(c[7094690]|0)>>>0){Qc()}else{c[y+20>>2]=t;c[t+24>>2]=y;n=j;o=k;break}}else{n=a;o=b}}while(0);a=c[7094690]|0;if(e>>>0>>0){Qc()}y=d+(b+4)|0;z=c[y>>2]|0;do{if((z&2|0)==0){if((f|0)==(c[7094692]|0)){A=(c[7094689]|0)+o|0;c[7094689]=A;c[7094692]=n;c[n+4>>2]=A|1;if((n|0)!=(c[7094691]|0)){return}c[7094691]=0;c[7094688]=0;return}if((f|0)==(c[7094691]|0)){A=(c[7094688]|0)+o|0;c[7094688]=A;c[7094691]=n;c[n+4>>2]=A|1;c[n+A>>2]=A;return}A=(z&-8)+o|0;s=z>>>3;b:do{if(z>>>0<256>>>0){g=c[d+(b+8)>>2]|0;t=c[d+(b+12)>>2]|0;h=28378784+(s<<1<<2)|0;do{if((g|0)!=(h|0)){if(g>>>0>>0){Qc()}if((c[g+12>>2]|0)==(f|0)){break}Qc()}}while(0);if((t|0)==(g|0)){c[7094686]=c[7094686]&~(1<>>0>>0){Qc()}m=t+8|0;if((c[m>>2]|0)==(f|0)){B=m;break}Qc()}}while(0);c[g+12>>2]=t;c[B>>2]=g}else{h=e;m=c[d+(b+24)>>2]|0;l=c[d+(b+12)>>2]|0;do{if((l|0)==(h|0)){i=d+(b+20)|0;p=c[i>>2]|0;if((p|0)==0){q=d+(b+16)|0;v=c[q>>2]|0;if((v|0)==0){C=0;break}else{D=v;E=q}}else{D=p;E=i}while(1){i=D+20|0;p=c[i>>2]|0;if((p|0)!=0){D=p;E=i;continue}i=D+16|0;p=c[i>>2]|0;if((p|0)==0){break}else{D=p;E=i}}if(E>>>0>>0){Qc()}else{c[E>>2]=0;C=D;break}}else{i=c[d+(b+8)>>2]|0;if(i>>>0>>0){Qc()}p=i+12|0;if((c[p>>2]|0)!=(h|0)){Qc()}q=l+8|0;if((c[q>>2]|0)==(h|0)){c[p>>2]=l;c[q>>2]=i;C=l;break}else{Qc()}}}while(0);if((m|0)==0){break}l=c[d+(b+28)>>2]|0;g=28379048+(l<<2)|0;do{if((h|0)==(c[g>>2]|0)){c[g>>2]=C;if((C|0)!=0){break}c[7094687]=c[7094687]&~(1<>>0<(c[7094690]|0)>>>0){Qc()}t=m+16|0;if((c[t>>2]|0)==(h|0)){c[t>>2]=C}else{c[m+20>>2]=C}if((C|0)==0){break b}}}while(0);if(C>>>0<(c[7094690]|0)>>>0){Qc()}c[C+24>>2]=m;h=c[d+(b+16)>>2]|0;do{if((h|0)!=0){if(h>>>0<(c[7094690]|0)>>>0){Qc()}else{c[C+16>>2]=h;c[h+24>>2]=C;break}}}while(0);h=c[d+(b+20)>>2]|0;if((h|0)==0){break}if(h>>>0<(c[7094690]|0)>>>0){Qc()}else{c[C+20>>2]=h;c[h+24>>2]=C;break}}}while(0);c[n+4>>2]=A|1;c[n+A>>2]=A;if((n|0)!=(c[7094691]|0)){F=A;break}c[7094688]=A;return}else{c[y>>2]=z&-2;c[n+4>>2]=o|1;c[n+o>>2]=o;F=o}}while(0);o=F>>>3;if(F>>>0<256>>>0){z=o<<1;y=28378784+(z<<2)|0;C=c[7094686]|0;b=1<>2]|0;if(!(d>>>0<(c[7094690]|0)>>>0)){G=d;H=o;break}Qc()}}while(0);c[H>>2]=n;c[G+12>>2]=n;c[n+8>>2]=G;c[n+12>>2]=y;return}y=n;G=F>>>8;do{if((G|0)==0){I=0}else{if(F>>>0>16777215>>>0){I=31;break}H=(G+1048320|0)>>>16&8;z=G<>>16&4;C=z<>>16&2;o=14-(b|H|z)+(C<>>15)|0;I=F>>>((o+7|0)>>>0)&1|o<<1}}while(0);G=28379048+(I<<2)|0;c[n+28>>2]=I;c[n+20>>2]=0;c[n+16>>2]=0;o=c[7094687]|0;z=1<>2]=y;c[n+24>>2]=G;c[n+12>>2]=n;c[n+8>>2]=n;return}z=c[G>>2]|0;if((I|0)==31){J=0}else{J=25-(I>>>1)|0}c:do{if((c[z+4>>2]&-8|0)==(F|0)){K=z}else{I=z;G=F<>>31<<2)|0;o=c[L>>2]|0;if((o|0)==0){break}if((c[o+4>>2]&-8|0)==(F|0)){K=o;break c}else{I=o;G=G<<1}}if(L>>>0<(c[7094690]|0)>>>0){Qc()}c[L>>2]=y;c[n+24>>2]=I;c[n+12>>2]=n;c[n+8>>2]=n;return}}while(0);L=K+8|0;F=c[L>>2]|0;J=c[7094690]|0;if(K>>>0>>0){Qc()}if(F>>>0>>0){Qc()}c[F+12>>2]=y;c[L>>2]=y;c[n+8>>2]=F;c[n+12>>2]=K;c[n+24>>2]=0;return}function $_(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=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,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,Q=0,R=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0.0,fa=0.0,ga=0,ha=0,ia=0.0,ja=0.0,ka=0,la=0.0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0.0,va=0,wa=0.0,xa=0,ya=0.0,za=0,Aa=0,Ba=0,Ca=0.0,Da=0,Ea=0.0,Fa=0.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,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,yb=0,zb=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=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0.0,vc=0,wc=0,xc=0.0,yc=0.0,zc=0.0,Ac=0.0,Bc=0.0,Cc=0.0,Dc=0.0,Ec=0,Gc=0,Hc=0.0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0;g=i;i=i+512|0;h=g|0;if((e|0)==2){j=-1074;k=53}else if((e|0)==1){j=-1074;k=53}else if((e|0)==0){j=-149;k=24}else{l=0.0;i=g;return+l}e=b+4|0;m=b+100|0;do{n=c[e>>2]|0;if(n>>>0<(c[m>>2]|0)>>>0){c[e>>2]=n+1;o=d[n]|0}else{o=c$(b)|0}}while((xb(o|0)|0)!=0);do{if((o|0)==45|(o|0)==43){n=1-(((o|0)==45)<<1)|0;p=c[e>>2]|0;if(p>>>0<(c[m>>2]|0)>>>0){c[e>>2]=p+1;q=d[p]|0;r=n;break}else{q=c$(b)|0;r=n;break}}else{q=o;r=1}}while(0);o=0;n=q;while(1){if((n|32|0)!=(a[61528+o|0]|0)){u=o;v=n;break}do{if(o>>>0<7>>>0){q=c[e>>2]|0;if(q>>>0<(c[m>>2]|0)>>>0){c[e>>2]=q+1;w=d[q]|0;break}else{w=c$(b)|0;break}}else{w=n}}while(0);q=o+1|0;if(q>>>0<8>>>0){o=q;n=w}else{u=q;v=w;break}}do{if((u|0)==3){x=23}else if((u|0)!=8){w=(f|0)==0;if(!(u>>>0<4>>>0|w)){if((u|0)==8){break}else{x=23;break}}a:do{if((u|0)==0){n=0;o=v;while(1){if((o|32|0)!=(a[158864+n|0]|0)){y=o;z=n;break a}do{if(n>>>0<2>>>0){q=c[e>>2]|0;if(q>>>0<(c[m>>2]|0)>>>0){c[e>>2]=q+1;A=d[q]|0;break}else{A=c$(b)|0;break}}else{A=o}}while(0);q=n+1|0;if(q>>>0<3>>>0){n=q;o=A}else{y=A;z=q;break}}}else{y=v;z=u}}while(0);if((z|0)==0){do{if((y|0)==48){o=c[e>>2]|0;if(o>>>0<(c[m>>2]|0)>>>0){c[e>>2]=o+1;B=d[o]|0}else{B=c$(b)|0}if((B|32|0)!=120){if((c[m>>2]|0)==0){C=48;break}c[e>>2]=(c[e>>2]|0)-1;C=48;break}o=c[e>>2]|0;if(o>>>0<(c[m>>2]|0)>>>0){c[e>>2]=o+1;D=d[o]|0;E=0}else{D=c$(b)|0;E=0}while(1){if((D|0)==46){x=70;break}else if((D|0)!=48){F=D;G=0;I=0;J=0;K=0;L=E;M=0;N=0;O=1.0;P=0.0;Q=0;break}o=c[e>>2]|0;if(o>>>0<(c[m>>2]|0)>>>0){c[e>>2]=o+1;D=d[o]|0;E=1;continue}else{D=c$(b)|0;E=1;continue}}b:do{if((x|0)==70){o=c[e>>2]|0;if(o>>>0<(c[m>>2]|0)>>>0){c[e>>2]=o+1;R=d[o]|0}else{R=c$(b)|0}if((R|0)==48){T=-1;U=-1}else{F=R;G=0;I=0;J=0;K=0;L=E;M=1;N=0;O=1.0;P=0.0;Q=0;break}while(1){o=c[e>>2]|0;if(o>>>0<(c[m>>2]|0)>>>0){c[e>>2]=o+1;V=d[o]|0}else{V=c$(b)|0}if((V|0)!=48){F=V;G=0;I=0;J=T;K=U;L=1;M=1;N=0;O=1.0;P=0.0;Q=0;break b}o=z$(U,T,-1,-1)|0;T=H;U=o}}}while(0);c:while(1){o=F-48|0;do{if(o>>>0<10>>>0){W=o;x=84}else{n=F|32;q=(F|0)==46;if(!((n-97|0)>>>0<6>>>0|q)){X=F;break c}if(q){if((M|0)==0){Y=G;Z=I;_=G;$=I;aa=L;ba=1;ca=N;ea=O;fa=P;ga=Q;break}else{X=46;break c}}else{W=(F|0)>57?n-87|0:o;x=84;break}}}while(0);if((x|0)==84){x=0;o=0;do{if((G|0)<(o|0)|(G|0)==(o|0)&I>>>0<8>>>0){ha=N;ia=O;ja=P;ka=W+(Q<<4)|0}else{n=0;if((G|0)<(n|0)|(G|0)==(n|0)&I>>>0<14>>>0){la=O*.0625;ha=N;ia=la;ja=P+la*+(W|0);ka=Q;break}if(!((W|0)!=0&(N|0)==0)){ha=N;ia=O;ja=P;ka=Q;break}ha=1;ia=O;ja=P+O*.5;ka=Q}}while(0);o=z$(I,G,1,0)|0;Y=H;Z=o;_=J;$=K;aa=1;ba=M;ca=ha;ea=ia;fa=ja;ga=ka}o=c[e>>2]|0;if(o>>>0<(c[m>>2]|0)>>>0){c[e>>2]=o+1;F=d[o]|0;G=Y;I=Z;J=_;K=$;L=aa;M=ba;N=ca;O=ea;P=fa;Q=ga;continue}else{F=c$(b)|0;G=Y;I=Z;J=_;K=$;L=aa;M=ba;N=ca;O=ea;P=fa;Q=ga;continue}}if((L|0)==0){o=(c[m>>2]|0)==0;if(!o){c[e>>2]=(c[e>>2]|0)-1}do{if(w){b$(b,0)}else{if(o){break}n=c[e>>2]|0;c[e>>2]=n-1;if((M|0)==0){break}c[e>>2]=n-2}}while(0);l=+(r|0)*0.0;i=g;return+l}o=(M|0)==0;n=o?I:K;q=o?G:J;o=0;if((G|0)<(o|0)|(G|0)==(o|0)&I>>>0<8>>>0){o=Q;p=G;ma=I;while(1){na=o<<4;oa=z$(ma,p,1,0)|0;pa=H;qa=0;if((pa|0)<(qa|0)|(pa|0)==(qa|0)&oa>>>0<8>>>0){o=na;p=pa;ma=oa}else{ra=na;break}}}else{ra=Q}do{if((X|32|0)==112){ma=a$(b,f)|0;p=H;if(!((ma|0)==0&(p|0)==(-2147483648|0))){sa=p;ta=ma;break}if(w){b$(b,0);l=0.0;i=g;return+l}else{if((c[m>>2]|0)==0){sa=0;ta=0;break}c[e>>2]=(c[e>>2]|0)-1;sa=0;ta=0;break}}else{if((c[m>>2]|0)==0){sa=0;ta=0;break}c[e>>2]=(c[e>>2]|0)-1;sa=0;ta=0}}while(0);ma=z$(n<<2|0>>>30,q<<2|n>>>30,-32,-1)|0;p=z$(ma,H,ta,sa)|0;ma=H;if((ra|0)==0){l=+(r|0)*0.0;i=g;return+l}o=0;if((ma|0)>(o|0)|(ma|0)==(o|0)&p>>>0>(-j|0)>>>0){c[(Fc()|0)>>2]=34;l=+(r|0)*1.7976931348623157e+308*1.7976931348623157e+308;i=g;return+l}o=j-106|0;na=(o|0)<0|0?-1:0;if((ma|0)<(na|0)|(ma|0)==(na|0)&p>>>0>>0){c[(Fc()|0)>>2]=34;l=+(r|0)*2.2250738585072014e-308*2.2250738585072014e-308;i=g;return+l}if((ra|0)>-1){o=ra;la=P;na=ma;oa=p;while(1){pa=o<<1;if(la<.5){ua=la;va=pa}else{ua=la+-1.0;va=pa|1}wa=la+ua;pa=z$(oa,na,-1,-1)|0;qa=H;if((va|0)>-1){o=va;la=wa;na=qa;oa=pa}else{xa=va;ya=wa;za=qa;Aa=pa;break}}}else{xa=ra;ya=P;za=ma;Aa=p}oa=0;na=A$(32,0,j,(j|0)<0|0?-1:0)|0;o=z$(Aa,za,na,H)|0;na=H;if((oa|0)>(na|0)|(oa|0)==(na|0)&k>>>0>o>>>0){na=o;Ba=(na|0)<0?0:na}else{Ba=k}do{if((Ba|0)<53){la=+(r|0);wa=+Yb(+(+d$(1.0,84-Ba|0)),+la);if(!((Ba|0)<32&ya!=0.0)){Ca=ya;Da=xa;Ea=wa;Fa=la;break}na=xa&1;Ca=(na|0)==0?0.0:ya;Da=(na^1)+xa|0;Ea=wa;Fa=la}else{Ca=ya;Da=xa;Ea=0.0;Fa=+(r|0)}}while(0);la=Fa*Ca+(Ea+Fa*+(Da>>>0>>>0))-Ea;if(!(la!=0.0)){c[(Fc()|0)>>2]=34}l=+e$(la,Aa);i=g;return+l}else{C=y}}while(0);p=j+k|0;ma=-p|0;na=C;o=0;while(1){if((na|0)==46){x=139;break}else if((na|0)!=48){Ga=na;Ha=0;Ia=o;Ja=0;Ka=0;break}oa=c[e>>2]|0;if(oa>>>0<(c[m>>2]|0)>>>0){c[e>>2]=oa+1;na=d[oa]|0;o=1;continue}else{na=c$(b)|0;o=1;continue}}d:do{if((x|0)==139){na=c[e>>2]|0;if(na>>>0<(c[m>>2]|0)>>>0){c[e>>2]=na+1;La=d[na]|0}else{La=c$(b)|0}if((La|0)==48){Ma=-1;Na=-1}else{Ga=La;Ha=1;Ia=o;Ja=0;Ka=0;break}while(1){na=c[e>>2]|0;if(na>>>0<(c[m>>2]|0)>>>0){c[e>>2]=na+1;Oa=d[na]|0}else{Oa=c$(b)|0}if((Oa|0)!=48){Ga=Oa;Ha=1;Ia=1;Ja=Ma;Ka=Na;break d}na=z$(Na,Ma,-1,-1)|0;Ma=H;Na=na}}}while(0);o=h|0;c[o>>2]=0;na=Ga-48|0;oa=(Ga|0)==46;e:do{if(na>>>0<10>>>0|oa){n=h+496|0;q=Ja;pa=Ka;qa=0;Pa=0;Qa=0;Ra=Ia;Sa=Ha;Ta=0;Ua=0;Va=Ga;Wa=na;Xa=oa;while(1){do{if(Xa){if((Sa|0)==0){Ya=Ua;Za=Ta;_a=1;$a=Ra;ab=Qa;bb=qa;cb=Pa;db=qa;eb=Pa}else{fb=q;gb=pa;hb=qa;ib=Pa;jb=Qa;kb=Ra;lb=Ta;mb=Ua;nb=Va;break e}}else{ob=z$(Pa,qa,1,0)|0;pb=H;qb=(Va|0)!=48;if((Ta|0)>=125){if(!qb){Ya=Ua;Za=Ta;_a=Sa;$a=Ra;ab=Qa;bb=pb;cb=ob;db=q;eb=pa;break}c[n>>2]=c[n>>2]|1;Ya=Ua;Za=Ta;_a=Sa;$a=Ra;ab=Qa;bb=pb;cb=ob;db=q;eb=pa;break}rb=h+(Ta<<2)|0;if((Ua|0)==0){sb=Wa}else{sb=Va-48+((c[rb>>2]|0)*10|0)|0}c[rb>>2]=sb;rb=Ua+1|0;tb=(rb|0)==9;Ya=tb?0:rb;Za=(tb&1)+Ta|0;_a=Sa;$a=1;ab=qb?ob:Qa;bb=pb;cb=ob;db=q;eb=pa}}while(0);ob=c[e>>2]|0;if(ob>>>0<(c[m>>2]|0)>>>0){c[e>>2]=ob+1;ub=d[ob]|0}else{ub=c$(b)|0}ob=ub-48|0;pb=(ub|0)==46;if(ob>>>0<10>>>0|pb){q=db;pa=eb;qa=bb;Pa=cb;Qa=ab;Ra=$a;Sa=_a;Ta=Za;Ua=Ya;Va=ub;Wa=ob;Xa=pb}else{vb=db;wb=eb;yb=bb;zb=cb;Ab=ab;Bb=$a;Cb=_a;Db=Za;Eb=Ya;Fb=ub;x=162;break}}}else{vb=Ja;wb=Ka;yb=0;zb=0;Ab=0;Bb=Ia;Cb=Ha;Db=0;Eb=0;Fb=Ga;x=162}}while(0);if((x|0)==162){oa=(Cb|0)==0;fb=oa?yb:vb;gb=oa?zb:wb;hb=yb;ib=zb;jb=Ab;kb=Bb;lb=Db;mb=Eb;nb=Fb}oa=(kb|0)!=0;do{if(oa){if((nb|32|0)!=101){x=171;break}na=a$(b,f)|0;Xa=H;do{if((na|0)==0&(Xa|0)==(-2147483648|0)){if(w){b$(b,0);l=0.0;i=g;return+l}else{if((c[m>>2]|0)==0){Gb=0;Hb=0;break}c[e>>2]=(c[e>>2]|0)-1;Gb=0;Hb=0;break}}else{Gb=Xa;Hb=na}}while(0);na=z$(Hb,Gb,gb,fb)|0;Ib=H;Jb=na}else{x=171}}while(0);do{if((x|0)==171){if(!((nb|0)>-1)){Ib=fb;Jb=gb;break}if((c[m>>2]|0)==0){Ib=fb;Jb=gb;break}c[e>>2]=(c[e>>2]|0)-1;Ib=fb;Jb=gb}}while(0);if(!oa){c[(Fc()|0)>>2]=22;b$(b,0);l=0.0;i=g;return+l}na=c[o>>2]|0;if((na|0)==0){l=+(r|0)*0.0;i=g;return+l}Xa=0;do{if((Jb|0)==(ib|0)&(Ib|0)==(hb|0)&((hb|0)<(Xa|0)|(hb|0)==(Xa|0)&ib>>>0<10>>>0)){if(!(k>>>0>30>>>0)){if((na>>>(k>>>0)|0)!=0){break}}l=+(r|0)*+(na>>>0>>>0);i=g;return+l}}while(0);na=(j|0)/-2|0;Xa=(na|0)<0|0?-1:0;if((Ib|0)>(Xa|0)|(Ib|0)==(Xa|0)&Jb>>>0>na>>>0){c[(Fc()|0)>>2]=34;l=+(r|0)*1.7976931348623157e+308*1.7976931348623157e+308;i=g;return+l}na=j-106|0;Xa=(na|0)<0|0?-1:0;if((Ib|0)<(Xa|0)|(Ib|0)==(Xa|0)&Jb>>>0>>0){c[(Fc()|0)>>2]=34;l=+(r|0)*2.2250738585072014e-308*2.2250738585072014e-308;i=g;return+l}if((mb|0)==0){Kb=lb}else{if((mb|0)<9){na=h+(lb<<2)|0;Xa=mb;oa=c[na>>2]|0;do{oa=oa*10|0;Xa=Xa+1|0;}while((Xa|0)<9);c[na>>2]=oa}Kb=lb+1|0}Xa=Jb;do{if((jb|0)<9){if(!((jb|0)<=(Xa|0)&(Xa|0)<18)){break}if((Xa|0)==9){l=+(r|0)*+((c[o>>2]|0)>>>0>>>0);i=g;return+l}if((Xa|0)<9){l=+(r|0)*+((c[o>>2]|0)>>>0>>>0)/+(c[31272+(8-Xa<<2)>>2]|0);i=g;return+l}Wa=k+27+(Xa*-3|0)|0;Va=c[o>>2]|0;if((Wa|0)<=30){if((Va>>>(Wa>>>0)|0)!=0){break}}l=+(r|0)*+(Va>>>0>>>0)*+(c[31272+(Xa-10<<2)>>2]|0);i=g;return+l}}while(0);o=(Xa|0)%9|0;if((o|0)==0){Lb=0;Mb=Kb;Nb=0;Ob=Xa}else{oa=(Xa|0)>-1?o:o+9|0;o=c[31272+(8-oa<<2)>>2]|0;do{if((Kb|0)==0){Pb=0;Qb=0;Rb=Xa}else{na=1e9/(o|0)|0;Va=Xa;Wa=0;Ua=0;Ta=0;while(1){Sa=h+(Ua<<2)|0;Ra=c[Sa>>2]|0;Qa=((Ra>>>0)/(o>>>0)|0)+Ta|0;c[Sa>>2]=Qa;Sb=da((Ra>>>0)%(o>>>0)|0,na)|0;Ra=Ua+1|0;if((Ua|0)==(Wa|0)&(Qa|0)==0){Tb=Ra&127;Ub=Va-9|0}else{Tb=Wa;Ub=Va}if((Ra|0)==(Kb|0)){break}else{Va=Ub;Wa=Tb;Ua=Ra;Ta=Sb}}if((Sb|0)==0){Pb=Kb;Qb=Tb;Rb=Ub;break}c[h+(Kb<<2)>>2]=Sb;Pb=Kb+1|0;Qb=Tb;Rb=Ub}}while(0);Lb=Qb;Mb=Pb;Nb=0;Ob=9-oa+Rb|0}f:while(1){o=h+(Lb<<2)|0;if((Ob|0)<18){Xa=Mb;Ta=Nb;while(1){Ua=0;Wa=Xa+127|0;Va=Xa;while(1){na=Wa&127;Ra=h+(na<<2)|0;Qa=c[Ra>>2]|0;Sa=z$(Qa<<29|0>>>3,0<<29|Qa>>>3,Ua,0)|0;Qa=H;Pa=0;if(Qa>>>0>Pa>>>0|Qa>>>0==Pa>>>0&Sa>>>0>1e9>>>0){Pa=J$(Sa,Qa,1e9,0)|0;qa=K$(Sa,Qa,1e9,0)|0;Vb=Pa;Wb=qa}else{Vb=0;Wb=Sa}c[Ra>>2]=Wb;Ra=(na|0)==(Lb|0);if((na|0)!=(Va+127&127|0)|Ra){Xb=Va}else{Xb=(Wb|0)==0?na:Va}if(Ra){break}else{Ua=Vb;Wa=na-1|0;Va=Xb}}Va=Ta-29|0;if((Vb|0)==0){Xa=Xb;Ta=Va}else{Zb=Va;_b=Xb;$b=Vb;break}}}else{if((Ob|0)==18){ac=Mb;bc=Nb}else{cc=Lb;dc=Mb;ec=Nb;fc=Ob;break}while(1){if(!((c[o>>2]|0)>>>0<9007199>>>0)){cc=Lb;dc=ac;ec=bc;fc=18;break f}Ta=0;Xa=ac+127|0;Va=ac;while(1){Wa=Xa&127;Ua=h+(Wa<<2)|0;na=c[Ua>>2]|0;Ra=z$(na<<29|0>>>3,0<<29|na>>>3,Ta,0)|0;na=H;Sa=0;if(na>>>0>Sa>>>0|na>>>0==Sa>>>0&Ra>>>0>1e9>>>0){Sa=J$(Ra,na,1e9,0)|0;qa=K$(Ra,na,1e9,0)|0;gc=Sa;hc=qa}else{gc=0;hc=Ra}c[Ua>>2]=hc;Ua=(Wa|0)==(Lb|0);if((Wa|0)!=(Va+127&127|0)|Ua){ic=Va}else{ic=(hc|0)==0?Wa:Va}if(Ua){break}else{Ta=gc;Xa=Wa-1|0;Va=ic}}Va=bc-29|0;if((gc|0)==0){ac=ic;bc=Va}else{Zb=Va;_b=ic;$b=gc;break}}}o=Lb+127&127;if((o|0)==(_b|0)){Va=_b+127&127;Xa=h+((_b+126&127)<<2)|0;c[Xa>>2]=c[Xa>>2]|c[h+(Va<<2)>>2];jc=Va}else{jc=_b}c[h+(o<<2)>>2]=$b;Lb=o;Mb=jc;Nb=Zb;Ob=Ob+9|0}g:while(1){kc=dc+1&127;oa=h+((dc+127&127)<<2)|0;o=cc;Va=ec;Xa=fc;while(1){Ta=(Xa|0)==18;Wa=(Xa|0)>27?9:1;lc=o;mc=Va;while(1){Ua=0;while(1){Ra=Ua+lc&127;if((Ra|0)==(dc|0)){nc=2;break}qa=c[h+(Ra<<2)>>2]|0;Ra=c[31264+(Ua<<2)>>2]|0;if(qa>>>0>>0){nc=2;break}Sa=Ua+1|0;if(qa>>>0>Ra>>>0){nc=Ua;break}if((Sa|0)<2){Ua=Sa}else{nc=Sa;break}}if((nc|0)==2&Ta){break g}oc=Wa+mc|0;if((lc|0)==(dc|0)){lc=dc;mc=oc}else{break}}Ta=(1<>>(Wa>>>0);pc=Xa;qc=lc;Sa=lc;rc=0;do{Ra=h+(Sa<<2)|0;qa=c[Ra>>2]|0;na=(qa>>>(Wa>>>0))+rc|0;c[Ra>>2]=na;rc=da(qa&Ta,Ua)|0;qa=(Sa|0)==(qc|0)&(na|0)==0;Sa=Sa+1&127;pc=qa?pc-9|0:pc;qc=qa?Sa:qc;}while((Sa|0)!=(dc|0));if((rc|0)==0){o=qc;Va=oc;Xa=pc;continue}if((kc|0)!=(qc|0)){break}c[oa>>2]=c[oa>>2]|1;o=qc;Va=oc;Xa=pc}c[h+(dc<<2)>>2]=rc;cc=qc;dc=kc;ec=oc;fc=pc}Xa=lc&127;if((Xa|0)==(dc|0)){c[h+(kc-1<<2)>>2]=0;sc=kc}else{sc=dc}la=+((c[h+(Xa<<2)>>2]|0)>>>0>>>0);Xa=lc+1&127;if((Xa|0)==(sc|0)){Va=sc+1&127;c[h+(Va-1<<2)>>2]=0;tc=Va}else{tc=sc}wa=+(r|0);uc=wa*(la*1.0e9+ +((c[h+(Xa<<2)>>2]|0)>>>0>>>0));Xa=mc+53|0;Va=Xa-j|0;if((Va|0)<(k|0)){vc=(Va|0)<0?0:Va;wc=1}else{vc=k;wc=0}if((vc|0)<53){la=+Yb(+(+d$(1.0,105-vc|0)),+uc);xc=+Td(+uc,+(+d$(1.0,53-vc|0)));yc=la;zc=xc;Ac=la+(uc-xc)}else{yc=0.0;zc=0.0;Ac=uc}o=lc+2&127;do{if((o|0)==(tc|0)){Bc=zc}else{oa=c[h+(o<<2)>>2]|0;do{if(oa>>>0<5e8>>>0){if((oa|0)==0){if((lc+3&127|0)==(tc|0)){Cc=zc;break}}Cc=wa*.25+zc}else{if(oa>>>0>5e8>>>0){Cc=wa*.75+zc;break}if((lc+3&127|0)==(tc|0)){Cc=wa*.5+zc;break}else{Cc=wa*.75+zc;break}}}while(0);if((53-vc|0)<=1){Bc=Cc;break}if(+Td(+Cc,+1.0)!=0.0){Bc=Cc;break}Bc=Cc+1.0}}while(0);wa=Ac+Bc-yc;do{if((Xa&2147483647|0)>(-2-p|0)){if(+S(+wa)<9007199254740992.0){Dc=wa;Ec=wc;Gc=mc}else{Dc=wa*.5;Ec=(wc|0)!=0&(vc|0)==(Va|0)?0:wc;Gc=mc+1|0}if((Gc+50|0)<=(ma|0)){if(!((Ec|0)!=0&Bc!=0.0)){Hc=Dc;Ic=Gc;break}}c[(Fc()|0)>>2]=34;Hc=Dc;Ic=Gc}else{Hc=wa;Ic=mc}}while(0);l=+e$(Hc,Ic);i=g;return+l}else if((z|0)==3){ma=c[e>>2]|0;if(ma>>>0<(c[m>>2]|0)>>>0){c[e>>2]=ma+1;Jc=d[ma]|0}else{Jc=c$(b)|0}if((Jc|0)==40){Kc=1}else{if((c[m>>2]|0)==0){l=+s;i=g;return+l}c[e>>2]=(c[e>>2]|0)-1;l=+s;i=g;return+l}while(1){ma=c[e>>2]|0;if(ma>>>0<(c[m>>2]|0)>>>0){c[e>>2]=ma+1;Lc=d[ma]|0}else{Lc=c$(b)|0}if(!((Lc-48|0)>>>0<10>>>0|(Lc-65|0)>>>0<26>>>0)){if(!((Lc-97|0)>>>0<26>>>0|(Lc|0)==95)){break}}Kc=Kc+1|0}if((Lc|0)==41){l=+s;i=g;return+l}ma=(c[m>>2]|0)==0;if(!ma){c[e>>2]=(c[e>>2]|0)-1}if(w){c[(Fc()|0)>>2]=22;b$(b,0);l=0.0;i=g;return+l}if((Kc|0)==0|ma){l=+s;i=g;return+l}else{Mc=Kc}while(1){ma=Mc-1|0;c[e>>2]=(c[e>>2]|0)-1;if((ma|0)==0){l=+s;break}else{Mc=ma}}i=g;return+l}else{if((c[m>>2]|0)!=0){c[e>>2]=(c[e>>2]|0)-1}c[(Fc()|0)>>2]=22;b$(b,0);l=0.0;i=g;return+l}}}while(0);do{if((x|0)==23){b=(c[m>>2]|0)==0;if(!b){c[e>>2]=(c[e>>2]|0)-1}if(u>>>0<4>>>0|(f|0)==0|b){break}else{Nc=u}do{c[e>>2]=(c[e>>2]|0)-1;Nc=Nc-1|0;}while(Nc>>>0>3>>>0)}}while(0);l=+(r|0)*t;i=g;return+l}function a$(a,b){a=a|0;b=b|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,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=a+4|0;f=c[e>>2]|0;g=a+100|0;if(f>>>0<(c[g>>2]|0)>>>0){c[e>>2]=f+1;h=d[f]|0}else{h=c$(a)|0}do{if((h|0)==45|(h|0)==43){f=(h|0)==45|0;i=c[e>>2]|0;if(i>>>0<(c[g>>2]|0)>>>0){c[e>>2]=i+1;j=d[i]|0}else{j=c$(a)|0}if((j-48|0)>>>0<10>>>0|(b|0)==0){k=f;l=j;break}if((c[g>>2]|0)==0){k=f;l=j;break}c[e>>2]=(c[e>>2]|0)-1;k=f;l=j}else{k=0;l=h}}while(0);if((l-48|0)>>>0>9>>>0){if((c[g>>2]|0)==0){m=-2147483648;n=0;return(H=m,n)|0}c[e>>2]=(c[e>>2]|0)-1;m=-2147483648;n=0;return(H=m,n)|0}else{o=l;p=0}while(1){q=o-48+p|0;l=c[e>>2]|0;if(l>>>0<(c[g>>2]|0)>>>0){c[e>>2]=l+1;r=d[l]|0}else{r=c$(a)|0}if(!((r-48|0)>>>0<10>>>0&(q|0)<214748364)){break}o=r;p=q*10|0}p=q;o=(q|0)<0|0?-1:0;if((r-48|0)>>>0<10>>>0){q=r;l=o;h=p;while(1){j=I$(h,l,10,0)|0;b=H;f=z$(q,(q|0)<0|0?-1:0,-48,-1)|0;i=z$(f,H,j,b)|0;b=H;j=c[e>>2]|0;if(j>>>0<(c[g>>2]|0)>>>0){c[e>>2]=j+1;s=d[j]|0}else{s=c$(a)|0}j=21474836;if((s-48|0)>>>0<10>>>0&((b|0)<(j|0)|(b|0)==(j|0)&i>>>0<2061584302>>>0)){q=s;l=b;h=i}else{t=s;u=b;v=i;break}}}else{t=r;u=o;v=p}if((t-48|0)>>>0<10>>>0){do{t=c[e>>2]|0;if(t>>>0<(c[g>>2]|0)>>>0){c[e>>2]=t+1;w=d[t]|0}else{w=c$(a)|0}}while((w-48|0)>>>0<10>>>0)}if((c[g>>2]|0)!=0){c[e>>2]=(c[e>>2]|0)-1}e=(k|0)!=0;k=A$(0,0,v,u)|0;m=e?H:u;n=e?k:v;return(H=m,n)|0}function b$(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;f=d-e|0;c[a+108>>2]=f;if((b|0)!=0&(f|0)>(b|0)){c[a+100>>2]=e+b;return}else{c[a+100>>2]=d;return}}function c$(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=b+104|0;f=c[e>>2]|0;if((f|0)==0){g=3}else{if((c[b+108>>2]|0)<(f|0)){g=3}}do{if((g|0)==3){f=g$(b)|0;if((f|0)<0){break}h=c[e>>2]|0;i=c[b+8>>2]|0;do{if((h|0)==0){g=8}else{j=c[b+4>>2]|0;k=h-(c[b+108>>2]|0)-1|0;if((i-j|0)<=(k|0)){g=8;break}c[b+100>>2]=j+k}}while(0);if((g|0)==8){c[b+100>>2]=i}h=c[b+4>>2]|0;if((i|0)!=0){k=b+108|0;c[k>>2]=i+1-h+(c[k>>2]|0)}k=h-1|0;if((d[k]|0|0)==(f|0)){l=f;return l|0}a[k]=f;l=f;return l|0}}while(0);c[b+100>>2]=0;l=-1;return l|0}function d$(a,b){a=+a;b=b|0;var d=0.0,e=0,f=0.0,g=0;do{if((b|0)>1023){d=a*8.98846567431158e+307;e=b-1023|0;if((e|0)<=1023){f=d;g=e;break}e=b-2046|0;f=d*8.98846567431158e+307;g=(e|0)>1023?1023:e}else{if(!((b|0)<-1022)){f=a;g=b;break}d=a*2.2250738585072014e-308;e=b+1022|0;if(!((e|0)<-1022)){f=d;g=e;break}e=b+2044|0;f=d*2.2250738585072014e-308;g=(e|0)<-1022?-1022:e}}while(0);return+(f*(c[k>>2]=0<<20|0>>>12,c[k+4>>2]=g+1023<<20|0>>>12,+h[k>>3]))}function e$(a,b){a=+a;b=b|0;return+(+d$(a,b))}function f$(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b+74|0;e=a[d]|0;a[d]=e-1&255|e;e=b+20|0;d=b+44|0;if((c[e>>2]|0)>>>0>(c[d>>2]|0)>>>0){rk[c[b+36>>2]&63](b,0,0)|0}c[b+16>>2]=0;c[b+28>>2]=0;c[e>>2]=0;e=b|0;f=c[e>>2]|0;if((f&20|0)==0){g=c[d>>2]|0;c[b+8>>2]=g;c[b+4>>2]=g;h=0;return h|0}if((f&4|0)==0){h=-1;return h|0}c[e>>2]=f|32;h=-1;return h|0}function g$(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;i=i+8|0;e=b|0;if((c[a+8>>2]|0)==0){if((f$(a)|0)==0){f=3}else{g=-1}}else{f=3}do{if((f|0)==3){if((rk[c[a+32>>2]&63](a,e,1)|0)!=1){g=-1;break}g=d[e]|0}}while(0);i=b;return g|0}function h$(a){a=a|0;return+(+i$(a,0))}function i$(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0.0,j=0,k=0,l=0,m=0;d=i;i=i+112|0;e=d|0;n$(e|0,0,112)|0;f=e+4|0;c[f>>2]=a;g=e+8|0;c[g>>2]=-1;c[e+44>>2]=a;c[e+76>>2]=-1;b$(e,0);h=+$_(e,1,1);j=(c[f>>2]|0)-(c[g>>2]|0)+(c[e+108>>2]|0)|0;if((b|0)==0){k=112;l=0;i=d;return+h}if((j|0)==0){m=a}else{m=a+j|0}c[b>>2]=m;k=112;l=0;i=d;return+h}function j$(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((d|0)==0){e=0;return e|0}else{f=d;g=b;h=c}while(1){i=a[g]|0;j=a[h]|0;if(!(i<<24>>24==j<<24>>24)){break}c=f-1|0;if((c|0)==0){e=0;k=5;break}else{f=c;g=g+1|0;h=h+1|0}}if((k|0)==5){return e|0}e=(i&255)-(j&255)|0;return e|0}function k$(b,c){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=a[b]|0;e=a[c]|0;if(d<<24>>24!=e<<24>>24|d<<24>>24==0|e<<24>>24==0){f=d;g=e;h=f&255;i=g&255;j=h-i|0;return j|0}else{k=b;l=c}while(1){c=k+1|0;b=l+1|0;e=a[c]|0;d=a[b]|0;if(e<<24>>24!=d<<24>>24|e<<24>>24==0|d<<24>>24==0){f=e;g=d;break}else{k=c;l=b}}h=f&255;i=g&255;j=h-i|0;return j|0}function l$(b,c,e){b=b|0;c=c|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;if((e|0)==0){f=0;return f|0}g=a[b]|0;a:do{if(g<<24>>24==0){h=c;i=0}else{j=b;k=c;l=e;m=g;while(1){n=l-1|0;o=a[k]|0;if(!((n|0)!=0&o<<24>>24!=0&m<<24>>24==o<<24>>24)){h=k;i=m;break a}o=j+1|0;p=k+1|0;q=a[o]|0;if(q<<24>>24==0){h=p;i=0;break}else{j=o;k=p;l=n;m=q}}}}while(0);f=(i&255)-(d[h]|0)|0;return f|0}function m$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return Bg(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if((e|0)==0)return f|0;a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function n$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;g=b&3;h=d|d<<8|d<<16|d<<24;i=f&~3;if(g){g=b+4-g|0;while((b|0)<(g|0)){a[b]=d;b=b+1|0}}while((b|0)<(i|0)){c[b>>2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b]=d;b=b+1|0}return b-e|0}function o$(b){b=b|0;var c=0;c=b;while(a[c]|0){c=c+1|0}return c-b|0}function p$(b,c){b=b|0;c=c|0;var d=0,e=0;d=b+(o$(b)|0)|0;do{a[d+e|0]=a[c+e|0];e=e+1|0}while(a[c+(e-1)|0]|0);return b|0}function q$(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;while((e|0)<(d|0)){a[b+e|0]=f?0:a[c+e|0]|0;f=f?1:(a[c+e|0]|0)==0;e=e+1|0}return b|0}function r$(b,c){b=b|0;c=c|0;var d=0;do{a[b+d|0]=a[c+d|0];d=d+1|0}while(a[c+(d-1)|0]|0);return b|0}function s$(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b]=a[c]|0}b=e}else{m$(b,c,d)|0}return b|0}function t$(a){a=a|0;if((a|0)<65)return a|0;if((a|0)>90)return a|0;return a-65+97|0}function u$(a){a=a|0;var b=0;b=(da(c[a>>2]|0,31010991)|0)+1735287159&2147483647;c[a>>2]=b;return b|0}function v$(){return u$(o)|0}function w$(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;w=w+1|0;c[a>>2]=w;while((e|0)<40){if((c[d+(e<<2)>>2]|0)==0){c[d+(e<<2)>>2]=w;c[d+((e<<2)+4)>>2]=b;c[d+((e<<2)+8)>>2]=0;return 0}e=e+2|0}qe(116);qe(111);qe(111);qe(32);qe(109);qe(97);qe(110);qe(121);qe(32);qe(115);qe(101);qe(116);qe(106);qe(109);qe(112);qe(115);qe(32);qe(105);qe(110);qe(32);qe(97);qe(32);qe(102);qe(117);qe(110);qe(99);qe(116);qe(105);qe(111);qe(110);qe(32);qe(99);qe(97);qe(108);qe(108);qe(44);qe(32);qe(98);qe(117);qe(105);qe(108);qe(100);qe(32);qe(119);qe(105);qe(116);qe(104);qe(32);qe(97);qe(32);qe(104);qe(105);qe(103);qe(104);qe(101);qe(114);qe(32);qe(118);qe(97);qe(108);qe(117);qe(101);qe(32);qe(102);qe(111);qe(114);qe(32);qe(77);qe(65);qe(88);qe(95);qe(83);qe(69);qe(84);qe(74);qe(77);qe(80);qe(83);qe(10);ea(0);return 0}function x$(a,b){a=a|0;b=b|0;var d=0,e=0;while((d|0)<20){e=c[b+(d<<2)>>2]|0;if((e|0)==0)break;if((e|0)==(a|0)){return c[b+((d<<2)+4)>>2]|0}d=d+2|0}return 0}function y$(b){b=b|0;var c=0;c=a[n+(b>>>24)|0]|0;if((c|0)<8)return c|0;c=a[n+(b>>16&255)|0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>8&255)|0]|0;if((c|0)<8)return c+16|0;return(a[n+(b&255)|0]|0)+24|0}function z$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;return(H=b+d+(e>>>0>>0|0)>>>0,e|0)|0}function A$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return(H=e,a-c>>>0|0)|0}function B$(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b<>>32-c;return a<>>c;return a>>>c|(b&(1<>>c-32|0}function D$(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b>>c;return a>>>c|(b&(1<>c-32|0}function E$(b){b=b|0;var c=0;c=a[m+(b&255)|0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)|0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)|0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)|0]|0)+24|0}function F$(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=da(d,c)|0;f=a>>>16;a=(e>>>16)+(da(d,f)|0)|0;d=b>>>16;b=da(d,c)|0;return(H=(a>>>16)+(da(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0}function G$(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=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;g=d>>31|((d|0)<0?-1:0)<<1;h=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;i=A$(e^a,f^b,e,f)|0;b=H;a=g^e;e=h^f;f=A$((L$(i,b,A$(g^c,h^d,g,h)|0,H,0)|0)^a,H^e,a,e)|0;return(H=H,f)|0}function H$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+8|0;g=f|0;h=b>>31|((b|0)<0?-1:0)<<1;j=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;k=e>>31|((e|0)<0?-1:0)<<1;l=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;m=A$(h^a,j^b,h,j)|0;b=H;L$(m,b,A$(k^d,l^e,k,l)|0,H,g)|0;l=A$(c[g>>2]^h,c[g+4>>2]^j,h,j)|0;j=H;i=f;return(H=j,l)|0}function I$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=F$(e,a)|0;f=H;return(H=(da(b,a)|0)+(da(d,e)|0)+f|f&0,c|0|0)|0}function J$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=L$(a,b,c,d,0)|0;return(H=H,e)|0}function K$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+8|0;g=f|0;L$(a,b,d,e,g)|0;i=f;return(H=c[g+4>>2]|0,c[g>>2]|0)|0}function L$(a,b,d,e,f){a=a|0;b=b|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,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,J=0,K=0,L=0,M=0;g=a;h=b;i=h;j=d;k=e;l=k;if((i|0)==0){m=(f|0)!=0;if((l|0)==0){if(m){c[f>>2]=(g>>>0)%(j>>>0);c[f+4>>2]=0}n=0;o=(g>>>0)/(j>>>0)>>>0;return(H=n,o)|0}else{if(!m){n=0;o=0;return(H=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;o=0;return(H=n,o)|0}}m=(l|0)==0;do{if((j|0)==0){if(m){if((f|0)!=0){c[f>>2]=(i>>>0)%(j>>>0);c[f+4>>2]=0}n=0;o=(i>>>0)/(j>>>0)>>>0;return(H=n,o)|0}if((g|0)==0){if((f|0)!=0){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(l>>>0)}n=0;o=(i>>>0)/(l>>>0)>>>0;return(H=n,o)|0}p=l-1|0;if((p&l|0)==0){if((f|0)!=0){c[f>>2]=a|0;c[f+4>>2]=p&i|b&0}n=0;o=i>>>((E$(l|0)|0)>>>0);return(H=n,o)|0}p=(y$(l|0)|0)-(y$(i|0)|0)|0;if(p>>>0<=30){q=p+1|0;r=31-p|0;s=q;t=i<>>(q>>>0);u=i>>>(q>>>0);v=0;w=g<>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return(H=n,o)|0}else{if(!m){r=(y$(l|0)|0)-(y$(i|0)|0)|0;if(r>>>0<=31){q=r+1|0;p=31-r|0;x=r-31>>31;s=q;t=g>>>(q>>>0)&x|i<>>(q>>>0)&x;v=0;w=g<>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return(H=n,o)|0}p=j-1|0;if((p&j|0)!=0){x=(y$(j|0)|0)+33-(y$(i|0)|0)|0;q=64-x|0;r=32-x|0;y=r>>31;z=x-32|0;A=z>>31;s=x;t=r-1>>31&i>>>(z>>>0)|(i<>>(x>>>0))&A;u=A&i>>>(x>>>0);v=g<>>(z>>>0))&y|g<>31;break}if((f|0)!=0){c[f>>2]=p&g;c[f+4>>2]=0}if((j|0)==1){n=h|b&0;o=a|0|0;return(H=n,o)|0}else{p=E$(j|0)|0;n=i>>>(p>>>0)|0;o=i<<32-p|g>>>(p>>>0)|0;return(H=n,o)|0}}}while(0);if((s|0)==0){B=w;C=v;D=u;E=t;F=0;G=0}else{g=d|0|0;d=k|e&0;e=z$(g,d,-1,-1)|0;k=H;i=w;w=v;v=u;u=t;t=s;s=0;while(1){I=w>>>31|i<<1;J=s|w<<1;j=u<<1|i>>>31|0;a=u>>>31|v<<1|0;A$(e,k,j,a)|0;b=H;h=b>>31|((b|0)<0?-1:0)<<1;K=h&1;L=A$(j,a,h&g,(((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1)&d)|0;M=H;b=t-1|0;if((b|0)==0){break}else{i=I;w=J;v=M;u=L;t=b;s=K}}B=I;C=J;D=M;E=L;F=0;G=K}K=C;C=0;if((f|0)!=0){c[f>>2]=E;c[f+4>>2]=D}n=(K|0)>>>31|(B|C)<<1|(C<<1|K>>>31)&0|F;o=(K<<1|0>>>31)&-2|G;return(H=n,o)|0}function M$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;di(a|0,b|0,c|0,d|0,e|0)}function N$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;qd(a|0,b|0,c|0,d|0,e|0)}function O$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;$e(a|0,b|0,c|0,d|0,e|0)}function P$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;jc(a|0,b|0,c|0,d|0,e|0)}function Q$(a,b){a=a|0;b=+b;aj(a|0,+b)}function R$(a,b){a=a|0;b=+b;Li(a|0,+b)}function S$(a){a=a|0;Vg(a|0)}function T$(a){a=a|0;Rf(a|0)}function U$(a){a=a|0;ph(a|0)}function V$(a){a=a|0;Qg(a|0)}function W$(a){a=a|0;_j(a|0)}function X$(a){a=a|0;_i(a|0)}function Y$(a){a=a|0;Vd(a|0)}function Z$(a){a=a|0;Sj(a|0)}function _$(a){a=a|0;jh(a|0)}function $$(a){a=a|0;kc(a|0)}function a0(a){a=a|0;ce(a|0)}function b0(a){a=a|0;sh(a|0)}function c0(a){a=a|0;Hh(a|0)}function d0(a){a=a|0;$h(a|0)}function e0(a){a=a|0;th(a|0)}function f0(a){a=a|0;_b(a|0)}function g0(a){a=a|0;mg(a|0)}function h0(a){a=a|0;Pc(a|0)}function i0(a){a=a|0;lf(a|0)}function j0(a){a=a|0;dg(a|0)}function k0(a){a=a|0;gc(a|0)}function l0(a){a=a|0;Kj(a|0)}function m0(a){a=a|0;Ne(a|0)}function n0(a){a=a|0;Ph(a|0)}function o0(a){a=a|0;Qh(a|0)}function p0(a){a=a|0;oh(a|0)}function q0(a){a=a|0;de(a|0)}function r0(a,b){a=a|0;b=b|0;Zh(a|0,b|0)}function s0(a,b){a=a|0;b=b|0;Yi(a|0,b|0)}function t0(a,b){a=a|0;b=b|0;Cb(a|0,b|0)}function u0(a,b){a=a|0;b=b|0;Zi(a|0,b|0)}function v0(a,b){a=a|0;b=b|0;Ke(a|0,b|0)}function w0(a,b){a=a|0;b=b|0;sj(a|0,b|0)}function x0(a,b){a=a|0;b=b|0;Yd(a|0,b|0)}function y0(a,b){a=a|0;b=b|0;Ye(a|0,b|0)}function z0(a,b){a=a|0;b=b|0;Ug(a|0,b|0)}function A0(a,b){a=a|0;b=b|0;ib(a|0,b|0)}function B0(a,b){a=a|0;b=b|0;Yj(a|0,b|0)}function C0(a,b){a=a|0;b=b|0;$g(a|0,b|0)}function D0(a,b){a=a|0;b=b|0;fj(a|0,b|0)}function E0(a,b){a=a|0;b=b|0;lj(a|0,b|0)}function F0(a,b){a=a|0;b=b|0;Uj(a|0,b|0)}function G0(a,b){a=a|0;b=b|0;td(a|0,b|0)}function H0(a,b){a=a|0;b=b|0;lh(a|0,b|0)}function I0(a,b){a=a|0;b=b|0;Oj(a|0,b|0)}function J0(a,b){a=a|0;b=b|0;ue(a|0,b|0)}function K0(a,b){a=a|0;b=b|0;Gh(a|0,b|0)}function L0(a,b){a=a|0;b=b|0;Jg(a|0,b|0)}function M0(a,b){a=a|0;b=b|0;ud(a|0,b|0)}function N0(a,b){a=a|0;b=b|0;ic(a|0,b|0)}function O0(a,b){a=a|0;b=b|0;Qe(a|0,b|0)}function P0(a,b){a=a|0;b=b|0;kh(a|0,b|0)}function Q0(a,b){a=a|0;b=b|0;fg(a|0,b|0)}function R0(a,b){a=a|0;b=b|0;se(a|0,b|0)}function S0(a,b){a=a|0;b=b|0;sd(a|0,b|0)}function T0(a,b){a=a|0;b=b|0;dd(a|0,b|0)}function U0(a,b){a=a|0;b=b|0;re(a|0,b|0)}function V0(a,b){a=a|0;b=b|0;Tj(a|0,b|0)}function W0(a,b){a=a|0;b=b|0;Nc(a|0,b|0)}function X0(a,b){a=a|0;b=b|0;ac(a|0,b|0)}function Y0(a,b){a=a|0;b=b|0;zh(a|0,b|0)}function Z0(a){a=a|0;return lc(a|0)|0}function _0(a){a=a|0;return Ld(a|0)|0}function $0(a){a=a|0;return Vc(a|0)|0}function a1(a){a=a|0;return vf(a|0)|0}function b1(a){a=a|0;return zf(a|0)|0}function c1(a){a=a|0;return Oh(a|0)|0}function d1(a){a=a|0;return Jf(a|0)|0}function e1(a){a=a|0;return Wh(a|0)|0}function f1(a){a=a|0;return vd(a|0)|0}function g1(a){a=a|0;return Xj(a|0)|0}function h1(a){a=a|0;return Tf(a|0)|0}function i1(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;Lc(a|0,+b,+c,+d,+e)}function j1(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;Qd(a|0,+b,+c,+d,+e)}function k1(a){a=+a;return ye(+a)|0}function l1(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;Ob(a|0,+b,+c,+d)}function m1(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;eg(a|0,+b,+c,+d)}function n1(a,b,c){a=a|0;b=+b;c=+c;ad(a|0,+b,+c)}function o1(a,b,c){a=a|0;b=+b;c=+c;Ri(a|0,+b,+c)}function p1(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;bi(a|0,b|0,c|0,d|0,e|0,f|0,g|0)}function q1(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;Uh(a|0,b|0,c|0,d|0,e|0,f|0,g|0)}function r1(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;xe(a|0,b|0,c|0,d|0,e|0,f|0,g|0)}function s1(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;Fd(a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function t1(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;Nj(a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function u1(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;Zc(a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function v1(a,b){a=a|0;b=b|0;return Jc(a|0,b|0)|0}function w1(a,b){a=a|0;b=b|0;return Xh(a|0,b|0)|0}function x1(a,b){a=a|0;b=b|0;return Je(a|0,b|0)|0}function y1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;bj(a|0,b|0,c|0,d|0,e|0,f|0)}function z1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;te(a|0,b|0,c|0,d|0,e|0,f|0)}function A1(){return wf()|0}function B1(){return ci()|0}function C1(){return Ab()|0}function D1(){return df()|0}function E1(a,b,c){a=a|0;b=b|0;c=c|0;Bb(a|0,b|0,c|0)}function F1(a,b,c){a=a|0;b=b|0;c=c|0;Eb(a|0,b|0,c|0)}function G1(a,b,c){a=a|0;b=b|0;c=c|0;Ei(a|0,b|0,c|0)}function H1(a,b,c){a=a|0;b=b|0;c=c|0;qb(a|0,b|0,c|0)}function I1(a,b,c){a=a|0;b=b|0;c=c|0;nb(a|0,b|0,c|0)}function J1(a,b,c){a=a|0;b=b|0;c=c|0;wi(a|0,b|0,c|0)}function K1(a,b,c){a=a|0;b=b|0;c=c|0;Si(a|0,b|0,c|0)}function L1(a,b,c){a=a|0;b=b|0;c=c|0;_e(a|0,b|0,c|0)}function M1(a,b,c){a=a|0;b=b|0;c=c|0;hg(a|0,b|0,c|0)}function N1(a,b,c){a=a|0;b=b|0;c=c|0;Zg(a|0,b|0,c|0)}function O1(a,b,c){a=a|0;b=b|0;c=c|0;De(a|0,b|0,c|0)}function P1(a,b,c){a=a|0;b=b|0;c=c|0;Jh(a|0,b|0,c|0)}function Q1(a,b,c){a=a|0;b=b|0;c=c|0;bc(a|0,b|0,c|0)}function R1(a,b,c){a=a|0;b=b|0;c=c|0;Gb(a|0,b|0,c|0)}function S1(a,b,c){a=a|0;b=b|0;c=c|0;Hc(a|0,b|0,c|0)}function T1(a,b,c){a=a|0;b=b|0;c=c|0;be(a|0,b|0,c|0)}function U1(a,b,c){a=a|0;b=b|0;c=c|0;oe(a|0,b|0,c|0)}function V1(a,b,c){a=a|0;b=b|0;c=c|0;Nb(a|0,b|0,c|0)}function W1(a,b,c){a=a|0;b=b|0;c=c|0;zg(a|0,b|0,c|0)}function X1(a,b,c){a=a|0;b=b|0;c=c|0;Dd(a|0,b|0,c|0)}function Y1(a,b,c){a=a|0;b=b|0;c=c|0;uh(a|0,b|0,c|0)}function Z1(a,b,c){a=a|0;b=b|0;c=c|0;Sg(a|0,b|0,c|0)}function _1(a,b,c){a=a|0;b=b|0;c=c|0;Rd(a|0,b|0,c|0)}function $1(a,b,c){a=a|0;b=b|0;c=c|0;vb(a|0,b|0,c|0)}function a2(a,b,c){a=a|0;b=b|0;c=c|0;Jb(a|0,b|0,c|0)}function b2(a,b,c){a=a|0;b=b|0;c=c|0;Fh(a|0,b|0,c|0)}function c2(a,b,c){a=a|0;b=b|0;c=c|0;wg(a|0,b|0,c|0)}function d2(a,b,c){a=a|0;b=b|0;c=c|0;yh(a|0,b|0,c|0)}function e2(a,b,c){a=a|0;b=b|0;c=c|0;Gg(a|0,b|0,c|0)}function f2(){rc()}function g2(){uf()}function h2(){Kh()}function i2(){Di()}function j2(){_g()}function k2(){Ch()}function l2(a,b,c){a=a|0;b=b|0;c=+c;tb(a|0,b|0,+c)}function m2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;cc(a|0,b|0,c|0,d|0)}function n2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Bd(a|0,b|0,c|0,d|0)}function o2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Zd(a|0,b|0,c|0,d|0)}function p2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Fi(a|0,b|0,c|0,d|0)}function q2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Lg(a|0,b|0,c|0,d|0)}function r2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ie(a|0,b|0,c|0,d|0)}function s2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;pb(a|0,b|0,c|0,d|0)}function t2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;uj(a|0,b|0,c|0,d|0)}function u2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;zd(a|0,b|0,c|0,d|0)}function v2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ec(a|0,b|0,c|0,d|0)}function w2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;kf(a|0,b|0,c|0,d|0)}function x2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Pe(a|0,b|0,c|0,d|0)}function y2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;gg(a|0,b|0,c|0,d|0)}function z2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;lb(a|0,b|0,c|0,d|0)}function A2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Le(a|0,b|0,c|0,d|0)}function B2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Fj(a|0,b|0,c|0,d|0)}function C2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;mf(a|0,b|0,c|0,d|0)}function D2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Yf(a|0,b|0,c|0,d|0)}function E2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;wh(a|0,b|0,c|0,d|0)}function F2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;fc(a|0,b|0,c|0,d|0)}function G2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Re(a|0,b|0,c|0,d|0)}function H2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;af(a|0,b|0,c|0,d|0)}function I2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;pe(a|0,b|0,c|0,d|0)}function J2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Cf(a|0,b|0,c|0,d|0)}function K2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ed(a|0,b|0,c|0,d|0)}function L2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;tg(a|0,b|0,c|0,d|0)}function M2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;hc(a|0,b|0,c|0,d|0)}function N2(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;Db(a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function O2(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;ef(a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function P2(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;Rb(a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function Q2(a){a=+a;Ee(+a)}function R2(a,b,c,d){a=+a;b=+b;c=+c;d=+d;yd(+a,+b,+c,+d)}function S2(a,b,c,d){a=+a;b=+b;c=+c;d=+d;Yg(+a,+b,+c,+d)}function T2(a,b,c,d){a=+a;b=+b;c=+c;d=+d;Qi(+a,+b,+c,+d)}function U2(a,b){a=+a;b=+b;Uc(+a,+b)}function V2(a,b){a=+a;b=+b;fd(+a,+b)}function W2(a){a=+a;pi(+a)}function X2(a){a=+a;Vh(+a)}function Y2(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;zb(+a,+b,+c,+d,+e,+f)}function Z2(a,b){a=+a;b=b|0;Mj(+a,b|0)}function _2(a,b){a=+a;b=+b;gd(+a,+b)}function $2(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 ak[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a3(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 ja(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function b3(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;return bk[a&7](b|0,c|0,d|0,e|0,f|0,+g)|0}function c3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ja(0,a|0,b|0,c|0,d|0,e|0,+f)|0}function d3(a,b,c){a=a|0;b=b|0;c=+c;ck[a&15](b|0,+c)}function e3(a,b){a=a|0;b=+b;ja(0,a|0,+b)}function f3(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;i=i|0;dk[a&7](b|0,c|0,d|0,e|0,f|0,g|0,+h,i|0)}function g3(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;h=h|0;ja(0,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0)}function h3(a,b){a=a|0;b=+b;ek[a&7](+b)}function i3(a){a=+a;ja(0,+a)}function j3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;fk[a&127](b|0,c|0,d|0,e|0,f|0)}function k3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ja(0,a|0,b|0,c|0,d|0,e|0)}function l3(a,b,c,d,e,f,g,h,i,j,k,l,m,n){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;l=l|0;m=m|0;n=n|0;return gk[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,+k,l|0,m|0,n|0)|0}function m3(a,b,c,d,e,f,g,h,i,j,k,l,m){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;k=k|0;l=l|0;m=m|0;return ja(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,+j,k|0,l|0,m|0)|0}function n3(a,b,c){a=a|0;b=b|0;c=c|0;hk[a&255](b|0,c|0)}function o3(a,b){a=a|0;b=b|0;ja(0,a|0,b|0)}function p3(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 ik[a&15](b|0,c|0,d|0,e|0,f|0,g|0)|0}function q3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ja(0,a|0,b|0,c|0,d|0,e|0,f|0)|0}function r3(a,b){a=a|0;b=b|0;return jk[a&255](b|0)|0}function s3(a){a=a|0;return ja(0,a|0)|0}function t3(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;kk[a&7](+b,+c,+d,+e,+f,+g,+h,+i,j|0)}function u3(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=i|0;ja(0,+a,+b,+c,+d,+e,+f,+g,+h,i|0)}function v3(a,b,c,d,e,f,g,h,i,j,k,l){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;l=l|0;lk[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)}function w3(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;ja(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function x3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;mk[a&7](b|0,c|0,+d,e|0)}function y3(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ja(0,a|0,b|0,+c,d|0)}function z3(a,b){a=a|0;b=+b;nk[a&7](+b)}function A3(a){a=+a;ja(0,+a)}function B3(a,b,c,d,e,f,g,h,i,j,k,l,m,n){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;l=l|0;m=m|0;n=n|0;return ok[a&3](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)|0}function C3(a,b,c,d,e,f,g,h,i,j,k,l,m){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;l=l|0;m=m|0;return ja(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function D3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;return pk[a&7](b|0,c|0,+d,e|0)|0}function E3(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;return ja(0,a|0,b|0,+c,d|0)|0}function F3(a,b){a=a|0;b=+b;return qk[a&7](+b)|0}function G3(a){a=+a;return ja(0,+a)|0}function H3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return rk[a&63](b|0,c|0,d|0)|0}function I3(a,b,c){a=a|0;b=b|0;c=c|0;return ja(0,a|0,b|0,c|0)|0}function J3(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;sk[a&15](b|0,+c,+d,+e,+f)}function K3(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ja(0,a|0,+b,+c,+d,+e)}function L3(a,b,c,d,e,f,g,h,i,j,k,l){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;l=l|0;return tk[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function M3(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;return ja(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function N3(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;uk[a&7](b|0,+c,+d,e|0)}function O3(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;ja(0,a|0,+b,+c,d|0)}function P3(a,b){a=a|0;b=b|0;vk[a&511](b|0)}function Q3(a){a=a|0;ja(0,a|0)}function R3(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;wk[a&7](b|0,+c,d|0)}function S3(a,b,c){a=a|0;b=+b;c=c|0;ja(0,a|0,+b,c|0)}function T3(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=+e;xk[a&7](b|0,+c,+d,+e)}function U3(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ja(0,a|0,+b,+c,+d)}function V3(a,b,c){a=a|0;b=b|0;c=c|0;return+yk[a&7](b|0,c|0)}function W3(a,b){a=a|0;b=b|0;return+ja(0,a|0,b|0)}function X3(a,b,c){a=a|0;b=+b;c=+c;zk[a&7](+b,+c)}function Y3(a,b){a=+a;b=+b;ja(0,+a,+b)}function Z3(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;Ak[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function _3(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;ja(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function $3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=g|0;return Bk[a&7](b|0,c|0,d|0,e|0,+f,g|0)|0}function a4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;return ja(0,a|0,b|0,c|0,d|0,+e,f|0)|0}function b4(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;Ck[a&7](b|0,+c,+d)}function c4(a,b,c){a=a|0;b=+b;c=+c;ja(0,a|0,+b,+c)}function d4(a,b,c,d,e,f,g,h,i,j,k,l,m){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;l=l|0;m=m|0;return Dk[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function e4(a,b,c,d,e,f,g,h,i,j,k,l){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;l=l|0;return ja(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function f4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;return Ek[a&7](b|0,c|0,d|0,+e,f|0)|0}function g4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;return ja(0,a|0,b|0,c|0,+d,e|0)|0}function h4(a,b,c){a=a|0;b=b|0;c=+c;return Fk[a&7](b|0,+c)|0}function i4(a,b){a=a|0;b=+b;return ja(0,a|0,+b)|0}function j4(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;Gk[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function k4(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;ja(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0)}function l4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return+Hk[a&7](b|0,c|0,+d,+e)}function m4(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ja(0,a|0,b|0,+c,+d)}function n4(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;Ik[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function o4(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;ja(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function p4(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;Jk[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function q4(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;ja(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function r4(a,b,c){a=a|0;b=b|0;c=c|0;return Kk[a&255](b|0,c|0)|0}function s4(a,b){a=a|0;b=b|0;return ja(0,a|0,b|0)|0}function t4(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;Lk[a&15](b|0,c|0,d|0,e|0,f|0,g|0)}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;ja(0,a|0,b|0,c|0,d|0,e|0,f|0)}function v4(a,b,c){a=a|0;b=+b;c=c|0;Mk[a&7](+b,c|0)}function w4(a,b){a=+a;b=b|0;ja(0,+a,b|0)}function x4(a){a=a|0;return+Nk[a&7]()}function y4(){return+ja(0)}function z4(a){a=a|0;return Ok[a&63]()|0}function A4(){return ja(0)|0}function B4(a,b,c){a=a|0;b=+b;c=+c;Pk[a&7](+b,+c)}function C4(a,b){a=+a;b=+b;ja(0,+a,+b)}function D4(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;Qk[a&15](+b,+c,+d,+e)}function E4(a,b,c,d){a=+a;b=+b;c=+c;d=+d;ja(0,+a,+b,+c,+d)}function F4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Rk[a&15](b|0,c|0,d|0,e|0,f|0)|0}function G4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ja(0,a|0,b|0,c|0,d|0,e|0)|0}function H4(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;Sk[a&7](+b,+c,+d,+e,+f,+g)}function I4(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;ja(0,+a,+b,+c,+d,+e,+f)}function J4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Tk[a&255](b|0,c|0,d|0)}function K4(a,b,c){a=a|0;b=b|0;c=c|0;ja(0,a|0,b|0,c|0)}function L4(a){a=a|0;Uk[a&511]()}function M4(){ja(0)}function N4(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;return Vk[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function O4(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 ja(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function P4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Wk[a&63](b|0,c|0,d|0,e|0)|0}function Q4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ja(0,a|0,b|0,c|0,d|0)|0}function R4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;Xk[a&15](b|0,c|0,+d)}function S4(a,b,c){a=a|0;b=b|0;c=+c;ja(0,a|0,b|0,+c)}function T4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Yk[a&255](b|0,c|0,d|0,e|0)}function U4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ja(0,a|0,b|0,c|0,d|0)}function V4(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;ea(0);return 0}function W4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ea(1);return 0}function X4(a,b){a=a|0;b=+b;ea(2)}function Y4(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;h=h|0;ea(3)}function Z4(a){a=+a;ea(4)}function _4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(5)}function $4(a,b,c,d,e,f,g,h,i,j,k,l,m){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;k=k|0;l=l|0;m=m|0;ea(6);return 0}function a5(a,b){a=a|0;b=b|0;ea(7)}function b5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(8);return 0}function c5(a){a=a|0;ea(9);return 0}function d5(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=i|0;ea(10)}function e5(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;ea(11)}function f5(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ea(12)}function g5(a){a=+a;ea(13)}function h5(a,b,c,d,e,f,g,h,i,j,k,l,m){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;l=l|0;m=m|0;ea(14);return 0}function i5(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ea(15);return 0}function j5(a){a=+a;ea(16);return 0}function k5(a,b,c){a=a|0;b=b|0;c=c|0;ea(17);return 0}function l5(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ea(18)}function m5(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;ea(19);return 0}function n5(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;ea(20)}function o5(a){a=a|0;ea(21)}function p5(a,b,c){a=a|0;b=+b;c=c|0;ea(22)}function q5(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ea(23)}function r5(a,b){a=a|0;b=b|0;ea(24);return 0.0}function s5(a,b){a=+a;b=+b;ea(25)}function t5(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;ea(26)}function u5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;ea(27);return 0}function v5(a,b,c){a=a|0;b=+b;c=+c;ea(28)}function w5(a,b,c,d,e,f,g,h,i,j,k,l){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;l=l|0;ea(29);return 0}function x5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;ea(30);return 0}function y5(a,b){a=a|0;b=+b;ea(31);return 0}function z5(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;ea(32)}function A5(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ea(33);return 0.0}function B5(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;ea(34)}function C5(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;ea(35)}function D5(a,b){a=a|0;b=b|0;ea(36);return 0}function E5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(37)}function F5(a,b){a=+a;b=b|0;ea(38)}function G5(){ea(39);return 0.0}function H5(){ea(40);return 0}function I5(a,b){a=+a;b=+b;ea(41)}function J5(a,b,c,d){a=+a;b=+b;c=+c;d=+d;ea(42)}function K5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(43);return 0}function L5(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;ea(44)}function M5(a,b,c){a=a|0;b=b|0;c=c|0;ea(45)}function N5(){ea(46)}function O5(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;ea(47);return 0}function P5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(48);return 0}function Q5(a,b,c){a=a|0;b=b|0;c=+c;ea(49)}function R5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(50)} + + + + +// EMSCRIPTEN_END_FUNCS +var ak=[V4,V4,a3,V4,MS,V4,V4,V4];var bk=[W4,W4,c3,W4,EH,W4,W4,W4];var ck=[X4,X4,e3,X4,Q$,X4,jH,X4,R$,X4,nt,X4,zJ,X4,X4,X4];var dk=[Y4,Y4,g3,Y4,wy,Y4,Xw,Y4];var ek=[Z4,Z4,i3,Z4,W2,Z4,X2,Z4];var fk=[_4,_4,k3,_4,HV,_4,CZ,_4,VZ,_4,HZ,_4,IV,_4,YZ,_4,AZ,_4,OZ,_4,M$,_4,CX,_4,TZ,_4,IZ,_4,MZ,_4,KZ,_4,PZ,_4,zZ,_4,FZ,_4,N$,_4,wZ,_4,vZ,_4,NZ,_4,tZ,_4,BX,_4,_Z,_4,jz,_4,yZ,_4,DZ,_4,FV,_4,UZ,_4,ZZ,_4,BZ,_4,WZ,_4,GZ,_4,O$,_4,SZ,_4,yX,_4,RZ,_4,XZ,_4,JV,_4,AX,_4,NW,_4,zX,_4,uZ,_4,P$,_4,LZ,_4,KV,_4,EZ,_4,VP,_4,QZ,_4,xZ,_4,JZ,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4,_4];var gk=[$4,$4,m3,$4,xE,$4,$4,$4];var hk=[a5,a5,o3,a5,r0,a5,wG,a5,aH,a5,QV,a5,s0,a5,XO,a5,t0,a5,UP,a5,ip,a5,u0,a5,XX,a5,qJ,a5,v0,a5,zV,a5,No,a5,Pw,a5,Fo,a5,eW,a5,QH,a5,w0,a5,Xr,a5,Yl,a5,yJ,a5,x0,a5,FG,a5,y0,a5,z0,a5,A0,a5,nW,a5,B0,a5,C0,a5,D0,a5,Xu,a5,pV,a5,PL,a5,cx,a5,bv,a5,kz,a5,Fz,a5,qH,a5,E0,a5,Vz,a5,uy,a5,Is,a5,av,a5,F0,a5,Yw,a5,fp,a5,VL,a5,Vu,a5,jX,a5,G0,a5,WD,a5,LY,a5,H0,a5,E_,a5,_p,a5,Dy,a5,JY,a5,dJ,a5,iH,a5,Zn,a5,I0,a5,Gr,a5,J0,a5,j_,a5,Nr,a5,Cp,a5,K0,a5,vY,a5,Oq,a5,Gu,a5,IW,a5,$u,a5,L0,a5,yH,a5,M0,a5,hJ,a5,Jt,a5,N0,a5,O0,a5,kt,a5,P0,a5,gJ,a5,rr,a5,Q0,a5,R0,a5,Ml,a5,eJ,a5,ty,a5,_n,a5,Ru,a5,S0,a5,Fs,a5,Sr,a5,T0,a5,U0,a5,V0,a5,JA,a5,W0,a5,X0,a5,Y0,a5,u_,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5];var ik=[b5,b5,q3,b5,Dl,b5,e_,b5,f_,b5,b5,b5,b5,b5,b5,b5];var jk=[c5,c5,s3,c5,Up,c5,ss,c5,DK,c5,_T,c5,by,c5,nz,c5,vE,c5,vK,c5,oR,c5,ny,c5,bt,c5,FR,c5,DD,c5,CK,c5,KK,c5,Z0,c5,hy,c5,ME,c5,_0,c5,ZG,c5,lK,c5,tX,c5,$0,c5,mK,c5,sl,c5,eY,c5,SX,c5,nX,c5,fY,c5,a1,c5,JK,c5,XF,c5,WF,c5,xA,c5,yD,c5,b1,c5,Ut,c5,c1,c5,xK,c5,TK,c5,_o,c5,my,c5,Tq,c5,HK,c5,d1,c5,FK,c5,uK,c5,rX,c5,e1,c5,f1,c5,BK,c5,gY,c5,nK,c5,UK,c5,zG,c5,gz,c5,dY,c5,GK,c5,qK,c5,EK,c5,lz,c5,g1,c5,US,c5,or,c5,Cl,c5,wK,c5,KH,c5,KJ,c5,h1,c5,ZT,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5];var kk=[d5,d5,u3,d5,SP,d5,d5,d5];var lk=[e5,e5,w3,e5,XG,e5,e5,e5];var mk=[f5,f5,y3,f5,XH,f5,f5,f5];var nk=[g5,g5,A3,g5,Q2,g5,g5,g5];var ok=[h5,h5,C3,h5];var pk=[i5,i5,E3,i5,dI,i5,i5,i5];var qk=[j5,j5,G3,j5,k1,j5,JJ,j5];var rk=[k5,k5,I3,k5,MG,k5,PC,k5,gu,k5,GD,k5,Yu,k5,HD,k5,iy,k5,FD,k5,ky,k5,su,k5,IJ,k5,iu,k5,gt,k5,WK,k5,_C,k5,BG,k5,WO,k5,TG,k5,Yy,k5,b_,k5,a_,k5,tH,k5,cy,k5,eu,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5];var sk=[l5,l5,K3,l5,rT,l5,qT,l5,i1,l5,j1,l5,l5,l5,l5,l5];var tk=[m5,m5,M3,m5,JF,m5,m5,m5];var uk=[n5,n5,O3,n5,Gt,n5,n5,n5];var vk=[o5,o5,Q3,o5,UX,o5,MI,o5,SV,o5,GR,o5,uU,o5,S$,o5,IY,o5,ZA,o5,Ll,o5,Zr,o5,RP,o5,yy,o5,mY,o5,lA,o5,pY,o5,TX,o5,vP,o5,Rs,o5,I_,o5,tW,o5,EX,o5,LH,o5,SL,o5,T$,o5,MY,o5,xX,o5,AY,o5,U$,o5,EU,o5,V$,o5,yU,o5,dy,o5,JH,o5,W$,o5,DU,o5,X$,o5,g_,o5,uT,o5,Su,o5,L_,o5,uJ,o5,Y$,o5,xH,o5,Z$,o5,_$,o5,HH,o5,Ir,o5,GX,o5,nJ,o5,pH,o5,jG,o5,hW,o5,qt,o5,$$,o5,mA,o5,BU,o5,sJ,o5,pX,o5,_O,o5,oJ,o5,ZR,o5,WA,o5,TP,o5,bX,o5,DI,o5,Us,o5,qX,o5,AU,o5,BI,o5,fJ,o5,wU,o5,jy,o5,jW,o5,AR,o5,a0,o5,qw,o5,b0,o5,KI,o5,lW,o5,MV,o5,c0,o5,tJ,o5,F_,o5,Tw,o5,Ps,o5,vU,o5,VS,o5,dT,o5,zH,o5,nY,o5,d0,o5,e0,o5,vJ,o5,BR,o5,EV,o5,f0,o5,g0,o5,oH,o5,pz,o5,wJ,o5,vW,o5,GV,o5,h0,o5,CU,o5,iW,o5,oA,o5,lJ,o5,qV,o5,pA,o5,jJ,o5,Yt,o5,i0,o5,nA,o5,nu,o5,cY,o5,j0,o5,CI,o5,Zo,o5,Zy,o5,k0,o5,xU,o5,Sw,o5,jA,o5,qA,o5,k_,o5,IP,o5,iJ,o5,dH,o5,By,o5,$R,o5,AH,o5,PH,o5,zU,o5,ts,o5,l0,o5,m0,o5,tu,o5,mX,o5,es,o5,kX,o5,KY,o5,v_,o5,MA,o5,n0,o5,o0,o5,RV,o5,VX,o5,mz,o5,p0,o5,BJ,o5,uW,o5,ER,o5,kW,o5,rJ,o5,Eq,o5,w_,o5,kJ,o5,MW,o5,q0,o5,pT,o5,kA,o5,AG,o5,mJ,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5];var wk=[p5,p5,S3,p5,AJ,p5,p5,p5];var xk=[q5,q5,U3,q5,l1,q5,m1,q5];var yk=[r5,r5,W3,r5,pG,r5,rH,r5];var zk=[s5,s5,Y3,s5,_2,s5,s5,s5];var Ak=[t5,t5,_3,t5,N2,t5,O2,t5,P2,t5,t5,t5,t5,t5,t5,t5];var Bk=[u5,u5,a4,u5,ZS,u5,u5,u5];var Ck=[v5,v5,c4,v5,n1,v5,o1,v5];var Dk=[w5,w5,e4,w5,YG,w5,w5,w5];var Ek=[x5,x5,g4,x5,ZH,x5,x5,x5];var Fk=[y5,y5,i4,y5,oG,y5,y5,y5];var Gk=[z5,z5,k4,z5,p1,z5,ez,z5,KW,z5,JW,z5,q1,z5,OV,z5,NV,z5,sY,z5,r1,z5,BY,z5,qY,z5,fz,z5,mP,z5,xY,z5,wY,z5,yY,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5,z5];var Hk=[A5,A5,m4,A5,qG,A5,A5,A5];var Ik=[B5,B5,o4,B5,lP,B5,s1,B5,t1,B5,u1,B5,B5,B5,B5,B5];var Jk=[C5,C5,q4,C5];var Kk=[D5,D5,s4,D5,XV,D5,ay,D5,rG,D5,gy,D5,QS,D5,sX,D5,YU,D5,mu,D5,ZC,D5,CV,D5,oF,D5,BH,D5,$X,D5,AV,D5,Hy,D5,vV,D5,HI,D5,KX,D5,v1,D5,gG,D5,hV,D5,CH,D5,JI,D5,fX,D5,WG,D5,RS,D5,yG,D5,JX,D5,SH,D5,pD,D5,VK,D5,w1,D5,Eu,D5,MX,D5,vH,D5,eX,D5,rs,D5,uX,D5,HX,D5,IH,D5,sV,D5,NX,D5,dX,D5,LJ,D5,hB,D5,uH,D5,BV,D5,rV,D5,TV,D5,x1,D5,CP,D5,PS,D5,HJ,D5,YV,D5,UC,D5,SC,D5,vX,D5,hz,D5,VV,D5,ku,D5,IX,D5,eD,D5,gX,D5,FH,D5,WV,D5,VC,D5,cX,D5,tV,D5,uV,D5,X_,D5,JP,D5,Kw,D5,UV,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5,D5];var Lk=[E5,E5,u4,E5,y1,E5,z1,E5,kM,E5,E5,E5,E5,E5,E5,E5];var Mk=[F5,F5,w4,F5,Z2,F5,F5,F5];var Nk=[G5,G5,y4,G5,mE,G5,G5,G5];var Ok=[H5,H5,A4,H5,A1,H5,$o,H5,jE,H5,GJ,H5,LI,H5,VA,H5,oz,H5,OH,H5,LL,H5,B1,H5,C1,H5,D1,H5,As,H5,cH,H5,YA,H5,nr,H5,FJ,H5,iz,H5,ds,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5,H5];var Pk=[I5,I5,C4,I5,U2,I5,V2,I5];var Qk=[J5,J5,E4,J5,R2,J5,S2,J5,T2,J5,J5,J5,J5,J5,J5,J5];var Rk=[K5,K5,G4,K5,aG,K5,gH,K5,_H,K5,i_,K5,h_,K5,K5,K5];var Sk=[L5,L5,I4,L5,Y2,L5,L5,L5];var Tk=[M5,M5,K4,M5,E1,M5,TB,M5,XY,M5,QY,M5,WY,M5,F1,M5,OY,M5,oZ,M5,G1,M5,H1,M5,qZ,M5,UY,M5,_Y,M5,I1,M5,bH,M5,lZ,M5,J1,M5,NY,M5,K1,M5,$G,M5,L1,M5,II,M5,CQ,M5,SY,M5,M1,M5,N1,M5,nH,M5,O1,M5,ZY,M5,P1,M5,aZ,M5,ap,M5,Q1,M5,R1,M5,RF,M5,fZ,M5,nZ,M5,hZ,M5,jZ,M5,S1,M5,Ur,M5,iZ,M5,hH,M5,gZ,M5,T1,M5,cZ,M5,FS,M5,rZ,M5,kZ,M5,U1,M5,V1,M5,ou,M5,W1,M5,dZ,M5,$Y,M5,mW,M5,bZ,M5,X1,M5,TY,M5,pZ,M5,Y1,M5,_G,M5,Z1,M5,eZ,M5,PY,M5,sZ,M5,_1,M5,$1,M5,dz,M5,a2,M5,zL,M5,mZ,M5,_S,M5,b2,M5,c2,M5,xG,M5,d2,M5,RY,M5,e2,M5,YY,M5,ST,M5,VY,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5,M5];var Uk=[N5,N5,M4,N5,Kt,N5,Ho,N5,Au,N5,TL,N5,Mo,N5,f2,N5,Ul,N5,Fv,N5,Gs,N5,Dm,N5,Ao,N5,Yn,N5,yz,N5,Xl,N5,sm,N5,Rv,N5,$T,N5,Ox,N5,Io,N5,tm,N5,Sl,N5,sR,N5,rm,N5,Oz,N5,Un,N5,Ks,N5,ex,N5,g2,N5,ln,N5,Iw,N5,Ct,N5,Ky,N5,Jw,N5,cp,N5,_m,N5,vL,N5,ym,N5,Px,N5,ry,N5,Lo,N5,jp,N5,Bo,N5,Co,N5,mT,N5,Ax,N5,Em,N5,mH,N5,Pm,N5,Gw,N5,qo,N5,Mx,N5,VR,N5,kp,N5,$s,N5,QR,N5,hp,N5,mn,N5,tt,N5,RR,N5,Qx,N5,om,N5,h2,N5,cn,N5,Fy,N5,At,N5,Do,N5,Rm,N5,vz,N5,wz,N5,vt,N5,Mm,N5,zz,N5,GL,N5,Kz,N5,Rl,N5,Im,N5,vr,N5,Lz,N5,pr,N5,gn,N5,Jm,N5,i2,N5,wt,N5,Sn,N5,Hz,N5,Ql,N5,Az,N5,Jy,N5,ur,N5,uL,N5,to,N5,jm,N5,qm,N5,gp,N5,bn,N5,nn,N5,vm,N5,Nm,N5,fn,N5,_Q,N5,jB,N5,Ey,N5,kn,N5,Iz,N5,wu,N5,zm,N5,Lw,N5,Ym,N5,Zs,N5,Tm,N5,Bm,N5,XR,N5,$m,N5,Km,N5,xm,N5,nm,N5,xz,N5,Zm,N5,vy,N5,zo,N5,dp,N5,mr,N5,oU,N5,yu,N5,_R,N5,km,N5,Qw,N5,Lm,N5,yt,N5,ut,N5,_s,N5,um,N5,xT,N5,Ls,N5,Gy,N5,j2,N5,Nx,N5,Xm,N5,Sm,N5,ko,N5,en,N5,Gz,N5,Ko,N5,Iy,N5,Bz,N5,Mr,N5,Cu,N5,Jo,N5,pm,N5,wr,N5,tr,N5,Ez,N5,Am,N5,an,N5,Pz,N5,Vl,N5,Dz,N5,wm,N5,Om,N5,lp,N5,XS,N5,jn,N5,im,N5,Wm,N5,Tn,N5,Vm,N5,WR,N5,xy,N5,Gm,N5,cD,N5,Cs,N5,Rw,N5,Ol,N5,Um,N5,_w,N5,Tl,N5,js,N5,Hm,N5,Fm,N5,Cm,N5,Cz,N5,Js,N5,tz,N5,hn,N5,Wr,N5,jo,N5,k2,N5,Hw,N5,dn,N5,bp,N5,Jz,N5,zu,N5,Hl,N5,ow,N5,Qm,N5,Wn,N5,Nz,N5,bV,N5,wH,N5,Or,N5,Mz,N5,bD,N5,wL,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5,N5];var Vk=[O5,O5,O4,O5,OF,O5,O5,O5];var Wk=[P5,P5,Q4,P5,yF,P5,YC,P5,ED,P5,MJ,P5,fS,P5,QC,P5,GH,P5,c_,P5,ly,P5,DH,P5,d_,P5,TC,P5,sG,P5,RC,P5,fG,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5,P5];var Xk=[Q5,Q5,S4,Q5,sH,Q5,xJ,Q5,l2,Q5,Q5,Q5,Q5,Q5,Q5,Q5];var Yk=[R5,R5,U4,R5,J_,R5,rY,R5,DY,R5,Zw,R5,m2,R5,n2,R5,o2,R5,PW,R5,p2,R5,q2,R5,Cy,R5,C_,R5,AI,R5,YX,R5,TW,R5,ZX,R5,r2,R5,s2,R5,qz,R5,t2,R5,Vw,R5,Ay,R5,u2,R5,v2,R5,w2,R5,B_,R5,x2,R5,zy,R5,CY,R5,FY,R5,EY,R5,y2,R5,tY,R5,z2,R5,A2,R5,B2,R5,z_,R5,C2,R5,tG,R5,sy,R5,D2,R5,E2,R5,A_,R5,HR,R5,H_,R5,Uw,R5,zR,R5,oT,R5,SW,R5,F2,R5,NG,R5,G2,R5,Nw,R5,OW,R5,H2,R5,I2,R5,y_,R5,_X,R5,JR,R5,J2,R5,K2,R5,K_,R5,IR,R5,wR,R5,L2,R5,fW,R5,M2,R5,GY,R5,RW,R5,QW,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5,R5];return{_strlen:o$,_strcat:p$,_main:UL,_Z_Free:es,_calloc:X_,_rand_r:u$,_Z_Malloc:gs,_strncpy:q$,_Com_Error:Ur,_memset:n$,_atof:h$,_memcpy:m$,_VM_GetCurrent:tD,_Com_ProxyCallback:Vr,_VM_SetCurrent:uD,_realloc:Y_,_S_Malloc:hs,_emscripten_GetProcAddress:U_,_rand:v$,_testSetjmp:x$,_saveSetjmp:w$,_free:W_,_Com_Printf:Sr,_memmove:s$,_tolower:t$,_Cvar_VariableString:ct,_malloc:V_,_Cvar_Set:kt,_llvm_ctlz_i32:y$,_Com_GetCDN:Xs,_Com_GetManifest:Ys,_strcpy:r$,runPostSets:nl,stackAlloc:Zk,stackSave:_k,stackRestore:$k,setThrew:al,setTempRet0:dl,setTempRet1:el,setTempRet2:fl,setTempRet3:gl,setTempRet4:hl,setTempRet5:il,setTempRet6:jl,setTempRet7:kl,setTempRet8:ll,setTempRet9:ml,dynCall_iiiiiiii:$2,dynCall_iiiiiif:b3,dynCall_vif:d3,dynCall_viiiiiifi:f3,dynCall_vf:h3,dynCall_viiiii:j3,dynCall_iiiiiiiiiifiii:l3,dynCall_vii:n3,dynCall_iiiiiii:p3,dynCall_ii:r3,dynCall_vffffffffi:t3,dynCall_viiiiiiiiiii:v3,dynCall_viifi:x3,dynCall_vd:z3,dynCall_iiiiiiiiiiiiii:B3,dynCall_iiifi:D3,dynCall_if:F3,dynCall_iiii:H3,dynCall_viffff:J3,dynCall_iiiiiiiiiiii:L3,dynCall_viffi:N3,dynCall_vi:P3,dynCall_vifi:R3,dynCall_vifff:T3,dynCall_fii:V3,dynCall_vdd:X3,dynCall_viiiiiiii:Z3,dynCall_iiiiifi:$3,dynCall_viff:b4,dynCall_iiiiiiiiiiiii:d4,dynCall_iiiifi:f4,dynCall_iif:h4,dynCall_viiiiiii:j4,dynCall_fiiff:l4,dynCall_viiiiiiiii:n4,dynCall_viiiiiiiiii:p4,dynCall_iii:r4,dynCall_viiiiii:t4,dynCall_vfi:v4,dynCall_f:x4,dynCall_i:z4,dynCall_vff:B4,dynCall_vffff:D4,dynCall_iiiiii:F4,dynCall_vdddddd:H4,dynCall_viii:J4,dynCall_v:L4,dynCall_iiiiiiiii:N4,dynCall_iiiii:P4,dynCall_viif:R4,dynCall_viiii:T4}}) + + +// EMSCRIPTEN_END_ASM +({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "jsCall": jsCall, "invoke_iiiiiiii": invoke_iiiiiiii, "invoke_iiiiiif": invoke_iiiiiif, "invoke_vif": invoke_vif, "invoke_viiiiiifi": invoke_viiiiiifi, "invoke_vf": invoke_vf, "invoke_viiiii": invoke_viiiii, "invoke_iiiiiiiiiifiii": invoke_iiiiiiiiiifiii, "invoke_vii": invoke_vii, "invoke_iiiiiii": invoke_iiiiiii, "invoke_ii": invoke_ii, "invoke_vffffffffi": invoke_vffffffffi, "invoke_viiiiiiiiiii": invoke_viiiiiiiiiii, "invoke_viifi": invoke_viifi, "invoke_vd": invoke_vd, "invoke_iiiiiiiiiiiiii": invoke_iiiiiiiiiiiiii, "invoke_iiifi": invoke_iiifi, "invoke_if": invoke_if, "invoke_iiii": invoke_iiii, "invoke_viffff": invoke_viffff, "invoke_iiiiiiiiiiii": invoke_iiiiiiiiiiii, "invoke_viffi": invoke_viffi, "invoke_vi": invoke_vi, "invoke_vifi": invoke_vifi, "invoke_vifff": invoke_vifff, "invoke_fii": invoke_fii, "invoke_vdd": invoke_vdd, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_iiiiifi": invoke_iiiiifi, "invoke_viff": invoke_viff, "invoke_iiiiiiiiiiiii": invoke_iiiiiiiiiiiii, "invoke_iiiifi": invoke_iiiifi, "invoke_iif": invoke_iif, "invoke_viiiiiii": invoke_viiiiiii, "invoke_fiiff": invoke_fiiff, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_viiiiiiiiii": invoke_viiiiiiiiii, "invoke_iii": invoke_iii, "invoke_viiiiii": invoke_viiiiii, "invoke_vfi": invoke_vfi, "invoke_f": invoke_f, "invoke_i": invoke_i, "invoke_vff": invoke_vff, "invoke_vffff": invoke_vffff, "invoke_iiiiii": invoke_iiiiii, "invoke_vdddddd": invoke_vdddddd, "invoke_viii": invoke_viii, "invoke_v": invoke_v, "invoke_iiiiiiiii": invoke_iiiiiiiii, "invoke_iiiii": invoke_iiiii, "invoke_viif": invoke_viif, "invoke_viiii": invoke_viiii, "_getaddrinfo": _getaddrinfo, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "__scanString": __scanString, "_fclose": _fclose, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_SDL_JoystickNumBalls": _SDL_JoystickNumBalls, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_SDL_ShowCursor": _SDL_ShowCursor, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_send": _send, "_mktime": _mktime, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_dlerror": _dlerror, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_glCompileShader": _glCompileShader, "_isspace": _isspace, "_localtime": _localtime, "_emscripten_glFrustum": _emscripten_glFrustum, "_Sys_LowPhysicalMemory": _Sys_LowPhysicalMemory, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_recvfrom": _recvfrom, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_glCreateShader": _glCreateShader, "_round": _round, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_snprintf": _snprintf, "_glHint": _glHint, "_SDL_AudioDriverName": _SDL_AudioDriverName, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_alSource3f": _alSource3f, "_clock": _clock, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_glDeleteProgram": _glDeleteProgram, "_glLoadIdentity": _glLoadIdentity, "_alSourcePlay": _alSourcePlay, "_glColor3f": _glColor3f, "_glVertex3f": _glVertex3f, "_SDL_VideoDriverName": _SDL_VideoDriverName, "_copysign": _copysign, "_localtime_r": _localtime_r, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glGetString": _glGetString, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_dlopen": _dlopen, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_Sys_SetEnv": _Sys_SetEnv, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_glBegin": _glBegin, "_alSourceStop": _alSourceStop, "_select": _select, "_llvm_pow_f32": _llvm_pow_f32, "_sysconf": _sysconf, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_glClear": _glClear, "_SDL_JoystickGetBall": _SDL_JoystickGetBall, "_Sys_PlatformInit": _Sys_PlatformInit, "_Sys_DefaultHomePath": _Sys_DefaultHomePath, "_SDL_GetAppState": _SDL_GetAppState, "_glIsEnabled": _glIsEnabled, "_alSourceUnqueueBuffers": _alSourceUnqueueBuffers, "_SDL_GetError": _SDL_GetError, "_alGetSourcef": _alGetSourcef, "_alGetSourcei": _alGetSourcei, "_SDL_GetVideoSurface": _SDL_GetVideoSurface, "_SDL_WM_SetCaption": _SDL_WM_SetCaption, "_VM_ResumeCompiled": _VM_ResumeCompiled, "___errno_location": ___errno_location, "_strerror": _strerror, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "__parseInt": __parseInt, "_Sys_RandomBytes": _Sys_RandomBytes, "_SDL_EnableUNICODE": _SDL_EnableUNICODE, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_emscripten_glHint": _emscripten_glHint, "_dlsym": _dlsym, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_abort": _abort, "_fprintf": _fprintf, "_tan": _tan, "_alGenBuffers": _alGenBuffers, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_strncat": _strncat, "_glEnable": _glEnable, "_alBufferData": _alBufferData, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_write": _write, "_alDopplerVelocity": _alDopplerVelocity, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_sin": _sin, "_Sys_GetCurrentUser": _Sys_GetCurrentUser, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_gethostbyname": _gethostbyname, "_ioctl": _ioctl, "_glPolygonOffset": _glPolygonOffset, "_unlink": _unlink, "__exit": __exit, "_glDepthRange": _glDepthRange, "_pwrite": _pwrite, "_VM_CallCompiled": _VM_CallCompiled, "_glDrawBuffer": _glDrawBuffer, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_atan2": _atan2, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_SDL_JoystickNumHats": _SDL_JoystickNumHats, "_SDL_JoystickOpen": _SDL_JoystickOpen, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_fwrite": _fwrite, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_SDL_WarpMouse": _SDL_WarpMouse, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "_SDL_UnlockAudio": _SDL_UnlockAudio, "_SDL_HasAltiVec": _SDL_HasAltiVec, "_alcGetString": _alcGetString, "__inet_ntop6_raw": __inet_ntop6_raw, "_SDL_SetGamma": _SDL_SetGamma, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_alSourceQueueBuffers": _alSourceQueueBuffers, "_glClearStencil": _glClearStencil, "_alcIsExtensionPresent": _alcIsExtensionPresent, "_glGenTextures": _glGenTextures, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_SDL_SetGammaRamp": _SDL_SetGammaRamp, "_fmod": _fmod, "_sendto": _sendto, "_emscripten_glClear": _emscripten_glClear, "_memchr": _memchr, "_llvm_va_end": _llvm_va_end, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_glVertexAttribPointer": _glVertexAttribPointer, "_connect": _connect, "_SDL_GetKeyboardState": _SDL_GetKeyboardState, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "_emscripten_glFrontFace": _emscripten_glFrontFace, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_exit_with_live_runtime": _emscripten_exit_with_live_runtime, "_sprintf": _sprintf, "_strrchr": _strrchr, "_glTexEnvf": _glTexEnvf, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_ferror": _ferror, "_llvm_uadd_with_overflow_i32": _llvm_uadd_with_overflow_i32, "_glCopyTexImage2D": _glCopyTexImage2D, "_asctime_r": _asctime_r, "_recv": _recv, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_putchar": _putchar, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_Sys_GetClipboardData": _Sys_GetClipboardData, "_floorf": _floorf, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_rint": _rint, "_alcCreateContext": _alcCreateContext, "_alcCloseDevice": _alcCloseDevice, "_SDL_SetVideoMode": _SDL_SetVideoMode, "_open": _open, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glClearDepth": _emscripten_glClearDepth, "_isalnum": _isalnum, "_SDL_GetVideoInfo": _SDL_GetVideoInfo, "_exp2": _exp2, "_qsort": _qsort, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glScissor": _emscripten_glScissor, "_SDL_WM_IconifyWindow": _SDL_WM_IconifyWindow, "_emscripten_glEnable": _emscripten_glEnable, "_glPolygonMode": _glPolygonMode, "_emscripten_glBufferData": _emscripten_glBufferData, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_strerror_r": _strerror_r, "_SDL_Quit": _SDL_Quit, "_llvm_bswap_i32": _llvm_bswap_i32, "_bind": _bind, "_SDL_OpenAudio": _SDL_OpenAudio, "_vsnprintf": _vsnprintf, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_alDopplerFactor": _alDopplerFactor, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_SDL_GetKeyName": _SDL_GetKeyName, "_glColor4f": _glColor4f, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "___buildEnvironment": ___buildEnvironment, "_Sys_ListFiles": _Sys_ListFiles, "_fseek": _fseek, "_glFinish": _glFinish, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glCullFace": _glCullFace, "_SDL_ListModes": _SDL_ListModes, "_glViewport": _glViewport, "_SDL_Linked_Version": _SDL_Linked_Version, "_VM_IsSuspendedCompiled": _VM_IsSuspendedCompiled, "_if_nametoindex": _if_nametoindex, "_strpbrk": _strpbrk, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_Sys_Milliseconds": _Sys_Milliseconds, "_glClearDepth": _glClearDepth, "__inet_ntop4_raw": __inet_ntop4_raw, "_emscripten_glIsShader": _emscripten_glIsShader, "_glTexParameterf": _glTexParameterf, "_glTexParameteri": _glTexParameteri, "_emscripten_glColorMask": _emscripten_glColorMask, "_exp": _exp, "_Sys_FS_Startup": _Sys_FS_Startup, "_SDL_JoystickUpdate": _SDL_JoystickUpdate, "_Sys_Mkfifo": _Sys_Mkfifo, "_vfprintf": _vfprintf, "_SDL_JoystickGetAxis": _SDL_JoystickGetAxis, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_SDL_JoystickGetButton": _SDL_JoystickGetButton, "_glLinkProgram": _glLinkProgram, "_glBindTexture": _glBindTexture, "_strtol": _strtol, "_fputc": _fputc, "_SDL_GL_GetProcAddress": _SDL_GL_GetProcAddress, "_glDetachShader": _glDetachShader, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_fputs": _fputs, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_glDeleteTextures": _glDeleteTextures, "_SDL_NumJoysticks": _SDL_NumJoysticks, "_ceil": _ceil, "_Sys_ErrorDialog": _Sys_ErrorDialog, "_emscripten_glViewport": _emscripten_glViewport, "_SDL_PumpEvents": _SDL_PumpEvents, "_dlclose": _dlclose, "_llvm_pow_f64": _llvm_pow_f64, "_fileno": _fileno, "_SDL_PauseAudio": _SDL_PauseAudio, "_remove": _remove, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glStencilOp": _emscripten_glStencilOp, "_alcDestroyContext": _alcDestroyContext, "_glTexSubImage2D": _glTexSubImage2D, "_glDisable": _glDisable, "_VM_Compile": _VM_Compile, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "_alDeleteBuffers": _alDeleteBuffers, "_SDL_JoystickClose": _SDL_JoystickClose, "_SDL_CloseAudio": _SDL_CloseAudio, "_close": _close, "_SDL_HasRDTSC": _SDL_HasRDTSC, "_strchr": _strchr, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_VM_SuspendCompiled": _VM_SuspendCompiled, "___setErrNo": ___setErrNo, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_Sys_Cwd": _Sys_Cwd, "_glAttachShader": _glAttachShader, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_glDrawElements": _glDrawElements, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_setsockopt": _setsockopt, "_cos": _cos, "_SDL_JoystickGetHat": _SDL_JoystickGetHat, "_Sys_FS_Shutdown": _Sys_FS_Shutdown, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_glReadBuffer": _glReadBuffer, "_mkport": _mkport, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_alSourcefv": _alSourcefv, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_tzset": _tzset, "_fabsf": _fabsf, "__inet_pton4_raw": __inet_pton4_raw, "_glUseProgram": _glUseProgram, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_toupper": _toupper, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_glVertex3fv": _glVertex3fv, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_SDL_GL_SetAttribute": _SDL_GL_SetAttribute, "_gethostname": _gethostname, "_emscripten_glClearColor": _emscripten_glClearColor, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_alDistanceModel": _alDistanceModel, "_Sys_PlatformExit": _Sys_PlatformExit, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_glReadPixels": _glReadPixels, "_SDL_HasSSE": _SDL_HasSSE, "_alListenerfv": _alListenerfv, "_gai_strerror": _gai_strerror, "__formatString": __formatString, "_SDL_GL_SwapBuffers": _SDL_GL_SwapBuffers, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_alGenSources": _alGenSources, "_glStencilFunc": _glStencilFunc, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glCullFace": _emscripten_glCullFace, "_rename": _rename, "_SDL_QuitSubSystem": _SDL_QuitSubSystem, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_srand": _srand, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_alDeleteSources": _alDeleteSources, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "__write_sockaddr": __write_sockaddr, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_fabs": _fabs, "_sqrt": _sqrt, "_Sys_GLimpSafeInit": _Sys_GLimpSafeInit, "_glBlendFunc": _glBlendFunc, "_ceilf": _ceilf, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_longjmp": _longjmp, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_VM_Destroy": _VM_Destroy, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_Sys_GLimpInit": _Sys_GLimpInit, "_glEnd": _glEnd, "_glScissor": _glScissor, "_glGetBooleanv": _glGetBooleanv, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDisable": _emscripten_glDisable, "_llvm_lifetime_end": _llvm_lifetime_end, "_lseek": _lseek, "_glClearColor": _glClearColor, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_fflush": _fflush, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_SDL_Has3DNow": _SDL_Has3DNow, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "__inet_pton6_raw": __inet_pton6_raw, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glGetError": _emscripten_glGetError, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_SDL_WasInit": _SDL_WasInit, "_read": _read, "_alSourcei": _alSourcei, "_alSourcef": _alSourcef, "_strstr": _strstr, "_ctime": _ctime, "_fsync": _fsync, "_emscripten_glVertex3f": _emscripten_glVertex3f, "_signal": _signal, "_glDepthFunc": _glDepthFunc, "_SDL_LockAudio": _SDL_LockAudio, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_sscanf": _sscanf, "_SDL_JoystickName": _SDL_JoystickName, "_alGetError": _alGetError, "_SDL_EnableKeyRepeat": _SDL_EnableKeyRepeat, "_Sys_Mkdir": _Sys_Mkdir, "_Sys_Dialog": _Sys_Dialog, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_glColorMask": _glColorMask, "__getFloat": __getFloat, "_alcMakeContextCurrent": _alcMakeContextCurrent, "_freeaddrinfo": _freeaddrinfo, "_pread": _pread, "_SDL_JoystickNumAxes": _SDL_JoystickNumAxes, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_Sys_PID": _Sys_PID, "_SDL_PeepEvents": _SDL_PeepEvents, "_ftell": _ftell, "_exit": _exit, "_asctime": _asctime, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_alcOpenDevice": _alcOpenDevice, "_glBindAttribLocation": _glBindAttribLocation, "_SDL_WM_GrabInput": _SDL_WM_GrabInput, "_getnameinfo": _getnameinfo, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_socket": _socket, "_SDL_HasSSE2": _SDL_HasSSE2, "_SDL_Init": _SDL_Init, "_acos": _acos, "_Sys_FreeFileList": _Sys_FreeFileList, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_SDL_JoystickNumButtons": _SDL_JoystickNumButtons, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_glShaderSource": _glShaderSource, "_fopen": _fopen, "_sqrtf": _sqrtf, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_log": _log, "_SDL_PollEvent": _SDL_PollEvent, "_glActiveTexture": _glActiveTexture, "_rmdir": _rmdir, "_glBindBuffer": _glBindBuffer, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_getenv": _getenv, "_glGetError": _glGetError, "_atoi": _atoi, "_alGetString": _alGetString, "_glStencilOp": _glStencilOp, "_glGetFloatv": _glGetFloatv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_Sys_PIDIsRunning": _Sys_PIDIsRunning, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_SDL_HasMMX": _SDL_HasMMX, "_sbrk": _sbrk, "_glGetIntegerv": _glGetIntegerv, "_llvm_lifetime_start": _llvm_lifetime_start, "_emscripten_glColor4f": _emscripten_glColor4f, "_htonl": _htonl, "_glTexImage2D": _glTexImage2D, "_glStencilMask": _glStencilMask, "_fread": _fread, "_SDL_WM_ToggleFullScreen": _SDL_WM_ToggleFullScreen, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "__read_sockaddr": __read_sockaddr, "_htons": _htons, "__reallyNegative": __reallyNegative, "_glTexParameterfv": _glTexParameterfv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_floor": _floor, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_Sys_Dirname": _Sys_Dirname, "_SDL_JoystickEventState": _SDL_JoystickEventState, "_glDepthMask": _glDepthMask, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_setvbuf": _setvbuf, "_llvm_bswap_i16": _llvm_bswap_i16, "_time": _time, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_Sys_FOpen": _Sys_FOpen, "_emscripten_glCompileShader": _emscripten_glCompileShader, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "cttz_i8": cttz_i8, "ctlz_i8": ctlz_i8, "___rand_seed": ___rand_seed, "NaN": NaN, "Infinity": Infinity, "_stderr": _stderr, "_stdout": _stdout, "_in6addr_any": _in6addr_any }, buffer); +var _strlen = Module["_strlen"] = asm["_strlen"]; +var _strcat = Module["_strcat"] = asm["_strcat"]; +var _main = Module["_main"] = asm["_main"]; +var _Z_Free = Module["_Z_Free"] = asm["_Z_Free"]; +var _calloc = Module["_calloc"] = asm["_calloc"]; +var _rand_r = Module["_rand_r"] = asm["_rand_r"]; +var _Z_Malloc = Module["_Z_Malloc"] = asm["_Z_Malloc"]; +var _strncpy = Module["_strncpy"] = asm["_strncpy"]; +var _Com_Error = Module["_Com_Error"] = asm["_Com_Error"]; +var _memset = Module["_memset"] = asm["_memset"]; +var _atof = Module["_atof"] = asm["_atof"]; +var _memcpy = Module["_memcpy"] = asm["_memcpy"]; +var _VM_GetCurrent = Module["_VM_GetCurrent"] = asm["_VM_GetCurrent"]; +var _Com_ProxyCallback = Module["_Com_ProxyCallback"] = asm["_Com_ProxyCallback"]; +var _VM_SetCurrent = Module["_VM_SetCurrent"] = asm["_VM_SetCurrent"]; +var _realloc = Module["_realloc"] = asm["_realloc"]; +var _S_Malloc = Module["_S_Malloc"] = asm["_S_Malloc"]; +var _emscripten_GetProcAddress = Module["_emscripten_GetProcAddress"] = asm["_emscripten_GetProcAddress"]; +var _rand = Module["_rand"] = asm["_rand"]; +var _testSetjmp = Module["_testSetjmp"] = asm["_testSetjmp"]; +var _saveSetjmp = Module["_saveSetjmp"] = asm["_saveSetjmp"]; +var _free = Module["_free"] = asm["_free"]; +var _Com_Printf = Module["_Com_Printf"] = asm["_Com_Printf"]; +var _memmove = Module["_memmove"] = asm["_memmove"]; +var _tolower = Module["_tolower"] = asm["_tolower"]; +var _Cvar_VariableString = Module["_Cvar_VariableString"] = asm["_Cvar_VariableString"]; +var _malloc = Module["_malloc"] = asm["_malloc"]; +var _Cvar_Set = Module["_Cvar_Set"] = asm["_Cvar_Set"]; +var _llvm_ctlz_i32 = Module["_llvm_ctlz_i32"] = asm["_llvm_ctlz_i32"]; +var _Com_GetCDN = Module["_Com_GetCDN"] = asm["_Com_GetCDN"]; +var _Com_GetManifest = Module["_Com_GetManifest"] = asm["_Com_GetManifest"]; +var _strcpy = Module["_strcpy"] = asm["_strcpy"]; +var runPostSets = Module["runPostSets"] = asm["runPostSets"]; +var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = asm["dynCall_iiiiiiii"]; +var dynCall_iiiiiif = Module["dynCall_iiiiiif"] = asm["dynCall_iiiiiif"]; +var dynCall_vif = Module["dynCall_vif"] = asm["dynCall_vif"]; +var dynCall_viiiiiifi = Module["dynCall_viiiiiifi"] = asm["dynCall_viiiiiifi"]; +var dynCall_vf = Module["dynCall_vf"] = asm["dynCall_vf"]; +var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"]; +var dynCall_iiiiiiiiiifiii = Module["dynCall_iiiiiiiiiifiii"] = asm["dynCall_iiiiiiiiiifiii"]; +var dynCall_vii = Module["dynCall_vii"] = asm["dynCall_vii"]; +var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = asm["dynCall_iiiiiii"]; +var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"]; +var dynCall_vffffffffi = Module["dynCall_vffffffffi"] = asm["dynCall_vffffffffi"]; +var dynCall_viiiiiiiiiii = Module["dynCall_viiiiiiiiiii"] = asm["dynCall_viiiiiiiiiii"]; +var dynCall_viifi = Module["dynCall_viifi"] = asm["dynCall_viifi"]; +var dynCall_vd = Module["dynCall_vd"] = asm["dynCall_vd"]; +var dynCall_iiiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiiii"] = asm["dynCall_iiiiiiiiiiiiii"]; +var dynCall_iiifi = Module["dynCall_iiifi"] = asm["dynCall_iiifi"]; +var dynCall_if = Module["dynCall_if"] = asm["dynCall_if"]; +var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"]; +var dynCall_viffff = Module["dynCall_viffff"] = asm["dynCall_viffff"]; +var dynCall_iiiiiiiiiiii = Module["dynCall_iiiiiiiiiiii"] = asm["dynCall_iiiiiiiiiiii"]; +var dynCall_viffi = Module["dynCall_viffi"] = asm["dynCall_viffi"]; +var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"]; +var dynCall_vifi = Module["dynCall_vifi"] = asm["dynCall_vifi"]; +var dynCall_vifff = Module["dynCall_vifff"] = asm["dynCall_vifff"]; +var dynCall_fii = Module["dynCall_fii"] = asm["dynCall_fii"]; +var dynCall_vdd = Module["dynCall_vdd"] = asm["dynCall_vdd"]; +var dynCall_viiiiiiii = Module["dynCall_viiiiiiii"] = asm["dynCall_viiiiiiii"]; +var dynCall_iiiiifi = Module["dynCall_iiiiifi"] = asm["dynCall_iiiiifi"]; +var dynCall_viff = Module["dynCall_viff"] = asm["dynCall_viff"]; +var dynCall_iiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiii"] = asm["dynCall_iiiiiiiiiiiii"]; +var dynCall_iiiifi = Module["dynCall_iiiifi"] = asm["dynCall_iiiifi"]; +var dynCall_iif = Module["dynCall_iif"] = asm["dynCall_iif"]; +var dynCall_viiiiiii = Module["dynCall_viiiiiii"] = asm["dynCall_viiiiiii"]; +var dynCall_fiiff = Module["dynCall_fiiff"] = asm["dynCall_fiiff"]; +var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = asm["dynCall_viiiiiiiii"]; +var dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = asm["dynCall_viiiiiiiiii"]; +var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"]; +var dynCall_viiiiii = Module["dynCall_viiiiii"] = asm["dynCall_viiiiii"]; +var dynCall_vfi = Module["dynCall_vfi"] = asm["dynCall_vfi"]; +var dynCall_f = Module["dynCall_f"] = asm["dynCall_f"]; +var dynCall_i = Module["dynCall_i"] = asm["dynCall_i"]; +var dynCall_vff = Module["dynCall_vff"] = asm["dynCall_vff"]; +var dynCall_vffff = Module["dynCall_vffff"] = asm["dynCall_vffff"]; +var dynCall_iiiiii = Module["dynCall_iiiiii"] = asm["dynCall_iiiiii"]; +var dynCall_vdddddd = Module["dynCall_vdddddd"] = asm["dynCall_vdddddd"]; +var dynCall_viii = Module["dynCall_viii"] = asm["dynCall_viii"]; +var dynCall_v = Module["dynCall_v"] = asm["dynCall_v"]; +var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = asm["dynCall_iiiiiiiii"]; +var dynCall_iiiii = Module["dynCall_iiiii"] = asm["dynCall_iiiii"]; +var dynCall_viif = Module["dynCall_viif"] = asm["dynCall_viif"]; +var dynCall_viiii = Module["dynCall_viiii"] = asm["dynCall_viiii"]; + +Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; +Runtime.stackSave = function() { return asm['stackSave']() }; +Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; + +// TODO: strip out parts of this we do not need + +//======= begin closure i64 code ======= + +// Copyright 2009 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview Defines a Long class for representing a 64-bit two's-complement + * integer value, which faithfully simulates the behavior of a Java "long". This + * implementation is derived from LongLib in GWT. + * + */ + +var i64Math = (function() { // Emscripten wrapper + var goog = { math: {} }; + + + /** + * Constructs a 64-bit two's-complement integer, given its low and high 32-bit + * values as *signed* integers. See the from* functions below for more + * convenient ways of constructing Longs. + * + * The internal representation of a long is the two given signed, 32-bit values. + * We use 32-bit pieces because these are the size of integers on which + * Javascript performs bit-operations. For operations like addition and + * multiplication, we split each number into 16-bit pieces, which can easily be + * multiplied within Javascript's floating-point representation without overflow + * or change in sign. + * + * In the algorithms below, we frequently reduce the negative case to the + * positive case by negating the input(s) and then post-processing the result. + * Note that we must ALWAYS check specially whether those values are MIN_VALUE + * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as + * a positive number, it overflows back into a negative). Not handling this + * case would often result in infinite recursion. + * + * @param {number} low The low (signed) 32 bits of the long. + * @param {number} high The high (signed) 32 bits of the long. + * @constructor + */ + goog.math.Long = function(low, high) { + /** + * @type {number} + * @private + */ + this.low_ = low | 0; // force into 32 signed bits. + + /** + * @type {number} + * @private + */ + this.high_ = high | 0; // force into 32 signed bits. + }; + + + // NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the + // from* methods on which they depend. + + + /** + * A cache of the Long representations of small integer values. + * @type {!Object} + * @private + */ + goog.math.Long.IntCache_ = {}; + + + /** + * Returns a Long representing the given (32-bit) integer value. + * @param {number} value The 32-bit integer in question. + * @return {!goog.math.Long} The corresponding Long value. + */ + goog.math.Long.fromInt = function(value) { + if (-128 <= value && value < 128) { + var cachedObj = goog.math.Long.IntCache_[value]; + if (cachedObj) { + return cachedObj; + } + } + + var obj = new goog.math.Long(value | 0, value < 0 ? -1 : 0); + if (-128 <= value && value < 128) { + goog.math.Long.IntCache_[value] = obj; + } + return obj; + }; + + + /** + * Returns a Long representing the given value, provided that it is a finite + * number. Otherwise, zero is returned. + * @param {number} value The number in question. + * @return {!goog.math.Long} The corresponding Long value. + */ + goog.math.Long.fromNumber = function(value) { + if (isNaN(value) || !isFinite(value)) { + return goog.math.Long.ZERO; + } else if (value <= -goog.math.Long.TWO_PWR_63_DBL_) { + return goog.math.Long.MIN_VALUE; + } else if (value + 1 >= goog.math.Long.TWO_PWR_63_DBL_) { + return goog.math.Long.MAX_VALUE; + } else if (value < 0) { + return goog.math.Long.fromNumber(-value).negate(); + } else { + return new goog.math.Long( + (value % goog.math.Long.TWO_PWR_32_DBL_) | 0, + (value / goog.math.Long.TWO_PWR_32_DBL_) | 0); + } + }; + + + /** + * Returns a Long representing the 64-bit integer that comes by concatenating + * the given high and low bits. Each is assumed to use 32 bits. + * @param {number} lowBits The low 32-bits. + * @param {number} highBits The high 32-bits. + * @return {!goog.math.Long} The corresponding Long value. + */ + goog.math.Long.fromBits = function(lowBits, highBits) { + return new goog.math.Long(lowBits, highBits); + }; + + + /** + * Returns a Long representation of the given string, written using the given + * radix. + * @param {string} str The textual representation of the Long. + * @param {number=} opt_radix The radix in which the text is written. + * @return {!goog.math.Long} The corresponding Long value. + */ + goog.math.Long.fromString = function(str, opt_radix) { + if (str.length == 0) { + throw Error('number format error: empty string'); + } + + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (str.charAt(0) == '-') { + return goog.math.Long.fromString(str.substring(1), radix).negate(); + } else if (str.indexOf('-') >= 0) { + throw Error('number format error: interior "-" character: ' + str); + } + + // Do several (8) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 8)); + + var result = goog.math.Long.ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i); + var value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = goog.math.Long.fromNumber(Math.pow(radix, size)); + result = result.multiply(power).add(goog.math.Long.fromNumber(value)); + } else { + result = result.multiply(radixToPower); + result = result.add(goog.math.Long.fromNumber(value)); + } + } + return result; + }; + + + // NOTE: the compiler should inline these constant values below and then remove + // these variables, so there should be no runtime penalty for these. + + + /** + * Number used repeated below in calculations. This must appear before the + * first call to any from* function below. + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_16_DBL_ = 1 << 16; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_24_DBL_ = 1 << 24; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_32_DBL_ = + goog.math.Long.TWO_PWR_16_DBL_ * goog.math.Long.TWO_PWR_16_DBL_; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_31_DBL_ = + goog.math.Long.TWO_PWR_32_DBL_ / 2; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_48_DBL_ = + goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_16_DBL_; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_64_DBL_ = + goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_32_DBL_; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_63_DBL_ = + goog.math.Long.TWO_PWR_64_DBL_ / 2; + + + /** @type {!goog.math.Long} */ + goog.math.Long.ZERO = goog.math.Long.fromInt(0); + + + /** @type {!goog.math.Long} */ + goog.math.Long.ONE = goog.math.Long.fromInt(1); + + + /** @type {!goog.math.Long} */ + goog.math.Long.NEG_ONE = goog.math.Long.fromInt(-1); + + + /** @type {!goog.math.Long} */ + goog.math.Long.MAX_VALUE = + goog.math.Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); + + + /** @type {!goog.math.Long} */ + goog.math.Long.MIN_VALUE = goog.math.Long.fromBits(0, 0x80000000 | 0); + + + /** + * @type {!goog.math.Long} + * @private + */ + goog.math.Long.TWO_PWR_24_ = goog.math.Long.fromInt(1 << 24); + + + /** @return {number} The value, assuming it is a 32-bit integer. */ + goog.math.Long.prototype.toInt = function() { + return this.low_; + }; + + + /** @return {number} The closest floating-point representation to this value. */ + goog.math.Long.prototype.toNumber = function() { + return this.high_ * goog.math.Long.TWO_PWR_32_DBL_ + + this.getLowBitsUnsigned(); + }; + + + /** + * @param {number=} opt_radix The radix in which the text should be written. + * @return {string} The textual representation of this value. + */ + goog.math.Long.prototype.toString = function(opt_radix) { + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (this.isZero()) { + return '0'; + } + + if (this.isNegative()) { + if (this.equals(goog.math.Long.MIN_VALUE)) { + // We need to change the Long value before it can be negated, so we remove + // the bottom-most digit in this base and then recurse to do the rest. + var radixLong = goog.math.Long.fromNumber(radix); + var div = this.div(radixLong); + var rem = div.multiply(radixLong).subtract(this); + return div.toString(radix) + rem.toInt().toString(radix); + } else { + return '-' + this.negate().toString(radix); + } + } + + // Do several (6) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 6)); + + var rem = this; + var result = ''; + while (true) { + var remDiv = rem.div(radixToPower); + var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); + var digits = intval.toString(radix); + + rem = remDiv; + if (rem.isZero()) { + return digits + result; + } else { + while (digits.length < 6) { + digits = '0' + digits; + } + result = '' + digits + result; + } + } + }; + + + /** @return {number} The high 32-bits as a signed value. */ + goog.math.Long.prototype.getHighBits = function() { + return this.high_; + }; + + + /** @return {number} The low 32-bits as a signed value. */ + goog.math.Long.prototype.getLowBits = function() { + return this.low_; + }; + + + /** @return {number} The low 32-bits as an unsigned value. */ + goog.math.Long.prototype.getLowBitsUnsigned = function() { + return (this.low_ >= 0) ? + this.low_ : goog.math.Long.TWO_PWR_32_DBL_ + this.low_; + }; + + + /** + * @return {number} Returns the number of bits needed to represent the absolute + * value of this Long. + */ + goog.math.Long.prototype.getNumBitsAbs = function() { + if (this.isNegative()) { + if (this.equals(goog.math.Long.MIN_VALUE)) { + return 64; + } else { + return this.negate().getNumBitsAbs(); + } + } else { + var val = this.high_ != 0 ? this.high_ : this.low_; + for (var bit = 31; bit > 0; bit--) { + if ((val & (1 << bit)) != 0) { + break; + } + } + return this.high_ != 0 ? bit + 33 : bit + 1; + } + }; + + + /** @return {boolean} Whether this value is zero. */ + goog.math.Long.prototype.isZero = function() { + return this.high_ == 0 && this.low_ == 0; + }; + + + /** @return {boolean} Whether this value is negative. */ + goog.math.Long.prototype.isNegative = function() { + return this.high_ < 0; + }; + + + /** @return {boolean} Whether this value is odd. */ + goog.math.Long.prototype.isOdd = function() { + return (this.low_ & 1) == 1; + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long equals the other. + */ + goog.math.Long.prototype.equals = function(other) { + return (this.high_ == other.high_) && (this.low_ == other.low_); + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long does not equal the other. + */ + goog.math.Long.prototype.notEquals = function(other) { + return (this.high_ != other.high_) || (this.low_ != other.low_); + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long is less than the other. + */ + goog.math.Long.prototype.lessThan = function(other) { + return this.compare(other) < 0; + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long is less than or equal to the other. + */ + goog.math.Long.prototype.lessThanOrEqual = function(other) { + return this.compare(other) <= 0; + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long is greater than the other. + */ + goog.math.Long.prototype.greaterThan = function(other) { + return this.compare(other) > 0; + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long is greater than or equal to the other. + */ + goog.math.Long.prototype.greaterThanOrEqual = function(other) { + return this.compare(other) >= 0; + }; + + + /** + * Compares this Long with the given one. + * @param {goog.math.Long} other Long to compare against. + * @return {number} 0 if they are the same, 1 if the this is greater, and -1 + * if the given one is greater. + */ + goog.math.Long.prototype.compare = function(other) { + if (this.equals(other)) { + return 0; + } + + var thisNeg = this.isNegative(); + var otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) { + return -1; + } + if (!thisNeg && otherNeg) { + return 1; + } + + // at this point, the signs are the same, so subtraction will not overflow + if (this.subtract(other).isNegative()) { + return -1; + } else { + return 1; + } + }; + + + /** @return {!goog.math.Long} The negation of this value. */ + goog.math.Long.prototype.negate = function() { + if (this.equals(goog.math.Long.MIN_VALUE)) { + return goog.math.Long.MIN_VALUE; + } else { + return this.not().add(goog.math.Long.ONE); + } + }; + + + /** + * Returns the sum of this and the given Long. + * @param {goog.math.Long} other Long to add to this one. + * @return {!goog.math.Long} The sum of this and the given Long. + */ + goog.math.Long.prototype.add = function(other) { + // Divide each number into 4 chunks of 16 bits, and then sum the chunks. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); + }; + + + /** + * Returns the difference of this and the given Long. + * @param {goog.math.Long} other Long to subtract from this. + * @return {!goog.math.Long} The difference of this and the given Long. + */ + goog.math.Long.prototype.subtract = function(other) { + return this.add(other.negate()); + }; + + + /** + * Returns the product of this and the given long. + * @param {goog.math.Long} other Long to multiply with this. + * @return {!goog.math.Long} The product of this and the other. + */ + goog.math.Long.prototype.multiply = function(other) { + if (this.isZero()) { + return goog.math.Long.ZERO; + } else if (other.isZero()) { + return goog.math.Long.ZERO; + } + + if (this.equals(goog.math.Long.MIN_VALUE)) { + return other.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO; + } else if (other.equals(goog.math.Long.MIN_VALUE)) { + return this.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().multiply(other.negate()); + } else { + return this.negate().multiply(other).negate(); + } + } else if (other.isNegative()) { + return this.multiply(other.negate()).negate(); + } + + // If both longs are small, use float multiplication + if (this.lessThan(goog.math.Long.TWO_PWR_24_) && + other.lessThan(goog.math.Long.TWO_PWR_24_)) { + return goog.math.Long.fromNumber(this.toNumber() * other.toNumber()); + } + + // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. + // We can skip products that would overflow. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); + }; + + + /** + * Returns this Long divided by the given one. + * @param {goog.math.Long} other Long by which to divide. + * @return {!goog.math.Long} This Long divided by the given one. + */ + goog.math.Long.prototype.div = function(other) { + if (other.isZero()) { + throw Error('division by zero'); + } else if (this.isZero()) { + return goog.math.Long.ZERO; + } + + if (this.equals(goog.math.Long.MIN_VALUE)) { + if (other.equals(goog.math.Long.ONE) || + other.equals(goog.math.Long.NEG_ONE)) { + return goog.math.Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + } else if (other.equals(goog.math.Long.MIN_VALUE)) { + return goog.math.Long.ONE; + } else { + // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. + var halfThis = this.shiftRight(1); + var approx = halfThis.div(other).shiftLeft(1); + if (approx.equals(goog.math.Long.ZERO)) { + return other.isNegative() ? goog.math.Long.ONE : goog.math.Long.NEG_ONE; + } else { + var rem = this.subtract(other.multiply(approx)); + var result = approx.add(rem.div(other)); + return result; + } + } + } else if (other.equals(goog.math.Long.MIN_VALUE)) { + return goog.math.Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().div(other.negate()); + } else { + return this.negate().div(other).negate(); + } + } else if (other.isNegative()) { + return this.div(other.negate()).negate(); + } + + // Repeat the following until the remainder is less than other: find a + // floating-point that approximates remainder / other *from below*, add this + // into the result, and subtract it from the remainder. It is critical that + // the approximate value is less than or equal to the real value so that the + // remainder never becomes negative. + var res = goog.math.Long.ZERO; + var rem = this; + while (rem.greaterThanOrEqual(other)) { + // Approximate the result of division. This may be a little greater or + // smaller than the actual value. + var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); + + // We will tweak the approximate result by changing it in the 48-th digit or + // the smallest non-fractional digit, whichever is larger. + var log2 = Math.ceil(Math.log(approx) / Math.LN2); + var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); + + // Decrease the approximation until it is smaller than the remainder. Note + // that if it is too large, the product overflows and is negative. + var approxRes = goog.math.Long.fromNumber(approx); + var approxRem = approxRes.multiply(other); + while (approxRem.isNegative() || approxRem.greaterThan(rem)) { + approx -= delta; + approxRes = goog.math.Long.fromNumber(approx); + approxRem = approxRes.multiply(other); + } + + // We know the answer can't be zero... and actually, zero would cause + // infinite recursion since we would make no progress. + if (approxRes.isZero()) { + approxRes = goog.math.Long.ONE; + } + + res = res.add(approxRes); + rem = rem.subtract(approxRem); + } + return res; + }; + + + /** + * Returns this Long modulo the given one. + * @param {goog.math.Long} other Long by which to mod. + * @return {!goog.math.Long} This Long modulo the given one. + */ + goog.math.Long.prototype.modulo = function(other) { + return this.subtract(this.div(other).multiply(other)); + }; + + + /** @return {!goog.math.Long} The bitwise-NOT of this value. */ + goog.math.Long.prototype.not = function() { + return goog.math.Long.fromBits(~this.low_, ~this.high_); + }; + + + /** + * Returns the bitwise-AND of this Long and the given one. + * @param {goog.math.Long} other The Long with which to AND. + * @return {!goog.math.Long} The bitwise-AND of this and the other. + */ + goog.math.Long.prototype.and = function(other) { + return goog.math.Long.fromBits(this.low_ & other.low_, + this.high_ & other.high_); + }; + + + /** + * Returns the bitwise-OR of this Long and the given one. + * @param {goog.math.Long} other The Long with which to OR. + * @return {!goog.math.Long} The bitwise-OR of this and the other. + */ + goog.math.Long.prototype.or = function(other) { + return goog.math.Long.fromBits(this.low_ | other.low_, + this.high_ | other.high_); + }; + + + /** + * Returns the bitwise-XOR of this Long and the given one. + * @param {goog.math.Long} other The Long with which to XOR. + * @return {!goog.math.Long} The bitwise-XOR of this and the other. + */ + goog.math.Long.prototype.xor = function(other) { + return goog.math.Long.fromBits(this.low_ ^ other.low_, + this.high_ ^ other.high_); + }; + + + /** + * Returns this Long with bits shifted to the left by the given amount. + * @param {number} numBits The number of bits by which to shift. + * @return {!goog.math.Long} This shifted to the left by the given amount. + */ + goog.math.Long.prototype.shiftLeft = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var low = this.low_; + if (numBits < 32) { + var high = this.high_; + return goog.math.Long.fromBits( + low << numBits, + (high << numBits) | (low >>> (32 - numBits))); + } else { + return goog.math.Long.fromBits(0, low << (numBits - 32)); + } + } + }; + + + /** + * Returns this Long with bits shifted to the right by the given amount. + * @param {number} numBits The number of bits by which to shift. + * @return {!goog.math.Long} This shifted to the right by the given amount. + */ + goog.math.Long.prototype.shiftRight = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return goog.math.Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >> numBits); + } else { + return goog.math.Long.fromBits( + high >> (numBits - 32), + high >= 0 ? 0 : -1); + } + } + }; + + + /** + * Returns this Long with bits shifted to the right by the given amount, with + * the new top bits matching the current sign bit. + * @param {number} numBits The number of bits by which to shift. + * @return {!goog.math.Long} This shifted to the right by the given amount, with + * zeros placed into the new leading bits. + */ + goog.math.Long.prototype.shiftRightUnsigned = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return goog.math.Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >>> numBits); + } else if (numBits == 32) { + return goog.math.Long.fromBits(high, 0); + } else { + return goog.math.Long.fromBits(high >>> (numBits - 32), 0); + } + } + }; + + //======= begin jsbn ======= + + var navigator = { appName: 'Modern Browser' }; // polyfill a little + + // Copyright (c) 2005 Tom Wu + // All Rights Reserved. + // http://www-cs-students.stanford.edu/~tjw/jsbn/ + + /* + * Copyright (c) 2003-2005 Tom Wu + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF + * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * In addition, the following condition applies: + * + * All redistributions must retain an intact copy of this copyright notice + * and disclaimer. + */ + + // Basic JavaScript BN library - subset useful for RSA encryption. + + // Bits per digit + var dbits; + + // JavaScript engine analysis + var canary = 0xdeadbeefcafe; + var j_lm = ((canary&0xffffff)==0xefcafe); + + // (public) Constructor + function BigInteger(a,b,c) { + if(a != null) + if("number" == typeof a) this.fromNumber(a,b,c); + else if(b == null && "string" != typeof a) this.fromString(a,256); + else this.fromString(a,b); + } + + // return new, unset BigInteger + function nbi() { return new BigInteger(null); } + + // am: Compute w_j += (x*this_i), propagate carries, + // c is initial carry, returns final carry. + // c < 3*dvalue, x < 2*dvalue, this_i < dvalue + // We need to select the fastest one that works in this environment. + + // am1: use a single mult and divide to get the high bits, + // max digit bits should be 26 because + // max internal value = 2*dvalue^2-2*dvalue (< 2^53) + function am1(i,x,w,j,c,n) { + while(--n >= 0) { + var v = x*this[i++]+w[j]+c; + c = Math.floor(v/0x4000000); + w[j++] = v&0x3ffffff; + } + return c; + } + // am2 avoids a big mult-and-extract completely. + // Max digit bits should be <= 30 because we do bitwise ops + // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) + function am2(i,x,w,j,c,n) { + var xl = x&0x7fff, xh = x>>15; + while(--n >= 0) { + var l = this[i]&0x7fff; + var h = this[i++]>>15; + var m = xh*l+h*xl; + l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); + c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); + w[j++] = l&0x3fffffff; + } + return c; + } + // Alternately, set max digit bits to 28 since some + // browsers slow down when dealing with 32-bit numbers. + function am3(i,x,w,j,c,n) { + var xl = x&0x3fff, xh = x>>14; + while(--n >= 0) { + var l = this[i]&0x3fff; + var h = this[i++]>>14; + var m = xh*l+h*xl; + l = xl*l+((m&0x3fff)<<14)+w[j]+c; + c = (l>>28)+(m>>14)+xh*h; + w[j++] = l&0xfffffff; + } + return c; + } + if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) { + BigInteger.prototype.am = am2; + dbits = 30; + } + else if(j_lm && (navigator.appName != "Netscape")) { + BigInteger.prototype.am = am1; + dbits = 26; + } + else { // Mozilla/Netscape seems to prefer am3 + BigInteger.prototype.am = am3; + dbits = 28; + } + + BigInteger.prototype.DB = dbits; + BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; + r.t = this.t; + r.s = this.s; + } + + // (protected) set from integer value x, -DV <= x < DV + function bnpFromInt(x) { + this.t = 1; + this.s = (x<0)?-1:0; + if(x > 0) this[0] = x; + else if(x < -1) this[0] = x+DV; + else this.t = 0; + } + + // return bigint initialized to value + function nbv(i) { var r = nbi(); r.fromInt(i); return r; } + + // (protected) set from string and radix + function bnpFromString(s,b) { + var k; + if(b == 16) k = 4; + else if(b == 8) k = 3; + else if(b == 256) k = 8; // byte array + else if(b == 2) k = 1; + else if(b == 32) k = 5; + else if(b == 4) k = 2; + else { this.fromRadix(s,b); return; } + this.t = 0; + this.s = 0; + var i = s.length, mi = false, sh = 0; + while(--i >= 0) { + var x = (k==8)?s[i]&0xff:intAt(s,i); + if(x < 0) { + if(s.charAt(i) == "-") mi = true; + continue; + } + mi = false; + if(sh == 0) + this[this.t++] = x; + else if(sh+k > this.DB) { + this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); + } + else + this[this.t-1] |= x<= this.DB) sh -= this.DB; + } + if(k == 8 && (s[0]&0x80) != 0) { + this.s = -1; + if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; + } + + // (public) return string representation in given radix + function bnToString(b) { + if(this.s < 0) return "-"+this.negate().toString(b); + var k; + if(b == 16) k = 4; + else if(b == 8) k = 3; + else if(b == 2) k = 1; + else if(b == 32) k = 5; + else if(b == 4) k = 2; + else return this.toRadix(b); + var km = (1< 0) { + if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } + while(i >= 0) { + if(p < k) { + d = (this[i]&((1<>(p+=this.DB-k); + } + else { + d = (this[i]>>(p-=k))&km; + if(p <= 0) { p += this.DB; --i; } + } + if(d > 0) m = true; + if(m) r += int2char(d); + } + } + return m?r:"0"; + } + + // (public) -this + function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } + + // (public) |this| + function bnAbs() { return (this.s<0)?this.negate():this; } + + // (public) return + if this > a, - if this < a, 0 if equal + function bnCompareTo(a) { + var r = this.s-a.s; + if(r != 0) return r; + var i = this.t; + r = i-a.t; + if(r != 0) return (this.s<0)?-r:r; + while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; + return 0; + } + + // returns bit length of the integer x + function nbits(x) { + var r = 1, t; + if((t=x>>>16) != 0) { x = t; r += 16; } + if((t=x>>8) != 0) { x = t; r += 8; } + if((t=x>>4) != 0) { x = t; r += 4; } + if((t=x>>2) != 0) { x = t; r += 2; } + if((t=x>>1) != 0) { x = t; r += 1; } + return r; + } + + // (public) return the number of bits in "this" + function bnBitLength() { + if(this.t <= 0) return 0; + return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); + } + + // (protected) r = this << n*DB + function bnpDLShiftTo(n,r) { + var i; + for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; + for(i = n-1; i >= 0; --i) r[i] = 0; + r.t = this.t+n; + r.s = this.s; + } + + // (protected) r = this >> n*DB + function bnpDRShiftTo(n,r) { + for(var i = n; i < this.t; ++i) r[i-n] = this[i]; + r.t = Math.max(this.t-n,0); + r.s = this.s; + } + + // (protected) r = this << n + function bnpLShiftTo(n,r) { + var bs = n%this.DB; + var cbs = this.DB-bs; + var bm = (1<= 0; --i) { + r[i+ds+1] = (this[i]>>cbs)|c; + c = (this[i]&bm)<= 0; --i) r[i] = 0; + r[ds] = c; + r.t = this.t+ds+1; + r.s = this.s; + r.clamp(); + } + + // (protected) r = this >> n + function bnpRShiftTo(n,r) { + r.s = this.s; + var ds = Math.floor(n/this.DB); + if(ds >= this.t) { r.t = 0; return; } + var bs = n%this.DB; + var cbs = this.DB-bs; + var bm = (1<>bs; + for(var i = ds+1; i < this.t; ++i) { + r[i-ds-1] |= (this[i]&bm)<>bs; + } + if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; + } + if(a.t < this.t) { + c -= a.s; + while(i < this.t) { + c += this[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c -= a[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c -= a.s; + } + r.s = (c<0)?-1:0; + if(c < -1) r[i++] = this.DV+c; + else if(c > 0) r[i++] = c; + r.t = i; + r.clamp(); + } + + // (protected) r = this * a, r != this,a (HAC 14.12) + // "this" should be the larger one if appropriate. + function bnpMultiplyTo(a,r) { + var x = this.abs(), y = a.abs(); + var i = x.t; + r.t = i+y.t; + while(--i >= 0) r[i] = 0; + for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); + r.s = 0; + r.clamp(); + if(this.s != a.s) BigInteger.ZERO.subTo(r,r); + } + + // (protected) r = this^2, r != this (HAC 14.16) + function bnpSquareTo(r) { + var x = this.abs(); + var i = r.t = 2*x.t; + while(--i >= 0) r[i] = 0; + for(i = 0; i < x.t-1; ++i) { + var c = x.am(i,x[i],r,2*i,0,1); + if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { + r[i+x.t] -= x.DV; + r[i+x.t+1] = 1; + } + } + if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); + r.s = 0; + r.clamp(); + } + + // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) + // r != q, this != m. q or r may be null. + function bnpDivRemTo(m,q,r) { + var pm = m.abs(); + if(pm.t <= 0) return; + var pt = this.abs(); + if(pt.t < pm.t) { + if(q != null) q.fromInt(0); + if(r != null) this.copyTo(r); + return; + } + if(r == null) r = nbi(); + var y = nbi(), ts = this.s, ms = m.s; + var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus + if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } + else { pm.copyTo(y); pt.copyTo(r); } + var ys = y.t; + var y0 = y[ys-1]; + if(y0 == 0) return; + var yt = y0*(1<1)?y[ys-2]>>this.F2:0); + var d1 = this.FV/yt, d2 = (1<= 0) { + r[r.t++] = 1; + r.subTo(t,r); + } + BigInteger.ONE.dlShiftTo(ys,t); + t.subTo(y,y); // "negative" y so we can replace sub with am later + while(y.t < ys) y[y.t++] = 0; + while(--j >= 0) { + // Estimate quotient digit + var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); + if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out + y.dlShiftTo(j,t); + r.subTo(t,r); + while(r[i] < --qd) r.subTo(t,r); + } + } + if(q != null) { + r.drShiftTo(ys,q); + if(ts != ms) BigInteger.ZERO.subTo(q,q); + } + r.t = ys; + r.clamp(); + if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder + if(ts < 0) BigInteger.ZERO.subTo(r,r); + } + + // (public) this mod a + function bnMod(a) { + var r = nbi(); + this.abs().divRemTo(a,null,r); + if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); + return r; + } + + // Modular reduction using "classic" algorithm + function Classic(m) { this.m = m; } + function cConvert(x) { + if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); + else return x; + } + function cRevert(x) { return x; } + function cReduce(x) { x.divRemTo(this.m,null,x); } + function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } + function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } + + Classic.prototype.convert = cConvert; + Classic.prototype.revert = cRevert; + Classic.prototype.reduce = cReduce; + Classic.prototype.mulTo = cMulTo; + Classic.prototype.sqrTo = cSqrTo; + + // (protected) return "-1/this % 2^DB"; useful for Mont. reduction + // justification: + // xy == 1 (mod m) + // xy = 1+km + // xy(2-xy) = (1+km)(1-km) + // x[y(2-xy)] = 1-k^2m^2 + // x[y(2-xy)] == 1 (mod m^2) + // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 + // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. + // JS multiply "overflows" differently from C/C++, so care is needed here. + function bnpInvDigit() { + if(this.t < 1) return 0; + var x = this[0]; + if((x&1) == 0) return 0; + var y = x&3; // y == 1/x mod 2^2 + y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 + y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 + y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 + // last step - calculate inverse mod DV directly; + // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints + y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits + // we really want the negative inverse, and -DV < y < DV + return (y>0)?this.DV-y:-y; + } + + // Montgomery reduction + function Montgomery(m) { + this.m = m; + this.mp = m.invDigit(); + this.mpl = this.mp&0x7fff; + this.mph = this.mp>>15; + this.um = (1<<(m.DB-15))-1; + this.mt2 = 2*m.t; + } + + // xR mod m + function montConvert(x) { + var r = nbi(); + x.abs().dlShiftTo(this.m.t,r); + r.divRemTo(this.m,null,r); + if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); + return r; + } + + // x/R mod m + function montRevert(x) { + var r = nbi(); + x.copyTo(r); + this.reduce(r); + return r; + } + + // x = x/R mod m (HAC 14.32) + function montReduce(x) { + while(x.t <= this.mt2) // pad x so am has enough room later + x[x.t++] = 0; + for(var i = 0; i < this.m.t; ++i) { + // faster way of calculating u0 = x[i]*mp mod DV + var j = x[i]&0x7fff; + var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; + // use am to combine the multiply-shift-add into one call + j = i+this.m.t; + x[j] += this.m.am(0,u0,x,i,0,this.m.t); + // propagate carry + while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } + } + x.clamp(); + x.drShiftTo(this.m.t,x); + if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); + } + + // r = "x^2/R mod m"; x != r + function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } + + // r = "xy/R mod m"; x,y != r + function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } + + Montgomery.prototype.convert = montConvert; + Montgomery.prototype.revert = montRevert; + Montgomery.prototype.reduce = montReduce; + Montgomery.prototype.mulTo = montMulTo; + Montgomery.prototype.sqrTo = montSqrTo; + + // (protected) true iff this is even + function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } + + // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) + function bnpExp(e,z) { + if(e > 0xffffffff || e < 1) return BigInteger.ONE; + var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; + g.copyTo(r); + while(--i >= 0) { + z.sqrTo(r,r2); + if((e&(1< 0) z.mulTo(r2,g,r); + else { var t = r; r = r2; r2 = t; } + } + return z.revert(r); + } + + // (public) this^e % m, 0 <= e < 2^32 + function bnModPowInt(e,m) { + var z; + if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); + return this.exp(e,z); + } + + // protected + BigInteger.prototype.copyTo = bnpCopyTo; + BigInteger.prototype.fromInt = bnpFromInt; + BigInteger.prototype.fromString = bnpFromString; + BigInteger.prototype.clamp = bnpClamp; + BigInteger.prototype.dlShiftTo = bnpDLShiftTo; + BigInteger.prototype.drShiftTo = bnpDRShiftTo; + BigInteger.prototype.lShiftTo = bnpLShiftTo; + BigInteger.prototype.rShiftTo = bnpRShiftTo; + BigInteger.prototype.subTo = bnpSubTo; + BigInteger.prototype.multiplyTo = bnpMultiplyTo; + BigInteger.prototype.squareTo = bnpSquareTo; + BigInteger.prototype.divRemTo = bnpDivRemTo; + BigInteger.prototype.invDigit = bnpInvDigit; + BigInteger.prototype.isEven = bnpIsEven; + BigInteger.prototype.exp = bnpExp; + + // public + BigInteger.prototype.toString = bnToString; + BigInteger.prototype.negate = bnNegate; + BigInteger.prototype.abs = bnAbs; + BigInteger.prototype.compareTo = bnCompareTo; + BigInteger.prototype.bitLength = bnBitLength; + BigInteger.prototype.mod = bnMod; + BigInteger.prototype.modPowInt = bnModPowInt; + + // "constants" + BigInteger.ZERO = nbv(0); + BigInteger.ONE = nbv(1); + + // jsbn2 stuff + + // (protected) convert from radix string + function bnpFromRadix(s,b) { + this.fromInt(0); + if(b == null) b = 10; + var cs = this.chunkSize(b); + var d = Math.pow(b,cs), mi = false, j = 0, w = 0; + for(var i = 0; i < s.length; ++i) { + var x = intAt(s,i); + if(x < 0) { + if(s.charAt(i) == "-" && this.signum() == 0) mi = true; + continue; + } + w = b*w+x; + if(++j >= cs) { + this.dMultiply(d); + this.dAddOffset(w,0); + j = 0; + w = 0; + } + } + if(j > 0) { + this.dMultiply(Math.pow(b,j)); + this.dAddOffset(w,0); + } + if(mi) BigInteger.ZERO.subTo(this,this); + } + + // (protected) return x s.t. r^x < DV + function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } + + // (public) 0 if this == 0, 1 if this > 0 + function bnSigNum() { + if(this.s < 0) return -1; + else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; + else return 1; + } + + // (protected) this *= n, this >= 0, 1 < n < DV + function bnpDMultiply(n) { + this[this.t] = this.am(0,n-1,this,0,0,this.t); + ++this.t; + this.clamp(); + } + + // (protected) this += n << w words, this >= 0 + function bnpDAddOffset(n,w) { + if(n == 0) return; + while(this.t <= w) this[this.t++] = 0; + this[w] += n; + while(this[w] >= this.DV) { + this[w] -= this.DV; + if(++w >= this.t) this[this.t++] = 0; + ++this[w]; + } + } + + // (protected) convert to radix string + function bnpToRadix(b) { + if(b == null) b = 10; + if(this.signum() == 0 || b < 2 || b > 36) return "0"; + var cs = this.chunkSize(b); + var a = Math.pow(b,cs); + var d = nbv(a), y = nbi(), z = nbi(), r = ""; + this.divRemTo(d,y,z); + while(y.signum() > 0) { + r = (a+z.intValue()).toString(b).substr(1) + r; + y.divRemTo(d,y,z); + } + return z.intValue().toString(b) + r; + } + + // (public) return value as integer + function bnIntValue() { + if(this.s < 0) { + if(this.t == 1) return this[0]-this.DV; + else if(this.t == 0) return -1; + } + else if(this.t == 1) return this[0]; + else if(this.t == 0) return 0; + // assumes 16 < DB < 32 + return ((this[1]&((1<<(32-this.DB))-1))<>= this.DB; + } + if(a.t < this.t) { + c += a.s; + while(i < this.t) { + c += this[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c += a[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += a.s; + } + r.s = (c<0)?-1:0; + if(c > 0) r[i++] = c; + else if(c < -1) r[i++] = this.DV+c; + r.t = i; + r.clamp(); + } + + BigInteger.prototype.fromRadix = bnpFromRadix; + BigInteger.prototype.chunkSize = bnpChunkSize; + BigInteger.prototype.signum = bnSigNum; + BigInteger.prototype.dMultiply = bnpDMultiply; + BigInteger.prototype.dAddOffset = bnpDAddOffset; + BigInteger.prototype.toRadix = bnpToRadix; + BigInteger.prototype.intValue = bnIntValue; + BigInteger.prototype.addTo = bnpAddTo; + + //======= end jsbn ======= + + // Emscripten wrapper + var Wrapper = { + abs: function(l, h) { + var x = new goog.math.Long(l, h); + var ret; + if (x.isNegative()) { + ret = x.negate(); + } else { + ret = x; + } + HEAP32[tempDoublePtr>>2] = ret.low_; + HEAP32[tempDoublePtr+4>>2] = ret.high_; + }, + ensureTemps: function() { + if (Wrapper.ensuredTemps) return; + Wrapper.ensuredTemps = true; + Wrapper.two32 = new BigInteger(); + Wrapper.two32.fromString('4294967296', 10); + Wrapper.two64 = new BigInteger(); + Wrapper.two64.fromString('18446744073709551616', 10); + Wrapper.temp1 = new BigInteger(); + Wrapper.temp2 = new BigInteger(); + }, + lh2bignum: function(l, h) { + var a = new BigInteger(); + a.fromString(h.toString(), 10); + var b = new BigInteger(); + a.multiplyTo(Wrapper.two32, b); + var c = new BigInteger(); + c.fromString(l.toString(), 10); + var d = new BigInteger(); + c.addTo(b, d); + return d; + }, + stringify: function(l, h, unsigned) { + var ret = new goog.math.Long(l, h).toString(); + if (unsigned && ret[0] == '-') { + // unsign slowly using jsbn bignums + Wrapper.ensureTemps(); + var bignum = new BigInteger(); + bignum.fromString(ret, 10); + ret = new BigInteger(); + Wrapper.two64.addTo(bignum, ret); + ret = ret.toString(10); + } + return ret; + }, + fromString: function(str, base, min, max, unsigned) { + Wrapper.ensureTemps(); + var bignum = new BigInteger(); + bignum.fromString(str, base); + var bigmin = new BigInteger(); + bigmin.fromString(min, 10); + var bigmax = new BigInteger(); + bigmax.fromString(max, 10); + if (unsigned && bignum.compareTo(BigInteger.ZERO) < 0) { + var temp = new BigInteger(); + bignum.addTo(Wrapper.two64, temp); + bignum = temp; + } + var error = false; + if (bignum.compareTo(bigmin) < 0) { + bignum = bigmin; + error = true; + } else if (bignum.compareTo(bigmax) > 0) { + bignum = bigmax; + error = true; + } + var ret = goog.math.Long.fromString(bignum.toString()); // min-max checks should have clamped this to a range goog.math.Long can handle well + HEAP32[tempDoublePtr>>2] = ret.low_; + HEAP32[tempDoublePtr+4>>2] = ret.high_; + if (error) throw 'range error'; + } + }; + return Wrapper; +})(); + +//======= end closure i64 code ======= + + + +// === Auto-generated postamble setup entry stuff === + +if (memoryInitializer) { + function applyData(data) { + HEAPU8.set(data, STATIC_BASE); + } + if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { + applyData(Module['readBinary'](memoryInitializer)); + } else { + addRunDependency('memory initializer'); + Browser.asyncLoad(memoryInitializer, function(data) { + applyData(data); + removeRunDependency('memory initializer'); + }, function(data) { + throw 'could not load memory initializer ' + memoryInitializer; + }); + } +} + +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +}; +ExitStatus.prototype = new Error(); +ExitStatus.prototype.constructor = ExitStatus; + +var initialStackTop; +var preloadStartTime = null; +var calledMain = false; + +dependenciesFulfilled = function runCaller() { + // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) + if (!Module['calledRun'] && shouldRunNow) run(); + if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled +} + +Module['callMain'] = Module.callMain = function callMain(args) { + assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); + assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); + + args = args || []; + + if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { + Module.printErr('preload time: ' + (Date.now() - preloadStartTime) + ' ms'); + } + + ensureInitRuntime(); + + var argc = args.length+1; + function pad() { + for (var i = 0; i < 4-1; i++) { + argv.push(0); + } + } + var argv = [allocate(intArrayFromString("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; + pad(); + for (var i = 0; i < argc-1; i = i + 1) { + argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); + pad(); + } + argv.push(0); + argv = allocate(argv, 'i32', ALLOC_NORMAL); + + initialStackTop = STACKTOP; + + try { + + var ret = Module['_main'](argc, argv, 0); + + + // if we're not running an evented main loop, it's time to exit + if (!Module['noExitRuntime']) { + exit(ret); + } + } + catch(e) { + if (e instanceof ExitStatus) { + // exit() throws this once it's done to make sure execution + // has been stopped completely + return; + } else if (e == 'SimulateInfiniteLoop') { + // running an evented main loop, don't immediately exit + Module['noExitRuntime'] = true; + return; + } else { + if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); + throw e; + } + } finally { + calledMain = true; + } +} + + + + +function run(args) { + args = args || Module['arguments']; + + if (preloadStartTime === null) preloadStartTime = Date.now(); + + if (runDependencies > 0) { + Module.printErr('run() called, but dependencies remain, so not running'); + return; + } + + preRun(); + + if (runDependencies > 0) return; // a preRun added a dependency, run will be called later + if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame + + function doRun() { + if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening + Module['calledRun'] = true; + + ensureInitRuntime(); + + preMain(); + + if (Module['_main'] && shouldRunNow) { + Module['callMain'](args); + } + + postRun(); + } + + if (Module['setStatus']) { + Module['setStatus']('Running...'); + setTimeout(function() { + setTimeout(function() { + Module['setStatus'](''); + }, 1); + if (!ABORT) doRun(); + }, 1); + } else { + doRun(); + } +} +Module['run'] = Module.run = run; + +function exit(status) { + ABORT = true; + EXITSTATUS = status; + STACKTOP = initialStackTop; + + // exit the runtime + exitRuntime(); + + // TODO We should handle this differently based on environment. + // In the browser, the best we can do is throw an exception + // to halt execution, but in node we could process.exit and + // I'd imagine SM shell would have something equivalent. + // This would let us set a proper exit status (which + // would be great for checking test exit statuses). + // https://github.com/kripken/emscripten/issues/1371 + + // throw an exception to halt the current execution + throw new ExitStatus(status); +} +Module['exit'] = Module.exit = exit; + +function abort(text) { + if (text) { + Module.print(text); + Module.printErr(text); + } + + ABORT = true; + EXITSTATUS = 1; + + throw 'abort() at ' + stackTrace(); +} +Module['abort'] = Module.abort = abort; + +// {{PRE_RUN_ADDITIONS}} + +if (Module['preInit']) { + if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + while (Module['preInit'].length > 0) { + Module['preInit'].pop()(); + } +} + +// shouldRunNow refers to calling main(), not run(). +var shouldRunNow = false; +if (Module['noInitialRun']) { + shouldRunNow = false; +} + + +run(); + +// {{POST_RUN_ADDITIONS}} + + + + + + +// {{MODULE_ADDITIONS}} + + + + + + diff --git a/internal/quake/client/static/manifest.json b/internal/quake/client/static/manifest.json new file mode 100644 index 0000000..3c8d97d --- /dev/null +++ b/internal/quake/client/static/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "App", + "icons": [ + { + "src": "\/images\/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/images\/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/images\/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/images\/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/images\/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/images\/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} diff --git a/internal/quake/content/api/v1/assets.pb.go b/internal/quake/content/api/v1/assets.pb.go new file mode 100644 index 0000000..38e1b54 --- /dev/null +++ b/internal/quake/content/api/v1/assets.pb.go @@ -0,0 +1,244 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.32.0 +// protoc v4.24.4 +// source: content/v1/assets.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type FileUploadRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + File []byte `protobuf:"bytes,2,opt,name=file,proto3" json:"file,omitempty"` +} + +func (x *FileUploadRequest) Reset() { + *x = FileUploadRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_content_v1_assets_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileUploadRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileUploadRequest) ProtoMessage() {} + +func (x *FileUploadRequest) ProtoReflect() protoreflect.Message { + mi := &file_content_v1_assets_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileUploadRequest.ProtoReflect.Descriptor instead. +func (*FileUploadRequest) Descriptor() ([]byte, []int) { + return file_content_v1_assets_proto_rawDescGZIP(), []int{0} +} + +func (x *FileUploadRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FileUploadRequest) GetFile() []byte { + if x != nil { + return x.File + } + return nil +} + +type FileUploadResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Size uint32 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *FileUploadResponse) Reset() { + *x = FileUploadResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_content_v1_assets_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileUploadResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileUploadResponse) ProtoMessage() {} + +func (x *FileUploadResponse) ProtoReflect() protoreflect.Message { + mi := &file_content_v1_assets_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileUploadResponse.ProtoReflect.Descriptor instead. +func (*FileUploadResponse) Descriptor() ([]byte, []int) { + return file_content_v1_assets_proto_rawDescGZIP(), []int{1} +} + +func (x *FileUploadResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FileUploadResponse) GetSize() uint32 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *FileUploadResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +var File_content_v1_assets_proto protoreflect.FileDescriptor + +var file_content_v1_assets_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x22, 0x3b, 0x0a, 0x11, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x66, 0x69, + 0x6c, 0x65, 0x22, 0x56, 0x0a, 0x12, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x57, 0x0a, 0x06, 0x41, 0x73, + 0x73, 0x65, 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, + 0x69, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x3d, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x43, 0x68, 0x72, 0x69, 0x73, 0x52, 0x78, 0x2f, 0x71, 0x75, 0x61, 0x6b, 0x65, 0x2d, + 0x6b, 0x75, 0x62, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x71, 0x75, + 0x61, 0x6b, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_content_v1_assets_proto_rawDescOnce sync.Once + file_content_v1_assets_proto_rawDescData = file_content_v1_assets_proto_rawDesc +) + +func file_content_v1_assets_proto_rawDescGZIP() []byte { + file_content_v1_assets_proto_rawDescOnce.Do(func() { + file_content_v1_assets_proto_rawDescData = protoimpl.X.CompressGZIP(file_content_v1_assets_proto_rawDescData) + }) + return file_content_v1_assets_proto_rawDescData +} + +var file_content_v1_assets_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_content_v1_assets_proto_goTypes = []interface{}{ + (*FileUploadRequest)(nil), // 0: content.v1.FileUploadRequest + (*FileUploadResponse)(nil), // 1: content.v1.FileUploadResponse +} +var file_content_v1_assets_proto_depIdxs = []int32{ + 0, // 0: content.v1.Assets.FileUpload:input_type -> content.v1.FileUploadRequest + 1, // 1: content.v1.Assets.FileUpload:output_type -> content.v1.FileUploadResponse + 1, // [1:2] is the sub-list for method output_type + 0, // [0:1] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_content_v1_assets_proto_init() } +func file_content_v1_assets_proto_init() { + if File_content_v1_assets_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_content_v1_assets_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileUploadRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_content_v1_assets_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileUploadResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_content_v1_assets_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_content_v1_assets_proto_goTypes, + DependencyIndexes: file_content_v1_assets_proto_depIdxs, + MessageInfos: file_content_v1_assets_proto_msgTypes, + }.Build() + File_content_v1_assets_proto = out.File + file_content_v1_assets_proto_rawDesc = nil + file_content_v1_assets_proto_goTypes = nil + file_content_v1_assets_proto_depIdxs = nil +} diff --git a/internal/quake/content/api/v1/assets_grpc.pb.go b/internal/quake/content/api/v1/assets_grpc.pb.go new file mode 100644 index 0000000..5bba1bd --- /dev/null +++ b/internal/quake/content/api/v1/assets_grpc.pb.go @@ -0,0 +1,109 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.24.4 +// source: content/v1/assets.proto + +package v1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Assets_FileUpload_FullMethodName = "/content.v1.Assets/FileUpload" +) + +// AssetsClient is the client API for Assets service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AssetsClient interface { + FileUpload(ctx context.Context, in *FileUploadRequest, opts ...grpc.CallOption) (*FileUploadResponse, error) +} + +type assetsClient struct { + cc grpc.ClientConnInterface +} + +func NewAssetsClient(cc grpc.ClientConnInterface) AssetsClient { + return &assetsClient{cc} +} + +func (c *assetsClient) FileUpload(ctx context.Context, in *FileUploadRequest, opts ...grpc.CallOption) (*FileUploadResponse, error) { + out := new(FileUploadResponse) + err := c.cc.Invoke(ctx, Assets_FileUpload_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AssetsServer is the server API for Assets service. +// All implementations must embed UnimplementedAssetsServer +// for forward compatibility +type AssetsServer interface { + FileUpload(context.Context, *FileUploadRequest) (*FileUploadResponse, error) + mustEmbedUnimplementedAssetsServer() +} + +// UnimplementedAssetsServer must be embedded to have forward compatible implementations. +type UnimplementedAssetsServer struct { +} + +func (UnimplementedAssetsServer) FileUpload(context.Context, *FileUploadRequest) (*FileUploadResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method FileUpload not implemented") +} +func (UnimplementedAssetsServer) mustEmbedUnimplementedAssetsServer() {} + +// UnsafeAssetsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AssetsServer will +// result in compilation errors. +type UnsafeAssetsServer interface { + mustEmbedUnimplementedAssetsServer() +} + +func RegisterAssetsServer(s grpc.ServiceRegistrar, srv AssetsServer) { + s.RegisterService(&Assets_ServiceDesc, srv) +} + +func _Assets_FileUpload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FileUploadRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AssetsServer).FileUpload(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Assets_FileUpload_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AssetsServer).FileUpload(ctx, req.(*FileUploadRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Assets_ServiceDesc is the grpc.ServiceDesc for Assets service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Assets_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "content.v1.Assets", + HandlerType: (*AssetsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "FileUpload", + Handler: _Assets_FileUpload_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "content/v1/assets.proto", +} diff --git a/internal/quake/content/api/v1/assets_service.go b/internal/quake/content/api/v1/assets_service.go new file mode 100644 index 0000000..c048e80 --- /dev/null +++ b/internal/quake/content/api/v1/assets_service.go @@ -0,0 +1,78 @@ +package v1 + +import ( + "archive/zip" + "bytes" + "context" + "fmt" + "io" + "os" + "path/filepath" + "strings" + + fsutil "github.com/ChrisRx/quake-kube/internal/util/fs" +) + +type AssetsService struct { + UnimplementedAssetsServer + + dir string +} + +func NewAssetsService(assetsDir string) *AssetsService { + return &AssetsService{dir: assetsDir} +} + +func (s *AssetsService) FileUpload(ctx context.Context, req *FileUploadRequest) (*FileUploadResponse, error) { + gameName := "baseq3" + if fsutil.HasExts(req.Name, ".zip") { + zr, err := zip.NewReader(bytes.NewReader(req.File), int64(len(req.File))) + if err != nil { + return nil, err + } + files := make([]string, 0) + for _, f := range zr.File { + if !fsutil.HasExts(f.Name, ".pk3") { + continue + } + pak, err := f.Open() + if err != nil { + return nil, err + } + defer pak.Close() + + dst, err := os.Create(filepath.Join(s.dir, gameName, filepath.Base(f.Name))) + if err != nil { + return nil, err + } + defer dst.Close() + + if _, err = io.Copy(dst, pak); err != nil { + return nil, err + } + files = append(files, filepath.Base(f.Name)) + } + if len(files) == 0 { + return nil, fmt.Errorf("File %s did not contain any map pack files.", req.Name) + } + return &FileUploadResponse{ + Name: req.Name, + Size: uint32(len(req.File)), + Message: fmt.Sprintf("Loaded the following map packs from file %s:\n%s", req.Name, strings.Join(files, "\n")), + }, nil + } + dst, err := os.Create(filepath.Join(s.dir, gameName, req.Name)) + if err != nil { + return nil, err + } + defer dst.Close() + + if _, err = io.Copy(dst, bytes.NewReader(req.File)); err != nil { + return nil, err + } + return &FileUploadResponse{ + Name: req.Name, + Size: uint32(len(req.File)), + Message: fmt.Sprintf("File %s uploaded successfully.", filepath.Join(gameName, req.Name)), + }, nil +} diff --git a/internal/quake/content/api/v2/assets.pb.go b/internal/quake/content/api/v2/assets.pb.go new file mode 100644 index 0000000..94c8228 --- /dev/null +++ b/internal/quake/content/api/v2/assets.pb.go @@ -0,0 +1,415 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.32.0 +// protoc v4.24.4 +// source: content/v2/assets.proto + +package v2 + +import ( + _ "github.com/ChrisRx/quake-kube/internal/quake/content/api/v1" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type File struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Checksum uint32 `protobuf:"varint,2,opt,name=checksum,proto3" json:"checksum,omitempty"` + Compressed int64 `protobuf:"varint,3,opt,name=compressed,proto3" json:"compressed,omitempty"` +} + +func (x *File) Reset() { + *x = File{} + if protoimpl.UnsafeEnabled { + mi := &file_content_v2_assets_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *File) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*File) ProtoMessage() {} + +func (x *File) ProtoReflect() protoreflect.Message { + mi := &file_content_v2_assets_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use File.ProtoReflect.Descriptor instead. +func (*File) Descriptor() ([]byte, []int) { + return file_content_v2_assets_proto_rawDescGZIP(), []int{0} +} + +func (x *File) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *File) GetChecksum() uint32 { + if x != nil { + return x.Checksum + } + return 0 +} + +func (x *File) GetCompressed() int64 { + if x != nil { + return x.Compressed + } + return 0 +} + +type Manifest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Files []*File `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` +} + +func (x *Manifest) Reset() { + *x = Manifest{} + if protoimpl.UnsafeEnabled { + mi := &file_content_v2_assets_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Manifest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Manifest) ProtoMessage() {} + +func (x *Manifest) ProtoReflect() protoreflect.Message { + mi := &file_content_v2_assets_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Manifest.ProtoReflect.Descriptor instead. +func (*Manifest) Descriptor() ([]byte, []int) { + return file_content_v2_assets_proto_rawDescGZIP(), []int{1} +} + +func (x *Manifest) GetFiles() []*File { + if x != nil { + return x.Files + } + return nil +} + +type FileUploadRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + GameName string `protobuf:"bytes,2,opt,name=game_name,json=gameName,proto3" json:"game_name,omitempty"` + File []byte `protobuf:"bytes,3,opt,name=file,proto3" json:"file,omitempty"` +} + +func (x *FileUploadRequest) Reset() { + *x = FileUploadRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_content_v2_assets_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileUploadRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileUploadRequest) ProtoMessage() {} + +func (x *FileUploadRequest) ProtoReflect() protoreflect.Message { + mi := &file_content_v2_assets_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileUploadRequest.ProtoReflect.Descriptor instead. +func (*FileUploadRequest) Descriptor() ([]byte, []int) { + return file_content_v2_assets_proto_rawDescGZIP(), []int{2} +} + +func (x *FileUploadRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FileUploadRequest) GetGameName() string { + if x != nil { + return x.GameName + } + return "" +} + +func (x *FileUploadRequest) GetFile() []byte { + if x != nil { + return x.File + } + return nil +} + +type FileUploadResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Size uint32 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *FileUploadResponse) Reset() { + *x = FileUploadResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_content_v2_assets_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileUploadResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileUploadResponse) ProtoMessage() {} + +func (x *FileUploadResponse) ProtoReflect() protoreflect.Message { + mi := &file_content_v2_assets_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileUploadResponse.ProtoReflect.Descriptor instead. +func (*FileUploadResponse) Descriptor() ([]byte, []int) { + return file_content_v2_assets_proto_rawDescGZIP(), []int{3} +} + +func (x *FileUploadResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FileUploadResponse) GetSize() uint32 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *FileUploadResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +var File_content_v2_assets_proto protoreflect.FileDescriptor + +var file_content_v2_assets_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x32, 0x1a, 0x1b, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x56, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x63, + 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x22, 0x3a, 0x0a, 0x08, 0x4d, + 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x6c, 0x65, + 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x58, 0x0a, 0x11, 0x46, 0x69, 0x6c, 0x65, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x66, 0x69, 0x6c, + 0x65, 0x22, 0x56, 0x0a, 0x12, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0xae, 0x01, 0x0a, 0x06, 0x41, 0x73, + 0x73, 0x65, 0x74, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, + 0x65, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x32, + 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x0a, 0x46, + 0x69, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x25, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x46, + 0x69, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x3d, 0x5a, 0x3b, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x68, 0x72, 0x69, 0x73, 0x52, 0x78, + 0x2f, 0x71, 0x75, 0x61, 0x6b, 0x65, 0x2d, 0x6b, 0x75, 0x62, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x71, 0x75, 0x61, 0x6b, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_content_v2_assets_proto_rawDescOnce sync.Once + file_content_v2_assets_proto_rawDescData = file_content_v2_assets_proto_rawDesc +) + +func file_content_v2_assets_proto_rawDescGZIP() []byte { + file_content_v2_assets_proto_rawDescOnce.Do(func() { + file_content_v2_assets_proto_rawDescData = protoimpl.X.CompressGZIP(file_content_v2_assets_proto_rawDescData) + }) + return file_content_v2_assets_proto_rawDescData +} + +var file_content_v2_assets_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_content_v2_assets_proto_goTypes = []interface{}{ + (*File)(nil), // 0: content.service.v2.File + (*Manifest)(nil), // 1: content.service.v2.Manifest + (*FileUploadRequest)(nil), // 2: content.service.v2.FileUploadRequest + (*FileUploadResponse)(nil), // 3: content.service.v2.FileUploadResponse + (*emptypb.Empty)(nil), // 4: google.protobuf.Empty +} +var file_content_v2_assets_proto_depIdxs = []int32{ + 0, // 0: content.service.v2.Manifest.files:type_name -> content.service.v2.File + 4, // 1: content.service.v2.Assets.GetManifest:input_type -> google.protobuf.Empty + 2, // 2: content.service.v2.Assets.FileUpload:input_type -> content.service.v2.FileUploadRequest + 1, // 3: content.service.v2.Assets.GetManifest:output_type -> content.service.v2.Manifest + 3, // 4: content.service.v2.Assets.FileUpload:output_type -> content.service.v2.FileUploadResponse + 3, // [3:5] is the sub-list for method output_type + 1, // [1:3] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_content_v2_assets_proto_init() } +func file_content_v2_assets_proto_init() { + if File_content_v2_assets_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_content_v2_assets_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*File); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_content_v2_assets_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Manifest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_content_v2_assets_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileUploadRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_content_v2_assets_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileUploadResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_content_v2_assets_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_content_v2_assets_proto_goTypes, + DependencyIndexes: file_content_v2_assets_proto_depIdxs, + MessageInfos: file_content_v2_assets_proto_msgTypes, + }.Build() + File_content_v2_assets_proto = out.File + file_content_v2_assets_proto_rawDesc = nil + file_content_v2_assets_proto_goTypes = nil + file_content_v2_assets_proto_depIdxs = nil +} diff --git a/internal/quake/content/api/v2/assets_grpc.pb.go b/internal/quake/content/api/v2/assets_grpc.pb.go new file mode 100644 index 0000000..9892d2c --- /dev/null +++ b/internal/quake/content/api/v2/assets_grpc.pb.go @@ -0,0 +1,147 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.24.4 +// source: content/v2/assets.proto + +package v2 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Assets_GetManifest_FullMethodName = "/content.service.v2.Assets/GetManifest" + Assets_FileUpload_FullMethodName = "/content.service.v2.Assets/FileUpload" +) + +// AssetsClient is the client API for Assets service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AssetsClient interface { + GetManifest(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Manifest, error) + FileUpload(ctx context.Context, in *FileUploadRequest, opts ...grpc.CallOption) (*FileUploadResponse, error) +} + +type assetsClient struct { + cc grpc.ClientConnInterface +} + +func NewAssetsClient(cc grpc.ClientConnInterface) AssetsClient { + return &assetsClient{cc} +} + +func (c *assetsClient) GetManifest(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Manifest, error) { + out := new(Manifest) + err := c.cc.Invoke(ctx, Assets_GetManifest_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *assetsClient) FileUpload(ctx context.Context, in *FileUploadRequest, opts ...grpc.CallOption) (*FileUploadResponse, error) { + out := new(FileUploadResponse) + err := c.cc.Invoke(ctx, Assets_FileUpload_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AssetsServer is the server API for Assets service. +// All implementations must embed UnimplementedAssetsServer +// for forward compatibility +type AssetsServer interface { + GetManifest(context.Context, *emptypb.Empty) (*Manifest, error) + FileUpload(context.Context, *FileUploadRequest) (*FileUploadResponse, error) + mustEmbedUnimplementedAssetsServer() +} + +// UnimplementedAssetsServer must be embedded to have forward compatible implementations. +type UnimplementedAssetsServer struct { +} + +func (UnimplementedAssetsServer) GetManifest(context.Context, *emptypb.Empty) (*Manifest, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetManifest not implemented") +} +func (UnimplementedAssetsServer) FileUpload(context.Context, *FileUploadRequest) (*FileUploadResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method FileUpload not implemented") +} +func (UnimplementedAssetsServer) mustEmbedUnimplementedAssetsServer() {} + +// UnsafeAssetsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AssetsServer will +// result in compilation errors. +type UnsafeAssetsServer interface { + mustEmbedUnimplementedAssetsServer() +} + +func RegisterAssetsServer(s grpc.ServiceRegistrar, srv AssetsServer) { + s.RegisterService(&Assets_ServiceDesc, srv) +} + +func _Assets_GetManifest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AssetsServer).GetManifest(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Assets_GetManifest_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AssetsServer).GetManifest(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Assets_FileUpload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FileUploadRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AssetsServer).FileUpload(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Assets_FileUpload_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AssetsServer).FileUpload(ctx, req.(*FileUploadRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Assets_ServiceDesc is the grpc.ServiceDesc for Assets service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Assets_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "content.service.v2.Assets", + HandlerType: (*AssetsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetManifest", + Handler: _Assets_GetManifest_Handler, + }, + { + MethodName: "FileUpload", + Handler: _Assets_FileUpload_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "content/v2/assets.proto", +} diff --git a/internal/quake/content/api/v2/assets_service.go b/internal/quake/content/api/v2/assets_service.go new file mode 100644 index 0000000..bdb51b5 --- /dev/null +++ b/internal/quake/content/api/v2/assets_service.go @@ -0,0 +1,99 @@ +package v2 + +import ( + "archive/zip" + "bytes" + "context" + "fmt" + "io" + "os" + "path/filepath" + "strings" + + "google.golang.org/protobuf/types/known/emptypb" + + quakecontentutil "github.com/ChrisRx/quake-kube/internal/quake/content/util" + fsutil "github.com/ChrisRx/quake-kube/internal/util/fs" +) + +type AssetsService struct { + UnimplementedAssetsServer + + dir string +} + +func NewAssetsService(assetsDir string) *AssetsService { + return &AssetsService{dir: assetsDir} +} + +func (s *AssetsService) GetManifest(ctx context.Context, req *emptypb.Empty) (*Manifest, error) { + m := &Manifest{} + files, err := quakecontentutil.ReadManifest(s.dir) + if err != nil { + return nil, err + } + for _, f := range files { + m.Files = append(m.Files, &File{ + Name: f.Name, + Checksum: f.Checksum, + Compressed: f.Compressed, + }) + } + return m, nil +} + +func (s *AssetsService) FileUpload(ctx context.Context, req *FileUploadRequest) (*FileUploadResponse, error) { + if req.GameName == "" { + req.GameName = "baseq3" + } + if fsutil.HasExts(req.Name, ".zip") { + zr, err := zip.NewReader(bytes.NewReader(req.File), int64(len(req.File))) + if err != nil { + return nil, err + } + files := make([]string, 0) + for _, f := range zr.File { + if !fsutil.HasExts(f.Name, ".pk3") { + continue + } + pak, err := f.Open() + if err != nil { + return nil, err + } + defer pak.Close() + + dst, err := os.Create(filepath.Join(s.dir, req.GameName, filepath.Base(f.Name))) + if err != nil { + return nil, err + } + defer dst.Close() + + if _, err = io.Copy(dst, pak); err != nil { + return nil, err + } + files = append(files, filepath.Base(f.Name)) + } + if len(files) == 0 { + return nil, fmt.Errorf("File %s did not contain any map pack files.", req.Name) + } + return &FileUploadResponse{ + Name: req.Name, + Size: uint32(len(req.File)), + Message: fmt.Sprintf("Loaded the following map packs from file %s:\n%s", req.Name, strings.Join(files, "\n")), + }, nil + } + dst, err := os.Create(filepath.Join(s.dir, req.GameName, req.Name)) + if err != nil { + return nil, err + } + defer dst.Close() + + if _, err = io.Copy(dst, bytes.NewReader(req.File)); err != nil { + return nil, err + } + return &FileUploadResponse{ + Name: req.Name, + Size: uint32(len(req.File)), + Message: fmt.Sprintf("File %s uploaded successfully.", filepath.Join(req.GameName, req.Name)), + }, nil +} diff --git a/internal/quake/content/httpserver.go b/internal/quake/content/httpserver.go new file mode 100644 index 0000000..28d91b4 --- /dev/null +++ b/internal/quake/content/httpserver.go @@ -0,0 +1,82 @@ +package content + +import ( + "net" + "net/http" + "os" + "path/filepath" + "strings" + "time" + + "github.com/labstack/echo/v4" + "github.com/labstack/echo/v4/middleware" + "github.com/soheilhy/cmux" + + contentutil "github.com/ChrisRx/quake-kube/internal/quake/content/util" +) + +type HTTPServer struct { + e *echo.Echo + + assetsDir string +} + +func NewHTTPContentServer(assetsDir string) *HTTPServer { + e := echo.New() + e.Use(middleware.Logger()) + e.Use(middleware.Recover()) + e.Use(middleware.BodyLimit("1000M")) + e.Use(middleware.CORSWithConfig(middleware.CORSConfig{ + AllowOrigins: []string{"*"}, + AllowHeaders: []string{echo.HeaderOrigin, echo.HeaderContentType, echo.HeaderAccept}, + })) + e.GET("/assets/manifest.json", func(c echo.Context) error { + files, err := contentutil.ReadManifest(assetsDir) + if err != nil { + return err + } + return c.JSONPretty(http.StatusOK, files, " ") + }) + e.GET("/assets/*", func(c echo.Context) error { + path := filepath.Join(assetsDir, trimAssetName(c.Param("*"))) + if _, err := os.Stat(path); os.IsNotExist(err) { + return c.String(http.StatusNotFound, "file not found") + } + return c.File(path) + }) + e.GET("/maps", func(c echo.Context) error { + maps, err := contentutil.ReadMaps(assetsDir) + if err != nil { + return err + } + return c.JSONPretty(http.StatusOK, maps, " ") + }) + return &HTTPServer{ + e: e, + assetsDir: assetsDir, + } +} + +func (h *HTTPServer) Match() []cmux.Matcher { + return []cmux.Matcher{ + cmux.Any(), + } +} + +func (h *HTTPServer) Serve(l net.Listener) error { + s := &http.Server{ + Handler: h.e, + ReadTimeout: 5 * time.Minute, + WriteTimeout: 5 * time.Minute, + MaxHeaderBytes: 1 << 20, + } + return s.Serve(l) +} + +// trimAssetName returns a path string that has been prefixed with a crc32 +// checksum. +func trimAssetName(s string) string { + d, f := filepath.Split(s) + f = f[strings.Index(f, "-")+1:] + return filepath.Join(d, f) +} diff --git a/internal/quake/content/httpserver_test.go b/internal/quake/content/httpserver_test.go new file mode 100644 index 0000000..34f579b --- /dev/null +++ b/internal/quake/content/httpserver_test.go @@ -0,0 +1,35 @@ +package content + +import ( + "testing" + + "github.com/google/go-cmp/cmp" +) + +func TestTrimAssetName(t *testing.T) { + cases := []struct { + name string + input string + expected string + }{ + { + name: "root folder", + input: "857908472-linuxq3ademo-1.11-6.x86.gz.sh", + expected: "linuxq3ademo-1.11-6.x86.gz.sh", + }, + { + name: "pak file", + input: "baseq3/2483777038-pak0.pk3", + expected: "baseq3/pak0.pk3", + }, + } + + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + result := trimAssetName(c.input) + if diff := cmp.Diff(c.expected, result); diff != "" { + t.Errorf("content: after trimAssetName differs: (-want +got)\n%s", diff) + } + }) + } +} diff --git a/internal/quake/content/rpcserver.go b/internal/quake/content/rpcserver.go new file mode 100644 index 0000000..1d2d949 --- /dev/null +++ b/internal/quake/content/rpcserver.go @@ -0,0 +1,25 @@ +package content + +import ( + "net" + + "google.golang.org/grpc" + + contentapiv1 "github.com/ChrisRx/quake-kube/internal/quake/content/api/v1" + contentapiv2 "github.com/ChrisRx/quake-kube/internal/quake/content/api/v2" +) + +type RPCServer struct { + assetsDir string +} + +func NewRPCServer(assetsDir string) *RPCServer { + return &RPCServer{assetsDir} +} + +func (r *RPCServer) Serve(l net.Listener) error { + s := grpc.NewServer() + contentapiv1.RegisterAssetsServer(s, contentapiv1.NewAssetsService(r.assetsDir)) + contentapiv2.RegisterAssetsServer(s, contentapiv2.NewAssetsService(r.assetsDir)) + return s.Serve(l) +} diff --git a/internal/quake/content/util/files.go b/internal/quake/content/util/files.go new file mode 100644 index 0000000..07af2de --- /dev/null +++ b/internal/quake/content/util/files.go @@ -0,0 +1,144 @@ +package content + +import ( + "archive/tar" + "bytes" + "compress/gzip" + "encoding/json" + "fmt" + "hash/crc32" + "io" + "net/url" + "os" + "path/filepath" + "strings" + + fsutil "github.com/ChrisRx/quake-kube/internal/util/fs" + httputil "github.com/ChrisRx/quake-kube/internal/util/net/http" +) + +// File represents a file on a Quake 3 content server. +type File struct { + Name string `json:"name"` + Compressed int64 `json:"compressed"` + Checksum uint32 `json:"checksum"` +} + +// DownloadManifest +func DownloadManifest(url string) ([]*File, error) { + data, err := httputil.GetBody(url + "/assets/manifest.json") + if err != nil { + return nil, err + } + + files := make([]*File, 0) + if err := json.Unmarshal(data, &files); err != nil { + return nil, fmt.Errorf("%w: cannot unmarshal %s/assets/manifest.json", err, url) + } + return files, nil +} + +// ReadManifest +func ReadManifest(dir string) (files []*File, err error) { + err = fsutil.WalkFiles(dir, func(path string, info os.FileInfo, err error) error { + data, err := os.ReadFile(path) + if err != nil { + return err + } + n := crc32.ChecksumIEEE(data) + path = strings.TrimPrefix(path, dir+"/") + files = append(files, &File{path, info.Size(), n}) + return nil + }, ".pk3", ".sh", ".run") + return +} + +// DownloadAssets +func DownloadAssets(u *url.URL, dir string) error { + url := strings.TrimSuffix(u.String(), "/") + files, err := DownloadManifest(url) + if err != nil { + return err + } + + for _, f := range files { + path := filepath.Join(dir, f.Name) + if _, err := os.Stat(path); !os.IsNotExist(err) { + continue + } + data, err := httputil.GetBody(url + fmt.Sprintf("/assets/%d-%s", f.Checksum, f.Name)) + if err != nil { + return err + } + if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil { + return err + } + if err := os.WriteFile(path, data, 0644); err != nil { + return err + } + + // The demo and point releases are compressed gzip files and contain the + // base pak files needed to play the Quake 3 Arena demo. + if strings.HasPrefix(f.Name, "linuxq3ademo") || strings.HasPrefix(f.Name, "linuxq3apoint") { + if err := extractGzip(path, dir); err != nil { + return err + } + } + } + return nil +} + +var gzipMagicHeader = []byte{'\x1f', '\x8b'} + +// extractGzip +func extractGzip(path, dir string) error { + data, err := os.ReadFile(path) + if err != nil { + return err + } + + // There may be additional header information, so skip directly to the gzip + // blob. + idx := bytes.Index(data, gzipMagicHeader) + data = data[idx:] + gr, err := gzip.NewReader(bytes.NewReader(data)) + if err != nil { + return err + } + defer gr.Close() + + data, err = io.ReadAll(gr) + if err != nil { + return err + } + tr := tar.NewReader(bytes.NewReader(data)) + for { + hdr, err := tr.Next() + if err == io.EOF { + break + } + if err != nil { + return err + } + if strings.HasSuffix(hdr.Name, ".pk3") { + fmt.Printf("Downloaded %s\n", hdr.Name) + data, err := io.ReadAll(tr) + if err != nil { + return err + } + + // Specifically demoq3/pak0.pk3 must be moved to baseq3 to work properly. + if strings.HasPrefix(hdr.Name, "demoq3/pak0.pk3") { + hdr.Name = filepath.Join("baseq3", filepath.Base(hdr.Name)) + } + path := filepath.Join(dir, hdr.Name) + if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil { + return err + } + if err := os.WriteFile(path, data, 0644); err != nil { + return err + } + } + } + return nil +} diff --git a/internal/quake/content/util/maps.go b/internal/quake/content/util/maps.go new file mode 100644 index 0000000..e481cea --- /dev/null +++ b/internal/quake/content/util/maps.go @@ -0,0 +1,56 @@ +package content + +import ( + "archive/zip" + "os" + "path/filepath" + "strings" + + fsutil "github.com/ChrisRx/quake-kube/internal/util/fs" +) + +type Map struct { + File string `json:"file"` + Name string `json:"name"` +} + +func ReadMaps(dir string) (result []*Map, err error) { + err = fsutil.WalkFiles(dir, func(path string, info os.FileInfo, err error) error { + maps, err := OpenMapPack(path) + if err != nil { + return err + } + result = append(result, maps...) + return err + }, ".pk3") + return +} + +// OpenMapPack +// pk3s = zip files +func OpenMapPack(path string) ([]*Map, error) { + f, err := os.Open(path) + if err != nil { + return nil, err + } + defer f.Close() + + info, err := f.Stat() + if err != nil { + return nil, err + } + r, err := zip.NewReader(f, info.Size()) + if err != nil { + return nil, err + } + maps := make([]*Map, 0) + for _, f := range r.File { + if !fsutil.HasExts(f.Name, ".bsp") { + continue + } + path := filepath.Join(filepath.Base(filepath.Dir(path)), filepath.Base(path)) + mapName := strings.TrimSuffix(filepath.Base(f.Name), ".bsp") + maps = append(maps, &Map{File: path, Name: mapName}) + } + return maps, nil +} diff --git a/internal/quake/server/config.go b/internal/quake/server/config.go new file mode 100644 index 0000000..755980d --- /dev/null +++ b/internal/quake/server/config.go @@ -0,0 +1,266 @@ +package server + +import ( + "bytes" + "fmt" + "reflect" + "strconv" + "strings" + "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +type GameType int + +const ( + FreeForAll GameType = 0 + Tournament GameType = 1 + SinglePlayer GameType = 2 + TeamDeathmatch GameType = 3 + CaptureTheFlag GameType = 4 +) + +func (gt GameType) String() string { + switch gt { + case FreeForAll: + return "FreeForAll" + case Tournament: + return "Tournament" + case SinglePlayer: + return "SinglePlayer" + case TeamDeathmatch: + return "TeamDeathmatch" + case CaptureTheFlag: + return "CaptureTheFlag" + default: + return "Unknown" + } +} + +func (gt *GameType) UnmarshalText(data []byte) error { + switch string(data) { + case "FreeForAll", "FFA": + *gt = FreeForAll + case "Tournament": + *gt = Tournament + case "SinglePlayer": + *gt = SinglePlayer + case "TeamDeathmatch": + *gt = TeamDeathmatch + case "CaptureTheFlag", "CTF": + *gt = CaptureTheFlag + default: + return fmt.Errorf("unknown GameType: %s", data) + } + return nil +} + +type Config struct { + FragLimit int `name:"fraglimit"` + TimeLimit metav1.Duration `name:"timelimit"` + + BotConfig `json:"bot"` + GameConfig `json:"game"` + FileServerConfig `json:"fs"` + ServerConfig `json:"server"` + Commands []string `json:"commands"` + + Maps +} + +type BotConfig struct { + MinPlayers int `name:"bot_minplayers"` + NoChat bool `name:"bot_nochat"` +} + +type GameConfig struct { + ForceRespawn bool `name:"g_forcerespawn"` + GameType GameType `name:"g_gametype" json:"type"` + Inactivity metav1.Duration `name:"g_inactivity"` + Log string `name:"g_log"` + MOTD string `name:"g_motd"` + Password string `name:"g_password"` + QuadFactor int `name:"g_quadfactor"` + SinglePlayerSkill int `name:"g_spSkill"` + WeaponRespawn int `name:"g_weaponrespawn"` +} + +type FileServerConfig struct { + // allows people to base mods upon mods syntax to follow + BaseGame string `name:"fs_basegame"` + // set base path root C:\Program Files\Quake III Arena for files to be + // downloaded from this path may change for TC's and MOD's + BasePath string `name:"fs_basepath"` + // toggle if files can be copied from servers or if client will download + CopyFiles bool `name:"fs_copyfiles"` + // possibly enables file server debug mode for download/uploads or + // something + Debug bool `name:"fs_debug"` + // set gamedir set the game folder/dir default is baseq3 + Game string `name:"fs_game"` + // possibly for TC's and MODS the default is the path to quake3.exe + HomePath string `name:"fs_homepath"` +} + +type ServerConfig struct { + AllowDownload bool `name:"sv_allowDownload"` + DownloadURL string `name:"sv_dlURL"` + Hostname string `name:"sv_hostname"` + MaxClients int `name:"sv_maxclients"` + Password string `name:"rconpassword"` +} + +func (c *Config) Marshal() ([]byte, error) { + return writeStruct(reflect.Indirect(reflect.ValueOf(c))) +} + +func writeStruct(v reflect.Value) ([]byte, error) { + if v.Kind() != reflect.Struct { + return nil, fmt.Errorf("expected struct, received %T", v.Kind()) + } + var b bytes.Buffer + for i := 0; i < v.Type().NumField(); i++ { + fv := v.Field(i) + switch fv.Kind() { + case reflect.Struct: + data, err := writeStruct(fv) + if err != nil { + return nil, err + } + b.Write(data) + case reflect.Slice: + switch val := fv.Interface().(type) { + case Maps: + data, _ := val.Marshal() + b.Write(data) + case []string: + default: + panic(fmt.Errorf("received unknown type %T", val)) + } + default: + tv, ok := v.Type().Field(i).Tag.Lookup("name") + if !ok { + continue + } + s := toString(v.Type().Field(i).Name, fv) + switch tv { + case "sv_dlURL": + if s != "" { + b.WriteString(fmt.Sprintf("sets %s %s\n", tv, s)) + } + default: + b.WriteString(fmt.Sprintf("seta %s %s\n", tv, strconv.Quote(s))) + } + } + } + for i := 0; i < v.Type().NumField(); i++ { + if v.Type().Field(i).Name == "Commands" { + cmds := v.Field(i).Interface().([]string) + for _, cmd := range cmds { + b.WriteString(cmd) + b.WriteString("\n") + } + } + } + return b.Bytes(), nil +} + +func toString(name string, v reflect.Value) string { + switch val := v.Interface().(type) { + case string: + return val + case int: + return strconv.Itoa(val) + case metav1.Duration: + switch name { + case "TimeLimit": + return fmt.Sprintf("%d", int(val.Minutes())) + default: + return fmt.Sprintf("%d", int(val.Seconds())) + } + case bool: + if val { + return "1" + } + return "0" + case GameType: + return fmt.Sprintf("%d", val) + case Maps: + data, _ := val.Marshal() + return string(data) + default: + panic(fmt.Errorf("received unknown type %T", v.Interface())) + } +} + +func Default() *Config { + return &Config{ + FragLimit: 25, + TimeLimit: metav1.Duration{Duration: 15 * time.Minute}, + Commands: []string{}, + BotConfig: BotConfig{ + NoChat: true, + }, + GameConfig: GameConfig{ + Log: "", + MOTD: "Welcome to Quake Kube", + QuadFactor: 3, + GameType: FreeForAll, + WeaponRespawn: 3, + Inactivity: metav1.Duration{Duration: 10 * time.Minute}, + SinglePlayerSkill: 2, + ForceRespawn: false, + }, + ServerConfig: ServerConfig{ + MaxClients: 12, + Hostname: "quakekube", + Password: "changeme", + }, + Maps: Maps{ + {Name: "q3dm7", Type: FreeForAll}, + {Name: "q3dm17", Type: FreeForAll}, + }, + } +} + +type Map struct { + Name string `json:"name"` + Type GameType `json:"type"` + + CaptureLimit int `json:"captureLimit"` + FragLimit int `json:"fragLimit"` + TimeLimit metav1.Duration `json:"timeLimit"` +} + +type Maps []Map + +func (maps Maps) Marshal() ([]byte, error) { + var b bytes.Buffer + for i, m := range maps { + cmds := []string{ + fmt.Sprintf("g_gametype %d", m.Type), + } + if m.Type == CaptureTheFlag && m.CaptureLimit != 0 { + cmds = append(cmds, fmt.Sprintf("capturelimit %d", m.CaptureLimit)) + } + if m.FragLimit != 0 { + cmds = append(cmds, fmt.Sprintf("fraglimit %d", m.FragLimit)) + } + if m.TimeLimit.Duration != 0 { + cmds = append( + cmds, + fmt.Sprintf("timelimit %s", toString("TimeLimit", reflect.ValueOf(m.TimeLimit))), + ) + } + cmds = append(cmds, fmt.Sprintf("map %s", m.Name)) + nextmap := "d0" + if i < len(maps)-1 { + nextmap = fmt.Sprintf("d%d", i+1) + } + cmds = append(cmds, fmt.Sprintf("set nextmap vstr %s", nextmap)) + b.WriteString(fmt.Sprintf("set d%d \"seta %s\"\n", i, strings.Join(cmds, " ; "))) + } + b.WriteString("vstr d0\n") + return b.Bytes(), nil +} diff --git a/internal/quake/server/config_test.go b/internal/quake/server/config_test.go new file mode 100644 index 0000000..fe21346 --- /dev/null +++ b/internal/quake/server/config_test.go @@ -0,0 +1,90 @@ +package server + +import ( + "fmt" + "testing" + + "github.com/google/go-cmp/cmp" + "sigs.k8s.io/yaml" +) + +const config = ` +fragLimit: 25 +timeLimit: 15m +game: + motd: "Welcome to Quake Kube" + type: FreeForAll + forceRespawn: false + inactivity: 10m + quadFactor: 3 + weaponRespawn: 3 +server: + hostname: "quakekube" + maxClients: 12 + password: "changeme" +commands: +- seta g_inactivity 600 +- seta sv_timeout 120 +maps: +- name: q3dm7 + type: FreeForAll +- name: q3dm17 + type: FreeForAll +- name: q3wctf1 + type: CaptureTheFlag + captureLimit: 8 +- name: q3tourney2 + type: Tournament +- name: q3wctf3 + type: CaptureTheFlag + captureLimit: 8 +- name: ztn3tourney1 + type: Tournament +` + +const expectedConfig = `seta fraglimit "25" +seta bot_minplayers "0" +seta bot_nochat "0" +seta g_forcerespawn "0" +seta g_gametype "0" +seta g_log "" +seta g_motd "Welcome to Quake Kube" +seta g_password "" +seta g_quadfactor "3" +seta g_spSkill "0" +seta g_weaponrespawn "3" +seta fs_basegame "" +seta fs_basepath "" +seta fs_copyfiles "0" +seta fs_debug "0" +seta fs_game "" +seta fs_homepath "" +seta sv_allowDownload "0" +seta sv_hostname "quakekube" +seta sv_maxclients "12" +seta rconpassword "changeme" +set d0 "seta g_gametype 0 ; map q3dm7 ; set nextmap vstr d1" +set d1 "seta g_gametype 0 ; map q3dm17 ; set nextmap vstr d2" +set d2 "seta g_gametype 4 ; capturelimit 8 ; map q3wctf1 ; set nextmap vstr d3" +set d3 "seta g_gametype 1 ; map q3tourney2 ; set nextmap vstr d4" +set d4 "seta g_gametype 4 ; capturelimit 8 ; map q3wctf3 ; set nextmap vstr d5" +set d5 "seta g_gametype 1 ; map ztn3tourney1 ; set nextmap vstr d0" +vstr d0 +seta g_inactivity 600 +seta sv_timeout 120 +` + +func TestConfigMarshal(t *testing.T) { + var cfg *Config + if err := yaml.Unmarshal([]byte(config), &cfg); err != nil { + t.Fatal(err) + } + data, err := cfg.Marshal() + if err != nil { + t.Fatal(err) + } + fmt.Printf("%s\n", data) + if diff := cmp.Diff(string(data), expectedConfig); diff != "" { + t.Fatalf(diff) + } +} diff --git a/internal/quake/server/eula.go b/internal/quake/server/eula.go new file mode 100644 index 0000000..4cd4c03 --- /dev/null +++ b/internal/quake/server/eula.go @@ -0,0 +1,178 @@ +package server + +const Q3DemoEULA = `LIMITED USE SOFTWARE LICENSE AGREEMENT + +This Limited Use Software License Agreement (the "Agreement") is a legal +agreement between you, the end-user, and Id Software, Inc. ("ID"). BY +CONTINUING THE INSTALLATION OF THIS GAME DEMO PROGRAM ENTITLED QUAKE III: +ARENA (THE "SOFTWARE"), BY LOADING OR RUNNING THE SOFTWARE, OR BY PLACING +OR COPYING THE SOFTWARE ONTO YOUR COMPUTER HARD DRIVE, COMPUTER RAM OR +OTHER STORAGE, YOU ARE AGREEING TO BE BOUND BY THE TERMS OF THIS +AGREEMENT. + +1. Grant of License. Subject to the terms and provisions of this +Agreement, ID grants to you the non-exclusive and limited right to use the +Software only in executable or object code form. The term "Software" +includes all elements of the Software, including, without limitation, data +files and screen displays. You are not receiving any ownership or +proprietary right, title or interest in or to the Software or the +copyright, trademarks, or other rights related thereto. For purposes of +this section, "use" means loading the Software into RAM and/or onto +computer hard drive, as well as installation of the Software on a hard +disk or other storage device and means the uses permitted in section 3. +hereinbelow. You agree that the Software will not be shipped, +transferred or exported into any country in violation of the U.S. Export +Administration Act (or any other law governing such matters) by you or +anyone at your direction and that you will not utilize and will not +authorize anyone to utilize, in any other manner, the Software in +violation of any applicable law. The Software may not be downloaded +or otherwise exported or exported into (or to a national or resident +of) any country to which the U.S. has embargoed goods or to anyone +or into any country who/which are prohibited, by applicable law, from +receiving such property. + +2. Prohibitions. You, either directly or indirectly, shall not do +any of the following acts: + +a. rent the Software; + +b. sell the Software; + +c. lease or lend the Software; + +d. offer the Software on a "pay-per-play" basis; + +e. distribute the Software (except as permitted by section 3. +hereinbelow); + +f. in any other manner and through any medium whatsoever +commercially exploit the Software or use the Software for any commercial +purpose; + +g. disassemble, reverse engineer, decompile, modify or alter the +Software including, without limitation, creating or developing extra or +add-on levels for the Software; + +h. translate the Software; + +i. reproduce or copy the Software (except as permitted by section +3. hereinbelow); + +j. publicly display the Software; + +k. prepare or develop derivative works based upon the Software; or + +l. remove or alter any legal notices or other markings or +legends, such as trademark and copyright notices, affixed on or within +the Software. + +3. Permitted Distribution and Copying. So long as this Agreement +accompanies each copy you make of the Software, and so long as you fully +comply, at all times, with this Agreement, ID grants to you the +non-exclusive and limited right to copy the Software and to distribute +such copies of the Software free of charge for non-commercial purposes +which shall include the free of charge distribution of copies of the +Software as mounted on the covers of magazines; provided, however, you +shall not copy or distribute the Software in any infringing manner or +in any manner which violates any law or third party right and you shall +not distribute the Software together with any material which is +infringing, libelous, defamatory, obscene, false, misleading, or +otherwise illegal or unlawful. You agree to label conspicuously as +"SHAREWARE" or "DEMO" each CD or other non-electronic copy of the +Software that you make and distribute. ID reserves all rights not +granted in this Agreement. You shall not commercially distribute the +Software unless you first enter into a separate contract with ID, a +copy of which you may request, but which ID may decline to execute. +For more information visit www.quake3arena.com. + +4. Intellectual Property Rights. The Software and all copyrights, +trademarks and all other conceivable intellectual property rights related +to the Software are owned by ID and are protected by United States +copyright laws, international treaty provisions and all applicable law, +such as the Lanham Act. You must treat the Software like any other +copyrighted material, as required by 17 U.S.C., §101 et seq. and other +applicable law. You agree to use your best efforts to see that any user +of the Software licensed hereunder complies with this Agreement. You +agree that you are receiving a copy of the Software by license only +and not by sale and that the "first sale" doctrine of 17 U.S.C. §109 +does not apply to your receipt or use of the Software. + +5. NO WARRANTIES. ID DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS OR +IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE +SOFTWARE. ID DOES NOT WARRANT THAT THE OPERATION OF THE SOFTWARE WILL BE +UNINTERRUPTED OR ERROR FREE OR THAT THE SOFTWARE WILL MEET YOUR SPECIFIC +REQUIREMENTS. ADDITIONAL STATEMENTS SUCH AS PRESENTATIONS, WHETHER ORAL +OR WRITTEN, DO NOT CONSTITUTE WARRANTIES BY ID AND SHOULD NOT BE RELIED +UPON. THIS SECTION 5. SHALL SURVIVE CANCELLATION OR TERMINATION OF THIS +AGREEMENT. + +6. Governing Law, Venue, Indemnity and Liability Limitation. This +Agreement shall be construed in accordance with and governed by the +applicable laws of the State of Texas and applicable United States federal +law. Copyright and other proprietary matters will be governed by United +States laws and international treaties. Exclusive venue for all +litigation regarding this Agreement shall be in Dallas County, Texas +and you agree to submit to the jurisdiction of the courts in Dallas, +Texas for any such litigation. You agree to indemnify, defend and hold +harmless ID and ID's officers, employees, directors, agents, licensees +(excluding you), successors and assigns from and against all losses, +lawsuits, damages, causes of action and claims relating to and/or +arising from your breach of this Agreement. You agree that your +unauthorized use of the Software, or any part thereof, may immediately +and irreparably damage ID such that ID could not be adequately +compensated solely by a monetary award and that at ID's option ID shall +be entitled to an injunctive order, in addition to all other available +remedies including a monetary award, appropriately restraining and/or +prohibiting such unauthorized use without the necessity of ID posting +bond or other security. IN ANY CASE, ID AND ID'S OFFICERS, EMPLOYEES, +DIRECTORS, AGENTS, LICENSEES, SUBLICENSEES, SUCCESSORS AND ASSIGNS +SHALL NOT BE LIABLE FOR LOSS OF DATA, LOSS OF PROFITS, LOST SAVINGS, +SPECIAL, INCIDENTAL, CONSEQUENTIAL, INDIRECT, PUNITIVE OR OTHER SIMILAR +DAMAGES ARISING FROM ANY ALLEGED CLAIM FOR BREACH OF WARRANTY, BREACH +OF CONTRACT, NEGLIGENCE, STRICT PRODUCT LIABILITY, OR OTHER LEGAL +THEORY EVEN IF ID OR ITS AGENT HAVE BEEN ADVISED OF THE POSSIBILITY +OF SUCH DAMAGES OR EVEN IF SUCH DAMAGES ARE FORESEEABLE, OR LIABLE +FOR ANY CLAIM BY ANY OTHER PARTY. Some jurisdictions do not allow +the exclusion or limitation of incidental or consequential damages, +so the above limitation or exclusion may not apply to you. This +Section 6. shall survive cancellation or termination of this Agreement. + +7. U.S. Government Restricted Rights. To the extent applicable, +the United States Government shall only have those rights to use the +Software as expressly stated and expressly limited and restricted in +this Agreement, as provided in 48 C.F.R. §§ 227.7201 through 227.7204, +inclusive. + +8. General Provisions. Neither this Agreement nor any part or +portion hereof shall be assigned or sublicensed by you. ID may assign its +rights under this Agreement in ID's sole discretion. Should any provision +of this Agreement be held to be void, invalid, unenforceable or illegal by +a court of competent jurisdiction, the validity and enforceability of the +other provisions shall not be affected thereby. If any provision is +determined to be unenforceable by a court of competent jurisdiction, you +agree to a modification of such provision to provide for enforcement of +the provision's intent, to the extent permitted by applicable law. +Failure of ID to enforce any provision of this Agreement shall not +constitute or be construed as a waiver of such provision or of the right +to enforce such provision. Immediately upon your failure to comply with +or breach of any term or provision of this Agreement, THIS AGREEMENT +AND YOUR LICENSE SHALL AUTOMATICALLY TERMINATE, WITHOUT NOTICE, AND ID +MAY PURSUE ALL RELIEF AND REMEDIES AGAINST YOU WHICH ARE AVAILABLE UNDER +APPLICABLE LAW AND/OR THIS AGREEMENT. In the event this Agreement is +terminated, you shall have no right to use the Software, in any manner, +and you shall immediately destroy all copies of the Software in your +possession, custody or control. + +YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, YOU UNDERSTAND THIS +AGREEMENT, AND UNDERSTAND THAT BY CONTINUING THE INSTALLATION OF THE +SOFTWARE, BY LOADING OR RUNNING THE SOFTWARE, OR BY PLACING OR COPYING +THE SOFTWARE ONTO YOUR COMPUTER HARD DRIVE OR RAM, YOU AGREE TO BE BOUND +BY THE TERMS AND CONDITIONS OF THIS AGREEMENT. YOU FURTHER AGREE THAT, +EXCEPT FOR WRITTEN SEPARATE AGREEMENTS BETWEEN ID AND YOU, THIS +AGREEMENT IS A COMPLETE AND EXCLUSIVE STATEMENT OF THE RIGHTS AND +LIABILITIES OF THE PARTIES HERETO. THIS AGREEMENT SUPERSEDES ALL PRIOR +ORAL AGREEMENTS, PROPOSALS OR UNDERSTANDINGS, AND ANY OTHER +COMMUNICATIONS BETWEEN ID AND YOU RELATING TO THE SUBJECT MATTER OF +THIS AGREEMENT. +` diff --git a/internal/quake/server/server.go b/internal/quake/server/server.go new file mode 100644 index 0000000..2e83868 --- /dev/null +++ b/internal/quake/server/server.go @@ -0,0 +1,201 @@ +package server + +import ( + "context" + "log" + "net" + "os" + "path/filepath" + "time" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promauto" + "sigs.k8s.io/yaml" + + "github.com/ChrisRx/quake-kube/internal/util/exec" + quakenet "github.com/ChrisRx/quake-kube/pkg/quake/net" +) + +var ( + activePlayers = promauto.NewGauge(prometheus.GaugeOpts{ + Name: "quake_active_players", + Help: "The current number of active players", + }) + + scores = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Name: "quake_player_scores", + Help: "Current scores by player, by map", + }, []string{"player", "map"}) + + pings = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Name: "quake_player_pings", + Help: "Current ping by player", + }, []string{"player"}) + + configReloads = promauto.NewCounter(prometheus.CounterOpts{ + Name: "quake_config_reloads", + Help: "Config file reload count", + }) +) + +type Server struct { + Dir string + WatchInterval time.Duration + ConfigFile string + Addr string +} + +func (s *Server) Start(ctx context.Context) error { + if s.Addr == "" { + s.Addr = "0.0.0.0:27960" + } + host, port, err := net.SplitHostPort(s.Addr) + if err != nil { + return err + } + args := []string{ + "+set", "dedicated", "1", + "+set", "net_ip", host, + "+set", "net_port", port, + "+set", "fs_homepath", s.Dir, + "+set", "com_basegame", "baseq3", + // "+set", "com_basegame", "arena", + // "+set", "fs_game", "arena", + "+set", "com_gamename", "Quake3Arena", + "+exec", "server.cfg", + } + cmd := exec.CommandContext(ctx, "ioq3ded", args...) + cmd.Dir = s.Dir + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + if s.ConfigFile == "" { + cfg := Default() + data, err := cfg.Marshal() + if err != nil { + return err + } + if err := os.WriteFile(filepath.Join(s.Dir, "baseq3/server.cfg"), data, 0644); err != nil { + return err + } + if err := cmd.Start(); err != nil { + return err + } + return cmd.Wait() + } + + if err := s.reload(); err != nil { + return err + } + if err := cmd.Start(); err != nil { + return err + } + + go func() { + if err := cmd.Wait(); err != nil { + log.Println(err) + } + }() + + go func() { + addr := s.Addr + if net.ParseIP(host).IsUnspecified() { + addr = net.JoinHostPort("127.0.0.1", port) + } + tick := time.NewTicker(5 * time.Second) + defer tick.Stop() + + for { + select { + case <-tick.C: + status, err := quakenet.GetStatus(addr) + if err != nil { + log.Printf("metrics: get status failed %v", err) + continue + } + activePlayers.Set(float64(len(status.Players))) + for _, p := range status.Players { + if mapname, ok := status.Configuration["mapname"]; ok { + scores.WithLabelValues(p.Name, mapname).Set(float64(p.Score)) + } + pings.WithLabelValues(p.Name).Set(float64(p.Ping)) + } + case <-ctx.Done(): + return + } + } + }() + + ch, err := s.watch(ctx) + if err != nil { + return err + } + + for { + select { + case <-ch: + if err := s.reload(); err != nil { + return err + } + configReloads.Inc() + if err := cmd.Restart(ctx); err != nil { + return err + } + go func() { + if err := cmd.Wait(); err != nil { + log.Println(err) + } + }() + case <-ctx.Done(): + return ctx.Err() + } + } +} + +func (s *Server) reload() error { + data, err := os.ReadFile(s.ConfigFile) + if err != nil { + return err + } + cfg := Default() + if err := yaml.Unmarshal(data, &cfg); err != nil { + return err + } + data, err = cfg.Marshal() + if err != nil { + return err + } + return os.WriteFile(filepath.Join(s.Dir, "baseq3/server.cfg"), data, 0644) +} + +func (s *Server) watch(ctx context.Context) (<-chan struct{}, error) { + if s.WatchInterval == 0 { + s.WatchInterval = 15 * time.Second + } + cur, err := os.Stat(s.ConfigFile) + if err != nil { + return nil, err + } + + ch := make(chan struct{}) + + go func() { + ticker := time.NewTicker(s.WatchInterval) + defer ticker.Stop() + + for { + select { + case <-ticker.C: + if fi, err := os.Stat(s.ConfigFile); err == nil { + if fi.ModTime().After(cur.ModTime()) { + ch <- struct{}{} + } + cur = fi + } + case <-ctx.Done(): + return + } + } + }() + return ch, nil +} diff --git a/internal/util/exec/exec.go b/internal/util/exec/exec.go new file mode 100644 index 0000000..c1369b2 --- /dev/null +++ b/internal/util/exec/exec.go @@ -0,0 +1,30 @@ +package exec + +import ( + "context" + "os/exec" +) + +type Cmd struct { + *exec.Cmd +} + +func (cmd *Cmd) Restart(ctx context.Context) error { + if cmd.Process != nil { + if err := cmd.Process.Kill(); err != nil { + return err + } + } + newCmd := exec.CommandContext(ctx, cmd.Args[0], cmd.Args[1:]...) + newCmd.Dir = cmd.Dir + newCmd.Env = cmd.Env + newCmd.Stdin = cmd.Stdin + newCmd.Stdout = cmd.Stdout + newCmd.Stderr = cmd.Stderr + cmd.Cmd = newCmd + return cmd.Start() +} + +func CommandContext(ctx context.Context, name string, args ...string) *Cmd { + return &Cmd{Cmd: exec.CommandContext(ctx, name, args...)} +} diff --git a/internal/util/fs/ext.go b/internal/util/fs/ext.go new file mode 100644 index 0000000..52f7ae5 --- /dev/null +++ b/internal/util/fs/ext.go @@ -0,0 +1,12 @@ +package fs + +import "strings" + +func HasExts(path string, exts ...string) bool { + for _, ext := range exts { + if strings.HasSuffix(path, ext) { + return true + } + } + return false +} diff --git a/internal/util/fs/fs.go b/internal/util/fs/fs.go new file mode 100644 index 0000000..83ba401 --- /dev/null +++ b/internal/util/fs/fs.go @@ -0,0 +1,41 @@ +package fs + +import ( + "net/http" + "os" + "time" +) + +type modTimeFS struct { + fs http.FileSystem +} + +func (fs modTimeFS) Open(name string) (http.File, error) { + f, err := fs.fs.Open(name) + if err != nil { + return nil, err + } + return modTimeFile{f}, nil +} + +type modTimeFile struct { + http.File +} + +func (f modTimeFile) Stat() (os.FileInfo, error) { + fi, err := f.File.Stat() + if err != nil { + return nil, err + } + return modTimeFileInfo{fi}, nil +} + +type modTimeFileInfo struct { + os.FileInfo +} + +func (modTimeFileInfo) ModTime() time.Time { return time.Time{} } + +func StripModTime(fs http.FileSystem) http.FileSystem { + return modTimeFS{fs} +} diff --git a/internal/util/fs/walk.go b/internal/util/fs/walk.go new file mode 100644 index 0000000..b386fbf --- /dev/null +++ b/internal/util/fs/walk.go @@ -0,0 +1,24 @@ +package fs + +import ( + "os" + "path/filepath" +) + +func WalkFiles(root string, walkFn filepath.WalkFunc, exts ...string) error { + return filepath.Walk(root, func(path string, info os.FileInfo, err error) error { + if err != nil { + if os.IsPermission(err) { + return nil + } + return err + } + if !HasExts(path, exts...) { + return nil + } + if info.IsDir() { + return nil + } + return walkFn(path, info, err) + }) +} diff --git a/internal/util/net/http/http.go b/internal/util/net/http/http.go new file mode 100644 index 0000000..27961fe --- /dev/null +++ b/internal/util/net/http/http.go @@ -0,0 +1,44 @@ +package http + +import ( + "fmt" + "io" + "net/http" + "time" +) + +func GetBody(url string) ([]byte, error) { + client := http.Client{ + Timeout: 5 * time.Minute, + } + resp, err := client.Get(url) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("cannot get url %q: %v", url, http.StatusText(resp.StatusCode)) + } + + return io.ReadAll(resp.Body) +} + +func GetUntil(url string, stop <-chan struct{}) error { + client := http.Client{ + Timeout: 1 * time.Second, + } + for { + select { + case <-stop: + return fmt.Errorf("not available: %q", url) + default: + resp, err := client.Get(url) + if err != nil { + continue + } + resp.Body.Close() + return nil + } + } +} diff --git a/internal/util/net/net.go b/internal/util/net/net.go new file mode 100644 index 0000000..4d8b39b --- /dev/null +++ b/internal/util/net/net.go @@ -0,0 +1,24 @@ +package net + +import ( + "errors" + "net" +) + +// DetectHostIPv4 attempts to determine the host IPv4 address by finding the +// first non-loopback device with an assigned IPv4 address. +func DetectHostIPv4() (string, error) { + addrs, err := net.InterfaceAddrs() + if err != nil { + return "", err + } + for _, a := range addrs { + if ipnet, ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { + if ipnet.IP.To4() == nil { + continue + } + return ipnet.IP.String(), nil + } + } + return "", errors.New("cannot detect host IPv4 address") +} diff --git a/pkg/must/must.go b/pkg/must/must.go new file mode 100644 index 0000000..23795f5 --- /dev/null +++ b/pkg/must/must.go @@ -0,0 +1,9 @@ +package must + +// Must +func Must[T any](a T, err error) T { + if err != nil { + panic(err) + } + return a +} diff --git a/pkg/mux/mux.go b/pkg/mux/mux.go new file mode 100644 index 0000000..25d4e12 --- /dev/null +++ b/pkg/mux/mux.go @@ -0,0 +1,105 @@ +package mux + +import ( + "bytes" + "fmt" + "io" + "net" + + "github.com/soheilhy/cmux" +) + +// Connection +type Connection interface { + Serve(l net.Listener) error +} + +// Mux +type Mux struct { + cmux.CMux + + conns []*registerConn +} + +// New +func New(l net.Listener) *Mux { + return &Mux{ + CMux: cmux.New(l), + conns: make([]*registerConn, 0), + } +} + +// Register +func (m *Mux) Register(conn Connection) *registerConn { + r := ®isterConn{ + Mux: m, + conn: conn, + } + m.conns = append(m.conns, r) + return r +} + +// Serve +func (m *Mux) Serve() error { + for _, conn := range m.conns { + if !conn.started { + panic(fmt.Errorf("match not defined for connection: %T\n", conn.conn)) + } + } + return m.CMux.Serve() +} + +type registerConn struct { + *Mux + + conn Connection + started bool +} + +func (r *registerConn) Match(matches ...any) { + if len(matches) == 0 { + return + } + + var l net.Listener + switch matches[0].(type) { + case cmux.Matcher: + ms := make([]cmux.Matcher, len(matches)) + for i := range matches { + ms[i] = matches[i].(cmux.Matcher) + } + l = r.Mux.Match(ms...) + case cmux.MatchWriter: + ms := make([]cmux.MatchWriter, len(matches)) + for i := range matches { + ms[i] = matches[i].(cmux.MatchWriter) + } + l = r.MatchWithWriters(ms...) + default: + panic(fmt.Errorf("expected cmux.Matcher | cmux.MatchWriter, received %T", matches[0])) + } + + go func() { + if err := r.conn.Serve(l); err != cmux.ErrListenerClosed { + panic(err) + } + }() + + r.started = true +} + +func (r *registerConn) Any() { + r.Match(cmux.Any()) +} + +func URLPrefix(prefix string) cmux.Matcher { + b := []byte(prefix) + buf := make([]byte, len(b)) + return func(r io.Reader) bool { + n, _ := io.ReadFull(r, buf) + if n >= len(b) { + n = len(b) + } + return bytes.Equal(buf[:n], b) + } +} diff --git a/pkg/quake/net/net.go b/pkg/quake/net/net.go new file mode 100644 index 0000000..3bbd6c2 --- /dev/null +++ b/pkg/quake/net/net.go @@ -0,0 +1,127 @@ +package net + +import ( + "bytes" + "fmt" + "net" + "strconv" + "time" +) + +const ( + OutOfBandHeader = "\xff\xff\xff\xff" + GetInfoCommand = "getinfo" + GetStatusCommand = "getstatus" +) + +func SendCommand(addr, cmd string) ([]byte, error) { + raddr, err := net.ResolveUDPAddr("udp4", addr) + if err != nil { + return nil, err + } + conn, err := net.ListenPacket("udp4", "0.0.0.0:0") + if err != nil { + return nil, err + } + defer conn.Close() + + buffer := make([]byte, 1024*1024) + if err := conn.SetDeadline(time.Now().Add(5 * time.Second)); err != nil { + return nil, err + } + n, err := conn.WriteTo([]byte(fmt.Sprintf("%s%s", OutOfBandHeader, cmd)), raddr) + if err != nil { + return nil, err + } + n, _, err = conn.ReadFrom(buffer) + if err != nil { + return nil, err + } + return buffer[:n], nil +} + +func parseMap(data []byte) map[string]string { + if i := bytes.Index(data, []byte("\n")); i >= 0 { + data = data[i+1:] + } + data = bytes.TrimPrefix(data, []byte("\\")) + data = bytes.TrimSuffix(data, []byte("\n")) + parts := bytes.Split(data, []byte("\\")) + m := make(map[string]string) + for i := 0; i < len(parts)-1; i += 2 { + m[string(parts[i])] = string(parts[i+1]) + } + return m +} + +type Player struct { + Name string + Ping int + Score int +} + +func parsePlayers(data []byte) ([]Player, error) { + players := make([]Player, 0) + for _, player := range bytes.Split(data, []byte("\n")) { + parts := bytes.SplitN(player, []byte(" "), 3) + if len(parts) != 3 { + continue + } + name, err := strconv.Unquote(string(parts[2])) + if err != nil { + return nil, err + } + ping, err := strconv.Atoi(string(parts[1])) + if err != nil { + return nil, err + } + score, err := strconv.Atoi(string(parts[0])) + if err != nil { + return nil, err + } + players = append(players, Player{ + Name: name, + Ping: ping, + Score: score, + }) + } + return players, nil +} + +func GetInfo(addr string) (map[string]string, error) { + resp, err := SendCommand(addr, GetInfoCommand) + if err != nil { + return nil, err + } + return parseMap(resp), nil +} + +type StatusResponse struct { + Configuration map[string]string + Players []Player +} + +func GetStatus(addr string) (*StatusResponse, error) { + resp, err := SendCommand(addr, GetStatusCommand) + if err != nil { + return nil, err + } + data := bytes.TrimSuffix(resp, []byte("\n")) + parts := bytes.SplitN(data, []byte("\n"), 3) + switch len(parts) { + case 2: + status := &StatusResponse{ + Configuration: parseMap(parts[1]), + Players: make([]Player, 0), + } + return status, nil + case 3: + status := &StatusResponse{ + Configuration: parseMap(parts[1]), + } + status.Players, _ = parsePlayers(parts[2]) + return status, nil + default: + return nil, fmt.Errorf("cannot parse response: %q", resp) + } +} diff --git a/proto/content/v1/assets.proto b/proto/content/v1/assets.proto new file mode 100644 index 0000000..31da667 --- /dev/null +++ b/proto/content/v1/assets.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; +package content.v1; +option go_package = "github.com/ChrisRx/quake-kube/internal/quake/content/api/v1"; + +message FileUploadRequest { + string name = 1; + bytes file = 2; +} + +message FileUploadResponse { + string name = 1; + uint32 size = 2; + string message = 3; +} + +service Assets { + rpc FileUpload(FileUploadRequest) returns (FileUploadResponse) {} +} diff --git a/proto/content/v2/assets.proto b/proto/content/v2/assets.proto new file mode 100644 index 0000000..5bd75b5 --- /dev/null +++ b/proto/content/v2/assets.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; +package content.service.v2; +option go_package = "github.com/ChrisRx/quake-kube/internal/quake/content/api/v2"; + +import "google/protobuf/empty.proto"; +import "content/v1/assets.proto"; + +message File { + string name = 1; + uint32 checksum = 2; + int64 compressed = 3; +} + +message Manifest { + repeated File files = 1; +} + +message FileUploadRequest { + string name = 1; + string game_name = 2; + bytes file = 3; +} + +message FileUploadResponse { + string name = 1; + uint32 size = 2; + string message = 3; +} + +service Assets { + rpc GetManifest(google.protobuf.Empty) returns (Manifest) {} + rpc FileUpload(FileUploadRequest) returns (FileUploadResponse) {} +}