commit 3332f609a918214768f306dced878d83725aa48d
Author: Diego Marcos
Date: Fri May 23 08:52:14 2025 -0700
Initial commit
diff --git a/ .gitattributes b/ .gitattributes
new file mode 100644
index 0000000..edf2dcd
--- /dev/null
+++ b/ .gitattributes
@@ -0,0 +1,12 @@
+# FIX CRLF always when developer has not set
+# Linux/Mac: git config --global core.autocrlf input
+# Windows: git config --global core.autocrlf true
+# Auto detect text files and perform LF normalization
+* text=auto
+* eol=lf
+
+*.html text
+*.glsl text
+*.js text
+*.md text
+*.ts text
diff --git a/.github/workflows/ci-linux.yml b/.github/workflows/ci-linux.yml
new file mode 100644
index 0000000..20cc3fe
--- /dev/null
+++ b/.github/workflows/ci-linux.yml
@@ -0,0 +1,34 @@
+name: Forge CI Linux
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+permissions:
+ contents: read
+jobs:
+ test:
+ name: forge
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ node-version: ['22.x']
+ steps:
+ - name: Use Node.js ${{ matrix['node-version'] }}
+ uses: actions/setup-node@v4
+ with:
+ node-version: ${{ matrix['node-version'] }}
+
+ - name: Checkout Repo
+ uses: actions/checkout@v4
+
+ - name: Install dependencies
+ run: npm install
+
+ - name: Lint
+ run: npm run lint
+
+ - name: Tests
+ run: npm run test
\ No newline at end of file
diff --git a/.github/workflows/ci-windows.yaml b/.github/workflows/ci-windows.yaml
new file mode 100644
index 0000000..1c26e5b
--- /dev/null
+++ b/.github/workflows/ci-windows.yaml
@@ -0,0 +1,40 @@
+name: Forge CI Windows
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+permissions:
+ contents: read
+jobs:
+ test:
+ name: forge
+ runs-on: windows-latest
+ strategy:
+ matrix:
+ node-version: ['22.x']
+ steps:
+ - name: Use Node.js ${{ matrix['node-version'] }}
+ uses: actions/setup-node@v4
+ with:
+ node-version: ${{ matrix['node-version'] }}
+
+ - name: Set git to use LF
+ run: |
+ git config --global core.autocrlf false
+ git config --global core.eol lf
+ - uses: actions/checkout@v4
+
+ - name: Checkout Repo
+ uses: actions/checkout@v4
+
+ - name: Install dependencies
+ run: npm install
+
+ - name: Lint
+ run: npm run lint
+
+ - name: Tests
+ run: npm run test
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..66a7929
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+*.DS_Store
+examples/assets
+examples/js/vendor
+examples/showcase/assets
+node_modules/
+site/
+*.zip
+*.gltf
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..ee2b427
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright © 2025 WORLD LABS TECHNOLOGIES, INC.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..132b337
--- /dev/null
+++ b/README.md
@@ -0,0 +1,196 @@
+
+
+
+
+
+
An advanced 3D Gaussian Splatting renderer for THREE.js
+
+
+ [Features](#features) -
+ [Getting Started](#getting-started) -
+
Documentation -
+
FAQ
+
+
+
+
+
+ [](https://github.com/forge-gfx/forge/blob/main/LICENSE)
+ [](https://www.npmjs.com/package/forge)
+
+
+
+
+
+
+
+
+
+## Features
+
+- Load multiple splats files simultaneously ([demo]())
+- Combine and composite splats with regular Meshes ([demo]())
+- Animation ([demo]())
+- Real Time Visual Effects ([demo]())
+- Multiple Camera Views ([demo]())
+- Procedurally generated splats ([demo]())
+
+Check out all the [examples]()
+
+## Getting Started
+
+### Copy code
+
+Copy code below in an `index.html` file.
+
+```html
+
+
+
+```
+
+### Web Editor
+
+Remix the [glitch starter template](https://glitch.com/edit/#!/forge-dev)
+
+### Usage from CDN
+
+```html
+
+```
+
+### Install with NPM
+
+```shell
+npm install forge-dev
+```
+
+## Develop and contribute to the project
+
+The examples fetch the assets from an external URL. To work offline is possible to downloading the assets files locally with the following command:
+
+```
+npm run assets:download
+```
+
+Install [Rust](https://www.rust-lang.org/tools/install) if it's not already installed in your machine.
+
+Next, build Forge by running:
+```
+npm install
+npm run build
+```
+This will first build the Rust Wasm component (can be invoked via `npm run build:wasm`), then Forge itself (`npm run build`).
+
+Once you've fetched the data and built Forge, you can run run the examples:
+```
+npm start
+```
+This will run a dev server by default at [http://localhost:8080/](http://localhost:8080/). Check the console log output to see if yours is served on a different port.
+
+## Build troubleshooting
+
+First try cleaning all the build files and re-building everything:
+```
+npm run clean
+npm install
+npm run build
+```
+
+There's no versioning system for assets. If you need to re-download a specific file you can delete that asset file individually or download all assets from scratch:
+
+```
+ npm run assets:clean
+ npm run assets:download
+```
+
+## Ignore dist directory during development
+
+To ignore the dist directory and prevent accidental commits and merge conflicts
+
+```
+git update-index --assume-unchanged dist/*
+```
+
+To revert and be able to commit into to the dist directory again:
+
+```
+git update-index --no-assume-unchanged dist/*
+```
+
+To liste ignored files in case of need to troubleshoot
+
+```
+git ls-files -v | grep '^[a-z]' | cut -c3-
+```
+
+## Build docs
+
+Install [Mkdocs Material](https://squidfunk.github.io/mkdocs-material/)
+
+```
+pip install mkdocs-material
+```
+
+If you hit an `externally managed environment` error on macOS and if you installed python via `brew` try:
+
+```
+brew install mkdocs-material
+```
+
+Edit markdown in `/docs` directory
+
+```
+mkdocs serve
+```
+
+## Build Forge website
+
+Build the static site and docs in a `site` directory.
+
+```
+npm run site:build
+```
+
+You can run any static server in the `site` directory but for convenience you can run
+
+```
+npm run site:serve
+```
+
+## Deploy Forge website
+
+TO-DO
diff --git a/biome.json b/biome.json
new file mode 100644
index 0000000..d2562f6
--- /dev/null
+++ b/biome.json
@@ -0,0 +1,38 @@
+{
+ "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
+ "vcs": {
+ "enabled": false,
+ "clientKind": "git",
+ "useIgnoreFile": false
+ },
+ "files": {
+ "ignoreUnknown": false,
+ "ignore": [
+ "dist/*",
+ "examples/showcase/hello-gsplat",
+ "rust/target",
+ "rust/forge-internal-rs/pkg",
+ "src/vrButton.ts",
+ "site"
+ ]
+ },
+ "formatter": {
+ "enabled": true,
+ "indentStyle": "space",
+ "lineEnding": "lf"
+ },
+ "organizeImports": {
+ "enabled": true
+ },
+ "linter": {
+ "enabled": true,
+ "rules": {
+ "recommended": true
+ }
+ },
+ "javascript": {
+ "formatter": {
+ "quoteStyle": "double"
+ }
+ }
+}
diff --git a/dist/forge.cjs.js b/dist/forge.cjs.js
new file mode 100644
index 0000000..013fa8c
--- /dev/null
+++ b/dist/forge.cjs.js
@@ -0,0 +1,12072 @@
+"use strict";
+Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
+const THREE = require("three");
+var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
+function _interopNamespaceDefault(e) {
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
+ if (e) {
+ for (const k in e) {
+ if (k !== "default") {
+ const d = Object.getOwnPropertyDescriptor(e, k);
+ Object.defineProperty(n, k, d.get ? d : {
+ enumerable: true,
+ get: () => e[k]
+ });
+ }
+ }
+ }
+ n.default = e;
+ return Object.freeze(n);
+}
+const THREE__namespace = /* @__PURE__ */ _interopNamespaceDefault(THREE);
+let wasm;
+function addToExternrefTable0(obj) {
+ const idx = wasm.__externref_table_alloc();
+ wasm.__wbindgen_export_2.set(idx, obj);
+ return idx;
+}
+function handleError(f, args) {
+ try {
+ return f.apply(this, args);
+ } catch (e) {
+ const idx = addToExternrefTable0(e);
+ wasm.__wbindgen_exn_store(idx);
+ }
+}
+function debugString(val) {
+ const type = typeof val;
+ if (type == "number" || type == "boolean" || val == null) {
+ return `${val}`;
+ }
+ if (type == "string") {
+ return `"${val}"`;
+ }
+ if (type == "symbol") {
+ const description = val.description;
+ if (description == null) {
+ return "Symbol";
+ } else {
+ return `Symbol(${description})`;
+ }
+ }
+ if (type == "function") {
+ const name = val.name;
+ if (typeof name == "string" && name.length > 0) {
+ return `Function(${name})`;
+ } else {
+ return "Function";
+ }
+ }
+ if (Array.isArray(val)) {
+ const length2 = val.length;
+ let debug = "[";
+ if (length2 > 0) {
+ debug += debugString(val[0]);
+ }
+ for (let i = 1; i < length2; i++) {
+ debug += ", " + debugString(val[i]);
+ }
+ debug += "]";
+ return debug;
+ }
+ const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val));
+ let className;
+ if (builtInMatches && builtInMatches.length > 1) {
+ className = builtInMatches[1];
+ } else {
+ return toString.call(val);
+ }
+ if (className == "Object") {
+ try {
+ return "Object(" + JSON.stringify(val) + ")";
+ } catch (_) {
+ return "Object";
+ }
+ }
+ if (val instanceof Error) {
+ return `${val.name}: ${val.message}
+${val.stack}`;
+ }
+ return className;
+}
+let WASM_VECTOR_LEN = 0;
+let cachedUint8ArrayMemory0 = null;
+function getUint8ArrayMemory0() {
+ if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
+ cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
+ }
+ return cachedUint8ArrayMemory0;
+}
+const cachedTextEncoder = typeof TextEncoder !== "undefined" ? new TextEncoder("utf-8") : { encode: () => {
+ throw Error("TextEncoder not available");
+} };
+const encodeString = typeof cachedTextEncoder.encodeInto === "function" ? function(arg, view) {
+ return cachedTextEncoder.encodeInto(arg, view);
+} : function(arg, view) {
+ const buf = cachedTextEncoder.encode(arg);
+ view.set(buf);
+ return {
+ read: arg.length,
+ written: buf.length
+ };
+};
+function passStringToWasm0(arg, malloc, realloc) {
+ if (realloc === void 0) {
+ const buf = cachedTextEncoder.encode(arg);
+ const ptr2 = malloc(buf.length, 1) >>> 0;
+ getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);
+ WASM_VECTOR_LEN = buf.length;
+ return ptr2;
+ }
+ let len = arg.length;
+ let ptr = malloc(len, 1) >>> 0;
+ const mem = getUint8ArrayMemory0();
+ let offset = 0;
+ for (; offset < len; offset++) {
+ const code = arg.charCodeAt(offset);
+ if (code > 127) break;
+ mem[ptr + offset] = code;
+ }
+ if (offset !== len) {
+ if (offset !== 0) {
+ arg = arg.slice(offset);
+ }
+ ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
+ const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
+ const ret = encodeString(arg, view);
+ offset += ret.written;
+ ptr = realloc(ptr, len, offset, 1) >>> 0;
+ }
+ WASM_VECTOR_LEN = offset;
+ return ptr;
+}
+let cachedDataViewMemory0 = null;
+function getDataViewMemory0() {
+ if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {
+ cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
+ }
+ return cachedDataViewMemory0;
+}
+const cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => {
+ throw Error("TextDecoder not available");
+} };
+if (typeof TextDecoder !== "undefined") {
+ cachedTextDecoder.decode();
+}
+function getStringFromWasm0(ptr, len) {
+ ptr = ptr >>> 0;
+ return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
+}
+function raycast_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, near, far, num_splats, packed_splats, raycast_ellipsoid) {
+ const ret = wasm.raycast_splats(origin_x, origin_y, origin_z, dir_x, dir_y, dir_z, near, far, num_splats, packed_splats, raycast_ellipsoid);
+ return ret;
+}
+async function __wbg_load(module2, imports) {
+ if (typeof Response === "function" && module2 instanceof Response) {
+ if (typeof WebAssembly.instantiateStreaming === "function") {
+ try {
+ return await WebAssembly.instantiateStreaming(module2, imports);
+ } catch (e) {
+ if (module2.headers.get("Content-Type") != "application/wasm") {
+ console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
+ } else {
+ throw e;
+ }
+ }
+ }
+ const bytes = await module2.arrayBuffer();
+ return await WebAssembly.instantiate(bytes, imports);
+ } else {
+ const instance = await WebAssembly.instantiate(module2, imports);
+ if (instance instanceof WebAssembly.Instance) {
+ return { instance, module: module2 };
+ } else {
+ return instance;
+ }
+ }
+}
+function __wbg_get_imports() {
+ const imports = {};
+ imports.wbg = {};
+ imports.wbg.__wbg_buffer_09165b52af8c5237 = function(arg0) {
+ const ret = arg0.buffer;
+ return ret;
+ };
+ imports.wbg.__wbg_buffer_609cc3eee51ed158 = function(arg0) {
+ const ret = arg0.buffer;
+ return ret;
+ };
+ imports.wbg.__wbg_get_b9b93047fe3cf45b = function(arg0, arg1) {
+ const ret = arg0[arg1 >>> 0];
+ return ret;
+ };
+ imports.wbg.__wbg_instanceof_Uint8Array_17156bcf118086a9 = function(arg0) {
+ let result;
+ try {
+ result = arg0 instanceof Uint8Array;
+ } catch (_) {
+ result = false;
+ }
+ const ret = result;
+ return ret;
+ };
+ imports.wbg.__wbg_length_3b4f022188ae8db6 = function(arg0) {
+ const ret = arg0.length;
+ return ret;
+ };
+ imports.wbg.__wbg_length_6ca527665d89694d = function(arg0) {
+ const ret = arg0.length;
+ return ret;
+ };
+ imports.wbg.__wbg_length_8cfd2c6409af88ad = function(arg0) {
+ const ret = arg0.length;
+ return ret;
+ };
+ imports.wbg.__wbg_length_a446193dc22c12f8 = function(arg0) {
+ const ret = arg0.length;
+ return ret;
+ };
+ imports.wbg.__wbg_length_e2d2a49132c1b256 = function(arg0) {
+ const ret = arg0.length;
+ return ret;
+ };
+ imports.wbg.__wbg_new_405e22f390576ce2 = function() {
+ const ret = new Object();
+ return ret;
+ };
+ imports.wbg.__wbg_new_9fee97a409b32b68 = function(arg0) {
+ const ret = new Uint16Array(arg0);
+ return ret;
+ };
+ imports.wbg.__wbg_new_a12002a7f91c75be = function(arg0) {
+ const ret = new Uint8Array(arg0);
+ return ret;
+ };
+ imports.wbg.__wbg_new_e3b321dcfef89fc7 = function(arg0) {
+ const ret = new Uint32Array(arg0);
+ return ret;
+ };
+ imports.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354 = function(arg0, arg1, arg2) {
+ const ret = new Float32Array(arg0, arg1 >>> 0, arg2 >>> 0);
+ return ret;
+ };
+ imports.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212 = function(arg0, arg1, arg2) {
+ const ret = new Uint32Array(arg0, arg1 >>> 0, arg2 >>> 0);
+ return ret;
+ };
+ imports.wbg.__wbg_newwithlength_5a5efe313cfd59f1 = function(arg0) {
+ const ret = new Float32Array(arg0 >>> 0);
+ return ret;
+ };
+ imports.wbg.__wbg_newwithlength_bd3de93688d68fbc = function(arg0) {
+ const ret = new Uint32Array(arg0 >>> 0);
+ return ret;
+ };
+ imports.wbg.__wbg_set_10bad9bee0e9c58b = function(arg0, arg1, arg2) {
+ arg0.set(arg1, arg2 >>> 0);
+ };
+ imports.wbg.__wbg_set_65595bdd868b3009 = function(arg0, arg1, arg2) {
+ arg0.set(arg1, arg2 >>> 0);
+ };
+ imports.wbg.__wbg_set_bb8cecf6a62b9f46 = function() {
+ return handleError(function(arg0, arg1, arg2) {
+ const ret = Reflect.set(arg0, arg1, arg2);
+ return ret;
+ }, arguments);
+ };
+ imports.wbg.__wbg_set_d23661d19148b229 = function(arg0, arg1, arg2) {
+ arg0.set(arg1, arg2 >>> 0);
+ };
+ imports.wbg.__wbg_set_f4f1f0daa30696fc = function(arg0, arg1, arg2) {
+ arg0.set(arg1, arg2 >>> 0);
+ };
+ imports.wbg.__wbg_subarray_3aaeec89bb2544f0 = function(arg0, arg1, arg2) {
+ const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);
+ return ret;
+ };
+ imports.wbg.__wbg_subarray_769e1e0f81bb259b = function(arg0, arg1, arg2) {
+ const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);
+ return ret;
+ };
+ imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {
+ const ret = debugString(arg1);
+ const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ const len1 = WASM_VECTOR_LEN;
+ getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
+ };
+ imports.wbg.__wbindgen_init_externref_table = function() {
+ const table = wasm.__wbindgen_export_2;
+ const offset = table.grow(4);
+ table.set(0, void 0);
+ table.set(offset + 0, void 0);
+ table.set(offset + 1, null);
+ table.set(offset + 2, true);
+ table.set(offset + 3, false);
+ };
+ imports.wbg.__wbindgen_memory = function() {
+ const ret = wasm.memory;
+ return ret;
+ };
+ imports.wbg.__wbindgen_number_new = function(arg0) {
+ const ret = arg0;
+ return ret;
+ };
+ imports.wbg.__wbindgen_string_new = function(arg0, arg1) {
+ const ret = getStringFromWasm0(arg0, arg1);
+ return ret;
+ };
+ imports.wbg.__wbindgen_throw = function(arg0, arg1) {
+ throw new Error(getStringFromWasm0(arg0, arg1));
+ };
+ return imports;
+}
+function __wbg_finalize_init(instance, module2) {
+ wasm = instance.exports;
+ __wbg_init.__wbindgen_wasm_module = module2;
+ cachedDataViewMemory0 = null;
+ cachedUint8ArrayMemory0 = null;
+ wasm.__wbindgen_start();
+ return wasm;
+}
+async function __wbg_init(module_or_path) {
+ if (wasm !== void 0) return wasm;
+ if (typeof module_or_path !== "undefined") {
+ if (Object.getPrototypeOf(module_or_path) === Object.prototype) {
+ ({ module_or_path } = module_or_path);
+ } else {
+ console.warn("using deprecated parameters for the initialization function; pass a single object instead");
+ }
+ }
+ if (typeof module_or_path === "undefined") {
+ module_or_path = new URL("data:application/wasm;base64,AGFzbQEAAAABtgItYAJ/fwF/YAJ/fwBgA39/fwF/YAF/AGABfwF/YAN/f38AYAV/f39/fwBgBH9/f38AYAFvAX9gAW8Bb2ADb39/AW9gBX9/f39/AX9gA29vfwBgAABgA39+fgBgA39+fgF/YAd/f39/f39/AX9gBn9/f39/fwBgAX0BfWAEf39/fwF/YAABb2ABfwFvYAZ/f39/f38Bf2AAAX9gC39/f39/f39/f39/AX9gAn9/AW9gAXwBb2ACb38Bb2ADb29vAX9gAn9vAGAHf39/f39/fwBgAn9/AX5gAn9+AX9gAn9+AGALfX19fX19fX1/b38Bb2ABfwF9YAV/f35/fwBgBH9+f38AYAV/f31/fwBgBH99f38AYAV/f3x/fwBgBH98f38AYAR/f29vAX9gA39vbwF/YAJ9fQF9ArcIHgN3YmcVX193YmluZGdlbl9zdHJpbmdfbmV3ABkDd2JnFV9fd2JpbmRnZW5fbnVtYmVyX25ldwAaA3diZxpfX3diZ19nZXRfYjliOTMwNDdmZTNjZjQ1YgAbA3diZx1fX3diZ19sZW5ndGhfZTJkMmE0OTEzMmMxYjI1NgAIA3diZxpfX3diZ19uZXdfNDA1ZTIyZjM5MDU3NmNlMgAUA3diZx1fX3diZ19idWZmZXJfNjA5Y2MzZWVlNTFlZDE1OAAJA3diZxpfX3diZ19uZXdfYTEyMDAyYTdmOTFjNzViZQAJA3diZxpfX3diZ19zZXRfNjU1OTViZGQ4NjhiMzAwOQAMA3diZx1fX3diZ19sZW5ndGhfYTQ0NjE5M2RjMjJjMTJmOAAIA3diZxpfX3diZ19uZXdfOWZlZTk3YTQwOWIzMmI2OAAJA3diZxpfX3diZ19zZXRfZjRmMWYwZGFhMzA2OTZmYwAMA3diZx1fX3diZ19sZW5ndGhfOGNmZDJjNjQwOWFmODhhZAAIA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9mMWRlYWQ0NGQxZmM3MjEyAAoDd2JnGl9fd2JnX25ld19lM2IzMjFkY2ZlZjg5ZmM3AAkDd2JnGl9fd2JnX3NldF9kMjM2NjFkMTkxNDhiMjI5AAwDd2JnHV9fd2JnX2xlbmd0aF82Y2E1Mjc2NjVkODk2OTRkAAgDd2JnMV9fd2JnX25ld3dpdGhi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CwJAIAAoAhAiAkUNAEGousIAQQggAhDVBEUNAEEBDAILIAFBATsBJCABIAQ2AiAgAUEANgIcIAFBAToAGCABQd8ANgIUIAEgBDYCECABQQA2AgwgASAENgIIIAEgAzYCBCABQd8ANgIAIAFBKGogARBQAn8gASgCKEUEQAJAIAEtACUNACABQQE6ACUCQCABLQAkQQFGBEAgASgCICEFIAEoAhwhBAwBCyABKAIgIgUgASgCHCIERg0BCyABKAIEIARqIQMgBSAEawwCC0GwusIAEK4EAAsgASgCHCEEIAEgASgCMDYCHCADIARqIQMgASgCLCAEawshBAJAIAIEQCADIAQgAhDVBA0BCyABQcgAaiABQSBqKQIANwMAIAFBQGsgAUEYaikCADcDACABQThqIAFBEGopAgA3AwAgAUEwaiABQQhqKQIANwMAIAEgASkCADcDKAJAIAEtAE0NACACIQMDQCABKAIsIQUgAUHUAGogAUEoahBQAn8gASgCVEUEQCABLQBNDQMgAUEBOgBNAkAgAS0ATEEBRgRAIAEoAkghBSABKAJEIQQMAQsgASgCSCIFIAEoAkQiBEYNBAsgASgCLCAEaiEGIAUgBGsMAQsgASgCRCEEIAEgASgCXDYCRCAEIAVqIQYgASgCWCAEawshBAJAIANFBEBBACEDDAELQbm2wgBBASADENUEDQMgACgCECICRQRAQQAhAkEAIQMMAQsgAiEDIAYgBCACENUEDQMLIAEtAE1FDQALCyACRQ0BQcC6wgBBAiACENUERQ0BC0EBDAELAkAgACgCECICRQ0AQcK6wgBBAyACENUERQ0AQQEMAQsCQAJAAkAgACgCACIDRQRAQQAhAwwBC0EAIQIDQAJAIAAoAggiBCAAKAIETw0AIAMgBGotAABBxQBHDQAgACAEQQFqNgIIDAILAkAgAkUNACAAKAIQIgNFDQBB9bnCAEECIAMQ1QRFDQBBAQwFCyAAECcNAiACQQFrIQIgACgCACIDDQALQQAhAwsgACgCECIEBEBBAUH1s8IAQQEgBBDVBA0DGiAAKAIAIQMLIANFDQEgACgCCCICIAAoAgRPDQEgAiADai0AAEH1AEcNASAAIAJBAWo2AghBAAwCC0EBDAELAkAgACgCECICRQ0AQcW6wgBBBCACENUERQ0AQQEMAQsgABAnCyAB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AWogBiARGyADa2whAwwDCyABIApBjIHCABCtAgALQZyBwgBBKUHIgcIAEO0CAAtBoP/BAEEXQZyAwgAQ7QIACyAPIAZBAWo2AgAgAkEEaiAJOgAAIAIgAzYCACACQQhqIQIgBCAFQQFqIgVHDQALCyAAQYWAgIB4NgIADwsgBUEBaiEFIAMoAgAhCSADQQRqIQMgCUEATA0ACyAFQQFrIQxBACEDA0ACQCACIAZJBEAgA0EBaiEDIAsgAkEDdGogDDoABQNAIAIgDWogDnEiAiAETw0ACwwBCyACIAZB2IHCABCtAgALIAMgCUcNAAsMAAsAC9IHAQN/AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCgAHBwECAwQHBwUHCwJAAkACQAJAAkACQCAALQAEDgcADAEMAgMEDAsgAC0ACEEDRw0LIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQQgASADIAIoAggQpwQMBAsgAC0ACEEDRw0KIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQMgASADIAIoAggQpwQMAwsgAC0ACEEDRw0JIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQIgASADIAIoAggQpwQMAgsgAC0ACEEDRw0IIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQEgASADIAIoAggQpwQMAQsgAC0ACEEDRw0HIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQAgASADIAIoAggQpwQLIABBDEEEEKcEDwsCQAJAIAAtAAQOAgcBAAsgACgCCCIBQfv///8HaiICQQ1NIAJBAkdxDQYgAUGEgICAeEoNBSABQYOAgIB4Rw0GDAULIAAoAggiAUGEgICAeEogAUGDgICAeEZyDQQMBQsgAC0ABEEDRw0EDAULAkACQEEDIAAoAgQiAUEHayICIAJBA08bQQJrDgIBAAULAkACQAJAIAEOBgAHAQcHAgcLIAAtAAhBA0cNBgwICyAAKAIIIgFB7f///wdqIgJBCk0gAkEDR3ENBSABRSABQfv///8H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wQA2AgggAkIBNwIUIAIgAkEEaq1CgICAgJA4hDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwICyACIAA2AgQgAkEBNgIMIAJB8KfBADYCCCACQgE3AhQgAiACQQRqrUKAgICAoDeENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAcLIAIgAEEEajYCBCACQQE2AgwgAkHwp8EANgIIIAJCATcCFCACIAJBBGqtQoCAgICgOIQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEUMBgsgASgCHEHFusEAQTkgASgCICgCDBECAAwFCyACIABBBGo2AgQgAkECNgIMIAJBqLvBADYCCCACQgE3AhQgAiACQQRqrUKAgICA8DWENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAQLIAIgAEEEajYCACACIABBCGo2AgQgAkEDNgIMIAJB6LvBADYCCCACQgI3AhQgAkKAgICA8DUiBCACrYQ3AyggAiAEIAJBBGqthDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwDCyACIABBBGo2AgQgAkECNgIMIAJB8LzBADYCCCACQgE3AhQgAiACQQRqrUKAgICAsDiENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAILIAIgAEEEajYCACACIABBCGo2AgQgAkECNgIMIAJBsL3BADYCCCACQgI3AhQgAkKAgICAwDgiBCACQQRqrYQ3AyggAiAEIAKthDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwBCyACIABBBGo2AgAgAiAAQQhqNgIEIAJBAjYCDCACQfS9wQA2AgggAkICNwIUIAJCgICAgPA1IgQgAkEEaq2ENwMoIAIgBCACrYQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEULIAJBMGokAAuXBgEIfyMAQTBrIgEkAAJAAn8CQAJAAkAgACgCACIFBEAgACgCCCIEIAQgACgCBCIHIAQgB0sbayEIIAUhAwNAIAIgCGpFDQMgACACIARqQQFqNgIIIAJBAWohAiADIARqIANBAWohAy0AACIGQTBrQf8BcUEKSSAGQeEAa0H/AXFBBklyDQALIAZB3wBHDQIgAiAEakEBayEGAkAgBARA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IABBABAgDAELIAAQJwsgBEEQaiQAC5QDAQR/AkAgAkEQSQRAIAAhAwwBCwJAIABBACAAa0EDcSIFaiIEIABNDQAgACEDIAUEQCAFIQYDQCADIAE6AAAgA0EBaiEDIAZBAWsiBg0ACwsgBUEBa0EHSQ0AA0AgAyABOgAAIANBB2ogAToAACADQQZqIAE6AAAgA0EFaiABOgAAIANBBGogAToAACADQQNqIAE6AAAgA0ECaiABOgAAIANBAWogAToAACADQQhqIgMgBEcNAAsLIAQgAiAFayICQXxxaiIDIARLBEAgAUH/AXFBgYKECGwhBQNAIAQgBTYCACAEQQRqIgQgA0kNAAsLIAJBA3EhAgsCQCADIAIgA2oiBU8NACACQQdxIgQEQANAIAMgAToAACADQQFqIQMgBEEBayIEDQALCyACQQFrQQdJDQADQCADIAE6AAAgA0EHaiABOgAAIANBBmogAToAACADQQVqIAE6AAAgA0EEaiABOgAAIANBA2ogAToAACADQQJqIAE6AAAgA0EBaiABOgAAIANBCGoiAyAFRw0ACwsgAAudAwIGfwF+QTggAUH/AXEiASABQThPGyECAkAgACgCECIEIAAtABQiAWoiA0EASgRAIAIgA0sNAQJAIARBAEwgASACT3INAANAIARBAWsiBUEDdiEGQcAAIAFBB2oiB0F4cWshAwJAIAVBP00EQCAAIAYgAxCIASAAKAIQIQQgAC0AFCEBDAELAkAgACgCBCIFIAYgB0H4AXFBA3ZqQQdrIgZPBEAgBSAGayIFQQdLDQFBCCAFQcTewQAQqwQACyAGIAVB1N7BABCqBAALIAAgASADaiIBOgAUIAAgBCADQf8BcWsiBDYCECAAIAAoAgAgBmopAAA3AwgLIAFB/wFxIAJPDQEgBEEASg0ACwsgACABIAJrIgE6ABRCfyACrYZCf4UgACkDCCABQT9xrYiDDwsgACAEIAJrNgIQQgAPCyACIANrIQICQCADQf8BcSABSwRAIAAgAxBbIQggACgCECEEDAELIAAgASADayIBOgAUQn8gA62GQn+FIAApAwggAUE/ca2IgyEICyAAIAQgAms2AhAgCCACQT9xrYYLnAMBBX8CQEERQQAgAEGvsARPGyIBIAFBCHIiASAAQQt0IgIgAUECdEH82sIAaigCAEELdEkbIgEgAUEEciIBIAFBAnRB/NrCAGooAgBBC3QgAksbIgEgAUECciIBIAFBAnRB/NrCAGooAgBBC3QgAksbIgEgAUEBaiIBIAFBAnRB/NrCAGooAgBBC3QgAksbIgEgAUEBaiIBIAFBAnRB/NrCAGooAgBBC3QgAksbIgNBAnRB/NrCAGooAgBBC3QiASACRiABIAJJaiADaiICQSFNBEAgAkECdEH82sIAaiIBKAIAQRV2IQNB7wUhBAJ/AkAgAkEhRg0AIAEoAgRBFXYhBCACDQBBAAwBCyABQQRrKAIAQf///wBxCyEBAkAgBCADQX9zakUNACAAIAFrIQJB7wUgAyADQe8FTRshBSAEQQFrIQFBACEAA0AgAyAFRg0DIAAgA0GE3MIAai0AAGoiACACSw0BIAEgA0EBaiIDRw0ACyABIQMLIANBAXEPCyACQSJB3NjCABCtAgALIAVB7wVB7NjCABCtAgAL1wMBAX8jAEEQayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBAWsODAECAwQFBgcICQoLDAALIAIgAEEEajYCDCABQaidwABBFCACQQxqQZidwAAQfwwMCyACIABBCGo2AgwgAUHMncAAQRAgAkEMakG8ncAAEH8MCwsgAiAAQQhqNgIMIAFB3J3AAEEQQfKYwABBCSACQQxqQcibwAAQyQEMCgsgAiAAQQRqNgIMIAFB/J3AAEEVIAJBDGpB7J3AABB/DAkLIAIgAEEEajYCDCABQaSewABBFyACQQxqQZSewAAQfwwICyACIABBBGo2AgwgAUHMnsAAQRUgAkEMakG8nsAAEH8MBwsgAiAAQQRqNgIMIAFB9J7AAEEUIAJBDGpB5J7AABB/DAYLIAFBiJ/AAEEREOUDDAULIAIgAEEIajYCDCABQZmfwABBEiACQQxqQbydwAAQfwwECyACIABBBGo2AgwgAUGrn8AAQRkgAkEMakHknsAAEH8MAwsgAUHEn8AAQREQ5QMMAgsgAUHVn8AAQQ4Q5QMMAQsgAiAAQQRqNgIMIAFB45/AAEEPQfKfwABBByACQQxqQbiawAAQyQELIAJBEGokAAvXAwEBfyMAQRBrIgIkAAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAEEBaw4MAQIDBAUGBwgJCgsMAAsgAiAAQQRqNgIMIAFBvMDAAEEUIAJBDGpBrMDAABB/DAwLIAIgAEEIajYCDCABQeDAwABBECACQQxqQdDAwAAQfwwLCyACIABBCGo2AgwgAUHwwMAAQRBBhrzAAEEJIAJBDGpB3L7AABDJAQwKCyACIABBBGo2AgwgAUGQwcAAQRUgAkEMakGAwcAAEH8MCQsgAiAAQQRqNgIMIAFBuMHAAEEXIAJBDGpBqMHAABB/DAgLIAIgAEEEajYCDCABQeDBwABBFSACQQxqQdDBwAAQfwwHCyACIABBBGo2AgwgAUGIwsAAQRQgAkEMakH4wcAAEH8MBgsgAUGcwsAAQREQ5QMMBQsgAiAAQQhqNgIMIAFBrcLAAEESIAJBDGpB0MDAABB/DAQLIAIgAEEEajYCDCABQb/CwABBGSACQQxqQfjBwAAQfwwDCyABQdjCwABBERDlAwwCCyABQenCwABBDhDlAwwBCyACIABBBGo2AgwgAUH3wsAAQQ9BhsPAAEEHIAJBDGpBzL3AABDJAQsgAkEQaiQAC9cDAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAQQFrDgwBAgMEBQYHCAkKCwwACyACIABBBGo2AgwgAUGM48AAQRQgAkEMakH84sAAEH8MDAsgAiAAQQhqNgIMIAFBsOPAAEEQIAJBDGpBoOPAABB/DAsLIAIgAEEIajYCDCABQcDjwABBEEHU3sAAQQkgAkEMakGs4cAAEMkBDAoLIAIgAEEEajYCDCABQeDjwABBFSACQQxqQdDjwAAQfwwJCyACIABBBGo2AgwgAUGI5MAAQRcgAkEMakH448AAEH8MCAsgAiAAQQRqNgIMIAFBsOTAAEEVIAJBDGpBoOTAABB/DAcLIAIgAEEEajYCDCABQcXkwABBFCACQQxqQZjcwAAQfwwGCyABQdnkwABBERDlAwwFCyACIABBCGo2AgwgAUHq5MAAQRIgAkEMakGg48AAEH8MBAsgAiAAQQRqNgIMIAFB/OTAAEEZIAJBDGpBmNzAABB/DAMLIAFBleXAAEEREOUDDAILIAFBpuXAAEEOEOUDDAELIAIgAEEEajYCDCABQbTlwABBD0HD5cAAQQcgAkEMakGc4MAAEMkBCyACQRBqJAAL6wMBAn8jAEEQayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkBBAyAAKAIAIgAoAgBB7f///wdqIgMgA0ELTxtBAWsOCgECAwQFBgcICQoACyABQbHUwQBBFRDlAwwKCyABQcbUwQBBERDlAwwJCyACIABBBGo2AgwgAUHo1MEAQQwgAkEMakHY1MEAEH8MCAsgAiAANgIMIAFBoNTBAEERIAJBDGpBkNTBABB/DAcLIAIgAEEEajYCDCABQYTVwQBBEyACQQxqQfTUwQAQfwwGCyABQZfVwQBBGRDlAwwFCyACIABBBGo2AgwgAUGw1cEAQRlBi87BAEEDIAJBDGpBuM3BABDJAQwECyACIABBCGo2AgwgAUHJ1cEAQRdBi87BAEEDIABBBGpB9MzBAEHg1cEAQQYgAkEMakG4zcEAEMMBDAMLIAIgAEEEajYCDCABQfjVwQBBDEGE1sEAQQwgAkEMakHo1cEAEMkBDAILIAIgAEEIajYCDCABQbDWwQBBFUHF1sEAQQggAEEEakGQ1sEAQe7OwQBBCCACQQxqQaDWwQAQwwEMAQsgAiAAQQhqNgIMIAFBzdbBAEEbQejWwQBBByAAQQRqQfTMwQBB7s7BAEEIIAJBDGpBuM3BABDDAQsgAkEQaiQAC+YDAQJ/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAQQMgACgCAEHt////B2oiAyADQQtPG0EBaw4KAQIDBAUGBwgJCgALIAFB3LHAAEEVEOUDDAoLIAFB8bHAAEEREOUDDAkLIAIgAEEEajYCDCABQcSZwABBDCACQQxqQbSZwAAQfwwICyACIAA2AgwgAUHwrMAAQREgAkEMakHgrMAAEH8MBwsgAiAAQQRqNgIMIAFBlLLAAEETIAJBDGpBhLLAABB/DAYLIAFBp7LAAEEZEOUDDAULIAIgAEEEajYCDCABQcCywABBGUGsmcAAQQMgAkEMakHMmMAAEMkBDAQLIAIgAEEIajYCDCABQdmywABBF0GsmcAAQQMgAEEEakGImMAAQfCywABBBiACQQxqQcyYwAAQwwEMAwsgAiAAQQRqNgIMIAFBiKHAAEEMQZShwABBDCACQQxqQfigwAAQyQEMAgsgAiAAQQhqNgIMIAFBiLPAAEEVQZ2zwABBCCAAQQRqQfiywABBppzAAEEIIAJBDGpB4KPAABDDAQwBCyACIABBCGo2AgwgAUGls8AAQRtBwLPAAEEHIABBBGpBiJjAAEGmnMAAQQggAkEMakHMmMAAEMMBCyACQRBqJAAL5gMBAn8jAEEQayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkBBAyAAKAIAQe3///8HaiIDIANBC08bQQFrDgoBAgMEBQYHCAkKAAsgAUHw1MAAQRUQ5QMMCgsgAUGF1cAAQREQ5QMMCQsgAiAAQQRqNgIMIAFB2LzAAEEMIAJBDGpByLzAABB/DAgLIAIgADYCDCABQYTQwABBESACQQxqQfTPwAAQfwwHCyACIABBBGo2AgwgAUGo1cAAQRMgAkEMakGY1cAAEH8MBgsgAUG71cAAQRkQ5QMMBQsgAiAAQQRqNgIMIAFB1NXAAEEZQcC8wABBAyACQQxqQeC7wAAQyQEMBAsgAiAAQQhqNgIMIAFB7dXAAEEXQcC8wABBAyAAQQRqQZy7wABBhNbAAEEGIAJBDGpB4LvAABDDAQwDCyACIABBBGo2AgwgAUGcxMAAQQxBqMTAAEEMIAJBDGpBjMTAABDJAQwCCyACIABBCGo2AgwgAUGc1sAAQRVBsdbAAEEIIABBBGpBjNbAAEG6v8AAQQggAkEMakH0xsAAEMMBDAELIAIgAEEIajYCDCABQbnWwABBG0HU1sAAQQcgAEEEakGcu8AAQbq/wABBCCACQQxqQeC7wAAQwwELIAJBEGokAAvmAwECfyMAQRBrIgIkAAJ/AkACQAJAAkACQAJAAkACQAJAAkACQEEDIAAoAgBB7f///wdqIgMgA0ELTxtBAWsOCgECAwQFBgcICQoACyABQdj3wABBFRDlAwwKCyABQe33wABBERDlAwwJCyACIABBBGo2AgwgAUGo38AAQQwgAkEMakGY38AAEH8MCAsgAiAANgIMIAFB7PLAAEERIAJBDGpB3PLAABB/DAcLIAIgAEEEajYCDCABQZD4wABBEyACQQxqQYD4wAAQfwwGCyABQaP4wABBGRDlAwwFCyACIABBBGo2AgwgAUG8+MAAQRlBkN/AAEEDIAJBDGpB+NzAABDJAQwECyACIABBCGo2AgwgAUHV+MAAQRdBkN/AAEEDIABBBGpBjN7AAEHs+MAAQQYgAkEMakH43MAAEMMBDAMLIAIgAEEEajYCDCABQcXmwABBDEHR5sAAQQwgAkEMakHo2sAAEMkBDAILIAIgAEEIajYCDCABQYT5wABBFUGZ+cAAQQggAEEEakH0+MAAQYriwABBCCACQQxqQaDpwAAQwwEMAQsgAiAAQQhqNgIMIAFBofnAAEEbQbz5wABBByAAQQRqQYzewABBiuLAAEEIIAJBDGpB+NzAABDDAQsgAkEQaiQAC+YDAQJ/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAQQMgACgCAEHt////B2oiAyADQQtPG0EBaw4KAQIDBAUGBwgJCgALIAFB7J3BAEEVEOUDDAoLIAFBgZ7BAEEREOUDDAkLIAIgAEEEajYCDCABQeyHwQBBDCACQQxqQdyHwQAQfwwICyACIAA2AgwgAUGAmcEAQREgAkEMakHwmMEAEH8MBwsgAiAAQQRqNgIMIAFBpJ7BAEETIAJBDGpBlJ7BABB/DAYLIAFBt57BAEEZEOUDDAULIAIgAEEEajYCDCABQdCewQBBGUHUh8EAQQMgAkEMakH0hsEAEMkBDAQLIAIgAEEIajYCDCABQemewQBBF0HUh8EAQQMgAEEEakHohcEAQYCfwQBBBiACQQxqQfSGwQAQwwEMAwsgAiAAQQRqNgIMIAFBzIzBAEEMQdiMwQBBDCACQQxqQbyMwQAQyQEMAgsgAiAAQQhqNgIMIAFBmJ/BAEEVQa2fwQBBCCAAQQRqQYifwQBBzorBAEEIIAJBDGpBpI/BABDDAQwBCyACIABBCGo2AgwgAUG1n8EAQRtB0J/BAEEHIABBBGpB6IXBAEHOisEAQQggAkEMakH0hsEAEMMBCyACQRBqJAAL5wIBBX8CQEHN/3tBECAAIABBEE0bIgBrIAFNDQAgAEEQIAFBC2pBeHEgAUELSRsiBGpBDGoQHiICRQ0AIAJBCGshAQJAIABBAWsiAyACcUUEQCABIQAMAQsgAkEEayIFKAIAIgZBeHEgAiADakEAIABrcUEIayICIABBACACIAFrQRBNG2oiACABayICayEDIAZBA3EEQCAAIAMgACgCBEEBcXJBAnI2AgQgACADaiIDIAMoAgRBAXI2AgQgBSACIAUoAgBBAXFyQQJyNgIAIAEgAmoiAyADKAIEQQFyNgIEIAEgAhBYDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQWAsgAEEIaiEDCyADC/ICAgZ/An4jAEEQayIEJAAgAAJ/AkACQCABKAIIIgMgASgCBCIFSQRAIAEoAgAiBiADai0AAEHzAEYNAQsgAEIANwMIDAELIAEgA0EBaiICNgIIAkACQAJAIAIgBU8NACACIAZqLQAAQd8ARw0AIAEgA0ECajYCCAwBCwJAAkADQAJAIAIgBUkEQCACIAZqLQAAQd8ARg0BCyACIAVGDQICQCACIAZqLQAAIgNBMGsiB0H/AXFBCkkNACADQeEAa0H/AXFBGk8EQCADQcEAa0H/AXFBGk8NBCADQR1rIQcMAQsgA0HXAGshBwsgASACQQFqIgI2AgggBCAIEJsCIAQpAwhCAFINAiAEKQMAIgkgB61C/wGDfCIIIAlaDQEMAgsLIAEgAkEBajYCCCAIQn9SDQELIABBADoAAUEBDAQLIAhCAXwiCEJ/UQ0BCyAAIAhCAXw3AwgMAQsgAEEAOgABQQEMAQtBAAs6AAAgBEEQaiQAC9kCAgR/AX4jAEHQAGsiBCQAIAQgASACQbu2wgBBARAhA0AgBEHEAGogBBAsIAQoAkQiA0UNAAsCQCAAIAICfyADQQJHBEAgBCgCSAwBCyACCyIDa0EQTQR+IAIgA0cEQCABIAJqIQYgASADaiEDA0ACfyADLAAAIgFBAE4EQCABQf8BcSECIANBAWoMAQsgAy0AAUE/cSEFIAFBH3EhAiABQV9NBEAgAkEGdCAFciECIANBAmoMAQsgAy0AAkE/cSAFQQZ0ciEFIAFBcEkEQCAFIAJBDHRyIQIgA0EDagwBCyACQRJ0QYCA8ABxIAMtAANBP3EgBUEGdHJyIQIgA0EEagshAyACQcEAa0FfcUEKaiACQTBrIAJBOUsbIgFBEE8NAyABrSAHQgSGhCEHIAMgBkcNAAsLIAAgBzcDCEIBBSAHCzcDACAEQdAAaiQADwtBvLbCABCuBAALgwMBB38jAEEQayIEJAACQAJAAkACQAJAIAEoAgQiAkUNACABKAIAIQcgAkEDcSEFAkAgAkEESQRAQQAhAgwBCyAHQRxqIQMgAkF8cSEIQQAhAgNAIAMoAgAgA0EIaygCACADQRBrKAIAIANBGGsoAgAgAmpqamohAiADQSBqIQMgCCAGQQRqIgZHDQALCyAFBEAgBkEDdCAHakEEaiEDA0AgAygCACACaiECIANBCGohAyAFQQFrIgUNAAsLIAEoAgwEQCACQQBIDQEgBygCBEUgAkEQSXENASACQQF0IQILQQAhBSACQQBIDQMgAg0BC0EBIQNBACECDAELQYXlwgAtAAAaQQEhBSACQQEQ9QMiA0UNAQsgBEEANgIIIAQgAzYCBCAEIAI2AgAgBEHMvsIAIAEQRUUNAUHov8IAQdYAIARBD2pB2L/CAEHYwMIAEKACAAsgBSACQci/wgAQ1wMACyAAIAQpAgA3AgAgAEEIaiAEQQhqKAIANgIAIARBEGokAAuhAwEIfyMAQSBrIgIkABCYAUGQ5MIAKAIAIQVBjOTCACgCACEHQYzkwgBCADcCAEGE5MIAKAIAIQZBiOTCACgCACEDQYTkwgBCBDcCAEGA5MIAKAIAIQBBgOTCAEEANgIAAkAgAyAHRgRAAkAgACADRgRA0G9BgAEgACAAQYABTRsiBPwPASIBQX9GDQMCQCAFRQRAIAEhBQwBCyAAIAVqIAFHDQQLIAAgBGoiBEH/////AUsNAyACIAAEfyACIAY2AhQgAiAAQQJ0NgIcQQQFQQALNgIYIAJBCGpBBCAEQQJ0IAJBFGoQ2wEgAigCCEEBRg0DIAIoAgwhBiAAIQEgBCEADAELIAAgAyIBTQ0CCyAGIAFBAnRqIANBAWo2AgAgAUEBaiEDCyADIAdNDQAgBiAHQQJ0aigCACEBQZDkwgAgBTYCAEGM5MIAIAE2AgBBiOTCACADNgIAQYTkwgAoAgAhAUGE5MIAIAY2AgBBgOTCACgCACEEQYDkwgAgADYCACAEBEAgASAEQQJ0QQQQpwQLIAJBIGokACAFIAdqDwsAC78DAQF/IwBBQGoiAiQAAkACQAJAAkACQAJAIAAtAABBAWsOAwECAwALIAIgACgCBDYCBEGF5cIALQAAGkEUQQEQ9QMiAEUNBCAAQRBqQdanwgAoAAA2AAAgAEEIakHOp8IAKQAANwAAIABBxqfCACkAADcAACACQRQ2AhAgAiAANgIMIAJBFDYCCCACQQM2AiwgAkH0nsIANgIoIAJCAjcCNCACIAJBBGqtQoCAgICwPoQ3AyAgAiACQQhqrUKAgICAwD6ENwMYIAIgAkEYajYCMCABKAIcIAEoAiAgAkEoahBFIQAgAigCCCIBRQ0DIAIoAgwgAUEBEKcEDAMLIAAtAAEhACACQQE2AiwgAkH8l8IANgIoIAJCATcCNCACIAJBGGqtQoCAgICQPoQ3AwggAiAAQQJ0IgBBzKjCAGooAgA2AhwgAiAAQfSpwgBqKAIANgIYIAIgAkEIajYCMCABKAIcIAEoAiAgAkEoahBFIQAMAgsgACgCBCIAKAIAIAAoAgQgARDVBCEADAELIAAoAgQiACgCACABIAAoAgQoAhARAAAhAAsgAkFAayQAIAAPC0EBQRRB8JLCABDXAwALsQIBAX8jAEHwAGsiBiQAIAYgATYCDCAGIAA2AgggBiADNgIUIAYgAjYCECAGQbzCwgA2AhggBkECNgIcAkAgBCgCAEUEQCAGQQM2AlwgBkH4wsIANgJYIAZCAzcCZCAGIAZBEGqtQoCAgICAxACENwNIIAYgBkEIaq1CgICAgIDEAIQ3A0AMAQsgBkEwaiAEQRBqKQIANwMAIAZBKGogBEEIaikCADcDACAGIAQpAgA3AyAgBkEENgJcIAZBrMPCADYCWCAGQgQ3AmQgBiAGQRBqrUKAgICAgMQAhDcDUCAGIAZBCGqtQoCAgICAxACENwNIIAYgBkEgaq1CgICAgKDEAIQ3A0ALIAYgBkEYaq1CgICAgJDEAIQ3AzggBiAGQThqNgJgIAZB2ABqIAUQpAMAC+YCAQh/IwBBEGsiBiQAQQohAyAAIgRB6AdPBEAgBCEFA0AgBkEGaiADaiIHQQNrIAUgBUGQzgBuIgRBkM4AbGsiCEH//wNxQeQAbiIJQQF0IgpBksTCAGotAAA6AAAgB0EEayAKQZHEwgBqLQAAOgAAIAdBAWsgCCAJQeQAbGtB//8DcUEBdCIIQZLEwgBqLQAAOgAAIAdBAmsgCEGRxMIAai0AADoAACADQQRrIQMgBUH/rOIESyAEIQUNAAsLAkAgBEEJTQRAIAQhBQwBCyADIAZqQQVqIAQgBEH//wNxQeQAbiIFQeQAbGtB//8DcUEBdCIEQZLEwgBqLQAAOgAAIANBAmsiAyAGQQZqaiAEQZHEwgBqLQAAOgAAC0EAIAAgBRtFBEAgA0EBayIDIAZBBmpqIAVBAXRBHnFBksTCAGotAAA6AAALIAIgAUEBQQAgBkEGaiADakEKIANrEDUgBkEQaiQAC5IDAQN/AkACQAJAAkACQAJAAkAgAC0AAA4HAAYBBgIDBAYLIAAtAARBA0cNBSAAKAIIIgAoAgAhAiAAQQRqKAIAIgMoAgAiAQRAIAIgAREDAAsgAygCBCIBRQ0EIAIgASADKAIIEKcEDAQLIAAtAARBA0cNBCAAKAIIIgAoAgAhAiAAQQRqKAIAIgMoAgAiAQRAIAIgAREDAAsgAygCBCIBRQ0DIAIgASADKAIIEKcEDAMLIAAtAARBA0cNAyAAKAIIIgAoAgAhAiAAQQRqKAIAIgMoAgAiAQRAIAIgAREDAAsgAygCBCIBRQ0CIAIgASADKAIIEKcEDAILIAAtAARBA0cNAiAAKAIIIgAoAgAhAiAAQQRqKAIAIgMoAgAiAQRAIAIgAREDAAsgAygCBCIBRQ0BIAIgASADKAIIEKcEDAELIAAtAARBA0cNASAAKAIIIgAoAgAhAiAAQQRqKAIAIgMoAgAiAQRAIAIgAREDAAsgAygCBCIBRQ0AIAIgASADKAIIEKcECyAAQQxBBBCnBAsLlAMBAX8jAEHwAGsiAiQAAn8CQAJAAkAgAC0AAEEBaw4CAQIACyACIABBAWo2AgQgAkKotMGA8DY3AyggAiACQQRqrUKAgICAgDeENwMgIAJBAjYCHCACQQI2AgwgAkGYtMEANgIIIAJBAjYCFCACQQM6AGwgAkEcNgJoIAJCoICAgBA3AmAgAkKAgICAwAA3AlggAkECNgJQIAJBAzoATCACQSw2AkggAkIgNwJAIAJCgICAgMAANwI4IAJBAjYCMCACIAJBMGo2AhggAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEUMAgsgAiAAQQRqNgIgIAJBATYCNCACQfCnwQA2AjAgAkIBNwI8IAIgAkEgaq1CgICAgJA3hDcDCCACIAJBCGo2AjggASgCHCABKAIgIAJBMGoQRQwBCyACIABBBGo2AiAgAkEBNgI0IAJB8KfBADYCMCACQgE3AjwgAiACQSBqrUKAgICAoDeENwMIIAIgAkEIajYCOCABKAIcIAEoAiAgAkEwahBFCyACQfAAaiQAC4gDAgR/AX4jAEFAaiIGJABBASEHAkAgAC0ABA0AIAAtAAUhCCAAKAIAIgUtABRBBHFFBEAgBSgCHEH/w8IAQfzDwgAgCEEBcSIIG0ECQQMgCBsgBSgCICgCDBECAA0BIAUoAhwgASACIAUoAiAoAgwRAgANASAFKAIcQczDwgBBAiAFKAIgKAIMEQIADQEgAyAFIAQoAgwRAAAhBwwBCyAIQQFxRQRAIAUoAhxBgcTCAEEDIAUoAiAoAgwRAgANAQsgBkEBOgAXIAZBIGogBUEIaikCADcDACAGQShqIAVBEGopAgA3AwAgBkEwaiAFQRhqKAIANgIAIAYgBSkCHDcCCCAFKQIAIQkgBkHgw8IANgI4IAYgCTcDGCAGIAZBF2o2AhAgBiAGQQhqIgU2AjQgBSABIAIQSA0AIAVBzMPCAEECEEgNACADIAZBGGogBCgCDBEAAA0AIAYoAjRBhMTCAEECIAYoAjgoAgwRAgAhBwsgAEEBOgAFIAAgBzoABCAGQUBrJAAgAAvJAgIHfwJ+IwBBEGsiBCQAIAEoAgAhBgJAAkACQCABKAIIIgIgASgCBCIHSQRAIAIgBmotAABB3wBGDQELIAIgByACIAdLGyEIAkADQCACIAdJBEAgAiAGai0AAEHfAEYNAgsgAiAIRg0DAkAgAiAGai0AACIFQTBrIgNB/wFxQQpJDQAgBUHhAGtB/wFxQRpPBEAgBUHBAGtB/wFxQRpPDQUgBUEdayEDDAELIAVB1wBrIQMLIAEgAkEBaiICNgIIIAQgCRCbAiAEKQMIQgBSDQMgBCkDACIKIAOtQv8Bg3wiCSAKWg0ACwwCC0EBIQMgASACQQFqNgIIIAlCf1IEQCAAIAlCAXw3AwhBACEDDAMLIABBADoAAQwCCyAAQgA3AwggASACQQFqNgIIDAELIABBADoAAUEBIQMLIAAgAzoAACAEQRBqJAAL0gIBB39BASEJAkACQCACRQ0AIAEgAkEBdGohCiAAQYD+A3FBCHYhCyAAQf8BcSENA0AgAUECaiEMIAcgAS0AASICaiEIIAsgAS0AACIBRwRAIAEgC0sNAiAIIQcgDCIBIApGDQIMAQsCQAJAIAcgCE0EQCAEIAhJDQEgAyAHaiEBA0AgAkUNAyACQQFrIQIgAS0AACABQQFqIQEgDUcNAAtBACEJDAULIAcgCEH4zMIAEKwEAAsgCCAEQfjMwgAQqwQACyAIIQcgDCIBIApHDQALCyAGRQ0AIAUgBmohAyAAQf//A3EhAQNAIAVBAWohAAJAIAUsAAAiAkEATgRAIAAhBQwBCyAAIANHBEAgBS0AASACQf8AcUEIdHIhAiAFQQJqIQUMAQtB6MzCABCuBAALIAEgAmsiAUEASA0BIAlBAXMhCSADIAVHDQALCyAJQQFxC/kCAQV/IwBBMGsiAyQAIANBIGpCADcDACADQRhqQgA3AwAgA0EQakIANwMAIANCADcDCCADQShqIAEgA0EIakEgECgCQAJAAkAgAy0AKCIEQQRGDQADQAJAAkACQAJAAkAgBEEBaw4DAgABBAsgAygCLC0ACEEjRg0CDAMLIAMoAiwiBC0ACEEjRw0CIAQoAgAhBiAEQQRqKAIAIgcoAgAiBQRAIAYgBREDAAsgBygCBCIFBEAgBiAFIAcoAggQpwQLIARBDEEEEKcEDAELIAMtAClBI0cNAQsgA0EoaiABIANBCGpBIBAoIAMtACgiBEEERw0BDAILCyAAIAMpAyg3AgAMAQsgAygCLCIEQSFPDQEgBCACKAIAIAIoAggiAWtLBEAgAiABIARBAUEBEJABIAIoAgghAQsgAigCBCABaiADQQhqIAQQOxogACAENgIEIAIgASAEajYCCCAAQQQ6AAALIANBMGokAA8LIARBIEGIo8EAEKsEAAvYAgEEfyMAQRBrIgIkAAJAIAFBgAFPBEAgAkEMaiIEQQJyIQMgAkEANgIMAkAgAUGAEE8EQCAEQQNyIQUgAUGAgARPBEAgAkEQaiEDIAIgAUESdkHwAXI6AAwgAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgANIAUhBAwCCyACIAFBDHZB4AFyOgAMIAIgAUEGdkE/cUGAAXI6AA0gAyEEIAUhAwwBCyACQQxqQQFyIQQgAiABQQZ2QcABcjoADAsgBCABQT9xQYABcjoAACADIAJBDGprIgMgACgCACAAKAIIIgFrSwRAIAAgASADEJMBIAAoAgghAQsgACgCBCABaiACQQxqIAMQOxogACABIANqNgIIDAELIAAoAggiAyAAKAIARgRAIABBwIfCABDCAQsgACgCBCADaiABOgAAIAAgA0EBajYCCAsgAkEQaiQAQQAL2AIBBH8jAEEQayICJAACQCABQYABTwRAIAJBDGoiBEECciEDIAJBADYCDAJAIAFBgBBPBEAgBEEDciEFIAFBgIAETwRAIAJBEGohAyACIAFBEnZB8AFyOgAMIAIgAUEGdkE/cUGAAXI6AA4gAiABQQx2QT9xQYABcjoADSAFIQQMAgsgAiABQQx2QeABcjoADCACIAFBBnZBP3FBgAFyOgANIAMhBCAFIQMMAQsgAkEMakEBciEEIAIgAUEGdkHAAXI6AAwLIAQgAUE/cUGAAXI6AAAgAyACQQxqayIDIAAoAgAgACgCCCIBa0sEQCAAIAEgAxCTASAAKAIIIQELIAAoAgQgAWogAkEMaiADEDsaIAAgASADajYCCAwBCyAAKAIIIgMgACgCAEYEQCAAQcyKwgAQwgELIAAoAgQgA2ogAToAACAAIANBAWo2AggLIAJBEGokAEEAC/ECAQR/IAAoAgwhAgJAAkAgAUGAAk8EQCAAKAIYIQMCQAJAIAAgAkYEQCAAQRRBECAAKAIUIgIbaigCACIBDQFBACECDAILIAAoAggiASACNgIMIAIgATYCCAwBCyAAQRRqIABBEGogAhshBANAIAQhBSABIgJBFGogAkEQaiACKAIUIgEbIQQgAkEUQRAgARtqKAIAIgENAAsgBUEANgIACyADRQ0CIAAgACgCHEECdEGo5cIAaiIBKAIARwRAIANBEEEUIAMoAhAgAEYbaiACNgIAIAJFDQMMAgsgASACNgIAIAINAUHE6MIAQcTowgAoAgBBfiAAKAIcd3E2AgAMAgsgACgCCCIAIAJHBEAgACACNgIMIAIgADYCCA8LQcDowgBBwOjCACgCAEF+IAFBA3Z3cTYCAA8LIAIgAzYCGCAAKAIQIgEEQCACIAE2AhAgASACNgIYCyAAKAIUIgBFDQAgAiAANgIUIAAgAjYCGAsLxgIBA38jAEEQayICJAACQCABQYABTwRAIAJBADYCDAJ/IAFBgBBPBEAgAUGAgARPBEAgAkEMakEDciEEIAIgAUESdkHwAXI6AAwgAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgANQQQMAgsgAkEMakECciEEIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDDAELIAJBDGpBAXIhBCACIAFBBnZBwAFyOgAMQQILIQMgBCABQT9xQYABcjoAACADIAAoAgAgACgCCCIBa0sEQCAAIAEgAxC5ASAAKAIIIQELIAAoAgQgAWogAkEMaiADEDsaIAAgASADajYCCAwBCyAAKAIIIgMgACgCAEYEQCAAQejAwgAQwgELIAAgA0EBajYCCCAAKAIEIANqIAE6AAALIAJBEGokAEEAC5QDAQJ/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkBBAiAAKAIAIgAoAgBB+////wdqIgMgA0EMTxtBAWsOCwECAwQFBgcICQoLAAsgAiAAQQRqNgIMIAFB6NTBAEEMIAJBDGpB2NTBABB/DAsLIAIgAEEEajYCDCABQdDXwQBBDyACQQxqQcDXwQAQfwwKCyACIAA2AgwgAUGA1MEAQQ0gAkEMakHw08EAEH8MCQsgAiAAQQRqNgIMIAFB+NXBAEEMQYTWwQBBDCACQQxqQejVwQAQyQEMCAsgAiAAQQRqNgIMIAFB39fBAEERQfDXwQBBCyACQQxqQYTNwQAQyQEMBwsgAUG018EAQQoQ5QMMBgsgAUH718EAQR0Q5QMMBQsgAiAAQQRqNgIMIAFBmNjBAEEJQaHYwQBBDiACQQxqQaDWwQAQyQEMBAsgAUGv2MEAQRYQ5QMMAwsgAUHF2MEAQRgQ5QMMAgsgAUHd2MEAQRgQ5QMMAQsgAUH12MEAQRgQ5QMLIAJBEGokAAvEAgECfyMAQRBrIgIkAAJAIAFBgAFPBEAgAkEANgIMAn8gAUGAEE8EQCABQYCABE8EQCACIAFBP3FBgAFyOgAPIAIgAUESdkHwAXI6AAwgAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgANQQQMAgsgAiABQT9xQYABcjoADiACIAFBDHZB4AFyOgAMIAIgAUEGdkE/cUGAAXI6AA1BAwwBCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAgshASABIAAoAgAgACgCCCIDa0sEQCAAIAMgARCgASAAKAIIIQMLIAAoAgQgA2ogAkEMaiABEDsaIAAgASADajYCCAwBCyAAKAIIIgMgACgCAEYEQCAAQcyTwgAQwgELIAAoAgQgA2ogAToAACAAIANBAWo2AggLIAJBEGokAEEAC48DAQJ/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkBBAiAAKAIAQfv///8HaiIDIANBDE8bQQFrDgsBAgMEBQYHCAkKCwALIAIgAEEEajYCDCABQcSZwABBDCACQQxqQbSZwAAQfwwLCyACIABBBGo2AgwgAUGMoMAAQQ8gAkEMakH8n8AAEH8MCgsgAiAANgIMIAFBrKDAAEENIAJBDGpBnKDAABB/DAkLIAIgAEEEajYCDCABQYihwABBDEGUocAAQQwgAkEMakH4oMAAEMkBDAgLIAIgAEEEajYCDCABQZyjwABBEUGto8AAQQsgAkEMakGYmMAAEMkBDAcLIAFBuKPAAEEKEOUDDAYLIAFBwqPAAEEdEOUDDAULIAIgAEEEajYCDCABQfCjwABBCUH5o8AAQQ4gAkEMakHgo8AAEMkBDAQLIAFBh6TAAEEWEOUDDAMLIAFBnaTAAEEYEOUDDAILIAFBtaTAAEEYEOUDDAELIAFBzaTAAEEYEOUDCyACQRBqJAALjwMBAn8jAEEQayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQEECIAAoAgBB+////wdqIgMgA0EMTxtBAWsOCwECAwQFBgcICQoLAAsgAiAAQQRqNgIMIAFB2LzAAEEMIAJBDGpByLzAABB/DAsLIAIgAEEEajYCDCABQaDDwABBDyACQQxqQZDDwAAQfwwKCyACIAA2AgwgAUHAw8AAQQ0gAkEMakGww8AAEH8MCQsgAiAAQQRqNgIMIAFBnMTAAEEMQajEwABBDCACQQxqQYzEwAAQyQEMCAsgAiAAQQRqNgIMIAFBsMbAAEERQcHGwABBCyACQQxqQay7wAAQyQEMBwsgAUHMxsAAQQoQ5QMMBgsgAUHWxsAAQR0Q5QMMBQsgAiAAQQRqNgIMIAFBhMfAAEEJQY3HwABBDiACQQxqQfTGwAAQyQEMBAsgAUGbx8AAQRYQ5QMMAwsgAUGxx8AAQRgQ5QMMAgsgAUHJx8AAQRgQ5QMMAQsgAUHhx8AAQRgQ5QMLIAJBEGokAAuPAwECfyMAQRBrIgIkAAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAQQIgACgCAEH7////B2oiAyADQQxPG0EBaw4LAQIDBAUGBwgJCgsACyACIABBBGo2AgwgAUGo38AAQQwgAkEMakGY38AAEH8MCwsgAiAAQQRqNgIMIAFB3OXAAEEPIAJBDGpBzOXAABB/DAoLIAIgADYCDCABQfzlwABBDSACQQxqQezlwAAQfwwJCyACIABBBGo2AgwgAUHF5sAAQQxB0ebAAEEMIAJBDGpB6NrAABDJAQwICyACIABBBGo2AgwgAUHc6MAAQRFB7ejAAEELIAJBDGpB+NrAABDJAQwHCyABQfjowABBChDlAwwGCyABQYLpwABBHRDlAwwFCyACIABBBGo2AgwgAUGw6cAAQQlBuenAAEEOIAJBDGpBoOnAABDJAQwECyABQcfpwABBFhDlAwwDCyABQd3pwABBGBDlAwwCCyABQfXpwABBGBDlAwwBCyABQY3qwABBGBDlAwsgAkEQaiQAC48DAQJ/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkBBAiAAKAIAQfv///8HaiIDIANBDE8bQQFrDgsBAgMEBQYHCAkKCwALIAIgAEEEajYCDCABQeyHwQBBDCACQQxqQdyHwQAQfwwLCyACIABBBGo2AgwgAUHQi8EAQQ8gAkEMakHAi8EAEH8MCgsgAiAANgIMIAFB8IvBAEENIAJBDGpB4IvBABB/DAkLIAIgAEEEajYCDCABQcyMwQBBDEHYjMEAQQwgAkEMakG8jMEAEMkBDAgLIAIgAEEEajYCDCABQeCOwQBBEUHxjsEAQQsgAkEMakHAhsEAEMkBDAcLIAFB/I7BAEEKEOUDDAYLIAFBho/BAEEdEOUDDAULIAIgAEEEajYCDCABQbSPwQBBCUG9j8EAQQ4gAkEMakGkj8EAEMkBDAQLIAFBy4/BAEEWEOUDDAMLIAFB4Y/BAEEYEOUDDAILIAFB+Y/BAEEYEOUDDAELIAFBkZDBAEEYEOUDCyACQRBqJAALzQIBAn8jAEEwayICJAACfwJAAkACQEEBIAAtAABBAmsiAyADQf8BcUEDTxtB/wFxQQFrDgIBAgALIAIgAEEBajYCBCACQQI2AgwgAkGAwsEANgIIIAJCATcCFCACIAJBBGqtQoCAgIDgNIQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEUMAgsgAiAANgIEIAJBATYCDCACQfCnwQA2AgggAkIBNwIUIAIgAkEEaq1CgICAgJA4hDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwBCyACIABBBGo2AgAgAiAAQQhqNgIEIAJBAjYCDCACQdTCwQA2AgggAkICNwIUIAIgAkEEaq1CgICAgOA0hDcDKCACIAKtQoCAgIDwNYQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEULIAJBMGokAAvEAgEEfyAAQgA3AhAgAAJ/QQAgAUGAAkkNABpBHyABQf///wdLDQAaIAFBBiABQQh2ZyIDa3ZBAXEgA0EBdGtBPmoLIgI2AhwgAkECdEGo5cIAaiEEQQEgAnQiA0HE6MIAKAIAcUUEQCAEIAA2AgAgACAENgIYIAAgADYCDCAAIAA2AghBxOjCAEHE6MIAKAIAIANyNgIADwsCQAJAIAEgBCgCACIDKAIEQXhxRgRAIAMhAgwBCyABQRkgAkEBdmtBACACQR9HG3QhBQNAIAMgBUEddkEEcWpBEGoiBCgCACICRQ0CIAVBAXQhBSACIQMgAigCBEF4cSABRw0ACwsgAigCCCIBIAA2AgwgAiAANgIIIABBADYCGCAAIAI2AgwgACABNgIIDwsgBCAANgIAIAAgAzYCGCAAIAA2AgwgACAANgIIC9MCAQR/IwBBQGoiBSQAQQEhBgJAIAAoAhwiByABIAIgACgCICIIKAIMIgERAgANAAJAIAAtABRBBHFFBEAgB0GJxMIAQQEgARECAA0CIAMgACAEKAIMEQAARQ0BDAILIAdBisTCAEECIAERAgANASAFQQE6ABcgBUEgaiAAQQhqKQIANwMAIAVBKGogAEEQaikCADcDACAFQTBqIABBGGooAgA2AgAgBSAINgIMIAUgBzYCCCAFQeDDwgA2AjggBSAAKQIANwMYIAUgBUEXajYCECAFIAVBCGo2AjQgAyAFQRhqIAQoAgwRAAANASAFKAI0QYTEwgBBAiAFKAI4KAIMEQIADQELAkAgAg0AIAAtABRBBHENACAAKAIcQYzEwgBBASAAKAIgKAIMEQIADQELIAAoAhxB+cDCAEEBIAAoAiAoAgwRAgAhBgsgBUFAayQAIAYLtAIBB38jAEEwayICJAAgAkEBQX8gASAAKAIEIgFqIgNBAWtndkEBaiADQQFNGyIDQQFBfyABQQFrZ3ZBAWogAUEBTRsiBSADIAVLG0EBaiIDNgIMAkAgA0EATgRAQYXlwgAtAAAaIANBARD1AyIFRQ0BIAEEQCAFIAAoAgAiByAAKAIIIgRqIAEgACgCDCIGIAQgBksiCBsgBGsiBBA7IARqIAcgBkEAIAgbIgYQOxogByABQQEQpwQgAEEANgIIIAAgBCAGajYCDAsgACADNgIEIAAgBTYCACACQTBqJAAPCyACQQE2AhQgAkGY6cEANgIQIAJCATcCHCACIAJBDGqtQoCAgIAQhDcDKCACIAJBKGo2AhggAkEQakGg6cEAEKQDAAtBwOfBAEEuQdjowQAQwwIAC+UCAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAIAAoAgAiAC0AAEEBaw4HAQIDBAUGBwALIAIgAEEEajYCDCABQbjPwQBBFCACQQxqQajPwQAQfwwHCyACIABBBGo2AgwgAUHcz8EAQQ4gAkEMakHMz8EAEH8MBgsgAiAAQQRqNgIMIAFB6s/BAEEYIAJBDGpBqM/BABB/DAULIAIgAEEBajYCDCABQYLQwQBBFiACQQxqQbzOwQAQfwwECyACIABBBGo2AgwgAUGY0MEAQRkgAkEMakGoz8EAEH8MAwsgAiAAQQRqNgIMIAFBsdDBAEEVIAJBDGpBqM/BABB/DAILIAIgAEEEajYCDCABQcbQwQBBGSACQQxqQajPwQAQfwwBCyACIABBCGo2AgwgAUHw0MEAQQlB+dDBAEEMIABBBGpB4NDBAEGF0cEAQQYgAkEMakHMz8EAEMMBCyACQRBqJAALugICBH8BfiMAQUBqIgMkAEEBIQUCQCAALQAEDQAgAC0ABSEGAkAgACgCACIELQAUQQRxRQRAIAZBAXFFDQEgBCgCHEH/w8IAQQIgBCgCICgCDBECAEUNAQwCCyAGQQFxRQRAIAQoAhxBjcTCAEEBIAQoAiAoAgwRAgANAgsgA0EBOgAXIANBIGogBEEIaikCADcDACADQShqIARBEGopAgA3AwAgA0EwaiAEQRhqKAIANgIAIAMgBCkCHDcCCCAEKQIAIQcgA0Hgw8IANgI4IAMgBzcDGCADIANBF2o2AhAgAyADQQhqNgI0IAEgA0EYaiACKAIMEQAADQEgAygCNEGExMIAQQIgAygCOCgCDBECACEFDAELIAEgBCACKAIMEQAAIQULIABBAToABSAAIAU6AAQgA0FAayQAC+ACAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAIAAtAABBAWsOBwECAwQFBgcACyACIABBBGo2AgwgAUGQq8AAQRQgAkEMakHknsAAEH8MBwsgAiAAQQRqNgIMIAFBpKvAAEEOIAJBDGpBuJrAABB/DAYLIAIgAEEEajYCDCABQbKrwABBGCACQQxqQeSewAAQfwwFCyACIABBAWo2AgwgAUHKq8AAQRYgAkEMakH0m8AAEH8MBAsgAiAAQQRqNgIMIAFB4KvAAEEZIAJBDGpB5J7AABB/DAMLIAIgAEEEajYCDCABQfmrwABBFSACQQxqQeSewAAQfwwCCyACIABBBGo2AgwgAUGOrMAAQRkgAkEMakHknsAAEH8MAQsgAiAAQQhqNgIMIAFBp6zAAEEJQbCswABBDCAAQQRqQdCZwABBvKzAAEEGIAJBDGpBuJrAABDDAQsgAkEQaiQAC+ACAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAIAAtAABBAWsOBwECAwQFBgcACyACIABBBGo2AgwgAUGkzsAAQRQgAkEMakH4wcAAEH8MBwsgAiAAQQRqNgIMIAFBuM7AAEEOIAJBDGpBzL3AABB/DAYLIAIgAEEEajYCDCABQcbOwABBGCACQQxqQfjBwAAQfwwFCyACIABBAWo2AgwgAUHezsAAQRYgAkEMakGIv8AAEH8MBAsgAiAAQQRqNgIMIAFB9M7AAEEZIAJBDGpB+MHAABB/DAMLIAIgAEEEajYCDCABQY3PwABBFSACQQxqQfjBwAAQfwwCCyACIABBBGo2AgwgAUGiz8AAQRkgAkEMakH4wcAAEH8MAQsgAiAAQQhqNgIMIAFBu8/AAEEJQcTPwABBDCAAQQRqQeS8wABB0M/AAEEGIAJBDGpBzL3AABDDAQsgAkEQaiQAC+ACAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAIAAtAABBAWsOBwECAwQFBgcACyACIABBBGo2AgwgAUGM8cAAQRQgAkEMakGY3MAAEH8MBwsgAiAAQQRqNgIMIAFBoPHAAEEOIAJBDGpBnODAABB/DAYLIAIgAEEEajYCDCABQa7xwABBGCACQQxqQZjcwAAQfwwFCyACIABBAWo2AgwgAUHG8cAAQRYgAkEMakHY4cAAEH8MBAsgAiAAQQRqNgIMIAFB3PHAAEEZIAJBDGpBmNzAABB/DAMLIAIgAEEEajYCDCABQfXxwABBFSACQQxqQZjcwAAQfwwCCyACIABBBGo2AgwgAUGK8sAAQRkgAkEMakGY3MAAEH8MAQsgAiAAQQhqNgIMIAFBo/LAAEEJQazywABBDCAAQQRqQbTfwABBuPLAAEEGIAJBDGpBnODAABDDAQsgAkEQaiQAC+ACAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAIAAtAABBAWsOBwECAwQFBgcACyACIABBBGo2AgwgAUGgl8EAQRQgAkEMakGMlMEAEH8MBwsgAiAAQQRqNgIMIAFBtJfBAEEOIAJBDGpB4IjBABB/DAYLIAIgAEEEajYCDCABQcKXwQBBGCACQQxqQYyUwQAQfwwFCyACIABBAWo2AgwgAUHal8EAQRYgAkEMakGcisEAEH8MBAsgAiAAQQRqNgIMIAFB8JfBAEEZIAJBDGpBjJTBABB/DAMLIAIgAEEEajYCDCABQYmYwQBBFSACQQxqQYyUwQAQfwwCCyACIABBBGo2AgwgAUGemMEAQRkgAkEMakGMlMEAEH8MAQsgAiAAQQhqNgIMIAFBt5jBAEEJQcCYwQBBDCAAQQRqQfiHwQBBzJjBAEEGIAJBDGpB4IjBABDDAQsgAkEQaiQAC6gCAQV/IABBADYCFCAAQQA2AiAgAEEAOgAlIABBADYCCCABKAIgIgNBAnQhBSABKAIcIQYgAyAAKAIYSwRAIABBGGpBACADQQRBBBCSASAAKAIgIQQgACgCFCECCyAAKAIcIARBAnRqIAYgBRA7GiAAIAMgBGo2AiAgASgCFCIDQQJ0IQQgASgCECEFIAMgACgCDCACa0sEQCAAQQxqIAIgA0EEQQQQkgEgACgCFCECCyAAKAIQIAJBAnRqIAUgBBA7GiAAIAIgA2o2AhQgASgCBCEEIAEoAggiAyAAKAIAIAAoAggiAmtLBEAgACACIANBBEEIEJIBIAAoAgghAgsgACgCBCACQQN0aiAEIANBA3QQOxogACACIANqNgIIIAAgAS0AJToAJQukAgIFfwF+IwBBEGsiAyQAIAAoAhAhBSADQgA3AwggBSACQf8BcSICIAIgBUobIgZBCG0hAgJAIAZBCGtBcEsgAkEJT3JFBEAgACgCBCIHIAEgAmtBAWoiBEkNASACQQN0IQECQAJAAkAgAiAHIARrTQRAIAAoAgAgBGohBCAGQXhxQQhGDQEgA0EIaiAEIAIQOxogAykDCCEICyAAIAUgAWs2AhAgACAALQAUIAFqOgAUIAJBCEkNASAAIAg3AwgMAgsgACAFIAFrNgIQIAAgAC0AFCABajoAFCADIAQtAAA6AAggAykDCCEICyAAIAApAwggAa2GIAiENwMICyADQRBqJAAPC0Hk3sEAQShBjN/BABDtAgALIAQgB0Gc38EAEKoEAAudAgEFfwJAAkACQAJAIAJBA2pBfHEiBCACRg0AIAQgAmsiBCADIAMgBEsbIgVFDQBBACEEIAFB/wFxIQZBASEHA0AgAiAEai0AACAGRg0EIAUgBEEBaiIERw0ACyAFIANBCGsiCEsNAgwBCyADQQhrIQhBACEFCyABQf8BcUGBgoQIbCEEA0BBgIKECCACIAVqIgcoAgAgBHMiBmsgBnJBgIKECCAHQQRqKAIAIARzIgZrIAZycUGAgYKEeHFBgIGChHhHDQEgBUEIaiIFIAhNDQALCyADIAVHBEAgAUH/AXEhBEEBIQcDQCAEIAIgBWotAABGBEAgBSEEDAMLIAMgBUEBaiIFRw0ACwtBACEHCyAAIAQ2AgQgACAHNgIAC5YCAQN/IwBBEGsiAiQAIAJBADYCDAJ/IAFBgAFPBEAgAUGAEE8EQCABQYCABE8EQCACIAFBP3FBgAFyOgAPIAIgAUESdkHwAXI6AAwgAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgANQQQMAwsgAiABQT9xQYABcjoADiACIAFBDHZB4AFyOgAMIAIgAUEGdkE/cUGAAXI6AA1BAwwCCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAgwBCyACIAE6AAxBAQshASAAIAAoAgQiAyABazYCBCAAIAAoAgAgASADS3IiBDYCAEEBIQMgBEUEQCAAKAIIIAJBDGogARDlAyEDCyACQRBqJAAgAwuvAgEFfyMAQTBrIgIkACACQSBqIgQgAUE4aikDADcDACACQRhqIgUgAUEwaikDADcDACACQRBqIgYgAUEoaikDADcDAEGF5cIALQAAGiACIAEpAyA3AwhBIEEIEPUDIgMEQCADIAIpAwg3AwAgA0EYaiAEKQMANwMAIANBEGogBSkDADcDACADQQhqIAYpAwA3AwACQCABKAIEQQJHDQACQAJAIAEtABhBAWsOAgIAAQsgAkEBNgIMIAJBtP7AADYCCCACQgA3AhQgAiACQSxqNgIQIAJBCGpBuP/AABCkAwALIAFBCGoQqQEgASgCCCIERQ0AIAEoAgwgBEEMbEEEEKcECyABQcAAQQgQpwQgAEHklsAANgIEIAAgAzYCACACQTBqJAAPC0EIQSAQ0wQAC94CAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQCAAKAIAIgAtAABBAWsOBgECAwQFBgALIAIgAEEIajYCDCABQaDOwQBBDEGLzsEAQQMgAkEMakGQzsEAEMkBDAYLIAIgAEEIajYCDCABQazOwQBBDkGLzsEAQQMgAkEMakGQzsEAEMkBDAULIAIgAEEBajYCDCABQczOwQBBFCACQQxqQbzOwQAQfwwECyACIABBCGo2AgwgAUHgzsEAQQ5Bi87BAEEDIABBBGpB9MzBAEHuzsEAQQggAkEMakG4zcEAEMMBDAMLIAIgAEEBajYCDCABQfbOwQBBE0GLzsEAQQMgAEEEakH0zMEAQe7OwQBBCCACQQxqQYTNwQAQwwEMAgsgAUGJz8EAQQ8Q5QMMAQsgAiAAQQFqNgIMIAFBmM/BAEEQQYvOwQBBAyACQQxqQYTNwQAQyQELIAJBEGokAAuLAgEBfyMAQRBrIgIkACAAKAIAIQACfyABKAIAIAEoAghyBEAgAkEANgIMIAEgAkEMagJ/IABBgAFPBEAgAEGAEE8EQCAAQYCABE8EQCACIABBP3FBgAFyOgAPIAIgAEESdkHwAXI6AAwgAiAAQQZ2QT9xQYABcjoADiACIABBDHZBP3FBgAFyOgANQQQMAwsgAiAAQT9xQYABcjoADiACIABBDHZB4AFyOgAMIAIgAEEGdkE/cUGAAXI6AA1BAwwCCyACIABBP3FBgAFyOgANIAIgAEEGdkHAAXI6AAxBAgwBCyACIAA6AAxBAQsQNgwBCyABKAIcIAAgASgCICgCEBEAAAsgAkEQaiQAC4YCAQN/IwBBgAFrIgQkACAAKAIAIQACfwJAIAEoAhQiAkEQcUUEQCACQSBxDQEgACgCAEEBIAEQbAwCCyAAKAIAIQBBACECA0AgAiAEakH/AGogAEEPcSIDQTByIANB1wBqIANBCkkbOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBj8TCAEECIAIgBGpBgAFqQQAgAmsQNQwBCyAAKAIAIQBBACECA0AgAiAEakH/AGogAEEPcSIDQTByIANBN2ogA0EKSRs6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUGPxMIAQQIgAiAEakGAAWpBACACaxA1CyAEQYABaiQAC/0BAgR/AX4jAEEgayIFJAACQAJAIARFDQAgASABIAJqIgJLDQAgAyAEakEBa0EAIANrca0gAiAAKAIAIgFBAXQiBiACIAZLGyICQQhBBEEBIARBgQhJGyAEQQFGGyIGIAIgBksbIgatfiIJQiCIUEUNACAJpyIIQYCAgIB4IANrSw0AQQAhAiAFIAEEfyAFIAEgBGw2AhwgBSAAKAIENgIUIAMFIAILNgIYIAVBCGogAyAIIAVBFGoQ2wEgBSgCCEEBRw0BIAUoAhAhAiAFKAIMIQcLIAcgAkGIisAAENcDAAsgBSgCDCEBIAAgBjYCACAAIAE2AgQgBUEgaiQAC/0BAgR/AX4jAEEgayIFJAACQAJAIARFDQAgASABIAJqIgJLDQAgAyAEakEBa0EAIANrca0gAiAAKAIAIgFBAXQiBiACIAZLGyICQQhBBEEBIARBgQhJGyAEQQFGGyIGIAIgBksbIgatfiIJQiCIUEUNACAJpyIIQYCAgIB4IANrSw0AQQAhAiAFIAEEfyAFIAEgBGw2AhwgBSAAKAIENgIUIAMFIAILNgIYIAVBCGogAyAIIAVBFGoQ2wEgBSgCCEEBRw0BIAUoAhAhAiAFKAIMIQcLIAcgAkH4/MAAENcDAAsgBSgCDCEBIAAgBjYCACAAIAE2AgQgBUEgaiQAC64CAQJ/IwBBQGoiAiQAAn8CQAJAAkACQEEDIAAoAgBBB2siAyADQQNPG0EBaw4DAQIDAAsgASgCHEHssMEAQckAIAEoAiAoAgwRAgAMAwsgASgCHEG1scEAQfIAIAEoAiAoAgwRAgAMAgsgAiAAQQxqNgIMIAIgAEEEajYCJCACQQI2AiwgAkHIssEANgIoIAJCAjcCNCACIAJBJGqtQoCAgICQNYQ3AxggAiACQQxqrUKAgICAoDWENwMQIAIgAkEQajYCMCABKAIcIAEoAiAgAkEoahBFDAELIAIgADYCJCACQQE2AiwgAkHwp8EANgIoIAJCATcCNCACIAJBJGqtQoCAgICwNYQ3AxAgAiACQRBqNgIwIAEoAhwgASgCICACQShqEEULIAJBQGskAAv9AQIEfwF+IwBBIGsiBSQAAkACQCAERQ0AIAEgASACaiICSw0AIAMgBGpBAWtBACADa3GtIAIgACgCACIBQQF0IgYgAiAGSxsiAkEIQQRBASAEQYEISRsgBEEBRhsiBiACIAZLGyIGrX4iCUIgiFBFDQAgCaciCEGAgICAeCADa0sNAEEAIQIgBSABBH8gBSABIARsNgIcIAUgACgCBDYCFCADBSACCzYCGCAFQQhqIAMgCCAFQRRqENsBIAUoAghBAUcNASAFKAIQIQIgBSgCDCEHCyAHIAJBwN3BABDXAwALIAUoAgwhASAAIAY2AgAgACABNgIEIAVBIGokAAvLAQIEfwF+IwBBIGsiAyQAAkACQCABIAEgAmoiAksNAEEIIAIgACgCACIBQQF0IgQgAiAESxsiAiACQQhNGyIErSIHQiCIUEUNACAHpyIFQf////8HSw0AIAMgAQR/IAMgATYCHCADIAAoAgQ2AhRBAQVBAAs2AhggA0EIakEBIAUgA0EUahDbASADKAIIQQFHDQEgAygCECECIAMoAgwhBgsgBiACQcCIwgAQ1wMACyADKAIMIQEgACAENgIAIAAgATYCBCADQSBqJAAL2QIBAX8jAEEQayICJAACfwJAAkACQAJAAkACQAJAIAAtAABBAWsOBgECAwQFBgALIAIgAEEIajYCDCABQdibwABBDEGsmcAAQQMgAkEMakHIm8AAEMkBDAYLIAIgAEEIajYCDCABQeSbwABBDkGsmcAAQQMgAkEMakHIm8AAEMkBDAULIAIgAEEBajYCDCABQYScwABBFCACQQxqQfSbwAAQfwwECyACIABBCGo2AgwgAUGYnMAAQQ5BrJnAAEEDIABBBGpBiJjAAEGmnMAAQQggAkEMakHMmMAAEMMBDAMLIAIgAEEBajYCDCABQa6cwABBE0GsmcAAQQMgAEEEakGImMAAQaacwABBCCACQQxqQZiYwAAQwwEMAgsgAUHBnMAAQQ8Q5QMMAQsgAiAAQQFqNgIMIAFB0JzAAEEQQayZwABBAyACQQxqQZiYwAAQyQELIAJBEGokAAvZAgEBfyMAQRBrIgIkAAJ/AkACQAJAAkACQAJAAkAgAC0AAEEBaw4GAQIDBAUGAAsgAiAAQQhqNgIMIAFB7L7AAEEMQcC8wABBAyACQQxqQdy+wAAQyQEMBgsgAiAAQQhqNgIMIAFB+L7AAEEOQcC8wABBAyACQQxqQdy+wAAQyQEMBQsgAiAAQQFqNgIMIAFBmL/AAEEUIAJBDGpBiL/AABB/DAQLIAIgAEEIajYCDCABQay/wABBDkHAvMAAQQMgAEEEakGcu8AAQbq/wABBCCACQQxqQeC7wAAQwwEMAwsgAiAAQQFqNgIMIAFBwr/AAEETQcC8wABBAyAAQQRqQZy7wABBur/AAEEIIAJBDGpBrLvAABDDAQwCCyABQdW/wABBDxDlAwwBCyACIABBAWo2AgwgAUHkv8AAQRBBwLzAAEEDIAJBDGpBrLvAABDJAQsgAkEQaiQAC9kCAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQCAALQAAQQFrDgYBAgMEBQYACyACIABBCGo2AgwgAUG84cAAQQxBkN/AAEEDIAJBDGpBrOHAABDJAQwGCyACIABBCGo2AgwgAUHI4cAAQQ5BkN/AAEEDIAJBDGpBrOHAABDJAQwFCyACIABBAWo2AgwgAUHo4cAAQRQgAkEMakHY4cAAEH8MBAsgAiAAQQhqNgIMIAFB/OHAAEEOQZDfwABBAyAAQQRqQYzewABBiuLAAEEIIAJBDGpB+NzAABDDAQwDCyACIABBAWo2AgwgAUGS4sAAQRNBkN/AAEEDIABBBGpBjN7AAEGK4sAAQQggAkEMakH42sAAEMMBDAILIAFBpeLAAEEPEOUDDAELIAIgAEEBajYCDCABQbTiwABBEEGQ38AAQQMgAkEMakH42sAAEMkBCyACQRBqJAAL2QIBAX8jAEEQayICJAACfwJAAkACQAJAAkACQAJAIAAtAABBAWsOBgECAwQFBgALIAIgAEEIajYCDCABQYCKwQBBDEHUh8EAQQMgAkEMakHwicEAEMkBDAYLIAIgAEEIajYCDCABQYyKwQBBDkHUh8EAQQMgAkEMakHwicEAEMkBDAULIAIgAEEBajYCDCABQayKwQBBFCACQQxqQZyKwQAQfwwECyACIABBCGo2AgwgAUHAisEAQQ5B1IfBAEEDIABBBGpB6IXBAEHOisEAQQggAkEMakH0hsEAEMMBDAMLIAIgAEEBajYCDCABQdaKwQBBE0HUh8EAQQMgAEEEakHohcEAQc6KwQBBCCACQQxqQcCGwQAQwwEMAgsgAUHpisEAQQ8Q5QMMAQsgAiAAQQFqNgIMIAFB+IrBAEEQQdSHwQBBAyACQQxqQcCGwQAQyQELIAJBEGokAAv2AgEEfyMAQTBrIgAkAAJAAkBB/OPCACgCAEUEQEGU5MIAKAIAIQFBlOTCAEEANgIAIAFFDQEgAEEYaiABEQMAIABBEGoiAiAAQSRqKQIANwMAIAAgACkCHDcDCCAAKAIYIQFB/OPCACgCACIDDQICQCADRQ0AQYDkwgAoAgAiAkUNAEGE5MIAKAIAIAJBAnRBBBCnBAtBgOTCACABNgIAQfzjwgBBATYCAEGE5MIAIAApAwg3AgBBjOTCACAAQRBqKQMANwIACyAAQTBqJAAPCyAAQQA2AiggAEEBNgIcIABB8JDCADYCGCAAQgQ3AiAgAEEYakHYkcIAEKQDAAsgAEEoaiACKQMANwIAIAAgACkDCDcCICAAIAE2AhwgAEEBNgIYAkAgAEEYaiIBKAIARQ0AIAEoAgQiAkUNACABKAIIIAJBAnRBBBCnBAsgAEEANgIoIABBATYCHCAAQfiRwgA2AhggAEIENwIgIAFBgJLCABCkAwALqgICA38BfiMAQUBqIgIkACABKAIAQYCAgIB4RgRAIAEoAgwhAyACQSRqIgRBADYCACACQoCAgIAQNwIcIAJBMGogAygCACIDQQhqKQIANwMAIAJBOGogA0EQaikCADcDACACIAMpAgA3AyggAkEcakG8lMIAIAJBKGoQRRogAkEYaiAEKAIAIgM2AgAgAiACKQIcIgU3AxAgAUEIaiADNgIAIAEgBTcCAAsgASkCACEFIAFCgICAgBA3AgAgAkEIaiIDIAFBCGoiASgCADYCACABQQA2AgBBheXCAC0AABogAiAFNwMAQQxBBBD1AyIBRQRAQQRBDBDTBAALIAEgAikDADcCACABQQhqIAMoAgA2AgAgAEHIocIANgIEIAAgATYCACACQUBrJAALwAIBAX8jAEEQayICJAACfwJAAkACQAJAAkACQAJAIAAoAgAiACgCAEEBaw4GAQIDBAUGAAsgAiAAQQRqNgIMIAFBi9HBAEEVIAJBDGpBqM/BABB/DAYLIAIgAEEIajYCDCABQaDRwQBBFkG20cEAQQwgAEEEakH0zMEAQcLRwQBBDyACQQxqQbjNwQAQwwEMBQsgAiAAQQRqNgIMIAFB5NHBAEEXIAJBDGpB1NHBABB/DAQLIAIgAEEEajYCDCABQYzSwQBBGSACQQxqQfzRwQAQfwwDCyACIABBBGo2AgwgAUG40sEAQRkgAkEMakGo0sEAEH8MAgsgAiAAQQRqNgIMIAFB5NLBAEETIAJBDGpB1NLBABB/DAELIAIgAEEEajYCDCABQYjTwQBBFSACQQxqQfjSwQAQfwsgAkEQaiQAC7sCAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQCAAKAIAQQFrDgYBAgMEBQYACyACIABBBGo2AgwgAUHmqMAAQRUgAkEMakHknsAAEH8MBgsgAiAAQQhqNgIMIAFB+6jAAEEWQZGpwABBDCAAQQRqQYiYwABBnanAAEEPIAJBDGpBzJjAABDDAQwFCyACIABBBGo2AgwgAUG8qcAAQRcgAkEMakGsqcAAEH8MBAsgAiAAQQRqNgIMIAFB5KnAAEEZIAJBDGpB1KnAABB/DAMLIAIgAEEEajYCDCABQZCqwABBGSACQQxqQYCqwAAQfwwCCyACIABBBGo2AgwgAUG8qsAAQRMgAkEMakGsqsAAEH8MAQsgAiAAQQRqNgIMIAFB4KrAAEEVIAJBDGpB0KrAABB/CyACQRBqJAALuwIBAX8jAEEQayICJAACfwJAAkACQAJAAkACQAJAIAAoAgBBAWsOBgECAwQFBgALIAIgAEEEajYCDCABQfrLwABBFSACQQxqQfjBwAAQfwwGCyACIABBCGo2AgwgAUGPzMAAQRZBpczAAEEMIABBBGpBnLvAAEGxzMAAQQ8gAkEMakHgu8AAEMMBDAULIAIgAEEEajYCDCABQdDMwABBFyACQQxqQcDMwAAQfwwECyACIABBBGo2AgwgAUH4zMAAQRkgAkEMakHozMAAEH8MAwsgAiAAQQRqNgIMIAFBpM3AAEEZIAJBDGpBlM3AABB/DAILIAIgAEEEajYCDCABQdDNwABBEyACQQxqQcDNwAAQfwwBCyACIABBBGo2AgwgAUH0zcAAQRUgAkEMakHkzcAAEH8LIAJBEGokAAu7AgEBfyMAQRBrIgIkAAJ/AkACQAJAAkACQAJAAkAgACgCAEEBaw4GAQIDBAUGAAsgAiAAQQRqNgIMIAFB4u7AAEEVIAJBDGpBmNzAABB/DAYLIAIgAEEIajYCDCABQffuwABBFkGN78AAQQwgAEEEakGM3sAAQZnvwABBDyACQQxqQfjcwAAQwwEMBQsgAiAAQQRqNgIMIAFBuO/AAEEXIAJBDGpBqO/AABB/DAQLIAIgAEEEajYCDCABQeDvwABBGSACQQxqQdDvwAAQfwwDCyACIABBBGo2AgwgAUGM8MAAQRkgAkEMakH878AAEH8MAgsgAiAAQQRqNgIMIAFBuPDAAEETIAJBDGpBqPDAABB/DAELIAIgAEEEajYCDCABQdzwwABBFSACQQxqQczwwAAQfwsgAkEQaiQAC7sCAQF/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQCAAKAIAQQFrDgYBAgMEBQYACyACIABBBGo2AgwgAUH2lMEAQRUgAkEMakGMlMEAEH8MBgsgAiAAQQhqNgIMIAFBi5XBAEEWQaGVwQBBDCAAQQRqQeiFwQBBrZXBAEEPIAJBDGpB9IbBABDDAQwFCyACIABBBGo2AgwgAUHMlcEAQRcgAkEMakG8lcEAEH8MBAsgAiAAQQRqNgIMIAFB9JXBAEEZIAJBDGpB5JXBABB/DAMLIAIgAEEEajYCDCABQaCWwQBBGSACQQxqQZCWwQAQfwwCCyACIABBBGo2AgwgAUHMlsEAQRMgAkEMakG8lsEAEH8MAQsgAiAAQQRqNgIMIAFB8JbBAEEVIAJBDGpB4JbBABB/CyACQRBqJAAL9gEBCH8gASgCCCICIAEoAgQiAyACIANLGyEIIAEoAgAhBUF/IQcgAiEEAkACQANAIAQgCEYNASABIARBAWoiBjYCCCAHQQFqIQcgBCAFaiAGIQQtAAAiBkEwa0H/AXFBCkkgBkHhAGtB/wFxQQZJcg0ACyAGQd8ARw0AIAIgBEEBayIBSw0BAkAgAgRAIAIgA08EQCACIANHIAEgA0tyDQQMAgsgAiAFaiwAAEFASA0DIAEgA00NAQwDCyABIANLDQILIAAgBzYCBCAAIAIgBWo2AgAPCyAAQQA2AgAgAEEAOgAEDwsgBSADIAIgAUH0uMIAEOwDAAvWAQIEfwF+IwBBIGsiAyQAAkACQCABIAEgAmoiAksEQEEAIQEMAQtBACEBQQggAiAAKAIAIgVBAXQiBCACIARLGyICIAJBCE0bIgStIgdCIIhQRQ0AIAenIgZB/////wdLDQAgAyAFBH8gAyAFNgIcIAMgACgCBDYCFEEBBUEACzYCGCADQQhqQQEgBiADQRRqENsBIAMoAghBAUcNASADKAIQIQIgAygCDCEBCyABIAJBqJTCABDXAwALIAMoAgwhASAAIAQ2AgAgACABNgIEIANBIGokAAuzAgECfyMAQRBrIgIkAAJ/AkACQAJAAkACQAJAAkACQAJAQQggACgCACIAKAIAQYCAgIB4cyIDIANBCE8bQQFrDggBAgMEBQYHCAALIAIgAEEEajYCDCABQajcwABBAiACQQxqQZjcwAAQfwwICyACIABBBGo2AgwgAUG83MAAQRMgAkEMakGs3MAAEH8MBwsgAiAAQQRqNgIMIAFBz9zAAEETIAJBDGpB+NrAABB/DAYLIAFB4tzAAEETEOUDDAULIAIgAEEEajYCDCABQYjdwABBEiACQQxqQfjcwAAQfwwECyABQZrdwABBGhDlAwwDCyABQbTdwABBCRDlAwwCCyABQb3dwABBFhDlAwwBCyACIAA2AgwgAUHk3cAAQQYgAkEMakHU3cAAEH8LIAJBEGokAAuaAgECfyMAQTBrIgIkAAJ/AkACQAJAAkAgAC0AACIDQQNrQQAgA0EEa0H/AXFBA0kbQQFrDgMBAgMACyABKAIcQdSswQBBJCABKAIgKAIMEQIADAMLIAEoAhxB+KzBAEHKACABKAIgKAIMEQIADAILIAIgAEEBajYCDCACQQE2AhQgAkHcrcEANgIQIAJCATcCHCACIAJBDGqtQoCAgIDwNIQ3AyggAiACQShqNgIYIAEoAhwgASgCICACQRBqEEUMAQsgAiAAQQRqNgIMIAJBATYCFCACQYiuwQA2AhAgAkIBNwIcIAIgAkEMaq1CgICAgIA1hDcDKCACIAJBKGo2AhggASgCHCABKAIgIAJBEGoQRQsgAkEwaiQAC/oBAQN/IAAgACgCCCICIAFJBH8gAiEDIAEgAmsiBCAAKAIAIAJrSwRAIAAgAiAEQQRBBBCSASAAKAIIIQMLIAAoAgQgA0ECdGohACAEQQJPBEAgAkF/cyABaiICQQdxIQEgBEECa0EHTwRAIAJBeHEhAgNAIABBADYCHCAAQQA2AhggAEEANgIUIABBADYCECAAQQA2AgwgAEEANgIIIABBADYCBCAAQQA2AgAgAEEgaiEAIAJBCGsiAg0ACwsgAQRAA0AgAEEANgIAIABBBGohACABQQFrIgENAAsLIAMgBGpBAWshAwsgAEEANgIAIANBAWoFIAELNgIIC4gCAQN/AkACQAJAAkAgACgCAA4GAAMBAwMCAwsgAC0ABEEDRw0CIAAoAggiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgMEQCABIAMgAigCCBCnBAsgAEEMQQQQpwQPCyAAKAIEIgFB7f///wdqIgJBCk0gAkEDR3ENASABRSABQfv///8HaiICQQ1NIAJBAkdxIAFBg4CAgHhHIAFBhICAgHhMcXJyDQEgACgCCCABQQJ0QQQQpwQPCyAAKAIEIgFB+////wdqIgJBC00gAkECR3EgAUGDgICAeEcgAUGEgICAeExxciABRXINACAAKAIIIAFBAnRBBBCnBAsLiwICAn8BfiMAQTBrIgIkAAJ/AkACQAJAIAAoAgAiA0EBa0EAIANBAk8bQQFrDgIBAgALIAIgADYCBCACQQE2AgwgAkHwp8EANgIIIAJCATcCFCACIAJBBGqtQoCAgIDQOIQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEUMAgsgAiAAQQRqNgIAIAIgAEEIajYCBCACQQI2AgwgAkHEvsEANgIIIAJCAjcCFCACQoCAgIDwNSIEIAJBBGqthDcDKCACIAQgAq2ENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAELIAEoAhxB1L7BAEEXIAEoAiAoAgwRAgALIAJBMGokAAv2AQICfwF+IwBBMGsiAiQAIABBBGohAwJ/IAAtAABFBEAgAiADNgIAIAIgAEEBajYCBCACQQM2AgwgAkGczMEANgIIIAJCAjcCFCACIAKtQoCAgIDwNYQ3AyggAiACQQRqrUKAgICA4DSENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAELIAIgAzYCACACIABBCGo2AgQgAkEDNgIMIAJB3MzBADYCCCACQgI3AhQgAkKAgICA8DUiBCACQQRqrYQ3AyggAiAEIAKthDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQsgAkEwaiQAC94BAQZ/AkAgAgRAIAAoAggiAyAAKAIEIgYgACgCDCIEIANJIgUbIARrQQAgAyAFG2oiBUEBayIHQQAgBSAHTxsiBSACSQRAIAAgAiAFaxCAASAAKAIEIQYgACgCCCEDIAAoAgwhBAsgAyAGIAMgBEsbIgcgBGsiAyACIAIgA0siCBshAyAAKAIAIQUgBCAHRwRAIAQgBWogASADEDsaCyAIBEAgBSABIANqIAIgA2sQOxoLIAZFDQEgACACIARqIAZwNgIMCyAAIAApAxAgAq18NwMQDwtBsOnBABCUAwAL3wEBAX8jAEEQayICJAAgAkEANgIMIAAgAkEMagJ/IAFBgAFPBEAgAUGAEE8EQCABQYCABE8EQCACIAFBP3FBgAFyOgAPIAIgAUESdkHwAXI6AAwgAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgANQQQMAwsgAiABQT9xQYABcjoADiACIAFBDHZB4AFyOgAMIAIgAUEGdkE/cUGAAXI6AA1BAwwCCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAgwBCyACIAE6AAxBAQsQQyACQRBqJAAL5wEBB38gACgCCCIFBEAgACgCBCEGA0AgBiACQQxsaiIDKAIIIgQEQCADKAIEQSRqIQADQCAAQQRrKAIAIgFBgICAgHhGIAFFckUEQCAAKAIAIAFBARCnBAsCQCAAQRRrKAIAIgdBAkYNACAAQRBrIQEgB0UEQCABKAIAIgFFDQEgAEEMaygCACABQQEQpwQMAQsgASgCACIBRQ0AIABBDGsoAgAgAUEBdEECEKcECyAAQSxqIQAgBEEBayIEDQALCyADKAIAIgAEQCADKAIEIABBLGxBBBCnBAsgAkEBaiICIAVHDQALCwuHAgICfwJ9AkACQCAAvCIBQYCAgAROBEAgAUH////7B0sNAUGBfyECQwAAAAAhACABQYCAgPwDRg0BDAILIABDAAAAAFsEQEMAAIC/IAAgAJSVDwsgAUEATgRAIABDAAAATJS8IQFB6H4hAgwCCyAAIACTQwAAAACVIQALIAAPCyABQY32qwJqIgFBF3YgAmqyIgNDgHExP5QgAUH///8DcUHzidT5A2q+QwAAgL+SIgAgA0PR9xc3lCAAIABDAAAAQJKVIgMgACAAQwAAAD+UlCIEIAMgA5QiACAAIACUIgBD7umRPpRDqqoqP5KUIAAgAEMmnng+lEMTzsw+kpSSkpSSIASTkpILmwIBAn8jAEEQayICJAACfwJAAkACQAJAAkBBAyAAKAIAIgAoAgBBgICAgHhzIgMgA0EFTxtBAWsOBAECAwQACyABQdHZwQBBDBDlAwwECyACIABBBWo2AgwgAUHd2cEAQQxBi87BAEEDIABBBGpBtNnBAEHp2cEAQQMgAkEMakGEzcEAEMMBDAMLIAIgAEEEajYCDCABQejUwQBBDCACQQxqQdjUwQAQfwwCCyACIAA2AgwgAUH82cEAQYvOwQAgAEEMakHg0MEAQZbawQAgAEEQakHg0MEAQaLawQAgAkEMakHs2cEAEL4BDAELIAIgAEEEajYCDCABQbbawQBBDkGLzsEAQQMgAkEMakG4zcEAEMkBCyACQRBqJAAL7wECA38BfiMAQTBrIgIkACAAQQhqIQMgAEEEaiEEQoCAgIDwNSEFAn8gACgCAEUEQCACIAQ2AgAgAiADNgIEIAJBAzYCDCACQZSzwQA2AgggAkICNwIUIAIgBSACrYQ3AyggAiAFIAJBBGqthDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwBCyACIAQ2AgAgAiADNgIEIAJBAjYCDCACQcyzwQA2AgggAkICNwIUIAIgBSACQQRqrYQ3AyggAiAFIAKthDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQsgAkEwaiQAC5YCAQJ/IwBBEGsiAiQAAn8CQAJAAkACQAJAQQMgACgCAEGAgICAeHMiAyADQQVPG0EBaw4EAQIDBAALIAFBhJnAAEEMEOUDDAQLIAIgAEEFajYCDCABQaCZwABBDEGsmcAAQQMgAEEEakGQmcAAQa+ZwABBAyACQQxqQZiYwAAQwwEMAwsgAiAAQQRqNgIMIAFBxJnAAEEMIAJBDGpBtJnAABB/DAILIAIgADYCDCABQfCZwABBrJnAACAAQQxqQdCZwABBiprAACAAQRBqQdCZwABBlprAACACQQxqQeCZwAAQvgEMAQsgAiAAQQRqNgIMIAFBqprAAEEOQayZwABBAyACQQxqQcyYwAAQyQELIAJBEGokAAuWAgECfyMAQRBrIgIkAAJ/AkACQAJAAkACQEEDIAAoAgBBgICAgHhzIgMgA0EFTxtBAWsOBAECAwQACyABQZi8wABBDBDlAwwECyACIABBBWo2AgwgAUG0vMAAQQxBwLzAAEEDIABBBGpBpLzAAEHDvMAAQQMgAkEMakGsu8AAEMMBDAMLIAIgAEEEajYCDCABQdi8wABBDCACQQxqQci8wAAQfwwCCyACIAA2AgwgAUGEvcAAQcC8wAAgAEEMakHkvMAAQZ69wAAgAEEQakHkvMAAQaq9wAAgAkEMakH0vMAAEL4BDAELIAIgAEEEajYCDCABQb69wABBDkHAvMAAQQMgAkEMakHgu8AAEMkBCyACQRBqJAALlgIBAn8jAEEQayICJAACfwJAAkACQAJAAkBBAyAAKAIAQYCAgIB4cyIDIANBBU8bQQFrDgQBAgMEAAsgAUHm3sAAQQwQ5QMMBAsgAiAAQQVqNgIMIAFBhN/AAEEMQZDfwABBAyAAQQRqQfTewABBk9/AAEEDIAJBDGpB+NrAABDDAQwDCyACIABBBGo2AgwgAUGo38AAQQwgAkEMakGY38AAEH8MAgsgAiAANgIMIAFB1N/AAEGQ38AAIABBDGpBtN/AAEHu38AAIABBEGpBtN/AAEH638AAIAJBDGpBxN/AABC+AQwBCyACIABBBGo2AgwgAUGO4MAAQQ5BkN/AAEEDIAJBDGpB+NzAABDJAQsgAkEQaiQAC5YCAQJ/IwBBEGsiAiQAAn8CQAJAAkACQAJAQQMgACgCAEGAgICAeHMiAyADQQVPG0EBaw4EAQIDBAALIAFBrIfBAEEMEOUDDAQLIAIgAEEFajYCDCABQciHwQBBDEHUh8EAQQMgAEEEakG4h8EAQdeHwQBBAyACQQxqQcCGwQAQwwEMAwsgAiAAQQRqNgIMIAFB7IfBAEEMIAJBDGpB3IfBABB/DAILIAIgADYCDCABQZiIwQBB1IfBACAAQQxqQfiHwQBBsojBACAAQRBqQfiHwQBBvojBACACQQxqQYiIwQAQvgEMAQsgAiAAQQRqNgIMIAFB0ojBAEEOQdSHwQBBAyACQQxqQfSGwQAQyQELIAJBEGokAAv/BgIIfwF+IAIgASgCBCIJIAEoAgwiBCAEIAEoAggiBkkiBxsgBmsgBEEAIAcbaiIITQRAIAggAmsiBSADaiEKIAYgCSAHGyAEa0EAIAYgBxtqIgRBAWsiBkEAIAQgBk8bIgQgA0kEQCABIAMgBGsQgAELAkAgCCAKTwRAIAEgBSADEC4MAQsgA0UNACADIQQDQCABIAUgBCACIAIgBEsbIgYQLiAFIAZqIQUgBCAGayIEDQALCyAAQQI2AgAgASABKQMQIAOtfDcDEA8LIAEoAgQhBiABKAIIIQUgASgCDCEEAkAgASkDECIMIAE1AnBWBEAgACACNgIEIABBATYCACAAIAYgBCAEIAVJIgAbIAVrIARBACAAG2o2AggMAQsCQAJAAkACQAJAAkACQAJAAkACQCABKAJ8IgggAiAFaiIKIAZBACAEIAVJIgkbIARqIgtrIgJPBEAgCCACayEHIAIgA08EQCADIAdqIgIgB0kNAiACIAhLDQMgA0UNCiABKAJ4IAUgBiAJGyAEa0EAIAUgCRtqIghBAWsiCUEAIAggCU8bIgggA0kEQCABIAMgCGsQgAEgASgCBCEGIAEoAgghBSABKAIMIQQLIAdqIQcgBSAGIAQgBUkbIgggBGsiAiADIAIgA0kiCRshAiABKAIAIQUgBCAIRwRAIAQgBWogByACEDsaCyAJDQQMCQsgCiALRg0GIAEoAnghCCAFIAYgCRsgBGtBACAFIAkbaiIJQQFrIgpBACAJIApPGyIJIAJJBEAgASACIAlrEIABIAEoAgQhBiABKAIIIQUgASgCDCEECyAHIAhqIQggBSAGIAQgBUkbIgogBGsiByACIAIgB0siCxshByABKAIAIQkgBCAKRwRAIAQgCWogCCAHEDsaCyALDQQMBQsgACACNgIIIAAgCDYCBCAAQQA2AgAMCgsgByACQaD3wQAQrAQACyACIAhBoPfBABCrBAALIAUgAiAHaiADIAJrEDsaDAQLIAkgByAIaiACIAdrEDsaCyAGRQ0BIAEgAiAEaiAGcCIENgIMIAEpAxAhDAsgASAMIAKtfDcDECAAIAEgBiAEIAQgBUkiABsgBWsgBEEAIAAbaiADIAJrELEBDAQLQbDpwQAQlAMACyAGRQ0BIAEgAyAEaiAGcDYCDAsgAEECNgIADAELQbDpwQAQlAMACwvUAQIGfwF+IwBBIGsiAiQAQQQgACgCACIEQQFqIgMgBEEBdCIFIAMgBUsbIgMgA0EETRsiBa1CDH4iCEIgiFBFBEBBAEEAIAEQ1wMACwJAIAinIgdB/P///wdNBEBBACEDIAIgBAR/IAIgBEEMbDYCHCACIAAoAgQ2AhRBBAUgAws2AhggAkEIakEEIAcgAkEUahDbASACKAIIQQFHDQEgAigCDCEGIAIoAhAhAwsgBiADIAEQ1wMACyACKAIMIQEgACAFNgIAIAAgATYCBCACQSBqJAAL3AEBA38jAEEQayIDJAACfyACKAIAQQFxBEBB3KDCACEEQQkMAQsgA0EEaiACKAIEIAIoAggQPUHcoMIAIAMoAgggAygCBCICGyEEQQkgAygCDCACGwshAiAEIAIgARDaAQJAIAAoAgAiAUGAgICAeEcEQCABRQ0BIAAoAgQgAUEBEKcEDAELIAAtAARBA0cNACAAKAIIIgAoAgAhASAAQQRqKAIAIgIoAgAiBQRAIAEgBREDAAsgAigCBCIFBEAgASAFIAIoAggQpwQLIABBDEEEEKcECyADQRBqJAALywEBBX8jAEEgayICJAAgACgCACIFQQFqIgMgBUEBdCIGIAMgBksbIgNB/////wNLBEBBAEEAIAEQ1wMACwJAQQQgAyADQQRNGyIDQQJ0IgZB/P///wdNBH8gAiAFBH8gAiAFQQJ0NgIcIAIgACgCBDYCFEEEBSAECzYCGCACQQhqQQQgBiACQRRqENsBIAIoAghBAUcNASACKAIQIQQgAigCDAUgBAsgBCABENcDAAsgAigCDCEBIAAgAzYCACAAIAE2AgQgAkEgaiQAC+0BAQN/IwBBIGsiAiQAIAJBCGoiAyABQSRqKAIANgIAQYXlwgAtAAAaIAIgASkCHDcDAEEMQQQQ9QMiBARAIAQgAikDADcCACAEQQhqIAMoAgA2AgACQCABKAIEQQJHDQACQAJAIAEtABhBAWsOAgIAAQsgAkEBNgIEIAJB9ILAADYCACACQgA3AgwgAiACQRxqNgIIIAJB+IPAABCkAwALIAFBCGoQqQEgASgCCCIDRQ0AIAEoAgwgA0EMbEEEEKcECyABQShBBBCnBCAAQZCMwAA2AgQgACAENgIAIAJBIGokAA8LQQRBDBDTBAAL7QEBA38jAEEgayICJAAgAkEIaiIDIAFBJGooAgA2AgBBheXCAC0AABogAiABKQIcNwMAQQxBBBD1AyIEBEAgBCACKQMANwIAIARBCGogAygCADYCAAJAIAEoAgRBAkcNAAJAAkAgAS0AGEEBaw4CAgABCyACQQE2AgQgAkG0/sAANgIAIAJCADcCDCACIAJBHGo2AgggAkG4/8AAEKQDAAsgAUEIahCpASABKAIIIgNFDQAgASgCDCADQQxsQQQQpwQLIAFBKEEEEKcEIABBoJfAADYCBCAAIAQ2AgAgAkEgaiQADwtBBEEMENMEAAvdAQEFfyMAQSBrIgEkAAJAIAAoAgRBAkcNAAJAAkAgAC0AGEEBaw4CAgABCyABQQE2AgggAUG0/sAANgIEIAFCADcCECABIAFBHGo2AgwgAUEEakG4/8AAEKQDAAsgAEEIahCpASAAKAIIIgJFDQAgACgCDCACQQxsQQQQpwQLIAAtABxBA0YEQCAAKAIgIgIoAgAhBCACQQRqKAIAIgUoAgAiAwRAIAQgAxEDAAsgBSgCBCIDBEAgBCADIAUoAggQpwQLIAJBDEEEEKcECyAAQSRBBBCnBCABQSBqJAALxgQCBn8BfiMAQRBrIgQkAAJAAkAgACgCAEECRwRAIwBB4ABrIgIkAAJ/AkAgACgCAEUEQEEBIAEgACgCECAAKAIUEOUDDQIaDAELIAIgAEEEajYCCCABKAIUIQMgAiABNgIUIAJCgICAgIDI0Ac3AgwgAkEIaq1CgICAgIDCAIQhCAJAAn8gA0EEcQRAIAIgCDcDMCACQQE2AiwgAkEBNgIcIAJBxLvCADYCGCACQQE2AiQgAkEDOgBYIAJBBDYCVCACQiA3AkwgAkECNgJEIAJBAjYCPCACIAJBPGo2AiggAiACQTBqNgIgIAJBDGpBgLHCACACQRhqEEUMAQsgAkEBNgJAIAJBxLvCADYCPCACQgE3AkggAiAINwMYIAIgAkEYajYCRCACQQxqQYCxwgAgAkE8ahBFCyIDQQAgAigCDCIFG0UEQCADDQEgBUUNAkHwu8IAQTcgAkHfAGpB4LvCAEGovMIAEKACAAsgAUHMu8IAQRQQ5QNFDQELQQEMAQsgASAAKAIYIAAoAhwQ5QMLIAJB4ABqJAAhBQwBCyAAKAIkIgJFDQAgACgCICEAA0AgBEEEaiAAIAIQPQJAAkAgBCgCBEUEQCAEKAIIIAQoAgwgARDVBA0BDAQLIAQtAA0hAyAELQAMIQYgBCgCCCEHQeWgwgBBAyABENUERQ0BC0EBIQUMAgsgBkEBcUUNASACIAMgB2oiA0kNAiAAIANqIQAgAiADayICDQALCyAEQRBqJAAgBQ8LIAMgAkHUosIAEKoEAAu8AQECfyMAQSBrIgMkAAJAAn9BACABIAEgAmoiAksNABpBAEEIIAIgACgCACIBQQF0IgQgAiAESxsiAiACQQhNGyIEQQBIDQAaQQAhAiADIAEEfyADIAE2AhwgAyAAKAIENgIUQQEFIAILNgIYIANBCGpBASAEIANBFGoQ2wEgAygCCEEBRw0BIAMoAhAhACADKAIMCyAAQZy/wgAQ1wMACyADKAIMIQEgACAENgIAIAAgATYCBCADQSBqJAAL2QEAIABBIEkEQEEADwsgAEH/AEkEQEEBDwsgAEGAgARPBEAgAEGAgAhPBEAgAEHg//8AcUHgzQpHIABB/v//AHFBnvAKR3EgAEHA7gprQXpJcSAAQbCdC2tBcklxIABB8NcLa0FxSXEgAEGA8AtrQd5sSXEgAEGAgAxrQZ50SXEgAEHQpgxrQXtJcSAAQYCCOGtBsMVUSXEgAEHwgzhJcQ8LIABBiM3CAEEsQeDNwgBB0AFBsM/CAEHmAxBxDwsgAEGW08IAQShB5tPCAEGiAkGI1sIAQakCEHEL1AEBBH8jAEEgayIBJAACQCAAKAIEQQJHDQACQAJAIAAtABhBAWsOAgIAAQsgAUEBNgIIIAFBtP7AADYCBCABQgA3AhAgASABQRxqNgIMIAFBBGpBuP/AABCkAwALIABBCGoQqQEgACgCCCICRQ0AIAAoAgwgAkEMbEEEEKcECyAALQAcQQNGBEAgACgCICIAKAIAIQIgAEEEaigCACIEKAIAIgMEQCACIAMRAwALIAQoAgQiAwRAIAIgAyAEKAIIEKcECyAAQQxBBBCnBAsgAUEgaiQAC8kBAgN/AX4jAEEQayIEJAACQCAAKAIQIgNFBEAMAQtBASECQe65wgBBASADENUEDQAgAVAEQEHuuMIAQQEgAxDVBCECDAELAkAgASAANQIUIgVYBEAgBSABfSIBQhpUDQFB7rjCAEEBIAMQ1QQNAiAEIAE3AwggBEEIaiADEK8EIQIMAgtBxLnCAEEQIAMQ1QQNAUEAIQIgAEEAOgAEIABBADYCAAwBCyAEIAGnQeEAajYCBCAEQQRqIAMQjQEhAgsgBEEQaiQAIAIL2QEBBH8jAEEgayICJABBheXCAC0AABogASgCICEDIAEoAhwhBUEIQQQQ9QMiBARAIAQgAzYCBCAEIAU2AgACQCABKAIEQQJHDQACQAJAIAEtABhBAWsOAgIAAQsgAkEBNgIIIAJBtP7AADYCBCACQgA3AhAgAiACQRxqNgIMIAJBBGpBuP/AABCkAwALIAFBCGoQqQEgASgCCCIDRQ0AIAEoAgwgA0EMbEEEEKcECyABQSRBBBCnBCAAQdyXwAA2AgQgACAENgIAIAJBIGokAA8LQQRBCBDTBAALzwEBAX8jAEEQayILJAAgACgCHCABQRogACgCICgCDBECACEBIAtBADoADSALIAE6AAwgCyAANgIIIAtBCGogAkEDIAMgBBBvIAVBDCAGIAcQbyAIQRQgCSAKEG8hASALLQANIgIgCy0ADCIDciEAAkAgA0EBcSACQQFHcg0AIAEoAgAiAC0AFEEEcUUEQCAAKAIcQYfEwgBBAiAAKAIgKAIMEQIAIQAMAQsgACgCHEGGxMIAQQEgACgCICgCDBECACEACyALQRBqJAAgAEEBcQuuAQEEfwJAIAAoAgBBAkcEfyAALQDMAyEBAkAgAC0AEEEEcQRAIAFBAXFFDQMgACgCGA0BDAMLIAFBAXFFDQILIAAoApQCIAAoApwCIgEgASAAKAKYAiIASSICGyAAayABQQAgAhtqBSABCw8LIAAoApwCIgFBACABIAAoApgCIgJJIgMbIgQgACgClAIgASADGyIBaiACIAAoAoADIgBqa0EAIAEgAmsgBGogAEsbC8EBAgN/AX4jAEEwayICJAAgASgCAEGAgICAeEYEQCABKAIMIQMgAkEUaiIEQQA2AgAgAkKAgICAEDcCDCACQSBqIAMoAgAiA0EIaikCADcDACACQShqIANBEGopAgA3AwAgAiADKQIANwMYIAJBDGpBvJTCACACQRhqEEUaIAJBCGogBCgCACIDNgIAIAIgAikCDCIFNwMAIAFBCGogAzYCACABIAU3AgALIABByKHCADYCBCAAIAE2AgAgAkEwaiQAC5YCAQJ/IwBBIGsiBSQAQaTlwgBBpOXCACgCACIGQQFqNgIAAkACf0EAIAZBAEgNABpBAUHw6MIALQAADQAaQfDowgBBAToAAEHs6MIAQezowgAoAgBBAWo2AgBBAgtB/wFxIgZBAkcEQCAGQQFxRQ0BIAVBCGogACABKAIYEQEAAAtBmOXCACgCACIGQQBIDQBBmOXCACAGQQFqNgIAQZjlwgBBnOXCACgCAAR/IAUgACABKAIUEQEAIAUgBDoAHSAFIAM6ABwgBSACNgIYIAUgBSkDADcCEEGc5cIAKAIAIAVBEGpBoOXCACgCACgCFBEBAEGY5cIAKAIAQQFrBSAGCzYCAEHw6MIAQQA6AAAgA0UNAAALAAuuAQEEfyMAQSBrIgIkAEEIIAAoAgAiBEEBaiIDIARBAXQiBSADIAVLGyIDIANBCE0bIgNBAEgEQEEAQQAgARDXAwALQQAhBSACIAQEfyACIAQ2AhwgAiAAKAIENgIUQQEFIAULNgIYIAJBCGpBASADIAJBFGoQ2wEgAigCCEEBRgRAIAIoAgwgAigCECABENcDAAsgAigCDCEBIAAgAzYCACAAIAE2AgQgAkEgaiQAC8UBAQF/IwBBEGsiCyQAIAAoAhwgASACIAAoAiAoAgwRAgAhASALQQA6AA0gCyABOgAMIAsgADYCCCALQQhqIAMgBCAFIAYQbyAHIAggCSAKEG8hASALLQANIgIgCy0ADCIDciEAAkAgA0EBcSACQQFHcg0AIAEoAgAiAC0AFEEEcUUEQCAAKAIcQYfEwgBBAiAAKAIgKAIMEQIAIQAMAQsgACgCHEGGxMIAQQEgACgCICgCDBECACEACyALQRBqJAAgAEEBcQvNAQIDfwF+IwBBIGsiAiQAQYXlwgAtAAAaIAEpAhwhBUEIQQQQ9QMiAwRAIAMgBTcCAAJAIAEoAgRBAkcNAAJAAkAgAS0AGEEBaw4CAgABCyACQQE2AgggAkG0/sAANgIEIAJCADcCECACIAJBHGo2AgwgAkEEakG4/8AAEKQDAAsgAUEIahCpASABKAIIIgRFDQAgASgCDCAEQQxsQQQQpwQLIAFBJEEEEKcEIABBqJbAADYCBCAAIAM2AgAgAkEgaiQADwtBBEEIENMEAAunAQEDfyMAQRBrIgMkAEEDIQIgAC0AACIAIQQgAEEKTwRAIAMgACAAQeQAbiIEQeQAbGtB/wFxQQF0IgJBksTCAGotAAA6AA8gAyACQZHEwgBqLQAAOgAOQQEhAgtBACAAIAQbRQRAIAJBAWsiAiADQQ1qaiAEQQF0Qf4BcUGSxMIAai0AADoAAAsgAUEBQQFBACADQQ1qIAJqQQMgAmsQNSADQRBqJAAL4AEBBX8CQAJAIABBhAFJDQAgANBvJgEQmAFBjOTCACgCACEEQZDkwgAoAgAhAUGM5MIAQgA3AgBBiOTCACgCACECQYTkwgAoAgAhA0GE5MIAQgQ3AgBBgOTCACgCACEFQYDkwgBBADYCACAAIAFJDQEgACABayIAIAJPDQEgAyAAQQJ0aiAENgIAQZDkwgAgATYCAEGM5MIAIAA2AgBBiOTCACACNgIAQYTkwgAoAgBBhOTCACADNgIAQYDkwgAoAgAhAEGA5MIAIAU2AgAgAEUNACAAQQJ0QQQQpwQLDwsAC8YBAQJ/IwBBEGsiAiQAAn8CQAJAAkBBASAAKAIAIgAtAABBAmsiAyADQf8BcUEDTxtB/wFxQQFrDgIBAgALIAIgAEEBajYCBCABQcihwQBBGUHUh8EAQQMgAkEEakHAhsEAEMkBDAILIAIgADYCCCABQeyHwQBBDCACQQhqQdyHwQAQfwwBCyACIABBCGo2AgwgAUHhocEAQQ5Bt43BAEEEIABBBGpB6IXBAEGii8EAQQQgAkEMakHAhsEAEMMBCyACQRBqJAALxgEBAn8jAEEQayICJAACfwJAAkACQEEBIAAoAgAiAC0AAEECayIDIANB/wFxQQNPG0H/AXFBAWsOAgECAAsgAiAAQQFqNgIEIAFBjdnBAEEZQYvOwQBBAyACQQRqQYTNwQAQyQEMAgsgAiAANgIIIAFB6NTBAEEMIAJBCGpB2NTBABB/DAELIAIgAEEIajYCDCABQabZwQBBDkGw18EAQQQgAEEEakH0zMEAQbfTwQBBBCACQQxqQYTNwQAQwwELIAJBEGokAAu7AQEBfyMAQRBrIgckACAAKAIcIAEgAiAAKAIgKAIMEQIAIQEgB0EAOgANIAcgAToADCAHIAA2AgggB0EIaiADIAQgBSAGEG8hASAHLQANIgIgBy0ADCIDciEAAkAgA0EBcSACQQFHcg0AIAEoAgAiAC0AFEEEcUUEQCAAKAIcQYfEwgBBAiAAKAIgKAIMEQIAIQAMAQsgACgCHEGGxMIAQQEgACgCICgCDBECACEACyAHQRBqJAAgAEEBcQueAQIEfwJ+AkACQCAAKAIIIgMoAggiBCAAKQMAIgenIgJLBEAgAygCBCACQQF0ai0AASICDQEMAgsgAiAEQZz5wQAQrQIACyACIAEtABQiBU0EQCABIAUgAmsiAzoAFEJ/IAKthkJ/hSABKQMIIANBP3GtiIMhBgwBCyABIAIQWyEGIAMoAgghBAsgACAErUIBfSAHIAKthoMgBoQ3AwALrgEBAX8jAEEQayIGJAACQCABBEAgBkEEaiABIAMgBCAFIAIoAhARBgACQCAGKAIEIgIgBigCDCIBTQRAIAYoAgghBQwBCyACQQJ0IQIgBigCCCEDIAFFBEBBBCEFIAMgAkEEEKcEDAELIAMgAkEEIAFBAnQiAhDfAyIFRQ0CCyAAIAE2AgQgACAFNgIAIAZBEGokAA8LQfiPwgBBMhDIBAALQQQgAkHoj8IAENcDAAvBAQECfyMAQRBrIgIkAAJ/AkACQAJAQQEgAC0AAEECayIDIANB/wFxQQNPG0H/AXFBAWsOAgECAAsgAiAAQQFqNgIEIAFBuLXAAEEZQayZwABBAyACQQRqQZiYwAAQyQEMAgsgAiAANgIIIAFBxJnAAEEMIAJBCGpBtJnAABB/DAELIAIgAEEIajYCDCABQdG1wABBDkHzocAAQQQgAEEEakGImMAAQfqcwABBBCACQQxqQZiYwAAQwwELIAJBEGokAAvBAQECfyMAQRBrIgIkAAJ/AkACQAJAQQEgAC0AAEECayIDIANB/wFxQQNPG0H/AXFBAWsOAgECAAsgAiAAQQFqNgIEIAFBzNjAAEEZQcC8wABBAyACQQRqQay7wAAQyQEMAgsgAiAANgIIIAFB2LzAAEEMIAJBCGpByLzAABB/DAELIAIgAEEIajYCDCABQeXYwABBDkGHxcAAQQQgAEEEakGcu8AAQY7AwABBBCACQQxqQay7wAAQwwELIAJBEGokAAvBAQECfyMAQRBrIgIkAAJ/AkACQAJAQQEgAC0AAEECayIDIANB/wFxQQNPG0H/AXFBAWsOAgECAAsgAiAAQQFqNgIEIAFBtPvAAEEZQZDfwABBAyACQQRqQfjawAAQyQEMAgsgAiAANgIIIAFBqN/AAEEMIAJBCGpBmN/AABB/DAELIAIgAEEIajYCDCABQc37wABBDkGw58AAQQQgAEEEakGM3sAAQd7iwABBBCACQQxqQfjawAAQwwELIAJBEGokAAvBAQECfyMAQRBrIgIkAAJ/AkACQAJAQQEgAC0AAEECayIDIANB/wFxQQNPG0H/AXFBAWsOAgECAAsgAiAAQQFqNgIEIAFByKHBAEEZQdSHwQBBAyACQQRqQcCGwQAQyQEMAgsgAiAANgIIIAFB7IfBAEEMIAJBCGpB3IfBABB/DAELIAIgAEEIajYCDCABQeGhwQBBDkG3jcEAQQQgAEEEakHohcEAQaKLwQBBBCACQQxqQcCGwQAQwwELIAJBEGokAAuzAQEDfyABKAIMIQICQAJAAkACQAJAAkAgASgCBA4CAAECCyACDQFBASEDQQAhAUEBIQIMAwsgAkUNAQsgACABEGgPCyABKAIAIgIoAgQiAUEASA0BIAIoAgAhAyABRQRAQQEhAkEAIQEMAQtBheXCAC0AABpBASEEIAFBARD1AyICRQ0BCyACIAMgARA7IQIgACABNgIIIAAgAjYCBCAAIAE2AgAPCyAEIAFBlIHAABDXAwALswEBA38gASgCDCECAkACQAJAAkACQAJAIAEoAgQOAgABAgsgAg0BQQEhA0EAIQFBASECDAMLIAJFDQELIAAgARBoDwsgASgCACICKAIEIgFBAEgNASACKAIAIQMgAUUEQEEBIQJBACEBDAELQYXlwgAtAAAaQQEhBCABQQEQ9QMiAkUNAQsgAiADIAEQOyECIAAgATYCCCAAIAI2AgQgACABNgIADwsgBCABQYiJwAAQ1wMAC7YBAQJ/IwBBEGsiAiQAAn8CQAJAAkACQCAAKAIAIgAtAAAiA0EDa0EAIANBBGtB/wFxQQNJG0EBaw4DAQIDAAsgAiAANgIEIAFBnJTBAEEJIAJBBGpBjJTBABB/DAMLIAFBpZTBAEESEOUDDAILIAIgAEEBajYCCCABQciUwQBBDiACQQhqQbiUwQAQfwwBCyACIABBBGo2AgwgAUHolMEAQQ4gAkEMakHYlMEAEH8LIAJBEGokAAuxAQECfyMAQRBrIgIkAAJ/AkACQAJAAkAgAC0AACIDQQNrQQAgA0EEa0H/AXFBA0kbQQFrDgMBAgMACyACIAA2AgQgAUGMqMAAQQkgAkEEakHknsAAEH8MAwsgAUGVqMAAQRIQ5QMMAgsgAiAAQQFqNgIIIAFBuKjAAEEOIAJBCGpBqKjAABB/DAELIAIgAEEEajYCDCABQdiowABBDiACQQxqQciowAAQfwsgAkEQaiQAC7EBAQJ/IwBBEGsiAiQAAn8CQAJAAkACQCAALQAAIgNBA2tBACADQQRrQf8BcUEDSRtBAWsOAwECAwALIAIgADYCBCABQaDLwABBCSACQQRqQfjBwAAQfwwDCyABQanLwABBEhDlAwwCCyACIABBAWo2AgggAUHMy8AAQQ4gAkEIakG8y8AAEH8MAQsgAiAAQQRqNgIMIAFB7MvAAEEOIAJBDGpB3MvAABB/CyACQRBqJAALsQEBAn8jAEEQayICJAACfwJAAkACQAJAIAAtAAAiA0EDa0EAIANBBGtB/wFxQQNJG0EBaw4DAQIDAAsgAiAANgIEIAFBiO7AAEEJIAJBBGpBmNzAABB/DAMLIAFBke7AAEESEOUDDAILIAIgAEEBajYCCCABQbTuwABBDiACQQhqQaTuwAAQfwwBCyACIABBBGo2AgwgAUHU7sAAQQ4gAkEMakHE7sAAEH8LIAJBEGokAAuxAQECfyMAQRBrIgIkAAJ/AkACQAJAAkAgAC0AACIDQQNrQQAgA0EEa0H/AXFBA0kbQQFrDgMBAgMACyACIAA2AgQgAUGclMEAQQkgAkEEakGMlMEAEH8MAwsgAUGllMEAQRIQ5QMMAgsgAiAAQQFqNgIIIAFByJTBAEEOIAJBCGpBuJTBABB/DAELIAIgAEEEajYCDCABQeiUwQBBDiACQQxqQdiUwQAQfwsgAkEQaiQAC6YBAQF/IwBBQGoiAiQAIAAoAgAhACACQgA3AzggAkE4aiAAJQEQGiACIAIoAjwiADYCNCACIAIoAjg2AjAgAiAANgIsIAIgAkEsaq1CgICAgNA9hDcDICACQQI2AgwgAkG0kMIANgIIIAJCATcCFCACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRSACKAIsIgEEQCACKAIwIAFBARCnBAsgAkFAayQAC5YBAQJ/IwBBEGsiAiQAIAAoAgAhACACQQRqIgMgARCnAyACIAA2AgwgAyACQQxqQfjawAAQggEgAiAAQQFqNgIMIAJBBGogAkEMakH42sAAEIIBIAIgAEECajYCDCACQQRqIAJBDGpB+NrAABCCASACIABBA2o2AgwgAkEEaiACQQxqQfjawAAQggEgAxCgAyACQRBqJAALlgEBAn8jAEEQayICJAAgACgCACEAIAJBBGoiAyABEKcDIAIgADYCDCADIAJBDGpB3PfBABCCASACIABBAWo2AgwgAkEEaiACQQxqQdz3wQAQggEgAiAAQQJqNgIMIAJBBGogAkEMakHc98EAEIIBIAIgAEEDajYCDCACQQRqIAJBDGpB3PfBABCCASADEKADIAJBEGokAAujAQECfyMAQSBrIgMkAAJAIAFFBEBBAUEAIAIQ1QQhAAwBCyADIAE2AgwgAyAANgIIIANBEGogA0EIahBTIAMoAhAiAQRAA0AgAygCFCEEIAMoAhxFBEAgASAEIAIQ1QQhAAwDC0EBIQAgAiABIAQQ5QMNAiACQf3/AxDrAw0CIANBEGogA0EIahBTIAMoAhAiAQ0ACwtBACEACyADQSBqJAAgAAuLAQEBfwJAIAJBAE4EQAJ/IAMoAgQEQAJAIAMoAggiBEUEQAwBCyADKAIAIAQgASACEN8DDAILCyABIAJFDQAaQYXlwgAtAAAaIAIgARD1AwsiAwRAIAAgAjYCCCAAIAM2AgQgAEEANgIADwsgACACNgIIIAAgATYCBAwBCyAAQQA2AgQLIABBATYCAAudAQEEfwJAQQggACgCACIAKAIAIgJBgICAgHhzIgEgAUEITxsiAUEBa0EHSQ0AIAEEQCACRQ0BIAAoAgQgAkEBEKcEDAELIAAtAARBA0cNACAAKAIIIgIoAgAhASACQQRqKAIAIgQoAgAiAwRAIAEgAxEDAAsgBCgCBCIDBEAgASADIAQoAggQpwQLIAJBDEEEEKcECyAAQQxBBBCnBAu1AQECfyMAQRBrIgIkAAJ/AkACQAJAAkBBAyAAKAIAIgAoAgBBB2siAyADQQNPG0EBaw4DAQIDAAsgAUH4nMEAQRQQ5QMMAwsgAUGMncEAQR0Q5QMMAgsgAiAAQQRqNgIIIAFBnJTBAEEJQbydwQBBBCAAQQxqQaydwQBBwJ3BAEEGIAJBCGpBjJTBABDDAQwBCyACIAA2AgwgAUHYncEAQRQgAkEMakHIncEAEH8LIAJBEGokAAu3AQECfwJAAn8CQAJAAkACQAJAAkACQAJAIAEoAgAOCgABCQIDBAUJBgcJCyABQQRqIQJB+KTAACEDDAgLIAFBCGohAkG0pcAAIQMMBwsgAUEEaiECQfClwAAhAwwGCyABQQRqIQJBrKbAACEDDAULIAFBBGohAkHopsAAIQMMBAsgAUEEagwCCyABQQhqIQJBtKXAACEDDAILIAFBBGoLIQJBqJbAACEDCyAAIAM2AgQgACACNgIAC7cBAQJ/AkACfwJAAkACQAJAAkACQAJAAkAgASgCAA4KAAEJAgMEBQkGBwkLIAFBBGohAkGMyMAAIQMMCAsgAUEIaiECQcjIwAAhAwwHCyABQQRqIQJBhMnAACEDDAYLIAFBBGohAkHAycAAIQMMBQsgAUEEaiECQfzJwAAhAwwECyABQQRqDAILIAFBCGohAkHIyMAAIQMMAgsgAUEEagshAkHUt8AAIQMLIAAgAzYCBCAAIAI2AgALtwEBAn8CQAJ/AkACQAJAAkACQAJAAkACQCABKAIADgoAAQkCAwQFCQYHCQsgAUEEaiECQbjqwAAhAwwICyABQQhqIQJB9OrAACEDDAcLIAFBBGohAkGw68AAIQMMBgsgAUEEaiECQezrwAAhAwwFCyABQQRqIQJBqOzAACEDDAQLIAFBBGoMAgsgAUEIaiECQfTqwAAhAwwCCyABQQRqCyECQeTswAAhAwsgACADNgIEIAAgAjYCAAu3AQECfwJAAn8CQAJAAkACQAJAAkACQAJAIAEoAgAOCgABCQIDBAUJBgcJCyABQQRqIQJBvJDBACEDDAgLIAFBCGohAkH4kMEAIQMMBwsgAUEEaiECQbSRwQAhAwwGCyABQQRqIQJB8JHBACEDDAULIAFBBGohAkGsksEAIQMMBAsgAUEEagwCCyABQQhqIQJB+JDBACEDDAILIAFBBGoLIQJB6JLBACEDCyAAIAM2AgQgACACNgIAC48BAQJ/IwBBEGsiAiQAIAJBBGoiAyABEKcDIAIgADYCDCADIAJBDGpB3PfBABCCASACIABBAWo2AgwgAkEEaiACQQxqQdz3wQAQggEgAiAAQQJqNgIMIAJBBGogAkEMakHc98EAEIIBIAIgAEEDajYCDCACQQRqIAJBDGpB3PfBABCCASADEKADIAJBEGokAAuwAQECfyMAQRBrIgIkAAJ/AkACQAJAAkBBAyAAKAIAQQdrIgMgA0EDTxtBAWsOAwECAwALIAFB6LDAAEEUEOUDDAMLIAFB/LDAAEEdEOUDDAILIAIgAEEEajYCCCABQYyowABBCUGsscAAQQQgAEEMakGcscAAQbCxwABBBiACQQhqQeSewAAQwwEMAQsgAiAANgIMIAFByLHAAEEUIAJBDGpBuLHAABB/CyACQRBqJAALsAEBAn8jAEEQayICJAACfwJAAkACQAJAQQMgACgCAEEHayIDIANBA08bQQFrDgMBAgMACyABQfzTwABBFBDlAwwDCyABQZDUwABBHRDlAwwCCyACIABBBGo2AgggAUGgy8AAQQlBwNTAAEEEIABBDGpBsNTAAEHE1MAAQQYgAkEIakH4wcAAEMMBDAELIAIgADYCDCABQdzUwABBFCACQQxqQczUwAAQfwsgAkEQaiQAC7ABAQJ/IwBBEGsiAiQAAn8CQAJAAkACQEEDIAAoAgBBB2siAyADQQNPG0EBaw4DAQIDAAsgAUHk9sAAQRQQ5QMMAwsgAUH49sAAQR0Q5QMMAgsgAiAAQQRqNgIIIAFBiO7AAEEJQaj3wABBBCAAQQxqQZj3wABBrPfAAEEGIAJBCGpBmNzAABDDAQwBCyACIAA2AgwgAUHE98AAQRQgAkEMakG098AAEH8LIAJBEGokAAuwAQECfyMAQRBrIgIkAAJ/AkACQAJAAkBBAyAAKAIAQQdrIgMgA0EDTxtBAWsOAwECAwALIAFB+JzBAEEUEOUDDAMLIAFBjJ3BAEEdEOUDDAILIAIgAEEEajYCCCABQZyUwQBBCUG8ncEAQQQgAEEMakGsncEAQcCdwQBBBiACQQhqQYyUwQAQwwEMAQsgAiAANgIMIAFB2J3BAEEUIAJBDGpByJ3BABB/CyACQRBqJAALowEBAn8jAEEgayIBJAACQCAAKAIEIgJBA0YgAkECSXINAAJAAkAgAC0AGEEBaw4CAgABCyABQQE2AgggAUH0gsAANgIEIAFCADcCECABIAFBHGo2AgwgAUEEakH4g8AAEKQDAAsgAEEIahCpASAAKAIIIgJFDQAgACgCDCACQQxsQQQQpwQLIAAoAhwiAgRAIAAoAiAgAkEBEKcECyABQSBqJAALkgECA38BfiABKAIAIgUtACUiA0UEQCAAQQI6AAAPCwJ+IAMgAi0AFCIETQRAIAIgBCADayIEOgAUQn8gA62GQn+FIAIpAwggBEE/ca2IgwwBCyACIAMQWwshBiAFKAIIIgMgBqciAksEQCABIAUoAgQgAkEDdGopAgA3AgQgAEEDOgAADwsgAiADQayAwgAQrQIAC5IBAQN/IwBBIGsiAyQAIAMgACgCACIFENwEIgA2AgAgAyACNgIEIAAgAkYEQBDtAyIEENwDIgAgASACENYDIQEgBEGEAU8EQCAEEMYBCyAAQYQBTwRAIAAQxgELIAUgAUEAEKYEIAFBhAFPBEAgARDGAQsgA0EgaiQADwsgA0EANgIIIAMgA0EEaiADQQhqEIwDAAukAQECfyMAQSBrIgEkAAJAIAAoAgRBAkcNAAJAAkAgAC0AGEEBaw4CAgABCyABQQE2AgggAUH0gsAANgIEIAFCADcCECABIAFBHGo2AgwgAUEEakH4g8AAEKQDAAsgAEEIahCpASAAKAIIIgJFDQAgACgCDCACQQxsQQQQpwQLIAAoAhwiAgRAIAAoAiAgAkEBEKcECyAAQShBBBCnBCABQSBqJAALpAEBAn8jAEEgayIBJAACQCAAKAIEQQJHDQACQAJAIAAtABhBAWsOAgIAAQsgAUEBNgIIIAFBtP7AADYCBCABQgA3AhAgASABQRxqNgIMIAFBBGpBuP/AABCkAwALIABBCGoQqQEgACgCCCICRQ0AIAAoAgwgAkEMbEEEEKcECyAAKAIcIgIEQCAAKAIgIAJBARCnBAsgAEEoQQQQpwQgAUEgaiQAC4sBAgJ/AX4CfkIAIAAtAAgiAkUNABogAiABLQAUIgNNBEAgASADIAJrIgM6ABRCfyACrYZCf4UgASkDCCADQT9xrYiDDAELIAEgAhBbCyEEIAAoAgQgBKdqIgEgACgCACICKAIIIgNJBEAgACACKAIEIAFBA3RqKQIANwIEDwsgASADQbyAwgAQrQIAC6MBAQJ/IwBBEGsiAiQAAn8CQAJAAkAgACgCACIAKAIAIgNBAWtBACADQQJPG0EBaw4CAQIACyACIAA2AgggAUGkmcEAQREgAkEIakGUmcEAEH8MAgsgAiAAQQhqNgIMIAFBtZnBAEEZQc6ZwQBBBiAAQQRqQeiFwQBBt43BAEEEIAJBDGpB9IbBABDDAQwBCyABQfyOwQBBChDlAwsgAkEQaiQAC6MBAQJ/IwBBEGsiAiQAAn8CQAJAAkAgACgCACIAKAIAIgNBAWtBACADQQJPG0EBaw4CAQIACyACIAA2AgggAUGA18EAQREgAkEIakHw1sEAEH8MAgsgAiAAQQhqNgIMIAFBkdfBAEEZQarXwQBBBiAAQQRqQfTMwQBBsNfBAEEEIAJBDGpBuM3BABDDAQwBCyABQbTXwQBBChDlAwsgAkEQaiQAC5sBAQJ/IwBBIGsiASQAAkAgACgCBEECRw0AAkACQCAALQAYQQFrDgICAAELIAFBATYCCCABQbT+wAA2AgQgAUIANwIQIAEgAUEcajYCDCABQQRqQbj/wAAQpAMACyAAQQhqEKkBIAAoAggiAkUNACAAKAIMIAJBDGxBBBCnBAsgACgCHCICBEAgACgCICACQQEQpwQLIAFBIGokAAupAQECfyMAQSBrIgEkAAJAAkACQAJAAkBBkOXCAC0AAA4CAAECC0GQ5cIAQQE6AAALIABBATYCAAwBC0GR5cIALQAAIQJBkeXCAEEBOgAAIAEgAjoAByACQQFGDQEgAEEAOgAUIABBADYCAEGR5cIAQQA6AAALIAFBIGokAA8LIAFCADcCFCABQoGAgIDAADcCDCABQbCfwgA2AgggAUEHaiABQQhqEIoDAAuoAQEDfyMAQRBrIgIkAEHencIAIQNBEyEEAkACQAJAAkAgAS0AAEEBaw4DAgABAwsgASgCBCIBKAIEIQQgASgCACEDDAILIAJBCGogASgCBCIBKAIAIAEoAgQoAiARAQAgAigCDCEEIAIoAgghAwwBCyABLQABQQJ0IgFB9KnCAGooAgAhAyABQcyowgBqKAIAIQQLIAAgBDYCBCAAIAM2AgAgAkEQaiQAC5IBAQR/IwBBEGsiAiQAQQEhBAJAIAEoAhwiA0EnIAEoAiAiBSgCECIBEQAADQAgAkEEaiAAKAIAQYECEDkCQCACLQAEQYABRgRAIAMgAigCCCABEQAARQ0BDAILIAMgAi0ADiIAIAJBBGpqIAItAA8gAGsgBSgCDBECAA0BCyADQScgAREAACEECyACQRBqJAAgBAueAQECfyMAQRBrIgIkAAJ/AkACQAJAIAAoAgAiA0EBa0EAIANBAk8bQQFrDgIBAgALIAIgADYCCCABQZStwABBESACQQhqQYStwAAQfwwCCyACIABBCGo2AgwgAUGlrcAAQRlBvq3AAEEGIABBBGpBiJjAAEHzocAAQQQgAkEMakHMmMAAEMMBDAELIAFBuKPAAEEKEOUDCyACQRBqJAALngEBAn8jAEEQayICJAACfwJAAkACQCAAKAIAIgNBAWtBACADQQJPG0EBaw4CAQIACyACIAA2AgggAUGo0MAAQREgAkEIakGY0MAAEH8MAgsgAiAAQQhqNgIMIAFBudDAAEEZQdLQwABBBiAAQQRqQZy7wABBh8XAAEEEIAJBDGpB4LvAABDDAQwBCyABQczGwABBChDlAwsgAkEQaiQAC54BAQJ/IwBBEGsiAiQAAn8CQAJAAkAgACgCACIDQQFrQQAgA0ECTxtBAWsOAgECAAsgAiAANgIIIAFBkPPAAEERIAJBCGpBgPPAABB/DAILIAIgAEEIajYCDCABQaHzwABBGUG688AAQQYgAEEEakGM3sAAQbDnwABBBCACQQxqQfjcwAAQwwEMAQsgAUH46MAAQQoQ5QMLIAJBEGokAAueAQECfyMAQRBrIgIkAAJ/AkACQAJAIAAoAgAiA0EBa0EAIANBAk8bQQFrDgIBAgALIAIgADYCCCABQaSZwQBBESACQQhqQZSZwQAQfwwCCyACIABBCGo2AgwgAUG1mcEAQRlBzpnBAEEGIABBBGpB6IXBAEG3jcEAQQQgAkEMakH0hsEAEMMBDAELIAFB/I7BAEEKEOUDCyACQRBqJAALmwEBAX8jAEEQayICJAACfwJAAkACQCAAKAIAIgAtAABBAWsOAgECAAsgAiAAQQFqNgIEIAFB5JjBAEELQdSHwQBBAyACQQRqQdSYwQAQyQEMAgsgAiAAQQRqNgIIIAFB8IvBAEENIAJBCGpB4IvBABB/DAELIAIgAEEEajYCDCABQYCZwQBBESACQQxqQfCYwQAQfwsgAkEQaiQAC5sBAQF/IwBBEGsiAiQAAn8CQAJAAkAgACgCACIALQAAQQFrDgIBAgALIAIgAEEBajYCBCABQeTTwQBBC0GLzsEAQQMgAkEEakHU08EAEMkBDAILIAIgAEEEajYCCCABQYDUwQBBDSACQQhqQfDTwQAQfwwBCyACIABBBGo2AgwgAUGg1MEAQREgAkEMakGQ1MEAEH8LIAJBEGokAAuEAQEDfwJ/AkAgACgCACIBRQ0AA0ACQCAAKAIIIgMgACgCBE8NACABIANqLQAAQcUARw0AIAAgA0EBajYCCAwCCwJAIAJFDQAgACgCECIBRQ0AQfW5wgBBAiABENUERQ0AQQEPC0EBIABBARAgDQIaIAJBAWshAiAAKAIAIgENAAsLQQALC5YBAQJ/IwBBIGsiASQAAkAgACgCBEECRw0AAkACQCAALQAYQQFrDgICAAELIAFBATYCCCABQbT+wAA2AgQgAUIANwIQIAEgAUEcajYCDCABQQRqQbj/wAAQpAMACyAAQQhqEKkBIAAoAggiAkUNACAAKAIMIAJBDGxBBBCnBAsgAEEgahBUIABBwABBCBCnBCABQSBqJAALiAEBAX8jAEEwayICJAACfyAALQAAQQJHBEAgAiAANgIMIAJBATYCFCACQfCnwQA2AhAgAkIBNwIcIAIgAkEMaq1CgICAgJA4hDcDKCACIAJBKGo2AhggASgCHCABKAIgIAJBEGoQRQwBCyABKAIcQdTFwQBBJCABKAIgKAIMEQIACyACQTBqJAALdwEDfyMAQYABayIDJAAgAC0AACEEQQAhAANAIAAgA2pB/wBqIARBD3EiAkEwciACQTdqIAJBCkkbOgAAIABBAWshACAEIgJBBHYhBCACQQ9LDQALIAFBAUGPxMIAQQIgACADakGAAWpBACAAaxA1IANBgAFqJAALeAEDfyMAQYABayIDJAAgAC0AACEEQQAhAANAIAAgA2pB/wBqIARBD3EiAkEwciACQdcAaiACQQpJGzoAACAAQQFrIQAgBCICQQR2IQQgAkEPSw0ACyABQQFBj8TCAEECIAAgA2pBgAFqQQAgAGsQNSADQYABaiQAC3kCAX4CfyMAQYABayIEJAAgACkDACECQQAhAANAIAAgBGpB/wBqIAKnQQ9xIgNBMHIgA0HXAGogA0EKSRs6AAAgAEEBayEAIAJCD1YgAkIEiCECDQALIAFBAUGPxMIAQQIgACAEakGAAWpBACAAaxA1IARBgAFqJAALlgEBAX8jAEEQayICJAACfwJAAkACQCAALQAAQQFrDgIBAgALIAIgAEEBajYCBCABQdSswABBC0GsmcAAQQMgAkEEakHErMAAEMkBDAILIAIgAEEEajYCCCABQaygwABBDSACQQhqQZygwAAQfwwBCyACIABBBGo2AgwgAUHwrMAAQREgAkEMakHgrMAAEH8LIAJBEGokAAuWAQEBfyMAQRBrIgIkAAJ/AkACQAJAIAAtAABBAWsOAgECAAsgAiAAQQFqNgIEIAFB6M/AAEELQcC8wABBAyACQQRqQdjPwAAQyQEMAgsgAiAAQQRqNgIIIAFBwMPAAEENIAJBCGpBsMPAABB/DAELIAIgAEEEajYCDCABQYTQwABBESACQQxqQfTPwAAQfwsgAkEQaiQAC5YBAQF/IwBBEGsiAiQAAn8CQAJAAkAgAC0AAEEBaw4CAQIACyACIABBAWo2AgQgAUHQ8sAAQQtBkN/AAEEDIAJBBGpBwPLAABDJAQwCCyACIABBBGo2AgggAUH85cAAQQ0gAkEIakHs5cAAEH8MAQsgAiAAQQRqNgIMIAFB7PLAAEERIAJBDGpB3PLAABB/CyACQRBqJAALlgEBAX8jAEEQayICJAACfwJAAkACQCAALQAAQQFrDgIBAgALIAIgAEEBajYCBCABQeSYwQBBC0HUh8EAQQMgAkEEakHUmMEAEMkBDAILIAIgAEEEajYCCCABQfCLwQBBDSACQQhqQeCLwQAQfwwBCyACIABBBGo2AgwgAUGAmcEAQREgAkEMakHwmMEAEH8LIAJBEGokAAtyAQN/IwBBgAFrIgQkACAAKAIAIQADQCACIARqQf8AaiAAQQ9xIgNBMHIgA0HXAGogA0EKSRs6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUGPxMIAQQIgAiAEakGAAWpBACACaxA1IARBgAFqJAALcQEDfyMAQYABayIEJAAgACgCACEAA0AgAiAEakH/AGogAEEPcSIDQTByIANBN2ogA0EKSRs6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUGPxMIAQQIgAiAEakGAAWpBACACaxA1IARBgAFqJAALdwECfyMAQRBrIgIkACAAKAIAIgBBCGooAgAhAyAAQQRqKAIAIQAgAkEEaiABEKcDIAMEQCADQQJ0IQEDQCACIAA2AgwgAkEEaiACQQxqQejawAAQggEgAEEEaiEAIAFBBGsiAQ0ACwsgAkEEahCgAyACQRBqJAALmAEBAn8jAEEQayICJAAgACgCACIAQQRqIQMCfyAALQAARQRAIAIgAEEBajYCCCABQdCGwQBBC0HbhsEAQRIgA0HohcEAQe2GwQBBBSACQQhqQcCGwQAQwwEMAQsgAiAAQQhqNgIMIAFBhIfBAEEWQZqHwQBBCSADQeiFwQBBo4fBAEEJIAJBDGpB9IbBABDDAQsgAkEQaiQAC5kBAQN/IwBBEGsiAiQAIAAoAgAiAEEIaiEDIABBBGohBAJ/IAAoAgBFBEAgAiADNgIIIAFBiIvBAEEaQdSHwQBBAyAEQeiFwQBBoovBAEEEIAJBCGpB9IbBABDDAQwBCyACIAM2AgwgAUGmi8EAQQxBsovBAEEGIARB6IXBAEG4i8EAQQcgAkEMakH0hsEAEMMBCyACQRBqJAALmAEBAn8jAEEQayICJAAgACgCACIAQQRqIQMCfyAALQAARQRAIAIgAEEBajYCCCABQZTNwQBBC0GfzcEAQRIgA0H0zMEAQbHNwQBBBSACQQhqQYTNwQAQwwEMAQsgAiAAQQhqNgIMIAFByM3BAEEWQd7NwQBBCSADQfTMwQBB583BAEEJIAJBDGpBuM3BABDDAQsgAkEQaiQAC5kBAQN/IwBBEGsiAiQAIAAoAgAiAEEIaiEDIABBBGohBAJ/IAAoAgBFBEAgAiADNgIIIAFBndPBAEEaQYvOwQBBAyAEQfTMwQBBt9PBAEEEIAJBCGpBuM3BABDDAQwBCyACIAM2AgwgAUG708EAQQxBx9PBAEEGIARB9MzBAEHN08EAQQcgAkEMakG4zcEAEMMBCyACQRBqJAALdwECfyMAQRBrIgIkACAAKAIAIgBBCGooAgAhAyAAQQRqKAIAIQAgAkEEaiABEKcDIAMEQCADQQJ0IQEDQCACIAA2AgwgAkEEaiACQQxqQez3wQAQggEgAEEEaiEAIAFBBGsiAQ0ACwsgAkEEahCgAyACQRBqJAALewEBfyMAQTBrIgIkACACIABBBGo2AgAgAiAANgIEIAJBAzYCDCACQZzDwQA2AgggAkICNwIUIAIgAkEEaq1CgICAgPA1hDcDKCACIAKtQoCAgIDgNIQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEUgAkEwaiQAC3oBAX8jAEEgayICJAACfyAAKAIAQYCAgIB4RwRAIAEgACgCBCAAKAIIEOUDDAELIAJBEGogACgCDCgCACIAQQhqKQIANwMAIAJBGGogAEEQaikCADcDACACIAApAgA3AwggASgCHCABKAIgIAJBCGoQRQsgAkEgaiQAC44BAQJ/IwBBIGsiAyQAAkAgACgCBEECRw0AAkACQCAALQAYQQFrDgICAAELIANBATYCCCADQfSCwAA2AgQgA0IANwIQIAMgA0EcajYCDCADQQRqQfiDwAAQpAMACyAAQQhqEKkBIAAoAggiBEUNACAAKAIMIARBDGxBBBCnBAsgAEEoQQQQpwQgA0EgaiQAC44BAQJ/IwBBIGsiASQAAkAgACgCBEECRw0AAkACQCAALQAYQQFrDgICAAELIAFBATYCCCABQbT+wAA2AgQgAUIANwIQIAEgAUEcajYCDCABQQRqQbj/wAAQpAMACyAAQQhqEKkBIAAoAggiAkUNACAAKAIMIAJBDGxBBBCnBAsgAEEkQQQQpwQgAUEgaiQAC44BAQJ/IwBBIGsiAyQAAkAgACgCBEECRw0AAkACQCAALQAYQQFrDgICAAELIANBATYCCCADQbT+wAA2AgQgA0IANwIQIAMgA0EcajYCDCADQQRqQbj/wAAQpAMACyAAQQhqEKkBIAAoAggiBEUNACAAKAIMIARBDGxBBBCnBAsgAEEkQQQQpwQgA0EgaiQAC48BAQJ/IwBBIGsiAyQAAkAgACgCBEECRw0AAkACQCAALQAYQQFrDgICAAELIANBATYCCCADQbT+wAA2AgQgA0IANwIQIAMgA0EcajYCDCADQQRqQbj/wAAQpAMACyAAQQhqEKkBIAAoAggiBEUNACAAKAIMIARBDGxBBBCnBAsgAEHAAEEIEKcEIANBIGokAAuOAQECfyMAQSBrIgMkAAJAIAAoAgRBAkcNAAJAAkAgAC0AGEEBaw4CAgABCyADQQE2AgggA0G0/sAANgIEIANCADcCECADIANBHGo2AgwgA0EEakG4/8AAEKQDAAsgAEEIahCpASAAKAIIIgRFDQAgACgCDCAEQQxsQQQQpwQLIABBKEEEEKcEIANBIGokAAuTAQECfyMAQRBrIgIkACAAQQRqIQMCfyAALQAARQRAIAIgAEEBajYCCCABQaiYwABBC0GzmMAAQRIgA0GImMAAQcWYwABBBSACQQhqQZiYwAAQwwEMAQsgAiAAQQhqNgIMIAFB3JjAAEEWQfKYwABBCSADQYiYwABB+5jAAEEJIAJBDGpBzJjAABDDAQsgAkEQaiQAC5QBAQN/IwBBEGsiAiQAIABBCGohAyAAQQRqIQQCfyAAKAIARQRAIAIgAzYCCCABQeCcwABBGkGsmcAAQQMgBEGImMAAQfqcwABBBCACQQhqQcyYwAAQwwEMAQsgAiADNgIMIAFB/pzAAEEMQYqdwABBBiAEQYiYwABBkJ3AAEEHIAJBDGpBzJjAABDDAQsgAkEQaiQAC4wBAQJ/IwBBIGsiASQAAkAgACgCBEECRw0AAkACQCAALQAYQQFrDgICAAELIAFBATYCCCABQbT+wAA2AgQgAUIANwIQIAEgAUEcajYCDCABQQRqQbj/wAAQpAMACyAAQQhqEKkBIAAoAggiAkUNACAAKAIMIAJBDGxBBBCnBAsgAEEgahBUIAFBIGokAAuTAQECfyMAQRBrIgIkACAAQQRqIQMCfyAALQAARQRAIAIgAEEBajYCCCABQby7wABBC0HHu8AAQRIgA0Gcu8AAQdm7wABBBSACQQhqQay7wAAQwwEMAQsgAiAAQQhqNgIMIAFB8LvAAEEWQYa8wABBCSADQZy7wABBj7zAAEEJIAJBDGpB4LvAABDDAQsgAkEQaiQAC5QBAQN/IwBBEGsiAiQAIABBCGohAyAAQQRqIQQCfyAAKAIARQRAIAIgAzYCCCABQfS/wABBGkHAvMAAQQMgBEGcu8AAQY7AwABBBCACQQhqQeC7wAAQwwEMAQsgAiADNgIMIAFBksDAAEEMQZ7AwABBBiAEQZy7wABBpMDAAEEHIAJBDGpB4LvAABDDAQsgAkEQaiQAC5MBAQJ/IwBBEGsiAiQAIABBBGohAwJ/IAAtAABFBEAgAiAAQQFqNgIIIAFBnN7AAEELQafewABBEiADQYzewABBud7AAEEFIAJBCGpB+NrAABDDAQwBCyACIABBCGo2AgwgAUG+3sAAQRZB1N7AAEEJIANBjN7AAEHd3sAAQQkgAkEMakH43MAAEMMBCyACQRBqJAALlAEBA38jAEEQayICJAAgAEEIaiEDIABBBGohBAJ/IAAoAgBFBEAgAiADNgIIIAFBxOLAAEEaQZDfwABBAyAEQYzewABB3uLAAEEEIAJBCGpB+NzAABDDAQwBCyACIAM2AgwgAUHi4sAAQQxB7uLAAEEGIARBjN7AAEH04sAAQQcgAkEMakH43MAAEMMBCyACQRBqJAALkwEBAn8jAEEQayICJAAgAEEEaiEDAn8gAC0AAEUEQCACIABBAWo2AgggAUHQhsEAQQtB24bBAEESIANB6IXBAEHthsEAQQUgAkEIakHAhsEAEMMBDAELIAIgAEEIajYCDCABQYSHwQBBFkGah8EAQQkgA0HohcEAQaOHwQBBCSACQQxqQfSGwQAQwwELIAJBEGokAAuUAQEDfyMAQRBrIgIkACAAQQhqIQMgAEEEaiEEAn8gACgCAEUEQCACIAM2AgggAUGIi8EAQRpB1IfBAEEDIARB6IXBAEGii8EAQQQgAkEIakH0hsEAEMMBDAELIAIgAzYCDCABQaaLwQBBDEGyi8EAQQYgBEHohcEAQbiLwQBBByACQQxqQfSGwQAQwwELIAJBEGokAAtJAQN+IAAgAUL/////D4MiAkI+fiIDQgAiAiABQiCIQj5+fCIBQiCGfCIENwMAIAAgAyAEVq0gASACVK1CIIYgAUIgiIR8NwMIC5YBAQJ/AkACQAJAAkACQAJAAkAgASgCAEEBaw4GBgECAwQFAAsgAUEEaiECQaiWwAAhAwwFCyABQQRqIQJBzK7AACEDDAQLIAFBBGohAkGIr8AAIQMMAwsgAUEEaiECQcSvwAAhAwwCCyABQQRqIQJBgLDAACEDDAELIAFBBGohAkG8sMAAIQMLIAAgAzYCBCAAIAI2AgALlgEBAn8CQAJAAkACQAJAAkACQCABKAIAQQFrDgYGAQIDBAUACyABQQRqIQJB1LfAACEDDAULIAFBBGohAkHg0cAAIQMMBAsgAUEEaiECQZzSwAAhAwwDCyABQQRqIQJB2NLAACEDDAILIAFBBGohAkGU08AAIQMMAQsgAUEEaiECQdDTwAAhAwsgACADNgIEIAAgAjYCAAuWAQECfwJAAkACQAJAAkACQAJAIAEoAgBBAWsOBgYBAgMEBQALIAFBBGohAkHk7MAAIQMMBQsgAUEEaiECQcj0wAAhAwwECyABQQRqIQJBhPXAACEDDAMLIAFBBGohAkHA9cAAIQMMAgsgAUEEaiECQfz1wAAhAwwBCyABQQRqIQJBuPbAACEDCyAAIAM2AgQgACACNgIAC5YBAQJ/AkACQAJAAkACQAJAAkAgASgCAEEBaw4GBgECAwQFAAsgAUEEaiECQeiSwQAhAwwFCyABQQRqIQJB3JrBACEDDAQLIAFBBGohAkGYm8EAIQMMAwsgAUEEaiECQdSbwQAhAwwCCyABQQRqIQJBkJzBACEDDAELIAFBBGohAkHMnMEAIQMLIAAgAzYCBCAAIAI2AgALfgEBfyMAQUBqIgUkACAFIAE2AgwgBSAANgIIIAUgAzYCFCAFIAI2AhAgBUECNgIcIAVB0MPCADYCGCAFQgI3AiQgBSAFQRBqrUKAgICAgMQAhDcDOCAFIAVBCGqtQoCAgICQxACENwMwIAUgBUEwajYCICAFQRhqIAQQpAMAC28BAX8jAEEwayICJAAgAiAAKAIANgIEIAJBAjYCDCACQbivwQA2AgggAkICNwIUIAIgAkEEaq1CgICAgIA2hDcDKCACQvSuwYAQNwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFIAJBMGokAAt8AQN/AkACQAJAQQMgACgCAEEHayIBIAFBA08bQQJrDgIBAAILIAAQpAEMAQsgAC0ABEEDRw0AIAAoAggiACgCACEBIABBBGooAgAiAygCACICBEAgASACEQMACyADKAIEIgIEQCABIAIgAygCCBCnBAsgAEEMQQQQpwQLC4UBAQJ/IwBBIGsiASQAAkAgACgCBEECRw0AAkACQCAALQAYQQFrDgICAAELIAFBATYCCCABQbT+wAA2AgQgAUIANwIQIAEgAUEcajYCDCABQQRqQbj/wAAQpAMACyAAQQhqEKkBIAAoAggiAkUNACAAKAIMIAJBDGxBBBCnBAsgAUEgaiQAC2wBAX8jAEEwayICJAAgAiAANgIEIAJBAjYCDCACQbivwQA2AgggAkICNwIUIAIgAkEEaq1CgICAgIA2hDcDKCACQvSuwYAQNwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFIAJBMGokAAt4AQN/AkAgACgCACIBQYCAgIB4RwRAIAFFDQEgACgCBCABQQEQpwQPCyAALQAEQQNHDQAgACgCCCIAKAIAIQEgAEEEaigCACIDKAIAIgIEQCABIAIRAwALIAMoAgQiAgRAIAEgAiADKAIIEKcECyAAQQxBBBCnBAsLcwECfwJAAn8CQAJAAkACQAJAAkAgAS0AAA4HAAcBAgMEBQcLIAFBBGoMBQsgAUEEagwECyABQQFqIQJB8KLAACEDDAQLIAFBBGoMAgsgAUEEagwBCyABQQRqCyECQaiWwAAhAwsgACADNgIEIAAgAjYCAAtzAQJ/AkACfwJAAkACQAJAAkACQCABLQAADgcABwECAwQFBwsgAUEEagwFCyABQQRqDAQLIAFBAWohAkGExsAAIQMMBAsgAUEEagwCCyABQQRqDAELIAFBBGoLIQJB1LfAACEDCyAAIAM2AgQgACACNgIAC3MBAn8CQAJ/AkACQAJAAkACQAJAIAEtAAAOBwAHAQIDBAUHCyABQQRqDAULIAFBBGoMBAsgAUEBaiECQbDowAAhAwwECyABQQRqDAILIAFBBGoMAQsgAUEEagshAkHk7MAAIQMLIAAgAzYCBCAAIAI2AgALcwECfwJAAn8CQAJAAkACQAJAAkAgAS0AAA4HAAcBAgMEBQcLIAFBBGoMBQsgAUEEagwECyABQQFqIQJBtI7BACEDDAQLIAFBBGoMAgsgAUEEagwBCyABQQRqCyECQeiSwQAhAwsgACADNgIEIAAgAjYCAAtlAQJ/IwBBEGsiAiQAIAAoAgQhAyAAKAIAIQAgAkEEaiABEKcDIAMEQANAIAIgADYCDCACQQRqIAJBDGpB8K3CABCCASAAQQFqIQAgA0EBayIDDQALCyACQQRqEKADIAJBEGokAAvxAQEEfyMAQRBrIgMkACAAKAIMIQICfwJAAkACQAJAIAAoAgQOAgABAgsgAg0BQQFBABCfAwwDCyACRQ0BCyADQQRqIgIgABBoIwBBIGsiBCQAIARBCGoiABDwAQJ/QYXlwgAtAAAaQShBBBD1AyIBBEAgAUGAu8AANgIAIAEgACkCADcCBCABIAIpAgA3AhwgAUEMaiAAQQhqKQIANwIAIAFBFGogAEEQaikCADcCACABQSRqIAJBCGooAgA2AgAgAQwBC0EEQSgQ0wQACyAEQSBqJAAMAQsgACgCACIAKAIAIAAoAgQQnwMLIANBEGokAAt8AQJ/AkACQAJAAkAgAC0AAA4CAwEACyAAKAIEIgFB+////wdqIgJBDU0gAkECR3ENAiABQYSAgIB4Sg0BIAFBg4CAgHhHDQIMAQsgACgCBCIBQYSAgIB4Sg0AIAFBg4CAgHhHDQELIAFFDQAgACgCCCABQQJ0QQQQpwQLC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQZzCwgA2AgggA0ICNwIUIANCgICAgBAiBCADrYQ3AyggAyAEIANBBGqthDcDICADIANBIGo2AhAgA0EIaiACEKQDAAttAQF/IAAtAAQhASAALQAFBEAgAAJ/QQEgAUEBcQ0AGiAAKAIAIgEtABRBBHFFBEAgASgCHEGHxMIAQQIgASgCICgCDBECAAwBCyABKAIcQYbEwgBBASABKAIgKAIMEQIACyIBOgAECyABQQFxC2QBAX8jAEEwayICJAAgAiAAKAIANgIMIAJBAjYCFCACQeSuwQA2AhAgAkIBNwIcIAIgAkEMaq1CgICAgOA0hDcDKCACIAJBKGo2AhggASgCHCABKAIgIAJBEGoQRSACQTBqJAALWgECfyAAKAIILQBkIgJFBEAgAEIANwMADwsgAiABLQAUIgNNBEAgASADIAJrIgM6ABQgAEJ/IAKthkJ/hSABKQMIIANBP3GtiIM3AwAPCyAAIAEgAhBbNwMAC2QBAX8jAEEQayIAJAACfyACKAIABEBB3KDCACEDQQkMAQsgAEEEaiACKAIEIAIoAggQPUHcoMIAIAAoAgggACgCBCICGyEDQQkgACgCDCACGwshAiADIAIgARDaASAAQRBqJAALZgAjAEEwayIAJABBhOXCAC0AAARAIABBAjYCDCAAQYyhwgA2AgggAEIBNwIUIAAgATYCLCAAIABBLGqtQoCAgIAQhDcDICAAIABBIGo2AhAgAEEIakG0ocIAEKQDAAsgAEEwaiQAC2EBAX8jAEEwayICJAAgAiAANgIMIAJBAjYCFCACQZymwQA2AhAgAkIBNwIcIAIgAkEMaq1CgICAgOA0hDcDKCACIAJBKGo2AhggASgCHCABKAIgIAJBEGoQRSACQTBqJAALYQEBfyMAQTBrIgIkACACIAA2AgwgAkECNgIUIAJB5K7BADYCECACQgE3AhwgAiACQQxqrUKAgICA4DSENwMoIAIgAkEoajYCGCABKAIcIAEoAiAgAkEQahBFIAJBMGokAAthAQF/IwBBMGsiAiQAIAIgADYCDCACQQE2AhQgAkHwp8EANgIQIAJCATcCHCACIAJBDGqtQoCAgICQOIQ3AyggAiACQShqNgIYIAEoAhwgASgCICACQRBqEEUgAkEwaiQAC18BAn8CQCAAKAIAIgFB7f///wdqIgJBCk0gAkEDR3ENACABRSABQfv///8HaiICQQ1NIAJBAkdxIAFBg4CAgHhHIAFBhICAgHhMcXJyDQAgACgCBCABQQJ0QQQQpwQLC1wBA38gAC0AACIBQQNLIAFBA0dyRQRAIAAoAgQiACgCACEBIABBBGooAgAiAygCACICBEAgASACEQMACyADKAIEIgIEQCABIAIgAygCCBCnBAsgAEEMQQQQpwQLC2sBAn9BqJbAACECAkACQAJAAkAgAS0AACIDQQNrQQAgA0EEa0H/AXFBA0kbQQFrDgMAAQIDC0EAIQEMAgsgAUEBaiEBQdStwAAhAgwBCyABQQRqIQFBkK7AACECCyAAIAI2AgQgACABNgIAC2gBA38CQAJAAkACQEEDIAEoAgBB7f///wdqIgQgBEELTxtBAmsOAwABAgMLIAFBBGohAkGcm8AAIQMMAgtB2LPAACEDIAEhAgwBCyABQQRqIQJBjLXAACEDCyAAIAM2AgQgACACNgIAC2sBAn9B1LfAACECAkACQAJAAkAgAS0AACIDQQNrQQAgA0EE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AX8jAEEQayICJAAgAiAANgIMIAFB8b3AAEEWQYe+wABBAyACQQxqQay7wAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBic7AAEEbQcC8wABBAyACQQxqQay7wAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBrODAAEERQb3gwABBBCACQQxqQZzgwAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBweDAAEEWQdfgwABBAyACQQxqQfjawAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFB8fDAAEEbQZDfwABBAyACQQxqQfjawAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFB8IjBAEERQYGJwQBBBCACQQxqQeCIwQAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBhYnBAEEWQZuJwQBBAyACQQxqQcCGwQAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBhZfBAEEbQdSHwQBBAyACQQxqQcCGwQAQyQEgAkEQaiQACzwBAX8jAEEQayICJAAgAkGQksIANgIMIAIgADYCCCACQQhqQZSSwgAgAkEMakGUksIAIAFB5J/CABBrAAs4AQF/IwBBEGsiAiQAIAIgADYCDCABQeywwgBBDUH5sMIAQQQgAkEMakHcsMIAEMkBIAJBEGokAAs5AQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIakGswsIAIANBDGpBrMLCACACQeyOwgAQawALMAEBfyMAQRBrIgIkACACQQhqIAAQ8wIgAigCCCABIAIoAgwoAhARAAAgAkEQaiQACzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEMUBDwsgACABEPwBDwsgACABEP0BCzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEK0EDwsgACABEIQCDwsgACABEIMCCzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEKkDDwsgACABEIQCDwsgACABEIMCCzMBAX8jAEEQayICJAAgAiAAKAIANgIMIAFB7IfBAEEMIAJBDGpB3IfBABB/IAJBEGokAAszAQF/IwBBEGsiAiQAIAIgACgCADYCDCABQejUwQBBDCACQQxqQdjUwQAQfyACQRBqJAALLQACQCAAIAEQrANFDQAgAARAQYXlwgAtAAAaIAAgARD1AyIBRQ0BCyABDwsACzcBAX8jAEEgayIBJAAgAUEANgIYIAFBATYCDCABQdzZwgA2AgggAUIENwIQIAFBCGogABCkAwALMwEBfyAAKAIAIgFBhICAgHhMIAFBg4CAgHhHcSABRXJFBEAgACgCBCABQQJ0QQQQpwQLCzABAX8jAEEQayICJAAgAiAANgIMIAFBxJnAAEEMIAJBDGpBtJnAABB/IAJBEGokAAsvACAAQZybwAA2AgQgACABIAFBACABLQAAQQJrQf8BcSIAQQFGGyAAQQJLGzYCAAswAQF/IwBBEGsiAiQAIAIgADYCDCABQdi8wABBDCACQQxqQci8wAAQfyACQRBqJAALLwAgAEGwvsAANgIEIAAgASABQQAgAS0AAEECa0H/AXEiAEEBRhsgAEECSxs2AgALMAEBfyMAQRBrIgIkACACIAA2AgwgAUGo38AAQQwgAkEMakGY38AAEH8gAkEQaiQACy8AIABBgOHAADYCBCAAIAEgAUEAIAEtAABBAmtB/wFxIgBBAUYbIABBAksbNgIACy8AIABBxInBADYCBCAAIAEgAUEAIAEtAABBAmtB/wFxIgBBAUYbIABBAksbNgIACzABAX8jAEEQayICJAAgAiAANgIMIAFB7IfBAEEMIAJBDGpB3IfBABB/IAJBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQfyVwgBBCxCmAyACEK4CIABBEGokAAuEAQEDfyMAQSBrIgQkACAEQQhqIgMQ8AECf0GF5cIALQAAGkEkQQQQ9QMiAgRAIAJB5LrAADYCACACIAE2AiAgAiAANgIcIAIgAykCADcCBCACQQxqIANBCGopAgA3AgAgAkEUaiADQRBqKQIANwIAIAIMAQtBBEEkENMEAAsgBEEgaiQACzgBAX9BASEBIAAtAARFBEAgACgCACIBKAIcQY7EwgBBASABKAIgKAIMEQIAIQELIAAgAToABCABC5ABAQN/IwBBIGsiAyQAIANBCGoiAhDwAQJ/QYXlwgAtAAAaQShBBBD1AyIBBEAgAUGcgsAANgIAIAEgAikCADcCBCABIAApAgA3AhwgAUEMaiACQQhqKQIANwIAIAFBFGogAkEQaikCADcCACABQSRqIABBCGooAgA2AgAgAQwBC0EEQSgQ0wQACyADQSBqJAALhgECAn8BfiMAQSBrIgIkACACQQhqIgEQ8AECf0GF5cIALQAAGiAAKQIAIQNBJEEEEPUDIgAEQCAAQci6wAA2AgAgACADNwIcIAAgASkCADcCBCAAQQxqIAFBCGopAgA3AgAgAEEUaiABQRBqKQIANwIAIAAMAQtBBEEkENMEAAsgAkEgaiQAC5kSAhd/EH0QaSIMIAkmASMAQfAAayILJAAgCyAMNgIsIAsgCDYCKCALIAc4AiQgCyAGOAIgIAsgBTgCHCALIAQ4AhggCyADOAIUIAsgAjgCECALIAE4AgwgCyAAOAIIIAsgCkEARzoAMyALQQA2AjwgC0KAgICAwAA3AjQgCyALQSRqNgJsIAsgC0EgajYCaCALIAtBHGo2AmQgCyALQRhqNgJgIAsgC0EUajYCXCALIAtBEGo2AlggCyALQQxqNgJUIAsgC0EIajYCUCALIAtBNGo2AkwgCyALQTNqNgJIIAsgC0EsajYCRCALIAtBKGo2AkAgC0FAayIeIQgjAEEgayIMJAACQAJAAkBBAEGIh8AAKAIAEQQAIhIEQCASKAIADQIgCCgCLCEUIAgoAighFSAIKAIkIRYgCCgCICEXIAgoAhwhGCAIKAIYIRkgCCgCFCEaIAgoAhAhGyAIKAIMIQ8gCCgCCCEfIAgoAgQhICAIKAIAIRwgEkF/NgIAIBIgHCgCACINBH8gEkEMaigCACEdIBJBCGooAgAhCgNAIAwgICATQQJ0IBNBgIAEIA0gE2siCCAIQYCABE8bIghqIhNBAnQQqQQ2AgQgCEECdCINIB1LDQMgDEEEaiAKIA0QzAICQCAfLQAARQRAIAwgGSoCADgCECAMIBoqAgA4AgwgDCAbKgIAOAIIIAwgFioCADgCHCAMIBcqAgA4AhggDCAYKgIAOAIUIAohCCAVKgIAISQgFCoCACEjIwBBEGsiECQAIA0EQCAMQRRqIg4qAgAiACAAlCAOKgIEIgEgAZSSIA4qAggiAiAClJIhAyAMQQhqIg4qAgghIiAOKgIEISUgDioCACEmA0BBBCANIA1BBE8bIQ4CQCAILQADs0MAAH9DlUPNzMw9XQ0AIBBBBGogCCAOEEEgDUEDSwRAIAAgJiAQKgIEkyIElCABICUgECoCCJMiBZSSIAIgIiAQKgIMkyIGlJIiByAHlCADIAQgBJQgBSAFlJIgBiAGlJIgCCgCDCIREKUDIBFBCHYQpQOSIBFBEHYQpQOSQwAAQECVIgQgBJSTlJMiBEMAAAAAXQ0BIAeMIASRkyADlSIEICRgRSAEICNfRXINASAPKAIIIhEgDygCAEYEQCAPQdyMwAAQtAELIA8oAgQgEUECdGogBDgCACAPIBFBAWo2AggMAQtBAyAOQZyNwAAQrQIACyAIIA5BAnRqIQggDSAOayINDQALCwwBCyAMIBkqAgA4AhAgDCAaKgIAOAIMIAwgGyoCADgCCCAMIBYqAgA4AhwgDCAXKgIAOAIYIAwgGCoCADgCFCAKIQggFSoCACEtIBQqAgAhLiMAQRBrIhAkACANBEAgDEEUaiIOKgIAISUgDioCBCEmIA4qAgghKyAMQQhqIg4qAgghLyAOKgIEITAgDioCACExA0BBBCANIA1BBE8bIQ4CQCAILQADs0MAAH9DlUPNzMw9XQ0AIBBBBGogCCAOEEECQCANQQNLBEAgECoCDCEoIBAqAgghKSAQKgIEISogCCgCDCIREKUDIQMgEUEIdhClAyEEIBFBEHYQpQMhBSArIAgoAggiIUEYdbJDAAD+QpUiACAmIBFBGHWyQwAA/kKVIgGUICsgAJSTIiOUICFBEHbAskMAAP5ClSICICsgApQgJSABlJMiIpSTICUgAJQgJiAClJMiJ0MAAIA/IAIgApSTIAAgAJSTIAEgAZSTQwAAAAAQ1QORIgaUkiIHIAeSkiEHICYgAiAnlCABICOUkyAiIAaUkiIkICSSkiEkICUgASAilCAAICeUkyAjIAaUkiIjICOSkiEjIC8gKJMiIiAAIDAgKZMiJyABlCAiIACUkyIolCACICIgApQgMSAqkyIpIAGUkyIqlJMgKSAAlCAnIAKUkyIsIAaUkiIiICKSkiEiICcgAiAslCABICiUkyAqIAaUkiICIAKSkiECICkgASAqlCAAICyUkyAoIAaUkiIAIACSkiEAIAUgAyAEENUDIAUQ1QNDCtcjPJQiAV1FBEAgASAEXkUEQCABIANeRQRAQwAAgD8gBZUiBSAilCIBIAUgB5QiBZRDAACAPyADlSIDIACUIgAgAyAjlCIDlEMAAIA/IASVIgQgApQiAiAEICSUIgSUkpIiBiAGlCAFIAWUIAMgA5QgBCAElJKSIgMgASABlCAAIACUIAIgApSSkkMAAIC/kpSTIgBDAAAAAF0NBSAGjCAAkZMgA5UhAAwECyAji0O9N4Y1XQ0EIAIgJCAAjCAjlSIAlJIgBJUiASABlCAiIAcgAJSSIAWVIgEgAZSSQwAAgD9eRQ0DDAQLICSLQ703hjVdDQMgACAjIAKMICSVIgCUkiADlSIBIAGUICIgByAAlJIgBZUiASABlJJDAACAP14NAwwCCyAHi0O9N4Y1XQ0CIAAgIyAijCAHlSIAlJIgA5UiASABlCACICQgAJSSIASVIgEgAZSSQwAAgD9eRQ0BDAILQQMgDkGcjcAAEK0CAAsgACAtYEUgACAuX0VyDQAgDygCCCIRIA8oAgBGBEAgD0HsjMAAELQBCyAPKAIEIBFBAnRqIAA4AgAgDyARQQFqNgIICyAIIA5BAnRqIQggDSAOayINDQALCwsgEEEQaiQAIAwoAgQiCEGEAU8EQCAIEMYBCyATIBwoAgAiDUkNAAsgEigCAEEBagVBAAs2AgAgDEEgaiQADAMLENICAAsgDSAdQciLwAAQqwQACxDTAgALIAsoAjwQGCEJEGkiCCAJJgEgCyAINgJAIAsoAjghECALKAI8IQwjAEEgayIKJAAgCiAeKAIAIhIlARASIg02AgAgCiAMNgIEAkAgDCANRgRAEO0DIg0Q3AMiDyUBIBAgDBAQIQkQaSIMIAkmASANQYQBTwRAIA0QxgELIA9BhAFPBEAgDxDGAQsgEiUBIAwlAUEAEBEgDEGEAU8EQCAMEMYBCyAKQSBqJAAMAQsgCkEANgIIIAogCkEEaiAKQQhqEIwDAAsgCygCNCIKBEAgCygCOCAKQQJ0QQQQpwQLIAsoAiwiCkGEAU8EQCAKEMYBCyALQfAAaiQAIAglASAIEMYBC/wBAgJ/AX4jAEEQayICJAAgAkEBOwEMIAIgATYCCCACIAA2AgQjAEEQayIBJAAgAkEEaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCDCEDAkACQAJAAkAgAigCBA4CAAECCyADDQFBASECQQAhAwwCCyADDQAgAigCACICKAIEIQMgAigCACECDAELIABBgICAgHg2AgAgACABNgIMIABBhKLCACABKAIEIAEoAggiAC0ACCAALQAJEMEBAAsgACADNgIEIAAgAjYCACAAQeihwgAgASgCBCABKAIIIgAtAAggAC0ACRDBAQALKgAgAEH/AXFFBEBDAAAAAA8LIABBAWtB/wFxs0NFIpE9lEMAABDBkhBSCy0AIAEoAhwgAiADIAEoAiAoAgwRAgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAsyAQF/IAEoAhxBvMHCAEEBIAEoAiAoAgwRAgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAshAAJAIAEgAxCsAwRAIAAgASADIAIQ3wMiAA0BCwALIAALIgEBfyAAKAIAIgAgAEEfdSICcyACayAAQX9zQR92IAEQbAslACAARQRAQfiPwgBBMhDIBAALIAAgAiADIAQgBSABKAIQEQsACygAIAEgACgCAC0AAEECdCIAQeC8wgBqKAIAIABBzLzCAGooAgAQ5QMLGQEBf0GAgICAeCABayAATyACIAFpQQFGGwslACABIAAtAABBAnQiAEH8tcAAaigCACAAQey1wABqKAIAEOUDCyUAIABBnJvAADYCBCAAIAFBBGpBACABKAIAQYKAgIB4Rhs2AgALIQAgAEHwosAANgIEIAAgAUEBakEAIAEtAABBAkYbNgIACyUAIAEgAC0AAEECdCIAQZDZwABqKAIAIABBgNnAAGooAgAQ5QMLJQAgAEGwvsAANgIEIAAgAUEEakEAIAEoAgBBgoCAgHhGGzYCAAshACAAQYTGwAA2AgQgACABQQFqQQAgAS0AAEECRhs2AgALJQAgASAALQAAQQJ0IgBB+PvAAGooAgAgAEHo+8AAaigCABDlAwslACAAQYDhwAA2AgQgACABQQRqQQAgASgCAEGCgICAeEYbNgIACyEAIABBsOjAADYCBCAAIAFBAWpBACABLQAAQQJGGzYCAAshACAAQbSOwQA2AgQgACABQQFqQQAgAS0AAEECRhs2AgALJQAgAEHEicEANgIEIAAgAUEEakEAIAEoAgBBgoCAgHhGGzYCAAslACABIAAtAABBAnQiAEGMosEAaigCACAAQfyhwQBqKAIAEOUDCyMAIABFBEBB+I/CAEEyEMgEAAsgACACIAMgBCABKAIQEQcACyMAIABFBEBB+I/CAEEyEMgEAAsgACACIAMgBCAB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BBD1AyILBEACQEGF5cIALQAAGkGACEEEEPUDIghFDQJBheXCAC0AABpBgAhBBBD1AyIERQ0AQYXlwgAtAAAaQYAIQQQQ9QMiDkUNAkGF5cIALQAAGkGACEEEEPUDIgxFDQBBheXCAC0AABpBgAhBBBD1AyISRQ0CIANCADcDqAIgA0EBNgLoASADQQA6AOQBIANBADoA4gEgA0EAOgDgASADQTQ7AdwBIANBADYC2AEgAyASNgLUASADQoCAgICAIDcCzAEgAyAMNgLIASADQoCAgICAIDcDwAEgA0KAgICAwAA3A7gBIANBIzsBtAEgA0EANgKwASADIA42AqwBIANCgICAgIAgNwKkASADIAQ2AqABIANCgICAgIAgNwOYASADQoCAgIDAADcDkAEgA0EfOwGMASADQQA2AogBIAMgCDYChAEgA0KAgICAgCA3AnwgAyALNgJ4IANCgICAgIAgNwNwIANCgICAgMAANwNoIANBwAJqQgA3AwAgA0G4AmpCADcDACADQbACakIANwMAIANB/AFqQQA2AgAgA0H0AWpCADcCACADQgA3AuwBIANC1uuC7ur9ifXgADcDgAIgA0LP1tO+0ser2UI3A4gCIANCADcDkAIgA0L56tDQ58mh5OEANwOYAiADQgA3A6ACIANBADYCyAIgA0IANwPQAiADIAY2AtgCIANBADYC5AIgA0EINgKUAyADQoCAgIAQNwLcAiADQoGAgIDAADcCjAMgA0EANgKIAyADQoCAgIAQNwPoAiADQgA3A/ACIANCBDcD+AIgA0KAgICAEDcDgAMMAwsLQQRBgAhBzIDCABDXAwALQQRBgAhB3IDCABDXAwALIAdBADYCqAcgB0EANgKwByAHQQA6ANwKIAdBADYC2AogByAjNwPQCiAHKQOoByEgIAcpA7AHISMgB0HoA2oiBiADQagDEDsaIAdBCGoQSSAHICM3AyggByAgNwMgIAcgITcDGCAHIA02AgwgByAiPgIQIAcgIkIgiD4CFCAHIAU2AgggB0EwaiAGQagDEDshCCAFQQFxBEBBDCEQIAcoAtgDIhJFDQEgBygC3AMhFwNAIBJB1AFrIQQgEkEEaiEGIBIvAd4WIgNBAnQhC0F/IQUCQAJAA0AgC0UEQCADIQUMAgsgBigCACEOIAVBAWohBSAEQYQCaiEEIAtBBGsh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EwAgAEHMuMAANgIEIAAgATYCAAsTACAAQYi5wAA2AgQgACABNgIACxMAIABBxLnAADYCBCAAIAE2AgALEwAgAEGAusAANgIEIAAgATYCAAsTACAAQbC+wAA2AgQgACABNgIACxMAIABBKDYCBCAAQYjbwAA2AgALEwAgAEGA4cAANgIEIAAgATYCAAshACAAQqTFo/yfjvDjADcDCCAAQqqooLmusOaw6QA3AwALEAAgACgCACAAKAIEIAEQMAsRACAAKAIAIAAoAgQgARDVBAsiACAAQsuH6/rgqLu20AA3AwggAELEr9zF2tKv9bh/NwMACxMAIABBKDYCBCAAQcCFwQA2AgALEwAgAEHEicEANgIEIAAgATYCAAsgACAAQrz8k7Ko16DsTDcDCCAAQuuYqJm2gbKefzcDAAshACAAQriynYTMrpfUQjcDCCAAQu/Dv6KOjcrEoH83AwALIAAgAEKcnaLxgrvwoHU3AwggAELRqsqvpcqt8kA3AwALIQAgAEL7wqCWlfy/yHo3AwggAELmsfLlkYe/ybF/NwMACyIAIABC9auQ77TsvKaWfzcDCCAAQrHh7P30uYbLwgA3AwALIAAgAELNnq77nqC2sEE3AwggAELxps+Y0aSn/gE3AwALIAAgAEK3v8ue+N2SoEM3AwggAEKvuaX0x5vV+zA3AwALIQAgAEKWl7rs79nZo3Q3AwggAEKH+OXLhuPSwtQANwMACyEAIABC/O6Qyq7osdU1NwMIIABC2OvVj+a1zN2OfzcDAAshACAAQrzprN2Y1v7ui383AwggAEKk3Nqt0/nNwEU3AwALIQAgAELl6obQ6cP/7Xk3AwggAEL30OLk1cPQ6ad/NwMACyEAIABC5sHsgPKk3YtlNwMIIABChu7u8+efmIeefzcDAAshACAAQs7Is8mT6a+2pX83AwggAELt66KMv7HLkg83AwALIgAgAEKcrtGn56WAwMIANwMIIABC16rLiaf+wYLHADcDAAsiACAAQt3+weC9o+rogn83AwggAEKX2/aYrfP7zY5/NwMACyEAIABCgsDc4LCv07mnfzcDCCAAQpbk17fDtcOKAzcDAAshACAAQrvV0cb1jfDEkH83AwggAELVi9bpuKS4kXk3AwALIQAgAEKynOer2rGju98ANwMIIABCvfif/8L+hsNVNwMACyIAIABC9tzrg9PWkOr2ADcDCCAAQuamkMP/nOzgtn83AwALIQAgAEKv1ajhhPu04u0ANwMIIABCjM/Fj7KFi+lnNwMACyEAIABCoKPa7PvI3KZuNwMIIABC7fH6/5z2yOa9fzcDAAsRACABIAAoAgAgACgCBBDlAwsWAEGM5cIAIAA2AgBBiOXCAEEBNgIACyAAIABC4+DWofail51WNwMIIABC0Jamw5Le7cA3NwMACyIAIABC7bqtts2F1PXjADcDCCAAQviCmb2V7sbFuX83AwALEwAgAEHYocIANgIEIAAgATYCAAsQACABIAAoAgAgACgCBBA2CxAAIAEoAhwgASgCICAAEEULDgAgACUBIAElASACEA4LYQEBfwJAAkAgAEEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpPBEAgAkEAIAMgAUEnaksbDQEgABA+DAILQf2UwgBBLkGslcIAEO0CAAtBvJXCAEEuQeyVwgAQ7QIACwsOACAAKAIAJQEQE0EARwsdAQFvIAAoAgAlASABIAIQFyEDEGkiACADJgEgAAtpAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0ECNgIMIANBmNrCADYCCCADQgI3AhQgAyADQQRqrUKAgICAEIQ3AyggAyADrUKAgICAEIQ3AyAgAyADQSBqNgIQIANBCGogAhCkAwALaQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQbjawgA2AgggA0ICNwIUIAMgA0EEaq1CgICAgBCENwMoIAMgA61CgICAgBCENwMgIAMgA0EgajYCECADQQhqIAIQpAMAC2kBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0Hs2sIANgIIIANCAjcCFCADIANBBGqtQoCAgIAQhDcDKCADIAOtQoCAgIAQhDcDICADIANBIGo2AhAgA0EIaiACEKQDAAsNACAAKAIAQQEgARBsCw8AQb3BwgBBKyAAEO0CAAvxAgIFfwN+IAApAwAhCSMAQSBrIgMkAEEUIQAgCSIHQugHWgRAIAchCANAIANBDGogAGoiAkEDayAIIAhCkM4AgCIHQpDOAH59pyIEQf//A3FB5ABuIgVBAXQiBkGSxMIAai0AADoAACACQQRrIAZBkcTCAGotAAA6AAAgAkEBayAEIAVB5ABsa0H//wNxQQF0IgRBksTCAGotAAA6AAAgAkECayAEQZHEwgBqLQAAOgAAIABBBGshACAIQv+s4gRWIAchCA0ACwsgB0IJVgRAIAAgA2pBC2ogB6ciAiACQf//A3FB5ABuIgJB5ABsa0H//wNxQQF0IgRBksTCAGotAAA6AAAgAEECayIAIANBDGpqIARBkcTCAGotAAA6AAAgAq0hBwsgCVBFIAdQcUUEQCAAQQFrIgAgA0EMamogB6dBAXRBHnFBksTCAGotAAA6AAALIAFBAUEBQQAgA0EMaiAAakEUIABrEDUgA0EgaiQACw4AIAFBiP3AAEEUEOUDCwwAIAAoAgAgARDZBAsLACAAKAIAIAEQfAsMACAAKAIAIAEQngELDAAgACgCACABEIYBCwwAIAAoAgAgARCXAQsLACAAKAIAIAEQZAsLACAAKAIAIAEQTgsMACAAKAIAIAEQsAELDAAgACgCACABEKIBCwwAIAAoAgAgARCRAQsLACAAKAIAIAEQQAsMACAAKAIAIAEQrQQLDAAgACgCACABEKkDCwwAIAAoAgAgARDFAQsMACAAKAIAIAEQrwQLDAAgACgCACABEIQCCwsAIAAoAgAgARBqCw0AIABBxIPCACABEEULDQAgAEHQiMIAIAEQRQsKACAAIAEgAhBFCw4AIAFBxIrCAEEFEOUDC6gDAgd/AX4gACgCACEAIwBB0ABrIgIkACACQSBqIAAgACgCACgCBBEBACACIAJByABqrUKAgICAsDuENwMoQQEhAyACQQE2AjQgAkG4jMIANgIwIAJCATcCPCACIAIpAyA3AkggAiACQShqNgI4AkAgASgCHCIHIAEoAiAiCCACQTBqEEUNACABLQAUQQRxRQRAQQAhAwwBCyACQRhqIAAgACgCACgCBBEBACACQShqrUKAgICAsDuEIQkgAigCHCEEIAIoAhghBUEAIQBBASEGA0ACQCAAQQFxBEAgBCEBIAUhAAwBCyAFIQAgBCEBA0AgAEUEQEEAIQMMBAsgAkEQaiAAIAEoAhgRAQAgAigCFCEBIAIoAhAhACAGQQFrIgYNAAsLIABBAEchAyAARQ0BIAJBCGogACABKAIYEQEAIAIoAgwhBCACKAIIIQUgAiABNgIsIAIgADYCKEEBIQAgAkEBNgI0IAJBxIzCADYCMCACQgE3AjwgAiAJNwNIIAIgAkHIAGo2AjhBACEGIAcgCCACQTBqEMQERQ0ACwsgAkHQAGokACADCxsBAW8gACgCACUBIAEQAiECEGkiACACJgEgAAsJACAAIAEQGwALKQACfyAAKAIALQAARQRAIAFB9MXCAEEFEDYMAQsgAUH5xcIAQQQQNgsLDQAgAEG8lMIAIAEQRQvOAQEGfyAAKAIAIQIjAEGAAWsiBCQAIAEoAgQhByABKAIAIQYgASgCFCIFIQACQCAFQQRxRQ0AIAVBCHIhACAGDQAgAUKBgICAoAE3AgALIAEgAEEEcjYCFEEAIQADQCAAIARqQf8AaiACQQ9xIgNBMHIgA0HXAGogA0EKSRs6AAAgAEEBayEAIAJBD0sgAkEEdiECDQALIAFBAUGPxMIAQQIgACAEakGAAWpBACAAaxA1IAEgBTYCFCABIAc2AgQgASAGNgIAIARBgAFqJAALDAAgACABKQIANwMACw0AIAFB7K3CAEECEDYLDQAgAEGAscIAIAEQRQsOACABQauwwgBBBRDlAwsOACABQbi8wgBBEhDlAwsNACAAQcy+wgAgARBFCw4AIAFBxL7CAEEFEOUDCxoAIAAgAUGU5cIAKAIAIgBB9QMgABsRAQAACw0AIABB4MPCACABEEULCgAgAiAAIAEQNgu3CQEHfwJAAkAgAiIFIAAiAyABa0sEQCABIAJqIQAgAiADaiEDIAJBEEkNAUEAIANBA3EiBmshCAJAIANBfHEiBCADTw0AIAZBAWsCQCAGRQRAIAAhAgwBCyAGIQcgACECA0AgA0EBayIDIAJBAWsiAi0AADoAACAHQQFrIgcNAAsLQQNJDQAgAkEEayECA0AgA0EBayACQQNqLQAAOgAAIANBAmsgAkECai0AADoAACADQQNrIAJBAWotAAA6AAAgA0EEayIDIAItAAA6AAAgAkEEayECIAMgBEsNAAsLIAQgBSAGayICQXxxIgVrIQNBACAFayEGAkAgACAIaiIAQQNxRQRAIAMgBE8NASABIAJqQQRrIQEDQCAEQQRrIgQgASgCADYCACABQQRrIQEgAyAESQ0ACwwBCyADIARPDQAgAEEDdCIFQRhxIQcgAEF8cSIIQQRrIQFBACAFa0EYcSEJIAgoAgAhBQNAIARBBGsiBCAFIAl0IAEoAgAiBSAHdnI2AgAgAUEEayEBIAMgBEkNAAsLIAJBA3EhBSAAIAZqIQAMAQsgBUEQTwRAAkAgA0EAIANrQQNxIgZqIgIgA00NACABIQQgBgRAIAYhAANAIAMgBC0AADoAACAEQQFqIQQgA0EBaiEDIABBAWsiAA0ACwsgBkEBa0EHSQ0AA0AgAyAELQAAOgAAIANBAWogBEEBai0AADoAACADQQJqIARBAmotAAA6AAAgA0EDaiAEQQNqLQAAOgAAIANBBGogBEEEai0AADoAACADQQVqIARBBWotAAA6AAAgA0EGaiAEQQZqLQAAOgAAIANBB2ogBEEHai0AADoAACAEQQhqIQQgA0EIaiIDIAJHDQALCyACIAUgBmsiBEF8cSIHaiEDAkAgASAGaiIAQQNxRQRAIAIgA08NASAAIQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiADSQ0ACwwBCyACIANPDQAgAEEDdCIFQRhxIQYgAEF8cSIIQQRqIQFBACAFa0EYcSEJIAgoAgAhBQNAIAIgBSAGdiABKAIAIgUgCXRyNgIAIAFBBGohASACQQRqIgIgA0kNAAsLIARBA3EhBSAAIAdqIQELIAMgAyAFaiIATw0BIAVBB3EiBARAA0AgAyABLQAAOgAAIAFBAWohASADQQFqIQMgBEEBayIEDQALCyAFQQFrQQdJDQEDQCADIAEtAAA6AAAgA0EBaiABQQFqLQAAOgAAIANBAmogAUECai0AADoAACADQQNqIAFBA2otAAA6AAAgA0EEaiABQQRqLQAAOgAAIANBBWogAUEFai0AADoAACADQQZqIAFBBmotAAA6AAAgA0EHaiABQQdqLQAAOgAAIAFBCGohASADQQhqIgMgAEcNAAsMAQsgAyAFayICIANPDQAgBUEDcSIBBEADQCADQQFrIgMgAEEBayIALQAAOgAAIAFBAWsiAQ0ACwsgBUEBa0EDSQ0AIABBBGshAQNAIANBAWsgAUEDai0AADoAACADQQJrIAFBAmotAAA6AAAgA0EDayABQQFqLQAAOgAAIANBBGsiAyABLQAAOgAAIAFBBGshASACIANJDQALCwsJACAAQQA2AgAL3zYCHX8BfiMAQYABayIGJAAgBkEoaiAAIAAoAgAoAgQRAQAgBiAGKAIsIgI2AjQgBiAGKAIoIgQ2AjACQAJAAkACQAJAIAEiDi0AFEEEcUUEQEEBIRUgBkEBNgJgIAZBuIzCADYCXCAGQgE3AmggBiAGQTBqrUKAgICAsDuENwNAIAYgBkFAazYCZCABKAIcIAEoAiAgBkHcAGoQRQ0FIAZBIGogBigCMCAGKAI0KAIYEQEAIAYoAiAiAgRAIAYoAiQhASAOKAIcQcyMwgBBDCAOKAIgKAIMEQIADQYgBkEYaiACIAEoAhgRAQAgBkE4aq1CgICAgLA7hCEfIAYoAhhBAEchBwNAIAZBEGogAiABKAIYEQEAIAYoAhQgBigCECEIIAYgATYCPCAGIAI2AjggDigCHEHYjMIAQQEgDigCICgCDBECAA0HIAZBADoATCAGIAM2AkQgBiAHNgJAIAYgDjYCSCAGQQE2AmAgBkG4jMIANgJcIAZCATcCaCAGIB83A1AgBiAGQdAAajYCZCAGQUBrQZyLwgAgBkHcAGoQRQ0HIANBAWohAyEBIAgiAg0ACwsCQCAAKAIEIgJBA0cEQCAAQQRqIQAMAQsgACAAKAIAKAIYEQQAIgBFDQIgACgCACECCyACQQJHDQQgBkEANgJIIAZCgICAgBA3AkAgBkHoiMIANgJ8IAZBAzoAdCAGQiA3AmwgBkEANgJkIAZBADYCXCAGIAZBQGs2AnggBkHcAGohAiMAQaABayIDJAACfwJAAkACQAJAAkACfwJAAkACQAJAIAAoAgBBAWsOAgABAgsgAkHFl8IAQRIQ5QMMCQsgAC0AFEEDRwRAIAMgAEEEajYCOCADQThqIQQjAEEgayIBJAACQAJAAkACQAJAAkACQAJAIABBFGoiCC0AAEEBaw4DAgUBAAsgCEECOgAAIAQoAgAgBEEANgIARQ0CQZHlwgAtAAAhBEGR5cIAQQE6AAAgASAEOgAHIARBAUYNA0GR5cIAQQA6AAAgCEEDOgAACyABQSBqJAAMBQsgAUEANgIYIAFBATYCDCABQYSowgA2AggMAwtBmKDCABCuBAALIAFCADcCFCABQoGAgIDAADcCDCABQbCfwgA2AgggAUEHaiABQQhqEIoDAAsgAUEANgIYIAFBATYCDCABQcSowgA2AggLIAFCBDcCECABQQhqQcygwgAQpAMACwsgACgCDCEBIAIoAhRBBHEiCEUNASAAKAIIDAILIAJBsJfCAEEVEOUDDAcLIAEgACgCECIESQ0BIAEgBGshASAAKAIIIARBDGxqCyERIANBgICAgHg2AgwgA0Gol8IAKQMANwIQIAMgCEECdiIAOgAYIAMgADoALCADQQA2AiggAyACNgIcIANB6JfCADYCJCADIANBDGo2AiAgAUUNAiARIAFBDGxqIRggA0E8aiETIANBhAFqIRQDQAJAIBEoAggiAEUEQCADQQA2AmQgAyADQRxqNgJgIANBAzYCOCADQQI2AoABIANB4ABqIANBOGogA0GAAWpBACADQQAgAxAiIAMoAmAiASABKAIMQQFqNgIMRQ0BDAcLIABBLGwhGSARKAIEIRpBACEWA0AgA0EANgI0IAMgA0EcajYCMAJAIBYgGmoiD0EgaigCAEGAgICAeEYEQCADQQM2AjgMAQsgA0GAAWoiEiAPQSRqKAIAIhsgD0EoaigCACIcED1BAiEAAkAgAygCgAENACADKAKEASEJIAMoAogBIQEjAEEgayILJAAjAEHgAGsiByQAIAdBEGogCSABQfC6wgBBBhAhAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBygCEEUEQANAIAdB1ABqIAdBEGoQLCAHKAJUIgBBAUYNAAsCQAJAIABBAWsOAgQBAAsgByAHKQJYNwIIIAdBATYCBAwCCyAHQQA2AgQMAQsgB0EYaiEAIAcoAkwhAiAHKAJIIQQgBygCRCEIIAcoAkAhBSAHKAI0QX9HBEAgB0EEaiAAIAUgCCAEIAJBABBWDAELIAdBBGogACAFIAggBCACQQEQVgsgBygCBEUNAgJAIAcoAggiBEEGaiIARQ0AIAAgAU8EQCAAIAFGDQEMEQsgACAJaiwAAEG/f0wNEAsgASAJaiEKIAAgCWohAANAAkAgACAKRg0AAn8gACwAACICQQBOBEAgAkH/AXEhAiAAQQFqDAELIAAtAAFBP3EhBSACQR9xIQggAkFfTQRAIAhBBnQgBXIhAiAAQQJqDAELIAAtAAJBP3EgBUEGdHIhBSACQXBJBEAgBSAIQQx0ciECIABBA2oMAQsgCEESdEGAgPAAcSAALQADQT9xIAVBBnRyciICQYCAxABGDQEgAEEEagshACACQUBqQQdJIAJBMGtBCklyDQEMBAsLIARFBEBBACEBDAQLIAEgBE0EQCABIARGDQMMAgsgBCAJaiwAAEG/f0wNASAEIQEMAgsACyAJIAFBACAEQbS7wgAQ7AMACwJAAkAgAUEDTwRAAkACQAJAQbixwgAgCUEDENQCBEAgCS8AAEHanAFGDQEgAUEDRg0GIAkoAABB377p8gRHDQZBfCECQQQhACABQQVPDQJBBCEBDAULQQMhAEF9IQIgAUEDRgRAQQMhAQwFCyAJLAADQb9/Sg0EIAkgAUEDIAFBjLLCABDsAwALIAksAAJBv39MDQFBAiEAQX4hAgwDCyAJLAAEQb9/Sg0CIAkgAUEEIAFB7LHCABDsAwALIAkgAUECIAFB/LHCABDsAwALQQIhACABQQJHDQIgCS8AAEHanAFHBEBBAiEBDAMLQX4hAkECIQELIAAgCWoiBCABIAJqIghqIRAgCCEAIAQhAgJAA0AgAARAIABBAWshACACLAAAIAJBAWohAkEATg0BDAILCyAIRQ0AAn8gBCwAACIAQQBOBEAgAEH/AXEhACAEQQFqDAELIAQtAAFBP3EhBSAAQR9xIQIgAEFfTQRAIAJBBnQgBXIhACAEQQJqDAELIAQtAAJBP3EgBUEGdHIhBSAAQXBJBEAgBSACQQx0ciEAIARBA2oMAQsgAkESdEGAgPAAcSAELQADQT9xIAVBBnRyciEAIARBBGoLIQICQCAAQcUARgRAQQAhCgwBCyAAQYCAxABGDQFBACEKA0AgAEEwa0EJSw0CQQAhBQNAIABBMGsiDUEKTwRAIAUEQANAIAIgEEYNBgJ/IAIsAAAiAEEATgRAIABB/wFxIQAgAkEBagwBCyACLQABQT9xIQwgAEEfcSENIABBX00EQCANQQZ0IAxyIQAgAkECagwBCyACLQACQT9xIAxBBnRyIQwgAEFwSQRAIAwgDUEMdHIhACACQQNqDAELIA1BEnRBgIDwAHEgAi0AA0E/cSAMQQZ0cnIiAEGAgMQARg0HIAJBBGoLIQIgBUEBayIFDQALCyAKQQFqIQogAEHFAEcNAgwDCyAFrUIKfiIfQiCIpw0DIAIgEEYgH6ciACANaiIFIABJcg0DAn8gAiwAACIAQQBOBEAgAEH/AXEhACACQQFqDAELIAItAAFBP3EhDCAAQR9xIQ0gAEFfTQRAIA1BBnQgDHIhACACQQJqDAELIAItAAJBP3EgDEEGdHIhDCAAQXBJBEAgDCANQQx0ciEAIAJBA2oMAQsgDUESdEGAgPAAcSACLQADQT9xIAxBBnRyciEAIAJBBGoLIQIgAEGAgMQARw0ACwsMAQsgECACayEQDAgLIAFBAk0NAQsgCS8AAEHfpAFHDQEgCSwAAiICQb9/TA0DIAlBAmohCEF+IQoMBQtBAiEAQQAhCiABQQJHDQcgCS0AAEHSAEYNAQwICyAJLQAAQdIARw0CIAEhAAsgCSwAASICQb9/SgRAIAlBAWohCEF/IQogACEBDAMLIAkgAEEBIABBkLXCABDsAwALIAkgAUECIAFBoLXCABDsAwALQQMhAEEAIQogAUEDRg0EQdC0wgAgCUEDENQCDQMgCSwAAyICQb9/SgRAIAlBA2ohCEF9IQoMAQsgCSABQQMgAUGAtcIAEOwDAAsgAkHBAGtB/wFxQRlLDQEgASAKaiEKQQAhAANAIAAgCkcEQCAAIAhqIABBAWohACwAAEEATg0BDAMLCyAHQSBqQgA3AgAgB0IANwIYIAcgCjYCFCAHIAg2AhACQCAHQRBqQQAQH0UEQCAHLQAUIQUCQCAHKAIQIgJFDQAgBygCGCIAIAcvABUgB0EXai0AAEEQdHJBCHQgBXIiBU8NAiAAIAJqLQAAQcEAa0H/AXFBGk8NAiAHKAIcIQQgB0IANwIgIAcgBDYCHCAHIAA2AhggByAFNgIUIAcgAjYCECAHQRBqQQAQHw0KIActABQhBSAHKAIQIgJFDQAgBygCGCEAIAcvABUgB0EXai0AAEEQdHJBCHQgBXIhBQwCCyAFQQFxIQoMBAsMCAsCQAJAIABFDQAgACAFTwRAIAAgBUYNAQwCCyAAIAJqLAAAQb9/TA0BCyAFIABrIRAgACACaiECQQAhBAwBCyACIAUgACAFQZC2wgAQ7AMACwJAAkAgEEUEQEEAIRAMAQtBLiEFQQAhDSACLQAAQS5HDQEgAiAQaiEdIAIhAANAAn8gBcBBAEgEQCAALQABQT9xIRcgBUEfcSEMIAVB/wFxIh5B3wFNBEAgDEEGdCAXciEFIABBAmoMAgsgAC0AAkE/cSAXQQZ0ciEFIB5B8AFJBEAgBSAMQQx0ciEFIABBA2oMAgsgDEESdEGAgPAAcSAALQADQT9xIAVBBnRyciIFQYCAxABGDQMgAEEEagwBCyAFQf8BcSEFIABBAWoLIQACQCAFQd///wBxQcEAa0EaSSAFQTBrQQpJciAFQSFrQQ9Jcg0AAkAgBUE6aw4nAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAAsgBUH7AGtBA0sNAwsgACAdRg0BIAAtAAAhBQwACwALQQEhDSABIQAMBQsgASEAQQEMAwtBACEKCyABIQALQQAhCEEAIQRBACENQQELIQJBACEQCyALIBA2AhwgCyACNgIYIAsgADYCFCALIAk2AhAgCyAKNgIMIAsgCDYCCCALIAQ2AgQgCyANNgIAIAdB4ABqJAAMAgsgCSABIAAgAUGku8IAEOwDAAtBwLXCAEE9IAdB1ABqQbC1wgBBgLbCABCgAgALAkAgCygCAARAIBIgCykCADcCACASQRhqIAtBGGopAgA3AgAgEkEQaiALQRBqKQIANwIAIBJBCGogC0EIaikCADcCAAwBCyASQQI2AgALIAtBIGokACADKAKAASIAQQJGDQAgA0H4AGogFEEYaigCADYCACADQfAAaiAUQRBqKQIANwMAIANB6ABqIBRBCGopAgA3AwAgAyAUKQIANwNgCyATIAMpA2A3AgAgE0EYaiADQfgAaigCADYCACATQRBqIANB8ABqKQMANwIAIBNBCGogA0HoAGopAwA3AgAgAyAcNgJcIAMgGzYCWCADIAA2AjgLIA9BEGooAgAiAEECRwRAIAMgD0EYaikCADcChAELIAMgADYCgAEgA0EwaiADQThqIANBgAFqIA8oAgAgD0EEaigCACAPQQhqKAIAIA9BDGooAgAQIiADKAIwIgEgASgCDEEBajYCDA0HIBkgFkEsaiIWRw0ACwsgGCARQQxqIhFHDQALDAELIAQgAUHYl8IAEKoEAAsgAygCDCIAQYCAgIB4Rg0AIABFDQEgAygCECAAQQEQpwRBAAwDCyADLQAQQQNHDQAgAygCFCIAKAIAIQEgAEEEaigCACICKAIAIgQEQCABIAQRAwALIAIoAgQiBARAIAEgBCACKAIIEKcECyAAQQxBBBCnBAtBAAwBCwJAIAMoAgwiAEGAgICAeEcEQCAARQ0BIAMoAhAgAEEBEKcEQQEMAgsgAy0AEEEDRw0AIAMoAhQiACgCACEBIABBBGooAgAiAigCACIEBEAgASAEEQMACyACKAIEIgQEQCABIAQgAigCCBCnBAsgAEEMQQQQpwQLQQELIANBoAFqJAANAiAGQdgAaiAGQcgAaigCADYCACAGIAYpAkA3A1ACQAJAIA4oAhxB2YzCAEECIA4oAiAoAgwRAgANAAJAAkAgBigCWEEQTwRAQduMwgAgBigCVEEQENQCRQ0BCyAGQQA2AmwgBkEBNgJgIAZB/IzCADYCXCAGQgQ3AmQgDigCHCAOKAIgIAZB3ABqEMQERQ0BDAILIwBBQGoiCCQAIAhBATYCECAIQQA2AgwgBkHQAGoiBCgCBCEDAkACQCAEKAIIIgBBAU0EQCAAQQFHDQEMAgsgA0EBaiwAAEG/f0oNAQtBiIbCAEEqQbCHwgAQ7QIACyAIIAhBEGo2AjwgCEEBNgI4IAhBADYCMCAIIAhBDGo2AjRBACECIAhBMGoiBygCBCEBAkACQAJAIAcoAgBBAWsOAgECAAsgASgCACECDAELIAEoAgAiAUF/RwRAIAFBAWohAgwBCyMAQSBrIgAkACAAQQA2AhggAEEBNgIMIABB1MbCADYCCCAAQgQ3AhAgAEEIakHohcIAEKQDAAsgBygCDCEFIAAhAQJAAkACQCAHKAIIQQFrDgIBAgALIAUoAgAiAUF/RwRAIAFBAWohAQwCCyMAQSBrIgAkACAAQQA2AhggAEEBNgIMIABBiMfCADYCCCAAQgQ3AhAgAEEIakH4hcIAEKQDAAsgBSgCACEBCwJAIAEgAk8EQCAAIAFPDQEgASAAQbSDwgAQqwQACyACIAFBtIPCABCsBAALIAggATYCBCAIIAI2AgAgCCgCBCEBIAQgCCgCACICNgIIIAggBDYCHCAIIAE2AiAgCCAAIAFrNgIkIAhBhI3CADYCKCAIQYWNwgA2AiwgCCABIANqNgIYIAggAiADajYCFCAIQRRqIgVCgYCAgBA3AgACQCAFKAIQIgtFBEAgBSgCGCIHIAUoAhQiAWsiACAFKAIIIgIoAgAgAigCCCIEa0sEQCACIAQgABCTASACKAIIIQQLIAEgB0cEQCACKAIEIQkCQCAAQQNxIgNFBEAgASEADAELIAEhAANAIAQgCWogAC0AADoAACAEQQFqIQQgAEEBaiEAIANBAWsiAw0ACwsgBSABIAdrQXxNBH8gBCAJaiEJQQAhAQNAIAEgCWoiBSAAIAFqIgMtAAA6AAAgBUEBaiADQQFqLQAAOgAAIAVBAmogA0ECai0AADoAACAFQQNqIANBA2otAAA6AAAgAUEEaiEBIANBBGogB0cNAAsgASAEaiEEIAAgAWoFIAALNgIUCyACIAQ2AggMAQsCQCAFKAIMIgEgBSgCCCIHKAIIIgBGBEAgBSgCGCEEIAUoAhQhAwwBCyABIABrIQkgBygCBCAAaiEAIAUoAhghBCAFKAIUIQMDQCADIARGDQIgACADLQAAOgAAIAUgA0EBaiIDNgIUIAcgBygCCEEBajYCCCAAQQFqIQAgCUEBayIJDQALCwJAIAMgBEYNACAEIANrIgAgBygCACABIAtqIgJrSwRAIAcgAiAAEJMBCyAHKAIEIgkgACABaiICaiABIAlqIAsQ1gQgBSACNgIMIAIgBygCCCIJRgRAIAIhAQwBCyAHKAIEIAlqIQAgASAEaiAJayADayEJA0AgAyAERg0CIAAgAy0AADoAACAFIANBAWoiAzYCFCAHIAcoAghBAWo2AgggAEEBaiEAIAlBAWsiCQ0ACyACIQELQQAhCQJAIAQgA2siCkEASA0AIAMgBEYiEA0BQQAhAEGF5cIALQAAGkEBIQkgCkEBEPUDIgJFDQAgCkEDcSEJIAMgBGtBfE0EQCAKQXxxIREDQCAAIAJqIgQgACADaiIPLQAAOgAAIARBAWogD0EBai0AADoAACAEQQJqIA9BAmotAAA6AAAgBEEDaiAPQQNqLQAAOgAAIBEgAEEEaiIARw0ACyAAIANqIQMLIAkEQANAIAAgAmogAy0AADoAACAAQQFqIQAgA0EBaiEDIAlBAWsiCQ0ACwsgBSADNgIUAkAgAEUNACAAIAcoAgAgASALaiIEa0sEQCAHIAQgABCTAQsgBygCBCIDIAAgAWoiBGogASADaiALENYEIAUgBDYCDCAEIAcoAggiA0YNACADIAFrIQEgBygCBCADaiEDIAIhBANAIABFDQEgAyAELQAAOgAAIAcgBygCCEEBajYCCCAEQQFqIQQgA0EBaiEDIAEgAEEBayIARw0ACwsgEA0BIAIgCkEBEKcEDAELIAkgCkGAjsIAENcDAAsgCCgCJCEAAkACQAJAIAgoAhggCCgCFEcEQCAARQ0DIAgoAhwiAUEIaiEEIAgoAiAiAyABKAIIIgJHDQEMAgsgAEUNAiAIKAIcIgFBCGohBCAIKAIgIgMgASgCCCICRg0BCyABKAIEIgEgAmogASADaiAAENYECyAEIAAgAmo2AgALIAhBQGskAAsgBkEIaiEIIAYoAlQhBEEAIQMCQCAGKAJYIgciAEUNACAAIARqIQADQAJAIAAiAkEBayIALAAAIgFBAEgEQCABQT9xAn8gAkECayIALQAAIgHAIgVBQE4EQCABQR9xDAELIAVBP3ECfyACQQNrIgAtAAAiAcAiBUFATgRAIAFBD3EMAQsgBUE/cSACQQRrIgAtAABBB3FBBnRyC0EGdHILQQZ0ciEBCwJAIAFBIEYgAUEJa0EFSXINACABQYABSQ0BAkACQAJAAkAgAUEIdiIFQRZrDhsDBQUFBQUFBQUFAQUFBQUFBQUFBQUFBQUFBQACCyABQYDgAEcNBAwDCyABQf8BcUHz4cIAai0AAEECcUUNAwwCCyAFDQIgAUH/AXFB8+HCAGotAABBAXENAQwCCyABQYAtRw0BCyAAIARHDQEMAgsLIAIgBGshAwsgCCADNgIEIAggBDYCACAGKAIMIgAgB00EQCAARSAAIAdPckUEQCAAIARqLAAAQb9/TA0HCyAGIAA2AlgLIAZBATYCYCAGQbiMwgA2AlwgBkIBNwJoIAYgBkHQAGqtQoCAgIDAO4Q3A0AgBiAGQUBrNgJkIA4oAhwgDigCICAGQdwAahBFRQ0BCyAGKAJQIgBFDQYgBigCVCAAQQEQpwQMBgsgBigCUCIARQ0EIAYoAlQgAEEBEKcEDAQLIAQgDiACKAIMEQAAIRUMBAtBtIvCAEEYQaiMwgAQwwIAC0GQicIAQTcgBkE4akGAicIAQbSKwgAQoAIAC0HcisIAQTBBjIvCABDtAgALQQAhFQsgBkGAAWokACAVC7sHAgR/AX4CfyMAQSBrIgIkAAJAAkACQAJAAkACQCAALQAAQQFrDgMBAgMACyACIAAoAgQ2AgQgAkEIaiIAIAFB8Z3CAEECEKYDIABBhJ7CAEEEIAJBBGpB9J3CABBvIAJBKToAE0GYnsIAQQQgAkETakGInsIAEG9BheXCAC0AABpBFEEBEPUDIgBFDQQgAEEQakHWp8IAKAAANgAAIABBCGpBzqfCACkAADcAACAAQcanwgApAAA3AAAgAkEUNgIcIAIgADYCGCACQRQ2AhRBrJ7CAEEHIAJBFGpBnJ7CABBvEK4CIQAgAigCFCIBRQ0DIAIoAhggAUEBEKcEDAMLIAIgAC0AAToACCACQRRqIgAgASgCHEGznsIAQQQgASgCICgCDBECADoACCAAIAE2AgQgAEEAOgAJIABBADYCACACQQhqIQUjAEFAaiIBJAAgACgCACEEIAACf0EBIAAtAAgNABogACgCBCIDLQAUQQRxRQRAQQEgAygCHEH/w8IAQYnEwgAgBBtBAkEBIAQbIAMoAiAoAgwRAgANARogBSADQZSewgAoAgARAAAMAQsgBEUEQEEBIAMoAhxBisTCAEECIAMoAiAoAgwRAgANARoLIAFBAToAFyABQSBqIANBCGopAgA3AwAgAUEoaiADQRBqKQIANwMAIAFBMGogA0EYaigCADYCACABIAMpAhw3AgggAykCACEGIAFB4MPCADYCOCABIAY3AxggASABQRdqNgIQIAEgAUEIajYCNEEBIAUgAUEYakGUnsIAKAIAEQAADQAaIAEoAjRBhMTCAEECIAEoAjgoAgwRAgALOgAIIAAgBEEBajYCACABQUBrJAAgACIBLQAIIQMCQCABKAIAIgRFBEAgAyEADAELQQEhAAJAIANBAXFFBEAgBEEBRw0BIAEtAAlFDQEgASgCBCIDLQAUQQRxDQEgAygCHEGMxMIAQQEgAygCICgCDBECAEUNAQsgAUEBOgAIDAELIAEgASgCBCIAKAIcQfnAwgBBASAAKAIgKAIMEQIAIgA6AAgLIABBAXEhAAwCCyAAKAIEIQAgAkEUaiIDIAFBt57CAEEFEKYDIANBmJ7CAEEEIABBCGpBiJ7CABBvQayewgBBByAAQbyewgAQbxCuAiEADAELIAIgACgCBCIANgIUIAFB3J7CAEEGQZiewgBBBCAAQQhqQYiewgBB4p7CAEEFIAJBFGpBzJ7CABDDASEACyACQSBqJAAgAAwBC0EBQRRB8JLCABDXAwALCwgAIAAlARAICwgAIAAlARALCwgAIAAlARAPCwQAQQALAgALC43iAhAAQYCAwAALqRBkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5L1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAKAAQAGsAAACiAAAAGQAAAAMAAAAMAAAABAAAAAQAAAADAAAADAAAAAQAAAAFAAAABAAAAKQAEAAGAAAABwAAAAgAAAAGAAAACQAAAAoAAAAoAAAABAAAAAsAAAAKAAAAKAAAAAQAAAAMAAAACwAAAOAAEAANAAAADgAAAA8AAAANAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBpbnZhbGlkIE9uY2Ugc3RhdGU4ARAAPAAAAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9vbmNlL25vX3RocmVhZHMucnN8ARAAfAAAADUAAAASAAAAZm9yZ2UtaW50ZXJuYWwtcnMvc3JjL3NvcnQucnMAAAAIAhAAHQAAAB0AAAAdAAAARXhwZWN0ZWQgIGFjdGl2ZSBzcGxhdHMgYnV0IGdvdCA4AhAACQAAAEECEAAXAAAACAIQAB0AAAA3AAAAFQAAAAgCEAAdAAAAXwAAAB0AAAAIAhAAHQAAAHcAAAAdAAAACAIQAB0AAAB3AAAAFQAAAAgCEAAdAAAAaAAAABQAAABmb3JnZS1pbnRlcm5hbC1ycy9zcmMvbGliLnJzuAIQABwAAAATAAAAPQAAALgCEAAcAAAAJAAAACAAAABudW1TcGxhdHNwYWNrZWRTcGxhdHMAAAAYAAAABAAAAAQAAAAZAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQC4AhAAHAAAADAAAABXAAAAuAIQABwAAAAvAAAAYwAAAAEAAAAAAAAAGgAAALgCEAAcAAAAOwAAAD8AAAAbAAAAHAAAAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnOMAxAAcAAAABQBAAAZAAAAjAMQAHAAAAATAgAAJgAAAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzABwEEABrAAAAogAAABkAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjLnJzAAAAmAQQAG0AAAAqAgAAEQAAAGZvcmdlLWludGVybmFsLXJzL3NyYy9saWIucnMYBRAAHAAAAFUAAAAtAAAAAQAAAAAAAAAYBRAAHAAAAEcAAAA7AAAAHQAAAAQAAAAEAAAAGQAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAGAUQABwAAABFAAAAWAAAABgFEAAcAAAAZwAAADMAAAAYBRAAHAAAAHIAAAAtAAAAGAUQABwAAACKAAAAKAAAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3BsYXkeAAAADAAAAAQAAAAEAAAAHgAAAAwAAAAEAAAABQAAAAQAAAAABhAAHwAAAAcAAAAgAAAABgAAACEAAABmb3JnZS1pbnRlcm5hbC1ycy9zcmMvcmF5Y2FzdC5yczwGEAAgAAAAIQAAABcAAAA8BhAAIAAAAG4AAAAXAAAAPAYQACAAAAB0AAAAHAAAADwGEAAgAAAAdgAAABwAAAA8BhAAIAAAAHsAAAAgAAAAd2xnL3NyYy93bGcwL2RlY29kZS5ycwAArAYQABYAAAA5AAAAGgAAAKwGEAAWAAAAOgAAABoAAACsBhAAFgAAADsAAAAaAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZawGEAAWAAAAPAAAABIAAACsBhAAFgAAAEMAAAAaAAAArAYQABYAAABEAAAAGgAAAKwGEAAWAAAARQAAABoAAACsBhAAFgAAAHUAAAAPAAAArAYQABYAAAB3AAAADwAAAKwGEAAWAAAAfAAAABoAAACsBhAAFgAAAH0AAAAaAAAArAYQABYAAAB+AAAAGgAAAKwGEAAWAAAAfwAAABoAAAAiAAAABAAAAAQAAAAjAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZXdsZy9zcmMvd2xnMC9tb2QucnMAAPcHEAATAAAASAAAACcAAAD3BxAAEwAAAJwAAAAnAEG0kMAAC/ZsAQEAAQEBAQEBAAAAAAAAAAEBAQABAQEAAgAAAAAAAAABAQEAAQEBAVVuc3VwcG9ydGVkIFdMRyB2ZXJzaW9uAFwIEAAXAAAASW52YWxpZCBXTEcgc2lnbmF0dXJlAAAAfAgQABUAAAD3BxAAEwAAAPgAAAAnAAAAV2xnMEhlYWRlcmNlbnRlcl9zY2FsZWNlbnRlcl9vZmZzZXRsbl9zY2FsZV9taW5sbl9zY2FsZV9tYXhudW1fc3BsYXRzbWF4X3NoX29yZGVybnVtX3NoX3NwbGF0cwAAtggQAAwAAADCCBAADQAAAM8IEAAMAAAA2wgQAAwAAADnCBAACgAAAPEIEAAMAAAA/QgQAA0AAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwBECRAAawAAAKIAAAAZAAAAVW5zdXBwb3J0ZWQgV0xHICFzZXR0aW5ncy5lbmFibGVfc3BsaXRfZGltcwDACRAAKwAAAHdsZy9zcmMvd2xnMC9kZWNvZGUucnMAAPQJEAAWAAAAnQAAACAAAABVbnN1cHBvcnRlZCBXTEcgIXNldHRpbmdzLmVuYWJsZV9zcGxpdF9jZW50ZXJfYnl0ZXMAHAoQADMAAAD0CRAAFgAAAKAAAAAmAAAA9AkQABYAAADYAAAAKAAAAEludmFsaWQgV0xHIGRhdGEgc2l6ZQAAAHgKEAAVAAAA9AkQABYAAADhAAAAHAAAAPQJEAAWAAAA4gAAABwAAAD0CRAAFgAAAOMAAAAcAAAA9AkQABYAAADcAAAAHAAAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3BsYXlSYXdSTEVDb21wcmVzc2VkUmVzZXJ2ZWQkAAAACAAAAAQAAAAlAAAAJAAAAAgAAAAEAAAAJgAAACUAAAAYCxAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAAIAAAAAgAAAAtAAAALAAAACAAAAAIAAAALgAAAC0AAABUCxAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAADAAAAAQAAAA1AAAANAAAAAwAAAAEAAAANgAAADUAAACQCxAANwAAADgAAAA5AAAAOgAAACsAAAAAAAAACAAAAAQAAAA7AAAAAAAAAAgAAAAEAAAAPAAAADsAAADMCxAANwAAAD0AAAA5AAAAPgAAACsAAAAAAAAABAAAAAQAAAA/AAAAAAAAAAQAAAAEAAAAQAAAAFRvb01hbnlCaXRzbnVtX3JlcXVlc3RlZF9iaXRzbGltaXQAAAAAAAAEAAAABAAAAEEAAABOb3RFbm91Z2hSZW1haW5pbmdCaXRzcmVxdWVzdGVkcmVtYWluaW5nQWNjTG9nSXNaZXJvAAAAAAEAAAABAAAAQgAAAEFjY0xvZ1Rvb0JpZ2dvdG1heAAAAAAAAAQAAAAEAAAAQwAAAEdldEJpdHNFcnJvcgAAAAAEAAAABAAAAEQAAAAAAAAABAAAAAQAAABFAAAAUHJvYmFiaWxpdHlDb3VudGVyTWlzbWF0Y2hleHBlY3RlZF9zdW1zeW1ib2xfcHJvYmFiaWxpdGllc1Rvb01hbnlTeW1ib2xzAAAAAAQAAAAEAAAARgAAAEJsb2NrU2l6ZVRvb0xhcmdlc2l6ZUludmFsaWRCbG9ja3R5cGVOdW1iZXJudW1UYWJsZUlzVW5pbml0aWFsaXplZAAAAAAAAAwAAAAEAAAARwAAAAAAAAAMAAAABAAAAEgAAABHAAAAjA0QADcAAABJAAAAOQAAAEoAAAArAAAAAAAAAAQAAAAEAAAASwAAAFdpbmRvd1Rvb0JpZ1dpbmRvd1Rvb1NtYWxsAAAAAAAABAAAAAQAAABMAAAARnJhbWVEZXNjcmlwdG9yRXJyb3JEaWN0SWRUb29TbWFsbGV4cGVjdGVkTWlzbWF0Y2hlZEZyYW1lU2l6ZUZyYW1lU2l6ZUlzWmVyb0ludmFsaWRGcmFtZVNpemVOb3RFbm91Z2hCeXRlc0luRGljdGlvbmFyeW5lZWRPZmZzZXRUb29CaWdvZmZzZXRidWZfbGVuAAAAAAAEAAAABAAAAE0AAABSZWFkRnJhbWVIZWFkZXJFcnJvcgAAAAAEAAAABAAAAE4AAABGcmFtZUhlYWRlckVycm9yV2luZG93U2l6ZVRvb0JpZwAAAAAEAAAABAAAAE8AAABEaWN0aW9uYXJ5RGVjb2RlRXJyb3IAAAAAAAAABAAAAAQAAABQAAAARmFpbGVkVG9SZWFkQmxvY2tIZWFkZXIAAAAAAAQAAAAEAAAAUQAAAEZhaWxlZFRvUmVhZEJsb2NrQm9keQAAAAAAAAAEAAAABAAAAFIAAABGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAAAAQAAAAEAAAAUwAAAEZTRURlY29kZXJFcnJvcgAAAAAABAAAAAQAAABUAAAARlNFVGFibGVFcnJvclNvdXJjZUlzRW1wdHlOb3RFbm91Z2hCeXRlc0ZvcldlaWdodHNnb3RfYnl0ZXNleHBlY3RlZF9ieXRlcwAAAAAAAAAEAAAABAAAAFUAAABFeHRyYVBhZGRpbmdza2lwcGVkX2JpdHNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c2hhdmVGU0VUYWJsZVVzZWRUb29NYW55Qnl0ZXN1c2VkYXZhaWxhYmxlX2J5dGVzTm90RW5vdWdoQnl0ZXNJblNvdXJjZVdlaWdodEJpZ2dlclRoYW5NYXhOdW1CaXRzTWF4Qml0c1Rvb0hpZ2gAAAAAAQAAAAEAAABWAAAAAAAAAAEAAAABAAAAVwAAAFYAAABgERAAWAAAAFkAAABaAAAAWwAAAFwAAABVbnN1cHBvcnRlZE9mZnNldG9mZnNldF9jb2RlWmVyb09mZnNldE5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzAAAAAAAEAAAABAAAAF0AAABFeHRyYUJpdHNiaXRzX3JlbWFpbmluZ01pc3NpbmdDb21wcmVzc2lvbk1vZGVNaXNzaW5nQnl0ZUZvclJsZUxsVGFibGVNaXNz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ZXJFcnJvcgAAAAAEAAAABAAAAE4AAABGcmFtZUhlYWRlckVycm9yV2luZG93U2l6ZVRvb0JpZwAAAAAEAAAABAAAAE8AAABEaWN0aW9uYXJ5RGVjb2RlRXJyb3IAAAAAAAAABAAAAAQAAABQAAAARmFpbGVkVG9SZWFkQmxvY2tIZWFkZXIAAAAAAAQAAAAEAAAAUQAAAEZhaWxlZFRvUmVhZEJsb2NrQm9keQAAAAAAAAAEAAAABAAAAFIAAABGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAAAAQAAAAEAAAAUwAAAEZTRURlY29kZXJFcnJvcgAAAAAABAAAAAQAAABUAAAARlNFVGFibGVFcnJvclNvdXJjZUlzRW1wdHlOb3RFbm91Z2hCeXRlc0ZvcldlaWdodHNnb3RfYnl0ZXNleHBlY3RlZF9ieXRlcwAAAAAAAAAEAAAABAAAAFUAAABFeHRyYVBhZGRpbmdza2lwcGVkX2JpdHNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c2hhdmVGU0VUYWJsZVVzZWRUb29NYW55Qnl0ZXN1c2VkYXZhaWxhYmxlX2J5dGVzTm90RW5vdWdoQnl0ZXNJblNvdXJjZVdlaWdodEJpZ2dlclRoYW5NYXhOdW1CaXRzTWF4Qml0c1Rvb0hpZ2gAAAAAAQAAAAEAAABWAAAAAAAAAAEAAAABAAAA/wAAAFYAAAD0IhAAAAEAAFkAAAABAQAAWwAAAAIBAABVbnN1cHBvcnRlZE9mZnNldG9mZnNldF9jb2RlWmVyb09mZnNldE5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzAAAAAAAEAAAABAAAAF0AAABFeHRyYUJpdHNiaXRzX3JlbWFpbmluZ01pc3NpbmdDb21wcmVzc2lvbk1vZGVNaXNzaW5nQnl0ZUZvclJsZUxsVGFibGVNaXNz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bEVuY29kaW5nSW52YWxpZENoYXJFbmNvZGluZwAAAAAAAAAEAAAABAAAAEEAAABJbnZhbGlkVGFnRW5jb2RpbmdEZXNlcmlhbGl6ZUFueU5vdFN1cHBvcnRlZFNpemVMaW1pdFNlcXVlbmNlTXVzdEhhdmVMZW5ndGgAAAAAAAQAAAAEAAAANQEAAEN1c3RvbU5vbmVTb21lUmF3UkxFQ29tcHJlc3NlZFJlc2VydmVkAAAAAAAABAAAAAQAAAA2AQAAVG9vTWFueUJpdHNudW1fcmVxdWVzdGVkX2JpdHNsaW1pdE5vdEVub3VnaFJlbWFpbmluZ0JpdHNyZXF1ZXN0ZWRyZW1haW5pbmdBY2NMb2dJc1plcm8AAAAAAAABAAAAAQAAADcBAABBY2NMb2dUb29CaWdnb3RtYXgAAAAAAAAEAAAABAAAAEMAAABHZXRCaXRzRXJyb3IAAAAABAAAAAQAAAA4AQAAAAAAAAQAAAAEAAAARQAAAFByb2JhYmlsaXR5Q291bnRlck1pc21hdGNoZXhwZWN0ZWRfc3Vtc3ltYm9sX3Byb2JhYmlsaXRpZXNUb29NYW55U3ltYm9scwAAAAAEAAAABAAAAEYAAABCbG9ja1NpemVUb29MYXJnZXNpemVJbnZhbGlkQmxvY2t0eXBlTnVtYmVybnVtVGFibGVJc1VuaW5pdGlhbGl6ZWQAAAAAAAAMAAAABAAAAEcAAAAAAAAADAAAAAQAAAA5AQAARwAAAHAwEAA6AQAASQAAADsBAABKAAAAPAEAAAAAAAAEAAAABAAAAEsAAABXaW5kb3dUb29CaWdXaW5kb3dUb29TbWFsbAAAAAAAAAQAAAAEAAAATAAAAEZyYW1lRGVzY3JpcHRvckVycm9yRGljdElkVG9vU21hbGxleHBlY3RlZE1pc21hdGNoZWRGcmFtZVNpemVGcmFtZVNpemVJc1plcm9JbnZhbGlkRnJhbWVTaXplTm90RW5vdWdoQnl0ZXNJbkRpY3Rpb25hcnluZWVkT2Zmc2V0VG9vQmlnb2Zmc2V0YnVmX2xlbgAAAAAABAAAAAQAAABNAAAAUmVhZEZyYW1lSGVhZGVyRXJyb3IAAAAABAAAAAQAAABOAAAARnJhbWVIZWFkZXJFcnJvcldpbmRvd1NpemVUb29CaWcAAAAABAAAAAQAAABPAAAARGljdGlvbmFyeURlY29kZUVycm9yAAAAAAAAAAQAAAAEAAAAUAAAAEZhaWxlZFRvUmVhZEJsb2NrSGVhZGVyAAAAAAAEAAAABAAAAFEAAABGYWlsZWRUb1JlYWRCbG9ja0JvZHlGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAABAAAAAQAAABTAAAARlNFRGVjb2RlckVycm9yAAAAAAAEAAAABAAAAFQAAABGU0VUYWJsZUVycm9yU291cmNlSXNFbXB0eU5vdEVub3VnaEJ5dGVzRm9yV2VpZ2h0c2dvdF9ieXRlc2V4cGVjdGVkX2J5dGVzRXh0cmFQYWRkaW5nc2tpcHBlZF9iaXRzVG9vTWFueVdlaWdodHNNaXNzaW5nV2VpZ2h0c0xlZnRvdmVySXNOb3RBUG93ZXJPZjJOb3RFbm91Z2hCeXRlc1RvRGVjb21wcmVzc1dlaWdodHNoYXZlRlNFVGFibGVVc2VkVG9vTWFueUJ5dGVzdXNlZGF2YWlsYWJsZV9ieXRlc05vdEVub3VnaEJ5dGVzSW5Tb3VyY2VXZWlnaHRCaWdnZXJUaGFuTWF4TnVtQml0c01heEJpdHNUb29IaWdoAAAAAAAAAAEAAAABAAAAVgAAAAAAAAABAAAAAQAAAD0BAABWAAAAIDQQAD4BAABZAAAAPwEAAFsAAABAAQAAVW5zdXBwb3J0ZWRPZmZzZXRvZmZzZXRfY29kZVplcm9PZmZzZXROb3RFbm91Z2hCeXRlc0Zvck51bVNlcXVlbmNlcwAAAAAABAAAAAQAAABdAAAARXh0cmFCaXRzYml0c19yZW1haW5pbmdNaXNzaW5nQ29tcHJlc3Npb25Nb2RlTWlzc2luZ0J5dGVGb3JSbGVMbFRhYmxlTWlzc2luZ0J5dGVGb3JSbGVPZlRhYmxlTWlzc2luZ0J5dGVGb3JSbGVNbFRhYmxlAAAAQQEAAAwAAAAEAAAAXwAAAEEBAAAMAAAABAAAAEIBAABfAAAAKDUQAEMBAABiAAAAOwEAAGMAAAA8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YWxzbmVlZGVkAAAAAAAABAAAAAQAAABjAQAAQml0c3RyZWFtUmVhZE1pc21hdGNocmVhZF90aWxEZWNvZGVkTGl0ZXJhbENvdW50TWlzbWF0Y2hkZWNvZGVkAGQBAAAUAAAABAAAALQAAABkAQAAFAAAAAQAAABlAQAAtAAAAMQ8EABmAQAAtwAAADsBAAC4AAAAPAEAAAAAAAAMAAAABAAAALkAAAAAAAAADAAAAAQAAABnAQAAuQAAAAA9EAA6AQAAuwAAADsBAABKAAAAPAEAAGgBAAAYAAAABAAAAL0AAABoAQAAGAAAAAQAAABpAQAAvQAAADw9EABqAQAAwAAAADsBAADBAAAAPAEAAAAAAAAMAAAABAAAAMIAAAAAAAAADAAAAAQAAABrAQAAwgAAAHg9EABsAQAAxQAAADsBAADGAAAAPAEAAElsbGVnYWxMaXRlcmFsU2VjdGlvblR5cGVOb3RFbm91Z2hCeXRlc25lZWRfYXRfbGVhc3QDAAAAAwAAAAoAAAAIAAAA8i4QAPUuEAD4LhAAAi8QAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnMAAAAIPhAAbQAAACoCAAARAAAAYW4gYXJyYXkgb2YgbGVuZ3RoIDQAAAAAAAAAAAEAAABtAQBBtP3AAAv1KAEAAABtAQAAAAAAAAgAAAAEAAAAbgEAAHN0cnVjdCBXbGcwSGVhZGVyIHdpdGggNyBlbGVtZW50cwAAAMw+EAAhAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBPbmNlIHN0YXRl+D4QADwAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvb25jZS9ub190aHJlYWRzLnJzPD8QAHwAAAA1AAAAEgAAAGZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcgDIPxAAGwAAACUAAAACAAAA5D8QAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZGVjb2RpbmcvYmxvY2tfZGVjb2Rlci5yc0J1ZyBpbiB0aGlzIGxpYnJhcnkA+D8QAGwAAACYAAAAFgAAAFdyb25nIG51bWJlciBvZiBsaXRlcmFsczogLCBTaG91bGQgaGF2ZSBiZWVuOiAAAIhAEAAaAAAAokAQABQAAAD4PxAAbAAAAK0AAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogYnl0ZXNfdXNlZF9pbl9saXRlcmFsc19zZWN0aW9uID09IHVwcGVyX2xpbWl0X2Zvcl9saXRlcmFscyBhcyB1MzIA+D8QAGwAAACzAAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHUzMjo6ZnJvbShieXRlc19pbl9saXRlcmFsc19oZWFkZXIpICsgYnl0ZXNfdXNlZF9pbl9saXRlcmFsc19zZWN0aW9uICsKICAgICAgICAgICAgdTMyOjpmcm9tKGJ5dGVzX2luX3NlcXVlbmNlX2hlYWRlcikgKyByYXcubGVuKCkgYXMgdTMyID09CiAgICBoZWFkZXIuY29udGVudF9zaXplAAD4PxAAbAAAAMEAAAAJAAAA+D8QAGwAAAC6AAAAFwAAAPg/EABsAAAAiwAAABcAAABIb3cgZGlkIHlvdSBldmVuIGdldCB0aGlzLiBUaGUgZGVjb2RlciBzaG91bGQgZXJyb3Igb3V0IGlmIGl0IGRldGVjdHMgYSByZXNlcnZlZC10eXBlIGJsb2NrAPg/EABsAAAAcAAAABEAAABmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAkEIQABsAAAAlAAAAAgAAAKxCEABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5AAAAAAQAAAAEAAAAbwEAAAAAAAAEAAAABAAAAHABAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlblJhd1JMRUNvbXByZXNzZWRSZXNlcnZlZAAAAAAAAAAEAAAABAAAAEAAAABUb29NYW55Qml0c251bV9yZXF1ZXN0ZWRfYml0c2xpbWl0AAAAAAAABAAAAAQAAABBAAAATm90RW5vdWdoUmVtYWluaW5nQml0c3JlcXVlc3RlZHJlbWFpbmluZ0FjY0xvZ0lzWmVybwAAAAABAAAAAQAAAHEBAABBY2NMb2dUb29CaWdnb3RtYXgAAAAAAAAEAAAABAAAAEMAAABHZXRCaXRzRXJyb3IAAAAABAAAAAQAAAByAQAAAAAAAAQAAAAEAAAARQAAAFByb2JhYmlsaXR5Q291bnRlck1pc21hdGNoZXhwZWN0ZWRfc3Vtc3ltYm9sX3Byb2JhYmlsaXRpZXNUb29NYW55U3ltYm9scwAAAAAEAAAABAAAAEYAAABCbG9ja1NpemVUb29MYXJnZXNpemVJbnZhbGlkQmxvY2t0eXBlTnVtYmVybnVtVGFibGVJc1VuaW5pdGlhbGl6ZWQAAAAAAAAMAAAABAAAAEcAAAAAAAAADAAAAAQAAABzAQAARwAAALREEABKAAAASQAAAHQBAABKAAAAdQEAAAAAAAAEAAAABAAAAEsAAABXaW5kb3dUb29CaWdXaW5kb3dUb29TbWFsbAAAAAAAAAQAAAAEAAAATAAAAEZyYW1lRGVzY3JpcHRvckVycm9yRGljdElkVG9vU21hbGxleHBlY3RlZE1pc21hdGNoZWRGcmFtZVNpemVGcmFtZVNpemVJc1plcm9JbnZhbGlkRnJhbWVTaXplTm90RW5vdWdoQnl0ZXNJbkRpY3Rpb25hcnluZWVkT2Zmc2V0VG9vQmlnb2Zmc2V0YnVmX2xlbgAAAAAABAAAAAQAAABTAAAARlNFRGVjb2RlckVycm9yAAAAAAAEAAAABAAAAFQAAABGU0VUYWJsZUVycm9yU291cmNlSXNFbXB0eU5vdEVub3VnaEJ5dGVzRm9yV2VpZ2h0c2dvdF9ieXRlc2V4cGVjdGVkX2J5dGVzAAAAAAAAAAQAAAAEAAAAVQAAAEV4dHJhUGFkZGluZ3NraXBwZWRfYml0c1Rvb01hbnlXZWlnaHRzTWlzc2luZ1dlaWdodHNMZWZ0b3ZlcklzTm90QVBvd2VyT2YyTm90RW5vdWdoQnl0ZXNUb0RlY29tcHJlc3NXZWlnaHRzaGF2ZUZTRVRhYmxlVXNlZFRvb01hbnlCeXRlc3VzZWRhdmFpbGFibGVfYnl0ZXNOb3RFbm91Z2hCeXRlc0luU291cmNlV2VpZ2h0QmlnZ2VyVGhhbk1heE51bUJpdHNNYXhCaXRzVG9vSGlnaAAAAAABAAAAAQAAAFYAAAAAAAAAAQAAAAEAAAB2AQAAVgAAACRHEABbAAAAWQAAAHcBAABbAAAAeAEAAFVuc3VwcG9ydGVkT2Zmc2V0b2Zmc2V0X2NvZGVaZXJvT2Zmc2V0Tm90RW5vdWdoQnl0ZXNGb3JOdW1TZXF1ZW5jZXMAAAAAAAQAAAAEAAAAXQAAAEV4dHJhQml0c2JpdHNfcmVtYWluaW5nTWlzc2luZ0NvbXByZXNzaW9uTW9kZU1pc3NpbmdCeXRlRm9yUmxlTGxUYWJsZU1pc3NpbmdCeXRlRm9yUmxlT2ZUYWJsZU1pc3NpbmdCeXRlRm9yUmxlTWxUYWJsZQAAAHkBAAAMAAAABAAAAF8AAAB5AQAADAAAAAQAAAB6AQAAXwAAACxIEAB7AQAAYgAAAHQBAABjAAAAdQEAAAAAAAAQAAAACAAAAGQAAAAAAAAAEAAAAAgAAAB8AQAAZAAAAGhIEAB9AQAAZwAAAH4BAABoAAAAfwEAAIABAAAYAAAABAAAAGoAAACAAQAAGAAAAAQAAACBAQAAagAAAKRIEACCAQAAbQAAAHQBAABuAAAAdQEAAIMBAAAIAAAABAAAAHAAAACDAQAACAAAAAQAAACEAQAAcAAAAOBIEACFAQAAcwAAAHQBAAB0AAAAdQEAAIYBAAAYAAAABAAAAHYAAACGAQAAGAAAAAQAAACHAQAAdgAAABxJEACIAQAAeQAAAHQBAAB6AAAAdQEAAIkBAAAIAAAABAAAACUAAACJAQAACAAAAAQAAAAmAAAAJQAAAFhJEAAnAAAAKAAAACkAAAAqAAAAdQEAAAAAAAAMAAAABAAAAHsAAAAAAAAADAAAAAQAAACKAQAAewAAAJRJEACLAQAAfgAAAHQBAAB/AAAAdQEAAIwBAAAUAAAABAAAAIEAAACMAQAAFAAAAAQAAACNAQAAgQAAANBJEACOAQAAhAAAAHQBAACFAAAAdQEAAAAAAAAEAAAABAAAAFIAAABSZWFkRXJyb3JGb3VuZFJlc2VydmVkQmxvY2sAAAAAAAQAAAAEAAAAhgAAAEJsb2NrVHlwZUVycm9yAAAAAAAABAAAAAQAAACHAAAAQmxvY2tTaXplRXJyb3JCbG9ja0NvbnRlbnRSZWFkRXJyb3JNYWxmb3JtZWRTZWN0aW9uSGVhZGVyZXhwZWN0ZWRfbGVucmVtYWluaW5nX2J5dGVzAAAAAAQAAAAEAAAAiAAAAERlY29tcHJlc3NMaXRlcmFsc0Vycm9yAAAAAAAEAAAABAAAAIkAAABMaXRlcmFsc1NlY3Rpb25QYXJzZUVycm9yAAAAAAAAAAQAAAAEAAAAigAAAFNlcXVlbmNlc0hlYWRlclBhcnNlRXJyb3IAAAAAAAAABAAAAAQAAACLAAAARGVjb2RlU2VxdWVuY2VFcnJvcgAAAAAABAAAAAQAAACMAAAARXhlY3V0ZVNlcXVlbmNlc0Vycm9ySW52YWxpZEZyYW1lQ29udGVudFNpemVGbGFnTWFnaWNOdW1iZXJSZWFkRXJyb3JCYWRNYWdpY051bWJlckZyYW1lRGVzY3JpcHRvclJlYWRFcnJvckludmFsaWRGcmFtZURlc2NyaXB0b3JXaW5kb3dEZXNjcmlwdG9yUmVhZEVycm9yRGljdGlvbmFyeUlkUmVhZEVycm9yRnJhbWVDb250ZW50U2l6ZVJlYWRFcnJvclNraXBGcmFtZW1hZ2ljX251bWJlcmxlbmd0aAAAAAAAAAQAAAAEAAAAjQAAAEJhZE1hZ2ljTnVtAAAAAAAEAAAABAAAAI4AAABIdWZmbWFuVGFibGVFcnJvcgAAAAAAAAAEAAAABAAAAI8AAABEZWNvZGVidWZmZXJFcnJvck5vdEVub3VnaEJ5dGVzRm9yU2VxdWVuY2V3YW50ZWQAAAAAAQAAAAEAAACQAAAAAAAAAAEAAAABAAAAjwEAAJAAAADUTBAAWwAAAJIAAAB3AQAAWwAAAHgBAAAAAAAABAAAAAQAAACTAAAAAAAAAAQAAAAEAAAAkAEAAJMAAAAQTRAASgAAAJUAAAB0AQAASgAAAHUBAACRAQAAFAAAAAQAAACXAAAAkQEAABQAAAAEAAAAkgEAAJcAAABMTRAAkwEAAJoAAAB0AQAAmwAAAHUBAAAAAAAADAAAAAQAAACcAAAAAAAAAAwAAAAEAAAAlAEAAJwAAACITRAAlQEAAJ8AAAB0AQAAoAAAAHUBAAAAAAAACAAAAAQAAAChAAAAAAAAAAgAAAAEAAAAlgEAAKEAAADETRAASgAAAKMAAAB0AQAASgAAAHUBAACXAQAAFAAAAAQAAAClAAAAlwEAABQAAAAEAAAAmAEAAKUAAAAAThAAmQEAAKgAAAB0AQAAqQAAAHUBAAAAAAAADAAAAAQAAACqAAAAAAAAAAwAAAAEAAAAmgEAAKoAAAA8ThAAmwEAAK0AAAB0AQAArgAAAHUBAABEZWNvZGVyU3RhdGVJc0ZhaWxlZEV4cGVjdGVkSGVhZGVyT2ZQcmV2aW91c0Jsb2NrAAAAAAAAAAEAAAABAAAAnAEAAHN0ZXBzb3VyY2UAAAAAAAAEAAAABAAAALAAAABEZWNvbXByZXNzQmxvY2tFcnJvck1pc3NpbmdDb21wcmVzc2VkU2l6ZU1pc3NpbmdOdW1TdHJlYW1zAAAAAAAABAAAAAQAAACxAAAASHVmZm1hbkRlY29kZXJFcnJvclVuaW5pdGlhbGl6ZWRIdWZmbWFuVGFibGVNaXNzaW5nQnl0ZXNGb3JKdW1wSGVhZGVyTWlzc2luZ0J5dGVzRm9yTGl0ZXJhbHNuZWVkZWQAAAAAAAAEAAAABAAAAJ0BAABCaXRzdHJlYW1SZWFkTWlzbWF0Y2hyZWFkX3RpbERlY29kZWRMaXRlcmFsQ291bnRNaXNtYXRjaGRlY29kZWQAngEAABQAAAAEAAAAtAAAAJ4BAAAUAAAABAAAAJ8BAAC0AAAA2E8QAKABAAC3AAAAdAEAALgAAAB1AQAAAAAAAAwAAAAEAAAAuQAAAAAAAAAMAAAABAAAAKEBAAC5AAAAFFAQAEoAAAC7AAAAdAEAAEoAAAB1AQAAogEAABgAAAAEAAAAvQAAAKIBAAAYAAAABAAAAKMBAAC9AAAAUFAQAKQBAADAAAAAdAEAAMEAAAB1AQAAAAAAAAwAAAAEAAAAwgAAAAAAAAAMAAAABAAAAKUBAADCAAAAjFAQAMYAAADFAAAAdAEAAMYAAAB1AQAASWxsZWdhbExpdGVyYWxTZWN0aW9uVHlwZU5vdEVub3VnaEJ5dGVzbmVlZF9hdF9sZWFzdAMAAAADAAAACgAAAAgAAAAlQxAAKEMQACtDEAA1QxAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAAHFEQAGoAAACyAQAAMQAAAGFzc2VydGlvbiBmYWlsZWQ6IGZpbGxlZCA8PSBzZWxmLmJ1Zi5pbml0L1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9jb3JlL3NyYy9pby9ib3Jyb3dlZF9idWYucnMAAADBURAAdAAAAB0BAAAJAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnNIUhAAgAAAAFgCAAAwAAAASW52YWxpZCBGcmFtZV9Db250ZW50X1NpemVfRmxhZzsgSXM6ICwgU2hvdWxkIGJlIG9uZSBvZjogMCwgMSwgMiwgMwDYUhAAJQAAAP1SEAAeAEG0psEAC8piwAMAAHdpbmRvd19zaXplIGJpZ2dlciB0aGFuIGFsbG93ZWQgbWF4aW11bS4gSXM6ICwgU2hvdWxkIGJlIGxvd2VyIHRoYW46IAAAADhTEAAtAAAAZVMQABgAAAAABAAAAAAAAHdpbmRvd19zaXplIHNtYWxsZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0uIElzOiAsIFNob3VsZCBiZSBncmVhdGVyIHRoYW46IJhTEAAuAAAAxlMQABoAAAABAAAAAAAAAE5vdCBlbm91Z2ggYnl0ZXMgaW4gZGljdF9pZC4gSXM6ICwgU2hvdWxkIGJlOiAAAPhTEAAhAAAAGVQQAA0AAABmcmFtZV9jb250ZW50X3NpemUgZG9lcyBub3QgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoLiBJczogADhUEAA3AAAAGVQQAA0AAABmcmFtZV9jb250ZW50X3NpemUgd2FzIHplcm9JbnZhbGlkIGZyYW1lX2NvbnRlbnRfc2l6ZS4gSXM6ICwgU2hvdWxkIGJlIG9uZSBvZiAxLCAyLCA0LCA4IGJ5dGVzAACbVBAAIAAAALtUEAAjAAAARXJyb3Igd2hpbGUgcmVhZGluZyBtYWdpYyBudW1iZXI6IAAA8FQQACIAAABSZWFkIHdyb25nIG1hZ2ljIG51bWJlcjogMHgAHFUQABsAAABFcnJvciB3aGlsZSByZWFkaW5nIGZyYW1lIGRlc2NyaXB0b3I6IAAAQFUQACYAAABFcnJvciB3aGlsZSByZWFkaW5nIHdpbmRvdyBkZXNjcmlwdG9yOiAAcFUQACcAAABFcnJvciB3aGlsZSByZWFkaW5nIGRpY3Rpb25hcnkgaWQ6IACgVRAAIwAAAEVycm9yIHdoaWxlIHJlYWRpbmcgZnJhbWUgY29udGVudCBzaXplOiDMVRAAKAAAAFNraXBwYWJsZUZyYW1lIGVuY291bnRlcmVkIHdpdGggTWFnaWNOdW1iZXIgMHggYW5kIGxlbmd0aCAgYnl0ZXP8VRAALgAAACpWEAAMAAAANlYQAAYAAABFcnJvciB3aGlsZSByZWFkaW5nIHRoZSBibG9jayBoZWFkZXJSZXNlcnZlZCBibG9jayBvY2N1cmVkLiBUaGlzIGlzIGNvbnNpZGVyZWQgY29ycnVwdGlvbiBieSB0aGUgZG9jdW1lbnRhdGlvbkVycm9yIGdldHRpbmcgYmxvY2sgdHlwZTogwlYQABoAAABFcnJvciBnZXR0aW5nIGJsb2NrIGNvbnRlbnQgc2l6ZTogAADkVhAAIgAAAEludmFsaWQgQmxvY2t0eXBlIG51bWJlci4gSXM6ICBTaG91bGQgYmUgb25lIG9mOiAwLCAxLCAyLCAzICgzIGlzIHJlc2VydmVkIHRob3VnaAAAABBXEAAeAAAALlcQADMAAAAAAAIAQmxvY2tzaXplIHdhcyBiaWdnZXIgdGhhbiB0aGUgYWJzb2x1dGUgbWF4aW11bSAgKDEyOGtiKS4gSXM6IAAAAHhXEAAvAAAAp1cQAA4AAABFcnJvciB3aGlsZSByZWFkaW5nIHRoZSBibG9jayBjb250ZW50OiAAyFcQACcAAABNYWxmb3JtZWQgc2VjdGlvbiBoZWFkZXIuIFNheXMgbGl0ZXJhbHMgd291bGQgYmUgdGhpcyBsb25nOiAgYnV0IHRoZXJlIGFyZSBvbmx5ICBieXRlcyBsZWZ0APhXEAA8AAAANFgQABQAAABIWBAACwAAAENhbid0IGRlY29kZSBuZXh0IGJsb2NrIGlmIGZhaWxlZCBhbG9uZyB0aGUgd2F5LiBSZXN1bHRzIHdpbGwgYmUgbm9uc2Vuc2VDYW4ndCBkZWNvZGUgbmV4dCBibG9jayBib2R5LCB3aGlsZSBleHBlY3RpbmcgdG8gZGVjb2RlIHRoZSBoZWFkZXIgb2YgdGhlIHByZXZpb3VzIGJsb2NrLiBSZXN1bHRzIHdpbGwgYmUgbm9uc2Vuc2VFcnJvciB3aGlsZSByZWFkaW5nIGJ5dGVzIGZvciA6IAAnWRAAHgAAAEVZEAACAAAATmVlZCAgYnl0ZXMgZnJvbSB0aGUgZGljdGlvbmFyeSBidXQgaXQgaXMgb25seSAgYnl0ZXMgbG9uZwAAWFkQAAUAAABdWRAAKgAAAIdZEAALAAAAb2Zmc2V0OiAgYmlnZ2VyIHRoYW4gYnVmZmVyOiAAAACsWRAACAAAALRZEAAVAAAAQmFkIG1hZ2ljX251bSBhdCBzdGFydCBvZiB0aGUgZGljdGlvbmFyeTsgR290OiAsIEV4cGVjdGVkOiAA3FkQAC8AAAALWhAADAAAADekMOxTcGVjaWZpZWQgd2luZG93X3NpemUgaXMgdG9vIGJpZzsgUmVxdWVzdGVkOiAsIE1heDogLFoQAC0AAABZWhAABwAAAEZhaWxlZCB0byBwYXJzZS9kZWNvZGUgYmxvY2sgYm9keTogAHBaEAAjAAAARmFpbGVkIHRvIHBhcnNlIGJsb2NrIGhlYWRlcjogAACcWhAAHgAAAEZhaWxlZCB0byByZWFkIGNoZWNrc3VtOiAAAADEWhAAGQAAAERlY29kZXIgbXVzdCBpbml0aWFsaXplZCBvciByZXNldCBiZWZvcmUgdXNpbmcgaXREZWNvZGVyIGVuY291bnRlcmVkIGVycm9yIHdoaWxlIGluaXRpYWxpemluZzogABlbEAAuAAAARGVjb2RlciBlbmNvdW50ZXJlZCBlcnJvciB3aGlsZSBkcmFpbmluZyB0aGUgZGVjb2RlYnVmZmVyOiAAUFsQADsAAABGYWlsZWQgdG8gc2tpcCBieXRlcyBmb3IgdGhlIGxlbmd0aCBnaXZlbiBpbiB0aGUgZnJhbWUgaGVhZGVyVGFyZ2V0IG11c3QgaGF2ZSBhdCBsZWFzdCBhcyBtYW55IGJ5dGVzIGFzIHRoZSBjb250ZW50c2l6ZSBvZiB0aGUgZnJhbWUgcmVwb3J0c0ZyYW1lIGhlYWRlciBzcGVjaWZpZWQgZGljdGlvbmFyeSBpZCAweCB0aGF0IHdhc250IHByb3ZpZGVkIGJ5IGFkZF9kaWN0KCkgb3IgcmVzZXRfd2l0aF9kaWN0KCkAACBcEAAnAAAAR1wQADcAAABjb21wcmVzc2VkIHNpemUgd2FzIG5vbmUgZXZlbiB0aG91Z2ggaXQgbXVzdCBiZSBzZXQgdG8gc29tZXRoaW5nIGZvciBjb21wcmVzc2VkIGxpdGVyYWxzbnVtX3N0cmVhbXMgd2FzIG5vbmUgZXZlbiB0aG91Z2ggaXQgbXVzdCBiZSBzZXQgdG8gc29tZXRoaW5nICgxIG9yIDQpIGZvciBjb21wcmVzc2VkIGxpdGVyYWxzVHJpZWQgdG8gcmV1c2UgaHVmZm1hbiB0YWJsZSBidXQgaXQgd2FzIG5ldmVyIGluaXRpYWxpemVkTmVlZCA2IGJ5dGVzIHRvIGRlY29kZSBqdW1wIGhlYWRlciwgZ290IAAAfl0QACgAAAA2VhAABgAAAE5lZWQgYXQgbGVhc3QgIGJ5dGVzIHRvIGRlY29kZSBsaXRlcmFscy4gSGF2ZTogALhdEAAOAAAAxl0QACEAAAA2VhAABgAAAFBhZGRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2Vfc2VjdGlvbiB3YXMgbW9yZSB0aGFuIGEgYnl0ZSBsb25nOiAgYml0cy4gUHJvYmFibHkgY2F1c2VkIGJ5IGRhdGEgY29ycnVwdGlvbgAAXhAARgAAAEZeEAApAAAAQml0c3RyZWFtIHdhcyByZWFkIHRpbGw6ICwgc2hvdWxkIGhhdmUgYmVlbjogAAAAgF4QABkAAACZXhAAFAAAAERpZCBub3QgZGVjb2RlIGVub3VnaCBsaXRlcmFsczogLCBTaG91bGQgaGF2ZSBiZWVuOiDAXhAAIAAAAOBeEAAUAAAAU2VxdWVuY2Ugd2FudHMgdG8gY29weSB1cCB0byBieXRlIC4gQnl0ZXMgaW4gbGl0ZXJhbHNidWZmZXI6IAAAAARfEAAiAAAAJl8QABsAAABJbGxlZ2FsIG9mZnNldDogMCBmb3VuZERvIG5vdCBzdXBwb3J0IG9mZnNldHMgYmlnZ2VyIHRoYW4gMTw8MzI7IGdvdDogAABrXxAALwAAAFJlYWQgYW4gb2Zmc2V0ID09IDAuIFRoYXQgaXMgYW4gaWxsZWdhbCB2YWx1ZSBmb3Igb2Zmc2V0c0J5dGVzdHJlYW0gZGlkIG5vdCBjb250YWluIGVub3VnaCBieXRlcyB0byBkZWNvZGUgbnVtX3NlcXVlbmNlc2NvbXByZXNzaW9uIG1vZGVzIGFyZSBub25lIGJ1dCB0aGV5IG11c3QgYmUgc2V0IHRvIHNvbWV0aGluZ05lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBsbCB0YWJsZU5lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBvZiB0YWJsZU5lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBtbCB0YWJsZUlsbGVnYWwgbGl0ZXJhbHNzZWN0aW9udHlwZS4gSXM6ICwgbXVzdCBiZSBpbjogMCwgMSwgMiwgMwAAAMRgEAAhAAAA5WAQABgAAABOb3QgZW5vdWdoIGJ5dGUgdG8gcGFyc2UgdGhlIGxpdGVyYWxzIHNlY3Rpb24gaGVhZGVyLiBIYXZlOiAsIE5lZWQ6IBBhEAA8AAAATGEQAAgAAABzb3VyY2UgbXVzdCBoYXZlIGF0IGxlYXN0ICBieXRlcyB0byBwYXJzZSBoZWFkZXI7IGdvdCAAAGRhEAAaAAAAfmEQABwAAAA2VhAABgAAAEFjY2xvZyBtdXN0IGJlIGF0IGxlYXN0IDFGb3VuZCBGU0UgYWNjX2xvZzogIGJpZ2dlciB0aGFuIGFsbG93ZWQgbWF4aW11bSBpbiB0aGlzIGNhc2U6IADNYRAAEwAAAOBhEAArAAAAVGhlIGNvdW50ZXIgKCkgZXhjZWVkZWQgdGhlIGV4cGVjdGVkIHN1bTogLiBUaGlzIG1lYW5zIGFuIGVycm9yIG9yIGNvcnJ1cHRlZCBkYXRhIAogHGIQAA0AAAApYhAAHQAAAEZiEAAqAAAAVGhlcmUgYXJlIHRvbyBtYW55IHN5bWJvbHMgaW4gdGhpcyBkaXN0cmlidXRpb246IC4gTWF4OiAyNTYAiGIQADEAAAC5YhAACgAAAFRyaWVkIHRvIHVzZSBhbiB1bmluaXRpYWxpemVkIHRhYmxlIVNvdXJjZSBuZWVkcyB0byBoYXZlIGF0IGxlYXN0IG9uZSBieXRlSGVhZGVyIHNheXMgdGhlcmUgc2hvdWxkIGJlICBieXRlcyBmb3IgdGhlIHdlaWdodHMgYnV0IHRoZXJlIGFyZSBvbmx5ICBieXRlcyBpbiB0aGUgc3RyZWFtHmMQABwAAAA6YxAAKgAAAGRjEAAUAAAATW9yZSB0aGFuIDI1NSB3ZWlnaHRzIGRlY29kZWQgKGdvdCAgd2VpZ2h0cykuIFN0cmVhbSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAAJBjEAAjAAAAs2MQACcAAABDYW4ndCBidWlsZCBodWZmbWFuIHRhYmxlIHdpdGhvdXQgYW55IHdlaWdodHNMZWZ0b3ZlciBtdXN0IGJlIHBvd2VyIG9mIHR3byBidXQgaXM6IAAZZBAAJgAAAE5vdCBlbm91Z2ggYnl0ZXMgaW4gc3RyZWFtIHRvIGRlY29tcHJlc3Mgd2VpZ2h0cy4gSXM6IAAASGQQADYAAAAZVBAADQAAAEZTRSB0YWJsZSB1c2VkIG1vcmUgYnl0ZXM6ICB0aGFuIHdlcmUgbWVhbnQgdG8gYmUgdXNlZCBmb3IgdGhlIHdob2xlIHN0cmVhbSBvZiBodWZmbWFuIHdlaWdodHMgKCkAAACQZBAAGwAAAKtkEABFAAAA8GQQAAEAAABTb3VyY2UgbmVlZHMgdG8gaGF2ZSBhdCBsZWFzdCAgYnl0ZXMsIGdvdDogAAxlEAAeAAAAKmUQAA0AAAALQ2FudCBoYXZlIHdlaWdodDogIGJpZ2dlciB0aGFuIG1heF9udW1fYml0czogAABJZRAAEgAAAFtlEAAbAAAAbWF4X2JpdHMgZGVyaXZlZCBmcm9tIHdlaWdodHMgaXM6ICBzaG91bGQgYmUgbG93ZXIgdGhhbjogAAAAiGUQACIAAACqZRAAFwAAAENhbnQgc2VydmUgdGhpcyByZXF1ZXN0LiBUaGUgcmVhZGVyIGlzIGxpbWl0ZWQgdG8gIGJpdHMsIHJlcXVlc3RlZCAgYml0c9RlEAAyAAAABmYQABEAAAAXZhAABQAAAENhbid0IHJlYWQgIGJpdHMsIG9ubHkgaGF2ZSAgYml0cyBsZWZ0AAA0ZhAACwAAAD9mEAARAAAAUGYQAAoAAAAAAAAABAAAAAQAAADJAQAAAAAAAAQAAAAEAAAAygEAAFRvb01hbnlCaXRzbnVtX3JlcXVlc3RlZF9iaXRzbGltaXQAAAAAAAAEAAAABAAAAMsBAABOb3RFbm91Z2hSZW1haW5pbmdCaXRzcmVxdWVzdGVkcmVtYWluaW5nSW52YWxpZEZyYW1lQ29udGVudFNpemVGbGFnZ290AAAAAAAABAAAAAQAAADMAQAAV2luZG93VG9vQmlnV2luZG93VG9vU21hbGwAAAAAAAAEAAAABAAAAK4BAABGcmFtZURlc2NyaXB0b3JFcnJvckRpY3RJZFRvb1NtYWxsZXhwZWN0ZWRNaXNtYXRjaGVkRnJhbWVTaXplRnJhbWVTaXplSXNaZXJvSW52YWxpZEZyYW1lU2l6ZQAAAAAEAAAABAAAAM0BAABNYWdpY051bWJlclJlYWRFcnJvcgAAAAAEAAAABAAAAM4BAABCYWRNYWdpY051bWJlckZyYW1lRGVzY3JpcHRvclJlYWRFcnJvckludmFsaWRGcmFtZURlc2NyaXB0b3JXaW5kb3dEZXNjcmlwdG9yUmVhZEVycm9yRGljdGlvbmFyeUlkUmVhZEVycm9yRnJhbWVDb250ZW50U2l6ZVJlYWRFcnJvcgAAAAAABAAAAAQAAADPAQAAU2tpcEZyYW1lbWFnaWNfbnVtYmVybGVuZ3RoQmxvY2tDb250ZW50UmVhZEVycm9yTWFsZm9ybWVkU2VjdGlvbkhlYWRlcmV4cGVjdGVkX2xlbnJlbWFpbmluZ19ieXRlcwAAAAAAAAAEAAAABAAAALIBAABEZWNvbXByZXNzTGl0ZXJhbHNFcnJvcgAAAAAABAAAAAQAAACzAQAATGl0ZXJhbHNTZWN0aW9uUGFyc2VFcnJvcgAAAAAAAAAEAAAABAAAALQBAABTZXF1ZW5jZXNIZWFkZXJQYXJzZUVycm9yAAAAAAAAAAQAAAAEAAAAtQEAAERlY29kZVNlcXVlbmNlRXJyb3IAAAAAAAQAAAAEAAAAtgEAAEV4ZWN1dGVTZXF1ZW5jZXNFcnJvck5vdEVub3VnaEJ5dGVzSW5EaWN0aW9uYXJ5bmVlZE9mZnNldFRvb0JpZ29mZnNldGJ1Zl9sZW4AAAAABAAAAAQAAAC4AQAAQmFkTWFnaWNOdW0AAAAAAAQAAAAEAAAAuQEAAEZTRVRhYmxlRXJyb3IAAAAAAAAABAAAAAQAAAC6AQAASHVmZm1hblRhYmxlRXJyb3JNaXNzaW5nQ29tcHJlc3NlZFNpemVNaXNzaW5nTnVtU3RyZWFtcwAAAAAABAAAAAQAAADBAQAAR2V0Qml0c0Vycm9yAAAAAAQAAAAEAAAAwgEAAEh1ZmZtYW5EZWNvZGVyRXJyb3JVbmluaXRpYWxpemVkSHVmZm1hblRhYmxlTWlzc2luZ0J5dGVzRm9ySnVtcEhlYWRlck1pc3NpbmdCeXRlc0ZvckxpdGVyYWxzbmVlZGVkAAAAAAAABAAAAAQAAADQAQAARXh0cmFQYWRkaW5nc2tpcHBlZF9iaXRzAAAAAAQAAAAEAAAA0QEAAAAAAAAEAAAABAAAANIBAABCaXRzdHJlYW1SZWFkTWlzbWF0Y2hyZWFkX3RpbERlY29kZWRMaXRlcmFsQ291bnRNaXNtYXRjaGRlY29kZWQAAAAAAAQAAAAEAAAAxQEAAERlY29kZWJ1ZmZlckVycm9yTm90RW5vdWdoQnl0ZXNGb3JTZXF1ZW5jZXdhbnRlZGhhdmVaZXJvT2Zmc2V0AAAAAAAABAAAAAQAAADGAQAARlNFRGVjb2RlckVycm9yVW5zdXBwb3J0ZWRPZmZzZXRvZmZzZXRfY29kZU5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzRXh0cmFCaXRzYml0c19yZW1haW5pbmdNaXNzaW5nQ29tcHJlc3Npb25Nb2RlTWlzc2luZ0J5dGVGb3JSbGVMbFRhYmxlTWlzc2luZ0J5dGVGb3JSbGVPZlRhYmxlTWlzc2luZ0J5dGVGb3JSbGVNbFRhYmxlSWxsZWdhbExpdGVyYWxTZWN0aW9uVHlwZU5vdEVub3VnaEJ5dGVzAAAAAAEAAAABAAAA0wEAAG5lZWRfYXRfbGVhc3RBY2NMb2dJc1plcm9BY2NMb2dUb29CaWdtYXgAAAAABAAAAAQAAADHAQAAUHJvYmFiaWxpdHlDb3VudGVyTWlzbWF0Y2hleHBlY3RlZF9zdW1zeW1ib2xfcHJvYmFiaWxpdGllc1Rvb01hbnlTeW1ib2xzVGFibGVJc1VuaW5pdGlhbGl6ZWRTb3VyY2VJc0VtcHR5Tm90RW5vdWdoQnl0ZXNGb3JXZWlnaHRzZ290X2J5dGVzZXhwZWN0ZWRfYnl0ZXNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c0ZTRVRhYmxlVXNlZFRvb01hbnlCeXRlc3VzZWRhdmFpbGFibGVfYnl0ZXNOb3RFbm91Z2hCeXRlc0luU291cmNlV2VpZ2h0QmlnZ2VyVGhhbk1heE51bUJpdHNNYXhCaXRzVG9vSGlnaC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnMAAABQbhAAbQAAACoCAAARAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9iaXRfcmVhZGVyX3JldmVyc2UucnMAAADQbhAAcQAAADcAAABFAAAA0G4QAHEAAAA3AAAALwAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGXQbhAAcQAAAEYAAAANAAAA0G4QAHEAAABKAAAAHgAAAFRoaXMgaXMgYSBidWcgaW4gdGhlIHByb2dyYW0uIFRoZXJlIHNob3VsZCBvbmx5IGJlIHZhbHVlcyBiZXR3ZWVuIDAuLjMvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2Jsb2Nrcy9saXRlcmFsc19zZWN0aW9uLnJzAPJvEABtAAAAewAAADQAAADybxAAbQAAAJAAAABXAAAA8m8QAG0AAACXAAAAKgAAAPJvEABtAAAAmAAAACoAAADybxAAbQAAAJsAAAAaAAAA8m8QAG0AAACoAAAAGgAAAPJvEABtAAAAtAAAAEQAAADybxAAbQAAALgAAABGAAAA8m8QAG0AAADAAAAAKgAAAPJvEABtAAAAwQAAACsAAADybxAAbQAAAMUAAABIAAAA8m8QAG0AAADNAAAAKgAAAPJvEABtAAAAzgAAACsAAADybxAAbQAAANMAAAAuAAAA8m8QAG0AAADUAAAALgAAAENhbnQgcmV0dXJuIHRoaXMgbWFueSBiaXRzL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9iaXRfcmVhZGVyLnJzAGpxEABpAAAANgAAAA0AAABqcRAAaQAAAE8AAAAjAAAAYXNzZXJ0aW9uIGZhaWxlZDogbiAtIGJpdF9zaGlmdCA9PSBiaXRzX2luX2xhc3RfYnl0ZV9uZWVkZWQAanEQAGkAAABtAAAADQAAAGpxEABpAAAAcQAAAB8AAABqcRAAaQAAAGgAAAAkAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5pZHggJSA4ID09IDAAanEQAGkAAABkAAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaWR4ID09IG9sZF9pZHggKyBuAAAAanEQAGkAAAB3AAAACQAAAFNlcV9zdW06ICBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZGlmZmVyZW5jZSBpbiBidWZmZXJzaXplOiAAANByEAAJAAAA2XIQADEAAAAvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2RlY29kaW5nL3NlcXVlbmNlX2V4ZWN1dGlvbi5ycwAAABxzEABxAAAALwAAAAUAAAAccxAAcQAAAAsAAAAkAAAAHHMQAHEAAAAVAAAANAAAAEFsbG9jYXRpbmcgbmV3IHNwYWNlIGZvciB0aGUgcmluZ2J1ZmZlciBmYWlsZWQvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2RlY29kaW5nL3JpbmdidWZmZXIucnMA7nMQAGkAAABhAAAAIwAAAENvdWxkIG5vdCBjcmVhdGUgbGF5b3V0IGZvciB1OCBhcnJheSBvZiBzaXplIAAAAGh0EAAtAAAA7nMQAGkAAABaAAAAIQAAAO5zEABpAAAAtAAAABUAAADucxAAaQAAAL4AAAAVAAAA7nMQAGkAAAB3AQAAHQAAAO5zEABpAAAAzgEAABUAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwDwdBAAawAAAKIAAAAZAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9saXRlcmFsc19zZWN0aW9uX2RlY29kZXIucnMAbHUQAHcAAAAUAAAAIgAAAGx1EAB3AAAAGAAAAE0AAABsdRAAdwAAADQAAAAZAAAAbHUQAHcAAAByAAAAGAAAAGx1EAB3AAAAkQAAABQAAABhc3NlcnRpb24gZmFpbGVkOiBudW1fc3RyZWFtcyA9PSAxAABsdRAAdwAAAIAAAAAJAAAAbHUQAHcAAABFAAAAGQAAAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZGVjb2Rpbmcvc2VxdWVuY2Vfc2VjdGlvbl9kZWNvZGVyLnJzAHh2EAB3AAAAGAAAAB0AAAB4dhAAdwAAAHUAAAAQAAAAeHYQAHcAAADAAAAAEAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IElsbGVnYWwgbGl0ZXJhbCBsZW5ndGggY29kZSB3YXM6IAAgdxAASwAAAHh2EAB3AAAA+gAAAA4AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBJbGxlZ2FsIG1hdGNoIGxlbmd0aCBjb2RlIHdhczogAAAAhHcQAEkAAAB4dhAAdwAAABoBAAAOAAAABAAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAD/////////////////////AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA//////////////////////////8BAAAABAAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA/////////////////////////////////////3h2EAB3AAAAdgEAABwAAAB4dhAAdwAAAFMBAAAcAAAAAQEBAQICAwMEBgcICQoLDA0ODxAQAAAAEgAAABQAAAAWAAAAGAAAABwAAAAgAAAAKAAAADAAAABAAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAEBAQECAgMDBAQFBwgJCgsMDQ4PEAAAACMAAAAlAAAAJwAAACkAAAArAAAALwAAADMAAAA7AAAAQwAAAFMAAABjAAAAgwAAAAMBAAADAgAAAwQAAAMIAAADEAAAAyAAAANAAAADgAAAAwABAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3R3b3gtaGFzaC0yLjEuMC9zcmMveHhoYXNoNjQucnMAAACwehAAYQAAAFQAAAAfAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9kZWNvZGVidWZmZXIucnMAJHsQAGsAAAAaAAAAHgAAACR7EABrAAAAnQAAADQAAAAkexAAawAAAOoAAAAeAAAAUmF3UkxFQ29tcHJlc3NlZFJlc2VydmVyZAAAAAAAAAAEAAAABAAAAMoBAAAAAAAABAAAAAQAAADQAQAAYXNzZXJ0aW9uIGZhaWxlZDogeCA+IDAvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2h1ZmYwL2h1ZmYwX2RlY29kZXIucnMTfBAAaQAAADEAAAAFAAAAE3wQAGkAAAA+AAAAGgAAABN8EABpAAAAUAAAACkAAAATfBAAaQAAAGgAAAAWAAAAE3wQAGkAAABqAAAAEwAAABN8EABpAAAAawAAABgAAAATfBAAaQAAAGwAAAAbAAAAE3wQAGkAAAAdAQAANgAAABN8EABpAAAAHQEAACUAAAATfBAAaQAAAB8BAAA2AAAAE3wQAGkAAAAfAQAAJQAAABN8EABpAAAA6AAAACIAAAATfBAAaQAAAPIAAAAiAAAAE3wQAGkAAAD3AAAAJgAAABN8EABpAAAA7QAAACYAAAATfBAAaQAAAFcBAAASAAAAE3wQAGkAAABfAQAAGAAAABN8EABpAAAAZQEAABUAAAATfBAAaQAAAG8BAAAbAAAAE3wQAGkAAABxAQAAGgAAABN8EABpAAAAeAEAAB4AAAByYW5rX2lkeFswXTogIHNob3VsZCBiZTogAAAAzH0QAA0AAADZfRAADAAAABN8EABpAAAAdwEAAAkAAAATfBAAaQAAAH8BAAAsAAAAE3wQAGkAAACEAQAAMQAAABN8EABpAAAAiAEAACAAAAATfBAAaQAAAIkBAAAgAAAAE3wQAGkAAABzAQAARQAAABN8EABpAAAAdAEAACEAAAATfBAAaQAAAHMBAAAeAAAAE3wQAGkAAABhAQAAGwAAABN8EABpAAAATwEAACcAAAATfBAAaQAAAFQBAAAWAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAqH4QAGsAAACiAAAAGQAAAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzACR/EABrAAAAogAAABkAAABhc3NlcnRpb24gZmFpbGVkOiB4ID4gMC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZnNlL2ZzZV9kZWNvZGVyLnJzt38QAGUAAAA9AAAABQAAALd/EABlAAAAWgAAACcAAAC3fxAAZQAAAGUAAAAnAAAAt38QAGUAAABwAAAAIwAAALd/EABlAAAAcQAAAB0AAAC3fxAAZQAAAOIAAAApAAAAt38QAGUAAADkAAAAMQAAALd/EABlAAAA5gAAADMAAABhc3NlcnRpb24gZmFpbGVkOiBuYiA8PSBzZWxmLmFjY3VyYWN5X2xvZwAAALd/EABlAAAA6wAAAA0AAAC3fxAAZQAAANIAAAAtAAAAt38QAGUAAADAAAAALQAAALd/EABlAAAAOQEAAEEAAAC3fxAAZQAAAB4BAAAnAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHJvYiA9PSAtMbd/EABlAAAAJAEAABUAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvbW9kLnJzAAAARIEQAG0AAAA9CgAAJAAAAAAAAAAQAAAABAAAANQBAADVAQAA1gEAACAgICA6IAAAAQAAAAAAAADggRAAAgAAACAgICAgICAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL3B0ci9tb2QucnMA+4EQAGwAAAALAgAAAQAAAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaW5kZXgucnN4ghAAcAAAAEwDAAA0AAAAeIIQAHAAAABTAwAAMgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuKS9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAMoMQAGwAAAD7BwAAHQAAADKDEABsAAAAAwgAAB0AAAAygxAAbAAAAI0FAAAbAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5ycwAAANCDEABtAAAAKgIAABEAAADXAQAADAAAAAQAAADYAQAA2QEAANoBAADdAQAADAAAAAQAAADeAQAA3wEAANoBAEGIicIAC4UJAQAAAOABAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAMeEEABsAAAA3woAAA4AAABFcnJvcgAAAMeEEABsAAAAjQUAABsAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbinHhBAAbAAAAMAFAAANAAAAAAAAABAAAAAEAAAA1AEAANUBAADWAQAAYmFja3RyYWNlIGNhcHR1cmUgZmFpbGVkL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZXJyb3IucnPMhRAAXAAAAGcEAAAOAAAAAQAAAAAAAAA6IAAAQIYQAAIAAAAKCkNhdXNlZCBieToKCgpzdGFjayBiYWNrdHJhY2U6U3RhY2sgYmFja3RyYWNlOgprhhAAEQAAAFMvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzAACFhhAAeQAAALMHAAAJAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvanMtc3lzLTAuMy43Ny9zcmMvbGliLnJzAAAQhxAAWgAAAPsYAAABAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NvbnZlcnQvc2xpY2VzLnJzfIcQAGwAAAAkAQAADgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkSnNWYWx1ZSgpACqIEAAIAAAAMogQAAEAAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAESIEAAqAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvbGliLnJzAAAAeIgQAF0AAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AADoiBAADgAAAHiIEABdAAAAegIAAA0AQZiSwgALlSMEAAAABAAAAPYBAAAvcnVzdGMvMDVmOTg0NmY4OTNiMDlhMWJlMWZjODU2MGUzM2ZjM2M4MTVjZmVjYi9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAJIkQAEoAAACiAAAAGQAAAC9ydXN0Yy8wNWY5ODQ2Zjg5M2IwOWExYmUxZmM4NTYwZTMzZmMzYzgxNWNmZWNiL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwCAiRAASwAAAI0FAAAbAAAAL3J1c3RjLzA1Zjk4NDZmODkzYjA5YTFiZTFmYzg1NjBlMzNmYzNjODE1Y2ZlY2IvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc9yJEABMAAAAKgIAABEAAAA6AAAA9wEAAAwAAAAEAAAA+AEAAPkBAAD6AQAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNy9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAFSKEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAABUihAAKQAAAK4EAAANAAAAQWNjZXNzRXJyb3JjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uOiAAB4sQAEgAAABsaWJyYXJ5L3N0ZC9zcmMvYmFja3RyYWNlLnJzb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybXSLEAAoAAAAJAAAAAIAAACcixAAdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlAFiLEAAcAAAAigEAAB0AAAD7AQAAEAAAAAQAAAD8AQAA/QEAAAEAAAAAAAAAZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBvciBpbmRpcmVjdGlvbiBsaW1pdCAoZS5nLiBzeW1saW5rIGxvb3Apc3RhbGUgbmV0d29yayBmaWxlIGhhbmRsZWludmFsaWQgaW5wdXQgcGFyYW1ldGVyaW52YWxpZCBkYXRhdGltZWQgb3V0d3JpdGUgemVyb25vIHN0b3JhZ2Ugc3BhY2VzZWVrIG9uIHVuc2Vla2FibGUgZmlsZXF1b3RhIGV4Y2VlZGVkZmlsZSB0b28gbGFyZ2VyZXNvdXJjZSBidXN5ZXhlY3V0YWJsZSBmaWxlIGJ1c3lkZWFkbG9ja2Nyb3NzLWRldmljZSBsaW5rIG9yIHJlbmFtZXRvbyBtYW55IGxpbmtzaW52YWxpZCBmaWxlbmFtZWFyZ3VtZW50IGxpc3QgdG9vIGxvbmdvcGVyYXRpb24gaW50ZXJydXB0ZWR1bnN1cHBvcnRlZHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGVvdXQgb2YgbWVtb3J5aW4gcHJvZ3Jlc3NvdGhlciBlcnJvcnVuY2F0ZWdvcml6ZWQgZXJyb3JPcwAAAAAABAAAAAQAAAD+AQAAY29kZQAAAAABAAAAAQAAAP8BAABraW5k9wEAAAwAAAAEAAAAAAIAAG1lc3NhZ2VLaW5kRXJyb3IAAAAACAAAAAQAAAABAgAAAAAAAAQAAAAEAAAAAgIAAEN1c3RvbWVycm9yIChvcyBlcnJvciApAAEAAAAAAAAAZ48QAAsAAAByjxAAAQAAADogY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXgAAI6PEAAgAAAAbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnO4jxAALAAAABMAAAAJAAAAbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMA9I8QACMAAACbAAAAMgAAAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwAAACiQEAAhAAAA0QAAABMAAAA8dW5rbm93bj7vv71tZW1vcnkgYWxsb2NhdGlvbiBvZiAgYnl0ZXMgZmFpbGVkAABokBAAFQAAAH2QEAANAAAAbGlicmFyeS9zdGQvc3JjL2FsbG9jLnJznJAQABgAAABjAQAACQAAAAoAAAD3AQAADAAAAAQAAAADAgAAAAAAAAgAAAAEAAAABAIAAAAAAAAIAAAABAAAAAUCAAAGAgAABwIAAAgCAAAJAgAAEAAAAAQAAAAKAgAACwIAAAwCAAANAgAAbGlicmFyeS9zdGQvc3JjLy4uLy4uL2JhY2t0cmFjZS9zcmMvc3ltYm9saXplL21vZC5ycyCREAA0AAAAZwEAADAAAAABAAAAAAAAAIyPEAACAAAAIC0gAAEAAAAAAAAAdJEQAAMAAAAgICAgICAgICAgICAgICAgICAgYXQgAAA4ihAAAQAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c1dvdWxkQmxvY2tOb3RBRGlyZWN0b3J5SXNBRGlyZWN0b3J5RGlyZWN0b3J5Tm90RW1wdHlSZWFkT25seUZpbGVzeXN0ZW1GaWxlc3lzdGVtTG9vcFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvU3RvcmFnZUZ1bGxOb3RTZWVrYWJsZVF1b3RhRXhjZWVkZWRGaWxlVG9vTGFyZ2VSZXNvdXJjZUJ1c3lFeGVjdXRhYmxlRmlsZUJ1c3lEZWFkbG9ja0Nyb3NzZXNEZXZpY2VzVG9vTWFueUxpbmtzSW52YWxpZEZpbGVuYW1lQXJndW1lbnRMaXN0VG9vTG9uZ0ludGVycnVwdGVkVW5zdXBwb3J0ZWRVbmV4cGVjdGVkRW9mT3V0T2ZNZW1vcnlJblByb2dyZXNzT3RoZXJVbmNhdGVnb3JpemVkb3BlcmF0aW9uIHN1Y2Nlc3NmdWxPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWTakxAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5DJQQADgAAAAQAAAAEQAA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", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("forge.cjs.js", document.baseURI).href);
+ }
+ const imports = __wbg_get_imports();
+ if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {
+ module_or_path = fetch(module_or_path);
+ }
+ const { instance, module: module2 } = await __wbg_load(await module_or_path, imports);
+ return __wbg_finalize_init(instance, module2);
+}
+const LN_SCALE_MIN = -9;
+const LN_SCALE_MAX = 9;
+const LN_RESCALE = (LN_SCALE_MAX - LN_SCALE_MIN) / 254;
+const SPLAT_TEX_WIDTH_BITS = 11;
+const SPLAT_TEX_HEIGHT_BITS = 11;
+const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS;
+const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS;
+const SPLAT_TEX_MIN_HEIGHT = 1;
+function isBoolType(type) {
+ return type === "bool" || type === "bvec2" || type === "bvec3" || type === "bvec4";
+}
+function isScalarType(type) {
+ return type === "int" || type === "uint" || type === "float";
+}
+function isIntType(type) {
+ return type === "int" || type === "ivec2" || type === "ivec3" || type === "ivec4";
+}
+function isUintType(type) {
+ return type === "uint" || type === "uvec2" || type === "uvec3" || type === "uvec4";
+}
+function isFloatType(type) {
+ return type === "float" || type === "vec2" || type === "vec3" || type === "vec4";
+}
+function isMatFloatType(type) {
+ return type === "mat2" || type === "mat2x2" || type === "mat2x3" || type === "mat2x4" || type === "mat3" || type === "mat3x2" || type === "mat3x3" || type === "mat3x4" || type === "mat4" || type === "mat4x2" || type === "mat4x3" || type === "mat4x4";
+}
+function isAllFloatType(type) {
+ return isFloatType(type) || isMatFloatType(type);
+}
+function isVector2Type(type) {
+ return type === "vec2" || type === "ivec2" || type === "uvec2";
+}
+function isVector3Type(type) {
+ return type === "vec3" || type === "ivec3" || type === "uvec3";
+}
+function isVector4Type(type) {
+ return type === "vec4" || type === "ivec4" || type === "uvec4";
+}
+function isVectorType(type) {
+ return isVector2Type(type) || isVector3Type(type) || isVector4Type(type);
+}
+function isMat2(type) {
+ return type === "mat2" || type === "mat2x2";
+}
+function isMat3(type) {
+ return type === "mat3" || type === "mat3x3";
+}
+function isMat4(type) {
+ return type === "mat4" || type === "mat4x4";
+}
+function vectorElementType(type) {
+ switch (type) {
+ case "vec2":
+ return "float";
+ case "vec3":
+ return "float";
+ case "vec4":
+ return "float";
+ case "ivec2":
+ return "int";
+ case "ivec3":
+ return "int";
+ case "ivec4":
+ return "int";
+ case "uvec2":
+ return "uint";
+ case "uvec3":
+ return "uint";
+ case "uvec4":
+ return "uint";
+ default:
+ throw new Error(`Invalid vector type: ${type}`);
+ }
+}
+function vectorDim(type) {
+ switch (type) {
+ case "vec2":
+ case "ivec2":
+ case "uvec2":
+ return 2;
+ case "vec3":
+ case "ivec3":
+ case "uvec3":
+ return 3;
+ case "vec4":
+ case "ivec4":
+ case "uvec4":
+ return 4;
+ default:
+ throw new Error(`Invalid vector type: ${type}`);
+ }
+}
+function sameSizeVec(type) {
+ if (isScalarType(type)) {
+ return "float";
+ }
+ if (isVector2Type(type)) {
+ return "vec2";
+ }
+ if (isVector3Type(type)) {
+ return "vec3";
+ }
+ if (isVector4Type(type)) {
+ return "vec4";
+ }
+ throw new Error(`Invalid vector type: ${type}`);
+}
+function sameSizeUvec(type) {
+ if (isScalarType(type)) {
+ return "uint";
+ }
+ if (isVector2Type(type)) {
+ return "uvec2";
+ }
+ if (isVector3Type(type)) {
+ return "uvec3";
+ }
+ if (isVector4Type(type)) {
+ return "uvec4";
+ }
+ throw new Error(`Invalid vector type: ${type}`);
+}
+function sameSizeIvec(type) {
+ if (isScalarType(type)) {
+ return "int";
+ }
+ if (isVector2Type(type)) {
+ return "ivec2";
+ }
+ if (isVector3Type(type)) {
+ return "ivec3";
+ }
+ if (isVector4Type(type)) {
+ return "ivec4";
+ }
+ throw new Error(`Invalid vector type: ${type}`);
+}
+function typeLiteral(type) {
+ if (typeof type === "string") {
+ return type;
+ }
+ if (typeof type === "object" && type.type) {
+ return type.type;
+ }
+ throw new Error(`Invalid DynoType: ${String(type)}`);
+}
+function numberAsInt(value) {
+ return Math.trunc(value).toString();
+}
+function numberAsUint(value) {
+ const v = Math.max(0, Math.trunc(value));
+ return `${v.toString()}u`;
+}
+function numberAsFloat(value) {
+ return value === Number.POSITIVE_INFINITY ? "INFINITY" : value === Number.NEGATIVE_INFINITY ? "-INFINITY" : Number.isInteger(value) ? value.toFixed(1) : value.toString();
+}
+function valType(val) {
+ if (val instanceof DynoValue) {
+ return val.type;
+ }
+ const value = val.dynoOut();
+ return value.type;
+}
+class DynoValue {
+ constructor(type) {
+ this.__isDynoValue = true;
+ this.type = type;
+ }
+}
+class DynoOutput extends DynoValue {
+ constructor(dyno2, key) {
+ super(dyno2.outTypes[key]);
+ this.dyno = dyno2;
+ this.key = key;
+ }
+}
+class DynoLiteral extends DynoValue {
+ constructor(type, literal) {
+ super(type);
+ this.literal = literal;
+ }
+ getLiteral() {
+ return this.literal;
+ }
+}
+function dynoLiteral(type, literal) {
+ return new DynoLiteral(type, literal);
+}
+class DynoConst extends DynoLiteral {
+ constructor(type, value) {
+ super(type, "");
+ this.value = value;
+ }
+ getLiteral() {
+ const { type, value } = this;
+ switch (type) {
+ case "bool":
+ return value ? "true" : "false";
+ case "uint":
+ return numberAsUint(value);
+ case "int":
+ return numberAsInt(value);
+ case "float":
+ return numberAsFloat(value);
+ case "bvec2": {
+ const v = value;
+ return `bvec2(${v[0]}, ${v[1]})`;
+ }
+ case "uvec2": {
+ if (value instanceof THREE__namespace.Vector2) {
+ return `uvec2(${numberAsUint(value.x)}, ${numberAsUint(value.y)})`;
+ }
+ const v = value;
+ return `uvec2(${numberAsUint(v[0])}, ${numberAsUint(v[1])})`;
+ }
+ case "ivec2": {
+ if (value instanceof THREE__namespace.Vector2) {
+ return `ivec2(${numberAsInt(value.x)}, ${numberAsInt(value.y)})`;
+ }
+ const v = value;
+ return `ivec2(${numberAsInt(v[0])}, ${numberAsInt(v[1])})`;
+ }
+ case "vec2": {
+ if (value instanceof THREE__namespace.Vector2) {
+ return `vec2(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)})`;
+ }
+ const v = value;
+ return `vec2(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])})`;
+ }
+ case "bvec3": {
+ const v = value;
+ return `bvec3(${v[0]}, ${v[1]}, ${v[2]})`;
+ }
+ case "uvec3": {
+ if (value instanceof THREE__namespace.Vector3) {
+ return `uvec3(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)})`;
+ }
+ const v = value;
+ return `uvec3(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])})`;
+ }
+ case "ivec3": {
+ if (value instanceof THREE__namespace.Vector3) {
+ return `ivec3(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)})`;
+ }
+ const v = value;
+ return `ivec3(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])})`;
+ }
+ case "vec3": {
+ if (value instanceof THREE__namespace.Vector3) {
+ return `vec3(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)})`;
+ }
+ const v = value;
+ return `vec3(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])})`;
+ }
+ case "bvec4": {
+ const v = value;
+ return `bvec4(${v[0]}, ${v[1]}, ${v[2]}, ${v[3]})`;
+ }
+ case "uvec4": {
+ if (value instanceof THREE__namespace.Vector4) {
+ return `uvec4(${numberAsUint(value.x)}, ${numberAsUint(value.y)}, ${numberAsUint(value.z)}, ${numberAsUint(value.w)})`;
+ }
+ const v = value;
+ return `uvec4(${numberAsUint(v[0])}, ${numberAsUint(v[1])}, ${numberAsUint(v[2])}, ${numberAsUint(v[3])})`;
+ }
+ case "ivec4": {
+ if (value instanceof THREE__namespace.Vector4) {
+ return `ivec4(${numberAsInt(value.x)}, ${numberAsInt(value.y)}, ${numberAsInt(value.z)}, ${numberAsInt(value.w)})`;
+ }
+ const v = value;
+ return `ivec4(${numberAsInt(v[0])}, ${numberAsInt(v[1])}, ${numberAsInt(v[2])}, ${numberAsInt(v[3])})`;
+ }
+ case "vec4": {
+ if (value instanceof THREE__namespace.Vector4) {
+ return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;
+ }
+ if (value instanceof THREE__namespace.Quaternion) {
+ return `vec4(${numberAsFloat(value.x)}, ${numberAsFloat(value.y)}, ${numberAsFloat(value.z)}, ${numberAsFloat(value.w)})`;
+ }
+ const v = value;
+ return `vec4(${numberAsFloat(v[0])}, ${numberAsFloat(v[1])}, ${numberAsFloat(v[2])}, ${numberAsFloat(v[3])})`;
+ }
+ case "mat2":
+ case "mat2x2": {
+ const m = value;
+ const e = m instanceof THREE__namespace.Matrix2 ? m.elements : value;
+ const arg = new Array(4).fill(0).map((_, i) => numberAsFloat(e[i]));
+ return `${type}(${arg.join(", ")})`;
+ }
+ case "mat2x3": {
+ const e = value;
+ const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));
+ return `${type}(${arg.join(", ")})`;
+ }
+ case "mat2x4": {
+ const e = value;
+ const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));
+ return `${type}(${arg.join(", ")})`;
+ }
+ case "mat3":
+ case "mat3x3": {
+ const m = value;
+ const e = m instanceof THREE__namespace.Matrix3 ? m.elements : value;
+ const arg = new Array(9).fill(0).map((_, i) => numberAsFloat(e[i]));
+ return `${type}(${arg.join(", ")})`;
+ }
+ case "mat3x2": {
+ const e = value;
+ const arg = new Array(6).fill(0).map((_, i) => numberAsFloat(e[i]));
+ return `${type}(${arg.join(", ")})`;
+ }
+ case "mat3x4": {
+ const e = value;
+ const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));
+ return `${type}(${arg.join(", ")})`;
+ }
+ case "mat4":
+ case "mat4x4": {
+ const m = value;
+ const e = m instanceof THREE__namespace.Matrix4 ? m.elements : value;
+ const arg = new Array(16).fill(0).map((_, i) => numberAsFloat(e[i]));
+ return `${type}(${arg.join(", ")})`;
+ }
+ case "mat4x2": {
+ const e = value;
+ const arg = new Array(8).fill(0).map((_, i) => numberAsFloat(e[i]));
+ return `${type}(${arg.join(", ")})`;
+ }
+ case "mat4x3": {
+ const e = value;
+ const arg = new Array(12).fill(0).map((_, i) => numberAsFloat(e[i]));
+ return `${type}(${arg.join(", ")})`;
+ }
+ default:
+ throw new Error(`Type not implemented: ${String(type)}`);
+ }
+ }
+}
+function dynoConst(type, value) {
+ return new DynoConst(type, value);
+}
+function literalZero(type) {
+ const typeString = String(type);
+ if (isBoolType(type)) {
+ return `${typeString}(false)`;
+ }
+ if (isAllFloatType(type)) {
+ return `${typeString}(0.0)`;
+ }
+ if (isIntType(type)) {
+ return `${typeString}(0)`;
+ }
+ if (isUintType(type)) {
+ return `${typeString}(0u)`;
+ }
+ throw new Error(`Type not implemented: ${typeString}`);
+}
+function literalOne(type) {
+ const typeString = String(type);
+ if (isBoolType(type)) {
+ return `${typeString}(true)`;
+ }
+ if (isAllFloatType(type)) {
+ return `${typeString}(1.0)`;
+ }
+ if (isIntType(type)) {
+ return `${typeString}(1)`;
+ }
+ if (isUintType(type)) {
+ return `${typeString}(1u)`;
+ }
+ throw new Error(`Type not implemented: ${typeString}`);
+}
+function literalNegOne(type) {
+ const typeString = String(type);
+ if (isBoolType(type)) {
+ return `${typeString}(true)`;
+ }
+ if (isAllFloatType(type)) {
+ return `${typeString}(-1.0)`;
+ }
+ if (isIntType(type)) {
+ return `${typeString}(-1)`;
+ }
+ if (isUintType(type)) {
+ return `${typeString}(0xFFFFFFFFu)`;
+ }
+ throw new Error(`Type not implemented: ${typeString}`);
+}
+const DEFAULT_INDENT = " ";
+class Compilation {
+ constructor({ indent } = {}) {
+ this.globals = /* @__PURE__ */ new Set();
+ this.statements = [];
+ this.uniforms = {};
+ this.declares = /* @__PURE__ */ new Set();
+ this.updaters = [];
+ this.sequence = 0;
+ this.indent = DEFAULT_INDENT;
+ this.indent = indent ?? DEFAULT_INDENT;
+ }
+ nextSequence() {
+ return this.sequence++;
+ }
+}
+class Dyno {
+ constructor({
+ inTypes,
+ outTypes,
+ inputs,
+ update,
+ globals,
+ statements,
+ generate
+ }) {
+ this.inTypes = inTypes ?? {};
+ this.outTypes = outTypes ?? {};
+ this.inputs = inputs ?? {};
+ this.update = update;
+ this.globals = globals;
+ this.statements = statements;
+ this.generate = generate ?? (({ inputs: inputs2, outputs, compile }) => {
+ var _a2, _b2;
+ return {
+ globals: (_a2 = this.globals) == null ? void 0 : _a2.call(this, { inputs: inputs2, outputs, compile }),
+ statements: (_b2 = this.statements) == null ? void 0 : _b2.call(this, { inputs: inputs2, outputs, compile })
+ };
+ });
+ }
+ get outputs() {
+ const outputs = {};
+ for (const key in this.outTypes) {
+ outputs[key] = new DynoOutput(this, key);
+ }
+ return outputs;
+ }
+ apply(inputs) {
+ Object.assign(this.inputs, inputs);
+ return this.outputs;
+ }
+ compile({
+ inputs,
+ outputs,
+ compile
+ }) {
+ const result = [
+ `// ${this.constructor.name}(${Object.values(inputs).join(", ")}) => (${Object.values(outputs).join(", ")})`
+ ];
+ const declares = [];
+ for (const key in outputs) {
+ const name = outputs[key];
+ if (name && !compile.declares.has(name)) {
+ compile.declares.add(name);
+ declares.push(key);
+ }
+ }
+ const { globals, statements, uniforms } = this.generate({
+ inputs,
+ outputs,
+ compile
+ });
+ for (const global of globals ?? []) {
+ compile.globals.add(global);
+ }
+ for (const key in uniforms) {
+ compile.uniforms[key] = uniforms[key];
+ }
+ if (this.update) {
+ compile.updaters.push(this.update);
+ }
+ for (const key of declares) {
+ const name = outputs[key];
+ if (name) {
+ if (!compile.uniforms[name]) {
+ result.push(`${dynoDeclare(name, this.outTypes[key])};`);
+ }
+ }
+ }
+ if (statements == null ? void 0 : statements.length) {
+ result.push("{");
+ result.push(...statements.map((line) => compile.indent + line));
+ result.push("}");
+ }
+ return result;
+ }
+}
+class DynoBlock extends Dyno {
+ constructor({
+ inTypes,
+ outTypes,
+ inputs,
+ update,
+ globals,
+ construct
+ }) {
+ super({
+ inTypes,
+ outTypes,
+ inputs,
+ update,
+ globals,
+ generate: (args) => this.generateBlock(args)
+ });
+ this.construct = construct;
+ }
+ generateBlock({
+ inputs,
+ outputs,
+ compile
+ }) {
+ var _a2, _b2;
+ const blockInputs = {};
+ const blockOutputs = {};
+ for (const key in inputs) {
+ if (inputs[key] != null) {
+ blockInputs[key] = new DynoLiteral(this.inTypes[key], inputs[key]);
+ }
+ }
+ for (const key in outputs) {
+ if (outputs[key] != null) {
+ blockOutputs[key] = new DynoValue(this.outTypes[key]);
+ }
+ }
+ const options = { roots: [] };
+ const returned = this.construct(blockInputs, blockOutputs, options);
+ for (const global of ((_a2 = this.globals) == null ? void 0 : _a2.call(this, { inputs, outputs, compile })) ?? []) {
+ compile.globals.add(global);
+ }
+ const ordering = [];
+ const nodeOuts = /* @__PURE__ */ new Map();
+ function visit(node, outKey, outName) {
+ let outs = nodeOuts.get(node);
+ if (!outs) {
+ outs = {
+ sequence: compile.nextSequence(),
+ outNames: /* @__PURE__ */ new Map(),
+ newOuts: /* @__PURE__ */ new Set()
+ };
+ nodeOuts.set(node, outs);
+ for (const key in node.inputs) {
+ let input = node.inputs[key];
+ while (input) {
+ if (input instanceof DynoValue) {
+ if (input instanceof DynoOutput) {
+ visit(input.dyno, input.key);
+ }
+ break;
+ }
+ input = input.dynoOut();
+ }
+ }
+ ordering.push(node);
+ }
+ if (outKey) {
+ if (!outName) {
+ outs.newOuts.add(outKey);
+ }
+ outs.outNames.set(outKey, outName ?? `${outKey}_${outs.sequence}`);
+ }
+ }
+ for (const root of options.roots) {
+ visit(root);
+ }
+ for (const key in blockOutputs) {
+ let value = (returned == null ? void 0 : returned[key]) ?? blockOutputs[key];
+ while (value) {
+ if (value instanceof DynoValue) {
+ if (value instanceof DynoOutput) {
+ visit(value.dyno, value.key, outputs[key]);
+ }
+ break;
+ }
+ value = value.dynoOut();
+ }
+ blockOutputs[key] = value;
+ }
+ const steps = [];
+ for (const dyno2 of ordering) {
+ const inputs2 = {};
+ const outputs2 = {};
+ for (const key in dyno2.inputs) {
+ let value = dyno2.inputs[key];
+ while (value) {
+ if (value instanceof DynoValue) {
+ if (value instanceof DynoLiteral) {
+ inputs2[key] = value.getLiteral();
+ } else if (value instanceof DynoOutput) {
+ const source = (_b2 = nodeOuts.get(value.dyno)) == null ? void 0 : _b2.outNames.get(value.key);
+ if (!source) {
+ throw new Error(
+ `Source not found for ${value.dyno.constructor.name}.${value.key}`
+ );
+ }
+ inputs2[key] = source;
+ }
+ break;
+ }
+ value = value.dynoOut();
+ }
+ }
+ const outs = nodeOuts.get(dyno2) ?? { outNames: /* @__PURE__ */ new Map() };
+ for (const [key, name] of outs.outNames.entries()) {
+ outputs2[key] = name;
+ }
+ const newSteps = dyno2.compile({ inputs: inputs2, outputs: outputs2, compile });
+ steps.push(newSteps);
+ }
+ const literalOutputs = [];
+ for (const key in outputs) {
+ if (blockOutputs[key] instanceof DynoLiteral) {
+ literalOutputs.push(
+ `${outputs[key]} = ${blockOutputs[key].getLiteral()};`
+ );
+ }
+ }
+ if (literalOutputs.length > 0) {
+ steps.push(literalOutputs);
+ }
+ const statements = steps.flatMap((step2, index) => {
+ return index === 0 ? step2 : ["", ...step2];
+ });
+ return { statements };
+ }
+}
+function dynoBlock(inTypes, outTypes, construct, { update, globals } = {}) {
+ return new DynoBlock({ inTypes, outTypes, construct, update, globals });
+}
+function dyno$1({
+ inTypes,
+ outTypes,
+ inputs,
+ update,
+ globals,
+ statements,
+ generate
+}) {
+ return new Dyno({
+ inTypes,
+ outTypes,
+ inputs,
+ update,
+ globals,
+ statements,
+ generate
+ });
+}
+function dynoDeclare(name, type, count) {
+ const typeStr = typeof type === "string" ? type : type.type;
+ if (!typeStr) {
+ throw new Error(`Invalid DynoType: ${String(type)}`);
+ }
+ return `${typeStr} ${name}${count != null ? `[${count}]` : ""}`;
+}
+function unindentLines(s) {
+ var _a2;
+ let seenNonEmpty = false;
+ const lines = s.split("\n").map((line) => {
+ const trimmedLine = line.trimEnd();
+ if (seenNonEmpty) {
+ return trimmedLine;
+ }
+ if (trimmedLine.length > 0) {
+ seenNonEmpty = true;
+ return trimmedLine;
+ }
+ return null;
+ }).filter((line) => line != null);
+ while (lines.length > 0 && lines[lines.length - 1].length === 0) {
+ lines.pop();
+ }
+ if (lines.length === 0) {
+ return [];
+ }
+ const indent = (_a2 = lines[0].match(/^\s*/)) == null ? void 0 : _a2[0];
+ if (!indent) {
+ return lines;
+ }
+ const regex = new RegExp(`^${indent}`);
+ return lines.map((line) => line.replace(regex, ""));
+}
+function unindent(s) {
+ return unindentLines(s).join("\n");
+}
+class UnaryOp extends Dyno {
+ constructor({
+ a,
+ outKey,
+ outTypeFunc
+ }) {
+ const inTypes = { a: valType(a) };
+ const outType = outTypeFunc(valType(a));
+ const outTypes = { [outKey]: outType };
+ super({ inTypes, outTypes, inputs: { a } });
+ this.outKey = outKey;
+ }
+ dynoOut() {
+ return new DynoOutput(this, this.outKey);
+ }
+}
+class BinaryOp extends Dyno {
+ constructor({
+ a,
+ b,
+ outKey,
+ outTypeFunc
+ }) {
+ const inTypes = { a: valType(a), b: valType(b) };
+ const outType = outTypeFunc(valType(a), valType(b));
+ const outTypes = { [outKey]: outType };
+ super({ inTypes, outTypes, inputs: { a, b } });
+ this.outKey = outKey;
+ }
+ dynoOut() {
+ return new DynoOutput(this, this.outKey);
+ }
+}
+class TrinaryOp extends Dyno {
+ constructor({
+ a,
+ b,
+ c,
+ outKey,
+ outTypeFunc
+ }) {
+ const inTypes = { a: valType(a), b: valType(b), c: valType(c) };
+ const outType = outTypeFunc(valType(a), valType(b), valType(c));
+ const outTypes = { [outKey]: outType };
+ super({ inTypes, outTypes, inputs: { a, b, c } });
+ this.outKey = outKey;
+ }
+ dynoOut() {
+ return new DynoOutput(this, this.outKey);
+ }
+}
+const Gsplat = { type: "Gsplat" };
+const TPackedSplats = { type: "PackedSplats" };
+const numPackedSplats = (packedSplats) => new NumPackedSplats({ packedSplats });
+const readPackedSplat = (packedSplats, index) => new ReadPackedSplat({ packedSplats, index });
+const readPackedSplatRange = (packedSplats, index, base, count) => new ReadPackedSplatRange({ packedSplats, index, base, count });
+const splitGsplat = (gsplat) => new SplitGsplat({ gsplat });
+const combineGsplat = ({
+ gsplat,
+ flags,
+ index,
+ center,
+ scales,
+ quaternion,
+ rgba,
+ rgb,
+ opacity,
+ x,
+ y,
+ z,
+ r,
+ g,
+ b
+}) => {
+ return new CombineGsplat({
+ gsplat,
+ flags,
+ index,
+ center,
+ scales,
+ quaternion,
+ rgba,
+ rgb,
+ opacity,
+ x,
+ y,
+ z,
+ r,
+ g,
+ b
+ });
+};
+const gsplatNormal = (gsplat) => new GsplatNormal({ gsplat });
+const transformGsplat = (gsplat, {
+ scale,
+ rotate,
+ translate,
+ recolor
+}) => {
+ return new TransformGsplat({ gsplat, scale, rotate, translate, recolor });
+};
+const defineGsplat = unindent(`
+ struct Gsplat {
+ vec3 center;
+ uint flags;
+ vec3 scales;
+ int index;
+ vec4 quaternion;
+ vec4 rgba;
+ };
+ const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;
+
+ bool isGsplatActive(uint flags) {
+ return (flags & GSPLAT_FLAG_ACTIVE) != 0u;
+ }
+`);
+const definePackedSplats = unindent(`
+ struct PackedSplats {
+ usampler2DArray texture;
+ int numSplats;
+ };
+`);
+class NumPackedSplats extends UnaryOp {
+ constructor({
+ packedSplats
+ }) {
+ super({ a: packedSplats, outKey: "numSplats", outTypeFunc: () => "int" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.numSplats} = ${inputs.a}.numSplats;`
+ ];
+ }
+}
+const defineReadPackedSplat = unindent(`
+ bool readPackedSplat(usampler2DArray texture, int numSplats, int index, out Gsplat gsplat) {
+ if ((index >= 0) && (index < numSplats)) {
+ uvec4 packed = texelFetch(texture, splatTexCoord(index), 0);
+ unpackSplat(packed, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);
+ return true;
+ } else {
+ return false;
+ }
+ }
+`);
+class ReadPackedSplat extends Dyno {
+ constructor({
+ packedSplats,
+ index
+ }) {
+ super({
+ inTypes: { packedSplats: TPackedSplats, index: "int" },
+ outTypes: { gsplat: Gsplat },
+ inputs: { packedSplats, index },
+ globals: () => [defineGsplat, definePackedSplats, defineReadPackedSplat],
+ statements: ({ inputs, outputs }) => {
+ const { gsplat } = outputs;
+ if (!gsplat) {
+ return [];
+ }
+ const { packedSplats: packedSplats2, index: index2 } = inputs;
+ let statements;
+ if (packedSplats2 && index2) {
+ statements = unindentLines(`
+ if (readPackedSplat(${packedSplats2}.texture, ${packedSplats2}.numSplats, ${index2}, ${gsplat})) {
+ bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));
+ ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;
+ } else {
+ ${gsplat}.flags = 0u;
+ }
+ `);
+ } else {
+ statements = [`${gsplat}.flags = 0u;`];
+ }
+ statements.push(`${gsplat}.index = ${index2 ?? "0"};`);
+ return statements;
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "gsplat");
+ }
+}
+class ReadPackedSplatRange extends Dyno {
+ constructor({
+ packedSplats,
+ index,
+ base,
+ count
+ }) {
+ super({
+ inTypes: {
+ packedSplats: TPackedSplats,
+ index: "int",
+ base: "int",
+ count: "int"
+ },
+ outTypes: { gsplat: Gsplat },
+ inputs: { packedSplats, index, base, count },
+ globals: () => [defineGsplat, definePackedSplats, defineReadPackedSplat],
+ statements: ({ inputs, outputs }) => {
+ const { gsplat } = outputs;
+ if (!gsplat) {
+ return [];
+ }
+ const { packedSplats: packedSplats2, index: index2, base: base2, count: count2 } = inputs;
+ let statements;
+ if (packedSplats2 && index2 && base2 && count2) {
+ statements = unindentLines(`
+ ${gsplat}.flags = 0u;
+ if ((${index2} >= ${base2}) && (${index2} < (${base2} + ${count2}))) {
+ if (readPackedSplat(${packedSplats2}.texture, ${packedSplats2}.numSplats, ${index2}, ${gsplat})) {
+ bool zeroSize = all(equal(${gsplat}.scales, vec3(0.0, 0.0, 0.0)));
+ ${gsplat}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;
+ }
+ }
+ `);
+ } else {
+ statements = [`${gsplat}.flags = 0u;`];
+ }
+ statements.push(`${gsplat}.index = ${index2 ?? "0"};`);
+ return statements;
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "gsplat");
+ }
+}
+class SplitGsplat extends Dyno {
+ constructor({ gsplat }) {
+ super({
+ inTypes: { gsplat: Gsplat },
+ outTypes: {
+ flags: "uint",
+ active: "bool",
+ index: "int",
+ center: "vec3",
+ scales: "vec3",
+ quaternion: "vec4",
+ rgba: "vec4",
+ rgb: "vec3",
+ opacity: "float",
+ x: "float",
+ y: "float",
+ z: "float",
+ r: "float",
+ g: "float",
+ b: "float"
+ },
+ inputs: { gsplat },
+ globals: () => [defineGsplat],
+ statements: ({ inputs, outputs }) => {
+ const { gsplat: gsplat2 } = inputs;
+ const {
+ flags,
+ active,
+ index,
+ center,
+ scales,
+ quaternion,
+ rgba,
+ rgb,
+ opacity,
+ x,
+ y,
+ z,
+ r,
+ g,
+ b
+ } = outputs;
+ return [
+ !flags ? null : `${flags} = ${gsplat2 ? `${gsplat2}.flags` : "0u"};`,
+ !active ? null : `${active} = isGsplatActive(${gsplat2 ? `${gsplat2}.flags` : "0u"});`,
+ !index ? null : `${index} = ${gsplat2 ? `${gsplat2}.index` : "0"};`,
+ !center ? null : `${center} = ${gsplat2 ? `${gsplat2}.center` : "vec3(0.0, 0.0, 0.0)"};`,
+ !scales ? null : `${scales} = ${gsplat2 ? `${gsplat2}.scales` : "vec3(0.0, 0.0, 0.0)"};`,
+ !quaternion ? null : `${quaternion} = ${gsplat2 ? `${gsplat2}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)"};`,
+ !rgba ? null : `${rgba} = ${gsplat2 ? `${gsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)"};`,
+ !rgb ? null : `${rgb} = ${gsplat2 ? `${gsplat2}.rgba.rgb` : "vec3(0.0, 0.0, 0.0)"};`,
+ !opacity ? null : `${opacity} = ${gsplat2 ? `${gsplat2}.rgba.a` : "0.0"};`,
+ !x ? null : `${x} = ${gsplat2 ? `${gsplat2}.center.x` : "0.0"};`,
+ !y ? null : `${y} = ${gsplat2 ? `${gsplat2}.center.y` : "0.0"};`,
+ !z ? null : `${z} = ${gsplat2 ? `${gsplat2}.center.z` : "0.0"};`,
+ !r ? null : `${r} = ${gsplat2 ? `${gsplat2}.rgba.r` : "0.0"};`,
+ !g ? null : `${g} = ${gsplat2 ? `${gsplat2}.rgba.g` : "0.0"};`,
+ !b ? null : `${b} = ${gsplat2 ? `${gsplat2}.rgba.b` : "0.0"};`
+ ].filter(Boolean);
+ }
+ });
+ }
+}
+class CombineGsplat extends Dyno {
+ constructor({
+ gsplat,
+ flags,
+ index,
+ center,
+ scales,
+ quaternion,
+ rgba,
+ rgb,
+ opacity,
+ x,
+ y,
+ z,
+ r,
+ g,
+ b
+ }) {
+ super({
+ inTypes: {
+ gsplat: Gsplat,
+ flags: "uint",
+ index: "int",
+ center: "vec3",
+ scales: "vec3",
+ quaternion: "vec4",
+ rgba: "vec4",
+ rgb: "vec3",
+ opacity: "float",
+ x: "float",
+ y: "float",
+ z: "float",
+ r: "float",
+ g: "float",
+ b: "float"
+ },
+ outTypes: { gsplat: Gsplat },
+ inputs: {
+ gsplat,
+ flags,
+ index,
+ center,
+ scales,
+ quaternion,
+ rgba,
+ rgb,
+ opacity,
+ x,
+ y,
+ z,
+ r,
+ g,
+ b
+ },
+ globals: () => [defineGsplat],
+ statements: ({ inputs, outputs }) => {
+ const { gsplat: outGsplat } = outputs;
+ if (!outGsplat) {
+ return [];
+ }
+ const {
+ gsplat: gsplat2,
+ flags: flags2,
+ index: index2,
+ center: center2,
+ scales: scales2,
+ quaternion: quaternion2,
+ rgba: rgba2,
+ rgb: rgb2,
+ opacity: opacity2,
+ x: x2,
+ y: y2,
+ z: z2,
+ r: r2,
+ g: g2,
+ b: b2
+ } = inputs;
+ return [
+ `${outGsplat}.flags = ${flags2 ?? (gsplat2 ? `${gsplat2}.flags` : "0u")};`,
+ `${outGsplat}.index = ${index2 ?? (gsplat2 ? `${gsplat2}.index` : "0")};`,
+ `${outGsplat}.center = ${center2 ?? (gsplat2 ? `${gsplat2}.center` : "vec3(0.0, 0.0, 0.0)")};`,
+ `${outGsplat}.scales = ${scales2 ?? (gsplat2 ? `${gsplat2}.scales` : "vec3(0.0, 0.0, 0.0)")};`,
+ `${outGsplat}.quaternion = ${quaternion2 ?? (gsplat2 ? `${gsplat2}.quaternion` : "vec4(0.0, 0.0, 0.0, 1.0)")};`,
+ `${outGsplat}.rgba = ${rgba2 ?? (gsplat2 ? `${gsplat2}.rgba` : "vec4(0.0, 0.0, 0.0, 0.0)")};`,
+ !rgb2 ? null : `${outGsplat}.rgba.rgb = ${rgb2};`,
+ !opacity2 ? null : `${outGsplat}.rgba.a = ${opacity2};`,
+ !x2 ? null : `${outGsplat}.center.x = ${x2};`,
+ !y2 ? null : `${outGsplat}.center.y = ${y2};`,
+ !z2 ? null : `${outGsplat}.center.z = ${z2};`,
+ !r2 ? null : `${outGsplat}.rgba.r = ${r2};`,
+ !g2 ? null : `${outGsplat}.rgba.g = ${g2};`,
+ !b2 ? null : `${outGsplat}.rgba.b = ${b2};`
+ ].filter(Boolean);
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "gsplat");
+ }
+}
+const defineGsplatNormal = unindent(`
+ vec3 gsplatNormal(vec3 scales, vec4 quaternion) {
+ float minScale = min(scales.x, min(scales.y, scales.z));
+ vec3 normal;
+ if (scales.z == minScale) {
+ normal = vec3(0.0, 0.0, 1.0);
+ } else if (scales.y == minScale) {
+ normal = vec3(0.0, 1.0, 0.0);
+ } else {
+ normal = vec3(1.0, 0.0, 0.0);
+ }
+ return quatVec(quaternion, normal);
+ }
+`);
+class GsplatNormal extends UnaryOp {
+ constructor({ gsplat }) {
+ super({ a: gsplat, outKey: "normal", outTypeFunc: () => "vec3" });
+ this.globals = () => [defineGsplat, defineGsplatNormal];
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.normal} = gsplatNormal(${inputs.a}.scales, ${inputs.a}.quaternion);`
+ ];
+ }
+}
+class TransformGsplat extends Dyno {
+ constructor({
+ gsplat,
+ scale,
+ rotate,
+ translate,
+ recolor
+ }) {
+ super({
+ inTypes: {
+ gsplat: Gsplat,
+ scale: "float",
+ rotate: "vec4",
+ translate: "vec3",
+ recolor: "vec4"
+ },
+ outTypes: { gsplat: Gsplat },
+ inputs: { gsplat, scale, rotate, translate, recolor },
+ globals: () => [defineGsplat],
+ statements: ({ inputs, outputs, compile }) => {
+ const { gsplat: gsplat2 } = outputs;
+ if (!gsplat2 || !inputs.gsplat) {
+ return [];
+ }
+ const { scale: scale2, rotate: rotate2, translate: translate2, recolor: recolor2 } = inputs;
+ const indent = compile.indent;
+ const statements = [
+ `${gsplat2} = ${inputs.gsplat};`,
+ `if (isGsplatActive(${gsplat2}.flags)) {`,
+ scale2 ? `${indent}${gsplat2}.center *= ${scale2};` : null,
+ rotate2 ? `${indent}${gsplat2}.center = quatVec(${rotate2}, ${gsplat2}.center);` : null,
+ translate2 ? `${indent}${gsplat2}.center += ${translate2};` : null,
+ scale2 ? `${indent}${gsplat2}.scales *= ${scale2};` : null,
+ rotate2 ? `${indent}${gsplat2}.quaternion = quatQuat(${rotate2}, ${gsplat2}.quaternion);` : null,
+ recolor2 ? `${indent}${gsplat2}.rgba *= ${recolor2};` : null,
+ "}"
+ ].filter(Boolean);
+ return statements;
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "gsplat");
+ }
+}
+const outputPackedSplat = (gsplat) => new OutputPackedSplat({ gsplat });
+const outputRgba8 = (rgba8) => new OutputRgba8({ rgba8 });
+class OutputPackedSplat extends Dyno {
+ constructor({ gsplat }) {
+ super({
+ inTypes: { gsplat: Gsplat },
+ inputs: { gsplat },
+ globals: () => [defineGsplat],
+ statements: ({ inputs, outputs }) => {
+ const { output } = outputs;
+ if (!output) {
+ return [];
+ }
+ const { gsplat: gsplat2 } = inputs;
+ if (gsplat2) {
+ return unindentLines(`
+ if (isGsplatActive(${gsplat2}.flags)) {
+ ${output} = packSplat(${gsplat2}.center, ${gsplat2}.scales, ${gsplat2}.quaternion, ${gsplat2}.rgba);
+ } else {
+ ${output} = uvec4(0u, 0u, 0u, 0u);
+ }
+ `);
+ }
+ return [`${output} = uvec4(0u, 0u, 0u, 0u);`];
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "output");
+ }
+}
+class OutputRgba8 extends Dyno {
+ constructor({ rgba8 }) {
+ super({
+ inTypes: { rgba8: "vec4" },
+ inputs: { rgba8 },
+ statements: ({ inputs, outputs }) => [
+ `target = ${inputs.rgba8 ?? "vec4(0.0, 0.0, 0.0, 0.0)"};`
+ ]
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "rgba8");
+ }
+}
+const uniform = (key, type, value) => new DynoUniform({ key, type, value });
+const dynoBool = (value = false, key) => new DynoBool({ key, value });
+const dynoUint = (value = 0, key) => new DynoUint({ key, value });
+const dynoInt = (value = 0, key) => new DynoInt({ key, value });
+const dynoFloat = (value = 0, key) => new DynoFloat({ key, value });
+const dynoBvec2 = (value, key) => new DynoBvec2({ key, value });
+const dynoUvec2 = (value, key) => new DynoUvec2({ key, value });
+const dynoIvec2 = (value, key) => new DynoIvec2({ key, value });
+const dynoVec2 = (value, key) => new DynoVec2({ key, value });
+const dynoBvec3 = (value, key) => new DynoBvec3({ key, value });
+const dynoUvec3 = (value, key) => new DynoUvec3({ key, value });
+const dynoIvec3 = (value, key) => new DynoIvec3({ key, value });
+const dynoVec3 = (value, key) => new DynoVec3({ key, value });
+const dynoBvec4 = (value, key) => new DynoBvec4({ key, value });
+const dynoUvec4 = (value, key) => new DynoUvec4({ key, value });
+const dynoIvec4 = (value, key) => new DynoIvec4({ key, value });
+const dynoVec4 = (value, key) => new DynoVec4({ key, value });
+const dynoMat2 = (value, key) => new DynoMat2({ key, value });
+const dynoMat2x2 = (value, key) => new DynoMat2x2({ key, value });
+const dynoMat2x3 = (value, key) => new DynoMat2x3({ key, value });
+const dynoMat2x4 = (value, key) => new DynoMat2x4({ key, value });
+const dynoMat3 = (value, key) => new DynoMat3({ key, value });
+const dynoMat3x2 = (value, key) => new DynoMat3x2({ key, value });
+const dynoMat3x3 = (value, key) => new DynoMat3x3({ key, value });
+const dynoMat3x4 = (value, key) => new DynoMat3x4({ key, value });
+const dynoMat4 = (value, key) => new DynoMat4({ key, value });
+const dynoMat4x2 = (value, key) => new DynoMat4x2({ key, value });
+const dynoMat4x3 = (value, key) => new DynoMat4x3({ key, value });
+const dynoMat4x4 = (value, key) => new DynoMat4x4({ key, value });
+const dynoUsampler2D = (value, key) => new DynoUsampler2D({ key, value });
+const dynoIsampler2D = (value, key) => new DynoIsampler2D({ key, value });
+const dynoSampler2D = (value, key) => new DynoSampler2D({ key, value });
+const dynoUsampler2DArray = (value, key) => new DynoUsampler2DArray({ key, value });
+const dynoIsampler2DArray = (key, value) => new DynoIsampler2DArray({ key, value });
+const dynoSampler2DArray = (value, key) => new DynoSampler2DArray({ key, value });
+const dynoUsampler3D = (value, key) => new DynoUsampler3D({ key, value });
+const dynoIsampler3D = (value, key) => new DynoIsampler3D({ key, value });
+const dynoSampler3D = (value, key) => new DynoSampler3D({ key, value });
+const dynoUsamplerCube = (value, key) => new DynoUsamplerCube({ key, value });
+const dynoIsamplerCube = (value, key) => new DynoIsamplerCube({ key, value });
+const dynoSamplerCube = (value, key) => new DynoSamplerCube({ key, value });
+const dynoSampler2DShadow = (value, key) => new DynoSampler2DShadow({ key, value });
+const dynoSampler2DArrayShadow = (value, key) => new DynoSampler2DArrayShadow({ key, value });
+const dynoSamplerCubeShadow = (value, key) => new DynoSamplerCubeShadow({ key, value });
+class DynoUniform extends Dyno {
+ constructor({
+ key,
+ type,
+ count,
+ value,
+ update,
+ globals
+ }) {
+ key = key ?? "value";
+ super({
+ outTypes: { [key]: type },
+ update: () => {
+ if (update) {
+ const value2 = update(this.value);
+ if (value2 !== void 0) {
+ this.value = value2;
+ }
+ }
+ this.uniform.value = this.value;
+ },
+ generate: ({ inputs, outputs }) => {
+ const allGlobals = (globals == null ? void 0 : globals({ inputs, outputs })) ?? [];
+ const uniforms = {};
+ const name = outputs[key];
+ if (name) {
+ allGlobals.push(`uniform ${dynoDeclare(name, type, count)};`);
+ uniforms[name] = this.uniform;
+ }
+ return { globals: allGlobals, uniforms };
+ }
+ });
+ this.type = type;
+ this.count = count;
+ this.value = value;
+ this.uniform = { value };
+ this.outKey = key;
+ }
+ dynoOut() {
+ return new DynoOutput(this, this.outKey);
+ }
+}
+class DynoBool extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "bool", value, update });
+ }
+}
+class DynoUint extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "uint", value, update });
+ }
+}
+class DynoInt extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "int", value, update });
+ }
+}
+class DynoFloat extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "float", value, update });
+ }
+}
+class DynoBvec2 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "bvec2", value, update });
+ }
+}
+class DynoUvec2 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "uvec2", value, update });
+ }
+}
+class DynoIvec2 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "ivec2", value, update });
+ }
+}
+class DynoVec2 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "vec2", value, update });
+ }
+}
+class DynoBvec3 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "bvec3", value, update });
+ }
+}
+class DynoUvec3 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "uvec3", value, update });
+ }
+}
+class DynoIvec3 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "ivec3", value, update });
+ }
+}
+class DynoVec3 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "vec3", value, update });
+ }
+}
+class DynoBvec4 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "bvec4", value, update });
+ }
+}
+class DynoUvec4 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "uvec4", value, update });
+ }
+}
+class DynoIvec4 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "ivec4", value, update });
+ }
+}
+class DynoVec4 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "vec4", value, update });
+ }
+}
+class DynoMat2 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat2", value, update });
+ }
+}
+class DynoMat2x2 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat2x2", value, update });
+ }
+}
+class DynoMat2x3 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat2x3", value, update });
+ }
+}
+class DynoMat2x4 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat2x4", value, update });
+ }
+}
+class DynoMat3 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat3", value, update });
+ }
+}
+class DynoMat3x2 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat3x2", value, update });
+ }
+}
+class DynoMat3x3 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat3x3", value, update });
+ }
+}
+class DynoMat3x4 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat3x4", value, update });
+ }
+}
+class DynoMat4 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat4", value, update });
+ }
+}
+class DynoMat4x2 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat4x2", value, update });
+ }
+}
+class DynoMat4x3 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat4x3", value, update });
+ }
+}
+class DynoMat4x4 extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "mat4x4", value, update });
+ }
+}
+class DynoUsampler2D extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "usampler2D", value, update });
+ }
+}
+class DynoIsampler2D extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "isampler2D", value, update });
+ }
+}
+class DynoSampler2D extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "sampler2D", value, update });
+ }
+}
+class DynoUsampler2DArray extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "usampler2DArray", value, update });
+ }
+}
+class DynoIsampler2DArray extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "isampler2DArray", value, update });
+ }
+}
+class DynoSampler2DArray extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "sampler2DArray", value, update });
+ }
+}
+class DynoUsampler3D extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "usampler3D", value, update });
+ }
+}
+class DynoIsampler3D extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "isampler3D", value, update });
+ }
+}
+class DynoSampler3D extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "sampler3D", value, update });
+ }
+}
+class DynoUsamplerCube extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "usamplerCube", value, update });
+ }
+}
+class DynoIsamplerCube extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "isamplerCube", value, update });
+ }
+}
+class DynoSamplerCube extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "samplerCube", value, update });
+ }
+}
+class DynoSampler2DShadow extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "sampler2DShadow", value, update });
+ }
+}
+class DynoSampler2DArrayShadow extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "sampler2DArrayShadow", value, update });
+ }
+}
+class DynoSamplerCubeShadow extends DynoUniform {
+ constructor({
+ key,
+ value,
+ update
+ }) {
+ super({ key, type: "samplerCubeShadow", value, update });
+ }
+}
+var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;
+var fleb = new u8([
+ 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,
+ /* unused */
+ 0,
+ 0,
+ /* impossible */
+ 0
+]);
+var fdeb = new u8([
+ 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,
+ /* unused */
+ 0,
+ 0
+]);
+var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
+var freb = function(eb, start) {
+ var b = new u16(31);
+ for (var i = 0; i < 31; ++i) {
+ b[i] = start += 1 << eb[i - 1];
+ }
+ var r = new i32(b[30]);
+ for (var i = 1; i < 30; ++i) {
+ for (var j = b[i]; j < b[i + 1]; ++j) {
+ r[j] = j - b[i] << 5 | i;
+ }
+ }
+ return { b, r };
+};
+var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;
+fl[28] = 258, revfl[258] = 28;
+var _b = freb(fdeb, 0), fd = _b.b;
+var rev = new u16(32768);
+for (var i = 0; i < 32768; ++i) {
+ var x = (i & 43690) >> 1 | (i & 21845) << 1;
+ x = (x & 52428) >> 2 | (x & 13107) << 2;
+ x = (x & 61680) >> 4 | (x & 3855) << 4;
+ rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1;
+}
+var hMap = function(cd, mb, r) {
+ var s = cd.length;
+ var i = 0;
+ var l = new u16(mb);
+ for (; i < s; ++i) {
+ if (cd[i])
+ ++l[cd[i] - 1];
+ }
+ var le = new u16(mb);
+ for (i = 1; i < mb; ++i) {
+ le[i] = le[i - 1] + l[i - 1] << 1;
+ }
+ var co;
+ if (r) {
+ co = new u16(1 << mb);
+ var rvb = 15 - mb;
+ for (i = 0; i < s; ++i) {
+ if (cd[i]) {
+ var sv = i << 4 | cd[i];
+ var r_1 = mb - cd[i];
+ var v = le[cd[i] - 1]++ << r_1;
+ for (var m = v | (1 << r_1) - 1; v <= m; ++v) {
+ co[rev[v] >> rvb] = sv;
+ }
+ }
+ }
+ } else {
+ co = new u16(s);
+ for (i = 0; i < s; ++i) {
+ if (cd[i]) {
+ co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i];
+ }
+ }
+ }
+ return co;
+};
+var flt = new u8(288);
+for (var i = 0; i < 144; ++i)
+ flt[i] = 8;
+for (var i = 144; i < 256; ++i)
+ flt[i] = 9;
+for (var i = 256; i < 280; ++i)
+ flt[i] = 7;
+for (var i = 280; i < 288; ++i)
+ flt[i] = 8;
+var fdt = new u8(32);
+for (var i = 0; i < 32; ++i)
+ fdt[i] = 5;
+var flrm = /* @__PURE__ */ hMap(flt, 9, 1);
+var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1);
+var max$1 = function(a) {
+ var m = a[0];
+ for (var i = 1; i < a.length; ++i) {
+ if (a[i] > m)
+ m = a[i];
+ }
+ return m;
+};
+var bits = function(d, p, m) {
+ var o = p / 8 | 0;
+ return (d[o] | d[o + 1] << 8) >> (p & 7) & m;
+};
+var bits16 = function(d, p) {
+ var o = p / 8 | 0;
+ return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7);
+};
+var shft = function(p) {
+ return (p + 7) / 8 | 0;
+};
+var slc = function(v, s, e) {
+ if (s == null || s < 0)
+ s = 0;
+ if (e == null || e > v.length)
+ e = v.length;
+ return new u8(v.subarray(s, e));
+};
+var ec = [
+ "unexpected EOF",
+ "invalid block type",
+ "invalid length/literal",
+ "invalid distance",
+ "stream finished",
+ "no stream handler",
+ ,
+ "no callback",
+ "invalid UTF-8 data",
+ "extra field too long",
+ "date not in range 1980-2099",
+ "filename too long",
+ "stream finishing",
+ "invalid zip data"
+ // determined by unknown compression method
+];
+var err = function(ind, msg, nt) {
+ var e = new Error(msg || ec[ind]);
+ e.code = ind;
+ if (Error.captureStackTrace)
+ Error.captureStackTrace(e, err);
+ if (!nt)
+ throw e;
+ return e;
+};
+var inflt = function(dat, st, buf, dict) {
+ var sl = dat.length, dl = 0;
+ if (!sl || st.f && !st.l)
+ return buf || new u8(0);
+ var noBuf = !buf;
+ var resize = noBuf || st.i != 2;
+ var noSt = st.i;
+ if (noBuf)
+ buf = new u8(sl * 3);
+ var cbuf = function(l2) {
+ var bl = buf.length;
+ if (l2 > bl) {
+ var nbuf = new u8(Math.max(bl * 2, l2));
+ nbuf.set(buf);
+ buf = nbuf;
+ }
+ };
+ var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
+ var tbts = sl * 8;
+ do {
+ if (!lm) {
+ final = bits(dat, pos, 1);
+ var type = bits(dat, pos + 1, 3);
+ pos += 3;
+ if (!type) {
+ var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l;
+ if (t > sl) {
+ if (noSt)
+ err(0);
+ break;
+ }
+ if (resize)
+ cbuf(bt + l);
+ buf.set(dat.subarray(s, t), bt);
+ st.b = bt += l, st.p = pos = t * 8, st.f = final;
+ continue;
+ } else if (type == 1)
+ lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
+ else if (type == 2) {
+ var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
+ var tl = hLit + bits(dat, pos + 5, 31) + 1;
+ pos += 14;
+ var ldt = new u8(tl);
+ var clt = new u8(19);
+ for (var i = 0; i < hcLen; ++i) {
+ clt[clim[i]] = bits(dat, pos + i * 3, 7);
+ }
+ pos += hcLen * 3;
+ var clb = max$1(clt), clbmsk = (1 << clb) - 1;
+ var clm = hMap(clt, clb, 1);
+ for (var i = 0; i < tl; ) {
+ var r = clm[bits(dat, pos, clbmsk)];
+ pos += r & 15;
+ var s = r >> 4;
+ if (s < 16) {
+ ldt[i++] = s;
+ } else {
+ var c = 0, n = 0;
+ if (s == 16)
+ n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
+ else if (s == 17)
+ n = 3 + bits(dat, pos, 7), pos += 3;
+ else if (s == 18)
+ n = 11 + bits(dat, pos, 127), pos += 7;
+ while (n--)
+ ldt[i++] = c;
+ }
+ }
+ var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
+ lbt = max$1(lt);
+ dbt = max$1(dt);
+ lm = hMap(lt, lbt, 1);
+ dm = hMap(dt, dbt, 1);
+ } else
+ err(1);
+ if (pos > tbts) {
+ if (noSt)
+ err(0);
+ break;
+ }
+ }
+ if (resize)
+ cbuf(bt + 131072);
+ var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
+ var lpos = pos;
+ for (; ; lpos = pos) {
+ var c = lm[bits16(dat, pos) & lms], sym = c >> 4;
+ pos += c & 15;
+ if (pos > tbts) {
+ if (noSt)
+ err(0);
+ break;
+ }
+ if (!c)
+ err(2);
+ if (sym < 256)
+ buf[bt++] = sym;
+ else if (sym == 256) {
+ lpos = pos, lm = null;
+ break;
+ } else {
+ var add2 = sym - 254;
+ if (sym > 264) {
+ var i = sym - 257, b = fleb[i];
+ add2 = bits(dat, pos, (1 << b) - 1) + fl[i];
+ pos += b;
+ }
+ var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;
+ if (!d)
+ err(3);
+ pos += d & 15;
+ var dt = fd[dsym];
+ if (dsym > 3) {
+ var b = fdeb[dsym];
+ dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
+ }
+ if (pos > tbts) {
+ if (noSt)
+ err(0);
+ break;
+ }
+ if (resize)
+ cbuf(bt + 131072);
+ var end = bt + add2;
+ if (bt < dt) {
+ var shift = dl - dt, dend = Math.min(dt, end);
+ if (shift + bt < 0)
+ err(3);
+ for (; bt < dend; ++bt)
+ buf[bt] = dict[shift + bt];
+ }
+ for (; bt < end; ++bt)
+ buf[bt] = buf[bt - dt];
+ }
+ }
+ st.l = lm, st.p = lpos, st.b = bt, st.f = final;
+ if (lm)
+ final = 1, st.m = lbt, st.d = dm, st.n = dbt;
+ } while (!final);
+ return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
+};
+var et = /* @__PURE__ */ new u8(0);
+var gzs = function(d) {
+ if (d[0] != 31 || d[1] != 139 || d[2] != 8)
+ err(6, "invalid gzip data");
+ var flg = d[3];
+ var st = 10;
+ if (flg & 4)
+ st += (d[10] | d[11] << 8) + 2;
+ for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])
+ ;
+ return st + (flg & 2);
+};
+var Inflate = /* @__PURE__ */ function() {
+ function Inflate2(opts, cb) {
+ if (typeof opts == "function")
+ cb = opts, opts = {};
+ this.ondata = cb;
+ var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);
+ this.s = { i: 0, b: dict ? dict.length : 0 };
+ this.o = new u8(32768);
+ this.p = new u8(0);
+ if (dict)
+ this.o.set(dict);
+ }
+ Inflate2.prototype.e = function(c) {
+ if (!this.ondata)
+ err(5);
+ if (this.d)
+ err(4);
+ if (!this.p.length)
+ this.p = c;
+ else if (c.length) {
+ var n = new u8(this.p.length + c.length);
+ n.set(this.p), n.set(c, this.p.length), this.p = n;
+ }
+ };
+ Inflate2.prototype.c = function(final) {
+ this.s.i = +(this.d = final || false);
+ var bts = this.s.b;
+ var dt = inflt(this.p, this.s, this.o);
+ this.ondata(slc(dt, bts, this.s.b), this.d);
+ this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;
+ this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7;
+ };
+ Inflate2.prototype.push = function(chunk, final) {
+ this.e(chunk), this.c(final);
+ };
+ return Inflate2;
+}();
+var Gunzip = /* @__PURE__ */ function() {
+ function Gunzip2(opts, cb) {
+ this.v = 1;
+ this.r = 0;
+ Inflate.call(this, opts, cb);
+ }
+ Gunzip2.prototype.push = function(chunk, final) {
+ Inflate.prototype.e.call(this, chunk);
+ this.r += chunk.length;
+ if (this.v) {
+ var p = this.p.subarray(this.v - 1);
+ var s = p.length > 3 ? gzs(p) : 4;
+ if (s > p.length) {
+ if (!final)
+ return;
+ } else if (this.v > 1 && this.onmember) {
+ this.onmember(this.r - p.length);
+ }
+ this.p = p.subarray(s), this.v = 0;
+ }
+ Inflate.prototype.c.call(this, final);
+ if (this.s.f && !this.s.l && !final) {
+ this.v = shft(this.s.p) + 9;
+ this.s = { i: 0 };
+ this.o = new u8(0);
+ this.push(new u8(0), final);
+ }
+ };
+ return Gunzip2;
+}();
+var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder();
+var tds = 0;
+try {
+ td.decode(et, { stream: true });
+ tds = 1;
+} catch (e) {
+}
+const f32buffer = new Float32Array(1);
+const u32buffer = new Uint32Array(f32buffer.buffer);
+function floatBitsToUint$1(f) {
+ f32buffer[0] = f;
+ return u32buffer[0];
+}
+function uintBitsToFloat$1(u) {
+ u32buffer[0] = u;
+ return f32buffer[0];
+}
+function toHalf(f) {
+ f32buffer[0] = f;
+ const bits2 = u32buffer[0];
+ const sign2 = bits2 >> 31 & 1;
+ const exp3 = bits2 >> 23 & 255;
+ const frac = bits2 & 8388607;
+ const halfSign = sign2 << 15;
+ if (exp3 === 255) {
+ if (frac !== 0) {
+ return halfSign | 32767;
+ }
+ return halfSign | 31744;
+ }
+ const newExp = exp3 - 127 + 15;
+ if (newExp >= 31) {
+ return halfSign | 31744;
+ }
+ if (newExp <= 0) {
+ if (newExp < -10) {
+ return halfSign;
+ }
+ const subFrac = (frac | 8388608) >> 1 - newExp + 13;
+ return halfSign | subFrac;
+ }
+ const halfFrac = frac >> 13;
+ return halfSign | newExp << 10 | halfFrac;
+}
+function fromHalf(h) {
+ const sign2 = h >> 15 & 1;
+ const exp3 = h >> 10 & 31;
+ const frac = h & 1023;
+ let f32bits;
+ if (exp3 === 0) {
+ if (frac === 0) {
+ f32bits = sign2 << 31;
+ } else {
+ let mant = frac;
+ let e = -14;
+ while ((mant & 1024) === 0) {
+ mant <<= 1;
+ e--;
+ }
+ mant &= 1023;
+ const newExp = e + 127;
+ const newFrac = mant << 13;
+ f32bits = sign2 << 31 | newExp << 23 | newFrac;
+ }
+ } else if (exp3 === 31) {
+ if (frac === 0) {
+ f32bits = sign2 << 31 | 2139095040;
+ } else {
+ f32bits = sign2 << 31 | 2143289344;
+ }
+ } else {
+ const newExp = exp3 - 15 + 127;
+ const newFrac = frac << 13;
+ f32bits = sign2 << 31 | newExp << 23 | newFrac;
+ }
+ u32buffer[0] = f32bits;
+ return f32buffer[0];
+}
+function floatToUint8(v) {
+ return Math.max(0, Math.min(255, Math.round(v * 255)));
+}
+function floatToSint8(v) {
+ return Math.max(-127, Math.min(127, Math.round(v * 127)));
+}
+function Uint8ToFloat(v) {
+ return v / 255;
+}
+function Sint8ToFloat(v) {
+ return v / 127;
+}
+class DataCache {
+ // Create a DataCache with a given function that fetches data not in the cache.
+ constructor({
+ asyncFetch,
+ maxItems = 5
+ }) {
+ this.asyncFetch = asyncFetch;
+ this.maxItems = maxItems;
+ this.items = [];
+ }
+ // Fetch data for the key, returning cached data if available.
+ async getFetch(key) {
+ const index = this.items.findIndex((item) => item.key === key);
+ if (index >= 0) {
+ const item = this.items.splice(index, 1)[0];
+ this.items.push(item);
+ return item.data;
+ }
+ const data = await this.asyncFetch(key);
+ this.items.push({ key, data });
+ while (this.items.length > this.maxItems) {
+ this.items.shift();
+ }
+ return data;
+ }
+}
+function mapObject(obj, fn) {
+ const entries = Object.entries(obj).map(([key, value]) => [
+ key,
+ fn(value, key)
+ ]);
+ return Object.fromEntries(entries);
+}
+function mapFilterObject(obj, fn) {
+ const entries = Object.entries(obj).map(([key, value]) => [key, fn(value, key)]).filter(([_, value]) => value !== void 0);
+ return Object.fromEntries(entries);
+}
+function getArrayBuffers(ctx) {
+ const buffers = [];
+ const seen = /* @__PURE__ */ new Set();
+ function traverse(obj) {
+ if (obj && typeof obj === "object" && !seen.has(obj)) {
+ seen.add(obj);
+ if (obj instanceof ArrayBuffer) {
+ buffers.push(obj);
+ } else if (ArrayBuffer.isView(obj)) {
+ buffers.push(obj.buffer);
+ } else if (Array.isArray(obj)) {
+ obj.forEach(traverse);
+ } else {
+ Object.values(obj).forEach(traverse);
+ }
+ }
+ }
+ traverse(ctx);
+ return buffers;
+}
+function newArray(n, initFunction) {
+ return new Array(n).fill(null).map((_, i) => initFunction(i));
+}
+class FreeList {
+ constructor({
+ // Allocate a new item with the given args
+ allocate,
+ // Dispose of an item (optional, if GC is enough)
+ dispose,
+ // Check if an existing item in the list is valid for the given args,
+ // allowing you to store heterogeneous items in the list.
+ valid
+ }) {
+ this.items = [];
+ this.allocate = allocate;
+ this.dispose = dispose;
+ this.valid = valid;
+ }
+ // Allocate a new item from the free list, first checking if a existing item
+ // on the freelist is valid for the given args.
+ alloc(args) {
+ while (true) {
+ const item = this.items.pop();
+ if (!item) {
+ break;
+ }
+ if (this.valid(item, args)) {
+ return item;
+ }
+ if (this.dispose) {
+ this.dispose(item);
+ }
+ }
+ return this.allocate(args);
+ }
+ free(item) {
+ this.items.push(item);
+ }
+ disposeAll() {
+ let item;
+ item = this.items.pop();
+ while (item) {
+ if (this.dispose) {
+ this.dispose(item);
+ }
+ item = this.items.pop();
+ }
+ }
+}
+function setPackedSplat(packedSplats, index, x, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) {
+ const uR = floatToUint8(r);
+ const uG = floatToUint8(g);
+ const uB = floatToUint8(b);
+ const uA = floatToUint8(opacity);
+ const uQuat = encodeQuatOctXy88R8(
+ new THREE__namespace.Quaternion(quatX, quatY, quatZ, quatW)
+ );
+ const uQuatX = uQuat & 255;
+ const uQuatY = uQuat >>> 8 & 255;
+ const uQuatZ = uQuat >>> 16 & 255;
+ const uScaleX = scaleX === 0 ? 0 : Math.min(
+ 255,
+ Math.max(
+ 0,
+ Math.round((Math.log(scaleX) - LN_SCALE_MIN) / LN_RESCALE) + 1
+ )
+ );
+ const uScaleY = scaleY === 0 ? 0 : Math.min(
+ 255,
+ Math.max(
+ 0,
+ Math.round((Math.log(scaleY) - LN_SCALE_MIN) / LN_RESCALE) + 1
+ )
+ );
+ const uScaleZ = scaleZ === 0 ? 0 : Math.min(
+ 255,
+ Math.max(
+ 0,
+ Math.round((Math.log(scaleZ) - LN_SCALE_MIN) / LN_RESCALE) + 1
+ )
+ );
+ const uCenterX = toHalf(x);
+ const uCenterY = toHalf(y);
+ const uCenterZ = toHalf(z);
+ const i4 = index * 4;
+ packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24;
+ packedSplats[i4 + 1] = uCenterX | uCenterY << 16;
+ packedSplats[i4 + 2] = uCenterZ | uQuatX << 16 | uQuatY << 24;
+ packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | uQuatZ << 24;
+}
+function setPackedSplatCenter(packedSplats, index, x, y, z) {
+ const uCenterX = toHalf(x);
+ const uCenterY = toHalf(y);
+ const uCenterZ = toHalf(z);
+ const i4 = index * 4;
+ packedSplats[i4 + 1] = uCenterX | uCenterY << 16;
+ packedSplats[i4 + 2] = uCenterZ | packedSplats[i4 + 2] & 4294901760;
+}
+function setPackedSplatScales(packedSplats, index, scaleX, scaleY, scaleZ) {
+ const uScaleX = scaleX === 0 ? 0 : Math.min(
+ 255,
+ Math.max(
+ 0,
+ Math.round((Math.log(scaleX) - LN_SCALE_MIN) / LN_RESCALE) + 1
+ )
+ );
+ const uScaleY = scaleY === 0 ? 0 : Math.min(
+ 255,
+ Math.max(
+ 0,
+ Math.round((Math.log(scaleY) - LN_SCALE_MIN) / LN_RESCALE) + 1
+ )
+ );
+ const uScaleZ = scaleZ === 0 ? 0 : Math.min(
+ 255,
+ Math.max(
+ 0,
+ Math.round((Math.log(scaleZ) - LN_SCALE_MIN) / LN_RESCALE) + 1
+ )
+ );
+ const i4 = index * 4;
+ packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | packedSplats[i4 + 3] & 4278190080;
+}
+function setPackedSplatQuat(packedSplats, index, quatX, quatY, quatZ, quatW) {
+ const uQuat = encodeQuatOctXy88R8(
+ new THREE__namespace.Quaternion(quatX, quatY, quatZ, quatW)
+ );
+ const uQuatX = uQuat & 255;
+ const uQuatY = uQuat >>> 8 & 255;
+ const uQuatZ = uQuat >>> 16 & 255;
+ const i4 = index * 4;
+ packedSplats[i4 + 2] = packedSplats[i4 + 2] & 65535 | uQuatX << 16 | uQuatY << 24;
+ packedSplats[i4 + 3] = packedSplats[i4 + 3] & 16777215 | uQuatZ << 24;
+}
+function setPackedSplatRgb(packedSplats, index, r, g, b) {
+ const uR = floatToUint8(r);
+ const uG = floatToUint8(g);
+ const uB = floatToUint8(b);
+ const i4 = index * 4;
+ packedSplats[i4] = uR | uG << 8 | uB << 16 | packedSplats[i4] & 4278190080;
+}
+function setPackedSplatOpacity(packedSplats, index, opacity) {
+ const uA = floatToUint8(opacity);
+ const i4 = index * 4;
+ packedSplats[i4] = packedSplats[i4] & 16777215 | uA << 24;
+}
+const packedCenter = new THREE__namespace.Vector3();
+const packedScales = new THREE__namespace.Vector3();
+const packedQuaternion = new THREE__namespace.Quaternion();
+const packedColor = new THREE__namespace.Color();
+const packedFields = {
+ center: packedCenter,
+ scales: packedScales,
+ quaternion: packedQuaternion,
+ color: packedColor,
+ opacity: 0
+};
+function unpackSplat(packedSplats, index) {
+ const result = packedFields;
+ const i4 = index * 4;
+ const word0 = packedSplats[i4];
+ const word1 = packedSplats[i4 + 1];
+ const word2 = packedSplats[i4 + 2];
+ const word3 = packedSplats[i4 + 3];
+ result.color.set(
+ (word0 & 255) / 255,
+ (word0 >>> 8 & 255) / 255,
+ (word0 >>> 16 & 255) / 255
+ );
+ result.opacity = (word0 >>> 24 & 255) / 255;
+ result.center.set(
+ fromHalf(word1 & 65535),
+ fromHalf(word1 >>> 16 & 65535),
+ fromHalf(word2 & 65535)
+ );
+ const uScalesX = word3 & 255;
+ result.scales.x = uScalesX === 0 ? 0 : Math.exp(LN_SCALE_MIN + (uScalesX - 1) * LN_RESCALE);
+ const uScalesY = word3 >>> 8 & 255;
+ result.scales.y = uScalesY === 0 ? 0 : Math.exp(LN_SCALE_MIN + (uScalesY - 1) * LN_RESCALE);
+ const uScalesZ = word3 >>> 16 & 255;
+ result.scales.z = uScalesZ === 0 ? 0 : Math.exp(LN_SCALE_MIN + (uScalesZ - 1) * LN_RESCALE);
+ const uQuat = word2 >>> 16 & 65535 | word3 >>> 8 & 16711680;
+ decodeQuatOctXy88R8(uQuat, result.quaternion);
+ return result;
+}
+function getTextureSize(numSplats) {
+ const width = SPLAT_TEX_WIDTH;
+ const height = Math.max(
+ SPLAT_TEX_MIN_HEIGHT,
+ Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width))
+ );
+ const depth = Math.ceil(numSplats / (width * height));
+ const maxSplats = width * height * depth;
+ return { width, height, depth, maxSplats };
+}
+function isMobile() {
+ if (navigator.maxTouchPoints > 0) {
+ return true;
+ }
+ return /Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(
+ navigator.userAgent
+ );
+}
+function isAndroid() {
+ return /Android/.test(navigator.userAgent);
+}
+function isOculus() {
+ return /Oculus/.test(navigator.userAgent);
+}
+function flipPixels(pixels, width, height) {
+ const tempLine = new Uint8Array(width * 4);
+ for (let y = 0; y < height / 2; y++) {
+ const topOffset = y * width * 4;
+ const bottomOffset = (height - 1 - y) * width * 4;
+ tempLine.set(pixels.subarray(topOffset, topOffset + width * 4));
+ pixels.set(
+ pixels.subarray(bottomOffset, bottomOffset + width * 4),
+ topOffset
+ );
+ pixels.set(tempLine, bottomOffset);
+ }
+ return pixels;
+}
+function pixelsToPngUrl(pixels, width, height) {
+ const canvas = document.createElement("canvas");
+ canvas.width = width;
+ canvas.height = height;
+ const ctx = canvas.getContext("2d");
+ if (!ctx) {
+ throw new Error("Can't get 2d context");
+ }
+ const imageData = ctx.createImageData(width, height);
+ imageData.data.set(pixels);
+ ctx.putImageData(imageData, 0, 0);
+ return canvas.toDataURL("image/png");
+}
+function cloneClock(clock) {
+ const newClock = new THREE__namespace.Clock(clock.autoStart);
+ newClock.startTime = clock.startTime;
+ newClock.oldTime = clock.oldTime;
+ newClock.elapsedTime = clock.elapsedTime;
+ newClock.running = clock.running;
+ return newClock;
+}
+function omitUndefined(obj) {
+ return Object.fromEntries(
+ Object.entries(obj).filter(([_, value]) => value !== void 0)
+ );
+}
+const IDENT_VERTEX_SHADER = unindent(`
+ precision highp float;
+
+ in vec3 position;
+
+ void main() {
+ gl_Position = vec4(position.xy, 0.0, 1.0);
+ }
+`);
+function averagePositions(positions) {
+ const sum = new THREE__namespace.Vector3();
+ for (const position of positions) {
+ sum.add(position);
+ }
+ return sum.divideScalar(positions.length);
+}
+function averageQuaternions(quaternions) {
+ if (quaternions.length === 0) {
+ return new THREE__namespace.Quaternion();
+ }
+ const sum = quaternions[0].clone();
+ for (let i = 1; i < quaternions.length; i++) {
+ if (quaternions[i].dot(quaternions[0]) < 0) {
+ sum.x -= quaternions[i].x;
+ sum.y -= quaternions[i].y;
+ sum.z -= quaternions[i].z;
+ sum.w -= quaternions[i].w;
+ } else {
+ sum.x += quaternions[i].x;
+ sum.y += quaternions[i].y;
+ sum.z += quaternions[i].z;
+ sum.w += quaternions[i].w;
+ }
+ }
+ return sum.normalize();
+}
+function coinciDist(matrix1, matrix2) {
+ const origin1 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix1);
+ const origin2 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix2);
+ const direction1 = new THREE__namespace.Vector3(0, 0, -1).applyMatrix4(matrix1).sub(origin1).normalize();
+ const direction2 = new THREE__namespace.Vector3(0, 0, -1).applyMatrix4(matrix2).sub(origin2).normalize();
+ const distance2 = origin1.distanceTo(origin2);
+ const coincidence = direction1.dot(direction2);
+ return { distance: distance2, coincidence };
+}
+function withinDist({
+ matrix1,
+ matrix2,
+ maxDistance
+}) {
+ const origin1 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix1);
+ const origin2 = new THREE__namespace.Vector3(0, 0, 0).applyMatrix4(matrix2);
+ return origin1.distanceTo(origin2) <= maxDistance;
+}
+function withinCoinciDist({
+ matrix1,
+ matrix2,
+ maxDistance,
+ minCoincidence
+}) {
+ const { distance: distance2, coincidence } = coinciDist(matrix1, matrix2);
+ return distance2 <= maxDistance && (minCoincidence == null || coincidence >= minCoincidence);
+}
+function coorientDist(matrix1, matrix2) {
+ const [origin1, rotate1] = [new THREE__namespace.Vector3(), new THREE__namespace.Quaternion()];
+ const [origin2, rotate2] = [new THREE__namespace.Vector3(), new THREE__namespace.Quaternion()];
+ matrix1.decompose(origin1, rotate1, new THREE__namespace.Vector3());
+ matrix2.decompose(origin2, rotate2, new THREE__namespace.Vector3());
+ const distance2 = origin1.distanceTo(origin2);
+ const coorient = Math.abs(rotate1.dot(rotate2));
+ return { distance: distance2, coorient };
+}
+function withinCoorientDist({
+ matrix1,
+ matrix2,
+ maxDistance,
+ minCoorient
+}) {
+ const { distance: distance2, coorient } = coorientDist(matrix1, matrix2);
+ return distance2 <= maxDistance && (minCoorient == null || coorient >= minCoorient);
+}
+function epsilonSign(value, epsilon = 1e-3) {
+ if (Math.abs(value) < epsilon) {
+ return 0;
+ }
+ return Math.sign(value);
+}
+function encodeQuatXyz888(q) {
+ const negQuat = q.w < 0;
+ const iQuatX = floatToSint8(negQuat ? -q.x : q.x);
+ const iQuatY = floatToSint8(negQuat ? -q.y : q.y);
+ const iQuatZ = floatToSint8(negQuat ? -q.z : q.z);
+ const uQuatX = iQuatX & 255;
+ const uQuatY = iQuatY & 255;
+ const uQuatZ = iQuatZ & 255;
+ return uQuatX | uQuatY << 8 | uQuatZ << 16;
+}
+function decodeQuatXyz888(encoded, out) {
+ const iQuatX = encoded << 24 >> 24;
+ const iQuatY = encoded << 16 >> 24;
+ const iQuatZ = encoded << 8 >> 24;
+ out.set(iQuatX / 127, iQuatY / 127, iQuatZ / 127, 0);
+ const dotSelf = out.x * out.x + out.y * out.y + out.z * out.z;
+ out.w = Math.sqrt(Math.max(0, 1 - dotSelf));
+ return out;
+}
+function encodeQuatOctXy88R8(q) {
+ const qnorm = q.clone().normalize();
+ if (qnorm.w < 0) {
+ qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);
+ }
+ const theta = 2 * Math.acos(qnorm.w);
+ const xyz_norm = Math.sqrt(
+ qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z
+ );
+ const axis = xyz_norm < 1e-6 ? new THREE__namespace.Vector3(1, 0, 0) : new THREE__namespace.Vector3(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);
+ const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);
+ let p_x = axis.x / sum;
+ let p_y = axis.y / sum;
+ if (axis.z < 0) {
+ const tmp = p_x;
+ p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);
+ p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);
+ }
+ const u_f = p_x * 0.5 + 0.5;
+ const v_f = p_y * 0.5 + 0.5;
+ const quantU = Math.round(u_f * 255);
+ const quantV = Math.round(v_f * 255);
+ const angleInt = Math.round(theta * (255 / Math.PI));
+ return angleInt << 16 | quantV << 8 | quantU;
+}
+function decodeQuatOctXy88R8(encoded, out) {
+ const quantU = encoded & 255;
+ const quantV = encoded >>> 8 & 255;
+ const angleInt = encoded >>> 16 & 255;
+ const u_f = quantU / 255;
+ const v_f = quantV / 255;
+ let f_x = (u_f - 0.5) * 2;
+ let f_y = (v_f - 0.5) * 2;
+ const f_z = 1 - (Math.abs(f_x) + Math.abs(f_y));
+ const t = Math.max(-f_z, 0);
+ f_x += f_x >= 0 ? -t : t;
+ f_y += f_y >= 0 ? -t : t;
+ const axis = new THREE__namespace.Vector3(f_x, f_y, f_z).normalize();
+ const theta = angleInt / 255 * Math.PI;
+ const halfTheta = theta * 0.5;
+ const s = Math.sin(halfTheta);
+ const w = Math.cos(halfTheta);
+ out.set(axis.x * s, axis.y * s, axis.z * s, w);
+ return out;
+}
+function encodeQuatEulerXyz888(q) {
+ const qNorm = q.clone().normalize();
+ const sinr_cosp = 2 * (qNorm.w * qNorm.x + qNorm.y * qNorm.z);
+ const cosr_cosp = 1 - 2 * (qNorm.x * qNorm.x + qNorm.y * qNorm.y);
+ const roll = Math.atan2(sinr_cosp, cosr_cosp);
+ const sinp = 2 * (qNorm.w * qNorm.y - qNorm.z * qNorm.x);
+ const pitch = Math.abs(sinp) >= 1 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);
+ const siny_cosp = 2 * (qNorm.w * qNorm.z + qNorm.x * qNorm.y);
+ const cosy_cosp = 1 - 2 * (qNorm.y * qNorm.y + qNorm.z * qNorm.z);
+ const yaw = Math.atan2(siny_cosp, cosy_cosp);
+ const normRoll = (roll + Math.PI) / (2 * Math.PI);
+ const normPitch = (pitch + Math.PI) / (2 * Math.PI);
+ const normYaw = (yaw + Math.PI) / (2 * Math.PI);
+ const rollQ = Math.round(normRoll * 255);
+ const pitchQ = Math.round(normPitch * 255);
+ const yawQ = Math.round(normYaw * 255);
+ return yawQ << 16 | pitchQ << 8 | rollQ;
+}
+function decodeQuatEulerXyz888(encoded, out) {
+ const rollQ = encoded & 255;
+ const pitchQ = encoded >>> 8 & 255;
+ const yawQ = encoded >>> 16 & 255;
+ const normRoll = rollQ / 255;
+ const normPitch = pitchQ / 255;
+ const normYaw = yawQ / 255;
+ const roll = normRoll * (2 * Math.PI) - Math.PI;
+ const pitch = normPitch * (2 * Math.PI) - Math.PI;
+ const yaw = normYaw * (2 * Math.PI) - Math.PI;
+ const cr = Math.cos(roll * 0.5);
+ const sr = Math.sin(roll * 0.5);
+ const cp = Math.cos(pitch * 0.5);
+ const sp = Math.sin(pitch * 0.5);
+ const cy = Math.cos(yaw * 0.5);
+ const sy = Math.sin(yaw * 0.5);
+ out.w = cr * cp * cy + sr * sp * sy;
+ out.x = sr * cp * cy - cr * sp * sy;
+ out.y = cr * sp * cy + sr * cp * sy;
+ out.z = cr * cp * sy - sr * sp * cy;
+ out.normalize();
+ return out;
+}
+function packSint8Bytes(b0, b1, b2, b3) {
+ const clampedB0 = Math.max(-127, Math.min(127, b0 * 127));
+ const clampedB1 = Math.max(-127, Math.min(127, b1 * 127));
+ const clampedB2 = Math.max(-127, Math.min(127, b2 * 127));
+ const clampedB3 = Math.max(-127, Math.min(127, b3 * 127));
+ return clampedB0 & 255 | (clampedB1 & 255) << 8 | (clampedB2 & 255) << 16 | (clampedB3 & 255) << 24;
+}
+function encodeSh1Rgb(sh1Array, index, sh1Rgb) {
+ const base = index * 2;
+ for (let i = 0; i < 9; ++i) {
+ const value = Math.max(-63, Math.min(63, sh1Rgb[i] * 63)) & 127;
+ const bitStart = i * 7;
+ const bitEnd = bitStart + 7;
+ const wordStart = Math.floor(bitStart / 32);
+ const bitOffset = bitStart - wordStart * 32;
+ const firstWord = value << bitOffset & 4294967295;
+ sh1Array[base + wordStart] |= firstWord;
+ if (bitEnd > wordStart * 32 + 32) {
+ const secondWord = value >>> 32 - bitOffset & 4294967295;
+ sh1Array[base + wordStart + 1] |= secondWord;
+ }
+ }
+}
+function encodeSh2Rgb(sh2Array, index, sh2Rgb) {
+ sh2Array[index * 4 + 0] = packSint8Bytes(
+ sh2Rgb[0],
+ sh2Rgb[1],
+ sh2Rgb[2],
+ sh2Rgb[3]
+ );
+ sh2Array[index * 4 + 1] = packSint8Bytes(
+ sh2Rgb[4],
+ sh2Rgb[5],
+ sh2Rgb[6],
+ sh2Rgb[7]
+ );
+ sh2Array[index * 4 + 2] = packSint8Bytes(
+ sh2Rgb[8],
+ sh2Rgb[9],
+ sh2Rgb[10],
+ sh2Rgb[11]
+ );
+ sh2Array[index * 4 + 3] = packSint8Bytes(
+ sh2Rgb[12],
+ sh2Rgb[13],
+ sh2Rgb[14],
+ 0
+ );
+}
+function encodeSh3Rgb(sh3Array, index, sh3Rgb) {
+ const base = index * 4;
+ for (let i = 0; i < 21; ++i) {
+ const value = Math.max(-31, Math.min(31, sh3Rgb[i] * 31)) & 63;
+ const bitStart = i * 6;
+ const bitEnd = bitStart + 6;
+ const wordStart = Math.floor(bitStart / 32);
+ const bitOffset = bitStart - wordStart * 32;
+ const firstWord = value << bitOffset & 4294967295;
+ sh3Array[base + wordStart] |= firstWord;
+ if (bitEnd > wordStart * 32 + 32) {
+ const secondWord = value >>> 32 - bitOffset & 4294967295;
+ sh3Array[base + wordStart + 1] |= secondWord;
+ }
+ }
+}
+function decompressPartialGzip(fileBytes, numBytes) {
+ const chunks = [];
+ let totalBytes = 0;
+ let result = null;
+ const gunzip = new Gunzip((data, final) => {
+ chunks.push(data);
+ totalBytes += data.length;
+ if (final || totalBytes >= numBytes) {
+ const allBytes = new Uint8Array(totalBytes);
+ let offset2 = 0;
+ for (const chunk of chunks) {
+ allBytes.set(chunk, offset2);
+ offset2 += chunk.length;
+ }
+ result = allBytes.slice(0, numBytes);
+ }
+ });
+ const CHUNK_SIZE = 1024;
+ let offset = 0;
+ while (result == null && offset < fileBytes.length) {
+ const chunk = fileBytes.slice(offset, offset + CHUNK_SIZE);
+ gunzip.push(chunk, false);
+ offset += CHUNK_SIZE;
+ }
+ if (result == null) {
+ gunzip.push(new Uint8Array(), true);
+ if (result == null) {
+ throw new Error("Failed to decompress partial gzip");
+ }
+ }
+ return result;
+}
+class GunzipReader {
+ constructor({
+ fileBytes,
+ chunkBytes = 64 * 1024
+ }) {
+ this.fileBytes = fileBytes;
+ this.chunkBytes = chunkBytes;
+ this.offset = 0;
+ this.chunks = [];
+ this.totalBytes = 0;
+ this.gunzip = new Gunzip((chunk, _final) => {
+ this.chunks.push(chunk);
+ this.totalBytes += chunk.length;
+ });
+ }
+ read(numBytes) {
+ while (this.totalBytes < numBytes && this.offset < this.fileBytes.length) {
+ const end = Math.min(
+ this.offset + this.chunkBytes,
+ this.fileBytes.length
+ );
+ this.gunzip.push(this.fileBytes.subarray(this.offset, end), false);
+ this.offset = end;
+ }
+ if (this.totalBytes < numBytes && this.offset >= this.fileBytes.length) {
+ this.gunzip.push(new Uint8Array(0), true);
+ }
+ if (this.totalBytes < numBytes) {
+ throw new Error(
+ `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`
+ );
+ }
+ const allBytes = new Uint8Array(this.totalBytes);
+ let outOffset = 0;
+ for (const chunk of this.chunks) {
+ allBytes.set(chunk, outOffset);
+ outOffset += chunk.length;
+ }
+ const result = allBytes.subarray(0, numBytes);
+ this.chunks = [allBytes.subarray(numBytes)];
+ this.totalBytes -= numBytes;
+ return result;
+ }
+}
+const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
+ __proto__: null,
+ DataCache,
+ FreeList,
+ GunzipReader,
+ IDENT_VERTEX_SHADER,
+ Sint8ToFloat,
+ Uint8ToFloat,
+ averagePositions,
+ averageQuaternions,
+ cloneClock,
+ coinciDist,
+ coorientDist,
+ decodeQuatEulerXyz888,
+ decodeQuatOctXy88R8,
+ decodeQuatXyz888,
+ decompressPartialGzip,
+ encodeQuatEulerXyz888,
+ encodeQuatOctXy88R8,
+ encodeQuatXyz888,
+ encodeSh1Rgb,
+ encodeSh2Rgb,
+ encodeSh3Rgb,
+ epsilonSign,
+ flipPixels,
+ floatBitsToUint: floatBitsToUint$1,
+ floatToSint8,
+ floatToUint8,
+ fromHalf,
+ getArrayBuffers,
+ getTextureSize,
+ isAndroid,
+ isMobile,
+ isOculus,
+ mapFilterObject,
+ mapObject,
+ newArray,
+ omitUndefined,
+ pixelsToPngUrl,
+ setPackedSplat,
+ setPackedSplatCenter,
+ setPackedSplatOpacity,
+ setPackedSplatQuat,
+ setPackedSplatRgb,
+ setPackedSplatScales,
+ toHalf,
+ uintBitsToFloat: uintBitsToFloat$1,
+ unpackSplat,
+ withinCoinciDist,
+ withinCoorientDist,
+ withinDist
+}, Symbol.toStringTag, { value: "Module" }));
+class DynoProgram {
+ constructor({
+ graph,
+ inputs,
+ outputs,
+ template
+ }) {
+ this.graph = graph;
+ this.template = template;
+ this.inputs = inputs ?? {};
+ this.outputs = outputs ?? {};
+ const compile = new Compilation({ indent: this.template.indent });
+ for (const key in this.outputs) {
+ if (this.outputs[key]) {
+ compile.declares.add(this.outputs[key]);
+ }
+ }
+ const statements = graph.compile({
+ inputs: this.inputs,
+ outputs: this.outputs,
+ compile
+ });
+ this.shader = template.generate({ globals: compile.globals, statements });
+ this.uniforms = compile.uniforms;
+ this.updaters = compile.updaters;
+ }
+ prepareMaterial() {
+ return getMaterial(this);
+ }
+ update() {
+ for (const updater of this.updaters) {
+ updater();
+ }
+ }
+}
+class DynoProgramTemplate {
+ constructor(template) {
+ const globals = template.match(/^([ \t]*)\{\{\s*GLOBALS\s*\}\}/m);
+ const statements = template.match(/^([ \t]*)\{\{\s*STATEMENTS\s*\}\}/m);
+ if (!globals || !statements) {
+ throw new Error(
+ "Template must contain {{ GLOBALS }} and {{ STATEMENTS }}"
+ );
+ }
+ this.before = template.substring(0, globals.index);
+ this.between = template.substring(
+ globals.index + globals[0].length,
+ statements.index
+ );
+ this.after = template.substring(
+ statements.index + statements[0].length
+ );
+ this.indent = statements[1];
+ }
+ generate({
+ globals,
+ statements
+ }) {
+ return this.before + Array.from(globals).join("\n\n") + this.between + statements.map((s) => this.indent + s).join("\n") + this.after;
+ }
+}
+const programMaterial = /* @__PURE__ */ new Map();
+function getMaterial(program) {
+ let material = programMaterial.get(program);
+ if (material) {
+ return material;
+ }
+ material = new THREE__namespace.RawShaderMaterial({
+ glslVersion: THREE__namespace.GLSL3,
+ vertexShader: IDENT_VERTEX_SHADER,
+ fragmentShader: program.shader,
+ uniforms: program.uniforms
+ });
+ programMaterial.set(program, material);
+ return material;
+}
+function addOutputType(a, b, operation = "add") {
+ const error = () => {
+ throw new Error(`Invalid ${operation} types: ${a}, ${b}`);
+ };
+ if (a === b) return a;
+ if (a === "int") {
+ if (isIntType(b)) return b;
+ error();
+ }
+ if (b === "int") {
+ if (isIntType(a)) return a;
+ error();
+ }
+ if (a === "uint") {
+ if (isUintType(b)) return b;
+ error();
+ }
+ if (b === "uint") {
+ if (isUintType(a)) return a;
+ error();
+ }
+ if (a === "float") {
+ if (isAllFloatType(b)) return b;
+ error();
+ }
+ if (b === "float") {
+ if (isAllFloatType(a)) return a;
+ error();
+ }
+ throw new Error(`Invalid ${operation} types: ${a}, ${b}`);
+}
+function subOutputType(a, b) {
+ return addOutputType(a, b, "sub");
+}
+function mulOutputType(a, b) {
+ const error = () => {
+ throw new Error(`Invalid mul types: ${a}, ${b}`);
+ };
+ const result = (value) => value;
+ if (a === "int") {
+ if (isIntType(b)) return result(b);
+ error();
+ }
+ if (b === "int") {
+ if (isIntType(a)) return result(a);
+ error();
+ }
+ if (a === "uint") {
+ if (isUintType(b)) return result(b);
+ error();
+ }
+ if (b === "uint") {
+ if (isUintType(a)) return result(a);
+ error();
+ }
+ if (a === "float") {
+ if (isAllFloatType(b)) return result(b);
+ error();
+ }
+ if (b === "float") {
+ if (isAllFloatType(a)) return result(a);
+ error();
+ }
+ if (isIntType(a) || isUintType(a) || isIntType(b) || isUintType(b)) {
+ if (a === b) return result(a);
+ error();
+ }
+ if (a === "vec2") {
+ if (b === "vec2" || isMat2(b)) return result("vec2");
+ if (b === "mat3x2") return result("vec3");
+ if (b === "mat4x2") return result("vec4");
+ error();
+ }
+ if (a === "vec3") {
+ if (b === "mat2x3") return result("vec2");
+ if (b === "vec3" || isMat3(b)) return result("vec3");
+ if (b === "mat4x3") return result("vec4");
+ error();
+ }
+ if (a === "vec4") {
+ if (b === "mat2x4") return result("vec2");
+ if (b === "mat3x4") return result("vec3");
+ if (b === "vec4" || isMat4(b)) return result("vec4");
+ error();
+ }
+ if (b === "vec2") {
+ if (isMat2(a)) return result("vec2");
+ if (a === "mat2x3") return result("vec3");
+ if (a === "mat2x4") return result("vec4");
+ error();
+ }
+ if (b === "vec3") {
+ if (a === "mat3x2") return result("vec2");
+ if (isMat3(a)) return result("vec3");
+ if (a === "mat3x4") return result("vec4");
+ error();
+ }
+ if (b === "vec4") {
+ if (a === "mat4x2") return result("vec2");
+ if (a === "mat4x3") return result("vec3");
+ if (isMat4(a)) return result("vec4");
+ error();
+ }
+ if (isMat2(a)) {
+ if (isMat2(b)) return result("mat2");
+ if (b === "mat3x2") return result("mat3x2");
+ if (b === "mat4x2") return result("mat4x2");
+ error();
+ }
+ if (a === "mat2x3") {
+ if (isMat2(b)) return result("mat2x3");
+ if (b === "mat3x2") return result("mat3");
+ if (b === "mat4x2") return result("mat4x3");
+ error();
+ }
+ if (a === "mat2x4") {
+ if (isMat2(b)) return result("mat2x4");
+ if (b === "mat3x2") return result("mat3x4");
+ if (b === "mat4x2") return result("mat4");
+ error();
+ }
+ if (a === "mat3x2") {
+ if (b === "mat2x3") return result("mat2");
+ if (isMat3(b)) return result("mat3x2");
+ if (b === "mat4x3") return result("mat4x2");
+ error();
+ }
+ if (isMat3(a)) {
+ if (b === "mat2x3") return result("mat2x3");
+ if (isMat3(b)) return result("mat3");
+ if (b === "mat4x3") return result("mat4x3");
+ error();
+ }
+ if (a === "mat3x4") {
+ if (b === "mat2x3") return result("mat2x4");
+ if (isMat3(b)) return result("mat3x4");
+ if (b === "mat4x3") return result("mat4");
+ error();
+ }
+ if (a === "mat4x2") {
+ if (b === "mat2x4") return result("mat2");
+ if (b === "mat3x4") return result("mat3x2");
+ if (isMat4(b)) return result("mat4x2");
+ error();
+ }
+ if (a === "mat4x3") {
+ if (b === "mat2x4") return result("mat2x3");
+ if (b === "mat3x4") return result("mat3");
+ if (isMat4(b)) return result("mat4x3");
+ error();
+ }
+ if (isMat4(a)) {
+ if (b === "mat2x4") return result("mat2x4");
+ if (b === "mat3x4") return result("mat3x4");
+ if (isMat4(b)) return result("mat4");
+ error();
+ }
+ throw new Error(`Invalid mul types: ${a}, ${b}`);
+}
+function divOutputType(a, b) {
+ return addOutputType(a, b, "div");
+}
+function imodOutputType(a, b) {
+ if (a === b) return a;
+ if (a === "int") {
+ if (isIntType(b)) return b;
+ } else if (b === "int") {
+ if (isIntType(a)) return a;
+ } else if (a === "uint") {
+ if (isUintType(b)) return b;
+ } else if (b === "uint") {
+ if (isUintType(a)) return a;
+ }
+ throw new Error(`Invalid imod types: ${a}, ${b}`);
+}
+function modOutputType(a, b) {
+ if (a === b || b === "float") return a;
+ throw new Error(`Invalid mod types: ${a}, ${b}`);
+}
+function modfOutputType(a) {
+ return a;
+}
+function negOutputType(a) {
+ return a;
+}
+function absOutputType(a) {
+ return a;
+}
+function signOutputType(a) {
+ return a;
+}
+function floorOutputType(a) {
+ return a;
+}
+function ceilOutputType(a) {
+ return a;
+}
+function truncOutputType(a) {
+ return a;
+}
+function roundOutputType(a) {
+ return a;
+}
+function fractOutputType(a) {
+ return a;
+}
+function powOutputType(a) {
+ return a;
+}
+function expOutputType(a) {
+ return a;
+}
+function exp2OutputType(a) {
+ return a;
+}
+function logOutputType(a) {
+ return a;
+}
+function log2OutputType(a) {
+ return a;
+}
+function sqrOutputType(a) {
+ return a;
+}
+function sqrtOutputType(a) {
+ return a;
+}
+function inversesqrtOutputType(a) {
+ return a;
+}
+function minOutputType(a, b, operation = "min") {
+ if (a === b) return a;
+ if (b === "float") {
+ if (isFloatType(a)) return a;
+ } else if (b === "int") {
+ if (isIntType(a)) return a;
+ } else if (b === "uint") {
+ if (isUintType(a)) return a;
+ }
+ throw new Error(`Invalid ${operation} types: ${a}, ${b}`);
+}
+function maxOutputType(a, b) {
+ return minOutputType(a, b, "max");
+}
+function clampOutputType(a, b, _c) {
+ if (b === "float") {
+ if (isFloatType(a)) return a;
+ } else if (b === "int") {
+ if (isIntType(a)) return a;
+ } else if (b === "uint") {
+ if (isUintType(a)) return a;
+ }
+ throw new Error(`Invalid clamp types: ${a}, ${b}`);
+}
+function mixOutputType(a, b, c) {
+ if (c === a) return a;
+ if (c === "float") return a;
+ if (c === "bool" && a === "float") return a;
+ if (c === "bvec2" && a === "vec2") return a;
+ if (c === "bvec3" && a === "vec3") return a;
+ if (c === "bvec4" && a === "vec4") return a;
+ throw new Error(`Invalid mix types: ${a}, ${b}, ${c}`);
+}
+function stepOutputType(a, b) {
+ if (a === b || b === "float") return b;
+ throw new Error(`Invalid step types: ${a}, ${b}`);
+}
+function smoothstepOutputType(a, b, c) {
+ if (a === b) {
+ if (a === c || a === "float") return c;
+ }
+ throw new Error(`Invalid smoothstep types: ${a}, ${b}, ${c}`);
+}
+function isNanOutputType(a, operation = "isNan") {
+ if (a === "float") return "bool";
+ if (a === "vec2") return "bvec2";
+ if (a === "vec3") return "bvec3";
+ if (a === "vec4") return "bvec4";
+ throw new Error(`Invalid ${operation} types: ${a}`);
+}
+function isInfOutputType(a) {
+ return isNanOutputType(a, "isInf");
+}
+const add = (a, b) => new Add({ a, b });
+const sub = (a, b) => new Sub({ a, b });
+const mul = (a, b) => new Mul({ a, b });
+const div = (a, b) => new Div({ a, b });
+const imod = (a, b) => new IMod({ a, b });
+const mod = (a, b) => new Mod({ a, b });
+const modf = (a) => new Modf({ a }).outputs;
+const neg = (a) => new Neg({ a });
+const abs = (a) => new Abs({ a });
+const sign = (a) => new Sign({ a });
+const floor = (a) => new Floor({ a });
+const ceil = (a) => new Ceil({ a });
+const trunc = (a) => new Trunc({ a });
+const round = (a) => new Round({ a });
+const fract = (a) => new Fract({ a });
+const pow = (a, b) => new Pow({ a, b });
+const exp = (a) => new Exp({ a });
+const exp2 = (a) => new Exp2({ a });
+const log = (a) => new Log({ a });
+const log2 = (a) => new Log2({ a });
+const sqr = (a) => new Sqr({ a });
+const sqrt = (a) => new Sqrt({ a });
+const inversesqrt = (a) => new InverseSqrt({ a });
+const min = (a, b) => new Min({ a, b });
+const max = (a, b) => new Max({ a, b });
+const clamp = (a, min2, max2) => new Clamp({ a, min: min2, max: max2 });
+const mix = (a, b, t) => new Mix({ a, b, t });
+const step = (edge, x) => new Step({ edge, x });
+const smoothstep = (edge0, edge1, x) => new Smoothstep({ edge0, edge1, x });
+const isNan = (a) => new IsNan({ a });
+const isInf = (a) => new IsInf({ a });
+class Add extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "sum", outTypeFunc: addOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.sum} = ${inputs.a} + ${inputs.b};`];
+ };
+ }
+}
+class Sub extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "difference", outTypeFunc: subOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.difference} = ${inputs.a} - ${inputs.b};`];
+ };
+ }
+}
+class Mul extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "product", outTypeFunc: mulOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.product} = ${inputs.a} * ${inputs.b};`];
+ };
+ }
+}
+class Div extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "quotient", outTypeFunc: divOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.quotient} = ${inputs.a} / ${inputs.b};`];
+ };
+ }
+}
+class IMod extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "remainder", outTypeFunc: imodOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.remainder} = ${inputs.a} % ${inputs.b};`];
+ };
+ }
+}
+class Mod extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "remainder", outTypeFunc: modOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.remainder} = mod(${inputs.a}, ${inputs.b});`];
+ };
+ }
+}
+class Modf extends Dyno {
+ constructor({ a }) {
+ const inTypes = { a: valType(a) };
+ const outType = modfOutputType(inTypes.a);
+ const outTypes = {
+ fract: outType,
+ integer: outType
+ };
+ super({ inTypes, outTypes, inputs: { a } });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.fract} = modf(${inputs.a}, ${outputs.integer});`];
+ };
+ }
+}
+class Neg extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "neg", outTypeFunc: negOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.neg} = -${inputs.a};`];
+ };
+ }
+}
+class Abs extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "abs", outTypeFunc: absOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.abs} = abs(${inputs.a});`];
+ };
+ }
+}
+class Sign extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "sign", outTypeFunc: signOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.sign} = sign(${inputs.a});`];
+ };
+ }
+}
+class Floor extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "floor", outTypeFunc: floorOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.floor} = floor(${inputs.a});`];
+ };
+ }
+}
+class Ceil extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "ceil", outTypeFunc: ceilOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.ceil} = ceil(${inputs.a});`];
+ };
+ }
+}
+class Trunc extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "trunc", outTypeFunc: truncOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.trunc} = trunc(${inputs.a});`];
+ };
+ }
+}
+class Round extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "round", outTypeFunc: roundOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.round} = round(${inputs.a});`];
+ };
+ }
+}
+class Fract extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "fract", outTypeFunc: fractOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.fract} = fract(${inputs.a});`];
+ };
+ }
+}
+class Pow extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "power", outTypeFunc: powOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.power} = pow(${inputs.a}, ${inputs.b});`];
+ };
+ }
+}
+class Exp extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "exp", outTypeFunc: expOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.exp} = exp(${inputs.a});`];
+ };
+ }
+}
+class Exp2 extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "exp2", outTypeFunc: exp2OutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.exp2} = exp2(${inputs.a});`];
+ };
+ }
+}
+class Log extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "log", outTypeFunc: logOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.log} = log(${inputs.a});`];
+ };
+ }
+}
+class Log2 extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "log2", outTypeFunc: log2OutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.log2} = log2(${inputs.a});`];
+ };
+ }
+}
+class Sqr extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "sqr", outTypeFunc: sqrOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.sqr} = ${inputs.a} * ${inputs.a};`];
+ };
+ }
+}
+class Sqrt extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "sqrt", outTypeFunc: sqrtOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.sqrt} = sqrt(${inputs.a});`];
+ };
+ }
+}
+class InverseSqrt extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "inversesqrt", outTypeFunc: inversesqrtOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.inversesqrt} = inversesqrt(${inputs.a});`];
+ };
+ }
+}
+class Min extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "min", outTypeFunc: minOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.min} = min(${inputs.a}, ${inputs.b});`];
+ };
+ }
+}
+class Max extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "max", outTypeFunc: maxOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.max} = max(${inputs.a}, ${inputs.b});`];
+ };
+ }
+}
+class Clamp extends TrinaryOp {
+ constructor({
+ a,
+ min: min2,
+ max: max2
+ }) {
+ super({
+ a,
+ b: min2,
+ c: max2,
+ outKey: "clamp",
+ outTypeFunc: clampOutputType
+ });
+ this.statements = ({ inputs, outputs }) => {
+ const { a: a2, b: min3, c: max3 } = inputs;
+ return [`${outputs.clamp} = clamp(${a2}, ${min3}, ${max3});`];
+ };
+ }
+}
+class Mix extends TrinaryOp {
+ constructor({ a, b, t }) {
+ super({ a, b, c: t, outKey: "mix", outTypeFunc: mixOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ const { a: a2, b: b2, c: t2 } = inputs;
+ return [`${outputs.mix} = mix(${a2}, ${b2}, ${t2});`];
+ };
+ }
+}
+class Step extends BinaryOp {
+ constructor({ edge, x }) {
+ super({
+ a: edge,
+ b: x,
+ outKey: "step",
+ outTypeFunc: stepOutputType
+ });
+ this.statements = ({ inputs, outputs }) => {
+ const { a: edge2, b: x2 } = inputs;
+ return [`${outputs.step} = step(${edge2}, ${x2});`];
+ };
+ }
+}
+class Smoothstep extends TrinaryOp {
+ constructor({
+ edge0,
+ edge1,
+ x
+ }) {
+ super({
+ a: edge0,
+ b: edge1,
+ c: x,
+ outKey: "smoothstep",
+ outTypeFunc: smoothstepOutputType
+ });
+ this.statements = ({ inputs, outputs }) => {
+ const { a: edge02, b: edge12, c: x2 } = inputs;
+ return [`${outputs.smoothstep} = smoothstep(${edge02}, ${edge12}, ${x2});`];
+ };
+ }
+}
+class IsNan extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "isNan", outTypeFunc: isNanOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.isNan} = isNan(${inputs.a});`];
+ };
+ }
+}
+class IsInf extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "isInf", outTypeFunc: isInfOutputType });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.isInf} = isInf(${inputs.a});`];
+ };
+ }
+}
+const and = (a, b) => new And({ a, b });
+const or = (a, b) => new Or({ a, b });
+const xor = (a, b) => new Xor({ a, b });
+const not = (a) => new Not({ a });
+const lessThan = (a, b) => new LessThan({ a, b });
+const lessThanEqual = (a, b) => new LessThanEqual({ a, b });
+const greaterThan = (a, b) => new GreaterThan({ a, b });
+const greaterThanEqual = (a, b) => new GreaterThanEqual({ a, b });
+const equal = (a, b) => new Equal({ a, b });
+const notEqual = (a, b) => new NotEqual({ a, b });
+const any = (a) => new Any({ a });
+const all = (a) => new All({ a });
+const select = (cond, t, f) => new Select({ cond, t, f });
+const compXor = (a) => new CompXor({ a });
+class And extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "and" });
+ this.statements = ({ inputs, outputs }) => {
+ if (this.outTypes.and === "bool") {
+ return [`${outputs.and} = ${inputs.a} && ${inputs.b};`];
+ }
+ return [`${outputs.and} = ${inputs.a} & ${inputs.b};`];
+ };
+ }
+}
+class Or extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "or" });
+ this.statements = ({ inputs, outputs }) => {
+ if (this.outTypes.or === "bool") {
+ return [`${outputs.or} = ${inputs.a} || ${inputs.b};`];
+ }
+ return [`${outputs.or} = ${inputs.a} | ${inputs.b};`];
+ };
+ }
+}
+class Xor extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outTypeFunc: (aType, bType) => aType, outKey: "xor" });
+ this.statements = ({ inputs, outputs }) => {
+ if (this.outTypes.xor === "bool") {
+ return [`${outputs.xor} = ${inputs.a} ^^ ${inputs.b};`];
+ }
+ return [`${outputs.xor} = ${inputs.a} ^ ${inputs.b};`];
+ };
+ }
+}
+class Not extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outTypeFunc: (aType) => aType, outKey: "not" });
+ this.statements = ({ inputs, outputs }) => {
+ if (this.outTypes.not === "bool") {
+ return [`${outputs.not} = !${inputs.a};`];
+ }
+ return [`${outputs.not} = not(${inputs.a});`];
+ };
+ }
+}
+class LessThan extends BinaryOp {
+ constructor({ a, b }) {
+ super({
+ a,
+ b,
+ outTypeFunc: (aType, bType) => compareOutputType(aType, "lessThan"),
+ outKey: "lessThan"
+ });
+ this.statements = ({ inputs, outputs }) => {
+ if (this.outTypes.lessThan === "bool") {
+ return [`${outputs.lessThan} = ${inputs.a} < ${inputs.b};`];
+ }
+ return [`${outputs.lessThan} = lessThan(${inputs.a}, ${inputs.b});`];
+ };
+ }
+}
+class LessThanEqual extends BinaryOp {
+ constructor({ a, b }) {
+ super({
+ a,
+ b,
+ outTypeFunc: (aType, bType) => compareOutputType(aType, "lessThanEqual"),
+ outKey: "lessThanEqual"
+ });
+ this.statements = ({ inputs, outputs }) => {
+ if (this.outTypes.lessThanEqual === "bool") {
+ return [`${outputs.lessThanEqual} = ${inputs.a} <= ${inputs.b};`];
+ }
+ return [
+ `${outputs.lessThanEqual} = lessThanEqual(${inputs.a}, ${inputs.b});`
+ ];
+ };
+ }
+}
+class GreaterThan extends BinaryOp {
+ constructor({ a, b }) {
+ super({
+ a,
+ b,
+ outTypeFunc: (aType, bType) => compareOutputType(aType, "greaterThan"),
+ outKey: "greaterThan"
+ });
+ this.statements = ({ inputs, outputs }) => {
+ if (this.outTypes.greaterThan === "bool") {
+ return [`${outputs.greaterThan} = ${inputs.a} > ${inputs.b};`];
+ }
+ return [
+ `${outputs.greaterThan} = greaterThan(${inputs.a}, ${inputs.b});`
+ ];
+ };
+ }
+}
+class GreaterThanEqual extends BinaryOp {
+ constructor({ a, b }) {
+ super({
+ a,
+ b,
+ outTypeFunc: (aType, bType) => compareOutputType(aType, "greaterThanEqual"),
+ outKey: "greaterThanEqual"
+ });
+ this.statements = ({ inputs, outputs }) => {
+ if (this.outTypes.greaterThanEqual === "bool") {
+ return [`${outputs.greaterThanEqual} = ${inputs.a} >= ${inputs.b};`];
+ }
+ return [
+ `${outputs.greaterThanEqual} = greaterThanEqual(${inputs.a}, ${inputs.b});`
+ ];
+ };
+ }
+}
+class Equal extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outTypeFunc: equalOutputType, outKey: "equal" });
+ this.statements = ({ inputs, outputs }) => {
+ if (this.outTypes.equal === "bool") {
+ return [`${outputs.equal} = ${inputs.a} == ${inputs.b};`];
+ }
+ return [`${outputs.equal} = equal(${inputs.a}, ${inputs.b});`];
+ };
+ }
+}
+class NotEqual extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outTypeFunc: notEqualOutputType, outKey: "notEqual" });
+ this.statements = ({ inputs, outputs }) => {
+ if (this.outTypes.notEqual === "bool") {
+ return [`${outputs.notEqual} = ${inputs.a} != ${inputs.b};`];
+ }
+ return [`${outputs.notEqual} = notEqual(${inputs.a}, ${inputs.b});`];
+ };
+ }
+}
+class Any extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outTypeFunc: (aType) => "bool", outKey: "any" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.any} = any(${inputs.a});`];
+ };
+ }
+}
+class All extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outTypeFunc: (aType) => "bool", outKey: "all" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.all} = all(${inputs.a});`];
+ };
+ }
+}
+class Select extends TrinaryOp {
+ constructor({
+ cond,
+ t,
+ f
+ }) {
+ super({
+ a: cond,
+ b: t,
+ c: f,
+ outKey: "select",
+ outTypeFunc: (aType, bType, cType) => bType
+ });
+ this.statements = ({ inputs, outputs }) => {
+ const { a: cond2, b: t2, c: f2 } = inputs;
+ return [`${outputs.select} = (${cond2}) ? (${t2}) : (${f2});`];
+ };
+ }
+}
+function compareOutputType(type, operator) {
+ if (isScalarType(type)) {
+ return "bool";
+ }
+ if (type === "ivec2" || type === "uvec2" || type === "vec2") {
+ return "bvec2";
+ }
+ if (type === "ivec3" || type === "uvec3" || type === "vec3") {
+ return "bvec3";
+ }
+ if (type === "ivec4" || type === "uvec4" || type === "vec4") {
+ return "bvec4";
+ }
+ throw new Error(`Invalid ${operator} type: ${type}`);
+}
+function equalOutputType(type, operator = "equal") {
+ if (isScalarType(type)) {
+ return "bool";
+ }
+ if (isBoolType(type)) {
+ return type;
+ }
+ if (type === "ivec2" || type === "uvec2" || type === "vec2") {
+ return "bvec2";
+ }
+ if (type === "ivec3" || type === "uvec3" || type === "vec3") {
+ return "bvec3";
+ }
+ if (type === "ivec4" || type === "uvec4" || type === "vec4") {
+ return "bvec4";
+ }
+ throw new Error(`Invalid ${operator} type: ${type}`);
+}
+function notEqualOutputType(type) {
+ return equalOutputType(type, "notEqual");
+}
+function compXorOutputType(type) {
+ if (isBoolType(type)) {
+ return "bool";
+ }
+ if (isIntType(type)) {
+ return "int";
+ }
+ if (isUintType(type)) {
+ return "uint";
+ }
+ throw new Error(`Invalid compXor type: ${type}`);
+}
+class CompXor extends UnaryOp {
+ constructor({ a }) {
+ const outType = compXorOutputType(valType(a));
+ super({ a, outTypeFunc: (aType) => outType, outKey: "compXor" });
+ this.statements = ({ inputs, outputs }) => {
+ if (isScalarType(this.outTypes.compXor)) {
+ return [`${outputs.compXor} = ${inputs.a};`];
+ }
+ const components = isVector2Type(outType) ? ["x", "y"] : isVector3Type(outType) ? ["x", "y", "z"] : ["x", "y", "z", "w"];
+ const operands = components.map((c) => `${inputs.a}.${c}`);
+ const operator = isBoolType(outType) ? "^^" : "^";
+ return [`${outputs.compXor} = ${operands.join(` ${operator} `)};`];
+ };
+ }
+}
+const bool = (value) => new Bool({ value });
+const int = (value) => new Int({ value });
+const uint = (value) => new Uint({ value });
+const float = (value) => new Float({ value });
+const bvec2 = (value) => new BVec2({ value });
+const bvec3 = (value) => new BVec3({ value });
+const bvec4 = (value) => new BVec4({ value });
+const ivec2 = (value) => new IVec2({ value });
+const ivec3 = (value) => new IVec3({ value });
+const ivec4 = (value) => new IVec4({ value });
+const uvec2 = (value) => new UVec2({ value });
+const uvec3 = (value) => new UVec3({ value });
+const uvec4 = (value) => new UVec4({ value });
+const vec2 = (value) => new Vec2({ value });
+const vec3 = (value) => new Vec3({ value });
+const vec4 = (value) => new Vec4({ value });
+const mat2 = (value) => new Mat2({ value });
+const mat3 = (value) => new Mat3({ value });
+const mat4 = (value) => new Mat4({ value });
+const floatBitsToInt = (value) => new FloatBitsToInt({ value });
+const floatBitsToUint = (value) => new FloatBitsToUint({ value });
+const intBitsToFloat = (value) => new IntBitsToFloat({ value });
+const uintBitsToFloat = (value) => new UintBitsToFloat({ value });
+const packSnorm2x16 = (value) => new PackSnorm2x16({ value });
+const unpackSnorm2x16 = (value) => new UnpackSnorm2x16({ value });
+const packUnorm2x16 = (value) => new PackUnorm2x16({ value });
+const unpackUnorm2x16 = (value) => new UnpackUnorm2x16({ value });
+const packHalf2x16 = (value) => new PackHalf2x16({ value });
+const unpackHalf2x16 = (value) => new UnpackHalf2x16({ value });
+const uintToRgba8 = (value) => new UintToRgba8({ value });
+class SimpleCast extends UnaryOp {
+ constructor({
+ value,
+ outType,
+ outKey
+ }) {
+ super({ a: value, outTypeFunc: () => outType, outKey });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs[outKey]} = ${typeLiteral(outType)}(${inputs.a});`
+ ];
+ }
+}
+class Bool extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "bool", outKey: "bool" });
+ }
+}
+class Int extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "int", outKey: "int" });
+ }
+}
+class Uint extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "uint", outKey: "uint" });
+ }
+}
+class Float extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "float", outKey: "float" });
+ }
+}
+class BVec2 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "bvec2", outKey: "bvec2" });
+ }
+}
+class BVec3 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "bvec3", outKey: "bvec3" });
+ }
+}
+class BVec4 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "bvec4", outKey: "bvec4" });
+ }
+}
+class IVec2 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "ivec2", outKey: "ivec2" });
+ }
+}
+class IVec3 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "ivec3", outKey: "ivec3" });
+ }
+}
+class IVec4 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "ivec4", outKey: "ivec4" });
+ }
+}
+class UVec2 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "uvec2", outKey: "uvec2" });
+ }
+}
+class UVec3 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "uvec3", outKey: "uvec3" });
+ }
+}
+class UVec4 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "uvec4", outKey: "uvec4" });
+ }
+}
+class Vec2 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "vec2", outKey: "vec2" });
+ }
+}
+class Vec3 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "vec3", outKey: "vec3" });
+ }
+}
+class Vec4 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "vec4", outKey: "vec4" });
+ }
+}
+class Mat2 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "mat2", outKey: "mat2" });
+ }
+}
+class Mat3 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "mat3", outKey: "mat3" });
+ }
+}
+class Mat4 extends SimpleCast {
+ constructor({
+ value
+ }) {
+ super({ value, outType: "mat4", outKey: "mat4" });
+ }
+}
+class FloatBitsToInt extends UnaryOp {
+ constructor({ value }) {
+ super({ a: value, outKey: "int", outTypeFunc: () => "int" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.int} = floatBitsToInt(${inputs.a});`];
+ };
+ }
+}
+class FloatBitsToUint extends UnaryOp {
+ constructor({ value }) {
+ super({ a: value, outKey: "uint", outTypeFunc: () => "uint" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.uint} = floatBitsToUint(${inputs.a});`];
+ };
+ }
+}
+class IntBitsToFloat extends UnaryOp {
+ constructor({ value }) {
+ super({ a: value, outKey: "float", outTypeFunc: () => "float" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.float} = intBitsToFloat(${inputs.a});`];
+ };
+ }
+}
+class UintBitsToFloat extends UnaryOp {
+ constructor({ value }) {
+ super({ a: value, outKey: "float", outTypeFunc: () => "float" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.float} = uintBitsToFloat(${inputs.a});`];
+ };
+ }
+}
+class PackSnorm2x16 extends UnaryOp {
+ constructor({ value }) {
+ super({ a: value, outKey: "uint", outTypeFunc: () => "uint" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.uint} = packSnorm2x16(${inputs.a});`];
+ };
+ }
+}
+class UnpackSnorm2x16 extends UnaryOp {
+ constructor({ value }) {
+ super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.vec2} = unpackSnorm2x16(${inputs.a});`];
+ };
+ }
+}
+class PackUnorm2x16 extends UnaryOp {
+ constructor({ value }) {
+ super({ a: value, outKey: "uint", outTypeFunc: () => "uint" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.uint} = packUnorm2x16(${inputs.a});`];
+ };
+ }
+}
+class UnpackUnorm2x16 extends UnaryOp {
+ constructor({ value }) {
+ super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.vec2} = unpackUnorm2x16(${inputs.a});`];
+ };
+ }
+}
+class PackHalf2x16 extends UnaryOp {
+ constructor({ value }) {
+ super({ a: value, outKey: "uint", outTypeFunc: () => "uint" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.uint} = packHalf2x16(${inputs.a});`];
+ };
+ }
+}
+class UnpackHalf2x16 extends UnaryOp {
+ constructor({ value }) {
+ super({ a: value, outKey: "vec2", outTypeFunc: () => "vec2" });
+ this.statements = ({ inputs, outputs }) => {
+ return [`${outputs.vec2} = unpackHalf2x16(${inputs.a});`];
+ };
+ }
+}
+class UintToRgba8 extends UnaryOp {
+ constructor({ value }) {
+ super({ a: value, outKey: "rgba8", outTypeFunc: () => "vec4" });
+ this.statements = ({ inputs, outputs }) => {
+ return [
+ `uvec4 uRgba = uvec4(${inputs.a} & 0xffu, (${inputs.a} >> 8u) & 0xffu, (${inputs.a} >> 16u) & 0xffu, (${inputs.a} >> 24u) & 0xffu);`,
+ `${outputs.rgba8} = vec4(uRgba) / 255.0;`
+ ];
+ };
+ }
+}
+const length = (a) => new Length({ a });
+const distance = (a, b) => new Distance({ a, b });
+const dot = (a, b) => new Dot({ a, b });
+const cross = (a, b) => new Cross({ a, b });
+const normalize = (a) => new Normalize({ a });
+const faceforward = (a, b, c) => new FaceForward({ a, b, c });
+const reflectVec = (incident, normal) => new ReflectVec({ incident, normal });
+const refractVec = (incident, normal, eta) => new RefractVec({ incident, normal, eta });
+const split = (vector) => new Split({ vector });
+const combine = ({
+ vector,
+ vectorType,
+ x,
+ y,
+ z,
+ w,
+ r,
+ g,
+ b,
+ a
+}) => new Combine({ vector, vectorType, x, y, z, w, r, g, b, a });
+const projectH = (a) => new ProjectH({ a });
+const extendVec = (a, b) => new ExtendVec({ a, b });
+const swizzle = (a, select2) => new Swizzle({ vector: a, select: select2 });
+const compMult = (a, b) => new CompMult({ a, b });
+const outer = (a, b) => new Outer({ a, b });
+const transpose = (a) => new Transpose({ a });
+const determinant = (a) => new Determinant({ a });
+const inverse = (a) => new Inverse({ a });
+class Length extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outTypeFunc: (aType) => "float", outKey: "length" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.length} = length(${inputs.a});`
+ ];
+ }
+}
+class Distance extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "distance", outTypeFunc: (aType, bType) => "float" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.distance} = distance(${inputs.a}, ${inputs.b});`
+ ];
+ }
+}
+class Dot extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "dot", outTypeFunc: (aType, bType) => "float" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.dot} = dot(${inputs.a}, ${inputs.b});`
+ ];
+ }
+}
+class Cross extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "cross", outTypeFunc: (aType, bType) => "vec3" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.cross} = cross(${inputs.a}, ${inputs.b});`
+ ];
+ }
+}
+class Normalize extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outTypeFunc: (aType) => aType, outKey: "normalize" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.normalize} = normalize(${inputs.a});`
+ ];
+ }
+}
+function projectHOutputType(type) {
+ if (type === "vec3") {
+ return "vec2";
+ }
+ if (type === "vec4") {
+ return "vec3";
+ }
+ throw new Error("Invalid type");
+}
+class ProjectH extends UnaryOp {
+ constructor({ a }) {
+ super({
+ a,
+ outTypeFunc: (aType) => projectHOutputType(aType),
+ outKey: "projected"
+ });
+ this.statements = ({ inputs, outputs }) => {
+ if (this.inTypes.a === "vec3") {
+ return [`${outputs.projected} = ${inputs.a}.xy / ${inputs.a}.z;`];
+ }
+ if (this.inTypes.a === "vec4") {
+ return [`${outputs.projected} = ${inputs.a}.xyz / ${inputs.a}.w;`];
+ }
+ throw new Error("Invalid type");
+ };
+ }
+}
+function extendVecOutputType(type) {
+ if (type === "float") return "vec2";
+ if (type === "vec2") return "vec3";
+ if (type === "vec3") return "vec4";
+ throw new Error("Invalid type");
+}
+class ExtendVec extends BinaryOp {
+ constructor({ a, b }) {
+ const type = valType(a);
+ const outType = extendVecOutputType(type);
+ super({ a, b, outKey: "extend", outTypeFunc: () => outType });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.extend} = ${outType}(${inputs.a}, ${inputs.b});`
+ ];
+ }
+}
+class FaceForward extends TrinaryOp {
+ constructor({ a, b, c }) {
+ super({
+ a,
+ b,
+ c,
+ outKey: "forward",
+ outTypeFunc: (aType, bType, cType) => aType
+ });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.forward} = faceforward(${inputs.a}, ${inputs.b}, ${inputs.c});`
+ ];
+ }
+}
+class ReflectVec extends BinaryOp {
+ constructor({
+ incident,
+ normal
+ }) {
+ super({
+ a: incident,
+ b: normal,
+ outKey: "reflection",
+ outTypeFunc: (aType, bType) => aType
+ });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.reflection} = reflect(${inputs.a}, ${inputs.b});`
+ ];
+ }
+}
+class RefractVec extends TrinaryOp {
+ constructor({
+ incident,
+ normal,
+ eta
+ }) {
+ super({
+ a: incident,
+ b: normal,
+ c: eta,
+ outKey: "refraction",
+ outTypeFunc: (aType, bType, cType) => aType
+ });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.refraction} = refract(${inputs.a}, ${inputs.b}, ${inputs.c});`
+ ];
+ }
+}
+class CompMult extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "product", outTypeFunc: (aType, bType) => aType });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.product} = matrixCompMult(${a}, ${b});`
+ ];
+ }
+}
+function outerOutputType(aType, bType) {
+ if (aType === "vec2") {
+ if (bType === "vec2") return "mat2";
+ if (bType === "vec3") return "mat3x2";
+ if (bType === "vec4") return "mat4x2";
+ }
+ if (aType === "vec3") {
+ if (bType === "vec2") return "mat2x3";
+ if (bType === "vec3") return "mat3";
+ if (bType === "vec4") return "mat4x3";
+ }
+ if (aType === "vec4") {
+ if (bType === "vec2") return "mat2x4";
+ if (bType === "vec3") return "mat3x4";
+ if (bType === "vec4") return "mat4";
+ }
+ throw new Error(`Invalid outer type: ${aType}, ${bType}`);
+}
+class Outer extends BinaryOp {
+ constructor({ a, b }) {
+ super({ a, b, outKey: "outer", outTypeFunc: outerOutputType });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.outer} = outerProduct(${inputs.a}, ${inputs.b});`
+ ];
+ }
+}
+function transposeOutputType(type) {
+ if (type === "mat2") return "mat2";
+ if (type === "mat3") return "mat3";
+ if (type === "mat4") return "mat4";
+ if (type === "mat2x2") return "mat2x2";
+ if (type === "mat2x3") return "mat3x2";
+ if (type === "mat2x4") return "mat4x2";
+ if (type === "mat3x2") return "mat2x3";
+ if (type === "mat3x3") return "mat3x3";
+ if (type === "mat3x4") return "mat4x3";
+ if (type === "mat4x2") return "mat2x4";
+ if (type === "mat4x3") return "mat3x4";
+ if (type === "mat4x4") return "mat4x4";
+ throw new Error(`Invalid transpose type: ${type}`);
+}
+class Transpose extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "transpose", outTypeFunc: transposeOutputType });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.transpose} = transpose(${inputs.a});`
+ ];
+ }
+}
+class Determinant extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "det", outTypeFunc: (aType) => "float" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.det} = determinant(${inputs.a});`
+ ];
+ }
+}
+class Inverse extends UnaryOp {
+ constructor({ a }) {
+ super({ a, outKey: "inverse", outTypeFunc: (aType) => aType });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.inverse} = inverse(${a});`
+ ];
+ }
+}
+function splitOutTypes(type) {
+ const result = (value) => value;
+ switch (type) {
+ case "vec2":
+ return result({ x: "float", y: "float", r: "float", g: "float" });
+ case "vec3":
+ return result({
+ x: "float",
+ y: "float",
+ z: "float",
+ r: "float",
+ g: "float",
+ b: "float"
+ });
+ case "vec4":
+ return result({
+ x: "float",
+ y: "float",
+ z: "float",
+ w: "float",
+ r: "float",
+ g: "float",
+ b: "float",
+ a: "float"
+ });
+ case "ivec2":
+ return result({ x: "int", y: "int", r: "int", g: "int" });
+ case "ivec3":
+ return result({
+ x: "int",
+ y: "int",
+ z: "int",
+ r: "int",
+ g: "int",
+ b: "int"
+ });
+ case "ivec4":
+ return result({
+ x: "int",
+ y: "int",
+ z: "int",
+ w: "int",
+ r: "int",
+ g: "int",
+ b: "int",
+ a: "int"
+ });
+ case "uvec2":
+ return result({ x: "uint", y: "uint", r: "uint", g: "uint" });
+ case "uvec3":
+ return result({
+ x: "uint",
+ y: "uint",
+ z: "uint",
+ r: "uint",
+ g: "uint",
+ b: "uint"
+ });
+ case "uvec4":
+ return result({
+ x: "uint",
+ y: "uint",
+ z: "uint",
+ w: "uint",
+ r: "uint",
+ g: "uint",
+ b: "uint",
+ a: "uint"
+ });
+ default:
+ throw new Error(`Invalid vector type: ${type}`);
+ }
+}
+class Split extends Dyno {
+ constructor({ vector }) {
+ const type = valType(vector);
+ const inTypes = { vector: type };
+ const outTypes = splitOutTypes(inTypes.vector);
+ super({ inTypes, outTypes, inputs: { vector } });
+ this.statements = ({ inputs, outputs }) => {
+ const { x, y, z, w, r, g, b, a } = outputs;
+ const { vector: vector2 } = inputs;
+ return [
+ x ? `${x} = ${vector2}.x;` : null,
+ y ? `${y} = ${vector2}.y;` : null,
+ z ? `${z} = ${vector2}.z;` : null,
+ w ? `${w} = ${vector2}.w;` : null,
+ r ? `${r} = ${vector2}.r;` : null,
+ g ? `${g} = ${vector2}.g;` : null,
+ b ? `${b} = ${vector2}.b;` : null,
+ a ? `${a} = ${vector2}.a;` : null
+ ].filter(Boolean);
+ };
+ }
+}
+class Combine extends Dyno {
+ constructor({
+ vector,
+ vectorType,
+ x,
+ y,
+ z,
+ w,
+ r,
+ g,
+ b,
+ a
+ }) {
+ if (!vector && !vectorType) {
+ throw new Error("Either vector or vectorType must be provided");
+ }
+ const vType = vectorType ?? valType(vector);
+ const elType = vectorElementType(vType);
+ const dim = vectorDim(vType);
+ const inTypes = {
+ vector: vType,
+ x: elType,
+ y: elType,
+ r: elType,
+ g: elType
+ };
+ const inputs = { vector, x, y, r, g };
+ if (dim >= 3) {
+ Object.assign(inTypes, { z: elType, b: elType });
+ Object.assign(inputs, { z, b });
+ }
+ if (dim >= 4) {
+ Object.assign(inTypes, { w: elType, a: elType });
+ Object.assign(inputs, { w, a });
+ }
+ super({ inTypes, outTypes: { vector: vType }, inputs });
+ this.statements = ({ inputs: inputs2, outputs }) => {
+ const { vector: vector2 } = outputs;
+ const {
+ vector: input,
+ x: x2,
+ y: y2,
+ z: z2,
+ w: w2,
+ r: r2,
+ g: g2,
+ b: b2,
+ a: a2
+ } = inputs2;
+ const statements = [
+ `${vector2}.x = ${x2 ?? r2 ?? (input ? `${input}.x` : literalZero(elType))};`,
+ `${vector2}.y = ${y2 ?? g2 ?? (input ? `${input}.y` : literalZero(elType))};`
+ ];
+ if (dim >= 3)
+ statements.push(
+ `${vector2}.z = ${z2 ?? b2 ?? (input ? `${input}.z` : literalZero(elType))};`
+ );
+ if (dim >= 4)
+ statements.push(
+ `${vector2}.w = ${w2 ?? a2 ?? (input ? `${input}.w` : literalZero(elType))};`
+ );
+ return statements;
+ };
+ }
+ dynoOut() {
+ return new DynoOutput(
+ this,
+ "vector"
+ );
+ }
+}
+function swizzleOutputType(type, swizzle2) {
+ let result = null;
+ if (isFloatType(type)) {
+ result = swizzle2.length === 1 ? "float" : swizzle2.length === 2 ? "vec2" : swizzle2.length === 3 ? "vec3" : swizzle2.length === 4 ? "vec4" : null;
+ } else if (isIntType(type)) {
+ result = swizzle2.length === 1 ? "int" : swizzle2.length === 2 ? "ivec2" : swizzle2.length === 3 ? "ivec3" : swizzle2.length === 4 ? "ivec4" : null;
+ } else if (isUintType(type)) {
+ result = swizzle2.length === 1 ? "uint" : swizzle2.length === 2 ? "uvec2" : swizzle2.length === 3 ? "uvec3" : swizzle2.length === 4 ? "uvec4" : null;
+ }
+ if (result == null) {
+ throw new Error(`Invalid swizzle: ${swizzle2}`);
+ }
+ return result;
+}
+class Swizzle extends UnaryOp {
+ constructor({ vector, select: select2 }) {
+ super({
+ a: vector,
+ outKey: "swizzle",
+ outTypeFunc: (aType) => swizzleOutputType(aType, select2)
+ });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.swizzle} = ${inputs.a}.${select2};`
+ ];
+ }
+}
+const remapIndex = (index, from, to) => {
+ return new DynoRemapIndex({ index, from, to });
+};
+const pcgMix = (value) => {
+ return new PcgMix({ value });
+};
+const pcgNext = (state) => {
+ return new PcgNext({ state });
+};
+const pcgHash = (state) => {
+ return new PcgHash({ state });
+};
+const hash = (value) => {
+ return new Hash({ value });
+};
+const hash2 = (value) => {
+ return new Hash2({ value });
+};
+const hash3 = (value) => {
+ return new Hash3({ value });
+};
+const hash4 = (value) => {
+ return new Hash4({ value });
+};
+const hashFloat = (value) => {
+ return new HashFloat({ value });
+};
+const hashVec2 = (value) => {
+ return new HashVec2({ value });
+};
+const hashVec3 = (value) => {
+ return new HashVec3({ value });
+};
+const hashVec4 = (value) => {
+ return new HashVec4({ value });
+};
+class DynoRemapIndex extends Dyno {
+ constructor({
+ from,
+ to,
+ index
+ }) {
+ super({
+ inTypes: { from: "int", to: "int", index: "int" },
+ outTypes: { index: "int" },
+ inputs: { from, to, index },
+ statements: ({ inputs, outputs }) => {
+ return [
+ `${outputs.index} = ${inputs.index} - ${inputs.from} + ${inputs.to};`
+ ];
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "index");
+ }
+}
+class PcgNext extends Dyno {
+ constructor({ state }) {
+ const type = valType(state);
+ super({
+ inTypes: { state: type },
+ outTypes: { state: "uint" },
+ inputs: { state },
+ globals: () => [
+ unindent(`
+ uint pcg_next(uint state) {
+ return state * 747796405u + 2891336453u;
+ }
+ `)
+ ],
+ statements: ({ inputs, outputs }) => {
+ const toUint = type === "uint" ? `${inputs.state}` : type === "int" ? `uint(${inputs.state})` : `floatBitsToUint(${inputs.state})`;
+ return [`${outputs.state} = pcg_next(${toUint});`];
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "state");
+ }
+}
+class PcgHash extends Dyno {
+ constructor({ state }) {
+ super({
+ inTypes: { state: "uint" },
+ outTypes: { hash: "uint" },
+ inputs: { state },
+ globals: () => [
+ unindent(`
+ uint pcg_hash(uint state) {
+ uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;
+ return (hash >> 22u) ^ hash;
+ }
+ `)
+ ],
+ statements: ({ inputs, outputs }) => [
+ `${outputs.hash} = pcg_hash(${inputs.state});`
+ ]
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "hash");
+ }
+}
+class PcgMix extends Dyno {
+ constructor({ value }) {
+ const type = valType(value);
+ const tempType = sameSizeUvec(type);
+ super({
+ inTypes: { value: type },
+ outTypes: { state: "uint" },
+ inputs: { value },
+ globals: () => [
+ unindent(`
+ uint pcg_mix(uint value) {
+ return value;
+ }
+ uint pcg_mix(uvec2 value) {
+ return value.x + 0x9e3779b9u * value.y;
+ }
+ uint pcg_mix(uvec3 value) {
+ return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z;
+ }
+ uint pcg_mix(uvec4 value) {
+ return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w;
+ }
+ `)
+ ],
+ statements: ({ inputs, outputs }) => {
+ const toUvec = isUintType(type) ? `${inputs.value}` : isIntType(type) ? `${tempType}(${inputs.value})` : `floatBitsToUint(${inputs.value})`;
+ return [
+ `${tempType} bits = ${toUvec};`,
+ `${outputs.state} = pcg_mix(bits);`
+ ];
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "state");
+ }
+}
+class Hash extends DynoBlock {
+ constructor({ value }) {
+ super({
+ inTypes: { value: valType(value) },
+ outTypes: { hash: "uint" },
+ inputs: { value },
+ construct: ({ value: value2 }) => {
+ if (!value2) {
+ throw new Error("value is required");
+ }
+ let state = new PcgMix({ value: value2 }).outputs.state;
+ state = new PcgNext({ state }).outputs.state;
+ return new PcgHash({ state }).outputs;
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "hash");
+ }
+}
+class Hash2 extends DynoBlock {
+ constructor({ value }) {
+ super({
+ inTypes: { value: valType(value) },
+ outTypes: { hash: "uvec2" },
+ inputs: { value },
+ construct: ({ value: value2 }) => {
+ if (!value2) {
+ throw new Error("value is required");
+ }
+ let state = new PcgMix({ value: value2 }).outputs.state;
+ state = new PcgNext({ state }).outputs.state;
+ const x = new PcgHash({ state }).outputs.hash;
+ state = new PcgNext({ state }).outputs.state;
+ const y = new PcgHash({ state }).outputs.hash;
+ return { hash: combine({ vectorType: "uvec2", x, y }) };
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "hash");
+ }
+}
+class Hash3 extends DynoBlock {
+ constructor({ value }) {
+ super({
+ inTypes: { value: valType(value) },
+ outTypes: { hash: "uvec3" },
+ inputs: { value },
+ construct: ({ value: value2 }) => {
+ if (!value2) {
+ throw new Error("value is required");
+ }
+ let state = new PcgMix({ value: value2 }).outputs.state;
+ state = new PcgNext({ state }).outputs.state;
+ const x = new PcgHash({ state }).outputs.hash;
+ state = new PcgNext({ state }).outputs.state;
+ const y = new PcgHash({ state }).outputs.hash;
+ state = new PcgNext({ state }).outputs.state;
+ const z = new PcgHash({ state }).outputs.hash;
+ return { hash: combine({ vectorType: "uvec3", x, y, z }) };
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "hash");
+ }
+}
+class Hash4 extends DynoBlock {
+ constructor({ value }) {
+ super({
+ inTypes: { value: valType(value) },
+ outTypes: { hash: "uvec4" },
+ inputs: { value },
+ construct: ({ value: value2 }) => {
+ if (!value2) {
+ throw new Error("value is required");
+ }
+ let state = new PcgMix({ value: value2 }).outputs.state;
+ state = new PcgNext({ state }).outputs.state;
+ const x = new PcgHash({ state }).outputs.hash;
+ state = new PcgNext({ state }).outputs.state;
+ const y = new PcgHash({ state }).outputs.hash;
+ state = new PcgNext({ state }).outputs.state;
+ const z = new PcgHash({ state }).outputs.hash;
+ state = new PcgNext({ state }).outputs.state;
+ const w = new PcgHash({ state }).outputs.hash;
+ return { hash: combine({ vectorType: "uvec4", x, y, z, w }) };
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "hash");
+ }
+}
+class HashFloat extends DynoBlock {
+ constructor({ value }) {
+ super({
+ inTypes: { value: valType(value) },
+ outTypes: { hash: "float" },
+ inputs: { value },
+ construct: ({ value: value2 }) => {
+ if (!value2) {
+ throw new Error("value is required");
+ }
+ const word = hash(value2);
+ return { hash: mul(float(word), dynoConst("float", 1 / 2 ** 32)) };
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "hash");
+ }
+}
+class HashVec2 extends DynoBlock {
+ constructor({ value }) {
+ super({
+ inTypes: { value: valType(value) },
+ outTypes: { hash: "vec2" },
+ inputs: { value },
+ construct: ({ value: value2 }) => {
+ if (!value2) {
+ throw new Error("value is required");
+ }
+ const words = hash2(value2);
+ return { hash: mul(vec2(words), dynoConst("float", 1 / 2 ** 32)) };
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "hash");
+ }
+}
+class HashVec3 extends DynoBlock {
+ constructor({ value }) {
+ super({
+ inTypes: { value: valType(value) },
+ outTypes: { hash: "vec3" },
+ inputs: { value },
+ construct: ({ value: value2 }) => {
+ if (!value2) {
+ throw new Error("value is required");
+ }
+ const words = hash3(value2);
+ return { hash: mul(vec3(words), dynoConst("float", 1 / 2 ** 32)) };
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "hash");
+ }
+}
+class HashVec4 extends DynoBlock {
+ constructor({ value }) {
+ super({
+ inTypes: { value: valType(value) },
+ outTypes: { hash: "vec4" },
+ inputs: { value },
+ construct: ({ value: value2 }) => {
+ if (!value2) {
+ throw new Error("value is required");
+ }
+ const words = hash4(value2);
+ return { hash: mul(vec4(words), dynoConst("float", 1 / 2 ** 32)) };
+ }
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "hash");
+ }
+}
+const transformPos = (position, {
+ scale,
+ scales,
+ rotate,
+ translate
+}) => {
+ return new TransformPosition({ position, scale, scales, rotate, translate }).outputs.position;
+};
+const transformRay = (ray, {
+ scale,
+ scales,
+ rotate
+}) => {
+ return new TransformRay({ ray, scale, scales, rotate }).outputs.ray;
+};
+const transformQuat = (quaternion, { rotate }) => {
+ return new TransformQuaternion({ quaternion, rotate }).outputs.quaternion;
+};
+class TransformPosition extends Dyno {
+ constructor({
+ position,
+ scale,
+ scales,
+ rotate,
+ translate
+ }) {
+ super({
+ inTypes: {
+ position: "vec3",
+ scale: "float",
+ scales: "vec3",
+ rotate: "vec4",
+ translate: "vec3"
+ },
+ outTypes: { position: "vec3" },
+ inputs: { position, scale, scales, rotate, translate },
+ statements: ({ inputs, outputs }) => {
+ const { position: position2 } = outputs;
+ if (!position2) {
+ return [];
+ }
+ const { scale: scale2, scales: scales2, rotate: rotate2, translate: translate2 } = inputs;
+ return [
+ `${position2} = ${inputs.position ?? "vec3(0.0, 0.0, 0.0)"};`,
+ !scale2 ? null : `${position2} *= ${scale2};`,
+ !scales2 ? null : `${position2} *= ${scales2};`,
+ !rotate2 ? null : `${position2} = quatVec(${rotate2}, ${position2});`,
+ !translate2 ? null : `${position2} += ${translate2};`
+ ].filter(Boolean);
+ }
+ });
+ }
+}
+class TransformRay extends Dyno {
+ constructor({
+ ray,
+ scale,
+ scales,
+ rotate
+ }) {
+ super({
+ inTypes: { ray: "vec3", scale: "float", scales: "vec3", rotate: "vec4" },
+ outTypes: { ray: "vec3" },
+ inputs: { ray, scale, scales, rotate },
+ statements: ({ inputs, outputs }) => {
+ const { ray: ray2 } = outputs;
+ if (!ray2) {
+ return [];
+ }
+ const { scale: scale2, scales: scales2, rotate: rotate2 } = inputs;
+ return [
+ `${ray2} = ${inputs.ray ?? "vec3(0.0, 0.0, 0.0)"};`,
+ !scale2 ? null : `${ray2} *= ${scale2};`,
+ !scales2 ? null : `${ray2} *= ${scales2};`,
+ !rotate2 ? null : `${ray2} = quatVec(${rotate2}, ${ray2});`
+ ].filter(Boolean);
+ }
+ });
+ }
+}
+class TransformQuaternion extends Dyno {
+ constructor({
+ quaternion,
+ rotate
+ }) {
+ super({
+ inTypes: { quaternion: "vec4", rotate: "vec4" },
+ outTypes: { quaternion: "vec4" },
+ inputs: { quaternion, rotate },
+ statements: ({ inputs, outputs }) => {
+ const { quaternion: quaternion2 } = outputs;
+ if (!quaternion2) {
+ return [];
+ }
+ return [
+ `${quaternion2} = ${inputs.quaternion ?? "vec4(0.0, 0.0, 0.0, 1.0)"};`,
+ !rotate ? null : `${quaternion2} = quatQuat(${inputs.rotate}, ${quaternion2});`
+ ].filter(Boolean);
+ }
+ });
+ }
+}
+const dynoIf = () => {
+ throw new Error("Not implemented");
+};
+const dynoSwitch = () => {
+ throw new Error("Not implemented");
+};
+const dynoFor = () => {
+ throw new Error("Not implemented");
+};
+const comment = () => {
+ throw new Error("Not implemented");
+};
+const arrayIndex = () => {
+ throw new Error("Not implemented");
+};
+const arrayLength = () => {
+ throw new Error("Not implemented");
+};
+const textureSize = (texture2, lod) => new TextureSize({ texture: texture2, lod });
+const texture = (texture2, coord, bias) => new Texture({ texture: texture2, coord, bias });
+const texelFetch = (texture2, coord, lod) => new TexelFetch({ texture: texture2, coord, lod });
+class TextureSize extends Dyno {
+ constructor({ texture: texture2, lod }) {
+ const textureType = valType(texture2);
+ super({
+ inTypes: { texture: textureType, lod: "int" },
+ outTypes: { size: textureSizeType(textureType) },
+ inputs: { texture: texture2, lod },
+ statements: ({ inputs, outputs }) => [
+ `${outputs.size} = textureSize(${inputs.texture}, ${inputs.lod ?? "0"});`
+ ]
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "size");
+ }
+}
+class Texture extends Dyno {
+ constructor({
+ texture: texture2,
+ coord,
+ bias
+ }) {
+ const textureType = valType(texture2);
+ super({
+ inTypes: {
+ texture: textureType,
+ coord: textureCoordType(textureType),
+ bias: "float"
+ },
+ outTypes: { sample: textureReturnType(textureType) },
+ inputs: { texture: texture2, coord, bias },
+ statements: ({ inputs, outputs }) => [
+ `${outputs.sample} = texture(${inputs.texture}, ${inputs.coord}${inputs.bias ? `, ${inputs.bias}` : ""});`
+ ]
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "sample");
+ }
+}
+class TexelFetch extends Dyno {
+ constructor({
+ texture: texture2,
+ coord,
+ lod
+ }) {
+ const textureType = valType(texture2);
+ super({
+ inTypes: {
+ texture: textureType,
+ coord: textureSizeType(textureType),
+ lod: "int"
+ },
+ outTypes: { texel: textureReturnType(textureType) },
+ inputs: { texture: texture2, coord, lod },
+ statements: ({ inputs, outputs }) => [
+ `${outputs.texel} = texelFetch(${inputs.texture}, ${inputs.coord}, ${inputs.lod ?? "0"});`
+ ]
+ });
+ }
+ dynoOut() {
+ return new DynoOutput(this, "texel");
+ }
+}
+function textureSizeType(textureType) {
+ switch (textureType) {
+ case "sampler2D":
+ case "usampler2D":
+ case "isampler2D":
+ case "samplerCube":
+ case "usamplerCube":
+ case "isamplerCube":
+ case "sampler2DShadow":
+ case "samplerCubeShadow":
+ return "ivec2";
+ case "sampler3D":
+ case "usampler3D":
+ case "isampler3D":
+ case "sampler2DArray":
+ case "usampler2DArray":
+ case "isampler2DArray":
+ case "sampler2DArrayShadow":
+ return "ivec3";
+ default:
+ throw new Error(`Invalid texture type: ${textureType}`);
+ }
+}
+function textureCoordType(textureType) {
+ switch (textureType) {
+ case "sampler2D":
+ case "usampler2D":
+ case "isampler2D":
+ return "vec2";
+ case "sampler3D":
+ case "usampler3D":
+ case "isampler3D":
+ case "samplerCube":
+ case "usamplerCube":
+ case "isamplerCube":
+ case "sampler2DArray":
+ case "usampler2DArray":
+ case "isampler2DArray":
+ case "sampler2DShadow":
+ return "vec3";
+ case "samplerCubeShadow":
+ case "sampler2DArrayShadow":
+ return "vec4";
+ default:
+ throw new Error(`Invalid texture type: ${textureType}`);
+ }
+}
+function textureReturnType(textureType) {
+ switch (textureType) {
+ case "sampler2D":
+ case "sampler2DArray":
+ case "sampler3D":
+ case "samplerCube":
+ case "sampler2DShadow":
+ return "vec4";
+ case "usampler2D":
+ case "usampler2DArray":
+ case "usampler3D":
+ case "usamplerCube":
+ return "uvec4";
+ case "isampler2D":
+ case "isampler2DArray":
+ case "isampler3D":
+ case "isamplerCube":
+ return "ivec4";
+ case "samplerCubeShadow":
+ case "sampler2DArrayShadow":
+ return "float";
+ default:
+ throw new Error(`Invalid texture type: ${textureType}`);
+ }
+}
+const radians = (degrees2) => new Radians({ degrees: degrees2 });
+const degrees = (radians2) => new Degrees({ radians: radians2 });
+const sin = (radians2) => new Sin({ radians: radians2 });
+const cos = (radians2) => new Cos({ radians: radians2 });
+const tan = (radians2) => new Tan({ radians: radians2 });
+const asin = (sin2) => new Asin({ sin: sin2 });
+const acos = (cos2) => new Acos({ cos: cos2 });
+const atan = (tan2) => new Atan({ tan: tan2 });
+const atan2 = (y, x) => new Atan2({ y, x });
+const sinh = (x) => new Sinh({ x });
+const cosh = (x) => new Cosh({ x });
+const tanh = (x) => new Tanh({ x });
+const asinh = (x) => new Asinh({ x });
+const acosh = (x) => new Acosh({ x });
+const atanh = (x) => new Atanh({ x });
+class Radians extends UnaryOp {
+ constructor({ degrees: degrees2 }) {
+ super({ a: degrees2, outTypeFunc: (aType) => aType, outKey: "radians" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.radians} = radians(${inputs.a});`
+ ];
+ }
+}
+class Degrees extends UnaryOp {
+ constructor({ radians: radians2 }) {
+ super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "degrees" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.degrees} = degrees(${inputs.a});`
+ ];
+ }
+}
+class Sin extends UnaryOp {
+ constructor({ radians: radians2 }) {
+ super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "sin" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.sin} = sin(${inputs.a});`
+ ];
+ }
+}
+class Cos extends UnaryOp {
+ constructor({ radians: radians2 }) {
+ super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "cos" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.cos} = cos(${inputs.a});`
+ ];
+ }
+}
+class Tan extends UnaryOp {
+ constructor({ radians: radians2 }) {
+ super({ a: radians2, outTypeFunc: (aType) => aType, outKey: "tan" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.tan} = tan(${inputs.a});`
+ ];
+ }
+}
+class Asin extends UnaryOp {
+ constructor({ sin: sin2 }) {
+ super({ a: sin2, outTypeFunc: (aType) => aType, outKey: "asin" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.asin} = asin(${inputs.a});`
+ ];
+ }
+}
+class Acos extends UnaryOp {
+ constructor({ cos: cos2 }) {
+ super({ a: cos2, outTypeFunc: (aType) => aType, outKey: "acos" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.acos} = acos(${inputs.a});`
+ ];
+ }
+}
+class Atan extends UnaryOp {
+ constructor({ tan: tan2 }) {
+ super({ a: tan2, outTypeFunc: (aType) => aType, outKey: "atan" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.atan} = atan(${inputs.a});`
+ ];
+ }
+}
+class Atan2 extends BinaryOp {
+ constructor({ y, x }) {
+ super({
+ a: y,
+ b: x,
+ outTypeFunc: (aType, bType) => aType,
+ outKey: "atan2"
+ });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.atan2} = atan2(${inputs.a}, ${inputs.b});`
+ ];
+ }
+}
+class Sinh extends UnaryOp {
+ constructor({ x }) {
+ super({ a: x, outTypeFunc: (aType) => aType, outKey: "sinh" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.sinh} = sinh(${inputs.a});`
+ ];
+ }
+}
+class Cosh extends UnaryOp {
+ constructor({ x }) {
+ super({ a: x, outTypeFunc: (aType) => aType, outKey: "cosh" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.cosh} = cosh(${inputs.a});`
+ ];
+ }
+}
+class Tanh extends UnaryOp {
+ constructor({ x }) {
+ super({ a: x, outTypeFunc: (aType) => aType, outKey: "tanh" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.tanh} = tanh(${inputs.a});`
+ ];
+ }
+}
+class Asinh extends UnaryOp {
+ constructor({ x }) {
+ super({ a: x, outTypeFunc: (aType) => aType, outKey: "asinh" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.asinh} = asinh(${inputs.a});`
+ ];
+ }
+}
+class Acosh extends UnaryOp {
+ constructor({ x }) {
+ super({ a: x, outTypeFunc: (aType) => aType, outKey: "acosh" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.acosh} = acosh(${inputs.a});`
+ ];
+ }
+}
+class Atanh extends UnaryOp {
+ constructor({ x }) {
+ super({ a: x, outTypeFunc: (aType) => aType, outKey: "atanh" });
+ this.statements = ({ inputs, outputs }) => [
+ `${outputs.atanh} = atanh(${inputs.a});`
+ ];
+ }
+}
+const dyno = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
+ __proto__: null,
+ Abs,
+ Acos,
+ Acosh,
+ Add,
+ All,
+ And,
+ Any,
+ Asin,
+ Asinh,
+ Atan,
+ Atan2,
+ Atanh,
+ BVec2,
+ BVec3,
+ BVec4,
+ BinaryOp,
+ Bool,
+ Ceil,
+ Clamp,
+ Combine,
+ CombineGsplat,
+ CompMult,
+ CompXor,
+ Compilation,
+ Cos,
+ Cosh,
+ Cross,
+ Degrees,
+ Determinant,
+ Distance,
+ Div,
+ Dot,
+ Dyno,
+ DynoBlock,
+ DynoBool,
+ DynoBvec2,
+ DynoBvec3,
+ DynoBvec4,
+ DynoConst,
+ DynoFloat,
+ DynoInt,
+ DynoIsampler2D,
+ DynoIsampler2DArray,
+ DynoIsampler3D,
+ DynoIsamplerCube,
+ DynoIvec2,
+ DynoIvec3,
+ DynoIvec4,
+ DynoLiteral,
+ DynoMat2,
+ DynoMat2x2,
+ DynoMat2x3,
+ DynoMat2x4,
+ DynoMat3,
+ DynoMat3x2,
+ DynoMat3x3,
+ DynoMat3x4,
+ DynoMat4,
+ DynoMat4x2,
+ DynoMat4x3,
+ DynoMat4x4,
+ DynoOutput,
+ DynoProgram,
+ DynoProgramTemplate,
+ DynoRemapIndex,
+ DynoSampler2D,
+ DynoSampler2DArray,
+ DynoSampler2DArrayShadow,
+ DynoSampler2DShadow,
+ DynoSampler3D,
+ DynoSamplerCube,
+ DynoSamplerCubeShadow,
+ DynoUint,
+ DynoUniform,
+ DynoUsampler2D,
+ DynoUsampler2DArray,
+ DynoUsampler3D,
+ DynoUsamplerCube,
+ DynoUvec2,
+ DynoUvec3,
+ DynoUvec4,
+ DynoValue,
+ DynoVec2,
+ DynoVec3,
+ DynoVec4,
+ Equal,
+ Exp,
+ Exp2,
+ ExtendVec,
+ FaceForward,
+ Float,
+ FloatBitsToInt,
+ FloatBitsToUint,
+ Floor,
+ Fract,
+ GreaterThan,
+ GreaterThanEqual,
+ Gsplat,
+ GsplatNormal,
+ Hash,
+ Hash2,
+ Hash3,
+ Hash4,
+ HashFloat,
+ HashVec2,
+ HashVec3,
+ HashVec4,
+ IMod,
+ IVec2,
+ IVec3,
+ IVec4,
+ Int,
+ IntBitsToFloat,
+ Inverse,
+ InverseSqrt,
+ IsInf,
+ IsNan,
+ Length,
+ LessThan,
+ LessThanEqual,
+ Log,
+ Log2,
+ Mat2,
+ Mat3,
+ Mat4,
+ Max,
+ Min,
+ Mix,
+ Mod,
+ Modf,
+ Mul,
+ Neg,
+ Normalize,
+ Not,
+ NotEqual,
+ NumPackedSplats,
+ Or,
+ Outer,
+ OutputPackedSplat,
+ OutputRgba8,
+ PackHalf2x16,
+ PackSnorm2x16,
+ PackUnorm2x16,
+ PcgHash,
+ PcgMix,
+ PcgNext,
+ Pow,
+ ProjectH,
+ Radians,
+ ReadPackedSplat,
+ ReadPackedSplatRange,
+ ReflectVec,
+ RefractVec,
+ Round,
+ Select,
+ Sign,
+ SimpleCast,
+ Sin,
+ Sinh,
+ Smoothstep,
+ Split,
+ SplitGsplat,
+ Sqr,
+ Sqrt,
+ Step,
+ Sub,
+ Swizzle,
+ TPackedSplats,
+ Tan,
+ Tanh,
+ TexelFetch,
+ Texture,
+ TextureSize,
+ TransformGsplat,
+ TransformPosition,
+ TransformQuaternion,
+ TransformRay,
+ Transpose,
+ TrinaryOp,
+ Trunc,
+ UVec2,
+ UVec3,
+ UVec4,
+ Uint,
+ UintBitsToFloat,
+ UintToRgba8,
+ UnaryOp,
+ UnpackHalf2x16,
+ UnpackSnorm2x16,
+ UnpackUnorm2x16,
+ Vec2,
+ Vec3,
+ Vec4,
+ Xor,
+ abs,
+ acos,
+ acosh,
+ add,
+ all,
+ and,
+ any,
+ arrayIndex,
+ arrayLength,
+ asin,
+ asinh,
+ atan,
+ atan2,
+ atanh,
+ bool,
+ bvec2,
+ bvec3,
+ bvec4,
+ ceil,
+ clamp,
+ combine,
+ combineGsplat,
+ comment,
+ compMult,
+ compXor,
+ cos,
+ cosh,
+ cross,
+ defineGsplat,
+ defineGsplatNormal,
+ definePackedSplats,
+ degrees,
+ determinant,
+ distance,
+ div,
+ dot,
+ dyno: dyno$1,
+ dynoBlock,
+ dynoBool,
+ dynoBvec2,
+ dynoBvec3,
+ dynoBvec4,
+ dynoConst,
+ dynoDeclare,
+ dynoFloat,
+ dynoFor,
+ dynoIf,
+ dynoInt,
+ dynoIsampler2D,
+ dynoIsampler2DArray,
+ dynoIsampler3D,
+ dynoIsamplerCube,
+ dynoIvec2,
+ dynoIvec3,
+ dynoIvec4,
+ dynoLiteral,
+ dynoMat2,
+ dynoMat2x2,
+ dynoMat2x3,
+ dynoMat2x4,
+ dynoMat3,
+ dynoMat3x2,
+ dynoMat3x3,
+ dynoMat3x4,
+ dynoMat4,
+ dynoMat4x2,
+ dynoMat4x3,
+ dynoMat4x4,
+ dynoSampler2D,
+ dynoSampler2DArray,
+ dynoSampler2DArrayShadow,
+ dynoSampler2DShadow,
+ dynoSampler3D,
+ dynoSamplerCube,
+ dynoSamplerCubeShadow,
+ dynoSwitch,
+ dynoUint,
+ dynoUsampler2D,
+ dynoUsampler2DArray,
+ dynoUsampler3D,
+ dynoUsamplerCube,
+ dynoUvec2,
+ dynoUvec3,
+ dynoUvec4,
+ dynoVec2,
+ dynoVec3,
+ dynoVec4,
+ equal,
+ exp,
+ exp2,
+ extendVec,
+ faceforward,
+ float,
+ floatBitsToInt,
+ floatBitsToUint,
+ floor,
+ fract,
+ greaterThan,
+ greaterThanEqual,
+ gsplatNormal,
+ hash,
+ hash2,
+ hash3,
+ hash4,
+ hashFloat,
+ hashVec2,
+ hashVec3,
+ hashVec4,
+ imod,
+ int,
+ intBitsToFloat,
+ inverse,
+ inversesqrt,
+ isAllFloatType,
+ isBoolType,
+ isFloatType,
+ isInf,
+ isIntType,
+ isMat2,
+ isMat3,
+ isMat4,
+ isMatFloatType,
+ isNan,
+ isScalarType,
+ isUintType,
+ isVector2Type,
+ isVector3Type,
+ isVector4Type,
+ isVectorType,
+ ivec2,
+ ivec3,
+ ivec4,
+ length,
+ lessThan,
+ lessThanEqual,
+ literalNegOne,
+ literalOne,
+ literalZero,
+ log,
+ log2,
+ mat2,
+ mat3,
+ mat4,
+ max,
+ min,
+ mix,
+ mod,
+ modf,
+ mul,
+ neg,
+ normalize,
+ not,
+ notEqual,
+ numPackedSplats,
+ numberAsFloat,
+ numberAsInt,
+ numberAsUint,
+ or,
+ outer,
+ outputPackedSplat,
+ outputRgba8,
+ packHalf2x16,
+ packSnorm2x16,
+ packUnorm2x16,
+ pcgHash,
+ pcgMix,
+ pcgNext,
+ pow,
+ projectH,
+ radians,
+ readPackedSplat,
+ readPackedSplatRange,
+ reflectVec,
+ refractVec,
+ remapIndex,
+ round,
+ sameSizeIvec,
+ sameSizeUvec,
+ sameSizeVec,
+ select,
+ sign,
+ sin,
+ sinh,
+ smoothstep,
+ split,
+ splitGsplat,
+ sqr,
+ sqrt,
+ step,
+ sub,
+ swizzle,
+ tan,
+ tanh,
+ texelFetch,
+ texture,
+ textureSize,
+ transformGsplat,
+ transformPos,
+ transformQuat,
+ transformRay,
+ transpose,
+ trunc,
+ typeLiteral,
+ uint,
+ uintBitsToFloat,
+ uintToRgba8,
+ uniform,
+ unindent,
+ unindentLines,
+ unpackHalf2x16,
+ unpackSnorm2x16,
+ unpackUnorm2x16,
+ uvec2,
+ uvec3,
+ uvec4,
+ valType,
+ vec2,
+ vec3,
+ vec4,
+ vectorDim,
+ vectorElementType,
+ xor
+}, Symbol.toStringTag, { value: "Module" }));
+var computeVec4_default = "precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout vec4 target;\n\n{{ GLOBALS }}\n\nvoid computeReadback(int index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n computeReadback(index);\n } else {\n target = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}";
+const _Readback = class _Readback {
+ constructor({ renderer } = {}) {
+ this.renderer = renderer;
+ this.capacity = 0;
+ this.count = 0;
+ }
+ dispose() {
+ if (this.target) {
+ this.target.dispose();
+ this.target = void 0;
+ }
+ }
+ // Ensure we have a buffer large enough for the readback of count indices.
+ // Pass in previous bufer of the desired type.
+ ensureBuffer(count, buffer) {
+ const roundedCount = Math.ceil(Math.max(1, count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;
+ const bytes = roundedCount * 4;
+ if (buffer.byteLength >= bytes) {
+ return buffer;
+ }
+ const newBuffer = new ArrayBuffer(bytes);
+ if (buffer instanceof ArrayBuffer) {
+ return newBuffer;
+ }
+ const ctor = buffer.constructor;
+ return new ctor(newBuffer);
+ }
+ // Ensure our render target is large enough for the readback of capacity indices.
+ ensureCapacity(capacity) {
+ const { width, height, depth, maxSplats } = getTextureSize(capacity);
+ if (!this.target || maxSplats > this.capacity) {
+ this.dispose();
+ this.capacity = maxSplats;
+ this.target = new THREE__namespace.WebGLArrayRenderTarget(width, height, depth, {
+ depthBuffer: false,
+ stencilBuffer: false,
+ generateMipmaps: false,
+ magFilter: THREE__namespace.NearestFilter,
+ minFilter: THREE__namespace.NearestFilter
+ });
+ this.target.texture.format = THREE__namespace.RGBAFormat;
+ this.target.texture.type = THREE__namespace.UnsignedByteType;
+ this.target.texture.internalFormat = "RGBA8";
+ }
+ }
+ // Get a program and THREE.RawShaderMaterial for a given Rgba8Readback,
+ // generating it if necessary and caching the result.
+ prepareProgramMaterial(reader) {
+ let program = _Readback.readbackProgram.get(reader);
+ if (!program) {
+ const graph = dynoBlock(
+ { index: "int" },
+ { rgba8: "vec4" },
+ ({ index }) => {
+ reader.inputs.index = index;
+ const rgba8 = new OutputRgba8({ rgba8: reader.outputs.rgba8 });
+ return { rgba8 };
+ }
+ );
+ if (!_Readback.programTemplate) {
+ _Readback.programTemplate = new DynoProgramTemplate(computeVec4_default);
+ }
+ program = new DynoProgram({
+ graph,
+ inputs: { index: "index" },
+ outputs: { rgba8: "target" },
+ template: _Readback.programTemplate
+ });
+ Object.assign(program.uniforms, {
+ targetLayer: { value: 0 },
+ targetBase: { value: 0 },
+ targetCount: { value: 0 }
+ });
+ _Readback.readbackProgram.set(reader, program);
+ }
+ const material = program.prepareMaterial();
+ _Readback.mesh.material = material;
+ return { program, material };
+ }
+ saveRenderState(renderer) {
+ return {
+ xrPresenting: renderer.xr.isPresenting,
+ autoClear: renderer.autoClear,
+ scissorTest: renderer.getScissorTest()
+ };
+ }
+ resetRenderState(renderer, state) {
+ renderer.setRenderTarget(null);
+ renderer.xr.isPresenting = state.xrPresenting;
+ renderer.autoClear = state.autoClear;
+ renderer.setScissorTest(state.scissorTest);
+ }
+ process({
+ count,
+ material
+ }) {
+ const renderer = this.renderer;
+ if (!renderer) {
+ throw new Error("No renderer");
+ }
+ if (!this.target) {
+ throw new Error("No target");
+ }
+ const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;
+ material.uniforms.targetBase.value = 0;
+ material.uniforms.targetCount.value = count;
+ let baseIndex = 0;
+ while (baseIndex < count) {
+ const layer = Math.floor(baseIndex / layerSize);
+ const layerBase = layer * layerSize;
+ const layerYEnd = Math.min(
+ SPLAT_TEX_HEIGHT,
+ Math.ceil((count - layerBase) / SPLAT_TEX_WIDTH)
+ );
+ material.uniforms.targetLayer.value = layer;
+ renderer.setRenderTarget(this.target, layer);
+ renderer.xr.isPresenting = false;
+ renderer.autoClear = false;
+ renderer.setScissorTest(true);
+ renderer.setScissor(0, 0, SPLAT_TEX_WIDTH, layerYEnd);
+ renderer.render(_Readback.scene, _Readback.camera);
+ baseIndex += SPLAT_TEX_WIDTH * layerYEnd;
+ }
+ this.count = count;
+ }
+ async read({
+ readback
+ }) {
+ const renderer = this.renderer;
+ if (!renderer) {
+ throw new Error("No renderer");
+ }
+ if (!this.target) {
+ throw new Error("No target");
+ }
+ const roundedCount = Math.ceil(this.count / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;
+ if (readback.byteLength < roundedCount * 4) {
+ throw new Error(
+ `Readback buffer too small: ${readback.byteLength} < ${roundedCount * 4}`
+ );
+ }
+ const readbackUint8 = new Uint8Array(
+ readback instanceof ArrayBuffer ? readback : readback.buffer
+ );
+ const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;
+ let baseIndex = 0;
+ const promises = [];
+ while (baseIndex < this.count) {
+ const layer = Math.floor(baseIndex / layerSize);
+ const layerBase = layer * layerSize;
+ const layerYEnd = Math.min(
+ SPLAT_TEX_HEIGHT,
+ Math.ceil((this.count - layerBase) / SPLAT_TEX_WIDTH)
+ );
+ renderer.setRenderTarget(this.target, layer);
+ const readbackSize = SPLAT_TEX_WIDTH * layerYEnd * 4;
+ const subReadback = readbackUint8.subarray(
+ layerBase * 4,
+ layerBase * 4 + readbackSize
+ );
+ const promise = renderer == null ? void 0 : renderer.readRenderTargetPixelsAsync(
+ this.target,
+ 0,
+ 0,
+ SPLAT_TEX_WIDTH,
+ layerYEnd,
+ subReadback
+ );
+ promises.push(promise);
+ baseIndex += SPLAT_TEX_WIDTH * layerYEnd;
+ }
+ return Promise.all(promises).then(() => readback);
+ }
+ // Perform render operation to run the Rgba8Readback program
+ // but don't perform the readback yet.
+ render({
+ reader,
+ count,
+ renderer
+ }) {
+ this.renderer = renderer || this.renderer;
+ if (!this.renderer) {
+ throw new Error("No renderer");
+ }
+ this.ensureCapacity(count);
+ const { program, material } = this.prepareProgramMaterial(reader);
+ program.update();
+ const renderState = this.saveRenderState(this.renderer);
+ this.process({ count, material });
+ this.resetRenderState(this.renderer, renderState);
+ }
+ // Perform a readback of the render target, returning a buffer of the
+ // given type.
+ async readback({
+ readback
+ }) {
+ if (!this.renderer) {
+ throw new Error("No renderer");
+ }
+ const renderState = this.saveRenderState(this.renderer);
+ const promise = this.read({ readback });
+ this.resetRenderState(this.renderer, renderState);
+ return promise;
+ }
+ // Perform a render and readback operation for the given Rgba8Readback,
+ // and readback buffer (call ensureBuffer first).
+ async renderReadback({
+ reader,
+ count,
+ renderer,
+ readback
+ }) {
+ this.renderer = renderer || this.renderer;
+ if (!this.renderer) {
+ throw new Error("No renderer");
+ }
+ this.ensureCapacity(count);
+ const { program, material } = this.prepareProgramMaterial(reader);
+ program.update();
+ const renderState = this.saveRenderState(this.renderer);
+ this.process({ count, material });
+ const promise = this.read({ readback });
+ this.resetRenderState(this.renderer, renderState);
+ return promise;
+ }
+ getTexture() {
+ var _a2;
+ return (_a2 = this.target) == null ? void 0 : _a2.texture;
+ }
+};
+_Readback.programTemplate = null;
+_Readback.readbackProgram = /* @__PURE__ */ new Map();
+_Readback.geometry = new THREE__namespace.PlaneGeometry(2, 2);
+_Readback.mesh = new THREE__namespace.Mesh(
+ _Readback.geometry,
+ new THREE__namespace.RawShaderMaterial({ visible: false })
+);
+_Readback.scene = new THREE__namespace.Scene().add(_Readback.mesh);
+_Readback.camera = new THREE__namespace.Camera();
+let Readback = _Readback;
+const _RgbaArray = class _RgbaArray {
+ constructor(options = {}) {
+ this.capacity = 0;
+ this.count = 0;
+ this.array = null;
+ this.readback = null;
+ this.source = null;
+ this.needsUpdate = true;
+ this.dyno = new DynoUniform({
+ key: "rgbaArray",
+ type: TRgbaArray,
+ globals: () => [defineRgbaArray],
+ value: {
+ texture: _RgbaArray.getEmpty(),
+ count: 0
+ },
+ update: (value) => {
+ var _a2;
+ value.texture = ((_a2 = this.readback) == null ? void 0 : _a2.getTexture()) ?? this.source ?? _RgbaArray.getEmpty();
+ value.count = this.count;
+ return value;
+ }
+ });
+ if (options.array) {
+ this.array = options.array;
+ this.capacity = Math.floor(this.array.length / 4);
+ this.capacity = Math.floor(this.capacity / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;
+ this.count = Math.min(
+ this.capacity,
+ options.count ?? Number.POSITIVE_INFINITY
+ );
+ } else {
+ this.capacity = options.capacity ?? 0;
+ this.count = 0;
+ }
+ }
+ // Free up resources
+ dispose() {
+ if (this.readback) {
+ this.readback.dispose();
+ this.readback = null;
+ }
+ if (this.source) {
+ this.source.dispose();
+ this.source = null;
+ }
+ }
+ // Ensure that our array is large enough to hold capacity RGBA8 values.
+ ensureCapacity(capacity) {
+ var _a2;
+ if (!this.array || capacity > (((_a2 = this.array) == null ? void 0 : _a2.length) ?? 0) / 4) {
+ this.capacity = getTextureSize(capacity).maxSplats;
+ const newArray2 = new Uint8Array(this.capacity * 4);
+ if (this.array) {
+ newArray2.set(this.array);
+ }
+ this.array = newArray2;
+ }
+ return this.array;
+ }
+ // Get the THREE.DataArrayTexture from either the readback or the source.
+ getTexture() {
+ var _a2;
+ let texture2 = (_a2 = this.readback) == null ? void 0 : _a2.getTexture();
+ if (this.source || this.array) {
+ texture2 = this.maybeUpdateSource();
+ }
+ return texture2 ?? _RgbaArray.getEmpty();
+ }
+ // Create or get a THREE.DataArrayTexture from the data array.
+ maybeUpdateSource() {
+ if (!this.array) {
+ throw new Error("No array");
+ }
+ if (this.needsUpdate || !this.source) {
+ this.needsUpdate = false;
+ if (this.source) {
+ const { width, height, depth } = this.source.image;
+ if (this.capacity !== width * height * depth) {
+ this.source.dispose();
+ this.source = null;
+ }
+ }
+ if (!this.source) {
+ const { width, height, depth } = getTextureSize(this.capacity);
+ this.source = new THREE__namespace.DataArrayTexture(
+ this.array,
+ width,
+ height,
+ depth
+ );
+ this.source.format = THREE__namespace.RGBAFormat;
+ this.source.type = THREE__namespace.UnsignedByteType;
+ this.source.internalFormat = "RGBA8";
+ this.source.needsUpdate = true;
+ } else if (this.array.buffer !== this.source.image.data.buffer) {
+ this.source.image.data = new Uint8Array(this.array.buffer);
+ }
+ this.source.needsUpdate = true;
+ }
+ return this.source;
+ }
+ // Generate the RGBA8 values from a Rgba8Readback dyno program.
+ render({
+ reader,
+ count,
+ renderer
+ }) {
+ if (!this.readback) {
+ this.readback = new Readback({ renderer });
+ }
+ this.readback.render({ reader, count, renderer });
+ this.capacity = this.readback.capacity;
+ this.count = this.readback.count;
+ }
+ // Extract the RGBA8 values from a PackedSplats collection.
+ fromPackedSplats({
+ packedSplats,
+ base,
+ count,
+ renderer
+ }) {
+ const { dynoSplats, dynoBase, dynoCount, reader } = _RgbaArray.makeDynos();
+ dynoSplats.packedSplats = packedSplats;
+ dynoBase.value = base;
+ dynoCount.value = count;
+ this.render({ reader, count, renderer });
+ return this;
+ }
+ // Read back the RGBA8 values from the readback buffer.
+ async read() {
+ if (!this.readback) {
+ throw new Error("No readback");
+ }
+ if (!this.array || this.array.length < this.count * 4) {
+ this.array = new Uint8Array(this.capacity * 4);
+ }
+ const result = await this.readback.readback({ readback: this.array });
+ return result.subarray(0, this.count * 4);
+ }
+ // Can be used where you need an uninitialized THREE.DataArrayTexture like
+ // a uniform you will update with the result of this.getTexture() later.
+ static getEmpty() {
+ if (!_RgbaArray.emptySource) {
+ const emptyArray = new Uint8Array(1 * 4);
+ _RgbaArray.emptySource = new THREE__namespace.DataArrayTexture(emptyArray, 1, 1, 1);
+ _RgbaArray.emptySource.format = THREE__namespace.RGBAFormat;
+ _RgbaArray.emptySource.type = THREE__namespace.UnsignedByteType;
+ _RgbaArray.emptySource.internalFormat = "RGBA8";
+ _RgbaArray.emptySource.needsUpdate = true;
+ }
+ return _RgbaArray.emptySource;
+ }
+ // Create a dyno program that can extract RGBA8 values from a PackedSplats
+ static makeDynos() {
+ if (!_RgbaArray.dynos) {
+ const dynoSplats = new DynoPackedSplats();
+ const dynoBase = new DynoInt({ value: 0 });
+ const dynoCount = new DynoInt({ value: 0 });
+ const reader = dynoBlock(
+ { index: "int" },
+ { rgba8: "vec4" },
+ ({ index }) => {
+ if (!index) {
+ throw new Error("index is undefined");
+ }
+ index = add(index, dynoBase);
+ const gsplat = readPackedSplatRange(
+ dynoSplats,
+ index,
+ dynoBase,
+ dynoCount
+ );
+ return { rgba8: splitGsplat(gsplat).outputs.rgba };
+ }
+ );
+ _RgbaArray.dynos = { dynoSplats, dynoBase, dynoCount, reader };
+ }
+ return _RgbaArray.dynos;
+ }
+};
+_RgbaArray.emptySource = null;
+_RgbaArray.dynos = null;
+let RgbaArray = _RgbaArray;
+const TRgbaArray = { type: "RgbaArray" };
+const defineRgbaArray = unindent(`
+ struct RgbaArray {
+ sampler2DArray texture;
+ int count;
+ };
+`);
+function readRgbaArray(rgba, index) {
+ const dyno2 = new Dyno({
+ inTypes: { rgba: TRgbaArray, index: "int" },
+ outTypes: { rgba: "vec4" },
+ inputs: { rgba, index },
+ globals: () => [defineRgbaArray],
+ statements: ({ inputs, outputs }) => unindentLines(`
+ if ((index >= 0) && (index < ${inputs.rgba}.count)) {
+ ${outputs.rgba} = texelFetch(${inputs.rgba}.texture, splatTexCoord(index), 0);
+ } else {
+ ${outputs.rgba} = vec4(0.0, 0.0, 0.0, 0.0);
+ }
+ `)
+ });
+ return dyno2.outputs.rgba;
+}
+var SplatEditSdfType = /* @__PURE__ */ ((SplatEditSdfType2) => {
+ SplatEditSdfType2["ALL"] = "all";
+ SplatEditSdfType2["PLANE"] = "plane";
+ SplatEditSdfType2["SPHERE"] = "sphere";
+ SplatEditSdfType2["BOX"] = "box";
+ SplatEditSdfType2["ELLIPSOID"] = "ellipsoid";
+ SplatEditSdfType2["CYLINDER"] = "cylinder";
+ SplatEditSdfType2["CAPSULE"] = "capsule";
+ SplatEditSdfType2["INFINITE_CONE"] = "infinite_cone";
+ return SplatEditSdfType2;
+})(SplatEditSdfType || {});
+function sdfTypeToNumber(type) {
+ switch (type) {
+ case "all":
+ return 0;
+ case "plane":
+ return 1;
+ case "sphere":
+ return 2;
+ case "box":
+ return 3;
+ case "ellipsoid":
+ return 4;
+ case "cylinder":
+ return 5;
+ case "capsule":
+ return 6;
+ case "infinite_cone":
+ return 7;
+ default:
+ throw new Error(`Unknown SDF type: ${type}`);
+ }
+}
+var SplatEditRgbaBlendMode = /* @__PURE__ */ ((SplatEditRgbaBlendMode2) => {
+ SplatEditRgbaBlendMode2["MULTIPLY"] = "multiply";
+ SplatEditRgbaBlendMode2["SET_RGB"] = "set_rgb";
+ SplatEditRgbaBlendMode2["ADD_RGBA"] = "add_rgba";
+ return SplatEditRgbaBlendMode2;
+})(SplatEditRgbaBlendMode || {});
+function rgbaBlendModeToNumber(mode) {
+ switch (mode) {
+ case "multiply":
+ return 0;
+ case "set_rgb":
+ return 1;
+ case "add_rgba":
+ return 2;
+ default:
+ throw new Error(`Unknown blend mode: ${mode}`);
+ }
+}
+class SplatEditSdf extends THREE__namespace.Object3D {
+ constructor(options = {}) {
+ super();
+ const { type, invert, opacity, color, displace, radius } = options;
+ this.type = type ?? "sphere";
+ this.invert = invert ?? false;
+ this.opacity = opacity ?? 1;
+ this.color = color ?? new THREE__namespace.Color(1, 1, 1);
+ this.displace = displace ?? new THREE__namespace.Vector3(0, 0, 0);
+ this.radius = radius ?? 0;
+ }
+}
+const _SplatEdit = class _SplatEdit extends THREE__namespace.Object3D {
+ constructor(options = {}) {
+ const {
+ name,
+ rgbaBlendMode = "multiply",
+ sdfSmooth = 0,
+ softEdge = 0,
+ invert = false,
+ sdfs = null
+ } = options;
+ super();
+ this.rgbaBlendMode = rgbaBlendMode;
+ this.sdfSmooth = sdfSmooth;
+ this.softEdge = softEdge;
+ this.invert = invert;
+ this.sdfs = sdfs;
+ this.ordering = _SplatEdit.nextOrdering++;
+ this.name = name ?? `Edit ${this.ordering}`;
+ }
+ addSdf(sdf) {
+ if (this.sdfs == null) {
+ this.sdfs = [];
+ }
+ this.sdfs.push(sdf);
+ }
+ removeSdf(sdf) {
+ if (this.sdfs == null) {
+ return;
+ }
+ this.sdfs = this.sdfs.filter((s) => s !== sdf);
+ }
+};
+_SplatEdit.nextOrdering = 1;
+let SplatEdit = _SplatEdit;
+class SplatEdits {
+ constructor({ maxSdfs, maxEdits }) {
+ this.maxSdfs = Math.max(16, maxSdfs ?? 0);
+ this.numSdfs = 0;
+ this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);
+ this.sdfFloatData = new Float32Array(this.sdfData.buffer);
+ this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);
+ this.dynoSdfArray = new DynoUniform({
+ key: "sdfArray",
+ type: SdfArray,
+ globals: () => [defineSdfArray],
+ value: {
+ numSdfs: 0,
+ sdfTexture: this.sdfTexture
+ },
+ update: (uniform2) => {
+ uniform2.numSdfs = this.numSdfs;
+ uniform2.sdfTexture = this.sdfTexture;
+ return uniform2;
+ }
+ });
+ this.maxEdits = Math.max(16, maxEdits ?? 0);
+ this.numEdits = 0;
+ this.editData = new Uint32Array(this.maxEdits * 4);
+ this.editFloatData = new Float32Array(this.editData.buffer);
+ this.dynoNumEdits = new DynoInt({ value: 0 });
+ this.dynoEdits = this.newEdits(this.editData, this.maxEdits);
+ }
+ newSdfTexture(data, maxSdfs) {
+ const texture2 = new THREE__namespace.DataTexture(
+ data,
+ 8,
+ maxSdfs,
+ THREE__namespace.RGBAIntegerFormat,
+ THREE__namespace.UnsignedIntType
+ );
+ texture2.internalFormat = "RGBA32UI";
+ texture2.needsUpdate = true;
+ return texture2;
+ }
+ newEdits(data, maxEdits) {
+ return new DynoUniform({
+ key: "edits",
+ type: "uvec4",
+ count: maxEdits,
+ globals: () => [defineEdit],
+ value: data
+ });
+ }
+ // Ensure our SDF texture and edits uniform array have enough capacity.
+ // Reallocate if not.
+ ensureCapacity({
+ maxSdfs,
+ maxEdits
+ }) {
+ let dynoUpdated = false;
+ if (maxSdfs > this.sdfTexture.image.height) {
+ this.sdfTexture.dispose();
+ this.maxSdfs = Math.max(this.maxSdfs * 2, maxSdfs);
+ this.sdfData = new Uint32Array(this.maxSdfs * 8 * 4);
+ this.sdfFloatData = new Float32Array(this.sdfData.buffer);
+ this.sdfTexture = this.newSdfTexture(this.sdfData, this.maxSdfs);
+ }
+ if (maxEdits > (this.dynoEdits.count ?? 0)) {
+ this.maxEdits = Math.max(this.maxEdits * 2, maxEdits);
+ this.editData = new Uint32Array(this.maxEdits * 4);
+ this.editFloatData = new Float32Array(this.editData.buffer);
+ this.dynoEdits = this.newEdits(this.editData, this.maxEdits);
+ dynoUpdated = true;
+ }
+ return dynoUpdated;
+ }
+ updateEditData(offset, value) {
+ const updated = this.editData[offset] !== value;
+ this.editData[offset] = value;
+ return updated;
+ }
+ updateEditFloatData(offset, value) {
+ tempFloat32[0] = value;
+ const updated = this.editFloatData[offset] !== tempFloat32[0];
+ if (updated) {
+ this.editFloatData[offset] = tempFloat32[0];
+ }
+ return updated;
+ }
+ encodeEdit(editIndex, {
+ sdfFirst,
+ sdfCount,
+ invert,
+ rgbaBlendMode,
+ softEdge,
+ sdfSmooth
+ }) {
+ const base = editIndex * 4;
+ let updated = false;
+ updated = this.updateEditData(base + 0, rgbaBlendMode | (invert ? 1 << 8 : 0)) || updated;
+ updated = this.updateEditData(base + 1, sdfFirst | sdfCount << 16) || updated;
+ updated = this.updateEditFloatData(base + 2, softEdge) || updated;
+ updated = this.updateEditFloatData(base + 3, sdfSmooth) || updated;
+ return updated;
+ }
+ updateSdfData(offset, value) {
+ const updated = this.sdfData[offset] !== value;
+ this.sdfData[offset] = value;
+ return updated;
+ }
+ updateSdfFloatData(offset, value) {
+ tempFloat32[0] = value;
+ const updated = this.sdfFloatData[offset] !== tempFloat32[0];
+ if (updated) {
+ this.sdfFloatData[offset] = tempFloat32[0];
+ }
+ return updated;
+ }
+ encodeSdf(sdfIndex, {
+ sdfType,
+ invert,
+ center,
+ quaternion,
+ scale,
+ sizes
+ }, values) {
+ const base = sdfIndex * (8 * 4);
+ const flags = sdfType | (invert ? 1 << 8 : 0);
+ let updated = false;
+ updated = this.updateSdfFloatData(base + 0, (center == null ? void 0 : center.x) ?? 0) || updated;
+ updated = this.updateSdfFloatData(base + 1, (center == null ? void 0 : center.y) ?? 0) || updated;
+ updated = this.updateSdfFloatData(base + 2, (center == null ? void 0 : center.z) ?? 0) || updated;
+ updated = this.updateSdfData(base + 3, flags) || updated;
+ updated = this.updateSdfFloatData(base + 4, (quaternion == null ? void 0 : quaternion.x) ?? 0) || updated;
+ updated = this.updateSdfFloatData(base + 5, (quaternion == null ? void 0 : quaternion.y) ?? 0) || updated;
+ updated = this.updateSdfFloatData(base + 6, (quaternion == null ? void 0 : quaternion.z) ?? 0) || updated;
+ updated = this.updateSdfFloatData(base + 7, (quaternion == null ? void 0 : quaternion.w) ?? 0) || updated;
+ updated = this.updateSdfFloatData(base + 8, (scale == null ? void 0 : scale.x) ?? 0) || updated;
+ updated = this.updateSdfFloatData(base + 9, (scale == null ? void 0 : scale.y) ?? 0) || updated;
+ updated = this.updateSdfFloatData(base + 10, (scale == null ? void 0 : scale.z) ?? 0) || updated;
+ updated = this.updateSdfData(base + 11, 0) || updated;
+ updated = this.updateSdfFloatData(base + 12, (sizes == null ? void 0 : sizes.x) ?? 0) || updated;
+ updated = this.updateSdfFloatData(base + 13, (sizes == null ? void 0 : sizes.y) ?? 0) || updated;
+ updated = this.updateSdfFloatData(base + 14, (sizes == null ? void 0 : sizes.z) ?? 0) || updated;
+ updated = this.updateSdfFloatData(base + 15, (sizes == null ? void 0 : sizes.w) ?? 0) || updated;
+ const nValues = Math.min(4, values.length);
+ for (let i = 0; i < nValues; ++i) {
+ const vBase = base + 16 + i * 4;
+ updated = this.updateSdfFloatData(vBase + 0, values[i].x) || updated;
+ updated = this.updateSdfFloatData(vBase + 1, values[i].y) || updated;
+ updated = this.updateSdfFloatData(vBase + 2, values[i].z) || updated;
+ updated = this.updateSdfFloatData(vBase + 3, values[i].w) || updated;
+ }
+ return updated;
+ }
+ // Update the SDFs and edits from an array of SplatEdits and their
+ // associated SplatEditSdfs, updating it for the dyno shader program.
+ update(edits) {
+ const sdfCount = edits.reduce((total, { sdfs }) => total + sdfs.length, 0);
+ const dynoUpdated = this.ensureCapacity({
+ maxEdits: edits.length,
+ maxSdfs: sdfCount
+ });
+ const values = [new THREE__namespace.Vector4(), new THREE__namespace.Vector4()];
+ const center = new THREE__namespace.Vector3();
+ const quaternion = new THREE__namespace.Quaternion();
+ const scale = new THREE__namespace.Vector3();
+ const sizes = new THREE__namespace.Vector4();
+ let sdfIndex = 0;
+ let updated = dynoUpdated;
+ if (edits.length !== this.dynoNumEdits.value) {
+ this.dynoNumEdits.value = edits.length;
+ this.numEdits = edits.length;
+ updated = true;
+ }
+ for (const [editIndex, { edit, sdfs }] of edits.entries()) {
+ updated = this.encodeEdit(editIndex, {
+ sdfFirst: sdfIndex,
+ sdfCount: sdfs.length,
+ invert: edit.invert,
+ rgbaBlendMode: rgbaBlendModeToNumber(edit.rgbaBlendMode),
+ softEdge: edit.softEdge,
+ sdfSmooth: edit.sdfSmooth
+ }) || updated;
+ let sdfUpdated = false;
+ for (const sdf of sdfs) {
+ sizes.set(sdf.scale.x, sdf.scale.y, sdf.scale.z, sdf.radius);
+ sdf.scale.setScalar(1);
+ sdf.updateMatrixWorld();
+ const worldToSdf = sdf.matrixWorld.clone().invert();
+ worldToSdf.decompose(center, quaternion, scale);
+ sdf.scale.set(sizes.x, sizes.y, sizes.z);
+ sdf.updateMatrixWorld();
+ values[0].set(sdf.color.r, sdf.color.g, sdf.color.b, sdf.opacity);
+ values[1].set(sdf.displace.x, sdf.displace.y, sdf.displace.z, 1);
+ sdfUpdated = this.encodeSdf(
+ sdfIndex,
+ {
+ sdfType: sdfTypeToNumber(sdf.type),
+ invert: sdf.invert,
+ center,
+ quaternion,
+ scale,
+ sizes
+ },
+ values
+ ) || sdfUpdated;
+ sdfIndex += 1;
+ }
+ this.numSdfs = sdfIndex;
+ if (sdfUpdated) {
+ this.sdfTexture.needsUpdate = true;
+ }
+ updated || (updated = sdfUpdated);
+ }
+ return { updated, dynoUpdated };
+ }
+ // Modify a Gsplat in a dyno shader program using the current edits and SDFs.
+ modify(gsplat) {
+ return applyGsplatRgbaDisplaceEdits(
+ gsplat,
+ this.dynoSdfArray,
+ this.dynoNumEdits,
+ this.dynoEdits
+ );
+ }
+}
+const SdfArray = { type: "SdfArray" };
+const defineSdfArray = unindent(`
+ struct SdfArray {
+ int numSdfs;
+ usampler2D sdfTexture;
+ };
+
+ void unpackSdfArray(
+ usampler2D sdfTexture, int sdfIndex, out uint flags,
+ out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,
+ int numValues, out vec4 values[4]
+ ) {
+ uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);
+ flags = temp.w;
+ center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));
+
+ temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);
+ quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));
+
+ temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);
+ scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));
+
+ temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);
+ sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));
+
+ for (int i = 0; i < numValues; ++i) {
+ temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);
+ values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));
+ }
+ }
+
+ const uint SDF_FLAG_TYPE = 0xFFu;
+ const uint SDF_FLAG_INVERT = 1u << 8u;
+
+ const uint SDF_TYPE_ALL = 0u;
+ const uint SDF_TYPE_PLANE = 1u;
+ const uint SDF_TYPE_SPHERE = 2u;
+ const uint SDF_TYPE_BOX = 3u;
+ const uint SDF_TYPE_ELLIPSOID = 4u;
+ const uint SDF_TYPE_CYLINDER = 5u;
+ const uint SDF_TYPE_CAPSULE = 6u;
+ const uint SDF_TYPE_INFINITE_CONE = 7u;
+
+ float evaluateSdfArray(
+ usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,
+ float smoothK, int numValues, out vec4 outValues[4]
+ ) {
+ float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;
+ float maxExp = -1.0 / 0.0;
+ for (int i = 0; i < numValues; ++i) {
+ outValues[i] = vec4(0.0);
+ }
+
+ uint flags;
+ vec3 center, scale;
+ vec4 quaternion, sizes;
+ vec4 values[4];
+
+ int sdfLast = min(sdfFirst + sdfCount, numSdfs);
+ for (int index = sdfFirst; index < sdfLast; ++index) {
+ unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);
+ uint sdfType = flags & SDF_FLAG_TYPE;
+ vec3 sdfPos = quatVec(quaternion, pos * scale) + center;
+
+ float distance;
+ switch (sdfType) {
+ case SDF_TYPE_ALL:
+ distance = -1.0 / 0.0;
+ break;
+ case SDF_TYPE_PLANE: {
+ distance = sdfPos.z;
+ break;
+ }
+ case SDF_TYPE_SPHERE: {
+ distance = length(sdfPos) - sizes.w;
+ break;
+ }
+ case SDF_TYPE_BOX: {
+ vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;
+ distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;
+ break;
+ }
+ case SDF_TYPE_ELLIPSOID: {
+ vec3 sizes = sizes.xyz;
+ float k0 = length(sdfPos / sizes);
+ float k1 = length(sdfPos / dot(sizes, sizes));
+ distance = k0 * (k0 - 1.0) / k1;
+ break;
+ }
+ case SDF_TYPE_CYLINDER: {
+ vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;
+ distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
+ break;
+ }
+ case SDF_TYPE_CAPSULE: {
+ sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);
+ distance = length(sdfPos) - sizes.w;
+ break;
+ }
+ case SDF_TYPE_INFINITE_CONE: {
+ float angle = 0.25 * PI * sizes.w;
+ vec2 c = vec2(sin(angle), cos(angle));
+ vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);
+ float d = length(q - c * max(dot(q, c), 0.0));
+ distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);
+ break;
+ }
+ }
+
+ if ((flags & SDF_FLAG_INVERT) != 0u) {
+ distance = -distance;
+ }
+
+ if (smoothK == 0.0) {
+ if (distance < distanceAccum) {
+ distanceAccum = distance;
+ for (int i = 0; i < numValues; ++i) {
+ outValues[i] = values[i];
+ }
+ }
+ } else {
+ float scaledDistance = -distance / smoothK;
+ if (scaledDistance > maxExp) {
+ float scale = exp(maxExp - scaledDistance);
+ distanceAccum *= scale;
+ for (int i = 0; i < numValues; ++i) {
+ outValues[i] *= scale;
+ }
+ maxExp = scaledDistance;
+ }
+
+ float weight = exp(scaledDistance - maxExp);
+ distanceAccum += weight;
+ for (int i = 0; i < numValues; ++i) {
+ outValues[i] += weight * values[i];
+ }
+ }
+ }
+
+ if (smoothK == 0.0) {
+ return distanceAccum;
+ } else {
+ // Very distant SDFs may result in 0 accumulation
+ if (distanceAccum == 0.0) {
+ return 1.0 / 0.0;
+ }
+ for (int i = 0; i < numValues; ++i) {
+ outValues[i] /= distanceAccum;
+ }
+ return (-log(distanceAccum) - maxExp) * smoothK;
+ }
+ }
+
+ float modulateSdfArray(
+ usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,
+ float smoothK, int numValues, out vec4 values[4],
+ float softEdge, bool invert
+ ) {
+ float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);
+ if (invert) {
+ distance = -distance;
+ }
+
+ return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)
+ : clamp(-distance / softEdge + 0.5, 0.0, 1.0);
+ }
+`);
+const defineEdit = unindent(`
+ const uint EDIT_FLAG_BLEND = 0xFFu;
+ const uint EDIT_BLEND_MULTIPLY = 0u;
+ const uint EDIT_BLEND_SET_RGB = 1u;
+ const uint EDIT_BLEND_ADD_RGBA = 2u;
+ const uint EDIT_FLAG_INVERT = 0x100u;
+
+ void decodeEdit(
+ uvec4 packedEdit, out int sdfFirst, out int sdfCount,
+ out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth
+ ) {
+ rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;
+ invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;
+
+ sdfFirst = int(packedEdit.y & 0xFFFFu);
+ sdfCount = int(packedEdit.y >> 16u);
+
+ softEdge = uintBitsToFloat(packedEdit.z);
+ sdfSmooth = uintBitsToFloat(packedEdit.w);
+ }
+
+ void applyRgbaDisplaceEdit(
+ usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,
+ float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba
+ ) {
+ vec4 values[4];
+ float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);
+ // On Android, moving values[0] is necessary to work around a compiler bug.
+ vec4 sdfRgba = values[0];
+ vec4 sdfDisplaceScale = values[1];
+
+ vec4 target;
+ switch (rgbaBlendMode) {
+ case EDIT_BLEND_MULTIPLY:
+ target = rgba * sdfRgba;
+ break;
+ case EDIT_BLEND_SET_RGB:
+ target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);
+ break;
+ case EDIT_BLEND_ADD_RGBA:
+ target = rgba + sdfRgba;
+ break;
+ default:
+ // Debug output if blend mode not set
+ target = vec4(fract(pos), 1.0);
+ }
+ rgba = mix(rgba, target, modulate);
+ pos += sdfDisplaceScale.xyz * modulate;
+ }
+
+ void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {
+ int sdfFirst, sdfCount;
+ bool invert;
+ uint rgbaBlendMode;
+ float softEdge, sdfSmooth;
+ decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);
+ applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);
+ }
+`);
+function applyGsplatRgbaDisplaceEdits(gsplat, sdfArray, numEdits, rgbaDisplaceEdits) {
+ const dyno2 = new Dyno({
+ inTypes: {
+ gsplat: Gsplat,
+ sdfArray: SdfArray,
+ numEdits: "int",
+ rgbaDisplaceEdits: "uvec4"
+ },
+ outTypes: { gsplat: Gsplat },
+ globals: () => [defineSdfArray, defineEdit],
+ inputs: { gsplat, sdfArray, numEdits, rgbaDisplaceEdits },
+ statements: ({ inputs, outputs }) => {
+ const { sdfArray: sdfArray2, numEdits: numEdits2, rgbaDisplaceEdits: rgbaDisplaceEdits2 } = inputs;
+ const { gsplat: gsplat2 } = outputs;
+ return unindentLines(`
+ ${gsplat2} = ${inputs.gsplat};
+ if (isGsplatActive(${gsplat2}.flags)) {
+ for (int editIndex = 0; editIndex < ${numEdits2}; ++editIndex) {
+ applyPackedRgbaDisplaceEdit(
+ ${rgbaDisplaceEdits2}[editIndex], ${sdfArray2}.sdfTexture, ${sdfArray2}.numSdfs,
+ ${gsplat2}.center, ${gsplat2}.rgba
+ );
+ }
+ }
+ `);
+ }
+ });
+ return dyno2.outputs.gsplat;
+}
+const tempFloat32 = new Float32Array(1);
+class SplatModifier {
+ constructor(modifier) {
+ this.modifier = modifier;
+ this.cache = /* @__PURE__ */ new Map();
+ }
+ apply(generator) {
+ let modified = this.cache.get(generator);
+ if (!modified) {
+ modified = dynoBlock(
+ { index: "int" },
+ { gsplat: Gsplat },
+ ({ index }) => {
+ const { gsplat } = generator.apply({ index });
+ return this.modifier.apply({ gsplat });
+ }
+ );
+ this.cache.set(generator, modified);
+ }
+ return modified;
+ }
+}
+class SplatTransformer {
+ // Create the dyno uniforms that parameterize the transform, setting them
+ // to initial values that are different from any valid transform.
+ constructor() {
+ this.scale = new DynoFloat({ value: Number.NEGATIVE_INFINITY });
+ this.rotate = new DynoVec4({
+ value: new THREE__namespace.Quaternion(
+ Number.POSITIVE_INFINITY,
+ Number.POSITIVE_INFINITY,
+ Number.POSITIVE_INFINITY,
+ Number.POSITIVE_INFINITY
+ )
+ });
+ this.translate = new DynoVec3({
+ value: new THREE__namespace.Vector3(
+ Number.POSITIVE_INFINITY,
+ Number.POSITIVE_INFINITY,
+ Number.POSITIVE_INFINITY
+ )
+ });
+ }
+ // Apply the transform to a Gsplat in a dyno program.
+ modify(gsplat) {
+ return transformGsplat(gsplat, {
+ scale: this.scale,
+ rotate: this.rotate,
+ translate: this.translate
+ });
+ }
+ // Update the uniforms to match the given transform matrix.
+ updateFromMatrix(transform) {
+ const scale = new THREE__namespace.Vector3();
+ const quaternion = new THREE__namespace.Quaternion();
+ const position = new THREE__namespace.Vector3();
+ transform.decompose(position, quaternion, scale);
+ const newScale = (scale.x + scale.y + scale.z) / 3;
+ let updated = false;
+ if (newScale !== this.scale.value) {
+ this.scale.value = newScale;
+ updated = true;
+ }
+ if (!position.equals(this.translate.value)) {
+ this.translate.value.copy(position);
+ updated = true;
+ }
+ if (!quaternion.equals(this.rotate.value)) {
+ this.rotate.value.copy(quaternion);
+ updated = true;
+ }
+ return updated;
+ }
+ // Update this transform to match the object's to-world transform.
+ update(object) {
+ return this.updateFromMatrix(object.matrixWorld);
+ }
+}
+class SplatGenerator extends THREE__namespace.Object3D {
+ constructor({
+ numSplats,
+ generator,
+ construct,
+ update
+ }) {
+ super();
+ this.numSplats = numSplats ?? 0;
+ this.generator = generator;
+ this.frameUpdate = update;
+ this.version = 0;
+ if (construct) {
+ const constructed = construct(this);
+ Object.assign(this, constructed);
+ }
+ }
+ updateVersion() {
+ this.version += 1;
+ }
+ set needsUpdate(value) {
+ if (value) {
+ this.updateVersion();
+ }
+ }
+}
+const _SplatMesh = class _SplatMesh extends SplatGenerator {
+ constructor(options = {}) {
+ const transform = new SplatTransformer();
+ const viewToWorld = new SplatTransformer();
+ const worldToView = new SplatTransformer();
+ const viewToObject = new SplatTransformer();
+ const recolor = new DynoVec4({
+ value: new THREE__namespace.Vector4(
+ Number.NEGATIVE_INFINITY,
+ Number.NEGATIVE_INFINITY,
+ Number.NEGATIVE_INFINITY,
+ Number.NEGATIVE_INFINITY
+ )
+ });
+ const time = new DynoFloat({ value: 0 });
+ const deltaTime = new DynoFloat({ value: 0 });
+ const context = {
+ transform,
+ viewToWorld,
+ worldToView,
+ viewToObject,
+ recolor,
+ time,
+ deltaTime
+ };
+ super({
+ update: ({ time: time2, deltaTime: deltaTime2, viewToWorld: viewToWorld2, globalEdits }) => this.update({ time: time2, deltaTime: deltaTime2, viewToWorld: viewToWorld2, globalEdits })
+ });
+ this.isInitialized = false;
+ this.recolor = new THREE__namespace.Color(1, 1, 1);
+ this.opacity = 1;
+ this.enableViewToObject = false;
+ this.enableViewToWorld = false;
+ this.enableWorldToView = false;
+ this.skinning = null;
+ this.edits = null;
+ this.rgbaDisplaceEdits = null;
+ this.splatRgba = null;
+ this.maxSh = 3;
+ this.packedSplats = options.packedSplats ?? new PackedSplats();
+ this.numSplats = this.packedSplats.numSplats;
+ this.editable = options.editable ?? true;
+ this.onFrame = options.onFrame;
+ this.context = context;
+ this.objectModifier = options.objectModifier;
+ this.worldModifier = options.worldModifier;
+ this.updateGenerator();
+ if (options.url || options.fileBytes || options.constructSplats || options.packedSplats && !options.packedSplats.isInitialized) {
+ this.initialized = this.asyncInitialize(options).then(async () => {
+ this.updateGenerator();
+ this.isInitialized = true;
+ if (options.onLoad) {
+ const maybePromise = options.onLoad(this);
+ if (maybePromise instanceof Promise) {
+ await maybePromise;
+ }
+ }
+ return this;
+ });
+ } else {
+ this.isInitialized = true;
+ this.initialized = Promise.resolve(this);
+ if (options.onLoad) {
+ const maybePromise = options.onLoad(this);
+ if (maybePromise instanceof Promise) {
+ this.initialized = maybePromise.then(() => this);
+ }
+ }
+ }
+ }
+ async asyncInitialize(options) {
+ const { url, fileBytes, fileType, maxSplats, constructSplats } = options;
+ if (url || fileBytes || constructSplats) {
+ const packedSplatsOptions = {
+ url,
+ fileBytes,
+ fileType,
+ maxSplats,
+ construct: constructSplats
+ };
+ this.packedSplats.reinitialize(packedSplatsOptions);
+ this.updateGenerator();
+ }
+ if (this.packedSplats) {
+ await this.packedSplats.initialized;
+ this.numSplats = this.packedSplats.numSplats;
+ }
+ }
+ static async staticInitialize() {
+ await __wbg_init();
+ _SplatMesh.isStaticInitialized = true;
+ }
+ // Creates a new Gsplat with the provided parameters (all values in "float" space,
+ // i.e. 0-1 for opacity and color) and adds it to the end of the packedSplats,
+ // increasing numSplats by 1. If necessary, reallocates the buffer with an exponential
+ // doubling strategy to fit the new data, so it's fairly efficient to just
+ // pushSplat(...) each Gsplat you want to create in a loop.
+ pushSplat(center, scales, quaternion, opacity, color) {
+ this.packedSplats.pushSplat(center, scales, quaternion, opacity, color);
+ }
+ // This method iterates over all Gsplats in this instance's packedSplats,
+ // invoking the provided callback with index: number in 0..=(this.numSplats-1) and
+ // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,
+ // opacity: number (0..1), and color: THREE.Color (rgb values in 0..1).
+ // Note that the objects passed in as center etc. are the same for every callback
+ // invocation: these objects are reused for efficiency. Changing these values has
+ // no effect as they are decoded/unpacked copies of the underlying data. To update
+ // the packedSplats, call .packedSplats.setSplat(index, center, scales,
+ // quaternion, opacity, color).
+ forEachSplat(callback) {
+ this.packedSplats.forEachSplat(callback);
+ }
+ // Call this when you are finished with the SplatMesh and want to free
+ // any buffers it holds (via packedSplats).
+ dispose() {
+ this.packedSplats.dispose();
+ }
+ constructGenerator({ transform, viewToObject, recolor }) {
+ const generator = dynoBlock(
+ { index: "int" },
+ { gsplat: Gsplat },
+ ({ index }) => {
+ if (!index) {
+ throw new Error("index is undefined");
+ }
+ let gsplat = readPackedSplat(this.packedSplats.dyno, index);
+ if (this.maxSh >= 1) {
+ const { sh1Texture, sh2Texture, sh3Texture } = this.ensureShTextures();
+ if (sh1Texture) {
+ const viewCenterInObject = viewToObject.translate;
+ const { center } = splitGsplat(gsplat).outputs;
+ const viewDir = normalize(sub(center, viewCenterInObject));
+ let rgb = evaluateSH1(gsplat, sh1Texture, viewDir);
+ if (this.maxSh >= 2 && sh2Texture) {
+ rgb = add(rgb, evaluateSH2(gsplat, sh2Texture, viewDir));
+ }
+ if (this.maxSh >= 3 && sh3Texture) {
+ rgb = add(rgb, evaluateSH3(gsplat, sh3Texture, viewDir));
+ }
+ let { rgba } = splitGsplat(gsplat).outputs;
+ rgba = add(rgba, extendVec(rgb, dynoConst("float", 0)));
+ gsplat = combineGsplat({ gsplat, rgba });
+ }
+ }
+ if (this.splatRgba) {
+ const rgba = readRgbaArray(this.splatRgba.dyno, index);
+ gsplat = combineGsplat({ gsplat, rgba });
+ }
+ if (this.skinning) {
+ gsplat = this.skinning.modify(gsplat);
+ }
+ if (this.objectModifier) {
+ gsplat = this.objectModifier.apply({ gsplat }).gsplat;
+ }
+ gsplat = transform.modify(gsplat);
+ const recolorRgba = mul(recolor, splitGsplat(gsplat).outputs.rgba);
+ gsplat = combineGsplat({ gsplat, rgba: recolorRgba });
+ if (this.rgbaDisplaceEdits) {
+ gsplat = this.rgbaDisplaceEdits.modify(gsplat);
+ }
+ if (this.worldModifier) {
+ gsplat = this.worldModifier.apply({ gsplat }).gsplat;
+ }
+ return { gsplat };
+ }
+ );
+ this.generator = generator;
+ }
+ // Call this whenever something changes in the Gsplat processing pipeline,
+ // for example changing maxSh or updating objectModifier or worldModifier.
+ // Compiled generators are cached for efficiency and re-use when the same
+ // pipeline structure emerges after successive changes.
+ updateGenerator() {
+ this.constructGenerator(this.context);
+ }
+ // This is called automatically by ForgeRenderer and you should not have to
+ // call it. It updates parameters for the generated pipeline and calls
+ // updateGenerator() if the pipeline needs to change.
+ update({
+ time,
+ viewToWorld,
+ deltaTime,
+ globalEdits
+ }) {
+ var _a2;
+ this.numSplats = this.packedSplats.numSplats;
+ this.context.time.value = time;
+ this.context.deltaTime.value = deltaTime;
+ _SplatMesh.dynoTime.value = time;
+ const { transform, viewToObject, recolor } = this.context;
+ let updated = transform.update(this);
+ if (this.context.viewToWorld.updateFromMatrix(viewToWorld) && this.enableViewToWorld) {
+ updated = true;
+ }
+ const worldToView = viewToWorld.clone().invert();
+ if (this.context.worldToView.updateFromMatrix(worldToView) && this.enableWorldToView) {
+ updated = true;
+ }
+ const objectToWorld = new THREE__namespace.Matrix4().compose(
+ transform.translate.value,
+ transform.rotate.value,
+ new THREE__namespace.Vector3().setScalar(transform.scale.value)
+ );
+ const worldToObject = objectToWorld.invert();
+ const viewToObjectMatrix = worldToObject.multiply(viewToWorld);
+ if (viewToObject.updateFromMatrix(viewToObjectMatrix) && (this.enableViewToObject || this.packedSplats.extra.sh1)) {
+ updated = true;
+ }
+ const newRecolor = new THREE__namespace.Vector4(
+ this.recolor.r,
+ this.recolor.g,
+ this.recolor.b,
+ this.opacity
+ );
+ if (!newRecolor.equals(recolor.value)) {
+ recolor.value.copy(newRecolor);
+ updated = true;
+ }
+ const edits = this.editable ? (this.edits ?? []).concat(globalEdits) : [];
+ if (this.editable && !this.edits) {
+ this.traverseVisible((node) => {
+ if (node instanceof SplatEdit) {
+ edits.push(node);
+ }
+ });
+ }
+ edits.sort((a, b) => a.ordering - b.ordering);
+ const editsSdfs = edits.map((edit) => {
+ if (edit.sdfs != null) {
+ return { edit, sdfs: edit.sdfs };
+ }
+ const sdfs = [];
+ edit.traverseVisible((node) => {
+ if (node instanceof SplatEditSdf) {
+ sdfs.push(node);
+ }
+ });
+ return { edit, sdfs };
+ });
+ if (editsSdfs.length > 0 && !this.rgbaDisplaceEdits) {
+ const edits2 = editsSdfs.length;
+ const sdfs = editsSdfs.reduce(
+ (total, edit) => total + edit.sdfs.length,
+ 0
+ );
+ this.rgbaDisplaceEdits = new SplatEdits({
+ maxEdits: edits2,
+ maxSdfs: sdfs
+ });
+ this.updateGenerator();
+ }
+ if (this.rgbaDisplaceEdits) {
+ const editResult = this.rgbaDisplaceEdits.update(editsSdfs);
+ updated || (updated = editResult.updated);
+ if (editResult.dynoUpdated) {
+ this.updateGenerator();
+ }
+ }
+ if (updated) {
+ this.updateVersion();
+ }
+ (_a2 = this.onFrame) == null ? void 0 : _a2.call(this, { mesh: this, time, deltaTime });
+ }
+ // This method conforms to the standard THREE.Raycaster API, performing object-ray
+ // intersections using this method to populate the provided intersects[] array
+ // with each intersection point.
+ raycast(raycaster, intersects) {
+ if (!this.packedSplats.packedArray || !this.packedSplats.numSplats) {
+ return;
+ }
+ const { near, far, ray } = raycaster;
+ const worldToMesh = this.matrixWorld.clone().invert();
+ const worldToMeshRot = new THREE__namespace.Matrix3().setFromMatrix4(worldToMesh);
+ const origin = ray.origin.clone().applyMatrix4(worldToMesh);
+ const direction = ray.direction.clone().applyMatrix3(worldToMeshRot);
+ const scales = new THREE__namespace.Vector3();
+ worldToMesh.decompose(new THREE__namespace.Vector3(), new THREE__namespace.Quaternion(), scales);
+ (scales.x * scales.y * scales.z) ** (1 / 3);
+ const RAYCAST_ELLIPSOID = true;
+ const distances = raycast_splats(
+ origin.x,
+ origin.y,
+ origin.z,
+ direction.x,
+ direction.y,
+ direction.z,
+ near,
+ far,
+ this.packedSplats.numSplats,
+ this.packedSplats.packedArray,
+ RAYCAST_ELLIPSOID
+ );
+ for (const distance2 of distances) {
+ const point = ray.direction.clone().multiplyScalar(distance2).add(ray.origin);
+ intersects.push({
+ distance: distance2,
+ point,
+ object: this
+ });
+ }
+ }
+ ensureShTextures() {
+ if (!this.packedSplats.extra.sh1) {
+ return {};
+ }
+ const sh1Texture = this.packedSplats.extra.sh1Texture;
+ if (!sh1Texture) {
+ let sh1 = this.packedSplats.extra.sh1;
+ const { width, height, depth, maxSplats } = getTextureSize(
+ sh1.length / 2
+ );
+ if (sh1.length < maxSplats * 2) {
+ const newSh1 = new Uint32Array(maxSplats * 2);
+ newSh1.set(sh1);
+ this.packedSplats.extra.sh1 = newSh1;
+ sh1 = newSh1;
+ }
+ const texture2 = new THREE__namespace.DataArrayTexture(sh1, width, height, depth);
+ texture2.format = THREE__namespace.RGIntegerFormat;
+ texture2.type = THREE__namespace.UnsignedIntType;
+ texture2.internalFormat = "RG32UI";
+ texture2.needsUpdate = true;
+ const sh1Texture2 = new DynoUsampler2DArray({
+ value: texture2,
+ key: "sh1"
+ });
+ this.packedSplats.extra.sh1Texture = sh1Texture2;
+ }
+ if (!this.packedSplats.extra.sh2) {
+ return { sh1Texture };
+ }
+ const sh2Texture = this.packedSplats.extra.sh2Texture;
+ if (!sh2Texture) {
+ let sh2 = this.packedSplats.extra.sh2;
+ const { width, height, depth, maxSplats } = getTextureSize(
+ sh2.length / 4
+ );
+ if (sh2.length < maxSplats * 4) {
+ const newSh2 = new Uint32Array(maxSplats * 4);
+ newSh2.set(sh2);
+ this.packedSplats.extra.sh2 = newSh2;
+ sh2 = newSh2;
+ }
+ const texture2 = new THREE__namespace.DataArrayTexture(sh2, width, height, depth);
+ texture2.format = THREE__namespace.RGBAIntegerFormat;
+ texture2.type = THREE__namespace.UnsignedIntType;
+ texture2.internalFormat = "RGBA32UI";
+ texture2.needsUpdate = true;
+ const sh2Texture2 = new DynoUsampler2DArray({
+ value: texture2,
+ key: "sh2"
+ });
+ this.packedSplats.extra.sh2Texture = sh2Texture2;
+ }
+ if (!this.packedSplats.extra.sh3) {
+ return { sh1Texture, sh2Texture };
+ }
+ const sh3Texture = this.packedSplats.extra.sh3Texture;
+ if (!sh3Texture) {
+ let sh3 = this.packedSplats.extra.sh3;
+ const { width, height, depth, maxSplats } = getTextureSize(
+ sh3.length / 4
+ );
+ if (sh3.length < maxSplats * 4) {
+ const newSh3 = new Uint32Array(maxSplats * 4);
+ newSh3.set(sh3);
+ this.packedSplats.extra.sh3 = newSh3;
+ sh3 = newSh3;
+ }
+ const texture2 = new THREE__namespace.DataArrayTexture(sh3, width, height, depth);
+ texture2.format = THREE__namespace.RGBAIntegerFormat;
+ texture2.type = THREE__namespace.UnsignedIntType;
+ texture2.internalFormat = "RGBA32UI";
+ texture2.needsUpdate = true;
+ const sh3Texture2 = new DynoUsampler2DArray({
+ value: texture2,
+ key: "sh3"
+ });
+ this.packedSplats.extra.sh3Texture = sh3Texture2;
+ }
+ return { sh1Texture, sh2Texture, sh3Texture };
+ }
+};
+_SplatMesh.staticInitialized = _SplatMesh.staticInitialize();
+_SplatMesh.isStaticInitialized = false;
+_SplatMesh.dynoTime = new DynoFloat({ value: 0 });
+let SplatMesh = _SplatMesh;
+const defineEvaluateSH1 = unindent(`
+ vec3 evaluateSH1(Gsplat gsplat, usampler2DArray sh1, vec3 viewDir) {
+ // Extract sint7 values packed into 2 x uint32
+ uvec2 packed = texelFetch(sh1, splatTexCoord(gsplat.index), 0).rg;
+ vec3 sh1_0 = vec3(ivec3(
+ int(packed.x << 25u) >> 25,
+ int(packed.x << 18u) >> 25,
+ int(packed.x << 11u) >> 25
+ )) / 63.0;
+ vec3 sh1_1 = vec3(ivec3(
+ int(packed.x << 4u) >> 25,
+ int((packed.x >> 3u) | (packed.y << 29u)) >> 25,
+ int(packed.y << 22u) >> 25
+ )) / 63.0;
+ vec3 sh1_2 = vec3(ivec3(
+ int(packed.y << 15u) >> 25,
+ int(packed.y << 8u) >> 25,
+ int(packed.y << 1u) >> 25
+ )) / 63.0;
+
+ return sh1_0 * (-0.4886025 * viewDir.y)
+ + sh1_1 * (0.4886025 * viewDir.z)
+ + sh1_2 * (-0.4886025 * viewDir.x);
+ }
+`);
+const defineEvaluateSH2 = unindent(`
+ vec3 evaluateSH2(Gsplat gsplat, usampler2DArray sh2, vec3 viewDir) {
+ // Extract sint8 values packed into 4 x uint32
+ uvec4 packed = texelFetch(sh2, splatTexCoord(gsplat.index), 0);
+ vec3 sh2_0 = vec3(ivec3(
+ int(packed.x << 24u) >> 24,
+ int(packed.x << 16u) >> 24,
+ int(packed.x << 8u) >> 24
+ )) / 127.0;
+ vec3 sh2_1 = vec3(ivec3(
+ int(packed.x) >> 24,
+ int(packed.y << 24u) >> 24,
+ int(packed.y << 16u) >> 24
+ )) / 127.0;
+ vec3 sh2_2 = vec3(ivec3(
+ int(packed.y << 8u) >> 24,
+ int(packed.y) >> 24,
+ int(packed.z << 24u) >> 24
+ )) / 127.0;
+ vec3 sh2_3 = vec3(ivec3(
+ int(packed.z << 16u) >> 24,
+ int(packed.z << 8u) >> 24,
+ int(packed.z) >> 24
+ )) / 127.0;
+ vec3 sh2_4 = vec3(ivec3(
+ int(packed.w << 24u) >> 24,
+ int(packed.w << 16u) >> 24,
+ int(packed.w << 8u) >> 24
+ )) / 127.0;
+
+ return sh2_0 * (1.0925484 * viewDir.x * viewDir.y)
+ + sh2_1 * (1.0925484 * viewDir.y * viewDir.z)
+ + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))
+ + sh2_3 * (1.0925484 * viewDir.x * viewDir.z)
+ + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));
+ }
+`);
+const defineEvaluateSH3 = unindent(`
+ vec3 evaluateSH3(Gsplat gsplat, usampler2DArray sh3, vec3 viewDir) {
+ // Extract sint6 values packed into 4 x uint32
+ uvec4 packed = texelFetch(sh3, splatTexCoord(gsplat.index), 0);
+ vec3 sh3_0 = vec3(ivec3(
+ int(packed.x << 26u) >> 26,
+ int(packed.x << 20u) >> 26,
+ int(packed.x << 14u) >> 26
+ )) / 31.0;
+ vec3 sh3_1 = vec3(ivec3(
+ int(packed.x << 8u) >> 26,
+ int(packed.x << 2u) >> 26,
+ int((packed.x >> 4u) | (packed.y << 28u)) >> 26
+ )) / 31.0;
+ vec3 sh3_2 = vec3(ivec3(
+ int(packed.y << 22u) >> 26,
+ int(packed.y << 16u) >> 26,
+ int(packed.y << 10u) >> 26
+ )) / 31.0;
+ vec3 sh3_3 = vec3(ivec3(
+ int(packed.y << 4u) >> 26,
+ int((packed.y >> 2u) | (packed.z << 30u)) >> 26,
+ int(packed.z << 24u) >> 26
+ )) / 31.0;
+ vec3 sh3_4 = vec3(ivec3(
+ int(packed.z << 18u) >> 26,
+ int(packed.z << 12u) >> 26,
+ int(packed.z << 6u) >> 26
+ )) / 31.0;
+ vec3 sh3_5 = vec3(ivec3(
+ int(packed.z) >> 26,
+ int(packed.w << 26u) >> 26,
+ int(packed.w << 20u) >> 26
+ )) / 31.0;
+ vec3 sh3_6 = vec3(ivec3(
+ int(packed.w << 14u) >> 26,
+ int(packed.w << 8u) >> 26,
+ int(packed.w << 2u) >> 26
+ )) / 31.0;
+
+ float xx = viewDir.x * viewDir.x;
+ float yy = viewDir.y * viewDir.y;
+ float zz = viewDir.z * viewDir.z;
+ float xy = viewDir.x * viewDir.y;
+ float yz = viewDir.y * viewDir.z;
+ float zx = viewDir.z * viewDir.x;
+
+ return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))
+ + sh3_1 * (2.8906114 * xy * viewDir.z) +
+ + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))
+ + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))
+ + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))
+ + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))
+ + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));
+ }
+`);
+function evaluateSH1(gsplat, sh1, viewDir) {
+ return dyno$1({
+ inTypes: { gsplat: Gsplat, sh1: "usampler2DArray", viewDir: "vec3" },
+ outTypes: { rgb: "vec3" },
+ inputs: { gsplat, sh1, viewDir },
+ globals: () => [defineGsplat, defineEvaluateSH1],
+ statements: ({ inputs, outputs }) => {
+ const statements = unindentLines(`
+ if (isGsplatActive(${inputs.gsplat}.flags)) {
+ ${outputs.rgb} = evaluateSH1(${inputs.gsplat}, ${inputs.sh1}, ${inputs.viewDir});
+ } else {
+ ${outputs.rgb} = vec3(0.0);
+ }
+ `);
+ return statements;
+ }
+ }).outputs.rgb;
+}
+function evaluateSH2(gsplat, sh2, viewDir) {
+ return dyno$1({
+ inTypes: { gsplat: Gsplat, sh2: "usampler2DArray", viewDir: "vec3" },
+ outTypes: { rgb: "vec3" },
+ inputs: { gsplat, sh2, viewDir },
+ globals: () => [defineGsplat, defineEvaluateSH2],
+ statements: ({ inputs, outputs }) => unindentLines(`
+ if (isGsplatActive(${inputs.gsplat}.flags)) {
+ ${outputs.rgb} = evaluateSH2(${inputs.gsplat}, ${inputs.sh2}, ${inputs.viewDir});
+ } else {
+ ${outputs.rgb} = vec3(0.0);
+ }
+ `)
+ }).outputs.rgb;
+}
+function evaluateSH3(gsplat, sh3, viewDir) {
+ return dyno$1({
+ inTypes: { gsplat: Gsplat, sh3: "usampler2DArray", viewDir: "vec3" },
+ outTypes: { rgb: "vec3" },
+ inputs: { gsplat, sh3, viewDir },
+ globals: () => [defineGsplat, defineEvaluateSH3],
+ statements: ({ inputs, outputs }) => unindentLines(`
+ if (isGsplatActive(${inputs.gsplat}.flags)) {
+ ${outputs.rgb} = evaluateSH3(${inputs.gsplat}, ${inputs.sh3}, ${inputs.viewDir});
+ } else {
+ ${outputs.rgb} = vec3(0.0);
+ }
+ `)
+ }).outputs.rgb;
+}
+const _PlyReader = class _PlyReader {
+ // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet
+ constructor({ fileBytes }) {
+ this.header = "";
+ this.littleEndian = true;
+ this.elements = {};
+ this.comments = [];
+ this.data = null;
+ this.numSplats = 0;
+ this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;
+ }
+ // Identify and parse the PLY text header (assumed to be <64KB in size).
+ // this.elements will contain all the elements in the file, typically
+ // "vertex" contains the Gsplat data.
+ async parseHeader() {
+ const bufferStream = new ReadableStream({
+ start: (controller) => {
+ controller.enqueue(this.fileBytes.slice(0, 65536));
+ controller.close();
+ }
+ });
+ const decoder = bufferStream.pipeThrough(new TextDecoderStream()).getReader();
+ this.header = "";
+ const headerTerminator = "end_header\n";
+ while (true) {
+ const { value, done } = await decoder.read();
+ if (done) {
+ throw new Error("Failed to read header");
+ }
+ this.header += value;
+ const endHeader = this.header.indexOf(headerTerminator);
+ if (endHeader >= 0) {
+ this.header = this.header.slice(0, endHeader + headerTerminator.length);
+ break;
+ }
+ }
+ const headerLen = new TextEncoder().encode(this.header).length;
+ this.data = new DataView(this.fileBytes.buffer, headerLen);
+ this.elements = {};
+ let curElement = null;
+ this.comments = [];
+ this.header.trim().split("\n").forEach((line, lineIndex) => {
+ const trimmedLine = line.trim();
+ if (lineIndex === 0) {
+ if (trimmedLine !== "ply") {
+ throw new Error("Invalid PLY header");
+ }
+ return;
+ }
+ if (trimmedLine.length === 0) {
+ return;
+ }
+ const fields = trimmedLine.split(" ");
+ switch (fields[0]) {
+ case "format":
+ if (fields[1] === "binary_little_endian") {
+ this.littleEndian = true;
+ } else if (fields[1] === "binary_big_endian") {
+ this.littleEndian = false;
+ } else {
+ throw new Error(`Unsupported PLY format: ${fields[1]}`);
+ }
+ if (fields[2] !== "1.0") {
+ throw new Error(`Unsupported PLY version: ${fields[2]}`);
+ }
+ break;
+ case "end_header":
+ break;
+ case "comment":
+ this.comments.push(trimmedLine.slice("comment ".length));
+ break;
+ case "element": {
+ const name = fields[1];
+ curElement = {
+ name,
+ count: Number.parseInt(fields[2]),
+ properties: {}
+ };
+ this.elements[name] = curElement;
+ break;
+ }
+ case "property":
+ if (curElement == null) {
+ throw new Error("Property must be inside an element");
+ }
+ if (fields[1] === "list") {
+ curElement.properties[fields[4]] = {
+ isList: true,
+ type: fields[3],
+ countType: fields[2]
+ };
+ } else {
+ curElement.properties[fields[2]] = {
+ isList: false,
+ type: fields[1]
+ };
+ }
+ break;
+ }
+ });
+ if (this.elements.vertex) {
+ this.numSplats = this.elements.vertex.count;
+ }
+ }
+ parseData(elementCallback) {
+ let offset = 0;
+ const data = this.data;
+ if (data == null) {
+ throw new Error("No data to parse");
+ }
+ for (const elementName in this.elements) {
+ const element = this.elements[elementName];
+ const { count, properties } = element;
+ const item = {};
+ const parsers = [];
+ for (const [propertyName, property] of Object.entries(properties)) {
+ if (!property.isList) {
+ item[propertyName] = 0;
+ parsers.push(() => {
+ item[propertyName] = PARSE_FIELD[property.type](
+ data,
+ offset,
+ this.littleEndian
+ );
+ offset += FIELD_BYTES[property.type];
+ });
+ } else {
+ item[propertyName] = [];
+ parsers.push(() => {
+ const list = item[propertyName];
+ list.length = PARSE_FIELD[property.countType](
+ data,
+ offset,
+ this.littleEndian
+ );
+ offset += FIELD_BYTES[property.countType];
+ for (let i = 0; i < list.length; i++) {
+ list[i] = PARSE_FIELD[property.type](
+ data,
+ offset,
+ this.littleEndian
+ );
+ offset += FIELD_BYTES[property.type];
+ }
+ });
+ }
+ }
+ const callback = elementCallback(element) ?? (() => {
+ });
+ for (let index = 0; index < count; index++) {
+ for (const parser of parsers) {
+ parser();
+ }
+ callback(index, item);
+ }
+ }
+ }
+ // Parse all the Gsplat data in the PLY file in go, invoking the given
+ // callbacks for each Gsplat.
+ parseSplats(splatCallback, shCallback) {
+ if (this.elements.vertex == null) {
+ throw new Error("No vertex element found");
+ }
+ let isSuperSplat = false;
+ const ssChunks = [];
+ let numSh = 0;
+ let sh1Props = [];
+ let sh2Props = [];
+ let sh3Props = [];
+ let sh1 = void 0;
+ let sh2 = void 0;
+ let sh3 = void 0;
+ function prepareSh() {
+ const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];
+ sh1Props = new Array(3).fill(null).flatMap(
+ (_, k) => [0, 1, 2].map((_2, d) => `f_rest_${k + d * num_f_rest / 3}`)
+ );
+ sh2Props = new Array(5).fill(null).flatMap(
+ (_, k) => [0, 1, 2].map((_2, d) => `f_rest_${3 + k + d * num_f_rest / 3}`)
+ );
+ sh3Props = new Array(7).fill(null).flatMap(
+ (_, k) => [0, 1, 2].map((_2, d) => `f_rest_${8 + k + d * num_f_rest / 3}`)
+ );
+ sh1 = numSh >= 1 ? new Float32Array(3 * 3) : void 0;
+ sh2 = numSh >= 2 ? new Float32Array(5 * 3) : void 0;
+ sh3 = numSh >= 3 ? new Float32Array(7 * 3) : void 0;
+ }
+ function ssShCallback(index, item) {
+ if (!sh1) {
+ throw new Error("Missing sh1");
+ }
+ for (const [i, key] of sh1Props.entries()) {
+ sh1[i] = item[key] * 8 / 255 - 4;
+ }
+ if (sh2) {
+ for (const [i, key] of sh2Props.entries()) {
+ sh2[i] = item[key] * 8 / 255 - 4;
+ }
+ }
+ if (sh3) {
+ for (const [i, key] of sh3Props.entries()) {
+ sh3[i] = item[key] * 8 / 255 - 4;
+ }
+ }
+ shCallback == null ? void 0 : shCallback(index, sh1, sh2, sh3);
+ }
+ function initSuperSplat(element) {
+ const {
+ min_x,
+ min_y,
+ min_z,
+ max_x,
+ max_y,
+ max_z,
+ min_scale_x,
+ min_scale_y,
+ min_scale_z,
+ max_scale_x,
+ max_scale_y,
+ max_scale_z,
+ min_r,
+ min_g,
+ min_b,
+ max_r,
+ max_g,
+ max_b
+ } = element.properties;
+ if (!min_x || !min_y || !min_z || !max_x || !max_y || !max_z || !min_scale_x || !min_scale_y || !min_scale_z || !max_scale_x || !max_scale_y || !max_scale_z || !min_r || !min_g || !min_b || !max_r || !max_g || !max_b) {
+ throw new Error("Missing PLY chunk properties");
+ }
+ isSuperSplat = true;
+ return (index, item) => {
+ const {
+ min_x: min_x2,
+ min_y: min_y2,
+ min_z: min_z2,
+ max_x: max_x2,
+ max_y: max_y2,
+ max_z: max_z2,
+ min_scale_x: min_scale_x2,
+ min_scale_y: min_scale_y2,
+ min_scale_z: min_scale_z2,
+ max_scale_x: max_scale_x2,
+ max_scale_y: max_scale_y2,
+ max_scale_z: max_scale_z2,
+ min_r: min_r2,
+ min_g: min_g2,
+ min_b: min_b2,
+ max_r: max_r2,
+ max_g: max_g2,
+ max_b: max_b2
+ } = item;
+ ssChunks.push({
+ min_x: min_x2,
+ min_y: min_y2,
+ min_z: min_z2,
+ max_x: max_x2,
+ max_y: max_y2,
+ max_z: max_z2,
+ min_scale_x: min_scale_x2,
+ min_scale_y: min_scale_y2,
+ min_scale_z: min_scale_z2,
+ max_scale_x: max_scale_x2,
+ max_scale_y: max_scale_y2,
+ max_scale_z: max_scale_z2,
+ min_r: min_r2,
+ min_g: min_g2,
+ min_b: min_b2,
+ max_r: max_r2,
+ max_g: max_g2,
+ max_b: max_b2
+ });
+ };
+ }
+ function decodeSuperSplat(element) {
+ if (shCallback && element.name === "sh") {
+ numSh = getNumSh(element.properties);
+ prepareSh();
+ return ssShCallback;
+ }
+ if (element.name !== "vertex") {
+ return null;
+ }
+ const { packed_position, packed_rotation, packed_scale, packed_color } = element.properties;
+ if (!packed_position || !packed_rotation || !packed_scale || !packed_color) {
+ throw new Error(
+ "Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color"
+ );
+ }
+ const SQRT2 = Math.sqrt(2);
+ return (index, item) => {
+ const chunk = ssChunks[index >>> 8];
+ if (chunk == null) {
+ throw new Error("Missing PLY chunk");
+ }
+ const {
+ min_x,
+ min_y,
+ min_z,
+ max_x,
+ max_y,
+ max_z,
+ min_scale_x,
+ min_scale_y,
+ min_scale_z,
+ max_scale_x,
+ max_scale_y,
+ max_scale_z,
+ min_r,
+ min_g,
+ min_b,
+ max_r,
+ max_g,
+ max_b
+ } = chunk;
+ const { packed_position: packed_position2, packed_rotation: packed_rotation2, packed_scale: packed_scale2, packed_color: packed_color2 } = item;
+ const x = (packed_position2 >>> 21 & 2047) / 2047 * (max_x - min_x) + min_x;
+ const y = (packed_position2 >>> 11 & 1023) / 1023 * (max_y - min_y) + min_y;
+ const z = (packed_position2 & 2047) / 2047 * (max_z - min_z) + min_z;
+ const r0 = ((packed_rotation2 >>> 20 & 1023) / 1023 - 0.5) * SQRT2;
+ const r1 = ((packed_rotation2 >>> 10 & 1023) / 1023 - 0.5) * SQRT2;
+ const r2 = ((packed_rotation2 & 1023) / 1023 - 0.5) * SQRT2;
+ const rr = Math.sqrt(Math.max(0, 1 - r0 * r0 - r1 * r1 - r2 * r2));
+ const rOrder = packed_rotation2 >>> 30;
+ const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;
+ const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;
+ const quatZ = rOrder <= 2 ? r2 : rr;
+ const quatW = rOrder === 0 ? rr : r0;
+ const scaleX = Math.exp(
+ (packed_scale2 >>> 21 & 2047) / 2047 * (max_scale_x - min_scale_x) + min_scale_x
+ );
+ const scaleY = Math.exp(
+ (packed_scale2 >>> 11 & 1023) / 1023 * (max_scale_y - min_scale_y) + min_scale_y
+ );
+ const scaleZ = Math.exp(
+ (packed_scale2 & 2047) / 2047 * (max_scale_z - min_scale_z) + min_scale_z
+ );
+ const r = (packed_color2 >>> 24 & 255) / 255 * (max_r - min_r) + min_r;
+ const g = (packed_color2 >>> 16 & 255) / 255 * (max_g - min_g) + min_g;
+ const b = (packed_color2 >>> 8 & 255) / 255 * (max_b - min_b) + min_b;
+ const opacity = (packed_color2 & 255) / 255;
+ splatCallback(
+ index,
+ x,
+ y,
+ z,
+ scaleX,
+ scaleY,
+ scaleZ,
+ quatX,
+ quatY,
+ quatZ,
+ quatW,
+ opacity,
+ r,
+ g,
+ b
+ );
+ };
+ }
+ const elementCallback = (element) => {
+ if (element.name === "chunk") {
+ if (this.comments.some(
+ (comment2) => comment2.toLowerCase().includes("supersplat")
+ )) {
+ return initSuperSplat(element);
+ }
+ }
+ if (isSuperSplat) {
+ return decodeSuperSplat(element);
+ }
+ if (element.name !== "vertex") {
+ return null;
+ }
+ const {
+ x,
+ y,
+ z,
+ scale_0,
+ scale_1,
+ scale_2,
+ rot_0,
+ rot_1,
+ rot_2,
+ rot_3,
+ opacity,
+ f_dc_0,
+ f_dc_1,
+ f_dc_2,
+ red,
+ green,
+ blue,
+ alpha
+ } = element.properties;
+ if (!x || !y || !z) {
+ throw new Error("Missing PLY properties: x, y, z");
+ }
+ const hasScales = scale_0 && scale_1 && scale_2;
+ const hasRots = rot_0 && rot_1 && rot_2 && rot_3;
+ const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;
+ const redDiv = red != null ? FIELD_SCALE[red.type] : 1;
+ const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;
+ const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;
+ numSh = getNumSh(element.properties);
+ prepareSh();
+ return (index, item) => {
+ const scaleX = hasScales ? Math.exp(item.scale_0) : _PlyReader.defaultPointScale;
+ const scaleY = hasScales ? Math.exp(item.scale_1) : _PlyReader.defaultPointScale;
+ const scaleZ = hasScales ? Math.exp(item.scale_2) : _PlyReader.defaultPointScale;
+ const quatX = hasRots ? item.rot_1 : 0;
+ const quatY = hasRots ? item.rot_2 : 0;
+ const quatZ = hasRots ? item.rot_3 : 0;
+ const quatW = hasRots ? item.rot_0 : 1;
+ const op = opacity != null ? 1 / (1 + Math.exp(-item.opacity)) : alpha != null ? item.alpha / alphaDiv : 1;
+ const r = f_dc_0 != null ? item.f_dc_0 * SH_C0$1 + 0.5 : red != null ? item.red / redDiv : 1;
+ const g = f_dc_1 != null ? item.f_dc_1 * SH_C0$1 + 0.5 : green != null ? item.green / greenDiv : 1;
+ const b = f_dc_2 != null ? item.f_dc_2 * SH_C0$1 + 0.5 : blue != null ? item.blue / blueDiv : 1;
+ splatCallback(
+ index,
+ item.x,
+ item.y,
+ item.z,
+ scaleX,
+ scaleY,
+ scaleZ,
+ quatX,
+ quatY,
+ quatZ,
+ quatW,
+ op,
+ r,
+ g,
+ b
+ );
+ if (shCallback && sh1) {
+ if (sh1) {
+ for (const [i, key] of sh1Props.entries()) {
+ sh1[i] = item[key];
+ }
+ }
+ if (sh2) {
+ for (const [i, key] of sh2Props.entries()) {
+ sh2[i] = item[key];
+ }
+ }
+ if (sh3) {
+ for (const [i, key] of sh3Props.entries()) {
+ sh3[i] = item[key];
+ }
+ }
+ shCallback(index, sh1, sh2, sh3);
+ }
+ };
+ };
+ this.parseData(elementCallback);
+ }
+ // Inject RGBA values into original PLY file, which can be used to modify
+ // the color/opacity of the Gsplats and write out the modified PLY file.
+ injectRgba(rgba) {
+ let offset = 0;
+ const data = this.data;
+ if (data == null) {
+ throw new Error("No parsed data");
+ }
+ if (rgba.length !== this.numSplats * 4) {
+ throw new Error("Invalid RGBA array length");
+ }
+ for (const elementName in this.elements) {
+ const element = this.elements[elementName];
+ const { count, properties } = element;
+ const parsers = [];
+ let rgbaOffset = 0;
+ const isVertex = elementName === "vertex";
+ if (isVertex) {
+ for (const name of ["opacity", "f_dc_0", "f_dc_1", "f_dc_2"]) {
+ if (!properties[name] || properties[name].type !== "float") {
+ throw new Error(`Can't injectRgba due to property: ${name}`);
+ }
+ }
+ }
+ for (const [propertyName, property] of Object.entries(properties)) {
+ if (!property.isList) {
+ if (isVertex) {
+ if (propertyName === "f_dc_0" || propertyName === "f_dc_1" || propertyName === "f_dc_2") {
+ const component = Number.parseInt(
+ propertyName.slice("f_dc_".length)
+ );
+ parsers.push(() => {
+ const value = (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0$1;
+ SET_FIELD[property.type](
+ data,
+ offset,
+ this.littleEndian,
+ value
+ );
+ });
+ } else if (propertyName === "opacity") {
+ parsers.push(() => {
+ const value = Math.max(
+ -100,
+ Math.min(
+ 100,
+ -Math.log(1 / (rgba[rgbaOffset + 3] / 255) - 1)
+ )
+ );
+ SET_FIELD[property.type](
+ data,
+ offset,
+ this.littleEndian,
+ value
+ );
+ });
+ }
+ }
+ parsers.push(() => {
+ offset += FIELD_BYTES[property.type];
+ });
+ } else {
+ parsers.push(() => {
+ const length2 = PARSE_FIELD[property.countType](
+ data,
+ offset,
+ this.littleEndian
+ );
+ offset += FIELD_BYTES[property.countType];
+ offset += length2 * FIELD_BYTES[property.type];
+ });
+ }
+ }
+ for (let index = 0; index < count; index++) {
+ for (const parser of parsers) {
+ parser();
+ }
+ if (isVertex) {
+ rgbaOffset += 4;
+ }
+ }
+ }
+ }
+};
+_PlyReader.defaultPointScale = 1e-3;
+let PlyReader = _PlyReader;
+const SH_C0$1 = 0.28209479177387814;
+const PARSE_FIELD = {
+ char: (data, offset, littleEndian) => {
+ return data.getInt8(offset);
+ },
+ uchar: (data, offset, littleEndian) => {
+ return data.getUint8(offset);
+ },
+ short: (data, offset, littleEndian) => {
+ return data.getInt16(offset, littleEndian);
+ },
+ ushort: (data, offset, littleEndian) => {
+ return data.getUint16(offset, littleEndian);
+ },
+ int: (data, offset, littleEndian) => {
+ return data.getInt32(offset, littleEndian);
+ },
+ uint: (data, offset, littleEndian) => {
+ return data.getUint32(offset, littleEndian);
+ },
+ float: (data, offset, littleEndian) => {
+ return data.getFloat32(offset, littleEndian);
+ },
+ double: (data, offset, littleEndian) => {
+ return data.getFloat64(offset, littleEndian);
+ }
+};
+const SET_FIELD = {
+ char: (data, offset, littleEndian, value) => {
+ data.setInt8(offset, value);
+ },
+ uchar: (data, offset, littleEndian, value) => {
+ data.setUint8(offset, value);
+ },
+ short: (data, offset, littleEndian, value) => {
+ data.setInt16(offset, value, littleEndian);
+ },
+ ushort: (data, offset, littleEndian, value) => {
+ data.setUint16(offset, value, littleEndian);
+ },
+ int: (data, offset, littleEndian, value) => {
+ data.setInt32(offset, value, littleEndian);
+ },
+ uint: (data, offset, littleEndian, value) => {
+ data.setUint32(offset, value, littleEndian);
+ },
+ float: (data, offset, littleEndian, value) => {
+ data.setFloat32(offset, value, littleEndian);
+ },
+ double: (data, offset, littleEndian, value) => {
+ data.setFloat64(offset, value, littleEndian);
+ }
+};
+const FIELD_BYTES = {
+ char: 1,
+ uchar: 1,
+ short: 2,
+ ushort: 2,
+ int: 4,
+ uint: 4,
+ float: 4,
+ double: 8
+};
+const FIELD_SCALE = {
+ char: 127,
+ uchar: 255,
+ short: 32767,
+ ushort: 65535,
+ int: 2147483647,
+ uint: 4294967295,
+ float: 1,
+ double: 1
+};
+const NUM_F_REST_TO_NUM_SH = {
+ 0: 0,
+ 9: 1,
+ 24: 2,
+ 45: 3
+};
+const NUM_SH_TO_NUM_F_REST = {
+ 0: 0,
+ 1: 9,
+ 2: 24,
+ 3: 45
+};
+function getNumSh(properties) {
+ let num_f_rest = 0;
+ while (properties[`f_rest_${num_f_rest}`]) {
+ num_f_rest += 1;
+ }
+ const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];
+ if (numSh == null) {
+ throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);
+ }
+ return numSh;
+}
+const jsContent = '(function() {\n "use strict";\n let wasm;\n function addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n }\n function handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n }\n function debugString(val) {\n const type = typeof val;\n if (type == "number" || type == "boolean" || val == null) {\n return `${val}`;\n }\n if (type == "string") {\n return `"${val}"`;\n }\n if (type == "symbol") {\n const description = val.description;\n if (description == null) {\n return "Symbol";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == "function") {\n const name = val.name;\n if (typeof name == "string" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return "Function";\n }\n }\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = "[";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i2 = 1; i2 < length; i2++) {\n debug += ", " + debugString(val[i2]);\n }\n debug += "]";\n return debug;\n }\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n return toString.call(val);\n }\n if (className == "Object") {\n try {\n return "Object(" + JSON.stringify(val) + ")";\n } catch (_) {\n return "Object";\n }\n }\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\n${val.stack}`;\n }\n return className;\n }\n let WASM_VECTOR_LEN = 0;\n let cachedUint8ArrayMemory0 = null;\n function getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n }\n const cachedTextEncoder = typeof TextEncoder !== "undefined" ? new TextEncoder("utf-8") : { encode: () => {\n throw Error("TextEncoder not available");\n } };\n const encodeString = typeof cachedTextEncoder.encodeInto === "function" ? function(arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n } : function(arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n function passStringToWasm0(arg, malloc, realloc) {\n if (realloc === void 0) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr2 = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr2;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8ArrayMemory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 127) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n }\n let cachedDataViewMemory0 = null;\n function getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n }\n const cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => {\n throw Error("TextDecoder not available");\n } };\n if (typeof TextDecoder !== "undefined") {\n cachedTextDecoder.decode();\n }\n function getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n }\n function decode_wlg(bytes, tex_width, tex_height) {\n const ret = wasm.decode_wlg(bytes, tex_width, tex_height);\n return ret;\n }\n function old_sort_splats(max_splats, total_splats, readback, ordering) {\n const ret = wasm.old_sort_splats(max_splats, total_splats, readback, ordering);\n return ret >>> 0;\n }\n function sort_splats(num_splats, readback, ordering) {\n const ret = wasm.sort_splats(num_splats, readback, ordering);\n return ret >>> 0;\n }\n async function __wbg_load(module, imports) {\n if (typeof Response === "function" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === "function") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n if (module.headers.get("Content-Type") != "application/wasm") {\n console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n }\n function __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_buffer_09165b52af8c5237 = function(arg0) {\n const ret = arg0.buffer;\n return ret;\n };\n imports.wbg.__wbg_buffer_609cc3eee51ed158 = function(arg0) {\n const ret = arg0.buffer;\n return ret;\n };\n imports.wbg.__wbg_get_b9b93047fe3cf45b = function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n };\n imports.wbg.__wbg_instanceof_Uint8Array_17156bcf118086a9 = function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_length_3b4f022188ae8db6 = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbg_length_6ca527665d89694d = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbg_length_8cfd2c6409af88ad = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbg_length_a446193dc22c12f8 = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbg_length_e2d2a49132c1b256 = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbg_new_405e22f390576ce2 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_new_9fee97a409b32b68 = function(arg0) {\n const ret = new Uint16Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_new_a12002a7f91c75be = function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_new_e3b321dcfef89fc7 = function(arg0) {\n const ret = new Uint32Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354 = function(arg0, arg1, arg2) {\n const ret = new Float32Array(arg0, arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212 = function(arg0, arg1, arg2) {\n const ret = new Uint32Array(arg0, arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_newwithlength_5a5efe313cfd59f1 = function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_newwithlength_bd3de93688d68fbc = function(arg0) {\n const ret = new Uint32Array(arg0 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_set_10bad9bee0e9c58b = function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n };\n imports.wbg.__wbg_set_65595bdd868b3009 = function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n };\n imports.wbg.__wbg_set_bb8cecf6a62b9f46 = function() {\n return handleError(function(arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_set_d23661d19148b229 = function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n };\n imports.wbg.__wbg_set_f4f1f0daa30696fc = function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n };\n imports.wbg.__wbg_subarray_3aaeec89bb2544f0 = function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_subarray_769e1e0f81bb259b = function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, void 0);\n table.set(offset + 0, void 0);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n };\n imports.wbg.__wbindgen_memory = function() {\n const ret = wasm.memory;\n return ret;\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n return imports;\n }\n function __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n }\n async function __wbg_init(module_or_path) {\n if (wasm !== void 0) return wasm;\n if (typeof module_or_path !== "undefined") {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({ module_or_path } = module_or_path);\n } else {\n console.warn("using deprecated parameters for the initialization function; pass a single object instead");\n }\n }\n if (typeof module_or_path === "undefined") {\n module_or_path = new URL("data:application/wasm;base64,AGFzbQEAAAABtgItYAJ/fwF/YAJ/fwBgA39/fwF/YAF/AGABfwF/YAN/f38AYAV/f39/fwBgBH9/f38AYAFvAX9gAW8Bb2ADb39/AW9gBX9/f39/AX9gA29vfwBgAABgA39+fgBgA39+fgF/YAd/f39/f39/AX9gBn9/f39/fwBgAX0BfWAEf39/fwF/YAABb2ABfwFvYAZ/f39/f38Bf2AAAX9gC39/f39/f39/f39/AX9gAn9/AW9gAXwBb2ACb38Bb2ADb29vAX9gAn9vAGAHf39/f39/fwBgAn9/AX5gAn9+AX9gAn9+AGALfX19fX19fX1/b38Bb2ABfwF9YAV/f35/fwBgBH9+f38AYAV/f31/fwBgBH99f38AYAV/f3x/fwBgBH98f38AYAR/f29vAX9gA39vbwF/YAJ9fQF9ArcIHgN3YmcVX193YmluZGdlbl9zdHJpbmdfbmV3ABkDd2JnFV9fd2JpbmRnZW5fbnVtYmVyX25ldwAaA3diZxpfX3diZ19nZXRfYjliOTMwNDdmZTNjZjQ1YgAbA3diZx1fX3diZ19sZW5ndGhfZTJkMmE0OTEzMmMxYjI1NgAIA3diZxpfX3diZ19uZXdfNDA1ZTIyZjM5MDU3NmNlMgAUA3diZx1fX3diZ19idWZmZXJfNjA5Y2MzZWVlNTFlZDE1OAAJA3diZxpfX3diZ19uZXdfYTEyMDAyYTdmOTFjNzViZQAJA3diZxpfX3diZ19zZXRfNjU1OTViZGQ4NjhiMzAwOQAMA3diZx1fX3diZ19sZW5ndGhfYTQ0NjE5M2RjMjJjMTJmOAAIA3diZxpfX3diZ19uZXdfOWZlZTk3YTQwOWIzMmI2OAAJA3diZxpfX3diZ19zZXRfZjRmMWYwZGFhMzA2OTZmYwAMA3diZx1fX3diZ19sZW5ndGhfOGNmZDJjNjQwOWFmODhhZAAIA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9mMWRlYWQ0NGQxZmM3MjEyAAoDd2JnGl9fd2JnX25ld19lM2IzMjFkY2ZlZjg5ZmM3AAkDd2JnGl9fd2JnX3NldF9kMjM2NjFkMTkxNDhiMjI5AAwDd2JnHV9fd2JnX2xlbmd0aF82Y2E1Mjc2NjVkODk2OTRkAAgDd2JnMV9fd2JnX25ld3dpdGhi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CwJAIAAoAhAiAkUNAEGousIAQQggAhDVBEUNAEEBDAILIAFBATsBJCABIAQ2AiAgAUEANgIcIAFBAToAGCABQd8ANgIUIAEgBDYCECABQQA2AgwgASAENgIIIAEgAzYCBCABQd8ANgIAIAFBKGogARBQAn8gASgCKEUEQAJAIAEtACUNACABQQE6ACUCQCABLQAkQQFGBEAgASgCICEFIAEoAhwhBAwBCyABKAIgIgUgASgCHCIERg0BCyABKAIEIARqIQMgBSAEawwCC0GwusIAEK4EAAsgASgCHCEEIAEgASgCMDYCHCADIARqIQMgASgCLCAEawshBAJAIAIEQCADIAQgAhDVBA0BCyABQcgAaiABQSBqKQIANwMAIAFBQGsgAUEYaikCADcDACABQThqIAFBEGopAgA3AwAgAUEwaiABQQhqKQIANwMAIAEgASkCADcDKAJAIAEtAE0NACACIQMDQCABKAIsIQUgAUHUAGogAUEoahBQAn8gASgCVEUEQCABLQBNDQMgAUEBOgBNAkAgAS0ATEEBRgRAIAEoAkghBSABKAJEIQQMAQsgASgCSCIFIAEoAkQiBEYNBAsgASgCLCAEaiEGIAUgBGsMAQsgASgCRCEEIAEgASgCXDYCRCAEIAVqIQYgASgCWCAEawshBAJAIANFBEBBACEDDAELQbm2wgBBASADENUEDQMgACgCECICRQRAQQAhAkEAIQMMAQsgAiEDIAYgBCACENUEDQMLIAEtAE1FDQALCyACRQ0BQcC6wgBBAiACENUERQ0BC0EBDAELAkAgACgCECICRQ0AQcK6wgBBAyACENUERQ0AQQEMAQsCQAJAAkAgACgCACIDRQRAQQAhAwwBC0EAIQIDQAJAIAAoAggiBCAAKAIETw0AIAMgBGotAABBxQBHDQAgACAEQQFqNgIIDAILAkAgAkUNACAAKAIQIgNFDQBB9bnCAEECIAMQ1QRFDQBBAQwFCyAAECcNAiACQQFrIQIgACgCACIDDQALQQAhAwsgACgCECIEBEBBAUH1s8IAQQEgBBDVBA0DGiAAKAIAIQMLIANFDQEgACgCCCICIAAoAgRPDQEgAiADai0AAEH1AEcNASAAIAJBAWo2AghBAAwCC0EBDAELAkAgACgCECICRQ0AQcW6wgBBBCACENUERQ0AQQEMAQsgABAnCyAB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AWogBiARGyADa2whAwwDCyABIApBjIHCABCtAgALQZyBwgBBKUHIgcIAEO0CAAtBoP/BAEEXQZyAwgAQ7QIACyAPIAZBAWo2AgAgAkEEaiAJOgAAIAIgAzYCACACQQhqIQIgBCAFQQFqIgVHDQALCyAAQYWAgIB4NgIADwsgBUEBaiEFIAMoAgAhCSADQQRqIQMgCUEATA0ACyAFQQFrIQxBACEDA0ACQCACIAZJBEAgA0EBaiEDIAsgAkEDdGogDDoABQNAIAIgDWogDnEiAiAETw0ACwwBCyACIAZB2IHCABCtAgALIAMgCUcNAAsMAAsAC9IHAQN/AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCgAHBwECAwQHBwUHCwJAAkACQAJAAkACQCAALQAEDgcADAEMAgMEDAsgAC0ACEEDRw0LIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQQgASADIAIoAggQpwQMBAsgAC0ACEEDRw0KIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQMgASADIAIoAggQpwQMAwsgAC0ACEEDRw0JIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQIgASADIAIoAggQpwQMAgsgAC0ACEEDRw0IIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQEgASADIAIoAggQpwQMAQsgAC0ACEEDRw0HIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQAgASADIAIoAggQpwQLIABBDEEEEKcEDwsCQAJAIAAtAAQOAgcBAAsgACgCCCIBQfv///8HaiICQQ1NIAJBAkdxDQYgAUGEgICAeEoNBSABQYOAgIB4Rw0GDAULIAAoAggiAUGEgICAeEogAUGDgICAeEZyDQQMBQsgAC0ABEEDRw0EDAULAkACQEEDIAAoAgQiAUEHayICIAJBA08bQQJrDgIBAAULAkACQAJAIAEOBgAHAQcHAgcLIAAtAAhBA0cNBgwICyAAKAIIIgFB7f///wdqIgJBCk0gAkEDR3ENBSABRSABQfv///8H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wQA2AgggAkIBNwIUIAIgAkEEaq1CgICAgJA4hDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwICyACIAA2AgQgAkEBNgIMIAJB8KfBADYCCCACQgE3AhQgAiACQQRqrUKAgICAoDeENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAcLIAIgAEEEajYCBCACQQE2AgwgAkHwp8EANgIIIAJCATcCFCACIAJBBGqtQoCAgICgOIQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEUMBgsgASgCHEHFusEAQTkgASgCICgCDBECAAwFCyACIABBBGo2AgQgAkECNgIMIAJBqLvBADYCCCACQgE3AhQgAiACQQRqrUKAgICA8DWENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAQLIAIgAEEEajYCACACIABBCGo2AgQgAkEDNgIMIAJB6LvBADYCCCACQgI3AhQgAkKAgICA8DUiBCACrYQ3AyggAiAEIAJBBGqthDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwDCyACIABBBGo2AgQgAkECNgIMIAJB8LzBADYCCCACQgE3AhQgAiACQQRqrUKAgICAsDiENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAILIAIgAEEEajYCACACIABBCGo2AgQgAkECNgIMIAJBsL3BADYCCCACQgI3AhQgAkKAgICAwDgiBCACQQRqrYQ3AyggAiAEIAKthDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwBCyACIABBBGo2AgAgAiAAQQhqNgIEIAJBAjYCDCACQfS9wQA2AgggAkICNwIUIAJCgICAgPA1IgQgAkEEaq2ENwMoIAIgBCACrYQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEULIAJBMGokAAuXBgEIfyMAQTBrIgEkAAJAAn8CQAJAAkAgACgCACIFBEAgACgCCCIEIAQgACgCBCIHIAQgB0sbayEIIAUhAwNAIAIgCGpFDQMgACACIARqQQFqNgIIIAJBAWohAiADIARqIANBAWohAy0AACIGQTBrQf8BcUEKSSAGQeEAa0H/AXFBBklyDQALIAZB3wBHDQIgAiAEakEBayEGAkAgBARA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IABBABAgDAELIAAQJwsgBEEQaiQAC5QDAQR/AkAgAkEQSQRAIAAhAwwBCwJAIABBACAAa0EDcSIFaiIEIABNDQAgACEDIAUEQCAFIQYDQCADIAE6AAAgA0EBaiEDIAZBAWsiBg0ACwsgBUEBa0EHSQ0AA0AgAyABOgAAIANBB2ogAToAACADQQZqIAE6AAAgA0EFaiABOgAAIANBBGogAToAACADQQNqIAE6AAAgA0ECaiABOgAAIANBAWogAToAACADQQhqIgMgBEcNAAsLIAQgAiAFayICQXxxaiIDIARLBEAgAUH/AXFBgYKECGwhBQNAIAQgBTYCACAEQQRqIgQgA0kNAAsLIAJBA3EhAgsCQCADIAIgA2oiBU8NACACQQdxIgQEQANAIAMgAToAACADQQFqIQMgBEEBayIEDQALCyACQQFrQQdJDQADQCADIAE6AAAgA0EHaiABOgAAIANBBmogAToAACADQQVqIAE6AAAgA0EEaiABOgAAIANBA2ogAToAACADQQJqIAE6AAAgA0EBaiABOgAAIANBCGoiAyAFRw0ACwsgAAudAwIGfwF+QTggAUH/AXEiASABQThPGyECAkAgACgCECIEIAAtABQiAWoiA0EASgRAIAIgA0sNAQJAIARBAEwgASACT3INAANAIARBAWsiBUEDdiEGQcAAIAFBB2oiB0F4cWshAwJAIAVBP00EQCAAIAYgAxCIASAAKAIQIQQgAC0AFCEBDAELAkAgACgCBCIFIAYgB0H4AXFBA3ZqQQdrIgZPBEAgBSAGayIFQQdLDQFBCCAFQcTewQAQqwQACyAGIAVB1N7BABCqBAALIAAgASADaiIBOgAUIAAgBCADQf8BcWsiBDYCECAAIAAoAgAgBmopAAA3AwgLIAFB/wFxIAJPDQEgBEEASg0ACwsgACABIAJrIgE6ABRCfyACrYZCf4UgACkDCCABQT9xrYiDDwsgACAEIAJrNgIQQgAPCyACIANrIQICQCADQf8BcSABSwRAIAAgAxBbIQggACgCECEEDAELIAAgASADayIBOgAUQn8gA62GQn+FIAApAwggAUE/ca2IgyEICyAAIAQgAms2AhAgCCACQT9xrYYLnAMBBX8CQEERQQAgAEGvsARPGyIBIAFBCHIiASAAQQt0IgIgAUECdEH82sIAaigCAEELdEkbIgEg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AEEEaiACKAIEIAIoAggQPUHcoMIAIAAoAgggACgCBCICGyEDQQkgACgCDCACGwshAiADIAIgARDaASAAQRBqJAALZgAjAEEwayIAJABBhOXCAC0AAARAIABBAjYCDCAAQYyhwgA2AgggAEIBNwIUIAAgATYCLCAAIABBLGqtQoCAgIAQhDcDICAAIABBIGo2AhAgAEEIakG0ocIAEKQDAAsgAEEwaiQAC2EBAX8jAEEwayICJAAgAiAANgIMIAJBAjYCFCACQZymwQA2AhAgAkIBNwIcIAIgAkEMaq1CgICAgOA0hDcDKCACIAJBKGo2AhggASgCHCABKAIgIAJBEGoQRSACQTBqJAALYQEBfyMAQTBrIgIkACACIAA2AgwgAkECNgIUIAJB5K7BADYCECACQgE3AhwgAiACQQxqrUKAgICA4DSENwMoIAIgAkEoajYCGCABKAIcIAEoAiAgAkEQahBFIAJBMGokAAthAQF/IwBBMGsiAiQAIAIgADYCDCACQQE2AhQgAkHwp8EANgIQIAJCATcCHCACIAJBDGqtQoCAgICQOIQ3AyggAiACQShqNgIYIAEoAhwgASgCICACQRBqEEUgAkEwaiQAC18BAn8CQCAAKAIAIgFB7f///wdqIgJBCk0gAkEDR3ENACABRSABQfv///8HaiICQQ1NIAJBAkdxIAFBg4CAgHhHIAFBhICAgHhMcXJyDQAgACgCBCABQQJ0QQQQpwQLC1wBA38gAC0AACIBQQNLIAFBA0dyRQRAIAAoAgQiACgCACEBIABBBGooAgAiAygCACICBEAgASACEQMACyADKAIEIgIEQCABIAIgAygCCBCnBAsgAEEMQQQQpwQLC2sBAn9BqJbAACECAkACQAJAAkAgAS0AACIDQQNrQQAgA0EEa0H/AXFBA0kbQQFrDgMAAQIDC0EAIQEMAgsgAUEBaiEBQdStwAAhAgwBCyABQQRqIQFBkK7AACECCyAAIAI2AgQgACABNgIAC2gBA38CQAJAAkACQEEDIAEoAgBB7f///wdqIgQgBEELTxtBAmsOAwABAgMLIAFBBGohAkGcm8AAIQMMAgtB2LPAACEDIAEhAgwBCyABQQRqIQJBjLXAACEDCyAAIAM2AgQgACACNgIAC2sBAn9B1LfAACECAkACQAJAAkAgAS0AACIDQQNrQQAgA0EE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AX8jAEEQayICJAAgAiAANgIMIAFB8b3AAEEWQYe+wABBAyACQQxqQay7wAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBic7AAEEbQcC8wABBAyACQQxqQay7wAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBrODAAEERQb3gwABBBCACQQxqQZzgwAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBweDAAEEWQdfgwABBAyACQQxqQfjawAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFB8fDAAEEbQZDfwABBAyACQQxqQfjawAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFB8IjBAEERQYGJwQBBBCACQQxqQeCIwQAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBhYnBAEEWQZuJwQBBAyACQQxqQcCGwQAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBhZfBAEEbQdSHwQBBAyACQQxqQcCGwQAQyQEgAkEQaiQACzwBAX8jAEEQayICJAAgAkGQksIANgIMIAIgADYCCCACQQhqQZSSwgAgAkEMakGUksIAIAFB5J/CABBrAAs4AQF/IwBBEGsiAiQAIAIgADYCDCABQeywwgBBDUH5sMIAQQQgAkEMakHcsMIAEMkBIAJBEGokAAs5AQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIakGswsIAIANBDGpBrMLCACACQeyOwgAQawALMAEBfyMAQRBrIgIkACACQQhqIAAQ8wIgAigCCCABIAIoAgwoAhARAAAgAkEQaiQACzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEMUBDwsgACABEPwBDwsgACABEP0BCzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEK0EDwsgACABEIQCDwsgACABEIMCCzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEKkDDwsgACABEIQCDwsgACABEIMCCzMBAX8jAEEQayICJAAgAiAAKAIANgIMIAFB7IfBAEEMIAJBDGpB3IfBABB/IAJBEGokAAszAQF/IwBBEGsiAiQAIAIgACgCADYCDCABQejUwQBBDCACQQxqQdjUwQAQfyACQRBqJAALLQACQCAAIAEQrANFDQAgAARAQYXlwgAtAAAaIAAgARD1AyIBRQ0BCyABDwsACzcBAX8jAEEgayIBJAAgAUEANgIYIAFBATYCDCABQdzZwgA2AgggAUIENwIQIAFBCGogABCkAwALMwEBfyAAKAIAIgFBhICAgHhMIAFBg4CAgHhHcSABRXJFBEAgACgCBCABQQJ0QQQQpwQLCzABAX8jAEEQayICJAAgAiAANgIMIAFBxJnAAEEMIAJBDGpBtJnAABB/IAJBEGokAAsvACAAQZybwAA2AgQgACABIAFBACABLQAAQQJrQf8BcSIAQQFGGyAAQQJLGzYCAAswAQF/IwBBEGsiAiQAIAIgADYCDCABQdi8wABBDCACQQxqQci8wAAQfyACQRBqJAALLwAgAEGwvsAANgIEIAAgASABQQAgAS0AAEECa0H/AXEiAEEBRhsgAEECSxs2AgALMAEBfyMAQRBrIgIkACACIAA2AgwgAUGo38AAQQwgAkEMakGY38AAEH8gAkEQaiQACy8AIABBgOHAADYCBCAAIAEgAUEAIAEtAABBAmtB/wFxIgBBAUYbIABBAksbNgIACy8AIABBxInBADYCBCAAIAEgAUEAIAEtAABBAmtB/wFxIgBBAUYbIABBAksbNgIACzABAX8jAEEQayICJAAgAiAANgIMIAFB7IfBAEEMIAJBDGpB3IfBABB/IAJBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQfyVwgBBCxCmAyACEK4CIABBEGokAAuEAQEDfyMAQSBrIgQkACAEQQhqIgMQ8AECf0GF5cIALQAAGkEkQQQQ9QMiAgRAIAJB5LrAADYCACACIAE2AiAgAiAANgIcIAIgAykCADcCBCACQQxqIANBCGopAgA3AgAgAkEUaiADQRBqKQIANwIAIAIMAQtBBEEkENMEAAsgBEEgaiQACzgBAX9BASEBIAAtAARFBEAgACgCACIBKAIcQY7EwgBBASABKAIgKAIMEQIAIQELIAAgAToABCABC5ABAQN/IwBBIGsiAyQAIANBCGoiAhDwAQJ/QYXlwgAtAAAaQShBBBD1AyIBBEAgAUGcgsAANgIAIAEgAikCADcCBCABIAApAgA3AhwgAUEMaiACQQhqKQIANwIAIAFBFGogAkEQaikCADcCACABQSRqIABBCGooAgA2AgAgAQwBC0EEQSgQ0wQACyADQSBqJAALhgECAn8BfiMAQSBrIgIkACACQQhqIgEQ8AECf0GF5cIALQAAGiAAKQIAIQNBJEEEEPUDIgAEQCAAQci6wAA2AgAgACADNwIcIAAgASkCADcCBCAAQQxqIAFBCGopAgA3AgAgAEEUaiABQRBqKQIANwIAIAAMAQtBBEEkENMEAAsgAkEgaiQAC5kSAhd/EH0QaSIMIAkmASMAQfAAayILJAAgCyAMNgIsIAsgCDYCKCALIAc4AiQgCyAGOAIgIAsgBTgCHCALIAQ4AhggCyADOAIUIAsgAjgCECALIAE4AgwgCyAAOAIIIAsgCkEARzoAMyALQQA2AjwgC0KAgICAwAA3AjQgCyALQSRqNgJsIAsgC0EgajYCaCALIAtBHGo2AmQgCyALQRhqNgJgIAsgC0EUajYCXCALIAtBEGo2AlggCyALQQxqNgJUIAsgC0EIajYCUCALIAtBNGo2AkwgCyALQTNqNgJIIAsgC0EsajYCRCALIAtBKGo2AkAgC0FAayIeIQgjAEEgayIMJAACQAJAAkBBAEGIh8AAKAIAEQQAIhIEQCASKAIADQIgCCgCLCEUIAgoAighFSAIKAIkIRYgCCgCICEXIAgoAhwhGCAIKAIYIRkgCCgCFCEaIAgoAhAhGyAIKAIMIQ8gCCgCCCEfIAgoAgQhICAIKAIAIRwgEkF/NgIAIBIgHCgCACINBH8gEkEMaigCACEdIBJBCGooAgAhCgNAIAwgICATQQJ0IBNBgIAEIA0gE2siCCAIQYCABE8bIghqIhNBAnQQqQQ2AgQgCEECdCINIB1LDQMgDEEEaiAKIA0QzAICQCAfLQAARQRAIAwgGSoCADgCECAMIBoqAgA4AgwgDCAbKgIAOAIIIAwgFioCADgCHCAMIBcqAgA4AhggDCAYKgIAOAIUIAohCCAVKgIAISQgFCoCACEjIwBBEGsiECQAIA0EQCAMQRRqIg4qAgAiACAAlCAOKgIEIgEgAZSSIA4qAggiAiAClJIhAyAMQQhqIg4qAgghIiAOKgIEISUgDioCACEmA0BBBCANIA1BBE8bIQ4CQCAILQADs0MAAH9DlUPNzMw9XQ0AIBBBBGogCCAOEEEgDUEDSwRAIAAgJiAQKgIEkyIElCABICUgECoCCJMiBZSSIAIgIiAQKgIMkyIGlJIiByAHlCADIAQgBJQgBSAFlJIgBiAGlJIgCCgCDCIREKUDIBFBCHYQpQOSIBFBEHYQpQOSQwAAQECVIgQgBJSTlJMiBEMAAAAAXQ0BIAeMIASRkyADlSIEICRgRSAEICNfRXINASAPKAIIIhEgDygCAEYEQCAPQdyMwAAQtAELIA8oAgQgEUECdGogBDgCACAPIBFBAWo2AggMAQtBAyAOQZyNwAAQrQIACyAIIA5BAnRqIQggDSAOayINDQALCwwBCyAMIBkqAgA4AhAgDCAaKgIAOAIMIAwgGyoCADgCCCAMIBYqAgA4AhwgDCAXKgIAOAIYIAwgGCoCADgCFCAKIQggFSoCACEtIBQqAgAhLiMAQRBrIhAkACANBEAgDEEUaiIOKgIAISUgDioCBCEmIA4qAgghKyAMQQhqIg4qAgghLyAOKgIEITAgDioCACExA0BBBCANIA1BBE8bIQ4CQCAILQADs0MAAH9DlUPNzMw9XQ0AIBBBBGogCCAOEEECQCANQQNLBEAgECoCDCEoIBAqAgghKSAQKgIEISogCCgCDCIREKUDIQMgEUEIdhClAyEEIBFBEHYQpQMhBSArIAgoAggiIUEYdbJDAAD+QpUiACAmIBFBGHWyQwAA/kKVIgGUICsgAJSTIiOUICFBEHbAskMAAP5ClSICICsgApQgJSABlJMiIpSTICUgAJQgJiAClJMiJ0MAAIA/IAIgApSTIAAgAJSTIAEgAZSTQwAAAAAQ1QORIgaUkiIHIAeSkiEHICYgAiAnlCABICOUkyAiIAaUkiIkICSSkiEkICUgASAilCAAICeUkyAjIAaUkiIjICOSkiEjIC8gKJMiIiAAIDAgKZMiJyABlCAiIACUkyIolCACICIgApQgMSAqkyIpIAGUkyIqlJMgKSAAlCAnIAKUkyIsIAaUkiIiICKSkiEiICcgAiAslCABICiUkyAqIAaUkiICIAKSkiECICkgASAqlCAAICyUkyAoIAaUkiIAIACSkiEAIAUgAyAEENUDIAUQ1QNDCtcjPJQiAV1FBEAgASAEXkUEQCABIANeRQRAQwAAgD8gBZUiBSAilCIBIAUgB5QiBZRDAACAPyADlSIDIACUIgAgAyAjlCIDlEMAAIA/IASVIgQgApQiAiAEICSUIgSUkpIiBiAGlCAFIAWUIAMgA5QgBCAElJKSIgMgASABlCAAIACUIAIgApSSkkMAAIC/kpSTIgBDAAAAAF0NBSAGjCAAkZMgA5UhAAwECyAji0O9N4Y1XQ0EIAIgJCAAjCAjlSIAlJIgBJUiASABlCAiIAcgAJSSIAWVIgEgAZSSQwAAgD9eRQ0DDAQLICSLQ703hjVdDQMgACAjIAKMICSVIgCUkiADlSIBIAGUICIgByAAlJIgBZUiASABlJJDAACAP14NAwwCCyAHi0O9N4Y1XQ0CIAAgIyAijCAHlSIAlJIgA5UiASABlCACICQgAJSSIASVIgEgAZSSQwAAgD9eRQ0BDAILQQMgDkGcjcAAEK0CAAsgACAtYEUgACAuX0VyDQAgDygCCCIRIA8oAgBGBEAgD0HsjMAAELQBCyAPKAIEIBFBAnRqIAA4AgAgDyARQQFqNgIICyAIIA5BAnRqIQggDSAOayINDQALCwsgEEEQaiQAIAwoAgQiCEGEAU8EQCAIEMYBCyATIBwoAgAiDUkNAAsgEigCAEEBagVBAAs2AgAgDEEgaiQADAMLENICAAsgDSAdQciLwAAQqwQACxDTAgALIAsoAjwQGCEJEGkiCCAJJgEgCyAINgJAIAsoAjghECALKAI8IQwjAEEgayIKJAAgCiAeKAIAIhIlARASIg02AgAgCiAMNgIEAkAgDCANRgRAEO0DIg0Q3AMiDyUBIBAgDBAQIQkQaSIMIAkmASANQYQBTwRAIA0QxgELIA9BhAFPBEAgDxDGAQsgEiUBIAwlAUEAEBEgDEGEAU8EQCAMEMYBCyAKQSBqJAAMAQsgCkEANgIIIAogCkEEaiAKQQhqEIwDAAsgCygCNCIKBEAgCygCOCAKQQJ0QQQQpwQLIAsoAiwiCkGEAU8EQCAKEMYBCyALQfAAaiQAIAglASAIEMYBC/wBAgJ/AX4jAEEQayICJAAgAkEBOwEMIAIgATYCCCACIAA2AgQjAEEQayIBJAAgAkEEaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCDCEDAkACQAJAAkAgAigCBA4CAAECCyADDQFBASECQQAhAwwCCyADDQAgAigCACICKAIEIQMgAigCACECDAELIABBgICAgHg2AgAgACABNgIMIABBhKLCACABKAIEIAEoAggiAC0ACCAALQAJEMEBAAsgACADNgIEIAAgAjYCACAAQeihwgAgASgCBCABKAIIIgAtAAggAC0ACRDBAQALKgAgAEH/AXFFBEBDAAAAAA8LIABBAWtB/wFxs0NFIpE9lEMAABDBkhBSCy0AIAEoAhwgAiADIAEoAiAoAgwRAgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAsyAQF/IAEoAhxBvMHCAEEBIAEoAiAoAgwRAgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAshAAJAIAEgAxCsAwRAIAAgASADIAIQ3wMiAA0BCwALIAALIgEBfyAAKAIAIgAgAEEfdSICcyACayAAQX9zQR92IAEQbAslACAARQRAQfiPwgBBMhDIBAALIAAgAiADIAQgBSABKAIQEQsACygAIAEgACgCAC0AAEECdCIAQeC8wgBqKAIAIABBzLzCAGooAgAQ5QMLGQEBf0GAgICAeCABayAATyACIAFpQQFGGwslACABIAAtAABBAnQiAEH8tcAAaigCACAAQey1wABqKAIAEOUDCyUAIABBnJvAADYCBCAAIAFBBGpBACABKAIAQYKAgIB4Rhs2AgALIQAgAEHwosAANgIEIAAgAUEBakEAIAEtAABBAkYbNgIACyUAIAEgAC0AAEECdCIAQZDZwABqKAIAIABBgNnAAGooAgAQ5QMLJQAgAEGwvsAANgIEIAAgAUEEakEAIAEoAgBBgoCAgHhGGzYCAAshACAAQYTGwAA2AgQgACABQQFqQQAgAS0AAEECRhs2AgALJQAgASAALQAAQQJ0IgBB+PvAAGooAgAgAEHo+8AAaigCABDlAwslACAAQYDhwAA2AgQgACABQQRqQQAgASgCAEGCgICAeEYbNgIACyEAIABBsOjAADYCBCAAIAFBAWpBACABLQAAQQJGGzYCAAshACAAQbSOwQA2AgQgACABQQFqQQAgAS0AAEECRhs2AgALJQAgAEHEicEANgIEIAAgAUEEakEAIAEoAgBBgoCAgHhGGzYCAAslACABIAAtAABBAnQiAEGMosEAaigCACAAQfyhwQBqKAIAEOUDCyMAIABFBEBB+I/CAEEyEMgEAAsgACACIAMgBCABKAIQEQcACyMAIABFBEBB+I/CAEEyEMgEAAsgACACIAMgBCABKAIQESUACyMAIABFBEBB+I/CAEEyEMgEAAsgACACIAMgBCABKAIQERMACyMAIABFBEBB+I/CAEEyEMgEAAsgACACIAMgBCABKAIQEScACyMAIABFBEBB+I/CAEEyEMgEAAsgACACIAMgBCABKAIQESkACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARCnBAsLJQAgASAALQAAQQJ0IgBBxKzCAGooAgAgAEGcq8IAaigCABDlAwsnACAAQRxqQQAgAkLj4Nah9qKXnVZRG0EAIAFC0Jamw5Le7cA3URsLKQAgAEEgakEAIAJC3f7B4L2j6uiCf1EbQQAgAUKX2/aYrfP7zY5/URsLKQAgAEEcakEAIAJC7bqtts2F1PXjAFEbQQAgAUL4gpm9le7Gxbl/URsLKQAgAEEcakEAIAJCy4fr+uCou7bQAFEbQQAgAULEr9zF2tKv9bh/URsLIQAgAEUEQEH4j8IAQTIQyAQACyAAIAIgAyABKAIQEQUAC5sRAQ5/An8QaSIEIAImARBpIgUgAyYBIwBBMGsiByQAIAcgBTYCBCAHIAQ2AgAgByAANgIIIAcgATYCDCAHIAcoAgAlARADNgIQIAcgB0EAEMcEIgA2AhggB0EYaiIBEKgEBEAgByAANgIYIAcgASgCABDaBEECdjYCFCAAQYQBTwRAIAAQxgELIAcgB0EEajYCLCAHIAc2AiggByAHQQxqNgIkIAcgB0EUajYCICAHIAdBEGo2AhwgByAHQQhqNgIYAn8gB0EYaiEAIwBBQGoiBSQAAkACQAJAAkACQEEAQfCGwAAoAgARBAAiDwRAIA8oAgBFBEAgACgCFCERIAAoAhAhECAAKAIMIQwgACgCCCELIA9BfzYCACAAKAIEIQ0gACgCACgCACIEIA9BBGoiBigCCCIBSwRAIAQgASIAayIIIAYoAgAgAGtLBEAgBiAAIAhBBEEEEI8BIAYoAgghAAsgBigCBCIOIABBAnRqIQkgCEECTwRAIAlBACABQX9zIARqQQJ0EFoaIAAgBGpBAnQgAUECdGsgDmpBBGshCSAAIAhqQQFrIQALIAlBADYCACAGIABBAWo2AggLIAYoAhQiASAESQRAIAQgASIAayIIIAYoAgwgAGtLBEAgBkEMaiAAIAhBBEEEEI8BIAYoAhQhAAsgBigCECIOIABBAnRqIQkgCEECTwRAIAlBACABQX9zIARqQQJ0EFoaIAAgBGpBAnQgAUECdGsgDmpBBGshCSAAIAhqQQFrIQALIAlBADYCACAGIABBAWo2AhQLIAYoAiAiAEGA+AFNBEBBgfgBIAAiAWsiBCAGKAIYIABrSwRAIAZBGGogACAEQQRBBBCPASAGKAIgIQELIAYoAhwiCSABQQJ0IghqIQQgAEGA+AFHBH8gBEEAQYDgByAAQQJ0IgRrEFoaIAEgAGtBgPgBaiEBIAggBGsgCWpBgOAHagUgBAtBADYCACAGIAFBAWo2AiALAkAgDSgCACIJBEBBACEAA0AgDCgCACAAayIBIAsoAgAiBCABIARJGyIEBEAgBSAQIAoQxwQiATYCICAFQSBqIggQqARFDQMgBSABNgIgIAgoAgAlARAUIQIQaSIBIAImASAFIAE2AhQgBSgCICIBQYQBTwRAIAEQxgELIAUgBUEUaigCAEEAIAQQ1gM2AiAgACAEaiIBIARJDQYgASAPKAIMIghLDQcgBUEgaiAPKAIIIABBAnRqIAQQzAIgBSgCICIAQYQBTwRAIAAQxgELIAUoAhQiAEGEAU8EQCAAEMYBCyABIQALIAkgCkEBaiIKRw0ACwsgBUEIaiEQIAwoAgAhDCMAQUBqIgkkAAJAIAwgBigCCCIATQRAIAYoAgQhASAGQQA2AiBBACEAIAYoAhhBgPgBTQRAIAZBGGpBAEGB+AFBBEEEEI8BIAYoAiAhAAsgBigCHCIEIABBAnRqQQBBgOAHEFogBiAAQYH4AWoiCjYCIEGA4AdqQQA2AgACQCAMRQ0AIAxBAWtB/////wNxIAEhAAJAIAxBAXFFDQAgAEEEaiEAIAEoAgBB//8BcSILQf/3AUsNACAEIAtBAnRqIgsgCygCAEEBajYCAAtFDQAgASAMQQJ0aiEIA0AgACgCAEH//wFxIgtBgPgBSQRAIAQgC0ECdGoiCyALKAIAQQFqNgIACyAAQQRqKAIAQf//AXEiC0H/9wFNBEAgBCALQQJ0aiILIAsoAgBBAWo2AgALIABBCGoiACAIRw0ACwsgCkH8////A3EhCCAKQQNxIQtBACEKIAQhAANAIAAoAgAhDSAAIAo2AgAgCSAKIA1qIgo2AgggAEEEaiINKAIAIQ4gDSAKNgIAIAkgCiAOaiIKNgIIIABBCGoiDSgCACEOIA0gCjYCACAJIAogDmoiCjYCCCAAQQxqIg0oAgAhDiANIAo2AgAgCSAKIA5qIgo2AgggAEEQaiEAIAhBBGsiCA0ACyALBEAgC0ECdCELQQAhCANAIAAgCGoiDSgCACEOIA0gCjYCACAJIAogDmoiCjYCCCALIAhBBGoiCEcNAAsLIAwEQCAMQQJ0IQggBigCECENIAYoAhQhBkEAIQADQAJAIAEoAgBB//8BcSIMQYD4AU8NACAGIAQgDEECdGoiDCgCACILSwRAIA0gC0ECdGogADYCACAMIAwoAgBBAWo2AgAMAQsgCyAGQeiEwAAQrQIACyABQQRqIQEgAEEBaiEAIAhBBGsiCA0ACwsgCiAEKAKA4AdGBEBBACEADAILIAlBAjYCHCAJQdiEwAA2AhggCUICNwIkIAkgBEGA4AdqrUKAgICAEIQ3AzggCSAJQQhqrUKAgICAEIQ3AzAgCSAJQTBqNgIgIAlBDGoiACAJQRhqENABIAAQoQMhCkEBIQAMAQsgDCAAQaiEwAAQqwQACyAQIAo2AgQgECAANgIAIAlBQGskACAFKAIMIQAgBSgCCARAIAUgADYCECAFQQE2AiQgBUHEisAANgIgIAVCATcCLCAFIAVBEGqtQoCAgIAghDcDOCAFIAVBOGo2AiggBUEUaiAFQSBqENEBIAUoAhggBSgCHBDIBAALIAANBQwGCyAFIAE2AiBB7IrAAEErIAVBIGpB3IrAAEGYi8AAEKACAAsQ0wIACxDSAgALIAAgAUHMisAAEKwEAAsgASAIQcyKwAAQqwQACyAPKAIYIgEgAEkNASAPKAIUIQQgBSARQQAgABCpBCIBNgIgIAVBIGogBCAAEOkBIAFBhAFJDQAgARDGAQsgDyAPKAIAQQFqNgIAIAVBQGskACAADAELIAAgAUG0isAAEKsEAAsgBygCBCIBQYQBTwRAIAEQxgELIAcoAgAiAUGEAU8EQCABEMYBCyAHQTBqJAAMAQsgByAANgIYQZyGwABBKyAHQRhqQYyGwABB9IbAABCgAgALCx4AIABBnJvAADYCBCAAIAFBACABLQAAQQJHGzYCAAseACAAQZS0wAA2AgQgACABQQAgASgCAEECSRs2AgALHgAgAEGwvsAANgIEIAAgAUEAIAEtAABBAkcbNgIACx4AIABBqNfAADYCBCAAIAFBACABKAIAQQJJGzYCAAseACAAQYDhwAA2AgQgACABQQAgAS0AAEECRxs2AgALHgAgAEGQ+sAANgIEIAAgAUEAIAEoAgBBAkkbNgIACxsAIAAoAgAiAEEEaigCACAAQQhqKAIAIAEQMAseACAAQcSJwQA2AgQgACABQQAgAS0AAEECRxs2AgALHgAgAEGkoMEANgIEIAAgAUEAIAEoAgBBAkkbNgIACx8AIABFBEBB+I/CAEEyEMgEAAsgACACIAEoAhARAAALno4BAx1/Bn4IfRBpIgMgACYBAn8jAEHwAGsiDyQAIA8gAzYCCCAPIA9BCGooAgAQ3QMiCDYCGCAPQQxqIQUCQAJAIA9BGGooAgAiBxDaBCIDQQBIDQACQCADRQRAQQEhBgwBC0GF5cIALQAAGkEBIQsgA0EBEPUDIgZFDQELEO0DIgkQ3AMiBBDdAyELIARBhAFPBEAgBBDGAQsgCyUBIAclASAGEAcgC0GEAU8EQCALEMYBCyAJQYQBTwRAIAkQxgELIAUgBxDaBDYCCCAFIAY2AgQgBSADNgIADAELIAsgA0HsjsIAENcDAAsgCEGEAU8EQCAIEMYBCyAPQRhqIRogDygCECEcIA8oAhQhCCMAQeAAayIRJAAgEUIANwNQAkACQAJAAkACQAJAIAhBCE8EQCARIBwpAAA3A1AMAQtB4NnAACkCACIgQv8Bg0IEUg0BCyARQQg2AlwgESARQdAAajYCWCMAQRBrIgMkACARQQhqIgYCfwJAIBFB2ABqIgUoAgQiB0UEQCADQoHKADcDCCAGIANBCGoQ+wI2AgQMAQsgBSAHQQFrIgk2AgQgBSAFKAIAIgtBAWo2AgAgCUUEQCADQoHKADcDCCAGIANBCGoQ+wI2AgQMAQsgCy0AACEJIAUgB0ECayIENgIEIAUgC0ECajYCACAERQRAIANCgcoANwMIIAYgA0EIahD7AjYCBAwBCyALLQABIQQgBSAHQQNrIg02AgQgBSALQQNqNgIAIAYCfyANRQRAIANCgcoANwMIIANBCGoQ+wIMAQsgBiALLQACOgADIAYgBDoAAiAGIAk6AAEgBSAHQQRrNgIEIAUgC0EEajYCACAGIAstAAM6AARBAAwCCzYCBAtBAQs6AAAgA0EQaiQAIBECfyARLQAIQQFGBEAgESgCDAwBCyARKAJcQQNLDQIgEUKBygA3AwggEUEIahD7Ags2AghBzI/AAEErIBFBCGpBvI/AAEGMkMAAEKACAAsgESAgNwMIIBFBCGoQogMhAyAaQYCAgIB4NgIQIBogAzYCAAwBCyARMwAJIBExAAtCEIaEIBExAAxCGIaEQteYnYIDUgRAIBFBADYCGCARQQE2AgwgEUGUkcAANgIIIBFCBDcCECARQQhqEKsCIQMgGkGAgICAeDYCECAaIAM2AgAMAQsgESgCWCgAACIDQQFrQQJPBEAgEUEANgIYIBFBATYCDCARQfSQwAA2AgggEUIENwIQIBFBCGoQqwIhAyAaQYCAgIB4NgIQIBogAzYCAAwBCyARQQE6AC4gEUGBAjsBLCARQYECOwEoIBFBADYCJCARIANBBHQiA0G7kMAAai0AADoALyARIANBtpDAAGovAQA7ASogESADQayQwABqKAIANgIgIBFBADYCECARQoCAgIDAADcCCCAIQQhJDQECfyAcQQhqIQYgCEEIayELIBFBCGohFkEAIQhCACEgIwBB8ABrIgokAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAKAn8CQAJAAkAgEUEgaiIZLQANRQ0AAkACQCALBEAgC0EBcSEHIAtBAUcNAUG1tdTVASEEIAYhAwwCCyAZLQAIDQRBASEDDAMLIAtBfnEhBUG1tdTVASEEIAYhAwNAIAMgCCADLQAAIgkgBEGNzOUAbEHf5rvjA2pBCHZzIg1BBXQgDUH4AXFBA3ZyczoAACADQQFqIgggCSAILQAAIgggBEGpueG5AWxBstLAugRqIgRBCHZzIg1BBXQgDUH4AXFBA3ZyczoAACADQQJqIQMgBUECayIFDQALCyAHRQ0AIAMgAy0AACAEQY3MAWxB3+YDakEIdnMiA0EFdCADQfgBcUEDdnIgCHM6AAALIBktAAgNAUEAIQQgC0EASA0DIAtFBEBBASEDDAELQYXlwgAtAAAaQQEhBCALQQEQ9QMiA0UNAwsgAyAGIAsQOxogCwwBCyAKQShqIRgjAEGACGsiCSQAIAlBmARqIRRBACEFIwBBgAtrIgckACAHIAs2AgQgByAGNgIAIAdBADYC4AMgB0EANgLYAyAHQQI2AgggB0HgCmohBEEAIQZBACELIwBBEGsiDiQAIAcoAgAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAHKAIEIgxBA00EQCAHQQA2AgQgByADIAxqNgIAQfD/wAApAwAiIEL/AYNCBFENASAEICA3AwggBEEAOgAEIARBAjYCAAwMCyAHIAxBBGsiCDYCBCAHIANBBGoiDTYCACAOIAMoAAAiBjYCBCAGQXBxQdDUtMIBRg0BIAZBqOq+aUYNAgsgBCAGNgIIIARBAToABCAEQQI2AgAMCgsgCEEESQ0BIAcgDEEIazYCBCAHIANBCGo2AgAgAygABCELDAILAkAgCEUEQCAHQQA2AgRB8P/AACkDACIgQv8Bg0IEUg0BIA5CADcDCEEBIQxBKCEIQQUhFwwGCyAHIAxBBWsiBjYCBEEFIRcgByADQQVqIg02AgAgDiADLQAEIgg6AAQgCEEgcSITDQQgBgRAIAcgDEEGayIGNgIEQQYhFyAHIANBBmoiDTYCACAOIAMtAAUiCzoABAwFC0EAIQYgB0EANgIEQfD/wAApAwAiIkL/AYNCBFEEQEEGIRcgCCELDAULIAQgIjcDCCAEQQQ6AAQgBEECNgIADAkLIAQgIDcDCCAEQQI6AAQgBEECNgIADAgLIAdBADYCBCAHIAMgDGo2AgAgBiELQfD/wAApAwAiIEL/AYNCBFINAQsgBCALNgIMIAQgBjYCCCAEQQc6AAQgBEECNgIADAYLIAQgIDcDCCAEQQI6AAQgBEECNgIADAULAkACQAJ/AkACQAJ/AkACQAJAIAhBA3EiEkEBaw4DAgEACAtBBCESCyAGIBJPDQIgEgwBCyAGDQJBAQshDCAHQQA2AgQgByAGIA1qIg02AgBB8P/AACkDACIiQv8Bg0IEUQ0DIAQgIjcDCCAEQQU6AAQgBEECNgIADAkLIA5BBGogDSASEDsaIAYgEmshBSANIBJqIQ0gEgwBCyAOIA0tAAA6AAQgBkEBayEFIA1BAWohDUEBCyEMIAcgBTYCBCAHIA02AgALIAUhBgJ/IA4tAAQiAyAMQQFGDQAaIA4tAAVBCHQgA3IiAyAMQQJGDQAaIA4tAAZBEHQgDi0AB0EYdHIgA3ILIgVBAEchEiAMIBdqIRcLQQEhA0ECIQwgBwJ/AkACQAJAAkACQCAIQQZ2QQFrDgMDAgABC0EAIQNBCCEMDAILIBMNAgwHC0EAIQNBBCEMCyAOQgA3AwggBiAMSQ0DIA5BCGogDSAMEDsaIAwgDWohDSAGIAxrDAELIA5CADcDCCAGRQRAQQEhDAwCCyAOIA0tAAA6AAhBASEMIA1BAWohDUEAIQMgBkEBaws2AgQgByANNgIADAILQQAhBkEAIQMLIAdBADYCBCAHIAYgDWo2AgBB8P/AACkDACIgQv8Bg0IEUQ0AIAQgIDcDCCAEQQY6AAQgBEECNgIADAILAn4gDjEACCIgIAxBAUYNABogDjEACUIIhiAghCIgIAxBAkYNABogDjEACkIQhiAOMQALQhiGhCAghCIgIAxBBEYNABogDjEADEIghiAOMQANQiiGhCAOMQAOQjCGhCAOMQAPQjiGhCAghAsiIEKAAnwgICADGyEgIAwgF2ohFwsgBCAXOgAYIAQgCzoAESAEIAg6ABAgBCAgNwMIIAQgBTYCBCAEIBI2AgALIA5BEGokACAHKQPoCiEiIAcoAuQKIQ0CQAJAIAcoAuAKIgVBAkYNACAHMQD4CiEjICIhIAJAIAcpA/AKIiFCIINCAFINAEIBICFCCIgiIKdB+AFxQQN2QQpqrYYiJEIDiCAgQgeDfiAkfCIgQoCAgICA+ABUDQAgB0EAOgCgB0EBIRAgBykDoAchIgwBCyAgpyEGIAdBuAdqIQNBheXCAC0AABoCQAJAAkACQAJAAkBBgAJBARD1AyILBEBBheXCAC0AABpBgAJBARD1AyIIRQ0BQYXlwgAtAAAaQSxBBBD1AyIERQ0CQYXlwgAtAAAaQSxBBBD1AyIORQ0DQYXlwgAtAAAaQYAIQQQQ9QMiDEUNBEGF5cIALQAAGkGACEEEEPUDIhJFDQUgA0IENwJAIANB/wE7AWAgA0EANgJcIAMgEjYCWCADQoCAgICAIDcCUCADIAw2AkwgA0GAAjYCSCADQQA6AGQgAyALNgIQIANCgICAgIAgNwIIIANCgICAgBA3AgAgA0IANwI4IAMgDjYCNCADQoCAgICwATcCLCADIAQ2AiggA0KAgICAsAE3AiAgAyAINgIcIANCgICAgIAgNwIUDAYLQQFBgAJBrPnBABDXAwALQQFBgAJBvPnBABDXAwALQQRBLEHM+cEAENcDAAtBBEEsQdz5wQAQ1wMAC0EEQYAIQcyAwgAQ1wMAC0EEQYAIQdyAwgAQ1wMAC0GF5cIALQAAGgJAAkBBgAhBBBD1AyILBEACQEGF5cIALQAAGkGACEEEEPUDIghFDQJBheXCAC0AABpBgAhBBBD1AyIERQ0AQYXlwgAtAAAaQYAIQQQQ9QMiDkUNAkGF5cIALQAAGkGACEEEEPUDIgxFDQBBheXCAC0AABpBgAhBBBD1AyISRQ0CIANCADcDqAIgA0EBNgLoASADQQA6AOQBIANBADoA4gEgA0EAOgDgASADQTQ7AdwBIANBADYC2AEgAyASNgLUASADQoCAgICAIDcCzAEgAyAMNgLIASADQoCAgICAIDcDwAEgA0KAgICAwAA3A7gBIANBIzsBtAEgA0EANgKwASADIA42AqwBIANCgICAgIAgNwKkASADIAQ2AqABIANCgICAgIAgNwOYASADQoCAgIDAADcDkAEgA0EfOwGMASADQQA2AogBIAMgCDYChAEgA0KAgICAgCA3AnwgAyALNgJ4IANCgICAgIAgNwNwIANCgICAgMAANwNoIANBwAJqQgA3AwAgA0G4AmpCADcDACADQbACakIANwMAIANB/AFqQQA2AgAgA0H0AWpCADcCACADQgA3AuwBIANC1uuC7ur9ifXgADcDgAIgA0LP1tO+0ser2UI3A4gCIANCADcDkAIgA0L56tDQ58mh5OEANwOYAiADQgA3A6ACIANBADYCyAIgA0IANwPQAiADIAY2AtgCIANBADYC5AIgA0EINgKUAyADQoCAgIAQNwLcAiADQoGAgIDAADcCjAMgA0EANgKIAyADQoCAgIAQNwPoAiADQgA3A/ACIANCBDcD+AIgA0KAgICAEDcDgAMMAwsLQQRBgAhBzIDCABDXAwALQQRBgAhB3IDCABDXAwALIAdBADYCqAcgB0EANgKwByAHQQA6ANwKIAdBADYC2AogByAjNwPQCiAHKQOoByEgIAcpA7AHISMgB0HoA2oiBiADQagDEDsaIAdBCGoQSSAHICM3AyggByAgNwMgIAcgITcDGCAHIA02AgwgByAiPgIQIAcgIkIgiD4CFCAHIAU2AgggB0EwaiAGQagDEDshCCAFQQFxBEBBDCEQIAcoAtgDIhJFDQEgBygC3AMhFwNAIBJB1AFrIQQgEkEEaiEGIBIvAd4WIgNBAnQhC0F/IQUCQAJAA0AgC0UEQCADIQUMAgsgBigCACEOIAVBAWohBSAEQYQCaiEEIAtBBGsh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EwAgAEHMuMAANgIEIAAgATYCAAsTACAAQYi5wAA2AgQgACABNgIACxMAIABBxLnAADYCBCAAIAE2AgALEwAgAEGAusAANgIEIAAgATYCAAsTACAAQbC+wAA2AgQgACABNgIACxMAIABBKDYCBCAAQYjbwAA2AgALEwAgAEGA4cAANgIEIAAgATYCAAshACAAQqTFo/yfjvDjADcDCCAAQqqooLmusOaw6QA3AwALEAAgACgCACAAKAIEIAEQMAsRACAAKAIAIAAoAgQgARDVBAsiACAAQsuH6/rgqLu20AA3AwggAELEr9zF2tKv9bh/NwMACxMAIABBKDYCBCAAQcCFwQA2AgALEwAgAEHEicEANgIEIAAgATYCAAsgACAAQrz8k7Ko16DsTDcDCCAAQuuYqJm2gbKefzcDAAshACAAQriynYTMrpfUQjcDCCAAQu/Dv6KOjcrEoH83AwALIAAgAEKcnaLxgrvwoHU3AwggAELRqsqvpcqt8kA3AwALIQAgAEL7wqCWlfy/yHo3AwggAELmsfLlkYe/ybF/NwMACyIAIABC9auQ77TsvKaWfzcDCCAAQrHh7P30uYbLwgA3AwALIAAgAELNnq77nqC2sEE3AwggAELxps+Y0aSn/gE3AwALIAAgAEK3v8ue+N2SoEM3AwggAEKvuaX0x5vV+zA3AwALIQAgAEKWl7rs79nZo3Q3AwggAEKH+OXLhuPSwtQANwMACyEAIABC/O6Qyq7osdU1NwMIIABC2OvVj+a1zN2OfzcDAAshACAAQrzprN2Y1v7ui383AwggAEKk3Nqt0/nNwEU3AwALIQAgAELl6obQ6cP/7Xk3AwggAEL30OLk1cPQ6ad/NwMACyEAIABC5sHsgPKk3YtlNwMIIABChu7u8+efmIeefzcDAAshACAAQs7Is8mT6a+2pX83AwggAELt66KMv7HLkg83AwALIgAgAEKcrtGn56WAwMIANwMIIABC16rLiaf+wYLHADcDAAsiACAAQt3+weC9o+rogn83AwggAEKX2/aYrfP7zY5/NwMACyEAIABCgsDc4LCv07mnfzcDCCAAQpbk17fDtcOKAzcDAAshACAAQrvV0cb1jfDEkH83AwggAELVi9bpuKS4kXk3AwALIQAgAEKynOer2rGju98ANwMIIABCvfif/8L+hsNVNwMACyIAIABC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ZXJFcnJvcgAAAAAEAAAABAAAAE4AAABGcmFtZUhlYWRlckVycm9yV2luZG93U2l6ZVRvb0JpZwAAAAAEAAAABAAAAE8AAABEaWN0aW9uYXJ5RGVjb2RlRXJyb3IAAAAAAAAABAAAAAQAAABQAAAARmFpbGVkVG9SZWFkQmxvY2tIZWFkZXIAAAAAAAQAAAAEAAAAUQAAAEZhaWxlZFRvUmVhZEJsb2NrQm9keQAAAAAAAAAEAAAABAAAAFIAAABGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAAAAQAAAAEAAAAUwAAAEZTRURlY29kZXJFcnJvcgAAAAAABAAAAAQAAABUAAAARlNFVGFibGVFcnJvclNvdXJjZUlzRW1wdHlOb3RFbm91Z2hCeXRlc0ZvcldlaWdodHNnb3RfYnl0ZXNleHBlY3RlZF9ieXRlcwAAAAAAAAAEAAAABAAAAFUAAABFeHRyYVBhZGRpbmdza2lwcGVkX2JpdHNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c2hhdmVGU0VUYWJsZVVzZWRUb29NYW55Qnl0ZXN1c2VkYXZhaWxhYmxlX2J5dGVzTm90RW5vdWdoQnl0ZXNJblNvdXJjZVdlaWdodEJpZ2dlclRoYW5NYXhOdW1CaXRzTWF4Qml0c1Rvb0hpZ2gAAAAAAQAAAAEAAABWAAAAAAAAAAEAAAABAAAAVwAAAFYAAABgERAAWAAAAFkAAABaAAAAWwAAAFwAAABVbnN1cHBvcnRlZE9mZnNldG9mZnNldF9jb2RlWmVyb09mZnNldE5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzAAAAAAAEAAAABAAAAF0AAABFeHRyYUJpdHNiaXRzX3JlbWFpbmluZ01pc3NpbmdDb21wcmVzc2lvbk1vZGVNaXNzaW5nQnl0ZUZvclJsZUxsVGFibGVNaXNz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ZXJFcnJvcgAAAAAEAAAABAAAAE4AAABGcmFtZUhlYWRlckVycm9yV2luZG93U2l6ZVRvb0JpZwAAAAAEAAAABAAAAE8AAABEaWN0aW9uYXJ5RGVjb2RlRXJyb3IAAAAAAAAABAAAAAQAAABQAAAARmFpbGVkVG9SZWFkQmxvY2tIZWFkZXIAAAAAAAQAAAAEAAAAUQAAAEZhaWxlZFRvUmVhZEJsb2NrQm9keQAAAAAAAAAEAAAABAAAAFIAAABGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAAAAQAAAAEAAAAUwAAAEZTRURlY29kZXJFcnJvcgAAAAAABAAAAAQAAABUAAAARlNFVGFibGVFcnJvclNvdXJjZUlzRW1wdHlOb3RFbm91Z2hCeXRlc0ZvcldlaWdodHNnb3RfYnl0ZXNleHBlY3RlZF9ieXRlcwAAAAAAAAAEAAAABAAAAFUAAABFeHRyYVBhZGRpbmdza2lwcGVkX2JpdHNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c2hhdmVGU0VUYWJsZVVzZWRUb29NYW55Qnl0ZXN1c2VkYXZhaWxhYmxlX2J5dGVzTm90RW5vdWdoQnl0ZXNJblNvdXJjZVdlaWdodEJpZ2dlclRoYW5NYXhOdW1CaXRzTWF4Qml0c1Rvb0hpZ2gAAAAAAQAAAAEAAABWAAAAAAAAAAEAAAABAAAA/wAAAFYAAAD0IhAAAAEAAFkAAAABAQAAWwAAAAIBAABVbnN1cHBvcnRlZE9mZnNldG9mZnNldF9jb2RlWmVyb09mZnNldE5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzAAAAAAAEAAAABAAAAF0AAABFeHRyYUJpdHNiaXRzX3JlbWFpbmluZ01pc3NpbmdDb21wcmVzc2lvbk1vZGVNaXNzaW5nQnl0ZUZvclJsZUxsVGFibGVNaXNz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bEVuY29kaW5nSW52YWxpZENoYXJFbmNvZGluZwAAAAAAAAAEAAAABAAAAEEAAABJbnZhbGlkVGFnRW5jb2RpbmdEZXNlcmlhbGl6ZUFueU5vdFN1cHBvcnRlZFNpemVMaW1pdFNlcXVlbmNlTXVzdEhhdmVMZW5ndGgAAAAAAAQAAAAEAAAANQEAAEN1c3RvbU5vbmVTb21lUmF3UkxFQ29tcHJlc3NlZFJlc2VydmVkAAAAAAAABAAAAAQAAAA2AQAAVG9vTWFueUJpdHNudW1fcmVxdWVzdGVkX2JpdHNsaW1pdE5vdEVub3VnaFJlbWFpbmluZ0JpdHNyZXF1ZXN0ZWRyZW1haW5pbmdBY2NMb2dJc1plcm8AAAAAAAABAAAAAQAAADcBAABBY2NMb2dUb29CaWdnb3RtYXgAAAAAAAAEAAAABAAAAEMAAABHZXRCaXRzRXJyb3IAAAAABAAAAAQAAAA4AQAAAAAAAAQAAAAEAAAARQAAAFByb2JhYmlsaXR5Q291bnRlck1pc21hdGNoZXhwZWN0ZWRfc3Vtc3ltYm9sX3Byb2JhYmlsaXRpZXNUb29NYW55U3ltYm9scwAAAAAEAAAABAAAAEYAAABCbG9ja1NpemVUb29MYXJnZXNpemVJbnZhbGlkQmxvY2t0eXBlTnVtYmVybnVtVGFibGVJc1VuaW5pdGlhbGl6ZWQAAAAAAAAMAAAABAAAAEcAAAAAAAAADAAAAAQAAAA5AQAARwAAAHAwEAA6AQAASQAAADsBAABKAAAAPAEAAAAAAAAEAAAABAAAAEsAAABXaW5kb3dUb29CaWdXaW5kb3dUb29TbWFsbAAAAAAAAAQAAAAEAAAATAAAAEZyYW1lRGVzY3JpcHRvckVycm9yRGljdElkVG9vU21hbGxleHBlY3RlZE1pc21hdGNoZWRGcmFtZVNpemVGcmFtZVNpemVJc1plcm9JbnZhbGlkRnJhbWVTaXplTm90RW5vdWdoQnl0ZXNJbkRpY3Rpb25hcnluZWVkT2Zmc2V0VG9vQmlnb2Zmc2V0YnVmX2xlbgAAAAAABAAAAAQAAABNAAAAUmVhZEZyYW1lSGVhZGVyRXJyb3IAAAAABAAAAAQAAABOAAAARnJhbWVIZWFkZXJFcnJvcldpbmRvd1NpemVUb29CaWcAAAAABAAAAAQAAABPAAAARGljdGlvbmFyeURlY29kZUVycm9yAAAAAAAAAAQAAAAEAAAAUAAAAEZhaWxlZFRvUmVhZEJsb2NrSGVhZGVyAAAAAAAEAAAABAAAAFEAAABGYWlsZWRUb1JlYWRCbG9ja0JvZHlGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAABAAAAAQAAABTAAAARlNFRGVjb2RlckVycm9yAAAAAAAEAAAABAAAAFQAAABGU0VUYWJsZUVycm9yU291cmNlSXNFbXB0eU5vdEVub3VnaEJ5dGVzRm9yV2VpZ2h0c2dvdF9ieXRlc2V4cGVjdGVkX2J5dGVzRXh0cmFQYWRkaW5nc2tpcHBlZF9iaXRzVG9vTWFueVdlaWdodHNNaXNzaW5nV2VpZ2h0c0xlZnRvdmVySXNOb3RBUG93ZXJPZjJOb3RFbm91Z2hCeXRlc1RvRGVjb21wcmVzc1dlaWdodHNoYXZlRlNFVGFibGVVc2VkVG9vTWFueUJ5dGVzdXNlZGF2YWlsYWJsZV9ieXRlc05vdEVub3VnaEJ5dGVzSW5Tb3VyY2VXZWlnaHRCaWdnZXJUaGFuTWF4TnVtQml0c01heEJpdHNUb29IaWdoAAAAAAAAAAEAAAABAAAAVgAAAAAAAAABAAAAAQAAAD0BAABWAAAAIDQQAD4BAABZAAAAPwEAAFsAAABAAQAAVW5zdXBwb3J0ZWRPZmZzZXRvZmZzZXRfY29kZVplcm9PZmZzZXROb3RFbm91Z2hCeXRlc0Zvck51bVNlcXVlbmNlcwAAAAAABAAAAAQAAABdAAAARXh0cmFCaXRzYml0c19yZW1haW5pbmdNaXNzaW5nQ29tcHJlc3Npb25Nb2RlTWlzc2luZ0J5dGVGb3JSbGVMbFRhYmxlTWlzc2luZ0J5dGVGb3JSbGVPZlRhYmxlTWlzc2luZ0J5dGVGb3JSbGVNbFRhYmxlAAAAQQEAAAwAAAAEAAAAXwAAAEEBAAAMAAAABAAAAEIBAABfAAAAKDUQAEMBAABiAAAAOwEAAGMAAAA8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YWxzbmVlZGVkAAAAAAAABAAAAAQAAABjAQAAQml0c3RyZWFtUmVhZE1pc21hdGNocmVhZF90aWxEZWNvZGVkTGl0ZXJhbENvdW50TWlzbWF0Y2hkZWNvZGVkAGQBAAAUAAAABAAAALQAAABkAQAAFAAAAAQAAABlAQAAtAAAAMQ8EABmAQAAtwAAADsBAAC4AAAAPAEAAAAAAAAMAAAABAAAALkAAAAAAAAADAAAAAQAAABnAQAAuQAAAAA9EAA6AQAAuwAAADsBAABKAAAAPAEAAGgBAAAYAAAABAAAAL0AAABoAQAAGAAAAAQAAABpAQAAvQAAADw9EABqAQAAwAAAADsBAADBAAAAPAEAAAAAAAAMAAAABAAAAMIAAAAAAAAADAAAAAQAAABrAQAAwgAAAHg9EABsAQAAxQAAADsBAADGAAAAPAEAAElsbGVnYWxMaXRlcmFsU2VjdGlvblR5cGVOb3RFbm91Z2hCeXRlc25lZWRfYXRfbGVhc3QDAAAAAwAAAAoAAAAIAAAA8i4QAPUuEAD4LhAAAi8QAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnMAAAAIPhAAbQAAACoCAAARAAAAYW4gYXJyYXkgb2YgbGVuZ3RoIDQAAAAAAAAAAAEAAABtAQBBtP3AAAv1KAEAAABtAQAAAAAAAAgAAAAEAAAAbgEAAHN0cnVjdCBXbGcwSGVhZGVyIHdpdGggNyBlbGVtZW50cwAAAMw+EAAhAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBPbmNlIHN0YXRl+D4QADwAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvb25jZS9ub190aHJlYWRzLnJzPD8QAHwAAAA1AAAAEgAAAGZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcgDIPxAAGwAAACUAAAACAAAA5D8QAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZGVjb2RpbmcvYmxvY2tfZGVjb2Rlci5yc0J1ZyBpbiB0aGlzIGxpYnJhcnkA+D8QAGwAAACYAAAAFgAAAFdyb25nIG51bWJlciBvZiBsaXRlcmFsczogLCBTaG91bGQgaGF2ZSBiZWVuOiAAAIhAEAAaAAAAokAQABQAAAD4PxAAbAAAAK0AAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogYnl0ZXNfdXNlZF9pbl9saXRlcmFsc19zZWN0aW9uID09IHVwcGVyX2xpbWl0X2Zvcl9saXRlcmFscyBhcyB1MzIA+D8QAGwAAACzAAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHUzMjo6ZnJvbShieXRlc19pbl9saXRlcmFsc19oZWFkZXIpICsgYnl0ZXNfdXNlZF9pbl9saXRlcmFsc19zZWN0aW9uICsKICAgICAgICAgICAgdTMyOjpmcm9tKGJ5dGVzX2luX3NlcXVlbmNlX2hlYWRlcikgKyByYXcubGVuKCkgYXMgdTMyID09CiAgICBoZWFkZXIuY29udGVudF9zaXplAAD4PxAAbAAAAMEAAAAJAAAA+D8QAGwAAAC6AAAAFwAAAPg/EABsAAAAiwAAABcAAABIb3cgZGlkIHlvdSBldmVuIGdldCB0aGlzLiBUaGUgZGVjb2RlciBzaG91bGQgZXJyb3Igb3V0IGlmIGl0IGRldGVjdHMgYSByZXNlcnZlZC10eXBlIGJsb2NrAPg/EABsAAAAcAAAABEAAABmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAkEIQABsAAAAlAAAAAgAAAKxCEABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5AAAAAAQAAAAEAAAAbwEAAAAAAAAEAAAABAAAAHABAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlblJhd1JMRUNvbXByZXNzZWRSZXNlcnZlZAAAAAAAAAAEAAAABAAAAEAAAABUb29NYW55Qml0c251bV9yZXF1ZXN0ZWRfYml0c2xpbWl0AAAAAAAABAAAAAQAAABBAAAATm90RW5vdWdoUmVtYWluaW5nQml0c3JlcXVlc3RlZHJlbWFpbmluZ0FjY0xvZ0lzWmVybwAAAAABAAAAAQAAAHEBAABBY2NMb2dUb29CaWdnb3RtYXgAAAAAAAAEAAAABAAAAEMAAABHZXRCaXRzRXJyb3IAAAAABAAAAAQAAAByAQAAAAAAAAQAAAAEAAAARQAAAFByb2JhYmlsaXR5Q291bnRlck1pc21hdGNoZXhwZWN0ZWRfc3Vtc3ltYm9sX3Byb2JhYmlsaXRpZXNUb29NYW55U3ltYm9scwAAAAAEAAAABAAAAEYAAABCbG9ja1NpemVUb29MYXJnZXNpemVJbnZhbGlkQmxvY2t0eXBlTnVtYmVybnVtVGFibGVJc1VuaW5pdGlhbGl6ZWQAAAAAAAAMAAAABAAAAEcAAAAAAAAADAAAAAQAAABzAQAARwAAALREEABKAAAASQAAAHQBAABKAAAAdQEAAAAAAAAEAAAABAAAAEsAAABXaW5kb3dUb29CaWdXaW5kb3dUb29TbWFsbAAAAAAAAAQAAAAEAAAATAAAAEZyYW1lRGVzY3JpcHRvckVycm9yRGljdElkVG9vU21hbGxleHBlY3RlZE1pc21hdGNoZWRGcmFtZVNpemVGcmFtZVNpemVJc1plcm9JbnZhbGlkRnJhbWVTaXplTm90RW5vdWdoQnl0ZXNJbkRpY3Rpb25hcnluZWVkT2Zmc2V0VG9vQmlnb2Zmc2V0YnVmX2xlbgAAAAAABAAAAAQAAABTAAAARlNFRGVjb2RlckVycm9yAAAAAAAEAAAABAAAAFQAAABGU0VUYWJsZUVycm9yU291cmNlSXNFbXB0eU5vdEVub3VnaEJ5dGVzRm9yV2VpZ2h0c2dvdF9ieXRlc2V4cGVjdGVkX2J5dGVzAAAAAAAAAAQAAAAEAAAAVQAAAEV4dHJhUGFkZGluZ3NraXBwZWRfYml0c1Rvb01hbnlXZWlnaHRzTWlzc2luZ1dlaWdodHNMZWZ0b3ZlcklzTm90QVBvd2VyT2YyTm90RW5vdWdoQnl0ZXNUb0RlY29tcHJlc3NXZWlnaHRzaGF2ZUZTRVRhYmxlVXNlZFRvb01hbnlCeXRlc3VzZWRhdmFpbGFibGVfYnl0ZXNOb3RFbm91Z2hCeXRlc0luU291cmNlV2VpZ2h0QmlnZ2VyVGhhbk1heE51bUJpdHNNYXhCaXRzVG9vSGlnaAAAAAABAAAAAQAAAFYAAAAAAAAAAQAAAAEAAAB2AQAAVgAAACRHEABbAAAAWQAAAHcBAABbAAAAeAEAAFVuc3VwcG9ydGVkT2Zmc2V0b2Zmc2V0X2NvZGVaZXJvT2Zmc2V0Tm90RW5vdWdoQnl0ZXNGb3JOdW1TZXF1ZW5jZXMAAAAAAAQAAAAEAAAAXQAAAEV4dHJhQml0c2JpdHNfcmVtYWluaW5nTWlzc2luZ0NvbXByZXNzaW9uTW9kZU1pc3NpbmdCeXRlRm9yUmxlTGxUYWJsZU1pc3NpbmdCeXRlRm9yUmxlT2ZUYWJsZU1pc3NpbmdCeXRlRm9yUmxlTWxUYWJsZQAAAHkBAAAMAAAABAAAAF8AAAB5AQAADAAAAAQAAAB6AQAAXwAAACxIEAB7AQAAYgAAAHQBAABjAAAAdQEAAAAAAAAQAAAACAAAAGQAAAAAAAAAEAAAAAgAAAB8AQAAZAAAAGhIEAB9AQAAZwAAAH4BAABoAAAAfwEAAIABAAAYAAAABAAAAGoAAACAAQAAGAAAAAQAAACBAQAAagAAAKRIEACCAQAAbQAAAHQBAABuAAAAdQEAAIMBAAAIAAAABAAAAHAAAACDAQAACAAAAAQAAACEAQAAcAAAAOBIEACFAQAAcwAAAHQBAAB0AAAAdQEAAIYBAAAYAAAABAAAAHYAAACGAQAAGAAAAAQAAACHAQAAdgAAABxJEACIAQAAeQAAAHQBAAB6AAAAdQEAAIkBAAAIAAAABAAAACUAAACJAQAACAAAAAQAAAAmAAAAJQAAAFhJEAAnAAAAKAAAACkAAAAqAAAAdQEAAAAAAAAMAAAABAAAAHsAAAAAAAAADAAAAAQAAACKAQAAewAAAJRJEACLAQAAfgAAAHQBAAB/AAAAdQEAAIwBAAAUAAAABAAAAIEAAACMAQAAFAAAAAQAAACNAQAAgQAAANBJEACOAQAAhAAAAHQBAACFAAAAdQEAAAAAAAAEAAAABAAAAFIAAABSZWFkRXJyb3JGb3VuZFJlc2VydmVkQmxvY2sAAAAAAAQAAAAEAAAAhgAAAEJsb2NrVHlwZUVycm9yAAAAAAAABAAAAAQAAACHAAAAQmxvY2tTaXplRXJyb3JCbG9ja0NvbnRlbnRSZWFkRXJyb3JNYWxmb3JtZWRTZWN0aW9uSGVhZGVyZXhwZWN0ZWRfbGVucmVtYWluaW5nX2J5dGVzAAAAAAQAAAAEAAAAiAAAAERlY29tcHJlc3NMaXRlcmFsc0Vycm9yAAAAAAAEAAAABAAAAIkAAABMaXRlcmFsc1NlY3Rpb25QYXJzZUVycm9yAAAAAAAAAAQAAAAEAAAAigAAAFNlcXVlbmNlc0hlYWRlclBhcnNlRXJyb3IAAAAAAAAABAAAAAQAAACLAAAARGVjb2RlU2VxdWVuY2VFcnJvcgAAAAAABAAAAAQAAACMAAAARXhlY3V0ZVNlcXVlbmNlc0Vycm9ySW52YWxpZEZyYW1lQ29udGVudFNpemVGbGFnTWFnaWNOdW1iZXJSZWFkRXJyb3JCYWRNYWdpY051bWJlckZyYW1lRGVzY3JpcHRvclJlYWRFcnJvckludmFsaWRGcmFtZURlc2NyaXB0b3JXaW5kb3dEZXNjcmlwdG9yUmVhZEVycm9yRGljdGlvbmFyeUlkUmVhZEVycm9yRnJhbWVDb250ZW50U2l6ZVJlYWRFcnJvclNraXBGcmFtZW1hZ2ljX251bWJlcmxlbmd0aAAAAAAAAAQAAAAEAAAAjQAAAEJhZE1hZ2ljTnVtAAAAAAAEAAAABAAAAI4AAABIdWZmbWFuVGFibGVFcnJvcgAAAAAAAAAEAAAABAAAAI8AAABEZWNvZGVidWZmZXJFcnJvck5vdEVub3VnaEJ5dGVzRm9yU2VxdWVuY2V3YW50ZWQAAAAAAQAAAAEAAACQAAAAAAAAAAEAAAABAAAAjwEAAJAAAADUTBAAWwAAAJIAAAB3AQAAWwAAAHgBAAAAAAAABAAAAAQAAACTAAAAAAAAAAQAAAAEAAAAkAEAAJMAAAAQTRAASgAAAJUAAAB0AQAASgAAAHUBAACRAQAAFAAAAAQAAACXAAAAkQEAABQAAAAEAAAAkgEAAJcAAABMTRAAkwEAAJoAAAB0AQAAmwAAAHUBAAAAAAAADAAAAAQAAACcAAAAAAAAAAwAAAAEAAAAlAEAAJwAAACITRAAlQEAAJ8AAAB0AQAAoAAAAHUBAAAAAAAACAAAAAQAAAChAAAAAAAAAAgAAAAEAAAAlgEAAKEAAADETRAASgAAAKMAAAB0AQAASgAAAHUBAACXAQAAFAAAAAQAAAClAAAAlwEAABQAAAAEAAAAmAEAAKUAAAAAThAAmQEAAKgAAAB0AQAAqQAAAHUBAAAAAAAADAAAAAQAAACqAAAAAAAAAAwAAAAEAAAAmgEAAKoAAAA8ThAAmwEAAK0AAAB0AQAArgAAAHUBAABEZWNvZGVyU3RhdGVJc0ZhaWxlZEV4cGVjdGVkSGVhZGVyT2ZQcmV2aW91c0Jsb2NrAAAAAAAAAAEAAAABAAAAnAEAAHN0ZXBzb3VyY2UAAAAAAAAEAAAABAAAALAAAABEZWNvbXByZXNzQmxvY2tFcnJvck1pc3NpbmdDb21wcmVzc2VkU2l6ZU1pc3NpbmdOdW1TdHJlYW1zAAAAAAAABAAAAAQAAACxAAAASHVmZm1hbkRlY29kZXJFcnJvclVuaW5pdGlhbGl6ZWRIdWZmbWFuVGFibGVNaXNzaW5nQnl0ZXNGb3JKdW1wSGVhZGVyTWlzc2luZ0J5dGVzRm9yTGl0ZXJhbHNuZWVkZWQAAAAAAAAEAAAABAAAAJ0BAABCaXRzdHJlYW1SZWFkTWlzbWF0Y2hyZWFkX3RpbERlY29kZWRMaXRlcmFsQ291bnRNaXNtYXRjaGRlY29kZWQAngEAABQAAAAEAAAAtAAAAJ4BAAAUAAAABAAAAJ8BAAC0AAAA2E8QAKABAAC3AAAAdAEAALgAAAB1AQAAAAAAAAwAAAAEAAAAuQAAAAAAAAAMAAAABAAAAKEBAAC5AAAAFFAQAEoAAAC7AAAAdAEAAEoAAAB1AQAAogEAABgAAAAEAAAAvQAAAKIBAAAYAAAABAAAAKMBAAC9AAAAUFAQAKQBAADAAAAAdAEAAMEAAAB1AQAAAAAAAAwAAAAEAAAAwgAAAAAAAAAMAAAABAAAAKUBAADCAAAAjFAQAMYAAADFAAAAdAEAAMYAAAB1AQAASWxsZWdhbExpdGVyYWxTZWN0aW9uVHlwZU5vdEVub3VnaEJ5dGVzbmVlZF9hdF9sZWFzdAMAAAADAAAACgAAAAgAAAAlQxAAKEMQACtDEAA1QxAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAAHFEQAGoAAACyAQAAMQAAAGFzc2VydGlvbiBmYWlsZWQ6IGZpbGxlZCA8PSBzZWxmLmJ1Zi5pbml0L1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9jb3JlL3NyYy9pby9ib3Jyb3dlZF9idWYucnMAAADBURAAdAAAAB0BAAAJAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnNIUhAAgAAAAFgCAAAwAAAASW52YWxpZCBGcmFtZV9Db250ZW50X1NpemVfRmxhZzsgSXM6ICwgU2hvdWxkIGJlIG9uZSBvZjogMCwgMSwgMiwgMwDYUhAAJQAAAP1SEAAeAEG0psEAC8piwAMAAHdpbmRvd19zaXplIGJpZ2dlciB0aGFuIGFsbG93ZWQgbWF4aW11bS4gSXM6ICwgU2hvdWxkIGJlIGxvd2VyIHRoYW46IAAAADhTEAAtAAAAZVMQABgAAAAABAAAAAAAAHdpbmRvd19zaXplIHNtYWxsZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0uIElzOiAsIFNob3VsZCBiZSBncmVhdGVyIHRoYW46IJhTEAAuAAAAxlMQABoAAAABAAAAAAAAAE5vdCBlbm91Z2ggYnl0ZXMgaW4gZGljdF9pZC4gSXM6ICwgU2hvdWxkIGJlOiAAAPhTEAAhAAAAGVQQAA0AAABmcmFtZV9jb250ZW50X3NpemUgZG9lcyBub3QgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoLiBJczogADhUEAA3AAAAGVQQAA0AAABmcmFtZV9jb250ZW50X3NpemUgd2FzIHplcm9JbnZhbGlkIGZyYW1lX2NvbnRlbnRfc2l6ZS4gSXM6ICwgU2hvdWxkIGJlIG9uZSBvZiAxLCAyLCA0LCA4IGJ5dGVzAACbVBAAIAAAALtUEAAjAAAARXJyb3Igd2hpbGUgcmVhZGluZyBtYWdpYyBudW1iZXI6IAAA8FQQACIAAABSZWFkIHdyb25nIG1hZ2ljIG51bWJlcjogMHgAHFUQABsAAABFcnJvciB3aGlsZSByZWFkaW5nIGZyYW1lIGRlc2NyaXB0b3I6IAAAQFUQACYAAABFcnJvciB3aGlsZSByZWFkaW5nIHdpbmRvdyBkZXNjcmlwdG9yOiAAcFUQACcAAABFcnJvciB3aGlsZSByZWFkaW5nIGRpY3Rpb25hcnkgaWQ6IACgVRAAIwAAAEVycm9yIHdoaWxlIHJlYWRpbmcgZnJhbWUgY29udGVudCBzaXplOiDMVRAAKAAAAFNraXBwYWJsZUZyYW1lIGVuY291bnRlcmVkIHdpdGggTWFnaWNOdW1iZXIgMHggYW5kIGxlbmd0aCAgYnl0ZXP8VRAALgAAACpWEAAMAAAANlYQAAYAAABFcnJvciB3aGlsZSByZWFkaW5nIHRoZSBibG9jayBoZWFkZXJSZXNlcnZlZCBibG9jayBvY2N1cmVkLiBUaGlzIGlzIGNvbnNpZGVyZWQgY29ycnVwdGlvbiBieSB0aGUgZG9jdW1lbnRhdGlvbkVycm9yIGdldHRpbmcgYmxvY2sgdHlwZTogwlYQABoAAABFcnJvciBnZXR0aW5nIGJsb2NrIGNvbnRlbnQgc2l6ZTogAADkVhAAIgAAAEludmFsaWQgQmxvY2t0eXBlIG51bWJlci4gSXM6ICBTaG91bGQgYmUgb25lIG9mOiAwLCAxLCAyLCAzICgzIGlzIHJlc2VydmVkIHRob3VnaAAAABBXEAAeAAAALlcQADMAAAAAAAIAQmxvY2tzaXplIHdhcyBiaWdnZXIgdGhhbiB0aGUgYWJzb2x1dGUgbWF4aW11bSAgKDEyOGtiKS4gSXM6IAAAAHhXEAAvAAAAp1cQAA4AAABFcnJvciB3aGlsZSByZWFkaW5nIHRoZSBibG9jayBjb250ZW50OiAAyFcQACcAAABNYWxmb3JtZWQgc2VjdGlvbiBoZWFkZXIuIFNheXMgbGl0ZXJhbHMgd291bGQgYmUgdGhpcyBsb25nOiAgYnV0IHRoZXJlIGFyZSBvbmx5ICBieXRlcyBsZWZ0APhXEAA8AAAANFgQABQAAABIWBAACwAAAENhbid0IGRlY29kZSBuZXh0IGJsb2NrIGlmIGZhaWxlZCBhbG9uZyB0aGUgd2F5LiBSZXN1bHRzIHdpbGwgYmUgbm9uc2Vuc2VDYW4ndCBkZWNvZGUgbmV4dCBibG9jayBib2R5LCB3aGlsZSBleHBlY3RpbmcgdG8gZGVjb2RlIHRoZSBoZWFkZXIgb2YgdGhlIHByZXZpb3VzIGJsb2NrLiBSZXN1bHRzIHdpbGwgYmUgbm9uc2Vuc2VFcnJvciB3aGlsZSByZWFkaW5nIGJ5dGVzIGZvciA6IAAnWRAAHgAAAEVZEAACAAAATmVlZCAgYnl0ZXMgZnJvbSB0aGUgZGljdGlvbmFyeSBidXQgaXQgaXMgb25seSAgYnl0ZXMgbG9uZwAAWFkQAAUAAABdWRAAKgAAAIdZEAALAAAAb2Zmc2V0OiAgYmlnZ2VyIHRoYW4gYnVmZmVyOiAAAACsWRAACAAAALRZEAAVAAAAQmFkIG1hZ2ljX251bSBhdCBzdGFydCBvZiB0aGUgZGljdGlvbmFyeTsgR290OiAsIEV4cGVjdGVkOiAA3FkQAC8AAAALWhAADAAAADekMOxTcGVjaWZpZWQgd2luZG93X3NpemUgaXMgdG9vIGJpZzsgUmVxdWVzdGVkOiAsIE1heDogLFoQAC0AAABZWhAABwAAAEZhaWxlZCB0byBwYXJzZS9kZWNvZGUgYmxvY2sgYm9keTogAHBaEAAjAAAARmFpbGVkIHRvIHBhcnNlIGJsb2NrIGhlYWRlcjogAACcWhAAHgAAAEZhaWxlZCB0byByZWFkIGNoZWNrc3VtOiAAAADEWhAAGQAAAERlY29kZXIgbXVzdCBpbml0aWFsaXplZCBvciByZXNldCBiZWZvcmUgdXNpbmcgaXREZWNvZGVyIGVuY291bnRlcmVkIGVycm9yIHdoaWxlIGluaXRpYWxpemluZzogABlbEAAuAAAARGVjb2RlciBlbmNvdW50ZXJlZCBlcnJvciB3aGlsZSBkcmFpbmluZyB0aGUgZGVjb2RlYnVmZmVyOiAAUFsQADsAAABGYWlsZWQgdG8gc2tpcCBieXRlcyBmb3IgdGhlIGxlbmd0aCBnaXZlbiBpbiB0aGUgZnJhbWUgaGVhZGVyVGFyZ2V0IG11c3QgaGF2ZSBhdCBsZWFzdCBhcyBtYW55IGJ5dGVzIGFzIHRoZSBjb250ZW50c2l6ZSBvZiB0aGUgZnJhbWUgcmVwb3J0c0ZyYW1lIGhlYWRlciBzcGVjaWZpZWQgZGljdGlvbmFyeSBpZCAweCB0aGF0IHdhc250IHByb3ZpZGVkIGJ5IGFkZF9kaWN0KCkgb3IgcmVzZXRfd2l0aF9kaWN0KCkAACBcEAAnAAAAR1wQADcAAABjb21wcmVzc2VkIHNpemUgd2FzIG5vbmUgZXZlbiB0aG91Z2ggaXQgbXVzdCBiZSBzZXQgdG8gc29tZXRoaW5nIGZvciBjb21wcmVzc2VkIGxpdGVyYWxzbnVtX3N0cmVhbXMgd2FzIG5vbmUgZXZlbiB0aG91Z2ggaXQgbXVzdCBiZSBzZXQgdG8gc29tZXRoaW5nICgxIG9yIDQpIGZvciBjb21wcmVzc2VkIGxpdGVyYWxzVHJpZWQgdG8gcmV1c2UgaHVmZm1hbiB0YWJsZSBidXQgaXQgd2FzIG5ldmVyIGluaXRpYWxpemVkTmVlZCA2IGJ5dGVzIHRvIGRlY29kZSBqdW1wIGhlYWRlciwgZ290IAAAfl0QACgAAAA2VhAABgAAAE5lZWQgYXQgbGVhc3QgIGJ5dGVzIHRvIGRlY29kZSBsaXRlcmFscy4gSGF2ZTogALhdEAAOAAAAxl0QACEAAAA2VhAABgAAAFBhZGRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2Vfc2VjdGlvbiB3YXMgbW9yZSB0aGFuIGEgYnl0ZSBsb25nOiAgYml0cy4gUHJvYmFibHkgY2F1c2VkIGJ5IGRhdGEgY29ycnVwdGlvbgAAXhAARgAAAEZeEAApAAAAQml0c3RyZWFtIHdhcyByZWFkIHRpbGw6ICwgc2hvdWxkIGhhdmUgYmVlbjogAAAAgF4QABkAAACZXhAAFAAAAERpZCBub3QgZGVjb2RlIGVub3VnaCBsaXRlcmFsczogLCBTaG91bGQgaGF2ZSBiZWVuOiDAXhAAIAAAAOBeEAAUAAAAU2VxdWVuY2Ugd2FudHMgdG8gY29weSB1cCB0byBieXRlIC4gQnl0ZXMgaW4gbGl0ZXJhbHNidWZmZXI6IAAAAARfEAAiAAAAJl8QABsAAABJbGxlZ2FsIG9mZnNldDogMCBmb3VuZERvIG5vdCBzdXBwb3J0IG9mZnNldHMgYmlnZ2VyIHRoYW4gMTw8MzI7IGdvdDogAABrXxAALwAAAFJlYWQgYW4gb2Zmc2V0ID09IDAuIFRoYXQgaXMgYW4gaWxsZWdhbCB2YWx1ZSBmb3Igb2Zmc2V0c0J5dGVzdHJlYW0gZGlkIG5vdCBjb250YWluIGVub3VnaCBieXRlcyB0byBkZWNvZGUgbnVtX3NlcXVlbmNlc2NvbXByZXNzaW9uIG1vZGVzIGFyZSBub25lIGJ1dCB0aGV5IG11c3QgYmUgc2V0IHRvIHNvbWV0aGluZ05lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBsbCB0YWJsZU5lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBvZiB0YWJsZU5lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBtbCB0YWJsZUlsbGVnYWwgbGl0ZXJhbHNzZWN0aW9udHlwZS4gSXM6ICwgbXVzdCBiZSBpbjogMCwgMSwgMiwgMwAAAMRgEAAhAAAA5WAQABgAAABOb3QgZW5vdWdoIGJ5dGUgdG8gcGFyc2UgdGhlIGxpdGVyYWxzIHNlY3Rpb24gaGVhZGVyLiBIYXZlOiAsIE5lZWQ6IBBhEAA8AAAATGEQAAgAAABzb3VyY2UgbXVzdCBoYXZlIGF0IGxlYXN0ICBieXRlcyB0byBwYXJzZSBoZWFkZXI7IGdvdCAAAGRhEAAaAAAAfmEQABwAAAA2VhAABgAAAEFjY2xvZyBtdXN0IGJlIGF0IGxlYXN0IDFGb3VuZCBGU0UgYWNjX2xvZzogIGJpZ2dlciB0aGFuIGFsbG93ZWQgbWF4aW11bSBpbiB0aGlzIGNhc2U6IADNYRAAEwAAAOBhEAArAAAAVGhlIGNvdW50ZXIgKCkgZXhjZWVkZWQgdGhlIGV4cGVjdGVkIHN1bTogLiBUaGlzIG1lYW5zIGFuIGVycm9yIG9yIGNvcnJ1cHRlZCBkYXRhIAogHGIQAA0AAAApYhAAHQAAAEZiEAAqAAAAVGhlcmUgYXJlIHRvbyBtYW55IHN5bWJvbHMgaW4gdGhpcyBkaXN0cmlidXRpb246IC4gTWF4OiAyNTYAiGIQADEAAAC5YhAACgAAAFRyaWVkIHRvIHVzZSBhbiB1bmluaXRpYWxpemVkIHRhYmxlIVNvdXJjZSBuZWVkcyB0byBoYXZlIGF0IGxlYXN0IG9uZSBieXRlSGVhZGVyIHNheXMgdGhlcmUgc2hvdWxkIGJlICBieXRlcyBmb3IgdGhlIHdlaWdodHMgYnV0IHRoZXJlIGFyZSBvbmx5ICBieXRlcyBpbiB0aGUgc3RyZWFtHmMQABwAAAA6YxAAKgAAAGRjEAAUAAAATW9yZSB0aGFuIDI1NSB3ZWlnaHRzIGRlY29kZWQgKGdvdCAgd2VpZ2h0cykuIFN0cmVhbSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAAJBjEAAjAAAAs2MQACcAAABDYW4ndCBidWlsZCBodWZmbWFuIHRhYmxlIHdpdGhvdXQgYW55IHdlaWdodHNMZWZ0b3ZlciBtdXN0IGJlIHBvd2VyIG9mIHR3byBidXQgaXM6IAAZZBAAJgAAAE5vdCBlbm91Z2ggYnl0ZXMgaW4gc3RyZWFtIHRvIGRlY29tcHJlc3Mgd2VpZ2h0cy4gSXM6IAAASGQQADYAAAAZVBAADQAAAEZTRSB0YWJsZSB1c2VkIG1vcmUgYnl0ZXM6ICB0aGFuIHdlcmUgbWVhbnQgdG8gYmUgdXNlZCBmb3IgdGhlIHdob2xlIHN0cmVhbSBvZiBodWZmbWFuIHdlaWdodHMgKCkAAACQZBAAGwAAAKtkEABFAAAA8GQQAAEAAABTb3VyY2UgbmVlZHMgdG8gaGF2ZSBhdCBsZWFzdCAgYnl0ZXMsIGdvdDogAAxlEAAeAAAAKmUQAA0AAAALQ2FudCBoYXZlIHdlaWdodDogIGJpZ2dlciB0aGFuIG1heF9udW1fYml0czogAABJZRAAEgAAAFtlEAAbAAAAbWF4X2JpdHMgZGVyaXZlZCBmcm9tIHdlaWdodHMgaXM6ICBzaG91bGQgYmUgbG93ZXIgdGhhbjogAAAAiGUQACIAAACqZRAAFwAAAENhbnQgc2VydmUgdGhpcyByZXF1ZXN0LiBUaGUgcmVhZGVyIGlzIGxpbWl0ZWQgdG8gIGJpdHMsIHJlcXVlc3RlZCAgYml0c9RlEAAyAAAABmYQABEAAAAXZhAABQAAAENhbid0IHJlYWQgIGJpdHMsIG9ubHkgaGF2ZSAgYml0cyBsZWZ0AAA0ZhAACwAAAD9mEAARAAAAUGYQAAoAAAAAAAAABAAAAAQAAADJAQAAAAAAAAQAAAAEAAAAygEAAFRvb01hbnlCaXRzbnVtX3JlcXVlc3RlZF9iaXRzbGltaXQAAAAAAAAEAAAABAAAAMsBAABOb3RFbm91Z2hSZW1haW5pbmdCaXRzcmVxdWVzdGVkcmVtYWluaW5nSW52YWxpZEZyYW1lQ29udGVudFNpemVGbGFnZ290AAAAAAAABAAAAAQAAADMAQAAV2luZG93VG9vQmlnV2luZG93VG9vU21hbGwAAAAAAAAEAAAABAAAAK4BAABGcmFtZURlc2NyaXB0b3JFcnJvckRpY3RJZFRvb1NtYWxsZXhwZWN0ZWRNaXNtYXRjaGVkRnJhbWVTaXplRnJhbWVTaXplSXNaZXJvSW52YWxpZEZyYW1lU2l6ZQAAAAAEAAAABAAAAM0BAABNYWdpY051bWJlclJlYWRFcnJvcgAAAAAEAAAABAAAAM4BAABCYWRNYWdpY051bWJlckZyYW1lRGVzY3JpcHRvclJlYWRFcnJvckludmFsaWRGcmFtZURlc2NyaXB0b3JXaW5kb3dEZXNjcmlwdG9yUmVhZEVycm9yRGljdGlvbmFyeUlkUmVhZEVycm9yRnJhbWVDb250ZW50U2l6ZVJlYWRFcnJvcgAAAAAABAAAAAQAAADPAQAAU2tpcEZyYW1lbWFnaWNfbnVtYmVybGVuZ3RoQmxvY2tDb250ZW50UmVhZEVycm9yTWFsZm9ybWVkU2VjdGlvbkhlYWRlcmV4cGVjdGVkX2xlbnJlbWFpbmluZ19ieXRlcwAAAAAAAAAEAAAABAAAALIBAABEZWNvbXByZXNzTGl0ZXJhbHNFcnJvcgAAAAAABAAAAAQAAACzAQAATGl0ZXJhbHNTZWN0aW9uUGFyc2VFcnJvcgAAAAAAAAAEAAAABAAAALQBAABTZXF1ZW5jZXNIZWFkZXJQYXJzZUVycm9yAAAAAAAAAAQAAAAEAAAAtQEAAERlY29kZVNlcXVlbmNlRXJyb3IAAAAAAAQAAAAEAAAAtgEAAEV4ZWN1dGVTZXF1ZW5jZXNFcnJvck5vdEVub3VnaEJ5dGVzSW5EaWN0aW9uYXJ5bmVlZE9mZnNldFRvb0JpZ29mZnNldGJ1Zl9sZW4AAAAABAAAAAQAAAC4AQAAQmFkTWFnaWNOdW0AAAAAAAQAAAAEAAAAuQEAAEZTRVRhYmxlRXJyb3IAAAAAAAAABAAAAAQAAAC6AQAASHVmZm1hblRhYmxlRXJyb3JNaXNzaW5nQ29tcHJlc3NlZFNpemVNaXNzaW5nTnVtU3RyZWFtcwAAAAAABAAAAAQAAADBAQAAR2V0Qml0c0Vycm9yAAAAAAQAAAAEAAAAwgEAAEh1ZmZtYW5EZWNvZGVyRXJyb3JVbmluaXRpYWxpemVkSHVmZm1hblRhYmxlTWlzc2luZ0J5dGVzRm9ySnVtcEhlYWRlck1pc3NpbmdCeXRlc0ZvckxpdGVyYWxzbmVlZGVkAAAAAAAABAAAAAQAAADQAQAARXh0cmFQYWRkaW5nc2tpcHBlZF9iaXRzAAAAAAQAAAAEAAAA0QEAAAAAAAAEAAAABAAAANIBAABCaXRzdHJlYW1SZWFkTWlzbWF0Y2hyZWFkX3RpbERlY29kZWRMaXRlcmFsQ291bnRNaXNtYXRjaGRlY29kZWQAAAAAAAQAAAAEAAAAxQEAAERlY29kZWJ1ZmZlckVycm9yTm90RW5vdWdoQnl0ZXNGb3JTZXF1ZW5jZXdhbnRlZGhhdmVaZXJvT2Zmc2V0AAAAAAAABAAAAAQAAADGAQAARlNFRGVjb2RlckVycm9yVW5zdXBwb3J0ZWRPZmZzZXRvZmZzZXRfY29kZU5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzRXh0cmFCaXRzYml0c19yZW1haW5pbmdNaXNzaW5nQ29tcHJlc3Npb25Nb2RlTWlzc2luZ0J5dGVGb3JSbGVMbFRhYmxlTWlzc2luZ0J5dGVGb3JSbGVPZlRhYmxlTWlzc2luZ0J5dGVGb3JSbGVNbFRhYmxlSWxsZWdhbExpdGVyYWxTZWN0aW9uVHlwZU5vdEVub3VnaEJ5dGVzAAAAAAEAAAABAAAA0wEAAG5lZWRfYXRfbGVhc3RBY2NMb2dJc1plcm9BY2NMb2dUb29CaWdtYXgAAAAABAAAAAQAAADHAQAAUHJvYmFiaWxpdHlDb3VudGVyTWlzbWF0Y2hleHBlY3RlZF9zdW1zeW1ib2xfcHJvYmFiaWxpdGllc1Rvb01hbnlTeW1ib2xzVGFibGVJc1VuaW5pdGlhbGl6ZWRTb3VyY2VJc0VtcHR5Tm90RW5vdWdoQnl0ZXNGb3JXZWlnaHRzZ290X2J5dGVzZXhwZWN0ZWRfYnl0ZXNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c0ZTRVRhYmxlVXNlZFRvb01hbnlCeXRlc3VzZWRhdmFpbGFibGVfYnl0ZXNOb3RFbm91Z2hCeXRlc0luU291cmNlV2VpZ2h0QmlnZ2VyVGhhbk1heE51bUJpdHNNYXhCaXRzVG9vSGlnaC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnMAAABQbhAAbQAAACoCAAARAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9iaXRfcmVhZGVyX3JldmVyc2UucnMAAADQbhAAcQAAADcAAABFAAAA0G4QAHEAAAA3AAAALwAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGXQbhAAcQAAAEYAAAANAAAA0G4QAHEAAABKAAAAHgAAAFRoaXMgaXMgYSBidWcgaW4gdGhlIHByb2dyYW0uIFRoZXJlIHNob3VsZCBvbmx5IGJlIHZhbHVlcyBiZXR3ZWVuIDAuLjMvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2Jsb2Nrcy9saXRlcmFsc19zZWN0aW9uLnJzAPJvEABtAAAAewAAADQAAADybxAAbQAAAJAAAABXAAAA8m8QAG0AAACXAAAAKgAAAPJvEABtAAAAmAAAACoAAADybxAAbQAAAJsAAAAaAAAA8m8QAG0AAACoAAAAGgAAAPJvEABtAAAAtAAAAEQAAADybxAAbQAAALgAAABGAAAA8m8QAG0AAADAAAAAKgAAAPJvEABtAAAAwQAAACsAAADybxAAbQAAAMUAAABIAAAA8m8QAG0AAADNAAAAKgAAAPJvEABtAAAAzgAAACsAAADybxAAbQAAANMAAAAuAAAA8m8QAG0AAADUAAAALgAAAENhbnQgcmV0dXJuIHRoaXMgbWFueSBiaXRzL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9iaXRfcmVhZGVyLnJzAGpxEABpAAAANgAAAA0AAABqcRAAaQAAAE8AAAAjAAAAYXNzZXJ0aW9uIGZhaWxlZDogbiAtIGJpdF9zaGlmdCA9PSBiaXRzX2luX2xhc3RfYnl0ZV9uZWVkZWQAanEQAGkAAABtAAAADQAAAGpxEABpAAAAcQAAAB8AAABqcRAAaQAAAGgAAAAkAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5pZHggJSA4ID09IDAAanEQAGkAAABkAAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaWR4ID09IG9sZF9pZHggKyBuAAAAanEQAGkAAAB3AAAACQAAAFNlcV9zdW06ICBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZGlmZmVyZW5jZSBpbiBidWZmZXJzaXplOiAAANByEAAJAAAA2XIQADEAAAAvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2RlY29kaW5nL3NlcXVlbmNlX2V4ZWN1dGlvbi5ycwAAABxzEABxAAAALwAAAAUAAAAccxAAcQAAAAsAAAAkAAAAHHMQAHEAAAAVAAAANAAAAEFsbG9jYXRpbmcgbmV3IHNwYWNlIGZvciB0aGUgcmluZ2J1ZmZlciBmYWlsZWQvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2RlY29kaW5nL3JpbmdidWZmZXIucnMA7nMQAGkAAABhAAAAIwAAAENvdWxkIG5vdCBjcmVhdGUgbGF5b3V0IGZvciB1OCBhcnJheSBvZiBzaXplIAAAAGh0EAAtAAAA7nMQAGkAAABaAAAAIQAAAO5zEABpAAAAtAAAABUAAADucxAAaQAAAL4AAAAVAAAA7nMQAGkAAAB3AQAAHQAAAO5zEABpAAAAzgEAABUAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwDwdBAAawAAAKIAAAAZAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9saXRlcmFsc19zZWN0aW9uX2RlY29kZXIucnMAbHUQAHcAAAAUAAAAIgAAAGx1EAB3AAAAGAAAAE0AAABsdRAAdwAAADQAAAAZAAAAbHUQAHcAAAByAAAAGAAAAGx1EAB3AAAAkQAAABQAAABhc3NlcnRpb24gZmFpbGVkOiBudW1fc3RyZWFtcyA9PSAxAABsdRAAdwAAAIAAAAAJAAAAbHUQAHcAAABFAAAAGQAAAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZGVjb2Rpbmcvc2VxdWVuY2Vfc2VjdGlvbl9kZWNvZGVyLnJzAHh2EAB3AAAAGAAAAB0AAAB4dhAAdwAAAHUAAAAQAAAAeHYQAHcAAADAAAAAEAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IElsbGVnYWwgbGl0ZXJhbCBsZW5ndGggY29kZSB3YXM6IAAgdxAASwAAAHh2EAB3AAAA+gAAAA4AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBJbGxlZ2FsIG1hdGNoIGxlbmd0aCBjb2RlIHdhczogAAAAhHcQAEkAAAB4dhAAdwAAABoBAAAOAAAABAAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAD/////////////////////AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA//////////////////////////8BAAAABAAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA/////////////////////////////////////3h2EAB3AAAAdgEAABwAAAB4dhAAdwAAAFMBAAAcAAAAAQEBAQICAwMEBgcICQoLDA0ODxAQAAAAEgAAABQAAAAWAAAAGAAAABwAAAAgAAAAKAAAADAAAABAAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAEBAQECAgMDBAQFBwgJCgsMDQ4PEAAAACMAAAAlAAAAJwAAACkAAAArAAAALwAAADMAAAA7AAAAQwAAAFMAAABjAAAAgwAAAAMBAAADAgAAAwQAAAMIAAADEAAAAyAAAANAAAADgAAAAwABAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3R3b3gtaGFzaC0yLjEuMC9zcmMveHhoYXNoNjQucnMAAACwehAAYQAAAFQAAAAfAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9kZWNvZGVidWZmZXIucnMAJHsQAGsAAAAaAAAAHgAAACR7EABrAAAAnQAAADQAAAAkexAAawAAAOoAAAAeAAAAUmF3UkxFQ29tcHJlc3NlZFJlc2VydmVyZAAAAAAAAAAEAAAABAAAAMoBAAAAAAAABAAAAAQAAADQAQAAYXNzZXJ0aW9uIGZhaWxlZDogeCA+IDAvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2h1ZmYwL2h1ZmYwX2RlY29kZXIucnMTfBAAaQAAADEAAAAFAAAAE3wQAGkAAAA+AAAAGgAAABN8EABpAAAAUAAAACkAAAATfBAAaQAAAGgAAAAWAAAAE3wQAGkAAABqAAAAEwAAABN8EABpAAAAawAAABgAAAATfBAAaQAAAGwAAAAbAAAAE3wQAGkAAAAdAQAANgAAABN8EABpAAAAHQEAACUAAAATfBAAaQAAAB8BAAA2AAAAE3wQAGkAAAAfAQAAJQAAABN8EABpAAAA6AAAACIAAAATfBAAaQAAAPIAAAAiAAAAE3wQAGkAAAD3AAAAJgAAABN8EABpAAAA7QAAACYAAAATfBAAaQAAAFcBAAASAAAAE3wQAGkAAABfAQAAGAAAABN8EABpAAAAZQEAABUAAAATfBAAaQAAAG8BAAAbAAAAE3wQAGkAAABxAQAAGgAAABN8EABpAAAAeAEAAB4AAAByYW5rX2lkeFswXTogIHNob3VsZCBiZTogAAAAzH0QAA0AAADZfRAADAAAABN8EABpAAAAdwEAAAkAAAATfBAAaQAAAH8BAAAsAAAAE3wQAGkAAACEAQAAMQAAABN8EABpAAAAiAEAACAAAAATfBAAaQAAAIkBAAAgAAAAE3wQAGkAAABzAQAARQAAABN8EABpAAAAdAEAACEAAAATfBAAaQAAAHMBAAAeAAAAE3wQAGkAAABhAQAAGwAAABN8EABpAAAATwEAACcAAAATfBAAaQAAAFQBAAAWAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAqH4QAGsAAACiAAAAGQAAAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzACR/EABrAAAAogAAABkAAABhc3NlcnRpb24gZmFpbGVkOiB4ID4gMC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZnNlL2ZzZV9kZWNvZGVyLnJzt38QAGUAAAA9AAAABQAAALd/EABlAAAAWgAAACcAAAC3fxAAZQAAAGUAAAAnAAAAt38QAGUAAABwAAAAIwAAALd/EABlAAAAcQAAAB0AAAC3fxAAZQAAAOIAAAApAAAAt38QAGUAAADkAAAAMQAAALd/EABlAAAA5gAAADMAAABhc3NlcnRpb24gZmFpbGVkOiBuYiA8PSBzZWxmLmFjY3VyYWN5X2xvZwAAALd/EABlAAAA6wAAAA0AAAC3fxAAZQAAANIAAAAtAAAAt38QAGUAAADAAAAALQAAALd/EABlAAAAOQEAAEEAAAC3fxAAZQAAAB4BAAAnAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHJvYiA9PSAtMbd/EABlAAAAJAEAABUAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvbW9kLnJzAAAARIEQAG0AAAA9CgAAJAAAAAAAAAAQAAAABAAAANQBAADVAQAA1gEAACAgICA6IAAAAQAAAAAAAADggRAAAgAAACAgICAgICAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL3B0ci9tb2QucnMA+4EQAGwAAAALAgAAAQAAAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaW5kZXgucnN4ghAAcAAAAEwDAAA0AAAAeIIQAHAAAABTAwAAMgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuKS9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAMoMQAGwAAAD7BwAAHQAAADKDEABsAAAAAwgAAB0AAAAygxAAbAAAAI0FAAAbAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5ycwAAANCDEABtAAAAKgIAABEAAADXAQAADAAAAAQAAADYAQAA2QEAANoBAADdAQAADAAAAAQAAADeAQAA3wEAANoBAEGIicIAC4UJAQAAAOABAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAMeEEABsAAAA3woAAA4AAABFcnJvcgAAAMeEEABsAAAAjQUAABsAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbinHhBAAbAAAAMAFAAANAAAAAAAAABAAAAAEAAAA1AEAANUBAADWAQAAYmFja3RyYWNlIGNhcHR1cmUgZmFpbGVkL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZXJyb3IucnPMhRAAXAAAAGcEAAAOAAAAAQAAAAAAAAA6IAAAQIYQAAIAAAAKCkNhdXNlZCBieToKCgpzdGFjayBiYWNrdHJhY2U6U3RhY2sgYmFja3RyYWNlOgprhhAAEQAAAFMvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzAACFhhAAeQAAALMHAAAJAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvanMtc3lzLTAuMy43Ny9zcmMvbGliLnJzAAAQhxAAWgAAAPsYAAABAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NvbnZlcnQvc2xpY2VzLnJzfIcQAGwAAAAkAQAADgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkSnNWYWx1ZSgpACqIEAAIAAAAMogQAAEAAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAESIEAAqAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvbGliLnJzAAAAeIgQAF0AAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AADoiBAADgAAAHiIEABdAAAAegIAAA0AQZiSwgALlSMEAAAABAAAAPYBAAAvcnVzdGMvMDVmOTg0NmY4OTNiMDlhMWJlMWZjODU2MGUzM2ZjM2M4MTVjZmVjYi9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAJIkQAEoAAACiAAAAGQAAAC9ydXN0Yy8wNWY5ODQ2Zjg5M2IwOWExYmUxZmM4NTYwZTMzZmMzYzgxNWNmZWNiL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwCAiRAASwAAAI0FAAAbAAAAL3J1c3RjLzA1Zjk4NDZmODkzYjA5YTFiZTFmYzg1NjBlMzNmYzNjODE1Y2ZlY2IvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc9yJEABMAAAAKgIAABEAAAA6AAAA9wEAAAwAAAAEAAAA+AEAAPkBAAD6AQAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNy9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAFSKEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAABUihAAKQAAAK4EAAANAAAAQWNjZXNzRXJyb3JjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uOiAAB4sQAEgAAABsaWJyYXJ5L3N0ZC9zcmMvYmFja3RyYWNlLnJzb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybXSLEAAoAAAAJAAAAAIAAACcixAAdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlAFiLEAAcAAAAigEAAB0AAAD7AQAAEAAAAAQAAAD8AQAA/QEAAAEAAAAAAAAAZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBvciBpbmRpcmVjdGlvbiBsaW1pdCAoZS5nLiBzeW1saW5rIGxvb3Apc3RhbGUgbmV0d29yayBmaWxlIGhhbmRsZWludmFsaWQgaW5wdXQgcGFyYW1ldGVyaW52YWxpZCBkYXRhdGltZWQgb3V0d3JpdGUgemVyb25vIHN0b3JhZ2Ugc3BhY2VzZWVrIG9uIHVuc2Vla2FibGUgZmlsZXF1b3RhIGV4Y2VlZGVkZmlsZSB0b28gbGFyZ2VyZXNvdXJjZSBidXN5ZXhlY3V0YWJsZSBmaWxlIGJ1c3lkZWFkbG9ja2Nyb3NzLWRldmljZSBsaW5rIG9yIHJlbmFtZXRvbyBtYW55IGxpbmtzaW52YWxpZCBmaWxlbmFtZWFyZ3VtZW50IGxpc3QgdG9vIGxvbmdvcGVyYXRpb24gaW50ZXJydXB0ZWR1bnN1cHBvcnRlZHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGVvdXQgb2YgbWVtb3J5aW4gcHJvZ3Jlc3NvdGhlciBlcnJvcnVuY2F0ZWdvcml6ZWQgZXJyb3JPcwAAAAAABAAAAAQAAAD+AQAAY29kZQAAAAABAAAAAQAAAP8BAABraW5k9wEAAAwAAAAEAAAAAAIAAG1lc3NhZ2VLaW5kRXJyb3IAAAAACAAAAAQAAAABAgAAAAAAAAQAAAAEAAAAAgIAAEN1c3RvbWVycm9yIChvcyBlcnJvciApAAEAAAAAAAAAZ48QAAsAAAByjxAAAQAAADogY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXgAAI6PEAAgAAAAbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnO4jxAALAAAABMAAAAJAAAAbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMA9I8QACMAAACbAAAAMgAAAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwAAACiQEAAhAAAA0QAAABMAAAA8dW5rbm93bj7vv71tZW1vcnkgYWxsb2NhdGlvbiBvZiAgYnl0ZXMgZmFpbGVkAABokBAAFQAAAH2QEAANAAAAbGlicmFyeS9zdGQvc3JjL2FsbG9jLnJznJAQABgAAABjAQAACQAAAAoAAAD3AQAADAAAAAQAAAADAgAAAAAAAAgAAAAEAAAABAIAAAAAAAAIAAAABAAAAAUCAAAGAgAABwIAAAgCAAAJAgAAEAAAAAQAAAAKAgAACwIAAAwCAAANAgAAbGlicmFyeS9zdGQvc3JjLy4uLy4uL2JhY2t0cmFjZS9zcmMvc3ltYm9saXplL21vZC5ycyCREAA0AAAAZwEAADAAAAABAAAAAAAAAIyPEAACAAAAIC0gAAEAAAAAAAAAdJEQAAMAAAAgICAgICAgICAgICAgICAgICAgYXQgAAA4ihAAAQAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c1dvdWxkQmxvY2tOb3RBRGlyZWN0b3J5SXNBRGlyZWN0b3J5RGlyZWN0b3J5Tm90RW1wdHlSZWFkT25seUZpbGVzeXN0ZW1GaWxlc3lzdGVtTG9vcFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvU3RvcmFnZUZ1bGxOb3RTZWVrYWJsZVF1b3RhRXhjZWVkZWRGaWxlVG9vTGFyZ2VSZXNvdXJjZUJ1c3lFeGVjdXRhYmxlRmlsZUJ1c3lEZWFkbG9ja0Nyb3NzZXNEZXZpY2VzVG9vTWFueUxpbmtzSW52YWxpZEZpbGVuYW1lQXJndW1lbnRMaXN0VG9vTG9uZ0ludGVycnVwdGVkVW5zdXBwb3J0ZWRVbmV4cGVjdGVkRW9mT3V0T2ZNZW1vcnlJblByb2dyZXNzT3RoZXJVbmNhdGVnb3JpemVkb3BlcmF0aW9uIHN1Y2Nlc3NmdWxPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWTakxAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5DJQQADgAAAAQAAAAEQAA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", self.location.href);\n }\n const imports = __wbg_get_imports();\n if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {\n module_or_path = fetch(module_or_path);\n }\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n return __wbg_finalize_init(instance, module);\n }\n const LN_SCALE_MIN = -9;\n const LN_SCALE_MAX = 9;\n const LN_RESCALE = (LN_SCALE_MAX - LN_SCALE_MIN) / 254;\n const SCALE_MIN = Math.exp(LN_SCALE_MIN);\n const SPLAT_TEX_WIDTH_BITS = 11;\n const SPLAT_TEX_HEIGHT_BITS = 11;\n const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS;\n const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS;\n const SPLAT_TEX_MIN_HEIGHT = 1;\n const WASM_SPLAT_SORT = true;\n const _PlyReader = class _PlyReader {\n // Create a PlyReader from a Uint8Array/ArrayBuffer, no parsing done yet\n constructor({ fileBytes }) {\n this.header = "";\n this.littleEndian = true;\n this.elements = {};\n this.comments = [];\n this.data = null;\n this.numSplats = 0;\n this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n }\n // Identify and parse the PLY text header (assumed to be <64KB in size).\n // this.elements will contain all the elements in the file, typically\n // "vertex" contains the Gsplat data.\n async parseHeader() {\n const bufferStream = new ReadableStream({\n start: (controller) => {\n controller.enqueue(this.fileBytes.slice(0, 65536));\n controller.close();\n }\n });\n const decoder = bufferStream.pipeThrough(new TextDecoderStream()).getReader();\n this.header = "";\n const headerTerminator = "end_header\\n";\n while (true) {\n const { value, done } = await decoder.read();\n if (done) {\n throw new Error("Failed to read header");\n }\n this.header += value;\n const endHeader = this.header.indexOf(headerTerminator);\n if (endHeader >= 0) {\n this.header = this.header.slice(0, endHeader + headerTerminator.length);\n break;\n }\n }\n const headerLen = new TextEncoder().encode(this.header).length;\n this.data = new DataView(this.fileBytes.buffer, headerLen);\n this.elements = {};\n let curElement = null;\n this.comments = [];\n this.header.trim().split("\\n").forEach((line, lineIndex) => {\n const trimmedLine = line.trim();\n if (lineIndex === 0) {\n if (trimmedLine !== "ply") {\n throw new Error("Invalid PLY header");\n }\n return;\n }\n if (trimmedLine.length === 0) {\n return;\n }\n const fields = trimmedLine.split(" ");\n switch (fields[0]) {\n case "format":\n if (fields[1] === "binary_little_endian") {\n this.littleEndian = true;\n } else if (fields[1] === "binary_big_endian") {\n this.littleEndian = false;\n } else {\n throw new Error(`Unsupported PLY format: ${fields[1]}`);\n }\n if (fields[2] !== "1.0") {\n throw new Error(`Unsupported PLY version: ${fields[2]}`);\n }\n break;\n case "end_header":\n break;\n case "comment":\n this.comments.push(trimmedLine.slice("comment ".length));\n break;\n case "element": {\n const name = fields[1];\n curElement = {\n name,\n count: Number.parseInt(fields[2]),\n properties: {}\n };\n this.elements[name] = curElement;\n break;\n }\n case "property":\n if (curElement == null) {\n throw new Error("Property must be inside an element");\n }\n if (fields[1] === "list") {\n curElement.properties[fields[4]] = {\n isList: true,\n type: fields[3],\n countType: fields[2]\n };\n } else {\n curElement.properties[fields[2]] = {\n isList: false,\n type: fields[1]\n };\n }\n break;\n }\n });\n if (this.elements.vertex) {\n this.numSplats = this.elements.vertex.count;\n }\n }\n parseData(elementCallback) {\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error("No data to parse");\n }\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const item = {};\n const parsers = [];\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n item[propertyName] = 0;\n parsers.push(() => {\n item[propertyName] = PARSE_FIELD[property.type](\n data,\n offset,\n this.littleEndian\n );\n offset += FIELD_BYTES[property.type];\n });\n } else {\n item[propertyName] = [];\n parsers.push(() => {\n const list = item[propertyName];\n list.length = PARSE_FIELD[property.countType](\n data,\n offset,\n this.littleEndian\n );\n offset += FIELD_BYTES[property.countType];\n for (let i2 = 0; i2 < list.length; i2++) {\n list[i2] = PARSE_FIELD[property.type](\n data,\n offset,\n this.littleEndian\n );\n offset += FIELD_BYTES[property.type];\n }\n });\n }\n }\n const callback = elementCallback(element) ?? (() => {\n });\n for (let index = 0; index < count; index++) {\n for (const parser of parsers) {\n parser();\n }\n callback(index, item);\n }\n }\n }\n // Parse all the Gsplat data in the PLY file in go, invoking the given\n // callbacks for each Gsplat.\n parseSplats(splatCallback, shCallback) {\n if (this.elements.vertex == null) {\n throw new Error("No vertex element found");\n }\n let isSuperSplat = false;\n const ssChunks = [];\n let numSh = 0;\n let sh1Props = [];\n let sh2Props = [];\n let sh3Props = [];\n let sh1 = void 0;\n let sh2 = void 0;\n let sh3 = void 0;\n function prepareSh() {\n const num_f_rest = NUM_SH_TO_NUM_F_REST[numSh];\n sh1Props = new Array(3).fill(null).flatMap(\n (_, k) => [0, 1, 2].map((_2, d) => `f_rest_${k + d * num_f_rest / 3}`)\n );\n sh2Props = new Array(5).fill(null).flatMap(\n (_, k) => [0, 1, 2].map((_2, d) => `f_rest_${3 + k + d * num_f_rest / 3}`)\n );\n sh3Props = new Array(7).fill(null).flatMap(\n (_, k) => [0, 1, 2].map((_2, d) => `f_rest_${8 + k + d * num_f_rest / 3}`)\n );\n sh1 = numSh >= 1 ? new Float32Array(3 * 3) : void 0;\n sh2 = numSh >= 2 ? new Float32Array(5 * 3) : void 0;\n sh3 = numSh >= 3 ? new Float32Array(7 * 3) : void 0;\n }\n function ssShCallback(index, item) {\n if (!sh1) {\n throw new Error("Missing sh1");\n }\n for (const [i2, key] of sh1Props.entries()) {\n sh1[i2] = item[key] * 8 / 255 - 4;\n }\n if (sh2) {\n for (const [i2, key] of sh2Props.entries()) {\n sh2[i2] = item[key] * 8 / 255 - 4;\n }\n }\n if (sh3) {\n for (const [i2, key] of sh3Props.entries()) {\n sh3[i2] = item[key] * 8 / 255 - 4;\n }\n }\n shCallback == null ? void 0 : shCallback(index, sh1, sh2, sh3);\n }\n function initSuperSplat(element) {\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b\n } = element.properties;\n if (!min_x || !min_y || !min_z || !max_x || !max_y || !max_z || !min_scale_x || !min_scale_y || !min_scale_z || !max_scale_x || !max_scale_y || !max_scale_z || !min_r || !min_g || !min_b || !max_r || !max_g || !max_b) {\n throw new Error("Missing PLY chunk properties");\n }\n isSuperSplat = true;\n return (index, item) => {\n const {\n min_x: min_x2,\n min_y: min_y2,\n min_z: min_z2,\n max_x: max_x2,\n max_y: max_y2,\n max_z: max_z2,\n min_scale_x: min_scale_x2,\n min_scale_y: min_scale_y2,\n min_scale_z: min_scale_z2,\n max_scale_x: max_scale_x2,\n max_scale_y: max_scale_y2,\n max_scale_z: max_scale_z2,\n min_r: min_r2,\n min_g: min_g2,\n min_b: min_b2,\n max_r: max_r2,\n max_g: max_g2,\n max_b: max_b2\n } = item;\n ssChunks.push({\n min_x: min_x2,\n min_y: min_y2,\n min_z: min_z2,\n max_x: max_x2,\n max_y: max_y2,\n max_z: max_z2,\n min_scale_x: min_scale_x2,\n min_scale_y: min_scale_y2,\n min_scale_z: min_scale_z2,\n max_scale_x: max_scale_x2,\n max_scale_y: max_scale_y2,\n max_scale_z: max_scale_z2,\n min_r: min_r2,\n min_g: min_g2,\n min_b: min_b2,\n max_r: max_r2,\n max_g: max_g2,\n max_b: max_b2\n });\n };\n }\n function decodeSuperSplat(element) {\n if (shCallback && element.name === "sh") {\n numSh = getNumSh(element.properties);\n prepareSh();\n return ssShCallback;\n }\n if (element.name !== "vertex") {\n return null;\n }\n const { packed_position, packed_rotation, packed_scale, packed_color } = element.properties;\n if (!packed_position || !packed_rotation || !packed_scale || !packed_color) {\n throw new Error(\n "Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color"\n );\n }\n const SQRT2 = Math.sqrt(2);\n return (index, item) => {\n const chunk = ssChunks[index >>> 8];\n if (chunk == null) {\n throw new Error("Missing PLY chunk");\n }\n const {\n min_x,\n min_y,\n min_z,\n max_x,\n max_y,\n max_z,\n min_scale_x,\n min_scale_y,\n min_scale_z,\n max_scale_x,\n max_scale_y,\n max_scale_z,\n min_r,\n min_g,\n min_b,\n max_r,\n max_g,\n max_b\n } = chunk;\n const { packed_position: packed_position2, packed_rotation: packed_rotation2, packed_scale: packed_scale2, packed_color: packed_color2 } = item;\n const x2 = (packed_position2 >>> 21 & 2047) / 2047 * (max_x - min_x) + min_x;\n const y = (packed_position2 >>> 11 & 1023) / 1023 * (max_y - min_y) + min_y;\n const z = (packed_position2 & 2047) / 2047 * (max_z - min_z) + min_z;\n const r0 = ((packed_rotation2 >>> 20 & 1023) / 1023 - 0.5) * SQRT2;\n const r1 = ((packed_rotation2 >>> 10 & 1023) / 1023 - 0.5) * SQRT2;\n const r2 = ((packed_rotation2 & 1023) / 1023 - 0.5) * SQRT2;\n const rr = Math.sqrt(Math.max(0, 1 - r0 * r0 - r1 * r1 - r2 * r2));\n const rOrder = packed_rotation2 >>> 30;\n const quatX = rOrder === 0 ? r0 : rOrder === 1 ? rr : r1;\n const quatY = rOrder <= 1 ? r1 : rOrder === 2 ? rr : r2;\n const quatZ = rOrder <= 2 ? r2 : rr;\n const quatW = rOrder === 0 ? rr : r0;\n const scaleX = Math.exp(\n (packed_scale2 >>> 21 & 2047) / 2047 * (max_scale_x - min_scale_x) + min_scale_x\n );\n const scaleY = Math.exp(\n (packed_scale2 >>> 11 & 1023) / 1023 * (max_scale_y - min_scale_y) + min_scale_y\n );\n const scaleZ = Math.exp(\n (packed_scale2 & 2047) / 2047 * (max_scale_z - min_scale_z) + min_scale_z\n );\n const r = (packed_color2 >>> 24 & 255) / 255 * (max_r - min_r) + min_r;\n const g = (packed_color2 >>> 16 & 255) / 255 * (max_g - min_g) + min_g;\n const b = (packed_color2 >>> 8 & 255) / 255 * (max_b - min_b) + min_b;\n const opacity = (packed_color2 & 255) / 255;\n splatCallback(\n index,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b\n );\n };\n }\n const elementCallback = (element) => {\n if (element.name === "chunk") {\n if (this.comments.some(\n (comment) => comment.toLowerCase().includes("supersplat")\n )) {\n return initSuperSplat(element);\n }\n }\n if (isSuperSplat) {\n return decodeSuperSplat(element);\n }\n if (element.name !== "vertex") {\n return null;\n }\n const {\n x: x2,\n y,\n z,\n scale_0,\n scale_1,\n scale_2,\n rot_0,\n rot_1,\n rot_2,\n rot_3,\n opacity,\n f_dc_0,\n f_dc_1,\n f_dc_2,\n red,\n green,\n blue,\n alpha\n } = element.properties;\n if (!x2 || !y || !z) {\n throw new Error("Missing PLY properties: x, y, z");\n }\n const hasScales = scale_0 && scale_1 && scale_2;\n const hasRots = rot_0 && rot_1 && rot_2 && rot_3;\n const alphaDiv = alpha != null ? FIELD_SCALE[alpha.type] : 1;\n const redDiv = red != null ? FIELD_SCALE[red.type] : 1;\n const greenDiv = green != null ? FIELD_SCALE[green.type] : 1;\n const blueDiv = blue != null ? FIELD_SCALE[blue.type] : 1;\n numSh = getNumSh(element.properties);\n prepareSh();\n return (index, item) => {\n const scaleX = hasScales ? Math.exp(item.scale_0) : _PlyReader.defaultPointScale;\n const scaleY = hasScales ? Math.exp(item.scale_1) : _PlyReader.defaultPointScale;\n const scaleZ = hasScales ? Math.exp(item.scale_2) : _PlyReader.defaultPointScale;\n const quatX = hasRots ? item.rot_1 : 0;\n const quatY = hasRots ? item.rot_2 : 0;\n const quatZ = hasRots ? item.rot_3 : 0;\n const quatW = hasRots ? item.rot_0 : 1;\n const op = opacity != null ? 1 / (1 + Math.exp(-item.opacity)) : alpha != null ? item.alpha / alphaDiv : 1;\n const r = f_dc_0 != null ? item.f_dc_0 * SH_C0$1 + 0.5 : red != null ? item.red / redDiv : 1;\n const g = f_dc_1 != null ? item.f_dc_1 * SH_C0$1 + 0.5 : green != null ? item.green / greenDiv : 1;\n const b = f_dc_2 != null ? item.f_dc_2 * SH_C0$1 + 0.5 : blue != null ? item.blue / blueDiv : 1;\n splatCallback(\n index,\n item.x,\n item.y,\n item.z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n op,\n r,\n g,\n b\n );\n if (shCallback && sh1) {\n if (sh1) {\n for (const [i2, key] of sh1Props.entries()) {\n sh1[i2] = item[key];\n }\n }\n if (sh2) {\n for (const [i2, key] of sh2Props.entries()) {\n sh2[i2] = item[key];\n }\n }\n if (sh3) {\n for (const [i2, key] of sh3Props.entries()) {\n sh3[i2] = item[key];\n }\n }\n shCallback(index, sh1, sh2, sh3);\n }\n };\n };\n this.parseData(elementCallback);\n }\n // Inject RGBA values into original PLY file, which can be used to modify\n // the color/opacity of the Gsplats and write out the modified PLY file.\n injectRgba(rgba) {\n let offset = 0;\n const data = this.data;\n if (data == null) {\n throw new Error("No parsed data");\n }\n if (rgba.length !== this.numSplats * 4) {\n throw new Error("Invalid RGBA array length");\n }\n for (const elementName in this.elements) {\n const element = this.elements[elementName];\n const { count, properties } = element;\n const parsers = [];\n let rgbaOffset = 0;\n const isVertex = elementName === "vertex";\n if (isVertex) {\n for (const name of ["opacity", "f_dc_0", "f_dc_1", "f_dc_2"]) {\n if (!properties[name] || properties[name].type !== "float") {\n throw new Error(`Can\'t injectRgba due to property: ${name}`);\n }\n }\n }\n for (const [propertyName, property] of Object.entries(properties)) {\n if (!property.isList) {\n if (isVertex) {\n if (propertyName === "f_dc_0" || propertyName === "f_dc_1" || propertyName === "f_dc_2") {\n const component = Number.parseInt(\n propertyName.slice("f_dc_".length)\n );\n parsers.push(() => {\n const value = (rgba[rgbaOffset + component] / 255 - 0.5) / SH_C0$1;\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value\n );\n });\n } else if (propertyName === "opacity") {\n parsers.push(() => {\n const value = Math.max(\n -100,\n Math.min(\n 100,\n -Math.log(1 / (rgba[rgbaOffset + 3] / 255) - 1)\n )\n );\n SET_FIELD[property.type](\n data,\n offset,\n this.littleEndian,\n value\n );\n });\n }\n }\n parsers.push(() => {\n offset += FIELD_BYTES[property.type];\n });\n } else {\n parsers.push(() => {\n const length = PARSE_FIELD[property.countType](\n data,\n offset,\n this.littleEndian\n );\n offset += FIELD_BYTES[property.countType];\n offset += length * FIELD_BYTES[property.type];\n });\n }\n }\n for (let index = 0; index < count; index++) {\n for (const parser of parsers) {\n parser();\n }\n if (isVertex) {\n rgbaOffset += 4;\n }\n }\n }\n }\n };\n _PlyReader.defaultPointScale = 1e-3;\n let PlyReader = _PlyReader;\n const SH_C0$1 = 0.28209479177387814;\n const PARSE_FIELD = {\n char: (data, offset, littleEndian) => {\n return data.getInt8(offset);\n },\n uchar: (data, offset, littleEndian) => {\n return data.getUint8(offset);\n },\n short: (data, offset, littleEndian) => {\n return data.getInt16(offset, littleEndian);\n },\n ushort: (data, offset, littleEndian) => {\n return data.getUint16(offset, littleEndian);\n },\n int: (data, offset, littleEndian) => {\n return data.getInt32(offset, littleEndian);\n },\n uint: (data, offset, littleEndian) => {\n return data.getUint32(offset, littleEndian);\n },\n float: (data, offset, littleEndian) => {\n return data.getFloat32(offset, littleEndian);\n },\n double: (data, offset, littleEndian) => {\n return data.getFloat64(offset, littleEndian);\n }\n };\n const SET_FIELD = {\n char: (data, offset, littleEndian, value) => {\n data.setInt8(offset, value);\n },\n uchar: (data, offset, littleEndian, value) => {\n data.setUint8(offset, value);\n },\n short: (data, offset, littleEndian, value) => {\n data.setInt16(offset, value, littleEndian);\n },\n ushort: (data, offset, littleEndian, value) => {\n data.setUint16(offset, value, littleEndian);\n },\n int: (data, offset, littleEndian, value) => {\n data.setInt32(offset, value, littleEndian);\n },\n uint: (data, offset, littleEndian, value) => {\n data.setUint32(offset, value, littleEndian);\n },\n float: (data, offset, littleEndian, value) => {\n data.setFloat32(offset, value, littleEndian);\n },\n double: (data, offset, littleEndian, value) => {\n data.setFloat64(offset, value, littleEndian);\n }\n };\n const FIELD_BYTES = {\n char: 1,\n uchar: 1,\n short: 2,\n ushort: 2,\n int: 4,\n uint: 4,\n float: 4,\n double: 8\n };\n const FIELD_SCALE = {\n char: 127,\n uchar: 255,\n short: 32767,\n ushort: 65535,\n int: 2147483647,\n uint: 4294967295,\n float: 1,\n double: 1\n };\n const NUM_F_REST_TO_NUM_SH = {\n 0: 0,\n 9: 1,\n 24: 2,\n 45: 3\n };\n const NUM_SH_TO_NUM_F_REST = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45\n };\n function getNumSh(properties) {\n let num_f_rest = 0;\n while (properties[`f_rest_${num_f_rest}`]) {\n num_f_rest += 1;\n }\n const numSh = NUM_F_REST_TO_NUM_SH[num_f_rest];\n if (numSh == null) {\n throw new Error(`Unsupported number of SH coefficients: ${num_f_rest}`);\n }\n return numSh;\n }\n var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n var fleb = new u8([\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 2,\n 2,\n 2,\n 2,\n 3,\n 3,\n 3,\n 3,\n 4,\n 4,\n 4,\n 4,\n 5,\n 5,\n 5,\n 5,\n 0,\n /* unused */\n 0,\n 0,\n /* impossible */\n 0\n ]);\n var fdeb = new u8([\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 3,\n 3,\n 4,\n 4,\n 5,\n 5,\n 6,\n 6,\n 7,\n 7,\n 8,\n 8,\n 9,\n 9,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n /* unused */\n 0,\n 0\n ]);\n var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n var freb = function(eb, start) {\n var b = new u16(31);\n for (var i2 = 0; i2 < 31; ++i2) {\n b[i2] = start += 1 << eb[i2 - 1];\n }\n var r = new i32(b[30]);\n for (var i2 = 1; i2 < 30; ++i2) {\n for (var j = b[i2]; j < b[i2 + 1]; ++j) {\n r[j] = j - b[i2] << 5 | i2;\n }\n }\n return { b, r };\n };\n var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n fl[28] = 258, revfl[258] = 28;\n var _b = freb(fdeb, 0), fd = _b.b;\n var rev = new u16(32768);\n for (var i = 0; i < 32768; ++i) {\n var x = (i & 43690) >> 1 | (i & 21845) << 1;\n x = (x & 52428) >> 2 | (x & 13107) << 2;\n x = (x & 61680) >> 4 | (x & 3855) << 4;\n rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1;\n }\n var hMap = function(cd, mb, r) {\n var s = cd.length;\n var i2 = 0;\n var l = new u16(mb);\n for (; i2 < s; ++i2) {\n if (cd[i2])\n ++l[cd[i2] - 1];\n }\n var le = new u16(mb);\n for (i2 = 1; i2 < mb; ++i2) {\n le[i2] = le[i2 - 1] + l[i2 - 1] << 1;\n }\n var co;\n if (r) {\n co = new u16(1 << mb);\n var rvb = 15 - mb;\n for (i2 = 0; i2 < s; ++i2) {\n if (cd[i2]) {\n var sv = i2 << 4 | cd[i2];\n var r_1 = mb - cd[i2];\n var v = le[cd[i2] - 1]++ << r_1;\n for (var m = v | (1 << r_1) - 1; v <= m; ++v) {\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n } else {\n co = new u16(s);\n for (i2 = 0; i2 < s; ++i2) {\n if (cd[i2]) {\n co[i2] = rev[le[cd[i2] - 1]++] >> 15 - cd[i2];\n }\n }\n }\n return co;\n };\n var flt = new u8(288);\n for (var i = 0; i < 144; ++i)\n flt[i] = 8;\n for (var i = 144; i < 256; ++i)\n flt[i] = 9;\n for (var i = 256; i < 280; ++i)\n flt[i] = 7;\n for (var i = 280; i < 288; ++i)\n flt[i] = 8;\n var fdt = new u8(32);\n for (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n var flrm = /* @__PURE__ */ hMap(flt, 9, 1);\n var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1);\n var max = function(a) {\n var m = a[0];\n for (var i2 = 1; i2 < a.length; ++i2) {\n if (a[i2] > m)\n m = a[i2];\n }\n return m;\n };\n var bits = function(d, p, m) {\n var o = p / 8 | 0;\n return (d[o] | d[o + 1] << 8) >> (p & 7) & m;\n };\n var bits16 = function(d, p) {\n var o = p / 8 | 0;\n return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7);\n };\n var shft = function(p) {\n return (p + 7) / 8 | 0;\n };\n var slc = function(v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n return new u8(v.subarray(s, e));\n };\n var ec = [\n "unexpected EOF",\n "invalid block type",\n "invalid length/literal",\n "invalid distance",\n "stream finished",\n "no stream handler",\n ,\n "no callback",\n "invalid UTF-8 data",\n "extra field too long",\n "date not in range 1980-2099",\n "filename too long",\n "stream finishing",\n "invalid zip data"\n // determined by unknown compression method\n ];\n var err = function(ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n };\n var inflt = function(dat, st, buf, dict) {\n var sl = dat.length, dl = 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n var resize = noBuf || st.i != 2;\n var noSt = st.i;\n if (noBuf)\n buf = new u8(sl * 3);\n var cbuf = function(l2) {\n var bl = buf.length;\n if (l2 > bl) {\n var nbuf = new u8(Math.max(bl * 2, l2));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n var tbts = sl * 8;\n do {\n if (!lm) {\n final = bits(dat, pos, 1);\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + l);\n buf.set(dat.subarray(s, t), bt);\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n } else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n var ldt = new u8(tl);\n var clt = new u8(19);\n for (var i2 = 0; i2 < hcLen; ++i2) {\n clt[clim[i2]] = bits(dat, pos + i2 * 3, 7);\n }\n pos += hcLen * 3;\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n var clm = hMap(clt, clb, 1);\n for (var i2 = 0; i2 < tl; ) {\n var r = clm[bits(dat, pos, clbmsk)];\n pos += r & 15;\n var s = r >> 4;\n if (s < 16) {\n ldt[i2++] = s;\n } else {\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i2 - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i2++] = c;\n }\n }\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n lbt = max(lt);\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n } else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (; ; lpos = pos) {\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n } else {\n var add = sym - 254;\n if (sym > 264) {\n var i2 = sym - 257, b = fleb[i2];\n add = bits(dat, pos, (1 << b) - 1) + fl[i2];\n pos += b;\n }\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n };\n var et = /* @__PURE__ */ new u8(0);\n var gzs = function(d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, "invalid gzip data");\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n };\n var Inflate = /* @__PURE__ */ function() {\n function Inflate2(opts, cb) {\n if (typeof opts == "function")\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate2.prototype.e = function(c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate2.prototype.c = function(final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7;\n };\n Inflate2.prototype.push = function(chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate2;\n }();\n var Gunzip = /* @__PURE__ */ function() {\n function Gunzip2(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n Gunzip2.prototype.push = function(chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n } else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n Inflate.prototype.c.call(this, final);\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip2;\n }();\n var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder();\n var tds = 0;\n try {\n td.decode(et, { stream: true });\n tds = 1;\n } catch (e) {\n }\n /**\n * @license\n * Copyright 2010-2024 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\n const REVISION = "172";\n const NoColorSpace = "";\n const SRGBColorSpace = "srgb";\n const LinearSRGBColorSpace = "srgb-linear";\n const LinearTransfer = "linear";\n const SRGBTransfer = "srgb";\n function clamp(value, min, max2) {\n return Math.max(min, Math.min(max2, value));\n }\n function euclideanModulo(n, m) {\n return (n % m + m) % m;\n }\n function lerp(x2, y, t) {\n return (1 - t) * x2 + t * y;\n }\n class Matrix3 {\n constructor(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n Matrix3.prototype.isMatrix3 = true;\n this.elements = [\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ];\n if (n11 !== void 0) {\n this.set(n11, n12, n13, n21, n22, n23, n31, n32, n33);\n }\n }\n set(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n const te = this.elements;\n te[0] = n11;\n te[1] = n21;\n te[2] = n31;\n te[3] = n12;\n te[4] = n22;\n te[5] = n32;\n te[6] = n13;\n te[7] = n23;\n te[8] = n33;\n return this;\n }\n identity() {\n this.set(\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n );\n return this;\n }\n copy(m) {\n const te = this.elements;\n const me = m.elements;\n te[0] = me[0];\n te[1] = me[1];\n te[2] = me[2];\n te[3] = me[3];\n te[4] = me[4];\n te[5] = me[5];\n te[6] = me[6];\n te[7] = me[7];\n te[8] = me[8];\n return this;\n }\n extractBasis(xAxis, yAxis, zAxis) {\n xAxis.setFromMatrix3Column(this, 0);\n yAxis.setFromMatrix3Column(this, 1);\n zAxis.setFromMatrix3Column(this, 2);\n return this;\n }\n setFromMatrix4(m) {\n const me = m.elements;\n this.set(\n me[0],\n me[4],\n me[8],\n me[1],\n me[5],\n me[9],\n me[2],\n me[6],\n me[10]\n );\n return this;\n }\n multiply(m) {\n return this.multiplyMatrices(this, m);\n }\n premultiply(m) {\n return this.multiplyMatrices(m, this);\n }\n multiplyMatrices(a, b) {\n const ae = a.elements;\n const be = b.elements;\n const te = this.elements;\n const a11 = ae[0], a12 = ae[3], a13 = ae[6];\n const a21 = ae[1], a22 = ae[4], a23 = ae[7];\n const a31 = ae[2], a32 = ae[5], a33 = ae[8];\n const b11 = be[0], b12 = be[3], b13 = be[6];\n const b21 = be[1], b22 = be[4], b23 = be[7];\n const b31 = be[2], b32 = be[5], b33 = be[8];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n return this;\n }\n multiplyScalar(s) {\n const te = this.elements;\n te[0] *= s;\n te[3] *= s;\n te[6] *= s;\n te[1] *= s;\n te[4] *= s;\n te[7] *= s;\n te[2] *= s;\n te[5] *= s;\n te[8] *= s;\n return this;\n }\n determinant() {\n const te = this.elements;\n const a = te[0], b = te[1], c = te[2], d = te[3], e = te[4], f = te[5], g = te[6], h = te[7], i2 = te[8];\n return a * e * i2 - a * f * h - b * d * i2 + b * f * g + c * d * h - c * e * g;\n }\n invert() {\n const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n12 = te[3], n22 = te[4], n32 = te[5], n13 = te[6], n23 = te[7], n33 = te[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13;\n if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n const detInv = 1 / det;\n te[0] = t11 * detInv;\n te[1] = (n31 * n23 - n33 * n21) * detInv;\n te[2] = (n32 * n21 - n31 * n22) * detInv;\n te[3] = t12 * detInv;\n te[4] = (n33 * n11 - n31 * n13) * detInv;\n te[5] = (n31 * n12 - n32 * n11) * detInv;\n te[6] = t13 * detInv;\n te[7] = (n21 * n13 - n23 * n11) * detInv;\n te[8] = (n22 * n11 - n21 * n12) * detInv;\n return this;\n }\n transpose() {\n let tmp;\n const m = this.elements;\n tmp = m[1];\n m[1] = m[3];\n m[3] = tmp;\n tmp = m[2];\n m[2] = m[6];\n m[6] = tmp;\n tmp = m[5];\n m[5] = m[7];\n m[7] = tmp;\n return this;\n }\n getNormalMatrix(matrix4) {\n return this.setFromMatrix4(matrix4).invert().transpose();\n }\n transposeIntoArray(r) {\n const m = this.elements;\n r[0] = m[0];\n r[1] = m[3];\n r[2] = m[6];\n r[3] = m[1];\n r[4] = m[4];\n r[5] = m[7];\n r[6] = m[2];\n r[7] = m[5];\n r[8] = m[8];\n return this;\n }\n setUvTransform(tx, ty, sx, sy, rotation, cx, cy) {\n const c = Math.cos(rotation);\n const s = Math.sin(rotation);\n this.set(\n sx * c,\n sx * s,\n -sx * (c * cx + s * cy) + cx + tx,\n -sy * s,\n sy * c,\n -sy * (-s * cx + c * cy) + cy + ty,\n 0,\n 0,\n 1\n );\n return this;\n }\n //\n scale(sx, sy) {\n this.premultiply(_m3.makeScale(sx, sy));\n return this;\n }\n rotate(theta) {\n this.premultiply(_m3.makeRotation(-theta));\n return this;\n }\n translate(tx, ty) {\n this.premultiply(_m3.makeTranslation(tx, ty));\n return this;\n }\n // for 2D Transforms\n makeTranslation(x2, y) {\n if (x2.isVector2) {\n this.set(\n 1,\n 0,\n x2.x,\n 0,\n 1,\n x2.y,\n 0,\n 0,\n 1\n );\n } else {\n this.set(\n 1,\n 0,\n x2,\n 0,\n 1,\n y,\n 0,\n 0,\n 1\n );\n }\n return this;\n }\n makeRotation(theta) {\n const c = Math.cos(theta);\n const s = Math.sin(theta);\n this.set(\n c,\n -s,\n 0,\n s,\n c,\n 0,\n 0,\n 0,\n 1\n );\n return this;\n }\n makeScale(x2, y) {\n this.set(\n x2,\n 0,\n 0,\n 0,\n y,\n 0,\n 0,\n 0,\n 1\n );\n return this;\n }\n //\n equals(matrix) {\n const te = this.elements;\n const me = matrix.elements;\n for (let i2 = 0; i2 < 9; i2++) {\n if (te[i2] !== me[i2]) return false;\n }\n return true;\n }\n fromArray(array, offset = 0) {\n for (let i2 = 0; i2 < 9; i2++) {\n this.elements[i2] = array[i2 + offset];\n }\n return this;\n }\n toArray(array = [], offset = 0) {\n const te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n return array;\n }\n clone() {\n return new this.constructor().fromArray(this.elements);\n }\n }\n const _m3 = /* @__PURE__ */ new Matrix3();\n const LINEAR_REC709_TO_XYZ = /* @__PURE__ */ new Matrix3().set(\n 0.4123908,\n 0.3575843,\n 0.1804808,\n 0.212639,\n 0.7151687,\n 0.0721923,\n 0.0193308,\n 0.1191948,\n 0.9505322\n );\n const XYZ_TO_LINEAR_REC709 = /* @__PURE__ */ new Matrix3().set(\n 3.2409699,\n -1.5373832,\n -0.4986108,\n -0.9692436,\n 1.8759675,\n 0.0415551,\n 0.0556301,\n -0.203977,\n 1.0569715\n );\n function createColorManagement() {\n const ColorManagement2 = {\n enabled: true,\n workingColorSpace: LinearSRGBColorSpace,\n /**\n * Implementations of supported color spaces.\n *\n * Required:\n * - primaries: chromaticity coordinates [ rx ry gx gy bx by ]\n * - whitePoint: reference white [ x y ]\n * - transfer: transfer function (pre-defined)\n * - toXYZ: Matrix3 RGB to XYZ transform\n * - fromXYZ: Matrix3 XYZ to RGB transform\n * - luminanceCoefficients: RGB luminance coefficients\n *\n * Optional:\n * - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace }\n * - workingColorSpaceConfig: { unpackColorSpace: ColorSpace }\n *\n * Reference:\n * - https://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n spaces: {},\n convert: function(color, sourceColorSpace, targetColorSpace) {\n if (this.enabled === false || sourceColorSpace === targetColorSpace || !sourceColorSpace || !targetColorSpace) {\n return color;\n }\n if (this.spaces[sourceColorSpace].transfer === SRGBTransfer) {\n color.r = SRGBToLinear(color.r);\n color.g = SRGBToLinear(color.g);\n color.b = SRGBToLinear(color.b);\n }\n if (this.spaces[sourceColorSpace].primaries !== this.spaces[targetColorSpace].primaries) {\n color.applyMatrix3(this.spaces[sourceColorSpace].toXYZ);\n color.applyMatrix3(this.spaces[targetColorSpace].fromXYZ);\n }\n if (this.spaces[targetColorSpace].transfer === SRGBTransfer) {\n color.r = LinearToSRGB(color.r);\n color.g = LinearToSRGB(color.g);\n color.b = LinearToSRGB(color.b);\n }\n return color;\n },\n fromWorkingColorSpace: function(color, targetColorSpace) {\n return this.convert(color, this.workingColorSpace, targetColorSpace);\n },\n toWorkingColorSpace: function(color, sourceColorSpace) {\n return this.convert(color, sourceColorSpace, this.workingColorSpace);\n },\n getPrimaries: function(colorSpace) {\n return this.spaces[colorSpace].primaries;\n },\n getTransfer: function(colorSpace) {\n if (colorSpace === NoColorSpace) return LinearTransfer;\n return this.spaces[colorSpace].transfer;\n },\n getLuminanceCoefficients: function(target, colorSpace = this.workingColorSpace) {\n return target.fromArray(this.spaces[colorSpace].luminanceCoefficients);\n },\n define: function(colorSpaces) {\n Object.assign(this.spaces, colorSpaces);\n },\n // Internal APIs\n _getMatrix: function(targetMatrix, sourceColorSpace, targetColorSpace) {\n return targetMatrix.copy(this.spaces[sourceColorSpace].toXYZ).multiply(this.spaces[targetColorSpace].fromXYZ);\n },\n _getDrawingBufferColorSpace: function(colorSpace) {\n return this.spaces[colorSpace].outputColorSpaceConfig.drawingBufferColorSpace;\n },\n _getUnpackColorSpace: function(colorSpace = this.workingColorSpace) {\n return this.spaces[colorSpace].workingColorSpaceConfig.unpackColorSpace;\n }\n };\n const REC709_PRIMARIES = [0.64, 0.33, 0.3, 0.6, 0.15, 0.06];\n const REC709_LUMINANCE_COEFFICIENTS = [0.2126, 0.7152, 0.0722];\n const D65 = [0.3127, 0.329];\n ColorManagement2.define({\n [LinearSRGBColorSpace]: {\n primaries: REC709_PRIMARIES,\n whitePoint: D65,\n transfer: LinearTransfer,\n toXYZ: LINEAR_REC709_TO_XYZ,\n fromXYZ: XYZ_TO_LINEAR_REC709,\n luminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n workingColorSpaceConfig: { unpackColorSpace: SRGBColorSpace },\n outputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n },\n [SRGBColorSpace]: {\n primaries: REC709_PRIMARIES,\n whitePoint: D65,\n transfer: SRGBTransfer,\n toXYZ: LINEAR_REC709_TO_XYZ,\n fromXYZ: XYZ_TO_LINEAR_REC709,\n luminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n outputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n }\n });\n return ColorManagement2;\n }\n const ColorManagement = /* @__PURE__ */ createColorManagement();\n function SRGBToLinear(c) {\n return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4);\n }\n function LinearToSRGB(c) {\n return c < 31308e-7 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055;\n }\n class Quaternion {\n constructor(x2 = 0, y = 0, z = 0, w = 1) {\n this.isQuaternion = true;\n this._x = x2;\n this._y = y;\n this._z = z;\n this._w = w;\n }\n static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) {\n let x0 = src0[srcOffset0 + 0], y0 = src0[srcOffset0 + 1], z0 = src0[srcOffset0 + 2], w0 = src0[srcOffset0 + 3];\n const x1 = src1[srcOffset1 + 0], y1 = src1[srcOffset1 + 1], z1 = src1[srcOffset1 + 2], w1 = src1[srcOffset1 + 3];\n if (t === 0) {\n dst[dstOffset + 0] = x0;\n dst[dstOffset + 1] = y0;\n dst[dstOffset + 2] = z0;\n dst[dstOffset + 3] = w0;\n return;\n }\n if (t === 1) {\n dst[dstOffset + 0] = x1;\n dst[dstOffset + 1] = y1;\n dst[dstOffset + 2] = z1;\n dst[dstOffset + 3] = w1;\n return;\n }\n if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n let s = 1 - t;\n const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, dir = cos >= 0 ? 1 : -1, sqrSin = 1 - cos * cos;\n if (sqrSin > Number.EPSILON) {\n const sin = Math.sqrt(sqrSin), len = Math.atan2(sin, cos * dir);\n s = Math.sin(s * len) / sin;\n t = Math.sin(t * len) / sin;\n }\n const tDir = t * dir;\n x0 = x0 * s + x1 * tDir;\n y0 = y0 * s + y1 * tDir;\n z0 = z0 * s + z1 * tDir;\n w0 = w0 * s + w1 * tDir;\n if (s === 1 - t) {\n const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n x0 *= f;\n y0 *= f;\n z0 *= f;\n w0 *= f;\n }\n }\n dst[dstOffset] = x0;\n dst[dstOffset + 1] = y0;\n dst[dstOffset + 2] = z0;\n dst[dstOffset + 3] = w0;\n }\n static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\n const x0 = src0[srcOffset0];\n const y0 = src0[srcOffset0 + 1];\n const z0 = src0[srcOffset0 + 2];\n const w0 = src0[srcOffset0 + 3];\n const x1 = src1[srcOffset1];\n const y1 = src1[srcOffset1 + 1];\n const z1 = src1[srcOffset1 + 2];\n const w1 = src1[srcOffset1 + 3];\n dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n return dst;\n }\n get x() {\n return this._x;\n }\n set x(value) {\n this._x = value;\n this._onChangeCallback();\n }\n get y() {\n return this._y;\n }\n set y(value) {\n this._y = value;\n this._onChangeCallback();\n }\n get z() {\n return this._z;\n }\n set z(value) {\n this._z = value;\n this._onChangeCallback();\n }\n get w() {\n return this._w;\n }\n set w(value) {\n this._w = value;\n this._onChangeCallback();\n }\n set(x2, y, z, w) {\n this._x = x2;\n this._y = y;\n this._z = z;\n this._w = w;\n this._onChangeCallback();\n return this;\n }\n clone() {\n return new this.constructor(this._x, this._y, this._z, this._w);\n }\n copy(quaternion) {\n this._x = quaternion.x;\n this._y = quaternion.y;\n this._z = quaternion.z;\n this._w = quaternion.w;\n this._onChangeCallback();\n return this;\n }\n setFromEuler(euler, update = true) {\n const x2 = euler._x, y = euler._y, z = euler._z, order = euler._order;\n const cos = Math.cos;\n const sin = Math.sin;\n const c1 = cos(x2 / 2);\n const c2 = cos(y / 2);\n const c3 = cos(z / 2);\n const s1 = sin(x2 / 2);\n const s2 = sin(y / 2);\n const s3 = sin(z / 2);\n switch (order) {\n case "XYZ":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case "YXZ":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n case "ZXY":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case "ZYX":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n case "YZX":\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n case "XZY":\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n default:\n console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: " + order);\n }\n if (update === true) this._onChangeCallback();\n return this;\n }\n setFromAxisAngle(axis, angle) {\n const halfAngle = angle / 2, s = Math.sin(halfAngle);\n this._x = axis.x * s;\n this._y = axis.y * s;\n this._z = axis.z * s;\n this._w = Math.cos(halfAngle);\n this._onChangeCallback();\n return this;\n }\n setFromRotationMatrix(m) {\n const te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33;\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1);\n this._w = 0.25 / s;\n this._x = (m32 - m23) * s;\n this._y = (m13 - m31) * s;\n this._z = (m21 - m12) * s;\n } else if (m11 > m22 && m11 > m33) {\n const s = 2 * Math.sqrt(1 + m11 - m22 - m33);\n this._w = (m32 - m23) / s;\n this._x = 0.25 * s;\n this._y = (m12 + m21) / s;\n this._z = (m13 + m31) / s;\n } else if (m22 > m33) {\n const s = 2 * Math.sqrt(1 + m22 - m11 - m33);\n this._w = (m13 - m31) / s;\n this._x = (m12 + m21) / s;\n this._y = 0.25 * s;\n this._z = (m23 + m32) / s;\n } else {\n const s = 2 * Math.sqrt(1 + m33 - m11 - m22);\n this._w = (m21 - m12) / s;\n this._x = (m13 + m31) / s;\n this._y = (m23 + m32) / s;\n this._z = 0.25 * s;\n }\n this._onChangeCallback();\n return this;\n }\n setFromUnitVectors(vFrom, vTo) {\n let r = vFrom.dot(vTo) + 1;\n if (r < Number.EPSILON) {\n r = 0;\n if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n this._x = -vFrom.y;\n this._y = vFrom.x;\n this._z = 0;\n this._w = r;\n } else {\n this._x = 0;\n this._y = -vFrom.z;\n this._z = vFrom.y;\n this._w = r;\n }\n } else {\n this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n this._w = r;\n }\n return this.normalize();\n }\n angleTo(q) {\n return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1)));\n }\n rotateTowards(q, step) {\n const angle = this.angleTo(q);\n if (angle === 0) return this;\n const t = Math.min(1, step / angle);\n this.slerp(q, t);\n return this;\n }\n identity() {\n return this.set(0, 0, 0, 1);\n }\n invert() {\n return this.conjugate();\n }\n conjugate() {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n this._onChangeCallback();\n return this;\n }\n dot(v) {\n return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n }\n lengthSq() {\n return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n }\n length() {\n return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n }\n normalize() {\n let l = this.length();\n if (l === 0) {\n this._x = 0;\n this._y = 0;\n this._z = 0;\n this._w = 1;\n } else {\n l = 1 / l;\n this._x = this._x * l;\n this._y = this._y * l;\n this._z = this._z * l;\n this._w = this._w * l;\n }\n this._onChangeCallback();\n return this;\n }\n multiply(q) {\n return this.multiplyQuaternions(this, q);\n }\n premultiply(q) {\n return this.multiplyQuaternions(q, this);\n }\n multiplyQuaternions(a, b) {\n const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n this._onChangeCallback();\n return this;\n }\n slerp(qb, t) {\n if (t === 0) return this;\n if (t === 1) return this.copy(qb);\n const x2 = this._x, y = this._y, z = this._z, w = this._w;\n let cosHalfTheta = w * qb._w + x2 * qb._x + y * qb._y + z * qb._z;\n if (cosHalfTheta < 0) {\n this._w = -qb._w;\n this._x = -qb._x;\n this._y = -qb._y;\n this._z = -qb._z;\n cosHalfTheta = -cosHalfTheta;\n } else {\n this.copy(qb);\n }\n if (cosHalfTheta >= 1) {\n this._w = w;\n this._x = x2;\n this._y = y;\n this._z = z;\n return this;\n }\n const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n if (sqrSinHalfTheta <= Number.EPSILON) {\n const s = 1 - t;\n this._w = s * w + t * this._w;\n this._x = s * x2 + t * this._x;\n this._y = s * y + t * this._y;\n this._z = s * z + t * this._z;\n this.normalize();\n return this;\n }\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta, ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n this._w = w * ratioA + this._w * ratioB;\n this._x = x2 * ratioA + this._x * ratioB;\n this._y = y * ratioA + this._y * ratioB;\n this._z = z * ratioA + this._z * ratioB;\n this._onChangeCallback();\n return this;\n }\n slerpQuaternions(qa, qb, t) {\n return this.copy(qa).slerp(qb, t);\n }\n random() {\n const theta1 = 2 * Math.PI * Math.random();\n const theta2 = 2 * Math.PI * Math.random();\n const x0 = Math.random();\n const r1 = Math.sqrt(1 - x0);\n const r2 = Math.sqrt(x0);\n return this.set(\n r1 * Math.sin(theta1),\n r1 * Math.cos(theta1),\n r2 * Math.sin(theta2),\n r2 * Math.cos(theta2)\n );\n }\n equals(quaternion) {\n return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w;\n }\n fromArray(array, offset = 0) {\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._w = array[offset + 3];\n this._onChangeCallback();\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this._x;\n array[offset + 1] = this._y;\n array[offset + 2] = this._z;\n array[offset + 3] = this._w;\n return array;\n }\n fromBufferAttribute(attribute, index) {\n this._x = attribute.getX(index);\n this._y = attribute.getY(index);\n this._z = attribute.getZ(index);\n this._w = attribute.getW(index);\n this._onChangeCallback();\n return this;\n }\n toJSON() {\n return this.toArray();\n }\n _onChange(callback) {\n this._onChangeCallback = callback;\n return this;\n }\n _onChangeCallback() {\n }\n *[Symbol.iterator]() {\n yield this._x;\n yield this._y;\n yield this._z;\n yield this._w;\n }\n }\n class Vector3 {\n constructor(x2 = 0, y = 0, z = 0) {\n Vector3.prototype.isVector3 = true;\n this.x = x2;\n this.y = y;\n this.z = z;\n }\n set(x2, y, z) {\n if (z === void 0) z = this.z;\n this.x = x2;\n this.y = y;\n this.z = z;\n return this;\n }\n setScalar(scalar) {\n this.x = scalar;\n this.y = scalar;\n this.z = scalar;\n return this;\n }\n setX(x2) {\n this.x = x2;\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n setZ(z) {\n this.z = z;\n return this;\n }\n setComponent(index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n default:\n throw new Error("index is out of range: " + index);\n }\n return this;\n }\n getComponent(index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n case 2:\n return this.z;\n default:\n throw new Error("index is out of range: " + index);\n }\n }\n clone() {\n return new this.constructor(this.x, this.y, this.z);\n }\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n return this;\n }\n add(v) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n return this;\n }\n addScalar(s) {\n this.x += s;\n this.y += s;\n this.z += s;\n return this;\n }\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n this.z = a.z + b.z;\n return this;\n }\n addScaledVector(v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n this.z += v.z * s;\n return this;\n }\n sub(v) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n return this;\n }\n subScalar(s) {\n this.x -= s;\n this.y -= s;\n this.z -= s;\n return this;\n }\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n this.z = a.z - b.z;\n return this;\n }\n multiply(v) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n return this;\n }\n multiplyScalar(scalar) {\n this.x *= scalar;\n this.y *= scalar;\n this.z *= scalar;\n return this;\n }\n multiplyVectors(a, b) {\n this.x = a.x * b.x;\n this.y = a.y * b.y;\n this.z = a.z * b.z;\n return this;\n }\n applyEuler(euler) {\n return this.applyQuaternion(_quaternion$4.setFromEuler(euler));\n }\n applyAxisAngle(axis, angle) {\n return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle));\n }\n applyMatrix3(m) {\n const x2 = this.x, y = this.y, z = this.z;\n const e = m.elements;\n this.x = e[0] * x2 + e[3] * y + e[6] * z;\n this.y = e[1] * x2 + e[4] * y + e[7] * z;\n this.z = e[2] * x2 + e[5] * y + e[8] * z;\n return this;\n }\n applyNormalMatrix(m) {\n return this.applyMatrix3(m).normalize();\n }\n applyMatrix4(m) {\n const x2 = this.x, y = this.y, z = this.z;\n const e = m.elements;\n const w = 1 / (e[3] * x2 + e[7] * y + e[11] * z + e[15]);\n this.x = (e[0] * x2 + e[4] * y + e[8] * z + e[12]) * w;\n this.y = (e[1] * x2 + e[5] * y + e[9] * z + e[13]) * w;\n this.z = (e[2] * x2 + e[6] * y + e[10] * z + e[14]) * w;\n return this;\n }\n applyQuaternion(q) {\n const vx = this.x, vy = this.y, vz = this.z;\n const qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n const tx = 2 * (qy * vz - qz * vy);\n const ty = 2 * (qz * vx - qx * vz);\n const tz = 2 * (qx * vy - qy * vx);\n this.x = vx + qw * tx + qy * tz - qz * ty;\n this.y = vy + qw * ty + qz * tx - qx * tz;\n this.z = vz + qw * tz + qx * ty - qy * tx;\n return this;\n }\n project(camera) {\n return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\n }\n unproject(camera) {\n return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\n }\n transformDirection(m) {\n const x2 = this.x, y = this.y, z = this.z;\n const e = m.elements;\n this.x = e[0] * x2 + e[4] * y + e[8] * z;\n this.y = e[1] * x2 + e[5] * y + e[9] * z;\n this.z = e[2] * x2 + e[6] * y + e[10] * z;\n return this.normalize();\n }\n divide(v) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n return this;\n }\n divideScalar(scalar) {\n return this.multiplyScalar(1 / scalar);\n }\n min(v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n return this;\n }\n max(v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n return this;\n }\n clamp(min, max2) {\n this.x = clamp(this.x, min.x, max2.x);\n this.y = clamp(this.y, min.y, max2.y);\n this.z = clamp(this.z, min.z, max2.z);\n return this;\n }\n clampScalar(minVal, maxVal) {\n this.x = clamp(this.x, minVal, maxVal);\n this.y = clamp(this.y, minVal, maxVal);\n this.z = clamp(this.z, minVal, maxVal);\n return this;\n }\n clampLength(min, max2) {\n const length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(clamp(length, min, max2));\n }\n floor() {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n return this;\n }\n ceil() {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n return this;\n }\n round() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n return this;\n }\n roundToZero() {\n this.x = Math.trunc(this.x);\n this.y = Math.trunc(this.y);\n this.z = Math.trunc(this.z);\n return this;\n }\n negate() {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n }\n dot(v) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n // TODO lengthSquared?\n lengthSq() {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n }\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n }\n manhattanLength() {\n return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n }\n normalize() {\n return this.divideScalar(this.length() || 1);\n }\n setLength(length) {\n return this.normalize().multiplyScalar(length);\n }\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n return this;\n }\n lerpVectors(v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n return this;\n }\n cross(v) {\n return this.crossVectors(this, v);\n }\n crossVectors(a, b) {\n const ax = a.x, ay = a.y, az = a.z;\n const bx = b.x, by = b.y, bz = b.z;\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n return this;\n }\n projectOnVector(v) {\n const denominator = v.lengthSq();\n if (denominator === 0) return this.set(0, 0, 0);\n const scalar = v.dot(this) / denominator;\n return this.copy(v).multiplyScalar(scalar);\n }\n projectOnPlane(planeNormal) {\n _vector$c.copy(this).projectOnVector(planeNormal);\n return this.sub(_vector$c);\n }\n reflect(normal) {\n return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal)));\n }\n angleTo(v) {\n const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n if (denominator === 0) return Math.PI / 2;\n const theta = this.dot(v) / denominator;\n return Math.acos(clamp(theta, -1, 1));\n }\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n distanceToSquared(v) {\n const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n return dx * dx + dy * dy + dz * dz;\n }\n manhattanDistanceTo(v) {\n return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z);\n }\n setFromSpherical(s) {\n return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\n }\n setFromSphericalCoords(radius, phi, theta) {\n const sinPhiRadius = Math.sin(phi) * radius;\n this.x = sinPhiRadius * Math.sin(theta);\n this.y = Math.cos(phi) * radius;\n this.z = sinPhiRadius * Math.cos(theta);\n return this;\n }\n setFromCylindrical(c) {\n return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\n }\n setFromCylindricalCoords(radius, theta, y) {\n this.x = radius * Math.sin(theta);\n this.y = y;\n this.z = radius * Math.cos(theta);\n return this;\n }\n setFromMatrixPosition(m) {\n const e = m.elements;\n this.x = e[12];\n this.y = e[13];\n this.z = e[14];\n return this;\n }\n setFromMatrixScale(m) {\n const sx = this.setFromMatrixColumn(m, 0).length();\n const sy = this.setFromMatrixColumn(m, 1).length();\n const sz = this.setFromMatrixColumn(m, 2).length();\n this.x = sx;\n this.y = sy;\n this.z = sz;\n return this;\n }\n setFromMatrixColumn(m, index) {\n return this.fromArray(m.elements, index * 4);\n }\n setFromMatrix3Column(m, index) {\n return this.fromArray(m.elements, index * 3);\n }\n setFromEuler(e) {\n this.x = e._x;\n this.y = e._y;\n this.z = e._z;\n return this;\n }\n setFromColor(c) {\n this.x = c.r;\n this.y = c.g;\n this.z = c.b;\n return this;\n }\n equals(v) {\n return v.x === this.x && v.y === this.y && v.z === this.z;\n }\n fromArray(array, offset = 0) {\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n return array;\n }\n fromBufferAttribute(attribute, index) {\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n this.z = attribute.getZ(index);\n return this;\n }\n random() {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n return this;\n }\n randomDirection() {\n const theta = Math.random() * Math.PI * 2;\n const u = Math.random() * 2 - 1;\n const c = Math.sqrt(1 - u * u);\n this.x = c * Math.cos(theta);\n this.y = u;\n this.z = c * Math.sin(theta);\n return this;\n }\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n yield this.z;\n }\n }\n const _vector$c = /* @__PURE__ */ new Vector3();\n const _quaternion$4 = /* @__PURE__ */ new Quaternion();\n const _colorKeywords = {\n "aliceblue": 15792383,\n "antiquewhite": 16444375,\n "aqua": 65535,\n "aquamarine": 8388564,\n "azure": 15794175,\n "beige": 16119260,\n "bisque": 16770244,\n "black": 0,\n "blanchedalmond": 16772045,\n "blue": 255,\n "blueviolet": 9055202,\n "brown": 10824234,\n "burlywood": 14596231,\n "cadetblue": 6266528,\n "chartreuse": 8388352,\n "chocolate": 13789470,\n "coral": 16744272,\n "cornflowerblue": 6591981,\n "cornsilk": 16775388,\n "crimson": 14423100,\n "cyan": 65535,\n "darkblue": 139,\n "darkcyan": 35723,\n "darkgoldenrod": 12092939,\n "darkgray": 11119017,\n "darkgreen": 25600,\n "darkgrey": 11119017,\n "darkkhaki": 12433259,\n "darkmagenta": 9109643,\n "darkolivegreen": 5597999,\n "darkorange": 16747520,\n "darkorchid": 10040012,\n "darkred": 9109504,\n "darksalmon": 15308410,\n "darkseagreen": 9419919,\n "darkslateblue": 4734347,\n "darkslategray": 3100495,\n "darkslategrey": 3100495,\n "darkturquoise": 52945,\n "darkviolet": 9699539,\n "deeppink": 16716947,\n "deepskyblue": 49151,\n "dimgray": 6908265,\n "dimgrey": 6908265,\n "dodgerblue": 2003199,\n "firebrick": 11674146,\n "floralwhite": 16775920,\n "forestgreen": 2263842,\n "fuchsia": 16711935,\n "gainsboro": 14474460,\n "ghostwhite": 16316671,\n "gold": 16766720,\n "goldenrod": 14329120,\n "gray": 8421504,\n "green": 32768,\n "greenyellow": 11403055,\n "grey": 8421504,\n "honeydew": 15794160,\n "hotpink": 16738740,\n "indianred": 13458524,\n "indigo": 4915330,\n "ivory": 16777200,\n "khaki": 15787660,\n "lavender": 15132410,\n "lavenderblush": 16773365,\n "lawngreen": 8190976,\n "lemonchiffon": 16775885,\n "lightblue": 11393254,\n "lightcoral": 15761536,\n "lightcyan": 14745599,\n "lightgoldenrodyellow": 16448210,\n "lightgray": 13882323,\n "lightgreen": 9498256,\n "lightgrey": 13882323,\n "lightpink": 16758465,\n "lightsalmon": 16752762,\n "lightseagreen": 2142890,\n "lightskyblue": 8900346,\n "lightslategray": 7833753,\n "lightslategrey": 7833753,\n "lightsteelblue": 11584734,\n "lightyellow": 16777184,\n "lime": 65280,\n "limegreen": 3329330,\n "linen": 16445670,\n "magenta": 16711935,\n "maroon": 8388608,\n "mediumaquamarine": 6737322,\n "mediumblue": 205,\n "mediumorchid": 12211667,\n "mediumpurple": 9662683,\n "mediumseagreen": 3978097,\n "mediumslateblue": 8087790,\n "mediumspringgreen": 64154,\n "mediumturquoise": 4772300,\n "mediumvioletred": 13047173,\n "midnightblue": 1644912,\n "mintcream": 16121850,\n "mistyrose": 16770273,\n "moccasin": 16770229,\n "navajowhite": 16768685,\n "navy": 128,\n "oldlace": 16643558,\n "olive": 8421376,\n "olivedrab": 7048739,\n "orange": 16753920,\n "orangered": 16729344,\n "orchid": 14315734,\n "palegoldenrod": 15657130,\n "palegreen": 10025880,\n "paleturquoise": 11529966,\n "palevioletred": 14381203,\n "papayawhip": 16773077,\n "peachpuff": 16767673,\n "peru": 13468991,\n "pink": 16761035,\n "plum": 14524637,\n "powderblue": 11591910,\n "purple": 8388736,\n "rebeccapurple": 6697881,\n "red": 16711680,\n "rosybrown": 12357519,\n "royalblue": 4286945,\n "saddlebrown": 9127187,\n "salmon": 16416882,\n "sandybrown": 16032864,\n "seagreen": 3050327,\n "seashell": 16774638,\n "sienna": 10506797,\n "silver": 12632256,\n "skyblue": 8900331,\n "slateblue": 6970061,\n "slategray": 7372944,\n "slategrey": 7372944,\n "snow": 16775930,\n "springgreen": 65407,\n "steelblue": 4620980,\n "tan": 13808780,\n "teal": 32896,\n "thistle": 14204888,\n "tomato": 16737095,\n "turquoise": 4251856,\n "violet": 15631086,\n "wheat": 16113331,\n "white": 16777215,\n "whitesmoke": 16119285,\n "yellow": 16776960,\n "yellowgreen": 10145074\n };\n const _hslA = { h: 0, s: 0, l: 0 };\n const _hslB = { h: 0, s: 0, l: 0 };\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t);\n return p;\n }\n class Color {\n constructor(r, g, b) {\n this.isColor = true;\n this.r = 1;\n this.g = 1;\n this.b = 1;\n return this.set(r, g, b);\n }\n set(r, g, b) {\n if (g === void 0 && b === void 0) {\n const value = r;\n if (value && value.isColor) {\n this.copy(value);\n } else if (typeof value === "number") {\n this.setHex(value);\n } else if (typeof value === "string") {\n this.setStyle(value);\n }\n } else {\n this.setRGB(r, g, b);\n }\n return this;\n }\n setScalar(scalar) {\n this.r = scalar;\n this.g = scalar;\n this.b = scalar;\n return this;\n }\n setHex(hex, colorSpace = SRGBColorSpace) {\n hex = Math.floor(hex);\n this.r = (hex >> 16 & 255) / 255;\n this.g = (hex >> 8 & 255) / 255;\n this.b = (hex & 255) / 255;\n ColorManagement.toWorkingColorSpace(this, colorSpace);\n return this;\n }\n setRGB(r, g, b, colorSpace = ColorManagement.workingColorSpace) {\n this.r = r;\n this.g = g;\n this.b = b;\n ColorManagement.toWorkingColorSpace(this, colorSpace);\n return this;\n }\n setHSL(h, s, l, colorSpace = ColorManagement.workingColorSpace) {\n h = euclideanModulo(h, 1);\n s = clamp(s, 0, 1);\n l = clamp(l, 0, 1);\n if (s === 0) {\n this.r = this.g = this.b = l;\n } else {\n const p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n const q = 2 * l - p;\n this.r = hue2rgb(q, p, h + 1 / 3);\n this.g = hue2rgb(q, p, h);\n this.b = hue2rgb(q, p, h - 1 / 3);\n }\n ColorManagement.toWorkingColorSpace(this, colorSpace);\n return this;\n }\n setStyle(style, colorSpace = SRGBColorSpace) {\n function handleAlpha(string) {\n if (string === void 0) return;\n if (parseFloat(string) < 1) {\n console.warn("THREE.Color: Alpha component of " + style + " will be ignored.");\n }\n }\n let m;\n if (m = /^(\\w+)\\(([^\\)]*)\\)/.exec(style)) {\n let color;\n const name = m[1];\n const components = m[2];\n switch (name) {\n case "rgb":\n case "rgba":\n if (color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n handleAlpha(color[4]);\n return this.setRGB(\n Math.min(255, parseInt(color[1], 10)) / 255,\n Math.min(255, parseInt(color[2], 10)) / 255,\n Math.min(255, parseInt(color[3], 10)) / 255,\n colorSpace\n );\n }\n if (color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n handleAlpha(color[4]);\n return this.setRGB(\n Math.min(100, parseInt(color[1], 10)) / 100,\n Math.min(100, parseInt(color[2], 10)) / 100,\n Math.min(100, parseInt(color[3], 10)) / 100,\n colorSpace\n );\n }\n break;\n case "hsl":\n case "hsla":\n if (color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n handleAlpha(color[4]);\n return this.setHSL(\n parseFloat(color[1]) / 360,\n parseFloat(color[2]) / 100,\n parseFloat(color[3]) / 100,\n colorSpace\n );\n }\n break;\n default:\n console.warn("THREE.Color: Unknown color model " + style);\n }\n } else if (m = /^\\#([A-Fa-f\\d]+)$/.exec(style)) {\n const hex = m[1];\n const size = hex.length;\n if (size === 3) {\n return this.setRGB(\n parseInt(hex.charAt(0), 16) / 15,\n parseInt(hex.charAt(1), 16) / 15,\n parseInt(hex.charAt(2), 16) / 15,\n colorSpace\n );\n } else if (size === 6) {\n return this.setHex(parseInt(hex, 16), colorSpace);\n } else {\n console.warn("THREE.Color: Invalid hex color " + style);\n }\n } else if (style && style.length > 0) {\n return this.setColorName(style, colorSpace);\n }\n return this;\n }\n setColorName(style, colorSpace = SRGBColorSpace) {\n const hex = _colorKeywords[style.toLowerCase()];\n if (hex !== void 0) {\n this.setHex(hex, colorSpace);\n } else {\n console.warn("THREE.Color: Unknown color " + style);\n }\n return this;\n }\n clone() {\n return new this.constructor(this.r, this.g, this.b);\n }\n copy(color) {\n this.r = color.r;\n this.g = color.g;\n this.b = color.b;\n return this;\n }\n copySRGBToLinear(color) {\n this.r = SRGBToLinear(color.r);\n this.g = SRGBToLinear(color.g);\n this.b = SRGBToLinear(color.b);\n return this;\n }\n copyLinearToSRGB(color) {\n this.r = LinearToSRGB(color.r);\n this.g = LinearToSRGB(color.g);\n this.b = LinearToSRGB(color.b);\n return this;\n }\n convertSRGBToLinear() {\n this.copySRGBToLinear(this);\n return this;\n }\n convertLinearToSRGB() {\n this.copyLinearToSRGB(this);\n return this;\n }\n getHex(colorSpace = SRGBColorSpace) {\n ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n return Math.round(clamp(_color.r * 255, 0, 255)) * 65536 + Math.round(clamp(_color.g * 255, 0, 255)) * 256 + Math.round(clamp(_color.b * 255, 0, 255));\n }\n getHexString(colorSpace = SRGBColorSpace) {\n return ("000000" + this.getHex(colorSpace).toString(16)).slice(-6);\n }\n getHSL(target, colorSpace = ColorManagement.workingColorSpace) {\n ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n const r = _color.r, g = _color.g, b = _color.b;\n const max2 = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let hue, saturation;\n const lightness = (min + max2) / 2;\n if (min === max2) {\n hue = 0;\n saturation = 0;\n } else {\n const delta = max2 - min;\n saturation = lightness <= 0.5 ? delta / (max2 + min) : delta / (2 - max2 - min);\n switch (max2) {\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n case g:\n hue = (b - r) / delta + 2;\n break;\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n hue /= 6;\n }\n target.h = hue;\n target.s = saturation;\n target.l = lightness;\n return target;\n }\n getRGB(target, colorSpace = ColorManagement.workingColorSpace) {\n ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n target.r = _color.r;\n target.g = _color.g;\n target.b = _color.b;\n return target;\n }\n getStyle(colorSpace = SRGBColorSpace) {\n ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n const r = _color.r, g = _color.g, b = _color.b;\n if (colorSpace !== SRGBColorSpace) {\n return `color(${colorSpace} ${r.toFixed(3)} ${g.toFixed(3)} ${b.toFixed(3)})`;\n }\n return `rgb(${Math.round(r * 255)},${Math.round(g * 255)},${Math.round(b * 255)})`;\n }\n offsetHSL(h, s, l) {\n this.getHSL(_hslA);\n return this.setHSL(_hslA.h + h, _hslA.s + s, _hslA.l + l);\n }\n add(color) {\n this.r += color.r;\n this.g += color.g;\n this.b += color.b;\n return this;\n }\n addColors(color1, color2) {\n this.r = color1.r + color2.r;\n this.g = color1.g + color2.g;\n this.b = color1.b + color2.b;\n return this;\n }\n addScalar(s) {\n this.r += s;\n this.g += s;\n this.b += s;\n return this;\n }\n sub(color) {\n this.r = Math.max(0, this.r - color.r);\n this.g = Math.max(0, this.g - color.g);\n this.b = Math.max(0, this.b - color.b);\n return this;\n }\n multiply(color) {\n this.r *= color.r;\n this.g *= color.g;\n this.b *= color.b;\n return this;\n }\n multiplyScalar(s) {\n this.r *= s;\n this.g *= s;\n this.b *= s;\n return this;\n }\n lerp(color, alpha) {\n this.r += (color.r - this.r) * alpha;\n this.g += (color.g - this.g) * alpha;\n this.b += (color.b - this.b) * alpha;\n return this;\n }\n lerpColors(color1, color2, alpha) {\n this.r = color1.r + (color2.r - color1.r) * alpha;\n this.g = color1.g + (color2.g - color1.g) * alpha;\n this.b = color1.b + (color2.b - color1.b) * alpha;\n return this;\n }\n lerpHSL(color, alpha) {\n this.getHSL(_hslA);\n color.getHSL(_hslB);\n const h = lerp(_hslA.h, _hslB.h, alpha);\n const s = lerp(_hslA.s, _hslB.s, alpha);\n const l = lerp(_hslA.l, _hslB.l, alpha);\n this.setHSL(h, s, l);\n return this;\n }\n setFromVector3(v) {\n this.r = v.x;\n this.g = v.y;\n this.b = v.z;\n return this;\n }\n applyMatrix3(m) {\n const r = this.r, g = this.g, b = this.b;\n const e = m.elements;\n this.r = e[0] * r + e[3] * g + e[6] * b;\n this.g = e[1] * r + e[4] * g + e[7] * b;\n this.b = e[2] * r + e[5] * g + e[8] * b;\n return this;\n }\n equals(c) {\n return c.r === this.r && c.g === this.g && c.b === this.b;\n }\n fromArray(array, offset = 0) {\n this.r = array[offset];\n this.g = array[offset + 1];\n this.b = array[offset + 2];\n return this;\n }\n toArray(array = [], offset = 0) {\n array[offset] = this.r;\n array[offset + 1] = this.g;\n array[offset + 2] = this.b;\n return array;\n }\n fromBufferAttribute(attribute, index) {\n this.r = attribute.getX(index);\n this.g = attribute.getY(index);\n this.b = attribute.getZ(index);\n return this;\n }\n toJSON() {\n return this.getHex();\n }\n *[Symbol.iterator]() {\n yield this.r;\n yield this.g;\n yield this.b;\n }\n }\n const _color = /* @__PURE__ */ new Color();\n Color.NAMES = _colorKeywords;\n if (typeof __THREE_DEVTOOLS__ !== "undefined") {\n __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register", { detail: {\n revision: REVISION\n } }));\n }\n if (typeof window !== "undefined") {\n if (window.__THREE__) {\n console.warn("WARNING: Multiple instances of Three.js being imported.");\n } else {\n window.__THREE__ = REVISION;\n }\n }\n function unindentLines(s) {\n var _a2;\n let seenNonEmpty = false;\n const lines = s.split("\\n").map((line) => {\n const trimmedLine = line.trimEnd();\n if (seenNonEmpty) {\n return trimmedLine;\n }\n if (trimmedLine.length > 0) {\n seenNonEmpty = true;\n return trimmedLine;\n }\n return null;\n }).filter((line) => line != null);\n while (lines.length > 0 && lines[lines.length - 1].length === 0) {\n lines.pop();\n }\n if (lines.length === 0) {\n return [];\n }\n const indent = (_a2 = lines[0].match(/^\\s*/)) == null ? void 0 : _a2[0];\n if (!indent) {\n return lines;\n }\n const regex = new RegExp(`^${indent}`);\n return lines.map((line) => line.replace(regex, ""));\n }\n function unindent(s) {\n return unindentLines(s).join("\\n");\n }\n const f32buffer = new Float32Array(1);\n const u32buffer = new Uint32Array(f32buffer.buffer);\n function toHalf(f) {\n f32buffer[0] = f;\n const bits2 = u32buffer[0];\n const sign = bits2 >> 31 & 1;\n const exp = bits2 >> 23 & 255;\n const frac = bits2 & 8388607;\n const halfSign = sign << 15;\n if (exp === 255) {\n if (frac !== 0) {\n return halfSign | 32767;\n }\n return halfSign | 31744;\n }\n const newExp = exp - 127 + 15;\n if (newExp >= 31) {\n return halfSign | 31744;\n }\n if (newExp <= 0) {\n if (newExp < -10) {\n return halfSign;\n }\n const subFrac = (frac | 8388608) >> 1 - newExp + 13;\n return halfSign | subFrac;\n }\n const halfFrac = frac >> 13;\n return halfSign | newExp << 10 | halfFrac;\n }\n function fromHalf(h) {\n const sign = h >> 15 & 1;\n const exp = h >> 10 & 31;\n const frac = h & 1023;\n let f32bits;\n if (exp === 0) {\n if (frac === 0) {\n f32bits = sign << 31;\n } else {\n let mant = frac;\n let e = -14;\n while ((mant & 1024) === 0) {\n mant <<= 1;\n e--;\n }\n mant &= 1023;\n const newExp = e + 127;\n const newFrac = mant << 13;\n f32bits = sign << 31 | newExp << 23 | newFrac;\n }\n } else if (exp === 31) {\n if (frac === 0) {\n f32bits = sign << 31 | 2139095040;\n } else {\n f32bits = sign << 31 | 2143289344;\n }\n } else {\n const newExp = exp - 15 + 127;\n const newFrac = frac << 13;\n f32bits = sign << 31 | newExp << 23 | newFrac;\n }\n u32buffer[0] = f32bits;\n return f32buffer[0];\n }\n function floatToUint8(v) {\n return Math.max(0, Math.min(255, Math.round(v * 255)));\n }\n function getArrayBuffers(ctx) {\n const buffers = [];\n const seen = /* @__PURE__ */ new Set();\n function traverse(obj) {\n if (obj && typeof obj === "object" && !seen.has(obj)) {\n seen.add(obj);\n if (obj instanceof ArrayBuffer) {\n buffers.push(obj);\n } else if (ArrayBuffer.isView(obj)) {\n buffers.push(obj.buffer);\n } else if (Array.isArray(obj)) {\n obj.forEach(traverse);\n } else {\n Object.values(obj).forEach(traverse);\n }\n }\n }\n traverse(ctx);\n return buffers;\n }\n function setPackedSplat(packedSplats, index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) {\n const uR = floatToUint8(r);\n const uG = floatToUint8(g);\n const uB = floatToUint8(b);\n const uA = floatToUint8(opacity);\n const uQuat = encodeQuatOctXy88R8(\n new Quaternion(quatX, quatY, quatZ, quatW)\n );\n const uQuatX = uQuat & 255;\n const uQuatY = uQuat >>> 8 & 255;\n const uQuatZ = uQuat >>> 16 & 255;\n const uScaleX = scaleX === 0 ? 0 : Math.min(\n 255,\n Math.max(\n 0,\n Math.round((Math.log(scaleX) - LN_SCALE_MIN) / LN_RESCALE) + 1\n )\n );\n const uScaleY = scaleY === 0 ? 0 : Math.min(\n 255,\n Math.max(\n 0,\n Math.round((Math.log(scaleY) - LN_SCALE_MIN) / LN_RESCALE) + 1\n )\n );\n const uScaleZ = scaleZ === 0 ? 0 : Math.min(\n 255,\n Math.max(\n 0,\n Math.round((Math.log(scaleZ) - LN_SCALE_MIN) / LN_RESCALE) + 1\n )\n );\n const uCenterX = toHalf(x2);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n const i4 = index * 4;\n packedSplats[i4] = uR | uG << 8 | uB << 16 | uA << 24;\n packedSplats[i4 + 1] = uCenterX | uCenterY << 16;\n packedSplats[i4 + 2] = uCenterZ | uQuatX << 16 | uQuatY << 24;\n packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | uQuatZ << 24;\n }\n function setPackedSplatCenter(packedSplats, index, x2, y, z) {\n const uCenterX = toHalf(x2);\n const uCenterY = toHalf(y);\n const uCenterZ = toHalf(z);\n const i4 = index * 4;\n packedSplats[i4 + 1] = uCenterX | uCenterY << 16;\n packedSplats[i4 + 2] = uCenterZ | packedSplats[i4 + 2] & 4294901760;\n }\n function setPackedSplatScales(packedSplats, index, scaleX, scaleY, scaleZ) {\n const uScaleX = scaleX === 0 ? 0 : Math.min(\n 255,\n Math.max(\n 0,\n Math.round((Math.log(scaleX) - LN_SCALE_MIN) / LN_RESCALE) + 1\n )\n );\n const uScaleY = scaleY === 0 ? 0 : Math.min(\n 255,\n Math.max(\n 0,\n Math.round((Math.log(scaleY) - LN_SCALE_MIN) / LN_RESCALE) + 1\n )\n );\n const uScaleZ = scaleZ === 0 ? 0 : Math.min(\n 255,\n Math.max(\n 0,\n Math.round((Math.log(scaleZ) - LN_SCALE_MIN) / LN_RESCALE) + 1\n )\n );\n const i4 = index * 4;\n packedSplats[i4 + 3] = uScaleX | uScaleY << 8 | uScaleZ << 16 | packedSplats[i4 + 3] & 4278190080;\n }\n function setPackedSplatQuat(packedSplats, index, quatX, quatY, quatZ, quatW) {\n const uQuat = encodeQuatOctXy88R8(\n new Quaternion(quatX, quatY, quatZ, quatW)\n );\n const uQuatX = uQuat & 255;\n const uQuatY = uQuat >>> 8 & 255;\n const uQuatZ = uQuat >>> 16 & 255;\n const i4 = index * 4;\n packedSplats[i4 + 2] = packedSplats[i4 + 2] & 65535 | uQuatX << 16 | uQuatY << 24;\n packedSplats[i4 + 3] = packedSplats[i4 + 3] & 16777215 | uQuatZ << 24;\n }\n function setPackedSplatRgb(packedSplats, index, r, g, b) {\n const uR = floatToUint8(r);\n const uG = floatToUint8(g);\n const uB = floatToUint8(b);\n const i4 = index * 4;\n packedSplats[i4] = uR | uG << 8 | uB << 16 | packedSplats[i4] & 4278190080;\n }\n function setPackedSplatOpacity(packedSplats, index, opacity) {\n const uA = floatToUint8(opacity);\n const i4 = index * 4;\n packedSplats[i4] = packedSplats[i4] & 16777215 | uA << 24;\n }\n new Vector3();\n new Vector3();\n new Color();\n unindent(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);\n function encodeQuatOctXy88R8(q) {\n const qnorm = q.clone().normalize();\n if (qnorm.w < 0) {\n qnorm.set(-qnorm.x, -qnorm.y, -qnorm.z, -qnorm.w);\n }\n const theta = 2 * Math.acos(qnorm.w);\n const xyz_norm = Math.sqrt(\n qnorm.x * qnorm.x + qnorm.y * qnorm.y + qnorm.z * qnorm.z\n );\n const axis = xyz_norm < 1e-6 ? new Vector3(1, 0, 0) : new Vector3(qnorm.x, qnorm.y, qnorm.z).divideScalar(xyz_norm);\n const sum = Math.abs(axis.x) + Math.abs(axis.y) + Math.abs(axis.z);\n let p_x = axis.x / sum;\n let p_y = axis.y / sum;\n if (axis.z < 0) {\n const tmp = p_x;\n p_x = (1 - Math.abs(p_y)) * (p_x >= 0 ? 1 : -1);\n p_y = (1 - Math.abs(tmp)) * (p_y >= 0 ? 1 : -1);\n }\n const u_f = p_x * 0.5 + 0.5;\n const v_f = p_y * 0.5 + 0.5;\n const quantU = Math.round(u_f * 255);\n const quantV = Math.round(v_f * 255);\n const angleInt = Math.round(theta * (255 / Math.PI));\n return angleInt << 16 | quantV << 8 | quantU;\n }\n function packSint8Bytes(b0, b1, b2, b3) {\n const clampedB0 = Math.max(-127, Math.min(127, b0 * 127));\n const clampedB1 = Math.max(-127, Math.min(127, b1 * 127));\n const clampedB2 = Math.max(-127, Math.min(127, b2 * 127));\n const clampedB3 = Math.max(-127, Math.min(127, b3 * 127));\n return clampedB0 & 255 | (clampedB1 & 255) << 8 | (clampedB2 & 255) << 16 | (clampedB3 & 255) << 24;\n }\n function encodeSh1Rgb(sh1Array, index, sh1Rgb) {\n const base = index * 2;\n for (let i2 = 0; i2 < 9; ++i2) {\n const value = Math.max(-63, Math.min(63, sh1Rgb[i2] * 63)) & 127;\n const bitStart = i2 * 7;\n const bitEnd = bitStart + 7;\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = value << bitOffset & 4294967295;\n sh1Array[base + wordStart] |= firstWord;\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = value >>> 32 - bitOffset & 4294967295;\n sh1Array[base + wordStart + 1] |= secondWord;\n }\n }\n }\n function encodeSh2Rgb(sh2Array, index, sh2Rgb) {\n sh2Array[index * 4 + 0] = packSint8Bytes(\n sh2Rgb[0],\n sh2Rgb[1],\n sh2Rgb[2],\n sh2Rgb[3]\n );\n sh2Array[index * 4 + 1] = packSint8Bytes(\n sh2Rgb[4],\n sh2Rgb[5],\n sh2Rgb[6],\n sh2Rgb[7]\n );\n sh2Array[index * 4 + 2] = packSint8Bytes(\n sh2Rgb[8],\n sh2Rgb[9],\n sh2Rgb[10],\n sh2Rgb[11]\n );\n sh2Array[index * 4 + 3] = packSint8Bytes(\n sh2Rgb[12],\n sh2Rgb[13],\n sh2Rgb[14],\n 0\n );\n }\n function encodeSh3Rgb(sh3Array, index, sh3Rgb) {\n const base = index * 4;\n for (let i2 = 0; i2 < 21; ++i2) {\n const value = Math.max(-31, Math.min(31, sh3Rgb[i2] * 31)) & 63;\n const bitStart = i2 * 6;\n const bitEnd = bitStart + 6;\n const wordStart = Math.floor(bitStart / 32);\n const bitOffset = bitStart - wordStart * 32;\n const firstWord = value << bitOffset & 4294967295;\n sh3Array[base + wordStart] |= firstWord;\n if (bitEnd > wordStart * 32 + 32) {\n const secondWord = value >>> 32 - bitOffset & 4294967295;\n sh3Array[base + wordStart + 1] |= secondWord;\n }\n }\n }\n class GunzipReader {\n constructor({\n fileBytes,\n chunkBytes = 64 * 1024\n }) {\n this.fileBytes = fileBytes;\n this.chunkBytes = chunkBytes;\n this.offset = 0;\n this.chunks = [];\n this.totalBytes = 0;\n this.gunzip = new Gunzip((chunk, _final) => {\n this.chunks.push(chunk);\n this.totalBytes += chunk.length;\n });\n }\n read(numBytes) {\n while (this.totalBytes < numBytes && this.offset < this.fileBytes.length) {\n const end = Math.min(\n this.offset + this.chunkBytes,\n this.fileBytes.length\n );\n this.gunzip.push(this.fileBytes.subarray(this.offset, end), false);\n this.offset = end;\n }\n if (this.totalBytes < numBytes && this.offset >= this.fileBytes.length) {\n this.gunzip.push(new Uint8Array(0), true);\n }\n if (this.totalBytes < numBytes) {\n throw new Error(\n `Unexpected EOF: needed ${numBytes}, got ${this.totalBytes}`\n );\n }\n const allBytes = new Uint8Array(this.totalBytes);\n let outOffset = 0;\n for (const chunk of this.chunks) {\n allBytes.set(chunk, outOffset);\n outOffset += chunk.length;\n }\n const result = allBytes.subarray(0, numBytes);\n this.chunks = [allBytes.subarray(numBytes)];\n this.totalBytes -= numBytes;\n return result;\n }\n }\n class SpzReader {\n constructor({ fileBytes }) {\n this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;\n this.reader = new GunzipReader({ fileBytes: this.fileBytes });\n const header = new DataView(this.reader.read(16).buffer);\n if (header.getUint32(0, true) !== 1347635022) {\n throw new Error("Invalid SPZ file");\n }\n this.version = header.getUint32(4, true);\n if (this.version < 1 || this.version > 2) {\n throw new Error(`Unsupported SPZ version: ${this.version}`);\n }\n this.numSplats = header.getUint32(8, true);\n this.shDegree = header.getUint8(12);\n this.fractionalBits = header.getUint8(13);\n this.flags = header.getUint8(14);\n this.flagAntiAlias = (this.flags & 1) !== 0;\n this.reserved = header.getUint8(15);\n this.parsed = false;\n }\n parseSplats(centerCallback, alphaCallback, rgbCallback, scalesCallback, quatCallback, shCallback) {\n if (this.parsed) {\n throw new Error("SPZ file already parsed");\n }\n this.parsed = true;\n if (this.version === 1) {\n const centerBytes = this.reader.read(this.numSplats * 3 * 2);\n const centerUint16 = new Uint16Array(centerBytes.buffer);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const x2 = fromHalf(centerUint16[i3]);\n const y = fromHalf(centerUint16[i3 + 1]);\n const z = fromHalf(centerUint16[i3 + 2]);\n centerCallback(i2, x2, y, z);\n }\n } else if (this.version === 2) {\n const fixed = 1 << this.fractionalBits;\n const centerBytes = this.reader.read(this.numSplats * 3 * 3);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i9 = i2 * 9;\n const x2 = ((centerBytes[i9 + 2] << 24 | centerBytes[i9 + 1] << 16 | centerBytes[i9] << 8) >> 8) / fixed;\n const y = ((centerBytes[i9 + 5] << 24 | centerBytes[i9 + 4] << 16 | centerBytes[i9 + 3] << 8) >> 8) / fixed;\n const z = ((centerBytes[i9 + 8] << 24 | centerBytes[i9 + 7] << 16 | centerBytes[i9 + 6] << 8) >> 8) / fixed;\n centerCallback(i2, x2, y, z);\n }\n } else {\n throw new Error("Unreachable");\n }\n {\n const bytes = this.reader.read(this.numSplats);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n alphaCallback(i2, bytes[i2] / 255);\n }\n }\n {\n const rgbBytes = this.reader.read(this.numSplats * 3);\n const scale = SH_C0 / 0.15;\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;\n const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;\n const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;\n rgbCallback(i2, r, g, b);\n }\n }\n {\n const scalesBytes = this.reader.read(this.numSplats * 3);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);\n const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);\n const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);\n scalesCallback(i2, scaleX, scaleY, scaleZ);\n }\n }\n {\n const quatBytes = this.reader.read(this.numSplats * 3);\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n const i3 = i2 * 3;\n const quatX = quatBytes[i3] / 127.5 - 1;\n const quatY = quatBytes[i3 + 1] / 127.5 - 1;\n const quatZ = quatBytes[i3 + 2] / 127.5 - 1;\n const quatW = Math.sqrt(\n Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ)\n );\n quatCallback(i2, quatX, quatY, quatZ, quatW);\n }\n }\n if (shCallback && this.shDegree >= 1) {\n const sh1 = new Float32Array(3 * 3);\n const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : void 0;\n const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : void 0;\n const shBytes = this.reader.read(\n this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3\n );\n let offset = 0;\n for (let i2 = 0; i2 < this.numSplats; i2++) {\n for (let j = 0; j < 9; ++j) {\n sh1[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 9;\n if (sh2) {\n for (let j = 0; j < 15; ++j) {\n sh2[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 15;\n }\n if (sh3) {\n for (let j = 0; j < 21; ++j) {\n sh3[j] = (shBytes[offset + j] - 128) / 128;\n }\n offset += 21;\n }\n shCallback(i2, sh1, sh2, sh3);\n }\n }\n }\n }\n const SH_DEGREE_TO_VECS = { 1: 3, 2: 8, 3: 15 };\n const SH_C0 = 0.28209479177387814;\n async function onMessage(event) {\n const { name, args, id } = event.data;\n let result = void 0;\n let error = void 0;\n try {\n switch (name) {\n case "unpackPly": {\n const { packedArray, fileBytes } = args;\n const decoded = await unpackPly({ packedArray, fileBytes });\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "decodeWlg": {\n const { fileBytes } = args;\n const decoded = decode_wlg(\n fileBytes,\n SPLAT_TEX_WIDTH,\n SPLAT_TEX_HEIGHT\n );\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedSplats\n };\n break;\n }\n case "decodeSpz": {\n const { fileBytes } = args;\n const decoded = unpackSpz(fileBytes);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "decodeAntiSplat": {\n const { fileBytes } = args;\n const decoded = unpackAntiSplat(fileBytes);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray\n };\n break;\n }\n case "decodeKsplat": {\n const { fileBytes } = args;\n const decoded = unpackKsplat(fileBytes);\n result = {\n id,\n numSplats: decoded.numSplats,\n packedArray: decoded.packedArray,\n extra: decoded.extra\n };\n break;\n }\n case "sortSplats": {\n const { maxSplats, totalSplats, readback, ordering } = args;\n if (WASM_SPLAT_SORT) {\n result = {\n id,\n readback,\n ordering,\n activeSplats: old_sort_splats(\n maxSplats,\n totalSplats,\n readback,\n ordering\n )\n };\n }\n break;\n }\n case "sortDoubleSplats": {\n const { numSplats, readback, ordering } = args;\n result = {\n id,\n readback,\n ordering\n };\n if (WASM_SPLAT_SORT) {\n result = {\n id,\n readback,\n ordering,\n activeSplats: sort_splats(numSplats, readback, ordering)\n };\n }\n break;\n }\n default: {\n throw new Error(`Unknown name: ${name}`);\n }\n }\n } catch (e) {\n error = e;\n }\n self.postMessage(\n { id, result, error },\n { transfer: getArrayBuffers(result) }\n );\n }\n async function unpackPly({\n packedArray,\n fileBytes\n }) {\n const ply = new PlyReader({ fileBytes });\n await ply.parseHeader();\n const numSplats = ply.numSplats;\n const extra = {};\n const ZERO_CUTOFF = Math.exp(-20);\n ply.parseSplats(\n (index, x2, y, z, scaleX, scaleY, scaleZ, quatX, quatY, quatZ, quatW, opacity, r, g, b) => {\n setPackedSplat(\n packedArray,\n index,\n x2,\n y,\n z,\n scaleX < ZERO_CUTOFF ? 0 : Math.max(SCALE_MIN, scaleX),\n scaleY < ZERO_CUTOFF ? 0 : Math.max(SCALE_MIN, scaleY),\n scaleZ < ZERO_CUTOFF ? 0 : Math.max(SCALE_MIN, scaleZ),\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b\n );\n },\n (index, sh1, sh2, sh3) => {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n encodeSh1Rgb(extra.sh1, index, sh1);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n encodeSh2Rgb(extra.sh2, index, sh2);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n encodeSh3Rgb(extra.sh3, index, sh3);\n }\n }\n );\n return { packedArray, numSplats, extra };\n }\n function computeMaxSplats(numSplats) {\n const width = SPLAT_TEX_WIDTH;\n const height = Math.max(\n SPLAT_TEX_MIN_HEIGHT,\n Math.min(SPLAT_TEX_HEIGHT, Math.ceil(numSplats / width))\n );\n const depth = Math.ceil(numSplats / (width * height));\n return width * height * depth;\n }\n function unpackSpz(fileBytes) {\n const spz = new SpzReader({ fileBytes });\n const numSplats = spz.numSplats;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra = {};\n spz.parseSplats(\n (index, x2, y, z) => {\n setPackedSplatCenter(packedArray, index, x2, y, z);\n },\n (index, alpha) => {\n setPackedSplatOpacity(packedArray, index, alpha);\n },\n (index, r, g, b) => {\n setPackedSplatRgb(packedArray, index, r, g, b);\n },\n (index, scaleX, scaleY, scaleZ) => {\n setPackedSplatScales(packedArray, index, scaleX, scaleY, scaleZ);\n },\n (index, quatX, quatY, quatZ, quatW) => {\n setPackedSplatQuat(packedArray, index, quatX, quatY, quatZ, quatW);\n },\n (index, sh1, sh2, sh3) => {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n encodeSh1Rgb(extra.sh1, index, sh1);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n encodeSh2Rgb(extra.sh2, index, sh2);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n encodeSh3Rgb(extra.sh3, index, sh3);\n }\n }\n );\n return { packedArray, numSplats, extra };\n }\n function unpackAntiSplat(fileBytes) {\n const numSplats = Math.floor(fileBytes.length / 32);\n if (numSplats * 32 !== fileBytes.length) {\n throw new Error("Invalid .splat file size");\n }\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const f32 = new Float32Array(fileBytes.buffer);\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const i322 = i2 * 32;\n const i8 = i2 * 8;\n const x2 = f32[i8 + 0];\n const y = f32[i8 + 1];\n const z = f32[i8 + 2];\n const scaleX = f32[i8 + 3];\n const scaleY = f32[i8 + 4];\n const scaleZ = f32[i8 + 5];\n const r = fileBytes[i322 + 24] / 255;\n const g = fileBytes[i322 + 25] / 255;\n const b = fileBytes[i322 + 26] / 255;\n const opacity = fileBytes[i322 + 27] / 255;\n const quatW = (fileBytes[i322 + 28] - 128) / 128;\n const quatX = (fileBytes[i322 + 29] - 128) / 128;\n const quatY = (fileBytes[i322 + 30] - 128) / 128;\n const quatZ = (fileBytes[i322 + 31] - 128) / 128;\n setPackedSplat(\n packedArray,\n i2,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b\n );\n }\n return { packedArray, numSplats };\n }\n const KSPLAT_COMPRESSION = {\n 0: {\n bytesPerCenter: 12,\n bytesPerScale: 12,\n bytesPerRotation: 16,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 4,\n scaleOffsetBytes: 12,\n rotationOffsetBytes: 24,\n colorOffsetBytes: 40,\n sphericalHarmonicsOffsetBytes: 44,\n scaleRange: 1\n },\n 1: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 2,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767\n },\n 2: {\n bytesPerCenter: 6,\n bytesPerScale: 6,\n bytesPerRotation: 8,\n bytesPerColor: 4,\n bytesPerSphericalHarmonicsComponent: 1,\n scaleOffsetBytes: 6,\n rotationOffsetBytes: 12,\n colorOffsetBytes: 20,\n sphericalHarmonicsOffsetBytes: 24,\n scaleRange: 32767\n }\n };\n const KSPLAT_SH_DEGREE_TO_COMPONENTS = {\n 0: 0,\n 1: 9,\n 2: 24,\n 3: 45\n };\n function unpackKsplat(fileBytes) {\n var _a2;\n const HEADER_BYTES = 4096;\n const SECTION_BYTES = 1024;\n let headerOffset = 0;\n const header = new DataView(fileBytes.buffer, headerOffset, HEADER_BYTES);\n headerOffset += HEADER_BYTES;\n const versionMajor = header.getUint8(0);\n const versionMinor = header.getUint8(1);\n if (versionMajor !== 0 || versionMinor < 1) {\n throw new Error(\n `Unsupported .ksplat version: ${versionMajor}.${versionMinor}`\n );\n }\n const maxSectionCount = header.getUint32(4, true);\n const splatCount = header.getUint32(16, true);\n const compressionLevel = header.getUint16(20, true);\n if (compressionLevel < 0 || compressionLevel > 2) {\n throw new Error(`Invalid .ksplat compression level: ${compressionLevel}`);\n }\n const minSphericalHarmonicsCoeff = header.getFloat32(36, true) || -1.5;\n const maxSphericalHarmonicsCoeff = header.getFloat32(40, true) || 1.5;\n const numSplats = splatCount;\n const maxSplats = computeMaxSplats(numSplats);\n const packedArray = new Uint32Array(maxSplats * 4);\n const extra = {};\n let sectionBase = HEADER_BYTES + maxSectionCount * SECTION_BYTES;\n for (let section = 0; section < maxSectionCount; ++section) {\n let getSh = function(splatOffset, component) {\n if (compressionLevel === 0) {\n return data.getFloat32(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 4,\n true\n );\n }\n if (compressionLevel === 1) {\n return fromHalf(\n data.getUint16(\n splatOffset + sphericalHarmonicsOffsetBytes + component * 2,\n true\n )\n );\n }\n const t = data.getUint8(splatOffset + sphericalHarmonicsOffsetBytes + component) / 255;\n return minSphericalHarmonicsCoeff + t * (maxSphericalHarmonicsCoeff - minSphericalHarmonicsCoeff);\n };\n const section2 = new DataView(fileBytes.buffer, headerOffset, SECTION_BYTES);\n headerOffset += SECTION_BYTES;\n const sectionSplatCount = section2.getUint32(0, true);\n const sectionMaxSplatCount = section2.getUint32(4, true);\n const bucketSize = section2.getUint32(8, true);\n const bucketCount = section2.getUint32(12, true);\n const bucketBlockSize = section2.getFloat32(16, true);\n const bucketStorageSizeBytes = section2.getUint16(20, true);\n const compressionScaleRange = (section2.getUint32(24, true) || ((_a2 = KSPLAT_COMPRESSION[compressionLevel]) == null ? void 0 : _a2.scaleRange)) ?? 1;\n const partiallyFilledBucketCount = section2.getUint32(36, true);\n const bucketsMetaDataSizeBytes = partiallyFilledBucketCount * 4;\n const bucketsStorageSizeBytes = bucketStorageSizeBytes * bucketCount + bucketsMetaDataSizeBytes;\n const sphericalHarmonicsDegree = section2.getUint16(40, true);\n const shComponents = KSPLAT_SH_DEGREE_TO_COMPONENTS[sphericalHarmonicsDegree];\n const {\n bytesPerCenter,\n bytesPerScale,\n bytesPerRotation,\n bytesPerColor,\n bytesPerSphericalHarmonicsComponent,\n scaleOffsetBytes,\n rotationOffsetBytes,\n colorOffsetBytes,\n sphericalHarmonicsOffsetBytes\n } = KSPLAT_COMPRESSION[compressionLevel];\n const bytesPerSplat = bytesPerCenter + bytesPerScale + bytesPerRotation + bytesPerColor + shComponents * bytesPerSphericalHarmonicsComponent;\n const splatDataStorageSizeBytes = bytesPerSplat * sectionMaxSplatCount;\n const storageSizeBytes = splatDataStorageSizeBytes + bucketsStorageSizeBytes;\n const sh1Index = [0, 3, 6, 1, 4, 7, 2, 5, 8];\n const sh2Index = [\n 9,\n 14,\n 19,\n 10,\n 15,\n 20,\n 11,\n 16,\n 21,\n 12,\n 17,\n 22,\n 13,\n 18,\n 23\n ];\n const sh3Index = [\n 24,\n 31,\n 38,\n 25,\n 32,\n 39,\n 26,\n 33,\n 40,\n 27,\n 34,\n 41,\n 28,\n 35,\n 42,\n 29,\n 36,\n 43,\n 30,\n 37,\n 44\n ];\n const sh1 = sphericalHarmonicsDegree >= 1 ? new Float32Array(3 * 3) : void 0;\n const sh2 = sphericalHarmonicsDegree >= 2 ? new Float32Array(5 * 3) : void 0;\n const sh3 = sphericalHarmonicsDegree >= 3 ? new Float32Array(7 * 3) : void 0;\n const compressionScaleFactor = bucketBlockSize / 2 / compressionScaleRange;\n const bucketsBase = sectionBase + bucketsMetaDataSizeBytes;\n const dataBase = sectionBase + bucketsStorageSizeBytes;\n const data = new DataView(\n fileBytes.buffer,\n dataBase,\n splatDataStorageSizeBytes\n );\n const bucketArray = new Float32Array(\n fileBytes.buffer,\n bucketsBase,\n bucketCount * 3\n );\n for (let i2 = 0; i2 < sectionSplatCount; ++i2) {\n const splatOffset = i2 * bytesPerSplat;\n const bucketIndex = Math.floor(i2 / bucketSize);\n const x2 = compressionLevel === 0 ? data.getFloat32(splatOffset + 0, true) : (data.getUint16(splatOffset + 0, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 0];\n const y = compressionLevel === 0 ? data.getFloat32(splatOffset + 4, true) : (data.getUint16(splatOffset + 2, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 1];\n const z = compressionLevel === 0 ? data.getFloat32(splatOffset + 8, true) : (data.getUint16(splatOffset + 4, true) - compressionScaleRange) * compressionScaleFactor + bucketArray[3 * bucketIndex + 2];\n const scaleX = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 0, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 0, true));\n const scaleY = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 4, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 2, true));\n const scaleZ = compressionLevel === 0 ? data.getFloat32(splatOffset + scaleOffsetBytes + 8, true) : fromHalf(data.getUint16(splatOffset + scaleOffsetBytes + 4, true));\n const quatW = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 0, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 0, true)\n );\n const quatX = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 4, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 2, true)\n );\n const quatY = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 8, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 4, true)\n );\n const quatZ = compressionLevel === 0 ? data.getFloat32(splatOffset + rotationOffsetBytes + 12, true) : fromHalf(\n data.getUint16(splatOffset + rotationOffsetBytes + 6, true)\n );\n const r = data.getUint8(splatOffset + colorOffsetBytes + 0) / 255;\n const g = data.getUint8(splatOffset + colorOffsetBytes + 1) / 255;\n const b = data.getUint8(splatOffset + colorOffsetBytes + 2) / 255;\n const opacity = data.getUint8(splatOffset + colorOffsetBytes + 3) / 255;\n setPackedSplat(\n packedArray,\n i2,\n x2,\n y,\n z,\n scaleX,\n scaleY,\n scaleZ,\n quatX,\n quatY,\n quatZ,\n quatW,\n opacity,\n r,\n g,\n b\n );\n if (sphericalHarmonicsDegree >= 1) {\n if (sh1) {\n if (!extra.sh1) {\n extra.sh1 = new Uint32Array(numSplats * 2);\n }\n for (const [i22, key] of sh1Index.entries()) {\n sh1[i22] = getSh(splatOffset, key);\n }\n encodeSh1Rgb(extra.sh1, i2, sh1);\n }\n if (sh2) {\n if (!extra.sh2) {\n extra.sh2 = new Uint32Array(numSplats * 4);\n }\n for (const [i22, key] of sh2Index.entries()) {\n sh2[i22] = getSh(splatOffset, key);\n }\n encodeSh2Rgb(extra.sh2, i2, sh2);\n }\n if (sh3) {\n if (!extra.sh3) {\n extra.sh3 = new Uint32Array(numSplats * 4);\n }\n for (const [i22, key] of sh3Index.entries()) {\n sh3[i22] = getSh(splatOffset, key);\n }\n encodeSh3Rgb(extra.sh3, i2, sh3);\n }\n }\n }\n sectionBase += storageSizeBytes;\n }\n return { packedArray, numSplats, extra };\n }\n const DEPTH_INFINITY = 31744;\n const DEPTH_SIZE = DEPTH_INFINITY + 1;\n let depthArray = null;\n function oldSortSplats({\n totalSplats,\n readback,\n ordering\n }) {\n if (!depthArray) {\n depthArray = new Uint32Array(DEPTH_SIZE);\n }\n depthArray.fill(0);\n const readbackUint32 = readback.map((layer) => new Uint32Array(layer.buffer));\n const layerSize = readbackUint32[0].length;\n const numLayers = Math.ceil(totalSplats / layerSize);\n let layerBase = 0;\n for (let layer = 0; layer < numLayers; ++layer) {\n const readbackLayer = readbackUint32[layer];\n const layerSplats = Math.min(readbackLayer.length, totalSplats - layerBase);\n for (let i2 = 0; i2 < layerSplats; ++i2) {\n const pri = readbackLayer[i2] & 32767;\n if (pri < DEPTH_INFINITY) {\n depthArray[pri] += 1;\n }\n }\n layerBase += layerSplats;\n }\n let activeSplats = 0;\n for (let j = 0; j < DEPTH_SIZE; ++j) {\n const nextIndex = activeSplats + depthArray[j];\n depthArray[j] = activeSplats;\n activeSplats = nextIndex;\n }\n layerBase = 0;\n for (let layer = 0; layer < numLayers; ++layer) {\n const readbackLayer = readbackUint32[layer];\n const layerSplats = Math.min(readbackLayer.length, totalSplats - layerBase);\n for (let i2 = 0; i2 < layerSplats; ++i2) {\n const pri = readbackLayer[i2] & 32767;\n if (pri < DEPTH_INFINITY) {\n ordering[depthArray[pri]] = layerBase + i2;\n depthArray[pri] += 1;\n }\n }\n layerBase += layerSplats;\n }\n if (depthArray[DEPTH_SIZE - 1] !== activeSplats) {\n throw new Error(\n `Expected ${activeSplats} active splats but got ${depthArray[DEPTH_SIZE - 1]}`\n );\n }\n return { activeSplats, ordering };\n }\n function sortSplats({\n numSplats,\n readback,\n ordering\n }) {\n if (!depthArray) {\n depthArray = new Uint32Array(DEPTH_SIZE);\n }\n depthArray.fill(0);\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const pri = readback[i2];\n if (pri < DEPTH_INFINITY) {\n depthArray[pri] += 1;\n }\n }\n let activeSplats = 0;\n for (let j = DEPTH_INFINITY - 1; j >= 0; --j) {\n const nextIndex = activeSplats + depthArray[j];\n depthArray[j] = activeSplats;\n activeSplats = nextIndex;\n }\n for (let i2 = 0; i2 < numSplats; ++i2) {\n const pri = readback[i2];\n if (pri < DEPTH_INFINITY) {\n ordering[depthArray[pri]] = i2;\n depthArray[pri] += 1;\n }\n }\n if (depthArray[0] !== activeSplats) {\n throw new Error(\n `Expected ${activeSplats} active splats but got ${depthArray[0]}`\n );\n }\n return { activeSplats, ordering };\n }\n const messageBuffer = [];\n function bufferMessage(event) {\n messageBuffer.push(event);\n }\n async function initialize() {\n self.addEventListener("message", bufferMessage);\n await __wbg_init();\n self.removeEventListener("message", bufferMessage);\n self.addEventListener("message", onMessage);\n for (const event of messageBuffer) {\n onMessage(event);\n }\n messageBuffer.length = 0;\n }\n initialize().catch(console.error);\n})();\n';
+const blob = typeof self !== "undefined" && self.Blob && new Blob([jsContent], { type: "text/javascript;charset=utf-8" });
+function WorkerWrapper(options) {
+ let objURL;
+ try {
+ objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob);
+ if (!objURL) throw "";
+ const worker = new Worker(objURL, {
+ name: options == null ? void 0 : options.name
+ });
+ worker.addEventListener("error", () => {
+ (self.URL || self.webkitURL).revokeObjectURL(objURL);
+ });
+ return worker;
+ } catch (e) {
+ return new Worker(
+ "data:text/javascript;charset=utf-8," + encodeURIComponent(jsContent),
+ {
+ name: options == null ? void 0 : options.name
+ }
+ );
+ } finally {
+ objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL);
+ }
+}
+class SplatWorker {
+ constructor() {
+ this.messages = {};
+ this.messageIdNext = 0;
+ this.worker = new WorkerWrapper();
+ this.worker.onmessage = (event) => this.onMessage(event);
+ }
+ makeMessageId() {
+ return ++this.messageIdNext;
+ }
+ makeMessagePromiseId() {
+ const id = this.makeMessageId();
+ const promise = new Promise((resolve, reject) => {
+ this.messages[id] = { resolve, reject };
+ });
+ return { id, promise };
+ }
+ onMessage(event) {
+ const { id, result, error } = event.data;
+ const handler = this.messages[id];
+ if (handler) {
+ delete this.messages[id];
+ if (error) {
+ handler.reject(error);
+ } else {
+ handler.resolve(result);
+ }
+ }
+ }
+ // Invoke an RPC on the worker with the given name and arguments.
+ // The normal usage of a worker is to run one activity at a time,
+ // but this function allows for concurrent calls, tagging each request
+ // with a unique message Id and awaiting a response to that same Id.
+ // The method will automatically transfer any ArrayBuffers in the
+ // arguments to the worker. If you'd like to transfer a copy of a
+ // buffer then you must clone it before passing to this function.
+ async call(name, args) {
+ const { id, promise } = this.makeMessagePromiseId();
+ this.worker.postMessage(
+ { name, args, id },
+ { transfer: getArrayBuffers(args) }
+ );
+ return promise;
+ }
+}
+let maxWorkers = 4;
+let numWorkers = 0;
+const freeWorkers = [];
+const workerQueue = [];
+async function allocWorker() {
+ const worker = freeWorkers.shift();
+ if (worker) {
+ return worker;
+ }
+ if (numWorkers < maxWorkers) {
+ const worker2 = new SplatWorker();
+ numWorkers += 1;
+ return worker2;
+ }
+ return new Promise((resolve) => {
+ workerQueue.push(resolve);
+ });
+}
+function freeWorker(worker) {
+ if (numWorkers > maxWorkers) {
+ numWorkers -= 1;
+ return;
+ }
+ const waiter = workerQueue.shift();
+ if (waiter) {
+ waiter(worker);
+ return;
+ }
+ freeWorkers.push(worker);
+}
+async function withWorker(callback) {
+ const worker = await allocWorker();
+ try {
+ return await callback(worker);
+ } finally {
+ freeWorker(worker);
+ }
+}
+class SplatLoader extends THREE.Loader {
+ constructor(manager) {
+ super(manager);
+ this.fileLoader = new THREE.FileLoader(manager);
+ }
+ load(url, onLoad, onProgress, onError) {
+ this.fileLoader.setResponseType("arraybuffer");
+ this.fileLoader.setCrossOrigin(this.crossOrigin);
+ this.fileLoader.setWithCredentials(this.withCredentials);
+ this.fileLoader.setPath(this.path);
+ this.fileLoader.setResourcePath(this.resourcePath);
+ this.fileLoader.setRequestHeader(this.requestHeader);
+ this.fileLoader.load(
+ url,
+ async (response) => {
+ if (onLoad) {
+ const input = response;
+ const decoded = await unpackSplats({
+ input,
+ fileType: this.fileType,
+ pathOrUrl: url
+ });
+ onLoad(new PackedSplats(decoded));
+ }
+ },
+ onProgress,
+ onError
+ );
+ }
+ async loadAsync(url, onProgress) {
+ return new Promise((resolve, reject) => {
+ this.load(
+ url,
+ (decoded) => {
+ resolve(decoded);
+ },
+ onProgress,
+ reject
+ );
+ });
+ }
+ parse(packedSplats) {
+ return new SplatMesh({ packedSplats });
+ }
+}
+var SplatFileType = /* @__PURE__ */ ((SplatFileType2) => {
+ SplatFileType2["PLY"] = "ply";
+ SplatFileType2["WLG0"] = "wlg0";
+ SplatFileType2["SPZ"] = "spz";
+ SplatFileType2["SPLAT"] = "splat";
+ SplatFileType2["KSPLAT"] = "ksplat";
+ return SplatFileType2;
+})(SplatFileType || {});
+function getSplatFileType(fileBytes) {
+ const view = new DataView(fileBytes.buffer);
+ if ((view.getUint32(0, true) & 16777215) === 7957616) {
+ return "ply";
+ }
+ if (view.getUint32(0, true) === 809978967) {
+ return "wlg0";
+ }
+ if ((view.getUint32(0, true) & 16777215) === 559903) {
+ const header = decompressPartialGzip(fileBytes, 4);
+ const gView = new DataView(header.buffer);
+ if (gView.getUint32(0, true) === 1347635022) {
+ return "spz";
+ }
+ return void 0;
+ }
+ return void 0;
+}
+function getFileExtension(pathOrUrl) {
+ const noTrailing = pathOrUrl.split(/[?#]/, 1)[0];
+ const lastSlash = Math.max(
+ noTrailing.lastIndexOf("/"),
+ noTrailing.lastIndexOf("\\")
+ );
+ const filename = noTrailing.slice(lastSlash + 1);
+ const lastDot = filename.lastIndexOf(".");
+ if (lastDot <= 0 || lastDot === filename.length - 1) {
+ return "";
+ }
+ return filename.slice(lastDot + 1).toLowerCase();
+}
+async function unpackSplats({
+ input,
+ fileType,
+ pathOrUrl
+}) {
+ const fileBytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input;
+ let splatFileType = fileType;
+ if (!fileType) {
+ splatFileType = getSplatFileType(fileBytes);
+ if (!splatFileType && pathOrUrl) {
+ const extension = getFileExtension(pathOrUrl);
+ if (extension === "ply") {
+ splatFileType = "ply";
+ } else if (extension === "wlg") {
+ splatFileType = "wlg0";
+ } else if (extension === "spz") {
+ splatFileType = "spz";
+ } else if (extension === "splat") {
+ splatFileType = "splat";
+ } else if (extension === "ksplat") {
+ splatFileType = "ksplat";
+ }
+ }
+ }
+ if (splatFileType === "wlg0") {
+ return await withWorker(async (worker) => {
+ const { packedArray, numSplats } = await worker.call("decodeWlg", {
+ fileBytes
+ });
+ return { packedArray, numSplats };
+ });
+ }
+ if (splatFileType === "ply") {
+ const ply = new PlyReader({ fileBytes });
+ await ply.parseHeader();
+ const numSplats = ply.numSplats;
+ const maxSplats = getTextureSize(numSplats).maxSplats;
+ const args = { fileBytes, packedArray: new Uint32Array(maxSplats * 4) };
+ return await withWorker(async (worker) => {
+ const { packedArray, numSplats: numSplats2, extra } = await worker.call(
+ "unpackPly",
+ args
+ );
+ return { packedArray, numSplats: numSplats2, extra };
+ });
+ }
+ if (splatFileType === "spz") {
+ return await withWorker(async (worker) => {
+ const { packedArray, numSplats, extra } = await worker.call(
+ "decodeSpz",
+ {
+ fileBytes
+ }
+ );
+ return { packedArray, numSplats, extra };
+ });
+ }
+ if (splatFileType === "splat") {
+ return await withWorker(async (worker) => {
+ const { packedArray, numSplats } = await worker.call("decodeAntiSplat", {
+ fileBytes
+ });
+ return { packedArray, numSplats };
+ });
+ }
+ if (splatFileType === "ksplat") {
+ return await withWorker(async (worker) => {
+ const { packedArray, numSplats, extra } = await worker.call(
+ "decodeKsplat",
+ { fileBytes }
+ );
+ return { packedArray, numSplats, extra };
+ });
+ }
+ throw new Error("Unknown splat file type");
+}
+var computeUvec4_default = "precision highp float;\nprecision highp int;\nprecision highp sampler2D;\nprecision highp usampler2D;\nprecision highp isampler2D;\nprecision highp sampler2DArray;\nprecision highp usampler2DArray;\nprecision highp isampler2DArray;\nprecision highp sampler3D;\nprecision highp usampler3D;\nprecision highp isampler3D;\n\n#include \n\nuniform uint targetLayer;\nuniform int targetBase;\nuniform int targetCount;\n\nout uvec4 target;\n\n{{ GLOBALS }}\n\nvoid produceSplat(int index) {\n {{ STATEMENTS }}\n}\n\nvoid main() {\n int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);\n int index = targetIndex - targetBase;\n\n if ((index >= 0) && (index < targetCount)) {\n produceSplat(index);\n } else {\n target = uvec4(0u, 0u, 0u, 0u);\n }\n}";
+const _PackedSplats = class _PackedSplats {
+ constructor(options = {}) {
+ this.maxSplats = 0;
+ this.numSplats = 0;
+ this.packedArray = null;
+ this.isInitialized = false;
+ this.target = null;
+ this.source = null;
+ this.needsUpdate = true;
+ this.extra = {};
+ this.dyno = new DynoPackedSplats({ packedSplats: this });
+ this.initialized = Promise.resolve(this);
+ this.reinitialize(options);
+ }
+ reinitialize(options) {
+ this.isInitialized = false;
+ if (options.url || options.fileBytes || options.construct) {
+ this.initialized = this.asyncInitialize(options).then(() => {
+ this.isInitialized = true;
+ return this;
+ });
+ } else {
+ this.initialize(options);
+ this.isInitialized = true;
+ this.initialized = Promise.resolve(this);
+ }
+ }
+ initialize(options) {
+ if (options.packedArray) {
+ this.packedArray = options.packedArray;
+ this.maxSplats = Math.floor(this.packedArray.length / 4);
+ this.maxSplats = Math.floor(this.maxSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;
+ this.numSplats = Math.min(
+ this.maxSplats,
+ options.numSplats ?? Number.POSITIVE_INFINITY
+ );
+ } else {
+ this.maxSplats = options.maxSplats ?? 0;
+ this.numSplats = 0;
+ }
+ this.extra = options.extra ?? {};
+ }
+ async asyncInitialize(options) {
+ let { url, fileBytes, construct } = options;
+ if (url) {
+ fileBytes = await fetch(url).then(async (response) => {
+ if (!response.ok) {
+ throw new Error(
+ `${response.status} "${response.statusText}" fetching URL: ${url}`
+ );
+ }
+ const arrayBuffer = await response.arrayBuffer();
+ return arrayBuffer;
+ });
+ }
+ if (fileBytes) {
+ const unpacked = await unpackSplats({
+ input: fileBytes,
+ fileType: options.fileType,
+ pathOrUrl: url
+ });
+ this.initialize(unpacked);
+ }
+ if (construct) {
+ const maybePromise = construct(this);
+ if (maybePromise instanceof Promise) {
+ await maybePromise;
+ }
+ }
+ }
+ // Call this when you are finished with the PackedSplats and want to free
+ // any buffers it holds.
+ dispose() {
+ if (this.target) {
+ this.target.dispose();
+ this.target = null;
+ }
+ if (this.source) {
+ this.source.dispose();
+ this.source = null;
+ }
+ }
+ // Ensures that this.packedArray can fit numSplats Gsplats. If it's too small,
+ // resize exponentially and copy over the original data.
+ //
+ // Typically you don't need to call this, because calling this.setSplat(index, ...)
+ // and this.pushSplat(...) will automatically call ensureSplats() so we have
+ // enough splats.
+ ensureSplats(numSplats) {
+ const targetSize = numSplats <= this.maxSplats ? this.maxSplats : (
+ // Grow exponentially to avoid frequent reallocations
+ Math.max(numSplats, 2 * this.maxSplats)
+ );
+ const currentSize = !this.packedArray ? 0 : this.packedArray.length / 4;
+ if (!this.packedArray || targetSize > currentSize) {
+ this.maxSplats = getTextureSize(targetSize).maxSplats;
+ const newArray2 = new Uint32Array(this.maxSplats * 4);
+ if (this.packedArray) {
+ newArray2.set(this.packedArray);
+ }
+ this.packedArray = newArray2;
+ }
+ return this.packedArray;
+ }
+ // Ensure the extra array for the given level is large enough to hold numSplats
+ ensureSplatsSh(level, numSplats) {
+ let wordsPerSplat;
+ let key;
+ if (level === 0) {
+ return this.ensureSplats(numSplats);
+ }
+ if (level === 1) {
+ wordsPerSplat = 2;
+ key = "sh1";
+ } else if (level === 2) {
+ wordsPerSplat = 4;
+ key = "sh2";
+ } else if (level === 3) {
+ wordsPerSplat = 4;
+ key = "sh3";
+ } else {
+ throw new Error(`Invalid level: ${level}`);
+ }
+ let maxSplats = !this.extra[key] ? 0 : this.extra[key].length / wordsPerSplat;
+ const targetSize = numSplats <= maxSplats ? maxSplats : Math.max(numSplats, 2 * maxSplats);
+ if (!this.extra[key] || targetSize > maxSplats) {
+ maxSplats = getTextureSize(targetSize).maxSplats;
+ const newArray2 = new Uint32Array(maxSplats * wordsPerSplat);
+ if (this.extra[key]) {
+ newArray2.set(this.extra[key]);
+ }
+ this.extra[key] = newArray2;
+ }
+ return this.extra[key];
+ }
+ // Unpack the 16-byte Gsplat data at index into the Three.js components
+ // center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion,
+ // opacity: number 0..1, color: THREE.Color 0..1.
+ getSplat(index) {
+ if (!this.packedArray || index >= this.numSplats) {
+ throw new Error("Invalid index");
+ }
+ return unpackSplat(this.packedArray, index);
+ }
+ // Set all PackedSplat components at index with the provided Gsplat attributes
+ // (can be the same objects returned by getSplat). Ensures there is capacity
+ // for at least index+1 Gsplats.
+ setSplat(index, center, scales, quaternion, opacity, color) {
+ const packedSplats = this.ensureSplats(index + 1);
+ setPackedSplat(
+ packedSplats,
+ index,
+ center.x,
+ center.y,
+ center.z,
+ scales.x,
+ scales.y,
+ scales.z,
+ quaternion.x,
+ quaternion.y,
+ quaternion.z,
+ quaternion.w,
+ opacity,
+ color.r,
+ color.g,
+ color.b
+ );
+ this.numSplats = Math.max(this.numSplats, index + 1);
+ }
+ // Effectively calls this.setSplat(this.numSplats++, center, ...), useful on
+ // construction where you just want to iterate and create a collection of Gsplats.
+ pushSplat(center, scales, quaternion, opacity, color) {
+ const packedSplats = this.ensureSplats(this.numSplats + 1);
+ setPackedSplat(
+ packedSplats,
+ this.numSplats,
+ center.x,
+ center.y,
+ center.z,
+ scales.x,
+ scales.y,
+ scales.z,
+ quaternion.x,
+ quaternion.y,
+ quaternion.z,
+ quaternion.w,
+ opacity,
+ color.r,
+ color.g,
+ color.b
+ );
+ ++this.numSplats;
+ }
+ // Iterate over Gsplats index 0..=(this.numSplats-1), unpack each Gsplat
+ // and invoke the callback function with the Gsplat attributes.
+ forEachSplat(callback) {
+ if (!this.packedArray || !this.numSplats) {
+ return;
+ }
+ for (let i = 0; i < this.numSplats; ++i) {
+ const unpacked = unpackSplat(this.packedArray, i);
+ callback(
+ i,
+ unpacked.center,
+ unpacked.scales,
+ unpacked.quaternion,
+ unpacked.opacity,
+ unpacked.color
+ );
+ }
+ }
+ // Ensures our PackedSplats.target render target has enough space to generate
+ // maxSplats total Gsplats, and reallocate if not large enough.
+ ensureGenerate(maxSplats) {
+ if (this.target && (maxSplats ?? 1) <= this.maxSplats) {
+ return false;
+ }
+ this.dispose();
+ const textureSize2 = getTextureSize(maxSplats ?? 1);
+ const { width, height, depth } = textureSize2;
+ this.maxSplats = textureSize2.maxSplats;
+ this.target = new THREE__namespace.WebGLArrayRenderTarget(width, height, depth, {
+ depthBuffer: false,
+ stencilBuffer: false,
+ generateMipmaps: false,
+ magFilter: THREE__namespace.NearestFilter,
+ minFilter: THREE__namespace.NearestFilter
+ });
+ this.target.texture.format = THREE__namespace.RGBAIntegerFormat;
+ this.target.texture.type = THREE__namespace.UnsignedIntType;
+ this.target.texture.internalFormat = "RGBA32UI";
+ return true;
+ }
+ // Given an array of splatCounts (.numSplats for each
+ // SplatGenerator/SplatMesh in the scene), compute a
+ // "mapping layout" in the composite array of generated outputs.
+ generateMapping(splatCounts) {
+ let maxSplats = 0;
+ const mapping = splatCounts.map((numSplats) => {
+ const base = maxSplats;
+ const rounded = Math.ceil(numSplats / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;
+ maxSplats += rounded;
+ return { base, count: numSplats };
+ });
+ return { maxSplats, mapping };
+ }
+ // Returns a THREE.DataArrayTexture representing the PackedSplats content as
+ // a Uint32x4 data array texture (2048 x 2048 x depth in size)
+ getTexture() {
+ if (this.target) {
+ return this.target.texture;
+ }
+ if (this.source || this.packedArray) {
+ const source = this.maybeUpdateSource();
+ return source;
+ }
+ return _PackedSplats.getEmpty();
+ }
+ // Check if source texture needs to be created/updated
+ maybeUpdateSource() {
+ if (!this.packedArray) {
+ throw new Error("No packed splats");
+ }
+ if (this.needsUpdate || !this.source) {
+ this.needsUpdate = false;
+ if (this.source) {
+ const { width, height, depth } = this.source.image;
+ if (this.maxSplats !== width * height * depth) {
+ this.source.dispose();
+ this.source = null;
+ }
+ }
+ if (!this.source) {
+ const { width, height, depth } = getTextureSize(this.maxSplats);
+ this.source = new THREE__namespace.DataArrayTexture(
+ this.packedArray,
+ width,
+ height,
+ depth
+ );
+ this.source.format = THREE__namespace.RGBAIntegerFormat;
+ this.source.type = THREE__namespace.UnsignedIntType;
+ this.source.internalFormat = "RGBA32UI";
+ this.source.needsUpdate = true;
+ } else if (this.packedArray.buffer !== this.source.image.data.buffer) {
+ this.source.image.data = new Uint8Array(this.packedArray.buffer);
+ }
+ this.source.needsUpdate = true;
+ }
+ return this.source;
+ }
+ // Can be used where you need an uninitialized THREE.DataArrayTexture like
+ // a uniform you will update with the result of this.getTexture() later.
+ static getEmpty() {
+ if (!_PackedSplats.emptySource) {
+ const { width, height, depth, maxSplats } = getTextureSize(1);
+ const emptyArray = new Uint32Array(maxSplats * 4);
+ _PackedSplats.emptySource = new THREE__namespace.DataArrayTexture(
+ emptyArray,
+ width,
+ height,
+ depth
+ );
+ _PackedSplats.emptySource.format = THREE__namespace.RGBAIntegerFormat;
+ _PackedSplats.emptySource.type = THREE__namespace.UnsignedIntType;
+ _PackedSplats.emptySource.internalFormat = "RGBA32UI";
+ _PackedSplats.emptySource.needsUpdate = true;
+ }
+ return _PackedSplats.emptySource;
+ }
+ // Get a program and THREE.RawShaderMaterial for a given GsplatGenerator,
+ // generating it if necessary and caching the result.
+ prepareProgramMaterial(generator) {
+ let program = _PackedSplats.generatorProgram.get(generator);
+ if (!program) {
+ const graph = dynoBlock(
+ { index: "int" },
+ { output: "uvec4" },
+ ({ index }) => {
+ generator.inputs.index = index;
+ const gsplat = generator.outputs.gsplat;
+ const output = outputPackedSplat(gsplat);
+ return { output };
+ }
+ );
+ if (!_PackedSplats.programTemplate) {
+ _PackedSplats.programTemplate = new DynoProgramTemplate(
+ computeUvec4_default
+ );
+ }
+ program = new DynoProgram({
+ graph,
+ inputs: { index: "index" },
+ outputs: { output: "target" },
+ template: _PackedSplats.programTemplate
+ });
+ Object.assign(program.uniforms, {
+ targetLayer: { value: 0 },
+ targetBase: { value: 0 },
+ targetCount: { value: 0 }
+ });
+ _PackedSplats.generatorProgram.set(generator, program);
+ }
+ const material = program.prepareMaterial();
+ _PackedSplats.mesh.material = material;
+ return { program, material };
+ }
+ saveRenderState(renderer) {
+ return {
+ xrPresenting: renderer.xr.isPresenting,
+ autoClear: renderer.autoClear,
+ scissorTest: renderer.getScissorTest()
+ };
+ }
+ resetRenderState(renderer, state) {
+ renderer.setRenderTarget(null);
+ renderer.xr.isPresenting = state.xrPresenting;
+ renderer.autoClear = state.autoClear;
+ renderer.setScissorTest(state.scissorTest);
+ }
+ // Executes a dyno program specified by generator which is any DynoBlock that
+ // maps { index: "int" } to { gsplat: Gsplat }. This is called in
+ // ForgeRenderer.updateInternal() to re-generate Gsplats in the scene for
+ // SplatGenerator instances whose version is newer than what was generated
+ // for it last time.
+ generate({
+ generator,
+ base,
+ count,
+ renderer
+ }) {
+ if (!this.target) {
+ throw new Error("Target must be initialized with ensureSplats");
+ }
+ if (base + count > this.maxSplats) {
+ throw new Error("Base + count exceeds maxSplats");
+ }
+ const { program, material } = this.prepareProgramMaterial(generator);
+ program.update();
+ const renderState = this.saveRenderState(renderer);
+ const nextBase = Math.ceil((base + count) / SPLAT_TEX_WIDTH) * SPLAT_TEX_WIDTH;
+ const layerSize = SPLAT_TEX_WIDTH * SPLAT_TEX_HEIGHT;
+ material.uniforms.targetBase.value = base;
+ material.uniforms.targetCount.value = count;
+ while (base < nextBase) {
+ const layer = Math.floor(base / layerSize);
+ material.uniforms.targetLayer.value = layer;
+ const layerBase = layer * layerSize;
+ const layerYStart = Math.floor((base - layerBase) / SPLAT_TEX_WIDTH);
+ const layerYEnd = Math.min(
+ SPLAT_TEX_HEIGHT,
+ Math.ceil((nextBase - layerBase) / SPLAT_TEX_WIDTH)
+ );
+ renderer.setRenderTarget(this.target, layer);
+ renderer.xr.isPresenting = false;
+ renderer.autoClear = false;
+ renderer.setScissorTest(true);
+ renderer.setScissor(
+ 0,
+ layerYStart,
+ SPLAT_TEX_WIDTH,
+ layerYEnd - layerYStart
+ );
+ renderer.render(_PackedSplats.scene, _PackedSplats.camera);
+ base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);
+ }
+ this.resetRenderState(renderer, renderState);
+ return { nextBase };
+ }
+};
+_PackedSplats.emptySource = null;
+_PackedSplats.programTemplate = null;
+_PackedSplats.generatorProgram = /* @__PURE__ */ new Map();
+_PackedSplats.geometry = new THREE__namespace.PlaneGeometry(2, 2);
+_PackedSplats.mesh = new THREE__namespace.Mesh(
+ _PackedSplats.geometry,
+ new THREE__namespace.RawShaderMaterial({ visible: false })
+);
+_PackedSplats.scene = new THREE__namespace.Scene().add(_PackedSplats.mesh);
+_PackedSplats.camera = new THREE__namespace.Camera();
+let PackedSplats = _PackedSplats;
+class DynoPackedSplats extends DynoUniform {
+ constructor({ packedSplats } = {}) {
+ super({
+ key: "packedSplats",
+ type: TPackedSplats,
+ globals: () => [definePackedSplats],
+ value: {
+ texture: PackedSplats.getEmpty(),
+ numSplats: 0
+ },
+ update: (value) => {
+ var _a2, _b2;
+ value.texture = ((_a2 = this.packedSplats) == null ? void 0 : _a2.getTexture()) ?? PackedSplats.getEmpty();
+ value.numSplats = ((_b2 = this.packedSplats) == null ? void 0 : _b2.numSplats) ?? 0;
+ return value;
+ }
+ });
+ this.packedSplats = packedSplats;
+ }
+}
+class SplatGeometry extends THREE__namespace.InstancedBufferGeometry {
+ constructor(ordering, activeSplats) {
+ super();
+ this.ordering = ordering;
+ this.setAttribute("position", new THREE__namespace.BufferAttribute(QUAD_VERTICES, 3));
+ this.setIndex(new THREE__namespace.BufferAttribute(QUAD_INDICES, 1));
+ this._maxInstanceCount = ordering.length;
+ this.instanceCount = activeSplats;
+ this.attribute = new THREE__namespace.InstancedBufferAttribute(ordering, 1, false, 1);
+ this.attribute.setUsage(THREE__namespace.DynamicDrawUsage);
+ this.setAttribute("splatIndex", this.attribute);
+ }
+ update(ordering, activeSplats) {
+ this.ordering = ordering;
+ this.attribute.array = ordering;
+ this.instanceCount = activeSplats;
+ this.attribute.addUpdateRange(0, activeSplats);
+ this.attribute.needsUpdate = true;
+ }
+}
+const QUAD_VERTICES = new Float32Array([
+ -1,
+ -1,
+ 0,
+ 1,
+ -1,
+ 0,
+ 1,
+ 1,
+ 0,
+ -1,
+ 1,
+ 0
+]);
+const QUAD_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3]);
+const _ForgeViewpoint = class _ForgeViewpoint {
+ constructor(options) {
+ this.lastTime = null;
+ this.encodeLinear = false;
+ this.superXY = 1;
+ this.display = null;
+ this.sorting = null;
+ this.pending = null;
+ this.sortingCheck = false;
+ this.readback = new Uint16Array(0);
+ this.forge = options.forge;
+ this.camera = options.camera;
+ this.viewToWorld = options.viewToWorld ?? new THREE__namespace.Matrix4();
+ if (options.target) {
+ const { width, height, doubleBuffer } = options.target;
+ const superXY = Math.max(1, Math.min(4, options.target.superXY ?? 1));
+ this.superXY = superXY;
+ if (width * superXY > 8192 || height * superXY > 8192) {
+ throw new Error("Target size too large");
+ }
+ this.target = new THREE__namespace.WebGLRenderTarget(
+ width * superXY,
+ height * superXY,
+ {
+ format: THREE__namespace.RGBAFormat,
+ type: THREE__namespace.UnsignedByteType,
+ colorSpace: THREE__namespace.SRGBColorSpace
+ }
+ );
+ if (doubleBuffer) {
+ this.back = new THREE__namespace.WebGLRenderTarget(
+ width * superXY,
+ height * superXY,
+ {
+ format: THREE__namespace.RGBAFormat,
+ type: THREE__namespace.UnsignedByteType,
+ colorSpace: THREE__namespace.SRGBColorSpace
+ }
+ );
+ }
+ this.encodeLinear = true;
+ }
+ this.onTextureUpdated = options.onTextureUpdated;
+ this.sortRadial = options.sortRadial ?? true;
+ this.sortDistance = options.sortDistance;
+ this.sortCoorient = options.sortCoorient;
+ this.depthBias = options.depthBias;
+ this.sort360 = options.sort360;
+ this.orderingFreelist = new FreeList({
+ allocate: (maxSplats) => new Uint32Array(maxSplats),
+ valid: (ordering, maxSplats) => ordering.length === maxSplats
+ });
+ this.autoUpdate = false;
+ this.setAutoUpdate(options.autoUpdate ?? false);
+ }
+ // Call this when you are done with the ForgeViewpoint and want to
+ // free up its resources (GPU targets, pixel buffers, etc.)
+ dispose() {
+ var _a2;
+ this.setAutoUpdate(false);
+ if (this.target) {
+ this.target.dispose();
+ this.target = void 0;
+ }
+ if (this.back) {
+ this.back.dispose();
+ this.back = void 0;
+ }
+ if (this.display) {
+ this.forge.releaseAccumulator(this.display.accumulator);
+ this.display.geometry.dispose();
+ this.display = null;
+ }
+ if ((_a2 = this.pending) == null ? void 0 : _a2.accumulator) {
+ this.forge.releaseAccumulator(this.pending.accumulator);
+ this.pending = null;
+ }
+ }
+ // Use this function to change whether this viewpoint will auto-update
+ // its sort order whenever the attached ForgeRenderer updates the Gsplats.
+ // Turn this on or off depending on whether you expect to do renders from
+ // this viewpoint most frames.
+ setAutoUpdate(autoUpdate) {
+ if (!this.autoUpdate && autoUpdate) {
+ this.forge.autoViewpoints.push(this);
+ } else if (this.autoUpdate && !autoUpdate) {
+ this.forge.autoViewpoints = this.forge.autoViewpoints.filter(
+ (v) => v !== this
+ );
+ }
+ this.autoUpdate = autoUpdate;
+ }
+ // See below async prepareRenderPixels() for explanation of parameters.
+ // Awaiting this method updates the Gsplats in the scene and performs a sort of the
+ // Gsplats from this viewpoint, preparing it for a subsequent this.renderTarget()
+ // call in the same tick.
+ async prepare({
+ scene,
+ camera,
+ viewToWorld,
+ update,
+ forceOrigin
+ }) {
+ var _a2;
+ if (viewToWorld) {
+ this.viewToWorld = viewToWorld;
+ } else {
+ this.camera = camera ?? this.camera;
+ if (this.camera) {
+ this.camera.updateMatrixWorld();
+ this.viewToWorld = this.camera.matrixWorld.clone();
+ }
+ }
+ while (update ?? true) {
+ const originToWorld = forceOrigin ? this.viewToWorld : void 0;
+ const updated = this.forge.updateInternal({ scene, originToWorld });
+ if (updated) {
+ break;
+ }
+ await new Promise((resolve) => setTimeout(resolve, 10));
+ }
+ const accumulator = this.forge.active;
+ if (accumulator !== ((_a2 = this.display) == null ? void 0 : _a2.accumulator)) {
+ this.forge.active.refCount += 1;
+ }
+ await this.sortUpdate({ accumulator, viewToWorld: this.viewToWorld });
+ }
+ // Render out the viewpoint to the view target RGBA buffer.
+ // Swaps buffers if doubleBuffer: true was set.
+ // Calls onTextureUpdated(texture) with the resulting texture.
+ renderTarget({
+ scene,
+ camera
+ }) {
+ var _a2;
+ const target = this.back ?? this.target;
+ if (!target) {
+ throw new Error("Must initialize ForgeViewpoint with target");
+ }
+ camera = camera ?? this.camera;
+ if (!camera) {
+ throw new Error("Must provide camera");
+ }
+ if (camera instanceof THREE__namespace.PerspectiveCamera) {
+ const newCam = new THREE__namespace.PerspectiveCamera().copy(camera, false);
+ newCam.aspect = target.width / target.height;
+ newCam.updateProjectionMatrix();
+ camera = newCam;
+ }
+ this.viewToWorld = camera.matrixWorld.clone();
+ try {
+ this.forge.renderer.setRenderTarget(target);
+ this.forge.prepareViewpoint(this);
+ this.forge.renderer.render(scene, camera);
+ } finally {
+ this.forge.prepareViewpoint(this.forge.defaultView);
+ this.forge.renderer.setRenderTarget(null);
+ }
+ if (target !== this.target) {
+ [this.target, this.back] = [this.back, this.target];
+ }
+ (_a2 = this.onTextureUpdated) == null ? void 0 : _a2.call(this, target.texture);
+ }
+ // Read back the previously rendered target image as a Uint8Array of packed
+ // RGBA values (in that order). If superXY was set greater than 1 then
+ // downsampling is performed in the target pixel array with simple averaging
+ // to derive the returned pixel values. Subsequent calls to this.readTarget()
+ // will reuse the same buffers to minimize memory allocations.
+ async readTarget() {
+ if (!this.target) {
+ throw new Error("Must initialize ForgeViewpoint with target");
+ }
+ const { width, height } = this.target;
+ const byteSize = width * height * 4;
+ if (!this.superPixels || this.superPixels.length < byteSize) {
+ this.superPixels = new Uint8Array(byteSize);
+ }
+ await this.forge.renderer.readRenderTargetPixelsAsync(
+ this.target,
+ 0,
+ 0,
+ width,
+ height,
+ this.superPixels
+ );
+ const { superXY } = this;
+ if (superXY === 1) {
+ return this.superPixels;
+ }
+ const subWidth = width / superXY;
+ const subHeight = height / superXY;
+ const subSize = subWidth * subHeight * 4;
+ if (!this.pixels || this.pixels.length < subSize) {
+ this.pixels = new Uint8Array(subSize);
+ }
+ const { superPixels, pixels } = this;
+ const super2 = superXY * superXY;
+ for (let y = 0; y < subHeight; y++) {
+ const row = y * subWidth;
+ for (let x = 0; x < subWidth; x++) {
+ const superCol = x * superXY;
+ let r = 0;
+ let g = 0;
+ let b = 0;
+ let a = 0;
+ for (let sy = 0; sy < superXY; sy++) {
+ const superRow = (y * superXY + sy) * this.target.width;
+ for (let sx = 0; sx < superXY; sx++) {
+ const superIndex = (superRow + superCol + sx) * 4;
+ r += superPixels[superIndex];
+ g += superPixels[superIndex + 1];
+ b += superPixels[superIndex + 2];
+ a += superPixels[superIndex + 3];
+ }
+ }
+ const pixelIndex = (row + x) * 4;
+ pixels[pixelIndex] = r / super2;
+ pixels[pixelIndex + 1] = g / super2;
+ pixels[pixelIndex + 2] = b / super2;
+ pixels[pixelIndex + 3] = a / super2;
+ }
+ }
+ return pixels;
+ }
+ // Render out a viewpoint as a Uint8Array of RGBA values for the provided scene
+ // and any camera/viewToWorld viewpoint overrides. By default update is true,
+ // which triggers its ForgeRenderer to check and potentially update the Gsplats.
+ // Setting update to false disables this and sorts the Gsplats as they are.
+ // Setting forceOrigin (default: false) to true forces the view update to
+ // recalculate the splats with this view origin, potentially altering any
+ // view-dependent effects. If you expect view-dependent effects to play a role
+ // in the rendering quality, enable this.
+ //
+ // Underneath, prepareRenderPixels() simply calls await this.prepare(...),
+ // this.renderTarget(...), and finally returns the result this.readTarget(),
+ // a Promise to a Uint8Array with RGBA values for all the pixels (potentially
+ // downsampled if the superXY parameter was used). These steps can also be called
+ // manually, for example if you need to alter the scene before and after
+ // this.renderTarget(...) to hide UI elements from being rendered.
+ async prepareRenderPixels({
+ scene,
+ camera,
+ viewToWorld,
+ update,
+ forceOrigin
+ }) {
+ await this.prepare({ scene, camera, viewToWorld, update, forceOrigin });
+ this.renderTarget({ scene, camera });
+ return this.readTarget();
+ }
+ // This is called automatically by ForgeRenderer, there is no need to call it!
+ // The method cannot be private because then ForgeRenderer would
+ // not be able to call it.
+ autoPoll({ accumulator }) {
+ var _a2, _b2, _c;
+ if (this.camera) {
+ this.camera.updateMatrixWorld();
+ this.viewToWorld = this.camera.matrixWorld.clone();
+ }
+ let needsSort = false;
+ if (!this.display) {
+ needsSort = true;
+ } else if (accumulator) {
+ needsSort = true;
+ const { mappingVersion } = this.display.accumulator;
+ if (accumulator.mappingVersion === mappingVersion) {
+ this.forge.releaseAccumulator(this.display.accumulator);
+ this.display.accumulator = accumulator;
+ }
+ }
+ const latestView = ((_a2 = this.sorting) == null ? void 0 : _a2.viewToWorld) ?? ((_b2 = this.display) == null ? void 0 : _b2.viewToWorld);
+ if (latestView && !withinCoorientDist({
+ matrix1: this.viewToWorld,
+ matrix2: latestView,
+ // By default update sort each 1 cm
+ maxDistance: this.sortDistance ?? 0.01,
+ // By default for radial sort, update for intermittent movement so that
+ // we bring back splats culled by being behind the camera.
+ // For depth sort, small rotations can change sort order a lot, so
+ // update sort for even small rotations.
+ minCoorient: this.sortCoorient ?? this.sortRadial ? 0.99 : 0.999
+ })) {
+ needsSort = true;
+ }
+ if (!needsSort) {
+ return;
+ }
+ if (accumulator) {
+ accumulator.refCount += 1;
+ }
+ if (accumulator && ((_c = this.pending) == null ? void 0 : _c.accumulator)) {
+ this.forge.releaseAccumulator(this.pending.accumulator);
+ }
+ this.pending = { accumulator, viewToWorld: this.viewToWorld };
+ this.driveSort();
+ }
+ async driveSort() {
+ var _a2;
+ while (true) {
+ if (this.sorting || !this.pending) {
+ return;
+ }
+ const viewToWorld = this.pending.viewToWorld;
+ let accumulator = this.pending.accumulator ?? ((_a2 = this.display) == null ? void 0 : _a2.accumulator);
+ if (!accumulator) {
+ accumulator = this.forge.active;
+ accumulator.refCount += 1;
+ }
+ this.pending = null;
+ if (!accumulator) {
+ throw new Error("No accumulator to sort");
+ }
+ this.sorting = { viewToWorld };
+ await this.sortUpdate({ accumulator, viewToWorld });
+ this.sorting = null;
+ }
+ }
+ async sortUpdate({
+ accumulator,
+ viewToWorld
+ }) {
+ if (this.sortingCheck) {
+ throw new Error("Only one sort at a time");
+ }
+ this.sortingCheck = true;
+ accumulator = accumulator ?? this.forge.active;
+ const { numSplats, maxSplats } = accumulator.splats;
+ let activeSplats = 0;
+ let ordering = this.orderingFreelist.alloc(maxSplats);
+ if (numSplats > 0) {
+ const {
+ reader,
+ doubleSortReader,
+ dynoSortRadial,
+ dynoOrigin,
+ dynoDirection,
+ dynoDepthBias,
+ dynoSort360,
+ dynoSplats
+ } = _ForgeViewpoint.makeSorter();
+ const halfMaxSplats = Math.ceil(maxSplats / 2);
+ this.readback = reader.ensureBuffer(halfMaxSplats, this.readback);
+ const worldToOrigin = accumulator.toWorld.clone().invert();
+ const viewToOrigin = viewToWorld.clone().premultiply(worldToOrigin);
+ dynoSortRadial.value = this.sort360 ? true : this.sortRadial;
+ dynoOrigin.value.set(0, 0, 0).applyMatrix4(viewToOrigin);
+ dynoDirection.value.set(0, 0, -1).applyMatrix4(viewToOrigin).sub(dynoOrigin.value).normalize();
+ dynoDepthBias.value = this.depthBias ?? 1;
+ dynoSort360.value = this.sort360 ?? false;
+ dynoSplats.packedSplats = accumulator.splats;
+ await reader.renderReadback({
+ renderer: this.forge.renderer,
+ reader: doubleSortReader,
+ count: Math.ceil(numSplats / 2),
+ readback: this.readback
+ });
+ const result = await withWorker(async (worker) => {
+ return worker.call("sortDoubleSplats", {
+ numSplats,
+ readback: this.readback,
+ ordering
+ });
+ });
+ this.readback = result.readback;
+ ordering = result.ordering;
+ activeSplats = result.activeSplats;
+ }
+ this.updateDisplay({ accumulator, viewToWorld, ordering, activeSplats });
+ this.sortingCheck = false;
+ }
+ updateDisplay({
+ accumulator,
+ viewToWorld,
+ ordering,
+ activeSplats
+ }) {
+ if (!this.display) {
+ this.display = {
+ accumulator,
+ viewToWorld,
+ geometry: new SplatGeometry(ordering, activeSplats)
+ };
+ } else {
+ if (accumulator !== this.display.accumulator) {
+ this.forge.releaseAccumulator(this.display.accumulator);
+ this.display.accumulator = accumulator;
+ }
+ this.display.viewToWorld = viewToWorld;
+ const oldOrdering = this.display.geometry.ordering;
+ if (oldOrdering.length === ordering.length) {
+ this.display.geometry.update(ordering, activeSplats);
+ } else {
+ this.display.geometry.dispose();
+ this.display.geometry = new SplatGeometry(ordering, activeSplats);
+ }
+ this.orderingFreelist.free(oldOrdering);
+ }
+ if (this.forge.viewpoint === this) {
+ this.forge.prepareViewpoint(this);
+ }
+ }
+ static makeSorter() {
+ if (!_ForgeViewpoint.dynos) {
+ const dynoSortRadial = new DynoBool({ value: true });
+ const dynoOrigin = new DynoVec3({ value: new THREE__namespace.Vector3() });
+ const dynoDirection = new DynoVec3({ value: new THREE__namespace.Vector3() });
+ const dynoDepthBias = new DynoFloat({ value: 1 });
+ const dynoSort360 = new DynoBool({ value: false });
+ const dynoSplats = new DynoPackedSplats();
+ const reader = new Readback();
+ const doubleSortReader = dynoBlock(
+ { index: "int" },
+ { rgba8: "vec4" },
+ ({ index }) => {
+ if (!index) {
+ throw new Error("No index");
+ }
+ const sortParams = {
+ sortRadial: dynoSortRadial,
+ sortOrigin: dynoOrigin,
+ sortDirection: dynoDirection,
+ sortDepthBias: dynoDepthBias,
+ sort360: dynoSort360
+ };
+ const index2 = mul(index, dynoConst("int", 2));
+ const gsplat0 = readPackedSplat(dynoSplats, index2);
+ const metric0 = computeSortMetric({ gsplat: gsplat0, ...sortParams });
+ const gsplat1 = readPackedSplat(
+ dynoSplats,
+ add(index2, dynoConst("int", 1))
+ );
+ const metric1 = computeSortMetric({ gsplat: gsplat1, ...sortParams });
+ const combined = combine({
+ vectorType: "vec2",
+ x: metric0,
+ y: metric1
+ });
+ const rgba8 = uintToRgba8(packHalf2x16(combined));
+ return { rgba8 };
+ }
+ );
+ _ForgeViewpoint.dynos = {
+ dynoSortRadial,
+ dynoOrigin,
+ dynoDirection,
+ dynoDepthBias,
+ dynoSort360,
+ dynoSplats,
+ reader,
+ doubleSortReader
+ };
+ }
+ return _ForgeViewpoint.dynos;
+ }
+};
+_ForgeViewpoint.EMPTY_TEXTURE = new THREE__namespace.Texture();
+_ForgeViewpoint.dynos = null;
+let ForgeViewpoint = _ForgeViewpoint;
+const defineComputeSortMetric = unindent(`
+ float computeSort(Gsplat gsplat, bool sortRadial, vec3 sortOrigin, vec3 sortDirection, float sortDepthBias, bool sort360) {
+ if (!isGsplatActive(gsplat.flags)) {
+ return INFINITY;
+ }
+
+ vec3 center = gsplat.center - sortOrigin;
+ float biasedDepth = dot(center, sortDirection) + sortDepthBias;
+ if (!sort360 && (biasedDepth <= 0.0)) {
+ return INFINITY;
+ }
+
+ return sortRadial ? length(center) : biasedDepth;
+ }
+`);
+function computeSortMetric({
+ gsplat,
+ sortRadial,
+ sortOrigin,
+ sortDirection,
+ sortDepthBias,
+ sort360
+}) {
+ return dyno$1({
+ inTypes: {
+ gsplat: Gsplat,
+ sortRadial: "bool",
+ sortOrigin: "vec3",
+ sortDirection: "vec3",
+ sortDepthBias: "float",
+ sort360: "bool"
+ },
+ outTypes: { metric: "float" },
+ globals: () => [defineGsplat, defineComputeSortMetric],
+ inputs: {
+ gsplat,
+ sortRadial,
+ sortOrigin,
+ sortDirection,
+ sortDepthBias,
+ sort360
+ },
+ statements: ({ inputs, outputs }) => {
+ const {
+ gsplat: gsplat2,
+ sortRadial: sortRadial2,
+ sortOrigin: sortOrigin2,
+ sortDirection: sortDirection2,
+ sortDepthBias: sortDepthBias2,
+ sort360: sort3602
+ } = inputs;
+ return unindentLines(`
+ ${outputs.metric} = computeSort(${gsplat2}, ${sortRadial2}, ${sortOrigin2}, ${sortDirection2}, ${sortDepthBias2}, ${sort3602});
+ `);
+ }
+ }).outputs.metric;
+}
+class SplatAccumulator {
+ constructor() {
+ this.splats = new PackedSplats();
+ this.toWorld = new THREE__namespace.Matrix4();
+ this.mapping = [];
+ this.refCount = 0;
+ this.splatsVersion = -1;
+ this.mappingVersion = -1;
+ }
+ ensureGenerate(maxSplats) {
+ if (this.splats.ensureGenerate(maxSplats)) {
+ this.mapping = [];
+ }
+ }
+ // Generate all Gsplats from an array of generators
+ generateSplats({
+ renderer,
+ modifier,
+ generators: generators2,
+ forceUpdate,
+ originToWorld
+ }) {
+ const mapping = this.mapping.reduce((map, record) => {
+ map.set(record.node, record);
+ return map;
+ }, /* @__PURE__ */ new Map());
+ let updated = 0;
+ let numSplats = 0;
+ for (const { node, generator, version, base, count } of generators2) {
+ const current = mapping.get(node);
+ if (forceUpdate || generator !== (current == null ? void 0 : current.generator) || version !== (current == null ? void 0 : current.version) || base !== (current == null ? void 0 : current.base) || count !== (current == null ? void 0 : current.count)) {
+ if (generator) {
+ const modGenerator = modifier.apply(generator);
+ try {
+ this.splats.generate({
+ generator: modGenerator,
+ base,
+ count,
+ renderer
+ });
+ } catch (error) {
+ node.generator = void 0;
+ node.generatorError = error;
+ }
+ updated += 1;
+ }
+ }
+ numSplats = Math.max(numSplats, base + count);
+ }
+ this.splats.numSplats = numSplats;
+ this.toWorld = originToWorld;
+ this.mapping = generators2;
+ return updated !== 0;
+ }
+ // Check if this accumulator has exactly the same generator mapping as
+ // the previous one. If so, we can reuse the Gsplat sort order.
+ hasCorrespondence(other) {
+ if (this.mapping.length !== other.mapping.length) {
+ return false;
+ }
+ return this.mapping.every(({ node, base, count }, i) => {
+ const {
+ node: otherNode,
+ base: otherBase,
+ count: otherCount
+ } = other.mapping[i];
+ return node === otherNode && base === otherBase && count === otherCount;
+ });
+ }
+}
+var splatDefines_default = "const float LN_SCALE_MIN = -9.0;\nconst float LN_SCALE_MAX = 9.0;\nconst float LN_RESCALE = (LN_SCALE_MAX - LN_SCALE_MIN) / 254.0; \n\nconst uint SPLAT_TEX_WIDTH_BITS = 11u;\nconst uint SPLAT_TEX_HEIGHT_BITS = 11u;\nconst uint SPLAT_TEX_DEPTH_BITS = 11u;\nconst uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;\n\nconst uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;\nconst uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;\nconst uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;\n\nconst uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;\nconst uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;\nconst uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;\n\nconst uint F16_INF = 0x7c00u;\nconst float PI = 3.1415926535897932384626433832795;\n\nconst float INFINITY = 1.0 / 0.0;\nconst float NEG_INFINITY = -INFINITY;\n\nconst float MAX_PIXEL_RADIUS = 512.0;\nconst float MIN_ALPHA = 0.01;\nconst float MAX_STDDEV = sqrt(8.0);\n\nfloat sqr(float x) {\n return x * x;\n}\n\nfloat pow4(float x) {\n float x2 = x * x;\n return x2 * x2;\n}\n\nfloat pow8(float x) {\n float x4 = pow4(x);\n return x4 * x4;\n}\n\nvec3 srgbToLinear(vec3 rgb) {\n return pow(rgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 rgb) {\n return pow(rgb, vec3(1.0 / 2.2));\n}\n\nuint encodeQuatOctXy88R8(vec4 q) {\n \n if (q.w < 0.0) {\n q = -q;\n }\n \n float theta = 2.0 * acos(q.w);\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n \n vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;\n \n \n \n float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);\n vec2 p = vec2(axis.x, axis.y) / sum;\n \n if (axis.z < 0.0) {\n float oldPx = p.x;\n p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);\n p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);\n }\n \n float u_f = p.x * 0.5 + 0.5;\n float v_f = p.y * 0.5 + 0.5;\n \n uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));\n uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));\n \n \n \n uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));\n \n \n return (angleInt << 16u) | (quantV << 8u) | quantU;\n}\n\nvec4 decodeQuatOctXy88R8(uint encoded) {\n \n uint quantU = encoded & uint(0xFFu); \n uint quantV = (encoded >> 8u) & uint(0xFFu); \n uint angleInt = encoded >> 16u; \n\n \n float u_f = float(quantU) / 255.0;\n float v_f = float(quantV) / 255.0;\n vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);\n\n vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));\n float t = max(-axis.z, 0.0);\n axis.x += (axis.x >= 0.0) ? -t : t;\n axis.y += (axis.y >= 0.0) ? -t : t;\n axis = normalize(axis);\n \n \n float theta = (float(angleInt) / 255.0) * 3.14159265359;\n float halfTheta = theta * 0.5;\n float s = sin(halfTheta);\n float w = cos(halfTheta);\n \n return vec4(axis * s, w);\n}\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\nuvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {\n uvec4 uRgba = uvec4(round(clamp(rgba * 255.0, 0.0, 255.0)));\n\n uint uQuat = encodeQuatOctXy88R8(quaternion);\n \n \n uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);\n\n \n uvec3 uScales = uvec3(\n (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - LN_SCALE_MIN) / LN_RESCALE, 0.0, 254.0))) + 1u,\n (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - LN_SCALE_MIN) / LN_RESCALE, 0.0, 254.0))) + 1u,\n (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - LN_SCALE_MIN) / LN_RESCALE, 0.0, 254.0))) + 1u\n );\n\n \n uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);\n uint word1 = packHalf2x16(center.xy);\n uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);\n uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);\n return uvec4(word0, word1, word2, word3);\n}\n\nvoid unpackSplat(uvec4 packed, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {\n uint word0 = packed.x, word1 = packed.y, word2 = packed.z, word3 = packed.w;\n\n uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);\n rgba = vec4(uRgba) / 255.0;\n\n center = vec4(\n unpackHalf2x16(word1),\n unpackHalf2x16(word2 & 0xffffu)\n ).xyz;\n\n uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);\n scales = vec3(\n (uScales.x == 0u) ? 0.0 : exp(LN_SCALE_MIN + float(uScales.x - 1u) * LN_RESCALE),\n (uScales.y == 0u) ? 0.0 : exp(LN_SCALE_MIN + float(uScales.y - 1u) * LN_RESCALE),\n (uScales.z == 0u) ? 0.0 : exp(LN_SCALE_MIN + float(uScales.z - 1u) * LN_RESCALE)\n );\n\n uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);\n quaternion = decodeQuatOctXy88R8(uQuat);\n \n \n}\n\nvec3 quatVec(vec4 q, vec3 v) {\n \n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n}\n\nvec4 quatQuat(vec4 q1, vec4 q2) {\n return vec4(\n q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,\n q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,\n q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z\n );\n}\n\nmat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {\n \n return mat3(\n s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),\n s.x * (2.0 * (q.x * q.y + q.w * q.z)),\n s.x * (2.0 * (q.x * q.z - q.w * q.y)),\n s.y * (2.0 * (q.x * q.y - q.w * q.z)),\n s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),\n s.y * (2.0 * (q.y * q.z + q.w * q.x)),\n s.z * (2.0 * (q.x * q.z + q.w * q.y)),\n s.z * (2.0 * (q.y * q.z - q.w * q.x)),\n s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))\n );\n}\n\nvec4 slerp(vec4 q1, vec4 q2, float t) {\n \n float cosHalfTheta = dot(q1, q2);\n\n \n if (abs(cosHalfTheta) >= 0.999) {\n return q1;\n }\n \n \n \n if (cosHalfTheta < 0.0) {\n q2 = -q2;\n cosHalfTheta = -cosHalfTheta;\n }\n\n \n float halfTheta = acos(cosHalfTheta);\n float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n\n \n float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\n float ratioB = sin(t * halfTheta) / sinHalfTheta;\n\n \n return q1 * ratioA + q2 * ratioB;\n}\n\nivec3 splatTexCoord(int index) {\n uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;\n uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;\n uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;\n return ivec3(x, y, z);\n}";
+var splatFragment_default = "precision highp float;\nprecision highp int;\n\n#include \n\nuniform bool encodeLinear;\nuniform float maxStdDev;\nuniform bool disableFalloff;\nuniform float falloff;\n\nout vec4 fragColor;\n\nin vec4 vRgba;\nin vec2 vSplatUv;\nin vec3 vNdc;\n\nvoid main() {\n float z = dot(vSplatUv, vSplatUv);\n if (z > (maxStdDev * maxStdDev)) {\n discard;\n }\n\n float alpha = vRgba.a;\n alpha *= mix(1.0, exp(-0.5 * z), falloff);\n if (alpha < MIN_ALPHA) {\n discard;\n }\n\n vec3 rgb = vRgba.rgb;\n if (encodeLinear) {\n rgb = srgbToLinear(rgb);\n }\n fragColor = vec4(rgb, alpha);\n}";
+var splatVertex_default = "precision highp float;\nprecision highp int;\nprecision highp usampler2DArray;\n\n#include \n\nattribute uint splatIndex;\n\nout vec4 vRgba;\nout vec2 vSplatUv;\nout vec3 vNdc;\n\nuniform vec2 renderSize;\nuniform uint numSplats;\nuniform vec4 renderToViewQuat;\nuniform vec3 renderToViewPos;\nuniform float maxStdDev;\nuniform float time;\nuniform float deltaTime;\nuniform bool debugFlag;\nuniform bool enable2DGS;\nuniform float blurAmount;\nuniform float preBlurAmount;\nuniform float clipXY;\n\nuniform usampler2DArray packedSplats;\n\nvoid main() {\n \n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n\n if (uint(gl_InstanceID) >= numSplats) {\n return;\n }\n if (splatIndex == 0xffffffffu) {\n \n return;\n }\n\n ivec3 texCoord = ivec3(\n splatIndex & SPLAT_TEX_WIDTH_MASK,\n (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,\n splatIndex >> SPLAT_TEX_LAYER_BITS\n );\n uvec4 packed = texelFetch(packedSplats, texCoord, 0);\n\n vec3 center, scales;\n vec4 quaternion, rgba;\n unpackSplat(packed, center, scales, quaternion, rgba);\n\n if (rgba.a < MIN_ALPHA) {\n return;\n }\n bvec3 zeroScales = equal(scales, vec3(0.0));\n if (all(zeroScales)) {\n return;\n }\n\n \n vec3 viewCenter = quatVec(renderToViewQuat, center) + renderToViewPos;\n\n \n if (viewCenter.z >= 0.0) {\n return;\n }\n\n \n vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);\n\n \n if (abs(clipCenter.z) >= clipCenter.w) {\n return;\n }\n\n \n float clip = clipXY * clipCenter.w;\n if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {\n return;\n }\n\n \n vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);\n\n if (enable2DGS && any(zeroScales)) {\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n\n vec3 offset;\n if (zeroScales.z) {\n offset = vec3(vSplatUv.xy * scales.xy, 0.0);\n } else if (zeroScales.y) {\n offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);\n } else {\n offset = vec3(0.0, vSplatUv.xy * scales.yz);\n }\n\n vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);\n gl_Position = projectionMatrix * vec4(viewPos, 1.0);\n vNdc = gl_Position.xyz / gl_Position.w;\n return;\n }\n\n \n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n\n \n mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);\n mat3 cov3D = RS * transpose(RS);\n\n \n vec2 focal = 0.5 * renderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);\n float invZ = 1.0 / viewCenter.z;\n vec2 J1 = focal * invZ;\n vec2 J2 = -(J1 * viewCenter.xy) * invZ;\n mat3 J = mat3(\n J1.x, 0.0, J2.x,\n 0.0, J1.y, J2.y,\n 0.0, 0.0, 0.0\n );\n\n \n \n \n \n \n \n \n mat3 cov2D = transpose(J) * cov3D * J;\n float a = cov2D[0][0];\n float d = cov2D[1][1];\n float b = cov2D[0][1];\n\n \n a += preBlurAmount;\n d += preBlurAmount;\n\n \n float detOrig = a * d - b * b;\n a += blurAmount;\n d += blurAmount;\n float det = a * d - b * b;\n\n \n float blurAdjust = sqrt(max(0.0, detOrig / det));\n rgba.a *= blurAdjust;\n if (rgba.a < MIN_ALPHA) {\n return;\n }\n\n \n float eigenAvg = 0.5 * (a + d);\n float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));\n float eigen1 = eigenAvg + eigenDelta;\n float eigen2 = eigenAvg - eigenDelta;\n\n vec2 eigenVec1 = normalize(vec2((abs(b) < 0.001) ? 1.0 : b, eigen1 - a));\n vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);\n\n float scale1 = position.x * min(MAX_PIXEL_RADIUS, maxStdDev * sqrt(eigen1));\n float scale2 = position.y * min(MAX_PIXEL_RADIUS, maxStdDev * sqrt(eigen2));\n\n \n vec2 pixelOffset = eigenVec1 * scale1 + eigenVec2 * scale2;\n vec2 ndcOffset = (2.0 / renderSize) * pixelOffset;\n vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);\n\n vRgba = rgba;\n vSplatUv = position.xy * maxStdDev;\n vNdc = ndc;\n gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);\n}";
+let shaders = null;
+function getShaders() {
+ if (!shaders) {
+ THREE__namespace.ShaderChunk.splatDefines = splatDefines_default;
+ shaders = {
+ splatVertex: splatVertex_default,
+ splatFragment: splatFragment_default
+ };
+ }
+ return shaders;
+}
+const MAX_ACCUMULATORS = 5;
+let hasSplatMesh = false;
+let hasForgeRenderer = false;
+let forgeRendererInstance;
+const sceneAdd = THREE__namespace.Scene.prototype.add;
+THREE__namespace.Scene.prototype.add = function(object) {
+ hasSplatMesh = hasSplatMesh || object instanceof SplatMesh;
+ hasForgeRenderer = hasForgeRenderer || object instanceof ForgeRenderer;
+ sceneAdd.call(this, object);
+ return this;
+};
+const sceneOnBeforeRender = THREE__namespace.Scene.prototype.onBeforeRender;
+THREE__namespace.Scene.prototype.onBeforeRender = function(renderer) {
+ if (!hasSplatMesh) {
+ return;
+ }
+ if (!hasForgeRenderer) {
+ const forge = forgeRendererInstance || new ForgeRenderer({ renderer });
+ this.add(forge);
+ }
+ THREE__namespace.Scene.prototype.onBeforeRender = sceneOnBeforeRender;
+ THREE__namespace.Scene.prototype.add = sceneAdd;
+};
+const _ForgeRenderer = class _ForgeRenderer extends THREE__namespace.Mesh {
+ constructor(options) {
+ const uniforms = _ForgeRenderer.makeUniforms();
+ const shaders2 = getShaders();
+ const material = new THREE__namespace.ShaderMaterial({
+ glslVersion: THREE__namespace.GLSL3,
+ vertexShader: shaders2.splatVertex,
+ fragmentShader: shaders2.splatFragment,
+ uniforms,
+ transparent: true,
+ blending: THREE__namespace.NormalBlending,
+ depthTest: true,
+ depthWrite: false,
+ side: THREE__namespace.DoubleSide
+ });
+ super(EMPTY_GEOMETRY, material);
+ this.autoViewpoints = [];
+ this.rotateToAccumulator = new DynoVec4({ value: new THREE__namespace.Quaternion() });
+ this.translateToAccumulator = new DynoVec3({ value: new THREE__namespace.Vector3() });
+ this.lastFrame = -1;
+ this.lastUpdateTime = null;
+ this.defaultCameras = [];
+ this.pendingUpdate = null;
+ this.envViewpoint = null;
+ this.frustumCulled = false;
+ this.renderer = options.renderer;
+ this.material = material;
+ this.uniforms = uniforms;
+ const modifier = dynoBlock(
+ { gsplat: Gsplat },
+ { gsplat: Gsplat },
+ ({ gsplat }) => {
+ if (!gsplat) {
+ throw new Error("gsplat not defined");
+ }
+ gsplat = transformGsplat(gsplat, {
+ rotate: this.rotateToAccumulator,
+ translate: this.translateToAccumulator
+ });
+ return { gsplat };
+ }
+ );
+ this.modifier = new SplatModifier(modifier);
+ this.autoUpdate = options.autoUpdate ?? true;
+ this.preUpdate = options.preUpdate ?? false;
+ this.originDistance = options.originDistance ?? 1;
+ this.maxStdDev = options.maxStdDev ?? Math.sqrt(8);
+ this.enable2DGS = options.enable2DGS ?? true;
+ this.preBlurAmount = options.preBlurAmount ?? 0;
+ this.blurAmount = options.blurAmount ?? 0.3;
+ this.falloff = options.falloff ?? 1;
+ this.clipXY = options.clipXY ?? 1.4;
+ this.active = new SplatAccumulator();
+ this.accumulatorCount = 1;
+ this.freeAccumulators = [];
+ for (let count = 0; count < 1; ++count) {
+ this.freeAccumulators.push(new SplatAccumulator());
+ this.accumulatorCount += 1;
+ }
+ this.defaultView = new ForgeViewpoint({
+ ...options.view,
+ autoUpdate: true,
+ forge: this
+ });
+ this.viewpoint = this.defaultView;
+ this.prepareViewpoint(this.viewpoint);
+ this.clock = options.clock ? cloneClock(options.clock) : new THREE__namespace.Clock();
+ forgeRendererInstance = this;
+ }
+ static makeUniforms() {
+ const uniforms = {
+ // Size of render viewport in pixels
+ renderSize: { value: new THREE__namespace.Vector2() },
+ // Total number of Gsplats in packedSplats to render
+ numSplats: { value: 0 },
+ // SplatAccumulator to view transformation quaternion
+ renderToViewQuat: { value: new THREE__namespace.Quaternion() },
+ // SplatAccumulator to view transformation translation
+ renderToViewPos: { value: new THREE__namespace.Vector3() },
+ // Maximum distance (in stddevs) from Gsplat center to render
+ maxStdDev: { value: 1 },
+ // Enable interpreting 0-thickness Gsplats as 2DGS
+ enable2DGS: { value: false },
+ // Add to projected 2D splat covariance diagonal (thickens and brightens)
+ preBlurAmount: { value: 0 },
+ // Add to 2D splat covariance diagonal and adjust opacity (anti-aliasing)
+ blurAmount: { value: 0.3 },
+ // Modulate Gaussian kernal falloff. 0 means "no falloff, flat shading",
+ // 1 is normal e^-x^2 falloff.
+ falloff: { value: 1 },
+ // Clip Gsplats that are clipXY times beyond the +-1 frustum bounds
+ clipXY: { value: 1.4 },
+ // Gsplat collection to render
+ packedSplats: { type: "t", value: PackedSplats.getEmpty() },
+ // Time in seconds for time-based effects
+ time: { value: 0 },
+ // Delta time in seconds since last frame
+ deltaTime: { value: 0 },
+ // Whether to encode Gsplat with linear RGB (for environment mapping)
+ encodeLinear: { value: false },
+ // Debug flag that alternates each frame
+ debugFlag: { value: false }
+ };
+ return uniforms;
+ }
+ canAllocAccumulator() {
+ return this.freeAccumulators.length > 0 || this.accumulatorCount < MAX_ACCUMULATORS;
+ }
+ maybeAllocAccumulator() {
+ let accumulator = this.freeAccumulators.pop();
+ if (accumulator === void 0) {
+ if (this.accumulatorCount >= MAX_ACCUMULATORS) {
+ return null;
+ }
+ accumulator = new SplatAccumulator();
+ this.accumulatorCount += 1;
+ }
+ accumulator.refCount = 1;
+ return accumulator;
+ }
+ releaseAccumulator(accumulator) {
+ accumulator.refCount -= 1;
+ if (accumulator.refCount === 0) {
+ this.freeAccumulators.push(accumulator);
+ }
+ }
+ newViewpoint(options) {
+ return new ForgeViewpoint({ ...options, forge: this });
+ }
+ onBeforeRender(renderer, scene, camera) {
+ var _a2, _b2;
+ const time = this.time ?? this.clock.getElapsedTime();
+ const deltaTime = time - (this.viewpoint.lastTime ?? time);
+ this.viewpoint.lastTime = time;
+ const frame = renderer.info.render.frame;
+ const isNewFrame = frame !== this.lastFrame;
+ this.lastFrame = frame;
+ const viewpoint = this.viewpoint;
+ if (viewpoint === this.defaultView) {
+ if (isNewFrame) {
+ if (!renderer.xr.isPresenting) {
+ this.defaultView.viewToWorld = camera.matrixWorld.clone();
+ this.defaultCameras = [this.defaultView.viewToWorld];
+ } else {
+ const cameras = renderer.xr.getCamera().cameras;
+ this.defaultCameras = [
+ cameras[0].matrixWorld,
+ cameras[1].matrixWorld
+ ];
+ this.defaultView.viewToWorld = averageOriginToWorlds(this.defaultCameras) ?? new THREE__namespace.Matrix4();
+ }
+ }
+ if (this.autoUpdate) {
+ this.update({ scene, viewToWorld: this.defaultView.viewToWorld });
+ }
+ }
+ if (isNewFrame) {
+ this.uniforms.time.value = time;
+ this.uniforms.deltaTime.value = deltaTime;
+ this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1;
+ }
+ if (viewpoint.target) {
+ this.uniforms.renderSize.value.set(
+ viewpoint.target.width,
+ viewpoint.target.height
+ );
+ } else {
+ const renderSize = renderer.getSize(this.uniforms.renderSize.value);
+ if (renderSize.x === 1 && renderSize.y === 1) {
+ const baseLayer = (_a2 = renderer.xr.getSession()) == null ? void 0 : _a2.renderState.baseLayer;
+ if (baseLayer) {
+ renderSize.x = baseLayer.framebufferWidth;
+ renderSize.y = baseLayer.framebufferHeight;
+ }
+ }
+ }
+ this.uniforms.encodeLinear.value = viewpoint.encodeLinear;
+ this.uniforms.maxStdDev.value = this.maxStdDev;
+ this.uniforms.enable2DGS.value = this.enable2DGS;
+ this.uniforms.preBlurAmount.value = this.preBlurAmount;
+ this.uniforms.blurAmount.value = this.blurAmount;
+ this.uniforms.falloff.value = this.falloff;
+ this.uniforms.clipXY.value = this.clipXY;
+ const accumToWorld = ((_b2 = viewpoint.display) == null ? void 0 : _b2.accumulator.toWorld) ?? new THREE__namespace.Matrix4();
+ const worldToCamera = camera.matrixWorld.clone().invert();
+ const originToCamera = accumToWorld.clone().premultiply(worldToCamera);
+ originToCamera.decompose(
+ this.uniforms.renderToViewPos.value,
+ this.uniforms.renderToViewQuat.value,
+ new THREE__namespace.Vector3()
+ );
+ }
+ // Update the uniforms for the given viewpoint.
+ // Note that the client expects to be able to call render() at any point
+ // to update the canvas, so we must switch the viewpoint back to
+ // defaultView when we're finished.
+ prepareViewpoint(viewpoint) {
+ this.viewpoint = viewpoint ?? this.viewpoint;
+ if (this.viewpoint.display) {
+ const { accumulator, geometry } = this.viewpoint.display;
+ this.uniforms.numSplats.value = accumulator.splats.numSplats;
+ this.uniforms.packedSplats.value = accumulator.splats.getTexture();
+ this.geometry = geometry;
+ } else {
+ this.uniforms.numSplats.value = 0;
+ this.uniforms.packedSplats.value = PackedSplats.getEmpty();
+ this.geometry = EMPTY_GEOMETRY;
+ }
+ }
+ // If forge.autoUpdate is false then you must manually call
+ // forge.update({ scene }) to have the scene Gsplats be re-generated.
+ update({
+ scene,
+ viewToWorld
+ }) {
+ const originToWorld = this.matrixWorld.clone();
+ if (this.preUpdate) {
+ this.updateInternal({ scene, originToWorld, viewToWorld });
+ } else {
+ this.pendingUpdate = {
+ scene,
+ originToWorld
+ };
+ setTimeout(() => {
+ if (this.pendingUpdate) {
+ const { scene: scene2, originToWorld: originToWorld2 } = this.pendingUpdate;
+ this.pendingUpdate = null;
+ this.updateInternal({ scene: scene2, originToWorld: originToWorld2, viewToWorld });
+ }
+ }, 1);
+ }
+ }
+ updateInternal({
+ scene,
+ originToWorld,
+ viewToWorld
+ }) {
+ var _a2;
+ if (!this.canAllocAccumulator()) {
+ return false;
+ }
+ if (!originToWorld) {
+ originToWorld = this.active.toWorld;
+ }
+ viewToWorld = viewToWorld ?? originToWorld.clone();
+ const time = this.time ?? this.clock.getElapsedTime();
+ const deltaTime = time - (this.lastUpdateTime ?? time);
+ this.lastUpdateTime = time;
+ const activeMapping = this.active.mapping.reduce((map, record) => {
+ map.set(record.node, record);
+ return map;
+ }, /* @__PURE__ */ new Map());
+ const { generators: generators2, globalEdits } = this.compileScene(scene);
+ for (const object of generators2) {
+ (_a2 = object.frameUpdate) == null ? void 0 : _a2.call(object, {
+ object,
+ time,
+ deltaTime,
+ viewToWorld,
+ globalEdits
+ });
+ }
+ for (const object of generators2) {
+ const current = activeMapping.get(object);
+ const numSplats = object.generator ? object.numSplats : 0;
+ if (object.generator !== (current == null ? void 0 : current.generator) || numSplats !== (current == null ? void 0 : current.count)) {
+ object.updateVersion();
+ }
+ }
+ const originUpdate = !withinCoorientDist({
+ matrix1: originToWorld,
+ matrix2: this.active.toWorld,
+ maxDistance: this.originDistance
+ });
+ const needsUpdate = originUpdate || generators2.length !== activeMapping.size || generators2.some((g) => {
+ var _a3;
+ return g.version !== ((_a3 = activeMapping.get(g)) == null ? void 0 : _a3.version);
+ });
+ let accumulator = null;
+ if (needsUpdate) {
+ accumulator = this.maybeAllocAccumulator();
+ if (!accumulator) {
+ throw new Error("Unreachable");
+ }
+ const originChanged = !withinCoorientDist({
+ matrix1: originToWorld,
+ matrix2: this.active.toWorld,
+ maxDistance: 1e-5,
+ minCoorient: 0.99999
+ });
+ const sorted = generators2.map((g, gIndex) => {
+ const lastGen = activeMapping.get(g);
+ return !lastGen ? [Number.POSITIVE_INFINITY, g.version, g] : (
+ // Sort by version deltas then by previous ordering in the mapping,
+ // attempting to keep unchanging generators near the front
+ // to improve our chances of avoiding a re-generation.
+ [g.version - lastGen.version, lastGen.base, g]
+ );
+ }).sort((a, b) => {
+ if (a[0] !== b[0]) {
+ return a[0] - b[0];
+ }
+ return a[1] - b[1];
+ });
+ const genOrder = sorted.map(([_version, _seq, g]) => g);
+ const splatCounts = genOrder.map((g) => g.numSplats);
+ const { maxSplats, mapping } = accumulator.splats.generateMapping(splatCounts);
+ const newGenerators = genOrder.map((node, gIndex) => {
+ const { base, count } = mapping[gIndex];
+ return {
+ node,
+ generator: node.generator,
+ version: node.version,
+ base,
+ count
+ };
+ });
+ originToWorld.clone().invert().decompose(
+ this.translateToAccumulator.value,
+ this.rotateToAccumulator.value,
+ new THREE__namespace.Vector3()
+ );
+ accumulator.ensureGenerate(maxSplats);
+ accumulator.generateSplats({
+ renderer: this.renderer,
+ modifier: this.modifier,
+ generators: newGenerators,
+ forceUpdate: originChanged,
+ originToWorld
+ });
+ accumulator.splatsVersion = this.active.splatsVersion + 1;
+ const hasCorrespondence = accumulator.hasCorrespondence(this.active);
+ accumulator.mappingVersion = this.active.mappingVersion + (hasCorrespondence ? 0 : 1);
+ this.releaseAccumulator(this.active);
+ this.active = accumulator;
+ this.prepareViewpoint();
+ }
+ setTimeout(() => {
+ for (const view of this.autoViewpoints) {
+ view.autoPoll({ accumulator: accumulator ?? void 0 });
+ }
+ }, 1);
+ return true;
+ }
+ compileScene(scene) {
+ const generators2 = [];
+ scene.traverse((node) => {
+ if (node instanceof SplatGenerator) {
+ generators2.push(node);
+ }
+ });
+ const globalEdits = /* @__PURE__ */ new Set();
+ scene.traverseVisible((node) => {
+ if (node instanceof SplatEdit) {
+ let ancestor = node.parent;
+ while (ancestor != null && !(ancestor instanceof SplatMesh)) {
+ ancestor = ancestor.parent;
+ }
+ if (ancestor == null) {
+ globalEdits.add(node);
+ }
+ }
+ });
+ return { generators: generators2, globalEdits: Array.from(globalEdits) };
+ }
+ // Renders out the scene to an environment map that can be used for
+ // Image-based lighting or similar applications. First optionally updates Gsplats,
+ // sorts them with respect to the provided worldCenter, renders 6 cube faces,
+ // then pre-filters them using THREE.PMREMGenerator and returns a THREE.Texture
+ // that can assigned directly to a THREE.MeshStandardMaterial.envMap property.
+ async renderEnvMap({
+ renderer,
+ scene,
+ worldCenter,
+ size = 256,
+ near = 0.1,
+ far = 1e3,
+ hideObjects = [],
+ update = false
+ }) {
+ var _a2, _b2;
+ if (!this.envViewpoint) {
+ this.envViewpoint = this.newViewpoint({ sort360: true });
+ }
+ if (!_ForgeRenderer.cubeRender || _ForgeRenderer.cubeRender.target.width !== size || _ForgeRenderer.cubeRender.near !== near || _ForgeRenderer.cubeRender.far !== far) {
+ if (_ForgeRenderer.cubeRender) {
+ _ForgeRenderer.cubeRender.target.dispose();
+ }
+ const target2 = new THREE__namespace.WebGLCubeRenderTarget(size, {
+ format: THREE__namespace.RGBAFormat,
+ generateMipmaps: true,
+ minFilter: THREE__namespace.LinearMipMapLinearFilter
+ });
+ const camera2 = new THREE__namespace.CubeCamera(near, far, target2);
+ _ForgeRenderer.cubeRender = { target: target2, camera: camera2, near, far };
+ }
+ if (!_ForgeRenderer.pmrem) {
+ _ForgeRenderer.pmrem = new THREE__namespace.PMREMGenerator(renderer ?? this.renderer);
+ }
+ const viewToWorld = new THREE__namespace.Matrix4().setPosition(worldCenter);
+ await ((_a2 = this.envViewpoint) == null ? void 0 : _a2.prepare({ scene, viewToWorld, update }));
+ const { target, camera } = _ForgeRenderer.cubeRender;
+ camera.position.copy(worldCenter);
+ const objectVisibility = /* @__PURE__ */ new Map();
+ for (const object of hideObjects) {
+ objectVisibility.set(object, object.visible);
+ object.visible = false;
+ }
+ this.prepareViewpoint(this.envViewpoint);
+ camera.update(renderer ?? this.renderer, scene);
+ this.prepareViewpoint(this.defaultView);
+ for (const [object, visible] of objectVisibility.entries()) {
+ object.visible = visible;
+ }
+ return (_b2 = _ForgeRenderer.pmrem) == null ? void 0 : _b2.fromCubemap(target.texture).texture;
+ }
+ // Utility function to recursively set the envMap property for any
+ // THREE.MeshStandardMaterial within the subtree of root.
+ recurseSetEnvMap(root, envMap) {
+ root.traverse((node) => {
+ if (node instanceof THREE__namespace.Mesh) {
+ if (Array.isArray(node.material)) {
+ for (const material of node.material) {
+ if (material instanceof THREE__namespace.MeshStandardMaterial) {
+ material.envMap = envMap;
+ }
+ }
+ } else {
+ if (node.material instanceof THREE__namespace.MeshStandardMaterial) {
+ node.material.envMap = envMap;
+ }
+ }
+ }
+ });
+ }
+ // Utility function that helps extract the Gsplat RGBA values from a
+ // SplatGenerator, including the result of any real-time RGBA SDF edits applied
+ // to a SplatMesh. This effectively "bakes" any computed RGBA values, which can
+ // now be used as a pipeline input via SplatMesh.splatRgba to inject these
+ // baked values into the Gsplat data.
+ getRgba({
+ generator,
+ rgba
+ }) {
+ const mapping = this.active.mapping.find(({ node }) => node === generator);
+ if (!mapping) {
+ throw new Error("Generator not found");
+ }
+ rgba = rgba ?? new RgbaArray();
+ rgba.fromPackedSplats({
+ packedSplats: this.active.splats,
+ base: mapping.base,
+ count: mapping.count,
+ renderer: this.renderer
+ });
+ return rgba;
+ }
+ // Utility function that builds on getRgba({ generator }) and additionally
+ // reads back the RGBA values to the CPU in a Uint8Array with packed RGBA
+ // in that byte order.
+ async readRgba({
+ generator,
+ rgba
+ }) {
+ rgba = this.getRgba({ generator, rgba });
+ return rgba.read();
+ }
+};
+_ForgeRenderer.cubeRender = null;
+_ForgeRenderer.pmrem = null;
+let ForgeRenderer = _ForgeRenderer;
+const EMPTY_GEOMETRY = new SplatGeometry(new Uint32Array(1), 0);
+dynoBlock(
+ { packedSplats: TPackedSplats, index: "int" },
+ { gsplat: Gsplat },
+ ({ packedSplats, index }) => {
+ if (!packedSplats || !index) {
+ throw new Error("Invalid input");
+ }
+ const gsplat = readPackedSplat(packedSplats, index);
+ return { gsplat };
+ }
+);
+function averageOriginToWorlds(originToWorlds) {
+ if (originToWorlds.length === 0) {
+ return null;
+ }
+ const position = new THREE__namespace.Vector3();
+ const quaternion = new THREE__namespace.Quaternion();
+ const scale = new THREE__namespace.Vector3();
+ const positions = [];
+ const quaternions = [];
+ for (const matrix of originToWorlds) {
+ matrix.decompose(position, quaternion, scale);
+ positions.push(position);
+ quaternions.push(quaternion);
+ }
+ return new THREE__namespace.Matrix4().compose(
+ averagePositions(positions),
+ averageQuaternions(quaternions),
+ new THREE__namespace.Vector3(1, 1, 1)
+ );
+}
+class SpzReader {
+ constructor({ fileBytes }) {
+ this.fileBytes = fileBytes instanceof ArrayBuffer ? new Uint8Array(fileBytes) : fileBytes;
+ this.reader = new GunzipReader({ fileBytes: this.fileBytes });
+ const header = new DataView(this.reader.read(16).buffer);
+ if (header.getUint32(0, true) !== 1347635022) {
+ throw new Error("Invalid SPZ file");
+ }
+ this.version = header.getUint32(4, true);
+ if (this.version < 1 || this.version > 2) {
+ throw new Error(`Unsupported SPZ version: ${this.version}`);
+ }
+ this.numSplats = header.getUint32(8, true);
+ this.shDegree = header.getUint8(12);
+ this.fractionalBits = header.getUint8(13);
+ this.flags = header.getUint8(14);
+ this.flagAntiAlias = (this.flags & 1) !== 0;
+ this.reserved = header.getUint8(15);
+ this.parsed = false;
+ }
+ parseSplats(centerCallback, alphaCallback, rgbCallback, scalesCallback, quatCallback, shCallback) {
+ if (this.parsed) {
+ throw new Error("SPZ file already parsed");
+ }
+ this.parsed = true;
+ if (this.version === 1) {
+ const centerBytes = this.reader.read(this.numSplats * 3 * 2);
+ const centerUint16 = new Uint16Array(centerBytes.buffer);
+ for (let i = 0; i < this.numSplats; i++) {
+ const i3 = i * 3;
+ const x = fromHalf(centerUint16[i3]);
+ const y = fromHalf(centerUint16[i3 + 1]);
+ const z = fromHalf(centerUint16[i3 + 2]);
+ centerCallback(i, x, y, z);
+ }
+ } else if (this.version === 2) {
+ const fixed = 1 << this.fractionalBits;
+ const centerBytes = this.reader.read(this.numSplats * 3 * 3);
+ for (let i = 0; i < this.numSplats; i++) {
+ const i9 = i * 9;
+ const x = ((centerBytes[i9 + 2] << 24 | centerBytes[i9 + 1] << 16 | centerBytes[i9] << 8) >> 8) / fixed;
+ const y = ((centerBytes[i9 + 5] << 24 | centerBytes[i9 + 4] << 16 | centerBytes[i9 + 3] << 8) >> 8) / fixed;
+ const z = ((centerBytes[i9 + 8] << 24 | centerBytes[i9 + 7] << 16 | centerBytes[i9 + 6] << 8) >> 8) / fixed;
+ centerCallback(i, x, y, z);
+ }
+ } else {
+ throw new Error("Unreachable");
+ }
+ {
+ const bytes = this.reader.read(this.numSplats);
+ for (let i = 0; i < this.numSplats; i++) {
+ alphaCallback(i, bytes[i] / 255);
+ }
+ }
+ {
+ const rgbBytes = this.reader.read(this.numSplats * 3);
+ const scale = SH_C0 / 0.15;
+ for (let i = 0; i < this.numSplats; i++) {
+ const i3 = i * 3;
+ const r = (rgbBytes[i3] / 255 - 0.5) * scale + 0.5;
+ const g = (rgbBytes[i3 + 1] / 255 - 0.5) * scale + 0.5;
+ const b = (rgbBytes[i3 + 2] / 255 - 0.5) * scale + 0.5;
+ rgbCallback(i, r, g, b);
+ }
+ }
+ {
+ const scalesBytes = this.reader.read(this.numSplats * 3);
+ for (let i = 0; i < this.numSplats; i++) {
+ const i3 = i * 3;
+ const scaleX = Math.exp(scalesBytes[i3] / 16 - 10);
+ const scaleY = Math.exp(scalesBytes[i3 + 1] / 16 - 10);
+ const scaleZ = Math.exp(scalesBytes[i3 + 2] / 16 - 10);
+ scalesCallback(i, scaleX, scaleY, scaleZ);
+ }
+ }
+ {
+ const quatBytes = this.reader.read(this.numSplats * 3);
+ for (let i = 0; i < this.numSplats; i++) {
+ const i3 = i * 3;
+ const quatX = quatBytes[i3] / 127.5 - 1;
+ const quatY = quatBytes[i3 + 1] / 127.5 - 1;
+ const quatZ = quatBytes[i3 + 2] / 127.5 - 1;
+ const quatW = Math.sqrt(
+ Math.max(0, 1 - quatX * quatX - quatY * quatY - quatZ * quatZ)
+ );
+ quatCallback(i, quatX, quatY, quatZ, quatW);
+ }
+ }
+ if (shCallback && this.shDegree >= 1) {
+ const sh1 = new Float32Array(3 * 3);
+ const sh2 = this.shDegree >= 2 ? new Float32Array(5 * 3) : void 0;
+ const sh3 = this.shDegree >= 3 ? new Float32Array(7 * 3) : void 0;
+ const shBytes = this.reader.read(
+ this.numSplats * SH_DEGREE_TO_VECS[this.shDegree] * 3
+ );
+ let offset = 0;
+ for (let i = 0; i < this.numSplats; i++) {
+ for (let j = 0; j < 9; ++j) {
+ sh1[j] = (shBytes[offset + j] - 128) / 128;
+ }
+ offset += 9;
+ if (sh2) {
+ for (let j = 0; j < 15; ++j) {
+ sh2[j] = (shBytes[offset + j] - 128) / 128;
+ }
+ offset += 15;
+ }
+ if (sh3) {
+ for (let j = 0; j < 21; ++j) {
+ sh3[j] = (shBytes[offset + j] - 128) / 128;
+ }
+ offset += 21;
+ }
+ shCallback(i, sh1, sh2, sh3);
+ }
+ }
+ }
+}
+const SH_DEGREE_TO_VECS = { 1: 3, 2: 8, 3: 15 };
+const SH_C0 = 0.28209479177387814;
+class SplatSkinning {
+ constructor(options) {
+ this.mesh = options.mesh;
+ this.numSplats = options.numSplats ?? this.mesh.numSplats;
+ const { width, height, depth, maxSplats } = getTextureSize(this.numSplats);
+ this.skinData = new Uint16Array(maxSplats * 4);
+ this.skinTexture = new THREE__namespace.DataArrayTexture(
+ this.skinData,
+ width,
+ height,
+ depth
+ );
+ this.skinTexture.format = THREE__namespace.RGBAIntegerFormat;
+ this.skinTexture.type = THREE__namespace.UnsignedShortType;
+ this.skinTexture.internalFormat = "RGBA16UI";
+ this.skinTexture.needsUpdate = true;
+ this.numBones = options.numBones ?? 256;
+ this.boneData = new Float32Array(this.numBones * 16);
+ this.boneTexture = new THREE__namespace.DataTexture(
+ this.boneData,
+ 4,
+ this.numBones,
+ THREE__namespace.RGBAFormat,
+ THREE__namespace.FloatType
+ );
+ this.boneTexture.internalFormat = "RGBA32F";
+ this.boneTexture.needsUpdate = true;
+ this.uniform = new DynoUniform({
+ key: "skinning",
+ type: GsplatSkinning,
+ globals: () => [defineGsplatSkinning],
+ value: {
+ numSplats: this.numSplats,
+ numBones: this.numBones,
+ skinTexture: this.skinTexture,
+ boneTexture: this.boneTexture
+ }
+ });
+ }
+ // Apply the skeletal animation to a Gsplat in a dyno program.
+ modify(gsplat) {
+ return applyGsplatSkinning(gsplat, this.uniform);
+ }
+ // Set the "rest" pose for a bone with position and quaternion orientation.
+ setRestQuatPos(boneIndex, quat, pos) {
+ const i16 = boneIndex * 16;
+ this.boneData[i16 + 0] = quat.x;
+ this.boneData[i16 + 1] = quat.y;
+ this.boneData[i16 + 2] = quat.z;
+ this.boneData[i16 + 3] = quat.w;
+ this.boneData[i16 + 4] = pos.x;
+ this.boneData[i16 + 5] = pos.y;
+ this.boneData[i16 + 6] = pos.z;
+ this.boneData[i16 + 7] = 0;
+ this.boneData[i16 + 8] = 0;
+ this.boneData[i16 + 9] = 0;
+ this.boneData[i16 + 10] = 0;
+ this.boneData[i16 + 11] = 1;
+ this.boneData[i16 + 12] = 0;
+ this.boneData[i16 + 13] = 0;
+ this.boneData[i16 + 14] = 0;
+ this.boneData[i16 + 15] = 0;
+ }
+ // Set the "current" position and orientation of a bone.
+ setBoneQuatPos(boneIndex, quat, pos) {
+ const i16 = boneIndex * 16;
+ const origQuat = new THREE__namespace.Quaternion(
+ this.boneData[i16 + 0],
+ this.boneData[i16 + 1],
+ this.boneData[i16 + 2],
+ this.boneData[i16 + 3]
+ );
+ const origPos = new THREE__namespace.Vector3(
+ this.boneData[i16 + 4],
+ this.boneData[i16 + 5],
+ this.boneData[i16 + 6]
+ );
+ const relQuat = origQuat.clone().invert();
+ const relPos = pos.clone().sub(origPos);
+ relPos.applyQuaternion(relQuat);
+ relQuat.multiply(quat);
+ const dual = new THREE__namespace.Quaternion(
+ relPos.x,
+ relPos.y,
+ relPos.z,
+ 0
+ ).multiply(origQuat);
+ this.boneData[i16 + 8] = relQuat.x;
+ this.boneData[i16 + 9] = relQuat.y;
+ this.boneData[i16 + 10] = relQuat.z;
+ this.boneData[i16 + 11] = relQuat.w;
+ this.boneData[i16 + 12] = 0.5 * dual.x;
+ this.boneData[i16 + 13] = 0.5 * dual.y;
+ this.boneData[i16 + 14] = 0.5 * dual.z;
+ this.boneData[i16 + 15] = 0.5 * dual.w;
+ }
+ // Set up to 4 bone indices and weights for a Gsplat. For fewer than 4 bones,
+ // you can set the remaining weights to 0 (and index=0).
+ setSplatBones(splatIndex, boneIndices, weights) {
+ const i4 = splatIndex * 4;
+ this.skinData[i4 + 0] = Math.min(255, Math.max(0, Math.round(weights.x * 255))) + (boneIndices.x << 8);
+ this.skinData[i4 + 1] = Math.min(255, Math.max(0, Math.round(weights.y * 255))) + (boneIndices.y << 8);
+ this.skinData[i4 + 2] = Math.min(255, Math.max(0, Math.round(weights.z * 255))) + (boneIndices.z << 8);
+ this.skinData[i4 + 3] = Math.min(255, Math.max(0, Math.round(weights.w * 255))) + (boneIndices.w << 8);
+ }
+ // Call this to indicate that the bones have changed and the Gsplats need to be
+ // re-generated with updated skinning.
+ updateBones() {
+ this.boneTexture.needsUpdate = true;
+ this.mesh.needsUpdate = true;
+ }
+}
+const GsplatSkinning = { type: "GsplatSkinning" };
+const defineGsplatSkinning = unindent(`
+ struct GsplatSkinning {
+ int numSplats;
+ int numBones;
+ usampler2DArray skinTexture;
+ sampler2D boneTexture;
+ };
+`);
+const defineApplyGsplatSkinning = unindent(`
+ void applyGsplatSkinning(
+ int numSplats, int numBones,
+ usampler2DArray skinTexture, sampler2D boneTexture,
+ int splatIndex, inout vec3 center, inout vec4 quaternion
+ ) {
+ if ((splatIndex < 0) || (splatIndex >= numSplats)) {
+ return;
+ }
+
+ uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);
+
+ float weights[4];
+ weights[0] = float(skinData.x & 0xffu) / 255.0;
+ weights[1] = float(skinData.y & 0xffu) / 255.0;
+ weights[2] = float(skinData.z & 0xffu) / 255.0;
+ weights[3] = float(skinData.w & 0xffu) / 255.0;
+
+ uint boneIndices[4];
+ boneIndices[0] = (skinData.x >> 8u) & 0xffu;
+ boneIndices[1] = (skinData.y >> 8u) & 0xffu;
+ boneIndices[2] = (skinData.z >> 8u) & 0xffu;
+ boneIndices[3] = (skinData.w >> 8u) & 0xffu;
+
+ vec4 quat = vec4(0.0);
+ vec4 dual = vec4(0.0);
+ for (int i = 0; i < 4; i++) {
+ if (weights[i] > 0.0) {
+ int boneIndex = int(boneIndices[i]);
+ vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);
+ vec4 boneDual = vec4(0.0);
+ if (boneIndex < numBones) {
+ boneQuat = texelFetch(boneTexture, ivec2(2, boneIndex), 0);
+ boneDual = texelFetch(boneTexture, ivec2(3, boneIndex), 0);
+ }
+
+ if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {
+ // Flip sign if next blend is pointing in the opposite direction
+ boneQuat = -boneQuat;
+ boneDual = -boneDual;
+ }
+ quat += weights[i] * boneQuat;
+ dual += weights[i] * boneDual;
+ }
+ }
+
+ // Normalize dual quaternion
+ float norm = length(quat);
+ quat /= norm;
+ dual /= norm;
+ vec3 translate = vec3(
+ 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),
+ 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),
+ 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)
+ );
+
+ center = quatVec(quat, center) + translate;
+ quaternion = quatQuat(quat, quaternion);
+ }
+`);
+function applyGsplatSkinning(gsplat, skinning) {
+ const dyno2 = new Dyno({
+ inTypes: { gsplat: Gsplat, skinning: GsplatSkinning },
+ outTypes: { gsplat: Gsplat },
+ globals: () => [defineGsplatSkinning, defineApplyGsplatSkinning],
+ inputs: { gsplat, skinning },
+ statements: ({ inputs, outputs }) => {
+ const { skinning: skinning2 } = inputs;
+ const { gsplat: gsplat2 } = outputs;
+ return unindentLines(`
+ ${gsplat2} = ${inputs.gsplat};
+ if (isGsplatActive(${gsplat2}.flags)) {
+ applyGsplatSkinning(
+ ${skinning2}.numSplats, ${skinning2}.numBones,
+ ${skinning2}.skinTexture, ${skinning2}.boneTexture,
+ ${gsplat2}.index, ${gsplat2}.center, ${gsplat2}.quaternion
+ );
+ }
+ `);
+ }
+ });
+ return dyno2.outputs.gsplat;
+}
+function constructGrid({
+ // PackedSplats object to add splats to
+ splats,
+ // min and max box extents of the grid
+ extents,
+ // step size along each grid axis
+ stepSize = 1,
+ // spherical radius of each Gsplat
+ pointRadius = 0.01,
+ // relative size of the "shadow copy" of each Gsplat placed behind it
+ pointShadowScale = 2,
+ // Gsplat opacity
+ opacity = 1,
+ // Gsplat color (THREE.Color) or function to set color for position:
+ // ((THREE.Color, THREE.Vector3) => void) (default: RGB-modulated grid)
+ color
+}) {
+ const EPSILON = 1e-6;
+ const center = new THREE__namespace.Vector3();
+ const scales = new THREE__namespace.Vector3();
+ const quaternion = new THREE__namespace.Quaternion(0, 0, 0, 1);
+ if (color == null) {
+ color = (color2, point) => color2.set(
+ 0.55 + 0.45 * Math.cos(point.x * 1),
+ 0.55 + 0.45 * Math.cos(point.y * 1),
+ 0.55 + 0.45 * Math.cos(point.z * 1)
+ );
+ }
+ const pointColor = new THREE__namespace.Color();
+ for (let z = extents.min.z; z < extents.max.z + EPSILON; z += stepSize) {
+ for (let y = extents.min.y; y < extents.max.y + EPSILON; y += stepSize) {
+ for (let x = extents.min.x; x < extents.max.x + EPSILON; x += stepSize) {
+ center.set(x, y, z);
+ for (let layer = 0; layer < 2; ++layer) {
+ scales.setScalar(pointRadius * (layer ? 1 : pointShadowScale));
+ if (!layer) {
+ pointColor.setScalar(0);
+ } else if (typeof color === "function") {
+ color(pointColor, center);
+ } else {
+ pointColor.copy(color);
+ }
+ splats.pushSplat(center, scales, quaternion, opacity, pointColor);
+ }
+ }
+ }
+ }
+}
+function constructAxes({
+ // PackedSplats object to add splats to
+ splats,
+ // scale (Gsplat scale along axis)
+ scale = 0.25,
+ // radius of the axes (Gsplat scale orthogonal to axis)
+ axisRadius = 75e-4,
+ // relative size of the "shadow copy" of each Gsplat placed behind it
+ axisShadowScale = 2,
+ // origins of the axes (default single axis at origin)
+ origins = [new THREE__namespace.Vector3()]
+}) {
+ const center = new THREE__namespace.Vector3();
+ const scales = new THREE__namespace.Vector3();
+ const quaternion = new THREE__namespace.Quaternion(0, 0, 0, 1);
+ const color = new THREE__namespace.Color();
+ const opacity = 1;
+ for (const origin of origins) {
+ for (let axis = 0; axis < 3; ++axis) {
+ center.set(
+ origin.x + (axis === 0 ? scale : 0),
+ origin.y + (axis === 1 ? scale : 0),
+ origin.z + (axis === 2 ? scale : 0)
+ );
+ for (let layer = 0; layer < 2; ++layer) {
+ scales.set(
+ (axis === 0 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),
+ (axis === 1 ? scale : axisRadius) * (layer ? 1 : axisShadowScale),
+ (axis === 2 ? scale : axisRadius) * (layer ? 1 : axisShadowScale)
+ );
+ color.setRGB(
+ layer === 0 ? 0 : axis === 0 ? 1 : 0,
+ layer === 0 ? 0 : axis === 1 ? 1 : 0,
+ layer === 0 ? 0 : axis === 2 ? 1 : 0
+ );
+ splats.pushSplat(center, scales, quaternion, opacity, color);
+ }
+ }
+ }
+}
+function constructSpherePoints({
+ // PackedSplats object to add splats to
+ splats,
+ // center of the sphere (default: origin)
+ origin = new THREE__namespace.Vector3(),
+ // radius of the sphere
+ radius = 1,
+ // maximum depth of recursion for subdividing the sphere
+ // Warning: Gsplat count grows exponentially with depth
+ maxDepth = 3,
+ // filter function to apply to each point, for example to select
+ // points in a certain direction or other function ((THREE.Vector3) => boolean)
+ // (default: null)
+ filter = null,
+ // radius of each oriented Gsplat
+ pointRadius = 0.02,
+ // flatness of each oriented Gsplat
+ pointThickness = 1e-3,
+ // color of each Gsplat (THREE.Color) or function to set color for point:
+ // ((THREE.Color, THREE.Vector3) => void) (default: white)
+ color = new THREE__namespace.Color(1, 1, 1)
+}) {
+ const pointsHash = {};
+ function addPoint(p) {
+ if (filter && !filter(p)) {
+ return;
+ }
+ const key = `${p.x},${p.y},${p.z}`;
+ if (!pointsHash[key]) {
+ pointsHash[key] = p;
+ }
+ }
+ function recurse(depth, p0, p1, p2) {
+ addPoint(p0);
+ addPoint(p1);
+ addPoint(p2);
+ if (depth >= maxDepth) {
+ return;
+ }
+ const p01 = new THREE__namespace.Vector3().addVectors(p0, p1).normalize();
+ const p12 = new THREE__namespace.Vector3().addVectors(p1, p2).normalize();
+ const p20 = new THREE__namespace.Vector3().addVectors(p2, p0).normalize();
+ recurse(depth + 1, p0, p01, p20);
+ recurse(depth + 1, p01, p1, p12);
+ recurse(depth + 1, p20, p12, p2);
+ recurse(depth + 1, p01, p12, p20);
+ }
+ for (const x of [-1, 1]) {
+ for (const y of [-1, 1]) {
+ for (const z of [-1, 1]) {
+ const p0 = new THREE__namespace.Vector3(x, 0, 0);
+ const p1 = new THREE__namespace.Vector3(0, y, 0);
+ const p2 = new THREE__namespace.Vector3(0, 0, z);
+ recurse(0, p0, p1, p2);
+ }
+ }
+ }
+ const points = Object.values(pointsHash);
+ const scales = new THREE__namespace.Vector3(pointRadius, pointRadius, pointThickness);
+ const quaternion = new THREE__namespace.Quaternion();
+ const pointColor = typeof color === "function" ? new THREE__namespace.Color() : color;
+ for (const point of points) {
+ quaternion.setFromUnitVectors(new THREE__namespace.Vector3(0, 0, -1), point);
+ if (typeof color === "function") {
+ color(pointColor, point);
+ }
+ point.multiplyScalar(radius);
+ point.add(origin);
+ splats.pushSplat(point, scales, quaternion, 1, pointColor);
+ }
+}
+function textSplats({
+ // text string to display
+ text,
+ // browser font to render text with (default: "Arial")
+ font,
+ // font size in pixels/Gsplats (default: 32)
+ fontSize,
+ // SplatMesh.recolor tint assuming white Gsplats (default: white)
+ color,
+ // Individual Gsplat color (default: white)
+ rgb,
+ // Gsplat radius (default: 0.8 covers 1-unit spacing well)
+ dotRadius,
+ // text alignment: "left", "center", "right", "start", "end" (default: "start")
+ textAlign,
+ // line spacing multiplier, lines delimited by "\n" (default: 1.0)
+ lineHeight
+}) {
+ font = font ?? "Arial";
+ fontSize = fontSize ?? 32;
+ color = color ?? new THREE__namespace.Color(1, 1, 1);
+ dotRadius = dotRadius ?? 0.8;
+ textAlign = textAlign ?? "start";
+ lineHeight = lineHeight ?? 1;
+ const lines = text.split("\n");
+ const canvas = document.createElement("canvas");
+ const ctx = canvas.getContext("2d");
+ if (!ctx) {
+ throw new Error("Failed to create canvas context");
+ }
+ ctx.font = `${fontSize}px ${font}`;
+ ctx.textAlign = textAlign;
+ const metrics = ctx.measureText("");
+ const fontHeight = metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;
+ let minLeft = Number.POSITIVE_INFINITY;
+ let maxRight = Number.NEGATIVE_INFINITY;
+ let minTop = Number.POSITIVE_INFINITY;
+ let maxBottom = Number.NEGATIVE_INFINITY;
+ for (let line = 0; line < lines.length; ++line) {
+ const metrics2 = ctx.measureText(lines[line]);
+ const y = fontHeight * lineHeight * line;
+ minLeft = Math.min(minLeft, -metrics2.actualBoundingBoxLeft);
+ maxRight = Math.max(maxRight, metrics2.actualBoundingBoxRight);
+ minTop = Math.min(minTop, y - metrics2.actualBoundingBoxAscent);
+ maxBottom = Math.max(maxBottom, y + metrics2.actualBoundingBoxDescent);
+ }
+ const originLeft = Math.floor(minLeft);
+ const originTop = Math.floor(minTop);
+ const width = Math.ceil(maxRight) - originLeft;
+ const height = Math.ceil(maxBottom) - originTop;
+ canvas.width = width;
+ canvas.height = height;
+ ctx.font = `${fontSize}px ${font}`;
+ ctx.textAlign = textAlign;
+ ctx.textBaseline = "alphabetic";
+ ctx.fillStyle = "#FFFFFF";
+ for (let i = 0; i < lines.length; ++i) {
+ const y = fontHeight * lineHeight * i - originTop;
+ ctx.fillText(lines[i], -originLeft, y);
+ }
+ const imageData = ctx.getImageData(0, 0, width, height);
+ const rgba = new Uint8Array(imageData.data.buffer);
+ const splats = new PackedSplats();
+ const center = new THREE__namespace.Vector3();
+ const scales = new THREE__namespace.Vector3().setScalar(dotRadius);
+ const quaternion = new THREE__namespace.Quaternion(0, 0, 0, 1);
+ rgb = rgb ?? new THREE__namespace.Color(1, 1, 1);
+ let offset = 0;
+ for (let y = 0; y < height; ++y) {
+ for (let x = 0; x < width; ++x) {
+ const a = rgba[offset + 3];
+ if (a > 0) {
+ const opacity = a / 255;
+ center.set(x - 0.5 * (width - 1), 0.5 * (height - 1) - y, 0);
+ splats.pushSplat(center, scales, quaternion, opacity, rgb);
+ }
+ offset += 4;
+ }
+ }
+ const mesh = new SplatMesh({ packedSplats: splats });
+ mesh.recolor = color;
+ return mesh;
+}
+function imageSplats({
+ // URL of the image to convert to splats (example: `url: "./image.png"`)
+ url,
+ // Radius of each Gsplat, default covers 1-unit spacing well (default: 0.8)
+ dotRadius,
+ // Subsampling factor for the image. Higher values reduce resolution,
+ // for example 2 will halve the width and height by averaging (default: 1)
+ subXY,
+ // Optional callback function to modify each Gsplat before it's added.
+ // Return null to skip adding the Gsplat, or a number to set the opacity
+ // and add the Gsplat with parameter values in the objects center, rgba etc. were
+ // passed into the forEachSplat callback. Ending the callback in `return opacity;`
+ // will retain the original opacity.
+ // ((width: number, height: number, index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => number | null)
+ forEachSplat
+}) {
+ dotRadius = dotRadius ?? 0.8;
+ subXY = Math.max(1, Math.floor(subXY ?? 1));
+ return new SplatMesh({
+ constructSplats: async (splats) => {
+ return new Promise((resolve, reject) => {
+ const img = new Image();
+ img.onerror = reject;
+ img.onload = () => {
+ const { width, height } = img;
+ const canvas = document.createElement("canvas");
+ canvas.width = width;
+ canvas.height = height;
+ const ctx = canvas.getContext("2d");
+ if (!ctx) {
+ reject(new Error("Failed to create canvas context"));
+ return;
+ }
+ ctx.imageSmoothingEnabled = true;
+ ctx.imageSmoothingQuality = "high";
+ const destWidth = Math.round(width / subXY);
+ const destHeight = Math.round(height / subXY);
+ ctx.drawImage(img, 0, 0, destWidth, destHeight);
+ try {
+ const imageData = ctx.getImageData(0, 0, destWidth, destHeight);
+ const rgba = new Uint8Array(imageData.data.buffer);
+ const center = new THREE__namespace.Vector3();
+ const scales = new THREE__namespace.Vector3().setScalar(dotRadius);
+ const quaternion = new THREE__namespace.Quaternion(0, 0, 0, 1);
+ const rgb = new THREE__namespace.Color();
+ let index = 0;
+ for (let y = 0; y < destHeight; ++y) {
+ for (let x = 0; x < destWidth; ++x) {
+ const offset = index * 4;
+ const a = rgba[offset + 3];
+ if (a > 0) {
+ let opacity = a / 255;
+ rgb.set(
+ rgba[offset + 0] / 255,
+ rgba[offset + 1] / 255,
+ rgba[offset + 2] / 255
+ );
+ center.set(
+ x - 0.5 * (destWidth - 1),
+ 0.5 * (destHeight - 1) - y,
+ 0
+ );
+ scales.setScalar(dotRadius);
+ quaternion.set(0, 0, 0, 1);
+ let push = true;
+ if (forEachSplat) {
+ const maybeOpacity = forEachSplat(
+ destWidth,
+ destHeight,
+ index,
+ center,
+ scales,
+ quaternion,
+ opacity,
+ rgb
+ );
+ opacity = maybeOpacity ?? opacity;
+ push = maybeOpacity !== null;
+ }
+ if (push) {
+ splats.pushSplat(center, scales, quaternion, opacity, rgb);
+ }
+ }
+ index += 1;
+ }
+ }
+ resolve();
+ } catch (error) {
+ reject(error);
+ }
+ };
+ img.src = url;
+ });
+ }
+ });
+}
+function staticBox({
+ box,
+ cells,
+ dotScale,
+ color,
+ opacity
+}) {
+ cells.x = Math.max(1, Math.round(cells.x));
+ cells.y = Math.max(1, Math.round(cells.y));
+ cells.z = Math.max(1, Math.round(cells.z));
+ opacity = opacity ?? 1;
+ const numSplats = cells.x * cells.y * cells.z;
+ const dynoX = dynoConst("int", cells.x);
+ const dynoY = dynoConst("int", cells.y);
+ dynoConst("int", cells.z);
+ const dynoTime = dynoFloat(0);
+ const generator = new SplatGenerator({
+ numSplats,
+ generator: dynoBlock(
+ { index: "int" },
+ { gsplat: Gsplat },
+ ({ index }) => {
+ if (!index) {
+ throw new Error("index is undefined");
+ }
+ const cellX = imod(index, dynoX);
+ const index2 = div(index, dynoX);
+ const cellY = imod(index2, dynoY);
+ const cellZ = div(index2, dynoY);
+ const cell = combine({
+ vectorType: "ivec3",
+ x: cellX,
+ y: cellY,
+ z: cellZ
+ });
+ const intTime = floatBitsToInt(dynoTime);
+ const inputs = combine({ vectorType: "ivec2", x: index, y: intTime });
+ const random = hashVec3(inputs);
+ const min2 = dynoConst("vec3", box.min);
+ const max2 = dynoConst("vec3", box.max);
+ const size = sub(max2, min2);
+ const coord = div(add(vec3(cell), random), dynoConst("vec3", cells));
+ let r;
+ let g;
+ let b;
+ if (color) {
+ r = dynoConst("float", color.r);
+ g = dynoConst("float", color.g);
+ b = dynoConst("float", color.b);
+ } else {
+ ({ r, g, b } = split(coord).outputs);
+ }
+ const rgba = combine({
+ vectorType: "vec4",
+ r,
+ g,
+ b,
+ a: dynoConst("float", opacity)
+ });
+ const center = add(min2, mul(size, coord));
+ const scales = vec3(dynoConst("float", dotScale));
+ const quaternion = dynoConst("vec4", new THREE__namespace.Quaternion(0, 0, 0, 1));
+ let gsplat = combineGsplat({
+ flags: dynoLiteral("uint", "GSPLAT_FLAG_ACTIVE"),
+ index,
+ center,
+ scales,
+ quaternion,
+ rgba
+ });
+ gsplat = transformer.modify(gsplat);
+ return { gsplat };
+ },
+ {
+ globals: () => [defineGsplat]
+ }
+ ),
+ update: ({ time }) => {
+ dynoTime.value = time;
+ transformer.update(generator);
+ generator.updateVersion();
+ }
+ });
+ const transformer = new SplatTransformer();
+ return generator;
+}
+const DEFAULT_SNOW = {
+ box: new THREE__namespace.Box3(
+ new THREE__namespace.Vector3(-1, -1, -1),
+ new THREE__namespace.Vector3(1, 1, 1)
+ ),
+ density: 100,
+ fallDirection: new THREE__namespace.Vector3(-1, -3, 1).normalize(),
+ fallVelocity: 0.02,
+ wanderScale: 0.04,
+ wanderVariance: 2,
+ color1: new THREE__namespace.Color(1, 1, 1),
+ color2: new THREE__namespace.Color(0.5, 0.5, 1),
+ minScale: 1e-3,
+ maxScale: 5e-3,
+ anisoScale: new THREE__namespace.Vector3(1, 1, 1)
+};
+const DEFAULT_RAIN = {
+ box: new THREE__namespace.Box3(
+ new THREE__namespace.Vector3(-2, -1, -2),
+ new THREE__namespace.Vector3(2, 5, 2)
+ ),
+ density: 10,
+ fallDirection: new THREE__namespace.Vector3(0, -1, 0),
+ fallVelocity: 2,
+ wanderScale: 0.1,
+ wanderVariance: 1,
+ color1: new THREE__namespace.Color(1, 1, 1),
+ color2: new THREE__namespace.Color(0.25, 0.25, 0.5),
+ minScale: 5e-3,
+ maxScale: 0.01,
+ anisoScale: new THREE__namespace.Vector3(0.1, 1, 0.1)
+};
+function snowBox({
+ // min and max box extents of the snowBox
+ box,
+ // minimum y-coordinate to clamp particle position, which can be used to
+ // fake hitting a ground plane and lingering there for a bit
+ minY,
+ // number of Gsplats to generate (default: calculated from box and density)
+ numSplats,
+ // density of Gsplats per unit volume (default: 100)
+ density,
+ // The xyz anisotropic scale of the Gsplat, which can be used for example
+ // to elongate rain particles (default: (1, 1, 1))
+ anisoScale,
+ // Minimum Gsplat particle scale (default: 0.001)
+ minScale,
+ // Maximum Gsplat particle scale (default: 0.005)
+ maxScale,
+ // The average direction of fall (default: (0, -1, 0))
+ fallDirection,
+ // The average speed of the fall (multiplied with fallDirection) (default: 0.02)
+ fallVelocity,
+ // The world scale of wandering overlay motion (default: 0.01)
+ wanderScale,
+ // Controls how uniformly the particles wander in sync, more variance mean
+ // more randomness in the motion (default: 2)
+ wanderVariance,
+ // Color 1 of the two colors interpolated between (default: (1, 1, 1))
+ color1,
+ // Color 2 of the two colors interpolated between (default: (0.5, 0.5, 1))
+ color2,
+ // The base opacity of the Gsplats (default: 1)
+ opacity,
+ // Optional callback function to call each frame.
+ onFrame
+}) {
+ box = box ?? new THREE__namespace.Box3(new THREE__namespace.Vector3(-1, -1, -1), new THREE__namespace.Vector3(1, 1, 1));
+ const volume = (box.max.x - box.min.x) * (box.max.y - box.min.y) * (box.max.z - box.min.z);
+ density = density ?? 100;
+ numSplats = numSplats ?? Math.max(1, Math.min(1e6, Math.round(volume * density)));
+ const dynoMinScale = dynoFloat(minScale ?? 1e-3);
+ const dynoMaxScale = dynoFloat(maxScale ?? 5e-3);
+ const dynoAnisoScale = dynoVec3(
+ ((anisoScale == null ? void 0 : anisoScale.clone()) ?? new THREE__namespace.Vector3(1, 1, 1)).normalize()
+ );
+ const dynoFallDirection = dynoVec3(
+ (fallDirection ?? new THREE__namespace.Vector3(0, -1, 0)).normalize()
+ );
+ const dynoFallVelocity = dynoFloat(fallVelocity ?? 0.02);
+ const dynoWanderScale = dynoFloat(wanderScale ?? 0.01);
+ const dynoWanderVariance = dynoFloat(wanderVariance ?? 2);
+ const dynoColor1 = dynoVec3(color1 ?? new THREE__namespace.Color(1, 1, 1));
+ const dynoColor2 = dynoVec3(color2 ?? new THREE__namespace.Color(0.5, 0.5, 1));
+ const dynoOpacity = dynoFloat(opacity ?? 1);
+ const dynoTime = dynoFloat(0);
+ const globalOffset = dynoVec3(new THREE__namespace.Vector3(0, 0, 0));
+ const dynoMin = dynoVec3(box.min);
+ const dynoMax = dynoVec3(box.max);
+ const dynoMinY = dynoFloat(minY ?? Number.NEGATIVE_INFINITY);
+ const minMax = sub(dynoMax, dynoMin);
+ const snow = new SplatGenerator({
+ numSplats,
+ generator: dynoBlock(
+ { index: "int" },
+ { gsplat: Gsplat },
+ ({ index }) => {
+ if (!index) {
+ throw new Error("index not defined");
+ }
+ const random = hashVec4(index);
+ const randomW = split(random).outputs.w;
+ let position = vec3(random);
+ let size = fract(mul(randomW, dynoConst("float", 100)));
+ size = sin(mul(dynoLiteral("float", "PI"), size));
+ size = add(dynoMinScale, mul(size, sub(dynoMaxScale, dynoMinScale)));
+ const scales = mul(size, dynoAnisoScale);
+ const intensity = fract(mul(randomW, dynoConst("float", 10)));
+ const hue = fract(randomW);
+ const color = mix(dynoColor1, dynoColor2, hue);
+ const rgb = mul(color, intensity);
+ const random2 = hashVec4(
+ combine({
+ vectorType: "ivec2",
+ x: index,
+ y: dynoConst("int", 6837)
+ })
+ );
+ let perturb = vec3(random2);
+ let timeOffset = mul(split(random2).outputs.w, dynoWanderVariance);
+ timeOffset = add(dynoTime, timeOffset);
+ position = add(position, globalOffset);
+ const modulo = mod(
+ position,
+ dynoConst("vec3", new THREE__namespace.Vector3(1, 1, 1))
+ );
+ position = add(dynoMin, mul(minMax, modulo));
+ const quaternion = dynoConst("vec4", new THREE__namespace.Quaternion(0, 0, 0, 1));
+ perturb = sin(add(vec3(timeOffset), perturb));
+ perturb = mul(perturb, dynoWanderScale);
+ let center = add(position, perturb);
+ let centerY = split(center).outputs.y;
+ centerY = max(dynoMinY, centerY);
+ center = combine({ vector: center, y: centerY });
+ let gsplat = combineGsplat({
+ flags: dynoLiteral("uint", "GSPLAT_FLAG_ACTIVE"),
+ index,
+ center,
+ scales,
+ quaternion,
+ rgb,
+ opacity: dynoOpacity
+ });
+ gsplat = transformer.modify(gsplat);
+ return { gsplat };
+ },
+ {
+ globals: () => [defineGsplat]
+ }
+ ),
+ update: ({ object, time, deltaTime }) => {
+ dynoTime.value = time;
+ transformer.update(snow);
+ const fallDelta = dynoFallDirection.value.clone().multiplyScalar(dynoFallVelocity.value * deltaTime);
+ globalOffset.value.add(fallDelta);
+ object.visible = dynoOpacity.value > 0;
+ onFrame == null ? void 0 : onFrame({ object, time, deltaTime });
+ snow.updateVersion();
+ }
+ });
+ const transformer = new SplatTransformer();
+ return {
+ snow,
+ min: dynoMin,
+ max: dynoMax,
+ minY: dynoMinY,
+ color1: dynoColor1,
+ color2: dynoColor2,
+ opacity: dynoOpacity,
+ fallVelocity: dynoFallVelocity,
+ wanderVariance: dynoWanderVariance,
+ wanderScale: dynoWanderScale,
+ fallDirection: dynoFallDirection,
+ minScale: dynoMinScale,
+ maxScale: dynoMaxScale,
+ anisoScale: dynoAnisoScale
+ };
+}
+const generators = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
+ __proto__: null,
+ DEFAULT_RAIN,
+ DEFAULT_SNOW,
+ snowBox,
+ staticBox
+}, Symbol.toStringTag, { value: "Module" }));
+const _VRButton = class _VRButton {
+ static createButton(renderer, sessionInit = {}) {
+ const navigatorXr = navigator.xr;
+ if (!navigatorXr) {
+ return null;
+ }
+ const xr = navigatorXr;
+ const button = document.createElement("button");
+ renderer.xr.enabled = true;
+ renderer.xr.setReferenceSpaceType("local");
+ function showEnterVR() {
+ let currentSession = null;
+ async function onSessionStarted(session) {
+ console.log("onSessionStarted");
+ session.addEventListener("end", onSessionEnded);
+ await renderer.xr.setSession(session);
+ button.textContent = "EXIT VR";
+ currentSession = session;
+ }
+ function onSessionEnded() {
+ console.log("onSessionEnded");
+ currentSession == null ? void 0 : currentSession.removeEventListener("end", onSessionEnded);
+ button.textContent = "ENTER VR";
+ currentSession = null;
+ }
+ button.style.display = "";
+ button.style.cursor = "pointer";
+ button.style.left = "calc(50% - 100px)";
+ button.style.width = "200px";
+ button.style.height = "100px";
+ button.textContent = "ENTER VR";
+ const sessionOptions = {
+ ...sessionInit,
+ optionalFeatures: [
+ // "local-floor",
+ // "bounded-floor",
+ // "layers",
+ ...sessionInit.optionalFeatures || []
+ ]
+ };
+ button.onmouseenter = () => {
+ button.style.opacity = "1.0";
+ };
+ button.onmouseleave = () => {
+ button.style.opacity = "0.5";
+ };
+ button.onclick = () => {
+ if (currentSession === null) {
+ console.log("requesting session");
+ xr.requestSession("immersive-vr", sessionOptions).then(
+ onSessionStarted
+ );
+ } else {
+ console.log("ending session");
+ currentSession.end();
+ }
+ };
+ }
+ function disableButton() {
+ button.style.display = "none";
+ button.style.cursor = "auto";
+ button.style.left = "calc(50% - 75px)";
+ button.style.width = "150px";
+ button.onmouseenter = null;
+ button.onmouseleave = null;
+ button.onclick = null;
+ }
+ function showWebXRNotFound() {
+ disableButton();
+ button.textContent = "VR NOT SUPPORTED";
+ }
+ function showVRNotAllowed(exception) {
+ disableButton();
+ console.warn(
+ "Exception when trying to call xr.isSessionSupported",
+ exception
+ );
+ button.textContent = "VR NOT ALLOWED";
+ }
+ function stylizeElement(element) {
+ element.style.position = "absolute";
+ element.style.bottom = "20px";
+ element.style.padding = "12px 6px";
+ element.style.border = "1px solid #fff";
+ element.style.borderRadius = "4px";
+ element.style.background = "rgba(0,0,0,0.1)";
+ element.style.color = "#fff";
+ element.style.font = "normal 13px sans-serif";
+ element.style.textAlign = "center";
+ element.style.opacity = "0.5";
+ element.style.outline = "none";
+ element.style.zIndex = "999";
+ }
+ button.id = "VRButton";
+ button.style.display = "none";
+ stylizeElement(button);
+ xr.isSessionSupported("immersive-vr").then((supported) => {
+ supported ? showEnterVR() : showWebXRNotFound();
+ if (supported && _VRButton.xrSessionIsGranted) {
+ button.click();
+ }
+ }).catch(showVRNotAllowed);
+ return button;
+ }
+ static registerSessionGrantedListener() {
+ const navigatorXr = navigator.xr;
+ if (!navigatorXr) {
+ return null;
+ }
+ const xr = navigatorXr;
+ if (/WebXRViewer\//i.test(navigator.userAgent)) return;
+ xr.addEventListener("sessiongranted", () => {
+ _VRButton.xrSessionIsGranted = true;
+ });
+ }
+};
+_VRButton.xrSessionIsGranted = false;
+let VRButton = _VRButton;
+VRButton.registerSessionGrantedListener();
+const DEFAULT_MOVE_INERTIA$1 = 0.5;
+const DEFAULT_ROTATE_INERTIA$1 = 0.5;
+const TOUCH_BIAS = 0;
+var JointEnum = /* @__PURE__ */ ((JointEnum2) => {
+ JointEnum2["w"] = "wrist";
+ JointEnum2["t0"] = "thumb-metacarpal";
+ JointEnum2["t1"] = "thumb-phalanx-proximal";
+ JointEnum2["t2"] = "thumb-phalanx-distal";
+ JointEnum2["t3"] = "thumb-tip";
+ JointEnum2["i0"] = "index-finger-metacarpal";
+ JointEnum2["i1"] = "index-finger-phalanx-proximal";
+ JointEnum2["i2"] = "index-finger-phalanx-intermediate";
+ JointEnum2["i3"] = "index-finger-phalanx-distal";
+ JointEnum2["i4"] = "index-finger-tip";
+ JointEnum2["m0"] = "middle-finger-metacarpal";
+ JointEnum2["m1"] = "middle-finger-phalanx-proximal";
+ JointEnum2["m2"] = "middle-finger-phalanx-intermediate";
+ JointEnum2["m3"] = "middle-finger-phalanx-distal";
+ JointEnum2["m4"] = "middle-finger-tip";
+ JointEnum2["r0"] = "ring-finger-metacarpal";
+ JointEnum2["r1"] = "ring-finger-phalanx-proximal";
+ JointEnum2["r2"] = "ring-finger-phalanx-intermediate";
+ JointEnum2["r3"] = "ring-finger-phalanx-distal";
+ JointEnum2["r4"] = "ring-finger-tip";
+ JointEnum2["p0"] = "pinky-finger-metacarpal";
+ JointEnum2["p1"] = "pinky-finger-phalanx-proximal";
+ JointEnum2["p2"] = "pinky-finger-phalanx-intermediate";
+ JointEnum2["p3"] = "pinky-finger-phalanx-distal";
+ JointEnum2["p4"] = "pinky-finger-tip";
+ return JointEnum2;
+})(JointEnum || {});
+const JOINT_IDS = Object.keys(JointEnum);
+const NUM_JOINTS = JOINT_IDS.length;
+const JOINT_INDEX = {
+ w: 0,
+ t0: 1,
+ t1: 2,
+ t2: 3,
+ t3: 4,
+ i0: 5,
+ i1: 6,
+ i2: 7,
+ i3: 8,
+ i4: 9,
+ m0: 10,
+ m1: 11,
+ m2: 12,
+ m3: 13,
+ m4: 14,
+ r0: 15,
+ r1: 16,
+ r2: 17,
+ r3: 18,
+ r4: 19,
+ p0: 20,
+ p1: 21,
+ p2: 22,
+ p3: 23,
+ p4: 24
+};
+const JOINT_RADIUS = {
+ w: 0.02,
+ t0: 0.02,
+ t1: 0.014,
+ t2: 0.0115,
+ t3: 85e-4,
+ i0: 0.022,
+ i1: 0.012,
+ i2: 85e-4,
+ i3: 75e-4,
+ i4: 65e-4,
+ m0: 0.021,
+ m1: 0.012,
+ m2: 8e-3,
+ m3: 75e-4,
+ m4: 65e-4,
+ r0: 0.019,
+ r1: 0.011,
+ r2: 75e-4,
+ r3: 7e-3,
+ r4: 6e-3,
+ p0: 0.012,
+ p1: 0.01,
+ p2: 7e-3,
+ p3: 65e-4,
+ p4: 55e-4
+};
+const JOINT_SEGMENTS = [
+ ["w", "t0", "t1", "t2", "t3"],
+ ["w", "i0", "i1", "i2", "i3", "i4"],
+ ["w", "m0", "m1", "m2", "m3", "m4"],
+ ["w", "r0", "r1", "r2", "r3", "r4"],
+ ["w", "p0", "p1", "p2", "p3", "p4"]
+];
+const JOINT_SEGMENT_STEPS = [
+ [8, 10, 8, 6],
+ [8, 19, 14, 8, 6],
+ [8, 19, 14, 8, 6],
+ [8, 19, 14, 8, 6],
+ [8, 19, 14, 8, 6]
+];
+const JOINT_TIPS = ["t3", "i4", "m4", "r4", "p4"];
+const FINGER_TIPS = ["i4", "m4", "r4", "p4"];
+var Hand = /* @__PURE__ */ ((Hand2) => {
+ Hand2["left"] = "left";
+ Hand2["right"] = "right";
+ return Hand2;
+})(Hand || {});
+const HANDS = Object.keys(Hand);
+class XrHands {
+ constructor() {
+ this.hands = {};
+ this.last = {};
+ this.values = {};
+ this.tests = {};
+ this.lastTests = {};
+ this.updated = false;
+ }
+ update({ xr, xrFrame }) {
+ const xrSession = xr.getSession();
+ if (!xrSession) {
+ return;
+ }
+ const referenceSpace = xr.getReferenceSpace();
+ if (!referenceSpace) {
+ return;
+ }
+ if (!xrFrame.getJointPose) {
+ return;
+ }
+ this.last = this.hands;
+ this.lastTests = this.tests;
+ this.hands = {};
+ this.values = {};
+ this.tests = {};
+ for (const inputSource of xrSession.inputSources) {
+ if (!inputSource.hand) {
+ continue;
+ }
+ const hand = inputSource.handedness;
+ this.hands[hand] = {};
+ for (const jointId of JOINT_IDS) {
+ const jointSpace = inputSource.hand.get(JointEnum[jointId]);
+ if (jointSpace) {
+ const jointPose = xrFrame.getJointPose(jointSpace, referenceSpace);
+ if (jointPose) {
+ const { position, orientation } = jointPose.transform;
+ this.hands[hand][jointId] = {
+ position: new THREE.Vector3(position.x, position.y, position.z),
+ quaternion: new THREE.Quaternion(
+ orientation.x,
+ orientation.y,
+ orientation.z,
+ orientation.w
+ ),
+ radius: jointPose.radius || 1e-3
+ };
+ }
+ }
+ }
+ }
+ for (const hand of HANDS) {
+ for (const { key, value } of [
+ { key: `${hand}AllTips`, value: this.allTipsTouching(hand) },
+ {
+ key: `${hand}IndexThumb`,
+ value: this.touching(hand, "i4", hand, "t3")
+ },
+ {
+ key: `${hand}MiddleThumb`,
+ value: this.touching(hand, "m4", hand, "t3")
+ },
+ {
+ key: `${hand}RingThumb`,
+ value: this.touching(hand, "r4", hand, "t3")
+ },
+ {
+ key: `${hand}PinkyThumb`,
+ value: this.touching(hand, "p4", hand, "t3")
+ },
+ { key: `${hand}TriTips`, value: this.triTipsTouching(hand) }
+ ]) {
+ this.values[key] = value;
+ this.tests[key] = value === 1 ? true : value === 0 ? false : this.lastTests[key] ?? false;
+ }
+ }
+ }
+ makeGhostMesh() {
+ const center = new THREE.Vector3();
+ const scales = new THREE.Vector3(0.01, 0.01, 0.01);
+ const quaternion = new THREE.Quaternion(0, 0, 0, 1);
+ const color = new THREE.Color(1, 1, 1);
+ const CYCLE = Math.PI * 3;
+ const WHITE = new THREE.Color(1, 1, 1);
+ let opacity = 1;
+ const mesh = new SplatMesh({
+ onFrame: () => {
+ let splatIndex = 0;
+ for (const handedness of HANDS) {
+ const active = this.values[`${handedness}MiddleThumb`];
+ const xrHand = this.hands[handedness];
+ for (const [index, segment] of JOINT_SEGMENTS.entries()) {
+ for (let i = 1; i < segment.length; ++i) {
+ const segmentSplats = JOINT_SEGMENT_STEPS[index][i - 1] * 2;
+ const lastSegment = i + 1 === segment.length;
+ const jointA = xrHand == null ? void 0 : xrHand[segment[i - 1]];
+ const jointB = xrHand == null ? void 0 : xrHand[segment[i]];
+ for (let j = 0; j < segmentSplats; ++j) {
+ const t = (j + 0.5) / segmentSplats;
+ opacity = 0;
+ if (jointA && jointB) {
+ center.copy(jointA.position).lerp(jointB.position, t);
+ quaternion.copy(jointA.quaternion).slerp(jointB.quaternion, t);
+ const radiusA = JOINT_RADIUS[segment[i - 1]];
+ const radiusB = JOINT_RADIUS[segment[i]];
+ let radius = (1 - t) * radiusA + t * radiusB;
+ if (lastSegment && t > 0.8) {
+ radius *= Math.sqrt(1 - ((t - 0.8) / 0.2) ** 2);
+ }
+ scales.set(0.65 * radius, 0.5 * radius, 3e-3);
+ color.set(
+ 0.55 + 0.45 * Math.sin(center.x * CYCLE),
+ 0.55 + 0.45 * Math.sin(center.y * CYCLE),
+ 0.55 + 0.45 * Math.sin(center.z * CYCLE)
+ );
+ if (handedness === "right") {
+ color.set(1 - color.r, 1 - color.g, 1 - color.b);
+ }
+ color.lerp(WHITE, active);
+ opacity = 0.75;
+ }
+ mesh.packedSplats.setSplat(
+ splatIndex,
+ center,
+ scales,
+ quaternion,
+ opacity,
+ color
+ );
+ splatIndex += 1;
+ }
+ }
+ }
+ }
+ mesh.packedSplats.numSplats = splatIndex;
+ mesh.packedSplats.needsUpdate = true;
+ mesh.numSplats = splatIndex;
+ }
+ });
+ return mesh;
+ }
+ distance(handA, jointA, handB, jointB, last = false) {
+ const hA = last ? this.last[handA] : this.hands[handA];
+ const hB = last ? this.last[handB] : this.hands[handB];
+ const jA = hA == null ? void 0 : hA[jointA];
+ const jB = hB == null ? void 0 : hB[jointB];
+ if (!jA || !jB) {
+ return Number.POSITIVE_INFINITY;
+ }
+ return jA.position.distanceTo(jB.position);
+ }
+ separation(handA, jointA, handB, jointB, last = false) {
+ const d = this.distance(handA, jointA, handB, jointB, last);
+ if (d === Number.POSITIVE_INFINITY) {
+ return Number.POSITIVE_INFINITY;
+ }
+ return d - JOINT_RADIUS[jointA] - JOINT_RADIUS[jointB];
+ }
+ touching(handA, jointA, handB, jointB, last = false) {
+ const d = this.separation(handA, jointA, handB, jointB, last);
+ if (d === Number.POSITIVE_INFINITY) {
+ return Number.POSITIVE_INFINITY;
+ }
+ return 1 - Math.max(0, Math.min(1, d / 0.01 - TOUCH_BIAS));
+ }
+ allTipsTouching(hand, last = false) {
+ return Math.min(
+ this.touching(hand, "t3", hand, "i4", last),
+ this.touching(hand, "i4", hand, "m4", last),
+ this.touching(hand, "m4", hand, "r4", last),
+ this.touching(hand, "r4", hand, "p4", last)
+ // this.touching(hand, "p4", hand, "t3", last),
+ );
+ }
+ triTipsTouching(hand, last = false) {
+ return Math.min(
+ this.touching(hand, "t3", hand, "i4", last),
+ this.touching(hand, "i4", hand, "m4", last),
+ this.touching(hand, "m4", hand, "t3", last)
+ );
+ }
+}
+class HandMovement {
+ constructor({
+ xrHands,
+ control,
+ moveInertia,
+ rotateInertia
+ }) {
+ this.lastGrip = {};
+ this.lastPivot = new THREE.Vector3();
+ this.rotateVelocity = 0;
+ this.velocity = new THREE.Vector3();
+ this.xrHands = xrHands;
+ this.control = control;
+ this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA$1;
+ this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA$1;
+ }
+ update(deltaTime) {
+ var _a2, _b2, _c, _d, _e;
+ const grip = {};
+ for (const handedness of HANDS) {
+ const hand = this.xrHands.hands[handedness];
+ if (hand && this.xrHands.tests[`${handedness}MiddleThumb`]) {
+ grip[handedness] = new THREE.Vector3().add(((_a2 = hand.t3) == null ? void 0 : _a2.position) ?? new THREE.Vector3()).add(((_b2 = hand.i4) == null ? void 0 : _b2.position) ?? new THREE.Vector3()).add(((_c = hand.m4) == null ? void 0 : _c.position) ?? new THREE.Vector3()).add(((_d = hand.r4) == null ? void 0 : _d.position) ?? new THREE.Vector3()).add(((_e = hand.p4) == null ? void 0 : _e.position) ?? new THREE.Vector3()).multiplyScalar(1 / 5);
+ }
+ }
+ if (grip.left && grip.right && this.lastGrip.left && this.lastGrip.right) {
+ const mid = grip.left.clone().add(grip.right).multiplyScalar(0.5);
+ const lastMid = this.lastGrip.left.clone().add(this.lastGrip.right).multiplyScalar(0.5);
+ this.lastPivot = mid;
+ const delta = mid.clone().applyMatrix4(this.control.matrix);
+ delta.sub(lastMid.clone().applyMatrix4(this.control.matrix));
+ delta.multiplyScalar(1 / deltaTime);
+ this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));
+ const angle = Math.atan2(grip.left.z - mid.z, grip.left.x - mid.x);
+ const lastAngle = Math.atan2(
+ this.lastGrip.left.z - lastMid.z,
+ this.lastGrip.left.x - lastMid.x
+ );
+ let closestAngle = angle - lastAngle;
+ if (closestAngle > Math.PI) {
+ closestAngle -= Math.PI * 2;
+ } else if (closestAngle < -Math.PI) {
+ closestAngle += Math.PI * 2;
+ }
+ const rotateVelocity = closestAngle / deltaTime;
+ const blend = Math.exp(-20 * deltaTime);
+ this.rotateVelocity = this.rotateVelocity * blend + rotateVelocity * (1 - blend);
+ } else {
+ this.rotateVelocity *= Math.exp(-deltaTime / this.rotateInertia);
+ if (grip.left && this.lastGrip.left) {
+ const delta = grip.left.clone().applyMatrix4(this.control.matrix);
+ delta.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix));
+ delta.multiplyScalar(1 / deltaTime);
+ this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));
+ } else if (grip.right && this.lastGrip.right) {
+ const delta = grip.right.clone().applyMatrix4(this.control.matrix);
+ delta.sub(
+ this.lastGrip.right.clone().applyMatrix4(this.control.matrix)
+ );
+ delta.multiplyScalar(1 / deltaTime);
+ this.velocity.lerp(delta, 1 - Math.exp(-20 * deltaTime));
+ } else {
+ this.velocity.multiplyScalar(Math.exp(-deltaTime / this.moveInertia));
+ }
+ }
+ const negPivot = this.lastPivot.clone().negate();
+ const rotate = new THREE.Matrix4().makeTranslation(negPivot).premultiply(new THREE.Matrix4().makeRotationY(this.rotateVelocity * deltaTime)).premultiply(new THREE.Matrix4().makeTranslation(this.lastPivot));
+ this.control.matrix.multiply(rotate);
+ this.control.matrix.decompose(
+ this.control.position,
+ this.control.quaternion,
+ this.control.scale
+ );
+ this.control.updateMatrixWorld(true);
+ this.control.position.sub(this.velocity.clone().multiplyScalar(deltaTime));
+ this.lastGrip = grip;
+ }
+}
+const DEFAULT_MOVEMENT_SPEED = 1;
+const DEFAULT_ROLL_SPEED = 2;
+const DEFAULT_ROTATE_SPEED = 2e-3;
+const DEFAULT_SLIDE_SPEED = 6e-3;
+const DEFAULT_SCROLL_SPEED = 15e-4;
+const DEFAULT_ROTATE_INERTIA = 0.15;
+const DEFAULT_MOVE_INERTIA = 0.15;
+const DEFAULT_STICK_THRESHOLD = 0.1;
+const DEFAULT_FPS_ROTATE_SPEED = 2;
+const DUAL_PRESS_MS = 200;
+const DOUBLE_PRESS_LIMIT_MS = 400;
+const DOUBLE_PRESS_DISTANCE = 50;
+const WASD_KEYCODE_MOVE = {
+ KeyW: new THREE__namespace.Vector3(0, 0, -1),
+ KeyS: new THREE__namespace.Vector3(0, 0, 1),
+ KeyA: new THREE__namespace.Vector3(-1, 0, 0),
+ KeyD: new THREE__namespace.Vector3(1, 0, 0),
+ KeyR: new THREE__namespace.Vector3(0, 1, 0),
+ KeyF: new THREE__namespace.Vector3(0, -1, 0)
+};
+const ARROW_KEYCODE_MOVE = {
+ ArrowUp: new THREE__namespace.Vector3(0, 0, -1),
+ ArrowDown: new THREE__namespace.Vector3(0, 0, 1),
+ ArrowLeft: new THREE__namespace.Vector3(-1, 0, 0),
+ ArrowRight: new THREE__namespace.Vector3(1, 0, 0),
+ PageUp: new THREE__namespace.Vector3(0, 1, 0),
+ PageDown: new THREE__namespace.Vector3(0, -1, 0)
+};
+const QE_KEYCODE_ROTATE = {
+ KeyQ: new THREE__namespace.Vector3(0, 0, 1),
+ KeyE: new THREE__namespace.Vector3(0, 0, -1)
+};
+const ARROW_KEYCODE_ROTATE = {
+ Home: new THREE__namespace.Vector3(0, -1, 0),
+ End: new THREE__namespace.Vector3(0, 1, 0),
+ Insert: new THREE__namespace.Vector3(-1, 0, 0),
+ Delete: new THREE__namespace.Vector3(1, 0, 0)
+};
+class ForgeControls {
+ constructor({ canvas }) {
+ this.lastTime = 0;
+ this.fpsMovement = new FpsMovement({});
+ this.pointerControls = new PointerControls({ canvas });
+ }
+ update(control) {
+ const time = performance.now();
+ const deltaTime = (time - (this.lastTime || time)) / 1e3;
+ this.lastTime = time;
+ this.fpsMovement.update(deltaTime, control);
+ this.pointerControls.update(deltaTime, control);
+ }
+}
+class FpsMovement {
+ constructor({
+ moveSpeed,
+ rollSpeed,
+ stickThreshold,
+ rotateSpeed,
+ keycodeMoveMapping,
+ keycodeRotateMapping,
+ gamepadMapping,
+ capsMultiplier,
+ shiftMultiplier,
+ ctrlMultiplier,
+ xr
+ } = {}) {
+ this.enable = true;
+ this.moveSpeed = moveSpeed ?? DEFAULT_MOVEMENT_SPEED;
+ this.rollSpeed = rollSpeed ?? DEFAULT_ROLL_SPEED;
+ this.stickThreshold = stickThreshold ?? DEFAULT_STICK_THRESHOLD;
+ this.rotateSpeed = rotateSpeed ?? DEFAULT_FPS_ROTATE_SPEED;
+ this.keycodeMoveMapping = keycodeMoveMapping ?? {
+ ...WASD_KEYCODE_MOVE,
+ ...ARROW_KEYCODE_MOVE
+ };
+ this.keycodeRotateMapping = keycodeRotateMapping ?? {
+ ...QE_KEYCODE_ROTATE,
+ ...ARROW_KEYCODE_ROTATE
+ };
+ this.gamepadMapping = gamepadMapping ?? {
+ 4: "rollLeft",
+ 5: "rollRight",
+ 6: "ctrl",
+ 7: "shift"
+ };
+ this.capsMultiplier = capsMultiplier ?? 10;
+ this.shiftMultiplier = shiftMultiplier ?? 5;
+ this.ctrlMultiplier = ctrlMultiplier ?? 1 / 5;
+ this.xr = xr;
+ this.keydown = {};
+ this.keycode = {};
+ document.addEventListener("keydown", (event) => {
+ this.keydown[event.key] = true;
+ this.keycode[event.code] = true;
+ });
+ document.addEventListener("keyup", (event) => {
+ this.keydown[event.key] = false;
+ this.keycode[event.code] = false;
+ });
+ }
+ // Call this method in your render loop with `control` set to the object to control
+ // (`THREE.Camera` or a `THREE.Object3D` that contains it), with `deltaTime`
+ // in seconds since the last update.
+ update(deltaTime, control) {
+ var _a2, _b2;
+ if (!this.enable) {
+ return;
+ }
+ const sticks = [new THREE__namespace.Vector2(), new THREE__namespace.Vector2()];
+ const gamepad = navigator.getGamepads()[0];
+ if (gamepad) {
+ sticks[0].set(gamepad.axes[0], gamepad.axes[1]);
+ sticks[1].set(gamepad.axes[2], gamepad.axes[3]);
+ }
+ const gamepadButtons = (gamepad == null ? void 0 : gamepad.buttons.map((button) => button.pressed)) || [];
+ const xrSources = Array.from(((_b2 = (_a2 = this.xr) == null ? void 0 : _a2.getSession()) == null ? void 0 : _b2.inputSources) ?? []);
+ for (const source of xrSources) {
+ const gamepad2 = source.gamepad;
+ if (gamepad2) {
+ switch (source.handedness) {
+ case "none": {
+ sticks[0].x += gamepad2.axes[0];
+ sticks[0].y += gamepad2.axes[1];
+ sticks[1].x += gamepad2.axes[2];
+ sticks[1].y += gamepad2.axes[3];
+ break;
+ }
+ case "left": {
+ sticks[0].x += gamepad2.axes[2];
+ sticks[0].y += gamepad2.axes[3];
+ break;
+ }
+ case "right": {
+ sticks[1].x += gamepad2.axes[2];
+ sticks[1].y += gamepad2.axes[3];
+ break;
+ }
+ }
+ }
+ }
+ for (const stick of sticks) {
+ stick.x = Math.abs(stick.x) >= this.stickThreshold ? stick.x : 0;
+ stick.y = Math.abs(stick.y) >= this.stickThreshold ? stick.y : 0;
+ }
+ const rotate = new THREE__namespace.Vector3(
+ sticks[1].x,
+ sticks[1].y,
+ 0
+ ).multiplyScalar(this.rotateSpeed);
+ for (const [keycode, rot] of Object.entries(this.keycodeRotateMapping)) {
+ if (this.keycode[keycode]) {
+ rotate.add(rot);
+ }
+ }
+ for (const button in this.gamepadMapping) {
+ if (gamepadButtons[Number.parseInt(button)]) {
+ switch (this.gamepadMapping[button]) {
+ case "rollLeft":
+ rotate.z += 1;
+ break;
+ case "rollRight":
+ rotate.z -= 1;
+ break;
+ }
+ }
+ }
+ rotate.multiply(
+ new THREE__namespace.Vector3(this.rotateSpeed, this.rotateSpeed, this.rollSpeed)
+ );
+ if (rotate.manhattanLength() > 0) {
+ rotate.multiplyScalar(deltaTime);
+ const eulers = new THREE__namespace.Euler().setFromQuaternion(
+ control.quaternion,
+ "YXZ"
+ );
+ eulers.y -= rotate.x;
+ eulers.x = Math.max(
+ -Math.PI / 2,
+ Math.min(Math.PI / 2, eulers.x - rotate.y)
+ );
+ eulers.z = Math.max(-Math.PI, Math.min(Math.PI, eulers.z + rotate.z));
+ control.quaternion.setFromEuler(eulers);
+ }
+ const moveVector = new THREE__namespace.Vector3(sticks[0].x, 0, sticks[0].y);
+ for (const [keycode, move] of Object.entries(this.keycodeMoveMapping)) {
+ if (this.keycode[keycode]) {
+ moveVector.add(move);
+ }
+ }
+ let speedMultiplier = 1;
+ if (this.keydown.CapsLock) {
+ speedMultiplier *= this.capsMultiplier;
+ }
+ if (this.keycode.ShiftLeft || this.keycode.ShiftRight) {
+ speedMultiplier *= this.shiftMultiplier;
+ }
+ if (this.keycode.ControlLeft || this.keycode.ControlRight) {
+ speedMultiplier *= this.ctrlMultiplier;
+ }
+ for (const button in this.gamepadMapping) {
+ if (gamepadButtons[Number.parseInt(button)]) {
+ switch (this.gamepadMapping[button]) {
+ case "shift":
+ speedMultiplier *= this.shiftMultiplier;
+ break;
+ case "ctrl":
+ speedMultiplier *= this.ctrlMultiplier;
+ break;
+ }
+ }
+ }
+ moveVector.applyQuaternion(control.quaternion);
+ control.position.add(
+ moveVector.multiplyScalar(this.moveSpeed * speedMultiplier * deltaTime)
+ );
+ }
+}
+class PointerControls {
+ constructor({
+ // The HTML canvas element to attach pointer events to
+ canvas,
+ // Speed of rotation (default DEFAULT_ROTATE_SPEED)
+ rotateSpeed,
+ // Speed of sliding when dragging with right/middle mouse button or two fingers
+ // (default DEFAULT_SLIDE_SPEED)
+ slideSpeed,
+ // Speed of movement when using mouse scroll wheel (default DEFAULT_SCROLL_SPEED)
+ scrollSpeed,
+ // Reverse the direction of rotation (default: false)
+ reverseRotate,
+ // Reverse the direction of sliding (default: false)
+ reverseSlide,
+ // Reverse the direction of swipe gestures (default: false)
+ reverseSwipe,
+ // Reverse the direction of scroll wheel movement (default: false)
+ reverseScroll,
+ // Inertia factor for movement (default: DEFAULT_MOVE_INERTIA)
+ moveInertia,
+ // Inertia factor for rotation (default: DEFAULT_ROTATE_INERTIA)
+ rotateInertia,
+ // Callback for double press events (default: () => {})
+ doublePress
+ }) {
+ this.enable = true;
+ this.canvas = canvas;
+ this.rotateSpeed = rotateSpeed ?? DEFAULT_ROTATE_SPEED;
+ this.slideSpeed = slideSpeed ?? DEFAULT_SLIDE_SPEED;
+ this.scrollSpeed = scrollSpeed ?? DEFAULT_SCROLL_SPEED;
+ this.reverseRotate = reverseRotate ?? false;
+ this.reverseSlide = reverseSlide ?? false;
+ this.reverseSwipe = reverseSwipe ?? false;
+ this.reverseScroll = reverseScroll ?? false;
+ this.moveInertia = moveInertia ?? DEFAULT_MOVE_INERTIA;
+ this.rotateInertia = rotateInertia ?? DEFAULT_ROTATE_INERTIA;
+ this.doublePress = doublePress ?? (() => {
+ });
+ this.doublePressLimitMs = DOUBLE_PRESS_LIMIT_MS;
+ this.doublePressDistance = DOUBLE_PRESS_DISTANCE;
+ this.lastUp = null;
+ this.rotating = null;
+ this.sliding = null;
+ this.dualPress = false;
+ this.scroll = new THREE__namespace.Vector3();
+ this.rotateVelocity = new THREE__namespace.Vector3();
+ this.moveVelocity = new THREE__namespace.Vector3();
+ canvas.addEventListener("pointerdown", (event) => {
+ const position = this.getPointerPosition(event);
+ const initial = position.clone();
+ const last = position.clone();
+ const isRotate = !this.rotating && (event.pointerType !== "mouse" || event.button === 0);
+ const { pointerId, timeStamp } = event;
+ if (isRotate) {
+ this.rotating = { initial, last, position, pointerId, timeStamp };
+ canvas.setPointerCapture(event.pointerId);
+ this.dualPress = false;
+ } else if (!this.sliding) {
+ const button = event.pointerType === "mouse" ? event.button : void 0;
+ this.sliding = {
+ initial,
+ last,
+ position,
+ pointerId,
+ button,
+ timeStamp
+ };
+ canvas.setPointerCapture(event.pointerId);
+ this.dualPress = this.rotating != null && timeStamp - this.rotating.timeStamp < DUAL_PRESS_MS;
+ }
+ });
+ const pointerUp = (event) => {
+ var _a2, _b2;
+ if (((_a2 = this.rotating) == null ? void 0 : _a2.pointerId) === event.pointerId) {
+ this.rotating = null;
+ canvas.releasePointerCapture(event.pointerId);
+ if (this.dualPress && this.sliding) {
+ canvas.releasePointerCapture(this.sliding.pointerId);
+ this.sliding = null;
+ }
+ } else if (((_b2 = this.sliding) == null ? void 0 : _b2.pointerId) === event.pointerId) {
+ this.sliding = null;
+ canvas.releasePointerCapture(event.pointerId);
+ if (this.dualPress && this.rotating) {
+ canvas.releasePointerCapture(this.rotating.pointerId);
+ this.rotating = null;
+ }
+ }
+ const position = this.getPointerPosition(event);
+ const lastUp = this.lastUp;
+ this.lastUp = { position, time: event.timeStamp };
+ if (lastUp) {
+ const distance2 = lastUp.position.distanceTo(position);
+ if (distance2 < this.doublePressDistance) {
+ const intervalMs = event.timeStamp - lastUp.time;
+ if (intervalMs < this.doublePressLimitMs) {
+ this.lastUp = null;
+ this.doublePress({ position, intervalMs });
+ }
+ }
+ }
+ };
+ document.addEventListener("pointerup", pointerUp);
+ document.addEventListener("pointercancel", pointerUp);
+ document.addEventListener("pointermove", (event) => {
+ var _a2, _b2;
+ if (((_a2 = this.rotating) == null ? void 0 : _a2.pointerId) === event.pointerId) {
+ this.rotating.position = this.getPointerPosition(event);
+ } else if (((_b2 = this.sliding) == null ? void 0 : _b2.pointerId) === event.pointerId) {
+ this.sliding.position = this.getPointerPosition(event);
+ }
+ });
+ canvas.addEventListener("contextmenu", (event) => {
+ event.preventDefault();
+ });
+ canvas.addEventListener("wheel", (event) => {
+ this.scroll.add(
+ new THREE__namespace.Vector3(event.deltaX, event.deltaY, event.deltaZ)
+ );
+ event.preventDefault();
+ });
+ }
+ getPointerPosition(event) {
+ const rect = this.canvas.getBoundingClientRect();
+ return new THREE__namespace.Vector2(
+ event.clientX - rect.left,
+ event.clientY - rect.top
+ );
+ }
+ update(deltaTime, control) {
+ if (!this.enable) {
+ return;
+ }
+ if (this.dualPress && this.rotating && this.sliding) {
+ const motion = [
+ this.rotating.position.clone().sub(this.rotating.last),
+ this.sliding.position.clone().sub(this.sliding.last)
+ ];
+ const coincidence = motion[0].dot(motion[1]);
+ if (coincidence >= 0.2) {
+ const totalMotion = motion[0].clone().add(motion[1]);
+ const slide = new THREE__namespace.Vector3(totalMotion.x, -totalMotion.y, 0);
+ slide.multiplyScalar(this.slideSpeed * (this.reverseSwipe ? 1 : -1));
+ slide.applyQuaternion(control.quaternion);
+ control.position.add(slide);
+ this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);
+ } else if (coincidence <= -0.2) {
+ const deltaDir = this.sliding.last.clone().sub(this.rotating.last);
+ const deltaDist = deltaDir.length();
+ deltaDir.multiplyScalar(1 / deltaDist).normalize();
+ const orthoDir = new THREE__namespace.Vector2(-deltaDir.y, deltaDir.x);
+ const motionDir = [motion[0].dot(deltaDir), motion[1].dot(deltaDir)];
+ const motionOrtho = [motion[0].dot(orthoDir), motion[1].dot(orthoDir)];
+ const midpoint = this.rotating.last.clone().add(this.sliding.last).multiplyScalar(0.5);
+ let midpointDir = new THREE__namespace.Vector3();
+ if (control instanceof THREE__namespace.Camera) {
+ const ndcMidpoint = new THREE__namespace.Vector2(
+ midpoint.x / this.canvas.clientWidth * 2 - 1,
+ -(midpoint.y / this.canvas.clientHeight) * 2 + 1
+ );
+ const raycaster = new THREE__namespace.Raycaster();
+ raycaster.setFromCamera(ndcMidpoint, control);
+ midpointDir = raycaster.ray.direction;
+ }
+ const pinchOut = motionDir[1] - motionDir[0];
+ const slide = midpointDir.multiplyScalar(pinchOut * this.slideSpeed);
+ control.position.add(slide);
+ this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);
+ const angles = [
+ Math.atan(motionOrtho[0] / (-0.5 * deltaDist)),
+ Math.atan(motionOrtho[1] / (0.5 * deltaDist))
+ ];
+ const rotate = 0.5 * (angles[0] + angles[1]);
+ const eulers = new THREE__namespace.Euler().setFromQuaternion(
+ control.quaternion,
+ "YXZ"
+ );
+ eulers.z = Math.max(
+ -Math.PI,
+ Math.min(Math.PI, eulers.z + 0.5 * rotate)
+ );
+ control.quaternion.setFromEuler(eulers);
+ }
+ this.rotating.last.copy(this.rotating.position);
+ this.sliding.last.copy(this.sliding.position);
+ } else {
+ const rotate = new THREE__namespace.Vector3();
+ if (this.rotating && !this.dualPress) {
+ const delta = this.rotating.position.clone().sub(this.rotating.last);
+ this.rotating.last.copy(this.rotating.position);
+ rotate.set(delta.x, delta.y, 0);
+ rotate.multiplyScalar(this.rotateSpeed * (this.reverseRotate ? -1 : 1));
+ this.rotateVelocity = rotate.clone().multiplyScalar(1 / deltaTime);
+ } else {
+ this.rotateVelocity.multiplyScalar(
+ Math.exp(-deltaTime / this.rotateInertia)
+ );
+ rotate.addScaledVector(this.rotateVelocity, deltaTime);
+ }
+ const eulers = new THREE__namespace.Euler().setFromQuaternion(
+ control.quaternion,
+ "YXZ"
+ );
+ eulers.y -= rotate.x;
+ eulers.x = Math.max(
+ -Math.PI / 2,
+ Math.min(Math.PI / 2, eulers.x - rotate.y)
+ );
+ eulers.z *= Math.exp(-0 * deltaTime);
+ control.quaternion.setFromEuler(eulers);
+ if (this.sliding && !this.dualPress) {
+ const delta = this.sliding.position.clone().sub(this.sliding.last);
+ this.sliding.last.copy(this.sliding.position);
+ const slide = this.sliding.button !== 2 ? new THREE__namespace.Vector3(delta.x, 0, delta.y) : new THREE__namespace.Vector3(delta.x, -delta.y, 0);
+ slide.multiplyScalar(this.slideSpeed * (this.reverseSlide ? -1 : 1));
+ slide.applyQuaternion(control.quaternion);
+ control.position.add(slide);
+ this.moveVelocity = slide.clone().multiplyScalar(1 / deltaTime);
+ } else {
+ this.moveVelocity.multiplyScalar(
+ Math.exp(-deltaTime / this.moveInertia)
+ );
+ control.position.addScaledVector(this.moveVelocity, deltaTime);
+ }
+ }
+ const scroll = this.scroll.multiplyScalar(this.scrollSpeed);
+ scroll.set(scroll.x, scroll.z, scroll.y);
+ if (this.reverseScroll) {
+ scroll.multiplyScalar(-1);
+ }
+ scroll.applyQuaternion(control.quaternion);
+ control.position.add(scroll);
+ this.scroll.set(0, 0, 0);
+ }
+}
+exports.FINGER_TIPS = FINGER_TIPS;
+exports.ForgeControls = ForgeControls;
+exports.ForgeRenderer = ForgeRenderer;
+exports.ForgeViewpoint = ForgeViewpoint;
+exports.FpsMovement = FpsMovement;
+exports.HANDS = HANDS;
+exports.Hand = Hand;
+exports.HandMovement = HandMovement;
+exports.JOINT_IDS = JOINT_IDS;
+exports.JOINT_INDEX = JOINT_INDEX;
+exports.JOINT_RADIUS = JOINT_RADIUS;
+exports.JOINT_SEGMENTS = JOINT_SEGMENTS;
+exports.JOINT_SEGMENT_STEPS = JOINT_SEGMENT_STEPS;
+exports.JOINT_TIPS = JOINT_TIPS;
+exports.JointEnum = JointEnum;
+exports.NUM_JOINTS = NUM_JOINTS;
+exports.PackedSplats = PackedSplats;
+exports.PlyReader = PlyReader;
+exports.PointerControls = PointerControls;
+exports.Readback = Readback;
+exports.Sint8ToFloat = Sint8ToFloat;
+exports.SplatAccumulator = SplatAccumulator;
+exports.SplatEdit = SplatEdit;
+exports.SplatEditRgbaBlendMode = SplatEditRgbaBlendMode;
+exports.SplatEditSdf = SplatEditSdf;
+exports.SplatEditSdfType = SplatEditSdfType;
+exports.SplatEdits = SplatEdits;
+exports.SplatFileType = SplatFileType;
+exports.SplatGenerator = SplatGenerator;
+exports.SplatLoader = SplatLoader;
+exports.SplatMesh = SplatMesh;
+exports.SplatModifier = SplatModifier;
+exports.SplatSkinning = SplatSkinning;
+exports.SplatTransformer = SplatTransformer;
+exports.SpzReader = SpzReader;
+exports.Uint8ToFloat = Uint8ToFloat;
+exports.VRButton = VRButton;
+exports.XrHands = XrHands;
+exports.constructAxes = constructAxes;
+exports.constructGrid = constructGrid;
+exports.constructSpherePoints = constructSpherePoints;
+exports.dyno = dyno;
+exports.flipPixels = flipPixels;
+exports.floatToSint8 = floatToSint8;
+exports.floatToUint8 = floatToUint8;
+exports.fromHalf = fromHalf;
+exports.generators = generators;
+exports.getSplatFileType = getSplatFileType;
+exports.imageSplats = imageSplats;
+exports.isAndroid = isAndroid;
+exports.isMobile = isMobile;
+exports.isOculus = isOculus;
+exports.pixelsToPngUrl = pixelsToPngUrl;
+exports.setPackedSplat = setPackedSplat;
+exports.textSplats = textSplats;
+exports.toHalf = toHalf;
+exports.unpackSplat = unpackSplat;
+exports.unpackSplats = unpackSplats;
+exports.utils = utils;
diff --git a/dist/forge.cjs.min.js b/dist/forge.cjs.min.js
new file mode 100644
index 0000000..4802c5e
--- /dev/null
+++ b/dist/forge.cjs.min.js
@@ -0,0 +1,1086 @@
+"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("three");var wI=typeof document<"u"?document.currentScript:null;function Vt(Q){const A=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(Q){for(const I in Q)if(I!=="default"){const g=Object.getOwnPropertyDescriptor(Q,I);Object.defineProperty(A,I,g.get?g:{enumerable:!0,get:()=>Q[I]})}}return A.default=Q,Object.freeze(A)}const e=Vt(j);let aA;function Tt(Q){const A=aA.__externref_table_alloc();return aA.__wbindgen_export_2.set(A,Q),A}function vt(Q,A){try{return Q.apply(this,A)}catch(I){const g=Tt(I);aA.__wbindgen_exn_store(g)}}function lI(Q){const A=typeof Q;if(A=="number"||A=="boolean"||Q==null)return`${Q}`;if(A=="string")return`"${Q}"`;if(A=="symbol"){const B=Q.description;return B==null?"Symbol":`Symbol(${B})`}if(A=="function"){const B=Q.name;return typeof B=="string"&&B.length>0?`Function(${B})`:"Function"}if(Array.isArray(Q)){const B=Q.length;let C="[";B>0&&(C+=lI(Q[0]));for(let E=1;E1)g=I[1];else return toString.call(Q);if(g=="Object")try{return"Object("+JSON.stringify(Q)+")"}catch{return"Object"}return Q instanceof Error?`${Q.name}: ${Q.message}
+${Q.stack}`:g}let MI=0,MQ=null;function OQ(){return(MQ===null||MQ.byteLength===0)&&(MQ=new Uint8Array(aA.memory.buffer)),MQ}const PQ=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},Xt=typeof PQ.encodeInto=="function"?function(Q,A){return PQ.encodeInto(Q,A)}:function(Q,A){const I=PQ.encode(Q);return A.set(I),{read:Q.length,written:I.length}};function jt(Q,A,I){if(I===void 0){const t=PQ.encode(Q),s=A(t.length,1)>>>0;return OQ().subarray(s,s+t.length).set(t),MI=t.length,s}let g=Q.length,B=A(g,1)>>>0;const C=OQ();let E=0;for(;E127)break;C[B+E]=t}if(E!==g){E!==0&&(Q=Q.slice(E)),B=I(B,g,g=E+Q.length*3,1)>>>0;const t=OQ().subarray(B+E,B+g),s=Xt(Q,t);E+=s.written,B=I(B,g,E,1)>>>0}return MI=E,B}let AQ=null;function qI(){return(AQ===null||AQ.buffer.detached===!0||AQ.buffer.detached===void 0&&AQ.buffer!==aA.memory.buffer)&&(AQ=new DataView(aA.memory.buffer)),AQ}const _I=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&_I.decode();function WI(Q,A){return Q=Q>>>0,_I.decode(OQ().subarray(Q,Q+A))}function zt(Q,A,I,g,B,C,E,t,s,o,a){return aA.raycast_splats(Q,A,I,g,B,C,E,t,s,o,a)}async function Ot(Q,A){if(typeof Response=="function"&&Q instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(Q,A)}catch(g){if(Q.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",g);else throw g}const I=await Q.arrayBuffer();return await WebAssembly.instantiate(I,A)}else{const I=await WebAssembly.instantiate(Q,A);return I instanceof WebAssembly.Instance?{instance:I,module:Q}:I}}function Pt(){const Q={};return Q.wbg={},Q.wbg.__wbg_buffer_09165b52af8c5237=function(A){return A.buffer},Q.wbg.__wbg_buffer_609cc3eee51ed158=function(A){return A.buffer},Q.wbg.__wbg_get_b9b93047fe3cf45b=function(A,I){return A[I>>>0]},Q.wbg.__wbg_instanceof_Uint8Array_17156bcf118086a9=function(A){let I;try{I=A instanceof Uint8Array}catch{I=!1}return I},Q.wbg.__wbg_length_3b4f022188ae8db6=function(A){return A.length},Q.wbg.__wbg_length_6ca527665d89694d=function(A){return A.length},Q.wbg.__wbg_length_8cfd2c6409af88ad=function(A){return A.length},Q.wbg.__wbg_length_a446193dc22c12f8=function(A){return A.length},Q.wbg.__wbg_length_e2d2a49132c1b256=function(A){return A.length},Q.wbg.__wbg_new_405e22f390576ce2=function(){return new Object},Q.wbg.__wbg_new_9fee97a409b32b68=function(A){return new Uint16Array(A)},Q.wbg.__wbg_new_a12002a7f91c75be=function(A){return new Uint8Array(A)},Q.wbg.__wbg_new_e3b321dcfef89fc7=function(A){return new Uint32Array(A)},Q.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(A,I,g){return new Float32Array(A,I>>>0,g>>>0)},Q.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(A,I,g){return new Uint32Array(A,I>>>0,g>>>0)},Q.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(A){return new Float32Array(A>>>0)},Q.wbg.__wbg_newwithlength_bd3de93688d68fbc=function(A){return new Uint32Array(A>>>0)},Q.wbg.__wbg_set_10bad9bee0e9c58b=function(A,I,g){A.set(I,g>>>0)},Q.wbg.__wbg_set_65595bdd868b3009=function(A,I,g){A.set(I,g>>>0)},Q.wbg.__wbg_set_bb8cecf6a62b9f46=function(){return vt(function(A,I,g){return Reflect.set(A,I,g)},arguments)},Q.wbg.__wbg_set_d23661d19148b229=function(A,I,g){A.set(I,g>>>0)},Q.wbg.__wbg_set_f4f1f0daa30696fc=function(A,I,g){A.set(I,g>>>0)},Q.wbg.__wbg_subarray_3aaeec89bb2544f0=function(A,I,g){return A.subarray(I>>>0,g>>>0)},Q.wbg.__wbg_subarray_769e1e0f81bb259b=function(A,I,g){return A.subarray(I>>>0,g>>>0)},Q.wbg.__wbindgen_debug_string=function(A,I){const g=lI(I),B=jt(g,aA.__wbindgen_malloc,aA.__wbindgen_realloc),C=MI;qI().setInt32(A+4*1,C,!0),qI().setInt32(A+4*0,B,!0)},Q.wbg.__wbindgen_init_externref_table=function(){const A=aA.__wbindgen_export_2,I=A.grow(4);A.set(0,void 0),A.set(I+0,void 0),A.set(I+1,null),A.set(I+2,!0),A.set(I+3,!1)},Q.wbg.__wbindgen_memory=function(){return aA.memory},Q.wbg.__wbindgen_number_new=function(A){return A},Q.wbg.__wbindgen_string_new=function(A,I){return WI(A,I)},Q.wbg.__wbindgen_throw=function(A,I){throw new Error(WI(A,I))},Q}function _t(Q,A){return aA=Q.exports,$I.__wbindgen_wasm_module=A,AQ=null,MQ=null,aA.__wbindgen_start(),aA}async function $I(Q){if(aA!==void 0)return aA;typeof Q<"u"&&(Object.getPrototypeOf(Q)===Object.prototype?{module_or_path:Q}=Q:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof Q>"u"&&(Q=new URL("data:application/wasm;base64,AGFzbQEAAAABtgItYAJ/fwF/YAJ/fwBgA39/fwF/YAF/AGABfwF/YAN/f38AYAV/f39/fwBgBH9/f38AYAFvAX9gAW8Bb2ADb39/AW9gBX9/f39/AX9gA29vfwBgAABgA39+fgBgA39+fgF/YAd/f39/f39/AX9gBn9/f39/fwBgAX0BfWAEf39/fwF/YAABb2ABfwFvYAZ/f39/f38Bf2AAAX9gC39/f39/f39/f39/AX9gAn9/AW9gAXwBb2ACb38Bb2ADb29vAX9gAn9vAGAHf39/f39/fwBgAn9/AX5gAn9+AX9gAn9+AGALfX19fX19fX1/b38Bb2ABfwF9YAV/f35/fwBgBH9+f38AYAV/f31/fwBgBH99f38AYAV/f3x/fwBgBH98f38AYAR/f29vAX9gA39vbwF/YAJ9fQF9ArcIHgN3YmcVX193YmluZGdlbl9zdHJpbmdfbmV3ABkDd2JnFV9fd2JpbmRnZW5fbnVtYmVyX25ldwAaA3diZxpfX3diZ19nZXRfYjliOTMwNDdmZTNjZjQ1YgAbA3diZx1fX3diZ19sZW5ndGhfZTJkMmE0OTEzMmMxYjI1NgAIA3diZxpfX3diZ19uZXdfNDA1ZTIyZjM5MDU3NmNlMgAUA3diZx1fX3diZ19idWZmZXJfNjA5Y2MzZWVlNTFlZDE1OAAJA3diZxpfX3diZ19uZXdfYTEyMDAyYTdmOTFjNzViZQAJA3diZxpfX3diZ19zZXRfNjU1OTViZGQ4NjhiMzAwOQAMA3diZx1fX3diZ19sZW5ndGhfYTQ0NjE5M2RjMjJjMTJmOAAIA3diZxpfX3diZ19uZXdfOWZlZTk3YTQwOWIzMmI2OAAJA3diZxpfX3diZ19zZXRfZjRmMWYwZGFhMzA2OTZmYwAMA3diZx1fX3diZ19sZW5ndGhfOGNmZDJjNjQwOWFmODhhZAAIA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9mMWRlYWQ0NGQxZmM3MjEyAAoDd2JnGl9fd2JnX25ld19lM2IzMjFkY2ZlZjg5ZmM3AAkDd2JnGl9fd2JnX3NldF9kMjM2NjFkMTkxNDhiMjI5AAwDd2JnHV9fd2JnX2xlbmd0aF82Y2E1Mjc2NjVkODk2OTRkAAgDd2JnMV9fd2JnX25ld3dpdGhi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CwJAIAAoAhAiAkUNAEGousIAQQggAhDVBEUNAEEBDAILIAFBATsBJCABIAQ2AiAgAUEANgIcIAFBAToAGCABQd8ANgIUIAEgBDYCECABQQA2AgwgASAENgIIIAEgAzYCBCABQd8ANgIAIAFBKGogARBQAn8gASgCKEUEQAJAIAEtACUNACABQQE6ACUCQCABLQAkQQFGBEAgASgCICEFIAEoAhwhBAwBCyABKAIgIgUgASgCHCIERg0BCyABKAIEIARqIQMgBSAEawwCC0GwusIAEK4EAAsgASgCHCEEIAEgASgCMDYCHCADIARqIQMgASgCLCAEawshBAJAIAIEQCADIAQgAhDVBA0BCyABQcgAaiABQSBqKQIANwMAIAFBQGsgAUEYaikCADcDACABQThqIAFBEGopAgA3AwAgAUEwaiABQQhqKQIANwMAIAEgASkCADcDKAJAIAEtAE0NACACIQMDQCABKAIsIQUgAUHUAGogAUEoahBQAn8gASgCVEUEQCABLQBNDQMgAUEBOgBNAkAgAS0ATEEBRgRAIAEoAkghBSABKAJEIQQMAQsgASgCSCIFIAEoAkQiBEYNBAsgASgCLCAEaiEGIAUgBGsMAQsgASgCRCEEIAEgASgCXDYCRCAEIAVqIQYgASgCWCAEawshBAJAIANFBEBBACEDDAELQbm2wgBBASADENUEDQMgACgCECICRQRAQQAhAkEAIQMMAQsgAiEDIAYgBCACENUEDQMLIAEtAE1FDQALCyACRQ0BQcC6wgBBAiACENUERQ0BC0EBDAELAkAgACgCECICRQ0AQcK6wgBBAyACENUERQ0AQQEMAQsCQAJAAkAgACgCACIDRQRAQQAhAwwBC0EAIQIDQAJAIAAoAggiBCAAKAIETw0AIAMgBGotAABBxQBHDQAgACAEQQFqNgIIDAILAkAgAkUNACAAKAIQIgNFDQBB9bnCAEECIAMQ1QRFDQBBAQwFCyAAECcNAiACQQFrIQIgACgCACIDDQALQQAhAwsgACgCECIEBEBBAUH1s8IAQQEgBBDVBA0DGiAAKAIAIQMLIANFDQEgACgCCCICIAAoAgRPDQEgAiADai0AAEH1AEcNASAAIAJBAWo2AghBAAwCC0EBDAELAkAgACgCECICRQ0AQcW6wgBBBCACENUERQ0AQQEMAQsgABAnCyAB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AWogBiARGyADa2whAwwDCyABIApBjIHCABCtAgALQZyBwgBBKUHIgcIAEO0CAAtBoP/BAEEXQZyAwgAQ7QIACyAPIAZBAWo2AgAgAkEEaiAJOgAAIAIgAzYCACACQQhqIQIgBCAFQQFqIgVHDQALCyAAQYWAgIB4NgIADwsgBUEBaiEFIAMoAgAhCSADQQRqIQMgCUEATA0ACyAFQQFrIQxBACEDA0ACQCACIAZJBEAgA0EBaiEDIAsgAkEDdGogDDoABQNAIAIgDWogDnEiAiAETw0ACwwBCyACIAZB2IHCABCtAgALIAMgCUcNAAsMAAsAC9IHAQN/AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCgAHBwECAwQHBwUHCwJAAkACQAJAAkACQCAALQAEDgcADAEMAgMEDAsgAC0ACEEDRw0LIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQQgASADIAIoAggQpwQMBAsgAC0ACEEDRw0KIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQMgASADIAIoAggQpwQMAwsgAC0ACEEDRw0JIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQIgASADIAIoAggQpwQMAgsgAC0ACEEDRw0IIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQEgASADIAIoAggQpwQMAQsgAC0ACEEDRw0HIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQAgASADIAIoAggQpwQLIABBDEEEEKcEDwsCQAJAIAAtAAQOAgcBAAsgACgCCCIBQfv///8HaiICQQ1NIAJBAkdxDQYgAUGEgICAeEoNBSABQYOAgIB4Rw0GDAULIAAoAggiAUGEgICAeEogAUGDgICAeEZyDQQMBQsgAC0ABEEDRw0EDAULAkACQEEDIAAoAgQiAUEHayICIAJBA08bQQJrDgIBAAULAkACQAJAIAEOBgAHAQcHAgcLIAAtAAhBA0cNBgwICyAAKAIIIgFB7f///wdqIgJBCk0gAkEDR3ENBSABRSABQfv///8H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wQA2AgggAkIBNwIUIAIgAkEEaq1CgICAgJA4hDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwICyACIAA2AgQgAkEBNgIMIAJB8KfBADYCCCACQgE3AhQgAiACQQRqrUKAgICAoDeENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAcLIAIgAEEEajYCBCACQQE2AgwgAkHwp8EANgIIIAJCATcCFCACIAJBBGqtQoCAgICgOIQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEUMBgsgASgCHEHFusEAQTkgASgCICgCDBECAAwFCyACIABBBGo2AgQgAkECNgIMIAJBqLvBADYCCCACQgE3AhQgAiACQQRqrUKAgICA8DWENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAQLIAIgAEEEajYCACACIABBCGo2AgQgAkEDNgIMIAJB6LvBADYCCCACQgI3AhQgAkKAgICA8DUiBCACrYQ3AyggAiAEIAJBBGqthDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwDCyACIABBBGo2AgQgAkECNgIMIAJB8LzBADYCCCACQgE3AhQgAiACQQRqrUKAgICAsDiENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAILIAIgAEEEajYCACACIABBCGo2AgQgAkECNgIMIAJBsL3BADYCCCACQgI3AhQgAkKAgICAwDgiBCACQQRqrYQ3AyggAiAEIAKthDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwBCyACIABBBGo2AgAgAiAAQQhqNgIEIAJBAjYCDCACQfS9wQA2AgggAkICNwIUIAJCgICAgPA1IgQgAkEEaq2ENwMoIAIgBCACrYQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEULIAJBMGokAAuXBgEIfyMAQTBrIgEkAAJAAn8CQAJAAkAgACgCACIFBEAgACgCCCIEIAQgACgCBCIHIAQgB0sbayEIIAUhAwNAIAIgCGpFDQMgACACIARqQQFqNgIIIAJBAWohAiADIARqIANBAWohAy0AACIGQTBrQf8BcUEKSSAGQeEAa0H/AXFBBklyDQALIAZB3wBHDQIgAiAEakEBayEGAkAgBARAIAQgB08EQCAGIAdLDQgMAgsgBiAHSw0HIAQgBWosAABBv39KDQEMBwsgBiAHSw0GCyACQQFrIgJBAXFFBEAgAUKAgICAIDcCGCABIAMgBGpBAWsiAzYCFCABIAI2AhAgASAEIAVqIgU2AgwDQCABQQxqECYiBEGAgMQASQ0ACyAEQYGAxABGDQILIAAoAhAiA0UNA0HEucIAQRAgAxDVBEUNA0EBDAQLQQAgACgCECIARQ0DGkHtucIAQQEgABDVBAwDC0EAIAAoAhAiAEUNAhpBASAAQSIQ6wMNAhogAUKAgICAIDcCGCABIAM2AhQgASACNgIQIAEgBTYCDCABQQxqECYiAkGBgMQARwRAIAFBKGohBANAAkACQAJAAkAgAkGAgMQARwRAIAJBJ0YNASABQSBqIAIQPCABLQAgQYABRw0CQYABIQMDQAJAIANBgAFHBEAgAS0AKiIFIAEtACtPDQcgASAFQQFqOgAqIAFBIGogBWotAAAhAgwBC0EAIQMgBEEANgIAIAEoAiQhAiABQgA3AyALIAAgAhDrA0UNAAsMAwtBgLDCAEErIAFBIGpB8K/CAEHQrsIAEKACAAsgAEEnEOsDRQ0CDAELIAEtACoiAiABLQArIgMgAiADSxshAwNAIAIgA0YNAiABQSBqIAJqIQUgAkEBaiECIAAgBS0AABDrA0UNAAsLQQEMBQsgAUEMahAmIgJBgYDEAEcNAAsLIABBIhDrAwwCCyAAKAIQIgNFDQBBxLnCAEEQIAMQ1QRFDQBBAQwBCyAAQQA6AAQgAEEANgIAQQALIAFBMGokAA8LIAUgByAEIAZB9LjCABDsAwALrQUCBn8CfiAFQf8BcSIKIQcCQCABKAIQIgkgAS0AFCIGaiIIQQBKBEACQCAHIAhNBEAgCUEATCAGIApPcg0BA0AgCUEBayIIQQN2IQdBwAAgBkEHaiILQXhxayEFAkAgCEE/TQRAIAEgByAFEIgBIAEoAhAhCSABLQAUIQYMAQsCQCABKAIEIgggByALQfgBcUEDdmpBB2siB08EQCAIIAdrIghBB0sNAUEIIAhBxN7BABCrBAALIAcgCEHU3sEAEKoEAAsgASAFIAZqIgY6ABQgASAJIAVB/wFxayIJNgIQIAEgASgCACAHaikAADcDCAsgBkH/AXEgCk8NAiAJQQBKDQALDAELAn5CACACQf8BcSIFRQ0AGiAFIAZNBEAgASAGIAJrIgU6ABRCfyACrYZCf4UgASkDCCAFQT9xrYiDDAELIAEgAhBbCyENAkAgA0H/AXEiBUUNACAFIAEtABQiAksEQCABIAMQWyEMDAELIAEgAiADayICOgAUQn8gA62GQn+FIAEpAwggAkE/ca2IgyEMCyAAAn5CACAEQf8BcSICRQ0AGiACIAEtABQiA00EQCABIAMgBGsiAjoAFEJ/IASthkJ/hSABKQMIIAJBP3GtiIMMAQsgASAEEFsLNwMQDAILIAJB/wFxBH4gASAGIAJrIgY6ABRCfyACrYZCf4UgASkDCCAGQT9xrYiDBUIACyENIANB/wFxBEAgASAGIANrIgY6ABRCfyADrYZCf4UgASkDCCAGQT9xrYiDIQwLIAAgBEH/AXEEfiABIAYgBGsiAjoAFEJ/IASthkJ/hSABKQMIIAJBP3GtiIMFQgALNwMQDAELIABCADcDACABIAkgB2s2AhAgAEEIakIANwMAIABBEGpCADcDAA8LIAAgDDcDCCAAIA03AwAL7AUBB38CfyABRQRAIAAoAhQhCEEtIQogBUEBagwBC0ErQYCAxAAgACgCFCIIQQFxIgEbIQogASAFagshBwJAIAhBBHFFBEBBACECDAELIANBEE8EQCACIAMQLyAHaiEHDAELIANFDQAgA0EDcSEJAkAgA0EESQRAQQAhAQwBCyADQQxxIQxBACEBA0AgASACIAZqIgssAABBv39KaiALQQFqLAAAQb9/SmogC0ECaiwAAEG/f0pqIAtBA2osAABBv39KaiEBIAwgBkEEaiIGRw0ACwsgCQRAIAIgBmohBgNAIAEgBiwAAEG/f0pqIQEgBkEBaiEGIAlBAWsiCQ0ACwsgASAHaiEHCyAAKAIARQRAIAAoAhwiASAAKAIgIgAgCiACIAMQ/QIEQEEBDwsgASAEIAUgACgCDBECAA8LAkACQAJAIAcgACgCBCIGTwRAIAAoAhwiASAAKAIgIgAgCiACIAMQ/QJFDQFBAQ8LIAhBCHFFDQEgACgCECELIABBMDYCECAALQAYIQxBASEBIABBAToAGCAAKAIcIgggACgCICIJIAogAiADEP0CDQIgBiAHa0EBaiEBAkADQCABQQFrIgFFDQEgCEEwIAkoAhARAABFDQALQQEPCyAIIAQgBSAJKAIMEQIABEBBAQ8LIAAgDDoAGCAAIAs2AhBBAA8LIAEgBCAFIAAoAgwRAgAhAQwBCyAGIAdrIQcCQAJAAkBBASAALQAYIgEgAUEDRhsiAUEBaw4CAAECCyAHIQFBACEHDAELIAdBAXYhASAHQQFqQQF2IQcLIAFBAWohASAAKAIQIQggACgCICEGIAAoAhwhAAJAA0AgAUEBayIBRQ0BIAAgCCAGKAIQEQAARQ0AC0EBDwtBASEBIAAgBiAKIAIgAxD9Ag0AIAAgBCAFIAYoAgwRAgANAEEAIQEDQCABIAdGBEBBAA8LIAFBAWohASAAIAggBigCEBEAAEUNAAsgAUEBayAHSQ8LIAELrgUBB38CQCAAKAIAIgkgACgCCCIEcgRAAkAgBEEBcUUNACABIAJqIQcCQCAAKAIMIgZFBEAgASEEDAELIAEhBANAIAQiAyAHRg0CAn8gA0EBaiADLAAAIghBAE4NABogA0ECaiAIQWBJDQAaIANBA2ogCEFwSQ0AGiADQQRqCyIEIANrIAVqIQUgBkEBayIGDQALCyAEIAdGDQAgBCwAABogBSACAn8CQCAFRQ0AIAIgBU0EQCACIAVGDQFBAAwCCyABIAVqLAAAQUBODQBBAAwBCyABCyIDGyECIAMgASADGyEBCyAJRQ0BIAAoAgQhBwJAIAJBEE8EQCABIAIQLyEDDAELIAJFBEBBACEDDAELIAJBA3EhBgJAIAJBBEkEQEEAIQNBACEFDAELIAJBDHEhCEEAIQNBACEFA0AgAyABIAVqIgQsAABBv39KaiAEQQFqLAAAQb9/SmogBEECaiwAAEG/f0pqIARBA2osAABBv39KaiEDIAggBUEEaiIFRw0ACwsgBkUNACABIAVqIQQDQCADIAQsAABBv39KaiEDIARBAWohBCAGQQFrIgYNAAsLAkAgAyAHSQRAIAcgA2shBgJAAkACQCAALQAYIgRBACAEQQNHGyIDQQFrDgIAAQILIAYhA0EAIQYMAQsgBkEBdiEDIAZBAWpBAXYhBgsgA0EBaiEDIAAoAhAhBSAAKAIgIQQgACgCHCEAA0AgA0EBayIDRQ0CIAAgBSAEKAIQEQAARQ0AC0EBDwsMAgsgACABIAIgBCgCDBECAARAQQEPC0EAIQMDQCADIAZGBEBBAA8LIANBAWohAyAAIAUgBCgCEBEAAEUNAAsgA0EBayAGSQ8LIAAoAhwgASACIAAoAiAoAgwRAgAPCyAAKAIcIAEgAiAAKAIgKAIMEQIAC7gFAgh/AX4CQCABKAIIIgIgASgCBCIETw0AIAEoAgAgAmotAABB9QBHDQBBASEHIAEgAkEBaiICNgIICwJAAkAgAiAETw0BIAEoAgAiBSACai0AAEEwayIDQf8BcSIGQQlLDQEgASACQQFqIgI2AgggBkUEQEEAIQMMAQsgAiAEIAIgBEsbIQYgA0H/AXEhAwNAIAIgBkYNASACIAVqLQAAQTBrQf8BcSIIQQlLDQEgASACQQFqIgI2AgggA61CCn4iCkIgiFAEQCAIIAqnIghqIgMgCE8NAQsLDAELAkAgAiAETw0AIAIgBWotAABB3wBHDQAgASACQQFqIgI2AggLAkACQAJAAkAgAiACIANqIgZNBEAgASAGNgIIIAQgBkkNBSACRQ0CIAIgBEkNAQwCCwwECyACIAVqLAAAQb9/TA0BCyAGRSAEIAZNckUEQCAFIAZqLAAAQb9/TA0BCyACIAVqIQQgBw0BIABCATcCCCAAIAM2AgQgACAENgIADwsgBSAEIAIgBkGEucIAEOwDAAtBACEHQQAgA2shASAFIAZqIgZBAWshCEEAIQICQAJAAn8DQCABIAJGBEAgBCEBQQEMAgsgAiAIaiACQQFrIgUhAi0AAEHfAEcNAAsgAyAFaiEHAkACQEEAIANrIAVGDQAgAyAHTQRAIAUNBEEAIQIgA0F/cyAFRw0BDAILIAUgBmosAABBv39MDQMLIAMgB0EBaiIBTQRAIAMhAiAFQX9GDQEMBAsgBSAGakEBaiwAAEG/f0wNAyABIQILIAIgBGohASADIAJrIQMgBAshAiADRQRADAMLIAAgAzYCDCAAIAE2AgggACAHNgIEIAAgAjYCAA8LIAQgA0EAIAdBlLnCABDsAwALIAQgAyABIANBpLnCABDsAwALIABBADYCACAAQQA6AAQL4gUCB38CfiMAQSBrIgQkAAJ/AkACQCAAKAIAIgNFDQAgACgCCCICIAAoAgQiBU8NACACIANqIgEtAABBwgBGBEAgACACQQFqIgE2AggCQAJAAkACQAJAIAKtAn4CQCABIAVJBEAgASADai0AAEHfAEYNAQsgASAFIAEgBUsbIQcDQAJAIAEgBUkEQCABIANqLQAAQd8ARg0BCyABIAdGDQQCQCABIANqLQAAIgJBMGsiBkH/AXFBCkkNACACQeEAa0H/AXFBGk8EQCACQcEAa0H/AXFBGk8NBiACQR1rIQYMAQsgAkHXAGshBgsgACABQQFqIgE2AgggBCAIEJsCIAQpAwhCAFINBCAEKQMAIgkgBq1C/wGDfCIIIAlaDQEMBAsLIAAgAUEBajYCCCAIQn9RDQIgCEIBfAwBCyAAIAJBAmo2AghCAAsiCFgNAEEBIQEgACgCECECIAAoAgxBAWoiA0H0A0sNASACRQ0EIARBGGoiAiAAQQhqIgEpAgA3AwAgACADNgIMIAEgCD4CACAEIAApAgA3AxAgABA4IAEgAikDADcCACAAIAQpAxA3AgBB/wFxDAgLQQAhASAAKAIQIgJFDQJBxLnCAEEQIAIQ1QQNAQwCCyACRQ0BQdS5wgBBGSACENUERQ0BC0ECDAULIAAgAToABCAAQQA2AgALQQAMAwsgAS0AAEHJAEcNACAAIAJBAWo2AgggAEEAEB9FDQFBAgwCC0ECQQAgAEEAEB8bDAELAkAgACgCECIBRQ0AQfizwgBBASABENUERQ0AQQIMAQtBASAAKAIAIgFFDQAaQQAhAgJAA0ACQCAAKAIIIgMgACgCBE8NACABIANqLQAAQcUARw0AIAAgA0EBajYCCEEBDAMLAkAgAkUNACAAKAIQIgNFDQBBAkH1ucIAQQIgAxDVBA0DGgsgABBZDQEgAkEBayECIAAoAgAiAQ0AC0EBDAELQQILIARBIGokAAvPBgEDfyMAQSBrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABDigGAQEBAQEBAQECBAEBAwEBAQEBAQEBAQEBAQEBAQEBAQEBCAEBAQEHAAsgAUHcAEYNBAsgAkEBcUUgAUGABklyDQcgARBcRQ0HIANBADoACiADQQA7AQggAyABQRR2QfzAwgBqLQAAOgALIAMgAUEEdkEPcUH8wMIAai0AADoADyADIAFBCHZBD3FB/MDCAGotAAA6AA4gAyABQQx2QQ9xQfzAwgBqLQAAOgANIAMgAUEQdkEPcUH8wMIAai0AADoADCABQQFyZ0ECdiICIANBCGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgAkECayICakHcADoAACADQRBqIgQgAUEPcUH8wMIAai0AADoAACAAQQo6AAsgACACOgAKIAAgAykCCDcCACADQf0AOgARIABBCGogBC8BADsBAAwJCyAAQYAEOwEKIABCADcBAiAAQdzoATsBAAwICyAAQYAEOwEKIABCADcBAiAAQdzkATsBAAwHCyAAQYAEOwEKIABCADcBAiAAQdzcATsBAAwGCyAAQYAEOwEKIABCADcBAiAAQdy4ATsBAAwFCyAAQYAEOwEKIABCADcBAiAAQdzgADsBAAwECyACQYACcUUNASAAQYAEOwEKIABCADcBAiAAQdzOADsBAAwDCyACQYCABHENAQsgARC6AUUEQCADQQA6ABYgA0EAOwEUIAMgAUEUdkH8wMIAai0AADoAFyADIAFBBHZBD3FB/MDCAGotAAA6ABsgAyABQQh2QQ9xQfzAwgBqLQAAOgAaIAMgAUEMdkEPcUH8wMIAai0AADoAGSADIAFBEHZBD3FB/MDCAGotAAA6ABggAUEBcmdBAnYiAiADQRRqIgVqIgRB+wA6AAAgBEEBa0H1ADoAACAFIAJBAmsiAmpB3AA6AAAgA0EcaiIEIAFBD3FB/MDCAGotAAA6AAAgAEEKOgALIAAgAjoACiAAIAMpAhQ3AgAgA0H9ADoAHSAAQQhqIAQvAQA7AQAMAgsgACABNgIEIABBgAE6AAAMAQsgAEGABDsBCiAAQgA3AQIgAEHcxAA7AQALIANBIGokAAvpBQEBfyMAQTBrIgIkAAJ/AkACQAJAAkACQAJAAkACQCAALQAAQQFrDgcBAgMEBQYHAAsgAiAAQQRqNgIEIAJBATYCDCACQZSqwQA2AgggAkIBNwIUIAIgAkEEaq1CgICAgJA1hDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwHCyACIABBBGo2AgQgAkEBNgIMIAJBuKrBADYCCCACQgE3AhQgAiACQQRqrUKAgICAkDaENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAYLIAIgAEEEajYCBCACQQE2AgwgAkHoqsEANgIIIAJCATcCFCACIAJBBGqtQoCAgICQNYQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEUMBQsgAiAAQQFqNgIEIAJBATYCDCACQfCnwQA2AgggAkIBNwIUIAIgAkEEaq1CgICAgOA1hDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwECyACIABBBGo2AgQgAkEBNgIMIAJBmKvBADYCCCACQgE3AhQgAiACQQRqrUKAgICAkDWENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAMLIAIgAEEEajYCBCACQQE2AgwgAkHEq8EANgIIIAJCATcCFCACIAJBBGqtQoCAgICQNYQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEUMAgsgAiAAQQRqNgIEIAJBATYCDCACQfSrwQA2AgggAkIBNwIUIAIgAkEEaq1CgICAgJA1hDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwBCyACIABBBGo2AgAgAiAAQQhqNgIEIAJBAzYCDCACQbyswQA2AgggAkICNwIUIAIgAkEEaq1CgICAgIA2hDcDKCACIAKtQoCAgICQNoQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEULIAJBMGokAAuMBQEIfwJAIAJBEEkEQCAAIQMMAQsCQCAAQQAgAGtBA3EiBmoiBSAATQ0AIAAhAyABIQQgBgRAIAYhBwNAIAMgBC0AADoAACAEQQFqIQQgA0EBaiEDIAdBAWsiBw0ACwsgBkEBa0EHSQ0AA0AgAyAELQAAOgAAIANBAWogBEEBai0AADoAACADQQJqIARBAmotAAA6AAAgA0EDaiAEQQNqLQAAOgAAIANBBGogBEEEai0AADoAACADQQVqIARBBWotAAA6AAAgA0EGaiAEQQZqLQAAOgAAIANBB2ogBEEHai0AADoAACAEQQhqIQQgA0EIaiIDIAVHDQALCyAFIAIgBmsiB0F8cSIIaiEDAkAgASAGaiIEQQNxRQRAIAMgBU0NASAEIQEDQCAFIAEoAgA2AgAgAUEEaiEBIAVBBGoiBSADSQ0ACwwBCyADIAVNDQAgBEEDdCICQRhxIQYgBEF8cSIJQQRqIQFBACACa0EYcSEKIAkoAgAhAgNAIAUgAiAGdiABKAIAIgIgCnRyNgIAIAFBBGohASAFQQRqIgUgA0kNAAsLIAdBA3EhAiAEIAhqIQELAkAgAyACIANqIgZPDQAgAkEHcSIEBEADQCADIAEtAAA6AAAgAUEBaiEBIANBAWohAyAEQQFrIgQNAAsLIAJBAWtBB0kNAANAIAMgAS0AADoAACADQQFqIAFBAWotAAA6AAAgA0ECaiABQQJqLQAAOgAAIANBA2ogAUEDai0AADoAACADQQRqIAFBBGotAAA6AAAgA0EFaiABQQVqLQAAOgAAIANBBmogAUEGai0AADoAACADQQdqIAFBB2otAAA6AAAgAUEIaiEBIANBCGoiAyAGRw0ACwsgAAuzBgEEfyMAQSBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAIAEOKAAHBwcHBwcHBwEDBwcCBwcHBwcHBwcHBwcHBwcHBwcHBwcEBwcHBwUGCyAAQYAEOwEKIABCADcBAiAAQdzgADsBAAwICyAAQYAEOwEKIABCADcBAiAAQdzoATsBAAwHCyAAQYAEOwEKIABCADcBAiAAQdzkATsBAAwGCyAAQYAEOwEKIABCADcBAiAAQdzcATsBAAwFCyAAQYAEOwEKIABCADcBAiAAQdzEADsBAAwECyAAQYAEOwEKIABCADcBAiAAQdzOADsBAAwDCyABQdwARg0BCwJAIAFB/wVNDQAgARBcRQ0AIAJBADoACiACQQA7AQggAiABQRR2QeCvwgBqLQAAOgALIAIgAUEEdkEPcUHgr8IAai0AADoADyACIAFBCHZBD3FB4K/CAGotAAA6AA4gAiABQQx2QQ9xQeCvwgBqLQAAOgANIAIgAUEQdkEPcUHgr8IAai0AADoADCABQQFyZ0ECdiIDIAJBCGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgA0ECayIDakHcADoAACACQRBqIgQgAUEPcUHgr8IAai0AADoAACAAQQo6AAsgACADOgAKIAAgAikCCDcCACACQf0AOgARIABBCGogBC8BADsBAAwCCyABELoBRQRAIAJBADoAFiACQQA7ARQgAiABQRR2QeCvwgBqLQAAOgAXIAIgAUEEdkEPcUHgr8IAai0AADoAGyACIAFBCHZBD3FB4K/CAGotAAA6ABogAiABQQx2QQ9xQeCvwgBqLQAAOgAZIAIgAUEQdkEPcUHgr8IAai0AADoAGCABQQFyZ0ECdiIDIAJBFGoiBWoiBEH7ADoAACAEQQFrQfUAOgAAIAUgA0ECayIDakHcADoAACACQRxqIgQgAUEPcUHgr8IAai0AADoAACAAQQo6AAsgACADOgAKIAAgAikCFDcCACACQf0AOgAdIABBCGogBC8BADsBAAwCCyAAIAE2AgQgAEGAAToAAAwBCyAAQYAEOwEKIABCADcBAiAAQdy4ATsBAAsgAkEgaiQAC84FAgZ/An4CQCACRQ0AIAJBB2siA0EAIAIgA08bIQcgAUEDakF8cSABayEIQQAhAwNAAkACQAJAIAEgA2otAAAiBcAiBkEATgRAIAggA2tBA3ENASADIAdPDQIDQCABIANqIgQoAgQgBCgCAHJBgIGChHhxDQMgA0EIaiIDIAdJDQALDAILQoCAgICAICEKQoCAgIAQIQkCQAJAAn4CQAJAAkACQAJAAkACQAJAAkAgBUHfx8IAai0AAEECaw4DAAECCgsgA0EBaiIEIAJJDQJCACEKQgAhCQwJC0IAIQogA0EBaiIEIAJJDQJCACEJDAgLQgAhCiADQQFqIgQgAkkNAkIAIQkMBwsgASAEaiwAAEG/f0oNBgwHCyABIARqLAAAIQQCQAJAIAVB4AFrIgUEQCAFQQ1GBEAMAgUMAwsACyAEQWBxQaB/Rg0EDAMLIARBn39KDQIMAwsgBkEfakH/AXFBDE8EQCAGQX5xQW5HDQIgBEFASA0DDAILIARBQEgNAgwBCyABIARqLAAAIQQCQAJAAkACQCAFQfABaw4FAQAAAAIACyAGQQ9qQf8BcUECSyAEQUBOcg0DDAILIARB8ABqQf8BcUEwTw0CDAELIARBj39KDQELIAIgA0ECaiIETQRAQgAhCQwFCyABIARqLAAAQb9/Sg0CQgAhCSADQQNqIgQgAk8NBCABIARqLAAAQb9/TA0FQoCAgICA4AAMAwtCgICAgIAgDAILQgAhCSADQQJqIgQgAk8NAiABIARqLAAAQb9/TA0DC0KAgICAgMAACyEKQoCAgIAQIQkLIAAgCiADrYQgCYQ3AgQgAEEBNgIADwsgBEEBaiEDDAILIANBAWohAwwBCyACIANNDQADQCABIANqLAAAQQBIDQEgAiADQQFqIgNHDQALDAILIAIgA0sNAAsLIAAgAjYCCCAAIAE2AgQgAEEANgIAC/4FAQV/IABBCGsiASAAQQRrKAIAIgNBeHEiAGohAgJAAkAgA0EBcQ0AIANBAnFFDQEgASgCACIDIABqIQAgASADayIBQdDowgAoAgBGBEAgAigCBEEDcUEDRw0BQcjowgAgADYCACACIAIoAgRBfnE2AgQgASAAQQFyNgIEIAIgADYCAA8LIAEgAxB1CwJAAkACQAJAAkAgAigCBCIDQQJxRQRAIAJB1OjCACgCAEYNAiACQdDowgAoAgBGDQMgAiADQXhxIgIQdSABIAAgAmoiAEEBcjYCBCAAIAFqIAA2AgAgAUHQ6MIAKAIARw0BQcjowgAgADYCAA8LIAIgA0F+cTYCBCABIABBAXI2AgQgACABaiAANgIACyAAQYACSQ0CIAEgABB+QQAhAUHo6MIAQejowgAoAgBBAWsiADYCACAADQRBsObCACgCACIABEADQCABQQFqIQEgACgCCCIADQALC0Ho6MIAQf8fIAEgAUH/H00bNgIADwtB1OjCACABNgIAQczowgBBzOjCACgCACAAaiIANgIAIAEgAEEBcjYCBEHQ6MIAKAIAIAFGBEBByOjCAEEANgIAQdDowgBBADYCAAsgAEHg6MIAKAIAIgNNDQNB1OjCACgCACICRQ0DQQAhAEHM6MIAKAIAIgRBKUkNAkGo5sIAIQEDQCACIAEoAgAiBU8EQCACIAUgASgCBGpJDQQLIAEoAgghAQwACwALQdDowgAgATYCAEHI6MIAQcjowgAoAgAgAGoiADYCACABIABBAXI2AgQgACABaiAANgIADwsgAEH4AXFBuObCAGohAgJ/QcDowgAoAgAiA0EBIABBA3Z0IgBxRQRAQcDowgAgACADcjYCACACDAELIAIoAggLIQAgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwtBsObCACgCACIBBEADQCAAQQFqIQAgASgCCCIBDQALC0Ho6MIAQf8fIAAgAEH/H00bNgIAIAMgBE8NAEHg6MIAQX82AgALC98FAQJ/IwBBMGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkBBAiAAKAIAQfv///8HaiIDIANBDE8bQQFrDgsBAgMEBQYHCAkKCwALIAIgAEEEajYCDCACQQE2AhQgAkHwp8EANgIQIAJCATcCHCACIAJBDGqtQoCAgICQOIQ3AyggAiACQShqNgIYIAEoAhwgASgCICACQRBqEEUMCwsgAiAAQQRqNgIMIAJBATYCFCACQfCnwQA2AhAgAkIBNwIcIAIgAkEMaq1CgICAgOA4hDcDKCACIAJBKGo2AhggASgCHCABKAIgIAJBEGoQRQwKCyACIAA2AgwgAkEBNgIUIAJB8KfBADYCECACQgE3AhwgAiACQQxqrUKAgICAkDeENwMoIAIgAkEoajYCGCABKAIcIAEoAiAgAkEQahBFDAkLIAIgAEEEajYCDCACQQI2AhQgAkHwvMEANgIQIAJCATcCHCACIAJBDGqtQoCAgICwOIQ3AyggAiACQShqNgIYIAEoAhwgASgCICACQRBqEEUMCAsgAiAAQQRqNgIMIAJBATYCFCACQZy/wQA2AhAgAkIBNwIcIAIgAkEMaq1CgICAgOA0hDcDKCACIAJBKGo2AhggASgCHCABKAIgIAJBEGoQRQwHCyABKAIcQaS/wQBBOSABKAIgKAIMEQIADAYLIAEoAhxB3b/BAEE/IAEoAiAoAgwRAgAMBQsgAiAAQQRqNgIMIAJBATYCFCACQfCnwQA2AhAgAkIBNwIcIAIgAkEMaq1CgICAgMA4hDcDKCACIAJBKGo2AhggASgCHCABKAIgIAJBEGoQRQwECyABKAIcQZzAwQBBPCABKAIgKAIMEQIADAMLIAEoAhxB2MDBAEEkIAEoAiAoAgwRAgAMAgsgASgCHEH8wMEAQSQgASgCICgCDBECAAwBCyABKAIcQaDBwQBBJCABKAIgKAIMEQIACyACQTBqJAALkQUCAX8BfiMAQUBqIgIkAAJ/AkACQAJAAkACQAJAAkAgAC0AAEEBaw4GAQIDBAUGAAsgAiAAQQhqNgIkIAJBAjYCLCACQYCnwQA2AiggAkICNwI0IAJCsKbBgMA1NwMYIAIgAkEkaq1CgICAgNA1hDcDECACIAJBEGo2AjAgASgCHCABKAIgIAJBKGoQRQwGCyACIABBCGo2AiQgAkECNgIsIAJB4KfBADYCKCACQgI3AjQgAkKQp8GAwDU3AxggAiACQSRqrUKAgICA0DWENwMQIAIgAkEQajYCMCABKAIcIAEoAiAgAkEoahBFDAULIAIgAEEBajYCJCACQQE2AiwgAkHwp8EANgIoIAJCATcCNCACIAJBJGqtQoCAgIDgNYQ3AxAgAiACQRBqNgIwIAEoAhwgASgCICACQShqEEUMBAsgAiAAQQRqNgIMIAIgAEEIajYCJCACQQI2AiwgAkGoqMEANgIoIAJCAjcCNCACQoCAgIDwNSIDIAJBJGqthDcDGCACIAMgAkEMaq2ENwMQIAIgAkEQajYCMCABKAIcIAEoAiAgAkEoahBFDAMLIAIgAEEEajYCDCACIABBAWo2AiQgAkECNgIsIAJB8KjBADYCKCACQgI3AjQgAiACQSRqrUKAgICA4DSENwMYIAIgAkEMaq1CgICAgPA1hDcDECACIAJBEGo2AjAgASgCHCABKAIgIAJBKGoQRQwCCyABKAIcQYCpwQBBGyABKAIgKAIMEQIADAELIAIgAEEBajYCJCACQQI2AiwgAkHgqcEANgIoIAJCATcCNCACIAJBJGqtQoCAgIDgNIQ3AxAgAiACQRBqNgIwIAEoAhwgASgCICACQShqEEULIAJBQGskAAvrBAEFfwJ/AkAgAkECTwRAIAEoAgQiBEH//wFxRQRAIARBEHQMAwsgBEH/B3EhBSAEQYCAAnEhAyAEQYD4AXEiBkGA+AFGBEAgA0EQdCEDIANBgICA/AdyIAVFDQMaIAMgBUENdHJBgICA/gdyDAMLIANBEHQhAyAGRQ0BIAZBDXRBgICA/ABxIAVBDXRyQYCAgMADaiADcgwCC0EBQQFB/IzAABCtAgALIAUgBWdBEGsiBUH//wNxQQhqdEH///8DcSADQYCAgNgDciAFQRd0a3ILIQUCfyAEQYCAfHEgBEEQdiIDQf//AXFFDQAaIANB/wdxIQQgA0GAgAJxIQYgA0GA+AFxIgdBgPgBRgRAIAZBEHQhBiAGQYCAgPwHciAERQ0BGiAGIANBDXRyQYCAgP4HcgwBCyAGQRB0IQMgB0ENdEGAgID8AHEgBEENdHJBgICAwANqIANyIAcNABogBCAEZ0EQayIEQf//A3FBCGp0Qf///wNxIANBgICA2ANyIARBF3RrcgshBCAAAn8CQCACQQJHBEAgASgCCCICQf//AXFFBEAgAkEQdAwDCyACQf8HcSEBIAJBgIACcSEDIAJBgPgBcSICQYD4AUYEQCADQRB0IQIgAkGAgID8B3IgAUUNAxogAiABQQ10ckGAgID+B3IMAwsgA0EQdCEDIAJFDQEgAkENdEGAgID8AHEgAUENdHJBgICAwANqIANyDAILQQJBAkGMjcAAEK0CAAsgASABZ0EQayIBQf//A3FBCGp0Qf///wNxIANBgICA2ANyIAFBF3Rrcgs2AgggACAENgIEIAAgBTYCAAuLBQEEfyMAQSBrIgMkAAJAIAAQOEH/AXEiAUECRgRAQQEhAQwBCwJAAkACQAJAIAAoAgAiBEUNACAAKAIIIgIgACgCBE8NACACIARqLQAAQfAARw0AIAAgAkEBajYCCCAAKAIQIQIgAUEBcUUEQCACRQ0CQQEhAUH4s8IAQQEgAhDVBA0FDAILIAJFDQFB9bnCAEECIAIQ1QRFDQFBASEBDAQLIAFBAXFFDQIMAQsCQAJAIAAoAgBFDQAgAyAAEDcgAygCAEUNASADQRhqIANBCGopAgA3AwAgAyADKQIANwMQAkAgACgCECICRQ0AQQEhASADQRBqIAIQIw0FIAAoAhAiAkUNAEHJusIAQQMgAhDVBA0FCyAAECcEQEEBIQEMBQsDQCAAKAIAIgJFDQMgACgCCCIBIAAoAgRPDQMgASACai0AAEHwAEcNAyAAIAFBAWo2AgggACgCECIBBEBB9bnCAEECIAEQ1QQEQEEBIQEMBwsgACgCAEUNAgsgAyAAEDcgAygCAEUNAiADQRhqIANBCGopAgA3AwAgAyADKQIANwMQAkAgACgCECICRQ0AQQEhASADQRBqIAIQIw0GIAAoAhAiAkUNAEHJusIAQQMgAhDVBA0GC0EBIQEgABAnRQ0ACwwECyAAKAIQIgBFDQJB7bnCAEEBIAAQ1QQhAQwDCyAAKAIQIQECQCADLQAEIgJFBEAgAUUNAUHEucIAQRAgARDVBEUNAUEBIQEMBAsgAUUNAEHUucIAQRkgARDVBEUNAEEBIQEMAwsgACACOgAEQQAhASAAQQA2AgAMAgsgACgCECIARQ0AQQEhAUH3s8IAQQEgABDVBA0BC0EAIQELIANBIGokACABC9IEAg9/AX4jAEHQAGsiAyQAIANBDGqtQoCAgIAQhCESIAAtAAwhByAAKAIEIQ4gACgCACENIAAoAggiCEEcaiEPIAhBIGohEAJ/A0ACQCAJIhENACAGIQpBASEJAkAgAiAFTwRAA0AgASAFaiEGAkACQAJAIAIgBWsiC0EHTQRAIAIgBUYEQCAKIQYgAiEFIAIhBAwHC0EAIQQDQCAEIAZqLQAAQQpGDQIgCyAEQQFqIgRHDQALIAohBiACIQUgAiEEDAYLIANBCiAGIAsQiQEgAygCACILQQFHDQEgAygCBCEECyAEIAVqIgRBAWohBSACIARNDQEgASAEai0AAEEKRw0BQQAhCSAFIQYMBAsgCiEGIAIhBSACIQQgC0EBcUUNA0EAIQkMAwsgAiAFTw0ACwsgCiEGIAIhBAsCQCAHQQFxRQRAIABBAToADCANQQFxRQRAIAhB3IPCAEEEEOUDRQ0CDAMLIAMgDjYCDCADIBI3AyggA0EBOgBMIANBADYCSCADQiA3AkAgA0KAgICA0AA3AjggA0ECNgIwIANBATYCJCADQQI2AhQgA0Hkg8IANgIQIANBATYCHCAPKAIAIQsgECgCACEHIAMgA0EwajYCICADIANBKGo2AhhBASALIAcgA0EQahBFDQQaDAELIAxFDQAgCEEKEOsDDQEgDQRAIAhB9IPCAEEHEOUDDQIMAQsgCEHcg8IAQQQQ5QMNAQsgDEEBaiEMQQEhByAIIAEgCmogBCAKaxDlA0UNAQsLIBFBAXMLIANB0ABqJABBAXELhwUCAn8BfiMAQUBqIgIkACAAQQRqIQMCfwJAAkACQAJAAkACQAJAIAAoAgBBAWsOBgECAwQFBgALIAIgAzYCJCACQQE2AiwgAkHwr8EANgIoIAJCATcCNCACIAJBJGqtQoCAgICQNYQ3AxAgAiACQRBqNgIwIAEoAhwgASgCICACQShqEEUMBgsgAiADNgIMIAIgAEEIajYCJCACQQM2AiwgAkHUsMEANgIoIAJCAjcCNCACQoCAgIDwNSIEIAJBJGqthDcDGCACIAQgAkEMaq2ENwMQIAIgAkEQajYCMCABKAIcIAEoAiAgAkEoahBFDAULIAIgAzYCJCACQQE2AiwgAkHwp8EANgIoIAJCATcCNCACIAJBJGqtQoCAgICgNoQ3AxAgAiACQRBqNgIwIAEoAhwgASgCICACQShqEEUMBAsgAiADNgIkIAJBATYCLCACQfCnwQA2AiggAkIBNwI0IAIgAkEkaq1CgICAgLA2hDcDECACIAJBEGo2AjAgASgCHCABKAIgIAJBKGoQRQwDCyACIAM2AiQgAkEBNgIsIAJB8KfBADYCKCACQgE3AjQgAiACQSRqrUKAgICAwDaENwMQIAIgAkEQajYCMCABKAIcIAEoAiAgAkEoahBFDAILIAIgAzYCJCACQQE2AiwgAkHwp8EANgIoIAJCATcCNCACIAJBJGqtQoCAgIDQNoQ3AxAgAiACQRBqNgIwIAEoAhwgASgCICACQShqEEUMAQsgAiADNgIkIAJBATYCLCACQfCnwQA2AiggAkIBNwI0IAIgAkEkaq1CgICAgOA2hDcDECACIAJBEGo2AjAgASgCHCABKAIgIAJBKGoQRQsgAkFAayQAC+oEAQp/IwBBMGsiAyQAIAMgATYCLCADIAA2AiggA0EDOgAkIANCIDcCHCADQQA2AhQgA0EANgIMAn8CQAJAAkAgAigCECIKRQRAIAIoAgwiAEUNASACKAIIIgEgAEEDdGohBCAAQQFrQf////8BcUEBaiEHIAIoAgAhAANAIABBBGooAgAiBQRAIAMoAiggACgCACAFIAMoAiwoAgwRAgANBAsgASgCACADQQxqIAFBBGooAgARAAANAyAAQQhqIQAgAUEIaiIBIARHDQALDAELIAIoAhQiAEUNACAAQQV0IQsgAEEBa0H///8/cUEBaiEHIAIoAgghBSACKAIAIQADQCAAQQRqKAIAIgEEQCADKAIoIAAoAgAgASADKAIsKAIMEQIADQMLIAMgCCAKaiIBQRBqKAIANgIcIAMgAUEcai0AADoAJCADIAFBGGooAgA2AiAgAUEMaigCACEEQQAhCUEAIQYCQAJAAkAgAUEIaigCAEEBaw4CAAIBCyAEQQN0IAVqIgwoAgANASAMKAIEIQQLQQEhBgsgAyAENgIQIAMgBjYCDCABQQRqKAIAIQQCQAJAAkAgASgCAEEBaw4CAAIBCyAEQQN0IAVqIgYoAgANASAGKAIEIQQLQQEhCQsgAyAENgIYIAMgCTYCFCAFIAFBFGooAgBBA3RqIgEoAgAgA0EMaiABQQRqKAIAEQAADQIgAEEIaiEAIAsgCEEgaiIIRw0ACwsgByACKAIETw0BIAMoAiggAigCACAHQQN0aiIAKAIAIAAoAgQgAygCLCgCDBECAEUNAQtBAQwBC0EACyADQTBqJAALlgQBBH8jAEGAAWsiBCQAAkACQAJAIAEoAhQiAkEQcUUEQCACQSBxDQFBASECIAAoAgBBASABEGxFDQIMAwsgACgCACECA0AgAyAEakH/AGogAkEPcSIFQTByIAVB1wBqIAVBCkkbOgAAIANBAWshAyACQRBJIAJBBHYhAkUNAAtBASECIAFBAUGPxMIAQQIgAyAEakGAAWpBACADaxA1RQ0BDAILIAAoAgAhAgNAIAMgBGpB/wBqIAJBD3EiBUEwciAFQTdqIAVBCkkbOgAAIANBAWshAyACQQ9LIAJBBHYhAg0AC0EBIQIgAUEBQY/EwgBBAiADIARqQYABakEAIANrEDUNAQsgASgCHEH6wMIAQQIgASgCICgCDBECAA0AAkAgASgCFCICQRBxRQRAIAJBIHENASAAKAIEQQEgARBsIQIMAgsgACgCBCECQQAhAwNAIAMgBGpB/wBqIAJBD3EiAEEwciAAQdcAaiAAQQpJGzoAACADQQFrIQMgAkEPSyACQQR2IQINAAsgAUEBQY/EwgBBAiADIARqQYABakEAIANrEDUhAgwBCyAAKAIEIQJBACEDA0AgAyAEakH/AGogAkEPcSIAQTByIABBN2ogAEEKSRs6AAAgA0EBayEDIAJBD0sgAkEEdiECDQALIAFBAUGPxMIAQQIgAyAEakGAAWpBACADaxA1IQILIARBgAFqJAAgAgu7BAEBfwJAIAAoAgBBAkYNACAAKAIoIgEEQCAAKAIsIAFBAXRBARCnBAsgACgCNCIBBEAgACgCOCABQQEQpwQLIAAoAkAiAQRAIAAoAkQgAUEBEKcECyAAKAJMIgEEQCAAKAJQIAFBAnRBBBCnBAsgACgCWCIBBEAgACgCXCABQQJ0QQQQpwQLIAAoAmQiAQRAIAAoAmggAUEDdEEEEKcECyAAKAJwIgEEQCAAKAJ0IAFBAnRBBBCnBAsgACgCfCIBBEAgACgCgAEgAUECdEEEEKcECyAAKAKQASIBBEAgACgClAEgAUEDdEEEEKcECyAAKAKcASIBBEAgACgCoAEgAUECdEEEEKcECyAAKAKoASIBBEAgACgCrAEgAUECdEEEEKcECyAAKAK4ASIBBEAgACgCvAEgAUEDdEEEEKcECyAAKALEASIBBEAgACgCyAEgAUECdEEEEKcECyAAKALQASIBBEAgACgC1AEgAUECdEEEEKcECyAAKALgASIBBEAgACgC5AEgAUEDdEEEEKcECyAAKALsASIBBEAgACgC8AEgAUECdEEEEKcECyAAKAL4ASIBBEAgACgC/AEgAUECdEEEEKcECyAAQZACahDTAyAAKAKEAyIBBEAgACgCiAMgAUEBEKcECyAAKAKQAyIBBEAgACgClAMgAUEBEKcECyAAKAKcAyIBBEAgACgCoAMgAUEMbEEEEKcECyAAKAKoAyIBRQ0AIAAoAqwDIAFBARCnBAsgAEHQA2oQKwuPBAENfyABQQFrIQ8gACgCBCEKIAAoAgAhCyAAKAIIIQwCQANAIA4NAQJAAkAgAiAESQ0AA0AgASAEaiEFAkACQAJAIAIgBGsiBkEHTQRAIAIgBEcNASACIQQMBQsCQCAFQQNqQXxxIgggBWsiAwRAQQAhAANAIAAgBWotAABBCkYNBSADIABBAWoiAEcNAAsgAyAGQQhrIgBNDQEMAwsgBkEIayEACwNAQYCChAggCCgCACIJQYqUqNAAc2sgCXJBgIKECCAIQQRqKAIAIglBipSo0ABzayAJcnFBgIGChHhxQYCBgoR4Rw0CIAhBCGohCCADQQhqIgMgAE0NAAsMAQtBACEAA0AgACAFai0AAEEKRg0CIAYgAEEBaiIARw0ACyACIQQMAwsgAyAGRgRAIAIhBAwDCwNAIAMgBWotAABBCkYEQCADIQAMAgsgBiADQQFqIgNHDQALIAIhBAwCCyAAIARqIgNBAWohBAJAIAIgA00NACAAIAVqLQAAQQpHDQAgBCEFIAQhAAwDCyACIARPDQALC0EBIQ4gAiIAIAciBUYNAgsCQCAMLQAABEAgC0H4w8IAQQQgCigCDBECAA0BC0EAIQMgACAHRwRAIAAgD2otAABBCkYhAwsgACAHayEAIAEgB2ohBiAMIAM6AAAgBSEHIAsgBiAAIAooAgwRAgBFDQELC0EBIQ0LIA0LswQBAX8CQCAAKAIAQQJGDQAgACgCKCIBBEAgACgCLCABQQF0QQEQpwQLIAAoAjQiAQRAIAAoAjggAUEBEKcECyAAKAJAIgEEQCAAKAJEIAFBARCnBAsgACgCTCIBBEAgACgCUCABQQJ0QQQQpwQLIAAoAlgiAQRAIAAoAlwgAUECdEEEEKcECyAAKAJkIgEEQCAAKAJoIAFBA3RBBBCnBAsgACgCcCIBBEAgACgCdCABQQJ0QQQQpwQLIAAoAnwiAQRAIAAoAoABIAFBAnRBBBCnBAsgACgCkAEiAQRAIAAoApQBIAFBA3RBBBCnBAsgACgCnAEiAQRAIAAoAqABIAFBAnRBBBCnBAsgACgCqAEiAQRAIAAoAqwBIAFBAnRBBBCnBAsgACgCuAEiAQRAIAAoArwBIAFBA3RBBBCnBAsgACgCxAEiAQRAIAAoAsgBIAFBAnRBBBCnBAsgACgC0AEiAQRAIAAoAtQBIAFBAnRBBBCnBAsgACgC4AEiAQRAIAAoAuQBIAFBA3RBBBCnBAsgACgC7AEiAQRAIAAoAvABIAFBAnRBBBCnBAsgACgC+AEiAQRAIAAoAvwBIAFBAnRBBBCnBAsgAEGQAmoQ0wMgACgChAMiAQRAIAAoAogDIAFBARCnBAsgACgCkAMiAQRAIAAoApQDIAFBARCnBAsgACgCnAMiAQRAIAAoAqADIAFBDGxBBBCnBAsgACgCqAMiAUUNACAAKAKsAyABQQEQpwQLC54FAQJ/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQQIgACgCACIAKAIAQfv///8HaiIDIANBDk8bQQFrDg0BAgMEBQYHCAkKCwwNAAsgAiAAQQRqNgIMIAFB6NTBAEEMIAJBDGpB2NTBABB/DA0LIAIgAEEEajYCDCABQdDXwQBBDyACQQxqQcDXwQAQfwwMCyACIAA2AgwgAUGA1MEAQQ0gAkEMakHw08EAEH8MCwsgAUHY2sEAQQ0Q5QMMCgsgAiAAQQhqNgIMIAFB5drBAEEYQf3awQBBCSAAQQRqQfTMwQBBhtvBAEEOIAJBDGpBhM3BABDDAQwJCyACIABBBGo2AgwgAUH41cEAQQxBhNbBAEEMIAJBDGpB6NXBABDJAQwICyACIABBBGo2AgwgAUGU28EAQQ5Bi87BAEEDIAJBDGpBuM3BABDJAQwHCyABQaLbwQBBDhDlAwwGCyACIABBBGo2AgwgAUGw28EAQRZBi87BAEEDIAJBDGpBzM/BABDJAQwFCyACIABBCGo2AgwgAUHG28EAQSFBsNfBAEEEIABBBGpB9MzBAEG308EAQQQgAkEMakG4zcEAEMMBDAQLIAIgAEEIajYCDCABQefbwQBBGEH/28EAQQQgAEEEakH0zMEAQYPcwQBBDyACQQxqQYTNwQAQwwEMAwsgAiAAQQhqNgIMIAFBktzBAEEWQYvOwQBBAyAAQQRqQfTMwQBBt9PBAEEEIAJBDGpBuM3BABDDAQwCCyACIABBBGo2AgwgAUGo3MEAQRpBi87BAEEDIAJBDGpBhM3BABDJAQwBCyACIABBBGo2AgwgAUHC3MEAQQ5Bi87BAEEDIAJBDGpBhM3BABDJAQsgAkEQaiQAC5kFAQJ/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQQIgACgCAEH7////B2oiAyADQQ5PG0EBaw4NAQIDBAUGBwgJCgsMDQALIAIgAEEEajYCDCABQcSZwABBDCACQQxqQbSZwAAQfwwNCyACIABBBGo2AgwgAUGMoMAAQQ8gAkEMakH8n8AAEH8MDAsgAiAANgIMIAFBrKDAAEENIAJBDGpBnKDAABB/DAsLIAFBuaDAAEENEOUDDAoLIAIgAEEIajYCDCABQcagwABBGEHeoMAAQQkgAEEEakGImMAAQeegwABBDiACQQxqQZiYwAAQwwEMCQsgAiAAQQRqNgIMIAFBiKHAAEEMQZShwABBDCACQQxqQfigwAAQyQEMCAsgAiAAQQRqNgIMIAFBoKHAAEEOQayZwABBAyACQQxqQcyYwAAQyQEMBwsgAUGuocAAQQ4Q5QMMBgsgAiAAQQRqNgIMIAFBvKHAAEEWQayZwABBAyACQQxqQbiawAAQyQEMBQsgAiAAQQhqNgIMIAFB0qHAAEEhQfOhwABBBCAAQQRqQYiYwABB+pzAAEEEIAJBDGpBzJjAABDDAQwECyACIABBCGo2AgwgAUH3ocAAQRhBj6LAAEEEIABBBGpBiJjAAEGTosAAQQ8gAkEMakGYmMAAEMMBDAMLIAIgAEEIajYCDCABQaKiwABBFkGsmcAAQQMgAEEEakGImMAAQfqcwABBBCACQQxqQcyYwAAQwwEMAgsgAiAAQQRqNgIMIAFBuKLAAEEaQayZwABBAyACQQxqQZiYwAAQyQEMAQsgAiAAQQRqNgIMIAFB0qLAAEEOQayZwABBAyACQQxqQZiYwAAQyQELIAJBEGokAAuZBQECfyMAQRBrIgIkAAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEECIAAoAgBB+////wdqIgMgA0EOTxtBAWsODQECAwQFBgcICQoLDA0ACyACIABBBGo2AgwgAUHYvMAAQQwgAkEMakHIvMAAEH8MDQsgAiAAQQRqNgIMIAFBoMPAAEEPIAJBDGpBkMPAABB/DAwLIAIgADYCDCABQcDDwABBDSACQQxqQbDDwAAQfwwLCyABQc3DwABBDRDlAwwKCyACIABBCGo2AgwgAUHaw8AAQRhB8sPAAEEJIABBBGpBnLvAAEH7w8AAQQ4gAkEMakGsu8AAEMMBDAkLIAIgAEEEajYCDCABQZzEwABBDEGoxMAAQQwgAkEMakGMxMAAEMkBDAgLIAIgAEEEajYCDCABQbTEwABBDkHAvMAAQQMgAkEMakHgu8AAEMkBDAcLIAFBwsTAAEEOEOUDDAYLIAIgAEEEajYCDCABQdDEwABBFkHAvMAAQQMgAkEMakHMvcAAEMkBDAULIAIgAEEIajYCDCABQebEwABBIUGHxcAAQQQgAEEEakGcu8AAQY7AwABBBCACQQxqQeC7wAAQwwEMBAsgAiAAQQhqNgIMIAFBi8XAAEEYQaPFwABBBCAAQQRqQZy7wABBp8XAAEEPIAJBDGpBrLvAABDDAQwDCyACIABBCGo2AgwgAUG2xcAAQRZBwLzAAEEDIABBBGpBnLvAAEGOwMAAQQQgAkEMakHgu8AAEMMBDAILIAIgAEEEajYCDCABQczFwABBGkHAvMAAQQMgAkEMakGsu8AAEMkBDAELIAIgAEEEajYCDCABQebFwABBDkHAvMAAQQMgAkEMakGsu8AAEMkBCyACQRBqJAALmQUBAn8jAEEQayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBAiAAKAIAQfv///8HaiIDIANBDk8bQQFrDg0BAgMEBQYHCAkKCwwNAAsgAiAAQQRqNgIMIAFBqN/AAEEMIAJBDGpBmN/AABB/DA0LIAIgAEEEajYCDCABQdzlwABBDyACQQxqQczlwAAQfwwMCyACIAA2AgwgAUH85cAAQQ0gAkEMakHs5cAAEH8MCwsgAUGJ5sAAQQ0Q5QMMCgsgAiAAQQhqNgIMIAFBlubAAEEYQa7mwABBCSAAQQRqQYzewABBt+bAAEEOIAJBDGpB+NrAABDDAQwJCyACIABBBGo2AgwgAUHF5sAAQQxB0ebAAEEMIAJBDGpB6NrAABDJAQwICyACIABBBGo2AgwgAUHd5sAAQQ5BkN/AAEEDIAJBDGpB+NzAABDJAQwHCyABQevmwABBDhDlAwwGCyACIABBBGo2AgwgAUH55sAAQRZBkN/AAEEDIAJBDGpBnODAABDJAQwFCyACIABBCGo2AgwgAUGP58AAQSFBsOfAAEEEIABBBGpBjN7AAEHe4sAAQQQgAkEMakH43MAAEMMBDAQLIAIgAEEIajYCDCABQbTnwABBGEHM58AAQQQgAEEEakGM3sAAQdDnwABBDyACQQxqQfjawAAQwwEMAwsgAiAAQQhqNgIMIAFB3+fAAEEWQZDfwABBAyAAQQRqQYzewABB3uLAAEEEIAJBDGpB+NzAABDDAQwCCyACIABBBGo2AgwgAUH158AAQRpBkN/AAEEDIAJBDGpB+NrAABDJAQwBCyACIABBBGo2AgwgAUGP6MAAQQ5BkN/AAEEDIAJBDGpB+NrAABDJAQsgAkEQaiQAC5kFAQJ/IwBBEGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQQIgACgCAEH7////B2oiAyADQQ5PG0EBaw4NAQIDBAUGBwgJCgsMDQALIAIgAEEEajYCDCABQeyHwQBBDCACQQxqQdyHwQAQfwwNCyACIABBBGo2AgwgAUHQi8EAQQ8gAkEMakHAi8EAEH8MDAsgAiAANgIMIAFB8IvBAEENIAJBDGpB4IvBABB/DAsLIAFB/YvBAEENEOUDDAoLIAIgAEEIajYCDCABQYqMwQBBGEGijMEAQQkgAEEEakHohcEAQauMwQBBDiACQQxqQcCGwQAQwwEMCQsgAiAAQQRqNgIMIAFBzIzBAEEMQdiMwQBBDCACQQxqQbyMwQAQyQEMCAsgAiAAQQRqNgIMIAFB5IzBAEEOQdSHwQBBAyACQQxqQfSGwQAQyQEMBwsgAUHyjMEAQQ4Q5QMMBgsgAiAAQQRqNgIMIAFBgI3BAEEWQdSHwQBBAyACQQxqQeCIwQAQyQEMBQsgAiAAQQhqNgIMIAFBlo3BAEEhQbeNwQBBBCAAQQRqQeiFwQBBoovBAEEEIAJBDGpB9IbBABDDAQwECyACIABBCGo2AgwgAUG7jcEAQRhB043BAEEEIABBBGpB6IXBAEHXjcEAQQ8gAkEMakHAhsEAEMMBDAMLIAIgAEEIajYCDCABQeaNwQBBFkHUh8EAQQMgAEEEakHohcEAQaKLwQBBBCACQQxqQfSGwQAQwwEMAgsgAiAAQQRqNgIMIAFB/I3BAEEaQdSHwQBBAyACQQxqQcCGwQAQyQEMAQsgAiAAQQRqNgIMIAFBlo7BAEEOQdSHwQBBAyACQQxqQcCGwQAQyQELIAJBEGokAAuLBAIJfwF+AkACQAJ/AkACQAJAAkAgAkHAAE0EQCABKAIEIghBA3QgASgCCCIGayIDIAJJDQEgBkEDdiIDIAhPDQIgASgCACIKIANqLQAAIAZBB3EiCXatIQxBCCAJayIFIAJJBEAgASAFIAZqIgQ2AggCQCAEQQdxRQRAIAIgBWsiB0EITw0BIAUhCSAHDAgLQeDkwQBBI0GE5cEAEO0CAAtBASAHQQN2IgMgA0EBTRsiBEEDdCAJa0EIaiEJA0AgBSAGaiIDQQN2IgsgCE8NBSABIANBCGo2AgggCiALajEAACAFQT9xrYYgDIQhDCAFQQhqIQUgBEEBayIEDQALDAULIAEgAiAGajYCCCAMQn8gAq2GQn+FgyEMDAYLIAAgAjYCCCAAQYCAATsBBCAAQQE2AgAPCyAAIAM2AgwgACACNgIIIABBAToABCAAQQE2AgAPCyADIAhB5OPBABCtAgALIAsgCEHQ5MEAEK0CAAsgBSAGaiEEIAIgCWsLIAdBB3EiB0cEQEH048EAQTtBsOTBABDtAgALIAcEQCAEQQN2IgMgCE8NAiABIAQgB2oiBDYCCCADIApqMQAAQn8gB62GQn+FgyAJQT9xrYYgDIQhDAsgBCACIAZqRg0AQZTlwQBBKUHA5cEAEO0CAAsgACAMNwMIIABBADYCAA8LIAMgCEHA5MEAEK0CAAvvAwELfyMAQRBrIgYkAAJAIAEoAhAiBCABKAIMIgNJBEAMAQsgASgCCCIMIARJBEAMAQsgAUEUaiIJIAEtABgiB2pBAWstAAAhCiABKAIEIQsCQCAHQQRNBEADQCADIAtqIQUCQCAEIANrIghBB00EQCADIARGBEBBACECIAEgBDYCDAwGC0EAIQIDQCACIAVqLQAAIApGDQIgCCACQQFqIgJHDQALQQAhAiABIAQ2AgwMBQsgBkEIaiAKIAUgCBCJASAGKAIIIgJBAUcNAyAGKAIMIQILIAEgAiADakEBaiIDNgIMAkAgAyAHSSADIAxLcg0AIAsgAyAHayICaiAJIAcQ1AINACAAIAM2AgggACACNgIEQQEhAgwECyADIARNDQALQQAhAgwCCwJAA0AgAyALaiEIAkAgBCADayIJQQhPBEAgBiAKIAggCRCJASAGKAIAIgJBAUcNBCAGKAIEIQUMAQsgAyAERgRAQQAhAiABIAQ2AgwMBQtBACEFA0AgBSAIai0AACAKRg0BQQAhAiAJIAVBAWoiBUcNAAsMAwsgASADIAVqQQFqIgM2AgwgAyAMTSADIAdPcQ0BIAMgBE0NAAtBACECDAILIAdBBEGoscIAEKsEAAsgASAENgIMCyAAIAI2AgAgBkEQaiQAC/8DAQl/IwBBIGsiBCQAAkACQAJ/AkACQAJAAkACQCAAKAIAIgYEQCAAKAIIIgMgACgCBCIFIAMgBUsbIQlBfyEHIAMhAgNAIAIgCUYNBCAAIAJBAWoiCDYCCCAHQQFqIQcgAiAGaiAIIQItAAAiCEEwa0H/AXFBCkkgCEHhAGtB/wFxQQZJcg0ACyAIQd8ARw0DIAJBAWshAgJAIAMEQCADIAVPBEAgAiAFSw0LDAILIAIgBUsNCiADIAZqLAAAQb9/Sg0BDAoLIAIgBUsNCQsgBEEIaiADIAZqIgMgBxBnIAQoAggNASAAKAIQIgJFDQRB3brCAEECIAIQ1QQNAiADIAcgAhDVBA0CDAULQQAgACgCECIARQ0FGkHtucIAQQEgABDVBAwFCyAAKAIQIQIgBCAEKQMQNwMYIAJFDQIgBEEYaiACEK8ERQ0DC0EBDAMLAkAgACgCECIBRQ0AQcS5wgBBECABENUERQ0AQQEMAwsgAEEAOgAEIABBADYCAEEADAILQQAMAQtBACACLQAUQQRxDQAaIAFB4QBrIgBB/wFxIgFBGk9Bv/fzHSABdkEBcUVyDQEgAEECdEH8B3EiAEHcvcIAaigCACAAQfS8wgBqKAIAIAIQ1QQLIARBIGokAA8LQeC6wgAQrgQACyAGIAUgAyACQfS4wgAQ7AMAC7IEAgJ9BH8jAEEQayEEIAC8IgVBH3YhBgJAAn0gAAJ/AkACQAJAAkAgBUH/////B3EiA0HQ2LqVBE8EQCADQYCAgPwHSwRAIAAPCyAFQQBIIgVFIANBl+TFlQRLcQ0CIAVFDQEgBEMAAICAIACVOAIIIAQqAggaIANBtOO/lgRNDQEMBwsgA0GY5MX1A00EQCADQYCAgMgDTQ0DQQAhAyAADAYLIANBkquU/ANNDQMLIABDO6q4P5QgBkECdEH048IAaioCAJIiAUMAAADPYCEEQf////8HAn8gAYtDAAAAT10EQCABqAwBC0GAgICAeAtBgICAgHggBBsgAUP///9OXhtBACABIAFbGwwDCyAAQwAAAH+UDwsgBCAAQwAAAH+SOAIMIAQqAgwaIABDAACAP5IPCyAGRSAGawsiA7IiAUMAcjG/lJIiACABQ46+vzWUIgKTCyEBIAAgASABIAEgAZQiACAAQxVSNbuUQ4+qKj6SlJMiAJRDAAAAQCAAk5UgApOSQwAAgD+SIQEgA0UNAAJAAkACQCADQf8ATARAIANBgn9ODQMgAUMAAIAMlCEBIANBm35NDQEgA0HmAGohAwwDCyABQwAAAH+UIQEgA0H+AUsNASADQf8AayEDDAILIAFDAACADJQhAUG2fSADIANBtn1NG0HMAWohAwwBCyABQwAAAH+UIQFB/QIgAyADQf0CTxtB/gFrIQMLIAEgA0EXdEGAgID8A2q+lCEBCyABC4gEAQh/IAEoAgQiBQRAIAEoAgAhBANAAkAgA0EBaiECAn8gAiADIARqLQAAIgjAIglBAE4NABoCQAJAAkACQAJAAkACQAJAAkACQAJAIAhB38fCAGotAABBAmsOAwABAgwLQfjAwgAgAiAEaiACIAVPGy0AAEHAAXFBgAFHDQsgA0ECagwKC0H4wMIAIAIgBGogAiAFTxssAAAhByAIQeABayIGRQ0BIAZBDUYNAgwDC0H4wMIAIAIgBGogAiAFTxssAAAhBiAIQfABaw4FBAMDAwUDCyAHQWBxQaB/Rw0IDAYLIAdBn39KDQcMBQsgCUEfakH/AXFBDE8EQCAJQX5xQW5HIAdBQE5yDQcMBQsgB0FATg0GDAQLIAlBD2pB/wFxQQJLIAZBQE5yDQUMAgsgBkHwAGpB/wFxQTBPDQQMAQsgBkGPf0oNAwtB+MDCACAEIANBAmoiAmogAiAFTxstAABBwAFxQYABRw0CQfjAwgAgBCADQQNqIgJqIAIgBU8bLQAAQcABcUGAAUcNAiADQQRqDAELQfjAwgAgBCADQQJqIgJqIAIgBU8bLQAAQcABcUGAAUcNASADQQNqCyIDIgIgBUkNAQsLIAAgAzYCBCAAIAQ2AgAgASAFIAJrNgIEIAEgAiAEajYCACAAIAIgA2s2AgwgACADIARqNgIIDwsgAEEANgIAC6UDAQN/AkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4KAAcHAQIDBAcHBQcLIABBBGoQbQ8LAkACQCAALQAEDgIHAQALIAAoAggiAUH7////B2oiA0ENTSADQQJHcQ0GIAFBhICAgHhKDQUgAUGDgICAeEcNBgwFCyAAKAIIIgFBhICAgHhKIAFBg4CAgHhGcg0EDAULIAAtAAQiAUEDSyABQQNHcg0EDAULAkACQEEDIAAoAgRBB2siASABQQNPG0ECaw4CAQAFCyAAQQRqEKQBDwsgAC0ACEEDRw0DIAAoAgwiACgCACEBDAULIAAtAARBA0cNAgwDCyAALQAEQQNHDQEgACgCCCIAKAIAIQEgAEEEaigCACIDKAIAIgIEQCABIAIRAwALIAMoAgQiAgRAIAEgAiADKAIIEKcECyAAQQxBBBCnBAwBCyABRQ0AIAAoAgwgAUECdEEEEKcECw8LIAAoAggiACgCACEBCyAAQQRqKAIAIgMoAgAiAgRAIAEgAhEDAAsgAygCBCICBEAgASACIAMoAggQpwQLIABBDEEEEKcEC/IDAgJ/AX4jAEFAaiICJAACfwJAAkACQAJAAkBBAyAAKAIAQYCAgIB4cyIDIANBBU8bQQFrDgQBAgMEAAsgASgCHEG0w8EAQRkgASgCICgCDBECAAwECyACIABBBGo2AgQgAiAAQQVqNgIkIAJBAjYCLCACQYzEwQA2AiggAkICNwI0IAJCgICAgOA0IgQgAkEkaq2ENwMQIAIgBCACQQRqrYQ3AwggAiACQQhqNgIwIAEoAhwgASgCICACQShqEEUMAwsgAiAAQQRqNgIkIAJBATYCLCACQfCnwQA2AiggAkIBNwI0IAIgAkEkaq1CgICAgJA4hDcDCCACIAJBCGo2AjAgASgCHCABKAIgIAJBKGoQRQwCCyACIABBDGo2AgAgAiAAQRBqNgIEIAIgADYCJCACQQM2AgwgAkHwxMEANgIIIAJCAzcCFCACIAJBJGqtQoCAgIDwOIQ3AzggAkKAgICAgDYiBCACQQRqrYQ3AzAgAiAEIAKthDcDKCACIAJBKGo2AhAgASgCHCABKAIgIAJBCGoQRQwBCyACIABBBGo2AiQgAkECNgIsIAJBxMXBADYCKCACQgE3AjQgAiACQSRqrUKAgICA8DWENwMIIAIgAkEIajYCMCABKAIcIAEoAiAgAkEoahBFCyACQUBrJAALyQMCDX8BfiADIAVBAWsiDSABKAIUIghqIgdLBEBBACABKAIIIgprIQ4gBSABKAIQIg9rIRAgASgCHCELIAEpAwAhFANAAkAgAQJ/AkAgFCACIAdqMQAAiEIBg1AEQCABIAUgCGoiCDYCFCAGDQMMAQsgCiALIAogCiALSRsgBhsiCSAFIAUgCUkbIQwgAiAIaiERIAkhBwJAAkACQANAIAcgDEYEQEEAIAsgBhshDCAKIQcDQCAHIAxNBEAgASAFIAhqIgI2AhQgBkUEQCABQQA2AhwLIAAgAjYCCCAAIAg2AgQgAEEBNgIADwsgB0EBayIHIAVPDQUgByAIaiIJIANPDQMgBCAHai0AACACIAlqLQAARg0ACyABIAggD2oiCDYCFCAQIAZFDQYaDAcLIAcgCGogA08NAiAHIBFqIRIgBCAHaiAHQQFqIQctAAAgEi0AAEYNAAsgCCAOaiAHaiEIIAZFDQMMBQsgCSADQcCvwgAQrQIACyADIAggCWoiACAAIANJGyADQdCvwgAQrQIACyAHIAVBsK/CABCtAgALQQALIgc2AhwgByELCyAIIA1qIgcgA0kNAAsLIAEgAzYCFCAAQQA2AgALsQQCBH8EfiAAQShqIQUCQAJAIAAoAkgiA0UEQCACIQMMAQsgA0EgSw0BIAMgBWogAUEgIANrIgMgAiACIANLGyIEEDsaIABBACAAKAJIIARqIgMgA0EgRiIGGzYCSCACIARrIQMgASAEaiEBIAZFDQAgACAAKQMAIAApAyhCz9bTvtLHq9lCfnxCH4lCh5Wvr5i23puef343AwAgACAAKQMIIAApAzBCz9bTvtLHq9lCfnxCH4lCh5Wvr5i23puef343AwggACAAKQMQIAApAzhCz9bTvtLHq9lCfnxCH4lCh5Wvr5i23puef343AxAgACAAKQMYIAApA0BCz9bTvtLHq9lCfnxCH4lCh5Wvr5i23puef343AxgLIANBIE8EQCAAKQMYIQcgACkDECEIIAApAwghCSAAKQMAIQoDQCABKQAYQs/W077Sx6vZQn4gB3xCH4lCh5Wvr5i23puef34hByABKQAQQs/W077Sx6vZQn4gCHxCH4lCh5Wvr5i23puef34hCCABKQAIQs/W077Sx6vZQn4gCXxCH4lCh5Wvr5i23puef34hCSABKQAAQs/W077Sx6vZQn4gCnxCH4lCh5Wvr5i23puef34hCiABQSBqIQEgA0EgayIDQR9LDQALIAAgBzcDGCAAIAg3AxAgACAJNwMIIAAgCjcDAAsgAwRAIAUgASADEDsaIAAgAzYCSAsgACAAKQNQIAKtfDcDUA8LIANBIEGU9sEAEKoEAAv5AwECfyAAIAFqIQICQAJAIAAoAgQiA0EBcQ0AIANBAnFFDQEgACgCACIDIAFqIQEgACADayIAQdDowgAoAgBGBEAgAigCBEEDcUEDRw0BQcjowgAgATYCACACIAIoAgRBfnE2AgQgACABQQFyNgIEIAIgATYCAAwCCyAAIAMQdQsCQAJAAkAgAigCBCIDQQJxRQRAIAJB1OjCACgCAEYNAiACQdDowgAoAgBGDQMgAiADQXhxIgIQdSAAIAEgAmoiAUEBcjYCBCAAIAFqIAE2AgAgAEHQ6MIAKAIARw0BQcjowgAgATYCAA8LIAIgA0F+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACyABQYACTwRAIAAgARB+DwsgAUH4AXFBuObCAGohAgJ/QcDowgAoAgAiA0EBIAFBA3Z0IgFxRQRAQcDowgAgASADcjYCACACDAELIAIoAggLIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtB1OjCACAANgIAQczowgBBzOjCACgCACABaiIBNgIAIAAgAUEBcjYCBCAAQdDowgAoAgBHDQFByOjCAEEANgIAQdDowgBBADYCAA8LQdDowgAgADYCAEHI6MIAQcjowgAoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIACwueAwIHfwJ+IwBBEGsiBCQAAn8CQCAAKAIAIgNFDQAgACgCCCICIAAoAgQiBU8NACACIANqIgEtAABBzABGBEAgACACQQFqIgE2AgggAAJ+AkAgASAFSQRAIAEgA2otAABB3wBGDQELIAEgBSABIAVLGyEHAkACQANAAkAgASAFSQRAIAEgA2otAABB3wBGDQELIAEgB0YNAgJAIAEgA2otAAAiAkEwayIGQf8BcUEKSQ0AIAJB4QBrQf8BcUEaTwRAIAJBwQBrQf8BcUEaTw0EIAJBHWshBgwBCyACQdcAayEGCyAAIAFBAWoiATYCCCAEIAgQmwIgBCkDCEIAUg0CIAQpAwAiCSAGrUL/AYN8IgggCVoNAQwCCwsgACABQQFqNgIIIAhCf1INAQsgACgCECIDBEBBAUHEucIAQRAgAxDVBA0GGgsgAEEAOgAEIABBADYCAEEADAULIAhCAXwMAQsgACACQQJqNgIIQgALELwBDAILIAEtAABBywBHDQAgACACQQFqNgIIIABBABAgDAELIAAQJwsgBEEQaiQAC5QDAQR/AkAgAkEQSQRAIAAhAwwBCwJAIABBACAAa0EDcSIFaiIEIABNDQAgACEDIAUEQCAFIQYDQCADIAE6AAAgA0EBaiEDIAZBAWsiBg0ACwsgBUEBa0EHSQ0AA0AgAyABOgAAIANBB2ogAToAACADQQZqIAE6AAAgA0EFaiABOgAAIANBBGogAToAACADQQNqIAE6AAAgA0ECaiABOgAAIANBAWogAToAACADQQhqIgMgBEcNAAsLIAQgAiAFayICQXxxaiIDIARLBEAgAUH/AXFBgYKECGwhBQNAIAQgBTYCACAEQQRqIgQgA0kNAAsLIAJBA3EhAgsCQCADIAIgA2oiBU8NACACQQdxIgQEQANAIAMgAToAACADQQFqIQMgBEEBayIEDQALCyACQQFrQQdJDQADQCADIAE6AAAgA0EHaiABOgAAIANBBmogAToAACADQQVqIAE6AAAgA0EEaiABOgAAIANBA2ogAToAACADQQJqIAE6AAAgA0EBaiABOgAAIANBCGoiAyAFRw0ACwsgAAudAwIGfwF+QTggAUH/AXEiASABQThPGyECAkAgACgCECIEIAAtABQiAWoiA0EASgRAIAIgA0sNAQJAIARBAEwgASACT3INAANAIARBAWsiBUEDdiEGQcAAIAFBB2oiB0F4cWshAwJAIAVBP00EQCAAIAYgAxCIASAAKAIQIQQgAC0AFCEBDAELAkAgACgCBCIFIAYgB0H4AXFBA3ZqQQdrIgZPBEAgBSAGayIFQQdLDQFBCCAFQcTewQAQqwQACyAGIAVB1N7BABCqBAALIAAgASADaiIBOgAUIAAgBCADQf8BcWsiBDYCECAAIAAoAgAgBmopAAA3AwgLIAFB/wFxIAJPDQEgBEEASg0ACwsgACABIAJrIgE6ABRCfyACrYZCf4UgACkDCCABQT9xrYiDDwsgACAEIAJrNgIQQgAPCyACIANrIQICQCADQf8BcSABSwRAIAAgAxBbIQggACgCECEEDAELIAAgASADayIBOgAUQn8gA62GQn+FIAApAwggAUE/ca2IgyEICyAAIAQgAms2AhAgCCACQT9xrYYLnAMBBX8CQEERQQAgAEGvsARPGyIBIAFBCHIiASAAQQt0IgIgAUECdEH82sIAaigCAEELdEkbIgEg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AEEEaiACKAIEIAIoAggQPUHcoMIAIAAoAgggACgCBCICGyEDQQkgACgCDCACGwshAiADIAIgARDaASAAQRBqJAALZgAjAEEwayIAJABBhOXCAC0AAARAIABBAjYCDCAAQYyhwgA2AgggAEIBNwIUIAAgATYCLCAAIABBLGqtQoCAgIAQhDcDICAAIABBIGo2AhAgAEEIakG0ocIAEKQDAAsgAEEwaiQAC2EBAX8jAEEwayICJAAgAiAANgIMIAJBAjYCFCACQZymwQA2AhAgAkIBNwIcIAIgAkEMaq1CgICAgOA0hDcDKCACIAJBKGo2AhggASgCHCABKAIgIAJBEGoQRSACQTBqJAALYQEBfyMAQTBrIgIkACACIAA2AgwgAkECNgIUIAJB5K7BADYCECACQgE3AhwgAiACQQxqrUKAgICA4DSENwMoIAIgAkEoajYCGCABKAIcIAEoAiAgAkEQahBFIAJBMGokAAthAQF/IwBBMGsiAiQAIAIgADYCDCACQQE2AhQgAkHwp8EANgIQIAJCATcCHCACIAJBDGqtQoCAgICQOIQ3AyggAiACQShqNgIYIAEoAhwgASgCICACQRBqEEUgAkEwaiQAC18BAn8CQCAAKAIAIgFB7f///wdqIgJBCk0gAkEDR3ENACABRSABQfv///8HaiICQQ1NIAJBAkdxIAFBg4CAgHhHIAFBhICAgHhMcXJyDQAgACgCBCABQQJ0QQQQpwQLC1wBA38gAC0AACIBQQNLIAFBA0dyRQRAIAAoAgQiACgCACEBIABBBGooAgAiAygCACICBEAgASACEQMACyADKAIEIgIEQCABIAIgAygCCBCnBAsgAEEMQQQQpwQLC2sBAn9BqJbAACECAkACQAJAAkAgAS0AACIDQQNrQQAgA0EEa0H/AXFBA0kbQQFrDgMAAQIDC0EAIQEMAgsgAUEBaiEBQdStwAAhAgwBCyABQQRqIQFBkK7AACECCyAAIAI2AgQgACABNgIAC2gBA38CQAJAAkACQEEDIAEoAgBB7f///wdqIgQgBEELTxtBAmsOAwABAgMLIAFBBGohAkGcm8AAIQMMAgtB2LPAACEDIAEhAgwBCyABQQRqIQJBjLXAACEDCyAAIAM2AgQgACACNgIAC2sBAn9B1LfAACECAkACQAJAAkAgAS0AACIDQQNrQQAgA0EE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AX8jAEEQayICJAAgAiAANgIMIAFB8b3AAEEWQYe+wABBAyACQQxqQay7wAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBic7AAEEbQcC8wABBAyACQQxqQay7wAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBrODAAEERQb3gwABBBCACQQxqQZzgwAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBweDAAEEWQdfgwABBAyACQQxqQfjawAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFB8fDAAEEbQZDfwABBAyACQQxqQfjawAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFB8IjBAEERQYGJwQBBBCACQQxqQeCIwQAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBhYnBAEEWQZuJwQBBAyACQQxqQcCGwQAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBhZfBAEEbQdSHwQBBAyACQQxqQcCGwQAQyQEgAkEQaiQACzwBAX8jAEEQayICJAAgAkGQksIANgIMIAIgADYCCCACQQhqQZSSwgAgAkEMakGUksIAIAFB5J/CABBrAAs4AQF/IwBBEGsiAiQAIAIgADYCDCABQeywwgBBDUH5sMIAQQQgAkEMakHcsMIAEMkBIAJBEGokAAs5AQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIakGswsIAIANBDGpBrMLCACACQeyOwgAQawALMAEBfyMAQRBrIgIkACACQQhqIAAQ8wIgAigCCCABIAIoAgwoAhARAAAgAkEQaiQACzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEMUBDwsgACABEPwBDwsgACABEP0BCzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEK0EDwsgACABEIQCDwsgACABEIMCCzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEKkDDwsgACABEIQCDwsgACABEIMCCzMBAX8jAEEQayICJAAgAiAAKAIANgIMIAFB7IfBAEEMIAJBDGpB3IfBABB/IAJBEGokAAszAQF/IwBBEGsiAiQAIAIgACgCADYCDCABQejUwQBBDCACQQxqQdjUwQAQfyACQRBqJAALLQACQCAAIAEQrANFDQAgAARAQYXlwgAtAAAaIAAgARD1AyIBRQ0BCyABDwsACzcBAX8jAEEgayIBJAAgAUEANgIYIAFBATYCDCABQdzZwgA2AgggAUIENwIQIAFBCGogABCkAwALMwEBfyAAKAIAIgFBhICAgHhMIAFBg4CAgHhHcSABRXJFBEAgACgCBCABQQJ0QQQQpwQLCzABAX8jAEEQayICJAAgAiAANgIMIAFBxJnAAEEMIAJBDGpBtJnAABB/IAJBEGokAAsvACAAQZybwAA2AgQgACABIAFBACABLQAAQQJrQf8BcSIAQQFGGyAAQQJLGzYCAAswAQF/IwBBEGsiAiQAIAIgADYCDCABQdi8wABBDCACQQxqQci8wAAQfyACQRBqJAALLwAgAEGwvsAANgIEIAAgASABQQAgAS0AAEECa0H/AXEiAEEBRhsgAEECSxs2AgALMAEBfyMAQRBrIgIkACACIAA2AgwgAUGo38AAQQwgAkEMakGY38AAEH8gAkEQaiQACy8AIABBgOHAADYCBCAAIAEgAUEAIAEtAABBAmtB/wFxIgBBAUYbIABBAksbNgIACy8AIABBxInBADYCBCAAIAEgAUEAIAEtAABBAmtB/wFxIgBBAUYbIABBAksbNgIACzABAX8jAEEQayICJAAgAiAANgIMIAFB7IfBAEEMIAJBDGpB3IfBABB/IAJBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQfyVwgBBCxCmAyACEK4CIABBEGokAAuEAQEDfyMAQSBrIgQkACAEQQhqIgMQ8AECf0GF5cIALQAAGkEkQQQQ9QMiAgRAIAJB5LrAADYCACACIAE2AiAgAiAANgIcIAIgAykCADcCBCACQQxqIANBCGopAgA3AgAgAkEUaiADQRBqKQIANwIAIAIMAQtBBEEkENMEAAsgBEEgaiQACzgBAX9BASEBIAAtAARFBEAgACgCACIBKAIcQY7EwgBBASABKAIgKAIMEQIAIQELIAAgAToABCABC5ABAQN/IwBBIGsiAyQAIANBCGoiAhDwAQJ/QYXlwgAtAAAaQShBBBD1AyIBBEAgAUGcgsAANgIAIAEgAikCADcCBCABIAApAgA3AhwgAUEMaiACQQhqKQIANwIAIAFBFGogAkEQaikCADcCACABQSRqIABBCGooAgA2AgAgAQwBC0EEQSgQ0wQACyADQSBqJAALhgECAn8BfiMAQSBrIgIkACACQQhqIgEQ8AECf0GF5cIALQAAGiAAKQIAIQNBJEEEEPUDIgAEQCAAQci6wAA2AgAgACADNwIcIAAgASkCADcCBCAAQQxqIAFBCGopAgA3AgAgAEEUaiABQRBqKQIANwIAIAAMAQtBBEEkENMEAAsgAkEgaiQAC5kSAhd/EH0QaSIMIAkmASMAQfAAayILJAAgCyAMNgIsIAsgCDYCKCALIAc4AiQgCyAGOAIgIAsgBTgCHCALIAQ4AhggCyADOAIUIAsgAjgCECALIAE4AgwgCyAAOAIIIAsgCkEARzoAMyALQQA2AjwgC0KAgICAwAA3AjQgCyALQSRqNgJsIAsgC0EgajYCaCALIAtBHGo2AmQgCyALQRhqNgJgIAsgC0EUajYCXCALIAtBEGo2AlggCyALQQxqNgJUIAsgC0EIajYCUCALIAtBNGo2AkwgCyALQTNqNgJIIAsgC0EsajYCRCALIAtBKGo2AkAgC0FAayIeIQgjAEEgayIMJAACQAJAAkBBAEGIh8AAKAIAEQQAIhIEQCASKAIADQIgCCgCLCEUIAgoAighFSAIKAIkIRYgCCgCICEXIAgoAhwhGCAIKAIYIRkgCCgCFCEaIAgoAhAhGyAIKAIMIQ8gCCgCCCEfIAgoAgQhICAIKAIAIRwgEkF/NgIAIBIgHCgCACINBH8gEkEMaigCACEdIBJBCGooAgAhCgNAIAwgICATQQJ0IBNBgIAEIA0gE2siCCAIQYCABE8bIghqIhNBAnQQqQQ2AgQgCEECdCINIB1LDQMgDEEEaiAKIA0QzAICQCAfLQAARQRAIAwgGSoCADgCECAMIBoqAgA4AgwgDCAbKgIAOAIIIAwgFioCADgCHCAMIBcqAgA4AhggDCAYKgIAOAIUIAohCCAVKgIAISQgFCoCACEjIwBBEGsiECQAIA0EQCAMQRRqIg4qAgAiACAAlCAOKgIEIgEgAZSSIA4qAggiAiAClJIhAyAMQQhqIg4qAgghIiAOKgIEISUgDioCACEmA0BBBCANIA1BBE8bIQ4CQCAILQADs0MAAH9DlUPNzMw9XQ0AIBBBBGogCCAOEEEgDUEDSwRAIAAgJiAQKgIEkyIElCABICUgECoCCJMiBZSSIAIgIiAQKgIMkyIGlJIiByAHlCADIAQgBJQgBSAFlJIgBiAGlJIgCCgCDCIREKUDIBFBCHYQpQOSIBFBEHYQpQOSQwAAQECVIgQgBJSTlJMiBEMAAAAAXQ0BIAeMIASRkyADlSIEICRgRSAEICNfRXINASAPKAIIIhEgDygCAEYEQCAPQdyMwAAQtAELIA8oAgQgEUECdGogBDgCACAPIBFBAWo2AggMAQtBAyAOQZyNwAAQrQIACyAIIA5BAnRqIQggDSAOayINDQALCwwBCyAMIBkqAgA4AhAgDCAaKgIAOAIMIAwgGyoCADgCCCAMIBYqAgA4AhwgDCAXKgIAOAIYIAwgGCoCADgCFCAKIQggFSoCACEtIBQqAgAhLiMAQRBrIhAkACANBEAgDEEUaiIOKgIAISUgDioCBCEmIA4qAgghKyAMQQhqIg4qAgghLyAOKgIEITAgDioCACExA0BBBCANIA1BBE8bIQ4CQCAILQADs0MAAH9DlUPNzMw9XQ0AIBBBBGogCCAOEEECQCANQQNLBEAgECoCDCEoIBAqAgghKSAQKgIEISogCCgCDCIREKUDIQMgEUEIdhClAyEEIBFBEHYQpQMhBSArIAgoAggiIUEYdbJDAAD+QpUiACAmIBFBGHWyQwAA/kKVIgGUICsgAJSTIiOUICFBEHbAskMAAP5ClSICICsgApQgJSABlJMiIpSTICUgAJQgJiAClJMiJ0MAAIA/IAIgApSTIAAgAJSTIAEgAZSTQwAAAAAQ1QORIgaUkiIHIAeSkiEHICYgAiAnlCABICOUkyAiIAaUkiIkICSSkiEkICUgASAilCAAICeUkyAjIAaUkiIjICOSkiEjIC8gKJMiIiAAIDAgKZMiJyABlCAiIACUkyIolCACICIgApQgMSAqkyIpIAGUkyIqlJMgKSAAlCAnIAKUkyIsIAaUkiIiICKSkiEiICcgAiAslCABICiUkyAqIAaUkiICIAKSkiECICkgASAqlCAAICyUkyAoIAaUkiIAIACSkiEAIAUgAyAEENUDIAUQ1QNDCtcjPJQiAV1FBEAgASAEXkUEQCABIANeRQRAQwAAgD8gBZUiBSAilCIBIAUgB5QiBZRDAACAPyADlSIDIACUIgAgAyAjlCIDlEMAAIA/IASVIgQgApQiAiAEICSUIgSUkpIiBiAGlCAFIAWUIAMgA5QgBCAElJKSIgMgASABlCAAIACUIAIgApSSkkMAAIC/kpSTIgBDAAAAAF0NBSAGjCAAkZMgA5UhAAwECyAji0O9N4Y1XQ0EIAIgJCAAjCAjlSIAlJIgBJUiASABlCAiIAcgAJSSIAWVIgEgAZSSQwAAgD9eRQ0DDAQLICSLQ703hjVdDQMgACAjIAKMICSVIgCUkiADlSIBIAGUICIgByAAlJIgBZUiASABlJJDAACAP14NAwwCCyAHi0O9N4Y1XQ0CIAAgIyAijCAHlSIAlJIgA5UiASABlCACICQgAJSSIASVIgEgAZSSQwAAgD9eRQ0BDAILQQMgDkGcjcAAEK0CAAsgACAtYEUgACAuX0VyDQAgDygCCCIRIA8oAgBGBEAgD0HsjMAAELQBCyAPKAIEIBFBAnRqIAA4AgAgDyARQQFqNgIICyAIIA5BAnRqIQggDSAOayINDQALCwsgEEEQaiQAIAwoAgQiCEGEAU8EQCAIEMYBCyATIBwoAgAiDUkNAAsgEigCAEEBagVBAAs2AgAgDEEgaiQADAMLENICAAsgDSAdQciLwAAQqwQACxDTAgALIAsoAjwQGCEJEGkiCCAJJgEgCyAINgJAIAsoAjghECALKAI8IQwjAEEgayIKJAAgCiAeKAIAIhIlARASIg02AgAgCiAMNgIEAkAgDCANRgRAEO0DIg0Q3AMiDyUBIBAgDBAQIQkQaSIMIAkmASANQYQBTwRAIA0QxgELIA9BhAFPBEAgDxDGAQsgEiUBIAwlAUEAEBEgDEGEAU8EQCAMEMYBCyAKQSBqJAAMAQsgCkEANgIIIAogCkEEaiAKQQhqEIwDAAsgCygCNCIKBEAgCygCOCAKQQJ0QQQQpwQLIAsoAiwiCkGEAU8EQCAKEMYBCyALQfAAaiQAIAglASAIEMYBC/wBAgJ/AX4jAEEQayICJAAgAkEBOwEMIAIgATYCCCACIAA2AgQjAEEQayIBJAAgAkEEaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCDCEDAkACQAJAAkAgAigCBA4CAAECCyADDQFBASECQQAhAwwCCyADDQAgAigCACICKAIEIQMgAigCACECDAELIABBgICAgHg2AgAgACABNgIMIABBhKLCACABKAIEIAEoAggiAC0ACCAALQAJEMEBAAsgACADNgIEIAAgAjYCACAAQeihwgAgASgCBCABKAIIIgAtAAggAC0ACRDBAQALKgAgAEH/AXFFBEBDAAAAAA8LIABBAWtB/wFxs0NFIpE9lEMAABDBkhBSCy0AIAEoAhwgAiADIAEoAiAoAgwRAgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAsyAQF/IAEoAhxBvMHCAEEBIAEoAiAoAgwRAgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAshAAJAIAEgAxCsAwRAIAAgASADIAIQ3wMiAA0BCwALIAALIgEBfyAAKAIAIgAgAEEfdSICcyACayAAQX9zQR92IAEQbAslACAARQRAQfiPwgBBMhDIBAALIAAgAiADIAQgBSABKAIQEQsACygAIAEgACgCAC0AAEECdCIAQeC8wgBqKAIAIABBzLzCAGooAgAQ5QMLGQEBf0GAgICAeCABayAATyACIAFpQQFGGwslACABIAAtAABBAnQiAEH8tcAAaigCACAAQey1wABqKAIAEOUDCyUAIABBnJvAADYCBCAAIAFBBGpBACABKAIAQYKAgIB4Rhs2AgALIQAgAEHwosAANgIEIAAgAUEBakEAIAEtAABBAkYbNgIACyUAIAEgAC0AAEECdCIAQZDZwABqKAIAIABBgNnAAGooAgAQ5QMLJQAgAEGwvsAANgIEIAAgAUEEakEAIAEoAgBBgoCAgHhGGzYCAAshACAAQYTGwAA2AgQgACABQQFqQQAgAS0AAEECRhs2AgALJQAgASAALQAAQQJ0IgBB+PvAAGooAgAgAEHo+8AAaigCABDlAwslACAAQYDhwAA2AgQgACABQQRqQQAgASgCAEGCgICAeEYbNgIACyEAIABBsOjAADYCBCAAIAFBAWpBACABLQAAQQJGGzYCAAshACAAQbSOwQA2AgQgACABQQFqQQAgAS0AAEECRhs2AgALJQAgAEHEicEANgIEIAAgAUEEakEAIAEoAgBBgoCAgHhGGzYCAAslACABIAAtAABBAnQiAEGMosEAaigCACAAQfyhwQBqKAIAEOUDCyMAIABFBEBB+I/CAEEyEMgEAAsgACACIAMgBCABKAIQEQcACyMAIABFBEBB+I/CAEEyEMgEAAsgACACIAMgBCAB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BBD1AyILBEACQEGF5cIALQAAGkGACEEEEPUDIghFDQJBheXCAC0AABpBgAhBBBD1AyIERQ0AQYXlwgAtAAAaQYAIQQQQ9QMiDkUNAkGF5cIALQAAGkGACEEEEPUDIgxFDQBBheXCAC0AABpBgAhBBBD1AyISRQ0CIANCADcDqAIgA0EBNgLoASADQQA6AOQBIANBADoA4gEgA0EAOgDgASADQTQ7AdwBIANBADYC2AEgAyASNgLUASADQoCAgICAIDcCzAEgAyAMNgLIASADQoCAgICAIDcDwAEgA0KAgICAwAA3A7gBIANBIzsBtAEgA0EANgKwASADIA42AqwBIANCgICAgIAgNwKkASADIAQ2AqABIANCgICAgIAgNwOYASADQoCAgIDAADcDkAEgA0EfOwGMASADQQA2AogBIAMgCDYChAEgA0KAgICAgCA3AnwgAyALNgJ4IANCgICAgIAgNwNwIANCgICAgMAANwNoIANBwAJqQgA3AwAgA0G4AmpCADcDACADQbACakIANwMAIANB/AFqQQA2AgAgA0H0AWpCADcCACADQgA3AuwBIANC1uuC7ur9ifXgADcDgAIgA0LP1tO+0ser2UI3A4gCIANCADcDkAIgA0L56tDQ58mh5OEANwOYAiADQgA3A6ACIANBADYCyAIgA0IANwPQAiADIAY2AtgCIANBADYC5AIgA0EINgKUAyADQoCAgIAQNwLcAiADQoGAgIDAADcCjAMgA0EANgKIAyADQoCAgIAQNwPoAiADQgA3A/ACIANCBDcD+AIgA0KAgICAEDcDgAMMAwsLQQRBgAhBzIDCABDXAwALQQRBgAhB3IDCABDXAwALIAdBADYCqAcgB0EANgKwByAHQQA6ANwKIAdBADYC2AogByAjNwPQCiAHKQOoByEgIAcpA7AHISMgB0HoA2oiBiADQagDEDsaIAdBCGoQSSAHICM3AyggByAgNwMgIAcgITcDGCAHIA02AgwgByAiPgIQIAcgIkIgiD4CFCAHIAU2AgggB0EwaiAGQagDEDshCCAFQQFxBEBBDCEQIAcoAtgDIhJFDQEgBygC3AMhFwNAIBJB1AFrIQQgEkEEaiEGIBIvAd4WIgNBAnQhC0F/IQUCQAJAA0AgC0UEQCADIQUMAgsgBigCACEOIAVBAWohBSAEQYQCaiEEIAtBBGsh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EwAgAEHMuMAANgIEIAAgATYCAAsTACAAQYi5wAA2AgQgACABNgIACxMAIABBxLnAADYCBCAAIAE2AgALEwAgAEGAusAANgIEIAAgATYCAAsTACAAQbC+wAA2AgQgACABNgIACxMAIABBKDYCBCAAQYjbwAA2AgALEwAgAEGA4cAANgIEIAAgATYCAAshACAAQqTFo/yfjvDjADcDCCAAQqqooLmusOaw6QA3AwALEAAgACgCACAAKAIEIAEQMAsRACAAKAIAIAAoAgQgARDVBAsiACAAQsuH6/rgqLu20AA3AwggAELEr9zF2tKv9bh/NwMACxMAIABBKDYCBCAAQcCFwQA2AgALEwAgAEHEicEANgIEIAAgATYCAAsgACAAQrz8k7Ko16DsTDcDCCAAQuuYqJm2gbKefzcDAAshACAAQriynYTMrpfUQjcDCCAAQu/Dv6KOjcrEoH83AwALIAAgAEKcnaLxgrvwoHU3AwggAELRqsqvpcqt8kA3AwALIQAgAEL7wqCWlfy/yHo3AwggAELmsfLlkYe/ybF/NwMACyIAIABC9auQ77TsvKaWfzcDCCAAQrHh7P30uYbLwgA3AwALIAAgAELNnq77nqC2sEE3AwggAELxps+Y0aSn/gE3AwALIAAgAEK3v8ue+N2SoEM3AwggAEKvuaX0x5vV+zA3AwALIQAgAEKWl7rs79nZo3Q3AwggAEKH+OXLhuPSwtQANwMACyEAIABC/O6Qyq7osdU1NwMIIABC2OvVj+a1zN2OfzcDAAshACAAQrzprN2Y1v7ui383AwggAEKk3Nqt0/nNwEU3AwALIQAgAELl6obQ6cP/7Xk3AwggAEL30OLk1cPQ6ad/NwMACyEAIABC5sHsgPKk3YtlNwMIIABChu7u8+efmIeefzcDAAshACAAQs7Is8mT6a+2pX83AwggAELt66KMv7HLkg83AwALIgAgAEKcrtGn56WAwMIANwMIIABC16rLiaf+wYLHADcDAAsiACAAQt3+weC9o+rogn83AwggAEKX2/aYrfP7zY5/NwMACyEAIABCgsDc4LCv07mnfzcDCCAAQpbk17fDtcOKAzcDAAshACAAQrvV0cb1jfDEkH83AwggAELVi9bpuKS4kXk3AwALIQAgAEKynOer2rGju98ANwMIIABCvfif/8L+hsNVNwMACyIAIABC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ZXJFcnJvcgAAAAAEAAAABAAAAE4AAABGcmFtZUhlYWRlckVycm9yV2luZG93U2l6ZVRvb0JpZwAAAAAEAAAABAAAAE8AAABEaWN0aW9uYXJ5RGVjb2RlRXJyb3IAAAAAAAAABAAAAAQAAABQAAAARmFpbGVkVG9SZWFkQmxvY2tIZWFkZXIAAAAAAAQAAAAEAAAAUQAAAEZhaWxlZFRvUmVhZEJsb2NrQm9keQAAAAAAAAAEAAAABAAAAFIAAABGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAAAAQAAAAEAAAAUwAAAEZTRURlY29kZXJFcnJvcgAAAAAABAAAAAQAAABUAAAARlNFVGFibGVFcnJvclNvdXJjZUlzRW1wdHlOb3RFbm91Z2hCeXRlc0ZvcldlaWdodHNnb3RfYnl0ZXNleHBlY3RlZF9ieXRlcwAAAAAAAAAEAAAABAAAAFUAAABFeHRyYVBhZGRpbmdza2lwcGVkX2JpdHNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c2hhdmVGU0VUYWJsZVVzZWRUb29NYW55Qnl0ZXN1c2VkYXZhaWxhYmxlX2J5dGVzTm90RW5vdWdoQnl0ZXNJblNvdXJjZVdlaWdodEJpZ2dlclRoYW5NYXhOdW1CaXRzTWF4Qml0c1Rvb0hpZ2gAAAAAAQAAAAEAAABWAAAAAAAAAAEAAAABAAAAVwAAAFYAAABgERAAWAAAAFkAAABaAAAAWwAAAFwAAABVbnN1cHBvcnRlZE9mZnNldG9mZnNldF9jb2RlWmVyb09mZnNldE5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzAAAAAAAEAAAABAAAAF0AAABFeHRyYUJpdHNiaXRzX3JlbWFpbmluZ01pc3NpbmdDb21wcmVzc2lvbk1vZGVNaXNzaW5nQnl0ZUZvclJsZUxsVGFibGVNaXNz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ZXJFcnJvcgAAAAAEAAAABAAAAE4AAABGcmFtZUhlYWRlckVycm9yV2luZG93U2l6ZVRvb0JpZwAAAAAEAAAABAAAAE8AAABEaWN0aW9uYXJ5RGVjb2RlRXJyb3IAAAAAAAAABAAAAAQAAABQAAAARmFpbGVkVG9SZWFkQmxvY2tIZWFkZXIAAAAAAAQAAAAEAAAAUQAAAEZhaWxlZFRvUmVhZEJsb2NrQm9keQAAAAAAAAAEAAAABAAAAFIAAABGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAAAAQAAAAEAAAAUwAAAEZTRURlY29kZXJFcnJvcgAAAAAABAAAAAQAAABUAAAARlNFVGFibGVFcnJvclNvdXJjZUlzRW1wdHlOb3RFbm91Z2hCeXRlc0ZvcldlaWdodHNnb3RfYnl0ZXNleHBlY3RlZF9ieXRlcwAAAAAAAAAEAAAABAAAAFUAAABFeHRyYVBhZGRpbmdza2lwcGVkX2JpdHNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c2hhdmVGU0VUYWJsZVVzZWRUb29NYW55Qnl0ZXN1c2VkYXZhaWxhYmxlX2J5dGVzTm90RW5vdWdoQnl0ZXNJblNvdXJjZVdlaWdodEJpZ2dlclRoYW5NYXhOdW1CaXRzTWF4Qml0c1Rvb0hpZ2gAAAAAAQAAAAEAAABWAAAAAAAAAAEAAAABAAAA/wAAAFYAAAD0IhAAAAEAAFkAAAABAQAAWwAAAAIBAABVbnN1cHBvcnRlZE9mZnNldG9mZnNldF9jb2RlWmVyb09mZnNldE5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzAAAAAAAEAAAABAAAAF0AAABFeHRyYUJpdHNiaXRzX3JlbWFpbmluZ01pc3NpbmdDb21wcmVzc2lvbk1vZGVNaXNzaW5nQnl0ZUZvclJsZUxsVGFibGVNaXNz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bEVuY29kaW5nSW52YWxpZENoYXJFbmNvZGluZwAAAAAAAAAEAAAABAAAAEEAAABJbnZhbGlkVGFnRW5jb2RpbmdEZXNlcmlhbGl6ZUFueU5vdFN1cHBvcnRlZFNpemVMaW1pdFNlcXVlbmNlTXVzdEhhdmVMZW5ndGgAAAAAAAQAAAAEAAAANQEAAEN1c3RvbU5vbmVTb21lUmF3UkxFQ29tcHJlc3NlZFJlc2VydmVkAAAAAAAABAAAAAQAAAA2AQAAVG9vTWFueUJpdHNudW1fcmVxdWVzdGVkX2JpdHNsaW1pdE5vdEVub3VnaFJlbWFpbmluZ0JpdHNyZXF1ZXN0ZWRyZW1haW5pbmdBY2NMb2dJc1plcm8AAAAAAAABAAAAAQAAADcBAABBY2NMb2dUb29CaWdnb3RtYXgAAAAAAAAEAAAABAAAAEMAAABHZXRCaXRzRXJyb3IAAAAABAAAAAQAAAA4AQAAAAAAAAQAAAAEAAAARQAAAFByb2JhYmlsaXR5Q291bnRlck1pc21hdGNoZXhwZWN0ZWRfc3Vtc3ltYm9sX3Byb2JhYmlsaXRpZXNUb29NYW55U3ltYm9scwAAAAAEAAAABAAAAEYAAABCbG9ja1NpemVUb29MYXJnZXNpemVJbnZhbGlkQmxvY2t0eXBlTnVtYmVybnVtVGFibGVJc1VuaW5pdGlhbGl6ZWQAAAAAAAAMAAAABAAAAEcAAAAAAAAADAAAAAQAAAA5AQAARwAAAHAwEAA6AQAASQAAADsBAABKAAAAPAEAAAAAAAAEAAAABAAAAEsAAABXaW5kb3dUb29CaWdXaW5kb3dUb29TbWFsbAAAAAAAAAQAAAAEAAAATAAAAEZyYW1lRGVzY3JpcHRvckVycm9yRGljdElkVG9vU21hbGxleHBlY3RlZE1pc21hdGNoZWRGcmFtZVNpemVGcmFtZVNpemVJc1plcm9JbnZhbGlkRnJhbWVTaXplTm90RW5vdWdoQnl0ZXNJbkRpY3Rpb25hcnluZWVkT2Zmc2V0VG9vQmlnb2Zmc2V0YnVmX2xlbgAAAAAABAAAAAQAAABNAAAAUmVhZEZyYW1lSGVhZGVyRXJyb3IAAAAABAAAAAQAAABOAAAARnJhbWVIZWFkZXJFcnJvcldpbmRvd1NpemVUb29CaWcAAAAABAAAAAQAAABPAAAARGljdGlvbmFyeURlY29kZUVycm9yAAAAAAAAAAQAAAAEAAAAUAAAAEZhaWxlZFRvUmVhZEJsb2NrSGVhZGVyAAAAAAAEAAAABAAAAFEAAABGYWlsZWRUb1JlYWRCbG9ja0JvZHlGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAABAAAAAQAAABTAAAARlNFRGVjb2RlckVycm9yAAAAAAAEAAAABAAAAFQAAABGU0VUYWJsZUVycm9yU291cmNlSXNFbXB0eU5vdEVub3VnaEJ5dGVzRm9yV2VpZ2h0c2dvdF9ieXRlc2V4cGVjdGVkX2J5dGVzRXh0cmFQYWRkaW5nc2tpcHBlZF9iaXRzVG9vTWFueVdlaWdodHNNaXNzaW5nV2VpZ2h0c0xlZnRvdmVySXNOb3RBUG93ZXJPZjJOb3RFbm91Z2hCeXRlc1RvRGVjb21wcmVzc1dlaWdodHNoYXZlRlNFVGFibGVVc2VkVG9vTWFueUJ5dGVzdXNlZGF2YWlsYWJsZV9ieXRlc05vdEVub3VnaEJ5dGVzSW5Tb3VyY2VXZWlnaHRCaWdnZXJUaGFuTWF4TnVtQml0c01heEJpdHNUb29IaWdoAAAAAAAAAAEAAAABAAAAVgAAAAAAAAABAAAAAQAAAD0BAABWAAAAIDQQAD4BAABZAAAAPwEAAFsAAABAAQAAVW5zdXBwb3J0ZWRPZmZzZXRvZmZzZXRfY29kZVplcm9PZmZzZXROb3RFbm91Z2hCeXRlc0Zvck51bVNlcXVlbmNlcwAAAAAABAAAAAQAAABdAAAARXh0cmFCaXRzYml0c19yZW1haW5pbmdNaXNzaW5nQ29tcHJlc3Npb25Nb2RlTWlzc2luZ0J5dGVGb3JSbGVMbFRhYmxlTWlzc2luZ0J5dGVGb3JSbGVPZlRhYmxlTWlzc2luZ0J5dGVGb3JSbGVNbFRhYmxlAAAAQQEAAAwAAAAEAAAAXwAAAEEBAAAMAAAABAAAAEIBAABfAAAAKDUQAEMBAABiAAAAOwEAAGMAAAA8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YWxzbmVlZGVkAAAAAAAABAAAAAQAAABjAQAAQml0c3RyZWFtUmVhZE1pc21hdGNocmVhZF90aWxEZWNvZGVkTGl0ZXJhbENvdW50TWlzbWF0Y2hkZWNvZGVkAGQBAAAUAAAABAAAALQAAABkAQAAFAAAAAQAAABlAQAAtAAAAMQ8EABmAQAAtwAAADsBAAC4AAAAPAEAAAAAAAAMAAAABAAAALkAAAAAAAAADAAAAAQAAABnAQAAuQAAAAA9EAA6AQAAuwAAADsBAABKAAAAPAEAAGgBAAAYAAAABAAAAL0AAABoAQAAGAAAAAQAAABpAQAAvQAAADw9EABqAQAAwAAAADsBAADBAAAAPAEAAAAAAAAMAAAABAAAAMIAAAAAAAAADAAAAAQAAABrAQAAwgAAAHg9EABsAQAAxQAAADsBAADGAAAAPAEAAElsbGVnYWxMaXRlcmFsU2VjdGlvblR5cGVOb3RFbm91Z2hCeXRlc25lZWRfYXRfbGVhc3QDAAAAAwAAAAoAAAAIAAAA8i4QAPUuEAD4LhAAAi8QAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnMAAAAIPhAAbQAAACoCAAARAAAAYW4gYXJyYXkgb2YgbGVuZ3RoIDQAAAAAAAAAAAEAAABtAQBBtP3AAAv1KAEAAABtAQAAAAAAAAgAAAAEAAAAbgEAAHN0cnVjdCBXbGcwSGVhZGVyIHdpdGggNyBlbGVtZW50cwAAAMw+EAAhAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBPbmNlIHN0YXRl+D4QADwAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvb25jZS9ub190aHJlYWRzLnJzPD8QAHwAAAA1AAAAEgAAAGZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcgDIPxAAGwAAACUAAAACAAAA5D8QAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZGVjb2RpbmcvYmxvY2tfZGVjb2Rlci5yc0J1ZyBpbiB0aGlzIGxpYnJhcnkA+D8QAGwAAACYAAAAFgAAAFdyb25nIG51bWJlciBvZiBsaXRlcmFsczogLCBTaG91bGQgaGF2ZSBiZWVuOiAAAIhAEAAaAAAAokAQABQAAAD4PxAAbAAAAK0AAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogYnl0ZXNfdXNlZF9pbl9saXRlcmFsc19zZWN0aW9uID09IHVwcGVyX2xpbWl0X2Zvcl9saXRlcmFscyBhcyB1MzIA+D8QAGwAAACzAAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHUzMjo6ZnJvbShieXRlc19pbl9saXRlcmFsc19oZWFkZXIpICsgYnl0ZXNfdXNlZF9pbl9saXRlcmFsc19zZWN0aW9uICsKICAgICAgICAgICAgdTMyOjpmcm9tKGJ5dGVzX2luX3NlcXVlbmNlX2hlYWRlcikgKyByYXcubGVuKCkgYXMgdTMyID09CiAgICBoZWFkZXIuY29udGVudF9zaXplAAD4PxAAbAAAAMEAAAAJAAAA+D8QAGwAAAC6AAAAFwAAAPg/EABsAAAAiwAAABcAAABIb3cgZGlkIHlvdSBldmVuIGdldCB0aGlzLiBUaGUgZGVjb2RlciBzaG91bGQgZXJyb3Igb3V0IGlmIGl0IGRldGVjdHMgYSByZXNlcnZlZC10eXBlIGJsb2NrAPg/EABsAAAAcAAAABEAAABmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAkEIQABsAAAAlAAAAAgAAAKxCEABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5AAAAAAQAAAAEAAAAbwEAAAAAAAAEAAAABAAAAHABAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlblJhd1JMRUNvbXByZXNzZWRSZXNlcnZlZAAAAAAAAAAEAAAABAAAAEAAAABUb29NYW55Qml0c251bV9yZXF1ZXN0ZWRfYml0c2xpbWl0AAAAAAAABAAAAAQAAABBAAAATm90RW5vdWdoUmVtYWluaW5nQml0c3JlcXVlc3RlZHJlbWFpbmluZ0FjY0xvZ0lzWmVybwAAAAABAAAAAQAAAHEBAABBY2NMb2dUb29CaWdnb3RtYXgAAAAAAAAEAAAABAAAAEMAAABHZXRCaXRzRXJyb3IAAAAABAAAAAQAAAByAQAAAAAAAAQAAAAEAAAARQAAAFByb2JhYmlsaXR5Q291bnRlck1pc21hdGNoZXhwZWN0ZWRfc3Vtc3ltYm9sX3Byb2JhYmlsaXRpZXNUb29NYW55U3ltYm9scwAAAAAEAAAABAAAAEYAAABCbG9ja1NpemVUb29MYXJnZXNpemVJbnZhbGlkQmxvY2t0eXBlTnVtYmVybnVtVGFibGVJc1VuaW5pdGlhbGl6ZWQAAAAAAAAMAAAABAAAAEcAAAAAAAAADAAAAAQAAABzAQAARwAAALREEABKAAAASQAAAHQBAABKAAAAdQEAAAAAAAAEAAAABAAAAEsAAABXaW5kb3dUb29CaWdXaW5kb3dUb29TbWFsbAAAAAAAAAQAAAAEAAAATAAAAEZyYW1lRGVzY3JpcHRvckVycm9yRGljdElkVG9vU21hbGxleHBlY3RlZE1pc21hdGNoZWRGcmFtZVNpemVGcmFtZVNpemVJc1plcm9JbnZhbGlkRnJhbWVTaXplTm90RW5vdWdoQnl0ZXNJbkRpY3Rpb25hcnluZWVkT2Zmc2V0VG9vQmlnb2Zmc2V0YnVmX2xlbgAAAAAABAAAAAQAAABTAAAARlNFRGVjb2RlckVycm9yAAAAAAAEAAAABAAAAFQAAABGU0VUYWJsZUVycm9yU291cmNlSXNFbXB0eU5vdEVub3VnaEJ5dGVzRm9yV2VpZ2h0c2dvdF9ieXRlc2V4cGVjdGVkX2J5dGVzAAAAAAAAAAQAAAAEAAAAVQAAAEV4dHJhUGFkZGluZ3NraXBwZWRfYml0c1Rvb01hbnlXZWlnaHRzTWlzc2luZ1dlaWdodHNMZWZ0b3ZlcklzTm90QVBvd2VyT2YyTm90RW5vdWdoQnl0ZXNUb0RlY29tcHJlc3NXZWlnaHRzaGF2ZUZTRVRhYmxlVXNlZFRvb01hbnlCeXRlc3VzZWRhdmFpbGFibGVfYnl0ZXNOb3RFbm91Z2hCeXRlc0luU291cmNlV2VpZ2h0QmlnZ2VyVGhhbk1heE51bUJpdHNNYXhCaXRzVG9vSGlnaAAAAAABAAAAAQAAAFYAAAAAAAAAAQAAAAEAAAB2AQAAVgAAACRHEABbAAAAWQAAAHcBAABbAAAAeAEAAFVuc3VwcG9ydGVkT2Zmc2V0b2Zmc2V0X2NvZGVaZXJvT2Zmc2V0Tm90RW5vdWdoQnl0ZXNGb3JOdW1TZXF1ZW5jZXMAAAAAAAQAAAAEAAAAXQAAAEV4dHJhQml0c2JpdHNfcmVtYWluaW5nTWlzc2luZ0NvbXByZXNzaW9uTW9kZU1pc3NpbmdCeXRlRm9yUmxlTGxUYWJsZU1pc3NpbmdCeXRlRm9yUmxlT2ZUYWJsZU1pc3NpbmdCeXRlRm9yUmxlTWxUYWJsZQAAAHkBAAAMAAAABAAAAF8AAAB5AQAADAAAAAQAAAB6AQAAXwAAACxIEAB7AQAAYgAAAHQBAABjAAAAdQEAAAAAAAAQAAAACAAAAGQAAAAAAAAAEAAAAAgAAAB8AQAAZAAAAGhIEAB9AQAAZwAAAH4BAABoAAAAfwEAAIABAAAYAAAABAAAAGoAAACAAQAAGAAAAAQAAACBAQAAagAAAKRIEACCAQAAbQAAAHQBAABuAAAAdQEAAIMBAAAIAAAABAAAAHAAAACDAQAACAAAAAQAAACEAQAAcAAAAOBIEACFAQAAcwAAAHQBAAB0AAAAdQEAAIYBAAAYAAAABAAAAHYAAACGAQAAGAAAAAQAAACHAQAAdgAAABxJEACIAQAAeQAAAHQBAAB6AAAAdQEAAIkBAAAIAAAABAAAACUAAACJAQAACAAAAAQAAAAmAAAAJQAAAFhJEAAnAAAAKAAAACkAAAAqAAAAdQEAAAAAAAAMAAAABAAAAHsAAAAAAAAADAAAAAQAAACKAQAAewAAAJRJEACLAQAAfgAAAHQBAAB/AAAAdQEAAIwBAAAUAAAABAAAAIEAAACMAQAAFAAAAAQAAACNAQAAgQAAANBJEACOAQAAhAAAAHQBAACFAAAAdQEAAAAAAAAEAAAABAAAAFIAAABSZWFkRXJyb3JGb3VuZFJlc2VydmVkQmxvY2sAAAAAAAQAAAAEAAAAhgAAAEJsb2NrVHlwZUVycm9yAAAAAAAABAAAAAQAAACHAAAAQmxvY2tTaXplRXJyb3JCbG9ja0NvbnRlbnRSZWFkRXJyb3JNYWxmb3JtZWRTZWN0aW9uSGVhZGVyZXhwZWN0ZWRfbGVucmVtYWluaW5nX2J5dGVzAAAAAAQAAAAEAAAAiAAAAERlY29tcHJlc3NMaXRlcmFsc0Vycm9yAAAAAAAEAAAABAAAAIkAAABMaXRlcmFsc1NlY3Rpb25QYXJzZUVycm9yAAAAAAAAAAQAAAAEAAAAigAAAFNlcXVlbmNlc0hlYWRlclBhcnNlRXJyb3IAAAAAAAAABAAAAAQAAACLAAAARGVjb2RlU2VxdWVuY2VFcnJvcgAAAAAABAAAAAQAAACMAAAARXhlY3V0ZVNlcXVlbmNlc0Vycm9ySW52YWxpZEZyYW1lQ29udGVudFNpemVGbGFnTWFnaWNOdW1iZXJSZWFkRXJyb3JCYWRNYWdpY051bWJlckZyYW1lRGVzY3JpcHRvclJlYWRFcnJvckludmFsaWRGcmFtZURlc2NyaXB0b3JXaW5kb3dEZXNjcmlwdG9yUmVhZEVycm9yRGljdGlvbmFyeUlkUmVhZEVycm9yRnJhbWVDb250ZW50U2l6ZVJlYWRFcnJvclNraXBGcmFtZW1hZ2ljX251bWJlcmxlbmd0aAAAAAAAAAQAAAAEAAAAjQAAAEJhZE1hZ2ljTnVtAAAAAAAEAAAABAAAAI4AAABIdWZmbWFuVGFibGVFcnJvcgAAAAAAAAAEAAAABAAAAI8AAABEZWNvZGVidWZmZXJFcnJvck5vdEVub3VnaEJ5dGVzRm9yU2VxdWVuY2V3YW50ZWQAAAAAAQAAAAEAAACQAAAAAAAAAAEAAAABAAAAjwEAAJAAAADUTBAAWwAAAJIAAAB3AQAAWwAAAHgBAAAAAAAABAAAAAQAAACTAAAAAAAAAAQAAAAEAAAAkAEAAJMAAAAQTRAASgAAAJUAAAB0AQAASgAAAHUBAACRAQAAFAAAAAQAAACXAAAAkQEAABQAAAAEAAAAkgEAAJcAAABMTRAAkwEAAJoAAAB0AQAAmwAAAHUBAAAAAAAADAAAAAQAAACcAAAAAAAAAAwAAAAEAAAAlAEAAJwAAACITRAAlQEAAJ8AAAB0AQAAoAAAAHUBAAAAAAAACAAAAAQAAAChAAAAAAAAAAgAAAAEAAAAlgEAAKEAAADETRAASgAAAKMAAAB0AQAASgAAAHUBAACXAQAAFAAAAAQAAAClAAAAlwEAABQAAAAEAAAAmAEAAKUAAAAAThAAmQEAAKgAAAB0AQAAqQAAAHUBAAAAAAAADAAAAAQAAACqAAAAAAAAAAwAAAAEAAAAmgEAAKoAAAA8ThAAmwEAAK0AAAB0AQAArgAAAHUBAABEZWNvZGVyU3RhdGVJc0ZhaWxlZEV4cGVjdGVkSGVhZGVyT2ZQcmV2aW91c0Jsb2NrAAAAAAAAAAEAAAABAAAAnAEAAHN0ZXBzb3VyY2UAAAAAAAAEAAAABAAAALAAAABEZWNvbXByZXNzQmxvY2tFcnJvck1pc3NpbmdDb21wcmVzc2VkU2l6ZU1pc3NpbmdOdW1TdHJlYW1zAAAAAAAABAAAAAQAAACxAAAASHVmZm1hbkRlY29kZXJFcnJvclVuaW5pdGlhbGl6ZWRIdWZmbWFuVGFibGVNaXNzaW5nQnl0ZXNGb3JKdW1wSGVhZGVyTWlzc2luZ0J5dGVzRm9yTGl0ZXJhbHNuZWVkZWQAAAAAAAAEAAAABAAAAJ0BAABCaXRzdHJlYW1SZWFkTWlzbWF0Y2hyZWFkX3RpbERlY29kZWRMaXRlcmFsQ291bnRNaXNtYXRjaGRlY29kZWQAngEAABQAAAAEAAAAtAAAAJ4BAAAUAAAABAAAAJ8BAAC0AAAA2E8QAKABAAC3AAAAdAEAALgAAAB1AQAAAAAAAAwAAAAEAAAAuQAAAAAAAAAMAAAABAAAAKEBAAC5AAAAFFAQAEoAAAC7AAAAdAEAAEoAAAB1AQAAogEAABgAAAAEAAAAvQAAAKIBAAAYAAAABAAAAKMBAAC9AAAAUFAQAKQBAADAAAAAdAEAAMEAAAB1AQAAAAAAAAwAAAAEAAAAwgAAAAAAAAAMAAAABAAAAKUBAADCAAAAjFAQAMYAAADFAAAAdAEAAMYAAAB1AQAASWxsZWdhbExpdGVyYWxTZWN0aW9uVHlwZU5vdEVub3VnaEJ5dGVzbmVlZF9hdF9sZWFzdAMAAAADAAAACgAAAAgAAAAlQxAAKEMQACtDEAA1QxAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAAHFEQAGoAAACyAQAAMQAAAGFzc2VydGlvbiBmYWlsZWQ6IGZpbGxlZCA8PSBzZWxmLmJ1Zi5pbml0L1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9jb3JlL3NyYy9pby9ib3Jyb3dlZF9idWYucnMAAADBURAAdAAAAB0BAAAJAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnNIUhAAgAAAAFgCAAAwAAAASW52YWxpZCBGcmFtZV9Db250ZW50X1NpemVfRmxhZzsgSXM6ICwgU2hvdWxkIGJlIG9uZSBvZjogMCwgMSwgMiwgMwDYUhAAJQAAAP1SEAAeAEG0psEAC8piwAMAAHdpbmRvd19zaXplIGJpZ2dlciB0aGFuIGFsbG93ZWQgbWF4aW11bS4gSXM6ICwgU2hvdWxkIGJlIGxvd2VyIHRoYW46IAAAADhTEAAtAAAAZVMQABgAAAAABAAAAAAAAHdpbmRvd19zaXplIHNtYWxsZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0uIElzOiAsIFNob3VsZCBiZSBncmVhdGVyIHRoYW46IJhTEAAuAAAAxlMQABoAAAABAAAAAAAAAE5vdCBlbm91Z2ggYnl0ZXMgaW4gZGljdF9pZC4gSXM6ICwgU2hvdWxkIGJlOiAAAPhTEAAhAAAAGVQQAA0AAABmcmFtZV9jb250ZW50X3NpemUgZG9lcyBub3QgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoLiBJczogADhUEAA3AAAAGVQQAA0AAABmcmFtZV9jb250ZW50X3NpemUgd2FzIHplcm9JbnZhbGlkIGZyYW1lX2NvbnRlbnRfc2l6ZS4gSXM6ICwgU2hvdWxkIGJlIG9uZSBvZiAxLCAyLCA0LCA4IGJ5dGVzAACbVBAAIAAAALtUEAAjAAAARXJyb3Igd2hpbGUgcmVhZGluZyBtYWdpYyBudW1iZXI6IAAA8FQQACIAAABSZWFkIHdyb25nIG1hZ2ljIG51bWJlcjogMHgAHFUQABsAAABFcnJvciB3aGlsZSByZWFkaW5nIGZyYW1lIGRlc2NyaXB0b3I6IAAAQFUQACYAAABFcnJvciB3aGlsZSByZWFkaW5nIHdpbmRvdyBkZXNjcmlwdG9yOiAAcFUQACcAAABFcnJvciB3aGlsZSByZWFkaW5nIGRpY3Rpb25hcnkgaWQ6IACgVRAAIwAAAEVycm9yIHdoaWxlIHJlYWRpbmcgZnJhbWUgY29udGVudCBzaXplOiDMVRAAKAAAAFNraXBwYWJsZUZyYW1lIGVuY291bnRlcmVkIHdpdGggTWFnaWNOdW1iZXIgMHggYW5kIGxlbmd0aCAgYnl0ZXP8VRAALgAAACpWEAAMAAAANlYQAAYAAABFcnJvciB3aGlsZSByZWFkaW5nIHRoZSBibG9jayBoZWFkZXJSZXNlcnZlZCBibG9jayBvY2N1cmVkLiBUaGlzIGlzIGNvbnNpZGVyZWQgY29ycnVwdGlvbiBieSB0aGUgZG9jdW1lbnRhdGlvbkVycm9yIGdldHRpbmcgYmxvY2sgdHlwZTogwlYQABoAAABFcnJvciBnZXR0aW5nIGJsb2NrIGNvbnRlbnQgc2l6ZTogAADkVhAAIgAAAEludmFsaWQgQmxvY2t0eXBlIG51bWJlci4gSXM6ICBTaG91bGQgYmUgb25lIG9mOiAwLCAxLCAyLCAzICgzIGlzIHJlc2VydmVkIHRob3VnaAAAABBXEAAeAAAALlcQADMAAAAAAAIAQmxvY2tzaXplIHdhcyBiaWdnZXIgdGhhbiB0aGUgYWJzb2x1dGUgbWF4aW11bSAgKDEyOGtiKS4gSXM6IAAAAHhXEAAvAAAAp1cQAA4AAABFcnJvciB3aGlsZSByZWFkaW5nIHRoZSBibG9jayBjb250ZW50OiAAyFcQACcAAABNYWxmb3JtZWQgc2VjdGlvbiBoZWFkZXIuIFNheXMgbGl0ZXJhbHMgd291bGQgYmUgdGhpcyBsb25nOiAgYnV0IHRoZXJlIGFyZSBvbmx5ICBieXRlcyBsZWZ0APhXEAA8AAAANFgQABQAAABIWBAACwAAAENhbid0IGRlY29kZSBuZXh0IGJsb2NrIGlmIGZhaWxlZCBhbG9uZyB0aGUgd2F5LiBSZXN1bHRzIHdpbGwgYmUgbm9uc2Vuc2VDYW4ndCBkZWNvZGUgbmV4dCBibG9jayBib2R5LCB3aGlsZSBleHBlY3RpbmcgdG8gZGVjb2RlIHRoZSBoZWFkZXIgb2YgdGhlIHByZXZpb3VzIGJsb2NrLiBSZXN1bHRzIHdpbGwgYmUgbm9uc2Vuc2VFcnJvciB3aGlsZSByZWFkaW5nIGJ5dGVzIGZvciA6IAAnWRAAHgAAAEVZEAACAAAATmVlZCAgYnl0ZXMgZnJvbSB0aGUgZGljdGlvbmFyeSBidXQgaXQgaXMgb25seSAgYnl0ZXMgbG9uZwAAWFkQAAUAAABdWRAAKgAAAIdZEAALAAAAb2Zmc2V0OiAgYmlnZ2VyIHRoYW4gYnVmZmVyOiAAAACsWRAACAAAALRZEAAVAAAAQmFkIG1hZ2ljX251bSBhdCBzdGFydCBvZiB0aGUgZGljdGlvbmFyeTsgR290OiAsIEV4cGVjdGVkOiAA3FkQAC8AAAALWhAADAAAADekMOxTcGVjaWZpZWQgd2luZG93X3NpemUgaXMgdG9vIGJpZzsgUmVxdWVzdGVkOiAsIE1heDogLFoQAC0AAABZWhAABwAAAEZhaWxlZCB0byBwYXJzZS9kZWNvZGUgYmxvY2sgYm9keTogAHBaEAAjAAAARmFpbGVkIHRvIHBhcnNlIGJsb2NrIGhlYWRlcjogAACcWhAAHgAAAEZhaWxlZCB0byByZWFkIGNoZWNrc3VtOiAAAADEWhAAGQAAAERlY29kZXIgbXVzdCBpbml0aWFsaXplZCBvciByZXNldCBiZWZvcmUgdXNpbmcgaXREZWNvZGVyIGVuY291bnRlcmVkIGVycm9yIHdoaWxlIGluaXRpYWxpemluZzogABlbEAAuAAAARGVjb2RlciBlbmNvdW50ZXJlZCBlcnJvciB3aGlsZSBkcmFpbmluZyB0aGUgZGVjb2RlYnVmZmVyOiAAUFsQADsAAABGYWlsZWQgdG8gc2tpcCBieXRlcyBmb3IgdGhlIGxlbmd0aCBnaXZlbiBpbiB0aGUgZnJhbWUgaGVhZGVyVGFyZ2V0IG11c3QgaGF2ZSBhdCBsZWFzdCBhcyBtYW55IGJ5dGVzIGFzIHRoZSBjb250ZW50c2l6ZSBvZiB0aGUgZnJhbWUgcmVwb3J0c0ZyYW1lIGhlYWRlciBzcGVjaWZpZWQgZGljdGlvbmFyeSBpZCAweCB0aGF0IHdhc250IHByb3ZpZGVkIGJ5IGFkZF9kaWN0KCkgb3IgcmVzZXRfd2l0aF9kaWN0KCkAACBcEAAnAAAAR1wQADcAAABjb21wcmVzc2VkIHNpemUgd2FzIG5vbmUgZXZlbiB0aG91Z2ggaXQgbXVzdCBiZSBzZXQgdG8gc29tZXRoaW5nIGZvciBjb21wcmVzc2VkIGxpdGVyYWxzbnVtX3N0cmVhbXMgd2FzIG5vbmUgZXZlbiB0aG91Z2ggaXQgbXVzdCBiZSBzZXQgdG8gc29tZXRoaW5nICgxIG9yIDQpIGZvciBjb21wcmVzc2VkIGxpdGVyYWxzVHJpZWQgdG8gcmV1c2UgaHVmZm1hbiB0YWJsZSBidXQgaXQgd2FzIG5ldmVyIGluaXRpYWxpemVkTmVlZCA2IGJ5dGVzIHRvIGRlY29kZSBqdW1wIGhlYWRlciwgZ290IAAAfl0QACgAAAA2VhAABgAAAE5lZWQgYXQgbGVhc3QgIGJ5dGVzIHRvIGRlY29kZSBsaXRlcmFscy4gSGF2ZTogALhdEAAOAAAAxl0QACEAAAA2VhAABgAAAFBhZGRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2Vfc2VjdGlvbiB3YXMgbW9yZSB0aGFuIGEgYnl0ZSBsb25nOiAgYml0cy4gUHJvYmFibHkgY2F1c2VkIGJ5IGRhdGEgY29ycnVwdGlvbgAAXhAARgAAAEZeEAApAAAAQml0c3RyZWFtIHdhcyByZWFkIHRpbGw6ICwgc2hvdWxkIGhhdmUgYmVlbjogAAAAgF4QABkAAACZXhAAFAAAAERpZCBub3QgZGVjb2RlIGVub3VnaCBsaXRlcmFsczogLCBTaG91bGQgaGF2ZSBiZWVuOiDAXhAAIAAAAOBeEAAUAAAAU2VxdWVuY2Ugd2FudHMgdG8gY29weSB1cCB0byBieXRlIC4gQnl0ZXMgaW4gbGl0ZXJhbHNidWZmZXI6IAAAAARfEAAiAAAAJl8QABsAAABJbGxlZ2FsIG9mZnNldDogMCBmb3VuZERvIG5vdCBzdXBwb3J0IG9mZnNldHMgYmlnZ2VyIHRoYW4gMTw8MzI7IGdvdDogAABrXxAALwAAAFJlYWQgYW4gb2Zmc2V0ID09IDAuIFRoYXQgaXMgYW4gaWxsZWdhbCB2YWx1ZSBmb3Igb2Zmc2V0c0J5dGVzdHJlYW0gZGlkIG5vdCBjb250YWluIGVub3VnaCBieXRlcyB0byBkZWNvZGUgbnVtX3NlcXVlbmNlc2NvbXByZXNzaW9uIG1vZGVzIGFyZSBub25lIGJ1dCB0aGV5IG11c3QgYmUgc2V0IHRvIHNvbWV0aGluZ05lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBsbCB0YWJsZU5lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBvZiB0YWJsZU5lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBtbCB0YWJsZUlsbGVnYWwgbGl0ZXJhbHNzZWN0aW9udHlwZS4gSXM6ICwgbXVzdCBiZSBpbjogMCwgMSwgMiwgMwAAAMRgEAAhAAAA5WAQABgAAABOb3QgZW5vdWdoIGJ5dGUgdG8gcGFyc2UgdGhlIGxpdGVyYWxzIHNlY3Rpb24gaGVhZGVyLiBIYXZlOiAsIE5lZWQ6IBBhEAA8AAAATGEQAAgAAABzb3VyY2UgbXVzdCBoYXZlIGF0IGxlYXN0ICBieXRlcyB0byBwYXJzZSBoZWFkZXI7IGdvdCAAAGRhEAAaAAAAfmEQABwAAAA2VhAABgAAAEFjY2xvZyBtdXN0IGJlIGF0IGxlYXN0IDFGb3VuZCBGU0UgYWNjX2xvZzogIGJpZ2dlciB0aGFuIGFsbG93ZWQgbWF4aW11bSBpbiB0aGlzIGNhc2U6IADNYRAAEwAAAOBhEAArAAAAVGhlIGNvdW50ZXIgKCkgZXhjZWVkZWQgdGhlIGV4cGVjdGVkIHN1bTogLiBUaGlzIG1lYW5zIGFuIGVycm9yIG9yIGNvcnJ1cHRlZCBkYXRhIAogHGIQAA0AAAApYhAAHQAAAEZiEAAqAAAAVGhlcmUgYXJlIHRvbyBtYW55IHN5bWJvbHMgaW4gdGhpcyBkaXN0cmlidXRpb246IC4gTWF4OiAyNTYAiGIQADEAAAC5YhAACgAAAFRyaWVkIHRvIHVzZSBhbiB1bmluaXRpYWxpemVkIHRhYmxlIVNvdXJjZSBuZWVkcyB0byBoYXZlIGF0IGxlYXN0IG9uZSBieXRlSGVhZGVyIHNheXMgdGhlcmUgc2hvdWxkIGJlICBieXRlcyBmb3IgdGhlIHdlaWdodHMgYnV0IHRoZXJlIGFyZSBvbmx5ICBieXRlcyBpbiB0aGUgc3RyZWFtHmMQABwAAAA6YxAAKgAAAGRjEAAUAAAATW9yZSB0aGFuIDI1NSB3ZWlnaHRzIGRlY29kZWQgKGdvdCAgd2VpZ2h0cykuIFN0cmVhbSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAAJBjEAAjAAAAs2MQACcAAABDYW4ndCBidWlsZCBodWZmbWFuIHRhYmxlIHdpdGhvdXQgYW55IHdlaWdodHNMZWZ0b3ZlciBtdXN0IGJlIHBvd2VyIG9mIHR3byBidXQgaXM6IAAZZBAAJgAAAE5vdCBlbm91Z2ggYnl0ZXMgaW4gc3RyZWFtIHRvIGRlY29tcHJlc3Mgd2VpZ2h0cy4gSXM6IAAASGQQADYAAAAZVBAADQAAAEZTRSB0YWJsZSB1c2VkIG1vcmUgYnl0ZXM6ICB0aGFuIHdlcmUgbWVhbnQgdG8gYmUgdXNlZCBmb3IgdGhlIHdob2xlIHN0cmVhbSBvZiBodWZmbWFuIHdlaWdodHMgKCkAAACQZBAAGwAAAKtkEABFAAAA8GQQAAEAAABTb3VyY2UgbmVlZHMgdG8gaGF2ZSBhdCBsZWFzdCAgYnl0ZXMsIGdvdDogAAxlEAAeAAAAKmUQAA0AAAALQ2FudCBoYXZlIHdlaWdodDogIGJpZ2dlciB0aGFuIG1heF9udW1fYml0czogAABJZRAAEgAAAFtlEAAbAAAAbWF4X2JpdHMgZGVyaXZlZCBmcm9tIHdlaWdodHMgaXM6ICBzaG91bGQgYmUgbG93ZXIgdGhhbjogAAAAiGUQACIAAACqZRAAFwAAAENhbnQgc2VydmUgdGhpcyByZXF1ZXN0LiBUaGUgcmVhZGVyIGlzIGxpbWl0ZWQgdG8gIGJpdHMsIHJlcXVlc3RlZCAgYml0c9RlEAAyAAAABmYQABEAAAAXZhAABQAAAENhbid0IHJlYWQgIGJpdHMsIG9ubHkgaGF2ZSAgYml0cyBsZWZ0AAA0ZhAACwAAAD9mEAARAAAAUGYQAAoAAAAAAAAABAAAAAQAAADJAQAAAAAAAAQAAAAEAAAAygEAAFRvb01hbnlCaXRzbnVtX3JlcXVlc3RlZF9iaXRzbGltaXQAAAAAAAAEAAAABAAAAMsBAABOb3RFbm91Z2hSZW1haW5pbmdCaXRzcmVxdWVzdGVkcmVtYWluaW5nSW52YWxpZEZyYW1lQ29udGVudFNpemVGbGFnZ290AAAAAAAABAAAAAQAAADMAQAAV2luZG93VG9vQmlnV2luZG93VG9vU21hbGwAAAAAAAAEAAAABAAAAK4BAABGcmFtZURlc2NyaXB0b3JFcnJvckRpY3RJZFRvb1NtYWxsZXhwZWN0ZWRNaXNtYXRjaGVkRnJhbWVTaXplRnJhbWVTaXplSXNaZXJvSW52YWxpZEZyYW1lU2l6ZQAAAAAEAAAABAAAAM0BAABNYWdpY051bWJlclJlYWRFcnJvcgAAAAAEAAAABAAAAM4BAABCYWRNYWdpY051bWJlckZyYW1lRGVzY3JpcHRvclJlYWRFcnJvckludmFsaWRGcmFtZURlc2NyaXB0b3JXaW5kb3dEZXNjcmlwdG9yUmVhZEVycm9yRGljdGlvbmFyeUlkUmVhZEVycm9yRnJhbWVDb250ZW50U2l6ZVJlYWRFcnJvcgAAAAAABAAAAAQAAADPAQAAU2tpcEZyYW1lbWFnaWNfbnVtYmVybGVuZ3RoQmxvY2tDb250ZW50UmVhZEVycm9yTWFsZm9ybWVkU2VjdGlvbkhlYWRlcmV4cGVjdGVkX2xlbnJlbWFpbmluZ19ieXRlcwAAAAAAAAAEAAAABAAAALIBAABEZWNvbXByZXNzTGl0ZXJhbHNFcnJvcgAAAAAABAAAAAQAAACzAQAATGl0ZXJhbHNTZWN0aW9uUGFyc2VFcnJvcgAAAAAAAAAEAAAABAAAALQBAABTZXF1ZW5jZXNIZWFkZXJQYXJzZUVycm9yAAAAAAAAAAQAAAAEAAAAtQEAAERlY29kZVNlcXVlbmNlRXJyb3IAAAAAAAQAAAAEAAAAtgEAAEV4ZWN1dGVTZXF1ZW5jZXNFcnJvck5vdEVub3VnaEJ5dGVzSW5EaWN0aW9uYXJ5bmVlZE9mZnNldFRvb0JpZ29mZnNldGJ1Zl9sZW4AAAAABAAAAAQAAAC4AQAAQmFkTWFnaWNOdW0AAAAAAAQAAAAEAAAAuQEAAEZTRVRhYmxlRXJyb3IAAAAAAAAABAAAAAQAAAC6AQAASHVmZm1hblRhYmxlRXJyb3JNaXNzaW5nQ29tcHJlc3NlZFNpemVNaXNzaW5nTnVtU3RyZWFtcwAAAAAABAAAAAQAAADBAQAAR2V0Qml0c0Vycm9yAAAAAAQAAAAEAAAAwgEAAEh1ZmZtYW5EZWNvZGVyRXJyb3JVbmluaXRpYWxpemVkSHVmZm1hblRhYmxlTWlzc2luZ0J5dGVzRm9ySnVtcEhlYWRlck1pc3NpbmdCeXRlc0ZvckxpdGVyYWxzbmVlZGVkAAAAAAAABAAAAAQAAADQAQAARXh0cmFQYWRkaW5nc2tpcHBlZF9iaXRzAAAAAAQAAAAEAAAA0QEAAAAAAAAEAAAABAAAANIBAABCaXRzdHJlYW1SZWFkTWlzbWF0Y2hyZWFkX3RpbERlY29kZWRMaXRlcmFsQ291bnRNaXNtYXRjaGRlY29kZWQAAAAAAAQAAAAEAAAAxQEAAERlY29kZWJ1ZmZlckVycm9yTm90RW5vdWdoQnl0ZXNGb3JTZXF1ZW5jZXdhbnRlZGhhdmVaZXJvT2Zmc2V0AAAAAAAABAAAAAQAAADGAQAARlNFRGVjb2RlckVycm9yVW5zdXBwb3J0ZWRPZmZzZXRvZmZzZXRfY29kZU5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzRXh0cmFCaXRzYml0c19yZW1haW5pbmdNaXNzaW5nQ29tcHJlc3Npb25Nb2RlTWlzc2luZ0J5dGVGb3JSbGVMbFRhYmxlTWlzc2luZ0J5dGVGb3JSbGVPZlRhYmxlTWlzc2luZ0J5dGVGb3JSbGVNbFRhYmxlSWxsZWdhbExpdGVyYWxTZWN0aW9uVHlwZU5vdEVub3VnaEJ5dGVzAAAAAAEAAAABAAAA0wEAAG5lZWRfYXRfbGVhc3RBY2NMb2dJc1plcm9BY2NMb2dUb29CaWdtYXgAAAAABAAAAAQAAADHAQAAUHJvYmFiaWxpdHlDb3VudGVyTWlzbWF0Y2hleHBlY3RlZF9zdW1zeW1ib2xfcHJvYmFiaWxpdGllc1Rvb01hbnlTeW1ib2xzVGFibGVJc1VuaW5pdGlhbGl6ZWRTb3VyY2VJc0VtcHR5Tm90RW5vdWdoQnl0ZXNGb3JXZWlnaHRzZ290X2J5dGVzZXhwZWN0ZWRfYnl0ZXNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c0ZTRVRhYmxlVXNlZFRvb01hbnlCeXRlc3VzZWRhdmFpbGFibGVfYnl0ZXNOb3RFbm91Z2hCeXRlc0luU291cmNlV2VpZ2h0QmlnZ2VyVGhhbk1heE51bUJpdHNNYXhCaXRzVG9vSGlnaC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnMAAABQbhAAbQAAACoCAAARAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9iaXRfcmVhZGVyX3JldmVyc2UucnMAAADQbhAAcQAAADcAAABFAAAA0G4QAHEAAAA3AAAALwAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGXQbhAAcQAAAEYAAAANAAAA0G4QAHEAAABKAAAAHgAAAFRoaXMgaXMgYSBidWcgaW4gdGhlIHByb2dyYW0uIFRoZXJlIHNob3VsZCBvbmx5IGJlIHZhbHVlcyBiZXR3ZWVuIDAuLjMvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2Jsb2Nrcy9saXRlcmFsc19zZWN0aW9uLnJzAPJvEABtAAAAewAAADQAAADybxAAbQAAAJAAAABXAAAA8m8QAG0AAACXAAAAKgAAAPJvEABtAAAAmAAAACoAAADybxAAbQAAAJsAAAAaAAAA8m8QAG0AAACoAAAAGgAAAPJvEABtAAAAtAAAAEQAAADybxAAbQAAALgAAABGAAAA8m8QAG0AAADAAAAAKgAAAPJvEABtAAAAwQAAACsAAADybxAAbQAAAMUAAABIAAAA8m8QAG0AAADNAAAAKgAAAPJvEABtAAAAzgAAACsAAADybxAAbQAAANMAAAAuAAAA8m8QAG0AAADUAAAALgAAAENhbnQgcmV0dXJuIHRoaXMgbWFueSBiaXRzL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9iaXRfcmVhZGVyLnJzAGpxEABpAAAANgAAAA0AAABqcRAAaQAAAE8AAAAjAAAAYXNzZXJ0aW9uIGZhaWxlZDogbiAtIGJpdF9zaGlmdCA9PSBiaXRzX2luX2xhc3RfYnl0ZV9uZWVkZWQAanEQAGkAAABtAAAADQAAAGpxEABpAAAAcQAAAB8AAABqcRAAaQAAAGgAAAAkAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5pZHggJSA4ID09IDAAanEQAGkAAABkAAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaWR4ID09IG9sZF9pZHggKyBuAAAAanEQAGkAAAB3AAAACQAAAFNlcV9zdW06ICBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZGlmZmVyZW5jZSBpbiBidWZmZXJzaXplOiAAANByEAAJAAAA2XIQADEAAAAvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2RlY29kaW5nL3NlcXVlbmNlX2V4ZWN1dGlvbi5ycwAAABxzEABxAAAALwAAAAUAAAAccxAAcQAAAAsAAAAkAAAAHHMQAHEAAAAVAAAANAAAAEFsbG9jYXRpbmcgbmV3IHNwYWNlIGZvciB0aGUgcmluZ2J1ZmZlciBmYWlsZWQvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2RlY29kaW5nL3JpbmdidWZmZXIucnMA7nMQAGkAAABhAAAAIwAAAENvdWxkIG5vdCBjcmVhdGUgbGF5b3V0IGZvciB1OCBhcnJheSBvZiBzaXplIAAAAGh0EAAtAAAA7nMQAGkAAABaAAAAIQAAAO5zEABpAAAAtAAAABUAAADucxAAaQAAAL4AAAAVAAAA7nMQAGkAAAB3AQAAHQAAAO5zEABpAAAAzgEAABUAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwDwdBAAawAAAKIAAAAZAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9saXRlcmFsc19zZWN0aW9uX2RlY29kZXIucnMAbHUQAHcAAAAUAAAAIgAAAGx1EAB3AAAAGAAAAE0AAABsdRAAdwAAADQAAAAZAAAAbHUQAHcAAAByAAAAGAAAAGx1EAB3AAAAkQAAABQAAABhc3NlcnRpb24gZmFpbGVkOiBudW1fc3RyZWFtcyA9PSAxAABsdRAAdwAAAIAAAAAJAAAAbHUQAHcAAABFAAAAGQAAAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZGVjb2Rpbmcvc2VxdWVuY2Vfc2VjdGlvbl9kZWNvZGVyLnJzAHh2EAB3AAAAGAAAAB0AAAB4dhAAdwAAAHUAAAAQAAAAeHYQAHcAAADAAAAAEAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IElsbGVnYWwgbGl0ZXJhbCBsZW5ndGggY29kZSB3YXM6IAAgdxAASwAAAHh2EAB3AAAA+gAAAA4AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBJbGxlZ2FsIG1hdGNoIGxlbmd0aCBjb2RlIHdhczogAAAAhHcQAEkAAAB4dhAAdwAAABoBAAAOAAAABAAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAD/////////////////////AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA//////////////////////////8BAAAABAAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA/////////////////////////////////////3h2EAB3AAAAdgEAABwAAAB4dhAAdwAAAFMBAAAcAAAAAQEBAQICAwMEBgcICQoLDA0ODxAQAAAAEgAAABQAAAAWAAAAGAAAABwAAAAgAAAAKAAAADAAAABAAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAEBAQECAgMDBAQFBwgJCgsMDQ4PEAAAACMAAAAlAAAAJwAAACkAAAArAAAALwAAADMAAAA7AAAAQwAAAFMAAABjAAAAgwAAAAMBAAADAgAAAwQAAAMIAAADEAAAAyAAAANAAAADgAAAAwABAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3R3b3gtaGFzaC0yLjEuMC9zcmMveHhoYXNoNjQucnMAAACwehAAYQAAAFQAAAAfAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9kZWNvZGVidWZmZXIucnMAJHsQAGsAAAAaAAAAHgAAACR7EABrAAAAnQAAADQAAAAkexAAawAAAOoAAAAeAAAAUmF3UkxFQ29tcHJlc3NlZFJlc2VydmVyZAAAAAAAAAAEAAAABAAAAMoBAAAAAAAABAAAAAQAAADQAQAAYXNzZXJ0aW9uIGZhaWxlZDogeCA+IDAvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2h1ZmYwL2h1ZmYwX2RlY29kZXIucnMTfBAAaQAAADEAAAAFAAAAE3wQAGkAAAA+AAAAGgAAABN8EABpAAAAUAAAACkAAAATfBAAaQAAAGgAAAAWAAAAE3wQAGkAAABqAAAAEwAAABN8EABpAAAAawAAABgAAAATfBAAaQAAAGwAAAAbAAAAE3wQAGkAAAAdAQAANgAAABN8EABpAAAAHQEAACUAAAATfBAAaQAAAB8BAAA2AAAAE3wQAGkAAAAfAQAAJQAAABN8EABpAAAA6AAAACIAAAATfBAAaQAAAPIAAAAiAAAAE3wQAGkAAAD3AAAAJgAAABN8EABpAAAA7QAAACYAAAATfBAAaQAAAFcBAAASAAAAE3wQAGkAAABfAQAAGAAAABN8EABpAAAAZQEAABUAAAATfBAAaQAAAG8BAAAbAAAAE3wQAGkAAABxAQAAGgAAABN8EABpAAAAeAEAAB4AAAByYW5rX2lkeFswXTogIHNob3VsZCBiZTogAAAAzH0QAA0AAADZfRAADAAAABN8EABpAAAAdwEAAAkAAAATfBAAaQAAAH8BAAAsAAAAE3wQAGkAAACEAQAAMQAAABN8EABpAAAAiAEAACAAAAATfBAAaQAAAIkBAAAgAAAAE3wQAGkAAABzAQAARQAAABN8EABpAAAAdAEAACEAAAATfBAAaQAAAHMBAAAeAAAAE3wQAGkAAABhAQAAGwAAABN8EABpAAAATwEAACcAAAATfBAAaQAAAFQBAAAWAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAqH4QAGsAAACiAAAAGQAAAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzACR/EABrAAAAogAAABkAAABhc3NlcnRpb24gZmFpbGVkOiB4ID4gMC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZnNlL2ZzZV9kZWNvZGVyLnJzt38QAGUAAAA9AAAABQAAALd/EABlAAAAWgAAACcAAAC3fxAAZQAAAGUAAAAnAAAAt38QAGUAAABwAAAAIwAAALd/EABlAAAAcQAAAB0AAAC3fxAAZQAAAOIAAAApAAAAt38QAGUAAADkAAAAMQAAALd/EABlAAAA5gAAADMAAABhc3NlcnRpb24gZmFpbGVkOiBuYiA8PSBzZWxmLmFjY3VyYWN5X2xvZwAAALd/EABlAAAA6wAAAA0AAAC3fxAAZQAAANIAAAAtAAAAt38QAGUAAADAAAAALQAAALd/EABlAAAAOQEAAEEAAAC3fxAAZQAAAB4BAAAnAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHJvYiA9PSAtMbd/EABlAAAAJAEAABUAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvbW9kLnJzAAAARIEQAG0AAAA9CgAAJAAAAAAAAAAQAAAABAAAANQBAADVAQAA1gEAACAgICA6IAAAAQAAAAAAAADggRAAAgAAACAgICAgICAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL3B0ci9tb2QucnMA+4EQAGwAAAALAgAAAQAAAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaW5kZXgucnN4ghAAcAAAAEwDAAA0AAAAeIIQAHAAAABTAwAAMgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuKS9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAMoMQAGwAAAD7BwAAHQAAADKDEABsAAAAAwgAAB0AAAAygxAAbAAAAI0FAAAbAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5ycwAAANCDEABtAAAAKgIAABEAAADXAQAADAAAAAQAAADYAQAA2QEAANoBAADdAQAADAAAAAQAAADeAQAA3wEAANoBAEGIicIAC4UJAQAAAOABAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAMeEEABsAAAA3woAAA4AAABFcnJvcgAAAMeEEABsAAAAjQUAABsAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbinHhBAAbAAAAMAFAAANAAAAAAAAABAAAAAEAAAA1AEAANUBAADWAQAAYmFja3RyYWNlIGNhcHR1cmUgZmFpbGVkL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZXJyb3IucnPMhRAAXAAAAGcEAAAOAAAAAQAAAAAAAAA6IAAAQIYQAAIAAAAKCkNhdXNlZCBieToKCgpzdGFjayBiYWNrdHJhY2U6U3RhY2sgYmFja3RyYWNlOgprhhAAEQAAAFMvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzAACFhhAAeQAAALMHAAAJAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvanMtc3lzLTAuMy43Ny9zcmMvbGliLnJzAAAQhxAAWgAAAPsYAAABAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NvbnZlcnQvc2xpY2VzLnJzfIcQAGwAAAAkAQAADgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkSnNWYWx1ZSgpACqIEAAIAAAAMogQAAEAAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAESIEAAqAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvbGliLnJzAAAAeIgQAF0AAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AADoiBAADgAAAHiIEABdAAAAegIAAA0AQZiSwgALlSMEAAAABAAAAPYBAAAvcnVzdGMvMDVmOTg0NmY4OTNiMDlhMWJlMWZjODU2MGUzM2ZjM2M4MTVjZmVjYi9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAJIkQAEoAAACiAAAAGQAAAC9ydXN0Yy8wNWY5ODQ2Zjg5M2IwOWExYmUxZmM4NTYwZTMzZmMzYzgxNWNmZWNiL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwCAiRAASwAAAI0FAAAbAAAAL3J1c3RjLzA1Zjk4NDZmODkzYjA5YTFiZTFmYzg1NjBlMzNmYzNjODE1Y2ZlY2IvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc9yJEABMAAAAKgIAABEAAAA6AAAA9wEAAAwAAAAEAAAA+AEAAPkBAAD6AQAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNy9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAFSKEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAABUihAAKQAAAK4EAAANAAAAQWNjZXNzRXJyb3JjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uOiAAB4sQAEgAAABsaWJyYXJ5L3N0ZC9zcmMvYmFja3RyYWNlLnJzb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybXSLEAAoAAAAJAAAAAIAAACcixAAdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlAFiLEAAcAAAAigEAAB0AAAD7AQAAEAAAAAQAAAD8AQAA/QEAAAEAAAAAAAAAZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBvciBpbmRpcmVjdGlvbiBsaW1pdCAoZS5nLiBzeW1saW5rIGxvb3Apc3RhbGUgbmV0d29yayBmaWxlIGhhbmRsZWludmFsaWQgaW5wdXQgcGFyYW1ldGVyaW52YWxpZCBkYXRhdGltZWQgb3V0d3JpdGUgemVyb25vIHN0b3JhZ2Ugc3BhY2VzZWVrIG9uIHVuc2Vla2FibGUgZmlsZXF1b3RhIGV4Y2VlZGVkZmlsZSB0b28gbGFyZ2VyZXNvdXJjZSBidXN5ZXhlY3V0YWJsZSBmaWxlIGJ1c3lkZWFkbG9ja2Nyb3NzLWRldmljZSBsaW5rIG9yIHJlbmFtZXRvbyBtYW55IGxpbmtzaW52YWxpZCBmaWxlbmFtZWFyZ3VtZW50IGxpc3QgdG9vIGxvbmdvcGVyYXRpb24gaW50ZXJydXB0ZWR1bnN1cHBvcnRlZHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGVvdXQgb2YgbWVtb3J5aW4gcHJvZ3Jlc3NvdGhlciBlcnJvcnVuY2F0ZWdvcml6ZWQgZXJyb3JPcwAAAAAABAAAAAQAAAD+AQAAY29kZQAAAAABAAAAAQAAAP8BAABraW5k9wEAAAwAAAAEAAAAAAIAAG1lc3NhZ2VLaW5kRXJyb3IAAAAACAAAAAQAAAABAgAAAAAAAAQAAAAEAAAAAgIAAEN1c3RvbWVycm9yIChvcyBlcnJvciApAAEAAAAAAAAAZ48QAAsAAAByjxAAAQAAADogY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXgAAI6PEAAgAAAAbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnO4jxAALAAAABMAAAAJAAAAbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMA9I8QACMAAACbAAAAMgAAAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwAAACiQEAAhAAAA0QAAABMAAAA8dW5rbm93bj7vv71tZW1vcnkgYWxsb2NhdGlvbiBvZiAgYnl0ZXMgZmFpbGVkAABokBAAFQAAAH2QEAANAAAAbGlicmFyeS9zdGQvc3JjL2FsbG9jLnJznJAQABgAAABjAQAACQAAAAoAAAD3AQAADAAAAAQAAAADAgAAAAAAAAgAAAAEAAAABAIAAAAAAAAIAAAABAAAAAUCAAAGAgAABwIAAAgCAAAJAgAAEAAAAAQAAAAKAgAACwIAAAwCAAANAgAAbGlicmFyeS9zdGQvc3JjLy4uLy4uL2JhY2t0cmFjZS9zcmMvc3ltYm9saXplL21vZC5ycyCREAA0AAAAZwEAADAAAAABAAAAAAAAAIyPEAACAAAAIC0gAAEAAAAAAAAAdJEQAAMAAAAgICAgICAgICAgICAgICAgICAgYXQgAAA4ihAAAQAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c1dvdWxkQmxvY2tOb3RBRGlyZWN0b3J5SXNBRGlyZWN0b3J5RGlyZWN0b3J5Tm90RW1wdHlSZWFkT25seUZpbGVzeXN0ZW1GaWxlc3lzdGVtTG9vcFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvU3RvcmFnZUZ1bGxOb3RTZWVrYWJsZVF1b3RhRXhjZWVkZWRGaWxlVG9vTGFyZ2VSZXNvdXJjZUJ1c3lFeGVjdXRhYmxlRmlsZUJ1c3lEZWFkbG9ja0Nyb3NzZXNEZXZpY2VzVG9vTWFueUxpbmtzSW52YWxpZEZpbGVuYW1lQXJndW1lbnRMaXN0VG9vTG9uZ0ludGVycnVwdGVkVW5zdXBwb3J0ZWRVbmV4cGVjdGVkRW9mT3V0T2ZNZW1vcnlJblByb2dyZXNzT3RoZXJVbmNhdGVnb3JpemVkb3BlcmF0aW9uIHN1Y2Nlc3NmdWxPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWTakxAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5DJQQADgAAAAQAAAAEQAA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",typeof document>"u"?require("url").pathToFileURL(__filename).href:wI&&wI.tagName.toUpperCase()==="SCRIPT"&&wI.src||new URL("forge.cjs.min.js",document.baseURI).href));const A=Pt();(typeof Q=="string"||typeof Request=="function"&&Q instanceof Request||typeof URL=="function"&&Q instanceof URL)&&(Q=fetch(Q));const{instance:I,module:g}=await Ot(await Q,A);return _t(I,g)}const fA=-9,$t=9,KA=($t-fA)/254,Ai=11,Qi=11,Z=1<u(B[t]));return`${A}(${C.join(", ")})`}case"mat2x3":{const g=I,B=new Array(6).fill(0).map((C,E)=>u(g[E]));return`${A}(${B.join(", ")})`}case"mat2x4":{const g=I,B=new Array(8).fill(0).map((C,E)=>u(g[E]));return`${A}(${B.join(", ")})`}case"mat3":case"mat3x3":{const g=I,B=g instanceof e.Matrix3?g.elements:I,C=new Array(9).fill(0).map((E,t)=>u(B[t]));return`${A}(${C.join(", ")})`}case"mat3x2":{const g=I,B=new Array(6).fill(0).map((C,E)=>u(g[E]));return`${A}(${B.join(", ")})`}case"mat3x4":{const g=I,B=new Array(12).fill(0).map((C,E)=>u(g[E]));return`${A}(${B.join(", ")})`}case"mat4":case"mat4x4":{const g=I,B=g instanceof e.Matrix4?g.elements:I,C=new Array(16).fill(0).map((E,t)=>u(B[t]));return`${A}(${C.join(", ")})`}case"mat4x2":{const g=I,B=new Array(8).fill(0).map((C,E)=>u(g[E]));return`${A}(${B.join(", ")})`}case"mat4x3":{const g=I,B=new Array(12).fill(0).map((C,E)=>u(g[E]));return`${A}(${B.join(", ")})`}default:throw new Error(`Type not implemented: ${String(A)}`)}}}function q(Q,A){return new Cg(Q,A)}function NQ(Q){const A=String(Q);if(iQ(Q))return`${A}(false)`;if(_A(Q))return`${A}(0.0)`;if(tA(Q))return`${A}(0)`;if(iA(Q))return`${A}(0u)`;throw new Error(`Type not implemented: ${A}`)}function Ei(Q){const A=String(Q);if(iQ(Q))return`${A}(true)`;if(_A(Q))return`${A}(1.0)`;if(tA(Q))return`${A}(1)`;if(iA(Q))return`${A}(1u)`;throw new Error(`Type not implemented: ${A}`)}function ti(Q){const A=String(Q);if(iQ(Q))return`${A}(true)`;if(_A(Q))return`${A}(-1.0)`;if(tA(Q))return`${A}(-1)`;if(iA(Q))return`${A}(0xFFFFFFFFu)`;throw new Error(`Type not implemented: ${A}`)}const VI=" ";class Eg{constructor({indent:A}={}){this.globals=new Set,this.statements=[],this.uniforms={},this.declares=new Set,this.updaters=[],this.sequence=0,this.indent=VI,this.indent=A??VI}nextSequence(){return this.sequence++}}class f{constructor({inTypes:A,outTypes:I,inputs:g,update:B,globals:C,statements:E,generate:t}){this.inTypes=A??{},this.outTypes=I??{},this.inputs=g??{},this.update=B,this.globals=C,this.statements=E,this.generate=t??(({inputs:s,outputs:o,compile:a})=>{var i,D;return{globals:(i=this.globals)==null?void 0:i.call(this,{inputs:s,outputs:o,compile:a}),statements:(D=this.statements)==null?void 0:D.call(this,{inputs:s,outputs:o,compile:a})}})}get outputs(){const A={};for(const I in this.outTypes)A[I]=new H(this,I);return A}apply(A){return Object.assign(this.inputs,A),this.outputs}compile({inputs:A,outputs:I,compile:g}){const B=[`// ${this.constructor.name}(${Object.values(A).join(", ")}) => (${Object.values(I).join(", ")})`],C=[];for(const o in I){const a=I[o];a&&!g.declares.has(a)&&(g.declares.add(a),C.push(o))}const{globals:E,statements:t,uniforms:s}=this.generate({inputs:A,outputs:I,compile:g});for(const o of E??[])g.globals.add(o);for(const o in s)g.uniforms[o]=s[o];this.update&&g.updaters.push(this.update);for(const o of C){const a=I[o];a&&(g.uniforms[a]||B.push(`${UI(a,this.outTypes[o])};`))}return t!=null&&t.length&&(B.push("{"),B.push(...t.map(o=>g.indent+o)),B.push("}")),B}}class bA extends f{constructor({inTypes:A,outTypes:I,inputs:g,update:B,globals:C,construct:E}){super({inTypes:A,outTypes:I,inputs:g,update:B,globals:C,generate:t=>this.generateBlock(t)}),this.construct=E}generateBlock({inputs:A,outputs:I,compile:g}){var w,c;const B={},C={};for(const r in A)A[r]!=null&&(B[r]=new wQ(this.inTypes[r],A[r]));for(const r in I)I[r]!=null&&(C[r]=new zA(this.outTypes[r]));const E={roots:[]},t=this.construct(B,C,E);for(const r of((w=this.globals)==null?void 0:w.call(this,{inputs:A,outputs:I,compile:g}))??[])g.globals.add(r);const s=[],o=new Map;function a(r,y,G){let h=o.get(r);if(!h){h={sequence:g.nextSequence(),outNames:new Map,newOuts:new Set},o.set(r,h);for(const M in r.inputs){let l=r.inputs[M];for(;l;){if(l instanceof zA){l instanceof H&&a(l.dyno,l.key);break}l=l.dynoOut()}}s.push(r)}y&&(G||h.newOuts.add(y),h.outNames.set(y,G??`${y}_${h.sequence}`))}for(const r of E.roots)a(r);for(const r in C){let y=(t==null?void 0:t[r])??C[r];for(;y;){if(y instanceof zA){y instanceof H&&a(y.dyno,y.key,I[r]);break}y=y.dynoOut()}C[r]=y}const i=[];for(const r of s){const y={},G={};for(const l in r.inputs){let k=r.inputs[l];for(;k;){if(k instanceof zA){if(k instanceof wQ)y[l]=k.getLiteral();else if(k instanceof H){const R=(c=o.get(k.dyno))==null?void 0:c.outNames.get(k.key);if(!R)throw new Error(`Source not found for ${k.dyno.constructor.name}.${k.key}`);y[l]=R}break}k=k.dynoOut()}}const h=o.get(r)??{outNames:new Map};for(const[l,k]of h.outNames.entries())G[l]=k;const M=r.compile({inputs:y,outputs:G,compile:g});i.push(M)}const D=[];for(const r in I)C[r]instanceof wQ&&D.push(`${I[r]} = ${C[r].getLiteral()};`);return D.length>0&&i.push(D),{statements:i.flatMap((r,y)=>y===0?r:["",...r])}}}function SA(Q,A,I,{update:g,globals:B}={}){return new bA({inTypes:Q,outTypes:A,construct:I,update:g,globals:B})}function KQ({inTypes:Q,outTypes:A,inputs:I,update:g,globals:B,statements:C,generate:E}){return new f({inTypes:Q,outTypes:A,inputs:I,update:g,globals:B,statements:C,generate:E})}function UI(Q,A,I){const g=typeof A=="string"?A:A.type;if(!g)throw new Error(`Invalid DynoType: ${String(A)}`);return`${g} ${Q}${I!=null?`[${I}]`:""}`}function dA(Q){var C;let A=!1;const I=Q.split(`
+`).map(E=>{const t=E.trimEnd();return A?t:t.length>0?(A=!0,t):null}).filter(E=>E!=null);for(;I.length>0&&I[I.length-1].length===0;)I.pop();if(I.length===0)return[];const g=(C=I[0].match(/^\s*/))==null?void 0:C[0];if(!g)return I;const B=new RegExp(`^${g}`);return I.map(E=>E.replace(B,""))}function gA(Q){return dA(Q).join(`
+`)}class N extends f{constructor({a:A,outKey:I,outTypeFunc:g}){const B={a:p(A)},C=g(p(A)),E={[I]:C};super({inTypes:B,outTypes:E,inputs:{a:A}}),this.outKey=I}dynoOut(){return new H(this,this.outKey)}}class b extends f{constructor({a:A,b:I,outKey:g,outTypeFunc:B}){const C={a:p(A),b:p(I)},E=B(p(A),p(I)),t={[g]:E};super({inTypes:C,outTypes:t,inputs:{a:A,b:I}}),this.outKey=g}dynoOut(){return new H(this,this.outKey)}}class oQ extends f{constructor({a:A,b:I,c:g,outKey:B,outTypeFunc:C}){const E={a:p(A),b:p(I),c:p(g)},t=C(p(A),p(I),p(g)),s={[B]:t};super({inTypes:E,outTypes:s,inputs:{a:A,b:I,c:g}}),this.outKey=B}dynoOut(){return new H(this,this.outKey)}}const T={type:"Gsplat"},ZQ={type:"PackedSplats"},ii=Q=>new ig({packedSplats:Q}),UQ=(Q,A)=>new og({packedSplats:Q,index:A}),tg=(Q,A,I,g)=>new ag({packedSplats:Q,index:A,base:I,count:g}),FQ=Q=>new eg({gsplat:Q}),rQ=({gsplat:Q,flags:A,index:I,center:g,scales:B,quaternion:C,rgba:E,rgb:t,opacity:s,x:o,y:a,z:i,r:D,g:n,b:w})=>new Dg({gsplat:Q,flags:A,index:I,center:g,scales:B,quaternion:C,rgba:E,rgb:t,opacity:s,x:o,y:a,z:i,r:D,g:n,b:w}),si=Q=>new cg({gsplat:Q}),SI=(Q,{scale:A,rotate:I,translate:g,recolor:B})=>new wg({gsplat:Q,scale:A,rotate:I,translate:g,recolor:B}),hA=gA(`
+ struct Gsplat {
+ vec3 center;
+ uint flags;
+ vec3 scales;
+ int index;
+ vec4 quaternion;
+ vec4 rgba;
+ };
+ const uint GSPLAT_FLAG_ACTIVE = 1u << 0u;
+
+ bool isGsplatActive(uint flags) {
+ return (flags & GSPLAT_FLAG_ACTIVE) != 0u;
+ }
+`),eI=gA(`
+ struct PackedSplats {
+ usampler2DArray texture;
+ int numSplats;
+ };
+`);class ig extends N{constructor({packedSplats:A}){super({a:A,outKey:"numSplats",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.numSplats} = ${I.a}.numSplats;`]}}const sg=gA(`
+ bool readPackedSplat(usampler2DArray texture, int numSplats, int index, out Gsplat gsplat) {
+ if ((index >= 0) && (index < numSplats)) {
+ uvec4 packed = texelFetch(texture, splatTexCoord(index), 0);
+ unpackSplat(packed, gsplat.center, gsplat.scales, gsplat.quaternion, gsplat.rgba);
+ return true;
+ } else {
+ return false;
+ }
+ }
+`);class og extends f{constructor({packedSplats:A,index:I}){super({inTypes:{packedSplats:ZQ,index:"int"},outTypes:{gsplat:T},inputs:{packedSplats:A,index:I},globals:()=>[hA,eI,sg],statements:({inputs:g,outputs:B})=>{const{gsplat:C}=B;if(!C)return[];const{packedSplats:E,index:t}=g;let s;return E&&t?s=dA(`
+ if (readPackedSplat(${E}.texture, ${E}.numSplats, ${t}, ${C})) {
+ bool zeroSize = all(equal(${C}.scales, vec3(0.0, 0.0, 0.0)));
+ ${C}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;
+ } else {
+ ${C}.flags = 0u;
+ }
+ `):s=[`${C}.flags = 0u;`],s.push(`${C}.index = ${t??"0"};`),s}})}dynoOut(){return new H(this,"gsplat")}}class ag extends f{constructor({packedSplats:A,index:I,base:g,count:B}){super({inTypes:{packedSplats:ZQ,index:"int",base:"int",count:"int"},outTypes:{gsplat:T},inputs:{packedSplats:A,index:I,base:g,count:B},globals:()=>[hA,eI,sg],statements:({inputs:C,outputs:E})=>{const{gsplat:t}=E;if(!t)return[];const{packedSplats:s,index:o,base:a,count:i}=C;let D;return s&&o&&a&&i?D=dA(`
+ ${t}.flags = 0u;
+ if ((${o} >= ${a}) && (${o} < (${a} + ${i}))) {
+ if (readPackedSplat(${s}.texture, ${s}.numSplats, ${o}, ${t})) {
+ bool zeroSize = all(equal(${t}.scales, vec3(0.0, 0.0, 0.0)));
+ ${t}.flags = zeroSize ? 0u : GSPLAT_FLAG_ACTIVE;
+ }
+ }
+ `):D=[`${t}.flags = 0u;`],D.push(`${t}.index = ${o??"0"};`),D}})}dynoOut(){return new H(this,"gsplat")}}class eg extends f{constructor({gsplat:A}){super({inTypes:{gsplat:T},outTypes:{flags:"uint",active:"bool",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},inputs:{gsplat:A},globals:()=>[hA],statements:({inputs:I,outputs:g})=>{const{gsplat:B}=I,{flags:C,active:E,index:t,center:s,scales:o,quaternion:a,rgba:i,rgb:D,opacity:n,x:w,y:c,z:r,r:y,g:G,b:h}=g;return[C?`${C} = ${B?`${B}.flags`:"0u"};`:null,E?`${E} = isGsplatActive(${B?`${B}.flags`:"0u"});`:null,t?`${t} = ${B?`${B}.index`:"0"};`:null,s?`${s} = ${B?`${B}.center`:"vec3(0.0, 0.0, 0.0)"};`:null,o?`${o} = ${B?`${B}.scales`:"vec3(0.0, 0.0, 0.0)"};`:null,a?`${a} = ${B?`${B}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)"};`:null,i?`${i} = ${B?`${B}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)"};`:null,D?`${D} = ${B?`${B}.rgba.rgb`:"vec3(0.0, 0.0, 0.0)"};`:null,n?`${n} = ${B?`${B}.rgba.a`:"0.0"};`:null,w?`${w} = ${B?`${B}.center.x`:"0.0"};`:null,c?`${c} = ${B?`${B}.center.y`:"0.0"};`:null,r?`${r} = ${B?`${B}.center.z`:"0.0"};`:null,y?`${y} = ${B?`${B}.rgba.r`:"0.0"};`:null,G?`${G} = ${B?`${B}.rgba.g`:"0.0"};`:null,h?`${h} = ${B?`${B}.rgba.b`:"0.0"};`:null].filter(Boolean)}})}}class Dg extends f{constructor({gsplat:A,flags:I,index:g,center:B,scales:C,quaternion:E,rgba:t,rgb:s,opacity:o,x:a,y:i,z:D,r:n,g:w,b:c}){super({inTypes:{gsplat:T,flags:"uint",index:"int",center:"vec3",scales:"vec3",quaternion:"vec4",rgba:"vec4",rgb:"vec3",opacity:"float",x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"},outTypes:{gsplat:T},inputs:{gsplat:A,flags:I,index:g,center:B,scales:C,quaternion:E,rgba:t,rgb:s,opacity:o,x:a,y:i,z:D,r:n,g:w,b:c},globals:()=>[hA],statements:({inputs:r,outputs:y})=>{const{gsplat:G}=y;if(!G)return[];const{gsplat:h,flags:M,index:l,center:k,scales:R,quaternion:d,rgba:Y,rgb:m,opacity:J,x,y:U,z:S,r:v,g:V,b:_}=r;return[`${G}.flags = ${M??(h?`${h}.flags`:"0u")};`,`${G}.index = ${l??(h?`${h}.index`:"0")};`,`${G}.center = ${k??(h?`${h}.center`:"vec3(0.0, 0.0, 0.0)")};`,`${G}.scales = ${R??(h?`${h}.scales`:"vec3(0.0, 0.0, 0.0)")};`,`${G}.quaternion = ${d??(h?`${h}.quaternion`:"vec4(0.0, 0.0, 0.0, 1.0)")};`,`${G}.rgba = ${Y??(h?`${h}.rgba`:"vec4(0.0, 0.0, 0.0, 0.0)")};`,m?`${G}.rgba.rgb = ${m};`:null,J?`${G}.rgba.a = ${J};`:null,x?`${G}.center.x = ${x};`:null,U?`${G}.center.y = ${U};`:null,S?`${G}.center.z = ${S};`:null,v?`${G}.rgba.r = ${v};`:null,V?`${G}.rgba.g = ${V};`:null,_?`${G}.rgba.b = ${_};`:null].filter(Boolean)}})}dynoOut(){return new H(this,"gsplat")}}const ng=gA(`
+ vec3 gsplatNormal(vec3 scales, vec4 quaternion) {
+ float minScale = min(scales.x, min(scales.y, scales.z));
+ vec3 normal;
+ if (scales.z == minScale) {
+ normal = vec3(0.0, 0.0, 1.0);
+ } else if (scales.y == minScale) {
+ normal = vec3(0.0, 1.0, 0.0);
+ } else {
+ normal = vec3(1.0, 0.0, 0.0);
+ }
+ return quatVec(quaternion, normal);
+ }
+`);class cg extends N{constructor({gsplat:A}){super({a:A,outKey:"normal",outTypeFunc:()=>"vec3"}),this.globals=()=>[hA,ng],this.statements=({inputs:I,outputs:g})=>[`${g.normal} = gsplatNormal(${I.a}.scales, ${I.a}.quaternion);`]}}class wg extends f{constructor({gsplat:A,scale:I,rotate:g,translate:B,recolor:C}){super({inTypes:{gsplat:T,scale:"float",rotate:"vec4",translate:"vec3",recolor:"vec4"},outTypes:{gsplat:T},inputs:{gsplat:A,scale:I,rotate:g,translate:B,recolor:C},globals:()=>[hA],statements:({inputs:E,outputs:t,compile:s})=>{const{gsplat:o}=t;if(!o||!E.gsplat)return[];const{scale:a,rotate:i,translate:D,recolor:n}=E,w=s.indent;return[`${o} = ${E.gsplat};`,`if (isGsplatActive(${o}.flags)) {`,a?`${w}${o}.center *= ${a};`:null,i?`${w}${o}.center = quatVec(${i}, ${o}.center);`:null,D?`${w}${o}.center += ${D};`:null,a?`${w}${o}.scales *= ${a};`:null,i?`${w}${o}.quaternion = quatQuat(${i}, ${o}.quaternion);`:null,n?`${w}${o}.rgba *= ${n};`:null,"}"].filter(Boolean)}})}dynoOut(){return new H(this,"gsplat")}}const rg=Q=>new hg({gsplat:Q}),oi=Q=>new LI({rgba8:Q});class hg extends f{constructor({gsplat:A}){super({inTypes:{gsplat:T},inputs:{gsplat:A},globals:()=>[hA],statements:({inputs:I,outputs:g})=>{const{output:B}=g;if(!B)return[];const{gsplat:C}=I;return C?dA(`
+ if (isGsplatActive(${C}.flags)) {
+ ${B} = packSplat(${C}.center, ${C}.scales, ${C}.quaternion, ${C}.rgba);
+ } else {
+ ${B} = uvec4(0u, 0u, 0u, 0u);
+ }
+ `):[`${B} = uvec4(0u, 0u, 0u, 0u);`]}})}dynoOut(){return new H(this,"output")}}class LI extends f{constructor({rgba8:A}){super({inTypes:{rgba8:"vec4"},inputs:{rgba8:A},statements:({inputs:I,outputs:g})=>[`target = ${I.rgba8??"vec4(0.0, 0.0, 0.0, 0.0)"};`]})}dynoOut(){return new H(this,"rgba8")}}const ai=(Q,A,I)=>new F({key:Q,type:A,value:I}),ei=(Q=!1,A)=>new gI({key:A,value:Q}),Di=(Q=0,A)=>new yg({key:A,value:Q}),ni=(Q=0,A)=>new SQ({key:A,value:Q}),pA=(Q=0,A)=>new EQ({key:A,value:Q}),ci=(Q,A)=>new Gg({key:A,value:Q}),wi=(Q,A)=>new lg({key:A,value:Q}),ri=(Q,A)=>new Mg({key:A,value:Q}),hi=(Q,A)=>new Ng({key:A,value:Q}),yi=(Q,A)=>new kg({key:A,value:Q}),Gi=(Q,A)=>new Fg({key:A,value:Q}),li=(Q,A)=>new Rg({key:A,value:Q}),vA=(Q,A)=>new hQ({key:A,value:Q}),Mi=(Q,A)=>new Jg({key:A,value:Q}),Ni=(Q,A)=>new dg({key:A,value:Q}),ki=(Q,A)=>new Yg({key:A,value:Q}),Fi=(Q,A)=>new qQ({key:A,value:Q}),Ri=(Q,A)=>new ug({key:A,value:Q}),Ji=(Q,A)=>new Ug({key:A,value:Q}),di=(Q,A)=>new Sg({key:A,value:Q}),Yi=(Q,A)=>new Lg({key:A,value:Q}),ui=(Q,A)=>new pg({key:A,value:Q}),Ui=(Q,A)=>new Hg({key:A,value:Q}),Si=(Q,A)=>new fg({key:A,value:Q}),Li=(Q,A)=>new mg({key:A,value:Q}),pi=(Q,A)=>new bg({key:A,value:Q}),Hi=(Q,A)=>new xg({key:A,value:Q}),fi=(Q,A)=>new Kg({key:A,value:Q}),mi=(Q,A)=>new Zg({key:A,value:Q}),bi=(Q,A)=>new qg({key:A,value:Q}),xi=(Q,A)=>new Wg({key:A,value:Q}),Ki=(Q,A)=>new Vg({key:A,value:Q}),Zi=(Q,A)=>new RQ({key:A,value:Q}),qi=(Q,A)=>new Tg({key:Q,value:A}),Wi=(Q,A)=>new vg({key:A,value:Q}),Vi=(Q,A)=>new Xg({key:A,value:Q}),Ti=(Q,A)=>new jg({key:A,value:Q}),vi=(Q,A)=>new zg({key:A,value:Q}),Xi=(Q,A)=>new Og({key:A,value:Q}),ji=(Q,A)=>new Pg({key:A,value:Q}),zi=(Q,A)=>new _g({key:A,value:Q}),Oi=(Q,A)=>new $g({key:A,value:Q}),Pi=(Q,A)=>new AB({key:A,value:Q}),_i=(Q,A)=>new QB({key:A,value:Q});class F extends f{constructor({key:A,type:I,count:g,value:B,update:C,globals:E}){A=A??"value",super({outTypes:{[A]:I},update:()=>{if(C){const t=C(this.value);t!==void 0&&(this.value=t)}this.uniform.value=this.value},generate:({inputs:t,outputs:s})=>{const o=(E==null?void 0:E({inputs:t,outputs:s}))??[],a={},i=s[A];return i&&(o.push(`uniform ${UI(i,I,g)};`),a[i]=this.uniform),{globals:o,uniforms:a}}}),this.type=I,this.count=g,this.value=B,this.uniform={value:B},this.outKey=A}dynoOut(){return new H(this,this.outKey)}}class gI extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"bool",value:I,update:g})}}class yg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"uint",value:I,update:g})}}class SQ extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"int",value:I,update:g})}}class EQ extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"float",value:I,update:g})}}class Gg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec2",value:I,update:g})}}class lg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec2",value:I,update:g})}}class Mg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec2",value:I,update:g})}}class Ng extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"vec2",value:I,update:g})}}class kg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec3",value:I,update:g})}}class Fg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec3",value:I,update:g})}}class Rg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec3",value:I,update:g})}}class hQ extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"vec3",value:I,update:g})}}class Jg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"bvec4",value:I,update:g})}}class dg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"uvec4",value:I,update:g})}}class Yg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"ivec4",value:I,update:g})}}class qQ extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"vec4",value:I,update:g})}}class ug extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2",value:I,update:g})}}class Ug extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x2",value:I,update:g})}}class Sg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x3",value:I,update:g})}}class Lg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat2x4",value:I,update:g})}}class pg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3",value:I,update:g})}}class Hg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x2",value:I,update:g})}}class fg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x3",value:I,update:g})}}class mg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat3x4",value:I,update:g})}}class bg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4",value:I,update:g})}}class xg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x2",value:I,update:g})}}class Kg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x3",value:I,update:g})}}class Zg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"mat4x4",value:I,update:g})}}class qg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler2D",value:I,update:g})}}class Wg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler2D",value:I,update:g})}}class Vg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2D",value:I,update:g})}}class RQ extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler2DArray",value:I,update:g})}}class Tg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler2DArray",value:I,update:g})}}class vg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DArray",value:I,update:g})}}class Xg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"usampler3D",value:I,update:g})}}class jg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"isampler3D",value:I,update:g})}}class zg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler3D",value:I,update:g})}}class Og extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"usamplerCube",value:I,update:g})}}class Pg extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"isamplerCube",value:I,update:g})}}class _g extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"samplerCube",value:I,update:g})}}class $g extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DShadow",value:I,update:g})}}class AB extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"sampler2DArrayShadow",value:I,update:g})}}class QB extends F{constructor({key:A,value:I,update:g}){super({key:A,type:"samplerCubeShadow",value:I,update:g})}}var EA=Uint8Array,nQ=Uint16Array,$i=Int32Array,IB=new EA([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,0]),gB=new EA([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,0,0]),As=new EA([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),BB=function(Q,A){for(var I=new nQ(31),g=0;g<31;++g)I[g]=A+=1<>1|(W&21845)<<1;TA=(TA&52428)>>2|(TA&13107)<<2,TA=(TA&61680)>>4|(TA&3855)<<4,NI[W]=((TA&65280)>>8|(TA&255)<<8)>>1}var JQ=function(Q,A,I){for(var g=Q.length,B=0,C=new nQ(A);B>s]=o}else for(t=new nQ(g),B=0;B>15-Q[B]);return t},WQ=new EA(288);for(var W=0;W<144;++W)WQ[W]=8;for(var W=144;W<256;++W)WQ[W]=9;for(var W=256;W<280;++W)WQ[W]=7;for(var W=280;W<288;++W)WQ[W]=8;var tB=new EA(32);for(var W=0;W<32;++W)tB[W]=5;var Bs=JQ(WQ,9,1),Cs=JQ(tB,5,1),rI=function(Q){for(var A=Q[0],I=1;IA&&(A=Q[I]);return A},uA=function(Q,A,I){var g=A/8|0;return(Q[g]|Q[g+1]<<8)>>(A&7)&I},hI=function(Q,A){var I=A/8|0;return(Q[I]|Q[I+1]<<8|Q[I+2]<<16)>>(A&7)},iB=function(Q){return(Q+7)/8|0},_Q=function(Q,A,I){return(A==null||A<0)&&(A=0),(I==null||I>Q.length)&&(I=Q.length),new EA(Q.subarray(A,I))},Es=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],FA=function(Q,A,I){var g=new Error(A||Es[Q]);if(g.code=Q,Error.captureStackTrace&&Error.captureStackTrace(g,FA),!I)throw g;return g},ts=function(Q,A,I,g){var B=Q.length,C=0;if(!B||A.f&&!A.l)return I||new EA(0);var E=!I,t=E||A.i!=2,s=A.i;E&&(I=new EA(B*3));var o=function(MA){var LA=I.length;if(MA>LA){var NA=new EA(Math.max(LA*2,MA));NA.set(I),I=NA}},a=A.f||0,i=A.p||0,D=A.b||0,n=A.l,w=A.d,c=A.m,r=A.n,y=B*8;do{if(!n){a=uA(Q,i,1);var G=uA(Q,i+1,3);if(i+=3,G)if(G==1)n=Bs,w=Cs,c=9,r=5;else if(G==2){var k=uA(Q,i,31)+257,R=uA(Q,i+10,15)+4,d=k+uA(Q,i+5,31)+1;i+=14;for(var Y=new EA(d),m=new EA(19),J=0;J>4;if(h<16)Y[J++]=h;else{var V=0,_=0;for(h==16?(_=3+uA(Q,i,3),i+=2,V=Y[J-1]):h==17?(_=3+uA(Q,i,7),i+=3):h==18&&(_=11+uA(Q,i,127),i+=7);_--;)Y[J++]=V}}var $=Y.subarray(0,k),X=Y.subarray(k);c=rI($),r=rI(X),n=JQ($,c,1),w=JQ(X,r,1)}else FA(1);else{var h=iB(i)+4,M=Q[h-4]|Q[h-3]<<8,l=h+M;if(l>B){s&&FA(0);break}t&&o(D+M),I.set(Q.subarray(h,l),D),A.b=D+=M,A.p=i=l*8,A.f=a;continue}if(i>y){s&&FA(0);break}}t&&o(D+131072);for(var eA=(1<>4;if(i+=V&15,i>y){s&&FA(0);break}if(V||FA(2),DA<256)I[D++]=DA;else if(DA==256){sA=i,n=null;break}else{var YA=DA-254;if(DA>264){var J=DA-257,yA=IB[J];YA=uA(Q,i,(1<>4;nA||FA(3),i+=nA&15;var X=gs[L];if(L>3){var yA=gB[L];X+=hI(Q,i)&(1<y){s&&FA(0);break}t&&o(D+131072);var GA=D+YA;if(D>3&1)+(A>>4&1);g>0;g-=!Q[I++]);return I+(A&2)},yI=function(){function Q(A,I){typeof A=="function"&&(I=A,A={}),this.ondata=I;var g=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:g?g.length:0},this.o=new EA(32768),this.p=new EA(0),g&&this.o.set(g)}return Q.prototype.e=function(A){if(this.ondata||FA(5),this.d&&FA(4),!this.p.length)this.p=A;else if(A.length){var I=new EA(this.p.length+A.length);I.set(this.p),I.set(A,this.p.length),this.p=I}},Q.prototype.c=function(A){this.s.i=+(this.d=A||!1);var I=this.s.b,g=ts(this.p,this.s,this.o);this.ondata(_Q(g,I,this.s.b),this.d),this.o=_Q(g,this.s.b-32768),this.s.b=this.o.length,this.p=_Q(this.p,this.s.p/8|0),this.s.p&=7},Q.prototype.push=function(A,I){this.e(A),this.c(I)},Q}(),sB=function(){function Q(A,I){this.v=1,this.r=0,yI.call(this,A,I)}return Q.prototype.push=function(A,I){if(yI.prototype.e.call(this,A),this.r+=A.length,this.v){var g=this.p.subarray(this.v-1),B=g.length>3?ss(g):4;if(B>g.length){if(!I)return}else this.v>1&&this.onmember&&this.onmember(this.r-g.length);this.p=g.subarray(B),this.v=0}yI.prototype.c.call(this,I),this.s.f&&!this.s.l&&!I&&(this.v=iB(this.s.p)+9,this.s={i:0},this.o=new EA(0),this.push(new EA(0),I))},Q}(),os=typeof TextDecoder<"u"&&new TextDecoder,as=0;try{os.decode(is,{stream:!0}),as=1}catch{}const VQ=new Float32Array(1),DI=new Uint32Array(VQ.buffer);function es(Q){return VQ[0]=Q,DI[0]}function Ds(Q){return DI[0]=Q,VQ[0]}function OA(Q){VQ[0]=Q;const A=DI[0],I=A>>31&1,g=A>>23&255,B=A&8388607,C=I<<15;if(g===255)return B!==0?C|32767:C|31744;const E=g-127+15;if(E>=31)return C|31744;if(E<=0){if(E<-10)return C;const s=(B|8388608)>>1-E+13;return C|s}const t=B>>13;return C|E<<10|t}function PA(Q){const A=Q>>15&1,I=Q>>10&31,g=Q&1023;let B;if(I===0)if(g===0)B=A<<31;else{let C=g,E=-14;for(;(C&1024)===0;)C<<=1,E--;C&=1023;const t=E+127,s=C<<13;B=A<<31|t<<23|s}else if(I===31)g===0?B=A<<31|2139095040:B=A<<31|2143289344;else{const C=I-15+127,E=g<<13;B=A<<31|C<<23|E}return DI[0]=B,VQ[0]}function HA(Q){return Math.max(0,Math.min(255,Math.round(Q*255)))}function dQ(Q){return Math.max(-127,Math.min(127,Math.round(Q*127)))}function oB(Q){return Q/255}function aB(Q){return Q/127}class ns{constructor({asyncFetch:A,maxItems:I=5}){this.asyncFetch=A,this.maxItems=I,this.items=[]}async getFetch(A){const I=this.items.findIndex(B=>B.key===A);if(I>=0){const B=this.items.splice(I,1)[0];return this.items.push(B),B.data}const g=await this.asyncFetch(A);for(this.items.push({key:A,data:g});this.items.length>this.maxItems;)this.items.shift();return g}}function cs(Q,A){const I=Object.entries(Q).map(([g,B])=>[g,A(B,g)]);return Object.fromEntries(I)}function ws(Q,A){const I=Object.entries(Q).map(([g,B])=>[g,A(B,g)]).filter(([g,B])=>B!==void 0);return Object.fromEntries(I)}function eB(Q){const A=[],I=new Set;function g(B){B&&typeof B=="object"&&!I.has(B)&&(I.add(B),B instanceof ArrayBuffer?A.push(B):ArrayBuffer.isView(B)?A.push(B.buffer):Array.isArray(B)?B.forEach(g):Object.values(B).forEach(g))}return g(Q),A}function rs(Q,A){return new Array(Q).fill(null).map((I,g)=>A(g))}class DB{constructor({allocate:A,dispose:I,valid:g}){this.items=[],this.allocate=A,this.dispose=I,this.valid=g}alloc(A){for(;;){const I=this.items.pop();if(!I)break;if(this.valid(I,A))return I;this.dispose&&this.dispose(I)}return this.allocate(A)}free(A){this.items.push(A)}disposeAll(){let A;for(A=this.items.pop();A;)this.dispose&&this.dispose(A),A=this.items.pop()}}function BI(Q,A,I,g,B,C,E,t,s,o,a,i,D,n,w,c){const r=HA(n),y=HA(w),G=HA(c),h=HA(D),M=pI(new e.Quaternion(s,o,a,i)),l=M&255,k=M>>>8&255,R=M>>>16&255,d=C===0?0:Math.min(255,Math.max(0,Math.round((Math.log(C)-fA)/KA)+1)),Y=E===0?0:Math.min(255,Math.max(0,Math.round((Math.log(E)-fA)/KA)+1)),m=t===0?0:Math.min(255,Math.max(0,Math.round((Math.log(t)-fA)/KA)+1)),J=OA(I),x=OA(g),U=OA(B),S=A*4;Q[S]=r|y<<8|G<<16|h<<24,Q[S+1]=J|x<<16,Q[S+2]=U|l<<16|k<<24,Q[S+3]=d|Y<<8|m<<16|R<<24}function hs(Q,A,I,g,B){const C=OA(I),E=OA(g),t=OA(B),s=A*4;Q[s+1]=C|E<<16,Q[s+2]=t|Q[s+2]&4294901760}function ys(Q,A,I,g,B){const C=I===0?0:Math.min(255,Math.max(0,Math.round((Math.log(I)-fA)/KA)+1)),E=g===0?0:Math.min(255,Math.max(0,Math.round((Math.log(g)-fA)/KA)+1)),t=B===0?0:Math.min(255,Math.max(0,Math.round((Math.log(B)-fA)/KA)+1)),s=A*4;Q[s+3]=C|E<<8|t<<16|Q[s+3]&4278190080}function Gs(Q,A,I,g,B,C){const E=pI(new e.Quaternion(I,g,B,C)),t=E&255,s=E>>>8&255,o=E>>>16&255,a=A*4;Q[a+2]=Q[a+2]&65535|t<<16|s<<24,Q[a+3]=Q[a+3]&16777215|o<<24}function ls(Q,A,I,g,B){const C=HA(I),E=HA(g),t=HA(B),s=A*4;Q[s]=C|E<<8|t<<16|Q[s]&4278190080}function Ms(Q,A,I){const g=HA(I),B=A*4;Q[B]=Q[B]&16777215|g<<24}const Ns=new e.Vector3,ks=new e.Vector3,Fs=new e.Quaternion,Rs=new e.Color,Js={center:Ns,scales:ks,quaternion:Fs,color:Rs,opacity:0};function CI(Q,A){const I=Js,g=A*4,B=Q[g],C=Q[g+1],E=Q[g+2],t=Q[g+3];I.color.set((B&255)/255,(B>>>8&255)/255,(B>>>16&255)/255),I.opacity=(B>>>24&255)/255,I.center.set(PA(C&65535),PA(C>>>16&65535),PA(E&65535));const s=t&255;I.scales.x=s===0?0:Math.exp(fA+(s-1)*KA);const o=t>>>8&255;I.scales.y=o===0?0:Math.exp(fA+(o-1)*KA);const a=t>>>16&255;I.scales.z=a===0?0:Math.exp(fA+(a-1)*KA);const i=E>>>16&65535|t>>>8&16711680;return FB(i,I.quaternion),I}function rA(Q){const A=Z,I=Math.max(Ii,Math.min(BQ,Math.ceil(Q/A))),g=Math.ceil(Q/(A*I)),B=A*I*g;return{width:A,height:I,depth:g,maxSplats:B}}function nB(){return navigator.maxTouchPoints>0?!0:/Mobi|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/.test(navigator.userAgent)}function cB(){return/Android/.test(navigator.userAgent)}function wB(){return/Oculus/.test(navigator.userAgent)}function rB(Q,A,I){const g=new Uint8Array(A*4);for(let B=0;BI!==void 0))}const GB=gA(`
+ precision highp float;
+
+ in vec3 position;
+
+ void main() {
+ gl_Position = vec4(position.xy, 0.0, 1.0);
+ }
+`);function lB(Q){const A=new e.Vector3;for(const I of Q)A.add(I);return A.divideScalar(Q.length)}function MB(Q){if(Q.length===0)return new e.Quaternion;const A=Q[0].clone();for(let I=1;I=g)}function kB(Q,A){const[I,g]=[new e.Vector3,new e.Quaternion],[B,C]=[new e.Vector3,new e.Quaternion];Q.decompose(I,g,new e.Vector3),A.decompose(B,C,new e.Vector3);const E=I.distanceTo(B),t=Math.abs(g.dot(C));return{distance:E,coorient:t}}function EI({matrix1:Q,matrix2:A,maxDistance:I,minCoorient:g}){const{distance:B,coorient:C}=kB(Q,A);return B<=I&&(g==null||C>=g)}function Us(Q,A=.001){return Math.abs(Q)>24,g=Q<<16>>24,B=Q<<8>>24;A.set(I/127,g/127,B/127,0);const C=A.x*A.x+A.y*A.y+A.z*A.z;return A.w=Math.sqrt(Math.max(0,1-C)),A}function pI(Q){const A=Q.clone().normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const I=2*Math.acos(A.w),g=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),B=g<1e-6?new e.Vector3(1,0,0):new e.Vector3(A.x,A.y,A.z).divideScalar(g),C=Math.abs(B.x)+Math.abs(B.y)+Math.abs(B.z);let E=B.x/C,t=B.y/C;if(B.z<0){const n=E;E=(1-Math.abs(t))*(E>=0?1:-1),t=(1-Math.abs(n))*(t>=0?1:-1)}const s=E*.5+.5,o=t*.5+.5,a=Math.round(s*255),i=Math.round(o*255);return Math.round(I*(255/Math.PI))<<16|i<<8|a}function FB(Q,A){const I=Q&255,g=Q>>>8&255,B=Q>>>16&255,C=I/255,E=g/255;let t=(C-.5)*2,s=(E-.5)*2;const o=1-(Math.abs(t)+Math.abs(s)),a=Math.max(-o,0);t+=t>=0?-a:a,s+=s>=0?-a:a;const i=new e.Vector3(t,s,o).normalize(),n=B/255*Math.PI*.5,w=Math.sin(n),c=Math.cos(n);return A.set(i.x*w,i.y*w,i.z*w,c),A}function ps(Q){const A=Q.clone().normalize(),I=2*(A.w*A.x+A.y*A.z),g=1-2*(A.x*A.x+A.y*A.y),B=Math.atan2(I,g),C=2*(A.w*A.y-A.z*A.x),E=Math.abs(C)>=1?Math.sign(C)*(Math.PI/2):Math.asin(C),t=2*(A.w*A.z+A.x*A.y),s=1-2*(A.y*A.y+A.z*A.z),o=Math.atan2(t,s),a=(B+Math.PI)/(2*Math.PI),i=(E+Math.PI)/(2*Math.PI),D=(o+Math.PI)/(2*Math.PI),n=Math.round(a*255),w=Math.round(i*255);return Math.round(D*255)<<16|w<<8|n}function Hs(Q,A){const I=Q&255,g=Q>>>8&255,B=Q>>>16&255,C=I/255,E=g/255,t=B/255,s=C*(2*Math.PI)-Math.PI,o=E*(2*Math.PI)-Math.PI,a=t*(2*Math.PI)-Math.PI,i=Math.cos(s*.5),D=Math.sin(s*.5),n=Math.cos(o*.5),w=Math.sin(o*.5),c=Math.cos(a*.5),r=Math.sin(a*.5);return A.w=i*n*c+D*w*r,A.x=D*n*c-i*w*r,A.y=i*w*c+D*n*r,A.z=i*n*r-D*w*c,A.normalize(),A}function vQ(Q,A,I,g){const B=Math.max(-127,Math.min(127,Q*127)),C=Math.max(-127,Math.min(127,A*127)),E=Math.max(-127,Math.min(127,I*127)),t=Math.max(-127,Math.min(127,g*127));return B&255|(C&255)<<8|(E&255)<<16|(t&255)<<24}function fs(Q,A,I){const g=A*2;for(let B=0;B<9;++B){const C=Math.max(-63,Math.min(63,I[B]*63))&127,E=B*7,t=E+7,s=Math.floor(E/32),o=E-s*32,a=C<s*32+32){const i=C>>>32-o&4294967295;Q[g+s+1]|=i}}}function ms(Q,A,I){Q[A*4+0]=vQ(I[0],I[1],I[2],I[3]),Q[A*4+1]=vQ(I[4],I[5],I[6],I[7]),Q[A*4+2]=vQ(I[8],I[9],I[10],I[11]),Q[A*4+3]=vQ(I[12],I[13],I[14],0)}function bs(Q,A,I){const g=A*4;for(let B=0;B<21;++B){const C=Math.max(-31,Math.min(31,I[B]*31))&63,E=B*6,t=E+6,s=Math.floor(E/32),o=E-s*32,a=C<s*32+32){const i=C>>>32-o&4294967295;Q[g+s+1]|=i}}}function RB(Q,A){const I=[];let g=0,B=null;const C=new sB((s,o)=>{if(I.push(s),g+=s.length,o||g>=A){const a=new Uint8Array(g);let i=0;for(const D of I)a.set(D,i),i+=D.length;B=a.slice(0,A)}}),E=1024;let t=0;for(;B==null&&t{this.chunks.push(g),this.totalBytes+=g.length})}read(A){for(;this.totalBytes=this.fileBytes.length&&this.gunzip.push(new Uint8Array(0),!0),this.totalBytesthis.indent+g).join(`
+`)+this.after}}const TI=new Map;function Ks(Q){let A=TI.get(Q);return A||(A=new e.RawShaderMaterial({glslVersion:e.GLSL3,vertexShader:GB,fragmentShader:Q.shader,uniforms:Q.uniforms}),TI.set(Q,A),A)}function mI(Q,A,I="add"){const g=()=>{throw new Error(`Invalid ${I} types: ${Q}, ${A}`)};if(Q===A)return Q;if(Q==="int"){if(tA(A))return A;g()}if(A==="int"){if(tA(Q))return Q;g()}if(Q==="uint"){if(iA(A))return A;g()}if(A==="uint"){if(iA(Q))return Q;g()}if(Q==="float"){if(_A(A))return A;g()}if(A==="float"){if(_A(Q))return Q;g()}throw new Error(`Invalid ${I} types: ${Q}, ${A}`)}function Zs(Q,A){return mI(Q,A,"sub")}function qs(Q,A){const I=()=>{throw new Error(`Invalid mul types: ${Q}, ${A}`)},g=B=>B;if(Q==="int"){if(tA(A))return g(A);I()}if(A==="int"){if(tA(Q))return g(Q);I()}if(Q==="uint"){if(iA(A))return g(A);I()}if(A==="uint"){if(iA(Q))return g(Q);I()}if(Q==="float"){if(_A(A))return g(A);I()}if(A==="float"){if(_A(Q))return g(Q);I()}if(tA(Q)||iA(Q)||tA(A)||iA(A)){if(Q===A)return g(Q);I()}if(Q==="vec2"){if(A==="vec2"||QQ(A))return g("vec2");if(A==="mat3x2")return g("vec3");if(A==="mat4x2")return g("vec4");I()}if(Q==="vec3"){if(A==="mat2x3")return g("vec2");if(A==="vec3"||IQ(A))return g("vec3");if(A==="mat4x3")return g("vec4");I()}if(Q==="vec4"){if(A==="mat2x4")return g("vec2");if(A==="mat3x4")return g("vec3");if(A==="vec4"||gQ(A))return g("vec4");I()}if(A==="vec2"){if(QQ(Q))return g("vec2");if(Q==="mat2x3")return g("vec3");if(Q==="mat2x4")return g("vec4");I()}if(A==="vec3"){if(Q==="mat3x2")return g("vec2");if(IQ(Q))return g("vec3");if(Q==="mat3x4")return g("vec4");I()}if(A==="vec4"){if(Q==="mat4x2")return g("vec2");if(Q==="mat4x3")return g("vec3");if(gQ(Q))return g("vec4");I()}if(QQ(Q)){if(QQ(A))return g("mat2");if(A==="mat3x2")return g("mat3x2");if(A==="mat4x2")return g("mat4x2");I()}if(Q==="mat2x3"){if(QQ(A))return g("mat2x3");if(A==="mat3x2")return g("mat3");if(A==="mat4x2")return g("mat4x3");I()}if(Q==="mat2x4"){if(QQ(A))return g("mat2x4");if(A==="mat3x2")return g("mat3x4");if(A==="mat4x2")return g("mat4");I()}if(Q==="mat3x2"){if(A==="mat2x3")return g("mat2");if(IQ(A))return g("mat3x2");if(A==="mat4x3")return g("mat4x2");I()}if(IQ(Q)){if(A==="mat2x3")return g("mat2x3");if(IQ(A))return g("mat3");if(A==="mat4x3")return g("mat4x3");I()}if(Q==="mat3x4"){if(A==="mat2x3")return g("mat2x4");if(IQ(A))return g("mat3x4");if(A==="mat4x3")return g("mat4");I()}if(Q==="mat4x2"){if(A==="mat2x4")return g("mat2");if(A==="mat3x4")return g("mat3x2");if(gQ(A))return g("mat4x2");I()}if(Q==="mat4x3"){if(A==="mat2x4")return g("mat2x3");if(A==="mat3x4")return g("mat3");if(gQ(A))return g("mat4x3");I()}if(gQ(Q)){if(A==="mat2x4")return g("mat2x4");if(A==="mat3x4")return g("mat3x4");if(gQ(A))return g("mat4");I()}throw new Error(`Invalid mul types: ${Q}, ${A}`)}function Ws(Q,A){return mI(Q,A,"div")}function Vs(Q,A){if(Q===A)return Q;if(Q==="int"){if(tA(A))return A}else if(A==="int"){if(tA(Q))return Q}else if(Q==="uint"){if(iA(A))return A}else if(A==="uint"&&iA(Q))return Q;throw new Error(`Invalid imod types: ${Q}, ${A}`)}function Ts(Q,A){if(Q===A||A==="float")return Q;throw new Error(`Invalid mod types: ${Q}, ${A}`)}function vs(Q){return Q}function Xs(Q){return Q}function js(Q){return Q}function zs(Q){return Q}function Os(Q){return Q}function Ps(Q){return Q}function _s(Q){return Q}function $s(Q){return Q}function Ao(Q){return Q}function Qo(Q){return Q}function Io(Q){return Q}function go(Q){return Q}function Bo(Q){return Q}function Co(Q){return Q}function Eo(Q){return Q}function to(Q){return Q}function dB(Q,A,I="min"){if(Q===A)return Q;if(A==="float"){if(bQ(Q))return Q}else if(A==="int"){if(tA(Q))return Q}else if(A==="uint"&&iA(Q))return Q;throw new Error(`Invalid ${I} types: ${Q}, ${A}`)}function io(Q,A){return dB(Q,A,"max")}function so(Q,A,I){if(A==="float"){if(bQ(Q))return Q}else if(A==="int"){if(tA(Q))return Q}else if(A==="uint"&&iA(Q))return Q;throw new Error(`Invalid clamp types: ${Q}, ${A}`)}function oo(Q,A,I){if(I===Q||I==="float"||I==="bool"&&Q==="float"||I==="bvec2"&&Q==="vec2"||I==="bvec3"&&Q==="vec3"||I==="bvec4"&&Q==="vec4")return Q;throw new Error(`Invalid mix types: ${Q}, ${A}, ${I}`)}function ao(Q,A){if(Q===A||A==="float")return A;throw new Error(`Invalid step types: ${Q}, ${A}`)}function eo(Q,A,I){if(Q===A&&(Q===I||Q==="float"))return I;throw new Error(`Invalid smoothstep types: ${Q}, ${A}, ${I}`)}function YB(Q,A="isNan"){if(Q==="float")return"bool";if(Q==="vec2")return"bvec2";if(Q==="vec3")return"bvec3";if(Q==="vec4")return"bvec4";throw new Error(`Invalid ${A} types: ${Q}`)}function Do(Q){return YB(Q,"isInf")}const wA=(Q,A)=>new LB({a:Q,b:A}),LQ=(Q,A)=>new pB({a:Q,b:A}),CA=(Q,A)=>new HB({a:Q,b:A}),$Q=(Q,A)=>new fB({a:Q,b:A}),kI=(Q,A)=>new mB({a:Q,b:A}),uB=(Q,A)=>new bB({a:Q,b:A}),no=Q=>new xB({a:Q}).outputs,co=Q=>new KB({a:Q}),wo=Q=>new ZB({a:Q}),ro=Q=>new qB({a:Q}),ho=Q=>new WB({a:Q}),yo=Q=>new VB({a:Q}),Go=Q=>new TB({a:Q}),lo=Q=>new vB({a:Q}),AI=Q=>new XB({a:Q}),Mo=(Q,A)=>new jB({a:Q,b:A}),No=Q=>new zB({a:Q}),ko=Q=>new OB({a:Q}),Fo=Q=>new PB({a:Q}),Ro=Q=>new _B({a:Q}),Jo=Q=>new $B({a:Q}),Yo=Q=>new AC({a:Q}),uo=Q=>new QC({a:Q}),Uo=(Q,A)=>new IC({a:Q,b:A}),UB=(Q,A)=>new gC({a:Q,b:A}),So=(Q,A,I)=>new BC({a:Q,min:A,max:I}),SB=(Q,A,I)=>new CC({a:Q,b:A,t:I}),Lo=(Q,A)=>new EC({edge:Q,x:A}),po=(Q,A,I)=>new tC({edge0:Q,edge1:A,x:I}),Ho=Q=>new iC({a:Q}),fo=Q=>new sC({a:Q});class LB extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"sum",outTypeFunc:mI}),this.statements=({inputs:g,outputs:B})=>[`${B.sum} = ${g.a} + ${g.b};`]}}class pB extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"difference",outTypeFunc:Zs}),this.statements=({inputs:g,outputs:B})=>[`${B.difference} = ${g.a} - ${g.b};`]}}class HB extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"product",outTypeFunc:qs}),this.statements=({inputs:g,outputs:B})=>[`${B.product} = ${g.a} * ${g.b};`]}}class fB extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"quotient",outTypeFunc:Ws}),this.statements=({inputs:g,outputs:B})=>[`${B.quotient} = ${g.a} / ${g.b};`]}}class mB extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"remainder",outTypeFunc:Vs}),this.statements=({inputs:g,outputs:B})=>[`${B.remainder} = ${g.a} % ${g.b};`]}}class bB extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"remainder",outTypeFunc:Ts}),this.statements=({inputs:g,outputs:B})=>[`${B.remainder} = mod(${g.a}, ${g.b});`]}}class xB extends f{constructor({a:A}){const I={a:p(A)},g=I.a,B={fract:g,integer:g};super({inTypes:I,outTypes:B,inputs:{a:A}}),this.statements=({inputs:C,outputs:E})=>[`${E.fract} = modf(${C.a}, ${E.integer});`]}}class KB extends N{constructor({a:A}){super({a:A,outKey:"neg",outTypeFunc:vs}),this.statements=({inputs:I,outputs:g})=>[`${g.neg} = -${I.a};`]}}class ZB extends N{constructor({a:A}){super({a:A,outKey:"abs",outTypeFunc:Xs}),this.statements=({inputs:I,outputs:g})=>[`${g.abs} = abs(${I.a});`]}}class qB extends N{constructor({a:A}){super({a:A,outKey:"sign",outTypeFunc:js}),this.statements=({inputs:I,outputs:g})=>[`${g.sign} = sign(${I.a});`]}}class WB extends N{constructor({a:A}){super({a:A,outKey:"floor",outTypeFunc:zs}),this.statements=({inputs:I,outputs:g})=>[`${g.floor} = floor(${I.a});`]}}class VB extends N{constructor({a:A}){super({a:A,outKey:"ceil",outTypeFunc:Os}),this.statements=({inputs:I,outputs:g})=>[`${g.ceil} = ceil(${I.a});`]}}class TB extends N{constructor({a:A}){super({a:A,outKey:"trunc",outTypeFunc:Ps}),this.statements=({inputs:I,outputs:g})=>[`${g.trunc} = trunc(${I.a});`]}}class vB extends N{constructor({a:A}){super({a:A,outKey:"round",outTypeFunc:_s}),this.statements=({inputs:I,outputs:g})=>[`${g.round} = round(${I.a});`]}}class XB extends N{constructor({a:A}){super({a:A,outKey:"fract",outTypeFunc:$s}),this.statements=({inputs:I,outputs:g})=>[`${g.fract} = fract(${I.a});`]}}class jB extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"power",outTypeFunc:Ao}),this.statements=({inputs:g,outputs:B})=>[`${B.power} = pow(${g.a}, ${g.b});`]}}class zB extends N{constructor({a:A}){super({a:A,outKey:"exp",outTypeFunc:Qo}),this.statements=({inputs:I,outputs:g})=>[`${g.exp} = exp(${I.a});`]}}class OB extends N{constructor({a:A}){super({a:A,outKey:"exp2",outTypeFunc:Io}),this.statements=({inputs:I,outputs:g})=>[`${g.exp2} = exp2(${I.a});`]}}class PB extends N{constructor({a:A}){super({a:A,outKey:"log",outTypeFunc:go}),this.statements=({inputs:I,outputs:g})=>[`${g.log} = log(${I.a});`]}}class _B extends N{constructor({a:A}){super({a:A,outKey:"log2",outTypeFunc:Bo}),this.statements=({inputs:I,outputs:g})=>[`${g.log2} = log2(${I.a});`]}}class $B extends N{constructor({a:A}){super({a:A,outKey:"sqr",outTypeFunc:Co}),this.statements=({inputs:I,outputs:g})=>[`${g.sqr} = ${I.a} * ${I.a};`]}}class AC extends N{constructor({a:A}){super({a:A,outKey:"sqrt",outTypeFunc:Eo}),this.statements=({inputs:I,outputs:g})=>[`${g.sqrt} = sqrt(${I.a});`]}}class QC extends N{constructor({a:A}){super({a:A,outKey:"inversesqrt",outTypeFunc:to}),this.statements=({inputs:I,outputs:g})=>[`${g.inversesqrt} = inversesqrt(${I.a});`]}}class IC extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"min",outTypeFunc:dB}),this.statements=({inputs:g,outputs:B})=>[`${B.min} = min(${g.a}, ${g.b});`]}}class gC extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"max",outTypeFunc:io}),this.statements=({inputs:g,outputs:B})=>[`${B.max} = max(${g.a}, ${g.b});`]}}class BC extends oQ{constructor({a:A,min:I,max:g}){super({a:A,b:I,c:g,outKey:"clamp",outTypeFunc:so}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:t,c:s}=B;return[`${C.clamp} = clamp(${E}, ${t}, ${s});`]}}}class CC extends oQ{constructor({a:A,b:I,t:g}){super({a:A,b:I,c:g,outKey:"mix",outTypeFunc:oo}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:t,c:s}=B;return[`${C.mix} = mix(${E}, ${t}, ${s});`]}}}class EC extends b{constructor({edge:A,x:I}){super({a:A,b:I,outKey:"step",outTypeFunc:ao}),this.statements=({inputs:g,outputs:B})=>{const{a:C,b:E}=g;return[`${B.step} = step(${C}, ${E});`]}}}class tC extends oQ{constructor({edge0:A,edge1:I,x:g}){super({a:A,b:I,c:g,outKey:"smoothstep",outTypeFunc:eo}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:t,c:s}=B;return[`${C.smoothstep} = smoothstep(${E}, ${t}, ${s});`]}}}class iC extends N{constructor({a:A}){super({a:A,outKey:"isNan",outTypeFunc:YB}),this.statements=({inputs:I,outputs:g})=>[`${g.isNan} = isNan(${I.a});`]}}class sC extends N{constructor({a:A}){super({a:A,outKey:"isInf",outTypeFunc:Do}),this.statements=({inputs:I,outputs:g})=>[`${g.isInf} = isInf(${I.a});`]}}const mo=(Q,A)=>new oC({a:Q,b:A}),bo=(Q,A)=>new aC({a:Q,b:A}),xo=(Q,A)=>new eC({a:Q,b:A}),Ko=Q=>new DC({a:Q}),Zo=(Q,A)=>new nC({a:Q,b:A}),qo=(Q,A)=>new cC({a:Q,b:A}),Wo=(Q,A)=>new wC({a:Q,b:A}),Vo=(Q,A)=>new rC({a:Q,b:A}),To=(Q,A)=>new hC({a:Q,b:A}),vo=(Q,A)=>new yC({a:Q,b:A}),Xo=Q=>new GC({a:Q}),jo=Q=>new lC({a:Q}),zo=(Q,A,I)=>new MC({cond:Q,t:A,f:I}),Oo=Q=>new kC({a:Q});class oC extends b{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"and"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.and==="bool"?[`${B.and} = ${g.a} && ${g.b};`]:[`${B.and} = ${g.a} & ${g.b};`]}}class aC extends b{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"or"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.or==="bool"?[`${B.or} = ${g.a} || ${g.b};`]:[`${B.or} = ${g.a} | ${g.b};`]}}class eC extends b{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"xor"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.xor==="bool"?[`${B.xor} = ${g.a} ^^ ${g.b};`]:[`${B.xor} = ${g.a} ^ ${g.b};`]}}class DC extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>I,outKey:"not"}),this.statements=({inputs:I,outputs:g})=>this.outTypes.not==="bool"?[`${g.not} = !${I.a};`]:[`${g.not} = not(${I.a});`]}}class nC extends b{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>nI(g,"lessThan"),outKey:"lessThan"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.lessThan==="bool"?[`${B.lessThan} = ${g.a} < ${g.b};`]:[`${B.lessThan} = lessThan(${g.a}, ${g.b});`]}}class cC extends b{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>nI(g,"lessThanEqual"),outKey:"lessThanEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.lessThanEqual==="bool"?[`${B.lessThanEqual} = ${g.a} <= ${g.b};`]:[`${B.lessThanEqual} = lessThanEqual(${g.a}, ${g.b});`]}}class wC extends b{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>nI(g,"greaterThan"),outKey:"greaterThan"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.greaterThan==="bool"?[`${B.greaterThan} = ${g.a} > ${g.b};`]:[`${B.greaterThan} = greaterThan(${g.a}, ${g.b});`]}}class rC extends b{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:(g,B)=>nI(g,"greaterThanEqual"),outKey:"greaterThanEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.greaterThanEqual==="bool"?[`${B.greaterThanEqual} = ${g.a} >= ${g.b};`]:[`${B.greaterThanEqual} = greaterThanEqual(${g.a}, ${g.b});`]}}class hC extends b{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:NC,outKey:"equal"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.equal==="bool"?[`${B.equal} = ${g.a} == ${g.b};`]:[`${B.equal} = equal(${g.a}, ${g.b});`]}}class yC extends b{constructor({a:A,b:I}){super({a:A,b:I,outTypeFunc:Po,outKey:"notEqual"}),this.statements=({inputs:g,outputs:B})=>this.outTypes.notEqual==="bool"?[`${B.notEqual} = ${g.a} != ${g.b};`]:[`${B.notEqual} = notEqual(${g.a}, ${g.b});`]}}class GC extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>"bool",outKey:"any"}),this.statements=({inputs:I,outputs:g})=>[`${g.any} = any(${I.a});`]}}class lC extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>"bool",outKey:"all"}),this.statements=({inputs:I,outputs:g})=>[`${g.all} = all(${I.a});`]}}class MC extends oQ{constructor({cond:A,t:I,f:g}){super({a:A,b:I,c:g,outKey:"select",outTypeFunc:(B,C,E)=>C}),this.statements=({inputs:B,outputs:C})=>{const{a:E,b:t,c:s}=B;return[`${C.select} = (${E}) ? (${t}) : (${s});`]}}}function nI(Q,A){if(sQ(Q))return"bool";if(Q==="ivec2"||Q==="uvec2"||Q==="vec2")return"bvec2";if(Q==="ivec3"||Q==="uvec3"||Q==="vec3")return"bvec3";if(Q==="ivec4"||Q==="uvec4"||Q==="vec4")return"bvec4";throw new Error(`Invalid ${A} type: ${Q}`)}function NC(Q,A="equal"){if(sQ(Q))return"bool";if(iQ(Q))return Q;if(Q==="ivec2"||Q==="uvec2"||Q==="vec2")return"bvec2";if(Q==="ivec3"||Q==="uvec3"||Q==="vec3")return"bvec3";if(Q==="ivec4"||Q==="uvec4"||Q==="vec4")return"bvec4";throw new Error(`Invalid ${A} type: ${Q}`)}function Po(Q){return NC(Q,"notEqual")}function _o(Q){if(iQ(Q))return"bool";if(tA(Q))return"int";if(iA(Q))return"uint";throw new Error(`Invalid compXor type: ${Q}`)}class kC extends N{constructor({a:A}){const I=_o(p(A));super({a:A,outTypeFunc:g=>I,outKey:"compXor"}),this.statements=({inputs:g,outputs:B})=>{if(sQ(this.outTypes.compXor))return[`${B.compXor} = ${g.a};`];const E=(yQ(I)?["x","y"]:GQ(I)?["x","y","z"]:["x","y","z","w"]).map(s=>`${g.a}.${s}`),t=iQ(I)?"^^":"^";return[`${B.compXor} = ${E.join(` ${t} `)};`]}}}const $o=Q=>new UC({value:Q}),Aa=Q=>new SC({value:Q}),Qa=Q=>new LC({value:Q}),FC=Q=>new pC({value:Q}),Ia=Q=>new HC({value:Q}),ga=Q=>new fC({value:Q}),Ba=Q=>new mC({value:Q}),Ca=Q=>new bC({value:Q}),Ea=Q=>new xC({value:Q}),ta=Q=>new KC({value:Q}),ia=Q=>new ZC({value:Q}),sa=Q=>new qC({value:Q}),oa=Q=>new WC({value:Q}),RC=Q=>new VC({value:Q}),tQ=Q=>new TC({value:Q}),JC=Q=>new vC({value:Q}),aa=Q=>new XC({value:Q}),ea=Q=>new jC({value:Q}),Da=Q=>new zC({value:Q}),dC=Q=>new OC({value:Q}),na=Q=>new PC({value:Q}),ca=Q=>new _C({value:Q}),wa=Q=>new $C({value:Q}),ra=Q=>new AE({value:Q}),ha=Q=>new QE({value:Q}),ya=Q=>new IE({value:Q}),Ga=Q=>new gE({value:Q}),YC=Q=>new BE({value:Q}),la=Q=>new CE({value:Q}),uC=Q=>new EE({value:Q});class P extends N{constructor({value:A,outType:I,outKey:g}){super({a:A,outTypeFunc:()=>I,outKey:g}),this.statements=({inputs:B,outputs:C})=>[`${C[g]} = ${Bg(I)}(${B.a});`]}}class UC extends P{constructor({value:A}){super({value:A,outType:"bool",outKey:"bool"})}}class SC extends P{constructor({value:A}){super({value:A,outType:"int",outKey:"int"})}}class LC extends P{constructor({value:A}){super({value:A,outType:"uint",outKey:"uint"})}}class pC extends P{constructor({value:A}){super({value:A,outType:"float",outKey:"float"})}}class HC extends P{constructor({value:A}){super({value:A,outType:"bvec2",outKey:"bvec2"})}}class fC extends P{constructor({value:A}){super({value:A,outType:"bvec3",outKey:"bvec3"})}}class mC extends P{constructor({value:A}){super({value:A,outType:"bvec4",outKey:"bvec4"})}}class bC extends P{constructor({value:A}){super({value:A,outType:"ivec2",outKey:"ivec2"})}}class xC extends P{constructor({value:A}){super({value:A,outType:"ivec3",outKey:"ivec3"})}}class KC extends P{constructor({value:A}){super({value:A,outType:"ivec4",outKey:"ivec4"})}}class ZC extends P{constructor({value:A}){super({value:A,outType:"uvec2",outKey:"uvec2"})}}class qC extends P{constructor({value:A}){super({value:A,outType:"uvec3",outKey:"uvec3"})}}class WC extends P{constructor({value:A}){super({value:A,outType:"uvec4",outKey:"uvec4"})}}class VC extends P{constructor({value:A}){super({value:A,outType:"vec2",outKey:"vec2"})}}class TC extends P{constructor({value:A}){super({value:A,outType:"vec3",outKey:"vec3"})}}class vC extends P{constructor({value:A}){super({value:A,outType:"vec4",outKey:"vec4"})}}class XC extends P{constructor({value:A}){super({value:A,outType:"mat2",outKey:"mat2"})}}class jC extends P{constructor({value:A}){super({value:A,outType:"mat3",outKey:"mat3"})}}class zC extends P{constructor({value:A}){super({value:A,outType:"mat4",outKey:"mat4"})}}class OC extends N{constructor({value:A}){super({a:A,outKey:"int",outTypeFunc:()=>"int"}),this.statements=({inputs:I,outputs:g})=>[`${g.int} = floatBitsToInt(${I.a});`]}}class PC extends N{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = floatBitsToUint(${I.a});`]}}class _C extends N{constructor({value:A}){super({a:A,outKey:"float",outTypeFunc:()=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.float} = intBitsToFloat(${I.a});`]}}class $C extends N{constructor({value:A}){super({a:A,outKey:"float",outTypeFunc:()=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.float} = uintBitsToFloat(${I.a});`]}}class AE extends N{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packSnorm2x16(${I.a});`]}}class QE extends N{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackSnorm2x16(${I.a});`]}}class IE extends N{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packUnorm2x16(${I.a});`]}}class gE extends N{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackUnorm2x16(${I.a});`]}}class BE extends N{constructor({value:A}){super({a:A,outKey:"uint",outTypeFunc:()=>"uint"}),this.statements=({inputs:I,outputs:g})=>[`${g.uint} = packHalf2x16(${I.a});`]}}class CE extends N{constructor({value:A}){super({a:A,outKey:"vec2",outTypeFunc:()=>"vec2"}),this.statements=({inputs:I,outputs:g})=>[`${g.vec2} = unpackHalf2x16(${I.a});`]}}class EE extends N{constructor({value:A}){super({a:A,outKey:"rgba8",outTypeFunc:()=>"vec4"}),this.statements=({inputs:I,outputs:g})=>[`uvec4 uRgba = uvec4(${I.a} & 0xffu, (${I.a} >> 8u) & 0xffu, (${I.a} >> 16u) & 0xffu, (${I.a} >> 24u) & 0xffu);`,`${g.rgba8} = vec4(uRgba) / 255.0;`]}}const Ma=Q=>new sE({a:Q}),Na=(Q,A)=>new oE({a:Q,b:A}),ka=(Q,A)=>new aE({a:Q,b:A}),Fa=(Q,A)=>new eE({a:Q,b:A}),tE=Q=>new DE({a:Q}),Ra=(Q,A,I)=>new wE({a:Q,b:A,c:I}),Ja=(Q,A)=>new rE({incident:Q,normal:A}),da=(Q,A,I)=>new hE({incident:Q,normal:A,eta:I}),YQ=Q=>new kE({vector:Q}),mA=({vector:Q,vectorType:A,x:I,y:g,z:B,w:C,r:E,g:t,b:s,a:o})=>new FE({vector:Q,vectorType:A,x:I,y:g,z:B,w:C,r:E,g:t,b:s,a:o}),Ya=Q=>new nE({a:Q}),iE=(Q,A)=>new cE({a:Q,b:A}),ua=(Q,A)=>new RE({vector:Q,select:A}),Ua=(Q,A)=>new yE({a:Q,b:A}),Sa=(Q,A)=>new GE({a:Q,b:A}),La=Q=>new lE({a:Q}),pa=Q=>new ME({a:Q}),Ha=Q=>new NE({a:Q});class sE extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>"float",outKey:"length"}),this.statements=({inputs:I,outputs:g})=>[`${g.length} = length(${I.a});`]}}class oE extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"distance",outTypeFunc:(g,B)=>"float"}),this.statements=({inputs:g,outputs:B})=>[`${B.distance} = distance(${g.a}, ${g.b});`]}}class aE extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"dot",outTypeFunc:(g,B)=>"float"}),this.statements=({inputs:g,outputs:B})=>[`${B.dot} = dot(${g.a}, ${g.b});`]}}class eE extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"cross",outTypeFunc:(g,B)=>"vec3"}),this.statements=({inputs:g,outputs:B})=>[`${B.cross} = cross(${g.a}, ${g.b});`]}}class DE extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>I,outKey:"normalize"}),this.statements=({inputs:I,outputs:g})=>[`${g.normalize} = normalize(${I.a});`]}}function fa(Q){if(Q==="vec3")return"vec2";if(Q==="vec4")return"vec3";throw new Error("Invalid type")}class nE extends N{constructor({a:A}){super({a:A,outTypeFunc:I=>fa(I),outKey:"projected"}),this.statements=({inputs:I,outputs:g})=>{if(this.inTypes.a==="vec3")return[`${g.projected} = ${I.a}.xy / ${I.a}.z;`];if(this.inTypes.a==="vec4")return[`${g.projected} = ${I.a}.xyz / ${I.a}.w;`];throw new Error("Invalid type")}}}function ma(Q){if(Q==="float")return"vec2";if(Q==="vec2")return"vec3";if(Q==="vec3")return"vec4";throw new Error("Invalid type")}class cE extends b{constructor({a:A,b:I}){const g=p(A),B=ma(g);super({a:A,b:I,outKey:"extend",outTypeFunc:()=>B}),this.statements=({inputs:C,outputs:E})=>[`${E.extend} = ${B}(${C.a}, ${C.b});`]}}class wE extends oQ{constructor({a:A,b:I,c:g}){super({a:A,b:I,c:g,outKey:"forward",outTypeFunc:(B,C,E)=>B}),this.statements=({inputs:B,outputs:C})=>[`${C.forward} = faceforward(${B.a}, ${B.b}, ${B.c});`]}}class rE extends b{constructor({incident:A,normal:I}){super({a:A,b:I,outKey:"reflection",outTypeFunc:(g,B)=>g}),this.statements=({inputs:g,outputs:B})=>[`${B.reflection} = reflect(${g.a}, ${g.b});`]}}class hE extends oQ{constructor({incident:A,normal:I,eta:g}){super({a:A,b:I,c:g,outKey:"refraction",outTypeFunc:(B,C,E)=>B}),this.statements=({inputs:B,outputs:C})=>[`${C.refraction} = refract(${B.a}, ${B.b}, ${B.c});`]}}class yE extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"product",outTypeFunc:(g,B)=>g}),this.statements=({inputs:g,outputs:B})=>[`${B.product} = matrixCompMult(${A}, ${I});`]}}function ba(Q,A){if(Q==="vec2"){if(A==="vec2")return"mat2";if(A==="vec3")return"mat3x2";if(A==="vec4")return"mat4x2"}if(Q==="vec3"){if(A==="vec2")return"mat2x3";if(A==="vec3")return"mat3";if(A==="vec4")return"mat4x3"}if(Q==="vec4"){if(A==="vec2")return"mat2x4";if(A==="vec3")return"mat3x4";if(A==="vec4")return"mat4"}throw new Error(`Invalid outer type: ${Q}, ${A}`)}class GE extends b{constructor({a:A,b:I}){super({a:A,b:I,outKey:"outer",outTypeFunc:ba}),this.statements=({inputs:g,outputs:B})=>[`${B.outer} = outerProduct(${g.a}, ${g.b});`]}}function xa(Q){if(Q==="mat2")return"mat2";if(Q==="mat3")return"mat3";if(Q==="mat4")return"mat4";if(Q==="mat2x2")return"mat2x2";if(Q==="mat2x3")return"mat3x2";if(Q==="mat2x4")return"mat4x2";if(Q==="mat3x2")return"mat2x3";if(Q==="mat3x3")return"mat3x3";if(Q==="mat3x4")return"mat4x3";if(Q==="mat4x2")return"mat2x4";if(Q==="mat4x3")return"mat3x4";if(Q==="mat4x4")return"mat4x4";throw new Error(`Invalid transpose type: ${Q}`)}class lE extends N{constructor({a:A}){super({a:A,outKey:"transpose",outTypeFunc:xa}),this.statements=({inputs:I,outputs:g})=>[`${g.transpose} = transpose(${I.a});`]}}class ME extends N{constructor({a:A}){super({a:A,outKey:"det",outTypeFunc:I=>"float"}),this.statements=({inputs:I,outputs:g})=>[`${g.det} = determinant(${I.a});`]}}class NE extends N{constructor({a:A}){super({a:A,outKey:"inverse",outTypeFunc:I=>I}),this.statements=({inputs:I,outputs:g})=>[`${g.inverse} = inverse(${A});`]}}function Ka(Q){const A=I=>I;switch(Q){case"vec2":return A({x:"float",y:"float",r:"float",g:"float"});case"vec3":return A({x:"float",y:"float",z:"float",r:"float",g:"float",b:"float"});case"vec4":return A({x:"float",y:"float",z:"float",w:"float",r:"float",g:"float",b:"float",a:"float"});case"ivec2":return A({x:"int",y:"int",r:"int",g:"int"});case"ivec3":return A({x:"int",y:"int",z:"int",r:"int",g:"int",b:"int"});case"ivec4":return A({x:"int",y:"int",z:"int",w:"int",r:"int",g:"int",b:"int",a:"int"});case"uvec2":return A({x:"uint",y:"uint",r:"uint",g:"uint"});case"uvec3":return A({x:"uint",y:"uint",z:"uint",r:"uint",g:"uint",b:"uint"});case"uvec4":return A({x:"uint",y:"uint",z:"uint",w:"uint",r:"uint",g:"uint",b:"uint",a:"uint"});default:throw new Error(`Invalid vector type: ${Q}`)}}class kE extends f{constructor({vector:A}){const g={vector:p(A)},B=Ka(g.vector);super({inTypes:g,outTypes:B,inputs:{vector:A}}),this.statements=({inputs:C,outputs:E})=>{const{x:t,y:s,z:o,w:a,r:i,g:D,b:n,a:w}=E,{vector:c}=C;return[t?`${t} = ${c}.x;`:null,s?`${s} = ${c}.y;`:null,o?`${o} = ${c}.z;`:null,a?`${a} = ${c}.w;`:null,i?`${i} = ${c}.r;`:null,D?`${D} = ${c}.g;`:null,n?`${n} = ${c}.b;`:null,w?`${w} = ${c}.a;`:null].filter(Boolean)}}}class FE extends f{constructor({vector:A,vectorType:I,x:g,y:B,z:C,w:E,r:t,g:s,b:o,a}){if(!A&&!I)throw new Error("Either vector or vectorType must be provided");const i=I??p(A),D=Qg(i),n=Ig(i),w={vector:i,x:D,y:D,r:D,g:D},c={vector:A,x:g,y:B,r:t,g:s};n>=3&&(Object.assign(w,{z:D,b:D}),Object.assign(c,{z:C,b:o})),n>=4&&(Object.assign(w,{w:D,a:D}),Object.assign(c,{w:E,a})),super({inTypes:w,outTypes:{vector:i},inputs:c}),this.statements=({inputs:r,outputs:y})=>{const{vector:G}=y,{vector:h,x:M,y:l,z:k,w:R,r:d,g:Y,b:m,a:J}=r,x=[`${G}.x = ${M??d??(h?`${h}.x`:NQ(D))};`,`${G}.y = ${l??Y??(h?`${h}.y`:NQ(D))};`];return n>=3&&x.push(`${G}.z = ${k??m??(h?`${h}.z`:NQ(D))};`),n>=4&&x.push(`${G}.w = ${R??J??(h?`${h}.w`:NQ(D))};`),x}}dynoOut(){return new H(this,"vector")}}function Za(Q,A){let I=null;if(bQ(Q)?I=A.length===1?"float":A.length===2?"vec2":A.length===3?"vec3":A.length===4?"vec4":null:tA(Q)?I=A.length===1?"int":A.length===2?"ivec2":A.length===3?"ivec3":A.length===4?"ivec4":null:iA(Q)&&(I=A.length===1?"uint":A.length===2?"uvec2":A.length===3?"uvec3":A.length===4?"uvec4":null),I==null)throw new Error(`Invalid swizzle: ${A}`);return I}class RE extends N{constructor({vector:A,select:I}){super({a:A,outKey:"swizzle",outTypeFunc:g=>Za(g,I)}),this.statements=({inputs:g,outputs:B})=>[`${B.swizzle} = ${g.a}.${I};`]}}const qa=(Q,A,I)=>new SE({index:Q,from:A,to:I}),Wa=Q=>new lQ({value:Q}),Va=Q=>new RA({state:Q}),Ta=Q=>new JA({state:Q}),JE=Q=>new LE({value:Q}),dE=Q=>new pE({value:Q}),YE=Q=>new HE({value:Q}),uE=Q=>new fE({value:Q}),va=Q=>new mE({value:Q}),Xa=Q=>new bE({value:Q}),UE=Q=>new xE({value:Q}),FI=Q=>new KE({value:Q});class SE extends f{constructor({from:A,to:I,index:g}){super({inTypes:{from:"int",to:"int",index:"int"},outTypes:{index:"int"},inputs:{from:A,to:I,index:g},statements:({inputs:B,outputs:C})=>[`${C.index} = ${B.index} - ${B.from} + ${B.to};`]})}dynoOut(){return new H(this,"index")}}class RA extends f{constructor({state:A}){const I=p(A);super({inTypes:{state:I},outTypes:{state:"uint"},inputs:{state:A},globals:()=>[gA(`
+ uint pcg_next(uint state) {
+ return state * 747796405u + 2891336453u;
+ }
+ `)],statements:({inputs:g,outputs:B})=>{const C=I==="uint"?`${g.state}`:I==="int"?`uint(${g.state})`:`floatBitsToUint(${g.state})`;return[`${B.state} = pcg_next(${C});`]}})}dynoOut(){return new H(this,"state")}}class JA extends f{constructor({state:A}){super({inTypes:{state:"uint"},outTypes:{hash:"uint"},inputs:{state:A},globals:()=>[gA(`
+ uint pcg_hash(uint state) {
+ uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;
+ return (hash >> 22u) ^ hash;
+ }
+ `)],statements:({inputs:I,outputs:g})=>[`${g.hash} = pcg_hash(${I.state});`]})}dynoOut(){return new H(this,"hash")}}class lQ extends f{constructor({value:A}){const I=p(A),g=gg(I);super({inTypes:{value:I},outTypes:{state:"uint"},inputs:{value:A},globals:()=>[gA(`
+ uint pcg_mix(uint value) {
+ return value;
+ }
+ uint pcg_mix(uvec2 value) {
+ return value.x + 0x9e3779b9u * value.y;
+ }
+ uint pcg_mix(uvec3 value) {
+ return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z;
+ }
+ uint pcg_mix(uvec4 value) {
+ return value.x + 0x9e3779b9u * value.y + 0x85ebca6bu * value.z + 0xc2b2ae35u * value.w;
+ }
+ `)],statements:({inputs:B,outputs:C})=>{const E=iA(I)?`${B.value}`:tA(I)?`${g}(${B.value})`:`floatBitsToUint(${B.value})`;return[`${g} bits = ${E};`,`${C.state} = pcg_mix(bits);`]}})}dynoOut(){return new H(this,"state")}}class LE extends bA{constructor({value:A}){super({inTypes:{value:p(A)},outTypes:{hash:"uint"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new lQ({value:I}).outputs.state;return g=new RA({state:g}).outputs.state,new JA({state:g}).outputs}})}dynoOut(){return new H(this,"hash")}}class pE extends bA{constructor({value:A}){super({inTypes:{value:p(A)},outTypes:{hash:"uvec2"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new lQ({value:I}).outputs.state;g=new RA({state:g}).outputs.state;const B=new JA({state:g}).outputs.hash;g=new RA({state:g}).outputs.state;const C=new JA({state:g}).outputs.hash;return{hash:mA({vectorType:"uvec2",x:B,y:C})}}})}dynoOut(){return new H(this,"hash")}}class HE extends bA{constructor({value:A}){super({inTypes:{value:p(A)},outTypes:{hash:"uvec3"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new lQ({value:I}).outputs.state;g=new RA({state:g}).outputs.state;const B=new JA({state:g}).outputs.hash;g=new RA({state:g}).outputs.state;const C=new JA({state:g}).outputs.hash;g=new RA({state:g}).outputs.state;const E=new JA({state:g}).outputs.hash;return{hash:mA({vectorType:"uvec3",x:B,y:C,z:E})}}})}dynoOut(){return new H(this,"hash")}}class fE extends bA{constructor({value:A}){super({inTypes:{value:p(A)},outTypes:{hash:"uvec4"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");let g=new lQ({value:I}).outputs.state;g=new RA({state:g}).outputs.state;const B=new JA({state:g}).outputs.hash;g=new RA({state:g}).outputs.state;const C=new JA({state:g}).outputs.hash;g=new RA({state:g}).outputs.state;const E=new JA({state:g}).outputs.hash;g=new RA({state:g}).outputs.state;const t=new JA({state:g}).outputs.hash;return{hash:mA({vectorType:"uvec4",x:B,y:C,z:E,w:t})}}})}dynoOut(){return new H(this,"hash")}}class mE extends bA{constructor({value:A}){super({inTypes:{value:p(A)},outTypes:{hash:"float"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=JE(I);return{hash:CA(FC(g),q("float",1/2**32))}}})}dynoOut(){return new H(this,"hash")}}class bE extends bA{constructor({value:A}){super({inTypes:{value:p(A)},outTypes:{hash:"vec2"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=dE(I);return{hash:CA(RC(g),q("float",1/2**32))}}})}dynoOut(){return new H(this,"hash")}}class xE extends bA{constructor({value:A}){super({inTypes:{value:p(A)},outTypes:{hash:"vec3"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=YE(I);return{hash:CA(tQ(g),q("float",1/2**32))}}})}dynoOut(){return new H(this,"hash")}}class KE extends bA{constructor({value:A}){super({inTypes:{value:p(A)},outTypes:{hash:"vec4"},inputs:{value:A},construct:({value:I})=>{if(!I)throw new Error("value is required");const g=uE(I);return{hash:CA(JC(g),q("float",1/2**32))}}})}dynoOut(){return new H(this,"hash")}}const ja=(Q,{scale:A,scales:I,rotate:g,translate:B})=>new ZE({position:Q,scale:A,scales:I,rotate:g,translate:B}).outputs.position,za=(Q,{scale:A,scales:I,rotate:g})=>new qE({ray:Q,scale:A,scales:I,rotate:g}).outputs.ray,Oa=(Q,{rotate:A})=>new WE({quaternion:Q,rotate:A}).outputs.quaternion;class ZE extends f{constructor({position:A,scale:I,scales:g,rotate:B,translate:C}){super({inTypes:{position:"vec3",scale:"float",scales:"vec3",rotate:"vec4",translate:"vec3"},outTypes:{position:"vec3"},inputs:{position:A,scale:I,scales:g,rotate:B,translate:C},statements:({inputs:E,outputs:t})=>{const{position:s}=t;if(!s)return[];const{scale:o,scales:a,rotate:i,translate:D}=E;return[`${s} = ${E.position??"vec3(0.0, 0.0, 0.0)"};`,o?`${s} *= ${o};`:null,a?`${s} *= ${a};`:null,i?`${s} = quatVec(${i}, ${s});`:null,D?`${s} += ${D};`:null].filter(Boolean)}})}}class qE extends f{constructor({ray:A,scale:I,scales:g,rotate:B}){super({inTypes:{ray:"vec3",scale:"float",scales:"vec3",rotate:"vec4"},outTypes:{ray:"vec3"},inputs:{ray:A,scale:I,scales:g,rotate:B},statements:({inputs:C,outputs:E})=>{const{ray:t}=E;if(!t)return[];const{scale:s,scales:o,rotate:a}=C;return[`${t} = ${C.ray??"vec3(0.0, 0.0, 0.0)"};`,s?`${t} *= ${s};`:null,o?`${t} *= ${o};`:null,a?`${t} = quatVec(${a}, ${t});`:null].filter(Boolean)}})}}class WE extends f{constructor({quaternion:A,rotate:I}){super({inTypes:{quaternion:"vec4",rotate:"vec4"},outTypes:{quaternion:"vec4"},inputs:{quaternion:A,rotate:I},statements:({inputs:g,outputs:B})=>{const{quaternion:C}=B;return C?[`${C} = ${g.quaternion??"vec4(0.0, 0.0, 0.0, 1.0)"};`,I?`${C} = quatQuat(${g.rotate}, ${C});`:null].filter(Boolean):[]}})}}const Pa=()=>{throw new Error("Not implemented")},_a=()=>{throw new Error("Not implemented")},$a=()=>{throw new Error("Not implemented")},Ae=()=>{throw new Error("Not implemented")},Qe=()=>{throw new Error("Not implemented")},Ie=()=>{throw new Error("Not implemented")},ge=(Q,A)=>new VE({texture:Q,lod:A}),Be=(Q,A,I)=>new TE({texture:Q,coord:A,bias:I}),Ce=(Q,A,I)=>new vE({texture:Q,coord:A,lod:I});class VE extends f{constructor({texture:A,lod:I}){const g=p(A);super({inTypes:{texture:g,lod:"int"},outTypes:{size:XE(g)},inputs:{texture:A,lod:I},statements:({inputs:B,outputs:C})=>[`${C.size} = textureSize(${B.texture}, ${B.lod??"0"});`]})}dynoOut(){return new H(this,"size")}}class TE extends f{constructor({texture:A,coord:I,bias:g}){const B=p(A);super({inTypes:{texture:B,coord:Ee(B),bias:"float"},outTypes:{sample:jE(B)},inputs:{texture:A,coord:I,bias:g},statements:({inputs:C,outputs:E})=>[`${E.sample} = texture(${C.texture}, ${C.coord}${C.bias?`, ${C.bias}`:""});`]})}dynoOut(){return new H(this,"sample")}}class vE extends f{constructor({texture:A,coord:I,lod:g}){const B=p(A);super({inTypes:{texture:B,coord:XE(B),lod:"int"},outTypes:{texel:jE(B)},inputs:{texture:A,coord:I,lod:g},statements:({inputs:C,outputs:E})=>[`${E.texel} = texelFetch(${C.texture}, ${C.coord}, ${C.lod??"0"});`]})}dynoOut(){return new H(this,"texel")}}function XE(Q){switch(Q){case"sampler2D":case"usampler2D":case"isampler2D":case"samplerCube":case"usamplerCube":case"isamplerCube":case"sampler2DShadow":case"samplerCubeShadow":return"ivec2";case"sampler3D":case"usampler3D":case"isampler3D":case"sampler2DArray":case"usampler2DArray":case"isampler2DArray":case"sampler2DArrayShadow":return"ivec3";default:throw new Error(`Invalid texture type: ${Q}`)}}function Ee(Q){switch(Q){case"sampler2D":case"usampler2D":case"isampler2D":return"vec2";case"sampler3D":case"usampler3D":case"isampler3D":case"samplerCube":case"usamplerCube":case"isamplerCube":case"sampler2DArray":case"usampler2DArray":case"isampler2DArray":case"sampler2DShadow":return"vec3";case"samplerCubeShadow":case"sampler2DArrayShadow":return"vec4";default:throw new Error(`Invalid texture type: ${Q}`)}}function jE(Q){switch(Q){case"sampler2D":case"sampler2DArray":case"sampler3D":case"samplerCube":case"sampler2DShadow":return"vec4";case"usampler2D":case"usampler2DArray":case"usampler3D":case"usamplerCube":return"uvec4";case"isampler2D":case"isampler2DArray":case"isampler3D":case"isamplerCube":return"ivec4";case"samplerCubeShadow":case"sampler2DArrayShadow":return"float";default:throw new Error(`Invalid texture type: ${Q}`)}}const te=Q=>new zE({degrees:Q}),ie=Q=>new OE({radians:Q}),RI=Q=>new PE({radians:Q}),se=Q=>new _E({radians:Q}),oe=Q=>new $E({radians:Q}),ae=Q=>new At({sin:Q}),ee=Q=>new Qt({cos:Q}),De=Q=>new It({tan:Q}),ne=(Q,A)=>new gt({y:Q,x:A}),ce=Q=>new Bt({x:Q}),we=Q=>new Ct({x:Q}),re=Q=>new Et({x:Q}),he=Q=>new tt({x:Q}),ye=Q=>new it({x:Q}),Ge=Q=>new st({x:Q});class zE extends N{constructor({degrees:A}){super({a:A,outTypeFunc:I=>I,outKey:"radians"}),this.statements=({inputs:I,outputs:g})=>[`${g.radians} = radians(${I.a});`]}}class OE extends N{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"degrees"}),this.statements=({inputs:I,outputs:g})=>[`${g.degrees} = degrees(${I.a});`]}}class PE extends N{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"sin"}),this.statements=({inputs:I,outputs:g})=>[`${g.sin} = sin(${I.a});`]}}class _E extends N{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"cos"}),this.statements=({inputs:I,outputs:g})=>[`${g.cos} = cos(${I.a});`]}}class $E extends N{constructor({radians:A}){super({a:A,outTypeFunc:I=>I,outKey:"tan"}),this.statements=({inputs:I,outputs:g})=>[`${g.tan} = tan(${I.a});`]}}class At extends N{constructor({sin:A}){super({a:A,outTypeFunc:I=>I,outKey:"asin"}),this.statements=({inputs:I,outputs:g})=>[`${g.asin} = asin(${I.a});`]}}class Qt extends N{constructor({cos:A}){super({a:A,outTypeFunc:I=>I,outKey:"acos"}),this.statements=({inputs:I,outputs:g})=>[`${g.acos} = acos(${I.a});`]}}class It extends N{constructor({tan:A}){super({a:A,outTypeFunc:I=>I,outKey:"atan"}),this.statements=({inputs:I,outputs:g})=>[`${g.atan} = atan(${I.a});`]}}class gt extends b{constructor({y:A,x:I}){super({a:A,b:I,outTypeFunc:(g,B)=>g,outKey:"atan2"}),this.statements=({inputs:g,outputs:B})=>[`${B.atan2} = atan2(${g.a}, ${g.b});`]}}class Bt extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"sinh"}),this.statements=({inputs:I,outputs:g})=>[`${g.sinh} = sinh(${I.a});`]}}class Ct extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"cosh"}),this.statements=({inputs:I,outputs:g})=>[`${g.cosh} = cosh(${I.a});`]}}class Et extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"tanh"}),this.statements=({inputs:I,outputs:g})=>[`${g.tanh} = tanh(${I.a});`]}}class tt extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"asinh"}),this.statements=({inputs:I,outputs:g})=>[`${g.asinh} = asinh(${I.a});`]}}class it extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"acosh"}),this.statements=({inputs:I,outputs:g})=>[`${g.acosh} = acosh(${I.a});`]}}class st extends N{constructor({x:A}){super({a:A,outTypeFunc:I=>I,outKey:"atanh"}),this.statements=({inputs:I,outputs:g})=>[`${g.atanh} = atanh(${I.a});`]}}const le=Object.freeze(Object.defineProperty({__proto__:null,Abs:ZB,Acos:Qt,Acosh:it,Add:LB,All:lC,And:oC,Any:GC,Asin:At,Asinh:tt,Atan:It,Atan2:gt,Atanh:st,BVec2:HC,BVec3:fC,BVec4:mC,BinaryOp:b,Bool:UC,Ceil:VB,Clamp:BC,Combine:FE,CombineGsplat:Dg,CompMult:yE,CompXor:kC,Compilation:Eg,Cos:_E,Cosh:Ct,Cross:eE,Degrees:OE,Determinant:ME,Distance:oE,Div:fB,Dot:aE,Dyno:f,DynoBlock:bA,DynoBool:gI,DynoBvec2:Gg,DynoBvec3:kg,DynoBvec4:Jg,DynoConst:Cg,DynoFloat:EQ,DynoInt:SQ,DynoIsampler2D:Wg,DynoIsampler2DArray:Tg,DynoIsampler3D:jg,DynoIsamplerCube:Pg,DynoIvec2:Mg,DynoIvec3:Rg,DynoIvec4:Yg,DynoLiteral:wQ,DynoMat2:ug,DynoMat2x2:Ug,DynoMat2x3:Sg,DynoMat2x4:Lg,DynoMat3:pg,DynoMat3x2:Hg,DynoMat3x3:fg,DynoMat3x4:mg,DynoMat4:bg,DynoMat4x2:xg,DynoMat4x3:Kg,DynoMat4x4:Zg,DynoOutput:H,DynoProgram:HI,DynoProgramTemplate:fI,DynoRemapIndex:SE,DynoSampler2D:Vg,DynoSampler2DArray:vg,DynoSampler2DArrayShadow:AB,DynoSampler2DShadow:$g,DynoSampler3D:zg,DynoSamplerCube:_g,DynoSamplerCubeShadow:QB,DynoUint:yg,DynoUniform:F,DynoUsampler2D:qg,DynoUsampler2DArray:RQ,DynoUsampler3D:Xg,DynoUsamplerCube:Og,DynoUvec2:lg,DynoUvec3:Fg,DynoUvec4:dg,DynoValue:zA,DynoVec2:Ng,DynoVec3:hQ,DynoVec4:qQ,Equal:hC,Exp:zB,Exp2:OB,ExtendVec:cE,FaceForward:wE,Float:pC,FloatBitsToInt:OC,FloatBitsToUint:PC,Floor:WB,Fract:XB,GreaterThan:wC,GreaterThanEqual:rC,Gsplat:T,GsplatNormal:cg,Hash:LE,Hash2:pE,Hash3:HE,Hash4:fE,HashFloat:mE,HashVec2:bE,HashVec3:xE,HashVec4:KE,IMod:mB,IVec2:bC,IVec3:xC,IVec4:KC,Int:SC,IntBitsToFloat:_C,Inverse:NE,InverseSqrt:QC,IsInf:sC,IsNan:iC,Length:sE,LessThan:nC,LessThanEqual:cC,Log:PB,Log2:_B,Mat2:XC,Mat3:jC,Mat4:zC,Max:gC,Min:IC,Mix:CC,Mod:bB,Modf:xB,Mul:HB,Neg:KB,Normalize:DE,Not:DC,NotEqual:yC,NumPackedSplats:ig,Or:aC,Outer:GE,OutputPackedSplat:hg,OutputRgba8:LI,PackHalf2x16:BE,PackSnorm2x16:AE,PackUnorm2x16:IE,PcgHash:JA,PcgMix:lQ,PcgNext:RA,Pow:jB,ProjectH:nE,Radians:zE,ReadPackedSplat:og,ReadPackedSplatRange:ag,ReflectVec:rE,RefractVec:hE,Round:vB,Select:MC,Sign:qB,SimpleCast:P,Sin:PE,Sinh:Bt,Smoothstep:tC,Split:kE,SplitGsplat:eg,Sqr:$B,Sqrt:AC,Step:EC,Sub:pB,Swizzle:RE,TPackedSplats:ZQ,Tan:$E,Tanh:Et,TexelFetch:vE,Texture:TE,TextureSize:VE,TransformGsplat:wg,TransformPosition:ZE,TransformQuaternion:WE,TransformRay:qE,Transpose:lE,TrinaryOp:oQ,Trunc:TB,UVec2:ZC,UVec3:qC,UVec4:WC,Uint:LC,UintBitsToFloat:$C,UintToRgba8:EE,UnaryOp:N,UnpackHalf2x16:CE,UnpackSnorm2x16:QE,UnpackUnorm2x16:gE,Vec2:VC,Vec3:TC,Vec4:vC,Xor:eC,abs:wo,acos:ee,acosh:ye,add:wA,all:jo,and:mo,any:Xo,arrayIndex:Qe,arrayLength:Ie,asin:ae,asinh:he,atan:De,atan2:ne,atanh:Ge,bool:$o,bvec2:Ia,bvec3:ga,bvec4:Ba,ceil:yo,clamp:So,combine:mA,combineGsplat:rQ,comment:Ae,compMult:Ua,compXor:Oo,cos:se,cosh:we,cross:Fa,defineGsplat:hA,defineGsplatNormal:ng,definePackedSplats:eI,degrees:ie,determinant:pa,distance:Na,div:$Q,dot:ka,dyno:KQ,dynoBlock:SA,dynoBool:ei,dynoBvec2:ci,dynoBvec3:yi,dynoBvec4:Mi,dynoConst:q,dynoDeclare:UI,dynoFloat:pA,dynoFor:$a,dynoIf:Pa,dynoInt:ni,dynoIsampler2D:xi,dynoIsampler2DArray:qi,dynoIsampler3D:Ti,dynoIsamplerCube:ji,dynoIvec2:ri,dynoIvec3:li,dynoIvec4:ki,dynoLiteral:II,dynoMat2:Ri,dynoMat2x2:Ji,dynoMat2x3:di,dynoMat2x4:Yi,dynoMat3:ui,dynoMat3x2:Ui,dynoMat3x3:Si,dynoMat3x4:Li,dynoMat4:pi,dynoMat4x2:Hi,dynoMat4x3:fi,dynoMat4x4:mi,dynoSampler2D:Ki,dynoSampler2DArray:Wi,dynoSampler2DArrayShadow:Pi,dynoSampler2DShadow:Oi,dynoSampler3D:vi,dynoSamplerCube:zi,dynoSamplerCubeShadow:_i,dynoSwitch:_a,dynoUint:Di,dynoUsampler2D:bi,dynoUsampler2DArray:Zi,dynoUsampler3D:Vi,dynoUsamplerCube:Xi,dynoUvec2:wi,dynoUvec3:Gi,dynoUvec4:Ni,dynoVec2:hi,dynoVec3:vA,dynoVec4:Fi,equal:To,exp:No,exp2:ko,extendVec:iE,faceforward:Ra,float:FC,floatBitsToInt:dC,floatBitsToUint:na,floor:ho,fract:AI,greaterThan:Wo,greaterThanEqual:Vo,gsplatNormal:si,hash:JE,hash2:dE,hash3:YE,hash4:uE,hashFloat:va,hashVec2:Xa,hashVec3:UE,hashVec4:FI,imod:kI,int:Aa,intBitsToFloat:ca,inverse:Ha,inversesqrt:uo,isAllFloatType:_A,isBoolType:iQ,isFloatType:bQ,isInf:fo,isIntType:tA,isMat2:QQ,isMat3:IQ,isMat4:gQ,isMatFloatType:Ag,isNan:Ho,isScalarType:sQ,isUintType:iA,isVector2Type:yQ,isVector3Type:GQ,isVector4Type:xQ,isVectorType:gi,ivec2:Ca,ivec3:Ea,ivec4:ta,length:Ma,lessThan:Zo,lessThanEqual:qo,literalNegOne:ti,literalOne:Ei,literalZero:NQ,log:Fo,log2:Ro,mat2:aa,mat3:ea,mat4:Da,max:UB,min:Uo,mix:SB,mod:uB,modf:no,mul:CA,neg:co,normalize:tE,not:Ko,notEqual:vo,numPackedSplats:ii,numberAsFloat:u,numberAsInt:z,numberAsUint:O,or:bo,outer:Sa,outputPackedSplat:rg,outputRgba8:oi,packHalf2x16:YC,packSnorm2x16:ra,packUnorm2x16:ya,pcgHash:Ta,pcgMix:Wa,pcgNext:Va,pow:Mo,projectH:Ya,radians:te,readPackedSplat:UQ,readPackedSplatRange:tg,reflectVec:Ja,refractVec:da,remapIndex:qa,round:lo,sameSizeIvec:Ci,sameSizeUvec:gg,sameSizeVec:Bi,select:zo,sign:ro,sin:RI,sinh:ce,smoothstep:po,split:YQ,splitGsplat:FQ,sqr:Jo,sqrt:Yo,step:Lo,sub:LQ,swizzle:ua,tan:oe,tanh:re,texelFetch:Ce,texture:Be,textureSize:ge,transformGsplat:SI,transformPos:ja,transformQuat:Oa,transformRay:za,transpose:La,trunc:Go,typeLiteral:Bg,uint:Qa,uintBitsToFloat:wa,uintToRgba8:uC,uniform:ai,unindent:gA,unindentLines:dA,unpackHalf2x16:la,unpackSnorm2x16:ha,unpackUnorm2x16:Ga,uvec2:ia,uvec3:sa,uvec4:oa,valType:p,vec2:RC,vec3:tQ,vec4:JC,vectorDim:Ig,vectorElementType:Qg,xor:xo},Symbol.toStringTag,{value:"Module"}));var Me=`precision highp float;
+precision highp int;
+precision highp sampler2D;
+precision highp usampler2D;
+precision highp isampler2D;
+precision highp sampler2DArray;
+precision highp usampler2DArray;
+precision highp isampler2DArray;
+precision highp sampler3D;
+precision highp usampler3D;
+precision highp isampler3D;
+
+#include
+
+uniform uint targetLayer;
+uniform int targetBase;
+uniform int targetCount;
+
+out vec4 target;
+
+{{ GLOBALS }}
+
+void computeReadback(int index) {
+ {{ STATEMENTS }}
+}
+
+void main() {
+ int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);
+ int index = targetIndex - targetBase;
+
+ if ((index >= 0) && (index < targetCount)) {
+ computeReadback(index);
+ } else {
+ target = vec4(0.0, 0.0, 0.0, 0.0);
+ }
+}`;const QA=class QA{constructor({renderer:A}={}){this.renderer=A,this.capacity=0,this.count=0}dispose(){this.target&&(this.target.dispose(),this.target=void 0)}ensureBuffer(A,I){const B=Math.ceil(Math.max(1,A)/Z)*Z*4;if(I.byteLength>=B)return I;const C=new ArrayBuffer(B);if(I instanceof ArrayBuffer)return C;const E=I.constructor;return new E(C)}ensureCapacity(A){const{width:I,height:g,depth:B,maxSplats:C}=rA(A);(!this.target||C>this.capacity)&&(this.dispose(),this.capacity=C,this.target=new e.WebGLArrayRenderTarget(I,g,B,{depthBuffer:!1,stencilBuffer:!1,generateMipmaps:!1,magFilter:e.NearestFilter,minFilter:e.NearestFilter}),this.target.texture.format=e.RGBAFormat,this.target.texture.type=e.UnsignedByteType,this.target.texture.internalFormat="RGBA8")}prepareProgramMaterial(A){let I=QA.readbackProgram.get(A);if(!I){const B=SA({index:"int"},{rgba8:"vec4"},({index:C})=>(A.inputs.index=C,{rgba8:new LI({rgba8:A.outputs.rgba8})}));QA.programTemplate||(QA.programTemplate=new fI(Me)),I=new HI({graph:B,inputs:{index:"index"},outputs:{rgba8:"target"},template:QA.programTemplate}),Object.assign(I.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),QA.readbackProgram.set(A,I)}const g=I.prepareMaterial();return QA.mesh.material=g,{program:I,material:g}}saveRenderState(A){return{xrPresenting:A.xr.isPresenting,autoClear:A.autoClear,scissorTest:A.getScissorTest()}}resetRenderState(A,I){A.setRenderTarget(null),A.xr.isPresenting=I.xrPresenting,A.autoClear=I.autoClear,A.setScissorTest(I.scissorTest)}process({count:A,material:I}){const g=this.renderer;if(!g)throw new Error("No renderer");if(!this.target)throw new Error("No target");const B=Z*BQ;I.uniforms.targetBase.value=0,I.uniforms.targetCount.value=A;let C=0;for(;CA)}render({reader:A,count:I,renderer:g}){if(this.renderer=g||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(I);const{program:B,material:C}=this.prepareProgramMaterial(A);B.update();const E=this.saveRenderState(this.renderer);this.process({count:I,material:C}),this.resetRenderState(this.renderer,E)}async readback({readback:A}){if(!this.renderer)throw new Error("No renderer");const I=this.saveRenderState(this.renderer),g=this.read({readback:A});return this.resetRenderState(this.renderer,I),g}async renderReadback({reader:A,count:I,renderer:g,readback:B}){if(this.renderer=g||this.renderer,!this.renderer)throw new Error("No renderer");this.ensureCapacity(I);const{program:C,material:E}=this.prepareProgramMaterial(A);C.update();const t=this.saveRenderState(this.renderer);this.process({count:I,material:E});const s=this.read({readback:B});return this.resetRenderState(this.renderer,t),s}getTexture(){var A;return(A=this.target)==null?void 0:A.texture}};QA.programTemplate=null,QA.readbackProgram=new Map,QA.geometry=new e.PlaneGeometry(2,2),QA.mesh=new e.Mesh(QA.geometry,new e.RawShaderMaterial({visible:!1})),QA.scene=new e.Scene().add(QA.mesh),QA.camera=new e.Camera;let pQ=QA;const IA=class IA{constructor(A={}){this.capacity=0,this.count=0,this.array=null,this.readback=null,this.source=null,this.needsUpdate=!0,this.dyno=new F({key:"rgbaArray",type:ot,globals:()=>[at],value:{texture:IA.getEmpty(),count:0},update:I=>{var g;return I.texture=((g=this.readback)==null?void 0:g.getTexture())??this.source??IA.getEmpty(),I.count=this.count,I}}),A.array?(this.array=A.array,this.capacity=Math.floor(this.array.length/4),this.capacity=Math.floor(this.capacity/Z)*Z,this.count=Math.min(this.capacity,A.count??Number.POSITIVE_INFINITY)):(this.capacity=A.capacity??0,this.count=0)}dispose(){this.readback&&(this.readback.dispose(),this.readback=null),this.source&&(this.source.dispose(),this.source=null)}ensureCapacity(A){var I;if(!this.array||A>(((I=this.array)==null?void 0:I.length)??0)/4){this.capacity=rA(A).maxSplats;const g=new Uint8Array(this.capacity*4);this.array&&g.set(this.array),this.array=g}return this.array}getTexture(){var I;let A=(I=this.readback)==null?void 0:I.getTexture();return(this.source||this.array)&&(A=this.maybeUpdateSource()),A??IA.getEmpty()}maybeUpdateSource(){if(!this.array)throw new Error("No array");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:I,depth:g}=this.source.image;this.capacity!==A*I*g&&(this.source.dispose(),this.source=null)}if(this.source)this.array.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.array.buffer));else{const{width:A,height:I,depth:g}=rA(this.capacity);this.source=new e.DataArrayTexture(this.array,A,I,g),this.source.format=e.RGBAFormat,this.source.type=e.UnsignedByteType,this.source.internalFormat="RGBA8",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}render({reader:A,count:I,renderer:g}){this.readback||(this.readback=new pQ({renderer:g})),this.readback.render({reader:A,count:I,renderer:g}),this.capacity=this.readback.capacity,this.count=this.readback.count}fromPackedSplats({packedSplats:A,base:I,count:g,renderer:B}){const{dynoSplats:C,dynoBase:E,dynoCount:t,reader:s}=IA.makeDynos();return C.packedSplats=A,E.value=I,t.value=g,this.render({reader:s,count:g,renderer:B}),this}async read(){if(!this.readback)throw new Error("No readback");return(!this.array||this.array.length{if(!C)throw new Error("index is undefined");C=wA(C,I);const E=tg(A,C,I,g);return{rgba8:FQ(E).outputs.rgba}});IA.dynos={dynoSplats:A,dynoBase:I,dynoCount:g,reader:B}}return IA.dynos}};IA.emptySource=null,IA.dynos=null;let JI=IA;const ot={type:"RgbaArray"},at=gA(`
+ struct RgbaArray {
+ sampler2DArray texture;
+ int count;
+ };
+`);function Ne(Q,A){return new f({inTypes:{rgba:ot,index:"int"},outTypes:{rgba:"vec4"},inputs:{rgba:Q,index:A},globals:()=>[at],statements:({inputs:g,outputs:B})=>dA(`
+ if ((index >= 0) && (index < ${g.rgba}.count)) {
+ ${B.rgba} = texelFetch(${g.rgba}.texture, splatTexCoord(index), 0);
+ } else {
+ ${B.rgba} = vec4(0.0, 0.0, 0.0, 0.0);
+ }
+ `)}).outputs.rgba}var et=(Q=>(Q.ALL="all",Q.PLANE="plane",Q.SPHERE="sphere",Q.BOX="box",Q.ELLIPSOID="ellipsoid",Q.CYLINDER="cylinder",Q.CAPSULE="capsule",Q.INFINITE_CONE="infinite_cone",Q))(et||{});function ke(Q){switch(Q){case"all":return 0;case"plane":return 1;case"sphere":return 2;case"box":return 3;case"ellipsoid":return 4;case"cylinder":return 5;case"capsule":return 6;case"infinite_cone":return 7;default:throw new Error(`Unknown SDF type: ${Q}`)}}var Dt=(Q=>(Q.MULTIPLY="multiply",Q.SET_RGB="set_rgb",Q.ADD_RGBA="add_rgba",Q))(Dt||{});function Fe(Q){switch(Q){case"multiply":return 0;case"set_rgb":return 1;case"add_rgba":return 2;default:throw new Error(`Unknown blend mode: ${Q}`)}}class nt extends e.Object3D{constructor(A={}){super();const{type:I,invert:g,opacity:B,color:C,displace:E,radius:t}=A;this.type=I??"sphere",this.invert=g??!1,this.opacity=B??1,this.color=C??new e.Color(1,1,1),this.displace=E??new e.Vector3(0,0,0),this.radius=t??0}}const aI=class aI extends e.Object3D{constructor(A={}){const{name:I,rgbaBlendMode:g="multiply",sdfSmooth:B=0,softEdge:C=0,invert:E=!1,sdfs:t=null}=A;super(),this.rgbaBlendMode=g,this.sdfSmooth=B,this.softEdge=C,this.invert=E,this.sdfs=t,this.ordering=aI.nextOrdering++,this.name=I??`Edit ${this.ordering}`}addSdf(A){this.sdfs==null&&(this.sdfs=[]),this.sdfs.push(A)}removeSdf(A){this.sdfs!=null&&(this.sdfs=this.sdfs.filter(I=>I!==A))}};aI.nextOrdering=1;let HQ=aI;class ct{constructor({maxSdfs:A,maxEdits:I}){this.maxSdfs=Math.max(16,A??0),this.numSdfs=0,this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs),this.dynoSdfArray=new F({key:"sdfArray",type:wt,globals:()=>[rt],value:{numSdfs:0,sdfTexture:this.sdfTexture},update:g=>(g.numSdfs=this.numSdfs,g.sdfTexture=this.sdfTexture,g)}),this.maxEdits=Math.max(16,I??0),this.numEdits=0,this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoNumEdits=new SQ({value:0}),this.dynoEdits=this.newEdits(this.editData,this.maxEdits)}newSdfTexture(A,I){const g=new e.DataTexture(A,8,I,e.RGBAIntegerFormat,e.UnsignedIntType);return g.internalFormat="RGBA32UI",g.needsUpdate=!0,g}newEdits(A,I){return new F({key:"edits",type:"uvec4",count:I,globals:()=>[ht],value:A})}ensureCapacity({maxSdfs:A,maxEdits:I}){let g=!1;return A>this.sdfTexture.image.height&&(this.sdfTexture.dispose(),this.maxSdfs=Math.max(this.maxSdfs*2,A),this.sdfData=new Uint32Array(this.maxSdfs*8*4),this.sdfFloatData=new Float32Array(this.sdfData.buffer),this.sdfTexture=this.newSdfTexture(this.sdfData,this.maxSdfs)),I>(this.dynoEdits.count??0)&&(this.maxEdits=Math.max(this.maxEdits*2,I),this.editData=new Uint32Array(this.maxEdits*4),this.editFloatData=new Float32Array(this.editData.buffer),this.dynoEdits=this.newEdits(this.editData,this.maxEdits),g=!0),g}updateEditData(A,I){const g=this.editData[A]!==I;return this.editData[A]=I,g}updateEditFloatData(A,I){aQ[0]=I;const g=this.editFloatData[A]!==aQ[0];return g&&(this.editFloatData[A]=aQ[0]),g}encodeEdit(A,{sdfFirst:I,sdfCount:g,invert:B,rgbaBlendMode:C,softEdge:E,sdfSmooth:t}){const s=A*4;let o=!1;return o=this.updateEditData(s+0,C|(B?256:0))||o,o=this.updateEditData(s+1,I|g<<16)||o,o=this.updateEditFloatData(s+2,E)||o,o=this.updateEditFloatData(s+3,t)||o,o}updateSdfData(A,I){const g=this.sdfData[A]!==I;return this.sdfData[A]=I,g}updateSdfFloatData(A,I){aQ[0]=I;const g=this.sdfFloatData[A]!==aQ[0];return g&&(this.sdfFloatData[A]=aQ[0]),g}encodeSdf(A,{sdfType:I,invert:g,center:B,quaternion:C,scale:E,sizes:t},s){const o=A*32,a=I|(g?256:0);let i=!1;i=this.updateSdfFloatData(o+0,(B==null?void 0:B.x)??0)||i,i=this.updateSdfFloatData(o+1,(B==null?void 0:B.y)??0)||i,i=this.updateSdfFloatData(o+2,(B==null?void 0:B.z)??0)||i,i=this.updateSdfData(o+3,a)||i,i=this.updateSdfFloatData(o+4,(C==null?void 0:C.x)??0)||i,i=this.updateSdfFloatData(o+5,(C==null?void 0:C.y)??0)||i,i=this.updateSdfFloatData(o+6,(C==null?void 0:C.z)??0)||i,i=this.updateSdfFloatData(o+7,(C==null?void 0:C.w)??0)||i,i=this.updateSdfFloatData(o+8,(E==null?void 0:E.x)??0)||i,i=this.updateSdfFloatData(o+9,(E==null?void 0:E.y)??0)||i,i=this.updateSdfFloatData(o+10,(E==null?void 0:E.z)??0)||i,i=this.updateSdfData(o+11,0)||i,i=this.updateSdfFloatData(o+12,(t==null?void 0:t.x)??0)||i,i=this.updateSdfFloatData(o+13,(t==null?void 0:t.y)??0)||i,i=this.updateSdfFloatData(o+14,(t==null?void 0:t.z)??0)||i,i=this.updateSdfFloatData(o+15,(t==null?void 0:t.w)??0)||i;const D=Math.min(4,s.length);for(let n=0;ni+D.length,0),g=this.ensureCapacity({maxEdits:A.length,maxSdfs:I}),B=[new e.Vector4,new e.Vector4],C=new e.Vector3,E=new e.Quaternion,t=new e.Vector3,s=new e.Vector4;let o=0,a=g;A.length!==this.dynoNumEdits.value&&(this.dynoNumEdits.value=A.length,this.numEdits=A.length,a=!0);for(const[i,{edit:D,sdfs:n}]of A.entries()){a=this.encodeEdit(i,{sdfFirst:o,sdfCount:n.length,invert:D.invert,rgbaBlendMode:Fe(D.rgbaBlendMode),softEdge:D.softEdge,sdfSmooth:D.sdfSmooth})||a;let w=!1;for(const c of n)s.set(c.scale.x,c.scale.y,c.scale.z,c.radius),c.scale.setScalar(1),c.updateMatrixWorld(),c.matrixWorld.clone().invert().decompose(C,E,t),c.scale.set(s.x,s.y,s.z),c.updateMatrixWorld(),B[0].set(c.color.r,c.color.g,c.color.b,c.opacity),B[1].set(c.displace.x,c.displace.y,c.displace.z,1),w=this.encodeSdf(o,{sdfType:ke(c.type),invert:c.invert,center:C,quaternion:E,scale:t,sizes:s},B)||w,o+=1;this.numSdfs=o,w&&(this.sdfTexture.needsUpdate=!0),a||(a=w)}return{updated:a,dynoUpdated:g}}modify(A){return Re(A,this.dynoSdfArray,this.dynoNumEdits,this.dynoEdits)}}const wt={type:"SdfArray"},rt=gA(`
+ struct SdfArray {
+ int numSdfs;
+ usampler2D sdfTexture;
+ };
+
+ void unpackSdfArray(
+ usampler2D sdfTexture, int sdfIndex, out uint flags,
+ out vec3 center, out vec4 quaternion, out vec3 scale, out vec4 sizes,
+ int numValues, out vec4 values[4]
+ ) {
+ uvec4 temp = texelFetch(sdfTexture, ivec2(0, sdfIndex), 0);
+ flags = temp.w;
+ center = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));
+
+ temp = texelFetch(sdfTexture, ivec2(1, sdfIndex), 0);
+ quaternion = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));
+
+ temp = texelFetch(sdfTexture, ivec2(2, sdfIndex), 0);
+ scale = vec3(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z));
+
+ temp = texelFetch(sdfTexture, ivec2(3, sdfIndex), 0);
+ sizes = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));
+
+ for (int i = 0; i < numValues; ++i) {
+ temp = texelFetch(sdfTexture, ivec2(4 + i, sdfIndex), 0);
+ values[i] = vec4(uintBitsToFloat(temp.x), uintBitsToFloat(temp.y), uintBitsToFloat(temp.z), uintBitsToFloat(temp.w));
+ }
+ }
+
+ const uint SDF_FLAG_TYPE = 0xFFu;
+ const uint SDF_FLAG_INVERT = 1u << 8u;
+
+ const uint SDF_TYPE_ALL = 0u;
+ const uint SDF_TYPE_PLANE = 1u;
+ const uint SDF_TYPE_SPHERE = 2u;
+ const uint SDF_TYPE_BOX = 3u;
+ const uint SDF_TYPE_ELLIPSOID = 4u;
+ const uint SDF_TYPE_CYLINDER = 5u;
+ const uint SDF_TYPE_CAPSULE = 6u;
+ const uint SDF_TYPE_INFINITE_CONE = 7u;
+
+ float evaluateSdfArray(
+ usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,
+ float smoothK, int numValues, out vec4 outValues[4]
+ ) {
+ float distanceAccum = (smoothK == 0.0) ? 1.0 / 0.0 : 0.0;
+ float maxExp = -1.0 / 0.0;
+ for (int i = 0; i < numValues; ++i) {
+ outValues[i] = vec4(0.0);
+ }
+
+ uint flags;
+ vec3 center, scale;
+ vec4 quaternion, sizes;
+ vec4 values[4];
+
+ int sdfLast = min(sdfFirst + sdfCount, numSdfs);
+ for (int index = sdfFirst; index < sdfLast; ++index) {
+ unpackSdfArray(sdfTexture, index, flags, center, quaternion, scale, sizes, numValues, values);
+ uint sdfType = flags & SDF_FLAG_TYPE;
+ vec3 sdfPos = quatVec(quaternion, pos * scale) + center;
+
+ float distance;
+ switch (sdfType) {
+ case SDF_TYPE_ALL:
+ distance = -1.0 / 0.0;
+ break;
+ case SDF_TYPE_PLANE: {
+ distance = sdfPos.z;
+ break;
+ }
+ case SDF_TYPE_SPHERE: {
+ distance = length(sdfPos) - sizes.w;
+ break;
+ }
+ case SDF_TYPE_BOX: {
+ vec3 q = abs(sdfPos) - sizes.xyz + sizes.w;
+ distance = length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0) - sizes.w;
+ break;
+ }
+ case SDF_TYPE_ELLIPSOID: {
+ vec3 sizes = sizes.xyz;
+ float k0 = length(sdfPos / sizes);
+ float k1 = length(sdfPos / dot(sizes, sizes));
+ distance = k0 * (k0 - 1.0) / k1;
+ break;
+ }
+ case SDF_TYPE_CYLINDER: {
+ vec2 d = abs(vec2(length(sdfPos.xz), sdfPos.y)) - sizes.wy;
+ distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
+ break;
+ }
+ case SDF_TYPE_CAPSULE: {
+ sdfPos.y -= clamp(sdfPos.y, -0.5 * sizes.y, 0.5 * sizes.y);
+ distance = length(sdfPos) - sizes.w;
+ break;
+ }
+ case SDF_TYPE_INFINITE_CONE: {
+ float angle = 0.25 * PI * sizes.w;
+ vec2 c = vec2(sin(angle), cos(angle));
+ vec2 q = vec2(length(sdfPos.xy), -sdfPos.z);
+ float d = length(q - c * max(dot(q, c), 0.0));
+ distance = d * (((q.x * c.y - q.y * c.x) < 0.0) ? -1.0 : 1.0);
+ break;
+ }
+ }
+
+ if ((flags & SDF_FLAG_INVERT) != 0u) {
+ distance = -distance;
+ }
+
+ if (smoothK == 0.0) {
+ if (distance < distanceAccum) {
+ distanceAccum = distance;
+ for (int i = 0; i < numValues; ++i) {
+ outValues[i] = values[i];
+ }
+ }
+ } else {
+ float scaledDistance = -distance / smoothK;
+ if (scaledDistance > maxExp) {
+ float scale = exp(maxExp - scaledDistance);
+ distanceAccum *= scale;
+ for (int i = 0; i < numValues; ++i) {
+ outValues[i] *= scale;
+ }
+ maxExp = scaledDistance;
+ }
+
+ float weight = exp(scaledDistance - maxExp);
+ distanceAccum += weight;
+ for (int i = 0; i < numValues; ++i) {
+ outValues[i] += weight * values[i];
+ }
+ }
+ }
+
+ if (smoothK == 0.0) {
+ return distanceAccum;
+ } else {
+ // Very distant SDFs may result in 0 accumulation
+ if (distanceAccum == 0.0) {
+ return 1.0 / 0.0;
+ }
+ for (int i = 0; i < numValues; ++i) {
+ outValues[i] /= distanceAccum;
+ }
+ return (-log(distanceAccum) - maxExp) * smoothK;
+ }
+ }
+
+ float modulateSdfArray(
+ usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, vec3 pos,
+ float smoothK, int numValues, out vec4 values[4],
+ float softEdge, bool invert
+ ) {
+ float distance = evaluateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, numValues, values);
+ if (invert) {
+ distance = -distance;
+ }
+
+ return (softEdge == 0.0) ? ((distance < 0.0) ? 1.0 : 0.0)
+ : clamp(-distance / softEdge + 0.5, 0.0, 1.0);
+ }
+`),ht=gA(`
+ const uint EDIT_FLAG_BLEND = 0xFFu;
+ const uint EDIT_BLEND_MULTIPLY = 0u;
+ const uint EDIT_BLEND_SET_RGB = 1u;
+ const uint EDIT_BLEND_ADD_RGBA = 2u;
+ const uint EDIT_FLAG_INVERT = 0x100u;
+
+ void decodeEdit(
+ uvec4 packedEdit, out int sdfFirst, out int sdfCount,
+ out bool invert, out uint rgbaBlendMode, out float softEdge, out float sdfSmooth
+ ) {
+ rgbaBlendMode = packedEdit.x & EDIT_FLAG_BLEND;
+ invert = (packedEdit.x & EDIT_FLAG_INVERT) != 0u;
+
+ sdfFirst = int(packedEdit.y & 0xFFFFu);
+ sdfCount = int(packedEdit.y >> 16u);
+
+ softEdge = uintBitsToFloat(packedEdit.z);
+ sdfSmooth = uintBitsToFloat(packedEdit.w);
+ }
+
+ void applyRgbaDisplaceEdit(
+ usampler2D sdfTexture, int numSdfs, int sdfFirst, int sdfCount, inout vec3 pos,
+ float smoothK, float softEdge, bool invert, uint rgbaBlendMode, inout vec4 rgba
+ ) {
+ vec4 values[4];
+ float modulate = modulateSdfArray(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, smoothK, 2, values, softEdge, invert);
+ // On Android, moving values[0] is necessary to work around a compiler bug.
+ vec4 sdfRgba = values[0];
+ vec4 sdfDisplaceScale = values[1];
+
+ vec4 target;
+ switch (rgbaBlendMode) {
+ case EDIT_BLEND_MULTIPLY:
+ target = rgba * sdfRgba;
+ break;
+ case EDIT_BLEND_SET_RGB:
+ target = vec4(sdfRgba.rgb, rgba.a * sdfRgba.a);
+ break;
+ case EDIT_BLEND_ADD_RGBA:
+ target = rgba + sdfRgba;
+ break;
+ default:
+ // Debug output if blend mode not set
+ target = vec4(fract(pos), 1.0);
+ }
+ rgba = mix(rgba, target, modulate);
+ pos += sdfDisplaceScale.xyz * modulate;
+ }
+
+ void applyPackedRgbaDisplaceEdit(uvec4 packedEdit, usampler2D sdfTexture, int numSdfs, inout vec3 pos, inout vec4 rgba) {
+ int sdfFirst, sdfCount;
+ bool invert;
+ uint rgbaBlendMode;
+ float softEdge, sdfSmooth;
+ decodeEdit(packedEdit, sdfFirst, sdfCount, invert, rgbaBlendMode, softEdge, sdfSmooth);
+ applyRgbaDisplaceEdit(sdfTexture, numSdfs, sdfFirst, sdfCount, pos, sdfSmooth, softEdge, invert, rgbaBlendMode, rgba);
+ }
+`);function Re(Q,A,I,g){return new f({inTypes:{gsplat:T,sdfArray:wt,numEdits:"int",rgbaDisplaceEdits:"uvec4"},outTypes:{gsplat:T},globals:()=>[rt,ht],inputs:{gsplat:Q,sdfArray:A,numEdits:I,rgbaDisplaceEdits:g},statements:({inputs:C,outputs:E})=>{const{sdfArray:t,numEdits:s,rgbaDisplaceEdits:o}=C,{gsplat:a}=E;return dA(`
+ ${a} = ${C.gsplat};
+ if (isGsplatActive(${a}.flags)) {
+ for (int editIndex = 0; editIndex < ${s}; ++editIndex) {
+ applyPackedRgbaDisplaceEdit(
+ ${o}[editIndex], ${t}.sdfTexture, ${t}.numSdfs,
+ ${a}.center, ${a}.rgba
+ );
+ }
+ }
+ `)}}).outputs.gsplat}const aQ=new Float32Array(1);class yt{constructor(A){this.modifier=A,this.cache=new Map}apply(A){let I=this.cache.get(A);return I||(I=SA({index:"int"},{gsplat:T},({index:g})=>{const{gsplat:B}=A.apply({index:g});return this.modifier.apply({gsplat:B})}),this.cache.set(A,I)),I}}class CQ{constructor(){this.scale=new EQ({value:Number.NEGATIVE_INFINITY}),this.rotate=new qQ({value:new e.Quaternion(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)}),this.translate=new hQ({value:new e.Vector3(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY)})}modify(A){return SI(A,{scale:this.scale,rotate:this.rotate,translate:this.translate})}updateFromMatrix(A){const I=new e.Vector3,g=new e.Quaternion,B=new e.Vector3;A.decompose(B,g,I);const C=(I.x+I.y+I.z)/3;let E=!1;return C!==this.scale.value&&(this.scale.value=C,E=!0),B.equals(this.translate.value)||(this.translate.value.copy(B),E=!0),g.equals(this.rotate.value)||(this.rotate.value.copy(g),E=!0),E}update(A){return this.updateFromMatrix(A.matrixWorld)}}class TQ extends e.Object3D{constructor({numSplats:A,generator:I,construct:g,update:B}){if(super(),this.numSplats=A??0,this.generator=I,this.frameUpdate=B,this.version=0,g){const C=g(this);Object.assign(this,C)}}updateVersion(){this.version+=1}set needsUpdate(A){A&&this.updateVersion()}}const XA=class XA extends TQ{constructor(A={}){const I=new CQ,g=new CQ,B=new CQ,C=new CQ,E=new qQ({value:new e.Vector4(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY)}),t=new EQ({value:0}),s=new EQ({value:0}),o={transform:I,viewToWorld:g,worldToView:B,viewToObject:C,recolor:E,time:t,deltaTime:s};if(super({update:({time:a,deltaTime:i,viewToWorld:D,globalEdits:n})=>this.update({time:a,deltaTime:i,viewToWorld:D,globalEdits:n})}),this.isInitialized=!1,this.recolor=new e.Color(1,1,1),this.opacity=1,this.enableViewToObject=!1,this.enableViewToWorld=!1,this.enableWorldToView=!1,this.skinning=null,this.edits=null,this.rgbaDisplaceEdits=null,this.splatRgba=null,this.maxSh=3,this.packedSplats=A.packedSplats??new UA,this.numSplats=this.packedSplats.numSplats,this.editable=A.editable??!0,this.onFrame=A.onFrame,this.context=o,this.objectModifier=A.objectModifier,this.worldModifier=A.worldModifier,this.updateGenerator(),A.url||A.fileBytes||A.constructSplats||A.packedSplats&&!A.packedSplats.isInitialized)this.initialized=this.asyncInitialize(A).then(async()=>{if(this.updateGenerator(),this.isInitialized=!0,A.onLoad){const a=A.onLoad(this);a instanceof Promise&&await a}return this});else if(this.isInitialized=!0,this.initialized=Promise.resolve(this),A.onLoad){const a=A.onLoad(this);a instanceof Promise&&(this.initialized=a.then(()=>this))}}async asyncInitialize(A){const{url:I,fileBytes:g,fileType:B,maxSplats:C,constructSplats:E}=A;if(I||g||E){const t={url:I,fileBytes:g,fileType:B,maxSplats:C,construct:E};this.packedSplats.reinitialize(t),this.updateGenerator()}this.packedSplats&&(await this.packedSplats.initialized,this.numSplats=this.packedSplats.numSplats)}static async staticInitialize(){await $I(),XA.isStaticInitialized=!0}pushSplat(A,I,g,B,C){this.packedSplats.pushSplat(A,I,g,B,C)}forEachSplat(A){this.packedSplats.forEachSplat(A)}dispose(){this.packedSplats.dispose()}constructGenerator({transform:A,viewToObject:I,recolor:g}){const B=SA({index:"int"},{gsplat:T},({index:C})=>{if(!C)throw new Error("index is undefined");let E=UQ(this.packedSplats.dyno,C);if(this.maxSh>=1){const{sh1Texture:s,sh2Texture:o,sh3Texture:a}=this.ensureShTextures();if(s){const i=I.translate,{center:D}=FQ(E).outputs,n=tE(LQ(D,i));let w=ue(E,s,n);this.maxSh>=2&&o&&(w=wA(w,Ue(E,o,n))),this.maxSh>=3&&a&&(w=wA(w,Se(E,a,n)));let{rgba:c}=FQ(E).outputs;c=wA(c,iE(w,q("float",0))),E=rQ({gsplat:E,rgba:c})}}if(this.splatRgba){const s=Ne(this.splatRgba.dyno,C);E=rQ({gsplat:E,rgba:s})}this.skinning&&(E=this.skinning.modify(E)),this.objectModifier&&(E=this.objectModifier.apply({gsplat:E}).gsplat),E=A.modify(E);const t=CA(g,FQ(E).outputs.rgba);return E=rQ({gsplat:E,rgba:t}),this.rgbaDisplaceEdits&&(E=this.rgbaDisplaceEdits.modify(E)),this.worldModifier&&(E=this.worldModifier.apply({gsplat:E}).gsplat),{gsplat:E}});this.generator=B}updateGenerator(){this.constructGenerator(this.context)}update({time:A,viewToWorld:I,deltaTime:g,globalEdits:B}){var r;this.numSplats=this.packedSplats.numSplats,this.context.time.value=A,this.context.deltaTime.value=g,XA.dynoTime.value=A;const{transform:C,viewToObject:E,recolor:t}=this.context;let s=C.update(this);this.context.viewToWorld.updateFromMatrix(I)&&this.enableViewToWorld&&(s=!0);const o=I.clone().invert();this.context.worldToView.updateFromMatrix(o)&&this.enableWorldToView&&(s=!0);const D=new e.Matrix4().compose(C.translate.value,C.rotate.value,new e.Vector3().setScalar(C.scale.value)).invert().multiply(I);E.updateFromMatrix(D)&&(this.enableViewToObject||this.packedSplats.extra.sh1)&&(s=!0);const n=new e.Vector4(this.recolor.r,this.recolor.g,this.recolor.b,this.opacity);n.equals(t.value)||(t.value.copy(n),s=!0);const w=this.editable?(this.edits??[]).concat(B):[];this.editable&&!this.edits&&this.traverseVisible(y=>{y instanceof HQ&&w.push(y)}),w.sort((y,G)=>y.ordering-G.ordering);const c=w.map(y=>{if(y.sdfs!=null)return{edit:y,sdfs:y.sdfs};const G=[];return y.traverseVisible(h=>{h instanceof nt&&G.push(h)}),{edit:y,sdfs:G}});if(c.length>0&&!this.rgbaDisplaceEdits){const y=c.length,G=c.reduce((h,M)=>h+M.sdfs.length,0);this.rgbaDisplaceEdits=new ct({maxEdits:y,maxSdfs:G}),this.updateGenerator()}if(this.rgbaDisplaceEdits){const y=this.rgbaDisplaceEdits.update(c);s||(s=y.updated),y.dynoUpdated&&this.updateGenerator()}s&&this.updateVersion(),(r=this.onFrame)==null||r.call(this,{mesh:this,time:A,deltaTime:g})}raycast(A,I){if(!this.packedSplats.packedArray||!this.packedSplats.numSplats)return;const{near:g,far:B,ray:C}=A,E=this.matrixWorld.clone().invert(),t=new e.Matrix3().setFromMatrix4(E),s=C.origin.clone().applyMatrix4(E),o=C.direction.clone().applyMatrix3(t),a=new e.Vector3;E.decompose(new e.Vector3,new e.Quaternion,a),(a.x*a.y*a.z)**(1/3);const D=zt(s.x,s.y,s.z,o.x,o.y,o.z,g,B,this.packedSplats.numSplats,this.packedSplats.packedArray,!0);for(const n of D){const w=C.direction.clone().multiplyScalar(n).add(C.origin);I.push({distance:n,point:w,object:this})}}ensureShTextures(){if(!this.packedSplats.extra.sh1)return{};const A=this.packedSplats.extra.sh1Texture;if(!A){let B=this.packedSplats.extra.sh1;const{width:C,height:E,depth:t,maxSplats:s}=rA(B.length/2);if(B.length> 25,
+ int(packed.x << 18u) >> 25,
+ int(packed.x << 11u) >> 25
+ )) / 63.0;
+ vec3 sh1_1 = vec3(ivec3(
+ int(packed.x << 4u) >> 25,
+ int((packed.x >> 3u) | (packed.y << 29u)) >> 25,
+ int(packed.y << 22u) >> 25
+ )) / 63.0;
+ vec3 sh1_2 = vec3(ivec3(
+ int(packed.y << 15u) >> 25,
+ int(packed.y << 8u) >> 25,
+ int(packed.y << 1u) >> 25
+ )) / 63.0;
+
+ return sh1_0 * (-0.4886025 * viewDir.y)
+ + sh1_1 * (0.4886025 * viewDir.z)
+ + sh1_2 * (-0.4886025 * viewDir.x);
+ }
+`),de=gA(`
+ vec3 evaluateSH2(Gsplat gsplat, usampler2DArray sh2, vec3 viewDir) {
+ // Extract sint8 values packed into 4 x uint32
+ uvec4 packed = texelFetch(sh2, splatTexCoord(gsplat.index), 0);
+ vec3 sh2_0 = vec3(ivec3(
+ int(packed.x << 24u) >> 24,
+ int(packed.x << 16u) >> 24,
+ int(packed.x << 8u) >> 24
+ )) / 127.0;
+ vec3 sh2_1 = vec3(ivec3(
+ int(packed.x) >> 24,
+ int(packed.y << 24u) >> 24,
+ int(packed.y << 16u) >> 24
+ )) / 127.0;
+ vec3 sh2_2 = vec3(ivec3(
+ int(packed.y << 8u) >> 24,
+ int(packed.y) >> 24,
+ int(packed.z << 24u) >> 24
+ )) / 127.0;
+ vec3 sh2_3 = vec3(ivec3(
+ int(packed.z << 16u) >> 24,
+ int(packed.z << 8u) >> 24,
+ int(packed.z) >> 24
+ )) / 127.0;
+ vec3 sh2_4 = vec3(ivec3(
+ int(packed.w << 24u) >> 24,
+ int(packed.w << 16u) >> 24,
+ int(packed.w << 8u) >> 24
+ )) / 127.0;
+
+ return sh2_0 * (1.0925484 * viewDir.x * viewDir.y)
+ + sh2_1 * (1.0925484 * viewDir.y * viewDir.z)
+ + sh2_2 * (0.3153915 * (2.0 * viewDir.z * viewDir.z - viewDir.x * viewDir.x - viewDir.y * viewDir.y))
+ + sh2_3 * (1.0925484 * viewDir.x * viewDir.z)
+ + sh2_4 * (0.5462742 * (viewDir.x * viewDir.x - viewDir.y * viewDir.y));
+ }
+`),Ye=gA(`
+ vec3 evaluateSH3(Gsplat gsplat, usampler2DArray sh3, vec3 viewDir) {
+ // Extract sint6 values packed into 4 x uint32
+ uvec4 packed = texelFetch(sh3, splatTexCoord(gsplat.index), 0);
+ vec3 sh3_0 = vec3(ivec3(
+ int(packed.x << 26u) >> 26,
+ int(packed.x << 20u) >> 26,
+ int(packed.x << 14u) >> 26
+ )) / 31.0;
+ vec3 sh3_1 = vec3(ivec3(
+ int(packed.x << 8u) >> 26,
+ int(packed.x << 2u) >> 26,
+ int((packed.x >> 4u) | (packed.y << 28u)) >> 26
+ )) / 31.0;
+ vec3 sh3_2 = vec3(ivec3(
+ int(packed.y << 22u) >> 26,
+ int(packed.y << 16u) >> 26,
+ int(packed.y << 10u) >> 26
+ )) / 31.0;
+ vec3 sh3_3 = vec3(ivec3(
+ int(packed.y << 4u) >> 26,
+ int((packed.y >> 2u) | (packed.z << 30u)) >> 26,
+ int(packed.z << 24u) >> 26
+ )) / 31.0;
+ vec3 sh3_4 = vec3(ivec3(
+ int(packed.z << 18u) >> 26,
+ int(packed.z << 12u) >> 26,
+ int(packed.z << 6u) >> 26
+ )) / 31.0;
+ vec3 sh3_5 = vec3(ivec3(
+ int(packed.z) >> 26,
+ int(packed.w << 26u) >> 26,
+ int(packed.w << 20u) >> 26
+ )) / 31.0;
+ vec3 sh3_6 = vec3(ivec3(
+ int(packed.w << 14u) >> 26,
+ int(packed.w << 8u) >> 26,
+ int(packed.w << 2u) >> 26
+ )) / 31.0;
+
+ float xx = viewDir.x * viewDir.x;
+ float yy = viewDir.y * viewDir.y;
+ float zz = viewDir.z * viewDir.z;
+ float xy = viewDir.x * viewDir.y;
+ float yz = viewDir.y * viewDir.z;
+ float zx = viewDir.z * viewDir.x;
+
+ return sh3_0 * (-0.5900436 * viewDir.y * (3.0 * xx - yy))
+ + sh3_1 * (2.8906114 * xy * viewDir.z) +
+ + sh3_2 * (-0.4570458 * viewDir.y * (4.0 * zz - xx - yy))
+ + sh3_3 * (0.3731763 * viewDir.z * (2.0 * zz - 3.0 * xx - 3.0 * yy))
+ + sh3_4 * (-0.4570458 * viewDir.x * (4.0 * zz - xx - yy))
+ + sh3_5 * (1.4453057 * viewDir.z * (xx - yy))
+ + sh3_6 * (-0.5900436 * viewDir.x * (xx - 3.0 * yy));
+ }
+`);function ue(Q,A,I){return KQ({inTypes:{gsplat:T,sh1:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:Q,sh1:A,viewDir:I},globals:()=>[hA,Je],statements:({inputs:g,outputs:B})=>dA(`
+ if (isGsplatActive(${g.gsplat}.flags)) {
+ ${B.rgb} = evaluateSH1(${g.gsplat}, ${g.sh1}, ${g.viewDir});
+ } else {
+ ${B.rgb} = vec3(0.0);
+ }
+ `)}).outputs.rgb}function Ue(Q,A,I){return KQ({inTypes:{gsplat:T,sh2:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:Q,sh2:A,viewDir:I},globals:()=>[hA,de],statements:({inputs:g,outputs:B})=>dA(`
+ if (isGsplatActive(${g.gsplat}.flags)) {
+ ${B.rgb} = evaluateSH2(${g.gsplat}, ${g.sh2}, ${g.viewDir});
+ } else {
+ ${B.rgb} = vec3(0.0);
+ }
+ `)}).outputs.rgb}function Se(Q,A,I){return KQ({inTypes:{gsplat:T,sh3:"usampler2DArray",viewDir:"vec3"},outTypes:{rgb:"vec3"},inputs:{gsplat:Q,sh3:A,viewDir:I},globals:()=>[hA,Ye],statements:({inputs:g,outputs:B})=>dA(`
+ if (isGsplatActive(${g.gsplat}.flags)) {
+ ${B.rgb} = evaluateSH3(${g.gsplat}, ${g.sh3}, ${g.viewDir});
+ } else {
+ ${B.rgb} = vec3(0.0);
+ }
+ `)}).outputs.rgb}const cQ=class cQ{constructor({fileBytes:A}){this.header="",this.littleEndian=!0,this.elements={},this.comments=[],this.data=null,this.numSplats=0,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A}async parseHeader(){const I=new ReadableStream({start:E=>{E.enqueue(this.fileBytes.slice(0,65536)),E.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const g=`end_header
+`;for(;;){const{value:E,done:t}=await I.read();if(t)throw new Error("Failed to read header");this.header+=E;const s=this.header.indexOf(g);if(s>=0){this.header=this.header.slice(0,s+g.length);break}}const B=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,B),this.elements={};let C=null;this.comments=[],this.header.trim().split(`
+`).forEach((E,t)=>{const s=E.trim();if(t===0){if(s!=="ply")throw new Error("Invalid PLY header");return}if(s.length===0)return;const o=s.split(" ");switch(o[0]){case"format":if(o[1]==="binary_little_endian")this.littleEndian=!0;else if(o[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${o[1]}`);if(o[2]!=="1.0")throw new Error(`Unsupported PLY version: ${o[2]}`);break;case"end_header":break;case"comment":this.comments.push(s.slice(8));break;case"element":{const a=o[1];C={name:a,count:Number.parseInt(o[2]),properties:{}},this.elements[a]=C;break}case"property":if(C==null)throw new Error("Property must be inside an element");o[1]==="list"?C.properties[o[4]]={isList:!0,type:o[3],countType:o[2]}:C.properties[o[2]]={isList:!1,type:o[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let I=0;const g=this.data;if(g==null)throw new Error("No data to parse");for(const B in this.elements){const C=this.elements[B],{count:E,properties:t}=C,s={},o=[];for(const[i,D]of Object.entries(t))D.isList?(s[i]=[],o.push(()=>{const n=s[i];n.length=jQ[D.countType](g,I,this.littleEndian),I+=eQ[D.countType];for(let w=0;w{s[i]=jQ[D.type](g,I,this.littleEndian),I+=eQ[D.type]}));const a=A(C)??(()=>{});for(let i=0;i[0,1,2].map((M,l)=>`f_rest_${h+l*y/3}`)),t=new Array(5).fill(null).flatMap((G,h)=>[0,1,2].map((M,l)=>`f_rest_${3+h+l*y/3}`)),s=new Array(7).fill(null).flatMap((G,h)=>[0,1,2].map((M,l)=>`f_rest_${8+h+l*y/3}`)),o=C>=1?new Float32Array(3*3):void 0,a=C>=2?new Float32Array(5*3):void 0,i=C>=3?new Float32Array(7*3):void 0}function n(y,G){if(!o)throw new Error("Missing sh1");for(const[h,M]of E.entries())o[h]=G[M]*8/255-4;if(a)for(const[h,M]of t.entries())a[h]=G[M]*8/255-4;if(i)for(const[h,M]of s.entries())i[h]=G[M]*8/255-4;I==null||I(y,o,a,i)}function w(y){const{min_x:G,min_y:h,min_z:M,max_x:l,max_y:k,max_z:R,min_scale_x:d,min_scale_y:Y,min_scale_z:m,max_scale_x:J,max_scale_y:x,max_scale_z:U,min_r:S,min_g:v,min_b:V,max_r:_,max_g:$,max_b:X}=y.properties;if(!G||!h||!M||!l||!k||!R||!d||!Y||!m||!J||!x||!U||!S||!v||!V||!_||!$||!X)throw new Error("Missing PLY chunk properties");return g=!0,(eA,AA)=>{const{min_x:sA,min_y:DA,min_z:YA,max_x:yA,max_y:nA,max_z:L,min_scale_x:GA,min_scale_y:BA,min_scale_z:lA,max_scale_x:MA,max_scale_y:LA,max_scale_z:NA,min_r:xA,min_g:kA,min_b:qA,max_r:WA,max_g:VA,max_b:cA}=AA;B.push({min_x:sA,min_y:DA,min_z:YA,max_x:yA,max_y:nA,max_z:L,min_scale_x:GA,min_scale_y:BA,min_scale_z:lA,max_scale_x:MA,max_scale_y:LA,max_scale_z:NA,min_r:xA,min_g:kA,min_b:qA,max_r:WA,max_g:VA,max_b:cA})}}function c(y){if(I&&y.name==="sh")return C=XI(y.properties),D(),n;if(y.name!=="vertex")return null;const{packed_position:G,packed_rotation:h,packed_scale:M,packed_color:l}=y.properties;if(!G||!h||!M||!l)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const k=Math.sqrt(2);return(R,d)=>{const Y=B[R>>>8];if(Y==null)throw new Error("Missing PLY chunk");const{min_x:m,min_y:J,min_z:x,max_x:U,max_y:S,max_z:v,min_scale_x:V,min_scale_y:_,min_scale_z:$,max_scale_x:X,max_scale_y:eA,max_scale_z:AA,min_r:sA,min_g:DA,min_b:YA,max_r:yA,max_g:nA,max_b:L}=Y,{packed_position:GA,packed_rotation:BA,packed_scale:lA,packed_color:MA}=d,LA=(GA>>>21&2047)/2047*(U-m)+m,NA=(GA>>>11&1023)/1023*(S-J)+J,xA=(GA&2047)/2047*(v-x)+x,kA=((BA>>>20&1023)/1023-.5)*k,qA=((BA>>>10&1023)/1023-.5)*k,WA=((BA&1023)/1023-.5)*k,VA=Math.sqrt(Math.max(0,1-kA*kA-qA*qA-WA*WA)),cA=BA>>>30,$A=cA===0?kA:cA===1?VA:qA,pt=cA<=1?qA:cA===2?VA:WA,Ht=cA<=2?WA:VA,ft=cA===0?VA:kA,mt=Math.exp((lA>>>21&2047)/2047*(X-V)+V),bt=Math.exp((lA>>>11&1023)/1023*(eA-_)+_),xt=Math.exp((lA&2047)/2047*(AA-$)+$),Kt=(MA>>>24&255)/255*(yA-sA)+sA,Zt=(MA>>>16&255)/255*(nA-DA)+DA,qt=(MA>>>8&255)/255*(L-YA)+YA,Wt=(MA&255)/255;A(R,LA,NA,xA,mt,bt,xt,$A,pt,Ht,ft,Wt,Kt,Zt,qt)}}const r=y=>{if(y.name==="chunk"&&this.comments.some(nA=>nA.toLowerCase().includes("supersplat")))return w(y);if(g)return c(y);if(y.name!=="vertex")return null;const{x:G,y:h,z:M,scale_0:l,scale_1:k,scale_2:R,rot_0:d,rot_1:Y,rot_2:m,rot_3:J,opacity:x,f_dc_0:U,f_dc_1:S,f_dc_2:v,red:V,green:_,blue:$,alpha:X}=y.properties;if(!G||!h||!M)throw new Error("Missing PLY properties: x, y, z");const eA=l&&k&&R,AA=d&&Y&&m&&J,sA=X!=null?zQ[X.type]:1,DA=V!=null?zQ[V.type]:1,YA=_!=null?zQ[_.type]:1,yA=$!=null?zQ[$.type]:1;return C=XI(y.properties),D(),(nA,L)=>{const GA=eA?Math.exp(L.scale_0):cQ.defaultPointScale,BA=eA?Math.exp(L.scale_1):cQ.defaultPointScale,lA=eA?Math.exp(L.scale_2):cQ.defaultPointScale,MA=AA?L.rot_1:0,LA=AA?L.rot_2:0,NA=AA?L.rot_3:0,xA=AA?L.rot_0:1,kA=x!=null?1/(1+Math.exp(-L.opacity)):X!=null?L.alpha/sA:1,qA=U!=null?L.f_dc_0*XQ+.5:V!=null?L.red/DA:1,WA=S!=null?L.f_dc_1*XQ+.5:_!=null?L.green/YA:1,VA=v!=null?L.f_dc_2*XQ+.5:$!=null?L.blue/yA:1;if(A(nA,L.x,L.y,L.z,GA,BA,lA,MA,LA,NA,xA,kA,qA,WA,VA),I&&o){if(o)for(const[cA,$A]of E.entries())o[cA]=L[$A];if(a)for(const[cA,$A]of t.entries())a[cA]=L[$A];if(i)for(const[cA,$A]of s.entries())i[cA]=L[$A];I(nA,o,a,i)}}};this.parseData(r)}injectRgba(A){let I=0;const g=this.data;if(g==null)throw new Error("No parsed data");if(A.length!==this.numSplats*4)throw new Error("Invalid RGBA array length");for(const B in this.elements){const C=this.elements[B],{count:E,properties:t}=C,s=[];let o=0;const a=B==="vertex";if(a){for(const i of["opacity","f_dc_0","f_dc_1","f_dc_2"])if(!t[i]||t[i].type!=="float")throw new Error(`Can't injectRgba due to property: ${i}`)}for(const[i,D]of Object.entries(t))if(D.isList)s.push(()=>{const n=jQ[D.countType](g,I,this.littleEndian);I+=eQ[D.countType],I+=n*eQ[D.type]});else{if(a)if(i==="f_dc_0"||i==="f_dc_1"||i==="f_dc_2"){const n=Number.parseInt(i.slice(5));s.push(()=>{const w=(A[o+n]/255-.5)/XQ;vI[D.type](g,I,this.littleEndian,w)})}else i==="opacity"&&s.push(()=>{const n=Math.max(-100,Math.min(100,-Math.log(1/(A[o+3]/255)-1)));vI[D.type](g,I,this.littleEndian,n)});s.push(()=>{I+=eQ[D.type]})}for(let i=0;iQ.getInt8(A),uchar:(Q,A,I)=>Q.getUint8(A),short:(Q,A,I)=>Q.getInt16(A,I),ushort:(Q,A,I)=>Q.getUint16(A,I),int:(Q,A,I)=>Q.getInt32(A,I),uint:(Q,A,I)=>Q.getUint32(A,I),float:(Q,A,I)=>Q.getFloat32(A,I),double:(Q,A,I)=>Q.getFloat64(A,I)},vI={char:(Q,A,I,g)=>{Q.setInt8(A,g)},uchar:(Q,A,I,g)=>{Q.setUint8(A,g)},short:(Q,A,I,g)=>{Q.setInt16(A,g,I)},ushort:(Q,A,I,g)=>{Q.setUint16(A,g,I)},int:(Q,A,I,g)=>{Q.setInt32(A,g,I)},uint:(Q,A,I,g)=>{Q.setUint32(A,g,I)},float:(Q,A,I,g)=>{Q.setFloat32(A,g,I)},double:(Q,A,I,g)=>{Q.setFloat64(A,g,I)}},eQ={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},zQ={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},Le={0:0,9:1,24:2,45:3},pe={0:0,1:9,2:24,3:45};function XI(Q){let A=0;for(;Q[`f_rest_${A}`];)A+=1;const I=Le[A];if(I==null)throw new Error(`Unsupported number of SH coefficients: ${A}`);return I}const Gt='(function(){"use strict";let S;function OQ(g){const A=S.__externref_table_alloc();return S.__wbindgen_export_2.set(A,g),A}function vQ(g,A){try{return g.apply(this,A)}catch(Q){const I=OQ(Q);S.__wbindgen_exn_store(I)}}function XA(g){const A=typeof g;if(A=="number"||A=="boolean"||g==null)return`${g}`;if(A=="string")return`"${g}"`;if(A=="symbol"){const B=g.description;return B==null?"Symbol":`Symbol(${B})`}if(A=="function"){const B=g.name;return typeof B=="string"&&B.length>0?`Function(${B})`:"Function"}if(Array.isArray(g)){const B=g.length;let C="[";B>0&&(C+=XA(g[0]));for(let E=1;E1)I=Q[1];else return toString.call(g);if(I=="Object")try{return"Object("+JSON.stringify(g)+")"}catch{return"Object"}return g instanceof Error?`${g.name}: ${g.message}\n${g.stack}`:I}let jA=0,LA=null;function qA(){return(LA===null||LA.byteLength===0)&&(LA=new Uint8Array(S.memory.buffer)),LA}const xA=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},PQ=typeof xA.encodeInto=="function"?function(g,A){return xA.encodeInto(g,A)}:function(g,A){const Q=xA.encode(g);return A.set(Q),{read:g.length,written:Q.length}};function _Q(g,A,Q){if(Q===void 0){const i=xA.encode(g),D=A(i.length,1)>>>0;return qA().subarray(D,D+i.length).set(i),jA=i.length,D}let I=g.length,B=A(I,1)>>>0;const C=qA();let E=0;for(;E127)break;C[B+E]=i}if(E!==I){E!==0&&(g=g.slice(E)),B=Q(B,I,I=E+g.length*3,1)>>>0;const i=qA().subarray(B+E,B+I),D=PQ(g,i);E+=D.written,B=Q(B,I,E,1)>>>0}return jA=E,B}let NA=null;function kQ(){return(NA===null||NA.buffer.detached===!0||NA.buffer.detached===void 0&&NA.buffer!==S.memory.buffer)&&(NA=new DataView(S.memory.buffer)),NA}const JQ=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&JQ.decode();function RQ(g,A){return g=g>>>0,JQ.decode(qA().subarray(g,g+A))}function $Q(g,A,Q){return S.decode_wlg(g,A,Q)}function AI(g,A,Q,I){return S.old_sort_splats(g,A,Q,I)>>>0}function QI(g,A,Q){return S.sort_splats(g,A,Q)>>>0}async function II(g,A){if(typeof Response=="function"&&g instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(g,A)}catch(I){if(g.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n",I);else throw I}const Q=await g.arrayBuffer();return await WebAssembly.instantiate(Q,A)}else{const Q=await WebAssembly.instantiate(g,A);return Q instanceof WebAssembly.Instance?{instance:Q,module:g}:Q}}function BI(){const g={};return g.wbg={},g.wbg.__wbg_buffer_09165b52af8c5237=function(A){return A.buffer},g.wbg.__wbg_buffer_609cc3eee51ed158=function(A){return A.buffer},g.wbg.__wbg_get_b9b93047fe3cf45b=function(A,Q){return A[Q>>>0]},g.wbg.__wbg_instanceof_Uint8Array_17156bcf118086a9=function(A){let Q;try{Q=A instanceof Uint8Array}catch{Q=!1}return Q},g.wbg.__wbg_length_3b4f022188ae8db6=function(A){return A.length},g.wbg.__wbg_length_6ca527665d89694d=function(A){return A.length},g.wbg.__wbg_length_8cfd2c6409af88ad=function(A){return A.length},g.wbg.__wbg_length_a446193dc22c12f8=function(A){return A.length},g.wbg.__wbg_length_e2d2a49132c1b256=function(A){return A.length},g.wbg.__wbg_new_405e22f390576ce2=function(){return new Object},g.wbg.__wbg_new_9fee97a409b32b68=function(A){return new Uint16Array(A)},g.wbg.__wbg_new_a12002a7f91c75be=function(A){return new Uint8Array(A)},g.wbg.__wbg_new_e3b321dcfef89fc7=function(A){return new Uint32Array(A)},g.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(A,Q,I){return new Float32Array(A,Q>>>0,I>>>0)},g.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(A,Q,I){return new Uint32Array(A,Q>>>0,I>>>0)},g.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(A){return new Float32Array(A>>>0)},g.wbg.__wbg_newwithlength_bd3de93688d68fbc=function(A){return new Uint32Array(A>>>0)},g.wbg.__wbg_set_10bad9bee0e9c58b=function(A,Q,I){A.set(Q,I>>>0)},g.wbg.__wbg_set_65595bdd868b3009=function(A,Q,I){A.set(Q,I>>>0)},g.wbg.__wbg_set_bb8cecf6a62b9f46=function(){return vQ(function(A,Q,I){return Reflect.set(A,Q,I)},arguments)},g.wbg.__wbg_set_d23661d19148b229=function(A,Q,I){A.set(Q,I>>>0)},g.wbg.__wbg_set_f4f1f0daa30696fc=function(A,Q,I){A.set(Q,I>>>0)},g.wbg.__wbg_subarray_3aaeec89bb2544f0=function(A,Q,I){return A.subarray(Q>>>0,I>>>0)},g.wbg.__wbg_subarray_769e1e0f81bb259b=function(A,Q,I){return A.subarray(Q>>>0,I>>>0)},g.wbg.__wbindgen_debug_string=function(A,Q){const I=XA(Q),B=_Q(I,S.__wbindgen_malloc,S.__wbindgen_realloc),C=jA;kQ().setInt32(A+4*1,C,!0),kQ().setInt32(A+4*0,B,!0)},g.wbg.__wbindgen_init_externref_table=function(){const A=S.__wbindgen_export_2,Q=A.grow(4);A.set(0,void 0),A.set(Q+0,void 0),A.set(Q+1,null),A.set(Q+2,!0),A.set(Q+3,!1)},g.wbg.__wbindgen_memory=function(){return S.memory},g.wbg.__wbindgen_number_new=function(A){return A},g.wbg.__wbindgen_string_new=function(A,Q){return RQ(A,Q)},g.wbg.__wbindgen_throw=function(A,Q){throw new Error(RQ(A,Q))},g}function gI(g,A){return S=g.exports,nQ.__wbindgen_wasm_module=A,NA=null,LA=null,S.__wbindgen_start(),S}async function nQ(g){if(S!==void 0)return S;typeof g<"u"&&(Object.getPrototypeOf(g)===Object.prototype?{module_or_path:g}=g:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof g>"u"&&(g=new URL("data:application/wasm;base64,AGFzbQEAAAABtgItYAJ/fwF/YAJ/fwBgA39/fwF/YAF/AGABfwF/YAN/f38AYAV/f39/fwBgBH9/f38AYAFvAX9gAW8Bb2ADb39/AW9gBX9/f39/AX9gA29vfwBgAABgA39+fgBgA39+fgF/YAd/f39/f39/AX9gBn9/f39/fwBgAX0BfWAEf39/fwF/YAABb2ABfwFvYAZ/f39/f38Bf2AAAX9gC39/f39/f39/f39/AX9gAn9/AW9gAXwBb2ACb38Bb2ADb29vAX9gAn9vAGAHf39/f39/fwBgAn9/AX5gAn9+AX9gAn9+AGALfX19fX19fX1/b38Bb2ABfwF9YAV/f35/fwBgBH9+f38AYAV/f31/fwBgBH99f38AYAV/f3x/fwBgBH98f38AYAR/f29vAX9gA39vbwF/YAJ9fQF9ArcIHgN3YmcVX193YmluZGdlbl9zdHJpbmdfbmV3ABkDd2JnFV9fd2JpbmRnZW5fbnVtYmVyX25ldwAaA3diZxpfX3diZ19nZXRfYjliOTMwNDdmZTNjZjQ1YgAbA3diZx1fX3diZ19sZW5ndGhfZTJkMmE0OTEzMmMxYjI1NgAIA3diZxpfX3diZ19uZXdfNDA1ZTIyZjM5MDU3NmNlMgAUA3diZx1fX3diZ19idWZmZXJfNjA5Y2MzZWVlNTFlZDE1OAAJA3diZxpfX3diZ19uZXdfYTEyMDAyYTdmOTFjNzViZQAJA3diZxpfX3diZ19zZXRfNjU1OTViZGQ4NjhiMzAwOQAMA3diZx1fX3diZ19sZW5ndGhfYTQ0NjE5M2RjMjJjMTJmOAAIA3diZxpfX3diZ19uZXdfOWZlZTk3YTQwOWIzMmI2OAAJA3diZxpfX3diZ19zZXRfZjRmMWYwZGFhMzA2OTZmYwAMA3diZx1fX3diZ19sZW5ndGhfOGNmZDJjNjQwOWFmODhhZAAIA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9mMWRlYWQ0NGQxZmM3MjEyAAoDd2JnGl9fd2JnX25ld19lM2IzMjFkY2ZlZjg5ZmM3AAkDd2JnGl9fd2JnX3NldF9kMjM2NjFkMTkxNDhiMjI5AAwDd2JnHV9fd2JnX2xlbmd0aF82Y2E1Mjc2NjVkODk2OTRkAAgDd2JnMV9fd2JnX25ld3dpdGhi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CwJAIAAoAhAiAkUNAEGousIAQQggAhDVBEUNAEEBDAILIAFBATsBJCABIAQ2AiAgAUEANgIcIAFBAToAGCABQd8ANgIUIAEgBDYCECABQQA2AgwgASAENgIIIAEgAzYCBCABQd8ANgIAIAFBKGogARBQAn8gASgCKEUEQAJAIAEtACUNACABQQE6ACUCQCABLQAkQQFGBEAgASgCICEFIAEoAhwhBAwBCyABKAIgIgUgASgCHCIERg0BCyABKAIEIARqIQMgBSAEawwCC0GwusIAEK4EAAsgASgCHCEEIAEgASgCMDYCHCADIARqIQMgASgCLCAEawshBAJAIAIEQCADIAQgAhDVBA0BCyABQcgAaiABQSBqKQIANwMAIAFBQGsgAUEYaikCADcDACABQThqIAFBEGopAgA3AwAgAUEwaiABQQhqKQIANwMAIAEgASkCADcDKAJAIAEtAE0NACACIQMDQCABKAIsIQUgAUHUAGogAUEoahBQAn8gASgCVEUEQCABLQBNDQMgAUEBOgBNAkAgAS0ATEEBRgRAIAEoAkghBSABKAJEIQQMAQsgASgCSCIFIAEoAkQiBEYNBAsgASgCLCAEaiEGIAUgBGsMAQsgASgCRCEEIAEgASgCXDYCRCAEIAVqIQYgASgCWCAEawshBAJAIANFBEBBACEDDAELQbm2wgBBASADENUEDQMgACgCECICRQRAQQAhAkEAIQMMAQsgAiEDIAYgBCACENUEDQMLIAEtAE1FDQALCyACRQ0BQcC6wgBBAiACENUERQ0BC0EBDAELAkAgACgCECICRQ0AQcK6wgBBAyACENUERQ0AQQEMAQsCQAJAAkAgACgCACIDRQRAQQAhAwwBC0EAIQIDQAJAIAAoAggiBCAAKAIETw0AIAMgBGotAABBxQBHDQAgACAEQQFqNgIIDAILAkAgAkUNACAAKAIQIgNFDQBB9bnCAEECIAMQ1QRFDQBBAQwFCyAAECcNAiACQQFrIQIgACgCACIDDQALQQAhAwsgACgCECIEBEBBAUH1s8IAQQEgBBDVBA0DGiAAKAIAIQMLIANFDQEgACgCCCICIAAoAgRPDQEgAiADai0AAEH1AEcNASAAIAJBAWo2AghBAAwCC0EBDAELAkAgACgCECICRQ0AQcW6wgBBBCACENUERQ0AQQEMAQsgABAnCyAB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AWogBiARGyADa2whAwwDCyABIApBjIHCABCtAgALQZyBwgBBKUHIgcIAEO0CAAtBoP/BAEEXQZyAwgAQ7QIACyAPIAZBAWo2AgAgAkEEaiAJOgAAIAIgAzYCACACQQhqIQIgBCAFQQFqIgVHDQALCyAAQYWAgIB4NgIADwsgBUEBaiEFIAMoAgAhCSADQQRqIQMgCUEATA0ACyAFQQFrIQxBACEDA0ACQCACIAZJBEAgA0EBaiEDIAsgAkEDdGogDDoABQNAIAIgDWogDnEiAiAETw0ACwwBCyACIAZB2IHCABCtAgALIAMgCUcNAAsMAAsAC9IHAQN/AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCgAHBwECAwQHBwUHCwJAAkACQAJAAkACQCAALQAEDgcADAEMAgMEDAsgAC0ACEEDRw0LIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQQgASADIAIoAggQpwQMBAsgAC0ACEEDRw0KIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQMgASADIAIoAggQpwQMAwsgAC0ACEEDRw0JIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQIgASADIAIoAggQpwQMAgsgAC0ACEEDRw0IIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQEgASADIAIoAggQpwQMAQsgAC0ACEEDRw0HIAAoAgwiACgCACEBIABBBGooAgAiAigCACIDBEAgASADEQMACyACKAIEIgNFDQAgASADIAIoAggQpwQLIABBDEEEEKcEDwsCQAJAIAAtAAQOAgcBAAsgACgCCCIBQfv///8HaiICQQ1NIAJBAkdxDQYgAUGEgICAeEoNBSABQYOAgIB4Rw0GDAULIAAoAggiAUGEgICAeEogAUGDgICAeEZyDQQMBQsgAC0ABEEDRw0EDAULAkACQEEDIAAoAgQiAUEHayICIAJBA08bQQJrDgIBAAULAkACQAJAIAEOBgAHAQcHAgcLIAAtAAhBA0cNBgwICyAAKAIIIgFB7f///wdqIgJBCk0gAkEDR3ENBSABRSABQfv///8H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wQA2AgggAkIBNwIUIAIgAkEEaq1CgICAgJA4hDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwICyACIAA2AgQgAkEBNgIMIAJB8KfBADYCCCACQgE3AhQgAiACQQRqrUKAgICAoDeENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAcLIAIgAEEEajYCBCACQQE2AgwgAkHwp8EANgIIIAJCATcCFCACIAJBBGqtQoCAgICgOIQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEUMBgsgASgCHEHFusEAQTkgASgCICgCDBECAAwFCyACIABBBGo2AgQgAkECNgIMIAJBqLvBADYCCCACQgE3AhQgAiACQQRqrUKAgICA8DWENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAQLIAIgAEEEajYCACACIABBCGo2AgQgAkEDNgIMIAJB6LvBADYCCCACQgI3AhQgAkKAgICA8DUiBCACrYQ3AyggAiAEIAJBBGqthDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwDCyACIABBBGo2AgQgAkECNgIMIAJB8LzBADYCCCACQgE3AhQgAiACQQRqrUKAgICAsDiENwMgIAIgAkEgajYCECABKAIcIAEoAiAgAkEIahBFDAILIAIgAEEEajYCACACIABBCGo2AgQgAkECNgIMIAJBsL3BADYCCCACQgI3AhQgAkKAgICAwDgiBCACQQRqrYQ3AyggAiAEIAKthDcDICACIAJBIGo2AhAgASgCHCABKAIgIAJBCGoQRQwBCyACIABBBGo2AgAgAiAAQQhqNgIEIAJBAjYCDCACQfS9wQA2AgggAkICNwIUIAJCgICAgPA1IgQgAkEEaq2ENwMoIAIgBCACrYQ3AyAgAiACQSBqNgIQIAEoAhwgASgCICACQQhqEEULIAJBMGokAAuXBgEIfyMAQTBrIgEkAAJAAn8CQAJAAkAgACgCACIFBEAgACgCCCIEIAQgACgCBCIHIAQgB0sbayEIIAUhAwNAIAIgCGpFDQMgACACIARqQQFqNgIIIAJBAWohAiADIARqIANBAWohAy0AACIGQTBrQf8BcUEKSSAGQeEAa0H/AXFBBklyDQALIAZB3wBHDQIgAiAEakEBayEGAkAgBARA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IABBABAgDAELIAAQJwsgBEEQaiQAC5QDAQR/AkAgAkEQSQRAIAAhAwwBCwJAIABBACAAa0EDcSIFaiIEIABNDQAgACEDIAUEQCAFIQYDQCADIAE6AAAgA0EBaiEDIAZBAWsiBg0ACwsgBUEBa0EHSQ0AA0AgAyABOgAAIANBB2ogAToAACADQQZqIAE6AAAgA0EFaiABOgAAIANBBGogAToAACADQQNqIAE6AAAgA0ECaiABOgAAIANBAWogAToAACADQQhqIgMgBEcNAAsLIAQgAiAFayICQXxxaiIDIARLBEAgAUH/AXFBgYKECGwhBQNAIAQgBTYCACAEQQRqIgQgA0kNAAsLIAJBA3EhAgsCQCADIAIgA2oiBU8NACACQQdxIgQEQANAIAMgAToAACADQQFqIQMgBEEBayIEDQALCyACQQFrQQdJDQADQCADIAE6AAAgA0EHaiABOgAAIANBBmogAToAACADQQVqIAE6AAAgA0EEaiABOgAAIANBA2ogAToAACADQQJqIAE6AAAgA0EBaiABOgAAIANBCGoiAyAFRw0ACwsgAAudAwIGfwF+QTggAUH/AXEiASABQThPGyECAkAgACgCECIEIAAtABQiAWoiA0EASgRAIAIgA0sNAQJAIARBAEwgASACT3INAANAIARBAWsiBUEDdiEGQcAAIAFBB2oiB0F4cWshAwJAIAVBP00EQCAAIAYgAxCIASAAKAIQIQQgAC0AFCEBDAELAkAgACgCBCIFIAYgB0H4AXFBA3ZqQQdrIgZPBEAgBSAGayIFQQdLDQFBCCAFQcTewQAQqwQACyAGIAVB1N7BABCqBAALIAAgASADaiIBOgAUIAAgBCADQf8BcWsiBDYCECAAIAAoAgAgBmopAAA3AwgLIAFB/wFxIAJPDQEgBEEASg0ACwsgACABIAJrIgE6ABRCfyACrYZCf4UgACkDCCABQT9xrYiDDwsgACAEIAJrNgIQQgAPCyACIANrIQICQCADQf8BcSABSwRAIAAgAxBbIQggACgCECEEDAELIAAgASADayIBOgAUQn8gA62GQn+FIAApAwggAUE/ca2IgyEICyAAIAQgAms2AhAgCCACQT9xrYYLnAMBBX8CQEERQQAgAEGvsARPGyIBIAFBCHIiASAAQQt0IgIgAUECdEH82sIAaigCAEELdEkbIgEg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AEEEaiACKAIEIAIoAggQPUHcoMIAIAAoAgggACgCBCICGyEDQQkgACgCDCACGwshAiADIAIgARDaASAAQRBqJAALZgAjAEEwayIAJABBhOXCAC0AAARAIABBAjYCDCAAQYyhwgA2AgggAEIBNwIUIAAgATYCLCAAIABBLGqtQoCAgIAQhDcDICAAIABBIGo2AhAgAEEIakG0ocIAEKQDAAsgAEEwaiQAC2EBAX8jAEEwayICJAAgAiAANgIMIAJBAjYCFCACQZymwQA2AhAgAkIBNwIcIAIgAkEMaq1CgICAgOA0hDcDKCACIAJBKGo2AhggASgCHCABKAIgIAJBEGoQRSACQTBqJAALYQEBfyMAQTBrIgIkACACIAA2AgwgAkECNgIUIAJB5K7BADYCECACQgE3AhwgAiACQQxqrUKAgICA4DSENwMoIAIgAkEoajYCGCABKAIcIAEoAiAgAkEQahBFIAJBMGokAAthAQF/IwBBMGsiAiQAIAIgADYCDCACQQE2AhQgAkHwp8EANgIQIAJCATcCHCACIAJBDGqtQoCAgICQOIQ3AyggAiACQShqNgIYIAEoAhwgASgCICACQRBqEEUgAkEwaiQAC18BAn8CQCAAKAIAIgFB7f///wdqIgJBCk0gAkEDR3ENACABRSABQfv///8HaiICQQ1NIAJBAkdxIAFBg4CAgHhHIAFBhICAgHhMcXJyDQAgACgCBCABQQJ0QQQQpwQLC1wBA38gAC0AACIBQQNLIAFBA0dyRQRAIAAoAgQiACgCACEBIABBBGooAgAiAygCACICBEAgASACEQMACyADKAIEIgIEQCABIAIgAygCCBCnBAsgAEEMQQQQpwQLC2sBAn9BqJbAACECAkACQAJAAkAgAS0AACIDQQNrQQAgA0EEa0H/AXFBA0kbQQFrDgMAAQIDC0EAIQEMAgsgAUEBaiEBQdStwAAhAgwBCyABQQRqIQFBkK7AACECCyAAIAI2AgQgACABNgIAC2gBA38CQAJAAkACQEEDIAEoAgBB7f///wdqIgQgBEELTxtBAmsOAwABAgMLIAFBBGohAkGcm8AAIQMMAgtB2LPAACEDIAEhAgwBCyABQQRqIQJBjLXAACEDCyAAIAM2AgQgACACNgIAC2sBAn9B1LfAACECAkACQAJAAkAgAS0AACIDQQNrQQAgA0EE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AX8jAEEQayICJAAgAiAANgIMIAFB8b3AAEEWQYe+wABBAyACQQxqQay7wAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBic7AAEEbQcC8wABBAyACQQxqQay7wAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBrODAAEERQb3gwABBBCACQQxqQZzgwAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBweDAAEEWQdfgwABBAyACQQxqQfjawAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFB8fDAAEEbQZDfwABBAyACQQxqQfjawAAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFB8IjBAEERQYGJwQBBBCACQQxqQeCIwQAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBhYnBAEEWQZuJwQBBAyACQQxqQcCGwQAQyQEgAkEQaiQACzgBAX8jAEEQayICJAAgAiAANgIMIAFBhZfBAEEbQdSHwQBBAyACQQxqQcCGwQAQyQEgAkEQaiQACzwBAX8jAEEQayICJAAgAkGQksIANgIMIAIgADYCCCACQQhqQZSSwgAgAkEMakGUksIAIAFB5J/CABBrAAs4AQF/IwBBEGsiAiQAIAIgADYCDCABQeywwgBBDUH5sMIAQQQgAkEMakHcsMIAEMkBIAJBEGokAAs5AQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIakGswsIAIANBDGpBrMLCACACQeyOwgAQawALMAEBfyMAQRBrIgIkACACQQhqIAAQ8wIgAigCCCABIAIoAgwoAhARAAAgAkEQaiQACzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEMUBDwsgACABEPwBDwsgACABEP0BCzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEK0EDwsgACABEIQCDwsgACABEIMCCzIBAX8gASgCFCICQRBxRQRAIAJBIHFFBEAgACABEKkDDwsgACABEIQCDwsgACABEIMCCzMBAX8jAEEQayICJAAgAiAAKAIANgIMIAFB7IfBAEEMIAJBDGpB3IfBABB/IAJBEGokAAszAQF/IwBBEGsiAiQAIAIgACgCADYCDCABQejUwQBBDCACQQxqQdjUwQAQfyACQRBqJAALLQACQCAAIAEQrANFDQAgAARAQYXlwgAtAAAaIAAgARD1AyIBRQ0BCyABDwsACzcBAX8jAEEgayIBJAAgAUEANgIYIAFBATYCDCABQdzZwgA2AgggAUIENwIQIAFBCGogABCkAwALMwEBfyAAKAIAIgFBhICAgHhMIAFBg4CAgHhHcSABRXJFBEAgACgCBCABQQJ0QQQQpwQLCzABAX8jAEEQayICJAAgAiAANgIMIAFBxJnAAEEMIAJBDGpBtJnAABB/IAJBEGokAAsvACAAQZybwAA2AgQgACABIAFBACABLQAAQQJrQf8BcSIAQQFGGyAAQQJLGzYCAAswAQF/IwBBEGsiAiQAIAIgADYCDCABQdi8wABBDCACQQxqQci8wAAQfyACQRBqJAALLwAgAEGwvsAANgIEIAAgASABQQAgAS0AAEECa0H/AXEiAEEBRhsgAEECSxs2AgALMAEBfyMAQRBrIgIkACACIAA2AgwgAUGo38AAQQwgAkEMakGY38AAEH8gAkEQaiQACy8AIABBgOHAADYCBCAAIAEgAUEAIAEtAABBAmtB/wFxIgBBAUYbIABBAksbNgIACy8AIABBxInBADYCBCAAIAEgAUEAIAEtAABBAmtB/wFxIgBBAUYbIABBAksbNgIACzABAX8jAEEQayICJAAgAiAANgIMIAFB7IfBAEEMIAJBDGpB3IfBABB/IAJBEGokAAssAQF/IwBBEGsiACQAIABBCGoiAiABQfyVwgBBCxCmAyACEK4CIABBEGokAAuEAQEDfyMAQSBrIgQkACAEQQhqIgMQ8AECf0GF5cIALQAAGkEkQQQQ9QMiAgRAIAJB5LrAADYCACACIAE2AiAgAiAANgIcIAIgAykCADcCBCACQQxqIANBCGopAgA3AgAgAkEUaiADQRBqKQIANwIAIAIMAQtBBEEkENMEAAsgBEEgaiQACzgBAX9BASEBIAAtAARFBEAgACgCACIBKAIcQY7EwgBBASABKAIgKAIMEQIAIQELIAAgAToABCABC5ABAQN/IwBBIGsiAyQAIANBCGoiAhDwAQJ/QYXlwgAtAAAaQShBBBD1AyIBBEAgAUGcgsAANgIAIAEgAikCADcCBCABIAApAgA3AhwgAUEMaiACQQhq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NgIMIABBhKLCACABKAIEIAEoAggiAC0ACCAALQAJEMEBAAsgACADNgIEIAAgAjYCACAAQeihwgAgASgCBCABKAIIIgAtAAggAC0ACRDBAQALKgAgAEH/AXFFBEBDAAAAAA8LIABBAWtB/wFxs0NFIpE9lEMAABDBkhBSCy0AIAEoAhwgAiADIAEoAiAoAgwRAgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAsyAQF/IAEoAhxBvMHCAEEBIAEoAiAoAgwRAgAhAiAAQQA6AAUgACACOgAEIAAgATYCAAshAAJAIAEgAxCsAwRAIAAgASADIAIQ3wMiAA0BCwALIAALIgEBfyAAKAIAIgAgAEEfdSICcyACayAAQX9zQR92IAEQbAslACAARQRAQfiPwgBBMhDIBAALIAAgAiADIAQgBSABKAIQEQsACygAIAEgACgCAC0AAEECdCIAQeC8wgBqKAIAIABBzLzCAGooAgAQ5QMLGQEBf0GAgICAeCABayAATyACIAFpQQFGGwslACABIAAtAABBAnQiAEH8tcAAaigCACAAQey1wABqKAIAEOUDCyUAIABBnJvAADYCBCAAIAFBBGpBACABKAIAQYKAgIB4Rhs2AgALIQAgAEHwosAANgIEIAAgAUEBakEAIAEtAABBAkYbNgIACyUAIAEgAC0AAEECdCIAQZDZwABqKAIAIABBgNnAAGooAgAQ5QMLJQAgAEGwvsAANgIEIAAgAUEEakEAIAEoAgBBgoCAgHhGGzYCAAshACAAQYTGwAA2AgQgACABQQFqQQAgAS0AAEECRhs2AgALJQAgASAALQAAQQJ0IgBB+PvAAGooAgAgAEHo+8AAaigCABDlAwslACAAQYDhwAA2AgQgACABQQRqQQAgASgCAEGCgICAeEYbNgIACyEAIABBsOjAADYCBCAAIAFBAWpBACABLQAAQQJGGzYCAAshACAAQbSOwQA2AgQgACABQQFqQQAgAS0AAEECRhs2AgALJQAgAEHEicEANgIEIAAgAUEEakEAIAEoAgBBgoCAgHhGGzYCAAslACABIAAtAABBAnQiAEGMosEAaigCACAAQfyhwQBqKAIAEOUDCyMAIABFBEBB+I/CAEEyEMgEAAsgACACIAMgBCABKAIQEQcACyMAIABFBEBB+I/CAEEyEMgEAAsgACACIAMgBCAB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BBD1AyILBEACQEGF5cIALQAAGkGACEEEEPUDIghFDQJBheXCAC0AABpBgAhBBBD1AyIERQ0AQYXlwgAtAAAaQYAIQQQQ9QMiDkUNAkGF5cIALQAAGkGACEEEEPUDIgxFDQBBheXCAC0AABpBgAhBBBD1AyISRQ0CIANCADcDqAIgA0EBNgLoASADQQA6AOQBIANBADoA4gEgA0EAOgDgASADQTQ7AdwBIANBADYC2AEgAyASNgLUASADQoCAgICAIDcCzAEgAyAMNgLIASADQoCAgICAIDcDwAEgA0KAgICAwAA3A7gBIANBIzsBtAEgA0EANgKwASADIA42AqwBIANCgICAgIAgNwKkASADIAQ2AqABIANCgICAgIAgNwOYASADQoCAgIDAADcDkAEgA0EfOwGMASADQQA2AogBIAMgCDYChAEgA0KAgICAgCA3AnwgAyALNgJ4IANCgICAgIAgNwNwIANCgICAgMAANwNoIANBwAJqQgA3AwAgA0G4AmpCADcDACADQbACakIANwMAIANB/AFqQQA2AgAgA0H0AWpCADcCACADQgA3AuwBIANC1uuC7ur9ifXgADcDgAIgA0LP1tO+0ser2UI3A4gCIANCADcDkAIgA0L56tDQ58mh5OEANwOYAiADQgA3A6ACIANBADYCyAIgA0IANwPQAiADIAY2AtgCIANBADYC5AIgA0EINgKUAyADQoCAgIAQNwLcAiADQoGAgIDAADcCjAMgA0EANgKIAyADQoCAgIAQNwPoAiADQgA3A/ACIANCBDcD+AIgA0KAgICAEDcDgAMMAwsLQQRBgAhBzIDCABDXAwALQQRBgAhB3IDCABDXAwALIAdBADYCqAcgB0EANgKwByAHQQA6ANwKIAdBADYC2AogByAjNwPQCiAHKQOoByEgIAcpA7AHISMgB0HoA2oiBiADQagDEDsaIAdBCGoQSSAHICM3AyggByAgNwMgIAcgITcDGCAHIA02AgwgByAiPgIQIAcgIkIgiD4CFCAHIAU2AgggB0EwaiAGQagDEDshCCAFQQFxBEBBDCEQIAcoAtgDIhJFDQEgBygC3AMhFwNAIBJB1AFrIQQgEkEEaiEGIBIvAd4WIgNBAnQhC0F/IQUCQAJAA0AgC0UEQCADIQUMAgsgBigCACEOIAVBAWohBSAEQYQCaiEEIAtBBGshCyAGQQRqIQZBfyANIA5HIA0gDkkbIg5BAUYNAAsgDkH/AXFFDQELIBdFDQMgF0EBayEXIBIgBUECdGpB4BZqKAIAIRIMAQsLIAdBDDYCkAcgByANNgKUByAHQZAHahAqQQAhBSAIQegAaiAEEIcBIAhBkAFqIARBKGoQhwEgCEG4AWogBEHQAGoQhwEgCEEAOgBkIAhBADYCFCAIQQA2AgggCEEANgJcIAhBADYCOCAIQQA2AiwgCEEANgIgIAhBADYCUCAIQQA6AGEgCEEANgJEIAggBC8BeDsB4AEgCCAEKAF6NgHiASAEKAKIASIDQQF0IQYgBCgChAEhCyADIAgoAgBLBEAgCEEAIANBAUECEJIBIAgoAgghBQsgCCgCBCAFQQF0aiALIAYQOxogCCADIAVqNgIIIAQoApABIQYgBCgClAEiAyAIKAIMIAgoAhQiBWtLBEAgCEEMaiAFIANBAUEBEJIBIAgoAhQhBQsgCCgCECAFaiAGIAMQOxogCCADIAVqNgIUIAggBC0A5AE6AGQgBCgCnAEhBiAEKAKgASIDIAgoAhggCCgCICIFa0sEQCAIQRhqIAUgA0EBQQEQkgEgCCgCICEFCyAIKAIcIAVqIAYgAxA7GiAIIAMgBWo2AiAgBCgCuAEiA0ECdCEGIAQoArQBIQsgAyAIKAIwIAgoAjgiBWtLBEAgCEEwaiAFIANBBEEEEJIBIAgoAjghBQsgCCgCNCAFQQJ0aiALIAYQOxogCCADIAVqNgI4IAhBPGogBEG8AWoQhwFBACEFIAhBADYC5AIgCEGUA2ogBEGAAmooAgA2AgAgCCAEKQL4ATcCjAMgBCgC7AEhBiAEKALwASIDIAgoAtwCSwRAIAhB3AJqQQAgA0EBQQEQkgEgCCgC5AIhBQsgCCgC4AIgBWogBiADEDsaIAggAyAFajYC5AIgByANNgIsIAdBATYCKAsgFCAHQQhqQeADEDsgBykCADcD4AMMAQsgFEKAgICAgPgANwMYIBQgIjcDECAUIA02AgwgFCAQNgIIIBRBAzYCACAHQQhqEEkgB0HYA2oQKwsgB0GAC2okAAJAIAkoApgEIgNBA0cEQCAJQZAEaiIFIAlBvARqKAIANgIAIAlBiARqIgYgCUG0BGopAgA3AwAgCUGABGoiCyAJQawEaikCADcDACAJQfgDaiIIIAlBpARqKQIANwMAIAkgCSkCnAQ3A/ADIAlBMGogCUHABGpBwAMQOxogCUEUaiAIKQMANwIAIAlBHGogCykDADcCACAJQSRqIAYpAwA3AgAgCUEsaiAFKAIANgIAIAkgAzYCCCAJIAkpA/ADNwIMIAlBADYCoAQgCUKAgICAEDcCmAQgCUHwA2ohBCAJQQhqIQ4jAEEgayIHJABBgMAAIQwCQAJAIBQoAgAiCCAUKAIIIgVrQSBPBEAgCCEGIAUhAwwBCyAHQRBqIA4gFBByAkACQCAHLQAQQQRGBEAgBygCFCENDAELIAcpAxAiIEIgiKchDSAgpyIDQf8BcUEERw0BCyANBEAgFCgCACEGIBQoAgghAwwCCyAEQQQ6AAAgBEEANgIEDAILIAQgDTYCBCAEIAM6AAAgBEEDaiADQRh2OgAAIAQgA0EIdjsAAQwBC0EAIQ0DQAJAIAMgBkcgBiAIR3INACAHQRBqIA4gFBByAkACQAJAIActABBBBEYEQCAHKAIUIQYMAQsgBykDECIgQiCIpyEGICCnIgNB/wFxQQRHDQELIBQoAgghAyAGRQ0BIBQoAgAhBgwCCyAEIAY2AgQgBCADOgAAIARBA2ogA0EYdjoAACAEIANBCHY7AAEMAwsgBEEEOgAAIAQgAyAFazYCBAwCCwJAAkACQCADIAZGBEAgBkEgaiILIAZBAXQiEiALIBJLGyILQQBIDQEgByAGBH8gByAGNgIYIAcgFCgCBDYCEEEBBUEACzYCFCAHQQRqQQEgCyAHQRBqENsBIAcoAgRBAUYNASAHKAIIIQYgFCALNgIAIBQgBjYCBCALIQYLIBQoAgQgA2oiEiANakEAIAwgBiADayIXIAwgF0kbIgsgDWsQWhogB0EQaiAOIBIgCxAoIActABBBBEYNAQJAA0ACQCAHKQMQIiBCIIgiIqchDQJAAkACQAJAICCnIhBB/wFxQQFrDgQAAgEGBAsgIEKA/gODQoDGAFENAgwDCyANLQAIQSNHDQIgDSgCACEQIA1BBGooAgAiEygCACIVBEAgECAVEQMACyATKAIEIhUEQCAQIBUgEygCCBCnBAsgDUEMQQQQpwQMAQsgDS0ACEEjRw0BCyAHQRBqIA4gEiALECggBy0AEEEERw0BDAQLCyAEIBA6AAAgFCADNgIIIARBB2ogIkIYiDwAACAEQQVqICJCCIg9AAAgBCAgQgiIQv///weDICJCGIaEPgABDAULIBQgAzYCCAwCCyAEQoHMADcCAAwDCyAHKAIUIhIgC0sEQEGYo8EAQSlBuKTBABDtAgALIBQgAyASaiIDNgIIIBJFDQAgCyASayENIAsgEkcgDCAXS3INAUF/IAxBAXQgDEEASBshDAwBCwsgBEEEOgAAIAQgAyAFazYCBAsgB0EgaiQAIAktAPADQQRGBEAgGCAJKQKYBDcCACAYQQhqIAlBoARqKAIANgIAIA4QRwwCCyAJIAkpA/ADIiCnIgNBGHY6APMDIAkgA0EIdjsA8QMgCSAgQiCIPgL0AyAJICA8APADIAlB8ANqEKIDIQMgGEGAgICAeDYCACAYIAM2AgQgCSgCmAQiAwRAIAkoApwEIANBARCnBAsgCUEIahBHDAELIAlBjARqIAlBuARqKQMAIiA3AgAgCUGEBGogCUGwBGoiAykDACIiNwIAIAlB/ANqIAlBqARqIgUpAwAiITcCACAJIAkpA6AEIiM3AvQDIAMgIDcDACAFICI3AwAgCUGgBGogITcDACAJICM3A5gEIwBBIGsiCyQAIAtBCGoiBhDwAQJ/IwBBMGsiAyQAIANBKGogCUGYBGoiBUEYaikCADcCACADQSBqIAVBEGopAgA3AgAgA0EYaiAFQQhqKQIANwIAQYXlwgAtAAAaIAMgBSkCADcCEEHAAEEIEPUDIgUEQCAFQay6wAA2AgAgBSADKQIMNwIcIAUgBikCADcCBCAFQQxqIAZBCGopAgA3AgAgBUEUaiAGQRBqKQIANwIAIAVBJGogA0EUaikCADcCACAFQSxqIANBHGopAgA3AgAgBUE0aiADQSRqKQIANwIAIAVBPGogA0EsaigCADYCACADQTBqJAAgBQwBC0EIQcAAENMEAAshAyALQSBqJAAgGEGAgICAeDYCACAYIAM2AgQLIAlBgAhqJAAgCigCLCEDIAooAigiC0GAgICAeEYNESAKKAIwCzYCFCAKIAM2AhAgCiALNgIMIApCADcDGCAKIApBDGo2AiAgCkEoaiEHQgAhIiMAQfAAayIFJAAgBUEoaiIIQgA3AwAgBUEgaiIJQgA3AwAgBUEYaiIEQgA3AwAgBUEQaiINQgA3AwAgBUEIaiIOQgA3AwAgBUIANwMAAkAgCkEYaiIGKAIIIhQoAggiAyADIAYpAwAiIKcgICADrSIhVhsiC08EQAJAAkAgAyALa0EwTwRAIAggFCgCBCALaiIDQShqKQAANwMAIAkgA0EgaikAADcDACAEIANBGGopAAA3AwAgDSADQRBqKQAANwMAIA4gA0EIaikAADcDACAFIAMpAAA3AwBBBCEDDAELQeDZwAApAgAiI0IIiCEiICOnIQMgI0L/AYNCBFINAQsgIEIwfCEhCyAGICE3AwACQCADQf8BcUEERgRAIAVBMDYCOCAFIAU2AjQjAEEgayIDJAAgBUE8aiILAn8CQCALAn8gBUE0aiIGKAIEIglBA00EQCADQQA6AAsgA0ElOwAJIANBADYCDCADQQE6AAggCyADQQhqEPsCNgIEDAILIAYgCUEEayIENgIEIAYgBigCACIIQQRqNgIAIARBA00EQCADQQA6AAsgA0ElOwAJIANBADYCDCADQQE6AAggCyADQQhqEPsCNgIEDAILIAgqAAAhJyAGIAlBCGsiBDYCBCAGIAhBCGo2AgAgBEEDTQRAIANBADoACyADQSU7AAkgA0EANgIMIANBAToACCALIANBCGoQ+wI2AgQMAgsgCCgABCEOIAYgCUEMayIENgIEIAYgCEEMajYCACAEQQNNBEAgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIAsgA0EIahD7AjYCBAwCCyAIKAAIIRQgBiAJQRBrIgQ2AgQgBiAIQRBqNgIAIARBBEkEQCADQQA6AAsgA0ElOwAJIANBADYCDCADQQE6AAggCyADQQhqEPsCNgIEDAILIAgoAAwhDCAGIAlBFGsiBDYCBCAGIAhBFGo2AgAgBEEESQRAIANBADoACyADQSU7AAkgA0EANgIMIANBAToACCALIANBCGoQ+wI2AgQMAgsgCCoAECEmIAYgCUEYayIENgIEIAYgCEEYajYCACAEQQNNBEAgA0KBygA3AwggCyADQQhqEPsCNgIEDAILIAgqABQhKCAGIAlBHGsiBDYCBCAGIAhBHGo2AgAgBEEDTQRAIANCgcoANwMIIAsgA0EIahD7AjYCBAwCCyAIKAAYIRIgBiAJQSBrNgIEIAYgCEEgajYCACAIKAAcIRcjAEEQayIIJAAgA0EIaiIJAn8CQCAGKAIEIg1BA00EQCAIQoHKADcDCCAJIAhBCGoQ+wI2AgQMAQsgBiANQQRrIhg2AgQgBiAGKAIAIgRBBGo2AgAgGEEDTQRAIAhCgcoANwMIIAkgCEEIahD7AjYCBAwBCyAEKAAAIRggBiANQQhrIhA2AgQgBiAEQQhqNgIAIBBBA00EQCAIQoHKADcDCCAJIAhBCGoQ+wI2AgQMAQsgBCgABCEQIAYgDUEMayITNgIEIAYgBEEMajYCACAJAn8gE0EDTQRAIAhCgcoANwMIIAhBCGoQ+wIMAQsgCSAEKAAINgIMIAkgEDYCCCAJIBg2AgQgBiANQRBrNgIEIAYgBEEQajYCACAJIAQoAAw2AhBBAAwCCzYCBAtBAQs2AgAgCEEQaiQAIAMoAgwiBiADKAIIDQAaIAsgAykCEDcCCCALQRBqIANBGGooAgA2AgAgCyAXNgIwIAsgEjYCLCALICg4AiggCyAmOAIkIAsgDDYCICALIBQ2AhwgCyAONgIYIAsgJzgCFCALIAY2AgRBAAwCCzYCBAtBAQs2AgAgA0EgaiQAIAUoAkAhAyAFKAI8RQRAIAcgBSkCRDcCCCAHQTBqIAVB7ABqKAIANgIAIAdBKGogBUHkAGopAgA3AgAgB0EgaiAFQdwAaikCADcCACAHQRhqIAVB1ABqKQIANwIAIAdBEGogBUHMAGopAgA3AgAgB0EANgIAIAcgAzYCBAwCCyAFIAM2AjxBzI/AAEErIAVBPGpBvI/AAEGckMAAEKACAAsgB0EBNgIAIAcgA61C/wGDICJCCIaENwIECyAFQfAAaiQADAELIAVBADYCTCAFQQE2AkAgBUGs2cAANgI8IAVCBDcCRCAFQTxqQdjawAAQpAMACwJAAkAgCigCKEUEQCAKQegAaiAKQcgAaigCADYCACAKIAopAkA3A2AgCioCPCEmIAoqAkwhJyAKKgJQISggCigCVCIHQQJ0IhchBSAWIBYoAggiAyAXSQR/IBcgAyIEayIFIBYoAgAgA2tLBEAgFiADIAVBBEEEEJABIBYoAgghBAsgFigCBCILIARBAnQiCGohBiAFQQJPBH8gBkEAIBcgA0F/c2pBAnQQWhogBCAFakEBayEEIAdBBHQgA0ECdGsgC2ogCGpBBGsFIAYLQQA2AgAgBEEBagUgBQs2AgggGS0ADkUEQCAKQQA2AjggCkEBNgIsIApB7JPAADYCKCAKQgQ3AjAgCkEoahCrAiEDDBMLQQAhAyAHQQBIDQICQCAHRQRAQQEhCAwBC0GF5cIALQAAGkEBIQMgB0EBEPYDIghFDQMLIBktAAwNASAKQQA2AjggCkEBNgIsIApB0JTAADYCKCAKQgQ3AjAgCkEoahCrAiEDDBELIAogCikCLDcDKCAKQShqEKIDIQMMEQtBACEDAkAgB0H/////A0sgF0H8////B0tyDQBBBCEGIBcEQEGF5cIALQAAGkEEIQMgF0EEEPYDIgZFDQEgByEbCyAmQ///f0tDAP9/RyAZLQAPIh8blSEqIAdBAnQhFCAHQQNxIQ0gB0H8////A3EhHSAHQQJrIRggB0EBayISQQNxIQ4gEkF8cSEeIBktAAkgB0EBS3EhGUHg2cAAKQIAIiBC/wGDISQgIEIIiCEiIAetISMgIKchC0EAIQkDQCAHBEAgBkEAIBcQWhoLAkACQAJAAn8CQCAfRQ0AAkACQCAKKAIgIgQoAggiAyADIAopAxgiIKcgICADrSIhVhsiBU8EQAJAAkAgByADIAVrTQRAIAQoAgQgBWohAyAHQQFHBEAgCCADIAcQOxpBBCEDDAILIAggAy0AADoAAEEEIQMMAQsgCyEDICRCBFINAQsgICAjfCEhCyAKICE3AxggA0H/AXFBBEYEQCAZRQ0CIAgtAAAhBEEBIQMgGEEDTwRAQQAhBQNAIAUgCGoiA0EBaiIMIAQgDC0AAGoiBDoAACADQQJqIgwgBCAMLQAAaiIEOgAAIANBA2oiDCAEIAwtAABqIgQ6AAAgA0EEaiIDIAQgAy0AAGoiBDoAACAeIAVBBGoiBUcNAAsgBUEBaiEDCyAORQ0DIAMgCGohAyAOIQUDQCADIAQgAy0AAGoiBDoAACADQQFqIQMgBUEBayIFDQALDAMLIAogIj4AKSAKQS9qICJCMIg8AAAgCkEtaiAiQiCIPQAAIAogAzoAKCAKQShqEKIDDAQLDBsLIAdFDQELQQAhBSASQQNJBH8gCAUgBiEDA0AgAyAFIAhqIgQtAABBEHQ2AgAgA0EEaiAEQQFqLQAAQRB0NgIAIANBCGogBEECai0AAEEQdDYCACADQQxqIARBA2otAABBEHQ2AgAgA0EQaiEDIB0gBUEEaiIFRw0ACyAFIAhqCyEDIA1FDQAgBiAFQQJ0aiEEIA0hBQNAIAQgAy0AAEEQdDYCACAEQQRqIQQgA0EBaiEDIAVBAWsiBQ0ACwsCQAJAAkAgCigCICIEKAIIIgMgAyAKKQMYIiCnICAgA60iIVYbIgVPBEACQAJAIAcgAyAFa00EQCAEKAIEIAVqIQMgB0EBRwRAIAggAyAHEDsaQQQhAwwCCyAIIAMtAAA6AABBBCEDDAELIAshAyAkQgRSDQELICAgI3whIQsgCiAhNwMYIANB/wFxQQRHBEAgCiAiPgApIApBL2ogIkIwiDwAACAKQS1qICJCIIg9AAAgCiADOgAoIApBKGoQogMMBQsgGUUNASAILQAAIQRBASEDIBhBA08EQEEAIQUDQCAFIAhqIgNBAWoiDCAEIAwtAABqIgQ6AAAgA0ECaiIMIAQgDC0AAGoiBDoAACADQQNqIgwgBCAMLQAAaiIEOgAAIANBBGoiAyAEIAMtAABqIgQ6AAAgHiAFQQRqIgVHDQALIAVBAWohAwsgDkUNAiADIAhqIQMgDiEFA0AgAyAEIAMtAABqIgQ6AAAgA0EBaiEDIAVBAWsiBQ0ACwwCCwwbCyAHRQ0BC0EAIQUgEkEDSQR/IAgFIAYhAwNAIAMgAygCACAFIAhqIgQtAABBCHRyNgIAIANBBGoiDCAMKAIAIARBAWotAABBCHRyNgIAIANBCGoiDCAMKAIAIARBAmotAABBCHRyNgIAIANBDGoiDCAMKAIAIARBA2otAABBCHRyNgIAIANBEGohAyAdIAVBBGoiBUcNAAsgBSAIagshBCANRQ0AIAYgBUECdGohAyANIQUDQCADIAMoAgAgBC0AAEEIdHI2AgAgA0EEaiEDIARBAWohBCAFQQFrIgUNAAsLAkAgCigCICIEKAIIIgMgAyAKKQMYIiCnICAgA60iIVYbIgVPBEACQAJAIAcgAyAFa00EQCAEKAIEIAVqIQMgB0EBRwRAIAggAyAHEDsaQQQhAwwCCyAIIAMtAAA6AABBBCEDDAELIAshAyAkQgRSDQELICAgI3whIQsgCiAhNwMYIANB/wFxQQRHDQEgGUUNAyAILQAAIQRBASEDIBhBA08EQEEAIQUDQCAFIAhqIgNBAWoiDCAEIAwtAABqIgQ6AAAgA0ECaiIMIAQgDC0AAGoiBDoAACADQQNqIgwgBCAMLQAAaiIEOgAAIANBBGoiAyAEIAMtAABqIgQ6AAAgHiAFQQRqIgVHDQALIAVBAWohAwsgDkUNBCADIAhqIQMgDiEFA0AgAyAEIAMtAABqIgQ6AAAgA0EBaiEDIAVBAWsiBQ0ACwwECwwZCyAKICI+ACkgCkEvaiAiQjCIPAAAIApBLWogIkIgiD0AACAKIAM6ACggCkEoahCiAwshAyAbRQ0UIAYgG0ECdEEEEKcEDBQLIAdFDQELQQAhBSASQQNJBH8gCAUgBiEDA0AgAyADKAIAIAUgCGoiBC0AAHI2AgAgA0EEaiIMIAwoAgAgBEEBai0AAHI2AgAgA0EIaiIMIAwoAgAgBEECai0AAHI2AgAgA0EMaiIMIAwoAgAgBEEDai0AAHI2AgAgA0EQaiEDIB0gBUEEaiIFRw0ACyAFIAhqCyEEIA0EQCAGIAVBAnRqIQMgDSEFA0AgAyADKAIAIAQtAAByNgIAIANBBGohAyAEQQFqIQQgBUEBayIFDQALCyAKQeAAaiAJQQJ0aioCACErQQAhAyAUIQUgBiEEA0AgKyAqIAQoAgCzlJIhJgJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAIAkOAwECAwALQfSNwABBKEGcjsAAEO0CAAsgJrwiE0H///8DcSEVIBNBgICAgHhxIQwgE0GAgID8B3EiEEGAgID8B0YEQCAVQQ12IAxBEHZyIBVBAEdBCXRyQYD4AXIhDAwICyAMQRB2IQwgEEGAgIC4BEsNAiAQQYCAgMQDTwRAIBNBDHYgE0H/3wBxQQBHcSAQQQ12IBVBDXZqQYCAAWogDHJqIQwMCAsgEEGAgICYA0kNByAVQYCAgARyIhNBHiAQQRd2IhVrdiEQIBNBHSAVayIVdkEBcQR/IBBBAyAVdEEBayATcUEAR2oFIBALIAxyIQwMBwsgJrwiE0H///8DcSEVIBNBgICAgHhxIQwgE0GAgID8B3EiEEGAgID8B0YEQCAVQQ12IAxBEHZyIBVBAEdBCXRyQYD4AXIhDAwGCyAMQRB2IQwgEEGAgIC4BEsNAiAQQYCAgMQDTwRAIBNBDHYgE0H/3wBxQQBHcSAQQQ12IBVBDXZqQYCAAWogDHJqIQwMBgsgEEGAgICYA0kNBSAVQYCAgARyIhNBHiAQQRd2IhVrdiEQIBNBHSAVayIVdkEBcQR/IBBBAyAVdEEBayATcUEAR2oFIBALIAxyIQwMBQsgJrwiE0H///8DcSEVIBNBgICAgHhxIQwgE0GAgID8B3EiEEGAgID8B0YEQCAVQQ12IAxBEHZyIBVBAEdBCXRyQYD4AXIhDAwECyAMQRB2IQwgEEGAgIC4BEsNAiAQQYCAgMQDTwRAIBNBDHYgE0H/3wBxQQBHcSAQQQ12IBVBDXZqQYCAAWogDHJqIQwMBAsgEEGAgICYA0kNAyAVQYCAgARyIhNBHiAQQRd2IhVrdiEQIBNBHSAVayIVdkEBcQR/IBBBAyAVdEEBayATcUEAR2oFIBALIAxyIQwMAwsgDEGA+AFyIQwMBAsgDEGA+AFyIQwMAgsgDEGA+AFyIQwLIANBAnRBAnIiECAWKAIIIhNJBEAgDEH//wNxIQwgFigCBCAQQQJ0agwDCyAQIBNB5I3AABCtAgALIANBAnRBAXIiECAWKAIIIhNJBEAgDEEQdCEMIBYoAgQgEEECdGoMAgsgECATQdSNwAAQrQIACyADQQJ0QQFyIhAgFigCCCITTw0BIAxB//8DcSEMIBYoAgQgEEECdGoLIhAgECgCACAMcjYCAAwBCyAQIBNBxI3AABCtAgALIANBAWohAyAEQQRqIQQgBUEEayIFDQALCyAJQQFqIglBA0cNAAsgGwRAIAYgG0ECdEEEEKcECwJAIAooAiAiBigCCCIDIAMgCikDGCIhpyAhIAOtIiBWGyIFTwRAAkACQCAHIAMgBWtNBEAgBigCBCAFaiEDIAdBAUcEQCAIIAMgBxA7GkEEIQMMAgsgCCADLQAAOgAAQQQhAwwBCyALIQMgJEIEUg0BCyAhICN8ISALIAogIDcDGCADQf8BcUEERw0HICggJ5MhKCAHRQ0GIBYoAgRBDGohAyAWKAIIIQ1BAyEEIAchCSAIIQUDQEEAIQYgJyAoIAUtAACzQwAAf0OVlJIQUiImQwAAAABcBEBDAAB/Q0MAAAAAICYQqgFDAAAQQZJDRSKRPZVDAACAP5IiJiAmQwAAAABdGyImICZDAAB/Q14bENgDIiZDAAAAAGAhBkH/AQJ/ICZDAACAT10gJkMAAAAAYHEEQCAmqQwBC0EAC0EAIAYbICZDAAB/Q14bIQYLIAQgDU8NAiAFQQFqIQUgAyADKAIAIAZyNgIAIANBEGohAyAEQQRqIQQgCUEBayIJDQALDAULDBQLIAQgDUGsjsAAEK0CAAsgAyAXQdiUwAAQ1wMACyADIAdBjJTAABDXAwALIAQgC0Gwk8AAENcDAAsgCikDGCEgCyAKKAIgIgYoAggiAyADICCnICAgA60iIVYbIgVJDQ4CQAJAIAcgAyAFa00EQCAGKAIEIAVqIQMgB0EBRwRAIAggAyAHEDsaQQQhAwwCCyAIIAMtAAA6AABBBCEDDAELIAshAyAkQgRSDQELICAgI3whIQsgCiAhNwMYIANB/wFxQQRHDQAgBwRAIBYoAgRBDGohAyAWKAIIIQ1BAyEEIAchCSAIIQUDQEEAIQYgJyAoIAUtAACzQwAAf0OVlJIQUiImQwAAAABcBEBDAAB/Q0MAAAAAICYQqgFDAAAQQZJDRSKRPZVDAACAP5IiJiAmQwAAAABdGyImICZDAAB/Q14bENgDIiZDAAAAAGAhBkH/AQJ/ICZDAACAT10gJkMAAAAAYHEEQCAmqQwBC0EAC0EAIAYbICZDAAB/Q14bIQYLIAQgDU8NAyAFQQFqIQUgAyADKAIAIAZBCHRyNgIAIANBEGohAyAEQQRqIQQgCUEBayIJDQALIAopAxghIQsgCigCICIGKAIIIgMgAyAhpyAhIAOtIiBWGyIFSQ0OAkACQCAHIAMgBWtNBEAgBigCBCAFaiEDIAdBAUcEQCAIIAMgBxA7GkEEIQMMAgsgCCADLQAAOgAAQQQhAwwBCyALIQMgJEIEUg0BCyAhICN8ISALIAogIDcDGCADQf8BcUEERw0AAn8gB0UEQEEBIQVBACEEQQAMAQsgFigCBEEMaiEDIBYoAgghDUEDIQQgByEJIAghBQNAQQAhBiAnICggBS0AALNDAAB/Q5WUkhBSIiZDAAAAAFwEQEMAAH9DQwAAAAAgJhCqAUMAABBBkkNFIpE9lUMAAIA/kiImICZDAAAAAF0bIiYgJkMAAH9DXhsQ2AMiJkMAAAAAYCEGQf8BAn8gJkMAAIBPXSAmQwAAAABgcQRAICapDAELQQALQQAgBhsgJkMAAH9DXhshBgsgBCANTw0EIAVBAWohBSADIAMoAgAgBkEQdHI2AgAgA0EQaiEDIARBBGohBCAJQQFrIgkNAAtBACEDIAdBA2wiBEEASA0EIAdFBEBBASEFQQAMAQtBheXCAC0AABpBASEDIARBARD2AyIFRQ0EIAQLIQ0gCigCICIJKAIIIgMgAyAKKQMYIiGnICEgA60iIFYbIgZJDQ4CQAJAIAcgAyAGa00EQCAJKAIEIAZqIQMgB0EBRwRAIAggAyAHEDsaQQQhAwwCCyAIIAMtAAA6AABBBCEDDAELIAshAyAkQgRSDQELICEgI3whIAsgCiAgNwMYAkACQCADQf8BcUEERw0AIAcEQEEAIQMgByEJIAghBgNAIAMgBE8NAyADIAVqIAYtAAA6AAAgA0EDaiEDIAZBAWohBiAJQQFrIgkNAAsgCikDGCEgCyAKKAIgIgkoAggiAyADICCnICAgA60iIVYbIgZJDRACQAJAIAcgAyAGa00EQCAJKAIEIAZqIQMgB0EBRwRAIAggAyAHEDsaQQQhAwwCCyAIIAMtAAA6AABBBCEDDAELIAshAyAkQgRSDQELICAgI3whIQsgCiAhNwMYIANB/wFxQQRHDQAgBwRAIAchCUEBIQMgCCEGA0AgAyAETw0DIAMgBWogBi0AADoAACADQQNqIQMgBkEBaiEGIAlBAWsiCQ0ACyAKKQMYISELIAooAiAiCSgCCCIDIAMgIacgISADrSIgVhsiBkkNEAJAAkAgByADIAZrTQRAIAkoAgQgBmohAyAHQQFHBEAgCCADIAcQOxpBBCEDDAILIAggAy0AADoAAEEEIQMMAQsgCyEDICRCBFINAQsgISAjfCEgCyAKICA3AxggA0H/AXFBBEcNAAJAAkAgBwRAQQAhBkECIQMDQCADIARPDQUgAyAFaiAGIAhqLQAAOgAAIANBA2ohAyAHIAZBAWoiBkcNAAtBACEDQQAhBgNAIAMgBE8NAiADQQFqIARPDQMgA0ECaiAETw0KIAMgBWoiCSwAACEOIAlBAmosAAAhGyAKIAlBAWosAACyQwAA/kKVIic4AiwgCiAOskMAAP5ClSImOAIoIAogG7JDAAD+QpUiKDgCMCAKQwAAgD8gJiAmlCAnICeUkiAoICiUkpNDAAAAABDVA5E4AjRDAAAAACErIApBKGoiCSoCCCEoIAkqAgQhKiAJKgIAIScgCSoCDCImQwAAAABdBEAgJowhJiAojCEoICqMISogJ4whJwtDAACAPyEsAn0CQCAmvCIOQf////8HcSIJQf////sDTQRAIAlBgICA+ANPBEAgDkEATgRAQwAAgD8gJpNDAAAAP5QiJpEiKSAmICYgJkNr0w28lEO6Ey+9kpRDdaoqPpKUICZDruU0v5RDAACAP5KVlCAmICm8QYBgcb4iJiAmlJMgKSAmkpWSICaSIiYgJpIMBAtD2g/JPyAmQwAAgD+SQwAAAD+UIiaRIikgKSAmICYgJkNr0w28lEO6Ey+9kpRDdaoqPpKUICZDruU0v5RDAACAP5KVlENoIaKzkpKTIiYgJpIhKQwCC0PaD8k/ISkgCUGBgICUA0kNAUNoIaIzICYgJpQiKSApIClDa9MNvJRDuhMvvZKUQ3WqKj6SlCApQ67lNL+UQwAAgD+SlSAmlJMgJpND2g/JP5IMAgtDAAAAACAmICaTlSAJQYCAgPwDRw0BGkMAAAAAQ9oPSUAgDkEAThsMAQsgKQshLUMAAAAAISYgKCAolCAqICqUICcgJ5SSkpEiKUO9N4Y1XUUEQCAoICmVISsgJyAplSEsICogKZUhJgsgJiAriyAmiyAsi5KSIieVISYgLCAnlSEoAkAgK0MAAAAAYARAICYhJwwBC0MAAIA/ICiLk0MAAMB/QwAAgD8gJpggJiAmXBuUISdDAACAPyAmi5NDAADAf0MAAIA/ICiYICggKFwblCEoCwJAIAZBAnQiG0ECciIOIBYoAggiCUkEQEH/AQJ/ICdDAAAAP5RDAAAAP5JDAAB/Q5QQ2AMiJ0MAAIBPXSAnQwAAAABgIhRxBEAgJ6kMAQtBAAtBACAUGyAnQwAAf0NeG0EYdCEUIChDAAAAP5RDAAAAP5JDAAB/Q5QQ2AMiJ0MAAAAAYCEMIBYoAgQiFyAOQQJ0aiIOIA4oAgBB/wECfyAnQwAAgE9dICdDAAAAAGBxBEAgJ6kMAQtBAAtBACAMGyAnQwAAf0NeG0EQdCAUcnI2AgAgCSAbQQNyIg5LBEACf0MAAH9DQwAAAAAgLSAtkkOKVqJClBDYAyInICdDAAAAAF0bIicgJ0MAAH9DXhsiJ0MAAIBPXSAnQwAAAABgIglxBEAgJ6kMAQtBAAshGyAXIA5BAnRqIg4gDigCAEH/ASAbQQAgCRsgJ0MAAH9DXhtBGHRyNgIADAILIA4gCUHsjsAAEK0CAAsgDiAJQdyOwAAQrQIACyADQQNqIQMgBkEBaiIGIAdHDQALCyANBEAgBSANQQEQpwQLIAooAiAiBigCCCIDIAMgCikDGCIlpyAlIAOtIiFWGyIFSQ0SAkACQCAHIAMgBWtNBEAgBigCBCAFaiEDAkAgB0EBRwRAIAggAyAHEDsaDAELIAggAy0AADoAAAtBBCEDQgAhIAwBCyAiISAgCyEDICRCBFINAQsgIyAlfCEhCyAKICE3AxggA0H/AXFBBEYEQCAZBEAgEkEDcSEGIAgtAAAhBEEBIQMgGEEDTwRAIBJBfHEhCUEAIQUDQCAFIAhqIgNBAWoiDSAEIA0tAABqIgQ6AAAgA0ECaiINIAQgDS0AAGoiBDoAACADQQNqIg0gBCANLQAAaiIEOgAAIANBBGoiAyAEIAMtAABqIgQ6AAAgCSAFQQRqIgVHDQALIAVBAWohAwsgBkUNCyADIAhqIQMDQCADIAQgAy0AAGoiBDoAACADQQFqIQMgBkEBayIGDQALDAsLIAcNCgwLCyAKICA+ACkgCkEvaiAgQjCIPAAAIApBLWogIEIgiD0AACAKIAM6ACggCkEoahCiAyEDDA8LIAMgBEGYlcAAEK0CAAsgA0EBaiAEQaiVwAAQrQIACyAKICI+ACkgCkEvaiAiQjCIPAAAIApBLWogIkIgiD0AACAKIAM6ACggCkEoahCiAyEDIA1FDQwgBSANQQEQpwQMDAsgAyAEQciVwAAQrQIACyAKICI+ACkgCkEvaiAiQjCIPAAAIApBLWogIkIgiD0AACAKIAM6ACggCkEoahCiAyEDDAoLIAQgDUG8jsAAEK0CAAsgBCANQcyOwAAQrQIACyADIARB6JTAABDXAwALIANBAmogBEG4lcAAEK0CAAsgFigCBCEDIBYoAgghCUEAIQQgByEGIAghBQNAIAQgCU8NAiADIAMoAgAgBS0AAEEYdHI2AgAgA0EQaiEDIARBBGohBCAFQQFqIQUgBkEBayIGDQALCyAKKAIgIgYoAggiAyADIAopAxgiIKcgICADrSIhVhsiBU8EQAJAAkAgByADIAVrTQRAIAYoAgQgBWohAyAHQQFHBEAgCCADIAcQOxpBBCEDDAILIAggAy0AADoAAEEEIQMMAQsgCyEDICRCBFINAQsgICAjfCEhCyAKICE3AxggA0H/AXFBBEcNBAJAIBlFBEAgBw0BDAULIBJBA3EhBiAILQAAIQRBASEDIBhBA08EQCASQXxxIQlBACEFA0AgBSAIaiIDQQFqIg0gBCANLQAAaiIEOgAAIANBAmoiDSAEIA0tAABqIgQ6AAAgA0EDaiINIAQgDS0AAGoiBDoAACADQQRqIgMgBCADLQAAaiIEOgAAIAkgBUEEaiIFRw0ACyAFQQFqIQMLIAZFDQAgAyAIaiEDA0AgAyAEIAMtAABqIgQ6AAAgA0EBaiEDIAZBAWsiBg0ACwsgFigCBCEDIBYoAgghCUEAIQQgByEGIAghBQNAIAQgCU8NAyADIAMoAgAgBS0AAHI2AgAgA0EQaiEDIARBBGohBCAFQQFqIQUgBkEBayIGDQALDAMLDAcLIAQgCUGsj8AAEK0CAAsgBCAJQfyOwAAQrQIACwJAAkACQAJAAkACQAJAAkACQCAKKAIgIgYoAggiAyADIAopAxgiIKcgICADrSIhVhsiBU8EQAJAAkAgByADIAVrTQRAIAYoAgQgBWohAyAHQQFHBEAgCCADIAcQOxpBBCELDAILIAggAy0AADoAAEEEIQsMAQsgJEIEUg0BCyAgICN8ISELIAogITcDGCALQf8BcUEERwRAIAshAwwLCyAZRQ0BIBJBA3EhBiAILQAAIQRBASEDIBhBA08EQCASQXxxIQtBACEFA0AgBSAIaiIDQQFqIgkgBCAJLQAAaiIJOgAAIANBAmoiBCAJIAQtAABqIgk6AAAgA0EDaiIEIAkgBC0AAGoiCToAACADQQRqIgMgCSADLQAAaiIEOgAAIAsgBUEEaiIFRw0ACyAFQQFqIQMLIAZFDQIgAyAIaiEDA0AgAyAEIAMtAABqIgQ6AAAgA0EBaiEDIAZBAWsiBg0ACwwCCwwNCyAHRQ0BCyAWKAIEIQMgFigCCCELQQAhBCAHIQYgCCEFA0AgBCALTw0CIAMgAygCACAFLQAAQQh0cjYCACADQRBqIQMgBEEEaiEEIAVBAWohBSAGQQFrIgYNAAsLIAooAiAiBigCCCIDIAMgCikDGCIgpyAgIAOtIiFWGyIFSQ0KAkACQCAHIAMgBWtNBEAgBigCBCAFaiEDIAdBAUcEQCAIIAMgBxA7GkEEIQMMAgsgCCADLQAAOgAAQQQhAwwBC0Hg2cAAKQIAIiRCCIghIiAkpyEDICRC/wGDQgRSDQELICAgI3whIQsgCiAhNwMYIANB/wFxQQRHDQYgGUUNASASQQNxIQYgCC0AACEEQQEhAyAYQQNPBEAgEkF8cSELQQAhBQNAIAUgCGoiA0EBaiIJIAQgCS0AAGoiCToAACADQQJqIgQgCSAELQAAaiIJOgAAIANBA2oiBCAJIAQtAABqIgk6AAAgA0EEaiIDIAkgAy0AAGoiBDoAACALIAVBBGoiBUcNAAsgBUEBaiEDCyAGRQ0CIAMgCGohAwNAIAMgBCADLQAAaiIEOgAAIANBAWohAyAGQQFrIgYNAAsMAgsgBCALQYyPwAAQrQIACyAHRQ0BCyAWKAIEIQMgFigCCCELQQAhBCAHIQYgCCEFA0AgBCALTw0CIAMgAygCACAFLQAAQRB0cjYCACADQRBqIQMgBEEEaiEEIAVBAWohBSAGQQFrIgYNAAsLIAooAhQgCigCGEcNASAHBEAgCCAHQQEQpwQLIAooAgwiAwRAIAooAhAgA0EBEKcEC0EAIQMMBQsgBCALQZyPwAAQrQIACyAKQQA2AjggCkEBNgIsIApBkJXAADYCKCAKQgQ3AjAgCkEoahCrAiEDDAELIAogIj4AKSAKQS9qICJCMIg8AAAgCkEtaiAiQiCIPQAAIAogAzoAKCAKQShqEKIDIQMLIAdFDQAgCCAHQQEQpwQLIAooAgwiBUUNACAKKAIQIAVBARCnBAsgCkHwAGokACADDAELIApBADYCOCAKQQE2AiwgCkGs2cAANgIoIApCBDcCMCAKQShqQdjawAAQpAMACyIDRQRAIBogESkCIDcCACAaQRBqIBEpAgg3AgAgGkEIaiARQShqKQIANwIAIBpBGGogEUEQaigCADYCAAwBCyAaQYCAgIB4NgIQIBogAzYCACARKAIIIgNFDQAgESgCDCADQQJ0QQQQpwQLIBFB4ABqJAAMAQtBCCAIQZyRwAAQqgQACwJAAkACQCAPKAIoIgVBgICAgHhHBEAgDygCLCEGAn8gDygCMCILQQJ2IgMgAUUNABogAyACRQ0AGiABIAMgAW4iCCADIAEgCGxHaiIIIAIgAiAISxtsIgFFDQIgAyABbiICIAMgASACbEdqIAFsC0ECdBAWIQAQaSIBIAAmASAPIAE2AmQgDyAPQeQAakEAIAsQqQQ2AmggD0HoAGogBiALEOkBEAQhABBpIgEgACYBIA8gATYCbCAPQfSFwABBCRDbAyIBNgJYIAO4EAEhABBpIgIgACYBIA8gAjYCNCAPQRhqIA9B7ABqIA9B2ABqIA9BNGoQ3QIgDy0AGA0CIAJBhAFPBEAgAhDGASAPKAJYIQELIAFBhAFPBEAgARDGAQsgD0H9hcAAQQwQ2wMiATYCWCAPIA8oAmQiAjYCNCAPQRhqIA9B7ABqIA9B2ABqIA9BNGoQ3QIgDy0AGA0DIAJBhAFPBEAgAhDGASAPKAJYIQELIAFBhAFPBEAgARDGAQsgDygCbCAPKAJoIgJBhAFPBEAgAhDGAQsgBQRAIAYgBUECdEEEEKcECyAPKAIMIgIEQCAcIAJBARCnBAsgDygCCCICQYQBTwRAIAIQxgELIA9B8ABqJAAMBAsgDyAPKAIYNgJsIA9BATYCRCAPQeiGwAA2AkAgD0IBNwJMIA8gD0HsAGqtQoCAgIAghDcDWCAPIA9B2ABqNgJIIA9BNGogD0FAaxDQASAPKAI4IA8oAjwQyAQACyMAQSBrIgEkACABQQA2AhggAUEBNgIMIAFBmNnCADYCCCABQgQ3AhAgAUEIakHkhcAAEKQDAAsgDyAPKAIcNgJAQZyGwABBKyAPQUBrQYyGwABB2IbAABCgAgALIA8gDygCHDYCQEGchsAAQSsgD0FAa0GMhsAAQciGwAAQoAIACyIBJQEgARDGAQvvDgEOfxBpIgQgASYBEGkiBSACJgEjAEEgayIKJAAgCiAFNgIIIAogBDYCBCAKIAA2AgAgCiAKQQRqIgAoAgAQ2wQ2AgwgCiAKQQhqNgIcIAogCjYCGCAKIAA2AhQgCiAKQQxqNgIQIApBEGohACMAQUBqIggkAAJAAkACQAJAQQBBhIfAACgCABEEACINBEAgDSgCAEUEQCAAKAIMIQ8gACgCCCEHIA1BfzYCACAAKAIEIAAoAgAoAgAiBiANQQRqIgUoAggiBEsEQCAGIAQiAGsiCSAFKAIAIABrSwRAIAUgACAJQQJBAhCPASAFKAIIIQALIAUoAgQiDiAAQQF0aiEDIAlBAk8EQCADQQAgBEF/cyAGakEBdBBaGiAAIAZqQQF0IARBAXRrIA5qQQJrIQMgACAJakEBayEACyADQQA7AQAgBSAAQQFqNgIICyAFKAIUIgQgBkkEQCAGIAQiAGsiCSAFKAIMIABrSwRAIAVBDGogACAJQQRBBBCPASAFKAIUIQALIAUoAhAiDiAAQQJ0aiEDIAlBAk8EQCADQQAgBEF/cyAGakECdBBaGiAAIAZqQQJ0IARBAnRrIA5qQQRrIQMgACAJakEBayEACyADQQA2AgAgBSAAQQFqNgIUCyAFKAIgIgBBgPgBTQRAIAAhBEGB+AEgAGsiAyAFKAIYIABrSwRAIAVBGGogACADQQRBBBCPASAFKAIgIQQLIAUoAhwiBiAEQQJ0IglqIQMgAEGA+AFHBH8gA0EAQYDgByAAQQJ0IgNrEFoaIAQgAGtBgPgBaiEEIAkgA2sgBmpBgOAHagUgAwtBADYCACAFIARBAWo2AiALKAIAJQFBACAHKAIAEBUhARBpIgAgASYBIAggADYCDCAHKAIAIgQgDSgCDCIASw0CIA0oAgghCSMAQSBrIgAkACAAIAhBDGoiDCgCABDbBCIDNgIAIAAgBDYCBCADIARHBEAgAEEANgIIIAAgAEEEaiAAQQhqEIwDAAsQ7QMiAxDcAyIGJQEQCSEBEGkiBCABJgEgBkGEAU8EQCAGEMYBCyAEJQEgDCgCACUBIAlBAXYQCiAEQYQBTwRAIAQQxgELIANBhAFPBEAgAxDGAQsgAEEgaiQAIAcoAgAhDEEAIQcjAEFAaiIGJAACQCAMIAUoAggiAE0EQCAFKAIEIQQgBUEANgIgIAUoAhhBgPgBTQRAIAVBGGpBAEGB+AFBBEEEEI8BIAUoAiAhBwsgBSgCHCIJIAdBAnRqQQBBgOAHEFogBSAHQYH4AWoiDjYCIEGA4AdqQQA2AgACQCAMBEAgDEEBdCEDIAQhAANAIAAvAQAiC0GA+AFJBEAgCyAOTw0DIAkgC0ECdGoiCyALKAIAQQFqNgIACyAAQQJqIQAgA0ECayIDDQALCyAJIA5BAnRqQQhrIgAoAgAhAyAAQQA2AgAgBiADNgIIIAAgCUcEQCAHQQFrQQNxIgcEQANAIABBBGsiACgCACELIAAgAzYCACAGIAMgC2oiAzYCCCAHQQFrIgcNAAsLIABBEGshAANAIABBDGoiBygCACELIAcgAzYCACAGIAMgC2oiAzYCCCAAQQhqIgcoAgAhCyAHIAM2AgAgBiADIAtqIgM2AgggAEEEaiIHKAIAIQsgByADNgIAIAYgAyALaiIDNgIIIAAoAgAhByAAIAM2AgAgBiADIAdqIgM2AgggACAJRiAAQRBrIQBFDQALCyAMRQ0CIAxBAXQhByAFKAIQIRAgBSgCFCEMQQAhAANAIAQvAQAiBUGA+AFJBEACQCAFIA5JBEAgCSAFQQJ0aiIFKAIAIgsgDEkNASALIAxBmIXAABCtAgALIAUgDkGIhcAAEK0CAAsgECALQQJ0aiAANgIAIAUgBSgCAEEBajYCAAsgBEECaiEEIABBAWohACAHQQJrIgcNAAsMAgsgCyAOQaiFwAAQrQIACyAMIABB+ITAABCrBAALIAMgCSgCAEYEf0EABSAGQQI2AhwgBkHYhMAANgIYIAZCAjcCJCAGIAmtQoCAgIAQhDcDOCAGIAZBCGqtQoCAgIAQhDcDMCAGIAZBMGo2AiAgBkEMaiIAIAZBGGoQ0AEgABChAyEDQQELIQAgCCADNgIEIAggADYCACAGQUBrJAAgCCgCBCEAIAgoAgANAyAARQ0FIA0oAhgiBCAASQ0EIA0oAhQhBSAIIA9BACAAEKkEIgQ2AiAgCEEgaiAFIAAQ6QEgBEGEAUkNBSAEEMYBDAULENMCAAsQ0gIACyAEIABBqIvAABCrBAALIAggADYCECAIQQE2AiQgCEHEisAANgIgIAhCATcCLCAIIAhBEGqtQoCAgIAghDcDOCAIIAhBOGo2AiggCEEUaiAIQSBqENEBIAgoAhggCCgCHBDIBAALIAAgBEG4i8AAEKsEAAsgCCgCDCIEQYQBTwRAIAQQxgELIA0gDSgCAEEBajYCACAIQUBrJAAgCigCCCIEQYQBTwRAIAQQxgELIAooAgQiBEGEAU8EQCAEEMYBCyAKQSBqJAAgAAsaAQF/IAAoAgAiAQRAIAAoAgQgAUEBEKcECwsaAQF/IAAoAgQiAQRAIAAoAgAgAUEBEKcECwscACAAKAIAIgAoAgAgASAAQQRqKAIAKAIMEQAACxQAIAEgASAAIAAgAV0bIAAgAFwbCxoBAW8gACUBIAEgAhAMIQMQaSIAIAMmASAAC0MAIABFBEAjAEEgayIAJAAgAEEANgIYIABBATYCDCAAQfi+wgA2AgggAEIENwIQIABBCGogAhCkAwALIAAgARDTBAALGAAgALxBgICAgHhxQf////cDcr4gAJKPCxUAIAAoAgAiAEGEAU8EQCAAEMYBCwscACAAQQA2AhAgAEIANwIIIABCgICAgMAANwIACxYBAW8gACABEAAhAhBpIgAgAiYBIAALFgEBbyAAJQEQBSEBEGkiACABJgEgAAsWAQFvIAAlARAGIQEQaSIAIAEmASAACxYAIABBtIHAADYCBCAAIAFBHGo2AgAL2gYBBn8CfwJAAkACQAJAAkAgAEEEayIFKAIAIgZBeHEiBEEEQQggBkEDcSIHGyABak8EQCAHQQAgAUEnaiIJIARJGw0BAkACQCACQQlPBEAgAiADEGUiCA0BQQAMCQsgA0HM/3tLDQFBECADQQtqQXhxIANBC0kbIQECQCAHRQRAIAFBgAJJIAQgAUEEcklyIAQgAWtBgYAIT3INAQwJCyAAQQhrIgIgBGohBwJAAkACQAJAIAEgBEsEQCAHQdTowgAoAgBGDQQgB0HQ6MIAKAIARg0CIAcoAgQiBkECcQ0FIAZBeHEiBiAEaiIEIAFJDQUgByAGEHUgBCABayIDQRBJDQEgBSABIAUoAgBBAXFyQQJyNgIAIAEgAmoiASADQQNyNgIEIAIgBGoiAiACKAIEQQFyNgIEIAEgAxBYDA0LIAQgAWsiA0EPSw0CDAwLIAUgBCAFKAIAQQFxckECcjYCACACIARqIgEgASgCBEEBcjYCBAwLC0HI6MIAKAIAIARqIgQgAUkNAgJAIAQgAWsiA0EPTQRAIAUgBkEBcSAEckECcjYCACACIARqIgEgASgCBEEBcjYCBEEAIQNBACEBDAELIAUgASAGQQFxckECcjYCACABIAJqIgEgA0EBcjYCBCACIARqIgIgAzYCACACIAIoAgRBfnE2AgQLQdDowgAgATYCAEHI6MIAIAM2AgAMCgsgBSABIAZBAXFyQQJyNgIAIAEgAmoiASADQQNyNgIEIAcgBygCBEEBcjYCBCABIAMQWAwJC0HM6MIAKAIAIARqIgQgAUsNBwsgAxAeIgFFDQEgASAAQXxBeCAFKAIAIgFBA3EbIAFBeHFqIgEgAyABIANJGxA7IAAQPgwICyAIIAAgAyABIAEgA0sbEDsaIAUoAgAiAkF4cSIDIAFBBEEIIAJBA3EiAhtqSQ0DIAJBACADIAlLGw0EIAAQPgsgCAwGC0H9lMIAQS5BrJXCABDtAgALQbyVwgBBLkHslcIAEO0CAAtB/ZTCAEEuQayVwgAQ7QIAC0G8lcIAQS5B7JXCABDtAgALIAUgASAGQQFxckECcjYCACABIAJqIgIgBCABayIBQQFyNgIEQczowgAgATYCAEHU6MIAIAI2AgAgAAwBCyAACwsWACAAQdy2wAA2AgQgACABQSBqNgIACxYAIABBmLfAADYCBCAAIAFBHGo2AgALFgAgAEHUt8AANgIEIAAgAUEcajYCAAsWACAAQZC4wAA2AgQgACABQRxqNgIACxkAIAEoAhxBlMHCAEEOIAEoAiAoAgwRAgALFgAgACgCHCABIAIgACgCICgCDBECAAvzAQEDf0Hw5MIAKAIARQRAAkACQAJAAkAgAEUNACAAKAIAIABBADYCAEEBcUUNACAAKAIQIQEgACgCDCECIAAoAgghAyAAKAIEIQAMAQtBACEAQYXlwgAtAAAaQYCAECEBQYCAECEDQYCAwABBBBD2AyICRQ0BC0GA5cIAIAE2AgBB9OTCACAANgIAQfzkwgAoAgAhAUH85MIAIAI2AgBB+OTCACgCACEAQfjkwgAgAzYCAEHw5MIAKAIAQfDkwgBBATYCAEUgAEVyRQRAIAEgAEECdEEEEKcECwwBC0EEQYCAwABB1IXAABDXAwALC0H05MIAC/sCAQl/QcTkwgAoAgBFBEACfwJAIABFDQAgACgCACAAQQA2AgBBAXFFDQAgACgCKCEBIAAoAiQhByAAKAIgIQIgACgCHCEDIAAoAhghCCAAKAIUIQQgACgCECEFIAAoAgwhCSAAKAIIIQYgACgCBAwBC0EEIQdBACEBQQQhCEEEIQlBAAshAEHs5MIAIAE2AgBB4OTCACADNgIAQdTkwgAgBTYCAEHI5MIAIAA2AgBB6OTCACgCACEFQejkwgAgBzYCAEHk5MIAKAIAIQBB5OTCACACNgIAQdzkwgAoAgAhAUHc5MIAIAg2AgBB2OTCACgCACECQdjkwgAgBDYCAEHQ5MIAKAIAIQRB0OTCACAJNgIAQczkwgAoAgAhA0HM5MIAIAY2AgBBxOTCACgCACEGQcTkwgBBATYCAAJAIAZFDQAgAwRAIAQgA0ECdEEEEKcECyACBEAgASACQQJ0QQQQpwQLIABFDQAgBSAAQQJ0QQQQpwQLC0HI5MIAC/sCAQl/QZjkwgAoAgBFBEACfwJAIABFDQAgACgCACAAQQA2AgBBAXFFDQAgACgCKCEBIAAoAiQhByAAKAIgIQIgACgCHCEDIAAoAhghCCAAKAIUIQQgACgCECEFIAAoAgwhCSAAKAIIIQYgACgCBAwBC0ECIQlBBCEHQQAhAUEEIQhBAAshAEHA5MIAIAE2AgBBtOTCACADNgIAQajkwgAgBTYCAEGc5MIAIAA2AgBBvOTCACgCACEFQbzkwgAgBzYCAEG45MIAKAIAIQBBuOTCACACNgIAQbDkwgAoAgAhAUGw5MIAIAg2AgBBrOTCACgCACECQazkwgAgBDYCAEGk5MIAKAIAIQRBpOTCACAJNgIAQaDkwgAoAgAhA0Gg5MIAIAY2AgBBmOTCACgCACEGQZjkwgBBATYCAAJAIAZFDQAgAwRAIAQgA0EBdEECEKcECyACBEAgASACQQJ0QQQQpwQLIABFDQAgBSAAQQJ0QQQQpwQLC0Gc5MIACxQAIAAoAgAgASAAKAIEKAIQEQAACxQAIAAoAgAgASAAKAIEKAIMEQAACxQAIAAoAhwgASAAKAIgKAIQEQAAC9MIAQV/IwBB8ABrIgUkACAFIAM2AgwgBSACNgIIAkACQAJAAkACQAJAIAUCfyAAAn8CQCABQYECTwRAQQMgACwAgAJBv39KDQIaIAAsAP8BQb9/TA0BQQIMAgsgBSABNgIUIAUgADYCEEEBIQZBAAwCCyAALAD+AUG/f0oLQf0BaiIGaiwAAEG/f0wNASAFIAY2AhQgBSAANgIQQdDKwgAhBkEFCzYCHCAFIAY2AhggASACSSIGIAEgA0lyRQRAIAIgA0sNAiACRSABIAJNckUEQCAFQQxqIAVBCGogACACaiwAAEG/f0obKAIAIQMLIAUgAzYCICADIAEiAkkEQCADQQFqIgcgA0EDayICQQAgAiADTRsiAkkNBAJAIAIgB0YNACAHIAJrIQggACADaiwAAEG/f0oEQCAIQQFrIQYMAQsgAiADRg0AIAAgB2oiA0ECayIJLAAAQb9/SgRAIAhBAmshBgwBCyAJIAAgAmoiB0YNACADQQNrIgksAABBv39KBEAgCEEDayEGDAELIAcgCUYNACADQQRrIgMsAABBv39KBEAgCEEEayEGDAELIAMgB0YNACAIQQVrIQYLIAIgBmohAgsCQCACRQ0AIAEgAk0EQCABIAJGDQEMBwsgACACaiwAAEG/f0wNBgsgASACRg0EAn8CQAJAIAAgAmoiASwAACIAQQBIBEAgAS0AAUE/cSEGIABBH3EhAyAAQV9LDQEgA0EGdCAGciEADAILIAUgAEH/AXE2AiRBAQwCCyABLQACQT9xIAZBBnRyIQYgAEFwSQRAIAYgA0EMdHIhAAwBCyADQRJ0QYCA8ABxIAEtAANBP3EgBkEGdHJyIgBBgIDEAEYNBgsgBSAANgIkQQEgAEGAAUkNABpBAiAAQYAQSQ0AGkEDQQQgAEGAgARJGwshACAFIAI2AiggBSAAIAJqNgIsIAVBBTYCNCAFQdjLwgA2AjAgBUIFNwI8IAUgBUEYaq1CgICAgJDEAIQ3A2ggBSAFQRBqrUKAgICAkMQAhDcDYCAFIAVBKGqtQoCAgICwxACENwNYIAUgBUEkaq1CgICAgMDEAIQ3A1AgBSAFQSBqrUKAgICAEIQ3A0gMBgsgBSACIAMgBhs2AiggBUEDNgI0IAVBmMzCADYCMCAFQgM3AjwgBSAFQRhqrUKAgICAkMQAhDcDWCAFIAVBEGqtQoCAgICQxACENwNQIAUgBUEoaq1CgICAgBCENwNIDAULIAAgAUEAIAYgBBDsAwALIAVBBDYCNCAFQfjKwgA2AjAgBUIENwI8IAUgBUEYaq1CgICAgJDEAIQ3A2AgBSAFQRBqrUKAgICAkMQAhDcDWCAFIAVBDGqtQoCAgIAQhDcDUCAFIAVBCGqtQoCAgIAQhDcDSAwDCyACIAdBsMzCABCsBAALIAQQrgQACyAAIAEgAiABIAQQ7AMACyAFIAVByABqNgI4IAVBMGogBBCkAwALFAIBbwF/EBwhABBpIgEgACYBIAELEwAgAEEoNgIEIABBgIDAADYCAAsgACAAQtXs7rbz2sHXSzcDCCAAQrn13fLSq/jYETcDAAsTACAAQfCBwAA2AgQgACABNgIACxAAIAAoAgQgACgCCCABEDALEQAgACgCBCAAKAIIIAEQ1QQLEwAgAEEoNgIEIABB2IvAADYCAAshACAAQvy0pPP2z/uuxAA3AwggAELk7Puo4OKsxmo3AwALGQACfyABQQlPBEAgASAAEGUMAQsgABAeCws6AAJAAn8gAUEJTwRAIAEgABBlDAELIAAQHgsiAUUNACABQQRrLQAAQQNxRQ0AIAFBACAAEFoaCyABCxMAIABBKDYCBCAAQdiVwAA2AgALIgAgAEK9i+HvyI377t8ANwMIIABCiITn+s3+j4OKfzcDAAshACAAQoaY8YHS0uCozQA3AwggAELwgJS4o8zQ9hc3AwALIgAgAELMjMSn19CF/vgANwMIIABCtPOHgpX6kcv1ADcDAAsTACAAQZybwAA2AgQgACABNgIACxMAIABBKDYCBCAAQYy2wAA2AgALEwAgAEHMuMAANgIEIAAgATYCAAsTACAAQYi5wAA2AgQgACABNgIACxMAIABBxLnAADYCBCAAIAE2AgALEwAgAEGAusAANgIEIAAgATYCAAsTACAAQbC+wAA2AgQgACABNgIACxMAIABBKDYCBCAAQYjbwAA2AgALEwAgAEGA4cAANgIEIAAgATYCAAshACAAQqTFo/yfjvDjADcDCCAAQqqooLmusOaw6QA3AwALEAAgACgCACAAKAIEIAEQMAsRACAAKAIAIAAoAgQgARDVBAsiACAAQsuH6/rgqLu20AA3AwggAELEr9zF2tKv9bh/NwMACxMAIABBKDYCBCAAQcCFwQA2AgALEwAgAEHEicEANgIEIAAgATYCAAsgACAAQrz8k7Ko16DsTDcDCCAAQuuYqJm2gbKefzcDAAshACAAQriynYTMrpfUQjcDCCAAQu/Dv6KOjcrEoH83AwALIAAgAEKcnaLxgrvwoHU3AwggAELRqsqvpcqt8kA3AwALIQAgAEL7wqCWlfy/yHo3AwggAELmsfLlkYe/ybF/NwMACyIAIABC9auQ77TsvKaWfzcDCCAAQrHh7P30uYbLwgA3AwALIAAgAELNnq77nqC2sEE3AwggAELxps+Y0aSn/gE3AwALIAAgAEK3v8ue+N2SoEM3AwggAEKvuaX0x5vV+zA3AwALIQAgAEKWl7rs79nZo3Q3AwggAEKH+OXLhuPSwtQANwMACyEAIABC/O6Qyq7osdU1NwMIIABC2OvVj+a1zN2OfzcDAAshACAAQrzprN2Y1v7ui383AwggAEKk3Nqt0/nNwEU3AwALIQAgAELl6obQ6cP/7Xk3AwggAEL30OLk1cPQ6ad/NwMACyEAIABC5sHsgPKk3YtlNwMIIABChu7u8+efmIeefzcDAAshACAAQs7Is8mT6a+2pX83AwggAELt66KMv7HLkg83AwALIgAgAEKcrtGn56WAwMIANwMIIABC16rLiaf+wYLHADcDAAsiACAAQt3+weC9o+rogn83AwggAEKX2/aYrfP7zY5/NwMACyEAIABCgsDc4LCv07mnfzcDCCAAQpbk17fDtcOKAzcDAAshACAAQrvV0cb1jfDEkH83AwggAELVi9bpuKS4kXk3AwALIQAgAEKynOer2rGju98ANwMIIABCvfif/8L+hsNVNwMACyIAIABC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ZXJFcnJvcgAAAAAEAAAABAAAAE4AAABGcmFtZUhlYWRlckVycm9yV2luZG93U2l6ZVRvb0JpZwAAAAAEAAAABAAAAE8AAABEaWN0aW9uYXJ5RGVjb2RlRXJyb3IAAAAAAAAABAAAAAQAAABQAAAARmFpbGVkVG9SZWFkQmxvY2tIZWFkZXIAAAAAAAQAAAAEAAAAUQAAAEZhaWxlZFRvUmVhZEJsb2NrQm9keQAAAAAAAAAEAAAABAAAAFIAAABGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAAAAQAAAAEAAAAUwAAAEZTRURlY29kZXJFcnJvcgAAAAAABAAAAAQAAABUAAAARlNFVGFibGVFcnJvclNvdXJjZUlzRW1wdHlOb3RFbm91Z2hCeXRlc0ZvcldlaWdodHNnb3RfYnl0ZXNleHBlY3RlZF9ieXRlcwAAAAAAAAAEAAAABAAAAFUAAABFeHRyYVBhZGRpbmdza2lwcGVkX2JpdHNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c2hhdmVGU0VUYWJsZVVzZWRUb29NYW55Qnl0ZXN1c2VkYXZhaWxhYmxlX2J5dGVzTm90RW5vdWdoQnl0ZXNJblNvdXJjZVdlaWdodEJpZ2dlclRoYW5NYXhOdW1CaXRzTWF4Qml0c1Rvb0hpZ2gAAAAAAQAAAAEAAABWAAAAAAAAAAEAAAABAAAAVwAAAFYAAABgERAAWAAAAFkAAABaAAAAWwAAAFwAAABVbnN1cHBvcnRlZE9mZnNldG9mZnNldF9jb2RlWmVyb09mZnNldE5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzAAAAAAAEAAAABAAAAF0AAABFeHRyYUJpdHNiaXRzX3JlbWFpbmluZ01pc3NpbmdDb21wcmVzc2lvbk1vZGVNaXNzaW5nQnl0ZUZvclJsZUxsVGFibGVNaXNz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ZXJFcnJvcgAAAAAEAAAABAAAAE4AAABGcmFtZUhlYWRlckVycm9yV2luZG93U2l6ZVRvb0JpZwAAAAAEAAAABAAAAE8AAABEaWN0aW9uYXJ5RGVjb2RlRXJyb3IAAAAAAAAABAAAAAQAAABQAAAARmFpbGVkVG9SZWFkQmxvY2tIZWFkZXIAAAAAAAQAAAAEAAAAUQAAAEZhaWxlZFRvUmVhZEJsb2NrQm9keQAAAAAAAAAEAAAABAAAAFIAAABGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAAAAQAAAAEAAAAUwAAAEZTRURlY29kZXJFcnJvcgAAAAAABAAAAAQAAABUAAAARlNFVGFibGVFcnJvclNvdXJjZUlzRW1wdHlOb3RFbm91Z2hCeXRlc0ZvcldlaWdodHNnb3RfYnl0ZXNleHBlY3RlZF9ieXRlcwAAAAAAAAAEAAAABAAAAFUAAABFeHRyYVBhZGRpbmdza2lwcGVkX2JpdHNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c2hhdmVGU0VUYWJsZVVzZWRUb29NYW55Qnl0ZXN1c2VkYXZhaWxhYmxlX2J5dGVzTm90RW5vdWdoQnl0ZXNJblNvdXJjZVdlaWdodEJpZ2dlclRoYW5NYXhOdW1CaXRzTWF4Qml0c1Rvb0hpZ2gAAAAAAQAAAAEAAABWAAAAAAAAAAEAAAABAAAA/wAAAFYAAAD0IhAAAAEAAFkAAAABAQAAWwAAAAIBAABVbnN1cHBvcnRlZE9mZnNldG9mZnNldF9jb2RlWmVyb09mZnNldE5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzAAAAAAAEAAAABAAAAF0AAABFeHRyYUJpdHNiaXRzX3JlbWFpbmluZ01pc3NpbmdDb21wcmVzc2lvbk1vZGVNaXNzaW5nQnl0ZUZvclJsZUxsVGFibGVNaXNz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bEVuY29kaW5nSW52YWxpZENoYXJFbmNvZGluZwAAAAAAAAAEAAAABAAAAEEAAABJbnZhbGlkVGFnRW5jb2RpbmdEZXNlcmlhbGl6ZUFueU5vdFN1cHBvcnRlZFNpemVMaW1pdFNlcXVlbmNlTXVzdEhhdmVMZW5ndGgAAAAAAAQAAAAEAAAANQEAAEN1c3RvbU5vbmVTb21lUmF3UkxFQ29tcHJlc3NlZFJlc2VydmVkAAAAAAAABAAAAAQAAAA2AQAAVG9vTWFueUJpdHNudW1fcmVxdWVzdGVkX2JpdHNsaW1pdE5vdEVub3VnaFJlbWFpbmluZ0JpdHNyZXF1ZXN0ZWRyZW1haW5pbmdBY2NMb2dJc1plcm8AAAAAAAABAAAAAQAAADcBAABBY2NMb2dUb29CaWdnb3RtYXgAAAAAAAAEAAAABAAAAEMAAABHZXRCaXRzRXJyb3IAAAAABAAAAAQAAAA4AQAAAAAAAAQAAAAEAAAARQAAAFByb2JhYmlsaXR5Q291bnRlck1pc21hdGNoZXhwZWN0ZWRfc3Vtc3ltYm9sX3Byb2JhYmlsaXRpZXNUb29NYW55U3ltYm9scwAAAAAEAAAABAAAAEYAAABCbG9ja1NpemVUb29MYXJnZXNpemVJbnZhbGlkQmxvY2t0eXBlTnVtYmVybnVtVGFibGVJc1VuaW5pdGlhbGl6ZWQAAAAAAAAMAAAABAAAAEcAAAAAAAAADAAAAAQAAAA5AQAARwAAAHAwEAA6AQAASQAAADsBAABKAAAAPAEAAAAAAAAEAAAABAAAAEsAAABXaW5kb3dUb29CaWdXaW5kb3dUb29TbWFsbAAAAAAAAAQAAAAEAAAATAAAAEZyYW1lRGVzY3JpcHRvckVycm9yRGljdElkVG9vU21hbGxleHBlY3RlZE1pc21hdGNoZWRGcmFtZVNpemVGcmFtZVNpemVJc1plcm9JbnZhbGlkRnJhbWVTaXplTm90RW5vdWdoQnl0ZXNJbkRpY3Rpb25hcnluZWVkT2Zmc2V0VG9vQmlnb2Zmc2V0YnVmX2xlbgAAAAAABAAAAAQAAABNAAAAUmVhZEZyYW1lSGVhZGVyRXJyb3IAAAAABAAAAAQAAABOAAAARnJhbWVIZWFkZXJFcnJvcldpbmRvd1NpemVUb29CaWcAAAAABAAAAAQAAABPAAAARGljdGlvbmFyeURlY29kZUVycm9yAAAAAAAAAAQAAAAEAAAAUAAAAEZhaWxlZFRvUmVhZEJsb2NrSGVhZGVyAAAAAAAEAAAABAAAAFEAAABGYWlsZWRUb1JlYWRCbG9ja0JvZHlGYWlsZWRUb1JlYWRDaGVja3N1bU5vdFlldEluaXRpYWxpemVkRmFpbGVkVG9Jbml0aWFsaXplRmFpbGVkVG9EcmFpbkRlY29kZWJ1ZmZlckZhaWxlZFRvU2tpcEZyYW1lVGFyZ2V0VG9vU21hbGxEaWN0Tm90UHJvdmlkZWRkaWN0X2lkAAAAAAAABAAAAAQAAABTAAAARlNFRGVjb2RlckVycm9yAAAAAAAEAAAABAAAAFQAAABGU0VUYWJsZUVycm9yU291cmNlSXNFbXB0eU5vdEVub3VnaEJ5dGVzRm9yV2VpZ2h0c2dvdF9ieXRlc2V4cGVjdGVkX2J5dGVzRXh0cmFQYWRkaW5nc2tpcHBlZF9iaXRzVG9vTWFueVdlaWdodHNNaXNzaW5nV2VpZ2h0c0xlZnRvdmVySXNOb3RBUG93ZXJPZjJOb3RFbm91Z2hCeXRlc1RvRGVjb21wcmVzc1dlaWdodHNoYXZlRlNFVGFibGVVc2VkVG9vTWFueUJ5dGVzdXNlZGF2YWlsYWJsZV9ieXRlc05vdEVub3VnaEJ5dGVzSW5Tb3VyY2VXZWlnaHRCaWdnZXJUaGFuTWF4TnVtQml0c01heEJpdHNUb29IaWdoAAAAAAAAAAEAAAABAAAAVgAAAAAAAAABAAAAAQAAAD0BAABWAAAAIDQQAD4BAABZAAAAPwEAAFsAAABAAQAAVW5zdXBwb3J0ZWRPZmZzZXRvZmZzZXRfY29kZVplcm9PZmZzZXROb3RFbm91Z2hCeXRlc0Zvck51bVNlcXVlbmNlcwAAAAAABAAAAAQAAABdAAAARXh0cmFCaXRzYml0c19yZW1haW5pbmdNaXNzaW5nQ29tcHJlc3Npb25Nb2RlTWlzc2luZ0J5dGVGb3JSbGVMbFRhYmxlTWlzc2luZ0J5dGVGb3JSbGVPZlRhYmxlTWlzc2luZ0J5dGVGb3JSbGVNbFRhYmxlAAAAQQEAAAwAAAAEAAAAXwAAAEEBAAAMAAAABAAAAEIBAABfAAAAKDUQAEMBAABiAAAAOwEAAGMAAAA8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YWxzbmVlZGVkAAAAAAAABAAAAAQAAABjAQAAQml0c3RyZWFtUmVhZE1pc21hdGNocmVhZF90aWxEZWNvZGVkTGl0ZXJhbENvdW50TWlzbWF0Y2hkZWNvZGVkAGQBAAAUAAAABAAAALQAAABkAQAAFAAAAAQAAABlAQAAtAAAAMQ8EABmAQAAtwAAADsBAAC4AAAAPAEAAAAAAAAMAAAABAAAALkAAAAAAAAADAAAAAQAAABnAQAAuQAAAAA9EAA6AQAAuwAAADsBAABKAAAAPAEAAGgBAAAYAAAABAAAAL0AAABoAQAAGAAAAAQAAABpAQAAvQAAADw9EABqAQAAwAAAADsBAADBAAAAPAEAAAAAAAAMAAAABAAAAMIAAAAAAAAADAAAAAQAAABrAQAAwgAAAHg9EABsAQAAxQAAADsBAADGAAAAPAEAAElsbGVnYWxMaXRlcmFsU2VjdGlvblR5cGVOb3RFbm91Z2hCeXRlc25lZWRfYXRfbGVhc3QDAAAAAwAAAAoAAAAIAAAA8i4QAPUuEAD4LhAAAi8QAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnMAAAAIPhAAbQAAACoCAAARAAAAYW4gYXJyYXkgb2YgbGVuZ3RoIDQAAAAAAAAAAAEAAABtAQBBtP3AAAv1KAEAAABtAQAAAAAAAAgAAAAEAAAAbgEAAHN0cnVjdCBXbGcwSGVhZGVyIHdpdGggNyBlbGVtZW50cwAAAMw+EAAhAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBPbmNlIHN0YXRl+D4QADwAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvb25jZS9ub190aHJlYWRzLnJzPD8QAHwAAAA1AAAAEgAAAGZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcgDIPxAAGwAAACUAAAACAAAA5D8QAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZGVjb2RpbmcvYmxvY2tfZGVjb2Rlci5yc0J1ZyBpbiB0aGlzIGxpYnJhcnkA+D8QAGwAAACYAAAAFgAAAFdyb25nIG51bWJlciBvZiBsaXRlcmFsczogLCBTaG91bGQgaGF2ZSBiZWVuOiAAAIhAEAAaAAAAokAQABQAAAD4PxAAbAAAAK0AAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogYnl0ZXNfdXNlZF9pbl9saXRlcmFsc19zZWN0aW9uID09IHVwcGVyX2xpbWl0X2Zvcl9saXRlcmFscyBhcyB1MzIA+D8QAGwAAACzAAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHUzMjo6ZnJvbShieXRlc19pbl9saXRlcmFsc19oZWFkZXIpICsgYnl0ZXNfdXNlZF9pbl9saXRlcmFsc19zZWN0aW9uICsKICAgICAgICAgICAgdTMyOjpmcm9tKGJ5dGVzX2luX3NlcXVlbmNlX2hlYWRlcikgKyByYXcubGVuKCkgYXMgdTMyID09CiAgICBoZWFkZXIuY29udGVudF9zaXplAAD4PxAAbAAAAMEAAAAJAAAA+D8QAGwAAAC6AAAAFwAAAPg/EABsAAAAiwAAABcAAABIb3cgZGlkIHlvdSBldmVuIGdldCB0aGlzLiBUaGUgZGVjb2RlciBzaG91bGQgZXJyb3Igb3V0IGlmIGl0IGRldGVjdHMgYSByZXNlcnZlZC10eXBlIGJsb2NrAPg/EABsAAAAcAAAABEAAABmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAkEIQABsAAAAlAAAAAgAAAKxCEABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5AAAAAAQAAAAEAAAAbwEAAAAAAAAEAAAABAAAAHABAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlblJhd1JMRUNvbXByZXNzZWRSZXNlcnZlZAAAAAAAAAAEAAAABAAAAEAAAABUb29NYW55Qml0c251bV9yZXF1ZXN0ZWRfYml0c2xpbWl0AAAAAAAABAAAAAQAAABBAAAATm90RW5vdWdoUmVtYWluaW5nQml0c3JlcXVlc3RlZHJlbWFpbmluZ0FjY0xvZ0lzWmVybwAAAAABAAAAAQAAAHEBAABBY2NMb2dUb29CaWdnb3RtYXgAAAAAAAAEAAAABAAAAEMAAABHZXRCaXRzRXJyb3IAAAAABAAAAAQAAAByAQAAAAAAAAQAAAAEAAAARQAAAFByb2JhYmlsaXR5Q291bnRlck1pc21hdGNoZXhwZWN0ZWRfc3Vtc3ltYm9sX3Byb2JhYmlsaXRpZXNUb29NYW55U3ltYm9scwAAAAAEAAAABAAAAEYAAABCbG9ja1NpemVUb29MYXJnZXNpemVJbnZhbGlkQmxvY2t0eXBlTnVtYmVybnVtVGFibGVJc1VuaW5pdGlhbGl6ZWQAAAAAAAAMAAAABAAAAEcAAAAAAAAADAAAAAQAAABzAQAARwAAALREEABKAAAASQAAAHQBAABKAAAAdQEAAAAAAAAEAAAABAAAAEsAAABXaW5kb3dUb29CaWdXaW5kb3dUb29TbWFsbAAAAAAAAAQAAAAEAAAATAAAAEZyYW1lRGVzY3JpcHRvckVycm9yRGljdElkVG9vU21hbGxleHBlY3RlZE1pc21hdGNoZWRGcmFtZVNpemVGcmFtZVNpemVJc1plcm9JbnZhbGlkRnJhbWVTaXplTm90RW5vdWdoQnl0ZXNJbkRpY3Rpb25hcnluZWVkT2Zmc2V0VG9vQmlnb2Zmc2V0YnVmX2xlbgAAAAAABAAAAAQAAABTAAAARlNFRGVjb2RlckVycm9yAAAAAAAEAAAABAAAAFQAAABGU0VUYWJsZUVycm9yU291cmNlSXNFbXB0eU5vdEVub3VnaEJ5dGVzRm9yV2VpZ2h0c2dvdF9ieXRlc2V4cGVjdGVkX2J5dGVzAAAAAAAAAAQAAAAEAAAAVQAAAEV4dHJhUGFkZGluZ3NraXBwZWRfYml0c1Rvb01hbnlXZWlnaHRzTWlzc2luZ1dlaWdodHNMZWZ0b3ZlcklzTm90QVBvd2VyT2YyTm90RW5vdWdoQnl0ZXNUb0RlY29tcHJlc3NXZWlnaHRzaGF2ZUZTRVRhYmxlVXNlZFRvb01hbnlCeXRlc3VzZWRhdmFpbGFibGVfYnl0ZXNOb3RFbm91Z2hCeXRlc0luU291cmNlV2VpZ2h0QmlnZ2VyVGhhbk1heE51bUJpdHNNYXhCaXRzVG9vSGlnaAAAAAABAAAAAQAAAFYAAAAAAAAAAQAAAAEAAAB2AQAAVgAAACRHEABbAAAAWQAAAHcBAABbAAAAeAEAAFVuc3VwcG9ydGVkT2Zmc2V0b2Zmc2V0X2NvZGVaZXJvT2Zmc2V0Tm90RW5vdWdoQnl0ZXNGb3JOdW1TZXF1ZW5jZXMAAAAAAAQAAAAEAAAAXQAAAEV4dHJhQml0c2JpdHNfcmVtYWluaW5nTWlzc2luZ0NvbXByZXNzaW9uTW9kZU1pc3NpbmdCeXRlRm9yUmxlTGxUYWJsZU1pc3NpbmdCeXRlRm9yUmxlT2ZUYWJsZU1pc3NpbmdCeXRlRm9yUmxlTWxUYWJsZQAAAHkBAAAMAAAABAAAAF8AAAB5AQAADAAAAAQAAAB6AQAAXwAAACxIEAB7AQAAYgAAAHQBAABjAAAAdQEAAAAAAAAQAAAACAAAAGQAAAAAAAAAEAAAAAgAAAB8AQAAZAAAAGhIEAB9AQAAZwAAAH4BAABoAAAAfwEAAIABAAAYAAAABAAAAGoAAACAAQAAGAAAAAQAAACBAQAAagAAAKRIEACCAQAAbQAAAHQBAABuAAAAdQEAAIMBAAAIAAAABAAAAHAAAACDAQAACAAAAAQAAACEAQAAcAAAAOBIEACFAQAAcwAAAHQBAAB0AAAAdQEAAIYBAAAYAAAABAAAAHYAAACGAQAAGAAAAAQAAACHAQAAdgAAABxJEACIAQAAeQAAAHQBAAB6AAAAdQEAAIkBAAAIAAAABAAAACUAAACJAQAACAAAAAQAAAAmAAAAJQAAAFhJEAAnAAAAKAAAACkAAAAqAAAAdQEAAAAAAAAMAAAABAAAAHsAAAAAAAAADAAAAAQAAACKAQAAewAAAJRJEACLAQAAfgAAAHQBAAB/AAAAdQEAAIwBAAAUAAAABAAAAIEAAACMAQAAFAAAAAQAAACNAQAAgQAAANBJEACOAQAAhAAAAHQBAACFAAAAdQEAAAAAAAAEAAAABAAAAFIAAABSZWFkRXJyb3JGb3VuZFJlc2VydmVkQmxvY2sAAAAAAAQAAAAEAAAAhgAAAEJsb2NrVHlwZUVycm9yAAAAAAAABAAAAAQAAACHAAAAQmxvY2tTaXplRXJyb3JCbG9ja0NvbnRlbnRSZWFkRXJyb3JNYWxmb3JtZWRTZWN0aW9uSGVhZGVyZXhwZWN0ZWRfbGVucmVtYWluaW5nX2J5dGVzAAAAAAQAAAAEAAAAiAAAAERlY29tcHJlc3NMaXRlcmFsc0Vycm9yAAAAAAAEAAAABAAAAIkAAABMaXRlcmFsc1NlY3Rpb25QYXJzZUVycm9yAAAAAAAAAAQAAAAEAAAAigAAAFNlcXVlbmNlc0hlYWRlclBhcnNlRXJyb3IAAAAAAAAABAAAAAQAAACLAAAARGVjb2RlU2VxdWVuY2VFcnJvcgAAAAAABAAAAAQAAACMAAAARXhlY3V0ZVNlcXVlbmNlc0Vycm9ySW52YWxpZEZyYW1lQ29udGVudFNpemVGbGFnTWFnaWNOdW1iZXJSZWFkRXJyb3JCYWRNYWdpY051bWJlckZyYW1lRGVzY3JpcHRvclJlYWRFcnJvckludmFsaWRGcmFtZURlc2NyaXB0b3JXaW5kb3dEZXNjcmlwdG9yUmVhZEVycm9yRGljdGlvbmFyeUlkUmVhZEVycm9yRnJhbWVDb250ZW50U2l6ZVJlYWRFcnJvclNraXBGcmFtZW1hZ2ljX251bWJlcmxlbmd0aAAAAAAAAAQAAAAEAAAAjQAAAEJhZE1hZ2ljTnVtAAAAAAAEAAAABAAAAI4AAABIdWZmbWFuVGFibGVFcnJvcgAAAAAAAAAEAAAABAAAAI8AAABEZWNvZGVidWZmZXJFcnJvck5vdEVub3VnaEJ5dGVzRm9yU2VxdWVuY2V3YW50ZWQAAAAAAQAAAAEAAACQAAAAAAAAAAEAAAABAAAAjwEAAJAAAADUTBAAWwAAAJIAAAB3AQAAWwAAAHgBAAAAAAAABAAAAAQAAACTAAAAAAAAAAQAAAAEAAAAkAEAAJMAAAAQTRAASgAAAJUAAAB0AQAASgAAAHUBAACRAQAAFAAAAAQAAACXAAAAkQEAABQAAAAEAAAAkgEAAJcAAABMTRAAkwEAAJoAAAB0AQAAmwAAAHUBAAAAAAAADAAAAAQAAACcAAAAAAAAAAwAAAAEAAAAlAEAAJwAAACITRAAlQEAAJ8AAAB0AQAAoAAAAHUBAAAAAAAACAAAAAQAAAChAAAAAAAAAAgAAAAEAAAAlgEAAKEAAADETRAASgAAAKMAAAB0AQAASgAAAHUBAACXAQAAFAAAAAQAAAClAAAAlwEAABQAAAAEAAAAmAEAAKUAAAAAThAAmQEAAKgAAAB0AQAAqQAAAHUBAAAAAAAADAAAAAQAAACqAAAAAAAAAAwAAAAEAAAAmgEAAKoAAAA8ThAAmwEAAK0AAAB0AQAArgAAAHUBAABEZWNvZGVyU3RhdGVJc0ZhaWxlZEV4cGVjdGVkSGVhZGVyT2ZQcmV2aW91c0Jsb2NrAAAAAAAAAAEAAAABAAAAnAEAAHN0ZXBzb3VyY2UAAAAAAAAEAAAABAAAALAAAABEZWNvbXByZXNzQmxvY2tFcnJvck1pc3NpbmdDb21wcmVzc2VkU2l6ZU1pc3NpbmdOdW1TdHJlYW1zAAAAAAAABAAAAAQAAACxAAAASHVmZm1hbkRlY29kZXJFcnJvclVuaW5pdGlhbGl6ZWRIdWZmbWFuVGFibGVNaXNzaW5nQnl0ZXNGb3JKdW1wSGVhZGVyTWlzc2luZ0J5dGVzRm9yTGl0ZXJhbHNuZWVkZWQAAAAAAAAEAAAABAAAAJ0BAABCaXRzdHJlYW1SZWFkTWlzbWF0Y2hyZWFkX3RpbERlY29kZWRMaXRlcmFsQ291bnRNaXNtYXRjaGRlY29kZWQAngEAABQAAAAEAAAAtAAAAJ4BAAAUAAAABAAAAJ8BAAC0AAAA2E8QAKABAAC3AAAAdAEAALgAAAB1AQAAAAAAAAwAAAAEAAAAuQAAAAAAAAAMAAAABAAAAKEBAAC5AAAAFFAQAEoAAAC7AAAAdAEAAEoAAAB1AQAAogEAABgAAAAEAAAAvQAAAKIBAAAYAAAABAAAAKMBAAC9AAAAUFAQAKQBAADAAAAAdAEAAMEAAAB1AQAAAAAAAAwAAAAEAAAAwgAAAAAAAAAMAAAABAAAAKUBAADCAAAAjFAQAMYAAADFAAAAdAEAAMYAAAB1AQAASWxsZWdhbExpdGVyYWxTZWN0aW9uVHlwZU5vdEVub3VnaEJ5dGVzbmVlZF9hdF9sZWFzdAMAAAADAAAACgAAAAgAAAAlQxAAKEMQACtDEAA1QxAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAAHFEQAGoAAACyAQAAMQAAAGFzc2VydGlvbiBmYWlsZWQ6IGZpbGxlZCA8PSBzZWxmLmJ1Zi5pbml0L1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9jb3JlL3NyYy9pby9ib3Jyb3dlZF9idWYucnMAAADBURAAdAAAAB0BAAAJAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnNIUhAAgAAAAFgCAAAwAAAASW52YWxpZCBGcmFtZV9Db250ZW50X1NpemVfRmxhZzsgSXM6ICwgU2hvdWxkIGJlIG9uZSBvZjogMCwgMSwgMiwgMwDYUhAAJQAAAP1SEAAeAEG0psEAC8piwAMAAHdpbmRvd19zaXplIGJpZ2dlciB0aGFuIGFsbG93ZWQgbWF4aW11bS4gSXM6ICwgU2hvdWxkIGJlIGxvd2VyIHRoYW46IAAAADhTEAAtAAAAZVMQABgAAAAABAAAAAAAAHdpbmRvd19zaXplIHNtYWxsZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0uIElzOiAsIFNob3VsZCBiZSBncmVhdGVyIHRoYW46IJhTEAAuAAAAxlMQABoAAAABAAAAAAAAAE5vdCBlbm91Z2ggYnl0ZXMgaW4gZGljdF9pZC4gSXM6ICwgU2hvdWxkIGJlOiAAAPhTEAAhAAAAGVQQAA0AAABmcmFtZV9jb250ZW50X3NpemUgZG9lcyBub3QgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoLiBJczogADhUEAA3AAAAGVQQAA0AAABmcmFtZV9jb250ZW50X3NpemUgd2FzIHplcm9JbnZhbGlkIGZyYW1lX2NvbnRlbnRfc2l6ZS4gSXM6ICwgU2hvdWxkIGJlIG9uZSBvZiAxLCAyLCA0LCA4IGJ5dGVzAACbVBAAIAAAALtUEAAjAAAARXJyb3Igd2hpbGUgcmVhZGluZyBtYWdpYyBudW1iZXI6IAAA8FQQACIAAABSZWFkIHdyb25nIG1hZ2ljIG51bWJlcjogMHgAHFUQABsAAABFcnJvciB3aGlsZSByZWFkaW5nIGZyYW1lIGRlc2NyaXB0b3I6IAAAQFUQACYAAABFcnJvciB3aGlsZSByZWFkaW5nIHdpbmRvdyBkZXNjcmlwdG9yOiAAcFUQACcAAABFcnJvciB3aGlsZSByZWFkaW5nIGRpY3Rpb25hcnkgaWQ6IACgVRAAIwAAAEVycm9yIHdoaWxlIHJlYWRpbmcgZnJhbWUgY29udGVudCBzaXplOiDMVRAAKAAAAFNraXBwYWJsZUZyYW1lIGVuY291bnRlcmVkIHdpdGggTWFnaWNOdW1iZXIgMHggYW5kIGxlbmd0aCAgYnl0ZXP8VRAALgAAACpWEAAMAAAANlYQAAYAAABFcnJvciB3aGlsZSByZWFkaW5nIHRoZSBibG9jayBoZWFkZXJSZXNlcnZlZCBibG9jayBvY2N1cmVkLiBUaGlzIGlzIGNvbnNpZGVyZWQgY29ycnVwdGlvbiBieSB0aGUgZG9jdW1lbnRhdGlvbkVycm9yIGdldHRpbmcgYmxvY2sgdHlwZTogwlYQABoAAABFcnJvciBnZXR0aW5nIGJsb2NrIGNvbnRlbnQgc2l6ZTogAADkVhAAIgAAAEludmFsaWQgQmxvY2t0eXBlIG51bWJlci4gSXM6ICBTaG91bGQgYmUgb25lIG9mOiAwLCAxLCAyLCAzICgzIGlzIHJlc2VydmVkIHRob3VnaAAAABBXEAAeAAAALlcQADMAAAAAAAIAQmxvY2tzaXplIHdhcyBiaWdnZXIgdGhhbiB0aGUgYWJzb2x1dGUgbWF4aW11bSAgKDEyOGtiKS4gSXM6IAAAAHhXEAAvAAAAp1cQAA4AAABFcnJvciB3aGlsZSByZWFkaW5nIHRoZSBibG9jayBjb250ZW50OiAAyFcQACcAAABNYWxmb3JtZWQgc2VjdGlvbiBoZWFkZXIuIFNheXMgbGl0ZXJhbHMgd291bGQgYmUgdGhpcyBsb25nOiAgYnV0IHRoZXJlIGFyZSBvbmx5ICBieXRlcyBsZWZ0APhXEAA8AAAANFgQABQAAABIWBAACwAAAENhbid0IGRlY29kZSBuZXh0IGJsb2NrIGlmIGZhaWxlZCBhbG9uZyB0aGUgd2F5LiBSZXN1bHRzIHdpbGwgYmUgbm9uc2Vuc2VDYW4ndCBkZWNvZGUgbmV4dCBibG9jayBib2R5LCB3aGlsZSBleHBlY3RpbmcgdG8gZGVjb2RlIHRoZSBoZWFkZXIgb2YgdGhlIHByZXZpb3VzIGJsb2NrLiBSZXN1bHRzIHdpbGwgYmUgbm9uc2Vuc2VFcnJvciB3aGlsZSByZWFkaW5nIGJ5dGVzIGZvciA6IAAnWRAAHgAAAEVZEAACAAAATmVlZCAgYnl0ZXMgZnJvbSB0aGUgZGljdGlvbmFyeSBidXQgaXQgaXMgb25seSAgYnl0ZXMgbG9uZwAAWFkQAAUAAABdWRAAKgAAAIdZEAALAAAAb2Zmc2V0OiAgYmlnZ2VyIHRoYW4gYnVmZmVyOiAAAACsWRAACAAAALRZEAAVAAAAQmFkIG1hZ2ljX251bSBhdCBzdGFydCBvZiB0aGUgZGljdGlvbmFyeTsgR290OiAsIEV4cGVjdGVkOiAA3FkQAC8AAAALWhAADAAAADekMOxTcGVjaWZpZWQgd2luZG93X3NpemUgaXMgdG9vIGJpZzsgUmVxdWVzdGVkOiAsIE1heDogLFoQAC0AAABZWhAABwAAAEZhaWxlZCB0byBwYXJzZS9kZWNvZGUgYmxvY2sgYm9keTogAHBaEAAjAAAARmFpbGVkIHRvIHBhcnNlIGJsb2NrIGhlYWRlcjogAACcWhAAHgAAAEZhaWxlZCB0byByZWFkIGNoZWNrc3VtOiAAAADEWhAAGQAAAERlY29kZXIgbXVzdCBpbml0aWFsaXplZCBvciByZXNldCBiZWZvcmUgdXNpbmcgaXREZWNvZGVyIGVuY291bnRlcmVkIGVycm9yIHdoaWxlIGluaXRpYWxpemluZzogABlbEAAuAAAARGVjb2RlciBlbmNvdW50ZXJlZCBlcnJvciB3aGlsZSBkcmFpbmluZyB0aGUgZGVjb2RlYnVmZmVyOiAAUFsQADsAAABGYWlsZWQgdG8gc2tpcCBieXRlcyBmb3IgdGhlIGxlbmd0aCBnaXZlbiBpbiB0aGUgZnJhbWUgaGVhZGVyVGFyZ2V0IG11c3QgaGF2ZSBhdCBsZWFzdCBhcyBtYW55IGJ5dGVzIGFzIHRoZSBjb250ZW50c2l6ZSBvZiB0aGUgZnJhbWUgcmVwb3J0c0ZyYW1lIGhlYWRlciBzcGVjaWZpZWQgZGljdGlvbmFyeSBpZCAweCB0aGF0IHdhc250IHByb3ZpZGVkIGJ5IGFkZF9kaWN0KCkgb3IgcmVzZXRfd2l0aF9kaWN0KCkAACBcEAAnAAAAR1wQADcAAABjb21wcmVzc2VkIHNpemUgd2FzIG5vbmUgZXZlbiB0aG91Z2ggaXQgbXVzdCBiZSBzZXQgdG8gc29tZXRoaW5nIGZvciBjb21wcmVzc2VkIGxpdGVyYWxzbnVtX3N0cmVhbXMgd2FzIG5vbmUgZXZlbiB0aG91Z2ggaXQgbXVzdCBiZSBzZXQgdG8gc29tZXRoaW5nICgxIG9yIDQpIGZvciBjb21wcmVzc2VkIGxpdGVyYWxzVHJpZWQgdG8gcmV1c2UgaHVmZm1hbiB0YWJsZSBidXQgaXQgd2FzIG5ldmVyIGluaXRpYWxpemVkTmVlZCA2IGJ5dGVzIHRvIGRlY29kZSBqdW1wIGhlYWRlciwgZ290IAAAfl0QACgAAAA2VhAABgAAAE5lZWQgYXQgbGVhc3QgIGJ5dGVzIHRvIGRlY29kZSBsaXRlcmFscy4gSGF2ZTogALhdEAAOAAAAxl0QACEAAAA2VhAABgAAAFBhZGRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2Vfc2VjdGlvbiB3YXMgbW9yZSB0aGFuIGEgYnl0ZSBsb25nOiAgYml0cy4gUHJvYmFibHkgY2F1c2VkIGJ5IGRhdGEgY29ycnVwdGlvbgAAXhAARgAAAEZeEAApAAAAQml0c3RyZWFtIHdhcyByZWFkIHRpbGw6ICwgc2hvdWxkIGhhdmUgYmVlbjogAAAAgF4QABkAAACZXhAAFAAAAERpZCBub3QgZGVjb2RlIGVub3VnaCBsaXRlcmFsczogLCBTaG91bGQgaGF2ZSBiZWVuOiDAXhAAIAAAAOBeEAAUAAAAU2VxdWVuY2Ugd2FudHMgdG8gY29weSB1cCB0byBieXRlIC4gQnl0ZXMgaW4gbGl0ZXJhbHNidWZmZXI6IAAAAARfEAAiAAAAJl8QABsAAABJbGxlZ2FsIG9mZnNldDogMCBmb3VuZERvIG5vdCBzdXBwb3J0IG9mZnNldHMgYmlnZ2VyIHRoYW4gMTw8MzI7IGdvdDogAABrXxAALwAAAFJlYWQgYW4gb2Zmc2V0ID09IDAuIFRoYXQgaXMgYW4gaWxsZWdhbCB2YWx1ZSBmb3Igb2Zmc2V0c0J5dGVzdHJlYW0gZGlkIG5vdCBjb250YWluIGVub3VnaCBieXRlcyB0byBkZWNvZGUgbnVtX3NlcXVlbmNlc2NvbXByZXNzaW9uIG1vZGVzIGFyZSBub25lIGJ1dCB0aGV5IG11c3QgYmUgc2V0IHRvIHNvbWV0aGluZ05lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBsbCB0YWJsZU5lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBvZiB0YWJsZU5lZWQgYSBieXRlIHRvIHJlYWQgZm9yIFJMRSBtbCB0YWJsZUlsbGVnYWwgbGl0ZXJhbHNzZWN0aW9udHlwZS4gSXM6ICwgbXVzdCBiZSBpbjogMCwgMSwgMiwgMwAAAMRgEAAhAAAA5WAQABgAAABOb3QgZW5vdWdoIGJ5dGUgdG8gcGFyc2UgdGhlIGxpdGVyYWxzIHNlY3Rpb24gaGVhZGVyLiBIYXZlOiAsIE5lZWQ6IBBhEAA8AAAATGEQAAgAAABzb3VyY2UgbXVzdCBoYXZlIGF0IGxlYXN0ICBieXRlcyB0byBwYXJzZSBoZWFkZXI7IGdvdCAAAGRhEAAaAAAAfmEQABwAAAA2VhAABgAAAEFjY2xvZyBtdXN0IGJlIGF0IGxlYXN0IDFGb3VuZCBGU0UgYWNjX2xvZzogIGJpZ2dlciB0aGFuIGFsbG93ZWQgbWF4aW11bSBpbiB0aGlzIGNhc2U6IADNYRAAEwAAAOBhEAArAAAAVGhlIGNvdW50ZXIgKCkgZXhjZWVkZWQgdGhlIGV4cGVjdGVkIHN1bTogLiBUaGlzIG1lYW5zIGFuIGVycm9yIG9yIGNvcnJ1cHRlZCBkYXRhIAogHGIQAA0AAAApYhAAHQAAAEZiEAAqAAAAVGhlcmUgYXJlIHRvbyBtYW55IHN5bWJvbHMgaW4gdGhpcyBkaXN0cmlidXRpb246IC4gTWF4OiAyNTYAiGIQADEAAAC5YhAACgAAAFRyaWVkIHRvIHVzZSBhbiB1bmluaXRpYWxpemVkIHRhYmxlIVNvdXJjZSBuZWVkcyB0byBoYXZlIGF0IGxlYXN0IG9uZSBieXRlSGVhZGVyIHNheXMgdGhlcmUgc2hvdWxkIGJlICBieXRlcyBmb3IgdGhlIHdlaWdodHMgYnV0IHRoZXJlIGFyZSBvbmx5ICBieXRlcyBpbiB0aGUgc3RyZWFtHmMQABwAAAA6YxAAKgAAAGRjEAAUAAAATW9yZSB0aGFuIDI1NSB3ZWlnaHRzIGRlY29kZWQgKGdvdCAgd2VpZ2h0cykuIFN0cmVhbSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAAJBjEAAjAAAAs2MQACcAAABDYW4ndCBidWlsZCBodWZmbWFuIHRhYmxlIHdpdGhvdXQgYW55IHdlaWdodHNMZWZ0b3ZlciBtdXN0IGJlIHBvd2VyIG9mIHR3byBidXQgaXM6IAAZZBAAJgAAAE5vdCBlbm91Z2ggYnl0ZXMgaW4gc3RyZWFtIHRvIGRlY29tcHJlc3Mgd2VpZ2h0cy4gSXM6IAAASGQQADYAAAAZVBAADQAAAEZTRSB0YWJsZSB1c2VkIG1vcmUgYnl0ZXM6ICB0aGFuIHdlcmUgbWVhbnQgdG8gYmUgdXNlZCBmb3IgdGhlIHdob2xlIHN0cmVhbSBvZiBodWZmbWFuIHdlaWdodHMgKCkAAACQZBAAGwAAAKtkEABFAAAA8GQQAAEAAABTb3VyY2UgbmVlZHMgdG8gaGF2ZSBhdCBsZWFzdCAgYnl0ZXMsIGdvdDogAAxlEAAeAAAAKmUQAA0AAAALQ2FudCBoYXZlIHdlaWdodDogIGJpZ2dlciB0aGFuIG1heF9udW1fYml0czogAABJZRAAEgAAAFtlEAAbAAAAbWF4X2JpdHMgZGVyaXZlZCBmcm9tIHdlaWdodHMgaXM6ICBzaG91bGQgYmUgbG93ZXIgdGhhbjogAAAAiGUQACIAAACqZRAAFwAAAENhbnQgc2VydmUgdGhpcyByZXF1ZXN0LiBUaGUgcmVhZGVyIGlzIGxpbWl0ZWQgdG8gIGJpdHMsIHJlcXVlc3RlZCAgYml0c9RlEAAyAAAABmYQABEAAAAXZhAABQAAAENhbid0IHJlYWQgIGJpdHMsIG9ubHkgaGF2ZSAgYml0cyBsZWZ0AAA0ZhAACwAAAD9mEAARAAAAUGYQAAoAAAAAAAAABAAAAAQAAADJAQAAAAAAAAQAAAAEAAAAygEAAFRvb01hbnlCaXRzbnVtX3JlcXVlc3RlZF9iaXRzbGltaXQAAAAAAAAEAAAABAAAAMsBAABOb3RFbm91Z2hSZW1haW5pbmdCaXRzcmVxdWVzdGVkcmVtYWluaW5nSW52YWxpZEZyYW1lQ29udGVudFNpemVGbGFnZ290AAAAAAAABAAAAAQAAADMAQAAV2luZG93VG9vQmlnV2luZG93VG9vU21hbGwAAAAAAAAEAAAABAAAAK4BAABGcmFtZURlc2NyaXB0b3JFcnJvckRpY3RJZFRvb1NtYWxsZXhwZWN0ZWRNaXNtYXRjaGVkRnJhbWVTaXplRnJhbWVTaXplSXNaZXJvSW52YWxpZEZyYW1lU2l6ZQAAAAAEAAAABAAAAM0BAABNYWdpY051bWJlclJlYWRFcnJvcgAAAAAEAAAABAAAAM4BAABCYWRNYWdpY051bWJlckZyYW1lRGVzY3JpcHRvclJlYWRFcnJvckludmFsaWRGcmFtZURlc2NyaXB0b3JXaW5kb3dEZXNjcmlwdG9yUmVhZEVycm9yRGljdGlvbmFyeUlkUmVhZEVycm9yRnJhbWVDb250ZW50U2l6ZVJlYWRFcnJvcgAAAAAABAAAAAQAAADPAQAAU2tpcEZyYW1lbWFnaWNfbnVtYmVybGVuZ3RoQmxvY2tDb250ZW50UmVhZEVycm9yTWFsZm9ybWVkU2VjdGlvbkhlYWRlcmV4cGVjdGVkX2xlbnJlbWFpbmluZ19ieXRlcwAAAAAAAAAEAAAABAAAALIBAABEZWNvbXByZXNzTGl0ZXJhbHNFcnJvcgAAAAAABAAAAAQAAACzAQAATGl0ZXJhbHNTZWN0aW9uUGFyc2VFcnJvcgAAAAAAAAAEAAAABAAAALQBAABTZXF1ZW5jZXNIZWFkZXJQYXJzZUVycm9yAAAAAAAAAAQAAAAEAAAAtQEAAERlY29kZVNlcXVlbmNlRXJyb3IAAAAAAAQAAAAEAAAAtgEAAEV4ZWN1dGVTZXF1ZW5jZXNFcnJvck5vdEVub3VnaEJ5dGVzSW5EaWN0aW9uYXJ5bmVlZE9mZnNldFRvb0JpZ29mZnNldGJ1Zl9sZW4AAAAABAAAAAQAAAC4AQAAQmFkTWFnaWNOdW0AAAAAAAQAAAAEAAAAuQEAAEZTRVRhYmxlRXJyb3IAAAAAAAAABAAAAAQAAAC6AQAASHVmZm1hblRhYmxlRXJyb3JNaXNzaW5nQ29tcHJlc3NlZFNpemVNaXNzaW5nTnVtU3RyZWFtcwAAAAAABAAAAAQAAADBAQAAR2V0Qml0c0Vycm9yAAAAAAQAAAAEAAAAwgEAAEh1ZmZtYW5EZWNvZGVyRXJyb3JVbmluaXRpYWxpemVkSHVmZm1hblRhYmxlTWlzc2luZ0J5dGVzRm9ySnVtcEhlYWRlck1pc3NpbmdCeXRlc0ZvckxpdGVyYWxzbmVlZGVkAAAAAAAABAAAAAQAAADQAQAARXh0cmFQYWRkaW5nc2tpcHBlZF9iaXRzAAAAAAQAAAAEAAAA0QEAAAAAAAAEAAAABAAAANIBAABCaXRzdHJlYW1SZWFkTWlzbWF0Y2hyZWFkX3RpbERlY29kZWRMaXRlcmFsQ291bnRNaXNtYXRjaGRlY29kZWQAAAAAAAQAAAAEAAAAxQEAAERlY29kZWJ1ZmZlckVycm9yTm90RW5vdWdoQnl0ZXNGb3JTZXF1ZW5jZXdhbnRlZGhhdmVaZXJvT2Zmc2V0AAAAAAAABAAAAAQAAADGAQAARlNFRGVjb2RlckVycm9yVW5zdXBwb3J0ZWRPZmZzZXRvZmZzZXRfY29kZU5vdEVub3VnaEJ5dGVzRm9yTnVtU2VxdWVuY2VzRXh0cmFCaXRzYml0c19yZW1haW5pbmdNaXNzaW5nQ29tcHJlc3Npb25Nb2RlTWlzc2luZ0J5dGVGb3JSbGVMbFRhYmxlTWlzc2luZ0J5dGVGb3JSbGVPZlRhYmxlTWlzc2luZ0J5dGVGb3JSbGVNbFRhYmxlSWxsZWdhbExpdGVyYWxTZWN0aW9uVHlwZU5vdEVub3VnaEJ5dGVzAAAAAAEAAAABAAAA0wEAAG5lZWRfYXRfbGVhc3RBY2NMb2dJc1plcm9BY2NMb2dUb29CaWdtYXgAAAAABAAAAAQAAADHAQAAUHJvYmFiaWxpdHlDb3VudGVyTWlzbWF0Y2hleHBlY3RlZF9zdW1zeW1ib2xfcHJvYmFiaWxpdGllc1Rvb01hbnlTeW1ib2xzVGFibGVJc1VuaW5pdGlhbGl6ZWRTb3VyY2VJc0VtcHR5Tm90RW5vdWdoQnl0ZXNGb3JXZWlnaHRzZ290X2J5dGVzZXhwZWN0ZWRfYnl0ZXNUb29NYW55V2VpZ2h0c01pc3NpbmdXZWlnaHRzTGVmdG92ZXJJc05vdEFQb3dlck9mMk5vdEVub3VnaEJ5dGVzVG9EZWNvbXByZXNzV2VpZ2h0c0ZTRVRhYmxlVXNlZFRvb01hbnlCeXRlc3VzZWRhdmFpbGFibGVfYnl0ZXNOb3RFbm91Z2hCeXRlc0luU291cmNlV2VpZ2h0QmlnZ2VyVGhhbk1heE51bUJpdHNNYXhCaXRzVG9vSGlnaC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnMAAABQbhAAbQAAACoCAAARAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9iaXRfcmVhZGVyX3JldmVyc2UucnMAAADQbhAAcQAAADcAAABFAAAA0G4QAHEAAAA3AAAALwAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGXQbhAAcQAAAEYAAAANAAAA0G4QAHEAAABKAAAAHgAAAFRoaXMgaXMgYSBidWcgaW4gdGhlIHByb2dyYW0uIFRoZXJlIHNob3VsZCBvbmx5IGJlIHZhbHVlcyBiZXR3ZWVuIDAuLjMvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2Jsb2Nrcy9saXRlcmFsc19zZWN0aW9uLnJzAPJvEABtAAAAewAAADQAAADybxAAbQAAAJAAAABXAAAA8m8QAG0AAACXAAAAKgAAAPJvEABtAAAAmAAAACoAAADybxAAbQAAAJsAAAAaAAAA8m8QAG0AAACoAAAAGgAAAPJvEABtAAAAtAAAAEQAAADybxAAbQAAALgAAABGAAAA8m8QAG0AAADAAAAAKgAAAPJvEABtAAAAwQAAACsAAADybxAAbQAAAMUAAABIAAAA8m8QAG0AAADNAAAAKgAAAPJvEABtAAAAzgAAACsAAADybxAAbQAAANMAAAAuAAAA8m8QAG0AAADUAAAALgAAAENhbnQgcmV0dXJuIHRoaXMgbWFueSBiaXRzL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9iaXRfcmVhZGVyLnJzAGpxEABpAAAANgAAAA0AAABqcRAAaQAAAE8AAAAjAAAAYXNzZXJ0aW9uIGZhaWxlZDogbiAtIGJpdF9zaGlmdCA9PSBiaXRzX2luX2xhc3RfYnl0ZV9uZWVkZWQAanEQAGkAAABtAAAADQAAAGpxEABpAAAAcQAAAB8AAABqcRAAaQAAAGgAAAAkAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5pZHggJSA4ID09IDAAanEQAGkAAABkAAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaWR4ID09IG9sZF9pZHggKyBuAAAAanEQAGkAAAB3AAAACQAAAFNlcV9zdW06ICBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZGlmZmVyZW5jZSBpbiBidWZmZXJzaXplOiAAANByEAAJAAAA2XIQADEAAAAvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2RlY29kaW5nL3NlcXVlbmNlX2V4ZWN1dGlvbi5ycwAAABxzEABxAAAALwAAAAUAAAAccxAAcQAAAAsAAAAkAAAAHHMQAHEAAAAVAAAANAAAAEFsbG9jYXRpbmcgbmV3IHNwYWNlIGZvciB0aGUgcmluZ2J1ZmZlciBmYWlsZWQvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2RlY29kaW5nL3JpbmdidWZmZXIucnMA7nMQAGkAAABhAAAAIwAAAENvdWxkIG5vdCBjcmVhdGUgbGF5b3V0IGZvciB1OCBhcnJheSBvZiBzaXplIAAAAGh0EAAtAAAA7nMQAGkAAABaAAAAIQAAAO5zEABpAAAAtAAAABUAAADucxAAaQAAAL4AAAAVAAAA7nMQAGkAAAB3AQAAHQAAAO5zEABpAAAAzgEAABUAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwDwdBAAawAAAKIAAAAZAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9saXRlcmFsc19zZWN0aW9uX2RlY29kZXIucnMAbHUQAHcAAAAUAAAAIgAAAGx1EAB3AAAAGAAAAE0AAABsdRAAdwAAADQAAAAZAAAAbHUQAHcAAAByAAAAGAAAAGx1EAB3AAAAkQAAABQAAABhc3NlcnRpb24gZmFpbGVkOiBudW1fc3RyZWFtcyA9PSAxAABsdRAAdwAAAIAAAAAJAAAAbHUQAHcAAABFAAAAGQAAAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZGVjb2Rpbmcvc2VxdWVuY2Vfc2VjdGlvbl9kZWNvZGVyLnJzAHh2EAB3AAAAGAAAAB0AAAB4dhAAdwAAAHUAAAAQAAAAeHYQAHcAAADAAAAAEAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IElsbGVnYWwgbGl0ZXJhbCBsZW5ndGggY29kZSB3YXM6IAAgdxAASwAAAHh2EAB3AAAA+gAAAA4AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBJbGxlZ2FsIG1hdGNoIGxlbmd0aCBjb2RlIHdhczogAAAAhHcQAEkAAAB4dhAAdwAAABoBAAAOAAAABAAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAD/////////////////////AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA//////////////////////////8BAAAABAAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA/////////////////////////////////////3h2EAB3AAAAdgEAABwAAAB4dhAAdwAAAFMBAAAcAAAAAQEBAQICAwMEBgcICQoLDA0ODxAQAAAAEgAAABQAAAAWAAAAGAAAABwAAAAgAAAAKAAAADAAAABAAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAEBAQECAgMDBAQFBwgJCgsMDQ4PEAAAACMAAAAlAAAAJwAAACkAAAArAAAALwAAADMAAAA7AAAAQwAAAFMAAABjAAAAgwAAAAMBAAADAgAAAwQAAAMIAAADEAAAAyAAAANAAAADgAAAAwABAC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3R3b3gtaGFzaC0yLjEuMC9zcmMveHhoYXNoNjQucnMAAACwehAAYQAAAFQAAAAfAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcnV6c3RkLTAuOC4wL3NyYy9kZWNvZGluZy9kZWNvZGVidWZmZXIucnMAJHsQAGsAAAAaAAAAHgAAACR7EABrAAAAnQAAADQAAAAkexAAawAAAOoAAAAeAAAAUmF3UkxFQ29tcHJlc3NlZFJlc2VydmVyZAAAAAAAAAAEAAAABAAAAMoBAAAAAAAABAAAAAQAAADQAQAAYXNzZXJ0aW9uIGZhaWxlZDogeCA+IDAvVXNlcnMvZHlsYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXpzdGQtMC44LjAvc3JjL2h1ZmYwL2h1ZmYwX2RlY29kZXIucnMTfBAAaQAAADEAAAAFAAAAE3wQAGkAAAA+AAAAGgAAABN8EABpAAAAUAAAACkAAAATfBAAaQAAAGgAAAAWAAAAE3wQAGkAAABqAAAAEwAAABN8EABpAAAAawAAABgAAAATfBAAaQAAAGwAAAAbAAAAE3wQAGkAAAAdAQAANgAAABN8EABpAAAAHQEAACUAAAATfBAAaQAAAB8BAAA2AAAAE3wQAGkAAAAfAQAAJQAAABN8EABpAAAA6AAAACIAAAATfBAAaQAAAPIAAAAiAAAAE3wQAGkAAAD3AAAAJgAAABN8EABpAAAA7QAAACYAAAATfBAAaQAAAFcBAAASAAAAE3wQAGkAAABfAQAAGAAAABN8EABpAAAAZQEAABUAAAATfBAAaQAAAG8BAAAbAAAAE3wQAGkAAABxAQAAGgAAABN8EABpAAAAeAEAAB4AAAByYW5rX2lkeFswXTogIHNob3VsZCBiZTogAAAAzH0QAA0AAADZfRAADAAAABN8EABpAAAAdwEAAAkAAAATfBAAaQAAAH8BAAAsAAAAE3wQAGkAAACEAQAAMQAAABN8EABpAAAAiAEAACAAAAATfBAAaQAAAIkBAAAgAAAAE3wQAGkAAABzAQAARQAAABN8EABpAAAAdAEAACEAAAATfBAAaQAAAHMBAAAeAAAAE3wQAGkAAABhAQAAGwAAABN8EABpAAAATwEAACcAAAATfBAAaQAAAFQBAAAWAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAqH4QAGsAAACiAAAAGQAAAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzACR/EABrAAAAogAAABkAAABhc3NlcnRpb24gZmFpbGVkOiB4ID4gMC9Vc2Vycy9keWxhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3J1enN0ZC0wLjguMC9zcmMvZnNlL2ZzZV9kZWNvZGVyLnJzt38QAGUAAAA9AAAABQAAALd/EABlAAAAWgAAACcAAAC3fxAAZQAAAGUAAAAnAAAAt38QAGUAAABwAAAAIwAAALd/EABlAAAAcQAAAB0AAAC3fxAAZQAAAOIAAAApAAAAt38QAGUAAADkAAAAMQAAALd/EABlAAAA5gAAADMAAABhc3NlcnRpb24gZmFpbGVkOiBuYiA8PSBzZWxmLmFjY3VyYWN5X2xvZwAAALd/EABlAAAA6wAAAA0AAAC3fxAAZQAAANIAAAAtAAAAt38QAGUAAADAAAAALQAAALd/EABlAAAAOQEAAEEAAAC3fxAAZQAAAB4BAAAnAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHJvYiA9PSAtMbd/EABlAAAAJAEAABUAAAAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvbW9kLnJzAAAARIEQAG0AAAA9CgAAJAAAAAAAAAAQAAAABAAAANQBAADVAQAA1gEAACAgICA6IAAAAQAAAAAAAADggRAAAgAAACAgICAgICAvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL3B0ci9tb2QucnMA+4EQAGwAAAALAgAAAQAAAC9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaW5kZXgucnN4ghAAcAAAAEwDAAA0AAAAeIIQAHAAAABTAwAAMgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuKS9Vc2Vycy9keWxhbi8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAMoMQAGwAAAD7BwAAHQAAADKDEABsAAAAAwgAAB0AAAAygxAAbAAAAI0FAAAbAAAAL1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5ycwAAANCDEABtAAAAKgIAABEAAADXAQAADAAAAAQAAADYAQAA2QEAANoBAADdAQAADAAAAAQAAADeAQAA3wEAANoBAEGIicIAC4UJAQAAAOABAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L1VzZXJzL2R5bGFuLy5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAMeEEABsAAAA3woAAA4AAABFcnJvcgAAAMeEEABsAAAAjQUAABsAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbinHhBAAbAAAAMAFAAANAAAAAAAAABAAAAAEAAAA1AEAANUBAADWAQAAYmFja3RyYWNlIGNhcHR1cmUgZmFpbGVkL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC45OC9zcmMvZXJyb3IucnPMhRAAXAAAAGcEAAAOAAAAAQAAAAAAAAA6IAAAQIYQAAIAAAAKCkNhdXNlZCBieToKCgpzdGFjayBiYWNrdHJhY2U6U3RhY2sgYmFja3RyYWNlOgprhhAAEQAAAFMvVXNlcnMvZHlsYW4vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzAACFhhAAeQAAALMHAAAJAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvanMtc3lzLTAuMy43Ny9zcmMvbGliLnJzAAAQhxAAWgAAAPsYAAABAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NvbnZlcnQvc2xpY2VzLnJzfIcQAGwAAAAkAQAADgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkSnNWYWx1ZSgpACqIEAAIAAAAMogQAAEAAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAESIEAAqAAAAL1VzZXJzL2R5bGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvbGliLnJzAAAAeIgQAF0AAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AADoiBAADgAAAHiIEABdAAAAegIAAA0AQZiSwgALlSMEAAAABAAAAPYBAAAvcnVzdGMvMDVmOTg0NmY4OTNiMDlhMWJlMWZjODU2MGUzM2ZjM2M4MTVjZmVjYi9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAJIkQAEoAAACiAAAAGQAAAC9ydXN0Yy8wNWY5ODQ2Zjg5M2IwOWExYmUxZmM4NTYwZTMzZmMzYzgxNWNmZWNiL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwCAiRAASwAAAI0FAAAbAAAAL3J1c3RjLzA1Zjk4NDZmODkzYjA5YTFiZTFmYzg1NjBlMzNmYzNjODE1Y2ZlY2IvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc9yJEABMAAAAKgIAABEAAAA6AAAA9wEAAAwAAAAEAAAA+AEAAPkBAAD6AQAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNy9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAFSKEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAABUihAAKQAAAK4EAAANAAAAQWNjZXNzRXJyb3JjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uOiAAB4sQAEgAAABsaWJyYXJ5L3N0ZC9zcmMvYmFja3RyYWNlLnJzb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybXSLEAAoAAAAJAAAAAIAAACcixAAdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlAFiLEAAcAAAAigEAAB0AAAD7AQAAEAAAAAQAAAD8AQAA/QEAAAEAAAAAAAAAZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBvciBpbmRpcmVjdGlvbiBsaW1pdCAoZS5nLiBzeW1saW5rIGxvb3Apc3RhbGUgbmV0d29yayBmaWxlIGhhbmRsZWludmFsaWQgaW5wdXQgcGFyYW1ldGVyaW52YWxpZCBkYXRhdGltZWQgb3V0d3JpdGUgemVyb25vIHN0b3JhZ2Ugc3BhY2VzZWVrIG9uIHVuc2Vla2FibGUgZmlsZXF1b3RhIGV4Y2VlZGVkZmlsZSB0b28gbGFyZ2VyZXNvdXJjZSBidXN5ZXhlY3V0YWJsZSBmaWxlIGJ1c3lkZWFkbG9ja2Nyb3NzLWRldmljZSBsaW5rIG9yIHJlbmFtZXRvbyBtYW55IGxpbmtzaW52YWxpZCBmaWxlbmFtZWFyZ3VtZW50IGxpc3QgdG9vIGxvbmdvcGVyYXRpb24gaW50ZXJydXB0ZWR1bnN1cHBvcnRlZHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGVvdXQgb2YgbWVtb3J5aW4gcHJvZ3Jlc3NvdGhlciBlcnJvcnVuY2F0ZWdvcml6ZWQgZXJyb3JPcwAAAAAABAAAAAQAAAD+AQAAY29kZQAAAAABAAAAAQAAAP8BAABraW5k9wEAAAwAAAAEAAAAAAIAAG1lc3NhZ2VLaW5kRXJyb3IAAAAACAAAAAQAAAABAgAAAAAAAAQAAAAEAAAAAgIAAEN1c3RvbWVycm9yIChvcyBlcnJvciApAAEAAAAAAAAAZ48QAAsAAAByjxAAAQAAADogY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXgAAI6PEAAgAAAAbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnO4jxAALAAAABMAAAAJAAAAbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMA9I8QACMAAACbAAAAMgAAAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwAAACiQEAAhAAAA0QAAABMAAAA8dW5rbm93bj7vv71tZW1vcnkgYWxsb2NhdGlvbiBvZiAgYnl0ZXMgZmFpbGVkAABokBAAFQAAAH2QEAANAAAAbGlicmFyeS9zdGQvc3JjL2FsbG9jLnJznJAQABgAAABjAQAACQAAAAoAAAD3AQAADAAAAAQAAAADAgAAAAAAAAgAAAAEAAAABAIAAAAAAAAIAAAABAAAAAUCAAAGAgAABwIAAAgCAAAJAgAAEAAAAAQAAAAKAgAACwIAAAwCAAANAgAAbGlicmFyeS9zdGQvc3JjLy4uLy4uL2JhY2t0cmFjZS9zcmMvc3ltYm9saXplL21vZC5ycyCREAA0AAAAZwEAADAAAAABAAAAAAAAAIyPEAACAAAAIC0gAAEAAAAAAAAAdJEQAAMAAAAgICAgICAgICAgICAgICAgICAgYXQgAAA4ihAAAQAAAE5vdEZvdW5kUGVybWlzc2lvbkRlbmllZENvbm5lY3Rpb25SZWZ1c2VkQ29ubmVjdGlvblJlc2V0SG9zdFVucmVhY2hhYmxlTmV0d29ya1VucmVhY2hhYmxlQ29ubmVjdGlvbkFib3J0ZWROb3RDb25uZWN0ZWRBZGRySW5Vc2VBZGRyTm90QXZhaWxhYmxlTmV0d29ya0Rvd25Ccm9rZW5QaXBlQWxyZWFkeUV4aXN0c1dvdWxkQmxvY2tOb3RBRGlyZWN0b3J5SXNBRGlyZWN0b3J5RGlyZWN0b3J5Tm90RW1wdHlSZWFkT25seUZpbGVzeXN0ZW1GaWxlc3lzdGVtTG9vcFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvU3RvcmFnZUZ1bGxOb3RTZWVrYWJsZVF1b3RhRXhjZWVkZWRGaWxlVG9vTGFyZ2VSZXNvdXJjZUJ1c3lFeGVjdXRhYmxlRmlsZUJ1c3lEZWFkbG9ja0Nyb3NzZXNEZXZpY2VzVG9vTWFueUxpbmtzSW52YWxpZEZpbGVuYW1lQXJndW1lbnRMaXN0VG9vTG9uZ0ludGVycnVwdGVkVW5zdXBwb3J0ZWRVbmV4cGVjdGVkRW9mT3V0T2ZNZW1vcnlJblByb2dyZXNzT3RoZXJVbmNhdGVnb3JpemVkb3BlcmF0aW9uIHN1Y2Nlc3NmdWxPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWTakxAAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5DJQQADgAAAAQAAAAEQAA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",self.location.href));const A=BI();(typeof g=="string"||typeof Request=="function"&&g instanceof Request||typeof URL=="function"&&g instanceof URL)&&(g=fetch(g));const{instance:Q,module:I}=await II(await g,A);return gI(Q,I)}const GA=-9,JA=(9-GA)/254,zA=Math.exp(GA),CI=11,EI=11,YQ=1<{E.enqueue(this.fileBytes.slice(0,65536)),E.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const I=`end_header\n`;for(;;){const{value:E,done:i}=await Q.read();if(i)throw new Error("Failed to read header");this.header+=E;const D=this.header.indexOf(I);if(D>=0){this.header=this.header.slice(0,D+I.length);break}}const B=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,B),this.elements={};let C=null;this.comments=[],this.header.trim().split(`\n`).forEach((E,i)=>{const D=E.trim();if(i===0){if(D!=="ply")throw new Error("Invalid PLY header");return}if(D.length===0)return;const w=D.split(" ");switch(w[0]){case"format":if(w[1]==="binary_little_endian")this.littleEndian=!0;else if(w[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${w[1]}`);if(w[2]!=="1.0")throw new Error(`Unsupported PLY version: ${w[2]}`);break;case"end_header":break;case"comment":this.comments.push(D.slice(8));break;case"element":{const o=w[1];C={name:o,count:Number.parseInt(w[2]),properties:{}},this.elements[o]=C;break}case"property":if(C==null)throw new Error("Property must be inside an element");w[1]==="list"?C.properties[w[4]]={isList:!0,type:w[3],countType:w[2]}:C.properties[w[2]]={isList:!1,type:w[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let Q=0;const I=this.data;if(I==null)throw new Error("No data to parse");for(const B in this.elements){const C=this.elements[B],{count:E,properties:i}=C,D={},w=[];for(const[s,a]of Object.entries(i))a.isList?(D[s]=[],w.push(()=>{const t=D[s];t.length=mA[a.countType](I,Q,this.littleEndian),Q+=RA[a.countType];for(let c=0;c{D[s]=mA[a.type](I,Q,this.littleEndian),Q+=RA[a.type]}));const o=A(C)??(()=>{});for(let s=0;s[0,1,2].map((h,F)=>`f_rest_${G+F*M/3}`)),i=new Array(5).fill(null).flatMap((J,G)=>[0,1,2].map((h,F)=>`f_rest_${3+G+F*M/3}`)),D=new Array(7).fill(null).flatMap((J,G)=>[0,1,2].map((h,F)=>`f_rest_${8+G+F*M/3}`)),w=C>=1?new Float32Array(3*3):void 0,o=C>=2?new Float32Array(5*3):void 0,s=C>=3?new Float32Array(7*3):void 0}function t(M,J){if(!w)throw new Error("Missing sh1");for(const[G,h]of E.entries())w[G]=J[h]*8/255-4;if(o)for(const[G,h]of i.entries())o[G]=J[h]*8/255-4;if(s)for(const[G,h]of D.entries())s[G]=J[h]*8/255-4;Q==null||Q(M,w,o,s)}function c(M){const{min_x:J,min_y:G,min_z:h,max_x:F,max_y:U,max_z:K,min_scale_x:T,min_scale_y:W,min_scale_z:X,max_scale_x:Y,max_scale_y:$,max_scale_z:AA,min_r:m,min_g:j,min_b:b,max_r:p,max_g:O,max_b:H}=M.properties;if(!J||!G||!h||!F||!U||!K||!T||!W||!X||!Y||!$||!AA||!m||!j||!b||!p||!O||!H)throw new Error("Missing PLY chunk properties");return I=!0,(oA,QA)=>{const{min_x:q,min_y:r,min_z:z,max_x:f,max_y:V,max_z:R,min_scale_x:IA,min_scale_y:v,min_scale_z:sA,max_scale_x:P,max_scale_y:BA,max_scale_z:gA,min_r:cA,min_g:CA,min_b:aA,max_r:tA,max_g:N,max_b:d}=QA;B.push({min_x:q,min_y:r,min_z:z,max_x:f,max_y:V,max_z:R,min_scale_x:IA,min_scale_y:v,min_scale_z:sA,max_scale_x:P,max_scale_y:BA,max_scale_z:gA,min_r:cA,min_g:CA,min_b:aA,max_r:tA,max_g:N,max_b:d})}}function y(M){if(Q&&M.name==="sh")return C=lQ(M.properties),a(),t;if(M.name!=="vertex")return null;const{packed_position:J,packed_rotation:G,packed_scale:h,packed_color:F}=M.properties;if(!J||!G||!h||!F)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const U=Math.sqrt(2);return(K,T)=>{const W=B[K>>>8];if(W==null)throw new Error("Missing PLY chunk");const{min_x:X,min_y:Y,min_z:$,max_x:AA,max_y:m,max_z:j,min_scale_x:b,min_scale_y:p,min_scale_z:O,max_scale_x:H,max_scale_y:oA,max_scale_z:QA,min_r:q,min_g:r,min_b:z,max_r:f,max_g:V,max_b:R}=W,{packed_position:IA,packed_rotation:v,packed_scale:sA,packed_color:P}=T,BA=(IA>>>21&2047)/2047*(AA-X)+X,gA=(IA>>>11&1023)/1023*(m-Y)+Y,cA=(IA&2047)/2047*(j-$)+$,CA=((v>>>20&1023)/1023-.5)*U,aA=((v>>>10&1023)/1023-.5)*U,tA=((v&1023)/1023-.5)*U,N=Math.sqrt(Math.max(0,1-CA*CA-aA*aA-tA*tA)),d=v>>>30,L=d===0?CA:d===1?N:aA,k=d<=1?aA:d===2?N:tA,kA=d<=2?tA:N,tQ=d===0?N:CA,cQ=Math.exp((sA>>>21&2047)/2047*(H-b)+b),GQ=Math.exp((sA>>>11&1023)/1023*(oA-p)+p),hQ=Math.exp((sA&2047)/2047*(QA-O)+O),yQ=(P>>>24&255)/255*(f-q)+q,MQ=(P>>>16&255)/255*(V-r)+r,NQ=(P>>>8&255)/255*(R-z)+z,FQ=(P&255)/255;A(K,BA,gA,cA,cQ,GQ,hQ,L,k,kA,tQ,FQ,yQ,MQ,NQ)}}const n=M=>{if(M.name==="chunk"&&this.comments.some(V=>V.toLowerCase().includes("supersplat")))return c(M);if(I)return y(M);if(M.name!=="vertex")return null;const{x:J,y:G,z:h,scale_0:F,scale_1:U,scale_2:K,rot_0:T,rot_1:W,rot_2:X,rot_3:Y,opacity:$,f_dc_0:AA,f_dc_1:m,f_dc_2:j,red:b,green:p,blue:O,alpha:H}=M.properties;if(!J||!G||!h)throw new Error("Missing PLY properties: x, y, z");const oA=F&&U&&K,QA=T&&W&&X&&Y,q=H!=null?pA[H.type]:1,r=b!=null?pA[b.type]:1,z=p!=null?pA[p.type]:1,f=O!=null?pA[O.type]:1;return C=lQ(M.properties),a(),(V,R)=>{const IA=oA?Math.exp(R.scale_0):lA.defaultPointScale,v=oA?Math.exp(R.scale_1):lA.defaultPointScale,sA=oA?Math.exp(R.scale_2):lA.defaultPointScale,P=QA?R.rot_1:0,BA=QA?R.rot_2:0,gA=QA?R.rot_3:0,cA=QA?R.rot_0:1,CA=$!=null?1/(1+Math.exp(-R.opacity)):H!=null?R.alpha/q:1,aA=AA!=null?R.f_dc_0*WA+.5:b!=null?R.red/r:1,tA=m!=null?R.f_dc_1*WA+.5:p!=null?R.green/z:1,N=j!=null?R.f_dc_2*WA+.5:O!=null?R.blue/f:1;if(A(V,R.x,R.y,R.z,IA,v,sA,P,BA,gA,cA,CA,aA,tA,N),Q&&w){if(w)for(const[d,L]of E.entries())w[d]=R[L];if(o)for(const[d,L]of i.entries())o[d]=R[L];if(s)for(const[d,L]of D.entries())s[d]=R[L];Q(V,w,o,s)}}};this.parseData(n)}injectRgba(A){let Q=0;const I=this.data;if(I==null)throw new Error("No parsed data");if(A.length!==this.numSplats*4)throw new Error("Invalid RGBA array length");for(const B in this.elements){const C=this.elements[B],{count:E,properties:i}=C,D=[];let w=0;const o=B==="vertex";if(o){for(const s of["opacity","f_dc_0","f_dc_1","f_dc_2"])if(!i[s]||i[s].type!=="float")throw new Error(`Can\'t injectRgba due to property: ${s}`)}for(const[s,a]of Object.entries(i))if(a.isList)D.push(()=>{const t=mA[a.countType](I,Q,this.littleEndian);Q+=RA[a.countType],Q+=t*RA[a.type]});else{if(o)if(s==="f_dc_0"||s==="f_dc_1"||s==="f_dc_2"){const t=Number.parseInt(s.slice(5));D.push(()=>{const c=(A[w+t]/255-.5)/WA;rQ[a.type](I,Q,this.littleEndian,c)})}else s==="opacity"&&D.push(()=>{const t=Math.max(-100,Math.min(100,-Math.log(1/(A[w+3]/255)-1)));rQ[a.type](I,Q,this.littleEndian,t)});D.push(()=>{Q+=RA[a.type]})}for(let s=0;sg.getInt8(A),uchar:(g,A,Q)=>g.getUint8(A),short:(g,A,Q)=>g.getInt16(A,Q),ushort:(g,A,Q)=>g.getUint16(A,Q),int:(g,A,Q)=>g.getInt32(A,Q),uint:(g,A,Q)=>g.getUint32(A,Q),float:(g,A,Q)=>g.getFloat32(A,Q),double:(g,A,Q)=>g.getFloat64(A,Q)},rQ={char:(g,A,Q,I)=>{g.setInt8(A,I)},uchar:(g,A,Q,I)=>{g.setUint8(A,I)},short:(g,A,Q,I)=>{g.setInt16(A,I,Q)},ushort:(g,A,Q,I)=>{g.setUint16(A,I,Q)},int:(g,A,Q,I)=>{g.setInt32(A,I,Q)},uint:(g,A,Q,I)=>{g.setUint32(A,I,Q)},float:(g,A,Q,I)=>{g.setFloat32(A,I,Q)},double:(g,A,Q,I)=>{g.setFloat64(A,I,Q)}},RA={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},pA={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},DI={0:0,9:1,24:2,45:3},wI={0:0,1:9,2:24,3:45};function lQ(g){let A=0;for(;g[`f_rest_${A}`];)A+=1;const Q=DI[A];if(Q==null)throw new Error(`Unsupported number of SH coefficients: ${A}`);return Q}var Z=Uint8Array,nA=Uint16Array,sI=Int32Array,LQ=new Z([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,0]),SQ=new Z([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,0,0]),oI=new Z([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),HQ=function(g,A){for(var Q=new nA(31),I=0;I<31;++I)Q[I]=A+=1<>1|(e&21845)<<1;hA=(hA&52428)>>2|(hA&13107)<<2,hA=(hA&61680)>>4|(hA&3855)<<4,OA[e]=((hA&65280)>>8|(hA&255)<<8)>>1}for(var SA=function(g,A,Q){for(var I=g.length,B=0,C=new nA(A);B>D]=w}else for(i=new nA(I),B=0;B>15-g[B]);return i},HA=new Z(288),e=0;e<144;++e)HA[e]=8;for(var e=144;e<256;++e)HA[e]=9;for(var e=256;e<280;++e)HA[e]=7;for(var e=280;e<288;++e)HA[e]=8;for(var KQ=new Z(32),e=0;e<32;++e)KQ[e]=5;var GI=SA(HA,9,1),hI=SA(KQ,5,1),vA=function(g){for(var A=g[0],Q=1;QA&&(A=g[Q]);return A},EA=function(g,A,Q){var I=A/8|0;return(g[I]|g[I+1]<<8)>>(A&7)&Q},PA=function(g,A){var Q=A/8|0;return(g[Q]|g[Q+1]<<8|g[Q+2]<<16)>>(A&7)},bQ=function(g){return(g+7)/8|0},fA=function(g,A,Q){return(A==null||A<0)&&(A=0),(Q==null||Q>g.length)&&(Q=g.length),new Z(g.subarray(A,Q))},yI=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],_=function(g,A,Q){var I=new Error(A||yI[g]);if(I.code=g,Error.captureStackTrace&&Error.captureStackTrace(I,_),!Q)throw I;return I},MI=function(g,A,Q,I){var B=g.length,C=0;if(!B||A.f&&!A.l)return Q||new Z(0);var E=!Q,i=E||A.i!=2,D=A.i;E&&(Q=new Z(B*3));var w=function(P){var BA=Q.length;if(P>BA){var gA=new Z(Math.max(BA*2,P));gA.set(Q),Q=gA}},o=A.f||0,s=A.p||0,a=A.b||0,t=A.l,c=A.d,y=A.m,n=A.n,M=B*8;do{if(!t){o=EA(g,s,1);var J=EA(g,s+1,3);if(s+=3,J)if(J==1)t=GI,c=hI,y=9,n=5;else if(J==2){var U=EA(g,s,31)+257,K=EA(g,s+10,15)+4,T=U+EA(g,s+5,31)+1;s+=14;for(var W=new Z(T),X=new Z(19),Y=0;Y>4;if(G<16)W[Y++]=G;else{var b=0,p=0;for(G==16?(p=3+EA(g,s,3),s+=2,b=W[Y-1]):G==17?(p=3+EA(g,s,7),s+=3):G==18&&(p=11+EA(g,s,127),s+=7);p--;)W[Y++]=b}}var O=W.subarray(0,U),H=W.subarray(U);y=vA(O),n=vA(H),t=SA(O,y,1),c=SA(H,n,1)}else _(1);else{var G=bQ(s)+4,h=g[G-4]|g[G-3]<<8,F=G+h;if(F>B){D&&_(0);break}i&&w(a+h),Q.set(g.subarray(G,F),a),A.b=a+=h,A.p=s=F*8,A.f=o;continue}if(s>M){D&&_(0);break}}i&&w(a+131072);for(var oA=(1<>4;if(s+=b&15,s>M){D&&_(0);break}if(b||_(2),r<256)Q[a++]=r;else if(r==256){q=s,t=null;break}else{var z=r-254;if(r>264){var Y=r-257,f=LQ[Y];z=EA(g,s,(1<>4;V||_(3),s+=V&15;var H=cI[R];if(R>3){var f=SQ[R];H+=PA(g,s)&(1<M){D&&_(0);break}i&&w(a+131072);var IA=a+z;if(a>3&1)+(A>>4&1);I>0;I-=!g[Q++]);return Q+(A&2)},_A=function(){function g(A,Q){typeof A=="function"&&(Q=A,A={}),this.ondata=Q;var I=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:I?I.length:0},this.o=new Z(32768),this.p=new Z(0),I&&this.o.set(I)}return g.prototype.e=function(A){if(this.ondata||_(5),this.d&&_(4),!this.p.length)this.p=A;else if(A.length){var Q=new Z(this.p.length+A.length);Q.set(this.p),Q.set(A,this.p.length),this.p=Q}},g.prototype.c=function(A){this.s.i=+(this.d=A||!1);var Q=this.s.b,I=MI(this.p,this.s,this.o);this.ondata(fA(I,Q,this.s.b),this.d),this.o=fA(I,this.s.b-32768),this.s.b=this.o.length,this.p=fA(this.p,this.s.p/8|0),this.s.p&=7},g.prototype.push=function(A,Q){this.e(A),this.c(Q)},g}(),kI=function(){function g(A,Q){this.v=1,this.r=0,_A.call(this,A,Q)}return g.prototype.push=function(A,Q){if(_A.prototype.e.call(this,A),this.r+=A.length,this.v){var I=this.p.subarray(this.v-1),B=I.length>3?FI(I):4;if(B>I.length){if(!Q)return}else this.v>1&&this.onmember&&this.onmember(this.r-I.length);this.p=I.subarray(B),this.v=0}_A.prototype.c.call(this,Q),this.s.f&&!this.s.l&&!Q&&(this.v=bQ(this.s.p)+9,this.s={i:0},this.o=new Z(0),this.push(new Z(0),Q))},g}(),JI=typeof TextDecoder<"u"&&new TextDecoder,RI=0;try{JI.decode(NI,{stream:!0}),RI=1}catch{}/**\n * @license\n * Copyright 2010-2024 Three.js Authors\n * SPDX-License-Identifier: MIT\n */const qQ="172",nI="",iA="srgb",xQ="srgb-linear",WQ="linear",$A="srgb";function u(g,A,Q){return Math.max(A,Math.min(Q,g))}function YI(g,A){return(g%A+A)%A}function AQ(g,A,Q){return(1-Q)*g+Q*A}class dA{constructor(A,Q,I,B,C,E,i,D,w){dA.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],A!==void 0&&this.set(A,Q,I,B,C,E,i,D,w)}set(A,Q,I,B,C,E,i,D,w){const o=this.elements;return o[0]=A,o[1]=B,o[2]=i,o[3]=Q,o[4]=C,o[5]=D,o[6]=I,o[7]=E,o[8]=w,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const Q=this.elements,I=A.elements;return Q[0]=I[0],Q[1]=I[1],Q[2]=I[2],Q[3]=I[3],Q[4]=I[4],Q[5]=I[5],Q[6]=I[6],Q[7]=I[7],Q[8]=I[8],this}extractBasis(A,Q,I){return A.setFromMatrix3Column(this,0),Q.setFromMatrix3Column(this,1),I.setFromMatrix3Column(this,2),this}setFromMatrix4(A){const Q=A.elements;return this.set(Q[0],Q[4],Q[8],Q[1],Q[5],Q[9],Q[2],Q[6],Q[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,Q){const I=A.elements,B=Q.elements,C=this.elements,E=I[0],i=I[3],D=I[6],w=I[1],o=I[4],s=I[7],a=I[2],t=I[5],c=I[8],y=B[0],n=B[3],M=B[6],J=B[1],G=B[4],h=B[7],F=B[2],U=B[5],K=B[8];return C[0]=E*y+i*J+D*F,C[3]=E*n+i*G+D*U,C[6]=E*M+i*h+D*K,C[1]=w*y+o*J+s*F,C[4]=w*n+o*G+s*U,C[7]=w*M+o*h+s*K,C[2]=a*y+t*J+c*F,C[5]=a*n+t*G+c*U,C[8]=a*M+t*h+c*K,this}multiplyScalar(A){const Q=this.elements;return Q[0]*=A,Q[3]*=A,Q[6]*=A,Q[1]*=A,Q[4]*=A,Q[7]*=A,Q[2]*=A,Q[5]*=A,Q[8]*=A,this}determinant(){const A=this.elements,Q=A[0],I=A[1],B=A[2],C=A[3],E=A[4],i=A[5],D=A[6],w=A[7],o=A[8];return Q*E*o-Q*i*w-I*C*o+I*i*D+B*C*w-B*E*D}invert(){const A=this.elements,Q=A[0],I=A[1],B=A[2],C=A[3],E=A[4],i=A[5],D=A[6],w=A[7],o=A[8],s=o*E-i*w,a=i*D-o*C,t=w*C-E*D,c=Q*s+I*a+B*t;if(c===0)return this.set(0,0,0,0,0,0,0,0,0);const y=1/c;return A[0]=s*y,A[1]=(B*w-o*I)*y,A[2]=(i*I-B*E)*y,A[3]=a*y,A[4]=(o*Q-B*D)*y,A[5]=(B*C-i*Q)*y,A[6]=t*y,A[7]=(I*D-w*Q)*y,A[8]=(E*Q-I*C)*y,this}transpose(){let A;const Q=this.elements;return A=Q[1],Q[1]=Q[3],Q[3]=A,A=Q[2],Q[2]=Q[6],Q[6]=A,A=Q[5],Q[5]=Q[7],Q[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){const Q=this.elements;return A[0]=Q[0],A[1]=Q[3],A[2]=Q[6],A[3]=Q[1],A[4]=Q[4],A[5]=Q[7],A[6]=Q[2],A[7]=Q[5],A[8]=Q[8],this}setUvTransform(A,Q,I,B,C,E,i){const D=Math.cos(C),w=Math.sin(C);return this.set(I*D,I*w,-I*(D*E+w*i)+E+A,-B*w,B*D,-B*(-w*E+D*i)+i+Q,0,0,1),this}scale(A,Q){return this.premultiply(QQ.makeScale(A,Q)),this}rotate(A){return this.premultiply(QQ.makeRotation(-A)),this}translate(A,Q){return this.premultiply(QQ.makeTranslation(A,Q)),this}makeTranslation(A,Q){return A.isVector2?this.set(1,0,A.x,0,1,A.y,0,0,1):this.set(1,0,A,0,1,Q,0,0,1),this}makeRotation(A){const Q=Math.cos(A),I=Math.sin(A);return this.set(Q,-I,0,I,Q,0,0,0,1),this}makeScale(A,Q){return this.set(A,0,0,0,Q,0,0,0,1),this}equals(A){const Q=this.elements,I=A.elements;for(let B=0;B<9;B++)if(Q[B]!==I[B])return!1;return!0}fromArray(A,Q=0){for(let I=0;I<9;I++)this.elements[I]=A[I+Q];return this}toArray(A=[],Q=0){const I=this.elements;return A[Q]=I[0],A[Q+1]=I[1],A[Q+2]=I[2],A[Q+3]=I[3],A[Q+4]=I[4],A[Q+5]=I[5],A[Q+6]=I[6],A[Q+7]=I[7],A[Q+8]=I[8],A}clone(){return new this.constructor().fromArray(this.elements)}}const QQ=new dA,mQ=new dA().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),pQ=new dA().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function eI(){const g={enabled:!0,workingColorSpace:xQ,spaces:{},convert:function(B,C,E){return this.enabled===!1||C===E||!C||!E||(this.spaces[C].transfer===$A&&(B.r=YA(B.r),B.g=YA(B.g),B.b=YA(B.b)),this.spaces[C].primaries!==this.spaces[E].primaries&&(B.applyMatrix3(this.spaces[C].toXYZ),B.applyMatrix3(this.spaces[E].fromXYZ)),this.spaces[E].transfer===$A&&(B.r=eA(B.r),B.g=eA(B.g),B.b=eA(B.b))),B},fromWorkingColorSpace:function(B,C){return this.convert(B,this.workingColorSpace,C)},toWorkingColorSpace:function(B,C){return this.convert(B,C,this.workingColorSpace)},getPrimaries:function(B){return this.spaces[B].primaries},getTransfer:function(B){return B===nI?WQ:this.spaces[B].transfer},getLuminanceCoefficients:function(B,C=this.workingColorSpace){return B.fromArray(this.spaces[C].luminanceCoefficients)},define:function(B){Object.assign(this.spaces,B)},_getMatrix:function(B,C,E){return B.copy(this.spaces[C].toXYZ).multiply(this.spaces[E].fromXYZ)},_getDrawingBufferColorSpace:function(B){return this.spaces[B].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(B=this.workingColorSpace){return this.spaces[B].workingColorSpaceConfig.unpackColorSpace}},A=[.64,.33,.3,.6,.15,.06],Q=[.2126,.7152,.0722],I=[.3127,.329];return g.define({[xQ]:{primaries:A,whitePoint:I,transfer:WQ,toXYZ:mQ,fromXYZ:pQ,luminanceCoefficients:Q,workingColorSpaceConfig:{unpackColorSpace:iA},outputColorSpaceConfig:{drawingBufferColorSpace:iA}},[iA]:{primaries:A,whitePoint:I,transfer:$A,toXYZ:mQ,fromXYZ:pQ,luminanceCoefficients:Q,outputColorSpaceConfig:{drawingBufferColorSpace:iA}}}),g}const DA=eI();function YA(g){return g<.04045?g*.0773993808:Math.pow(g*.9478672986+.0521327014,2.4)}function eA(g){return g<.0031308?g*12.92:1.055*Math.pow(g,.41666)-.055}class IQ{constructor(A=0,Q=0,I=0,B=1){this.isQuaternion=!0,this._x=A,this._y=Q,this._z=I,this._w=B}static slerpFlat(A,Q,I,B,C,E,i){let D=I[B+0],w=I[B+1],o=I[B+2],s=I[B+3];const a=C[E+0],t=C[E+1],c=C[E+2],y=C[E+3];if(i===0){A[Q+0]=D,A[Q+1]=w,A[Q+2]=o,A[Q+3]=s;return}if(i===1){A[Q+0]=a,A[Q+1]=t,A[Q+2]=c,A[Q+3]=y;return}if(s!==y||D!==a||w!==t||o!==c){let n=1-i;const M=D*a+w*t+o*c+s*y,J=M>=0?1:-1,G=1-M*M;if(G>Number.EPSILON){const F=Math.sqrt(G),U=Math.atan2(F,M*J);n=Math.sin(n*U)/F,i=Math.sin(i*U)/F}const h=i*J;if(D=D*n+a*h,w=w*n+t*h,o=o*n+c*h,s=s*n+y*h,n===1-i){const F=1/Math.sqrt(D*D+w*w+o*o+s*s);D*=F,w*=F,o*=F,s*=F}}A[Q]=D,A[Q+1]=w,A[Q+2]=o,A[Q+3]=s}static multiplyQuaternionsFlat(A,Q,I,B,C,E){const i=I[B],D=I[B+1],w=I[B+2],o=I[B+3],s=C[E],a=C[E+1],t=C[E+2],c=C[E+3];return A[Q]=i*c+o*s+D*t-w*a,A[Q+1]=D*c+o*a+w*s-i*t,A[Q+2]=w*c+o*t+i*a-D*s,A[Q+3]=o*c-i*s-D*a-w*t,A}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get w(){return this._w}set w(A){this._w=A,this._onChangeCallback()}set(A,Q,I,B){return this._x=A,this._y=Q,this._z=I,this._w=B,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,Q=!0){const I=A._x,B=A._y,C=A._z,E=A._order,i=Math.cos,D=Math.sin,w=i(I/2),o=i(B/2),s=i(C/2),a=D(I/2),t=D(B/2),c=D(C/2);switch(E){case"XYZ":this._x=a*o*s+w*t*c,this._y=w*t*s-a*o*c,this._z=w*o*c+a*t*s,this._w=w*o*s-a*t*c;break;case"YXZ":this._x=a*o*s+w*t*c,this._y=w*t*s-a*o*c,this._z=w*o*c-a*t*s,this._w=w*o*s+a*t*c;break;case"ZXY":this._x=a*o*s-w*t*c,this._y=w*t*s+a*o*c,this._z=w*o*c+a*t*s,this._w=w*o*s-a*t*c;break;case"ZYX":this._x=a*o*s-w*t*c,this._y=w*t*s+a*o*c,this._z=w*o*c-a*t*s,this._w=w*o*s+a*t*c;break;case"YZX":this._x=a*o*s+w*t*c,this._y=w*t*s+a*o*c,this._z=w*o*c-a*t*s,this._w=w*o*s-a*t*c;break;case"XZY":this._x=a*o*s-w*t*c,this._y=w*t*s-a*o*c,this._z=w*o*c+a*t*s,this._w=w*o*s+a*t*c;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+E)}return Q===!0&&this._onChangeCallback(),this}setFromAxisAngle(A,Q){const I=Q/2,B=Math.sin(I);return this._x=A.x*B,this._y=A.y*B,this._z=A.z*B,this._w=Math.cos(I),this._onChangeCallback(),this}setFromRotationMatrix(A){const Q=A.elements,I=Q[0],B=Q[4],C=Q[8],E=Q[1],i=Q[5],D=Q[9],w=Q[2],o=Q[6],s=Q[10],a=I+i+s;if(a>0){const t=.5/Math.sqrt(a+1);this._w=.25/t,this._x=(o-D)*t,this._y=(C-w)*t,this._z=(E-B)*t}else if(I>i&&I>s){const t=2*Math.sqrt(1+I-i-s);this._w=(o-D)/t,this._x=.25*t,this._y=(B+E)/t,this._z=(C+w)/t}else if(i>s){const t=2*Math.sqrt(1+i-I-s);this._w=(C-w)/t,this._x=(B+E)/t,this._y=.25*t,this._z=(D+o)/t}else{const t=2*Math.sqrt(1+s-I-i);this._w=(E-B)/t,this._x=(C+w)/t,this._y=(D+o)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(A,Q){let I=A.dot(Q)+1;return IMath.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=I):(this._x=0,this._y=-A.z,this._z=A.y,this._w=I)):(this._x=A.y*Q.z-A.z*Q.y,this._y=A.z*Q.x-A.x*Q.z,this._z=A.x*Q.y-A.y*Q.x,this._w=I),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(u(this.dot(A),-1,1)))}rotateTowards(A,Q){const I=this.angleTo(A);if(I===0)return this;const B=Math.min(1,Q/I);return this.slerp(A,B),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,Q){const I=A._x,B=A._y,C=A._z,E=A._w,i=Q._x,D=Q._y,w=Q._z,o=Q._w;return this._x=I*o+E*i+B*w-C*D,this._y=B*o+E*D+C*i-I*w,this._z=C*o+E*w+I*D-B*i,this._w=E*o-I*i-B*D-C*w,this._onChangeCallback(),this}slerp(A,Q){if(Q===0)return this;if(Q===1)return this.copy(A);const I=this._x,B=this._y,C=this._z,E=this._w;let i=E*A._w+I*A._x+B*A._y+C*A._z;if(i<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,i=-i):this.copy(A),i>=1)return this._w=E,this._x=I,this._y=B,this._z=C,this;const D=1-i*i;if(D<=Number.EPSILON){const t=1-Q;return this._w=t*E+Q*this._w,this._x=t*I+Q*this._x,this._y=t*B+Q*this._y,this._z=t*C+Q*this._z,this.normalize(),this}const w=Math.sqrt(D),o=Math.atan2(w,i),s=Math.sin((1-Q)*o)/w,a=Math.sin(Q*o)/w;return this._w=E*s+this._w*a,this._x=I*s+this._x*a,this._y=B*s+this._y*a,this._z=C*s+this._z*a,this._onChangeCallback(),this}slerpQuaternions(A,Q,I){return this.copy(A).slerp(Q,I)}random(){const A=2*Math.PI*Math.random(),Q=2*Math.PI*Math.random(),I=Math.random(),B=Math.sqrt(1-I),C=Math.sqrt(I);return this.set(B*Math.sin(A),B*Math.cos(A),C*Math.sin(Q),C*Math.cos(Q))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,Q=0){return this._x=A[Q],this._y=A[Q+1],this._z=A[Q+2],this._w=A[Q+3],this._onChangeCallback(),this}toArray(A=[],Q=0){return A[Q]=this._x,A[Q+1]=this._y,A[Q+2]=this._z,A[Q+3]=this._w,A}fromBufferAttribute(A,Q){return this._x=A.getX(Q),this._y=A.getY(Q),this._z=A.getZ(Q),this._w=A.getW(Q),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class FA{constructor(A=0,Q=0,I=0){FA.prototype.isVector3=!0,this.x=A,this.y=Q,this.z=I}set(A,Q,I){return I===void 0&&(I=this.z),this.x=A,this.y=Q,this.z=I,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,Q){switch(A){case 0:this.x=Q;break;case 1:this.y=Q;break;case 2:this.z=Q;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,Q){return this.x=A.x+Q.x,this.y=A.y+Q.y,this.z=A.z+Q.z,this}addScaledVector(A,Q){return this.x+=A.x*Q,this.y+=A.y*Q,this.z+=A.z*Q,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,Q){return this.x=A.x-Q.x,this.y=A.y-Q.y,this.z=A.z-Q.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,Q){return this.x=A.x*Q.x,this.y=A.y*Q.y,this.z=A.z*Q.z,this}applyEuler(A){return this.applyQuaternion(fQ.setFromEuler(A))}applyAxisAngle(A,Q){return this.applyQuaternion(fQ.setFromAxisAngle(A,Q))}applyMatrix3(A){const Q=this.x,I=this.y,B=this.z,C=A.elements;return this.x=C[0]*Q+C[3]*I+C[6]*B,this.y=C[1]*Q+C[4]*I+C[7]*B,this.z=C[2]*Q+C[5]*I+C[8]*B,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){const Q=this.x,I=this.y,B=this.z,C=A.elements,E=1/(C[3]*Q+C[7]*I+C[11]*B+C[15]);return this.x=(C[0]*Q+C[4]*I+C[8]*B+C[12])*E,this.y=(C[1]*Q+C[5]*I+C[9]*B+C[13])*E,this.z=(C[2]*Q+C[6]*I+C[10]*B+C[14])*E,this}applyQuaternion(A){const Q=this.x,I=this.y,B=this.z,C=A.x,E=A.y,i=A.z,D=A.w,w=2*(E*B-i*I),o=2*(i*Q-C*B),s=2*(C*I-E*Q);return this.x=Q+D*w+E*s-i*o,this.y=I+D*o+i*w-C*s,this.z=B+D*s+C*o-E*w,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){const Q=this.x,I=this.y,B=this.z,C=A.elements;return this.x=C[0]*Q+C[4]*I+C[8]*B,this.y=C[1]*Q+C[5]*I+C[9]*B,this.z=C[2]*Q+C[6]*I+C[10]*B,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,Q){return this.x=u(this.x,A.x,Q.x),this.y=u(this.y,A.y,Q.y),this.z=u(this.z,A.z,Q.z),this}clampScalar(A,Q){return this.x=u(this.x,A,Q),this.y=u(this.y,A,Q),this.z=u(this.z,A,Q),this}clampLength(A,Q){const I=this.length();return this.divideScalar(I||1).multiplyScalar(u(I,A,Q))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,Q){return this.x+=(A.x-this.x)*Q,this.y+=(A.y-this.y)*Q,this.z+=(A.z-this.z)*Q,this}lerpVectors(A,Q,I){return this.x=A.x+(Q.x-A.x)*I,this.y=A.y+(Q.y-A.y)*I,this.z=A.z+(Q.z-A.z)*I,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,Q){const I=A.x,B=A.y,C=A.z,E=Q.x,i=Q.y,D=Q.z;return this.x=B*D-C*i,this.y=C*E-I*D,this.z=I*i-B*E,this}projectOnVector(A){const Q=A.lengthSq();if(Q===0)return this.set(0,0,0);const I=A.dot(this)/Q;return this.copy(A).multiplyScalar(I)}projectOnPlane(A){return BQ.copy(this).projectOnVector(A),this.sub(BQ)}reflect(A){return this.sub(BQ.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){const Q=Math.sqrt(this.lengthSq()*A.lengthSq());if(Q===0)return Math.PI/2;const I=this.dot(A)/Q;return Math.acos(u(I,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const Q=this.x-A.x,I=this.y-A.y,B=this.z-A.z;return Q*Q+I*I+B*B}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,Q,I){const B=Math.sin(Q)*A;return this.x=B*Math.sin(I),this.y=Math.cos(Q)*A,this.z=B*Math.cos(I),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,Q,I){return this.x=A*Math.sin(Q),this.y=I,this.z=A*Math.cos(Q),this}setFromMatrixPosition(A){const Q=A.elements;return this.x=Q[12],this.y=Q[13],this.z=Q[14],this}setFromMatrixScale(A){const Q=this.setFromMatrixColumn(A,0).length(),I=this.setFromMatrixColumn(A,1).length(),B=this.setFromMatrixColumn(A,2).length();return this.x=Q,this.y=I,this.z=B,this}setFromMatrixColumn(A,Q){return this.fromArray(A.elements,Q*4)}setFromMatrix3Column(A,Q){return this.fromArray(A.elements,Q*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}setFromColor(A){return this.x=A.r,this.y=A.g,this.z=A.b,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,Q=0){return this.x=A[Q],this.y=A[Q+1],this.z=A[Q+2],this}toArray(A=[],Q=0){return A[Q]=this.x,A[Q+1]=this.y,A[Q+2]=this.z,A}fromBufferAttribute(A,Q){return this.x=A.getX(Q),this.y=A.getY(Q),this.z=A.getZ(Q),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const A=Math.random()*Math.PI*2,Q=Math.random()*2-1,I=Math.sqrt(1-Q*Q);return this.x=I*Math.cos(A),this.y=Q,this.z=I*Math.sin(A),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const BQ=new FA,fQ=new IQ,VQ={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},yA={h:0,s:0,l:0},VA={h:0,s:0,l:0};function gQ(g,A,Q){return Q<0&&(Q+=1),Q>1&&(Q-=1),Q<1/6?g+(A-g)*6*Q:Q<1/2?A:Q<2/3?g+(A-g)*6*(2/3-Q):g}class CQ{constructor(A,Q,I){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(A,Q,I)}set(A,Q,I){if(Q===void 0&&I===void 0){const B=A;B&&B.isColor?this.copy(B):typeof B=="number"?this.setHex(B):typeof B=="string"&&this.setStyle(B)}else this.setRGB(A,Q,I);return this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,Q=iA){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,DA.toWorkingColorSpace(this,Q),this}setRGB(A,Q,I,B=DA.workingColorSpace){return this.r=A,this.g=Q,this.b=I,DA.toWorkingColorSpace(this,B),this}setHSL(A,Q,I,B=DA.workingColorSpace){if(A=YI(A,1),Q=u(Q,0,1),I=u(I,0,1),Q===0)this.r=this.g=this.b=I;else{const C=I<=.5?I*(1+Q):I+Q-I*Q,E=2*I-C;this.r=gQ(E,C,A+1/3),this.g=gQ(E,C,A),this.b=gQ(E,C,A-1/3)}return DA.toWorkingColorSpace(this,B),this}setStyle(A,Q=iA){function I(C){C!==void 0&&parseFloat(C)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let B;if(B=/^(\\w+)\\(([^\\)]*)\\)/.exec(A)){let C;const E=B[1],i=B[2];switch(E){case"rgb":case"rgba":if(C=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(i))return I(C[4]),this.setRGB(Math.min(255,parseInt(C[1],10))/255,Math.min(255,parseInt(C[2],10))/255,Math.min(255,parseInt(C[3],10))/255,Q);if(C=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(i))return I(C[4]),this.setRGB(Math.min(100,parseInt(C[1],10))/100,Math.min(100,parseInt(C[2],10))/100,Math.min(100,parseInt(C[3],10))/100,Q);break;case"hsl":case"hsla":if(C=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(i))return I(C[4]),this.setHSL(parseFloat(C[1])/360,parseFloat(C[2])/100,parseFloat(C[3])/100,Q);break;default:console.warn("THREE.Color: Unknown color model "+A)}}else if(B=/^\\#([A-Fa-f\\d]+)$/.exec(A)){const C=B[1],E=C.length;if(E===3)return this.setRGB(parseInt(C.charAt(0),16)/15,parseInt(C.charAt(1),16)/15,parseInt(C.charAt(2),16)/15,Q);if(E===6)return this.setHex(parseInt(C,16),Q);console.warn("THREE.Color: Invalid hex color "+A)}else if(A&&A.length>0)return this.setColorName(A,Q);return this}setColorName(A,Q=iA){const I=VQ[A.toLowerCase()];return I!==void 0?this.setHex(I,Q):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=YA(A.r),this.g=YA(A.g),this.b=YA(A.b),this}copyLinearToSRGB(A){return this.r=eA(A.r),this.g=eA(A.g),this.b=eA(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=iA){return DA.fromWorkingColorSpace(x.copy(this),A),Math.round(u(x.r*255,0,255))*65536+Math.round(u(x.g*255,0,255))*256+Math.round(u(x.b*255,0,255))}getHexString(A=iA){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,Q=DA.workingColorSpace){DA.fromWorkingColorSpace(x.copy(this),Q);const I=x.r,B=x.g,C=x.b,E=Math.max(I,B,C),i=Math.min(I,B,C);let D,w;const o=(i+E)/2;if(i===E)D=0,w=0;else{const s=E-i;switch(w=o<=.5?s/(E+i):s/(2-E-i),E){case I:D=(B-C)/s+(B{const i=E.trimEnd();return A?i:i.length>0?(A=!0,i):null}).filter(E=>E!=null);for(;Q.length>0&&Q[Q.length-1].length===0;)Q.pop();if(Q.length===0)return[];const I=(C=Q[0].match(/^\\s*/))==null?void 0:C[0];if(!I)return Q;const B=new RegExp(`^${I}`);return Q.map(E=>E.replace(B,""))}function rI(g){return UI(g).join(`\n`)}const EQ=new Float32Array(1),uQ=new Uint32Array(EQ.buffer);function UA(g){EQ[0]=g;const A=uQ[0],Q=A>>31&1,I=A>>23&255,B=A&8388607,C=Q<<15;if(I===255)return B!==0?C|32767:C|31744;const E=I-127+15;if(E>=31)return C|31744;if(E<=0){if(E<-10)return C;const D=(B|8388608)>>1-E+13;return C|D}const i=B>>13;return C|E<<10|i}function wA(g){const A=g>>15&1,Q=g>>10&31,I=g&1023;let B;if(Q===0)if(I===0)B=A<<31;else{let C=I,E=-14;for(;(C&1024)===0;)C<<=1,E--;C&=1023;const i=E+127,D=C<<13;B=A<<31|i<<23|D}else if(Q===31)I===0?B=A<<31|2139095040:B=A<<31|2143289344;else{const C=Q-15+127,E=I<<13;B=A<<31|C<<23|E}return uQ[0]=B,EQ[0]}function MA(g){return Math.max(0,Math.min(255,Math.round(g*255)))}function lI(g){const A=[],Q=new Set;function I(B){B&&typeof B=="object"&&!Q.has(B)&&(Q.add(B),B instanceof ArrayBuffer?A.push(B):ArrayBuffer.isView(B)?A.push(B.buffer):Array.isArray(B)?B.forEach(I):Object.values(B).forEach(I))}return I(g),A}function iQ(g,A,Q,I,B,C,E,i,D,w,o,s,a,t,c,y){const n=MA(t),M=MA(c),J=MA(y),G=MA(a),h=XQ(new IQ(D,w,o,s)),F=h&255,U=h>>>8&255,K=h>>>16&255,T=C===0?0:Math.min(255,Math.max(0,Math.round((Math.log(C)-GA)/JA)+1)),W=E===0?0:Math.min(255,Math.max(0,Math.round((Math.log(E)-GA)/JA)+1)),X=i===0?0:Math.min(255,Math.max(0,Math.round((Math.log(i)-GA)/JA)+1)),Y=UA(Q),$=UA(I),AA=UA(B),m=A*4;g[m]=n|M<<8|J<<16|G<<24,g[m+1]=Y|$<<16,g[m+2]=AA|F<<16|U<<24,g[m+3]=T|W<<8|X<<16|K<<24}function LI(g,A,Q,I,B){const C=UA(Q),E=UA(I),i=UA(B),D=A*4;g[D+1]=C|E<<16,g[D+2]=i|g[D+2]&4294901760}function SI(g,A,Q,I,B){const C=Q===0?0:Math.min(255,Math.max(0,Math.round((Math.log(Q)-GA)/JA)+1)),E=I===0?0:Math.min(255,Math.max(0,Math.round((Math.log(I)-GA)/JA)+1)),i=B===0?0:Math.min(255,Math.max(0,Math.round((Math.log(B)-GA)/JA)+1)),D=A*4;g[D+3]=C|E<<8|i<<16|g[D+3]&4278190080}function HI(g,A,Q,I,B,C){const E=XQ(new IQ(Q,I,B,C)),i=E&255,D=E>>>8&255,w=E>>>16&255,o=A*4;g[o+2]=g[o+2]&65535|i<<16|D<<24,g[o+3]=g[o+3]&16777215|w<<24}function dI(g,A,Q,I,B){const C=MA(Q),E=MA(I),i=MA(B),D=A*4;g[D]=C|E<<8|i<<16|g[D]&4278190080}function ZI(g,A,Q){const I=MA(Q),B=A*4;g[B]=g[B]&16777215|I<<24}new FA,new FA,new CQ,rI(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);function XQ(g){const A=g.clone().normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const Q=2*Math.acos(A.w),I=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),B=I<1e-6?new FA(1,0,0):new FA(A.x,A.y,A.z).divideScalar(I),C=Math.abs(B.x)+Math.abs(B.y)+Math.abs(B.z);let E=B.x/C,i=B.y/C;if(B.z<0){const t=E;E=(1-Math.abs(i))*(E>=0?1:-1),i=(1-Math.abs(t))*(i>=0?1:-1)}const D=E*.5+.5,w=i*.5+.5,o=Math.round(D*255),s=Math.round(w*255);return Math.round(Q*(255/Math.PI))<<16|s<<8|o}function uA(g,A,Q,I){const B=Math.max(-127,Math.min(127,g*127)),C=Math.max(-127,Math.min(127,A*127)),E=Math.max(-127,Math.min(127,Q*127)),i=Math.max(-127,Math.min(127,I*127));return B&255|(C&255)<<8|(E&255)<<16|(i&255)<<24}function DQ(g,A,Q){const I=A*2;for(let B=0;B<9;++B){const C=Math.max(-63,Math.min(63,Q[B]*63))&127,E=B*7,i=E+7,D=Math.floor(E/32),w=E-D*32,o=C<D*32+32){const s=C>>>32-w&4294967295;g[I+D+1]|=s}}}function wQ(g,A,Q){g[A*4+0]=uA(Q[0],Q[1],Q[2],Q[3]),g[A*4+1]=uA(Q[4],Q[5],Q[6],Q[7]),g[A*4+2]=uA(Q[8],Q[9],Q[10],Q[11]),g[A*4+3]=uA(Q[12],Q[13],Q[14],0)}function sQ(g,A,Q){const I=A*4;for(let B=0;B<21;++B){const C=Math.max(-31,Math.min(31,Q[B]*31))&63,E=B*6,i=E+6,D=Math.floor(E/32),w=E-D*32,o=C<D*32+32){const s=C>>>32-w&4294967295;g[I+D+1]|=s}}}class KI{constructor({fileBytes:A,chunkBytes:Q=64*1024}){this.fileBytes=A,this.chunkBytes=Q,this.offset=0,this.chunks=[],this.totalBytes=0,this.gunzip=new kI((I,B)=>{this.chunks.push(I),this.totalBytes+=I.length})}read(A){for(;this.totalBytes=this.fileBytes.length&&this.gunzip.push(new Uint8Array(0),!0),this.totalBytes2)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=Q.getUint32(8,!0),this.shDegree=Q.getUint8(12),this.fractionalBits=Q.getUint8(13),this.flags=Q.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.reserved=Q.getUint8(15),this.parsed=!1}parseSplats(A,Q,I,B,C,E){if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const i=this.reader.read(this.numSplats*3*2),D=new Uint16Array(i.buffer);for(let w=0;w>8)/i,a=((D[o+5]<<24|D[o+4]<<16|D[o+3]<<8)>>8)/i,t=((D[o+8]<<24|D[o+7]<<16|D[o+6]<<8)>>8)/i;A(w,s,a,t)}}else throw new Error("Unreachable");{const i=this.reader.read(this.numSplats);for(let D=0;D=1){const i=new Float32Array(9),D=this.shDegree>=2?new Float32Array(5*3):void 0,w=this.shDegree>=3?new Float32Array(7*3):void 0,o=this.reader.read(this.numSplats*qI[this.shDegree]*3);let s=0;for(let a=0;a{iQ(g,E,i,D,w,o{i&&(B.sh1||(B.sh1=new Uint32Array(I*2)),DQ(B.sh1,E,i)),D&&(B.sh2||(B.sh2=new Uint32Array(I*4)),wQ(B.sh2,E,D)),w&&(B.sh3||(B.sh3=new Uint32Array(I*4)),sQ(B.sh3,E,w))}),{packedArray:g,numSplats:I,extra:B}}function oQ(g){const A=YQ,Q=Math.max(iI,Math.min(eQ,Math.ceil(g/A))),I=Math.ceil(g/(A*Q));return A*Q*I}function mI(g){const A=new bI({fileBytes:g}),Q=A.numSplats,I=oQ(Q),B=new Uint32Array(I*4),C={};return A.parseSplats((E,i,D,w)=>{LI(B,E,i,D,w)},(E,i)=>{ZI(B,E,i)},(E,i,D,w)=>{dI(B,E,i,D,w)},(E,i,D,w)=>{SI(B,E,i,D,w)},(E,i,D,w,o)=>{HI(B,E,i,D,w,o)},(E,i,D,w)=>{i&&(C.sh1||(C.sh1=new Uint32Array(Q*2)),DQ(C.sh1,E,i)),D&&(C.sh2||(C.sh2=new Uint32Array(Q*4)),wQ(C.sh2,E,D)),w&&(C.sh3||(C.sh3=new Uint32Array(Q*4)),sQ(C.sh3,E,w))}),{packedArray:B,numSplats:Q,extra:C}}function pI(g){const A=Math.floor(g.length/32);if(A*32!==g.length)throw new Error("Invalid .splat file size");const Q=oQ(A),I=new Uint32Array(Q*4),B=new Float32Array(g.buffer);for(let C=0;C2)throw new Error(`Invalid .ksplat compression level: ${w}`);const o=B.getFloat32(36,!0)||-1.5,s=B.getFloat32(40,!0)||1.5,a=D,t=oQ(a),c=new Uint32Array(t*4),y={};let n=4096+i*1024;for(let J=0;J=1?new Float32Array(3*3):void 0,gA=j>=2?new Float32Array(5*3):void 0,cA=j>=3?new Float32Array(7*3):void 0,CA=W/2/Y,aA=n+AA,tA=n+m,N=new DataView(g.buffer,tA,R),d=new Float32Array(g.buffer,aA,T*3);for(let L=0;L=1){if(BA){y.sh1||(y.sh1=new Uint32Array(a*2));for(const[KA,bA]of v.entries())BA[KA]=G(k,bA);DQ(y.sh1,L,BA)}if(gA){y.sh2||(y.sh2=new Uint32Array(a*4));for(const[KA,bA]of sA.entries())gA[KA]=G(k,bA);wQ(y.sh2,L,gA)}if(cA){y.sh3||(y.sh3=new Uint32Array(a*4));for(const[KA,bA]of P.entries())cA[KA]=G(k,bA);sQ(y.sh3,L,cA)}}}n+=IA}return{packedArray:c,numSplats:a,extra:y}}const rA=31744,ZA=rA+1;let l=null;function _I({totalSplats:g,readback:A,ordering:Q}){l||(l=new Uint32Array(ZA)),l.fill(0);const I=A.map(D=>new Uint32Array(D.buffer)),B=I[0].length,C=Math.ceil(g/B);let E=0;for(let D=0;D=0;--B){const C=I+l[B];l[B]=I,I=C}for(let B=0;B{(self.URL||self.webkitURL).revokeObjectURL(A)}),I}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(Gt),{name:Q==null?void 0:Q.name})}finally{A&&(self.URL||self.webkitURL).revokeObjectURL(A)}}class fe{constructor(){this.messages={},this.messageIdNext=0,this.worker=new He,this.worker.onmessage=A=>this.onMessage(A)}makeMessageId(){return++this.messageIdNext}makeMessagePromiseId(){const A=this.makeMessageId(),I=new Promise((g,B)=>{this.messages[A]={resolve:g,reject:B}});return{id:A,promise:I}}onMessage(A){const{id:I,result:g,error:B}=A.data,C=this.messages[I];C&&(delete this.messages[I],B?C.reject(B):C.resolve(g))}async call(A,I){const{id:g,promise:B}=this.makeMessagePromiseId();return this.worker.postMessage({name:A,args:I,id:g},{transfer:eB(I)}),B}}let lt=4,iI=0;const Mt=[],Nt=[];async function me(){const Q=Mt.shift();if(Q)return Q;if(iI{Nt.push(A)})}function be(Q){if(iI>lt){iI-=1;return}const A=Nt.shift();if(A){A(Q);return}Mt.push(Q)}async function DQ(Q){const A=await me();try{return await Q(A)}finally{be(A)}}class xe extends j.Loader{constructor(A){super(A),this.fileLoader=new j.FileLoader(A)}load(A,I,g,B){this.fileLoader.setResponseType("arraybuffer"),this.fileLoader.setCrossOrigin(this.crossOrigin),this.fileLoader.setWithCredentials(this.withCredentials),this.fileLoader.setPath(this.path),this.fileLoader.setResourcePath(this.resourcePath),this.fileLoader.setRequestHeader(this.requestHeader),this.fileLoader.load(A,async C=>{if(I){const t=await bI({input:C,fileType:this.fileType,pathOrUrl:A});I(new UA(t))}},g,B)}async loadAsync(A,I){return new Promise((g,B)=>{this.load(A,C=>{g(C)},I,B)})}parse(A){return new ZA({packedSplats:A})}}var kt=(Q=>(Q.PLY="ply",Q.WLG0="wlg0",Q.SPZ="spz",Q.SPLAT="splat",Q.KSPLAT="ksplat",Q))(kt||{});function Ft(Q){const A=new DataView(Q.buffer);if((A.getUint32(0,!0)&16777215)===7957616)return"ply";if(A.getUint32(0,!0)===809978967)return"wlg0";if((A.getUint32(0,!0)&16777215)===559903){const I=RB(Q,4);return new DataView(I.buffer).getUint32(0,!0)===1347635022?"spz":void 0}}function Ke(Q){const A=Q.split(/[?#]/,1)[0],I=Math.max(A.lastIndexOf("/"),A.lastIndexOf("\\")),g=A.slice(I+1),B=g.lastIndexOf(".");return B<=0||B===g.length-1?"":g.slice(B+1).toLowerCase()}async function bI({input:Q,fileType:A,pathOrUrl:I}){const g=Q instanceof ArrayBuffer?new Uint8Array(Q):Q;let B=A;if(!A&&(B=Ft(g),!B&&I)){const C=Ke(I);C==="ply"?B="ply":C==="wlg"?B="wlg0":C==="spz"?B="spz":C==="splat"?B="splat":C==="ksplat"&&(B="ksplat")}if(B==="wlg0")return await DQ(async C=>{const{packedArray:E,numSplats:t}=await C.call("decodeWlg",{fileBytes:g});return{packedArray:E,numSplats:t}});if(B==="ply"){const C=new tI({fileBytes:g});await C.parseHeader();const E=C.numSplats,t=rA(E).maxSplats,s={fileBytes:g,packedArray:new Uint32Array(t*4)};return await DQ(async o=>{const{packedArray:a,numSplats:i,extra:D}=await o.call("unpackPly",s);return{packedArray:a,numSplats:i,extra:D}})}if(B==="spz")return await DQ(async C=>{const{packedArray:E,numSplats:t,extra:s}=await C.call("decodeSpz",{fileBytes:g});return{packedArray:E,numSplats:t,extra:s}});if(B==="splat")return await DQ(async C=>{const{packedArray:E,numSplats:t}=await C.call("decodeAntiSplat",{fileBytes:g});return{packedArray:E,numSplats:t}});if(B==="ksplat")return await DQ(async C=>{const{packedArray:E,numSplats:t,extra:s}=await C.call("decodeKsplat",{fileBytes:g});return{packedArray:E,numSplats:t,extra:s}});throw new Error("Unknown splat file type")}var Ze=`precision highp float;
+precision highp int;
+precision highp sampler2D;
+precision highp usampler2D;
+precision highp isampler2D;
+precision highp sampler2DArray;
+precision highp usampler2DArray;
+precision highp isampler2DArray;
+precision highp sampler3D;
+precision highp usampler3D;
+precision highp isampler3D;
+
+#include
+
+uniform uint targetLayer;
+uniform int targetBase;
+uniform int targetCount;
+
+out uvec4 target;
+
+{{ GLOBALS }}
+
+void produceSplat(int index) {
+ {{ STATEMENTS }}
+}
+
+void main() {
+ int targetIndex = int(targetLayer << SPLAT_TEX_LAYER_BITS) + int(uint(gl_FragCoord.y) << SPLAT_TEX_WIDTH_BITS) + int(gl_FragCoord.x);
+ int index = targetIndex - targetBase;
+
+ if ((index >= 0) && (index < targetCount)) {
+ produceSplat(index);
+ } else {
+ target = uvec4(0u, 0u, 0u, 0u);
+ }
+}`;const K=class K{constructor(A={}){this.maxSplats=0,this.numSplats=0,this.packedArray=null,this.isInitialized=!1,this.target=null,this.source=null,this.needsUpdate=!0,this.extra={},this.dyno=new xI({packedSplats:this}),this.initialized=Promise.resolve(this),this.reinitialize(A)}reinitialize(A){this.isInitialized=!1,A.url||A.fileBytes||A.construct?this.initialized=this.asyncInitialize(A).then(()=>(this.isInitialized=!0,this)):(this.initialize(A),this.isInitialized=!0,this.initialized=Promise.resolve(this))}initialize(A){A.packedArray?(this.packedArray=A.packedArray,this.maxSplats=Math.floor(this.packedArray.length/4),this.maxSplats=Math.floor(this.maxSplats/Z)*Z,this.numSplats=Math.min(this.maxSplats,A.numSplats??Number.POSITIVE_INFINITY)):(this.maxSplats=A.maxSplats??0,this.numSplats=0),this.extra=A.extra??{}}async asyncInitialize(A){let{url:I,fileBytes:g,construct:B}=A;if(I&&(g=await fetch(I).then(async C=>{if(!C.ok)throw new Error(`${C.status} "${C.statusText}" fetching URL: ${I}`);return await C.arrayBuffer()})),g){const C=await bI({input:g,fileType:A.fileType,pathOrUrl:I});this.initialize(C)}if(B){const C=B(this);C instanceof Promise&&await C}}dispose(){this.target&&(this.target.dispose(),this.target=null),this.source&&(this.source.dispose(),this.source=null)}ensureSplats(A){const I=A<=this.maxSplats?this.maxSplats:Math.max(A,2*this.maxSplats),g=this.packedArray?this.packedArray.length/4:0;if(!this.packedArray||I>g){this.maxSplats=rA(I).maxSplats;const B=new Uint32Array(this.maxSplats*4);this.packedArray&&B.set(this.packedArray),this.packedArray=B}return this.packedArray}ensureSplatsSh(A,I){let g,B;if(A===0)return this.ensureSplats(I);if(A===1)g=2,B="sh1";else if(A===2)g=4,B="sh2";else if(A===3)g=4,B="sh3";else throw new Error(`Invalid level: ${A}`);let C=this.extra[B]?this.extra[B].length/g:0;const E=I<=C?C:Math.max(I,2*C);if(!this.extra[B]||E>C){C=rA(E).maxSplats;const t=new Uint32Array(C*g);this.extra[B]&&t.set(this.extra[B]),this.extra[B]=t}return this.extra[B]}getSplat(A){if(!this.packedArray||A>=this.numSplats)throw new Error("Invalid index");return CI(this.packedArray,A)}setSplat(A,I,g,B,C,E){const t=this.ensureSplats(A+1);BI(t,A,I.x,I.y,I.z,g.x,g.y,g.z,B.x,B.y,B.z,B.w,C,E.r,E.g,E.b),this.numSplats=Math.max(this.numSplats,A+1)}pushSplat(A,I,g,B,C){const E=this.ensureSplats(this.numSplats+1);BI(E,this.numSplats,A.x,A.y,A.z,I.x,I.y,I.z,g.x,g.y,g.z,g.w,B,C.r,C.g,C.b),++this.numSplats}forEachSplat(A){if(!(!this.packedArray||!this.numSplats))for(let I=0;I{const C=I,E=Math.ceil(B/Z)*Z;return I+=E,{base:C,count:B}});return{maxSplats:I,mapping:g}}getTexture(){return this.target?this.target.texture:this.source||this.packedArray?this.maybeUpdateSource():K.getEmpty()}maybeUpdateSource(){if(!this.packedArray)throw new Error("No packed splats");if(this.needsUpdate||!this.source){if(this.needsUpdate=!1,this.source){const{width:A,height:I,depth:g}=this.source.image;this.maxSplats!==A*I*g&&(this.source.dispose(),this.source=null)}if(this.source)this.packedArray.buffer!==this.source.image.data.buffer&&(this.source.image.data=new Uint8Array(this.packedArray.buffer));else{const{width:A,height:I,depth:g}=rA(this.maxSplats);this.source=new e.DataArrayTexture(this.packedArray,A,I,g),this.source.format=e.RGBAIntegerFormat,this.source.type=e.UnsignedIntType,this.source.internalFormat="RGBA32UI",this.source.needsUpdate=!0}this.source.needsUpdate=!0}return this.source}static getEmpty(){if(!K.emptySource){const{width:A,height:I,depth:g,maxSplats:B}=rA(1),C=new Uint32Array(B*4);K.emptySource=new e.DataArrayTexture(C,A,I,g),K.emptySource.format=e.RGBAIntegerFormat,K.emptySource.type=e.UnsignedIntType,K.emptySource.internalFormat="RGBA32UI",K.emptySource.needsUpdate=!0}return K.emptySource}prepareProgramMaterial(A){let I=K.generatorProgram.get(A);if(!I){const B=SA({index:"int"},{output:"uvec4"},({index:C})=>{A.inputs.index=C;const E=A.outputs.gsplat;return{output:rg(E)}});K.programTemplate||(K.programTemplate=new fI(Ze)),I=new HI({graph:B,inputs:{index:"index"},outputs:{output:"target"},template:K.programTemplate}),Object.assign(I.uniforms,{targetLayer:{value:0},targetBase:{value:0},targetCount:{value:0}}),K.generatorProgram.set(A,I)}const g=I.prepareMaterial();return K.mesh.material=g,{program:I,material:g}}saveRenderState(A){return{xrPresenting:A.xr.isPresenting,autoClear:A.autoClear,scissorTest:A.getScissorTest()}}resetRenderState(A,I){A.setRenderTarget(null),A.xr.isPresenting=I.xrPresenting,A.autoClear=I.autoClear,A.setScissorTest(I.scissorTest)}generate({generator:A,base:I,count:g,renderer:B}){if(!this.target)throw new Error("Target must be initialized with ensureSplats");if(I+g>this.maxSplats)throw new Error("Base + count exceeds maxSplats");const{program:C,material:E}=this.prepareProgramMaterial(A);C.update();const t=this.saveRenderState(B),s=Math.ceil((I+g)/Z)*Z,o=Z*BQ;for(E.uniforms.targetBase.value=I,E.uniforms.targetCount.value=g;I[eI],value:{texture:UA.getEmpty(),numSplats:0},update:I=>{var g,B;return I.texture=((g=this.packedSplats)==null?void 0:g.getTexture())??UA.getEmpty(),I.numSplats=((B=this.packedSplats)==null?void 0:B.numSplats)??0,I}}),this.packedSplats=A}}class dI extends e.InstancedBufferGeometry{constructor(A,I){super(),this.ordering=A,this.setAttribute("position",new e.BufferAttribute(qe,3)),this.setIndex(new e.BufferAttribute(We,1)),this._maxInstanceCount=A.length,this.instanceCount=I,this.attribute=new e.InstancedBufferAttribute(A,1,!1,1),this.attribute.setUsage(e.DynamicDrawUsage),this.setAttribute("splatIndex",this.attribute)}update(A,I){this.ordering=A,this.attribute.array=A,this.instanceCount=I,this.attribute.addUpdateRange(0,I),this.attribute.needsUpdate=!0}}const qe=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,1,0]),We=new Uint16Array([0,1,2,0,2,3]),jA=class jA{constructor(A){if(this.lastTime=null,this.encodeLinear=!1,this.superXY=1,this.display=null,this.sorting=null,this.pending=null,this.sortingCheck=!1,this.readback=new Uint16Array(0),this.forge=A.forge,this.camera=A.camera,this.viewToWorld=A.viewToWorld??new e.Matrix4,A.target){const{width:I,height:g,doubleBuffer:B}=A.target,C=Math.max(1,Math.min(4,A.target.superXY??1));if(this.superXY=C,I*C>8192||g*C>8192)throw new Error("Target size too large");this.target=new e.WebGLRenderTarget(I*C,g*C,{format:e.RGBAFormat,type:e.UnsignedByteType,colorSpace:e.SRGBColorSpace}),B&&(this.back=new e.WebGLRenderTarget(I*C,g*C,{format:e.RGBAFormat,type:e.UnsignedByteType,colorSpace:e.SRGBColorSpace})),this.encodeLinear=!0}this.onTextureUpdated=A.onTextureUpdated,this.sortRadial=A.sortRadial??!0,this.sortDistance=A.sortDistance,this.sortCoorient=A.sortCoorient,this.depthBias=A.depthBias,this.sort360=A.sort360,this.orderingFreelist=new DB({allocate:I=>new Uint32Array(I),valid:(I,g)=>I.length===g}),this.autoUpdate=!1,this.setAutoUpdate(A.autoUpdate??!1)}dispose(){var A;this.setAutoUpdate(!1),this.target&&(this.target.dispose(),this.target=void 0),this.back&&(this.back.dispose(),this.back=void 0),this.display&&(this.forge.releaseAccumulator(this.display.accumulator),this.display.geometry.dispose(),this.display=null),(A=this.pending)!=null&&A.accumulator&&(this.forge.releaseAccumulator(this.pending.accumulator),this.pending=null)}setAutoUpdate(A){!this.autoUpdate&&A?this.forge.autoViewpoints.push(this):this.autoUpdate&&!A&&(this.forge.autoViewpoints=this.forge.autoViewpoints.filter(I=>I!==this)),this.autoUpdate=A}async prepare({scene:A,camera:I,viewToWorld:g,update:B,forceOrigin:C}){var t;for(g?this.viewToWorld=g:(this.camera=I??this.camera,this.camera&&(this.camera.updateMatrixWorld(),this.viewToWorld=this.camera.matrixWorld.clone()));B??!0;){const s=C?this.viewToWorld:void 0;if(this.forge.updateInternal({scene:A,originToWorld:s}))break;await new Promise(a=>setTimeout(a,10))}const E=this.forge.active;E!==((t=this.display)==null?void 0:t.accumulator)&&(this.forge.active.refCount+=1),await this.sortUpdate({accumulator:E,viewToWorld:this.viewToWorld})}renderTarget({scene:A,camera:I}){var B;const g=this.back??this.target;if(!g)throw new Error("Must initialize ForgeViewpoint with target");if(I=I??this.camera,!I)throw new Error("Must provide camera");if(I instanceof e.PerspectiveCamera){const C=new e.PerspectiveCamera().copy(I,!1);C.aspect=g.width/g.height,C.updateProjectionMatrix(),I=C}this.viewToWorld=I.matrixWorld.clone();try{this.forge.renderer.setRenderTarget(g),this.forge.prepareViewpoint(this),this.forge.renderer.render(A,I)}finally{this.forge.prepareViewpoint(this.forge.defaultView),this.forge.renderer.setRenderTarget(null)}g!==this.target&&([this.target,this.back]=[this.back,this.target]),(B=this.onTextureUpdated)==null||B.call(this,g.texture)}async readTarget(){if(!this.target)throw new Error("Must initialize ForgeViewpoint with target");const{width:A,height:I}=this.target,g=A*I*4;(!this.superPixels||this.superPixels.length0){const{reader:t,doubleSortReader:s,dynoSortRadial:o,dynoOrigin:a,dynoDirection:i,dynoDepthBias:D,dynoSort360:n,dynoSplats:w}=jA.makeSorter(),c=Math.ceil(B/2);this.readback=t.ensureBuffer(c,this.readback);const r=A.toWorld.clone().invert(),y=I.clone().premultiply(r);o.value=this.sort360?!0:this.sortRadial,a.value.set(0,0,0).applyMatrix4(y),i.value.set(0,0,-1).applyMatrix4(y).sub(a.value).normalize(),D.value=this.depthBias??1,n.value=this.sort360??!1,w.packedSplats=A.splats,await t.renderReadback({renderer:this.forge.renderer,reader:s,count:Math.ceil(g/2),readback:this.readback});const G=await DQ(async h=>h.call("sortDoubleSplats",{numSplats:g,readback:this.readback,ordering:E}));this.readback=G.readback,E=G.ordering,C=G.activeSplats}this.updateDisplay({accumulator:A,viewToWorld:I,ordering:E,activeSplats:C}),this.sortingCheck=!1}updateDisplay({accumulator:A,viewToWorld:I,ordering:g,activeSplats:B}){if(!this.display)this.display={accumulator:A,viewToWorld:I,geometry:new dI(g,B)};else{A!==this.display.accumulator&&(this.forge.releaseAccumulator(this.display.accumulator),this.display.accumulator=A),this.display.viewToWorld=I;const C=this.display.geometry.ordering;C.length===g.length?this.display.geometry.update(g,B):(this.display.geometry.dispose(),this.display.geometry=new dI(g,B)),this.orderingFreelist.free(C)}this.forge.viewpoint===this&&this.forge.prepareViewpoint(this)}static makeSorter(){if(!jA.dynos){const A=new gI({value:!0}),I=new hQ({value:new e.Vector3}),g=new hQ({value:new e.Vector3}),B=new EQ({value:1}),C=new gI({value:!1}),E=new xI,t=new pQ,s=SA({index:"int"},{rgba8:"vec4"},({index:o})=>{if(!o)throw new Error("No index");const a={sortRadial:A,sortOrigin:I,sortDirection:g,sortDepthBias:B,sort360:C},i=CA(o,q("int",2)),D=UQ(E,i),n=zI({gsplat:D,...a}),w=UQ(E,wA(i,q("int",1))),c=zI({gsplat:w,...a}),r=mA({vectorType:"vec2",x:n,y:c});return{rgba8:uC(YC(r))}});jA.dynos={dynoSortRadial:A,dynoOrigin:I,dynoDirection:g,dynoDepthBias:B,dynoSort360:C,dynoSplats:E,reader:t,doubleSortReader:s}}return jA.dynos}};jA.EMPTY_TEXTURE=new e.Texture,jA.dynos=null;let fQ=jA;const Ve=gA(`
+ float computeSort(Gsplat gsplat, bool sortRadial, vec3 sortOrigin, vec3 sortDirection, float sortDepthBias, bool sort360) {
+ if (!isGsplatActive(gsplat.flags)) {
+ return INFINITY;
+ }
+
+ vec3 center = gsplat.center - sortOrigin;
+ float biasedDepth = dot(center, sortDirection) + sortDepthBias;
+ if (!sort360 && (biasedDepth <= 0.0)) {
+ return INFINITY;
+ }
+
+ return sortRadial ? length(center) : biasedDepth;
+ }
+`);function zI({gsplat:Q,sortRadial:A,sortOrigin:I,sortDirection:g,sortDepthBias:B,sort360:C}){return KQ({inTypes:{gsplat:T,sortRadial:"bool",sortOrigin:"vec3",sortDirection:"vec3",sortDepthBias:"float",sort360:"bool"},outTypes:{metric:"float"},globals:()=>[hA,Ve],inputs:{gsplat:Q,sortRadial:A,sortOrigin:I,sortDirection:g,sortDepthBias:B,sort360:C},statements:({inputs:E,outputs:t})=>{const{gsplat:s,sortRadial:o,sortOrigin:a,sortDirection:i,sortDepthBias:D,sort360:n}=E;return dA(`
+ ${t.metric} = computeSort(${s}, ${o}, ${a}, ${i}, ${D}, ${n});
+ `)}}).outputs.metric}class QI{constructor(){this.splats=new UA,this.toWorld=new e.Matrix4,this.mapping=[],this.refCount=0,this.splatsVersion=-1,this.mappingVersion=-1}ensureGenerate(A){this.splats.ensureGenerate(A)&&(this.mapping=[])}generateSplats({renderer:A,modifier:I,generators:g,forceUpdate:B,originToWorld:C}){const E=this.mapping.reduce((o,a)=>(o.set(a.node,a),o),new Map);let t=0,s=0;for(const{node:o,generator:a,version:i,base:D,count:n}of g){const w=E.get(o);if((B||a!==(w==null?void 0:w.generator)||i!==(w==null?void 0:w.version)||D!==(w==null?void 0:w.base)||n!==(w==null?void 0:w.count))&&a){const c=I.apply(a);try{this.splats.generate({generator:c,base:D,count:n,renderer:A})}catch(r){o.generator=void 0,o.generatorError=r}t+=1}s=Math.max(s,D+n)}return this.splats.numSplats=s,this.toWorld=C,this.mapping=g,t!==0}hasCorrespondence(A){return this.mapping.length!==A.mapping.length?!1:this.mapping.every(({node:I,base:g,count:B},C)=>{const{node:E,base:t,count:s}=A.mapping[C];return I===E&&g===t&&B===s})}}var Te=`const float LN_SCALE_MIN = -9.0;
+const float LN_SCALE_MAX = 9.0;
+const float LN_RESCALE = (LN_SCALE_MAX - LN_SCALE_MIN) / 254.0;
+
+const uint SPLAT_TEX_WIDTH_BITS = 11u;
+const uint SPLAT_TEX_HEIGHT_BITS = 11u;
+const uint SPLAT_TEX_DEPTH_BITS = 11u;
+const uint SPLAT_TEX_LAYER_BITS = SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;
+
+const uint SPLAT_TEX_WIDTH = 1u << SPLAT_TEX_WIDTH_BITS;
+const uint SPLAT_TEX_HEIGHT = 1u << SPLAT_TEX_HEIGHT_BITS;
+const uint SPLAT_TEX_DEPTH = 1u << SPLAT_TEX_DEPTH_BITS;
+
+const uint SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1u;
+const uint SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1u;
+const uint SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1u;
+
+const uint F16_INF = 0x7c00u;
+const float PI = 3.1415926535897932384626433832795;
+
+const float INFINITY = 1.0 / 0.0;
+const float NEG_INFINITY = -INFINITY;
+
+const float MAX_PIXEL_RADIUS = 512.0;
+const float MIN_ALPHA = 0.01;
+const float MAX_STDDEV = sqrt(8.0);
+
+float sqr(float x) {
+ return x * x;
+}
+
+float pow4(float x) {
+ float x2 = x * x;
+ return x2 * x2;
+}
+
+float pow8(float x) {
+ float x4 = pow4(x);
+ return x4 * x4;
+}
+
+vec3 srgbToLinear(vec3 rgb) {
+ return pow(rgb, vec3(2.2));
+}
+
+vec3 linearToSrgb(vec3 rgb) {
+ return pow(rgb, vec3(1.0 / 2.2));
+}
+
+uint encodeQuatOctXy88R8(vec4 q) {
+
+ if (q.w < 0.0) {
+ q = -q;
+ }
+
+ float theta = 2.0 * acos(q.w);
+ float halfTheta = theta * 0.5;
+ float s = sin(halfTheta);
+
+ vec3 axis = (abs(s) < 1e-6) ? vec3(1.0, 0.0, 0.0) : q.xyz / s;
+
+
+
+ float sum = abs(axis.x) + abs(axis.y) + abs(axis.z);
+ vec2 p = vec2(axis.x, axis.y) / sum;
+
+ if (axis.z < 0.0) {
+ float oldPx = p.x;
+ p.x = (1.0 - abs(p.y)) * (p.x >= 0.0 ? 1.0 : -1.0);
+ p.y = (1.0 - abs(oldPx)) * (p.y >= 0.0 ? 1.0 : -1.0);
+ }
+
+ float u_f = p.x * 0.5 + 0.5;
+ float v_f = p.y * 0.5 + 0.5;
+
+ uint quantU = uint(clamp(round(u_f * 255.0), 0.0, 255.0));
+ uint quantV = uint(clamp(round(v_f * 255.0), 0.0, 255.0));
+
+
+
+ uint angleInt = uint(clamp(round((theta / 3.14159265359) * 255.0), 0.0, 255.0));
+
+
+ return (angleInt << 16u) | (quantV << 8u) | quantU;
+}
+
+vec4 decodeQuatOctXy88R8(uint encoded) {
+
+ uint quantU = encoded & uint(0xFFu);
+ uint quantV = (encoded >> 8u) & uint(0xFFu);
+ uint angleInt = encoded >> 16u;
+
+
+ float u_f = float(quantU) / 255.0;
+ float v_f = float(quantV) / 255.0;
+ vec2 f = vec2(u_f * 2.0 - 1.0, v_f * 2.0 - 1.0);
+
+ vec3 axis = vec3(f.xy, 1.0 - abs(f.x) - abs(f.y));
+ float t = max(-axis.z, 0.0);
+ axis.x += (axis.x >= 0.0) ? -t : t;
+ axis.y += (axis.y >= 0.0) ? -t : t;
+ axis = normalize(axis);
+
+
+ float theta = (float(angleInt) / 255.0) * 3.14159265359;
+ float halfTheta = theta * 0.5;
+ float s = sin(halfTheta);
+ float w = cos(halfTheta);
+
+ return vec4(axis * s, w);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+uvec4 packSplat(vec3 center, vec3 scales, vec4 quaternion, vec4 rgba) {
+ uvec4 uRgba = uvec4(round(clamp(rgba * 255.0, 0.0, 255.0)));
+
+ uint uQuat = encodeQuatOctXy88R8(quaternion);
+
+
+ uvec3 uQuat3 = uvec3(uQuat & 0xffu, (uQuat >> 8u) & 0xffu, (uQuat >> 16u) & 0xffu);
+
+
+ uvec3 uScales = uvec3(
+ (scales.x == 0.0) ? 0u : uint(round(clamp((log(scales.x) - LN_SCALE_MIN) / LN_RESCALE, 0.0, 254.0))) + 1u,
+ (scales.y == 0.0) ? 0u : uint(round(clamp((log(scales.y) - LN_SCALE_MIN) / LN_RESCALE, 0.0, 254.0))) + 1u,
+ (scales.z == 0.0) ? 0u : uint(round(clamp((log(scales.z) - LN_SCALE_MIN) / LN_RESCALE, 0.0, 254.0))) + 1u
+ );
+
+
+ uint word0 = uRgba.r | (uRgba.g << 8u) | (uRgba.b << 16u) | (uRgba.a << 24u);
+ uint word1 = packHalf2x16(center.xy);
+ uint word2 = packHalf2x16(vec2(center.z, 0.0)) | (uQuat3.x << 16u) | (uQuat3.y << 24u);
+ uint word3 = uScales.x | (uScales.y << 8u) | (uScales.z << 16u) | (uQuat3.z << 24u);
+ return uvec4(word0, word1, word2, word3);
+}
+
+void unpackSplat(uvec4 packed, out vec3 center, out vec3 scales, out vec4 quaternion, out vec4 rgba) {
+ uint word0 = packed.x, word1 = packed.y, word2 = packed.z, word3 = packed.w;
+
+ uvec4 uRgba = uvec4(word0 & 0xffu, (word0 >> 8u) & 0xffu, (word0 >> 16u) & 0xffu, (word0 >> 24u) & 0xffu);
+ rgba = vec4(uRgba) / 255.0;
+
+ center = vec4(
+ unpackHalf2x16(word1),
+ unpackHalf2x16(word2 & 0xffffu)
+ ).xyz;
+
+ uvec3 uScales = uvec3(word3 & 0xffu, (word3 >> 8u) & 0xffu, (word3 >> 16u) & 0xffu);
+ scales = vec3(
+ (uScales.x == 0u) ? 0.0 : exp(LN_SCALE_MIN + float(uScales.x - 1u) * LN_RESCALE),
+ (uScales.y == 0u) ? 0.0 : exp(LN_SCALE_MIN + float(uScales.y - 1u) * LN_RESCALE),
+ (uScales.z == 0u) ? 0.0 : exp(LN_SCALE_MIN + float(uScales.z - 1u) * LN_RESCALE)
+ );
+
+ uint uQuat = ((word2 >> 16u) & 0xFFFFu) | ((word3 >> 8u) & 0xFF0000u);
+ quaternion = decodeQuatOctXy88R8(uQuat);
+
+
+}
+
+vec3 quatVec(vec4 q, vec3 v) {
+
+ vec3 t = 2.0 * cross(q.xyz, v);
+ return v + q.w * t + cross(q.xyz, t);
+}
+
+vec4 quatQuat(vec4 q1, vec4 q2) {
+ return vec4(
+ q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,
+ q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x,
+ q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w,
+ q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z
+ );
+}
+
+mat3 scaleQuaternionToMatrix(vec3 s, vec4 q) {
+
+ return mat3(
+ s.x * (1.0 - 2.0 * (q.y * q.y + q.z * q.z)),
+ s.x * (2.0 * (q.x * q.y + q.w * q.z)),
+ s.x * (2.0 * (q.x * q.z - q.w * q.y)),
+ s.y * (2.0 * (q.x * q.y - q.w * q.z)),
+ s.y * (1.0 - 2.0 * (q.x * q.x + q.z * q.z)),
+ s.y * (2.0 * (q.y * q.z + q.w * q.x)),
+ s.z * (2.0 * (q.x * q.z + q.w * q.y)),
+ s.z * (2.0 * (q.y * q.z - q.w * q.x)),
+ s.z * (1.0 - 2.0 * (q.x * q.x + q.y * q.y))
+ );
+}
+
+vec4 slerp(vec4 q1, vec4 q2, float t) {
+
+ float cosHalfTheta = dot(q1, q2);
+
+
+ if (abs(cosHalfTheta) >= 0.999) {
+ return q1;
+ }
+
+
+
+ if (cosHalfTheta < 0.0) {
+ q2 = -q2;
+ cosHalfTheta = -cosHalfTheta;
+ }
+
+
+ float halfTheta = acos(cosHalfTheta);
+ float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);
+
+
+ float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;
+ float ratioB = sin(t * halfTheta) / sinHalfTheta;
+
+
+ return q1 * ratioA + q2 * ratioB;
+}
+
+ivec3 splatTexCoord(int index) {
+ uint x = uint(index) & SPLAT_TEX_WIDTH_MASK;
+ uint y = (uint(index) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK;
+ uint z = uint(index) >> SPLAT_TEX_LAYER_BITS;
+ return ivec3(x, y, z);
+}`,ve=`precision highp float;
+precision highp int;
+
+#include
+
+uniform bool encodeLinear;
+uniform float maxStdDev;
+uniform bool disableFalloff;
+uniform float falloff;
+
+out vec4 fragColor;
+
+in vec4 vRgba;
+in vec2 vSplatUv;
+in vec3 vNdc;
+
+void main() {
+ float z = dot(vSplatUv, vSplatUv);
+ if (z > (maxStdDev * maxStdDev)) {
+ discard;
+ }
+
+ float alpha = vRgba.a;
+ alpha *= mix(1.0, exp(-0.5 * z), falloff);
+ if (alpha < MIN_ALPHA) {
+ discard;
+ }
+
+ vec3 rgb = vRgba.rgb;
+ if (encodeLinear) {
+ rgb = srgbToLinear(rgb);
+ }
+ fragColor = vec4(rgb, alpha);
+}`,Xe=`precision highp float;
+precision highp int;
+precision highp usampler2DArray;
+
+#include
+
+attribute uint splatIndex;
+
+out vec4 vRgba;
+out vec2 vSplatUv;
+out vec3 vNdc;
+
+uniform vec2 renderSize;
+uniform uint numSplats;
+uniform vec4 renderToViewQuat;
+uniform vec3 renderToViewPos;
+uniform float maxStdDev;
+uniform float time;
+uniform float deltaTime;
+uniform bool debugFlag;
+uniform bool enable2DGS;
+uniform float blurAmount;
+uniform float preBlurAmount;
+uniform float clipXY;
+
+uniform usampler2DArray packedSplats;
+
+void main() {
+
+ gl_Position = vec4(0.0, 0.0, 2.0, 1.0);
+
+ if (uint(gl_InstanceID) >= numSplats) {
+ return;
+ }
+ if (splatIndex == 0xffffffffu) {
+
+ return;
+ }
+
+ ivec3 texCoord = ivec3(
+ splatIndex & SPLAT_TEX_WIDTH_MASK,
+ (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,
+ splatIndex >> SPLAT_TEX_LAYER_BITS
+ );
+ uvec4 packed = texelFetch(packedSplats, texCoord, 0);
+
+ vec3 center, scales;
+ vec4 quaternion, rgba;
+ unpackSplat(packed, center, scales, quaternion, rgba);
+
+ if (rgba.a < MIN_ALPHA) {
+ return;
+ }
+ bvec3 zeroScales = equal(scales, vec3(0.0));
+ if (all(zeroScales)) {
+ return;
+ }
+
+
+ vec3 viewCenter = quatVec(renderToViewQuat, center) + renderToViewPos;
+
+
+ if (viewCenter.z >= 0.0) {
+ return;
+ }
+
+
+ vec4 clipCenter = projectionMatrix * vec4(viewCenter, 1.0);
+
+
+ if (abs(clipCenter.z) >= clipCenter.w) {
+ return;
+ }
+
+
+ float clip = clipXY * clipCenter.w;
+ if (abs(clipCenter.x) > clip || abs(clipCenter.y) > clip) {
+ return;
+ }
+
+
+ vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);
+
+ if (enable2DGS && any(zeroScales)) {
+ vRgba = rgba;
+ vSplatUv = position.xy * maxStdDev;
+
+ vec3 offset;
+ if (zeroScales.z) {
+ offset = vec3(vSplatUv.xy * scales.xy, 0.0);
+ } else if (zeroScales.y) {
+ offset = vec3(vSplatUv.x * scales.x, 0.0, vSplatUv.y * scales.z);
+ } else {
+ offset = vec3(0.0, vSplatUv.xy * scales.yz);
+ }
+
+ vec3 viewPos = viewCenter + quatVec(viewQuaternion, offset);
+ gl_Position = projectionMatrix * vec4(viewPos, 1.0);
+ vNdc = gl_Position.xyz / gl_Position.w;
+ return;
+ }
+
+
+ vec3 ndcCenter = clipCenter.xyz / clipCenter.w;
+
+
+ mat3 RS = scaleQuaternionToMatrix(scales, viewQuaternion);
+ mat3 cov3D = RS * transpose(RS);
+
+
+ vec2 focal = 0.5 * renderSize * vec2(projectionMatrix[0][0], projectionMatrix[1][1]);
+ float invZ = 1.0 / viewCenter.z;
+ vec2 J1 = focal * invZ;
+ vec2 J2 = -(J1 * viewCenter.xy) * invZ;
+ mat3 J = mat3(
+ J1.x, 0.0, J2.x,
+ 0.0, J1.y, J2.y,
+ 0.0, 0.0, 0.0
+ );
+
+
+
+
+
+
+
+
+ mat3 cov2D = transpose(J) * cov3D * J;
+ float a = cov2D[0][0];
+ float d = cov2D[1][1];
+ float b = cov2D[0][1];
+
+
+ a += preBlurAmount;
+ d += preBlurAmount;
+
+
+ float detOrig = a * d - b * b;
+ a += blurAmount;
+ d += blurAmount;
+ float det = a * d - b * b;
+
+
+ float blurAdjust = sqrt(max(0.0, detOrig / det));
+ rgba.a *= blurAdjust;
+ if (rgba.a < MIN_ALPHA) {
+ return;
+ }
+
+
+ float eigenAvg = 0.5 * (a + d);
+ float eigenDelta = sqrt(max(0.0, eigenAvg * eigenAvg - det));
+ float eigen1 = eigenAvg + eigenDelta;
+ float eigen2 = eigenAvg - eigenDelta;
+
+ vec2 eigenVec1 = normalize(vec2((abs(b) < 0.001) ? 1.0 : b, eigen1 - a));
+ vec2 eigenVec2 = vec2(eigenVec1.y, -eigenVec1.x);
+
+ float scale1 = position.x * min(MAX_PIXEL_RADIUS, maxStdDev * sqrt(eigen1));
+ float scale2 = position.y * min(MAX_PIXEL_RADIUS, maxStdDev * sqrt(eigen2));
+
+
+ vec2 pixelOffset = eigenVec1 * scale1 + eigenVec2 * scale2;
+ vec2 ndcOffset = (2.0 / renderSize) * pixelOffset;
+ vec3 ndc = vec3(ndcCenter.xy + ndcOffset, ndcCenter.z);
+
+ vRgba = rgba;
+ vSplatUv = position.xy * maxStdDev;
+ vNdc = ndc;
+ gl_Position = vec4(ndc.xy * clipCenter.w, clipCenter.zw);
+}`;let GI=null;function je(){return GI||(e.ShaderChunk.splatDefines=Te,GI={splatVertex:Xe,splatFragment:ve}),GI}const OI=5;let YI=!1,uI=!1,Rt;const Jt=e.Scene.prototype.add;e.Scene.prototype.add=function(Q){return YI=YI||Q instanceof ZA,uI=uI||Q instanceof mQ,Jt.call(this,Q),this};const ze=e.Scene.prototype.onBeforeRender;e.Scene.prototype.onBeforeRender=function(Q){if(YI){if(!uI){const A=Rt||new mQ({renderer:Q});this.add(A)}e.Scene.prototype.onBeforeRender=ze,e.Scene.prototype.add=Jt}};const oA=class oA extends e.Mesh{constructor(A){const I=oA.makeUniforms(),g=je(),B=new e.ShaderMaterial({glslVersion:e.GLSL3,vertexShader:g.splatVertex,fragmentShader:g.splatFragment,uniforms:I,transparent:!0,blending:e.NormalBlending,depthTest:!0,depthWrite:!1,side:e.DoubleSide});super(PI,B),this.autoViewpoints=[],this.rotateToAccumulator=new qQ({value:new e.Quaternion}),this.translateToAccumulator=new hQ({value:new e.Vector3}),this.lastFrame=-1,this.lastUpdateTime=null,this.defaultCameras=[],this.pendingUpdate=null,this.envViewpoint=null,this.frustumCulled=!1,this.renderer=A.renderer,this.material=B,this.uniforms=I;const C=SA({gsplat:T},{gsplat:T},({gsplat:E})=>{if(!E)throw new Error("gsplat not defined");return E=SI(E,{rotate:this.rotateToAccumulator,translate:this.translateToAccumulator}),{gsplat:E}});this.modifier=new yt(C),this.autoUpdate=A.autoUpdate??!0,this.preUpdate=A.preUpdate??!1,this.originDistance=A.originDistance??1,this.maxStdDev=A.maxStdDev??Math.sqrt(8),this.enable2DGS=A.enable2DGS??!0,this.preBlurAmount=A.preBlurAmount??0,this.blurAmount=A.blurAmount??.3,this.falloff=A.falloff??1,this.clipXY=A.clipXY??1.4,this.active=new QI,this.accumulatorCount=1,this.freeAccumulators=[];for(let E=0;E<1;++E)this.freeAccumulators.push(new QI),this.accumulatorCount+=1;this.defaultView=new fQ({...A.view,autoUpdate:!0,forge:this}),this.viewpoint=this.defaultView,this.prepareViewpoint(this.viewpoint),this.clock=A.clock?yB(A.clock):new e.Clock,Rt=this}static makeUniforms(){return{renderSize:{value:new e.Vector2},numSplats:{value:0},renderToViewQuat:{value:new e.Quaternion},renderToViewPos:{value:new e.Vector3},maxStdDev:{value:1},enable2DGS:{value:!1},preBlurAmount:{value:0},blurAmount:{value:.3},falloff:{value:1},clipXY:{value:1.4},packedSplats:{type:"t",value:UA.getEmpty()},time:{value:0},deltaTime:{value:0},encodeLinear:{value:!1},debugFlag:{value:!1}}}canAllocAccumulator(){return this.freeAccumulators.length>0||this.accumulatorCount=OI)return null;A=new QI,this.accumulatorCount+=1}return A.refCount=1,A}releaseAccumulator(A){A.refCount-=1,A.refCount===0&&this.freeAccumulators.push(A)}newViewpoint(A){return new fQ({...A,forge:this})}onBeforeRender(A,I,g){var D,n;const B=this.time??this.clock.getElapsedTime(),C=B-(this.viewpoint.lastTime??B);this.viewpoint.lastTime=B;const E=A.info.render.frame,t=E!==this.lastFrame;this.lastFrame=E;const s=this.viewpoint;if(s===this.defaultView){if(t)if(!A.xr.isPresenting)this.defaultView.viewToWorld=g.matrixWorld.clone(),this.defaultCameras=[this.defaultView.viewToWorld];else{const w=A.xr.getCamera().cameras;this.defaultCameras=[w[0].matrixWorld,w[1].matrixWorld],this.defaultView.viewToWorld=Oe(this.defaultCameras)??new e.Matrix4}this.autoUpdate&&this.update({scene:I,viewToWorld:this.defaultView.viewToWorld})}if(t&&(this.uniforms.time.value=B,this.uniforms.deltaTime.value=C,this.uniforms.debugFlag.value=performance.now()/1e3%2<1),s.target)this.uniforms.renderSize.value.set(s.target.width,s.target.height);else{const w=A.getSize(this.uniforms.renderSize.value);if(w.x===1&&w.y===1){const c=(D=A.xr.getSession())==null?void 0:D.renderState.baseLayer;c&&(w.x=c.framebufferWidth,w.y=c.framebufferHeight)}}this.uniforms.encodeLinear.value=s.encodeLinear,this.uniforms.maxStdDev.value=this.maxStdDev,this.uniforms.enable2DGS.value=this.enable2DGS,this.uniforms.preBlurAmount.value=this.preBlurAmount,this.uniforms.blurAmount.value=this.blurAmount,this.uniforms.falloff.value=this.falloff,this.uniforms.clipXY.value=this.clipXY;const o=((n=s.display)==null?void 0:n.accumulator.toWorld)??new e.Matrix4,a=g.matrixWorld.clone().invert();o.clone().premultiply(a).decompose(this.uniforms.renderToViewPos.value,this.uniforms.renderToViewQuat.value,new e.Vector3)}prepareViewpoint(A){if(this.viewpoint=A??this.viewpoint,this.viewpoint.display){const{accumulator:I,geometry:g}=this.viewpoint.display;this.uniforms.numSplats.value=I.splats.numSplats,this.uniforms.packedSplats.value=I.splats.getTexture(),this.geometry=g}else this.uniforms.numSplats.value=0,this.uniforms.packedSplats.value=UA.getEmpty(),this.geometry=PI}update({scene:A,viewToWorld:I}){const g=this.matrixWorld.clone();this.preUpdate?this.updateInternal({scene:A,originToWorld:g,viewToWorld:I}):(this.pendingUpdate={scene:A,originToWorld:g},setTimeout(()=>{if(this.pendingUpdate){const{scene:B,originToWorld:C}=this.pendingUpdate;this.pendingUpdate=null,this.updateInternal({scene:B,originToWorld:C,viewToWorld:I})}},1))}updateInternal({scene:A,originToWorld:I,viewToWorld:g}){var D;if(!this.canAllocAccumulator())return!1;I||(I=this.active.toWorld),g=g??I.clone();const B=this.time??this.clock.getElapsedTime(),C=B-(this.lastUpdateTime??B);this.lastUpdateTime=B;const E=this.active.mapping.reduce((n,w)=>(n.set(w.node,w),n),new Map),{generators:t,globalEdits:s}=this.compileScene(A);for(const n of t)(D=n.frameUpdate)==null||D.call(n,{object:n,time:B,deltaTime:C,viewToWorld:g,globalEdits:s});for(const n of t){const w=E.get(n),c=n.generator?n.numSplats:0;(n.generator!==(w==null?void 0:w.generator)||c!==(w==null?void 0:w.count))&&n.updateVersion()}const a=!EI({matrix1:I,matrix2:this.active.toWorld,maxDistance:this.originDistance})||t.length!==E.size||t.some(n=>{var w;return n.version!==((w=E.get(n))==null?void 0:w.version)});let i=null;if(a){if(i=this.maybeAllocAccumulator(),!i)throw new Error("Unreachable");const n=!EI({matrix1:I,matrix2:this.active.toWorld,maxDistance:1e-5,minCoorient:.99999}),c=t.map((l,k)=>{const R=E.get(l);return R?[l.version-R.version,R.base,l]:[Number.POSITIVE_INFINITY,l.version,l]}).sort((l,k)=>l[0]!==k[0]?l[0]-k[0]:l[1]-k[1]).map(([l,k,R])=>R),r=c.map(l=>l.numSplats),{maxSplats:y,mapping:G}=i.splats.generateMapping(r),h=c.map((l,k)=>{const{base:R,count:d}=G[k];return{node:l,generator:l.generator,version:l.version,base:R,count:d}});I.clone().invert().decompose(this.translateToAccumulator.value,this.rotateToAccumulator.value,new e.Vector3),i.ensureGenerate(y),i.generateSplats({renderer:this.renderer,modifier:this.modifier,generators:h,forceUpdate:n,originToWorld:I}),i.splatsVersion=this.active.splatsVersion+1;const M=i.hasCorrespondence(this.active);i.mappingVersion=this.active.mappingVersion+(M?0:1),this.releaseAccumulator(this.active),this.active=i,this.prepareViewpoint()}return setTimeout(()=>{for(const n of this.autoViewpoints)n.autoPoll({accumulator:i??void 0})},1),!0}compileScene(A){const I=[];A.traverse(B=>{B instanceof TQ&&I.push(B)});const g=new Set;return A.traverseVisible(B=>{if(B instanceof HQ){let C=B.parent;for(;C!=null&&!(C instanceof ZA);)C=C.parent;C==null&&g.add(B)}}),{generators:I,globalEdits:Array.from(g)}}async renderEnvMap({renderer:A,scene:I,worldCenter:g,size:B=256,near:C=.1,far:E=1e3,hideObjects:t=[],update:s=!1}){var n,w;if(this.envViewpoint||(this.envViewpoint=this.newViewpoint({sort360:!0})),!oA.cubeRender||oA.cubeRender.target.width!==B||oA.cubeRender.near!==C||oA.cubeRender.far!==E){oA.cubeRender&&oA.cubeRender.target.dispose();const c=new e.WebGLCubeRenderTarget(B,{format:e.RGBAFormat,generateMipmaps:!0,minFilter:e.LinearMipMapLinearFilter}),r=new e.CubeCamera(C,E,c);oA.cubeRender={target:c,camera:r,near:C,far:E}}oA.pmrem||(oA.pmrem=new e.PMREMGenerator(A??this.renderer));const o=new e.Matrix4().setPosition(g);await((n=this.envViewpoint)==null?void 0:n.prepare({scene:I,viewToWorld:o,update:s}));const{target:a,camera:i}=oA.cubeRender;i.position.copy(g);const D=new Map;for(const c of t)D.set(c,c.visible),c.visible=!1;this.prepareViewpoint(this.envViewpoint),i.update(A??this.renderer,I),this.prepareViewpoint(this.defaultView);for(const[c,r]of D.entries())c.visible=r;return(w=oA.pmrem)==null?void 0:w.fromCubemap(a.texture).texture}recurseSetEnvMap(A,I){A.traverse(g=>{if(g instanceof e.Mesh)if(Array.isArray(g.material))for(const B of g.material)B instanceof e.MeshStandardMaterial&&(B.envMap=I);else g.material instanceof e.MeshStandardMaterial&&(g.material.envMap=I)})}getRgba({generator:A,rgba:I}){const g=this.active.mapping.find(({node:B})=>B===A);if(!g)throw new Error("Generator not found");return I=I??new JI,I.fromPackedSplats({packedSplats:this.active.splats,base:g.base,count:g.count,renderer:this.renderer}),I}async readRgba({generator:A,rgba:I}){return I=this.getRgba({generator:A,rgba:I}),I.read()}};oA.cubeRender=null,oA.pmrem=null;let mQ=oA;const PI=new dI(new Uint32Array(1),0);SA({packedSplats:ZQ,index:"int"},{gsplat:T},({packedSplats:Q,index:A})=>{if(!Q||!A)throw new Error("Invalid input");return{gsplat:UQ(Q,A)}});function Oe(Q){if(Q.length===0)return null;const A=new e.Vector3,I=new e.Quaternion,g=new e.Vector3,B=[],C=[];for(const E of Q)E.decompose(A,I,g),B.push(A),C.push(I);return new e.Matrix4().compose(lB(B),MB(C),new e.Vector3(1,1,1))}class Pe{constructor({fileBytes:A}){this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A,this.reader=new JB({fileBytes:this.fileBytes});const I=new DataView(this.reader.read(16).buffer);if(I.getUint32(0,!0)!==1347635022)throw new Error("Invalid SPZ file");if(this.version=I.getUint32(4,!0),this.version<1||this.version>2)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=I.getUint32(8,!0),this.shDegree=I.getUint8(12),this.fractionalBits=I.getUint8(13),this.flags=I.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.reserved=I.getUint8(15),this.parsed=!1}parseSplats(A,I,g,B,C,E){if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const t=this.reader.read(this.numSplats*3*2),s=new Uint16Array(t.buffer);for(let o=0;o>8)/t,D=((s[a+5]<<24|s[a+4]<<16|s[a+3]<<8)>>8)/t,n=((s[a+8]<<24|s[a+7]<<16|s[a+6]<<8)>>8)/t;A(o,i,D,n)}}else throw new Error("Unreachable");{const t=this.reader.read(this.numSplats);for(let s=0;s=1){const t=new Float32Array(9),s=this.shDegree>=2?new Float32Array(5*3):void 0,o=this.shDegree>=3?new Float32Array(7*3):void 0,a=this.reader.read(this.numSplats*_e[this.shDegree]*3);let i=0;for(let D=0;D[Yt],value:{numSplats:this.numSplats,numBones:this.numBones,skinTexture:this.skinTexture,boneTexture:this.boneTexture}})}modify(A){return ID(A,this.uniform)}setRestQuatPos(A,I,g){const B=A*16;this.boneData[B+0]=I.x,this.boneData[B+1]=I.y,this.boneData[B+2]=I.z,this.boneData[B+3]=I.w,this.boneData[B+4]=g.x,this.boneData[B+5]=g.y,this.boneData[B+6]=g.z,this.boneData[B+7]=0,this.boneData[B+8]=0,this.boneData[B+9]=0,this.boneData[B+10]=0,this.boneData[B+11]=1,this.boneData[B+12]=0,this.boneData[B+13]=0,this.boneData[B+14]=0,this.boneData[B+15]=0}setBoneQuatPos(A,I,g){const B=A*16,C=new e.Quaternion(this.boneData[B+0],this.boneData[B+1],this.boneData[B+2],this.boneData[B+3]),E=new e.Vector3(this.boneData[B+4],this.boneData[B+5],this.boneData[B+6]),t=C.clone().invert(),s=g.clone().sub(E);s.applyQuaternion(t),t.multiply(I);const o=new e.Quaternion(s.x,s.y,s.z,0).multiply(C);this.boneData[B+8]=t.x,this.boneData[B+9]=t.y,this.boneData[B+10]=t.z,this.boneData[B+11]=t.w,this.boneData[B+12]=.5*o.x,this.boneData[B+13]=.5*o.y,this.boneData[B+14]=.5*o.z,this.boneData[B+15]=.5*o.w}setSplatBones(A,I,g){const B=A*4;this.skinData[B+0]=Math.min(255,Math.max(0,Math.round(g.x*255)))+(I.x<<8),this.skinData[B+1]=Math.min(255,Math.max(0,Math.round(g.y*255)))+(I.y<<8),this.skinData[B+2]=Math.min(255,Math.max(0,Math.round(g.z*255)))+(I.z<<8),this.skinData[B+3]=Math.min(255,Math.max(0,Math.round(g.w*255)))+(I.w<<8)}updateBones(){this.boneTexture.needsUpdate=!0,this.mesh.needsUpdate=!0}}const dt={type:"GsplatSkinning"},Yt=gA(`
+ struct GsplatSkinning {
+ int numSplats;
+ int numBones;
+ usampler2DArray skinTexture;
+ sampler2D boneTexture;
+ };
+`),QD=gA(`
+ void applyGsplatSkinning(
+ int numSplats, int numBones,
+ usampler2DArray skinTexture, sampler2D boneTexture,
+ int splatIndex, inout vec3 center, inout vec4 quaternion
+ ) {
+ if ((splatIndex < 0) || (splatIndex >= numSplats)) {
+ return;
+ }
+
+ uvec4 skinData = texelFetch(skinTexture, splatTexCoord(splatIndex), 0);
+
+ float weights[4];
+ weights[0] = float(skinData.x & 0xffu) / 255.0;
+ weights[1] = float(skinData.y & 0xffu) / 255.0;
+ weights[2] = float(skinData.z & 0xffu) / 255.0;
+ weights[3] = float(skinData.w & 0xffu) / 255.0;
+
+ uint boneIndices[4];
+ boneIndices[0] = (skinData.x >> 8u) & 0xffu;
+ boneIndices[1] = (skinData.y >> 8u) & 0xffu;
+ boneIndices[2] = (skinData.z >> 8u) & 0xffu;
+ boneIndices[3] = (skinData.w >> 8u) & 0xffu;
+
+ vec4 quat = vec4(0.0);
+ vec4 dual = vec4(0.0);
+ for (int i = 0; i < 4; i++) {
+ if (weights[i] > 0.0) {
+ int boneIndex = int(boneIndices[i]);
+ vec4 boneQuat = vec4(0.0, 0.0, 0.0, 1.0);
+ vec4 boneDual = vec4(0.0);
+ if (boneIndex < numBones) {
+ boneQuat = texelFetch(boneTexture, ivec2(2, boneIndex), 0);
+ boneDual = texelFetch(boneTexture, ivec2(3, boneIndex), 0);
+ }
+
+ if ((i > 0) && (dot(quat, boneQuat) < 0.0)) {
+ // Flip sign if next blend is pointing in the opposite direction
+ boneQuat = -boneQuat;
+ boneDual = -boneDual;
+ }
+ quat += weights[i] * boneQuat;
+ dual += weights[i] * boneDual;
+ }
+ }
+
+ // Normalize dual quaternion
+ float norm = length(quat);
+ quat /= norm;
+ dual /= norm;
+ vec3 translate = vec3(
+ 2.0 * (-dual.w * quat.x + dual.x * quat.w - dual.y * quat.z + dual.z * quat.y),
+ 2.0 * (-dual.w * quat.y + dual.x * quat.z + dual.y * quat.w - dual.z * quat.x),
+ 2.0 * (-dual.w * quat.z - dual.x * quat.y + dual.y * quat.x + dual.z * quat.w)
+ );
+
+ center = quatVec(quat, center) + translate;
+ quaternion = quatQuat(quat, quaternion);
+ }
+`);function ID(Q,A){return new f({inTypes:{gsplat:T,skinning:dt},outTypes:{gsplat:T},globals:()=>[Yt,QD],inputs:{gsplat:Q,skinning:A},statements:({inputs:g,outputs:B})=>{const{skinning:C}=g,{gsplat:E}=B;return dA(`
+ ${E} = ${g.gsplat};
+ if (isGsplatActive(${E}.flags)) {
+ applyGsplatSkinning(
+ ${C}.numSplats, ${C}.numBones,
+ ${C}.skinTexture, ${C}.boneTexture,
+ ${E}.index, ${E}.center, ${E}.quaternion
+ );
+ }
+ `)}}).outputs.gsplat}function gD({splats:Q,extents:A,stepSize:I=1,pointRadius:g=.01,pointShadowScale:B=2,opacity:C=1,color:E}){const s=new e.Vector3,o=new e.Vector3,a=new e.Quaternion(0,0,0,1);E==null&&(E=(D,n)=>D.set(.55+.45*Math.cos(n.x*1),.55+.45*Math.cos(n.y*1),.55+.45*Math.cos(n.z*1)));const i=new e.Color;for(let D=A.min.z;D=g)return;const h=new e.Vector3().addVectors(r,y).normalize(),M=new e.Vector3().addVectors(y,G).normalize(),l=new e.Vector3().addVectors(G,r).normalize();a(c+1,r,h,l),a(c+1,h,y,M),a(c+1,l,M,G),a(c+1,h,M,l)}for(const c of[-1,1])for(const r of[-1,1])for(const y of[-1,1]){const G=new e.Vector3(c,0,0),h=new e.Vector3(0,r,0),M=new e.Vector3(0,0,y);a(0,G,h,M)}const i=Object.values(s),D=new e.Vector3(C,C,E),n=new e.Quaternion,w=typeof t=="function"?new e.Color:t;for(const c of i)n.setFromUnitVectors(new e.Vector3(0,0,-1),c),typeof t=="function"&&t(w,c),c.multiplyScalar(I),c.add(A),Q.pushSplat(c,D,n,1,w)}function ED({text:Q,font:A,fontSize:I,color:g,rgb:B,dotRadius:C,textAlign:E,lineHeight:t}){A=A??"Arial",I=I??32,g=g??new e.Color(1,1,1),C=C??.8,E=E??"start",t=t??1;const s=Q.split(`
+`),o=document.createElement("canvas"),a=o.getContext("2d");if(!a)throw new Error("Failed to create canvas context");a.font=`${I}px ${A}`,a.textAlign=E;const i=a.measureText(""),D=i.fontBoundingBoxAscent+i.fontBoundingBoxDescent;let n=Number.POSITIVE_INFINITY,w=Number.NEGATIVE_INFINITY,c=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(let U=0;U0){const V=v/255;d.set(S-.5*(h-1),.5*(M-1)-U,0),R.pushSplat(d,Y,m,V,B)}J+=4}const x=new ZA({packedSplats:R});return x.recolor=g,x}function tD({url:Q,dotRadius:A,subXY:I,forEachSplat:g}){return A=A??.8,I=Math.max(1,Math.floor(I??1)),new ZA({constructSplats:async B=>new Promise((C,E)=>{const t=new Image;t.onerror=E,t.onload=()=>{const{width:s,height:o}=t,a=document.createElement("canvas");a.width=s,a.height=o;const i=a.getContext("2d");if(!i){E(new Error("Failed to create canvas context"));return}i.imageSmoothingEnabled=!0,i.imageSmoothingQuality="high";const D=Math.round(s/I),n=Math.round(o/I);i.drawImage(t,0,0,D,n);try{const w=i.getImageData(0,0,D,n),c=new Uint8Array(w.data.buffer),r=new e.Vector3,y=new e.Vector3().setScalar(A),G=new e.Quaternion(0,0,0,1),h=new e.Color;let M=0;for(let l=0;l0){let Y=d/255;h.set(c[R+0]/255,c[R+1]/255,c[R+2]/255),r.set(k-.5*(D-1),.5*(n-1)-l,0),y.setScalar(A),G.set(0,0,0,1);let m=!0;if(g){const J=g(D,n,M,r,y,G,Y,h);Y=J??Y,m=J!==null}m&&B.pushSplat(r,y,G,Y,h)}M+=1}C()}catch(w){E(w)}},t.src=Q})})}function iD({box:Q,cells:A,dotScale:I,color:g,opacity:B}){A.x=Math.max(1,Math.round(A.x)),A.y=Math.max(1,Math.round(A.y)),A.z=Math.max(1,Math.round(A.z)),B=B??1;const C=A.x*A.y*A.z,E=q("int",A.x),t=q("int",A.y);q("int",A.z);const s=pA(0),o=new TQ({numSplats:C,generator:SA({index:"int"},{gsplat:T},({index:i})=>{if(!i)throw new Error("index is undefined");const D=kI(i,E),n=$Q(i,E),w=kI(n,t),c=$Q(n,t),r=mA({vectorType:"ivec3",x:D,y:w,z:c}),y=dC(s),G=mA({vectorType:"ivec2",x:i,y}),h=UE(G),M=q("vec3",Q.min),l=q("vec3",Q.max),k=LQ(l,M),R=$Q(wA(tQ(r),h),q("vec3",A));let d,Y,m;g?(d=q("float",g.r),Y=q("float",g.g),m=q("float",g.b)):{r:d,g:Y,b:m}=YQ(R).outputs;const J=mA({vectorType:"vec4",r:d,g:Y,b:m,a:q("float",B)}),x=wA(M,CA(k,R)),U=tQ(q("float",I)),S=q("vec4",new e.Quaternion(0,0,0,1));let v=rQ({flags:II("uint","GSPLAT_FLAG_ACTIVE"),index:i,center:x,scales:U,quaternion:S,rgba:J});return v=a.modify(v),{gsplat:v}},{globals:()=>[hA]}),update:({time:i})=>{s.value=i,a.update(o),o.updateVersion()}}),a=new CQ;return o}const sD={box:new e.Box3(new e.Vector3(-1,-1,-1),new e.Vector3(1,1,1)),density:100,fallDirection:new e.Vector3(-1,-3,1).normalize(),fallVelocity:.02,wanderScale:.04,wanderVariance:2,color1:new e.Color(1,1,1),color2:new e.Color(.5,.5,1),minScale:.001,maxScale:.005,anisoScale:new e.Vector3(1,1,1)},oD={box:new e.Box3(new e.Vector3(-2,-1,-2),new e.Vector3(2,5,2)),density:10,fallDirection:new e.Vector3(0,-1,0),fallVelocity:2,wanderScale:.1,wanderVariance:1,color1:new e.Color(1,1,1),color2:new e.Color(.25,.25,.5),minScale:.005,maxScale:.01,anisoScale:new e.Vector3(.1,1,.1)};function aD({box:Q,minY:A,numSplats:I,density:g,anisoScale:B,minScale:C,maxScale:E,fallDirection:t,fallVelocity:s,wanderScale:o,wanderVariance:a,color1:i,color2:D,opacity:n,onFrame:w}){Q=Q??new e.Box3(new e.Vector3(-1,-1,-1),new e.Vector3(1,1,1));const c=(Q.max.x-Q.min.x)*(Q.max.y-Q.min.y)*(Q.max.z-Q.min.z);g=g??100,I=I??Math.max(1,Math.min(1e6,Math.round(c*g)));const r=pA(C??.001),y=pA(E??.005),G=vA(((B==null?void 0:B.clone())??new e.Vector3(1,1,1)).normalize()),h=vA((t??new e.Vector3(0,-1,0)).normalize()),M=pA(s??.02),l=pA(o??.01),k=pA(a??2),R=vA(i??new e.Color(1,1,1)),d=vA(D??new e.Color(.5,.5,1)),Y=pA(n??1),m=pA(0),J=vA(new e.Vector3(0,0,0)),x=vA(Q.min),U=vA(Q.max),S=pA(A??Number.NEGATIVE_INFINITY),v=LQ(U,x),V=new TQ({numSplats:I,generator:SA({index:"int"},{gsplat:T},({index:$})=>{if(!$)throw new Error("index not defined");const X=FI($),eA=YQ(X).outputs.w;let AA=tQ(X),sA=AI(CA(eA,q("float",100)));sA=RI(CA(II("float","PI"),sA)),sA=wA(r,CA(sA,LQ(y,r)));const DA=CA(sA,G),YA=AI(CA(eA,q("float",10))),yA=AI(eA),nA=SB(R,d,yA),L=CA(nA,YA),GA=FI(mA({vectorType:"ivec2",x:$,y:q("int",6837)}));let BA=tQ(GA),lA=CA(YQ(GA).outputs.w,k);lA=wA(m,lA),AA=wA(AA,J);const MA=uB(AA,q("vec3",new e.Vector3(1,1,1)));AA=wA(x,CA(v,MA));const LA=q("vec4",new e.Quaternion(0,0,0,1));BA=RI(wA(tQ(lA),BA)),BA=CA(BA,l);let NA=wA(AA,BA),xA=YQ(NA).outputs.y;xA=UB(S,xA),NA=mA({vector:NA,y:xA});let kA=rQ({flags:II("uint","GSPLAT_FLAG_ACTIVE"),index:$,center:NA,scales:DA,quaternion:LA,rgb:L,opacity:Y});return kA=_.modify(kA),{gsplat:kA}},{globals:()=>[hA]}),update:({object:$,time:X,deltaTime:eA})=>{m.value=X,_.update(V);const AA=h.value.clone().multiplyScalar(M.value*eA);J.value.add(AA),$.visible=Y.value>0,w==null||w({object:$,time:X,deltaTime:eA}),V.updateVersion()}}),_=new CQ;return{snow:V,min:x,max:U,minY:S,color1:R,color2:d,opacity:Y,fallVelocity:M,wanderVariance:k,wanderScale:l,fallDirection:h,minScale:r,maxScale:y,anisoScale:G}}const eD=Object.freeze(Object.defineProperty({__proto__:null,DEFAULT_RAIN:oD,DEFAULT_SNOW:sD,snowBox:aD,staticBox:iD},Symbol.toStringTag,{value:"Module"})),uQ=class uQ{static createButton(A,I={}){const g=navigator.xr;if(!g)return null;const B=g,C=document.createElement("button");A.xr.enabled=!0,A.xr.setReferenceSpaceType("local");function E(){let i=null;async function D(c){console.log("onSessionStarted"),c.addEventListener("end",n),await A.xr.setSession(c),C.textContent="EXIT VR",i=c}function n(){console.log("onSessionEnded"),i==null||i.removeEventListener("end",n),C.textContent="ENTER VR",i=null}C.style.display="",C.style.cursor="pointer",C.style.left="calc(50% - 100px)",C.style.width="200px",C.style.height="100px",C.textContent="ENTER VR";const w={...I,optionalFeatures:[...I.optionalFeatures||[]]};C.onmouseenter=()=>{C.style.opacity="1.0"},C.onmouseleave=()=>{C.style.opacity="0.5"},C.onclick=()=>{i===null?(console.log("requesting session"),B.requestSession("immersive-vr",w).then(D)):(console.log("ending session"),i.end())}}function t(){C.style.display="none",C.style.cursor="auto",C.style.left="calc(50% - 75px)",C.style.width="150px",C.onmouseenter=null,C.onmouseleave=null,C.onclick=null}function s(){t(),C.textContent="VR NOT SUPPORTED"}function o(i){t(),console.warn("Exception when trying to call xr.isSessionSupported",i),C.textContent="VR NOT ALLOWED"}function a(i){i.style.position="absolute",i.style.bottom="20px",i.style.padding="12px 6px",i.style.border="1px solid #fff",i.style.borderRadius="4px",i.style.background="rgba(0,0,0,0.1)",i.style.color="#fff",i.style.font="normal 13px sans-serif",i.style.textAlign="center",i.style.opacity="0.5",i.style.outline="none",i.style.zIndex="999"}return C.id="VRButton",C.style.display="none",a(C),B.isSessionSupported("immersive-vr").then(i=>{i?E():s(),i&&uQ.xrSessionIsGranted&&C.click()}).catch(o),C}static registerSessionGrantedListener(){const A=navigator.xr;if(!A)return null;const I=A;/WebXRViewer\//i.test(navigator.userAgent)||I.addEventListener("sessiongranted",()=>{uQ.xrSessionIsGranted=!0})}};uQ.xrSessionIsGranted=!1;let sI=uQ;sI.registerSessionGrantedListener();const DD=.5,nD=.5,cD=0;var cI=(Q=>(Q.w="wrist",Q.t0="thumb-metacarpal",Q.t1="thumb-phalanx-proximal",Q.t2="thumb-phalanx-distal",Q.t3="thumb-tip",Q.i0="index-finger-metacarpal",Q.i1="index-finger-phalanx-proximal",Q.i2="index-finger-phalanx-intermediate",Q.i3="index-finger-phalanx-distal",Q.i4="index-finger-tip",Q.m0="middle-finger-metacarpal",Q.m1="middle-finger-phalanx-proximal",Q.m2="middle-finger-phalanx-intermediate",Q.m3="middle-finger-phalanx-distal",Q.m4="middle-finger-tip",Q.r0="ring-finger-metacarpal",Q.r1="ring-finger-phalanx-proximal",Q.r2="ring-finger-phalanx-intermediate",Q.r3="ring-finger-phalanx-distal",Q.r4="ring-finger-tip",Q.p0="pinky-finger-metacarpal",Q.p1="pinky-finger-phalanx-proximal",Q.p2="pinky-finger-phalanx-intermediate",Q.p3="pinky-finger-phalanx-distal",Q.p4="pinky-finger-tip",Q))(cI||{});const KI=Object.keys(cI),wD=KI.length,rD={w:0,t0:1,t1:2,t2:3,t3:4,i0:5,i1:6,i2:7,i3:8,i4:9,m0:10,m1:11,m2:12,m3:13,m4:14,r0:15,r1:16,r2:17,r3:18,r4:19,p0:20,p1:21,p2:22,p3:23,p4:24},kQ={w:.02,t0:.02,t1:.014,t2:.0115,t3:.0085,i0:.022,i1:.012,i2:.0085,i3:.0075,i4:.0065,m0:.021,m1:.012,m2:.008,m3:.0075,m4:.0065,r0:.019,r1:.011,r2:.0075,r3:.007,r4:.006,p0:.012,p1:.01,p2:.007,p3:.0065,p4:.0055},ut=[["w","t0","t1","t2","t3"],["w","i0","i1","i2","i3","i4"],["w","m0","m1","m2","m3","m4"],["w","r0","r1","r2","r3","r4"],["w","p0","p1","p2","p3","p4"]],Ut=[[8,10,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6],[8,19,14,8,6]],hD=["t3","i4","m4","r4","p4"],yD=["i4","m4","r4","p4"];var ZI=(Q=>(Q.left="left",Q.right="right",Q))(ZI||{});const oI=Object.keys(ZI);class GD{constructor(){this.hands={},this.last={},this.values={},this.tests={},this.lastTests={},this.updated=!1}update({xr:A,xrFrame:I}){const g=A.getSession();if(!g)return;const B=A.getReferenceSpace();if(B&&I.getJointPose){this.last=this.hands,this.lastTests=this.tests,this.hands={},this.values={},this.tests={};for(const C of g.inputSources){if(!C.hand)continue;const E=C.handedness;this.hands[E]={};for(const t of KI){const s=C.hand.get(cI[t]);if(s){const o=I.getJointPose(s,B);if(o){const{position:a,orientation:i}=o.transform;this.hands[E][t]={position:new j.Vector3(a.x,a.y,a.z),quaternion:new j.Quaternion(i.x,i.y,i.z,i.w),radius:o.radius||.001}}}}}for(const C of oI)for(const{key:E,value:t}of[{key:`${C}AllTips`,value:this.allTipsTouching(C)},{key:`${C}IndexThumb`,value:this.touching(C,"i4",C,"t3")},{key:`${C}MiddleThumb`,value:this.touching(C,"m4",C,"t3")},{key:`${C}RingThumb`,value:this.touching(C,"r4",C,"t3")},{key:`${C}PinkyThumb`,value:this.touching(C,"p4",C,"t3")},{key:`${C}TriTips`,value:this.triTipsTouching(C)}])this.values[E]=t,this.tests[E]=t===1?!0:t===0?!1:this.lastTests[E]??!1}}makeGhostMesh(){const A=new j.Vector3,I=new j.Vector3(.01,.01,.01),g=new j.Quaternion(0,0,0,1),B=new j.Color(1,1,1),C=Math.PI*3,E=new j.Color(1,1,1);let t=1;const s=new ZA({onFrame:()=>{let o=0;for(const a of oI){const i=this.values[`${a}MiddleThumb`],D=this.hands[a];for(const[n,w]of ut.entries())for(let c=1;c.8&&(d*=Math.sqrt(1-((l-.8)/.2)**2)),I.set(.65*d,.5*d,.003),B.set(.55+.45*Math.sin(A.x*C),.55+.45*Math.sin(A.y*C),.55+.45*Math.sin(A.z*C)),a==="right"&&B.set(1-B.r,1-B.g,1-B.b),B.lerp(E,i),t=.75}s.packedSplats.setSplat(o,A,I,g,t,B),o+=1}}}s.packedSplats.numSplats=o,s.packedSplats.needsUpdate=!0,s.numSplats=o}});return s}distance(A,I,g,B,C=!1){const E=C?this.last[A]:this.hands[A],t=C?this.last[g]:this.hands[g],s=E==null?void 0:E[I],o=t==null?void 0:t[B];return!s||!o?Number.POSITIVE_INFINITY:s.position.distanceTo(o.position)}separation(A,I,g,B,C=!1){const E=this.distance(A,I,g,B,C);return E===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:E-kQ[I]-kQ[B]}touching(A,I,g,B,C=!1){const E=this.separation(A,I,g,B,C);return E===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:1-Math.max(0,Math.min(1,E/.01-cD))}allTipsTouching(A,I=!1){return Math.min(this.touching(A,"t3",A,"i4",I),this.touching(A,"i4",A,"m4",I),this.touching(A,"m4",A,"r4",I),this.touching(A,"r4",A,"p4",I))}triTipsTouching(A,I=!1){return Math.min(this.touching(A,"t3",A,"i4",I),this.touching(A,"i4",A,"m4",I),this.touching(A,"m4",A,"t3",I))}}class lD{constructor({xrHands:A,control:I,moveInertia:g,rotateInertia:B}){this.lastGrip={},this.lastPivot=new j.Vector3,this.rotateVelocity=0,this.velocity=new j.Vector3,this.xrHands=A,this.control=I,this.moveInertia=g??DD,this.rotateInertia=B??nD}update(A){var C,E,t,s,o;const I={};for(const a of oI){const i=this.xrHands.hands[a];i&&this.xrHands.tests[`${a}MiddleThumb`]&&(I[a]=new j.Vector3().add(((C=i.t3)==null?void 0:C.position)??new j.Vector3).add(((E=i.i4)==null?void 0:E.position)??new j.Vector3).add(((t=i.m4)==null?void 0:t.position)??new j.Vector3).add(((s=i.r4)==null?void 0:s.position)??new j.Vector3).add(((o=i.p4)==null?void 0:o.position)??new j.Vector3).multiplyScalar(1/5))}if(I.left&&I.right&&this.lastGrip.left&&this.lastGrip.right){const a=I.left.clone().add(I.right).multiplyScalar(.5),i=this.lastGrip.left.clone().add(this.lastGrip.right).multiplyScalar(.5);this.lastPivot=a;const D=a.clone().applyMatrix4(this.control.matrix);D.sub(i.clone().applyMatrix4(this.control.matrix)),D.multiplyScalar(1/A),this.velocity.lerp(D,1-Math.exp(-20*A));const n=Math.atan2(I.left.z-a.z,I.left.x-a.x),w=Math.atan2(this.lastGrip.left.z-i.z,this.lastGrip.left.x-i.x);let c=n-w;c>Math.PI?c-=Math.PI*2:c<-Math.PI&&(c+=Math.PI*2);const r=c/A,y=Math.exp(-20*A);this.rotateVelocity=this.rotateVelocity*y+r*(1-y)}else if(this.rotateVelocity*=Math.exp(-A/this.rotateInertia),I.left&&this.lastGrip.left){const a=I.left.clone().applyMatrix4(this.control.matrix);a.sub(this.lastGrip.left.clone().applyMatrix4(this.control.matrix)),a.multiplyScalar(1/A),this.velocity.lerp(a,1-Math.exp(-20*A))}else if(I.right&&this.lastGrip.right){const a=I.right.clone().applyMatrix4(this.control.matrix);a.sub(this.lastGrip.right.clone().applyMatrix4(this.control.matrix)),a.multiplyScalar(1/A),this.velocity.lerp(a,1-Math.exp(-20*A))}else this.velocity.multiplyScalar(Math.exp(-A/this.moveInertia));const g=this.lastPivot.clone().negate(),B=new j.Matrix4().makeTranslation(g).premultiply(new j.Matrix4().makeRotationY(this.rotateVelocity*A)).premultiply(new j.Matrix4().makeTranslation(this.lastPivot));this.control.matrix.multiply(B),this.control.matrix.decompose(this.control.position,this.control.quaternion,this.control.scale),this.control.updateMatrixWorld(!0),this.control.position.sub(this.velocity.clone().multiplyScalar(A)),this.lastGrip=I}}const MD=1,ND=2,kD=.002,FD=.006,RD=.0015,JD=.15,dD=.15,YD=.1,uD=2,UD=200,SD=400,LD=50,pD={KeyW:new e.Vector3(0,0,-1),KeyS:new e.Vector3(0,0,1),KeyA:new e.Vector3(-1,0,0),KeyD:new e.Vector3(1,0,0),KeyR:new e.Vector3(0,1,0),KeyF:new e.Vector3(0,-1,0)},HD={ArrowUp:new e.Vector3(0,0,-1),ArrowDown:new e.Vector3(0,0,1),ArrowLeft:new e.Vector3(-1,0,0),ArrowRight:new e.Vector3(1,0,0),PageUp:new e.Vector3(0,1,0),PageDown:new e.Vector3(0,-1,0)},fD={KeyQ:new e.Vector3(0,0,1),KeyE:new e.Vector3(0,0,-1)},mD={Home:new e.Vector3(0,-1,0),End:new e.Vector3(0,1,0),Insert:new e.Vector3(-1,0,0),Delete:new e.Vector3(1,0,0)};class bD{constructor({canvas:A}){this.lastTime=0,this.fpsMovement=new St({}),this.pointerControls=new Lt({canvas:A})}update(A){const I=performance.now(),g=(I-(this.lastTime||I))/1e3;this.lastTime=I,this.fpsMovement.update(g,A),this.pointerControls.update(g,A)}}class St{constructor({moveSpeed:A,rollSpeed:I,stickThreshold:g,rotateSpeed:B,keycodeMoveMapping:C,keycodeRotateMapping:E,gamepadMapping:t,capsMultiplier:s,shiftMultiplier:o,ctrlMultiplier:a,xr:i}={}){this.enable=!0,this.moveSpeed=A??MD,this.rollSpeed=I??ND,this.stickThreshold=g??YD,this.rotateSpeed=B??uD,this.keycodeMoveMapping=C??{...pD,...HD},this.keycodeRotateMapping=E??{...fD,...mD},this.gamepadMapping=t??{4:"rollLeft",5:"rollRight",6:"ctrl",7:"shift"},this.capsMultiplier=s??10,this.shiftMultiplier=o??5,this.ctrlMultiplier=a??1/5,this.xr=i,this.keydown={},this.keycode={},document.addEventListener("keydown",D=>{this.keydown[D.key]=!0,this.keycode[D.code]=!0}),document.addEventListener("keyup",D=>{this.keydown[D.key]=!1,this.keycode[D.code]=!1})}update(A,I){var a,i;if(!this.enable)return;const g=[new e.Vector2,new e.Vector2],B=navigator.getGamepads()[0];B&&(g[0].set(B.axes[0],B.axes[1]),g[1].set(B.axes[2],B.axes[3]));const C=(B==null?void 0:B.buttons.map(D=>D.pressed))||[],E=Array.from(((i=(a=this.xr)==null?void 0:a.getSession())==null?void 0:i.inputSources)??[]);for(const D of E){const n=D.gamepad;if(n)switch(D.handedness){case"none":{g[0].x+=n.axes[0],g[0].y+=n.axes[1],g[1].x+=n.axes[2],g[1].y+=n.axes[3];break}case"left":{g[0].x+=n.axes[2],g[0].y+=n.axes[3];break}case"right":{g[1].x+=n.axes[2],g[1].y+=n.axes[3];break}}}for(const D of g)D.x=Math.abs(D.x)>=this.stickThreshold?D.x:0,D.y=Math.abs(D.y)>=this.stickThreshold?D.y:0;const t=new e.Vector3(g[1].x,g[1].y,0).multiplyScalar(this.rotateSpeed);for(const[D,n]of Object.entries(this.keycodeRotateMapping))this.keycode[D]&&t.add(n);for(const D in this.gamepadMapping)if(C[Number.parseInt(D)])switch(this.gamepadMapping[D]){case"rollLeft":t.z+=1;break;case"rollRight":t.z-=1;break}if(t.multiply(new e.Vector3(this.rotateSpeed,this.rotateSpeed,this.rollSpeed)),t.manhattanLength()>0){t.multiplyScalar(A);const D=new e.Euler().setFromQuaternion(I.quaternion,"YXZ");D.y-=t.x,D.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,D.x-t.y)),D.z=Math.max(-Math.PI,Math.min(Math.PI,D.z+t.z)),I.quaternion.setFromEuler(D)}const s=new e.Vector3(g[0].x,0,g[0].y);for(const[D,n]of Object.entries(this.keycodeMoveMapping))this.keycode[D]&&s.add(n);let o=1;this.keydown.CapsLock&&(o*=this.capsMultiplier),(this.keycode.ShiftLeft||this.keycode.ShiftRight)&&(o*=this.shiftMultiplier),(this.keycode.ControlLeft||this.keycode.ControlRight)&&(o*=this.ctrlMultiplier);for(const D in this.gamepadMapping)if(C[Number.parseInt(D)])switch(this.gamepadMapping[D]){case"shift":o*=this.shiftMultiplier;break;case"ctrl":o*=this.ctrlMultiplier;break}s.applyQuaternion(I.quaternion),I.position.add(s.multiplyScalar(this.moveSpeed*o*A))}}class Lt{constructor({canvas:A,rotateSpeed:I,slideSpeed:g,scrollSpeed:B,reverseRotate:C,reverseSlide:E,reverseSwipe:t,reverseScroll:s,moveInertia:o,rotateInertia:a,doublePress:i}){this.enable=!0,this.canvas=A,this.rotateSpeed=I??kD,this.slideSpeed=g??FD,this.scrollSpeed=B??RD,this.reverseRotate=C??!1,this.reverseSlide=E??!1,this.reverseSwipe=t??!1,this.reverseScroll=s??!1,this.moveInertia=o??dD,this.rotateInertia=a??JD,this.doublePress=i??(()=>{}),this.doublePressLimitMs=SD,this.doublePressDistance=LD,this.lastUp=null,this.rotating=null,this.sliding=null,this.dualPress=!1,this.scroll=new e.Vector3,this.rotateVelocity=new e.Vector3,this.moveVelocity=new e.Vector3,A.addEventListener("pointerdown",n=>{const w=this.getPointerPosition(n),c=w.clone(),r=w.clone(),y=!this.rotating&&(n.pointerType!=="mouse"||n.button===0),{pointerId:G,timeStamp:h}=n;if(y)this.rotating={initial:c,last:r,position:w,pointerId:G,timeStamp:h},A.setPointerCapture(n.pointerId),this.dualPress=!1;else if(!this.sliding){const M=n.pointerType==="mouse"?n.button:void 0;this.sliding={initial:c,last:r,position:w,pointerId:G,button:M,timeStamp:h},A.setPointerCapture(n.pointerId),this.dualPress=this.rotating!=null&&h-this.rotating.timeStamp{var r,y;((r=this.rotating)==null?void 0:r.pointerId)===n.pointerId?(this.rotating=null,A.releasePointerCapture(n.pointerId),this.dualPress&&this.sliding&&(A.releasePointerCapture(this.sliding.pointerId),this.sliding=null)):((y=this.sliding)==null?void 0:y.pointerId)===n.pointerId&&(this.sliding=null,A.releasePointerCapture(n.pointerId),this.dualPress&&this.rotating&&(A.releasePointerCapture(this.rotating.pointerId),this.rotating=null));const w=this.getPointerPosition(n),c=this.lastUp;if(this.lastUp={position:w,time:n.timeStamp},c&&c.position.distanceTo(w){var w,c;((w=this.rotating)==null?void 0:w.pointerId)===n.pointerId?this.rotating.position=this.getPointerPosition(n):((c=this.sliding)==null?void 0:c.pointerId)===n.pointerId&&(this.sliding.position=this.getPointerPosition(n))}),A.addEventListener("contextmenu",n=>{n.preventDefault()}),A.addEventListener("wheel",n=>{this.scroll.add(new e.Vector3(n.deltaX,n.deltaY,n.deltaZ)),n.preventDefault()})}getPointerPosition(A){const I=this.canvas.getBoundingClientRect();return new e.Vector2(A.clientX-I.left,A.clientY-I.top)}update(A,I){if(!this.enable)return;if(this.dualPress&&this.rotating&&this.sliding){const B=[this.rotating.position.clone().sub(this.rotating.last),this.sliding.position.clone().sub(this.sliding.last)],C=B[0].dot(B[1]);if(C>=.2){const E=B[0].clone().add(B[1]),t=new e.Vector3(E.x,-E.y,0);t.multiplyScalar(this.slideSpeed*(this.reverseSwipe?1:-1)),t.applyQuaternion(I.quaternion),I.position.add(t),this.moveVelocity=t.clone().multiplyScalar(1/A)}else if(C<=-.2){const E=this.sliding.last.clone().sub(this.rotating.last),t=E.length();E.multiplyScalar(1/t).normalize();const s=new e.Vector2(-E.y,E.x),o=[B[0].dot(E),B[1].dot(E)],a=[B[0].dot(s),B[1].dot(s)],i=this.rotating.last.clone().add(this.sliding.last).multiplyScalar(.5);let D=new e.Vector3;if(I instanceof e.Camera){const G=new e.Vector2(i.x/this.canvas.clientWidth*2-1,-(i.y/this.canvas.clientHeight)*2+1),h=new e.Raycaster;h.setFromCamera(G,I),D=h.ray.direction}const n=o[1]-o[0],w=D.multiplyScalar(n*this.slideSpeed);I.position.add(w),this.moveVelocity=w.clone().multiplyScalar(1/A);const c=[Math.atan(a[0]/(-.5*t)),Math.atan(a[1]/(.5*t))],r=.5*(c[0]+c[1]),y=new e.Euler().setFromQuaternion(I.quaternion,"YXZ");y.z=Math.max(-Math.PI,Math.min(Math.PI,y.z+.5*r)),I.quaternion.setFromEuler(y)}this.rotating.last.copy(this.rotating.position),this.sliding.last.copy(this.sliding.position)}else{const B=new e.Vector3;if(this.rotating&&!this.dualPress){const E=this.rotating.position.clone().sub(this.rotating.last);this.rotating.last.copy(this.rotating.position),B.set(E.x,E.y,0),B.multiplyScalar(this.rotateSpeed*(this.reverseRotate?-1:1)),this.rotateVelocity=B.clone().multiplyScalar(1/A)}else this.rotateVelocity.multiplyScalar(Math.exp(-A/this.rotateInertia)),B.addScaledVector(this.rotateVelocity,A);const C=new e.Euler().setFromQuaternion(I.quaternion,"YXZ");if(C.y-=B.x,C.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,C.x-B.y)),C.z*=Math.exp(-0*A),I.quaternion.setFromEuler(C),this.sliding&&!this.dualPress){const E=this.sliding.position.clone().sub(this.sliding.last);this.sliding.last.copy(this.sliding.position);const t=this.sliding.button!==2?new e.Vector3(E.x,0,E.y):new e.Vector3(E.x,-E.y,0);t.multiplyScalar(this.slideSpeed*(this.reverseSlide?-1:1)),t.applyQuaternion(I.quaternion),I.position.add(t),this.moveVelocity=t.clone().multiplyScalar(1/A)}else this.moveVelocity.multiplyScalar(Math.exp(-A/this.moveInertia)),I.position.addScaledVector(this.moveVelocity,A)}const g=this.scroll.multiplyScalar(this.scrollSpeed);g.set(g.x,g.z,g.y),this.reverseScroll&&g.multiplyScalar(-1),g.applyQuaternion(I.quaternion),I.position.add(g),this.scroll.set(0,0,0)}}exports.FINGER_TIPS=yD;exports.ForgeControls=bD;exports.ForgeRenderer=mQ;exports.ForgeViewpoint=fQ;exports.FpsMovement=St;exports.HANDS=oI;exports.Hand=ZI;exports.HandMovement=lD;exports.JOINT_IDS=KI;exports.JOINT_INDEX=rD;exports.JOINT_RADIUS=kQ;exports.JOINT_SEGMENTS=ut;exports.JOINT_SEGMENT_STEPS=Ut;exports.JOINT_TIPS=hD;exports.JointEnum=cI;exports.NUM_JOINTS=wD;exports.PackedSplats=UA;exports.PlyReader=tI;exports.PointerControls=Lt;exports.Readback=pQ;exports.Sint8ToFloat=aB;exports.SplatAccumulator=QI;exports.SplatEdit=HQ;exports.SplatEditRgbaBlendMode=Dt;exports.SplatEditSdf=nt;exports.SplatEditSdfType=et;exports.SplatEdits=ct;exports.SplatFileType=kt;exports.SplatGenerator=TQ;exports.SplatLoader=xe;exports.SplatMesh=ZA;exports.SplatModifier=yt;exports.SplatSkinning=AD;exports.SplatTransformer=CQ;exports.SpzReader=Pe;exports.Uint8ToFloat=oB;exports.VRButton=sI;exports.XrHands=GD;exports.constructAxes=BD;exports.constructGrid=gD;exports.constructSpherePoints=CD;exports.dyno=le;exports.flipPixels=rB;exports.floatToSint8=dQ;exports.floatToUint8=HA;exports.fromHalf=PA;exports.generators=eD;exports.getSplatFileType=Ft;exports.imageSplats=tD;exports.isAndroid=cB;exports.isMobile=nB;exports.isOculus=wB;exports.pixelsToPngUrl=hB;exports.setPackedSplat=BI;exports.textSplats=ED;exports.toHalf=OA;exports.unpackSplat=CI;exports.unpackSplats=bI;exports.utils=xs;
diff --git a/dist/forge.d.ts b/dist/forge.d.ts
new file mode 100644
index 0000000..4e8ac3d
--- /dev/null
+++ b/dist/forge.d.ts
@@ -0,0 +1,3398 @@
+declare module "dyno/types" {
+ import type * as THREE from "three";
+ export type BoolTypes = "bool" | "bvec2" | "bvec3" | "bvec4";
+ export type IntTypes = "int" | "ivec2" | "ivec3" | "ivec4";
+ export type UintTypes = "uint" | "uvec2" | "uvec3" | "uvec4";
+ export type AllIntTypes = IntTypes | UintTypes;
+ export type FloatTypes = "float" | "vec2" | "vec3" | "vec4";
+ export type ScalarTypes = "uint" | "int" | "float";
+ export type Vector2Types = "vec2" | "ivec2" | "uvec2";
+ export type Vector3Types = "vec3" | "ivec3" | "uvec3";
+ export type Vector4Types = "vec4" | "ivec4" | "uvec4";
+ export type VectorTypes = Vector2Types | Vector3Types | Vector4Types;
+ export type MatFloatTypes = "mat2" | "mat2x2" | "mat2x3" | "mat2x4" | "mat3" | "mat3x2" | "mat3x3" | "mat3x4" | "mat4" | "mat4x2" | "mat4x3" | "mat4x4";
+ export type SquareMatTypes = "mat2" | "mat3" | "mat4" | "mat2x2" | "mat3x3" | "mat4x4";
+ export type AllFloatTypes = FloatTypes | MatFloatTypes;
+ export type SignedTypes = IntTypes | FloatTypes;
+ export type AllSignedTypes = SignedTypes | MatFloatTypes;
+ export type ValueTypes = FloatTypes | IntTypes | UintTypes;
+ export type AllValueTypes = AllFloatTypes | IntTypes | UintTypes;
+ export type SimpleTypes = BoolTypes | AllValueTypes;
+ export type VectorElementType = A extends FloatTypes ? "float" : A extends IntTypes ? "int" : A extends UintTypes ? "uint" : never;
+ export type SameSizeVec = T extends ScalarTypes ? "float" : T extends "vec2" | "ivec2" | "uvec2" ? "vec2" : T extends "vec3" | "ivec3" | "uvec3" ? "vec3" : T extends "vec4" | "ivec4" | "uvec4" ? "vec4" : never;
+ export type SameSizeUvec = T extends ScalarTypes ? "uint" : T extends "vec2" | "ivec2" | "uvec2" ? "uvec2" : T extends "vec3" | "ivec3" | "uvec3" ? "uvec3" : T extends "vec4" | "ivec4" | "uvec4" ? "uvec4" : never;
+ export type SameSizeIvec = T extends ScalarTypes ? "int" : T extends "vec2" | "ivec2" | "uvec2" ? "ivec2" : T extends "vec3" | "ivec3" | "uvec3" ? "ivec3" : T extends "vec4" | "ivec4" | "uvec4" ? "ivec4" : never;
+ export type SamplerTypes = "sampler2D" | "sampler2DArray" | "sampler3D" | "samplerCube";
+ export type UsamplerTypes = "usampler2D" | "usampler2DArray" | "usampler3D" | "usamplerCube";
+ export type IsamplerTypes = "isampler2D" | "isampler2DArray" | "isampler3D" | "isamplerCube";
+ export type NormalSamplerTypes = SamplerTypes | UsamplerTypes | IsamplerTypes;
+ export type SamplerShadowTypes = "sampler2DShadow" | "sampler2DArrayShadow" | "samplerCubeShadow";
+ export type AllSamplerTypes = NormalSamplerTypes | SamplerShadowTypes;
+ export type Sampler2DTypes = "sampler2D" | "usampler2D" | "isampler2D" | "sampler2DShadow";
+ export type Sampler2DArrayTypes = "sampler2DArray" | "usampler2DArray" | "isampler2DArray" | "sampler2DArrayShadow";
+ export type Sampler3DTypes = "sampler3D" | "usampler3D" | "isampler3D";
+ export type SamplerCubeTypes = "samplerCube" | "usamplerCube" | "isamplerCube" | "samplerCubeShadow";
+ export function isBoolType(type: DynoType): boolean;
+ export function isScalarType(type: DynoType): boolean;
+ export function isIntType(type: DynoType): boolean;
+ export function isUintType(type: DynoType): boolean;
+ export function isFloatType(type: DynoType): boolean;
+ export function isMatFloatType(type: DynoType): boolean;
+ export function isAllFloatType(type: DynoType): boolean;
+ export function isVector2Type(type: DynoType): boolean;
+ export function isVector3Type(type: DynoType): boolean;
+ export function isVector4Type(type: DynoType): boolean;
+ export function isVectorType(type: DynoType): boolean;
+ export function isMat2(type: DynoType): boolean;
+ export function isMat3(type: DynoType): boolean;
+ export function isMat4(type: DynoType): boolean;
+ export function vectorElementType(type: A): VectorElementType;
+ export function vectorDim(type: A): number;
+ export function sameSizeVec(type: T): SameSizeVec;
+ export function sameSizeUvec(type: T): SameSizeUvec;
+ export function sameSizeIvec(type: T): SameSizeIvec;
+ export type BaseType = SimpleTypes | AllSamplerTypes;
+ export type UserType = {
+ type: string;
+ };
+ export type DynoType = BaseType | UserType;
+ export type DynoJsType = T extends "bool" ? boolean : T extends "uint" ? number : T extends "int" ? number : T extends "float" ? number : T extends "bvec2" ? [boolean, boolean] : T extends "uvec2" ? THREE.Vector2 | [number, number] | Uint32Array : T extends "ivec2" ? THREE.Vector2 | [number, number] | Int32Array : T extends "vec2" ? THREE.Vector2 | [number, number] | Float32Array : T extends "bvec3" ? [boolean, boolean, boolean] : T extends "uvec3" ? THREE.Vector3 | [number, number, number] | Uint32Array : T extends "ivec3" ? THREE.Vector3 | [number, number, number] | Int32Array : T extends "vec3" ? THREE.Vector3 | THREE.Color | [number, number, number] | Float32Array : T extends "bvec4" ? [boolean, boolean, boolean, boolean] : T extends "uvec4" ? THREE.Vector4 | [number, number, number, number] | Uint32Array : T extends "ivec4" ? THREE.Vector4 | [number, number, number, number] | Int32Array : T extends "vec4" ? THREE.Vector4 | THREE.Quaternion | [number, number, number, number] | Float32Array : T extends "mat2" ? THREE.Matrix2 | Float32Array : T extends "mat2x2" ? THREE.Matrix2 | Float32Array : T extends "mat2x3" ? Float32Array : T extends "mat2x4" ? Float32Array : T extends "mat3" ? THREE.Matrix3 | Float32Array : T extends "mat3x2" ? Float32Array : T extends "mat3x3" ? THREE.Matrix3 | Float32Array : T extends "mat3x4" ? Float32Array : T extends "mat4" ? THREE.Matrix4 | Float32Array : T extends "mat4x2" ? Float32Array : T extends "mat4x3" ? Float32Array : T extends "mat4x4" ? THREE.Matrix4 | Float32Array : T extends "usampler2D" ? THREE.Texture : T extends "isampler2D" ? THREE.Texture : T extends "sampler2D" ? THREE.Texture : T extends "sampler2DShadow" ? THREE.Texture : T extends "usampler2DArray" ? THREE.DataArrayTexture : T extends "isampler2DArray" ? THREE.DataArrayTexture : T extends "sampler2DArray" ? THREE.DataArrayTexture : T extends "sampler2DArrayShadow" ? THREE.Texture : T extends "usampler3D" ? THREE.DataArrayTexture : T extends "isampler3D" ? THREE.DataArrayTexture : T extends "sampler3D" ? THREE.DataArrayTexture : T extends "usamplerCube" ? THREE.DataArrayTexture : T extends "isamplerCube" ? THREE.DataArrayTexture : T extends "samplerCube" ? THREE.DataArrayTexture : T extends "samplerCubeShadow" ? THREE.Texture : unknown;
+ export function typeLiteral(type: DynoType): string;
+ export function numberAsInt(value: number): string;
+ export function numberAsUint(value: number): string;
+ export function numberAsFloat(value: number): string;
+}
+declare module "dyno/value" {
+ import type { Dyno, IOTypes } from "dyno/base";
+ import { type DynoJsType, type DynoType, type SimpleTypes } from "dyno/types";
+ export type DynoVal = DynoValue | HasDynoOut;
+ export function valType(val: DynoVal): T;
+ export interface HasDynoOut {
+ dynoOut(): DynoValue;
+ }
+ export class DynoValue {
+ type: T;
+ private __isDynoValue;
+ constructor(type: T);
+ }
+ export class DynoOutput extends DynoValue {
+ dyno: Dyno;
+ key: string;
+ constructor(dyno: Dyno, key: string);
+ }
+ export class DynoLiteral extends DynoValue {
+ literal: string;
+ constructor(type: T, literal: string);
+ getLiteral(): string;
+ }
+ export function dynoLiteral(type: T, literal: string): DynoLiteral;
+ export class DynoConst extends DynoLiteral {
+ value: DynoJsType;
+ constructor(type: T, value: DynoJsType);
+ getLiteral(): string;
+ }
+ export function dynoConst(type: T, value: DynoJsType): DynoConst;
+ export function literalZero(type: SimpleTypes): string;
+ export function literalOne(type: SimpleTypes): string;
+ export function literalNegOne(type: SimpleTypes): string;
+}
+declare module "dyno/base" {
+ import type { IUniform } from "three";
+ import type { DynoType } from "dyno/types";
+ import { type DynoVal, DynoValue, type HasDynoOut } from "dyno/value";
+ export class Compilation {
+ globals: Set;
+ statements: string[];
+ uniforms: Record;
+ declares: Set;
+ updaters: (() => void)[];
+ sequence: number;
+ indent: string;
+ constructor({ indent }?: {
+ indent?: string;
+ });
+ nextSequence(): number;
+ }
+ export type IOTypes = Record;
+ type GenerateContext = {
+ inputs: {
+ [K in keyof InTypes]?: string;
+ };
+ outputs: {
+ [K in keyof OutTypes]?: string;
+ };
+ compile: Compilation;
+ };
+ export class Dyno {
+ inTypes: InTypes;
+ outTypes: OutTypes;
+ inputs: {
+ [K in keyof InTypes]?: DynoVal;
+ };
+ update?: () => void;
+ globals?: ({ inputs, outputs, compile, }: GenerateContext) => string[];
+ statements?: ({ inputs, outputs, compile, }: GenerateContext) => string[];
+ generate: ({ inputs, outputs, compile, }: GenerateContext) => {
+ globals?: string[];
+ statements?: string[];
+ uniforms?: Record;
+ };
+ constructor({ inTypes, outTypes, inputs, update, globals, statements, generate, }: {
+ inTypes?: InTypes;
+ outTypes?: OutTypes;
+ inputs?: {
+ [K in keyof InTypes]?: DynoVal;
+ };
+ update?: () => void;
+ globals?: ({ inputs, outputs, compile, }: GenerateContext) => string[];
+ statements?: ({ inputs, outputs, compile, }: GenerateContext) => string[];
+ generate?: ({ inputs, outputs, compile, }: GenerateContext) => {
+ globals?: string[];
+ statements?: string[];
+ uniforms?: Record;
+ };
+ });
+ get outputs(): {
+ [K in keyof OutTypes]: DynoVal;
+ };
+ apply(inputs: {
+ [K in keyof InTypes]?: DynoVal;
+ }): {
+ [K in keyof OutTypes]: DynoVal;
+ };
+ compile({ inputs, outputs, compile, }: {
+ inputs: {
+ [K in keyof InTypes]?: string;
+ };
+ outputs: {
+ [K in keyof OutTypes]?: string;
+ };
+ compile: Compilation;
+ }): string[];
+ }
+ export type DynoBlockType = (inputs: {
+ [K in keyof InTypes]?: DynoVal;
+ }, outputs: {
+ [K in keyof OutTypes]?: DynoVal;
+ }, { roots }: {
+ roots: Dyno[];
+ }) => {
+ [K in keyof OutTypes]?: DynoVal;
+ } | undefined;
+ export class DynoBlock extends Dyno {
+ construct: DynoBlockType;
+ constructor({ inTypes, outTypes, inputs, update, globals, construct, }: {
+ inTypes?: InTypes;
+ outTypes?: OutTypes;
+ inputs?: {
+ [K in keyof InTypes]?: DynoVal;
+ };
+ update?: () => void;
+ globals?: ({ inputs, outputs, compile, }: GenerateContext) => string[];
+ construct: DynoBlockType;
+ });
+ generateBlock({ inputs, outputs, compile, }: {
+ inputs: {
+ [K in keyof InTypes]?: string;
+ };
+ outputs: {
+ [K in keyof OutTypes]?: string;
+ };
+ compile: Compilation;
+ }): {
+ statements: string[];
+ };
+ }
+ export function dynoBlock, OutTypes extends Record>(inTypes: InTypes, outTypes: OutTypes, construct: DynoBlockType, { update, globals }?: {
+ update?: () => void;
+ globals?: () => string[];
+ }): DynoBlock;
+ export function dyno, OutTypes extends Record>({ inTypes, outTypes, inputs, update, globals, statements, generate, }: {
+ inTypes: InTypes;
+ outTypes: OutTypes;
+ inputs?: {
+ [K in keyof InTypes]?: DynoVal;
+ };
+ update?: () => void;
+ globals?: ({ inputs, outputs, compile, }: GenerateContext) => string[];
+ statements?: ({ inputs, outputs, compile, }: GenerateContext) => string[];
+ generate?: ({ inputs, outputs, compile, }: GenerateContext) => {
+ globals?: string[];
+ statements?: string[];
+ uniforms?: Record;
+ };
+ }): Dyno;
+ export function dynoDeclare(name: string, type: DynoType, count?: number): string;
+ export function unindentLines(s: string): string[];
+ export function unindent(s: string): string;
+ export class UnaryOp extends Dyno<{
+ a: A;
+ }, {
+ [key in OutKey]: OutType;
+ }> implements HasDynoOut {
+ constructor({ a, outKey, outTypeFunc, }: {
+ a: DynoVal;
+ outKey: OutKey;
+ outTypeFunc: (aType: A) => OutType;
+ });
+ outKey: OutKey;
+ dynoOut(): DynoValue;
+ }
+ export class BinaryOp extends Dyno<{
+ a: A;
+ b: B;
+ }, {
+ [key in OutKey]: OutType;
+ }> implements HasDynoOut {
+ constructor({ a, b, outKey, outTypeFunc, }: {
+ a: DynoVal;
+ b: DynoVal;
+ outKey: OutKey;
+ outTypeFunc: (aType: A, bType: B) => OutType;
+ });
+ outKey: OutKey;
+ dynoOut(): DynoValue;
+ }
+ export class TrinaryOp extends Dyno<{
+ a: A;
+ b: B;
+ c: C;
+ }, {
+ [key in OutKey]: OutType;
+ }> implements HasDynoOut {
+ constructor({ a, b, c, outKey, outTypeFunc, }: {
+ a: DynoVal;
+ b: DynoVal;
+ c: DynoVal;
+ outKey: OutKey;
+ outTypeFunc: (aType: A, bType: B, cType: C) => OutType;
+ });
+ outKey: OutKey;
+ dynoOut(): DynoValue;
+ }
+}
+declare module "dyno/splats" {
+ import { Dyno, UnaryOp } from "dyno/base";
+ import { type DynoVal, type DynoValue, type HasDynoOut } from "dyno/value";
+ export const Gsplat: {
+ type: "Gsplat";
+ };
+ export const TPackedSplats: {
+ type: "PackedSplats";
+ };
+ export const numPackedSplats: (packedSplats: DynoVal) => DynoVal<"int">;
+ export const readPackedSplat: (packedSplats: DynoVal, index: DynoVal<"int">) => DynoVal;
+ export const readPackedSplatRange: (packedSplats: DynoVal, index: DynoVal<"int">, base: DynoVal<"int">, count: DynoVal<"int">) => DynoVal;
+ export const splitGsplat: (gsplat: DynoVal) => SplitGsplat;
+ export const combineGsplat: ({ gsplat, flags, index, center, scales, quaternion, rgba, rgb, opacity, x, y, z, r, g, b, }: {
+ gsplat?: DynoVal;
+ flags?: DynoVal<"uint">;
+ index?: DynoVal<"int">;
+ center?: DynoVal<"vec3">;
+ scales?: DynoVal<"vec3">;
+ quaternion?: DynoVal<"vec4">;
+ rgba?: DynoVal<"vec4">;
+ rgb?: DynoVal<"vec3">;
+ opacity?: DynoVal<"float">;
+ x?: DynoVal<"float">;
+ y?: DynoVal<"float">;
+ z?: DynoVal<"float">;
+ r?: DynoVal<"float">;
+ g?: DynoVal<"float">;
+ b?: DynoVal<"float">;
+ }) => DynoVal;
+ export const gsplatNormal: (gsplat: DynoVal) => DynoVal<"vec3">;
+ export const transformGsplat: (gsplat: DynoVal, { scale, rotate, translate, recolor, }: {
+ scale?: DynoVal<"float">;
+ rotate?: DynoVal<"vec4">;
+ translate?: DynoVal<"vec3">;
+ recolor?: DynoVal<"vec4">;
+ }) => DynoVal;
+ export const defineGsplat: string;
+ export const definePackedSplats: string;
+ export class NumPackedSplats extends UnaryOp {
+ constructor({ packedSplats, }: {
+ packedSplats: DynoVal;
+ });
+ }
+ export class ReadPackedSplat extends Dyno<{
+ packedSplats: typeof TPackedSplats;
+ index: "int";
+ }, {
+ gsplat: typeof Gsplat;
+ }> implements HasDynoOut {
+ constructor({ packedSplats, index, }: {
+ packedSplats?: DynoVal;
+ index?: DynoVal<"int">;
+ });
+ dynoOut(): DynoValue;
+ }
+ export class ReadPackedSplatRange extends Dyno<{
+ packedSplats: typeof TPackedSplats;
+ index: "int";
+ base: "int";
+ count: "int";
+ }, {
+ gsplat: typeof Gsplat;
+ }> implements HasDynoOut {
+ constructor({ packedSplats, index, base, count, }: {
+ packedSplats?: DynoVal;
+ index?: DynoVal<"int">;
+ base?: DynoVal<"int">;
+ count?: DynoVal<"int">;
+ });
+ dynoOut(): DynoValue;
+ }
+ export class SplitGsplat extends Dyno<{
+ gsplat: typeof Gsplat;
+ }, {
+ flags: "uint";
+ active: "bool";
+ index: "int";
+ center: "vec3";
+ scales: "vec3";
+ quaternion: "vec4";
+ rgba: "vec4";
+ rgb: "vec3";
+ opacity: "float";
+ x: "float";
+ y: "float";
+ z: "float";
+ r: "float";
+ g: "float";
+ b: "float";
+ }> {
+ constructor({ gsplat }: {
+ gsplat?: DynoVal;
+ });
+ }
+ export class CombineGsplat extends Dyno<{
+ gsplat: typeof Gsplat;
+ flags: "uint";
+ index: "int";
+ center: "vec3";
+ scales: "vec3";
+ quaternion: "vec4";
+ rgba: "vec4";
+ rgb: "vec3";
+ opacity: "float";
+ x: "float";
+ y: "float";
+ z: "float";
+ r: "float";
+ g: "float";
+ b: "float";
+ }, {
+ gsplat: typeof Gsplat;
+ }> implements HasDynoOut {
+ constructor({ gsplat, flags, index, center, scales, quaternion, rgba, rgb, opacity, x, y, z, r, g, b, }: {
+ gsplat?: DynoVal;
+ flags?: DynoVal<"uint">;
+ index?: DynoVal<"int">;
+ center?: DynoVal<"vec3">;
+ scales?: DynoVal<"vec3">;
+ quaternion?: DynoVal<"vec4">;
+ rgba?: DynoVal<"vec4">;
+ rgb?: DynoVal<"vec3">;
+ opacity?: DynoVal<"float">;
+ x?: DynoVal<"float">;
+ y?: DynoVal<"float">;
+ z?: DynoVal<"float">;
+ r?: DynoVal<"float">;
+ g?: DynoVal<"float">;
+ b?: DynoVal<"float">;
+ });
+ dynoOut(): DynoValue;
+ }
+ export const defineGsplatNormal: string;
+ export class GsplatNormal extends UnaryOp {
+ constructor({ gsplat }: {
+ gsplat: DynoVal;
+ });
+ }
+ export class TransformGsplat extends Dyno<{
+ gsplat: typeof Gsplat;
+ scale: "float";
+ rotate: "vec4";
+ translate: "vec3";
+ recolor: "vec4";
+ }, {
+ gsplat: typeof Gsplat;
+ }> implements HasDynoOut {
+ constructor({ gsplat, scale, rotate, translate, recolor, }: {
+ gsplat?: DynoVal;
+ scale?: DynoVal<"float">;
+ rotate?: DynoVal<"vec4">;
+ translate?: DynoVal<"vec3">;
+ recolor?: DynoVal<"vec4">;
+ });
+ dynoOut(): DynoValue;
+ }
+}
+declare module "dyno/output" {
+ import { Dyno } from "dyno/base";
+ import { Gsplat } from "dyno/splats";
+ import { type DynoVal, type DynoValue, type HasDynoOut } from "dyno/value";
+ export const outputPackedSplat: (gsplat: DynoVal) => OutputPackedSplat;
+ export const outputRgba8: (rgba8: DynoVal<"vec4">) => OutputRgba8;
+ export class OutputPackedSplat extends Dyno<{
+ gsplat: typeof Gsplat;
+ }, {
+ output: "uvec4";
+ }> implements HasDynoOut<"uvec4"> {
+ constructor({ gsplat }: {
+ gsplat?: DynoVal;
+ });
+ dynoOut(): DynoValue<"uvec4">;
+ }
+ export class OutputRgba8 extends Dyno<{
+ rgba8: "vec4";
+ }, {
+ rgba8: "vec4";
+ }> implements HasDynoOut<"vec4"> {
+ constructor({ rgba8 }: {
+ rgba8?: DynoVal<"vec4">;
+ });
+ dynoOut(): DynoValue<"vec4">;
+ }
+}
+declare module "dyno/uniforms" {
+ import { Dyno } from "dyno/base";
+ import type { DynoJsType, DynoType } from "dyno/types";
+ import { type DynoValue, type HasDynoOut } from "dyno/value";
+ export const uniform: >(key: string, type: DynoType, value: V) => DynoUniform;
+ export const dynoBool: (value?: boolean, key?: string) => DynoBool;
+ export const dynoUint: (value?: number, key?: string) => DynoUint;
+ export const dynoInt: (value?: number, key?: string) => DynoInt;
+ export const dynoFloat: (value?: number, key?: string) => DynoFloat;
+ export const dynoBvec2: >(value: V, key?: string) => DynoBvec2;
+ export const dynoUvec2: >(value: V, key?: string) => DynoUvec2;
+ export const dynoIvec2: >(value: V, key?: string) => DynoIvec2;
+ export const dynoVec2: >(value: V, key?: string) => DynoVec2;
+ export const dynoBvec3: >(value: V, key?: string) => DynoBvec3;
+ export const dynoUvec3: >(value: V, key?: string) => DynoUvec3;
+ export const dynoIvec3: >(value: V, key?: string) => DynoIvec3;
+ export const dynoVec3: >(value: V, key?: string) => DynoVec3;
+ export const dynoBvec4: >(value: V, key?: string) => DynoBvec4;
+ export const dynoUvec4: >(value: V, key?: string) => DynoUvec4;
+ export const dynoIvec4: >(value: V, key?: string) => DynoIvec4;
+ export const dynoVec4: >(value: V, key?: string) => DynoVec4;
+ export const dynoMat2: >(value: V, key?: string) => DynoMat2;
+ export const dynoMat2x2: >(value: V, key?: string) => DynoMat2x2;
+ export const dynoMat2x3: >(value: V, key?: string) => DynoMat2x3;
+ export const dynoMat2x4: >(value: V, key?: string) => DynoMat2x4;
+ export const dynoMat3: >(value: V, key?: string) => DynoMat3;
+ export const dynoMat3x2: >(value: V, key?: string) => DynoMat3x2;
+ export const dynoMat3x3: >(value: V, key?: string) => DynoMat3x3;
+ export const dynoMat3x4: >(value: V, key?: string) => DynoMat3x4;
+ export const dynoMat4: >(value: V, key?: string) => DynoMat4;
+ export const dynoMat4x2: >(value: V, key?: string) => DynoMat4x2;
+ export const dynoMat4x3: >(value: V, key?: string) => DynoMat4x3;
+ export const dynoMat4x4: >(value: V, key?: string) => DynoMat4x4