From 239287226060a36a84a73bcafb169f895a88b8d6 Mon Sep 17 00:00:00 2001 From: Maria Masha Shugrina Date: Fri, 8 Jan 2021 12:25:29 -0500 Subject: [PATCH] Added a fully functional and bundled kaolin-dash3d visualizer, composed of a server and a remote web client. Dash3d allows viewing remote 3D checkpoints written using kaolin Timelspase API from any machine in a web browser by connecting to a webapp served by the remote server. Components of this change: Added kaolin/experimental subdirectory for features less stable and well-tested Bundled kaolin-dash3d as an executable, installed if KAOLIN_INSTALL_EXPERIMENTAL variable is set Wrote a TimelapseParser class that can monitor a timelapse log directory for changes and summarize usd content Wrote a web server supporting web socket API Wrote a javascript web client with jquery and ThreeJS that can receive and visualize 3D data Set up javascript source compilation using uglifyjs Encapsulated thirdparty dependencies using npm Bundled thirdparty dependencies and acknowledged their use (MIT license) Wrote integration tests that perform visual regression on the web client running in the browser and connecting to a server running over a test set of logs Wrote integration tests for binary data serialization Integrated these tests into the CI pipeline Limitations: kaolin-dash3d support is limited to pointclouds and meshes with no color information big-endian clients and/or servers are likely to break the binary interchange format Signed-off-by: Maria Masha Shugrina --- .drone.yml | 8 +- .gitignore | 5 + CONTRIBUTING.md | 10 +- MANIFEST.in | 2 + ci/pytest-linux.sh | 2 +- docs/notes/installation.rst | 6 +- examples/tutorial/visualize_main.py | 10 +- kaolin/experimental/dash3d/Makefile | 52 + kaolin/experimental/dash3d/README.md | 81 + kaolin/experimental/dash3d/__init__.py | 0 kaolin/experimental/dash3d/kaolin-dash3d | 6 + kaolin/experimental/dash3d/run.py | 86 + kaolin/experimental/dash3d/src/controller.js | 303 + kaolin/experimental/dash3d/src/copyright.js | 13 + kaolin/experimental/dash3d/src/geometry.js | 167 + kaolin/experimental/dash3d/src/render.js | 205 + kaolin/experimental/dash3d/src/style.css | 148 + kaolin/experimental/dash3d/src/test_util.js | 93 + kaolin/experimental/dash3d/src/util.js | 71 + kaolin/experimental/dash3d/static/core-min.js | 14 + kaolin/experimental/dash3d/static/favicon.ico | Bin 0 -> 167786 bytes .../dash3d/static/green_plastic.frag | 134 + kaolin/experimental/dash3d/static/style.css | 148 + .../experimental/dash3d/static/thirdparty.css | 7 + .../experimental/dash3d/static/thirdparty.js | 1221 ++++ .../experimental/dash3d/templates/home.html | 152 + .../dash3d/templates/render_card.html | 13 + .../dash3d/templates/render_row.html | 34 + kaolin/experimental/dash3d/util.py | 325 + kaolin/io/materials.py | 6 +- kaolin/io/usd.py | 72 +- kaolin/visualize/__init__.py | 1 + kaolin/visualize/timelapse.py | 214 +- package-lock.json | 5612 +++++++++++++++++ package.json | 12 + setup.py | 16 +- .../experimental/dash3d/.gitignore | 3 + .../integration/experimental/dash3d/README.md | 101 + .../experimental/dash3d/cypress.json | 11 + .../cypress/fixtures/images/mesh_gt_id0.png | Bin 0 -> 14254 bytes .../cypress/fixtures/images/mesh_gt_id1.png | Bin 0 -> 12106 bytes .../fixtures/images/mesh_output_id0_final.png | Bin 0 -> 14254 bytes .../fixtures/images/mesh_output_id0_it50.png | Bin 0 -> 19404 bytes .../fixtures/images/mesh_output_id1_final.png | Bin 0 -> 12106 bytes .../fixtures/images/mesh_output_id1_it50.png | Bin 0 -> 18916 bytes .../fixtures/images/pointcloud_input_id0.png | Bin 0 -> 27326 bytes .../fixtures/images/pointcloud_input_id1.png | Bin 0 -> 28459 bytes .../images/pointcloud_output_id0_final.png | Bin 0 -> 27326 bytes .../images/pointcloud_output_id0_it50.png | Bin 0 -> 28341 bytes .../images/pointcloud_output_id1_final.png | Bin 0 -> 28459 bytes .../images/pointcloud_output_id1_it50.png | Bin 0 -> 30815 bytes .../cypress/integration/visual_regression.js | 129 + .../dash3d/cypress/plugins/index.js | 21 + .../dash3d/cypress/support/commands.js | 56 + .../dash3d/cypress/support/index.js | 20 + .../experimental/dash3d/run_e2e_test.py | 132 + .../experimental/dash3d/start_dash3d.sh | 36 + .../experimental/dash3d/test_binary_parse.js | 140 + .../dash3d/test_client_server_io.py | 88 + tests/python/kaolin/io/test_usd.py | 62 +- .../python/kaolin/visualize/test_timelapse.py | 84 + .../notexture/ground_truth/mesh_0.usd | Bin 0 -> 9362 bytes .../notexture/ground_truth/mesh_1.usd | Bin 0 -> 9314 bytes .../notexture/input/pointcloud_0.usd | Bin 0 -> 32730 bytes .../notexture/input/pointcloud_1.usd | Bin 0 -> 26970 bytes .../timelapse/notexture/output/mesh_0.usd | Bin 0 -> 96324 bytes .../timelapse/notexture/output/mesh_1.usd | Bin 0 -> 95876 bytes .../notexture/output/pointcloud_0.usd | Bin 0 -> 350893 bytes .../notexture/output/pointcloud_1.usd | Bin 0 -> 287533 bytes .../notexture/output/voxelgrid_0.usd | Bin 0 -> 349959 bytes .../notexture/output/voxelgrid_1.usd | Bin 0 -> 909016 bytes tools/linux/Dockerfile | 7 + tools/linux/build_docker.sh | 2 +- 73 files changed, 10102 insertions(+), 39 deletions(-) create mode 100644 MANIFEST.in create mode 100644 kaolin/experimental/dash3d/Makefile create mode 100644 kaolin/experimental/dash3d/README.md create mode 100644 kaolin/experimental/dash3d/__init__.py create mode 100755 kaolin/experimental/dash3d/kaolin-dash3d create mode 100644 kaolin/experimental/dash3d/run.py create mode 100644 kaolin/experimental/dash3d/src/controller.js create mode 100644 kaolin/experimental/dash3d/src/copyright.js create mode 100644 kaolin/experimental/dash3d/src/geometry.js create mode 100644 kaolin/experimental/dash3d/src/render.js create mode 100644 kaolin/experimental/dash3d/src/style.css create mode 100644 kaolin/experimental/dash3d/src/test_util.js create mode 100644 kaolin/experimental/dash3d/src/util.js create mode 100644 kaolin/experimental/dash3d/static/core-min.js create mode 100644 kaolin/experimental/dash3d/static/favicon.ico create mode 100644 kaolin/experimental/dash3d/static/green_plastic.frag create mode 100644 kaolin/experimental/dash3d/static/style.css create mode 100644 kaolin/experimental/dash3d/static/thirdparty.css create mode 100644 kaolin/experimental/dash3d/static/thirdparty.js create mode 100644 kaolin/experimental/dash3d/templates/home.html create mode 100644 kaolin/experimental/dash3d/templates/render_card.html create mode 100644 kaolin/experimental/dash3d/templates/render_row.html create mode 100644 kaolin/experimental/dash3d/util.py create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 tests/integration/experimental/dash3d/.gitignore create mode 100644 tests/integration/experimental/dash3d/README.md create mode 100644 tests/integration/experimental/dash3d/cypress.json create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_gt_id0.png create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_gt_id1.png create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id0_final.png create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id0_it50.png create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id1_final.png create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id1_it50.png create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/pointcloud_input_id0.png create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/pointcloud_input_id1.png create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/pointcloud_output_id0_final.png create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/pointcloud_output_id0_it50.png create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/pointcloud_output_id1_final.png create mode 100644 tests/integration/experimental/dash3d/cypress/fixtures/images/pointcloud_output_id1_it50.png create mode 100644 tests/integration/experimental/dash3d/cypress/integration/visual_regression.js create mode 100644 tests/integration/experimental/dash3d/cypress/plugins/index.js create mode 100644 tests/integration/experimental/dash3d/cypress/support/commands.js create mode 100644 tests/integration/experimental/dash3d/cypress/support/index.js create mode 100644 tests/integration/experimental/dash3d/run_e2e_test.py create mode 100755 tests/integration/experimental/dash3d/start_dash3d.sh create mode 100644 tests/integration/experimental/dash3d/test_binary_parse.js create mode 100644 tests/integration/experimental/dash3d/test_client_server_io.py create mode 100644 tests/samples/timelapse/notexture/ground_truth/mesh_0.usd create mode 100644 tests/samples/timelapse/notexture/ground_truth/mesh_1.usd create mode 100644 tests/samples/timelapse/notexture/input/pointcloud_0.usd create mode 100644 tests/samples/timelapse/notexture/input/pointcloud_1.usd create mode 100644 tests/samples/timelapse/notexture/output/mesh_0.usd create mode 100644 tests/samples/timelapse/notexture/output/mesh_1.usd create mode 100644 tests/samples/timelapse/notexture/output/pointcloud_0.usd create mode 100644 tests/samples/timelapse/notexture/output/pointcloud_1.usd create mode 100644 tests/samples/timelapse/notexture/output/voxelgrid_0.usd create mode 100644 tests/samples/timelapse/notexture/output/voxelgrid_1.usd diff --git a/.drone.yml b/.drone.yml index c1fada6c4..c40cc67d5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,6 +7,7 @@ environment: PYTORCH_VERSION: "1.6" CUDNN_VERSION: "7" TORCH_CUDA_ARCH_LIST: "5.2 6.0 6.1 7.0 7.5+PTX" + KAOLIN_INSTALL_EXPERIMENTAL: "1" steps: - name: submodules @@ -42,6 +43,11 @@ steps: - export PATH=/opt/conda/bin:$PATH - pip install --upgrade pip>=19.3 - conda install -y pytorch==1.6 cudatoolkit=10.1 -c pytorch + - conda install -c conda-forge nodejs + - > + apt-get update && apt-get install -y --no-install-recommends + libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb + - npm install - python setup.py develop - pip install -r tools/ci_requirements.txt - - pytest --cov=kaolin/ tests/python && pytest --doctest-modules kaolin/ + - pytest --cov=kaolin/ tests/python tests/integration && pytest --doctest-modules kaolin/ diff --git a/.gitignore b/.gitignore index ec4253af4..4cadcaf66 100644 --- a/.gitignore +++ b/.gitignore @@ -15,9 +15,14 @@ kaolin.egg-info *.egg .eggs/ kaolin/cython/**/*.cpp +node_modules/ # byte-compiled python files *.py[cod] # pip cache .cache + +# editor specific +*~ +.idea \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dc053b67c..329195d0d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -47,7 +47,8 @@ Include a license at the top of new files. * [Python example](examples_license.py) #### Code organization -* [kaolin](kaolin/) - The Core of Kaolin library, everything that is not in [csrc](kaolin/csrc) is a Python module. +* [kaolin](kaolin/) - The core Kaolin library, comprised of python modules, +except for code under [csrc](kaolin/csrc) or [experimental](kaolin/experimental). * [csrc](kaolin/csrc/) - Directory for all the C++ / CUDA implementations of custom ops. The gpu ops parts will be under the subdirectory [csrc/cuda](kaolin/csrc/cuda) while the cpu parts will be under the subdirectory [csrc/cpu](kaolin/csrc/cpu). @@ -57,6 +58,7 @@ Include a license at the top of new files. * [render](kaolin/render/) - Module of all the differentiable renderers modules and advanced implementations. * [utils](kaolin/utils/) - Module of all the utility features for debugging and testing. * [visualize](kaolin/visualize/) - Module of all the visualization modules. + * [experimental](kaolin/experimental/) - Contains less thoroughly tested components for early adoption. * [examples](examples/) - Examples of Kaolin usage * [tests](tests/) - Tests for all Kaolin @@ -70,7 +72,7 @@ We follow [PEP8 Style Guide](https://www.python.org/dev/peps/pep-0008/) with som It is enforced using [flake8](https://pypi.org/project/flake8/), with [flake8-bugbear](https://pypi.org/project/flake8-bugbear/), [flake8-comprehensions](https://pypi.org/project/flake8-comprehensions/), [flake8-mypy](https://pypi.org/project/flake8-mypy/) and [flake8-pyi](https://pypi.org/project/flake8-pyi/) -to run flake8 execute ``flake8 --config=.flake8 .`` from the [root of kaolin](https://gitlab-master.nvidia.com/Toronto_DL_Lab/kaolin-reformat) +To run flake8 execute ``flake8 --config=.flake8 .`` from the [root of kaolin](https://gitlab-master.nvidia.com/Toronto_DL_Lab/kaolin-reformat). On top of that we use prefixes (``packed\_``, ``padded\_``) to indicate that a module / op is specific to a layout, an , all ops of the same purpose for different layouts should be in the same file. @@ -78,8 +80,10 @@ On top of that we use prefixes (``packed\_``, ``padded\_``) to indicate that a m #### Tests We are applying [pytest](https://docs.pytest.org/en/latest/) on [tests/python directory](tests/python/), with [pytest-cov](https://pytest-cov.readthedocs.io/en/latest/), which should follows the directory structure of [kaolin](kaolin/). +To run these tests execute ``pytest --cov=kaolin/ tests/`` from the [root of kaolin](https://gitlab-master.nvidia.com/Toronto_DL_Lab/kaolin-reformat). -to run the tests execute ``pytest --cov=kaolin/ tests/`` from the [root of kaolin](https://gitlab-master.nvidia.com/Toronto_DL_Lab/kaolin-reformat) +Additional integration tests are located in [tests/integration](tests/integration). +See that subdirectory for details. #### Documentation Contributors are encouraged to verify the generated documentation before each pull request. diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 000000000..a4f2afcba --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,2 @@ +recursive-include kaolin/experimental/dash3d/static * +recursive-include kaolin/experimental/dash3d/templates * \ No newline at end of file diff --git a/ci/pytest-linux.sh b/ci/pytest-linux.sh index 7985f53cb..df3fbceb8 100755 --- a/ci/pytest-linux.sh +++ b/ci/pytest-linux.sh @@ -16,4 +16,4 @@ docker run \ --runtime=nvidia \ --rm \ "$IMAGE_NAME" \ - /bin/bash -c "pytest --cov=kaolin/ tests/python && pytest --doctest-modules kaolin/" + /bin/bash -c "pytest --cov=kaolin/ tests/python tests/integration && pytest --doctest-modules kaolin/" diff --git a/docs/notes/installation.rst b/docs/notes/installation.rst index 53048929f..ea7c2c121 100644 --- a/docs/notes/installation.rst +++ b/docs/notes/installation.rst @@ -39,12 +39,16 @@ To install the library. You must first clone the repository: $ git clone --recursive https://github.com/NVIDIAGameWorks/kaolin $ cd kaolin -you can then select the tag if you want 0.9.0 or 0.1 specific release, example: +You can then select the tag if you want 0.9.0 or 0.1 specific release, example: .. code-block:: bash $ git checkout v0.9.0 +To enable installation of experimental features, set +environment variable +``export KAOLIN_INSTALL_EXPERIMENTAL=1``. To install, run: + .. code-block:: bash $ python setup.py develop diff --git a/examples/tutorial/visualize_main.py b/examples/tutorial/visualize_main.py index c2b3923f1..e49204ac5 100644 --- a/examples/tutorial/visualize_main.py +++ b/examples/tutorial/visualize_main.py @@ -107,10 +107,14 @@ def __normalize_vertices(vertices): # Emulate a training update out_pt_clouds = [] out_vert_list = [] + out_voxels = [] for i in range(len(gt_vert_list)): delta_weight = 1.0 - iteration / (args.iterations - 1) out_vert_list.append(gt_vert_list[i] * (1.0 + delta_list[i] * delta_weight)) out_pt_clouds.append(input_pt_clouds[i] * (1.0 + delta_pt_list[i] * delta_weight)) + vg = kaolin.ops.conversions.trianglemeshes_to_voxelgrids( + out_vert_list[-1].unsqueeze(0), face_list[i], 30) + out_voxels.append(vg.squeeze(0).bool()) # Save model predictions to track training progress over time timelapse.add_mesh_batch( @@ -122,10 +126,14 @@ def __normalize_vertices(vertices): iteration=iteration, category='output', pointcloud_list=out_pt_clouds) + timelapse.add_voxelgrid_batch( + iteration=iteration, + category='output', + voxelgrid_list=out_voxels) logger.info('Emulated training complete!\n' 'You can now view created USD files found here: {}\n\n' - 'You will soon be able to visualize these in the Kaolin Research Omniverse App ' + 'You will soon be able to visualize these in the Kaolin Omniverse App ' 'and our web visualizer. Stay tuned!'.format(args.output_dir)) # TODO(mshugrina): update command line once finalized diff --git a/kaolin/experimental/dash3d/Makefile b/kaolin/experimental/dash3d/Makefile new file mode 100644 index 000000000..254e00f05 --- /dev/null +++ b/kaolin/experimental/dash3d/Makefile @@ -0,0 +1,52 @@ +CORE_JS = $(wildcard src/*.js) +CORE_CSS = $(wildcard src/*.css) +THIRDPARTY_JS = ../../../node_modules/jquery/dist/jquery.min.js \ + ../../../node_modules/three/build/three.min.js \ + ../../../node_modules/three/examples/js/controls/OrbitControls.js # TODO: this needs to be minified +THIRDPARTY_CSS = ../../../node_modules/mustard-ui/dist/css/mustard-ui.min.css +JSMIN=uglifyjs +AWK=awk + +all: css js + +js: jscore jsthirdparty + +css: csscore cssthirdparty + +info: info_jscore info_jsthirdparty info_csscore info_cssthirdparty + +info_jscore: $(CORE_JS) + echo "core js files: " $(CORE_JS) + +info_jsthirdparty: $(THIRDPARTY_JS) + echo "thirdparty js files: " $(THIRDPARTY_JS) + +info_csscore: $(CORE_CSS) + echo "core css files: " $(CORE_CSS) + +info_cssthirdparty: $(THIRDPARTY_CSS) + echo "thirdparty css files: " $(THIRDPARTY_CSS) + +jscore: static/core-min.js + +static/core-min.js: $(CORE_JS) + cat src/copyright.js > static/core-min.js + $(JSMIN) $^ -m >> static/core-min.js + +jsthirdparty: static/thirdparty.js + +static/thirdparty.js: $(THIRDPARTY_JS) + $(AWK) 1 $^ > static/thirdparty.js + +csscore: static/style.css + +static/style.css: $(CORE_CSS) + cat $^ > static/style.css + +cssthirdparty: static/thirdparty.css + +static/thirdparty.css: $(THIRDPARTY_CSS) + cat $^ > static/thirdparty.css + +clean: + rm -f static/style.css static/core-min.js static/thirdparty.js static/thirdparty.css diff --git a/kaolin/experimental/dash3d/README.md b/kaolin/experimental/dash3d/README.md new file mode 100644 index 000000000..eaba0c19b --- /dev/null +++ b/kaolin/experimental/dash3d/README.md @@ -0,0 +1,81 @@ + +# Kaolin Dash3D (beta) + +WebGL dashboard that allows viewing checkpoints written +with kaolin's `Timelapse` from any remote machine in a web browser. +Kaolin Dash3D is a **lightweight alternative** to the Training Visualizer +within the +[Kaolin Omniverse App](https://docs.omniverse.nvidia.com/app_kaolin/app_kaolin/user_manual.html), +which is a desktop application with wider visualization support +and superior rendering quality. + +Currently Dash3D can only display geometric data of the following types: + +* 3d meshes (no texture or vertex color support) +* point clouds (no color) + +Voxelgrid, as well as texture and color support is planned. + + +## Using + +Simply run `kaolin-dash3d` on the machine that has your training checkpoints: + +``` +$ kaolin-dash3d --logdir=$MY_EXPERIMENTS/test0/checkpts --port=8080 +``` + +Then, view the 3D checkpoints in a browser window locally by going to +[localhost:8080](http://localhost:8080/), or connect to the server remotely. +(Tip: use ssh port forwarding on your client machine.) + +## Bundled Third-party code + +We would like to acknowledge the following third-party code bundled with +this application: +* [jQuery](https://jquery.com/download/), released under [MIT License](https://jquery.org/license/) +* [ThreeJS](https://github.com/mrdoob/three.js/), released under [MIT License](https://github.com/mrdoob/three.js/blob/dev/LICENSE) +* [Mustard UI](https://kylelogue.github.io/mustard-ui/index.html), released under [MIT License](https://github.com/kylelogue/mustard-ui/blob/master/LICENSE) + +## Developing + +#### Dependencies + +Third party dependencies for the javascript frontend as well as for +testing are managed by `npm`. To fetch dependencies, first +install `nodejs`, which is available through `conda`, and run `npm install` +from the root of kaolin (this will install both production and development +dependencies). + +To add new dependencies, run this from the root of kaolin: +``` +npm install --save-dev +``` +This will also update the `package.json` file in the root of kaolin. +If the new dependencies must be served to the client, omit +`--save-dev` from the command, and add the appropriate source to +the `Makefile` in this directory. + +#### Compiling client side code + +Compiled source and thirdparty javascript is bundled with the app in the +`static` subdirectory, while source javascript and CSS code is +located under `src/`. After edits, it +must be compiled into an optimized version to be served: +``` +$ cd kaolin/visualize/dash3d +$ make clean +$ make +``` +Note that this also compiles thirdparty dependencies which are +assumed to reside in `node-modules` in the root of `kaolin`, a +directory created automatically by `npm`. This is not ideal, +but for now we avoid setting up tools like WebPack, +given our small set of dependencies. + +#### Integration testing + +Integration tests are located in `kaolin/tests/integration`. Currently +the set of implemented tests is limited and excluded from continuous +integration due to their complexity. Please refer to the README +in the test directory. diff --git a/kaolin/experimental/dash3d/__init__.py b/kaolin/experimental/dash3d/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/kaolin/experimental/dash3d/kaolin-dash3d b/kaolin/experimental/dash3d/kaolin-dash3d new file mode 100755 index 000000000..17c38d3d7 --- /dev/null +++ b/kaolin/experimental/dash3d/kaolin-dash3d @@ -0,0 +1,6 @@ +#!/usr/bin/env python3 + +from kaolin.experimental.dash3d.run import run_main + +if __name__ == "__main__": + run_main() diff --git a/kaolin/experimental/dash3d/run.py b/kaolin/experimental/dash3d/run.py new file mode 100644 index 000000000..dbeb435aa --- /dev/null +++ b/kaolin/experimental/dash3d/run.py @@ -0,0 +1,86 @@ +# Copyright (c) 2019-2021, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from __future__ import print_function + +import argparse +import logging +import os +import sys + +from flask import Flask, render_template +from tornado.wsgi import WSGIContainer +from tornado.web import Application, FallbackHandler +from tornado.ioloop import IOLoop + +from kaolin.experimental.dash3d.util import StreamingGeometryHelper, GeometryWebSocketHandler + +logger = logging.getLogger(__name__) + + +def create_server(logdir): + """ Create the server, including websocket handler through tornado, and flask http server. + + Args: + logdir (str): directory where Timelapse data is written. + """ + # Helper for streaming geometry from the logdir + helper = StreamingGeometryHelper(logdir) + + # Flask for HTTP + _base_dir = os.path.dirname(__file__) + _template_dir = os.path.join(_base_dir, 'templates') + _static_dir = os.path.join(_base_dir, 'static') + app = Flask('kaolin_dash3d', + template_folder=_template_dir, + static_url_path='/static', + static_folder=_static_dir) + + @app.route('/') + def index(): + helper.parser.check_for_updates() + return render_template('home.html', logdir=helper.logdir, + nmeshes=helper.parser.num_mesh_categories(), + npointclouds=helper.parser.num_pointcloud_categories()) + + # Tornado server to handle websockets + container = WSGIContainer(app) + server = Application([ + (r'/websocket/', GeometryWebSocketHandler, dict(helper=helper)), + (r'.*', FallbackHandler, dict(fallback=container)) + ]) + return server + + +def run_main(): + aparser = argparse.ArgumentParser( + description='NVIDIA Kaolin Tensorboard 3d visualizer for USD files generated during training.') + aparser.add_argument('--logdir', action='store', type=str, required=True, + help='The vis folder generated by the Timelapse module.') + aparser.add_argument('--log_level', action='store', type=int, default=logging.INFO, + help='Logging level, DEBUG: 10, INFO: 20, WARN: 30, ERROR: 40.') + aparser.add_argument('--port', action='store', default=8080) + args = aparser.parse_args() + + logging.basicConfig(level=args.log_level, + format='%(asctime)s|%(levelname)8s|%(name)15s| %(message)s', + handlers=[logging.StreamHandler(sys.stdout)]) + + print(f'Dash3D server starting. Go to: http://localhost:{args.port}') + server = create_server(args.logdir) + server.listen(args.port) + IOLoop.instance().start() + + +if __name__ == "__main__": + run_main() diff --git a/kaolin/experimental/dash3d/src/controller.js b/kaolin/experimental/dash3d/src/controller.js new file mode 100644 index 000000000..f38c8ef6e --- /dev/null +++ b/kaolin/experimental/dash3d/src/controller.js @@ -0,0 +1,303 @@ +// Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +var nvidia = nvidia || {}; + +// Main Controller ------------------------------------------------------------ +nvidia.Controller = function() { + this.supported_types = ["mesh", "pointcloud"]; // TODO: extend to others (Requires DOM additions) + this.ws = null; // web socket + this.dir_info = null; // information about checkpoint log directory + this.renderers = {}; // type_string : [list] + this.active_views = {}; // type_str : [ [category, mesh_id, timecode] ] + + this.init(); +}; + +nvidia.Controller.prototype.init = function() { + this.initWebSocket(); + this.initRenderers(); + this.initSidebarEvents(); +}; + +// Warning: DOM-dependent +nvidia.Controller.prototype.getHeaderId = function(type, i) { + return type + "-header" + i; +}; + +nvidia.Controller.prototype.getInfoId = function(type, i) { + return type + "-info" + i; +}; + +nvidia.Controller.prototype.getViewContainerId = function(type, i) { + return type + "-view" + i; +}; + +nvidia.Controller.prototype.initRenderers = function() { + for (let t = 0; t < this.supported_types.length; ++t) { + const type = this.supported_types[t]; + this.renderers[type] = []; + + // DOM is built to support a set number of renderers per type + const containers = $("#" + type + "-all .view-container"); + nvidia.util.timed_log("Parsed " + containers.length + " " + type + " viewport containers."); + + // Then assume existence of ids: {type}-header{i}, {type}-view{i}, {type}-info{i} + for (let i = 0; i < containers.length; ++i) { + const id = this.getViewContainerId(type, i); + this.renderers[type].push(new nvidia.ThreeJsRenderer(id)); + } + } +}; + +nvidia.Controller.prototype.makeGeometryRequest = function(type, view_id, time) { + if (this.active_views[type].length <= view_id) { + nvidia.util.timed_log('Cannot make ' + type + ' geometry request for non-existent viewport ' + view_id); + return null; + } + const view_info = this.active_views[type][view_id]; + let req = { + type: type, + category: view_info["category"], + id: view_info["id"], + time: view_info["time"], + view_id: view_id + }; + + if (time !== undefined) { + // Request update + req.current_time = view_info["time"]; + req.time = time; + } + return req; +}; + +nvidia.Controller.prototype.initViews = function() { + // Find largest timestamp and update the timestamp controller + + // Select which meshes to display + let end_time = 0; + for (let t = 0; t < this.supported_types.length; ++t) { + const type = this.supported_types[t]; + const categories = this.dir_info[type]; + const renderers = this.renderers[type]; + this.active_views[type] = []; // reset + + $("#" + type + "-all .id").empty(); + const cat_selectors = $("#" + type + "-all .cat"); + cat_selectors.empty(); + cat_selectors.off("change"); + + if (!categories) { + nvidia.util.timed_log("No entries for type " + type); + continue; + } + + // Update DOM to reflect categories + cat_selectors.append($("") + .attr("value", "-1").text("No Category").attr("selected", true)); + for (let i = 0; i < categories.length; ++i) { + cat_selectors.append($("") + .attr("value", i).text(categories[i]["category"])); + end_time = Math.max(categories[i]["end_time"], end_time); + } + + const nviews = Math.min(categories.length, renderers.length); + for (let i = 0; i < nviews; ++i) { + const cat = categories[i]; + this.active_views[type].push({ + category: cat["category"], + id: cat["ids"][0], + time: cat["end_time"] + }); + + const hsel = "#" + this.getHeaderId(type, i); + const cat_dropdown = $(hsel + " .cat"); + cat_dropdown.val(i); + + const id_dropdown = $(hsel + " .id"); + id_dropdown.off("change"); + id_dropdown.empty(); + $.each(cat["ids"], function(v) { + id_dropdown.append($("") + .attr("value", v).text("id " + v)); }); + id_dropdown.val(cat["ids"][0]); + + const callback_maker = function(controller, typename, view_idx) { + return function() { controller.onViewDropdownChange(typename, view_idx); } + }; + id_dropdown.on("change", callback_maker(this, type, i)); + cat_dropdown.on("change", callback_maker(this, type, i)); + + if (cat["ids"].length < 2) { + id_dropdown.hide(); + } + + // TODO: reset renderer as well + } + } + $("#timeslider").attr("max", end_time).val(end_time); + this.requestGeometryForAllViews(); +}; + +nvidia.Controller.prototype.initSidebarEvents = function() { + // Note: this is very DOM-dependent + $("#timeslider").on("change", function(c) { + return function(e) { c.onTimeSliderValueChange($("#timeslider").val()); }; }(this)); +}; + +nvidia.Controller.prototype.onTimeSliderValueChange = function(time) { + this.requestGeometryForAllViews(time); +}; + +nvidia.Controller.prototype.onViewDropdownChange = function(type, view_id) { + const hsel = "#" + this.getHeaderId(type, view_id); + const cat_val = $(hsel + " .cat").val(); + const id_val = $(hsel + " .id").val(); + + this.active_views[type][view_id].id = id_val; + this.active_views[type][view_id].category = this.dir_info[type][cat_val].category; + this.active_views[type][view_id].time = $("#timeslider").val(); + + this.requestGeometry([this.makeGeometryRequest(type, view_id)]); +}; + +nvidia.Controller.prototype.requestGeometryForAllViews = function(time) { + let geo_requests = []; + for (let t = 0; t < this.supported_types.length; ++t) { + const type = this.supported_types[t]; + + for (let view_id = 0; view_id < this.active_views[type].length; ++view_id) { + geo_requests.push(this.makeGeometryRequest(type, view_id, time)); + } + } + this.requestGeometry(geo_requests); +}; + +nvidia.Controller.prototype.initWebSocket = function() { + this.ws = new WebSocket("ws://" + window.location.host + "/websocket/"); //window.location.pathname); + this.ws.binaryType = "arraybuffer"; + + this.ws.onopen = function(c){return function() { c.onopen();} }(this); + this.ws.onmessage = function(c){return function(evt) { c.onmessage(evt);} }(this); + this.ws.onclose = function(c){return function() { c.onclose();} }(this); +}; + +nvidia.Controller.prototype.requestGeometry = function(geo_requests) { + var request = { + type: "geometry", + data: geo_requests + } + this.sendMessage(JSON.stringify(request)); +}; + +nvidia.Controller.prototype.sendMessage = function(str) { + nvidia.util.timed_log("Sending message: " + str); + this.ws.send(str); +}; + +nvidia.Controller.prototype.onopen = function() { + nvidia.util.timed_log("Connection open"); +}; + +nvidia.Controller.prototype.onmessage = function (evt) { + // TODO: ensure this part happens in the background, if not already so + nvidia.util.timed_log("Message received"); + //ws_evt = evt; + + if (typeof evt.data === "string") { + nvidia.util.timed_log("Got text message: " + evt.data); + + this.processTextMessage(evt.data); + + } else if (evt.data instanceof ArrayBuffer) { + nvidia.util.timed_log("Got arraybuffer message"); + + const geo_data = this.parseBinaryGeometry(evt.data); + if (geo_data) { + this.renderers[geo_data.type][geo_data.view_id].setMeshes(geo_data.geos); + this.active_views[geo_data.type][geo_data.view_id].time = geo_data.time; + + var stats_str = ""; + if (geo_data.type === "mesh") { + nvidia.util.timed_log("Setting meshes for " + geo_data.view_id); + stats_str = "nverts: " + geo_data.geos[0].getAttribute("position").count; + } else if (geo_data.type === "pointcloud") { + nvidia.util.timed_log("Setting meshes for " + geo_data.view_id); + stats_str = "npts: " + geo_data.geos[0].getAttribute("instanceTranslation").count; + } + const bbox = nvidia.geometry.GetBoundingBox(geo_data.geos); + bbox_str = "bbox: " + bbox.min.x.toFixed(3) + "..." + bbox.max.x.toFixed(3) + ", " + + bbox.min.y.toFixed(3) + "..." + bbox.max.y.toFixed(3) + ", " + + bbox.min.z.toFixed(3) + "..." + bbox.max.z.toFixed(3); + const infoel = $("#" + this.getInfoId(geo_data.type, geo_data.view_id)); + infoel.empty(); + infoel.append($("
").text(bbox_str)); + infoel.append($("
").text(stats_str)); + infoel.append($("
").text("timecode: " + geo_data.time)); + } + } else { + nvidia.util.timed_log("Got unknown message"); + console.log(evt); + } +}; + +nvidia.Controller.prototype.parseBinaryGeometry = function(binary_data) { + nvidia.util.timed_log("Parsing binary data"); + const global_info = new Int32Array(binary_data, 0, 4); + const data_type = global_info[0]; + const viewport_id = global_info[1]; + const snap_time = global_info[2]; + const tbd_value = global_info[3]; + let data_type_name = "unknown"; + + if (data_type === 0) { + const geos = nvidia.geometry.BufferedGeometriesFromBinary(binary_data, 4 * 4); + return { + "type": "mesh", + "geos": geos, + "view_id": viewport_id, + "time": snap_time + }; + } else if (data_type === 1) { + const geos = nvidia.geometry.PtCloudsFromBinary(binary_data, 4 * 4); + return { + "type": "pointcloud", + "geos": geos, + "view_id": viewport_id, + "time": snap_time + }; + } else { + nvidia.util.timed_log("Received unsupported data type " + data_type + " for viewport " + viewport_id); + return null; + } +}; + +nvidia.Controller.prototype.processTextMessage = function(message_data) { + const message = JSON.parse(message_data); + if (message["type"] === "dirinfo" && message["data"]) { + this.dir_info = message["data"]; + this.initViews(); + } else { + nvidia.util.timed_log("Unexpected message:"); + console.log(message); + } +}; + +nvidia.Controller.prototype.onclose = function() { + nvidia.util.timed_log("Connection closed"); +}; + +if (typeof module !== 'undefined') { + module.exports = nvidia.Controller; +} \ No newline at end of file diff --git a/kaolin/experimental/dash3d/src/copyright.js b/kaolin/experimental/dash3d/src/copyright.js new file mode 100644 index 000000000..fff403eb9 --- /dev/null +++ b/kaolin/experimental/dash3d/src/copyright.js @@ -0,0 +1,13 @@ +// Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. diff --git a/kaolin/experimental/dash3d/src/geometry.js b/kaolin/experimental/dash3d/src/geometry.js new file mode 100644 index 000000000..278c8028b --- /dev/null +++ b/kaolin/experimental/dash3d/src/geometry.js @@ -0,0 +1,167 @@ +// Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +var nvidia = nvidia || {}; +nvidia.geometry = nvidia.geometry || {}; + +if (typeof require !== 'undefined') { + var THREE = require('three'); + nvidia.util = require('./util.js'); +} + +/** + * Compute bounding box of the geometry types that are parsed by methods in this + * module. +*/ +nvidia.geometry.GetBoundingBox = function(geometries) { + let bb = new THREE.Box3(); + bb.min.set(0, 0, 0); + bb.max.set(0, 0, 0); + + for (var g = 0; g < geometries.length; ++g) { + let bb2 = null; + if (geometries[g].hasOwnProperty("positionBoundingBox")) { + bb2 = geometries[g]["positionBoundingBox"]; + } else { + // Note that this does not work for instanced geometry + geometries[g].computeBoundingBox(); + bb2 = geometries[g].boundingBox; + } + + if (g === 0) { + bb.min.set(bb2.min.x, bb2.min.y, bb2.min.z); + bb.max.set(bb2.max.x, bb2.max.y, bb2.max.z); + } else { + bb.min.x = Math.min(bb.min.x, bb2.min.x); + bb.min.y = Math.min(bb.min.y, bb2.min.y); + bb.min.z = Math.min(bb.min.z, bb2.min.z); + bb.max.x = Math.max(bb.max.x, bb2.max.x); + bb.max.y = Math.max(bb.max.y, bb2.max.y); + bb.max.z = Math.max(bb.max.z, bb2.max.z); + } + } + return bb; +}; + +/** + * Parse point clouds from binary data written by the web server. + */ +nvidia.geometry.PtCloudsFromBinary = function(binary_data, initial_offset) { + let global_info = new Int32Array(binary_data, initial_offset, 4); + const n_clouds = global_info[0]; + const texture_mode = global_info[1]; + // TBD information stored in the next two ints + nvidia.util.timed_log("Decoding " + n_clouds + " point clouds"); + + if (texture_mode !== 0) { + console.error('Texture mode ' + texture_mode + ' not supported. ' + + 'Version mismatch between python and JS code.'); + } + + let geometries = []; + let read_start = initial_offset + 4 * 4; // 4 * 4 bytes used for n_clouds read above + + const sphere_radius = 0.02; // TODO: make adaptive + for (let m = 0; m < n_clouds; ++m) { + let meta = new Int32Array(binary_data, read_start, 2); + read_start += 2 * 4; + let n_vertices = meta[0]; + let tbd_info = meta[1]; + nvidia.util.timed_log(n_vertices + " points in pointcloud"); + + let bounds = new Float32Array(binary_data, read_start, 6); + read_start += 6 * 4; + let bbox = new THREE.Box3(); + bbox.min.set(bounds[0], bounds[1], bounds[2]); + bbox.max.set(bounds[3], bounds[4], bounds[5]); + + let positions = new Float32Array(binary_data, read_start, n_vertices * 3); + read_start += n_vertices * 3 * 4; + + const sphere = new THREE.SphereBufferGeometry(sphere_radius, 10, 10); + let geo = new THREE.InstancedBufferGeometry(); + geo.index = sphere.index; + geo.attributes = sphere.attributes; + geo.instanceCount = n_vertices; + + geo.setAttribute("instanceTranslation", new THREE.InstancedBufferAttribute(positions, 3)); // built-in + geo["instanceRadius"] = sphere_radius; // custom + geo["positionBoundingBox"] = bbox; // custom + geometries.push(geo); + } + return geometries; +}; + +nvidia.geometry.BufferedGeometriesFromBinary = function(binary_data, initial_offset) { + nvidia.util.timed_log("Parsing binary data"); + var global_info = new Int32Array(binary_data, initial_offset, 4); + var n_meshes = global_info[0]; + var texture_mode = global_info[1]; + // TBD information stored in the next two ints + nvidia.util.timed_log("Decoding " + n_meshes + " meshes"); + + if (texture_mode !== 0) { + console.error('Texture mode ' + texture_mode + ' not supported. ' + + 'Version mismatch between python and JS code.'); + } + + var geometries = []; + var read_start = initial_offset + 4 * 4; // 4 * 4 bytes used for n_meshes read above + for (var m = 0; m < n_meshes; ++m) { + var meta = new Int32Array(binary_data, read_start, 2); + read_start += 2 * 4; + var n_vertices = meta[0]; + var n_triangles = meta[1]; + nvidia.util.timed_log(n_vertices + " verts, " + n_triangles + "triangles"); + + var geometry = new THREE.BufferGeometry(); + if (n_vertices == 0) { + nvidia.util.timed_log("Using unindexed geometry"); + var positions = new Float32Array(binary_data, read_start, n_triangles * 3 * 3); + read_start += n_triangles * 3 * 3 * 4; // 4 bytes * 3/ vert * 3 vert/ tri + geometry.setAttribute( + 'position', new THREE.BufferAttribute(positions, 3)); + } else { + nvidia.util.timed_log("Using indexed geometry"); + var positions = new Float32Array(binary_data, read_start, n_vertices * 3); + read_start += n_vertices * 3 * 4; + var triangles = new Uint32Array(binary_data, read_start, n_triangles * 3); + read_start += n_triangles * 3 * 4; + geometry.setAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) ); + geometry.setIndex(new THREE.BufferAttribute( triangles, 1 ) ); + } + geometry.computeBoundingSphere(); + + nvidia.util.timed_log("Done parsing mesh " + m); + geometries.push(geometry); + } + return geometries; +}; + +// Note: there used to be an issue with max chunk size that could be sent through +// a socket, requiring the following for mesh geometries: +// var chunkSize = 65536; +// var offsets = 1; //n_triangles / chunkSize; +// for ( var i = 0; i < offsets; i ++ ) { +// var offset = { +// start: i * chunkSize * 3, +// index: i * chunkSize * 3, +// count: n_triangles * 3 //Math.min( n_triangles - ( i * chunkSize ), chunkSize ) * 3 +// }; +// geometry.offsets.push( offset ); +// } + +if (typeof module !== 'undefined') { + module.exports = nvidia.geometry; +} diff --git a/kaolin/experimental/dash3d/src/render.js b/kaolin/experimental/dash3d/src/render.js new file mode 100644 index 000000000..9b1c3ce89 --- /dev/null +++ b/kaolin/experimental/dash3d/src/render.js @@ -0,0 +1,205 @@ +// Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +var nvidia = nvidia || {}; + +nvidia.ThreeJsRenderer = function(elemid) { + this.meshes = []; + this.container = document.getElementById(elemid); + + this.target = new THREE.Vector3(0.5, 0.5, 0.5); + this.xzAngle = 0; + this.radius = 5; + + this.camera = null; + this.scene = null; + this.renderer = null; + + this.mesh = null; + + // this.defaultMaterial = new THREE.MeshBasicMaterial( { + // color: 0x76B900, + // side: THREE.DoubleSide + // }); + + this.fragment_shaders = {}; + this.defaultMaterial = new THREE.ShaderMaterial({ + vertexShader: $("#shader-vs").text(), + fragmentShader: $("#shader-fs").text() + }); + + $.get('static/green_plastic.frag', function(u){ + return function(data) { + u.fragment_shaders["green_plastic"] = data; + u.defaultMaterial = new THREE.ShaderMaterial({ + vertexShader: $("#shader-vs").text(), + fragmentShader: u.fragment_shaders["green_plastic"] + }); + console.log('Initialized green plastic shader'); + };}(this)); + + this.init(); +}; + +nvidia.ThreeJsRenderer.prototype.init = function() { + var aspect = 1.0; // width/height + this.camera = new THREE.PerspectiveCamera(20, 1.0, 0.1, 10000); + this.camera.position.y = 0.5; + + this.scene = new THREE.Scene(); + this.scene.background = new THREE.Color( 0xffffff ); + + var light = new THREE.DirectionalLight( 0xffffff ); + light.position.set( 0.1, 3, 0.1 ); + this.scene.add( light ); + light.castShadow = true; + + var ambientLight = new THREE.AmbientLight(0xffffff, 0.8); + this.scene.add(ambientLight); + + // background ---------------------------------------------------------------- + // var canvas = document.createElement( 'canvas' ); + // canvas.width = 128; + // canvas.height = 128; + // var context = canvas.getContext( '2d' ); + // var gradient = context.createRadialGradient( canvas.width / 2, canvas.height / 2, 0, canvas.width / 2, canvas.height / 2, canvas.width / 2 ); + // gradient.addColorStop( 0.1, 'rgba(210,210,210,1)' ); + // gradient.addColorStop( 1, 'rgba(255,255,255,1)' ); + // context.fillStyle = gradient; + // context.fillRect( 0, 0, canvas.width, canvas.height ); + + // shadows ------------------------------------------------------------------- + //var shadowTexture = new THREE.CanvasTexture( canvas ); + var shadowMaterial = new THREE.MeshPhongMaterial( { + color: 0xfafafa, + side: THREE.DoubleSide + }); + var shadowGeo = new THREE.PlaneBufferGeometry( 100, 100, 1, 1 ); + var shadowMesh = new THREE.Mesh( shadowGeo, shadowMaterial ); + shadowMesh.position.x = -1.0; + shadowMesh.position.y = 0; + shadowMesh.position.z = -1.0; + shadowMesh.rotation.x = -0.5 * Math.PI; + shadowMesh.receiveShadow = true; + //this.scene.add( shadowMesh ); + + var worldAxis = new THREE.AxesHelper(20); + this.scene.add(worldAxis); + + this.renderer = new THREE.WebGLRenderer( { antialias: true, preserveDrawingBuffer: true } ); + this.scene.background = new THREE.Color("rgb(250, 250, 250)"); + this.renderer.setPixelRatio( window.devicePixelRatio ); + this.renderer.setSize($(this.container).width(), $(this.container).width()); + this.renderer.shadowMap.enabled = true; + this.renderer.shadowMap.type = THREE.PCFSoftShadowMap; + this.container.appendChild( this.renderer.domElement ); + + var self = this; + $(document).keyup(function(e) { + console.log('Key up ' + e.which); + if (e.which === 85) { // "u" up + self.target.y += 0.2; + + } else if (e.which === 68) { // "d" down + self.target.y -= 0.2; + + } else if (e.which === 82) { // "r" right + self.xzAngle += Math.PI * 0.1; + } else if (e.which === 76) { // "l" left + self.xzAngle -= Math.PI * 0.1; + + } else { + return; + } + e.preventDefault(); + self.setManualCamera(); + self.render(); + }); + + this.setManualCamera(); + + this.controls = new THREE.OrbitControls(this.camera, this.renderer.domElement); + this.controls.update(); + + + var renderer = this; + var animate = function() { + requestAnimationFrame( animate ); + renderer.controls.update(); + renderer.render(); + }; + animate(); +}; + +// nvidia.ThreeJsRenderer.prototype.initScalePosition = function(boundingBox) { +// this.model_scale = RenderUtils.computeGeometryScale(boundingBox); +// this.model_position = new THREE.Vector3( +// -this.model_scale * (boundingBox.max.x + boundingBox.min.x) / 2.0, +// -this.model_scale * boundingBox.min.y + 0.2, +// -this.model_scale * (boundingBox.max.z + boundingBox.min.z) / 2.0); +// }; + +nvidia.ThreeJsRenderer.prototype.setMeshes = function(geometries, material) { + // if (!this.meshes) { + // var boundingBox = this.getBoundingBox(geometries); + // console.log("Found bounding box"); + // console.log(boundingBox); + // this.initScalePosition(boundingBox); + // this.meshes = []; + // } else { + for (var m = 0; m < this.meshes.length; ++m) { + this.scene.remove(this.meshes[m]); + } + this.meshes = []; + //} + + if (!material) { + material = this.defaultMaterial; + } + + for (var g = 0; g < geometries.length; ++g) { + var geometry = geometries[g]; + var mesh = new THREE.Mesh(geometry, material); + // mesh.position.set(this.model_position.x, + // this.model_position.y, + // this.model_position.z); + // mesh.scale.set(this.model_scale, this.model_scale, this.model_scale); + // if (geometry.__platoMatrix) { + // mesh.customMatrix = geometry.__platoMatrix; + // } + this.meshes.push(mesh); + this.scene.add(mesh); + } + + this.render(); + console.log("Rendered"); +}; + +nvidia.ThreeJsRenderer.prototype.setManualCamera = function() { + this.camera.position.z = 0.5 + this.radius * Math.cos(this.xzAngle); + this.camera.position.x = 0.5 + this.radius * Math.sin(this.xzAngle); + this.camera.lookAt(this.target); +}; + +nvidia.ThreeJsRenderer.prototype.render = function() { + //this.camera.position.x += ( mouseX - this.camera.position.x ) * 0.05; + //this.camera.position.y += ( - mouseY - this.camera.position.y ) * 0.05; + + this.renderer.render( this.scene, this.camera ); +}; + +if (typeof module !== 'undefined') { + module.exports = nvidia.ThreeJsRenderer; +} \ No newline at end of file diff --git a/kaolin/experimental/dash3d/src/style.css b/kaolin/experimental/dash3d/src/style.css new file mode 100644 index 000000000..dc9161907 --- /dev/null +++ b/kaolin/experimental/dash3d/src/style.css @@ -0,0 +1,148 @@ + /* + Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ +:root { + --sidebar-color: #f5f5f5; + --nvidia-color: #76B900; +} + +body { + margin: 0; + padding: 0; + font-family: DINPro,Helvetica,Arial,Sans-Serif; +} + +nav, +.nav { + background: #ffffff; + border-bottom: 1px solid #ddd; +} + +.title { + font-size: 150% +} + +input[type=checkbox]:checked { + color: var(--nvidia-color); +} + +.card { + margin: 15px 0; +} + +.container { + padding: 0; +} + +/* SIDEBAR ------------------------------------------*/ + +html{ + box-sizing: border-box; + height: 100%; + width: 100%; +} +*, +*:after, +*:before{ + box-sizing: inherit; +} + +.full_height{ + background-color: white; + display: flex; + flex-direction: column; +} +@media (min-width: 992px){ + .full_height{ + padding-left: 25%; + } +} +.sidebar{ + background-color: var(--sidebar-color); + display: flex; + flex-direction: column; + margin-bottom: 30px; + padding: 20px; + width: 100%; +} +@media (min-width: 992px){ + .sidebar{ + height: 100%; + left: 0; + overflow-x: hidden; + overflow-y: auto; + position: fixed; + /*top: 0;*/ + width: 25%; + } +} +.main{ + padding: 20px; + width: 100%; +} + +.logdir { + width: 100%; + font-weight: normal; + white-space: pre-wrap; + word-wrap: break-word; + word-break: break-all; +} + +/* VIEWS ------------------------------------------*/ + +.info { + font-size: 80%; +} + +.view-container { + margin-top: 10px; +} + +/* EXPERIMENTAL ----------------------------------------------------------------------------*/ + +.slider { + -webkit-appearance: none; + width: 100%; + height: 15px; + border-radius: 5px; + background: #d3d3d3; + outline: none; + opacity: 0.7; + -webkit-transition: .2s; + transition: opacity .2s; +} + +.slider::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 25px; + height: 25px; + border-radius: 50%; + background: var(--nvidia-color); + cursor: pointer; +} + +.slider::-moz-range-thumb { + width: 25px; + height: 25px; + border-radius: 50%; + background: var(--nvidia-color); + cursor: pointer; +} + +input[type="range"] { + padding: 0; +} \ No newline at end of file diff --git a/kaolin/experimental/dash3d/src/test_util.js b/kaolin/experimental/dash3d/src/test_util.js new file mode 100644 index 000000000..1e4c7721e --- /dev/null +++ b/kaolin/experimental/dash3d/src/test_util.js @@ -0,0 +1,93 @@ +// Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +var nvidia = nvidia || {}; +nvidia.test = nvidia.test || {}; + +/** A few client side convenience functions to use during cypress tests. */ +nvidia.test.canvas = null; + +nvidia.test.getCanvas = function(width) { + if (!nvidia.test.canvas) { + nvidia.test.canvas = document.createElement("canvas"); + } + nvidia.test.canvas.width = width; + nvidia.test.canvas.height = width; + return nvidia.test.canvas; +}; + +nvidia.test.stripBase64Marker = function(dataStr) { + let marker = ';base64,'; + let idx = dataStr.indexOf(marker) + marker.length; + return dataStr.substring(idx); +}; + +nvidia.test.convertDataUrl = function(dataUrl, width) { + return new Promise((resolve, reject) => { + let img = document.createElement("img"); + img.onload = function() { + let canvas = nvidia.test.getCanvas(width); + let ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0, width, width); + let imgData = ctx.getImageData(0, 0, width, width); + let imgDataCopy = ctx.createImageData(imgData); + imgDataCopy.data.set(imgData.data); + //let imgDataCopy = new Uint8ClampedArray(imgData.data); + resolve([imgDataCopy, canvas.toDataURL()]); + }; + img.onerror = reject; + img.src = dataUrl; + }); +}; + +nvidia.test.imageDataToDataUrl = function(imageData) { + let canvas = nvidia.test.getCanvas(imageData.width); + let ctx = canvas.getContext("2d"); + ctx.putImageData(imageData, 0, 0); + return canvas.toDataURL(); +}; + +/** +* Computes per-pixel difference between two ImageData objects. +* Returns: +*/ +nvidia.test.getImageDiff = function(expected, actual, thresh) { + if (thresh === undefined) { + thresh = 0.2; + } + + let canvas = nvidia.test.getCanvas(expected.width); + let ctx = canvas.getContext("2d"); + let diff = ctx.createImageData(actual); + + let num_disagree = 0; + for (let x = 0; x < expected.width; ++x) { + for (let y = 0; y < expected.height; ++y) { + let idx = (y * expected.height + x) * 4; + let dsum = 0; + for (let c = 0; c < 3; ++c) { + let d = Math.abs(expected.data[idx] - actual.data[idx]); + dsum += Math.pow(d/255, 2); + } + diff.data[idx + 3] = 255; // Alpha + + dsum = Math.sqrt(dsum); + if (dsum > thresh) { + diff.data[idx] = 255; + num_disagree += 1; + } + } + } + return [diff, num_disagree]; +}; diff --git a/kaolin/experimental/dash3d/src/util.js b/kaolin/experimental/dash3d/src/util.js new file mode 100644 index 000000000..8c372abff --- /dev/null +++ b/kaolin/experimental/dash3d/src/util.js @@ -0,0 +1,71 @@ +// Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +var nvidia = nvidia || {}; +nvidia.util = nvidia.util || {}; + +nvidia.util.LOG_LEVELS = { DEBUG: 10, INFO: 20, WARN: 30, ERROR: 40 }; +nvidia.util.GLOBAL_LOG_LEVEL = nvidia.util.LOG_LEVELS.DEBUG; + +nvidia.util.set_global_log_level = function(level_name) { + nvidia.util.GLOBAL_LOG_LEVEL = nvidia.util.LOG_LEVELS[level_name]; +}; + +nvidia.util.timed_log = function(message, level_name) { + let level = nvidia.util.LOG_LEVELS['DEBUG']; + if (level_name && nvidia.util.LOG_LEVELS[level_name]) { + level = nvidia.util.LOG_LEVELS[level_name]; + } + if (level >= nvidia.util.GLOBAL_LOG_LEVEL) { + let d = new Date(); + let msg = d.getMinutes() + ":" + d.getSeconds() + ":" + d.getMilliseconds() + " " + message; + if (level >= nvidia.util.LOG_LEVELS['ERROR']) { + console.error(msg); + } else if (level >= nvidia.util.LOG_LEVELS['WARN']) { + console.warn(msg); + } else if (level >= nvidia.util.LOG_LEVELS['INFO']) { + console.info(msg); + } else { + console.log(msg); + } + } +}; + +nvidia.util.detect_native_byteorder = function() { + let array_uint32 = new Uint32Array([0x11223344]); + let array_uint8 = new Uint8Array(array_uint32.buffer); + + if (array_uint8[0] === 0x44) { + return 'little'; + } else if (array_uint8[0] === 0x11) { + return 'big'; + } else { + return 'unknown'; + } +}; + +nvidia.util.downloadURL = function(filename, url) { + var a = document.createElement("a"); + document.body.appendChild(a); + a.style = "display: none"; + a.href = url; + a.download = filename; + a.click(); + window.URL.revokeObjectURL(url); + document.body.removeChild(a); +}; + +if (typeof module !== 'undefined') { + module.exports = nvidia.util; +} \ No newline at end of file diff --git a/kaolin/experimental/dash3d/static/core-min.js b/kaolin/experimental/dash3d/static/core-min.js new file mode 100644 index 000000000..e86f6402e --- /dev/null +++ b/kaolin/experimental/dash3d/static/core-min.js @@ -0,0 +1,14 @@ +// Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +var nvidia=nvidia||{};nvidia.ThreeJsRenderer=function(e){this.meshes=[];this.container=document.getElementById(e);this.target=new THREE.Vector3(.5,.5,.5);this.xzAngle=0;this.radius=5;this.camera=null;this.scene=null;this.renderer=null;this.mesh=null;this.fragment_shaders={};this.defaultMaterial=new THREE.ShaderMaterial({vertexShader:$("#shader-vs").text(),fragmentShader:$("#shader-fs").text()});$.get("static/green_plastic.frag",function(t){return function(e){t.fragment_shaders["green_plastic"]=e;t.defaultMaterial=new THREE.ShaderMaterial({vertexShader:$("#shader-vs").text(),fragmentShader:t.fragment_shaders["green_plastic"]});console.log("Initialized green plastic shader")}}(this));this.init()};nvidia.ThreeJsRenderer.prototype.init=function(){var e=1;this.camera=new THREE.PerspectiveCamera(20,1,.1,1e4);this.camera.position.y=.5;this.scene=new THREE.Scene;this.scene.background=new THREE.Color(16777215);var t=new THREE.DirectionalLight(16777215);t.position.set(.1,3,.1);this.scene.add(t);t.castShadow=true;var i=new THREE.AmbientLight(16777215,.8);this.scene.add(i);var n=new THREE.MeshPhongMaterial({color:16448250,side:THREE.DoubleSide});var o=new THREE.PlaneBufferGeometry(100,100,1,1);var r=new THREE.Mesh(o,n);r.position.x=-1;r.position.y=0;r.position.z=-1;r.rotation.x=-.5*Math.PI;r.receiveShadow=true;var a=new THREE.AxesHelper(20);this.scene.add(a);this.renderer=new THREE.WebGLRenderer({antialias:true,preserveDrawingBuffer:true});this.scene.background=new THREE.Color("rgb(250, 250, 250)");this.renderer.setPixelRatio(window.devicePixelRatio);this.renderer.setSize($(this.container).width(),$(this.container).width());this.renderer.shadowMap.enabled=true;this.renderer.shadowMap.type=THREE.PCFSoftShadowMap;this.container.appendChild(this.renderer.domElement);var s=this;$(document).keyup(function(e){console.log("Key up "+e.which);if(e.which===85){s.target.y+=.2}else if(e.which===68){s.target.y-=.2}else if(e.which===82){s.xzAngle+=Math.PI*.1}else if(e.which===76){s.xzAngle-=Math.PI*.1}else{return}e.preventDefault();s.setManualCamera();s.render()});this.setManualCamera();this.controls=new THREE.OrbitControls(this.camera,this.renderer.domElement);this.controls.update();var d=this;var l=function(){requestAnimationFrame(l);d.controls.update();d.render()};l()};nvidia.ThreeJsRenderer.prototype.setMeshes=function(e,t){for(var i=0;i{let r=document.createElement("img");r.onload=function(){let e=nvidia.test.getCanvas(a);let t=e.getContext("2d");t.drawImage(r,0,0,a,a);let i=t.getImageData(0,0,a,a);let n=t.createImageData(i);n.data.set(i.data);o([n,e.toDataURL()])};r.onerror=e;r.src=t})};nvidia.test.imageDataToDataUrl=function(e){let t=nvidia.test.getCanvas(e.width);let i=t.getContext("2d");i.putImageData(e,0,0);return t.toDataURL()};nvidia.test.getImageDiff=function(o,r,a){if(a===undefined){a=.2}let e=nvidia.test.getCanvas(o.width);let t=e.getContext("2d");let s=t.createImageData(r);let d=0;for(let n=0;na){s.data[t]=255;d+=1}}}return[s,d]};var nvidia=nvidia||{};nvidia.util=nvidia.util||{};nvidia.util.LOG_LEVELS={DEBUG:10,INFO:20,WARN:30,ERROR:40};nvidia.util.GLOBAL_LOG_LEVEL=nvidia.util.LOG_LEVELS.DEBUG;nvidia.util.set_global_log_level=function(e){nvidia.util.GLOBAL_LOG_LEVEL=nvidia.util.LOG_LEVELS[e]};nvidia.util.timed_log=function(i,e){let n=nvidia.util.LOG_LEVELS["DEBUG"];if(e&&nvidia.util.LOG_LEVELS[e]){n=nvidia.util.LOG_LEVELS[e]}if(n>=nvidia.util.GLOBAL_LOG_LEVEL){let e=new Date;let t=e.getMinutes()+":"+e.getSeconds()+":"+e.getMilliseconds()+" "+i;if(n>=nvidia.util.LOG_LEVELS["ERROR"]){console.error(t)}else if(n>=nvidia.util.LOG_LEVELS["WARN"]){console.warn(t)}else if(n>=nvidia.util.LOG_LEVELS["INFO"]){console.info(t)}else{console.log(t)}}};nvidia.util.detect_native_byteorder=function(){let e=new Uint32Array([287454020]);let t=new Uint8Array(e.buffer);if(t[0]===68){return"little"}else if(t[0]===17){return"big"}else{return"unknown"}};nvidia.util.downloadURL=function(e,t){var i=document.createElement("a");document.body.appendChild(i);i.style="display: none";i.href=t;i.download=e;i.click();window.URL.revokeObjectURL(t);document.body.removeChild(i)};if(typeof module!=="undefined"){module.exports=nvidia.util}var nvidia=nvidia||{};nvidia.Controller=function(){this.supported_types=["mesh","pointcloud"];this.ws=null;this.dir_info=null;this.renderers={};this.active_views={};this.init()};nvidia.Controller.prototype.init=function(){this.initWebSocket();this.initRenderers();this.initSidebarEvents()};nvidia.Controller.prototype.getHeaderId=function(e,t){return e+"-header"+t};nvidia.Controller.prototype.getInfoId=function(e,t){return e+"-info"+t};nvidia.Controller.prototype.getViewContainerId=function(e,t){return e+"-view"+t};nvidia.Controller.prototype.initRenderers=function(){for(let e=0;e").attr("value","-1").text("No Category").attr("selected",true));for(let e=0;e").attr("value",e).text(n[e]["category"]));t=Math.max(n[e]["end_time"],t)}const a=Math.min(n.length,o.length);for(let e=0;e").attr("value",e).text("id "+e))});u.val(s["ids"][0]);const h=function(e,t,i){return function(){e.onViewDropdownChange(t,i)}};u.on("change",h(this,i,e));l.on("change",h(this,i,e));if(s["ids"].length<2){u.hide()}}}$("#timeslider").attr("max",t).val(t);this.requestGeometryForAllViews()};nvidia.Controller.prototype.initSidebarEvents=function(){$("#timeslider").on("change",function(t){return function(e){t.onTimeSliderValueChange($("#timeslider").val())}}(this))};nvidia.Controller.prototype.onTimeSliderValueChange=function(e){this.requestGeometryForAllViews(e)};nvidia.Controller.prototype.onViewDropdownChange=function(e,t){const i="#"+this.getHeaderId(e,t);const n=$(i+" .cat").val();const o=$(i+" .id").val();this.active_views[e][t].id=o;this.active_views[e][t].category=this.dir_info[e][n].category;this.active_views[e][t].time=$("#timeslider").val();this.requestGeometry([this.makeGeometryRequest(e,t)])};nvidia.Controller.prototype.requestGeometryForAllViews=function(t){let i=[];for(let e=0;e").text(bbox_str));o.append($("
").text(t));o.append($("
").text("timecode: "+i.time))}}else{nvidia.util.timed_log("Got unknown message");console.log(e)}};nvidia.Controller.prototype.parseBinaryGeometry=function(e){nvidia.util.timed_log("Parsing binary data");const t=new Int32Array(e,0,4);const i=t[0];const n=t[1];const o=t[2];const r=t[3];let a="unknown";if(i===0){const s=nvidia.geometry.BufferedGeometriesFromBinary(e,4*4);return{type:"mesh",geos:s,view_id:n,time:o}}else if(i===1){const s=nvidia.geometry.PtCloudsFromBinary(e,4*4);return{type:"pointcloud",geos:s,view_id:n,time:o}}else{nvidia.util.timed_log("Received unsupported data type "+i+" for viewport "+n);return null}};nvidia.Controller.prototype.processTextMessage=function(e){const t=JSON.parse(e);if(t["type"]==="dirinfo"&&t["data"]){this.dir_info=t["data"];this.initViews()}else{nvidia.util.timed_log("Unexpected message:");console.log(t)}};nvidia.Controller.prototype.onclose=function(){nvidia.util.timed_log("Connection closed")};if(typeof module!=="undefined"){module.exports=nvidia.Controller} diff --git a/kaolin/experimental/dash3d/static/favicon.ico b/kaolin/experimental/dash3d/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..31da468f5688b36d3bc6946e468b425588fe5b3a GIT binary patch literal 167786 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 Tz^2a?{F*gt*>KHkf#d%VBE?#8 literal 0 HcmV?d00001 diff --git a/kaolin/experimental/dash3d/static/green_plastic.frag b/kaolin/experimental/dash3d/static/green_plastic.frag new file mode 100644 index 000000000..fc0ae41f3 --- /dev/null +++ b/kaolin/experimental/dash3d/static/green_plastic.frag @@ -0,0 +1,134 @@ +// Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +precision highp float; +in vec4 vColor; +in vec3 vPosition; + +float rand(vec2 co) { + return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); +} + +vec3 getNormal() { + vec3 dPositiondx = dFdx(vPosition); + vec3 dPositiondy = dFdy(vPosition); + return normalize(cross(dPositiondx, dPositiondy)); +} + +float fresnel(float f0, vec3 n, vec3 l){ + return f0 + (1.0-f0) * pow(1.0- dot(n, l), 5.0); +} + +float diffuseEnergyRatio(float f0, vec3 n, vec3 l) { + return 1.0 - fresnel(f0, n, l); +} + +// Some of the code below is adapted from: https://github.com/IonutCava/Divide-Framework (MIT License) +//Beckmann +float distribution(vec3 n, vec3 h, float roughness){ + float m_Sq= roughness * roughness; + float NdotH_Sq= max(dot(n, h), 0.0); + NdotH_Sq= NdotH_Sq * NdotH_Sq; + return exp( (NdotH_Sq - 1.0)/(m_Sq*NdotH_Sq) )/ (3.14159265 * m_Sq * NdotH_Sq * NdotH_Sq) ; +} + +// Schlick +float geometry(vec3 n, vec3 h, vec3 v, vec3 l, float roughness){ + float NdotH= dot(n, h); + float NdotL= dot(n, l); + float NdotV= dot(n, v); + float VdotH= dot(v, h); + float NdotL_clamped= max(NdotL, 0.0); + float NdotV_clamped= max(NdotV, 0.0); + return min( min( 2.0 * NdotH * NdotV_clamped / VdotH, 2.0 * NdotH * NdotL_clamped / VdotH), 1.0); +} + +vec3 getBrdfTerm( float u_roughness, + vec3 u_diffuseColor, + vec3 u_lightColor, + vec3 u_lightDir, + float refractiveIndex) { + float u_fresnel0 = (1.0 - refractiveIndex)/(1.0 + refractiveIndex); + u_fresnel0 = u_fresnel0 * u_fresnel0; + + vec3 normal = getNormal(); + vec3 view = -normalize(vPosition - cameraPosition); //vec3(0, 1.9, 3.7)); + vec3 halfVec= normalize(u_lightDir + view); + float NdotL= dot(normal, u_lightDir); + float NdotV= dot(normal, view); + float NdotL_clamped= max(NdotL, 0.0); + float NdotV_clamped= max(NdotV, 0.0); + + float brdf_spec= fresnel(u_fresnel0, halfVec, u_lightDir) * + geometry(normal, halfVec, view, u_lightDir, u_roughness) * + distribution(normal, halfVec, u_roughness) / (4.0 * NdotL_clamped * NdotV_clamped); + vec3 color_spec= NdotL_clamped * brdf_spec * u_lightColor; + vec3 color_diff= NdotL_clamped * diffuseEnergyRatio(u_fresnel0, normal, u_lightDir) * u_diffuseColor * u_lightColor; + return color_diff + color_spec; +} + +vec4 mix_diffuse(vec3 lightPos, vec3 normal, vec4 color, vec4 light_color, float min_val, float max_val) { + float diffuse = dot(normalize(lightPos - vPosition), normal); + diffuse = max(min_val, diffuse); + return mix(color, light_color, diffuse * max_val); +} + +vec4 mix_specular(vec3 lightPos, vec3 normal, vec4 color, vec4 light_color, float min_val, float max_val) { + vec3 halfVector = normalize(normalize(cameraPosition - vPosition) + normalize(lightPos - vPosition)); + float specular = dot(normal, halfVector); + specular = max(min_val, specular); + specular = pow(specular, 50.0); + return mix(color, light_color, specular * max_val); +} + +vec4 default_plastic2(vec4 color, vec4 dark, vec4 light) { + vec3 sunPos = cameraPosition * 10.0; + vec3 spotPos = cameraPosition * 8.0 + vec3(0.0, -3.0, -0.0); + vec4 spotColor = vec4(1.0, 1.0, 0.0, 1.0); + + vec3 normal = getNormal(); + color = mix_diffuse(sunPos, normal, dark, color, 0.1, 1.0); + color = mix_diffuse(spotPos, normal, color, spotColor, 0.0, 0.2); + color = mix_specular(sunPos, normal, color, light, 0.0, 0.5); + color = mix_specular(spotPos, normal, color, spotColor, 0.0, 0.5); + return color; +} + +bool isNan(float val) { + return (val <= 0.0 || 0.0 <= val) ? false : true; +} + +void main() { + vec3 lightDir = normalize(vec3(-1.0, 1.0, 1.0)); + lightDir = normalize(cameraPosition); + vec3 brdf = getBrdfTerm(0.24, + vec3(0.1/3.14, 1.0/3.14, 0.3/3.14), + vec3(1.0, 0.8, 0.8) * 3.0, + lightDir, + 2.0); + vec4 brdf_vec4 = vec4( + max(0.0, min(brdf[0], 1.0)), + max(0.0, min(brdf[1], 1.0)), + max(0.0, min(brdf[2], 1.0)), + 1.0); + + vec4 plast2 = default_plastic2( + vec4(0.2, 0.8, 0.67, 1.0), + vec4(0.46, 0.72, 0.0, 1.0), + vec4(1.0, 1.0, 1.0, 1.0)); + + vec4 composite = 0.4 * brdf_vec4 + plast2 * 0.6; + + gl_FragColor = composite; +} diff --git a/kaolin/experimental/dash3d/static/style.css b/kaolin/experimental/dash3d/static/style.css new file mode 100644 index 000000000..dc9161907 --- /dev/null +++ b/kaolin/experimental/dash3d/static/style.css @@ -0,0 +1,148 @@ + /* + Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ +:root { + --sidebar-color: #f5f5f5; + --nvidia-color: #76B900; +} + +body { + margin: 0; + padding: 0; + font-family: DINPro,Helvetica,Arial,Sans-Serif; +} + +nav, +.nav { + background: #ffffff; + border-bottom: 1px solid #ddd; +} + +.title { + font-size: 150% +} + +input[type=checkbox]:checked { + color: var(--nvidia-color); +} + +.card { + margin: 15px 0; +} + +.container { + padding: 0; +} + +/* SIDEBAR ------------------------------------------*/ + +html{ + box-sizing: border-box; + height: 100%; + width: 100%; +} +*, +*:after, +*:before{ + box-sizing: inherit; +} + +.full_height{ + background-color: white; + display: flex; + flex-direction: column; +} +@media (min-width: 992px){ + .full_height{ + padding-left: 25%; + } +} +.sidebar{ + background-color: var(--sidebar-color); + display: flex; + flex-direction: column; + margin-bottom: 30px; + padding: 20px; + width: 100%; +} +@media (min-width: 992px){ + .sidebar{ + height: 100%; + left: 0; + overflow-x: hidden; + overflow-y: auto; + position: fixed; + /*top: 0;*/ + width: 25%; + } +} +.main{ + padding: 20px; + width: 100%; +} + +.logdir { + width: 100%; + font-weight: normal; + white-space: pre-wrap; + word-wrap: break-word; + word-break: break-all; +} + +/* VIEWS ------------------------------------------*/ + +.info { + font-size: 80%; +} + +.view-container { + margin-top: 10px; +} + +/* EXPERIMENTAL ----------------------------------------------------------------------------*/ + +.slider { + -webkit-appearance: none; + width: 100%; + height: 15px; + border-radius: 5px; + background: #d3d3d3; + outline: none; + opacity: 0.7; + -webkit-transition: .2s; + transition: opacity .2s; +} + +.slider::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 25px; + height: 25px; + border-radius: 50%; + background: var(--nvidia-color); + cursor: pointer; +} + +.slider::-moz-range-thumb { + width: 25px; + height: 25px; + border-radius: 50%; + background: var(--nvidia-color); + cursor: pointer; +} + +input[type="range"] { + padding: 0; +} \ No newline at end of file diff --git a/kaolin/experimental/dash3d/static/thirdparty.css b/kaolin/experimental/dash3d/static/thirdparty.css new file mode 100644 index 000000000..f2f58af0c --- /dev/null +++ b/kaolin/experimental/dash3d/static/thirdparty.css @@ -0,0 +1,7 @@ +/*! +Mustard UI v0.0.5 +MIT License +https://mustard-ui.com +*/*{margin:0;padding:0}html{box-sizing:border-box}*,*::after,*::before{box-sizing:inherit}body{display:flex;flex-direction:column;min-height:100vh;background-color:#fff}main{flex:1}.float-left{float:left}.float-right{float:right}.clear-fix::before,.clear-fix::after{content:"";display:table}.clear-fix::after{clear:both}.align-left{text-align:left}.align-center{text-align:center}.align-right{text-align:right}.container{max-width:1200px;margin-left:auto;margin-right:auto;padding:30px 0}.container-small{max-width:768px}.container-large{max-width:1440px}.display-flex{display:flex;justify-content:space-around}.display-none{display:none}.display-sm-up{display:none}@media (min-width: 425px){.display-sm-up{display:initial}}.display-md-up{display:none}@media (min-width: 768px){.display-md-up{display:initial}}.display-lg-up{display:none}@media (min-width: 1024px){.display-lg-up{display:initial}}.display-xlg-up{display:none}@media (min-width: 1440px){.display-xlg-up{display:initial}}.display-sm-down{display:none}@media (max-width: 424px){.display-sm-down{display:initial}}.display-md-down{display:none}@media (max-width: 767px){.display-md-down{display:initial}}.display-lg-down{display:none}@media (max-width: 1023px){.display-lg-down{display:initial}}.display-xlg-down{display:none}@media (max-width: 1439px){.display-xlg-down{display:initial}}.display-sm-to-md{display:none}@media (min-width: 425px) and (max-width: 767px){.display-sm-to-md{display:initial}}.display-sm-to-lg{display:none}@media (min-width: 425px) and (max-width: 1023px){.display-sm-to-lg{display:initial}}.display-sm-to-xlg{display:none}@media (min-width: 425px) and (max-width: 1439px){.display-sm-to-xlg{display:initial}}.display-md-to-lg{display:none}@media (min-width: 768px) and (max-width: 1023px){.display-md-to-lg{display:initial}}.display-md-to-xlg{display:none}@media (min-width: 768px) and (max-width: 1439px){.display-md-to-xlg{display:initial}}.display-lg-to-xlg{display:none}@media (min-width: 1024px) and (max-width: 1439px){.display-lg-to-xlg{display:initial}}.row{display:flex;flex-direction:row;flex-wrap:wrap;margin-top:15px;margin-bottom:15px}.row.row-reverse{flex-direction:row-reverse}.row .col{flex-grow:1;flex-basis:100%;max-width:100%;padding:5px 5px}.row .col.col-reverse{flex-direction:column-reverse}.row .col-xs-1{flex-basis:8.33333%;max-width:8.33333%}.row .col-xs-2{flex-basis:16.66667%;max-width:16.66667%}.row .col-xs-3{flex-basis:25%;max-width:25%}.row .col-xs-4{flex-basis:33.33333%;max-width:33.33333%}.row .col-xs-5{flex-basis:41.66667%;max-width:41.66667%}.row .col-xs-6{flex-basis:50%;max-width:50%}.row .col-xs-7{flex-basis:58.33333%;max-width:58.33333%}.row .col-xs-8{flex-basis:66.66667%;max-width:66.66667%}.row .col-xs-9{flex-basis:75%;max-width:75%}.row .col-xs-10{flex-basis:83.33333%;max-width:83.33333%}.row .col-xs-11{flex-basis:91.66667%;max-width:91.66667%}.row .col-xs-12{flex-basis:100%;max-width:100%}.row .col-xs-offset-1{margin-left:8.33333%}.row .col-xs-offset-2{margin-left:16.66667%}.row .col-xs-offset-3{margin-left:25%}.row .col-xs-offset-4{margin-left:33.33333%}.row .col-xs-offset-5{margin-left:41.66667%}.row .col-xs-offset-6{margin-left:50%}.row .col-xs-offset-7{margin-left:58.33333%}.row .col-xs-offset-8{margin-left:66.66667%}.row .col-xs-offset-9{margin-left:75%}.row .col-xs-offset-10{margin-left:83.33333%}.row .col-xs-offset-11{margin-left:91.66667%}.row .col-xs-offset-12{margin-left:100%}@media (min-width: 425px){.row .col-sm-1{flex-basis:8.33333%;max-width:8.33333%}.row .col-sm-2{flex-basis:16.66667%;max-width:16.66667%}.row .col-sm-3{flex-basis:25%;max-width:25%}.row .col-sm-4{flex-basis:33.33333%;max-width:33.33333%}.row .col-sm-5{flex-basis:41.66667%;max-width:41.66667%}.row .col-sm-6{flex-basis:50%;max-width:50%}.row .col-sm-7{flex-basis:58.33333%;max-width:58.33333%}.row .col-sm-8{flex-basis:66.66667%;max-width:66.66667%}.row .col-sm-9{flex-basis:75%;max-width:75%}.row .col-sm-10{flex-basis:83.33333%;max-width:83.33333%}.row .col-sm-11{flex-basis:91.66667%;max-width:91.66667%}.row .col-sm-12{flex-basis:100%;max-width:100%}.row .col-sm-offset-1{margin-left:8.33333%}.row .col-sm-offset-2{margin-left:16.66667%}.row .col-sm-offset-3{margin-left:25%}.row .col-sm-offset-4{margin-left:33.33333%}.row .col-sm-offset-5{margin-left:41.66667%}.row .col-sm-offset-6{margin-left:50%}.row .col-sm-offset-7{margin-left:58.33333%}.row .col-sm-offset-8{margin-left:66.66667%}.row .col-sm-offset-9{margin-left:75%}.row .col-sm-offset-10{margin-left:83.33333%}.row .col-sm-offset-11{margin-left:91.66667%}.row .col-sm-offset-12{margin-left:100%}}@media (min-width: 768px){.row .col-md-1{flex-basis:8.33333%;max-width:8.33333%}.row .col-md-2{flex-basis:16.66667%;max-width:16.66667%}.row .col-md-3{flex-basis:25%;max-width:25%}.row .col-md-4{flex-basis:33.33333%;max-width:33.33333%}.row .col-md-5{flex-basis:41.66667%;max-width:41.66667%}.row .col-md-6{flex-basis:50%;max-width:50%}.row .col-md-7{flex-basis:58.33333%;max-width:58.33333%}.row .col-md-8{flex-basis:66.66667%;max-width:66.66667%}.row .col-md-9{flex-basis:75%;max-width:75%}.row .col-md-10{flex-basis:83.33333%;max-width:83.33333%}.row .col-md-11{flex-basis:91.66667%;max-width:91.66667%}.row .col-md-12{flex-basis:100%;max-width:100%}.row .col-md-offset-1{margin-left:8.33333%}.row .col-md-offset-2{margin-left:16.66667%}.row .col-md-offset-3{margin-left:25%}.row .col-md-offset-4{margin-left:33.33333%}.row .col-md-offset-5{margin-left:41.66667%}.row .col-md-offset-6{margin-left:50%}.row .col-md-offset-7{margin-left:58.33333%}.row .col-md-offset-8{margin-left:66.66667%}.row .col-md-offset-9{margin-left:75%}.row .col-md-offset-10{margin-left:83.33333%}.row .col-md-offset-11{margin-left:91.66667%}.row .col-md-offset-12{margin-left:100%}}@media (min-width: 1024px){.row .col-lg-1{flex-basis:8.33333%;max-width:8.33333%}.row .col-lg-2{flex-basis:16.66667%;max-width:16.66667%}.row .col-lg-3{flex-basis:25%;max-width:25%}.row .col-lg-4{flex-basis:33.33333%;max-width:33.33333%}.row .col-lg-5{flex-basis:41.66667%;max-width:41.66667%}.row .col-lg-6{flex-basis:50%;max-width:50%}.row .col-lg-7{flex-basis:58.33333%;max-width:58.33333%}.row .col-lg-8{flex-basis:66.66667%;max-width:66.66667%}.row .col-lg-9{flex-basis:75%;max-width:75%}.row .col-lg-10{flex-basis:83.33333%;max-width:83.33333%}.row .col-lg-11{flex-basis:91.66667%;max-width:91.66667%}.row .col-lg-12{flex-basis:100%;max-width:100%}.row .col-lg-offset-1{margin-left:8.33333%}.row .col-lg-offset-2{margin-left:16.66667%}.row .col-lg-offset-3{margin-left:25%}.row .col-lg-offset-4{margin-left:33.33333%}.row .col-lg-offset-5{margin-left:41.66667%}.row .col-lg-offset-6{margin-left:50%}.row .col-lg-offset-7{margin-left:58.33333%}.row .col-lg-offset-8{margin-left:66.66667%}.row .col-lg-offset-9{margin-left:75%}.row .col-lg-offset-10{margin-left:83.33333%}.row .col-lg-offset-11{margin-left:91.66667%}.row .col-lg-offset-12{margin-left:100%}}@media (min-width: 1440px){.row .col-xlg-1{flex-basis:8.33333%;max-width:8.33333%}.row .col-xlg-2{flex-basis:16.66667%;max-width:16.66667%}.row .col-xlg-3{flex-basis:25%;max-width:25%}.row .col-xlg-4{flex-basis:33.33333%;max-width:33.33333%}.row .col-xlg-5{flex-basis:41.66667%;max-width:41.66667%}.row .col-xlg-6{flex-basis:50%;max-width:50%}.row .col-xlg-7{flex-basis:58.33333%;max-width:58.33333%}.row .col-xlg-8{flex-basis:66.66667%;max-width:66.66667%}.row .col-xlg-9{flex-basis:75%;max-width:75%}.row .col-xlg-10{flex-basis:83.33333%;max-width:83.33333%}.row .col-xlg-11{flex-basis:91.66667%;max-width:91.66667%}.row .col-xlg-12{flex-basis:100%;max-width:100%}.row .col-xlg-offset-1{margin-left:8.33333%}.row .col-xlg-offset-2{margin-left:16.66667%}.row .col-xlg-offset-3{margin-left:25%}.row .col-xlg-offset-4{margin-left:33.33333%}.row .col-xlg-offset-5{margin-left:41.66667%}.row .col-xlg-offset-6{margin-left:50%}.row .col-xlg-offset-7{margin-left:58.33333%}.row .col-xlg-offset-8{margin-left:66.66667%}.row .col-xlg-offset-9{margin-left:75%}.row .col-xlg-offset-10{margin-left:83.33333%}.row .col-xlg-offset-11{margin-left:91.66667%}.row .col-xlg-offset-12{margin-left:100%}}.section,section{padding:30px}.section :last-child,section :last-child{margin-bottom:0}.section-primary{background:#ffca28}.section-secondary{background:#f5f5f5}.section-tertiary{background:#fff}blockquote{display:block;margin:15px 15px 30px;padding:15px;font-size:18px;font-weight:400;border-left:4px solid #4caf50;background:#fff}blockquote :last-child{margin-bottom:0}.button,button,input[type='button'],input[type='reset'],input[type='submit']{display:inline-block;height:40px;margin:0 2px 15px;padding:0 20px;width:auto;background:none;overflow:visible;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:all .1s ease-out;font-size:14px;font-weight:600;color:inherit;line-height:40px;letter-spacing:1px;text-decoration:none;text-transform:uppercase;white-space:nowrap;border-radius:4px;border-style:solid;border-width:1px}.button:focus,button:focus,input[type='button']:focus,input[type='reset']:focus,input[type='submit']:focus{outline:none}.button:focus,.button:hover,button:focus,button:hover,input[type='button']:focus,input[type='button']:hover,input[type='reset']:focus,input[type='reset']:hover,input[type='submit']:focus,input[type='submit']:hover{opacity:0.85;cursor:pointer;transform:scale(1.025)}.button:active,button:active,input[type='button']:active,input[type='reset']:active,input[type='submit']:active{opacity:1;transform:scale(1)}.button:disabled,button:disabled,input[type='button']:disabled,input[type='reset']:disabled,input[type='submit']:disabled{opacity:0.5}.button:disabled:hover,button:disabled:hover,input[type='button']:disabled:hover,input[type='reset']:disabled:hover,input[type='submit']:disabled:hover{cursor:not-allowed}.button-primary{background-color:#4caf50;color:#fff;border-color:#4caf50}.button-primary-outlined{background-color:#fff;color:#4caf50;border-color:#4caf50}.button-primary-text{color:#4caf50;border-color:transparent}.button-success{background-color:#4caf50;color:#fff;border-color:#4caf50}.button-success-outlined{background-color:#fff;color:#4caf50;border-color:#4caf50}.button-success-text{color:#4caf50;border-color:transparent}.button-info{background-color:#9e9e9e;color:#fff;border-color:#9e9e9e}.button-info-outlined{background-color:#fff;color:#9e9e9e;border-color:#9e9e9e}.button-info-text{color:#9e9e9e;border-color:transparent}.button-warning{background-color:#ffb300;color:#fff;border-color:#ffb300}.button-warning-outlined{background-color:#fff;color:#ffb300;border-color:#ffb300}.button-warning-text{color:#ffb300;border-color:transparent}.button-danger{background-color:#f44336;color:#fff;border-color:#f44336}.button-danger-outlined{background-color:#fff;color:#f44336;border-color:#f44336}.button-danger-text{color:#f44336;border-color:transparent}.button-round{border-radius:24px}.button-large{height:48px;line-height:48px;padding:0 30px;font-size:16px}.button-small{height:30px;line-height:30px;padding:0 15px;font-size:12px}pre{display:block;margin:15px 0;padding:10px 15px;border-left:4px solid #4caf50;background:#f5f5f5;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;font-size:15px;color:#212121;white-space:normal;overflow-x:auto}code{background:#f5f5f5;color:#212121;font-family:Monaco, 'Courier New', Courier, monospace;white-space:pre}.form-control{position:relative;margin-bottom:10px}.form-control-group{display:flex;justify-content:flex-start}.form-control-group .form-control{flex:1;padding-right:15px}.form-control-group .form-control:last-of-type{padding-right:0}.form-control-group .form-control.grow-1x{flex-grow:1}.form-control-group .form-control.grow-2x{flex-grow:2}.form-control-group .form-control.grow-3x{flex-grow:3}.validation-error{margin-top:2px;font-size:12px;color:#f44336}label{font-size:14px;font-weight:400}input[type="color"],input[type="date"],input[type="datetime-local"],input[type="email"],input[type="month"],input[type="number"],input[type="range"],input[type="search"],input[type="tel"],input[type="time"],input[type="url"],input[type="week"],input[type="text"],input[type="password"],select{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;padding:10px;line-height:20px;font-size:16px;font-weight:inherit;background:#fff;border-radius:5px;border:1px solid #bdbdbd}input::-webkit-input-placeholder,select::-webkit-input-placeholder,fieldset::-webkit-input-placeholder{color:#9e9e9e}input:-ms-input-placeholder,select:-ms-input-placeholder,fieldset:-ms-input-placeholder{color:#9e9e9e}input::-ms-input-placeholder,select::-ms-input-placeholder,fieldset::-ms-input-placeholder{color:#9e9e9e}input::placeholder,select::placeholder,fieldset::placeholder{color:#9e9e9e}input:focus,select:focus,fieldset:focus{outline:none;border-color:#4caf50}input.invalid,input:invalid,select.invalid,select:invalid,fieldset.invalid,fieldset:invalid{border-color:#f44336}fieldset{margin:15px 0;padding:15px;font-size:14px;border:1px solid #bdbdbd;border-radius:5px}fieldset legend{padding:0 5px}input[type="checkbox"],input[type="radio"]{margin-right:10px}input[type="range"]{-webkit-appearance:range;-moz-appearance:range;appearance:range}input[type="color"]{display:initial;padding:0 !important;height:42px}select{background-color:#fff;background-image:linear-gradient(45deg, transparent 50%, #bdbdbd 50%),linear-gradient(135deg, #bdbdbd 50%, transparent 50%),linear-gradient(to right, #bdbdbd, #bdbdbd);background-position:calc(100% - 20px) calc(1em + 2px),calc(100% - 15px) calc(1em + 2px),calc(100% - 2.5em) 0.5em;background-size:5px 5px, 5px 5px, 1px 1.5em;background-repeat:no-repeat;padding-right:30px}select:hover{cursor:pointer}select:disabled{opacity:0.5}select:focus{background-image:linear-gradient(45deg, transparent 50%, #4caf50 50%),linear-gradient(135deg, #4caf50 50%, transparent 50%),linear-gradient(to right, #4caf50, #4caf50)}textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;padding:10px 15px;min-height:100px;font-size:16px;font-weight:300;line-height:1.4;color:#000;background-color:#fff;border:1px solid #bdbdbd;border-radius:5px}textarea::-webkit-input-placeholder{color:#9e9e9e}textarea:-ms-input-placeholder{color:#9e9e9e}textarea::-ms-input-placeholder{color:#9e9e9e}textarea::placeholder{color:#9e9e9e}textarea:focus{outline:none;border-color:#4caf50}textarea.invalid,textarea:invalid{border-color:#ef9a9a}a{text-decoration:none;color:#4caf50;font-weight:400;transition:opacity .1s ease-out}a:focus,a:hover{opacity:0.75}a:active{opacity:1}ul,ol,dl{list-style:none;margin-bottom:15px}ul{list-style:circle inside}ol{list-style:decimal inside}table{margin:15px 0;width:100%;border-spacing:0;border-collapse:collapse}table tr{border-bottom:1px solid #eee;text-align:left}table thead th{padding:15px;font-weight:300;color:#9e9e9e}table tbody td{padding:15px;font-weight:300}body{font-family:"Open Sans",sans-serif;font-size:16px;line-height:1.6;font-weight:300;color:#424242}h1,h2,h3,h4,h5,h6{font-family:"Open Sans",sans-serif;font-weight:300;color:#424242;margin:0 0 10px;font-weight:600}.h1,h1{font-size:48px;line-height:60px}.h2,h2{font-size:40px;line-height:52px}.h3,h3{font-size:32px;line-height:44px}.h4,h4{font-size:28px;line-height:40px}.h5,h5{font-size:24px;line-height:36px}.h6,h6{font-size:20px;line-height:32px}p{margin-bottom:15px}p.magnify{font-size:17.6px;line-height:1.8}strong,b{font-weight:600}.alert{margin:15px 0;padding:15px;border-radius:5px}.alert-danger{background:#ffebee}.alert-info{background:#e3f2fd}.alert-warning{background:#fff8e1}.alert-success{background:#e8f5e9}.breadcrumbs{display:flex;list-style:none;font-size:14px}.breadcrumbs li{display:block}.breadcrumbs li::after{display:inline-block;content:"/";padding:0 5px;color:#9e9e9e}.breadcrumbs li:last-of-type::after{display:none}.card{margin:15px;padding:30px;background:#fff;overflow:hidden;border-radius:5px;box-shadow:0 4px 12px rgba(224,224,224,0.5)}.card-title{font-size:24px;margin-bottom:5px}.card-actions{display:flex;align-items:center;margin-top:30px;list-style:none;justify-content:space-around}.card-actions>*{margin-bottom:0}.footer,footer{padding:30px;width:100%;background:#757575}.footer .copyright,footer .copyright{margin:0;padding-top:30px;font-size:14px;color:#fff;border-top:1px solid #9e9e9e}.footer .copyright a,footer .copyright a{color:#bdbdbd}.footer-text p{color:#fff}.footer-links-category{color:#fff;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:1px}.footer-links{list-style:none}.footer-links li{margin-top:5px}.footer-links a{color:#bdbdbd}header,.header{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0 15px;height:100vh;background:#ffc107}header .title,.header .title{font-size:50px;line-height:50px;font-weight:400;color:#424242;text-align:center}@media (min-width: 768px){header .title,.header .title{font-size:60px;line-height:60px}}header .subtitle,.header .subtitle{font-size:18px;line-height:26px;font-weight:300;color:#424242;text-align:center}@media (min-width: 768px){header .subtitle,.header .subtitle{font-size:25.2px;line-height:25.2px}}header .disclaimer,.header .disclaimer{font-size:12px;color:#424242;text-align:center}header .scroll-down,.header .scroll-down{opacity:1;transition:all .5s ease-in 3s}header .scroll-down,.header .scroll-down{display:flex;align-items:center;justify-content:center;position:absolute;bottom:45px;left:50%;margin-left:-16px;width:32px;height:32px;border:2px solid #424242;border-radius:50%;animation:bounce 2s infinite 2s;transition:all .2s ease-in}header .scroll-down::before,.header .scroll-down::before{display:block;position:relative;bottom:2px;content:'';transform:rotate(-45deg);width:12px;height:12px;border:2px solid #424242;border-width:0px 0 2px 2px}@keyframes bounce{0%,100%,20%,50%,80%{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}.menu{display:inline-block;list-style:none;background:#fff;border-radius:5px;box-shadow:0 4px 12px rgba(158,158,158,0.5)}.menu li a{display:block;padding:10px 30px;border-bottom:1px solid #eee}.menu li a:focus,.menu li a:hover{background:#fafafa}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(97,97,97,0.5);z-index:10}.modal{display:flex;flex-direction:column;justify-content:space-between;position:fixed;top:50%;left:50%;max-width:540px;transform:translate(-50%, -50%);background:#fff;border-radius:5px;overflow:hidden;box-shadow:0 4px 12px rgba(117,117,117,0.5)}.modal-head{padding:10px 15px}.modal-head .modal-title{font-size:24px}.modal-body{flex:1;padding:30px 15px;background:#eee}.modal-footer{padding:15px}.modal-footer>*{margin-bottom:0}nav,.nav{padding:0 15px;height:60px;width:100%;background:#ffc107}nav a,.nav a{display:block;color:#424242}.nav-container{display:flex;align-items:center;justify-content:space-between;height:100%;max-width:1200px;margin:0 auto;padding:0 30px}.nav-logo{display:flex;align-items:center;font-size:32px;line-height:32px}.nav-links{display:none;list-style:none;margin:0;height:100%}@media (min-width: 768px){.nav-links{display:flex}}.nav-links li,.nav-links a{height:100%}.nav-links a{display:flex;align-items:center;padding:0 30px}.nav-links a:active{color:#4caf50}.nav-links a.active{border-bottom:4px solid #4caf50}.mobile-menu-toggle{display:block;position:relative;height:20px;width:26px}@media (min-width: 768px){.mobile-menu-toggle{display:none}}.mobile-menu-toggle:focus,.mobile-menu-toggle:hover{cursor:pointer}.mobile-menu-toggle::before{position:absolute;top:0;left:0;width:26px;height:4px;content:'';background:#424242;border-radius:4px;box-shadow:0 8px 0 0 #424242,0 16px 0 0 #424242}.pagination{display:flex;list-style:none;margin:15px 0}.pagination li{margin:0 5px}.pagination li a{display:block;padding:5px 10px;border-radius:5px;background:#fff;border:1px solid #e0e0e0}.pagination li a.active,.pagination li a:focus,.pagination li a:hover{opacity:1;border-color:#4caf50}.pagination li a.active{background:#4caf50;color:#fff}.pagination li a:active{transform:scale(0.95)}.panel{background:#fff;border-radius:5px;overflow:hidden;margin:30px 0;box-shadow:0 4px 12px rgba(224,224,224,0.5)}.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;padding:10px 15px;background:#fafafa}.panel-head .panel-title{font-size:28px}.panel-body{padding:30px 15px}.panel-footer{padding:15px;background:#fafafa}.panel-footer>*{margin-bottom:0}.pricing-table .package{display:flex;flex-direction:column;justify-content:space-between;flex-wrap:wrap;margin:15px;padding:30px;border:1px solid #e0e0e0;border-radius:5px;text-align:center;background:#fff}.pricing-table .package.featured{border-color:#4caf50;border-width:2px}.pricing-table .package.featured .package-name{color:#4caf50}.pricing-table .package hr{border:0;border-bottom:1px solid #e0e0e0;height:1px}.pricing-table .package .package-name{font-weight:700;text-transform:uppercase}.pricing-table .package .price{margin:15px 0 0 0;font-size:36px;line-height:1.2}.pricing-table .package .price-disclaimer{font-size:12px}.pricing-table .package .features{flex:1;padding:15px;list-style:none}.pricing-table .package .features li{margin-bottom:5px}.progress-bar{position:relative;margin:15px 0;height:20px;background:#eee;border-radius:5px;overflow:hidden}.progress-bar>span{display:block;position:absolute;height:100%;border-radius:4px;overflow:hidden}.progress-bar>span.progress-bar-green{background:#66bb6a}.progress-bar>span.progress-bar-blue{background:#42a5f5}.progress-bar>span.progress-bar-red{background:#ef5350}.progress-bar.striped>span:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background-image:linear-gradient(-45deg, rgba(255,255,255,0.2) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.2) 50%, rgba(255,255,255,0.2) 75%, transparent 75%, transparent);background-size:50px 50px;overflow:hidden}.progress-bar.animated>span:after{animation:move 2s linear infinite}@keyframes move{0%{background-position:0 0}100%{background-position:50px 50px}}.sidebar{padding:15px}.sidebar-left{border-right:1px solid #e0e0e0}.sidebar-right{border-left:1px solid #e0e0e0}.sidebar-category{padding:10px;font-size:18px;color:#757575;border-bottom:1px solid #e0e0e0;background:url('data:image/svg+xml;utf8,') center right no-repeat}.sidebar-category:focus,.sidebar-category:hover{cursor:pointer;opacity:0.75}.sidebar-links{list-style:none;padding-left:10px}.sidebar-links a{display:block;padding:5px 10px}.sidebar-links a.active{font-weight:700}.stepper{margin:30px 15px}.stepper .step{position:relative;padding:0 30px;margin-bottom:30px;border-left:1px solid #bdbdbd}.stepper .step:last-of-type{border:none}.stepper .step .step-number{display:flex;flex-direction:column;align-items:center;justify-content:center;position:absolute;top:0;left:-18px;height:36px;width:36px;z-index:1;font-weight:600;color:#fff;background:#8bc34a;border-radius:50%;box-shadow:0 2px 4px #e0e0e0}.stepper .step .step-title{margin:0;font-weight:600;font-size:20px;line-height:36px}.tabs{list-style:none;display:flex;margin:15px 0 30px}.tabs .tab{padding:8px 45px;border-bottom:1px solid #e0e0e0;color:#bdbdbd}.tabs .tab.active{border-top:2px solid #4caf50;border-left:1px solid #e0e0e0;border-right:1px solid #e0e0e0;border-bottom:none;color:#757575}.tabs .tab:focus,.tabs .tab:hover{opacity:1;color:#424242}.tags{display:flex;flex-wrap:wrap;list-style:none}.tags .tag{margin-right:5px;padding:5px 15px;font-size:14px;font-weight:400;border-radius:4px;color:#fff;background:#9e9e9e;box-shadow:0 2px 4px #eee}.tags .tag a{display:block;color:#fff}.tags .tag-rounded{border-radius:16px}.tags .tag-blue{background:#2196f3}.tags .tag-red{background:#f44336}.tags .tag-green{background:#4caf50}.tags .tag-orange{background:#ff9800}.tooltip{display:inline-block;position:relative;border-bottom:1px dashed #bdbdbd}.tooltip:focus,.tooltip:hover{cursor:pointer}.tooltip:focus .tooltip-text,.tooltip:hover .tooltip-text{display:block}.tooltip-text{display:none;position:absolute;bottom:125%;left:50%;transform:translateX(-50%);min-width:300px;padding:10px 15px;color:#fff;text-align:center;background:#424242;border-radius:5px;box-shadow:0 2px 4px #9e9e9e}.tooltip-text::after{position:absolute;content:'';top:100%;left:50%;transform:translateX(-50%);border-width:8px;border-style:solid;border-color:#424242 transparent transparent} + +/*# sourceMappingURL=mustard-ui.min.css.map */ diff --git a/kaolin/experimental/dash3d/static/thirdparty.js b/kaolin/experimental/dash3d/static/thirdparty.js new file mode 100644 index 000000000..7693bda4a --- /dev/null +++ b/kaolin/experimental/dash3d/static/thirdparty.js @@ -0,0 +1,1221 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00?1:+t}),"name"in Function.prototype==!1&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}}),void 0===Object.assign&&(Object.assign=function(t){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),n=1;n=0;--a){var o=this.tryEntries[a],s=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var c=i.call(o,"catchLoc"),l=i.call(o,"finallyLoc");if(c&&l){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),A(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;A(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:R(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),m}},t}("object"==typeof module?module.exports:{});try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}var n="125",i=100,r=300,a=301,o=302,s=303,c=304,l=306,u=307,h=1e3,d=1001,p=1002,f=1003,m=1004,v=1005,g=1006,y=1007,x=1008,_=1009,b=1012,w=1014,M=1015,S=1016,T=1020,E=1022,A=1023,L=1026,R=1027,C=33776,P=33777,O=33778,I=33779,D=35840,N=35841,B=35842,z=35843,F=37492,H=37496,G=2300,U=2301,k=2302,V=2400,W=2401,j=2402,q=2500,X=2501,Y=3e3,Z=3001,J=3007,Q=3002,K=3004,$=3005,tt=3006,et=7680,nt=35044,it=35048,rt="300 es";function at(t,e,n,i,r,a,o){try{var s=t[a](o),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(i,r)}function ot(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=t[Symbol.iterator]()).next.bind(n)}function dt(){}Object.assign(dt.prototype,{addEventListener:function(t,e){void 0===this._listeners&&(this._listeners={});var n=this._listeners;void 0===n[t]&&(n[t]=[]),-1===n[t].indexOf(e)&&n[t].push(e)},hasEventListener:function(t,e){if(void 0===this._listeners)return!1;var n=this._listeners;return void 0!==n[t]&&-1!==n[t].indexOf(e)},removeEventListener:function(t,e){if(void 0!==this._listeners){var n=this._listeners[t];if(void 0!==n){var i=n.indexOf(e);-1!==i&&n.splice(i,1)}}},dispatchEvent:function(t){if(void 0!==this._listeners){var e=this._listeners[t.type];if(void 0!==e){t.target=this;for(var n=e.slice(0),i=0,r=n.length;i>8&255]+pt[t>>16&255]+pt[t>>24&255]+"-"+pt[255&e]+pt[e>>8&255]+"-"+pt[e>>16&15|64]+pt[e>>24&255]+"-"+pt[63&n|128]+pt[n>>8&255]+"-"+pt[n>>16&255]+pt[n>>24&255]+pt[255&i]+pt[i>>8&255]+pt[i>>16&255]+pt[i>>24&255]).toUpperCase()},clamp:function(t,e,n){return Math.max(e,Math.min(n,t))},euclideanModulo:function(t,e){return(t%e+e)%e},mapLinear:function(t,e,n,i,r){return i+(t-e)*(r-i)/(n-e)},lerp:function(t,e,n){return(1-n)*t+n*e},damp:function(t,e,n,i){return gt.lerp(t,e,1-Math.exp(-n*i))},pingpong:function(t,e){return void 0===e&&(e=1),e-Math.abs(gt.euclideanModulo(t,2*e)-e)},smoothstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t)},smootherstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*t*(t*(6*t-15)+10)},randInt:function(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat:function(t,e){return t+Math.random()*(e-t)},randFloatSpread:function(t){return t*(.5-Math.random())},seededRandom:function(t){return void 0!==t&&(vt=t%2147483647),((vt=16807*vt%2147483647)-1)/2147483646},degToRad:function(t){return t*gt.DEG2RAD},radToDeg:function(t){return t*gt.RAD2DEG},isPowerOfTwo:function(t){return 0==(t&t-1)&&0!==t},ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:function(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},setQuaternionFromProperEuler:function(t,e,n,i,r){var a=Math.cos,o=Math.sin,s=a(n/2),c=o(n/2),l=a((e+i)/2),u=o((e+i)/2),h=a((e-i)/2),d=o((e-i)/2),p=a((i-e)/2),f=o((i-e)/2);switch(r){case"XYX":t.set(s*u,c*h,c*d,s*l);break;case"YZY":t.set(c*d,s*u,c*h,s*l);break;case"ZXZ":t.set(c*h,c*d,s*u,s*l);break;case"XZX":t.set(s*u,c*f,c*p,s*l);break;case"YXY":t.set(c*p,s*u,c*f,s*l);break;case"ZYZ":t.set(c*f,c*p,s*u,s*l);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}},yt=function(){function t(t,e){void 0===t&&(t=0),void 0===e&&(e=0),Object.defineProperty(this,"isVector2",{value:!0}),this.x=t,this.y=e}var e=t.prototype;return e.set=function(t,e){return this.x=t,this.y=e,this},e.setScalar=function(t){return this.x=t,this.y=t,this},e.setX=function(t){return this.x=t,this},e.setY=function(t){return this.y=t,this},e.setComponent=function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this},e.getComponent=function(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}},e.clone=function(){return new this.constructor(this.x,this.y)},e.copy=function(t){return this.x=t.x,this.y=t.y,this},e.add=function(t,e){return void 0!==e?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this)},e.addScalar=function(t){return this.x+=t,this.y+=t,this},e.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},e.addScaledVector=function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this},e.sub=function(t,e){return void 0!==e?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this)},e.subScalar=function(t){return this.x-=t,this.y-=t,this},e.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},e.multiply=function(t){return this.x*=t.x,this.y*=t.y,this},e.multiplyScalar=function(t){return this.x*=t,this.y*=t,this},e.divide=function(t){return this.x/=t.x,this.y/=t.y,this},e.divideScalar=function(t){return this.multiplyScalar(1/t)},e.applyMatrix3=function(t){var e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this},e.min=function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this},e.max=function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this},e.clamp=function(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this},e.clampScalar=function(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this},e.clampLength=function(t,e){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},e.floor=function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},e.ceil=function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},e.round=function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},e.roundToZero=function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},e.negate=function(){return this.x=-this.x,this.y=-this.y,this},e.dot=function(t){return this.x*t.x+this.y*t.y},e.cross=function(t){return this.x*t.y-this.y*t.x},e.lengthSq=function(){return this.x*this.x+this.y*this.y},e.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.manhattanLength=function(){return Math.abs(this.x)+Math.abs(this.y)},e.normalize=function(){return this.divideScalar(this.length()||1)},e.angle=function(){var t=Math.atan2(-this.y,-this.x)+Math.PI;return t},e.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},e.distanceToSquared=function(t){var e=this.x-t.x,n=this.y-t.y;return e*e+n*n},e.manhattanDistanceTo=function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)},e.setLength=function(t){return this.normalize().multiplyScalar(t)},e.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},e.lerpVectors=function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this},e.equals=function(t){return t.x===this.x&&t.y===this.y},e.fromArray=function(t,e){return void 0===e&&(e=0),this.x=t[e],this.y=t[e+1],this},e.toArray=function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,t},e.fromBufferAttribute=function(t,e,n){return void 0!==n&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this},e.rotateAround=function(t,e){var n=Math.cos(e),i=Math.sin(e),r=this.x-t.x,a=this.y-t.y;return this.x=r*n-a*i+t.x,this.y=r*i+a*n+t.y,this},e.random=function(){return this.x=Math.random(),this.y=Math.random(),this},st(t,[{key:"width",get:function(){return this.x},set:function(t){this.x=t}},{key:"height",get:function(){return this.y},set:function(t){this.y=t}}]),t}(),xt=function(){function t(){Object.defineProperty(this,"isMatrix3",{value:!0}),this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}var e=t.prototype;return e.set=function(t,e,n,i,r,a,o,s,c){var l=this.elements;return l[0]=t,l[1]=i,l[2]=o,l[3]=e,l[4]=r,l[5]=s,l[6]=n,l[7]=a,l[8]=c,this},e.identity=function(){return this.set(1,0,0,0,1,0,0,0,1),this},e.clone=function(){return(new this.constructor).fromArray(this.elements)},e.copy=function(t){var e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this},e.extractBasis=function(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this},e.setFromMatrix4=function(t){var e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this},e.multiply=function(t){return this.multiplyMatrices(this,t)},e.premultiply=function(t){return this.multiplyMatrices(t,this)},e.multiplyMatrices=function(t,e){var n=t.elements,i=e.elements,r=this.elements,a=n[0],o=n[3],s=n[6],c=n[1],l=n[4],u=n[7],h=n[2],d=n[5],p=n[8],f=i[0],m=i[3],v=i[6],g=i[1],y=i[4],x=i[7],_=i[2],b=i[5],w=i[8];return r[0]=a*f+o*g+s*_,r[3]=a*m+o*y+s*b,r[6]=a*v+o*x+s*w,r[1]=c*f+l*g+u*_,r[4]=c*m+l*y+u*b,r[7]=c*v+l*x+u*w,r[2]=h*f+d*g+p*_,r[5]=h*m+d*y+p*b,r[8]=h*v+d*x+p*w,this},e.multiplyScalar=function(t){var e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this},e.determinant=function(){var t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],o=t[5],s=t[6],c=t[7],l=t[8];return e*a*l-e*o*c-n*r*l+n*o*s+i*r*c-i*a*s},e.invert=function(){var t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],o=t[5],s=t[6],c=t[7],l=t[8],u=l*a-o*c,h=o*s-l*r,d=c*r-a*s,p=e*u+n*h+i*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);var f=1/p;return t[0]=u*f,t[1]=(i*c-l*n)*f,t[2]=(o*n-i*a)*f,t[3]=h*f,t[4]=(l*e-i*s)*f,t[5]=(i*r-o*e)*f,t[6]=d*f,t[7]=(n*s-c*e)*f,t[8]=(a*e-n*r)*f,this},e.transpose=function(){var t,e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this},e.getNormalMatrix=function(t){return this.setFromMatrix4(t).copy(this).invert().transpose()},e.transposeIntoArray=function(t){var e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this},e.setUvTransform=function(t,e,n,i,r,a,o){var s=Math.cos(r),c=Math.sin(r);return this.set(n*s,n*c,-n*(s*a+c*o)+a+t,-i*c,i*s,-i*(-c*a+s*o)+o+e,0,0,1),this},e.scale=function(t,e){var n=this.elements;return n[0]*=t,n[3]*=t,n[6]*=t,n[1]*=e,n[4]*=e,n[7]*=e,this},e.rotate=function(t){var e=Math.cos(t),n=Math.sin(t),i=this.elements,r=i[0],a=i[3],o=i[6],s=i[1],c=i[4],l=i[7];return i[0]=e*r+n*s,i[3]=e*a+n*c,i[6]=e*o+n*l,i[1]=-n*r+e*s,i[4]=-n*a+e*c,i[7]=-n*o+e*l,this},e.translate=function(t,e){var n=this.elements;return n[0]+=t*n[2],n[3]+=t*n[5],n[6]+=t*n[8],n[1]+=e*n[2],n[4]+=e*n[5],n[7]+=e*n[8],this},e.equals=function(t){for(var e=this.elements,n=t.elements,i=0;i<9;i++)if(e[i]!==n[i])return!1;return!0},e.fromArray=function(t,e){void 0===e&&(e=0);for(var n=0;n<9;n++)this.elements[n]=t[n+e];return this},e.toArray=function(t,e){void 0===t&&(t=[]),void 0===e&&(e=0);var n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t},t}(),_t={getDataURL:function(t){if(/^data:/i.test(t.src))return t.src;if("undefined"==typeof HTMLCanvasElement)return t.src;var e;if(t instanceof HTMLCanvasElement)e=t;else{void 0===mt&&(mt=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),mt.width=t.width,mt.height=t.height;var n=mt.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=mt}return e.width>2048||e.height>2048?e.toDataURL("image/jpeg",.6):e.toDataURL("image/png")}},bt=0;function wt(t,e,n,i,r,a,o,s,c,l){void 0===t&&(t=wt.DEFAULT_IMAGE),void 0===e&&(e=wt.DEFAULT_MAPPING),void 0===n&&(n=d),void 0===i&&(i=d),void 0===r&&(r=g),void 0===a&&(a=x),void 0===o&&(o=A),void 0===s&&(s=_),void 0===c&&(c=1),void 0===l&&(l=Y),Object.defineProperty(this,"id",{value:bt++}),this.uuid=gt.generateUUID(),this.name="",this.image=t,this.mipmaps=[],this.mapping=e,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=a,this.anisotropy=c,this.format=o,this.internalFormat=null,this.type=s,this.offset=new yt(0,0),this.repeat=new yt(1,1),this.center=new yt(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new xt,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=l,this.version=0,this.onUpdate=null}function Mt(t){return"undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap?_t.getDataURL(t):t.data?{data:Array.prototype.slice.call(t.data),width:t.width,height:t.height,type:t.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}wt.DEFAULT_IMAGE=void 0,wt.DEFAULT_MAPPING=r,wt.prototype=Object.assign(Object.create(dt.prototype),{constructor:wt,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return(new this.constructor).copy(this)},copy:function(t){return this.name=t.name,this.image=t.image,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.encoding=t.encoding,this},toJSON:function(t){var e=void 0===t||"string"==typeof t;if(!e&&void 0!==t.textures[this.uuid])return t.textures[this.uuid];var n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(void 0!==this.image){var i=this.image;if(void 0===i.uuid&&(i.uuid=gt.generateUUID()),!e&&void 0===t.images[i.uuid]){var r;if(Array.isArray(i)){r=[];for(var a=0,o=i.length;a1)switch(this.wrapS){case h:t.x=t.x-Math.floor(t.x);break;case d:t.x=t.x<0?0:1;break;case p:1===Math.abs(Math.floor(t.x)%2)?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x)}if(t.y<0||t.y>1)switch(this.wrapT){case h:t.y=t.y-Math.floor(t.y);break;case d:t.y=t.y<0?0:1;break;case p:1===Math.abs(Math.floor(t.y)%2)?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y)}return this.flipY&&(t.y=1-t.y),t}}),Object.defineProperty(wt.prototype,"needsUpdate",{set:function(t){!0===t&&this.version++}});var St=function(){function t(t,e,n,i){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),void 0===i&&(i=1),Object.defineProperty(this,"isVector4",{value:!0}),this.x=t,this.y=e,this.z=n,this.w=i}var e=t.prototype;return e.set=function(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this},e.setScalar=function(t){return this.x=t,this.y=t,this.z=t,this.w=t,this},e.setX=function(t){return this.x=t,this},e.setY=function(t){return this.y=t,this},e.setZ=function(t){return this.z=t,this},e.setW=function(t){return this.w=t,this},e.setComponent=function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this},e.getComponent=function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}},e.clone=function(){return new this.constructor(this.x,this.y,this.z,this.w)},e.copy=function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=void 0!==t.w?t.w:1,this},e.add=function(t,e){return void 0!==e?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this)},e.addScalar=function(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this},e.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this},e.addScaledVector=function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this},e.sub=function(t,e){return void 0!==e?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this)},e.subScalar=function(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this},e.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this},e.multiply=function(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this},e.multiplyScalar=function(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this},e.applyMatrix4=function(t){var e=this.x,n=this.y,i=this.z,r=this.w,a=t.elements;return this.x=a[0]*e+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*e+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*e+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*e+a[7]*n+a[11]*i+a[15]*r,this},e.divideScalar=function(t){return this.multiplyScalar(1/t)},e.setAxisAngleFromQuaternion=function(t){this.w=2*Math.acos(t.w);var e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this},e.setAxisAngleFromRotationMatrix=function(t){var e,n,i,r,a=.01,o=.1,s=t.elements,c=s[0],l=s[4],u=s[8],h=s[1],d=s[5],p=s[9],f=s[2],m=s[6],v=s[10];if(Math.abs(l-h)y&&g>x?gx?y=0?1:-1,y=1-v*v;if(y>Number.EPSILON){var x=Math.sqrt(y),_=Math.atan2(x,v*g);m=Math.sin(m*_)/x,o=Math.sin(o*_)/x}var b=o*g;if(s=s*m+h*b,c=c*m+d*b,l=l*m+p*b,u=u*m+f*b,m===1-o){var w=1/Math.sqrt(s*s+c*c+l*l+u*u);s*=w,c*=w,l*=w,u*=w}}t[e]=s,t[e+1]=c,t[e+2]=l,t[e+3]=u},t.multiplyQuaternionsFlat=function(t,e,n,i,r,a){var o=n[i],s=n[i+1],c=n[i+2],l=n[i+3],u=r[a],h=r[a+1],d=r[a+2],p=r[a+3];return t[e]=o*p+l*u+s*d-c*h,t[e+1]=s*p+l*h+c*u-o*d,t[e+2]=c*p+l*d+o*h-s*u,t[e+3]=l*p-o*u-s*h-c*d,t};var e=t.prototype;return e.set=function(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this},e.clone=function(){return new this.constructor(this._x,this._y,this._z,this._w)},e.copy=function(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this},e.setFromEuler=function(t,e){if(!t||!t.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var n=t._x,i=t._y,r=t._z,a=t._order,o=Math.cos,s=Math.sin,c=o(n/2),l=o(i/2),u=o(r/2),h=s(n/2),d=s(i/2),p=s(r/2);switch(a){case"XYZ":this._x=h*l*u+c*d*p,this._y=c*d*u-h*l*p,this._z=c*l*p+h*d*u,this._w=c*l*u-h*d*p;break;case"YXZ":this._x=h*l*u+c*d*p,this._y=c*d*u-h*l*p,this._z=c*l*p-h*d*u,this._w=c*l*u+h*d*p;break;case"ZXY":this._x=h*l*u-c*d*p,this._y=c*d*u+h*l*p,this._z=c*l*p+h*d*u,this._w=c*l*u-h*d*p;break;case"ZYX":this._x=h*l*u-c*d*p,this._y=c*d*u+h*l*p,this._z=c*l*p-h*d*u,this._w=c*l*u+h*d*p;break;case"YZX":this._x=h*l*u+c*d*p,this._y=c*d*u+h*l*p,this._z=c*l*p-h*d*u,this._w=c*l*u-h*d*p;break;case"XZY":this._x=h*l*u-c*d*p,this._y=c*d*u-h*l*p,this._z=c*l*p+h*d*u,this._w=c*l*u+h*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!1!==e&&this._onChangeCallback(),this},e.setFromAxisAngle=function(t,e){var n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this},e.setFromRotationMatrix=function(t){var e=t.elements,n=e[0],i=e[4],r=e[8],a=e[1],o=e[5],s=e[9],c=e[2],l=e[6],u=e[10],h=n+o+u;if(h>0){var d=.5/Math.sqrt(h+1);this._w=.25/d,this._x=(l-s)*d,this._y=(r-c)*d,this._z=(a-i)*d}else if(n>o&&n>u){var p=2*Math.sqrt(1+n-o-u);this._w=(l-s)/p,this._x=.25*p,this._y=(i+a)/p,this._z=(r+c)/p}else if(o>u){var f=2*Math.sqrt(1+o-n-u);this._w=(r-c)/f,this._x=(i+a)/f,this._y=.25*f,this._z=(s+l)/f}else{var m=2*Math.sqrt(1+u-n-o);this._w=(a-i)/m,this._x=(r+c)/m,this._y=(s+l)/m,this._z=.25*m}return this._onChangeCallback(),this},e.setFromUnitVectors=function(t,e){var n=t.dot(e)+1;return n<1e-6?(n=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()},e.angleTo=function(t){return 2*Math.acos(Math.abs(gt.clamp(this.dot(t),-1,1)))},e.rotateTowards=function(t,e){var n=this.angleTo(t);if(0===n)return this;var i=Math.min(1,e/n);return this.slerp(t,i),this},e.identity=function(){return this.set(0,0,0,1)},e.invert=function(){return this.conjugate()},e.conjugate=function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this},e.dot=function(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w},e.lengthSq=function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},e.length=function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},e.normalize=function(){var t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this},e.multiply=function(t,e){return void 0!==e?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(t,e)):this.multiplyQuaternions(this,t)},e.premultiply=function(t){return this.multiplyQuaternions(t,this)},e.multiplyQuaternions=function(t,e){var n=t._x,i=t._y,r=t._z,a=t._w,o=e._x,s=e._y,c=e._z,l=e._w;return this._x=n*l+a*o+i*c-r*s,this._y=i*l+a*s+r*o-n*c,this._z=r*l+a*c+n*s-i*o,this._w=a*l-n*o-i*s-r*c,this._onChangeCallback(),this},e.slerp=function(t,e){if(0===e)return this;if(1===e)return this.copy(t);var n=this._x,i=this._y,r=this._z,a=this._w,o=a*t._w+n*t._x+i*t._y+r*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=n,this._y=i,this._z=r,this;var s=1-o*o;if(s<=Number.EPSILON){var c=1-e;return this._w=c*a+e*this._w,this._x=c*n+e*this._x,this._y=c*i+e*this._y,this._z=c*r+e*this._z,this.normalize(),this._onChangeCallback(),this}var l=Math.sqrt(s),u=Math.atan2(l,o),h=Math.sin((1-e)*u)/l,d=Math.sin(e*u)/l;return this._w=a*h+this._w*d,this._x=n*h+this._x*d,this._y=i*h+this._y*d,this._z=r*h+this._z*d,this._onChangeCallback(),this},e.equals=function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w},e.fromArray=function(t,e){return void 0===e&&(e=0),this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this},e.toArray=function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t},e.fromBufferAttribute=function(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this},e._onChange=function(t){return this._onChangeCallback=t,this},e._onChangeCallback=function(){},st(t,[{key:"x",get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()}},{key:"y",get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()}},{key:"z",get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()}},{key:"w",get:function(){return this._w},set:function(t){this._w=t,this._onChangeCallback()}}]),t}(),Lt=function(){function t(t,e,n){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),Object.defineProperty(this,"isVector3",{value:!0}),this.x=t,this.y=e,this.z=n}var e=t.prototype;return e.set=function(t,e,n){return void 0===n&&(n=this.z),this.x=t,this.y=e,this.z=n,this},e.setScalar=function(t){return this.x=t,this.y=t,this.z=t,this},e.setX=function(t){return this.x=t,this},e.setY=function(t){return this.y=t,this},e.setZ=function(t){return this.z=t,this},e.setComponent=function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this},e.getComponent=function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}},e.clone=function(){return new this.constructor(this.x,this.y,this.z)},e.copy=function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},e.add=function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},e.addScalar=function(t){return this.x+=t,this.y+=t,this.z+=t,this},e.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},e.addScaledVector=function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this},e.sub=function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},e.subScalar=function(t){return this.x-=t,this.y-=t,this.z-=t,this},e.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},e.multiply=function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},e.multiplyScalar=function(t){return this.x*=t,this.y*=t,this.z*=t,this},e.multiplyVectors=function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},e.applyEuler=function(t){return t&&t.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(Ct.setFromEuler(t))},e.applyAxisAngle=function(t,e){return this.applyQuaternion(Ct.setFromAxisAngle(t,e))},e.applyMatrix3=function(t){var e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*i,this.y=r[1]*e+r[4]*n+r[7]*i,this.z=r[2]*e+r[5]*n+r[8]*i,this},e.applyNormalMatrix=function(t){return this.applyMatrix3(t).normalize()},e.applyMatrix4=function(t){var e=this.x,n=this.y,i=this.z,r=t.elements,a=1/(r[3]*e+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*i+r[12])*a,this.y=(r[1]*e+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*e+r[6]*n+r[10]*i+r[14])*a,this},e.applyQuaternion=function(t){var e=this.x,n=this.y,i=this.z,r=t.x,a=t.y,o=t.z,s=t.w,c=s*e+a*i-o*n,l=s*n+o*e-r*i,u=s*i+r*n-a*e,h=-r*e-a*n-o*i;return this.x=c*s+h*-r+l*-o-u*-a,this.y=l*s+h*-a+u*-r-c*-o,this.z=u*s+h*-o+c*-a-l*-r,this},e.project=function(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)},e.unproject=function(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)},e.transformDirection=function(t){var e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*i,this.y=r[1]*e+r[5]*n+r[9]*i,this.z=r[2]*e+r[6]*n+r[10]*i,this.normalize()},e.divide=function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},e.divideScalar=function(t){return this.multiplyScalar(1/t)},e.min=function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this},e.max=function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this},e.clamp=function(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this},e.clampScalar=function(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this},e.clampLength=function(t,e){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},e.floor=function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},e.ceil=function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},e.round=function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},e.roundToZero=function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},e.negate=function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},e.dot=function(t){return this.x*t.x+this.y*t.y+this.z*t.z},e.lengthSq=function(){return this.x*this.x+this.y*this.y+this.z*this.z},e.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},e.manhattanLength=function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},e.normalize=function(){return this.divideScalar(this.length()||1)},e.setLength=function(t){return this.normalize().multiplyScalar(t)},e.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},e.lerpVectors=function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this},e.cross=function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e)):this.crossVectors(this,t)},e.crossVectors=function(t,e){var n=t.x,i=t.y,r=t.z,a=e.x,o=e.y,s=e.z;return this.x=i*s-r*o,this.y=r*a-n*s,this.z=n*o-i*a,this},e.projectOnVector=function(t){var e=t.lengthSq();if(0===e)return this.set(0,0,0);var n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)},e.projectOnPlane=function(t){return Rt.copy(this).projectOnVector(t),this.sub(Rt)},e.reflect=function(t){return this.sub(Rt.copy(t).multiplyScalar(2*this.dot(t)))},e.angleTo=function(t){var e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;var n=this.dot(t)/e;return Math.acos(gt.clamp(n,-1,1))},e.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},e.distanceToSquared=function(t){var e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i},e.manhattanDistanceTo=function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)},e.setFromSpherical=function(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)},e.setFromSphericalCoords=function(t,e,n){var i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this},e.setFromCylindrical=function(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)},e.setFromCylindricalCoords=function(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this},e.setFromMatrixPosition=function(t){var e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this},e.setFromMatrixScale=function(t){var e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this},e.setFromMatrixColumn=function(t,e){return this.fromArray(t.elements,4*e)},e.setFromMatrix3Column=function(t,e){return this.fromArray(t.elements,3*e)},e.equals=function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},e.fromArray=function(t,e){return void 0===e&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this},e.toArray=function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t},e.fromBufferAttribute=function(t,e,n){return void 0!==n&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this},e.random=function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this},t}(),Rt=new Lt,Ct=new At,Pt=function(){function t(t,e){Object.defineProperty(this,"isBox3",{value:!0}),this.min=void 0!==t?t:new Lt(1/0,1/0,1/0),this.max=void 0!==e?e:new Lt(-1/0,-1/0,-1/0)}var e=t.prototype;return e.set=function(t,e){return this.min.copy(t),this.max.copy(e),this},e.setFromArray=function(t){for(var e=1/0,n=1/0,i=1/0,r=-1/0,a=-1/0,o=-1/0,s=0,c=t.length;sr&&(r=l),u>a&&(a=u),h>o&&(o=h)}return this.min.set(e,n,i),this.max.set(r,a,o),this},e.setFromBufferAttribute=function(t){for(var e=1/0,n=1/0,i=1/0,r=-1/0,a=-1/0,o=-1/0,s=0,c=t.count;sr&&(r=l),u>a&&(a=u),h>o&&(o=h)}return this.min.set(e,n,i),this.max.set(r,a,o),this},e.setFromPoints=function(t){this.makeEmpty();for(var e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)},e.containsBox=function(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z},e.getParameter=function(t,e){return void 0===e&&(console.warn("THREE.Box3: .getParameter() target is now required"),e=new Lt),e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))},e.intersectsBox=function(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)},e.intersectsSphere=function(t){return this.clampPoint(t.center,Dt),Dt.distanceToSquared(t.center)<=t.radius*t.radius},e.intersectsPlane=function(t){var e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant},e.intersectsTriangle=function(t){if(this.isEmpty())return!1;this.getCenter(kt),Vt.subVectors(this.max,kt),Bt.subVectors(t.a,kt),zt.subVectors(t.b,kt),Ft.subVectors(t.c,kt),Ht.subVectors(zt,Bt),Gt.subVectors(Ft,zt),Ut.subVectors(Bt,Ft);var e=[0,-Ht.z,Ht.y,0,-Gt.z,Gt.y,0,-Ut.z,Ut.y,Ht.z,0,-Ht.x,Gt.z,0,-Gt.x,Ut.z,0,-Ut.x,-Ht.y,Ht.x,0,-Gt.y,Gt.x,0,-Ut.y,Ut.x,0];return!!Ot(e,Bt,zt,Ft,Vt)&&(!!Ot(e=[1,0,0,0,1,0,0,0,1],Bt,zt,Ft,Vt)&&(Wt.crossVectors(Ht,Gt),Ot(e=[Wt.x,Wt.y,Wt.z],Bt,zt,Ft,Vt)))},e.clampPoint=function(t,e){return void 0===e&&(console.warn("THREE.Box3: .clampPoint() target is now required"),e=new Lt),e.copy(t).clamp(this.min,this.max)},e.distanceToPoint=function(t){return Dt.copy(t).clamp(this.min,this.max).sub(t).length()},e.getBoundingSphere=function(t){return void 0===t&&console.error("THREE.Box3: .getBoundingSphere() target is now required"),this.getCenter(t.center),t.radius=.5*this.getSize(Dt).length(),t},e.intersect=function(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this},e.union=function(t){return this.min.min(t.min),this.max.max(t.max),this},e.applyMatrix4=function(t){return this.isEmpty()||(It[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),It[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),It[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),It[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),It[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),It[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),It[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),It[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(It)),this},e.translate=function(t){return this.min.add(t),this.max.add(t),this},e.equals=function(t){return t.min.equals(this.min)&&t.max.equals(this.max)},t}();function Ot(t,e,n,i,r){for(var a=0,o=t.length-3;a<=o;a+=3){jt.fromArray(t,a);var s=r.x*Math.abs(jt.x)+r.y*Math.abs(jt.y)+r.z*Math.abs(jt.z),c=e.dot(jt),l=n.dot(jt),u=i.dot(jt);if(Math.max(-Math.max(c,l,u),Math.min(c,l,u))>s)return!1}return!0}var It=[new Lt,new Lt,new Lt,new Lt,new Lt,new Lt,new Lt,new Lt],Dt=new Lt,Nt=new Pt,Bt=new Lt,zt=new Lt,Ft=new Lt,Ht=new Lt,Gt=new Lt,Ut=new Lt,kt=new Lt,Vt=new Lt,Wt=new Lt,jt=new Lt,qt=new Pt,Xt=function(){function t(t,e){this.center=void 0!==t?t:new Lt,this.radius=void 0!==e?e:-1}var e=t.prototype;return e.set=function(t,e){return this.center.copy(t),this.radius=e,this},e.setFromPoints=function(t,e){var n=this.center;void 0!==e?n.copy(e):qt.setFromPoints(t).getCenter(n);for(var i=0,r=0,a=t.length;rthis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e},e.getBoundingBox=function(t){return void 0===t&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),t=new Pt),this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)},e.applyMatrix4=function(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this},e.translate=function(t){return this.center.add(t),this},e.equals=function(t){return t.center.equals(this.center)&&t.radius===this.radius},t}(),Yt=new Lt,Zt=new Lt,Jt=new Lt,Qt=new Lt,Kt=new Lt,$t=new Lt,te=new Lt,ee=function(){function t(t,e){this.origin=void 0!==t?t:new Lt,this.direction=void 0!==e?e:new Lt(0,0,-1)}var e=t.prototype;return e.set=function(t,e){return this.origin.copy(t),this.direction.copy(e),this},e.clone=function(){return(new this.constructor).copy(this)},e.copy=function(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this},e.at=function(t,e){return void 0===e&&(console.warn("THREE.Ray: .at() target is now required"),e=new Lt),e.copy(this.direction).multiplyScalar(t).add(this.origin)},e.lookAt=function(t){return this.direction.copy(t).sub(this.origin).normalize(),this},e.recast=function(t){return this.origin.copy(this.at(t,Yt)),this},e.closestPointToPoint=function(t,e){void 0===e&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),e=new Lt),e.subVectors(t,this.origin);var n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(n).add(this.origin)},e.distanceToPoint=function(t){return Math.sqrt(this.distanceSqToPoint(t))},e.distanceSqToPoint=function(t){var e=Yt.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Yt.copy(this.direction).multiplyScalar(e).add(this.origin),Yt.distanceToSquared(t))},e.distanceSqToSegment=function(t,e,n,i){Zt.copy(t).add(e).multiplyScalar(.5),Jt.copy(e).sub(t).normalize(),Qt.copy(this.origin).sub(Zt);var r,a,o,s,c=.5*t.distanceTo(e),l=-this.direction.dot(Jt),u=Qt.dot(this.direction),h=-Qt.dot(Jt),d=Qt.lengthSq(),p=Math.abs(1-l*l);if(p>0)if(a=l*u-h,s=c*p,(r=l*h-u)>=0)if(a>=-s)if(a<=s){var f=1/p;o=(r*=f)*(r+l*(a*=f)+2*u)+a*(l*r+a+2*h)+d}else a=c,o=-(r=Math.max(0,-(l*a+u)))*r+a*(a+2*h)+d;else a=-c,o=-(r=Math.max(0,-(l*a+u)))*r+a*(a+2*h)+d;else a<=-s?o=-(r=Math.max(0,-(-l*c+u)))*r+(a=r>0?-c:Math.min(Math.max(-c,-h),c))*(a+2*h)+d:a<=s?(r=0,o=(a=Math.min(Math.max(-c,-h),c))*(a+2*h)+d):o=-(r=Math.max(0,-(l*c+u)))*r+(a=r>0?c:Math.min(Math.max(-c,-h),c))*(a+2*h)+d;else a=l>0?-c:c,o=-(r=Math.max(0,-(l*a+u)))*r+a*(a+2*h)+d;return n&&n.copy(this.direction).multiplyScalar(r).add(this.origin),i&&i.copy(Jt).multiplyScalar(a).add(Zt),o},e.intersectSphere=function(t,e){Yt.subVectors(t.center,this.origin);var n=Yt.dot(this.direction),i=Yt.dot(Yt)-n*n,r=t.radius*t.radius;if(i>r)return null;var a=Math.sqrt(r-i),o=n-a,s=n+a;return o<0&&s<0?null:o<0?this.at(s,e):this.at(o,e)},e.intersectsSphere=function(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius},e.distanceToPlane=function(t){var e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;var n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null},e.intersectPlane=function(t,e){var n=this.distanceToPlane(t);return null===n?null:this.at(n,e)},e.intersectsPlane=function(t){var e=t.distanceToPoint(this.origin);return 0===e||t.normal.dot(this.direction)*e<0},e.intersectBox=function(t,e){var n,i,r,a,o,s,c=1/this.direction.x,l=1/this.direction.y,u=1/this.direction.z,h=this.origin;return c>=0?(n=(t.min.x-h.x)*c,i=(t.max.x-h.x)*c):(n=(t.max.x-h.x)*c,i=(t.min.x-h.x)*c),l>=0?(r=(t.min.y-h.y)*l,a=(t.max.y-h.y)*l):(r=(t.max.y-h.y)*l,a=(t.min.y-h.y)*l),n>a||r>i?null:((r>n||n!=n)&&(n=r),(a=0?(o=(t.min.z-h.z)*u,s=(t.max.z-h.z)*u):(o=(t.max.z-h.z)*u,s=(t.min.z-h.z)*u),n>s||o>i?null:((o>n||n!=n)&&(n=o),(s=0?n:i,e)))},e.intersectsBox=function(t){return null!==this.intersectBox(t,Yt)},e.intersectTriangle=function(t,e,n,i,r){Kt.subVectors(e,t),$t.subVectors(n,t),te.crossVectors(Kt,$t);var a,o=this.direction.dot(te);if(o>0){if(i)return null;a=1}else{if(!(o<0))return null;a=-1,o=-o}Qt.subVectors(this.origin,t);var s=a*this.direction.dot($t.crossVectors(Qt,$t));if(s<0)return null;var c=a*this.direction.dot(Kt.cross(Qt));if(c<0)return null;if(s+c>o)return null;var l=-a*Qt.dot(te);return l<0?null:this.at(l/o,r)},e.applyMatrix4=function(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this},e.equals=function(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)},t}(),ne=function(){function t(){Object.defineProperty(this,"isMatrix4",{value:!0}),this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}var e=t.prototype;return e.set=function(t,e,n,i,r,a,o,s,c,l,u,h,d,p,f,m){var v=this.elements;return v[0]=t,v[4]=e,v[8]=n,v[12]=i,v[1]=r,v[5]=a,v[9]=o,v[13]=s,v[2]=c,v[6]=l,v[10]=u,v[14]=h,v[3]=d,v[7]=p,v[11]=f,v[15]=m,this},e.identity=function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},e.clone=function(){return(new t).fromArray(this.elements)},e.copy=function(t){var e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this},e.copyPosition=function(t){var e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this},e.setFromMatrix3=function(t){var e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this},e.extractBasis=function(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this},e.makeBasis=function(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this},e.extractRotation=function(t){var e=this.elements,n=t.elements,i=1/ie.setFromMatrixColumn(t,0).length(),r=1/ie.setFromMatrixColumn(t,1).length(),a=1/ie.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},e.makeRotationFromEuler=function(t){t&&t.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var e=this.elements,n=t.x,i=t.y,r=t.z,a=Math.cos(n),o=Math.sin(n),s=Math.cos(i),c=Math.sin(i),l=Math.cos(r),u=Math.sin(r);if("XYZ"===t.order){var h=a*l,d=a*u,p=o*l,f=o*u;e[0]=s*l,e[4]=-s*u,e[8]=c,e[1]=d+p*c,e[5]=h-f*c,e[9]=-o*s,e[2]=f-h*c,e[6]=p+d*c,e[10]=a*s}else if("YXZ"===t.order){var m=s*l,v=s*u,g=c*l,y=c*u;e[0]=m+y*o,e[4]=g*o-v,e[8]=a*c,e[1]=a*u,e[5]=a*l,e[9]=-o,e[2]=v*o-g,e[6]=y+m*o,e[10]=a*s}else if("ZXY"===t.order){var x=s*l,_=s*u,b=c*l,w=c*u;e[0]=x-w*o,e[4]=-a*u,e[8]=b+_*o,e[1]=_+b*o,e[5]=a*l,e[9]=w-x*o,e[2]=-a*c,e[6]=o,e[10]=a*s}else if("ZYX"===t.order){var M=a*l,S=a*u,T=o*l,E=o*u;e[0]=s*l,e[4]=T*c-S,e[8]=M*c+E,e[1]=s*u,e[5]=E*c+M,e[9]=S*c-T,e[2]=-c,e[6]=o*s,e[10]=a*s}else if("YZX"===t.order){var A=a*s,L=a*c,R=o*s,C=o*c;e[0]=s*l,e[4]=C-A*u,e[8]=R*u+L,e[1]=u,e[5]=a*l,e[9]=-o*l,e[2]=-c*l,e[6]=L*u+R,e[10]=A-C*u}else if("XZY"===t.order){var P=a*s,O=a*c,I=o*s,D=o*c;e[0]=s*l,e[4]=-u,e[8]=c*l,e[1]=P*u+D,e[5]=a*l,e[9]=O*u-I,e[2]=I*u-O,e[6]=o*l,e[10]=D*u+P}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},e.makeRotationFromQuaternion=function(t){return this.compose(ae,t,oe)},e.lookAt=function(t,e,n){var i=this.elements;return le.subVectors(t,e),0===le.lengthSq()&&(le.z=1),le.normalize(),se.crossVectors(n,le),0===se.lengthSq()&&(1===Math.abs(n.z)?le.x+=1e-4:le.z+=1e-4,le.normalize(),se.crossVectors(n,le)),se.normalize(),ce.crossVectors(le,se),i[0]=se.x,i[4]=ce.x,i[8]=le.x,i[1]=se.y,i[5]=ce.y,i[9]=le.y,i[2]=se.z,i[6]=ce.z,i[10]=le.z,this},e.multiply=function(t,e){return void 0!==e?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)},e.premultiply=function(t){return this.multiplyMatrices(t,this)},e.multiplyMatrices=function(t,e){var n=t.elements,i=e.elements,r=this.elements,a=n[0],o=n[4],s=n[8],c=n[12],l=n[1],u=n[5],h=n[9],d=n[13],p=n[2],f=n[6],m=n[10],v=n[14],g=n[3],y=n[7],x=n[11],_=n[15],b=i[0],w=i[4],M=i[8],S=i[12],T=i[1],E=i[5],A=i[9],L=i[13],R=i[2],C=i[6],P=i[10],O=i[14],I=i[3],D=i[7],N=i[11],B=i[15];return r[0]=a*b+o*T+s*R+c*I,r[4]=a*w+o*E+s*C+c*D,r[8]=a*M+o*A+s*P+c*N,r[12]=a*S+o*L+s*O+c*B,r[1]=l*b+u*T+h*R+d*I,r[5]=l*w+u*E+h*C+d*D,r[9]=l*M+u*A+h*P+d*N,r[13]=l*S+u*L+h*O+d*B,r[2]=p*b+f*T+m*R+v*I,r[6]=p*w+f*E+m*C+v*D,r[10]=p*M+f*A+m*P+v*N,r[14]=p*S+f*L+m*O+v*B,r[3]=g*b+y*T+x*R+_*I,r[7]=g*w+y*E+x*C+_*D,r[11]=g*M+y*A+x*P+_*N,r[15]=g*S+y*L+x*O+_*B,this},e.multiplyScalar=function(t){var e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this},e.determinant=function(){var t=this.elements,e=t[0],n=t[4],i=t[8],r=t[12],a=t[1],o=t[5],s=t[9],c=t[13],l=t[2],u=t[6],h=t[10],d=t[14];return t[3]*(+r*s*u-i*c*u-r*o*h+n*c*h+i*o*d-n*s*d)+t[7]*(+e*s*d-e*c*h+r*a*h-i*a*d+i*c*l-r*s*l)+t[11]*(+e*c*u-e*o*d-r*a*u+n*a*d+r*o*l-n*c*l)+t[15]*(-i*o*l-e*s*u+e*o*h+i*a*u-n*a*h+n*s*l)},e.transpose=function(){var t,e=this.elements;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this},e.setPosition=function(t,e,n){var i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this},e.invert=function(){var t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],h=t[10],d=t[11],p=t[12],f=t[13],m=t[14],v=t[15],g=u*m*c-f*h*c+f*s*d-o*m*d-u*s*v+o*h*v,y=p*h*c-l*m*c-p*s*d+a*m*d+l*s*v-a*h*v,x=l*f*c-p*u*c+p*o*d-a*f*d-l*o*v+a*u*v,_=p*u*s-l*f*s-p*o*h+a*f*h+l*o*m-a*u*m,b=e*g+n*y+i*x+r*_;if(0===b)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);var w=1/b;return t[0]=g*w,t[1]=(f*h*r-u*m*r-f*i*d+n*m*d+u*i*v-n*h*v)*w,t[2]=(o*m*r-f*s*r+f*i*c-n*m*c-o*i*v+n*s*v)*w,t[3]=(u*s*r-o*h*r-u*i*c+n*h*c+o*i*d-n*s*d)*w,t[4]=y*w,t[5]=(l*m*r-p*h*r+p*i*d-e*m*d-l*i*v+e*h*v)*w,t[6]=(p*s*r-a*m*r-p*i*c+e*m*c+a*i*v-e*s*v)*w,t[7]=(a*h*r-l*s*r+l*i*c-e*h*c-a*i*d+e*s*d)*w,t[8]=x*w,t[9]=(p*u*r-l*f*r-p*n*d+e*f*d+l*n*v-e*u*v)*w,t[10]=(a*f*r-p*o*r+p*n*c-e*f*c-a*n*v+e*o*v)*w,t[11]=(l*o*r-a*u*r-l*n*c+e*u*c+a*n*d-e*o*d)*w,t[12]=_*w,t[13]=(l*f*i-p*u*i+p*n*h-e*f*h-l*n*m+e*u*m)*w,t[14]=(p*o*i-a*f*i-p*n*s+e*f*s+a*n*m-e*o*m)*w,t[15]=(a*u*i-l*o*i+l*n*s-e*u*s-a*n*h+e*o*h)*w,this},e.scale=function(t){var e=this.elements,n=t.x,i=t.y,r=t.z;return e[0]*=n,e[4]*=i,e[8]*=r,e[1]*=n,e[5]*=i,e[9]*=r,e[2]*=n,e[6]*=i,e[10]*=r,e[3]*=n,e[7]*=i,e[11]*=r,this},e.getMaxScaleOnAxis=function(){var t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))},e.makeTranslation=function(t,e,n){return this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this},e.makeRotationX=function(t){var e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this},e.makeRotationY=function(t){var e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this},e.makeRotationZ=function(t){var e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this},e.makeRotationAxis=function(t,e){var n=Math.cos(e),i=Math.sin(e),r=1-n,a=t.x,o=t.y,s=t.z,c=r*a,l=r*o;return this.set(c*a+n,c*o-i*s,c*s+i*o,0,c*o+i*s,l*o+n,l*s-i*a,0,c*s-i*o,l*s+i*a,r*s*s+n,0,0,0,0,1),this},e.makeScale=function(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this},e.makeShear=function(t,e,n){return this.set(1,e,n,0,t,1,n,0,t,e,1,0,0,0,0,1),this},e.compose=function(t,e,n){var i=this.elements,r=e._x,a=e._y,o=e._z,s=e._w,c=r+r,l=a+a,u=o+o,h=r*c,d=r*l,p=r*u,f=a*l,m=a*u,v=o*u,g=s*c,y=s*l,x=s*u,_=n.x,b=n.y,w=n.z;return i[0]=(1-(f+v))*_,i[1]=(d+x)*_,i[2]=(p-y)*_,i[3]=0,i[4]=(d-x)*b,i[5]=(1-(h+v))*b,i[6]=(m+g)*b,i[7]=0,i[8]=(p+y)*w,i[9]=(m-g)*w,i[10]=(1-(h+f))*w,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this},e.decompose=function(t,e,n){var i=this.elements,r=ie.set(i[0],i[1],i[2]).length(),a=ie.set(i[4],i[5],i[6]).length(),o=ie.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),t.x=i[12],t.y=i[13],t.z=i[14],re.copy(this);var s=1/r,c=1/a,l=1/o;return re.elements[0]*=s,re.elements[1]*=s,re.elements[2]*=s,re.elements[4]*=c,re.elements[5]*=c,re.elements[6]*=c,re.elements[8]*=l,re.elements[9]*=l,re.elements[10]*=l,e.setFromRotationMatrix(re),n.x=r,n.y=a,n.z=o,this},e.makePerspective=function(t,e,n,i,r,a){void 0===a&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");var o=this.elements,s=2*r/(e-t),c=2*r/(n-i),l=(e+t)/(e-t),u=(n+i)/(n-i),h=-(a+r)/(a-r),d=-2*a*r/(a-r);return o[0]=s,o[4]=0,o[8]=l,o[12]=0,o[1]=0,o[5]=c,o[9]=u,o[13]=0,o[2]=0,o[6]=0,o[10]=h,o[14]=d,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this},e.makeOrthographic=function(t,e,n,i,r,a){var o=this.elements,s=1/(e-t),c=1/(n-i),l=1/(a-r),u=(e+t)*s,h=(n+i)*c,d=(a+r)*l;return o[0]=2*s,o[4]=0,o[8]=0,o[12]=-u,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-h,o[2]=0,o[6]=0,o[10]=-2*l,o[14]=-d,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this},e.equals=function(t){for(var e=this.elements,n=t.elements,i=0;i<16;i++)if(e[i]!==n[i])return!1;return!0},e.fromArray=function(t,e){void 0===e&&(e=0);for(var n=0;n<16;n++)this.elements[n]=t[n+e];return this},e.toArray=function(t,e){void 0===t&&(t=[]),void 0===e&&(e=0);var n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t},t}(),ie=new Lt,re=new ne,ae=new Lt(0,0,0),oe=new Lt(1,1,1),se=new Lt,ce=new Lt,le=new Lt,ue=function(){function t(e,n,i,r){void 0===e&&(e=0),void 0===n&&(n=0),void 0===i&&(i=0),void 0===r&&(r=t.DefaultOrder),Object.defineProperty(this,"isEuler",{value:!0}),this._x=e,this._y=n,this._z=i,this._order=r}var e=t.prototype;return e.set=function(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._order=i||this._order,this._onChangeCallback(),this},e.clone=function(){return new this.constructor(this._x,this._y,this._z,this._order)},e.copy=function(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this},e.setFromRotationMatrix=function(t,e,n){var i=gt.clamp,r=t.elements,a=r[0],o=r[4],s=r[8],c=r[1],l=r[5],u=r[9],h=r[2],d=r[6],p=r[10];switch(e=e||this._order){case"XYZ":this._y=Math.asin(i(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-u,p),this._z=Math.atan2(-o,a)):(this._x=Math.atan2(d,l),this._z=0);break;case"YXZ":this._x=Math.asin(-i(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(s,p),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-h,a),this._z=0);break;case"ZXY":this._x=Math.asin(i(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-h,p),this._z=Math.atan2(-o,l)):(this._y=0,this._z=Math.atan2(c,a));break;case"ZYX":this._y=Math.asin(-i(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(d,p),this._z=Math.atan2(c,a)):(this._x=0,this._z=Math.atan2(-o,l));break;case"YZX":this._z=Math.asin(i(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-h,a)):(this._x=0,this._y=Math.atan2(s,p));break;case"XZY":this._z=Math.asin(-i(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(d,l),this._y=Math.atan2(s,a)):(this._x=Math.atan2(-u,p),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!1!==n&&this._onChangeCallback(),this},e.setFromQuaternion=function(t,e,n){return he.makeRotationFromQuaternion(t),this.setFromRotationMatrix(he,e,n)},e.setFromVector3=function(t,e){return this.set(t.x,t.y,t.z,e||this._order)},e.reorder=function(t){return de.setFromEuler(this),this.setFromQuaternion(de,t)},e.equals=function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order},e.fromArray=function(t){return this._x=t[0],this._y=t[1],this._z=t[2],void 0!==t[3]&&(this._order=t[3]),this._onChangeCallback(),this},e.toArray=function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t},e.toVector3=function(t){return t?t.set(this._x,this._y,this._z):new Lt(this._x,this._y,this._z)},e._onChange=function(t){return this._onChangeCallback=t,this},e._onChangeCallback=function(){},st(t,[{key:"x",get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()}},{key:"y",get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()}},{key:"z",get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()}},{key:"order",get:function(){return this._order},set:function(t){this._order=t,this._onChangeCallback()}}]),t}();ue.DefaultOrder="XYZ",ue.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];var he=new ne,de=new At,pe=function(){function t(){this.mask=1}var e=t.prototype;return e.set=function(t){this.mask=1<1){for(var e=0;e1){for(var e=0;e0){i.children=[];for(var p=0;p0){i.animations=[];for(var f=0;f0&&(n.geometries=v),g.length>0&&(n.materials=g),y.length>0&&(n.textures=y),x.length>0&&(n.images=x),_.length>0&&(n.shapes=_),b.length>0&&(n.skeletons=b),w.length>0&&(n.animations=w)}return n.object=i,n;function M(t){var e=[];for(var n in t){var i=t[n];delete i.metadata,e.push(i)}return e}},clone:function(t){return(new this.constructor).copy(this,t)},copy:function(t,e){if(void 0===e&&(e=!0),this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(var n=0;n1?void 0:e.copy(n).multiplyScalar(r).add(t.start)},e.intersectsLine=function(t){var e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0},e.intersectsBox=function(t){return t.intersectsPlane(this)},e.intersectsSphere=function(t){return t.intersectsPlane(this)},e.coplanarPoint=function(t){return void 0===t&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),t=new Lt),t.copy(this.normal).multiplyScalar(-this.constant)},e.applyMatrix4=function(t,e){var n=e||Ce.getNormalMatrix(t),i=this.coplanarPoint(Le).applyMatrix4(t),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this},e.translate=function(t){return this.constant-=t.dot(this.normal),this},e.equals=function(t){return t.normal.equals(this.normal)&&t.constant===this.constant},t}(),Oe=new Lt,Ie=new Lt,De=new Lt,Ne=new Lt,Be=new Lt,ze=new Lt,Fe=new Lt,He=new Lt,Ge=new Lt,Ue=new Lt,ke=function(){function t(t,e,n){this.a=void 0!==t?t:new Lt,this.b=void 0!==e?e:new Lt,this.c=void 0!==n?n:new Lt}t.getNormal=function(t,e,n,i){void 0===i&&(console.warn("THREE.Triangle: .getNormal() target is now required"),i=new Lt),i.subVectors(n,e),Oe.subVectors(t,e),i.cross(Oe);var r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)},t.getBarycoord=function(t,e,n,i,r){Oe.subVectors(i,e),Ie.subVectors(n,e),De.subVectors(t,e);var a=Oe.dot(Oe),o=Oe.dot(Ie),s=Oe.dot(De),c=Ie.dot(Ie),l=Ie.dot(De),u=a*c-o*o;if(void 0===r&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),r=new Lt),0===u)return r.set(-2,-1,-1);var h=1/u,d=(c*s-o*l)*h,p=(a*l-o*s)*h;return r.set(1-d-p,p,d)},t.containsPoint=function(t,e,n,i){return this.getBarycoord(t,e,n,i,Ne),Ne.x>=0&&Ne.y>=0&&Ne.x+Ne.y<=1},t.getUV=function(t,e,n,i,r,a,o,s){return this.getBarycoord(t,e,n,i,Ne),s.set(0,0),s.addScaledVector(r,Ne.x),s.addScaledVector(a,Ne.y),s.addScaledVector(o,Ne.z),s},t.isFrontFacing=function(t,e,n,i){return Oe.subVectors(n,e),Ie.subVectors(t,e),Oe.cross(Ie).dot(i)<0};var e=t.prototype;return e.set=function(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this},e.setFromPointsAndIndices=function(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this},e.clone=function(){return(new this.constructor).copy(this)},e.copy=function(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this},e.getArea=function(){return Oe.subVectors(this.c,this.b),Ie.subVectors(this.a,this.b),.5*Oe.cross(Ie).length()},e.getMidpoint=function(t){return void 0===t&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),t=new Lt),t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},e.getNormal=function(e){return t.getNormal(this.a,this.b,this.c,e)},e.getPlane=function(t){return void 0===t&&(console.warn("THREE.Triangle: .getPlane() target is now required"),t=new Pe),t.setFromCoplanarPoints(this.a,this.b,this.c)},e.getBarycoord=function(e,n){return t.getBarycoord(e,this.a,this.b,this.c,n)},e.getUV=function(e,n,i,r,a){return t.getUV(e,this.a,this.b,this.c,n,i,r,a)},e.containsPoint=function(e){return t.containsPoint(e,this.a,this.b,this.c)},e.isFrontFacing=function(e){return t.isFrontFacing(this.a,this.b,this.c,e)},e.intersectsBox=function(t){return t.intersectsTriangle(this)},e.closestPointToPoint=function(t,e){void 0===e&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),e=new Lt);var n,i,r=this.a,a=this.b,o=this.c;Be.subVectors(a,r),ze.subVectors(o,r),He.subVectors(t,r);var s=Be.dot(He),c=ze.dot(He);if(s<=0&&c<=0)return e.copy(r);Ge.subVectors(t,a);var l=Be.dot(Ge),u=ze.dot(Ge);if(l>=0&&u<=l)return e.copy(a);var h=s*u-l*c;if(h<=0&&s>=0&&l<=0)return n=s/(s-l),e.copy(r).addScaledVector(Be,n);Ue.subVectors(t,o);var d=Be.dot(Ue),p=ze.dot(Ue);if(p>=0&&d<=p)return e.copy(o);var f=d*c-s*p;if(f<=0&&c>=0&&p<=0)return i=c/(c-p),e.copy(r).addScaledVector(ze,i);var m=l*p-d*u;if(m<=0&&u-l>=0&&d-p>=0)return Fe.subVectors(o,a),i=(u-l)/(u-l+(d-p)),e.copy(a).addScaledVector(Fe,i);var v=1/(m+f+h);return n=f*v,i=h*v,e.copy(r).addScaledVector(Be,n).addScaledVector(ze,i)},e.equals=function(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)},t}(),Ve={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},We={h:0,s:0,l:0},je={h:0,s:0,l:0};function qe(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+6*(e-t)*(2/3-n):t}function Xe(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function Ye(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}var Ze=function(){function t(t,e,n){return Object.defineProperty(this,"isColor",{value:!0}),void 0===e&&void 0===n?this.set(t):this.setRGB(t,e,n)}var e=t.prototype;return e.set=function(t){return t&&t.isColor?this.copy(t):"number"==typeof t?this.setHex(t):"string"==typeof t&&this.setStyle(t),this},e.setScalar=function(t){return this.r=t,this.g=t,this.b=t,this},e.setHex=function(t){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,this},e.setRGB=function(t,e,n){return this.r=t,this.g=e,this.b=n,this},e.setHSL=function(t,e,n){if(t=gt.euclideanModulo(t,1),e=gt.clamp(e,0,1),n=gt.clamp(n,0,1),0===e)this.r=this.g=this.b=n;else{var i=n<=.5?n*(1+e):n+e-n*e,r=2*n-i;this.r=qe(r,i,t+1/3),this.g=qe(r,i,t),this.b=qe(r,i,t-1/3)}return this},e.setStyle=function(t){function e(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}var n;if(n=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(t)){var i,r=n[1],a=n[2];switch(r){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return this.r=Math.min(255,parseInt(i[1],10))/255,this.g=Math.min(255,parseInt(i[2],10))/255,this.b=Math.min(255,parseInt(i[3],10))/255,e(i[4]),this;if(i=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return this.r=Math.min(100,parseInt(i[1],10))/100,this.g=Math.min(100,parseInt(i[2],10))/100,this.b=Math.min(100,parseInt(i[3],10))/100,e(i[4]),this;break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a)){var o=parseFloat(i[1])/360,s=parseInt(i[2],10)/100,c=parseInt(i[3],10)/100;return e(i[4]),this.setHSL(o,s,c)}}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(t)){var l=n[1],u=l.length;if(3===u)return this.r=parseInt(l.charAt(0)+l.charAt(0),16)/255,this.g=parseInt(l.charAt(1)+l.charAt(1),16)/255,this.b=parseInt(l.charAt(2)+l.charAt(2),16)/255,this;if(6===u)return this.r=parseInt(l.charAt(0)+l.charAt(1),16)/255,this.g=parseInt(l.charAt(2)+l.charAt(3),16)/255,this.b=parseInt(l.charAt(4)+l.charAt(5),16)/255,this}return t&&t.length>0?this.setColorName(t):this},e.setColorName=function(t){var e=Ve[t];return void 0!==e?this.setHex(e):console.warn("THREE.Color: Unknown color "+t),this},e.clone=function(){return new this.constructor(this.r,this.g,this.b)},e.copy=function(t){return this.r=t.r,this.g=t.g,this.b=t.b,this},e.copyGammaToLinear=function(t,e){return void 0===e&&(e=2),this.r=Math.pow(t.r,e),this.g=Math.pow(t.g,e),this.b=Math.pow(t.b,e),this},e.copyLinearToGamma=function(t,e){void 0===e&&(e=2);var n=e>0?1/e:1;return this.r=Math.pow(t.r,n),this.g=Math.pow(t.g,n),this.b=Math.pow(t.b,n),this},e.convertGammaToLinear=function(t){return this.copyGammaToLinear(this,t),this},e.convertLinearToGamma=function(t){return this.copyLinearToGamma(this,t),this},e.copySRGBToLinear=function(t){return this.r=Xe(t.r),this.g=Xe(t.g),this.b=Xe(t.b),this},e.copyLinearToSRGB=function(t){return this.r=Ye(t.r),this.g=Ye(t.g),this.b=Ye(t.b),this},e.convertSRGBToLinear=function(){return this.copySRGBToLinear(this),this},e.convertLinearToSRGB=function(){return this.copyLinearToSRGB(this),this},e.getHex=function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},e.getHexString=function(){return("000000"+this.getHex().toString(16)).slice(-6)},e.getHSL=function(t){void 0===t&&(console.warn("THREE.Color: .getHSL() target is now required"),t={h:0,s:0,l:0});var e,n,i=this.r,r=this.g,a=this.b,o=Math.max(i,r,a),s=Math.min(i,r,a),c=(s+o)/2;if(s===o)e=0,n=0;else{var l=o-s;switch(n=c<=.5?l/(o+s):l/(2-o-s),o){case i:e=(r-a)/l+(r0&&(n.alphaTest=this.alphaTest),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.morphTargets&&(n.morphTargets=!0),!0===this.morphNormals&&(n.morphNormals=!0),!0===this.skinning&&(n.skinning=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),"{}"!==JSON.stringify(this.userData)&&(n.userData=this.userData),e){var r=i(t.textures),a=i(t.images);r.length>0&&(n.textures=r),a.length>0&&(n.images=a)}return n},clone:function(){return(new this.constructor).copy(this)},copy:function(t){this.name=t.name,this.fog=t.fog,this.blending=t.blending,this.side=t.side,this.flatShading=t.flatShading,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;var e=t.clippingPlanes,n=null;if(null!==e){var i=e.length;n=new Array(i);for(var r=0;r!==i;++r)n[r]=e[r].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.premultipliedAlpha=t.premultipliedAlpha,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Object.defineProperty(Ke.prototype,"needsUpdate",{set:function(t){!0===t&&this.version++}}),$e.prototype=Object.create(Ke.prototype),$e.prototype.constructor=$e,$e.prototype.isMeshBasicMaterial=!0,$e.prototype.copy=function(t){return Ke.prototype.copy.call(this,t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.skinning=t.skinning,this.morphTargets=t.morphTargets,this};var tn=new Lt,en=new yt;function nn(t,e,n){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=t,this.itemSize=e,this.count=void 0!==t?t.length/e:0,this.normalized=!0===n,this.usage=nt,this.updateRange={offset:0,count:-1},this.version=0}function rn(t,e,n){nn.call(this,new Int8Array(t),e,n)}function an(t,e,n){nn.call(this,new Uint8Array(t),e,n)}function on(t,e,n){nn.call(this,new Uint8ClampedArray(t),e,n)}function sn(t,e,n){nn.call(this,new Int16Array(t),e,n)}function cn(t,e,n){nn.call(this,new Uint16Array(t),e,n)}function ln(t,e,n){nn.call(this,new Int32Array(t),e,n)}function un(t,e,n){nn.call(this,new Uint32Array(t),e,n)}function hn(t,e,n){nn.call(this,new Uint16Array(t),e,n)}function dn(t,e,n){nn.call(this,new Float32Array(t),e,n)}function pn(t,e,n){nn.call(this,new Float64Array(t),e,n)}function fn(t){if(0===t.length)return-1/0;for(var e=t[0],n=1,i=t.length;ne&&(e=t[n]);return e}Object.defineProperty(nn.prototype,"needsUpdate",{set:function(t){!0===t&&this.version++}}),Object.assign(nn.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setUsage:function(t){return this.usage=t,this},copy:function(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this},copyAt:function(t,e,n){t*=this.itemSize,n*=e.itemSize;for(var i=0,r=this.itemSize;i65535?un:cn)(t,1):this.index=t,this},getAttribute:function(t){return this.attributes[t]},setAttribute:function(t,e){return this.attributes[t]=e,this},deleteAttribute:function(t){return delete this.attributes[t],this},hasAttribute:function(t){return void 0!==this.attributes[t]},addGroup:function(t,e,n){void 0===n&&(n=0),this.groups.push({start:t,count:e,materialIndex:n})},clearGroups:function(){this.groups=[]},setDrawRange:function(t,e){this.drawRange.start=t,this.drawRange.count=e},applyMatrix4:function(t){var e=this.attributes.position;void 0!==e&&(e.applyMatrix4(t),e.needsUpdate=!0);var n=this.attributes.normal;if(void 0!==n){var i=(new xt).getNormalMatrix(t);n.applyNormalMatrix(i),n.needsUpdate=!0}var r=this.attributes.tangent;return void 0!==r&&(r.transformDirection(t),r.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this},rotateX:function(t){return yn.makeRotationX(t),this.applyMatrix4(yn),this},rotateY:function(t){return yn.makeRotationY(t),this.applyMatrix4(yn),this},rotateZ:function(t){return yn.makeRotationZ(t),this.applyMatrix4(yn),this},translate:function(t,e,n){return yn.makeTranslation(t,e,n),this.applyMatrix4(yn),this},scale:function(t,e,n){return yn.makeScale(t,e,n),this.applyMatrix4(yn),this},lookAt:function(t){return xn.lookAt(t),xn.updateMatrix(),this.applyMatrix4(xn.matrix),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(_n).negate(),this.translate(_n.x,_n.y,_n.z),this},setFromPoints:function(t){for(var e=[],n=0,i=t.length;n0&&(t.userData=this.userData),void 0!==this.parameters){var e=this.parameters;for(var n in e)void 0!==e[n]&&(t[n]=e[n]);return t}t.data={attributes:{}};var i=this.index;null!==i&&(t.data.index={type:i.array.constructor.name,array:Array.prototype.slice.call(i.array)});var r=this.attributes;for(var a in r){var o=r[a],s=o.toJSON(t.data);""!==o.name&&(s.name=o.name),t.data.attributes[a]=s}var c={},l=!1;for(var u in this.morphAttributes){for(var h=this.morphAttributes[u],d=[],p=0,f=h.length;p0&&(c[u]=d,l=!0)}l&&(t.data.morphAttributes=c,t.data.morphTargetsRelative=this.morphTargetsRelative);var g=this.groups;g.length>0&&(t.data.groups=JSON.parse(JSON.stringify(g)));var y=this.boundingSphere;return null!==y&&(t.data.boundingSphere={center:y.center.toArray(),radius:y.radius}),t},clone:function(){return(new Sn).copy(this)},copy:function(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;var e={};this.name=t.name;var n=t.index;null!==n&&this.setIndex(n.clone(e));var i=t.attributes;for(var r in i){var a=i[r];this.setAttribute(r,a.clone(e))}var o=t.morphAttributes;for(var s in o){for(var c=[],l=o[s],u=0,h=l.length;un.far?null:{distance:c,point:Un.clone(),object:t}}(t,e,n,i,Ln,Rn,Cn,Gn);if(g){s&&(zn.fromBufferAttribute(s,l),Fn.fromBufferAttribute(s,u),Hn.fromBufferAttribute(s,h),g.uv=ke.getUV(Gn,Ln,Rn,Cn,zn,Fn,Hn,new yt)),c&&(zn.fromBufferAttribute(c,l),Fn.fromBufferAttribute(c,u),Hn.fromBufferAttribute(c,h),g.uv2=ke.getUV(Gn,Ln,Rn,Cn,zn,Fn,Hn,new yt));var y=new Je(l,u,h);ke.getNormal(Ln,Rn,Cn,y.normal),g.face=y}return g}kn.prototype=Object.assign(Object.create(Ae.prototype),{constructor:kn,isMesh:!0,copy:function(t){return Ae.prototype.copy.call(this,t),void 0!==t.morphTargetInfluences&&(this.morphTargetInfluences=t.morphTargetInfluences.slice()),void 0!==t.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},t.morphTargetDictionary)),this.material=t.material,this.geometry=t.geometry,this},updateMorphTargets:function(){var t=this.geometry;if(t.isBufferGeometry){var e=t.morphAttributes,n=Object.keys(e);if(n.length>0){var i=e[n[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var r=0,a=i.length;r0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}},raycast:function(t,e){var n,i=this.geometry,r=this.material,a=this.matrixWorld;if(void 0!==r&&(null===i.boundingSphere&&i.computeBoundingSphere(),An.copy(i.boundingSphere),An.applyMatrix4(a),!1!==t.ray.intersectsSphere(An)&&(Tn.copy(a).invert(),En.copy(t.ray).applyMatrix4(Tn),null===i.boundingBox||!1!==En.intersectsBox(i.boundingBox))))if(i.isBufferGeometry){var o=i.index,s=i.attributes.position,c=i.morphAttributes.position,l=i.morphTargetsRelative,u=i.attributes.uv,h=i.attributes.uv2,d=i.groups,p=i.drawRange;if(null!==o)if(Array.isArray(r))for(var f=0,m=d.length;f0?1:-1,h.push(A.x,A.y,A.z),d.push(C/m),d.push(1-L/v),T+=1}for(var O=0;O0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader;var r={};for(var a in this.extensions)!0===this.extensions[a]&&(r[a]=!0);return Object.keys(r).length>0&&(e.extensions=r),e},Zn.prototype=Object.assign(Object.create(Ae.prototype),{constructor:Zn,isCamera:!0,copy:function(t,e){return Ae.prototype.copy.call(this,t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this},getWorldDirection:function(t){void 0===t&&(console.warn("THREE.Camera: .getWorldDirection() target is now required"),t=new Lt),this.updateWorldMatrix(!0,!1);var e=this.matrixWorld.elements;return t.set(-e[8],-e[9],-e[10]).normalize()},updateMatrixWorld:function(t){Ae.prototype.updateMatrixWorld.call(this,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()},updateWorldMatrix:function(t,e){Ae.prototype.updateWorldMatrix.call(this,t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()},clone:function(){return(new this.constructor).copy(this)}}),Jn.prototype=Object.assign(Object.create(Zn.prototype),{constructor:Jn,isPerspectiveCamera:!0,copy:function(t,e){return Zn.prototype.copy.call(this,t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=null===t.view?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this},setFocalLength:function(t){var e=.5*this.getFilmHeight()/t;this.fov=2*gt.RAD2DEG*Math.atan(e),this.updateProjectionMatrix()},getFocalLength:function(){var t=Math.tan(.5*gt.DEG2RAD*this.fov);return.5*this.getFilmHeight()/t},getEffectiveFOV:function(){return 2*gt.RAD2DEG*Math.atan(Math.tan(.5*gt.DEG2RAD*this.fov)/this.zoom)},getFilmWidth:function(){return this.filmGauge*Math.min(this.aspect,1)},getFilmHeight:function(){return this.filmGauge/Math.max(this.aspect,1)},setViewOffset:function(t,e,n,i,r,a){this.aspect=t/e,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()},updateProjectionMatrix:function(){var t=this.near,e=t*Math.tan(.5*gt.DEG2RAD*this.fov)/this.zoom,n=2*e,i=this.aspect*n,r=-.5*i,a=this.view;if(null!==this.view&&this.view.enabled){var o=a.fullWidth,s=a.fullHeight;r+=a.offsetX*i/o,e-=a.offsetY*n/s,i*=a.width/o,n*=a.height/s}var c=this.filmOffset;0!==c&&(r+=t*c/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,e,e-n,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()},toJSON:function(t){var e=Ae.prototype.toJSON.call(this,t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,null!==this.view&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}});var Qn=90;function Kn(t,e,n){if(Ae.call(this),this.type="CubeCamera",!0===n.isWebGLCubeRenderTarget){this.renderTarget=n;var i=new Jn(Qn,1,t,e);i.layers=this.layers,i.up.set(0,-1,0),i.lookAt(new Lt(1,0,0)),this.add(i);var r=new Jn(Qn,1,t,e);r.layers=this.layers,r.up.set(0,-1,0),r.lookAt(new Lt(-1,0,0)),this.add(r);var a=new Jn(Qn,1,t,e);a.layers=this.layers,a.up.set(0,0,1),a.lookAt(new Lt(0,1,0)),this.add(a);var o=new Jn(Qn,1,t,e);o.layers=this.layers,o.up.set(0,0,-1),o.lookAt(new Lt(0,-1,0)),this.add(o);var s=new Jn(Qn,1,t,e);s.layers=this.layers,s.up.set(0,-1,0),s.lookAt(new Lt(0,0,1)),this.add(s);var c=new Jn(Qn,1,t,e);c.layers=this.layers,c.up.set(0,-1,0),c.lookAt(new Lt(0,0,-1)),this.add(c),this.update=function(t,e){null===this.parent&&this.updateMatrixWorld();var l=t.xr.enabled,u=t.getRenderTarget();t.xr.enabled=!1;var h=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0),t.render(e,i),t.setRenderTarget(n,1),t.render(e,r),t.setRenderTarget(n,2),t.render(e,a),t.setRenderTarget(n,3),t.render(e,o),t.setRenderTarget(n,4),t.render(e,s),n.texture.generateMipmaps=h,t.setRenderTarget(n,5),t.render(e,c),t.setRenderTarget(u),t.xr.enabled=l}}else console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.")}function $n(t,e,n,i,r,o,s,c,l,u){t=void 0!==t?t:[],e=void 0!==e?e:a,s=void 0!==s?s:E,wt.call(this,t,e,n,i,r,o,s,c,l,u),this.flipY=!1,this._needsFlipEnvMap=!0}Kn.prototype=Object.create(Ae.prototype),Kn.prototype.constructor=Kn,$n.prototype=Object.create(wt.prototype),$n.prototype.constructor=$n,$n.prototype.isCubeTexture=!0,Object.defineProperty($n.prototype,"images",{get:function(){return this.image},set:function(t){this.image=t}});var ti=function(t){function e(e,n,i){var r;return Number.isInteger(n)&&(console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"),n=i),r=t.call(this,e,e,n)||this,Object.defineProperty(lt(r),"isWebGLCubeRenderTarget",{value:!0}),n=n||{},r.texture=new $n(void 0,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),r.texture._needsFlipEnvMap=!1,r}ct(e,t);var n=e.prototype;return n.fromEquirectangularTexture=function(t,e){this.texture.type=e.type,this.texture.format=A,this.texture.encoding=e.encoding,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;var n={tEquirect:{value:null}},i="\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t",r="\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t",a=new Wn(5,5,5),o=new Yn({name:"CubemapFromEquirect",uniforms:jn(n),vertexShader:i,fragmentShader:r,side:1,blending:0});o.uniforms.tEquirect.value=e;var s=new kn(a,o),c=e.minFilter;return e.minFilter===x&&(e.minFilter=g),new Kn(1,10,this).update(t,s),e.minFilter=c,s.geometry.dispose(),s.material.dispose(),this},n.clear=function(t,e,n,i){for(var r=t.getRenderTarget(),a=0;a<6;a++)t.setRenderTarget(this,a),t.clear(e,n,i);t.setRenderTarget(r)},e}(Tt);function ei(t,e,n,i,r,a,o,s,c,l,u,h){wt.call(this,null,a,o,s,c,l,i,r,u,h),this.image={data:t||null,width:e||1,height:n||1},this.magFilter=void 0!==c?c:f,this.minFilter=void 0!==l?l:f,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.needsUpdate=!0}ei.prototype=Object.create(wt.prototype),ei.prototype.constructor=ei,ei.prototype.isDataTexture=!0;var ni=new Xt,ii=new Lt,ri=function(){function t(t,e,n,i,r,a){this.planes=[void 0!==t?t:new Pe,void 0!==e?e:new Pe,void 0!==n?n:new Pe,void 0!==i?i:new Pe,void 0!==r?r:new Pe,void 0!==a?a:new Pe]}var e=t.prototype;return e.set=function(t,e,n,i,r,a){var o=this.planes;return o[0].copy(t),o[1].copy(e),o[2].copy(n),o[3].copy(i),o[4].copy(r),o[5].copy(a),this},e.clone=function(){return(new this.constructor).copy(this)},e.copy=function(t){for(var e=this.planes,n=0;n<6;n++)e[n].copy(t.planes[n]);return this},e.setFromProjectionMatrix=function(t){var e=this.planes,n=t.elements,i=n[0],r=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7],h=n[8],d=n[9],p=n[10],f=n[11],m=n[12],v=n[13],g=n[14],y=n[15];return e[0].setComponents(o-i,u-s,f-h,y-m).normalize(),e[1].setComponents(o+i,u+s,f+h,y+m).normalize(),e[2].setComponents(o+r,u+c,f+d,y+v).normalize(),e[3].setComponents(o-r,u-c,f-d,y-v).normalize(),e[4].setComponents(o-a,u-l,f-p,y-g).normalize(),e[5].setComponents(o+a,u+l,f+p,y+g).normalize(),this},e.intersectsObject=function(t){var e=t.geometry;return null===e.boundingSphere&&e.computeBoundingSphere(),ni.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(ni)},e.intersectsSprite=function(t){return ni.center.set(0,0,0),ni.radius=.7071067811865476,ni.applyMatrix4(t.matrixWorld),this.intersectsSphere(ni)},e.intersectsSphere=function(t){for(var e=this.planes,n=t.center,i=-t.radius,r=0;r<6;r++){if(e[r].distanceToPoint(n)0?t.max.x:t.min.x,ii.y=i.normal.y>0?t.max.y:t.min.y,ii.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(ii)<0)return!1}return!0},e.containsPoint=function(t){for(var e=this.planes,n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0},t}();function ai(){var t=null,e=!1,n=null,i=null;function r(e,a){n(e,a),i=t.requestAnimationFrame(r)}return{start:function(){!0!==e&&null!==n&&(i=t.requestAnimationFrame(r),e=!0)},stop:function(){t.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(t){n=t},setContext:function(e){t=e}}}function oi(t,e){var n=e.isWebGL2,i=new WeakMap;return{get:function(t){return t.isInterleavedBufferAttribute&&(t=t.data),i.get(t)},remove:function(e){e.isInterleavedBufferAttribute&&(e=e.data);var n=i.get(e);n&&(t.deleteBuffer(n.buffer),i.delete(e))},update:function(e,r){if(e.isGLBufferAttribute){var a=i.get(e);(!a||a.version 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\n\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie(float roughness, float NoH) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\n}\nfloat V_Neubelt(float NoV, float NoL) {\n\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\n}\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor.xyz *= color.xyz;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_maxMipLevel 8.0\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_maxTileSize 256.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\n\t\tvec2 f = fract( uv );\n\t\tuv += 0.5 - f;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tif ( mipInt < cubeUV_maxMipLevel ) {\n\t\t\tuv.y += 2.0 * cubeUV_maxTileSize;\n\t\t}\n\t\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\n\t\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\n\t\tuv *= texelSize;\n\t\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x += texelSize;\n\t\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.y += texelSize;\n\t\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x -= texelSize;\n\t\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tvec3 tm = mix( tl, tr, f.x );\n\t\tvec3 bm = mix( bl, br, f.x );\n\t\treturn mix( tm, bm, f.y );\n\t}\n\t#define r0 1.0\n\t#define v0 0.339\n\t#define m0 - 2.0\n\t#define r1 0.8\n\t#define v1 0.276\n\t#define m1 - 1.0\n\t#define r4 0.4\n\t#define v4 0.046\n\t#define m4 2.0\n\t#define r5 0.305\n\t#define v5 0.016\n\t#define m5 3.0\n\t#define r6 0.21\n\t#define v6 0.0038\n\t#define m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= r1 ) {\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\n\t\t} else if ( roughness >= r4 ) {\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\n\t\t} else if ( roughness >= r5 ) {\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\n\t\t} else if ( roughness >= r6 ) {\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\tenvColor = envMapTexelToLinear( envColor );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -viewDir, normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tfogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn texture2D( gradientMap, coord ).rgb;\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\n#ifdef DOUBLE_SIDED\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\n#endif\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\n#ifdef REFLECTIVITY\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#endif\n#ifdef CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheen;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat specularRoughness;\n\tvec3 specularColor;\n#ifdef CLEARCOAT\n\tfloat clearcoat;\n\tfloat clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tvec3 sheenColor;\n#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3(\t\t0, 1,\t\t0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = ccDotNL * directLight.color;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tccIrradiance *= PI;\n\t\t#endif\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\n\t\t\tmaterial.specularRoughness,\n\t\t\tdirectLight.direction,\n\t\t\tgeometry,\n\t\t\tmaterial.sheenColor\n\t\t);\n\t#else\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\n\t#endif\n\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t\tfloat ccDotNL = ccDotNV;\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\tfloat clearcoatInv = 1.0 - clearcoatDHR;\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\n\t#ifdef CLEARCOAT\n\t\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifndef USE_MORPHNORMALS\n\t\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\t\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t#endif\n#endif",normal_fragment_begin:"#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tmat3 tsn = mat3( S, T, N );\n\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\n\t#endif\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t\tf.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n\t\t\t\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t\tf.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\tvec4 shadowWorldPosition;\n\t#endif\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3(\t1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108,\t1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605,\t1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmissionmap_fragment:"#ifdef USE_TRANSMISSIONMAP\n\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\n#endif",transmissionmap_pars_fragment:"#ifdef USE_TRANSMISSIONMAP\n\tuniform sampler2D transmissionMap;\n#endif",uv_pars_fragment:"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",cube_frag:"#include \nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include \n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define REFLECTIVITY\n\t#define CLEARCOAT\n\t#define TRANSMISSION\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef TRANSMISSION\n\tuniform float transmission;\n#endif\n#ifdef REFLECTIVITY\n\tuniform float reflectivity;\n#endif\n#ifdef CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheen;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#ifdef TRANSMISSION\n\t\tfloat totalTransmission = transmission;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#ifdef TRANSMISSION\n\t\tdiffuseColor.a *= mix( saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) ), 1.0, metalness );\n\t#endif\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}",normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}",shadow_vert:"#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"},li={common:{diffuse:{value:new Ze(15658734)},opacity:{value:1},map:{value:null},uvTransform:{value:new xt},uv2Transform:{value:new xt},alphaMap:{value:null}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new yt(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Ze(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Ze(15658734)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},uvTransform:{value:new xt}},sprite:{diffuse:{value:new Ze(15658734)},opacity:{value:1},center:{value:new yt(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},uvTransform:{value:new xt}}},ui={basic:{uniforms:qn([li.common,li.specularmap,li.envmap,li.aomap,li.lightmap,li.fog]),vertexShader:ci.meshbasic_vert,fragmentShader:ci.meshbasic_frag},lambert:{uniforms:qn([li.common,li.specularmap,li.envmap,li.aomap,li.lightmap,li.emissivemap,li.fog,li.lights,{emissive:{value:new Ze(0)}}]),vertexShader:ci.meshlambert_vert,fragmentShader:ci.meshlambert_frag},phong:{uniforms:qn([li.common,li.specularmap,li.envmap,li.aomap,li.lightmap,li.emissivemap,li.bumpmap,li.normalmap,li.displacementmap,li.fog,li.lights,{emissive:{value:new Ze(0)},specular:{value:new Ze(1118481)},shininess:{value:30}}]),vertexShader:ci.meshphong_vert,fragmentShader:ci.meshphong_frag},standard:{uniforms:qn([li.common,li.envmap,li.aomap,li.lightmap,li.emissivemap,li.bumpmap,li.normalmap,li.displacementmap,li.roughnessmap,li.metalnessmap,li.fog,li.lights,{emissive:{value:new Ze(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:ci.meshphysical_vert,fragmentShader:ci.meshphysical_frag},toon:{uniforms:qn([li.common,li.aomap,li.lightmap,li.emissivemap,li.bumpmap,li.normalmap,li.displacementmap,li.gradientmap,li.fog,li.lights,{emissive:{value:new Ze(0)}}]),vertexShader:ci.meshtoon_vert,fragmentShader:ci.meshtoon_frag},matcap:{uniforms:qn([li.common,li.bumpmap,li.normalmap,li.displacementmap,li.fog,{matcap:{value:null}}]),vertexShader:ci.meshmatcap_vert,fragmentShader:ci.meshmatcap_frag},points:{uniforms:qn([li.points,li.fog]),vertexShader:ci.points_vert,fragmentShader:ci.points_frag},dashed:{uniforms:qn([li.common,li.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:ci.linedashed_vert,fragmentShader:ci.linedashed_frag},depth:{uniforms:qn([li.common,li.displacementmap]),vertexShader:ci.depth_vert,fragmentShader:ci.depth_frag},normal:{uniforms:qn([li.common,li.bumpmap,li.normalmap,li.displacementmap,{opacity:{value:1}}]),vertexShader:ci.normal_vert,fragmentShader:ci.normal_frag},sprite:{uniforms:qn([li.sprite,li.fog]),vertexShader:ci.sprite_vert,fragmentShader:ci.sprite_frag},background:{uniforms:{uvTransform:{value:new xt},t2D:{value:null}},vertexShader:ci.background_vert,fragmentShader:ci.background_frag},cube:{uniforms:qn([li.envmap,{opacity:{value:1}}]),vertexShader:ci.cube_vert,fragmentShader:ci.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:ci.equirect_vert,fragmentShader:ci.equirect_frag},distanceRGBA:{uniforms:qn([li.common,li.displacementmap,{referencePosition:{value:new Lt},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:ci.distanceRGBA_vert,fragmentShader:ci.distanceRGBA_frag},shadow:{uniforms:qn([li.lights,li.fog,{color:{value:new Ze(0)},opacity:{value:1}}]),vertexShader:ci.shadow_vert,fragmentShader:ci.shadow_frag}};function hi(t,e,n,i,r){var a,o,s=new Ze(0),c=0,u=null,h=0,d=null;function p(t,e){n.buffers.color.setClear(t.r,t.g,t.b,e,r)}return{getClearColor:function(){return s},setClearColor:function(t,e){void 0===e&&(e=1),s.set(t),p(s,c=e)},getClearAlpha:function(){return c},setClearAlpha:function(t){p(s,c=t)},render:function(n,r,f,m){var v=!0===r.isScene?r.background:null;v&&v.isTexture&&(v=e.get(v));var g=t.xr,y=g.getSession&&g.getSession();y&&"additive"===y.environmentBlendMode&&(v=null),null===v?p(s,c):v&&v.isColor&&(p(v,1),m=!0),(t.autoClear||m)&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),v&&(v.isCubeTexture||v.isWebGLCubeRenderTarget||v.mapping===l)?(void 0===o&&((o=new kn(new Wn(1,1,1),new Yn({name:"BackgroundCubeMaterial",uniforms:jn(ui.cube.uniforms),vertexShader:ui.cube.vertexShader,fragmentShader:ui.cube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),o.geometry.deleteAttribute("uv"),o.onBeforeRender=function(t,e,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(o.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(o)),v.isWebGLCubeRenderTarget&&(v=v.texture),o.material.uniforms.envMap.value=v,o.material.uniforms.flipEnvMap.value=v.isCubeTexture&&v._needsFlipEnvMap?-1:1,u===v&&h===v.version&&d===t.toneMapping||(o.material.needsUpdate=!0,u=v,h=v.version,d=t.toneMapping),n.unshift(o,o.geometry,o.material,0,0,null)):v&&v.isTexture&&(void 0===a&&((a=new kn(new si(2,2),new Yn({name:"BackgroundMaterial",uniforms:jn(ui.background.uniforms),vertexShader:ui.background.vertexShader,fragmentShader:ui.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),Object.defineProperty(a.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(a)),a.material.uniforms.t2D.value=v,!0===v.matrixAutoUpdate&&v.updateMatrix(),a.material.uniforms.uvTransform.value.copy(v.matrix),u===v&&h===v.version&&d===t.toneMapping||(a.material.needsUpdate=!0,u=v,h=v.version,d=t.toneMapping),n.unshift(a,a.geometry,a.material,0,0,null))}}}function di(t,e,n,i){var r=t.getParameter(34921),a=i.isWebGL2?null:e.get("OES_vertex_array_object"),o=i.isWebGL2||null!==a,s={},c=d(null),l=c;function u(e){return i.isWebGL2?t.bindVertexArray(e):a.bindVertexArrayOES(e)}function h(e){return i.isWebGL2?t.deleteVertexArray(e):a.deleteVertexArrayOES(e)}function d(t){for(var e=[],n=[],i=[],a=0;a=0){var y=c[h];if(void 0!==y){var x=y.normalized,_=y.itemSize,b=n.get(y);if(void 0===b)continue;var w=b.buffer,M=b.type,S=b.bytesPerElement;if(y.isInterleavedBufferAttribute){var T=y.data,E=T.stride,A=y.offset;T&&T.isInstancedInterleavedBuffer?(m(d,T.meshPerAttribute),void 0===s._maxInstanceCount&&(s._maxInstanceCount=T.meshPerAttribute*T.count)):f(d),t.bindBuffer(34962,w),g(d,_,M,x,E*S,A*S)}else y.isInstancedBufferAttribute?(m(d,y.meshPerAttribute),void 0===s._maxInstanceCount&&(s._maxInstanceCount=y.meshPerAttribute*y.count)):f(d),t.bindBuffer(34962,w),g(d,_,M,x,0,0)}else if("instanceMatrix"===h){var L=n.get(r.instanceMatrix);if(void 0===L)continue;var R=L.buffer,C=L.type;m(d+0,1),m(d+1,1),m(d+2,1),m(d+3,1),t.bindBuffer(34962,R),t.vertexAttribPointer(d+0,4,C,!1,64,0),t.vertexAttribPointer(d+1,4,C,!1,64,16),t.vertexAttribPointer(d+2,4,C,!1,64,32),t.vertexAttribPointer(d+3,4,C,!1,64,48)}else if("instanceColor"===h){var P=n.get(r.instanceColor);if(void 0===P)continue;var O=P.buffer,I=P.type;m(d,1),t.bindBuffer(34962,O),t.vertexAttribPointer(d,3,I,!1,12,0)}else if(void 0!==u){var D=u[h];if(void 0!==D)switch(D.length){case 2:t.vertexAttrib2fv(d,D);break;case 3:t.vertexAttrib3fv(d,D);break;case 4:t.vertexAttrib4fv(d,D);break;default:t.vertexAttrib1fv(d,D)}}}}v()}(r,c,h,y),null!==x&&t.bindBuffer(34963,n.get(x).buffer))},reset:y,resetDefaultState:x,dispose:function(){for(var t in y(),s){var e=s[t];for(var n in e){var i=e[n];for(var r in i)h(i[r].object),delete i[r];delete e[n]}delete s[t]}},releaseStatesOfGeometry:function(t){if(void 0!==s[t.id]){var e=s[t.id];for(var n in e){var i=e[n];for(var r in i)h(i[r].object),delete i[r];delete e[n]}delete s[t.id]}},releaseStatesOfProgram:function(t){for(var e in s){var n=s[e];if(void 0!==n[t.id]){var i=n[t.id];for(var r in i)h(i[r].object),delete i[r];delete n[t.id]}}},initAttributes:p,enableAttribute:f,disableUnusedAttributes:v}}function pi(t,e,n,i){var r,a=i.isWebGL2;this.setMode=function(t){r=t},this.render=function(e,i){t.drawArrays(r,e,i),n.update(i,r,1)},this.renderInstances=function(i,o,s){if(0!==s){var c,l;if(a)c=t,l="drawArraysInstanced";else if(l="drawArraysInstancedANGLE",null===(c=e.get("ANGLE_instanced_arrays")))return void console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");c[l](r,i,o,s),n.update(o,r,s)}}}function fi(t,e,n){var i;function r(e){if("highp"===e){if(t.getShaderPrecisionFormat(35633,36338).precision>0&&t.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";e="mediump"}return"mediump"===e&&t.getShaderPrecisionFormat(35633,36337).precision>0&&t.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}var a="undefined"!=typeof WebGL2RenderingContext&&t instanceof WebGL2RenderingContext||"undefined"!=typeof WebGL2ComputeRenderingContext&&t instanceof WebGL2ComputeRenderingContext,o=void 0!==n.precision?n.precision:"highp",s=r(o);s!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",s,"instead."),o=s);var c=!0===n.logarithmicDepthBuffer,l=t.getParameter(34930),u=t.getParameter(35660),h=t.getParameter(3379),d=t.getParameter(34076),p=t.getParameter(34921),f=t.getParameter(36347),m=t.getParameter(36348),v=t.getParameter(36349),g=u>0,y=a||!!e.get("OES_texture_float");return{isWebGL2:a,getMaxAnisotropy:function(){if(void 0!==i)return i;var n=e.get("EXT_texture_filter_anisotropic");return i=null!==n?t.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:r,precision:o,logarithmicDepthBuffer:c,maxTextures:l,maxVertexTextures:u,maxTextureSize:h,maxCubemapSize:d,maxAttributes:p,maxVertexUniforms:f,maxVaryings:m,maxFragmentUniforms:v,vertexTextures:g,floatFragmentTextures:y,floatVertexTextures:g&&y,maxSamples:a?t.getParameter(36183):0}}function mi(t){var e=this,n=null,i=0,r=!1,a=!1,o=new Pe,s=new xt,c={value:null,needsUpdate:!1};function l(){c.value!==n&&(c.value=n,c.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function u(t,n,i,r){var a=null!==t?t.length:0,l=null;if(0!==a){if(l=c.value,!0!==r||null===l){var u=i+4*a,h=n.matrixWorldInverse;s.getNormalMatrix(h),(null===l||l.length0){var l=t.getRenderList(),u=t.getRenderTarget(),h=new ti(o.height/2);return h.fromEquirectangularTexture(t,r),e.set(r,h),t.setRenderTarget(u),t.setRenderList(l),r.addEventListener("dispose",i),n(h.texture,r.mapping)}return null}}return r},dispose:function(){e=new WeakMap}}}function gi(t){var e={};function n(n){if(void 0!==e[n])return e[n];var i;switch(n){case"WEBGL_depth_texture":i=t.getExtension("WEBGL_depth_texture")||t.getExtension("MOZ_WEBGL_depth_texture")||t.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":i=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":i=t.getExtension("WEBGL_compressed_texture_s3tc")||t.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":i=t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:i=t.getExtension(n)}return e[n]=i,i}return{has:function(t){return null!==n(t)},init:function(t){t.isWebGL2?n("EXT_color_buffer_float"):(n("WEBGL_depth_texture"),n("OES_texture_float"),n("OES_texture_half_float"),n("OES_texture_half_float_linear"),n("OES_standard_derivatives"),n("OES_element_index_uint"),n("OES_vertex_array_object"),n("ANGLE_instanced_arrays")),n("OES_texture_float_linear"),n("EXT_color_buffer_half_float")},get:function(t){var e=n(t);return null===e&&console.warn("THREE.WebGLRenderer: "+t+" extension not supported."),e}}}function yi(t,e,n,i){var r={},a=new WeakMap;function o(t){var s=t.target;for(var c in null!==s.index&&e.remove(s.index),s.attributes)e.remove(s.attributes[c]);s.removeEventListener("dispose",o),delete r[s.id];var l=a.get(s);l&&(e.remove(l),a.delete(s)),i.releaseStatesOfGeometry(s),!0===s.isInstancedBufferGeometry&&delete s._maxInstanceCount,n.memory.geometries--}function s(t){var n=[],i=t.index,r=t.attributes.position,o=0;if(null!==i){var s=i.array;o=i.version;for(var c=0,l=s.length;c65535?un:cn)(n,1);x.version=o;var _=a.get(t);_&&e.remove(_),a.set(t,x)}return{get:function(t,e){return!0===r[e.id]||(e.addEventListener("dispose",o),r[e.id]=!0,n.memory.geometries++),e},update:function(t){var n=t.attributes;for(var i in n)e.update(n[i],34962);var r=t.morphAttributes;for(var a in r)for(var o=r[a],s=0,c=o.length;s0)return t;var r=e*n,a=Pi[r];if(void 0===a&&(a=new Float32Array(r),Pi[r]=a),0!==e){i.toArray(a,0);for(var o=1,s=0;o!==e;++o)s+=n,t[o].toArray(a,s)}return a}function zi(t,e){if(t.length!==e.length)return!1;for(var n=0,i=t.length;n/gm;function Or(t){return t.replace(Pr,Ir)}function Ir(t,e){var n=ci[e];if(void 0===n)throw new Error("Can not resolve #include <"+e+">");return Or(n)}var Dr=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,Nr=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Br(t){return t.replace(Nr,Fr).replace(Dr,zr)}function zr(t,e,n,i){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),Fr(t,e,n,i)}function Fr(t,e,n,i){for(var r="",a=parseInt(e);a0?t.gammaFactor:1,w=n.isWebGL2?"":function(t){return[t.extensionDerivatives||t.envMapCubeUV||t.bumpMap||t.tangentSpaceNormalMap||t.clearcoatNormalMap||t.flatShading||"physical"===t.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(t.extensionFragDepth||t.logarithmicDepthBuffer)&&t.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",t.extensionDrawBuffers&&t.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(t.extensionShaderTextureLOD||t.envMap)&&t.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Lr).join("\n")}(n),M=function(t){var e=[];for(var n in t){var i=t[n];!1!==i&&e.push("#define "+n+" "+i)}return e.join("\n")}(f),S=p.createProgram(),T=n.glslVersion?"#version "+n.glslVersion+"\n":"";n.isRawShaderMaterial?((r=[M].filter(Lr).join("\n")).length>0&&(r+="\n"),(s=[w,M].filter(Lr).join("\n")).length>0&&(s+="\n")):(r=[Hr(n),"#define SHADER_NAME "+n.shaderName,M,n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+b,"#define MAX_BONES "+n.maxBones,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+x:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMap&&n.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",n.normalMap&&n.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.displacementMap&&n.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.vertexTangents?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexUvs?"#define USE_UV":"",n.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.useVertexTexture?"#define BONE_TEXTURE":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+g:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Lr).join("\n"),s=[w,Hr(n),"#define SHADER_NAME "+n.shaderName,M,n.alphaTest?"#define ALPHATEST "+n.alphaTest+(n.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+b,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+y:"",n.envMap?"#define "+x:"",n.envMap?"#define "+_:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMap&&n.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",n.normalMap&&n.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.sheen?"#define USE_SHEEN":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.vertexTangents?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor?"#define USE_COLOR":"",n.vertexUvs?"#define USE_UV":"",n.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+g:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",(n.extensionShaderTextureLOD||n.envMap)&&n.rendererExtensionShaderTextureLod?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==n.toneMapping?"#define TONE_MAPPING":"",0!==n.toneMapping?ci.tonemapping_pars_fragment:"",0!==n.toneMapping?Ar("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",ci.encodings_pars_fragment,n.map?Er("mapTexelToLinear",n.mapEncoding):"",n.matcap?Er("matcapTexelToLinear",n.matcapEncoding):"",n.envMap?Er("envMapTexelToLinear",n.envMapEncoding):"",n.emissiveMap?Er("emissiveMapTexelToLinear",n.emissiveMapEncoding):"",n.lightMap?Er("lightMapTexelToLinear",n.lightMapEncoding):"",(c="linearToOutputTexel",h=n.outputEncoding,d=Sr(h),"vec4 "+c+"( vec4 value ) { return LinearTo"+d[0]+d[1]+"; }"),n.depthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(Lr).join("\n")),m=Cr(m=Rr(m=Or(m),n),n),v=Cr(v=Rr(v=Or(v),n),n),m=Br(m),v=Br(v),n.isWebGL2&&!0!==n.isRawShaderMaterial&&(T="#version 300 es\n",r=["#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+r,s=["#define varying in",n.glslVersion===rt?"":"out highp vec4 pc_fragColor;",n.glslVersion===rt?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+s);var E,A,L=T+s+v,R=wr(p,35633,T+r+m),C=wr(p,35632,L);if(p.attachShader(S,R),p.attachShader(S,C),void 0!==n.index0AttributeName?p.bindAttribLocation(S,0,n.index0AttributeName):!0===n.morphTargets&&p.bindAttribLocation(S,0,"position"),p.linkProgram(S),t.debug.checkShaderErrors){var P=p.getProgramInfoLog(S).trim(),O=p.getShaderInfoLog(R).trim(),I=p.getShaderInfoLog(C).trim(),D=!0,N=!0;if(!1===p.getProgramParameter(S,35714)){D=!1;var B=Tr(p,R,"vertex"),z=Tr(p,C,"fragment");console.error("THREE.WebGLProgram: shader error: ",p.getError(),"35715",p.getProgramParameter(S,35715),"gl.getProgramInfoLog",P,B,z)}else""!==P?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",P):""!==O&&""!==I||(N=!1);N&&(this.diagnostics={runnable:D,programLog:P,vertexShader:{log:O,prefix:r},fragmentShader:{log:I,prefix:s}})}return p.deleteShader(R),p.deleteShader(C),this.getUniforms=function(){return void 0===E&&(E=new br(p,S)),E},this.getAttributes=function(){return void 0===A&&(A=function(t,e){for(var n={},i=t.getProgramParameter(e,35721),r=0;r0,maxBones:E,useVertexTexture:h,morphTargets:r.morphTargets,morphNormals:r.morphNormals,maxMorphTargets:t.maxMorphTargets,maxMorphNormals:t.maxMorphNormals,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:r.dithering,shadowMapEnabled:t.shadowMap.enabled&&v.length>0,shadowMapType:t.shadowMap.type,toneMapping:r.toneMapped?t.toneMapping:0,physicallyCorrectLights:t.physicallyCorrectLights,premultipliedAlpha:r.premultipliedAlpha,alphaTest:r.alphaTest,doubleSided:2===r.side,flipSided:1===r.side,depthPacking:void 0!==r.depthPacking&&r.depthPacking,index0AttributeName:r.index0AttributeName,extensionDerivatives:r.extensions&&r.extensions.derivatives,extensionFragDepth:r.extensions&&r.extensions.fragDepth,extensionDrawBuffers:r.extensions&&r.extensions.drawBuffers,extensionShaderTextureLOD:r.extensions&&r.extensions.shaderTextureLOD,rendererExtensionFragDepth:s||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:s||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:s||n.has("EXT_shader_texture_lod"),customProgramCacheKey:r.customProgramCacheKey()}},getProgramCacheKey:function(e){var n=[];if(e.shaderID?n.push(e.shaderID):(n.push(e.fragmentShader),n.push(e.vertexShader)),void 0!==e.defines)for(var i in e.defines)n.push(i),n.push(e.defines[i]);if(!1===e.isRawShaderMaterial){for(var r=0;r1&&i.sort(t||Vr),r.length>1&&r.sort(e||Wr)}}}function qr(t){var e=new WeakMap;return{get:function(n,i){var r,a=e.get(n);return void 0===a?(r=new jr(t),e.set(n,new WeakMap),e.get(n).set(i,r)):void 0===(r=a.get(i))&&(r=new jr(t),a.set(i,r)),r},dispose:function(){e=new WeakMap}}}function Xr(){var t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];var n;switch(e.type){case"DirectionalLight":n={direction:new Lt,color:new Ze};break;case"SpotLight":n={position:new Lt,direction:new Lt,color:new Ze,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new Lt,color:new Ze,distance:0,decay:0};break;case"HemisphereLight":n={direction:new Lt,skyColor:new Ze,groundColor:new Ze};break;case"RectAreaLight":n={color:new Ze,position:new Lt,halfWidth:new Lt,halfHeight:new Lt}}return t[e.id]=n,n}}}var Yr=0;function Zr(t,e){return(e.castShadow?1:0)-(t.castShadow?1:0)}function Jr(t,e){for(var n,i=new Xr,r=(n={},{get:function(t){if(void 0!==n[t.id])return n[t.id];var e;switch(t.type){case"DirectionalLight":case"SpotLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt};break;case"PointLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt,shadowCameraNear:1,shadowCameraFar:1e3}}return n[t.id]=e,e}}),a={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]},o=0;o<9;o++)a.probe.push(new Lt);var s=new Lt,c=new ne,l=new ne;return{setup:function(n){for(var o=0,s=0,c=0,l=0;l<9;l++)a.probe[l].set(0,0,0);var u=0,h=0,d=0,p=0,f=0,m=0,v=0,g=0;n.sort(Zr);for(var y=0,x=n.length;y0&&(e.isWebGL2||!0===t.has("OES_texture_float_linear")?(a.rectAreaLTC1=li.LTC_FLOAT_1,a.rectAreaLTC2=li.LTC_FLOAT_2):!0===t.has("OES_texture_half_float_linear")?(a.rectAreaLTC1=li.LTC_HALF_1,a.rectAreaLTC2=li.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),a.ambient[0]=o,a.ambient[1]=s,a.ambient[2]=c;var z=a.hash;z.directionalLength===u&&z.pointLength===h&&z.spotLength===d&&z.rectAreaLength===p&&z.hemiLength===f&&z.numDirectionalShadows===m&&z.numPointShadows===v&&z.numSpotShadows===g||(a.directional.length=u,a.spot.length=d,a.rectArea.length=p,a.point.length=h,a.hemi.length=f,a.directionalShadow.length=m,a.directionalShadowMap.length=m,a.pointShadow.length=v,a.pointShadowMap.length=v,a.spotShadow.length=g,a.spotShadowMap.length=g,a.directionalShadowMatrix.length=m,a.pointShadowMatrix.length=v,a.spotShadowMatrix.length=g,z.directionalLength=u,z.pointLength=h,z.spotLength=d,z.rectAreaLength=p,z.hemiLength=f,z.numDirectionalShadows=m,z.numPointShadows=v,z.numSpotShadows=g,a.version=Yr++)},setupView:function(t,e){for(var n=0,i=0,r=0,o=0,u=0,h=e.matrixWorldInverse,d=0,p=t.length;d=n.get(i).length?(a=new Qr(t,e),n.get(i).push(a)):a=n.get(i)[r],a},dispose:function(){n=new WeakMap}}}function $r(t){Ke.call(this),this.type="MeshDepthMaterial",this.depthPacking=3200,this.skinning=!1,this.morphTargets=!1,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.setValues(t)}function ta(t){Ke.call(this),this.type="MeshDistanceMaterial",this.referencePosition=new Lt,this.nearDistance=1,this.farDistance=1e3,this.skinning=!1,this.morphTargets=!1,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.setValues(t)}$r.prototype=Object.create(Ke.prototype),$r.prototype.constructor=$r,$r.prototype.isMeshDepthMaterial=!0,$r.prototype.copy=function(t){return Ke.prototype.copy.call(this,t),this.depthPacking=t.depthPacking,this.skinning=t.skinning,this.morphTargets=t.morphTargets,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this},ta.prototype=Object.create(Ke.prototype),ta.prototype.constructor=ta,ta.prototype.isMeshDistanceMaterial=!0,ta.prototype.copy=function(t){return Ke.prototype.copy.call(this,t),this.referencePosition.copy(t.referencePosition),this.nearDistance=t.nearDistance,this.farDistance=t.farDistance,this.skinning=t.skinning,this.morphTargets=t.morphTargets,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this};function ea(t,e,n){var i=new ri,r=new yt,a=new yt,o=new St,s=[],c=[],l={},u={0:1,1:0,2:2},h=new Yn({defines:{SAMPLE_RATE:2/8,HALF_SAMPLE_RATE:1/8},uniforms:{shadow_pass:{value:null},resolution:{value:new yt},radius:{value:4}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\n\tfor ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean * HALF_SAMPLE_RATE;\n\tsquared_mean = squared_mean * HALF_SAMPLE_RATE;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),d=h.clone();d.defines.HORIZONTAL_PASS=1;var p=new Sn;p.setAttribute("position",new nn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));var m=new kn(p,h),v=this;function y(n,i){var r=e.update(m);h.uniforms.shadow_pass.value=n.map.texture,h.uniforms.resolution.value=n.mapSize,h.uniforms.radius.value=n.radius,t.setRenderTarget(n.mapPass),t.clear(),t.renderBufferDirect(i,null,r,h,m,null),d.uniforms.shadow_pass.value=n.mapPass.texture,d.uniforms.resolution.value=n.mapSize,d.uniforms.radius.value=n.radius,t.setRenderTarget(n.map),t.clear(),t.renderBufferDirect(i,null,r,d,m,null)}function x(t,e,n){var i=t<<0|e<<1|n<<2,r=s[i];return void 0===r&&(r=new $r({depthPacking:3201,morphTargets:t,skinning:e}),s[i]=r),r}function _(t,e,n){var i=t<<0|e<<1|n<<2,r=c[i];return void 0===r&&(r=new ta({morphTargets:t,skinning:e}),c[i]=r),r}function b(e,n,i,r,a,o,s){var c=null,h=x,d=e.customDepthMaterial;if(!0===r.isPointLight&&(h=_,d=e.customDistanceMaterial),void 0===d){var p=!1;!0===i.morphTargets&&(p=n.morphAttributes&&n.morphAttributes.position&&n.morphAttributes.position.length>0);var f=!1;!0===e.isSkinnedMesh&&(!0===i.skinning?f=!0:console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",e)),c=h(p,f,!0===e.isInstancedMesh)}else c=d;if(t.localClippingEnabled&&!0===i.clipShadows&&0!==i.clippingPlanes.length){var m=c.uuid,v=i.uuid,g=l[m];void 0===g&&(g={},l[m]=g);var y=g[v];void 0===y&&(y=c.clone(),g[v]=y),c=y}return c.visible=i.visible,c.wireframe=i.wireframe,c.side=3===s?null!==i.shadowSide?i.shadowSide:i.side:null!==i.shadowSide?i.shadowSide:u[i.side],c.clipShadows=i.clipShadows,c.clippingPlanes=i.clippingPlanes,c.clipIntersection=i.clipIntersection,c.wireframeLinewidth=i.wireframeLinewidth,c.linewidth=i.linewidth,!0===r.isPointLight&&!0===c.isMeshDistanceMaterial&&(c.referencePosition.setFromMatrixPosition(r.matrixWorld),c.nearDistance=a,c.farDistance=o),c}function w(n,r,a,o,s){if(!1!==n.visible){if(n.layers.test(r.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&3===s)&&(!n.frustumCulled||i.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,n.matrixWorld);var c=e.update(n),l=n.material;if(Array.isArray(l))for(var u=c.groups,h=0,d=u.length;hn||r.y>n)&&(r.x>n&&(a.x=Math.floor(n/b.x),r.x=a.x*b.x,_.mapSize.x=a.x),r.y>n&&(a.y=Math.floor(n/b.y),r.y=a.y*b.y,_.mapSize.y=a.y)),null===_.map&&!_.isPointLightShadow&&3===this.type){var M={minFilter:g,magFilter:g,format:A};_.map=new Tt(r.x,r.y,M),_.map.texture.name=x.name+".shadowMap",_.mapPass=new Tt(r.x,r.y,M),_.camera.updateProjectionMatrix()}if(null===_.map){var S={minFilter:f,magFilter:f,format:A};_.map=new Tt(r.x,r.y,S),_.map.texture.name=x.name+".shadowMap",_.camera.updateProjectionMatrix()}t.setRenderTarget(_.map),t.clear();for(var T=_.getViewportCount(),E=0;E=1):-1!==R.indexOf("OpenGL ES")&&(L=parseFloat(/^OpenGL ES (\d)/.exec(R)[1]),A=L>=2);var C=null,P={},O=new St,I=new St;function D(e,n,i){var r=new Uint8Array(4),a=t.createTexture();t.bindTexture(e,a),t.texParameteri(e,10241,9728),t.texParameteri(e,10240,9728);for(var o=0;oi||t.height>i)&&(r=i/Math.max(t.width,t.height)),r<1||!0===e){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){var a=e?gt.floorPowerOfTwo:Math.floor,o=a(r*t.width),s=a(r*t.height);void 0===l&&(l=P(o,s));var c=n?P(o,s):l;return c.width=o,c.height=s,c.getContext("2d").drawImage(t,0,0,o,s),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+t.width+"x"+t.height+") to ("+o+"x"+s+")."),c}return"data"in t&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+t.width+"x"+t.height+")."),t}return t}function I(t){return gt.isPowerOfTwo(t.width)&>.isPowerOfTwo(t.height)}function D(t,e){return t.generateMipmaps&&e&&t.minFilter!==f&&t.minFilter!==g}function N(e,n,r,a){t.generateMipmap(e),i.get(n).__maxMipLevel=Math.log(Math.max(r,a))*Math.LOG2E}function B(n,i,r){if(!1===u)return i;if(null!==n){if(void 0!==t[n])return t[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}var a=i;return 6403===i&&(5126===r&&(a=33326),5131===r&&(a=33325),5121===r&&(a=33321)),6407===i&&(5126===r&&(a=34837),5131===r&&(a=34843),5121===r&&(a=32849)),6408===i&&(5126===r&&(a=34836),5131===r&&(a=34842),5121===r&&(a=32856)),33325!==a&&33326!==a&&34842!==a&&34836!==a||e.get("EXT_color_buffer_float"),a}function z(t){return t===f||t===m||t===v?9728:9729}function F(e){var n=e.target;n.removeEventListener("dispose",F),function(e){var n=i.get(e);if(void 0===n.__webglInit)return;t.deleteTexture(n.__webglTexture),i.remove(e)}(n),n.isVideoTexture&&_.delete(n),o.memory.textures--}function H(e){var n=e.target;n.removeEventListener("dispose",H),function(e){var n=i.get(e),r=i.get(e.texture);if(!e)return;void 0!==r.__webglTexture&&t.deleteTexture(r.__webglTexture);e.depthTexture&&e.depthTexture.dispose();if(e.isWebGLCubeRenderTarget)for(var a=0;a<6;a++)t.deleteFramebuffer(n.__webglFramebuffer[a]),n.__webglDepthbuffer&&t.deleteRenderbuffer(n.__webglDepthbuffer[a]);else t.deleteFramebuffer(n.__webglFramebuffer),n.__webglDepthbuffer&&t.deleteRenderbuffer(n.__webglDepthbuffer),n.__webglMultisampledFramebuffer&&t.deleteFramebuffer(n.__webglMultisampledFramebuffer),n.__webglColorRenderbuffer&&t.deleteRenderbuffer(n.__webglColorRenderbuffer),n.__webglDepthRenderbuffer&&t.deleteRenderbuffer(n.__webglDepthRenderbuffer);i.remove(e.texture),i.remove(e)}(n),o.memory.textures--}var G=0;function U(t,e){var r=i.get(t);if(t.isVideoTexture&&function(t){var e=o.render.frame;_.get(t)!==e&&(_.set(t,e),t.update())}(t),t.version>0&&r.__version!==t.version){var a=t.image;if(void 0===a)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else{if(!1!==a.complete)return void X(r,t,e);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.activeTexture(33984+e),n.bindTexture(3553,r.__webglTexture)}function k(e,r){var o=i.get(e);e.version>0&&o.__version!==e.version?function(e,i,r){if(6!==i.image.length)return;q(e,i),n.activeTexture(33984+r),n.bindTexture(34067,e.__webglTexture),t.pixelStorei(37440,i.flipY),t.pixelStorei(37441,i.premultiplyAlpha),t.pixelStorei(3317,i.unpackAlignment);for(var o=i&&(i.isCompressedTexture||i.image[0].isCompressedTexture),s=i.image[0]&&i.image[0].isDataTexture,c=[],l=0;l<6;l++)c[l]=o||s?s?i.image[l].image:i.image[l]:O(i.image[l],!1,!0,p);var h,d=c[0],f=I(d)||u,m=a.convert(i.format),v=a.convert(i.type),g=B(i.internalFormat,m,v);if(j(34067,i,f),o){for(var y=0;y<6;y++){h=c[y].mipmaps;for(var x=0;x1||i.get(a).__currentAnisotropy)&&(t.texParameterf(n,s.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,r.getMaxAnisotropy())),i.get(a).__currentAnisotropy=a.anisotropy)}}function q(e,n){void 0===e.__webglInit&&(e.__webglInit=!0,n.addEventListener("dispose",F),e.__webglTexture=t.createTexture(),o.memory.textures++)}function X(e,i,r){var o=3553;i.isDataTexture2DArray&&(o=35866),i.isDataTexture3D&&(o=32879),q(e,i),n.activeTexture(33984+r),n.bindTexture(o,e.__webglTexture),t.pixelStorei(37440,i.flipY),t.pixelStorei(37441,i.premultiplyAlpha),t.pixelStorei(3317,i.unpackAlignment);var s,c=function(t){return!u&&(t.wrapS!==d||t.wrapT!==d||t.minFilter!==f&&t.minFilter!==g)}(i)&&!1===I(i.image),l=O(i.image,c,!1,y),h=I(l)||u,p=a.convert(i.format),m=a.convert(i.type),v=B(i.internalFormat,p,m);j(o,i,h);var x=i.mipmaps;if(i.isDepthTexture)v=6402,u?v=i.type===M?36012:i.type===w?33190:i.type===T?35056:33189:i.type===M&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),i.format===L&&6402===v&&i.type!==b&&i.type!==w&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),i.type=b,m=a.convert(i.type)),i.format===R&&6402===v&&(v=34041,i.type!==T&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),i.type=T,m=a.convert(i.type))),n.texImage2D(3553,0,v,l.width,l.height,0,p,m,null);else if(i.isDataTexture)if(x.length>0&&h){for(var _=0,S=x.length;_0&&h){for(var z=0,F=x.length;z=h&&console.warn("THREE.WebGLTextures: Trying to use "+t+" texture units while this GPU supports only "+h),G+=1,t},this.resetTextureUnits=function(){G=0},this.setTexture2D=U,this.setTexture2DArray=function(t,e){var r=i.get(t);t.version>0&&r.__version!==t.version?X(r,t,e):(n.activeTexture(33984+e),n.bindTexture(35866,r.__webglTexture))},this.setTexture3D=function(t,e){var r=i.get(t);t.version>0&&r.__version!==t.version?X(r,t,e):(n.activeTexture(33984+e),n.bindTexture(32879,r.__webglTexture))},this.setTextureCube=k,this.setupRenderTarget=function(e){var r=i.get(e),s=i.get(e.texture);e.addEventListener("dispose",H),s.__webglTexture=t.createTexture(),o.memory.textures++;var c=!0===e.isWebGLCubeRenderTarget,l=!0===e.isWebGLMultisampleRenderTarget,h=I(e)||u;if(!u||e.texture.format!==E||e.texture.type!==M&&e.texture.type!==S||(e.texture.format=A,console.warn("THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.")),c){r.__webglFramebuffer=[];for(var d=0;d<6;d++)r.__webglFramebuffer[d]=t.createFramebuffer()}else if(r.__webglFramebuffer=t.createFramebuffer(),l)if(u){r.__webglMultisampledFramebuffer=t.createFramebuffer(),r.__webglColorRenderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(36161,r.__webglColorRenderbuffer);var p=a.convert(e.texture.format),f=a.convert(e.texture.type),m=B(e.texture.internalFormat,p,f),v=Q(e);t.renderbufferStorageMultisample(36161,v,m,e.width,e.height),t.bindFramebuffer(36160,r.__webglMultisampledFramebuffer),t.framebufferRenderbuffer(36160,36064,36161,r.__webglColorRenderbuffer),t.bindRenderbuffer(36161,null),e.depthBuffer&&(r.__webglDepthRenderbuffer=t.createRenderbuffer(),Z(r.__webglDepthRenderbuffer,e,!0)),t.bindFramebuffer(36160,null)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");if(c){n.bindTexture(34067,s.__webglTexture),j(34067,e.texture,h);for(var g=0;g<6;g++)Y(r.__webglFramebuffer[g],e,36064,34069+g);D(e.texture,h)&&N(34067,e.texture,e.width,e.height),n.bindTexture(34067,null)}else n.bindTexture(3553,s.__webglTexture),j(3553,e.texture,h),Y(r.__webglFramebuffer,e,36064,3553),D(e.texture,h)&&N(3553,e.texture,e.width,e.height),n.bindTexture(3553,null);e.depthBuffer&&J(e)},this.updateRenderTargetMipmap=function(t){var e=t.texture;if(D(e,I(t)||u)){var r=t.isWebGLCubeRenderTarget?34067:3553,a=i.get(e).__webglTexture;n.bindTexture(r,a),N(r,e,t.width,t.height),n.bindTexture(r,null)}},this.updateMultisampleRenderTarget=function(e){if(e.isWebGLMultisampleRenderTarget)if(u){var n=i.get(e);t.bindFramebuffer(36008,n.__webglMultisampledFramebuffer),t.bindFramebuffer(36009,n.__webglFramebuffer);var r=e.width,a=e.height,o=16384;e.depthBuffer&&(o|=256),e.stencilBuffer&&(o|=1024),t.blitFramebuffer(0,0,r,a,0,0,r,a,o,9728),t.bindFramebuffer(36160,n.__webglMultisampledFramebuffer)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.")},this.safeSetTexture2D=function(t,e){t&&t.isWebGLRenderTarget&&(!1===K&&(console.warn("THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead."),K=!0),t=t.texture),U(t,e)},this.safeSetTextureCube=function(t,e){t&&t.isWebGLCubeRenderTarget&&(!1===$&&(console.warn("THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead."),$=!0),t=t.texture),k(t,e)}}function ra(t,e,n){var i=n.isWebGL2;return{convert:function(t){var n;if(t===_)return 5121;if(1017===t)return 32819;if(1018===t)return 32820;if(1019===t)return 33635;if(1010===t)return 5120;if(1011===t)return 5122;if(t===b)return 5123;if(1013===t)return 5124;if(t===w)return 5125;if(t===M)return 5126;if(t===S)return i?5131:null!==(n=e.get("OES_texture_half_float"))?n.HALF_FLOAT_OES:null;if(1021===t)return 6406;if(t===E)return 6407;if(t===A)return 6408;if(1024===t)return 6409;if(1025===t)return 6410;if(t===L)return 6402;if(t===R)return 34041;if(1028===t)return 6403;if(1029===t)return 36244;if(1030===t)return 33319;if(1031===t)return 33320;if(1032===t)return 36248;if(1033===t)return 36249;if(t===C||t===P||t===O||t===I){if(null===(n=e.get("WEBGL_compressed_texture_s3tc")))return null;if(t===C)return n.COMPRESSED_RGB_S3TC_DXT1_EXT;if(t===P)return n.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(t===O)return n.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(t===I)return n.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(t===D||t===N||t===B||t===z){if(null===(n=e.get("WEBGL_compressed_texture_pvrtc")))return null;if(t===D)return n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(t===N)return n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(t===B)return n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(t===z)return n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(36196===t)return null!==(n=e.get("WEBGL_compressed_texture_etc1"))?n.COMPRESSED_RGB_ETC1_WEBGL:null;if((t===F||t===H)&&null!==(n=e.get("WEBGL_compressed_texture_etc"))){if(t===F)return n.COMPRESSED_RGB8_ETC2;if(t===H)return n.COMPRESSED_RGBA8_ETC2_EAC}return 37808===t||37809===t||37810===t||37811===t||37812===t||37813===t||37814===t||37815===t||37816===t||37817===t||37818===t||37819===t||37820===t||37821===t||37840===t||37841===t||37842===t||37843===t||37844===t||37845===t||37846===t||37847===t||37848===t||37849===t||37850===t||37851===t||37852===t||37853===t?null!==(n=e.get("WEBGL_compressed_texture_astc"))?t:null:36492===t?null!==(n=e.get("EXT_texture_compression_bptc"))?t:null:t===T?i?34042:null!==(n=e.get("WEBGL_depth_texture"))?n.UNSIGNED_INT_24_8_WEBGL:null:void 0}}}function aa(t){void 0===t&&(t=[]),Jn.call(this),this.cameras=t}function oa(){Ae.call(this),this.type="Group"}function sa(){this._targetRay=null,this._grip=null,this._hand=null}function ca(t,e){var n=this,i=null,r=1,a=null,o="local-floor",s=null,c=[],l=new Map,u=new Jn;u.layers.enable(1),u.viewport=new St;var h=new Jn;h.layers.enable(2),h.viewport=new St;var d=[u,h],p=new aa;p.layers.enable(1),p.layers.enable(2);var f=null,m=null;function v(t){var e=l.get(t.inputSource);e&&e.dispatchEvent({type:t.type,data:t.inputSource})}function g(){l.forEach((function(t,e){t.disconnect(e)})),l.clear(),f=null,m=null,t.setFramebuffer(null),t.setRenderTarget(t.getRenderTarget()),M.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}function y(t){for(var e=i.inputSources,n=0;n0&&Ot(a,t,e),o.length>0&&Ot(o,t,e),!0===t.isScene&&t.onAfterRender(m,t,e),null!==b&&(K.updateRenderTargetMipmap(b),K.updateMultisampleRenderTarget(b)),Z.buffers.depth.setTest(!0),Z.buffers.depth.setMask(!0),Z.buffers.color.setMask(!0),Z.setPolygonOffset(!1),f.pop(),p=f.length>0?f[f.length-1]:null,d=null}}else console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.")},this.setFramebuffer=function(t){g!==t&&null===b&&ft.bindFramebuffer(36160,t),g=t},this.getActiveCubeFace=function(){return y},this.getActiveMipmapLevel=function(){return x},this.getRenderList=function(){return d},this.setRenderList=function(t){d=t},this.getRenderTarget=function(){return b},this.setRenderTarget=function(t,e,n){void 0===e&&(e=0),void 0===n&&(n=0),b=t,y=e,x=n,t&&void 0===Q.get(t).__webglFramebuffer&&K.setupRenderTarget(t);var i=g,r=!1;if(t){var a=Q.get(t).__webglFramebuffer;t.isWebGLCubeRenderTarget?(i=a[e],r=!0):i=t.isWebGLMultisampleRenderTarget?Q.get(t).__webglMultisampledFramebuffer:a,L.copy(t.viewport),R.copy(t.scissor),C=t.scissorTest}else L.copy(B).multiplyScalar(I).floor(),R.copy(z).multiplyScalar(I).floor(),C=F;if(w!==i&&(ft.bindFramebuffer(36160,i),w=i),Z.viewport(L),Z.scissor(R),Z.setScissorTest(C),r){var o=Q.get(t.texture);ft.framebufferTexture2D(36160,36064,34069+e,o.__webglTexture,n)}},this.readRenderTargetPixels=function(t,e,n,i,r,a,o){if(t&&t.isWebGLRenderTarget){var s=Q.get(t).__webglFramebuffer;if(t.isWebGLCubeRenderTarget&&void 0!==o&&(s=s[o]),s){var c=!1;s!==w&&(ft.bindFramebuffer(36160,s),c=!0);try{var l=t.texture,u=l.format,h=l.type;if(u!==A&&dt.convert(u)!==ft.getParameter(35739))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");var d=h===S&&(q.has("EXT_color_buffer_half_float")||X.isWebGL2&&q.has("EXT_color_buffer_float"));if(!(h===_||dt.convert(h)===ft.getParameter(35738)||h===M&&(X.isWebGL2||q.has("OES_texture_float")||q.has("WEBGL_color_buffer_float"))||d))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");36053===ft.checkFramebufferStatus(36160)?e>=0&&e<=t.width-i&&n>=0&&n<=t.height-r&&ft.readPixels(e,n,i,r,dt.convert(u),dt.convert(h),a):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{c&&ft.bindFramebuffer(36160,w)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")},this.copyFramebufferToTexture=function(t,e,n){void 0===n&&(n=0);var i=Math.pow(2,-n),r=Math.floor(e.image.width*i),a=Math.floor(e.image.height*i),o=dt.convert(e.format);K.setTexture2D(e,0),ft.copyTexImage2D(3553,n,o,t.x,t.y,r,a,0),Z.unbindTexture()},this.copyTextureToTexture=function(t,e,n,i){void 0===i&&(i=0);var r=e.image.width,a=e.image.height,o=dt.convert(n.format),s=dt.convert(n.type);K.setTexture2D(n,0),ft.pixelStorei(37440,n.flipY),ft.pixelStorei(37441,n.premultiplyAlpha),ft.pixelStorei(3317,n.unpackAlignment),e.isDataTexture?ft.texSubImage2D(3553,i,t.x,t.y,r,a,o,s,e.image.data):e.isCompressedTexture?ft.compressedTexSubImage2D(3553,i,t.x,t.y,e.mipmaps[0].width,e.mipmaps[0].height,o,e.mipmaps[0].data):ft.texSubImage2D(3553,i,t.x,t.y,o,s,e.image),0===i&&n.generateMipmaps&&ft.generateMipmap(3553),Z.unbindTexture()},this.initTexture=function(t){K.setTexture2D(t,0),Z.unbindTexture()},this.resetState=function(){Z.reset(),pt.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}function ha(t){ua.call(this,t)}aa.prototype=Object.assign(Object.create(Jn.prototype),{constructor:aa,isArrayCamera:!0}),oa.prototype=Object.assign(Object.create(Ae.prototype),{constructor:oa,isGroup:!0}),Object.assign(sa.prototype,{constructor:sa,getHandSpace:function(){return null===this._hand&&(this._hand=new oa,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand},getTargetRaySpace:function(){return null===this._targetRay&&(this._targetRay=new oa,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1),this._targetRay},getGripSpace:function(){return null===this._grip&&(this._grip=new oa,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1),this._grip},dispatchEvent:function(t){return null!==this._targetRay&&this._targetRay.dispatchEvent(t),null!==this._grip&&this._grip.dispatchEvent(t),null!==this._hand&&this._hand.dispatchEvent(t),this},disconnect:function(t){return this.dispatchEvent({type:"disconnected",data:t}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this},update:function(t,e,n){var i=null,r=null,a=null,o=this._targetRay,s=this._grip,c=this._hand;if(t&&"visible-blurred"!==e.session.visibilityState)if(c&&t.hand){a=!0;for(var l,u=ht(t.hand.values());!(l=u()).done;){var h=l.value,d=e.getJointPose(h,n);if(void 0===c.joints[h.jointName]){var p=new oa;p.matrixAutoUpdate=!1,p.visible=!1,c.joints[h.jointName]=p,c.add(p)}var f=c.joints[h.jointName];null!==d&&(f.matrix.fromArray(d.transform.matrix),f.matrix.decompose(f.position,f.rotation,f.scale),f.jointRadius=d.radius),f.visible=null!==d}var m=c.joints["index-finger-tip"],v=c.joints["thumb-tip"],g=m.position.distanceTo(v.position);c.inputState.pinching&&g>.025?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!c.inputState.pinching&&g<=.015&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else null!==o&&null!==(i=e.getPose(t.targetRaySpace,n))&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale)),null!==s&&t.gripSpace&&null!==(r=e.getPose(t.gripSpace,n))&&(s.matrix.fromArray(r.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale));return null!==o&&(o.visible=null!==i),null!==s&&(s.visible=null!==r),null!==c&&(c.visible=null!==a),this}}),Object.assign(ca.prototype,dt.prototype),ha.prototype=Object.assign(Object.create(ua.prototype),{constructor:ha,isWebGL1Renderer:!0});var da=function(){function t(t,e){Object.defineProperty(this,"isFogExp2",{value:!0}),this.name="",this.color=new Ze(t),this.density=void 0!==e?e:25e-5}var e=t.prototype;return e.clone=function(){return new t(this.color,this.density)},e.toJSON=function(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}},t}(),pa=function(){function t(t,e,n){Object.defineProperty(this,"isFog",{value:!0}),this.name="",this.color=new Ze(t),this.near=void 0!==e?e:1,this.far=void 0!==n?n:1e3}var e=t.prototype;return e.clone=function(){return new t(this.color,this.near,this.far)},e.toJSON=function(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}},t}(),fa=function(t){function e(){var e;return e=t.call(this)||this,Object.defineProperty(lt(e),"isScene",{value:!0}),e.type="Scene",e.background=null,e.environment=null,e.fog=null,e.overrideMaterial=null,e.autoUpdate=!0,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:lt(e)})),e}ct(e,t);var n=e.prototype;return n.copy=function(e,n){return t.prototype.copy.call(this,e,n),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this},n.toJSON=function(e){var n=t.prototype.toJSON.call(this,e);return null!==this.background&&(n.object.background=this.background.toJSON(e)),null!==this.environment&&(n.object.environment=this.environment.toJSON(e)),null!==this.fog&&(n.object.fog=this.fog.toJSON()),n},e}(Ae);function ma(t,e){this.array=t,this.stride=e,this.count=void 0!==t?t.length/e:0,this.usage=nt,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=gt.generateUUID()}Object.defineProperty(ma.prototype,"needsUpdate",{set:function(t){!0===t&&this.version++}}),Object.assign(ma.prototype,{isInterleavedBuffer:!0,onUploadCallback:function(){},setUsage:function(t){return this.usage=t,this},copy:function(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this},copyAt:function(t,e,n){t*=this.stride,n*=e.stride;for(var i=0,r=this.stride;it.far||e.push({distance:s,point:_a.clone(),uv:ke.getUV(_a,Ea,Aa,La,Ra,Ca,Pa,new yt),face:null,object:this})}},copy:function(t){return Ae.prototype.copy.call(this,t),void 0!==t.center&&this.center.copy(t.center),this.material=t.material,this}});var Da=new Lt,Na=new Lt;function Ba(){Ae.call(this),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}Ba.prototype=Object.assign(Object.create(Ae.prototype),{constructor:Ba,isLOD:!0,copy:function(t){Ae.prototype.copy.call(this,t,!1);for(var e=t.levels,n=0,i=e.length;n0){var n,i;for(n=1,i=e.length;n0){Da.setFromMatrixPosition(this.matrixWorld);var n=t.ray.origin.distanceTo(Da);this.getObjectForDistance(n).raycast(t,e)}},update:function(t){var e=this.levels;if(e.length>1){Da.setFromMatrixPosition(t.matrixWorld),Na.setFromMatrixPosition(this.matrixWorld);var n,i,r=Da.distanceTo(Na)/t.zoom;for(e[0].object.visible=!0,n=1,i=e.length;n=e[n].distance;n++)e[n-1].object.visible=!1,e[n].object.visible=!0;for(this._currentLevel=n-1;no)){u.applyMatrix4(this.matrixWorld);var x=t.ray.origin.distanceTo(u);xt.far||e.push({distance:x,point:l.clone().applyMatrix4(this.matrixWorld),index:m,face:null,faceIndex:null,object:this})}}else for(var _=0,b=p.count-1;_o)){u.applyMatrix4(this.matrixWorld);var w=t.ray.origin.distanceTo(u);wt.far||e.push({distance:w,point:l.clone().applyMatrix4(this.matrixWorld),index:_,face:null,faceIndex:null,object:this})}}}else n.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}},updateMorphTargets:function(){var t=this.geometry;if(t.isBufferGeometry){var e=t.morphAttributes,n=Object.keys(e);if(n.length>0){var i=e[n[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var r=0,a=i.length;r0&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}});var ao=new Lt,oo=new Lt;function so(t,e){ro.call(this,t,e),this.type="LineSegments"}function co(t,e){ro.call(this,t,e),this.type="LineLoop"}function lo(t){Ke.call(this),this.type="PointsMaterial",this.color=new Ze(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.morphTargets=!1,this.setValues(t)}so.prototype=Object.assign(Object.create(ro.prototype),{constructor:so,isLineSegments:!0,computeLineDistances:function(){var t=this.geometry;if(t.isBufferGeometry)if(null===t.index){for(var e=t.attributes.position,n=[],i=0,r=e.count;ir.far)return;a.push({distance:l,distanceToRay:Math.sqrt(s),point:c,index:e,face:null,object:o})}}function go(t,e,n,i,r,a,o,s,c){wt.call(this,t,e,n,i,r,a,o,s,c),this.format=void 0!==o?o:E,this.minFilter=void 0!==a?a:g,this.magFilter=void 0!==r?r:g,this.generateMipmaps=!1;var l=this;"requestVideoFrameCallback"in t&&t.requestVideoFrameCallback((function e(){l.needsUpdate=!0,t.requestVideoFrameCallback(e)}))}function yo(t,e,n,i,r,a,o,s,c,l,u,h){wt.call(this,null,a,o,s,c,l,i,r,u,h),this.image={width:e,height:n},this.mipmaps=t,this.flipY=!1,this.generateMipmaps=!1}function xo(t,e,n,i,r,a,o,s,c){wt.call(this,t,e,n,i,r,a,o,s,c),this.needsUpdate=!0}function _o(t,e,n,i,r,a,o,s,c,l){if((l=void 0!==l?l:L)!==L&&l!==R)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&l===L&&(n=b),void 0===n&&l===R&&(n=T),wt.call(this,null,i,r,a,o,s,l,n,c),this.image={width:t,height:e},this.magFilter=void 0!==o?o:f,this.minFilter=void 0!==s?s:f,this.flipY=!1,this.generateMipmaps=!1}mo.prototype=Object.assign(Object.create(Ae.prototype),{constructor:mo,isPoints:!0,copy:function(t){return Ae.prototype.copy.call(this,t),this.material=t.material,this.geometry=t.geometry,this},raycast:function(t,e){var n=this.geometry,i=this.matrixWorld,r=t.params.Points.threshold;if(null===n.boundingSphere&&n.computeBoundingSphere(),po.copy(n.boundingSphere),po.applyMatrix4(i),po.radius+=r,!1!==t.ray.intersectsSphere(po)){uo.copy(i).invert(),ho.copy(t.ray).applyMatrix4(uo);var a=r/((this.scale.x+this.scale.y+this.scale.z)/3),o=a*a;if(n.isBufferGeometry){var s=n.index,c=n.attributes.position;if(null!==s)for(var l=s.array,u=0,h=l.length;u0){var i=e[n[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var r=0,a=i.length;r0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}),go.prototype=Object.assign(Object.create(wt.prototype),{constructor:go,clone:function(){return new this.constructor(this.image).copy(this)},isVideoTexture:!0,update:function(){var t=this.image;!1==="requestVideoFrameCallback"in t&&t.readyState>=t.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}),yo.prototype=Object.create(wt.prototype),yo.prototype.constructor=yo,yo.prototype.isCompressedTexture=!0,xo.prototype=Object.create(wt.prototype),xo.prototype.constructor=xo,xo.prototype.isCanvasTexture=!0,_o.prototype=Object.create(wt.prototype),_o.prototype.constructor=_o,_o.prototype.isDepthTexture=!0;var bo=function(t){function e(e,n,i,r){var a;void 0===e&&(e=1),void 0===n&&(n=8),void 0===i&&(i=0),void 0===r&&(r=2*Math.PI),(a=t.call(this)||this).type="CircleGeometry",a.parameters={radius:e,segments:n,thetaStart:i,thetaLength:r},n=Math.max(3,n);var o=[],s=[],c=[],l=[],u=new Lt,h=new yt;s.push(0,0,0),c.push(0,0,1),l.push(.5,.5);for(var d=0,p=3;d<=n;d++,p+=3){var f=i+d/n*r;u.x=e*Math.cos(f),u.y=e*Math.sin(f),s.push(u.x,u.y,u.z),c.push(0,0,1),h.x=(s[p]/e+1)/2,h.y=(s[p+1]/e+1)/2,l.push(h.x,h.y)}for(var m=1;m<=n;m++)o.push(m,m+1,0);return a.setIndex(o),a.setAttribute("position",new dn(s,3)),a.setAttribute("normal",new dn(c,3)),a.setAttribute("uv",new dn(l,2)),a}return ct(e,t),e}(Sn),wo=function(t){function e(e,n,i,r,a,o,s,c){var l;void 0===e&&(e=1),void 0===n&&(n=1),void 0===i&&(i=1),void 0===r&&(r=8),void 0===a&&(a=1),void 0===o&&(o=!1),void 0===s&&(s=0),void 0===c&&(c=2*Math.PI),(l=t.call(this)||this).type="CylinderGeometry",l.parameters={radiusTop:e,radiusBottom:n,height:i,radialSegments:r,heightSegments:a,openEnded:o,thetaStart:s,thetaLength:c};var u=lt(l);r=Math.floor(r),a=Math.floor(a);var h=[],d=[],p=[],f=[],m=0,v=[],g=i/2,y=0;function x(t){for(var i=m,a=new yt,o=new Lt,l=0,v=!0===t?e:n,x=!0===t?1:-1,_=1;_<=r;_++)d.push(0,g*x,0),p.push(0,x,0),f.push(.5,.5),m++;for(var b=m,w=0;w<=r;w++){var M=w/r*c+s,S=Math.cos(M),T=Math.sin(M);o.x=v*T,o.y=g*x,o.z=v*S,d.push(o.x,o.y,o.z),p.push(0,x,0),a.x=.5*S+.5,a.y=.5*T*x+.5,f.push(a.x,a.y),m++}for(var E=0;E0&&x(!0),n>0&&x(!1)),l.setIndex(h),l.setAttribute("position",new dn(d,3)),l.setAttribute("normal",new dn(p,3)),l.setAttribute("uv",new dn(f,2)),l}return ct(e,t),e}(Sn),Mo=function(t){function e(e,n,i,r,a,o,s){var c;return void 0===e&&(e=1),void 0===n&&(n=1),void 0===i&&(i=8),void 0===r&&(r=1),void 0===a&&(a=!1),void 0===o&&(o=0),void 0===s&&(s=2*Math.PI),(c=t.call(this,0,e,n,i,r,a,o,s)||this).type="ConeGeometry",c.parameters={radius:e,height:n,radialSegments:i,heightSegments:r,openEnded:a,thetaStart:o,thetaLength:s},c}return ct(e,t),e}(wo),So=function(t){function e(e,n,i,r){var a;void 0===i&&(i=1),void 0===r&&(r=0),(a=t.call(this)||this).type="PolyhedronGeometry",a.parameters={vertices:e,indices:n,radius:i,detail:r};var o=[],s=[];function c(t,e,n,i){for(var r=i+1,a=[],o=0;o<=r;o++){a[o]=[];for(var s=t.clone().lerp(n,o/r),c=e.clone().lerp(n,o/r),u=r-o,h=0;h<=u;h++)a[o][h]=0===h&&o===r?s:s.clone().lerp(c,h/u)}for(var d=0;d.9&&a<.1&&(e<.2&&(s[t+0]+=1),n<.2&&(s[t+2]+=1),i<.2&&(s[t+4]+=1))}}()}(),a.setAttribute("position",new dn(o,3)),a.setAttribute("normal",new dn(o.slice(),3)),a.setAttribute("uv",new dn(s,2)),0===r?a.computeVertexNormals():a.normalizeNormals(),a}return ct(e,t),e}(Sn),To=function(t){function e(e,n){var i;void 0===e&&(e=1),void 0===n&&(n=0);var r=(1+Math.sqrt(5))/2,a=1/r,o=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-a,-r,0,-a,r,0,a,-r,0,a,r,-a,-r,0,-a,r,0,a,-r,0,a,r,0,-r,0,-a,r,0,-a,-r,0,a,r,0,a];return(i=t.call(this,o,[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,n)||this).type="DodecahedronGeometry",i.parameters={radius:e,detail:n},i}return ct(e,t),e}(So),Eo=new Lt,Ao=new Lt,Lo=new Lt,Ro=new ke,Co=function(t){function e(e,n){var i;if((i=t.call(this)||this).type="EdgesGeometry",i.parameters={thresholdAngle:n},n=void 0!==n?n:1,!0===e.isGeometry)return console.error("THREE.EdgesGeometry no longer supports THREE.Geometry. Use THREE.BufferGeometry instead."),lt(i);for(var r=Math.pow(10,4),a=Math.cos(gt.DEG2RAD*n),o=e.getIndex(),s=e.getAttribute("position"),c=o?o.count:s.count,l=[0,0,0],u=["a","b","c"],h=new Array(3),d={},p=[],f=0;f80*n){i=a=t[0],r=o=t[1];for(var f=n;fa&&(a=s),c>o&&(o=c);l=0!==(l=Math.max(a-i,o-r))?1/l:0}return Do(d,p,n,i,r,l),p};function Oo(t,e,n,i,r){var a,o;if(r===function(t,e,n,i){for(var r=0,a=e,o=n-i;a0)for(a=e;a=e;a-=i)o=$o(a,t[a],t[a+1],o);return o&&Xo(o,o.next)&&(ts(o),o=o.next),o}function Io(t,e){if(!t)return t;e||(e=t);var n,i=t;do{if(n=!1,i.steiner||!Xo(i,i.next)&&0!==qo(i.prev,i,i.next))i=i.next;else{if(ts(i),(i=e=i.prev)===i.next)break;n=!0}}while(n||i!==e);return e}function Do(t,e,n,i,r,a,o){if(t){!o&&a&&function(t,e,n,i){var r=t;do{null===r.z&&(r.z=ko(r.x,r.y,e,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,function(t){var e,n,i,r,a,o,s,c,l=1;do{for(n=t,t=null,a=null,o=0;n;){for(o++,i=n,s=0,e=0;e0||c>0&&i;)0!==s&&(0===c||!i||n.z<=i.z)?(r=n,n=n.nextZ,s--):(r=i,i=i.nextZ,c--),a?a.nextZ=r:t=r,r.prevZ=a,a=r;n=i}a.nextZ=null,l*=2}while(o>1)}(r)}(t,i,r,a);for(var s,c,l=t;t.prev!==t.next;)if(s=t.prev,c=t.next,a?Bo(t,i,r,a):No(t))e.push(s.i/n),e.push(t.i/n),e.push(c.i/n),ts(t),t=c.next,l=c.next;else if((t=c)===l){o?1===o?Do(t=zo(Io(t),e,n),e,n,i,r,a,2):2===o&&Fo(t,e,n,i,r,a):Do(Io(t),e,n,i,r,a,1);break}}}function No(t){var e=t.prev,n=t,i=t.next;if(qo(e,n,i)>=0)return!1;for(var r=t.next.next;r!==t.prev;){if(Wo(e.x,e.y,n.x,n.y,i.x,i.y,r.x,r.y)&&qo(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function Bo(t,e,n,i){var r=t.prev,a=t,o=t.next;if(qo(r,a,o)>=0)return!1;for(var s=r.xa.x?r.x>o.x?r.x:o.x:a.x>o.x?a.x:o.x,u=r.y>a.y?r.y>o.y?r.y:o.y:a.y>o.y?a.y:o.y,h=ko(s,c,e,n,i),d=ko(l,u,e,n,i),p=t.prevZ,f=t.nextZ;p&&p.z>=h&&f&&f.z<=d;){if(p!==t.prev&&p!==t.next&&Wo(r.x,r.y,a.x,a.y,o.x,o.y,p.x,p.y)&&qo(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,f!==t.prev&&f!==t.next&&Wo(r.x,r.y,a.x,a.y,o.x,o.y,f.x,f.y)&&qo(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(;p&&p.z>=h;){if(p!==t.prev&&p!==t.next&&Wo(r.x,r.y,a.x,a.y,o.x,o.y,p.x,p.y)&&qo(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;f&&f.z<=d;){if(f!==t.prev&&f!==t.next&&Wo(r.x,r.y,a.x,a.y,o.x,o.y,f.x,f.y)&&qo(f.prev,f,f.next)>=0)return!1;f=f.nextZ}return!0}function zo(t,e,n){var i=t;do{var r=i.prev,a=i.next.next;!Xo(r,a)&&Yo(r,i,i.next,a)&&Qo(r,a)&&Qo(a,r)&&(e.push(r.i/n),e.push(i.i/n),e.push(a.i/n),ts(i),ts(i.next),i=t=a),i=i.next}while(i!==t);return Io(i)}function Fo(t,e,n,i,r,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&jo(o,s)){var c=Ko(o,s);return o=Io(o,o.next),c=Io(c,c.next),Do(o,e,n,i,r,a),void Do(c,e,n,i,r,a)}s=s.next}o=o.next}while(o!==t)}function Ho(t,e){return t.x-e.x}function Go(t,e){if(e=function(t,e){var n,i=e,r=t.x,a=t.y,o=-1/0;do{if(a<=i.y&&a>=i.next.y&&i.next.y!==i.y){var s=i.x+(a-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=r&&s>o){if(o=s,s===r){if(a===i.y)return i;if(a===i.next.y)return i.next}n=i.x=i.x&&i.x>=u&&r!==i.x&&Wo(an.x||i.x===n.x&&Uo(n,i)))&&(n=i,d=c)),i=i.next}while(i!==l);return n}(t,e)){var n=Ko(e,t);Io(e,e.next),Io(n,n.next)}}function Uo(t,e){return qo(t.prev,t,e.prev)<0&&qo(e.next,t,t.next)<0}function ko(t,e,n,i,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-n)*r)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*r)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Vo(t){var e=t,n=t;do{(e.x=0&&(t-o)*(i-s)-(n-o)*(e-s)>=0&&(n-o)*(a-s)-(r-o)*(i-s)>=0}function jo(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&Yo(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}(t,e)&&(Qo(t,e)&&Qo(e,t)&&function(t,e){var n=t,i=!1,r=(t.x+e.x)/2,a=(t.y+e.y)/2;do{n.y>a!=n.next.y>a&&n.next.y!==n.y&&r<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next}while(n!==t);return i}(t,e)&&(qo(t.prev,t,e.prev)||qo(t,e.prev,e))||Xo(t,e)&&qo(t.prev,t,t.next)>0&&qo(e.prev,e,e.next)>0)}function qo(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function Xo(t,e){return t.x===e.x&&t.y===e.y}function Yo(t,e,n,i){var r=Jo(qo(t,e,n)),a=Jo(qo(t,e,i)),o=Jo(qo(n,i,t)),s=Jo(qo(n,i,e));return r!==a&&o!==s||(!(0!==r||!Zo(t,n,e))||(!(0!==a||!Zo(t,i,e))||(!(0!==o||!Zo(n,t,i))||!(0!==s||!Zo(n,e,i)))))}function Zo(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function Jo(t){return t>0?1:t<0?-1:0}function Qo(t,e){return qo(t.prev,t,t.next)<0?qo(t,e,t.next)>=0&&qo(t,t.prev,e)>=0:qo(t,e,t.prev)<0||qo(t,t.next,e)<0}function Ko(t,e){var n=new es(t.i,t.x,t.y),i=new es(e.i,e.x,e.y),r=t.next,a=e.prev;return t.next=e,e.prev=t,n.next=r,r.prev=n,i.next=n,n.prev=i,a.next=i,i.prev=a,i}function $o(t,e,n,i){var r=new es(t,e,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function ts(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function es(t,e,n){this.i=t,this.x=e,this.y=n,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}var ns={area:function(t){for(var e=t.length,n=0,i=e-1,r=0;r2&&t[e-1].equals(t[0])&&t.pop()}function rs(t,e){for(var n=0;nNumber.EPSILON){var d=Math.sqrt(u),p=Math.sqrt(c*c+l*l),f=e.x-s/d,m=e.y+o/d,v=((n.x-l/p-f)*l-(n.y+c/p-m)*c)/(o*l-s*c),g=(i=f+o*v-t.x)*i+(r=m+s*v-t.y)*r;if(g<=2)return new yt(i,r);a=Math.sqrt(g/2)}else{var y=!1;o>Number.EPSILON?c>Number.EPSILON&&(y=!0):o<-Number.EPSILON?c<-Number.EPSILON&&(y=!0):Math.sign(s)===Math.sign(l)&&(y=!0),y?(i=-s,r=o,a=Math.sqrt(u)):(i=o,r=s,a=Math.sqrt(u/2))}return new yt(i/a,r/a)}for(var z=[],F=0,H=R.length,G=H-1,U=F+1;F=0;gt--){for(var xt=gt/p,_t=u*Math.cos(xt*Math.PI/2),bt=h*Math.sin(xt*Math.PI/2)+d,wt=0,Mt=R.length;wt=0;){var i=n,r=n-1;r<0&&(r=t.length-1);for(var a=0,o=s+2*p;a=0?(t(g-s,m,u),h.subVectors(l,u)):(t(g+s,m,u),h.subVectors(u,l)),m-s>=0?(t(g,m-s,u),d.subVectors(l,u)):(t(g,m+s,u),d.subVectors(u,l)),c.crossVectors(h,d).normalize(),a.push(c.x,c.y,c.z),o.push(g,m)}for(var y=0;y0)&&f.push(E,A,R),(S!==i-1||l=i)){u.push(c.times[d]);for(var f=0;fa.tracks[v].times[0]&&(m=a.tracks[v].times[0]);for(var g=0;g=i.times[h]){var m=h*c+s,v=m+c-s;d=Os.arraySlice(i.values,m,v)}else{var g=i.createInterpolant(),y=s,x=c-s;g.evaluate(a),d=Os.arraySlice(g.resultBuffer,y,x)}"quaternion"===r&&(new At).fromArray(d).normalize().conjugate().toArray(d);for(var _=o.times.length,b=0;b<_;++b){var w=b*u+l;if("quaternion"===r)At.multiplyQuaternionsFlat(o.values,w,d,0,o.values,w);else for(var M=u-2*l,S=0;S=r)break t;var s=e[1];t=(r=e[--n-1]))break e}a=n,n=0}for(;n>>1;te;)--a;if(++a,0!==r||a!==i){r>=a&&(r=(a=Math.max(a,1))-1);var o=this.getValueSize();this.times=Os.arraySlice(n,r,a),this.values=Os.arraySlice(this.values,r*o,a*o)}return this},validate:function(){var t=!0,e=this.getValueSize();e-Math.floor(e)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);var n=this.times,i=this.values,r=n.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);for(var a=null,o=0;o!==r;o++){var s=n[o];if("number"==typeof s&&isNaN(s)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,s),t=!1;break}if(null!==a&&a>s){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,s,a),t=!1;break}a=s}if(void 0!==i&&Os.isTypedArray(i))for(var c=0,l=i.length;c!==l;++c){var u=i[c];if(isNaN(u)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,c,u),t=!1;break}}return t},optimize:function(){for(var t=Os.arraySlice(this.times),e=Os.arraySlice(this.values),n=this.getValueSize(),i=this.getInterpolation()===k,r=t.length-1,a=1,o=1;o0){t[a]=t[r];for(var g=r*n,y=a*n,x=0;x!==n;++x)e[y+x]=e[g+x];++a}return a!==t.length?(this.times=Os.arraySlice(t,0,a),this.values=Os.arraySlice(e,0,a*n)):(this.times=t,this.values=e),this},clone:function(){var t=Os.arraySlice(this.times,0),e=Os.arraySlice(this.values,0),n=new(0,this.constructor)(this.name,t,e);return n.createInterpolant=this.createInterpolant,n}}),Fs.prototype=Object.assign(Object.create(zs.prototype),{constructor:Fs,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:G,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),Hs.prototype=Object.assign(Object.create(zs.prototype),{constructor:Hs,ValueTypeName:"color"}),Gs.prototype=Object.assign(Object.create(zs.prototype),{constructor:Gs,ValueTypeName:"number"}),Us.prototype=Object.assign(Object.create(Is.prototype),{constructor:Us,interpolate_:function(t,e,n,i){for(var r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=(n-e)/(i-e),c=t*o,l=c+o;c!==l;c+=4)At.slerpFlat(r,0,a,c-o,a,c,s);return r}}),ks.prototype=Object.assign(Object.create(zs.prototype),{constructor:ks,ValueTypeName:"quaternion",DefaultInterpolation:U,InterpolantFactoryMethodLinear:function(t){return new Us(this.times,this.values,this.getValueSize(),t)},InterpolantFactoryMethodSmooth:void 0}),Vs.prototype=Object.assign(Object.create(zs.prototype),{constructor:Vs,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:G,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),Ws.prototype=Object.assign(Object.create(zs.prototype),{constructor:Ws,ValueTypeName:"vector"}),Object.assign(js,{parse:function(t){for(var e=[],n=t.tracks,i=1/(t.fps||1),r=0,a=n.length;r!==a;++r)e.push(qs(n[r]).scale(i));var o=new js(t.name,t.duration,e,t.blendMode);return o.uuid=t.uuid,o},toJSON:function(t){for(var e=[],n=t.tracks,i={name:t.name,duration:t.duration,tracks:e,uuid:t.uuid,blendMode:t.blendMode},r=0,a=n.length;r!==a;++r)e.push(zs.toJSON(n[r]));return i},CreateFromMorphTargetSequence:function(t,e,n,i){for(var r=e.length,a=[],o=0;o1){var l=c[1],u=i[l];u||(i[l]=u=[]),u.push(s)}}var h=[];for(var d in i)h.push(js.CreateFromMorphTargetSequence(d,i[d],e,n));return h},parseAnimation:function(t,e){if(!t)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;for(var n=function(t,e,n,i,r){if(0!==n.length){var a=[],o=[];Os.flattenJSON(n,a,o,i),0!==a.length&&r.push(new t(e,a,o))}},i=[],r=t.name||"default",a=t.fps||30,o=t.blendMode,s=t.length||-1,c=t.hierarchy||[],l=0;l0||0===t.search(/^data\:image\/jpeg/);r.format=i?E:A,r.needsUpdate=!0,void 0!==e&&e(r)}),n,i),r}}),Object.assign(ac.prototype,{getPoint:function(){return console.warn("THREE.Curve: .getPoint() not implemented."),null},getPointAt:function(t,e){var n=this.getUtoTmapping(t);return this.getPoint(n,e)},getPoints:function(t){void 0===t&&(t=5);for(var e=[],n=0;n<=t;n++)e.push(this.getPoint(n/t));return e},getSpacedPoints:function(t){void 0===t&&(t=5);for(var e=[],n=0;n<=t;n++)e.push(this.getPointAt(n/t));return e},getLength:function(){var t=this.getLengths();return t[t.length-1]},getLengths:function(t){if(void 0===t&&(t=this.arcLengthDivisions),this.cacheArcLengths&&this.cacheArcLengths.length===t+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var e,n=[],i=this.getPoint(0),r=0;n.push(0);for(var a=1;a<=t;a++)r+=(e=this.getPoint(a/t)).distanceTo(i),n.push(r),i=e;return this.cacheArcLengths=n,n},updateArcLengths:function(){this.needsUpdate=!0,this.getLengths()},getUtoTmapping:function(t,e){var n,i=this.getLengths(),r=0,a=i.length;n=e||t*i[a-1];for(var o,s=0,c=a-1;s<=c;)if((o=i[r=Math.floor(s+(c-s)/2)]-n)<0)s=r+1;else{if(!(o>0)){c=r;break}c=r-1}if(i[r=c]===n)return r/(a-1);var l=i[r];return(r+(n-l)/(i[r+1]-l))/(a-1)},getTangent:function(t,e){var n=1e-4,i=t-n,r=t+n;i<0&&(i=0),r>1&&(r=1);var a=this.getPoint(i),o=this.getPoint(r),s=e||(a.isVector2?new yt:new Lt);return s.copy(o).sub(a).normalize(),s},getTangentAt:function(t,e){var n=this.getUtoTmapping(t);return this.getTangent(n,e)},computeFrenetFrames:function(t,e){for(var n=new Lt,i=[],r=[],a=[],o=new Lt,s=new ne,c=0;c<=t;c++){var l=c/t;i[c]=this.getTangentAt(l,new Lt),i[c].normalize()}r[0]=new Lt,a[0]=new Lt;var u=Number.MAX_VALUE,h=Math.abs(i[0].x),d=Math.abs(i[0].y),p=Math.abs(i[0].z);h<=u&&(u=h,n.set(1,0,0)),d<=u&&(u=d,n.set(0,1,0)),p<=u&&n.set(0,0,1),o.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],o),a[0].crossVectors(i[0],r[0]);for(var f=1;f<=t;f++){if(r[f]=r[f-1].clone(),a[f]=a[f-1].clone(),o.crossVectors(i[f-1],i[f]),o.length()>Number.EPSILON){o.normalize();var m=Math.acos(gt.clamp(i[f-1].dot(i[f]),-1,1));r[f].applyMatrix4(s.makeRotationAxis(o,m))}a[f].crossVectors(i[f],r[f])}if(!0===e){var v=Math.acos(gt.clamp(r[0].dot(r[t]),-1,1));v/=t,i[0].dot(o.crossVectors(r[0],r[t]))>0&&(v=-v);for(var g=1;g<=t;g++)r[g].applyMatrix4(s.makeRotationAxis(i[g],v*g)),a[g].crossVectors(i[g],r[g])}return{tangents:i,normals:r,binormals:a}},clone:function(){return(new this.constructor).copy(this)},copy:function(t){return this.arcLengthDivisions=t.arcLengthDivisions,this},toJSON:function(){var t={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return t.arcLengthDivisions=this.arcLengthDivisions,t.type=this.type,t},fromJSON:function(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}}),oc.prototype=Object.create(ac.prototype),oc.prototype.constructor=oc,oc.prototype.isEllipseCurve=!0,oc.prototype.getPoint=function(t,e){for(var n=e||new yt,i=2*Math.PI,r=this.aEndAngle-this.aStartAngle,a=Math.abs(r)i;)r-=i;r0?0:(Math.floor(Math.abs(c)/o)+1)*o:0===l&&c===o-1&&(c=o-2,l=1),this.closed||c>0?n=a[(c-1)%o]:(lc.subVectors(a[0],a[1]).add(a[0]),n=lc);var u=a[c%o],h=a[(c+1)%o];if(this.closed||c+2i.length-2?i.length-1:a+1],u=i[a>i.length-3?i.length-1:a+2];return n.set(fc(o,s.x,c.x,l.x,u.x),fc(o,s.y,c.y,l.y,u.y)),n},Mc.prototype.copy=function(t){ac.prototype.copy.call(this,t),this.points=[];for(var e=0,n=t.points.length;e=e){var r=n[i]-e,a=this.curves[i],o=a.getLength(),s=0===o?0:1-r/o;return a.getPointAt(s)}i++}return null},getLength:function(){var t=this.getCurveLengths();return t[t.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var t=[],e=0,n=0,i=this.curves.length;n1&&!n[n.length-1].equals(n[0])&&n.push(n[0]),n},copy:function(t){ac.prototype.copy.call(this,t),this.curves=[];for(var e=0,n=t.curves.length;e0){var l=c.getPoint(0);l.equals(this.currentPoint)||this.lineTo(l.x,l.y)}this.curves.push(c);var u=c.getPoint(1);return this.currentPoint.copy(u),this},copy:function(t){return Tc.prototype.copy.call(this,t),this.currentPoint.copy(t.currentPoint),this},toJSON:function(){var t=Tc.prototype.toJSON.call(this);return t.currentPoint=this.currentPoint.toArray(),t},fromJSON:function(t){return Tc.prototype.fromJSON.call(this,t),this.currentPoint.fromArray(t.currentPoint),this}}),Ac.prototype=Object.assign(Object.create(Ec.prototype),{constructor:Ac,getPointsHoles:function(t){for(var e=[],n=0,i=this.holes.length;n0:i.vertexColors=t.vertexColors),void 0!==t.uniforms)for(var r in t.uniforms){var a=t.uniforms[r];switch(i.uniforms[r]={},a.type){case"t":i.uniforms[r].value=n(a.value);break;case"c":i.uniforms[r].value=(new Ze).setHex(a.value);break;case"v2":i.uniforms[r].value=(new yt).fromArray(a.value);break;case"v3":i.uniforms[r].value=(new Lt).fromArray(a.value);break;case"v4":i.uniforms[r].value=(new St).fromArray(a.value);break;case"m3":i.uniforms[r].value=(new xt).fromArray(a.value);break;case"m4":i.uniforms[r].value=(new ne).fromArray(a.value);break;default:i.uniforms[r].value=a.value}}if(void 0!==t.defines&&(i.defines=t.defines),void 0!==t.vertexShader&&(i.vertexShader=t.vertexShader),void 0!==t.fragmentShader&&(i.fragmentShader=t.fragmentShader),void 0!==t.extensions)for(var o in t.extensions)i.extensions[o]=t.extensions[o];if(void 0!==t.shading&&(i.flatShading=1===t.shading),void 0!==t.size&&(i.size=t.size),void 0!==t.sizeAttenuation&&(i.sizeAttenuation=t.sizeAttenuation),void 0!==t.map&&(i.map=n(t.map)),void 0!==t.matcap&&(i.matcap=n(t.matcap)),void 0!==t.alphaMap&&(i.alphaMap=n(t.alphaMap)),void 0!==t.bumpMap&&(i.bumpMap=n(t.bumpMap)),void 0!==t.bumpScale&&(i.bumpScale=t.bumpScale),void 0!==t.normalMap&&(i.normalMap=n(t.normalMap)),void 0!==t.normalMapType&&(i.normalMapType=t.normalMapType),void 0!==t.normalScale){var s=t.normalScale;!1===Array.isArray(s)&&(s=[s,s]),i.normalScale=(new yt).fromArray(s)}return void 0!==t.displacementMap&&(i.displacementMap=n(t.displacementMap)),void 0!==t.displacementScale&&(i.displacementScale=t.displacementScale),void 0!==t.displacementBias&&(i.displacementBias=t.displacementBias),void 0!==t.roughnessMap&&(i.roughnessMap=n(t.roughnessMap)),void 0!==t.metalnessMap&&(i.metalnessMap=n(t.metalnessMap)),void 0!==t.emissiveMap&&(i.emissiveMap=n(t.emissiveMap)),void 0!==t.emissiveIntensity&&(i.emissiveIntensity=t.emissiveIntensity),void 0!==t.specularMap&&(i.specularMap=n(t.specularMap)),void 0!==t.envMap&&(i.envMap=n(t.envMap)),void 0!==t.envMapIntensity&&(i.envMapIntensity=t.envMapIntensity),void 0!==t.reflectivity&&(i.reflectivity=t.reflectivity),void 0!==t.refractionRatio&&(i.refractionRatio=t.refractionRatio),void 0!==t.lightMap&&(i.lightMap=n(t.lightMap)),void 0!==t.lightMapIntensity&&(i.lightMapIntensity=t.lightMapIntensity),void 0!==t.aoMap&&(i.aoMap=n(t.aoMap)),void 0!==t.aoMapIntensity&&(i.aoMapIntensity=t.aoMapIntensity),void 0!==t.gradientMap&&(i.gradientMap=n(t.gradientMap)),void 0!==t.clearcoatMap&&(i.clearcoatMap=n(t.clearcoatMap)),void 0!==t.clearcoatRoughnessMap&&(i.clearcoatRoughnessMap=n(t.clearcoatRoughnessMap)),void 0!==t.clearcoatNormalMap&&(i.clearcoatNormalMap=n(t.clearcoatNormalMap)),void 0!==t.clearcoatNormalScale&&(i.clearcoatNormalScale=(new yt).fromArray(t.clearcoatNormalScale)),void 0!==t.transmission&&(i.transmission=t.transmission),void 0!==t.transmissionMap&&(i.transmissionMap=n(t.transmissionMap)),i},setTextures:function(t){return this.textures=t,this}});var Vc={decodeText:function(t){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(t);for(var e="",n=0,i=t.length;n0){var o=new Ys(e);(n=new ec(o)).setCrossOrigin(this.crossOrigin);for(var s=0,c=t.length;sNumber.EPSILON){if(l<0&&(o=e[a],c=-c,s=e[r],l=-l),t.ys.y)continue;if(t.y===o.y){if(t.x===o.x)return!0}else{var u=l*(t.x-o.x)-c*(t.y-o.y);if(0===u)return!0;if(u<0)continue;i=!i}}else{if(t.y!==o.y)continue;if(s.x<=t.x&&t.x<=o.x||o.x<=t.x&&t.x<=s.x)return!0}}return i}var r,a,o,s=ns.isClockWise,c=this.subPaths;if(0===c.length)return[];if(!0===e)return n(c);var l=[];if(1===c.length)return a=c[0],(o=new Ac).curves=a.curves,l.push(o),l;var u=!s(c[0].getPoints());u=t?!u:u;var h,d,p=[],f=[],m=[],v=0;f[v]=void 0,m[v]=[];for(var g=0,y=c.length;g1){for(var x=!1,_=[],b=0,w=f.length;b0&&(x||(m=p))}for(var C=0,P=f.length;C0){this.source.connect(this.filters[0]);for(var t=1,e=this.filters.length;t0){this.source.disconnect(this.filters[0]);for(var t=1,e=this.filters.length;t0&&this._mixBufferRegionAdditive(n,i,this._addIndex*e,1,e);for(var c=e,l=e+e;c!==l;++c)if(n[c]!==n[c+e]){o.setValue(n,i);break}},saveOriginalState:function(){var t=this.binding,e=this.buffer,n=this.valueSize,i=n*this._origIndex;t.getValue(e,i);for(var r=n,a=i;r!==a;++r)e[r]=e[i+r%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0},restoreOriginalState:function(){var t=3*this.valueSize;this.binding.setValue(this.buffer,t)},_setAdditiveIdentityNumeric:function(){for(var t=this._addIndex*this.valueSize,e=t+this.valueSize,n=t;n=.5)for(var a=0;a!==r;++a)t[e+a]=t[n+a]},_slerp:function(t,e,n,i){At.slerpFlat(t,e,t,e,t,n,i)},_slerpAdditive:function(t,e,n,i,r){var a=this._workIndex*r;At.multiplyQuaternionsFlat(t,a,t,e,t,n),At.slerpFlat(t,e,t,e,t,a,i)},_lerp:function(t,e,n,i,r){for(var a=1-i,o=0;o!==r;++o){var s=e+o;t[s]=t[s]*a+t[n+o]*i}},_lerpAdditive:function(t,e,n,i,r){for(var a=0;a!==r;++a){var o=e+a;t[o]=t[o]+t[n+a]*i}}});var Tl="\\[\\]\\.:\\/",El=new RegExp("[\\[\\]\\.:\\/]","g"),Al="[^\\[\\]\\.:\\/]",Ll="[^"+Tl.replace("\\.","")+"]",Rl=/((?:WC+[\/:])*)/.source.replace("WC",Al),Cl=/(WCOD+)?/.source.replace("WCOD",Ll),Pl=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Al),Ol=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Al),Il=new RegExp("^"+Rl+Cl+Pl+Ol+"$"),Dl=["material","materials","bones"];function Nl(t,e,n){var i=n||Bl.parseTrackName(e);this._targetGroup=t,this._bindings=t.subscribe_(e,i)}function Bl(t,e,n){this.path=e,this.parsedPath=n||Bl.parseTrackName(e),this.node=Bl.findNode(t,this.parsedPath.nodeName)||t,this.rootNode=t}function zl(){this.uuid=gt.generateUUID(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;var t={};this._indicesByUUID=t;for(var e=0,n=arguments.length;e!==n;++e)t[arguments[e].uuid]=e;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};var i=this;this.stats={objects:{get total(){return i._objects.length},get inUse(){return this.total-i.nCachedObjects_}},get bindingsPerObject(){return i._bindings.length}}}Object.assign(Nl.prototype,{getValue:function(t,e){this.bind();var n=this._targetGroup.nCachedObjects_,i=this._bindings[n];void 0!==i&&i.getValue(t,e)},setValue:function(t,e){for(var n=this._bindings,i=this._targetGroup.nCachedObjects_,r=n.length;i!==r;++i)n[i].setValue(t,e)},bind:function(){for(var t=this._bindings,e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].bind()},unbind:function(){for(var t=this._bindings,e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].unbind()}}),Object.assign(Bl,{Composite:Nl,create:function(t,e,n){return t&&t.isAnimationObjectGroup?new Bl.Composite(t,e,n):new Bl(t,e,n)},sanitizeNodeName:function(t){return t.replace(/\s/g,"_").replace(El,"")},parseTrackName:function(t){var e=Il.exec(t);if(!e)throw new Error("PropertyBinding: Cannot parse trackName: "+t);var n={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(void 0!==i&&-1!==i){var r=n.nodeName.substring(i+1);-1!==Dl.indexOf(r)&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=r)}if(null===n.propertyName||0===n.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return n},findNode:function(t,e){if(!e||""===e||"."===e||-1===e||e===t.name||e===t.uuid)return t;if(t.skeleton){var n=t.skeleton.getBoneByName(e);if(void 0!==n)return n}if(t.children){var i=function t(n){for(var i=0;i=r){var u=r++,h=t[u];e[h.uuid]=l,t[l]=h,e[c]=u,t[u]=s;for(var d=0,p=i;d!==p;++d){var f=n[d],m=f[u],v=f[l];f[l]=m,f[u]=v}}}this.nCachedObjects_=r},uncache:function(){for(var t=this._objects,e=this._indicesByUUID,n=this._bindings,i=n.length,r=this.nCachedObjects_,a=t.length,o=0,s=arguments.length;o!==s;++o){var c=arguments[o],l=c.uuid,u=e[l];if(void 0!==u)if(delete e[l],u0&&(e[b.uuid]=u),t[u]=b,t.pop();for(var w=0,M=i;w!==M;++w){var S=n[w];S[u]=S[_],S.pop()}}}this.nCachedObjects_=r},subscribe_:function(t,e){var n=this._bindingsIndicesByPath,i=n[t],r=this._bindings;if(void 0!==i)return r[i];var a=this._paths,o=this._parsedPaths,s=this._objects,c=s.length,l=this.nCachedObjects_,u=new Array(c);i=r.length,n[t]=i,a.push(t),o.push(e),r.push(u);for(var h=l,d=s.length;h!==d;++h){var p=s[h];u[h]=new Bl(p,t,e)}return u},unsubscribe_:function(t){var e=this._bindingsIndicesByPath,n=e[t];if(void 0!==n){var i=this._paths,r=this._parsedPaths,a=this._bindings,o=a.length-1,s=a[o];e[t[o]]=n,a[n]=s,a.pop(),r[n]=r[o],r.pop(),i[n]=i[o],i.pop()}}});var Fl=function(){function t(t,e,n,i){void 0===n&&(n=null),void 0===i&&(i=e.blendMode),this._mixer=t,this._clip=e,this._localRoot=n,this.blendMode=i;for(var r=e.tracks,a=r.length,o=new Array(a),s={endingStart:V,endingEnd:V},c=0;c!==a;++c){var l=r[c].createInterpolant(null);o[c]=l,l.settings=s}this._interpolantSettings=s,this._interpolants=o,this._propertyBindings=new Array(a),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}var e=t.prototype;return e.play=function(){return this._mixer._activateAction(this),this},e.stop=function(){return this._mixer._deactivateAction(this),this.reset()},e.reset=function(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()},e.isRunning=function(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)},e.isScheduled=function(){return this._mixer._isActiveAction(this)},e.startAt=function(t){return this._startTime=t,this},e.setLoop=function(t,e){return this.loop=t,this.repetitions=e,this},e.setEffectiveWeight=function(t){return this.weight=t,this._effectiveWeight=this.enabled?t:0,this.stopFading()},e.getEffectiveWeight=function(){return this._effectiveWeight},e.fadeIn=function(t){return this._scheduleFading(t,0,1)},e.fadeOut=function(t){return this._scheduleFading(t,1,0)},e.crossFadeFrom=function(t,e,n){if(t.fadeOut(e),this.fadeIn(e),n){var i=this._clip.duration,r=t._clip.duration,a=r/i,o=i/r;t.warp(1,a,e),this.warp(o,1,e)}return this},e.crossFadeTo=function(t,e,n){return t.crossFadeFrom(this,e,n)},e.stopFading=function(){var t=this._weightInterpolant;return null!==t&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(t)),this},e.setEffectiveTimeScale=function(t){return this.timeScale=t,this._effectiveTimeScale=this.paused?0:t,this.stopWarping()},e.getEffectiveTimeScale=function(){return this._effectiveTimeScale},e.setDuration=function(t){return this.timeScale=this._clip.duration/t,this.stopWarping()},e.syncWith=function(t){return this.time=t.time,this.timeScale=t.timeScale,this.stopWarping()},e.halt=function(t){return this.warp(this._effectiveTimeScale,0,t)},e.warp=function(t,e,n){var i=this._mixer,r=i.time,a=this.timeScale,o=this._timeScaleInterpolant;null===o&&(o=i._lendControlInterpolant(),this._timeScaleInterpolant=o);var s=o.parameterPositions,c=o.sampleValues;return s[0]=r,s[1]=r+n,c[0]=t/a,c[1]=e/a,this},e.stopWarping=function(){var t=this._timeScaleInterpolant;return null!==t&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(t)),this},e.getMixer=function(){return this._mixer},e.getClip=function(){return this._clip},e.getRoot=function(){return this._localRoot||this._mixer._root},e._update=function(t,e,n,i){if(this.enabled){var r=this._startTime;if(null!==r){var a=(t-r)*n;if(a<0||0===n)return;this._startTime=null,e=n*a}e*=this._updateTimeScale(t);var o=this._updateTime(e),s=this._updateWeight(t);if(s>0){var c=this._interpolants,l=this._propertyBindings;switch(this.blendMode){case X:for(var u=0,h=c.length;u!==h;++u)c[u].evaluate(o),l[u].accumulateAdditive(s);break;case q:default:for(var d=0,p=c.length;d!==p;++d)c[d].evaluate(o),l[d].accumulate(i,s)}}}else this._updateWeight(t)},e._updateWeight=function(t){var e=0;if(this.enabled){e=this.weight;var n=this._weightInterpolant;if(null!==n){var i=n.evaluate(t)[0];e*=i,t>n.parameterPositions[1]&&(this.stopFading(),0===i&&(this.enabled=!1))}}return this._effectiveWeight=e,e},e._updateTimeScale=function(t){var e=0;if(!this.paused){e=this.timeScale;var n=this._timeScaleInterpolant;if(null!==n)e*=n.evaluate(t)[0],t>n.parameterPositions[1]&&(this.stopWarping(),0===e?this.paused=!0:this.timeScale=e)}return this._effectiveTimeScale=e,e},e._updateTime=function(t){var e=this._clip.duration,n=this.loop,i=this.time+t,r=this._loopCount,a=2202===n;if(0===t)return-1===r?i:a&&1==(1&r)?e-i:i;if(2200===n){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));t:{if(i>=e)i=e;else{if(!(i<0)){this.time=i;break t}i=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:t<0?-1:1})}}else{if(-1===r&&(t>=0?(r=0,this._setEndings(!0,0===this.repetitions,a)):this._setEndings(0===this.repetitions,!0,a)),i>=e||i<0){var o=Math.floor(i/e);i-=e*o,r+=Math.abs(o);var s=this.repetitions-r;if(s<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=t>0?e:0,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:t>0?1:-1});else{if(1===s){var c=t<0;this._setEndings(c,!c,a)}else this._setEndings(!1,!1,a);this._loopCount=r,this.time=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}else this.time=i;if(a&&1==(1&r))return e-i}return i},e._setEndings=function(t,e,n){var i=this._interpolantSettings;n?(i.endingStart=W,i.endingEnd=W):(i.endingStart=t?this.zeroSlopeAtStart?W:V:j,i.endingEnd=e?this.zeroSlopeAtEnd?W:V:j)},e._scheduleFading=function(t,e,n){var i=this._mixer,r=i.time,a=this._weightInterpolant;null===a&&(a=i._lendControlInterpolant(),this._weightInterpolant=a);var o=a.parameterPositions,s=a.sampleValues;return o[0]=r,s[0]=e,o[1]=r+t,s[1]=n,this},t}();function Hl(t){this._root=t,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}Hl.prototype=Object.assign(Object.create(dt.prototype),{constructor:Hl,_bindAction:function(t,e){var n=t._localRoot||this._root,i=t._clip.tracks,r=i.length,a=t._propertyBindings,o=t._interpolants,s=n.uuid,c=this._bindingsByRootAndName,l=c[s];void 0===l&&(l={},c[s]=l);for(var u=0;u!==r;++u){var h=i[u],d=h.name,p=l[d];if(void 0!==p)a[u]=p;else{if(void 0!==(p=a[u])){null===p._cacheIndex&&(++p.referenceCount,this._addInactiveBinding(p,s,d));continue}var f=e&&e._propertyBindings[u].binding.parsedPath;++(p=new Sl(Bl.create(n,d,f),h.ValueTypeName,h.getValueSize())).referenceCount,this._addInactiveBinding(p,s,d),a[u]=p}o[u].resultBuffer=p.buffer}},_activateAction:function(t){if(!this._isActiveAction(t)){if(null===t._cacheIndex){var e=(t._localRoot||this._root).uuid,n=t._clip.uuid,i=this._actionsByClip[n];this._bindAction(t,i&&i.knownActions[0]),this._addInactiveAction(t,n,e)}for(var r=t._propertyBindings,a=0,o=r.length;a!==o;++a){var s=r[a];0==s.useCount++&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(t)}},_deactivateAction:function(t){if(this._isActiveAction(t)){for(var e=t._propertyBindings,n=0,i=e.length;n!==i;++n){var r=e[n];0==--r.useCount&&(r.restoreOriginalState(),this._takeBackBinding(r))}this._takeBackAction(t)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;var t=this;this.stats={actions:{get total(){return t._actions.length},get inUse(){return t._nActiveActions}},bindings:{get total(){return t._bindings.length},get inUse(){return t._nActiveBindings}},controlInterpolants:{get total(){return t._controlInterpolants.length},get inUse(){return t._nActiveControlInterpolants}}}},_isActiveAction:function(t){var e=t._cacheIndex;return null!==e&&e=0;--e)t[e].stop();return this},update:function(t){t*=this.timeScale;for(var e=this._actions,n=this._nActiveActions,i=this.time+=t,r=Math.sign(t),a=this._accuIndex^=1,o=0;o!==n;++o){e[o]._update(i,t,r,a)}for(var s=this._bindings,c=this._nActiveBindings,l=0;l!==c;++l)s[l].apply(a);return this},setTime:function(t){this.time=0;for(var e=0;ethis.max.x||t.ythis.max.y)},e.containsBox=function(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y},e.getParameter=function(t,e){return void 0===e&&(console.warn("THREE.Box2: .getParameter() target is now required"),e=new yt),e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))},e.intersectsBox=function(t){return!(t.max.xthis.max.x||t.max.ythis.max.y)},e.clampPoint=function(t,e){return void 0===e&&(console.warn("THREE.Box2: .clampPoint() target is now required"),e=new yt),e.copy(t).clamp(this.min,this.max)},e.distanceToPoint=function(t){return Yl.copy(t).clamp(this.min,this.max).sub(t).length()},e.intersect=function(t){return this.min.max(t.min),this.max.min(t.max),this},e.union=function(t){return this.min.min(t.min),this.max.max(t.max),this},e.translate=function(t){return this.min.add(t),this.max.add(t),this},e.equals=function(t){return t.min.equals(this.min)&&t.max.equals(this.max)},t}(),Jl=new Lt,Ql=new Lt,Kl=function(){function t(t,e){this.start=void 0!==t?t:new Lt,this.end=void 0!==e?e:new Lt}var e=t.prototype;return e.set=function(t,e){return this.start.copy(t),this.end.copy(e),this},e.clone=function(){return(new this.constructor).copy(this)},e.copy=function(t){return this.start.copy(t.start),this.end.copy(t.end),this},e.getCenter=function(t){return void 0===t&&(console.warn("THREE.Line3: .getCenter() target is now required"),t=new Lt),t.addVectors(this.start,this.end).multiplyScalar(.5)},e.delta=function(t){return void 0===t&&(console.warn("THREE.Line3: .delta() target is now required"),t=new Lt),t.subVectors(this.end,this.start)},e.distanceSq=function(){return this.start.distanceToSquared(this.end)},e.distance=function(){return this.start.distanceTo(this.end)},e.at=function(t,e){return void 0===e&&(console.warn("THREE.Line3: .at() target is now required"),e=new Lt),this.delta(e).multiplyScalar(t).add(this.start)},e.closestPointToPointParameter=function(t,e){Jl.subVectors(t,this.start),Ql.subVectors(this.end,this.start);var n=Ql.dot(Ql),i=Ql.dot(Jl)/n;return e&&(i=gt.clamp(i,0,1)),i},e.closestPointToPoint=function(t,e,n){var i=this.closestPointToPointParameter(t,e);return void 0===n&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),n=new Lt),this.delta(n).multiplyScalar(i).add(this.start)},e.applyMatrix4=function(t){return this.start.applyMatrix4(t),this.end.applyMatrix4(t),this},e.equals=function(t){return t.start.equals(this.start)&&t.end.equals(this.end)},t}();function $l(t){Ae.call(this),this.material=t,this.render=function(){},this.hasPositions=!1,this.hasNormals=!1,this.hasColors=!1,this.hasUvs=!1,this.positionArray=null,this.normalArray=null,this.colorArray=null,this.uvArray=null,this.count=0}$l.prototype=Object.create(Ae.prototype),$l.prototype.constructor=$l,$l.prototype.isImmediateRenderObject=!0;var tu=new Lt,eu=function(t){function e(e,n){var i;(i=t.call(this)||this).light=e,i.light.updateMatrixWorld(),i.matrix=e.matrixWorld,i.matrixAutoUpdate=!1,i.color=n;for(var r=new Sn,a=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1],o=0,s=1;o<32;o++,s++){var c=o/32*Math.PI*2,l=s/32*Math.PI*2;a.push(Math.cos(c),Math.sin(c),1,Math.cos(l),Math.sin(l),1)}r.setAttribute("position",new dn(a,3));var u=new Ka({fog:!1,toneMapped:!1});return i.cone=new so(r,u),i.add(i.cone),i.update(),i}ct(e,t);var n=e.prototype;return n.dispose=function(){this.cone.geometry.dispose(),this.cone.material.dispose()},n.update=function(){this.light.updateMatrixWorld();var t=this.light.distance?this.light.distance:1e3,e=t*Math.tan(this.light.angle);this.cone.scale.set(e,e,t),tu.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(tu),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)},e}(Ae),nu=new Lt,iu=new ne,ru=new ne,au=function(t){function e(e){for(var n,i=ou(e),r=new Sn,a=[],o=[],s=new Ze(0,0,1),c=new Ze(0,1,0),l=0;l.99999)this.quaternion.set(0,0,0,1);else if(t.y<-.99999)this.quaternion.set(1,0,0,0);else{Ru.set(t.z,0,-t.x).normalize();var e=Math.acos(t.y);this.quaternion.setFromAxisAngle(Ru,e)}},n.setLength=function(t,e,n){void 0===e&&(e=.2*t),void 0===n&&(n=.2*e),this.line.scale.set(1,Math.max(1e-4,t-e),1),this.line.updateMatrix(),this.cone.scale.set(n,e,n),this.cone.position.y=t,this.cone.updateMatrix()},n.setColor=function(t){this.line.material.color.set(t),this.cone.material.color.set(t)},n.copy=function(e){return t.prototype.copy.call(this,e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this},e}(Ae),Pu=function(t){function e(e){var n;void 0===e&&(e=1);var i=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],r=new Sn;r.setAttribute("position",new dn(i,3)),r.setAttribute("color",new dn([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3));var a=new Ka({vertexColors:!0,toneMapped:!1});return(n=t.call(this,r,a)||this).type="AxesHelper",n}return ct(e,t),e}(so),Ou=new Float32Array(1),Iu=new Int32Array(Ou.buffer),Du={toHalfFloat:function(t){Ou[0]=t;var e=Iu[0],n=e>>16&32768,i=e>>12&2047,r=e>>23&255;return r<103?n:r>142?(n|=31744,n|=(255==r?0:1)&&8388607&e):r<113?n|=((i|=2048)>>114-r)+(i>>113-r&1):(n|=r-112<<10|i>>1,n+=1&i)}},Nu=Math.pow(2,8),Bu=[.125,.215,.35,.446,.526,.582],zu=5+Bu.length,Fu=20,Hu=((Su={})[3e3]=0,Su[3001]=1,Su[3002]=2,Su[3004]=3,Su[3005]=4,Su[3006]=5,Su[3007]=6,Su),Gu=new $e({side:1,depthWrite:!1,depthTest:!1}),Uu=new kn(new Wn,Gu),ku=new Nc,Vu=eh(),Wu=Vu._lodPlanes,ju=Vu._sizeLods,qu=Vu._sigmas,Xu=new Ze,Yu=null,Zu=(1+Math.sqrt(5))/2,Ju=1/Zu,Qu=[new Lt(1,1,1),new Lt(-1,1,1),new Lt(1,1,-1),new Lt(-1,1,-1),new Lt(0,Zu,Ju),new Lt(0,Zu,-Ju),new Lt(Ju,0,Zu),new Lt(-Ju,0,Zu),new Lt(Zu,Ju,0),new Lt(-Zu,Ju,0)];function Ku(t){var e=Math.max(t.r,t.g,t.b),n=Math.min(Math.max(Math.ceil(Math.log2(e)),-128),127);return t.multiplyScalar(Math.pow(2,-n)),(n+128)/255}var $u=function(){function t(t){var e,n,i;this._renderer=t,this._pingPongRenderTarget=null,this._blurMaterial=(e=Fu,n=new Float32Array(e),i=new Lt(0,1,0),new ws({name:"SphericalGaussianBlur",defines:{n:e},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i},inputEncoding:{value:Hu[3e3]},outputEncoding:{value:Hu[3e3]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})),this._equirectShader=null,this._cubemapShader=null,this._compileMaterial(this._blurMaterial)}var e=t.prototype;return e.fromScene=function(t,e,n,i){void 0===e&&(e=0),void 0===n&&(n=.1),void 0===i&&(i=100),Yu=this._renderer.getRenderTarget();var r=this._allocateTargets();return this._sceneToCubeUV(t,n,i,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r},e.fromEquirectangular=function(t){return this._fromTexture(t)},e.fromCubemap=function(t){return this._fromTexture(t)},e.compileCubemapShader=function(){null===this._cubemapShader&&(this._cubemapShader=ah(),this._compileMaterial(this._cubemapShader))},e.compileEquirectangularShader=function(){null===this._equirectShader&&(this._equirectShader=rh(),this._compileMaterial(this._equirectShader))},e.dispose=function(){this._blurMaterial.dispose(),null!==this._cubemapShader&&this._cubemapShader.dispose(),null!==this._equirectShader&&this._equirectShader.dispose();for(var t=0;t2?Nu:0,Nu,Nu),s.setRenderTarget(i),h&&s.render(Uu,r),s.render(t,r)}s.toneMapping=u,s.outputEncoding=l,s.autoClear=c},e._textureToCubeUV=function(t,e){var n=this._renderer;t.isCubeTexture?null==this._cubemapShader&&(this._cubemapShader=ah()):null==this._equirectShader&&(this._equirectShader=rh());var i=t.isCubeTexture?this._cubemapShader:this._equirectShader,r=new kn(Wu[0],i),a=i.uniforms;a.envMap.value=t,t.isCubeTexture||a.texelSize.value.set(1/t.image.width,1/t.image.height),a.inputEncoding.value=Hu[t.encoding],a.outputEncoding.value=Hu[e.texture.encoding],ih(e,0,0,3*Nu,2*Nu),n.setRenderTarget(e),n.render(r,ku)},e._applyPMREM=function(t){var e=this._renderer,n=e.autoClear;e.autoClear=!1;for(var i=1;iFu&&console.warn("sigmaRadians, "+r+", is too large and will clip, as it requested "+f+" samples when the maximum is set to "+Fu);for(var m=[],v=0,g=0;g4?i-8+4:0),3*b,2*b),s.setRenderTarget(e),s.render(l,ku)},t}();function th(t){return void 0!==t&&t.type===_&&(t.encoding===Y||t.encoding===Z||t.encoding===J)}function eh(){for(var t=[],e=[],n=[],i=8,r=0;r4?o=Bu[r-8+4-1]:0==r&&(o=0),n.push(o);for(var s=1/(a-1),c=-s/2,l=1+s/2,u=[c,c,l,c,l,l,c,c,l,l,c,l],h=new Float32Array(108),d=new Float32Array(72),p=new Float32Array(36),f=0;f<6;f++){var m=f%3*2/3-1,v=f>2?0:-1,g=[m,v,0,m+2/3,v,0,m+2/3,v+1,0,m,v,0,m+2/3,v+1,0,m,v+1,0];h.set(g,18*f),d.set(u,12*f);var y=[f,f,f,f,f,f];p.set(y,6*f)}var x=new Sn;x.setAttribute("position",new nn(h,3)),x.setAttribute("uv",new nn(d,2)),x.setAttribute("faceIndex",new nn(p,1)),t.push(x),i>4&&i--}return{_lodPlanes:t,_sizeLods:e,_sigmas:n}}function nh(t){var e=new Tt(3*Nu,3*Nu,t);return e.texture.mapping=l,e.texture.name="PMREM.cubeUv",e.scissorTest=!0,e}function ih(t,e,n,i,r){t.viewport.set(e,n,i,r),t.scissor.set(e,n,i,r)}function rh(){return new ws({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null},texelSize:{value:new yt(1,1)},inputEncoding:{value:Hu[3e3]},outputEncoding:{value:Hu[3e3]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function ah(){return new ws({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},inputEncoding:{value:Hu[3e3]},outputEncoding:{value:Hu[3e3]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function oh(t){console.warn("THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),pc.call(this,t),this.type="catmullrom",this.closed=!0}function sh(t){console.warn("THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),pc.call(this,t),this.type="catmullrom"}function ch(t){console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead."),pc.call(this,t),this.type="catmullrom"}ac.create=function(t,e){return console.log("THREE.Curve.create() has been deprecated"),t.prototype=Object.create(ac.prototype),t.prototype.constructor=t,t.prototype.getPoint=e,t},Object.assign(Ec.prototype,{fromPoints:function(t){return console.warn("THREE.Path: .fromPoints() has been renamed to .setFromPoints()."),this.setFromPoints(t)}}),oh.prototype=Object.create(pc.prototype),sh.prototype=Object.create(pc.prototype),ch.prototype=Object.create(pc.prototype),Object.assign(ch.prototype,{initFromArray:function(){console.error("THREE.Spline: .initFromArray() has been removed.")},getControlPointsArray:function(){console.error("THREE.Spline: .getControlPointsArray() has been removed.")},reparametrizeByArcLength:function(){console.error("THREE.Spline: .reparametrizeByArcLength() has been removed.")}}),du.prototype.setColors=function(){console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.")},au.prototype.update=function(){console.error("THREE.SkeletonHelper: update() no longer needs to be called.")},Object.assign(Js.prototype,{extractUrlBase:function(t){return console.warn("THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead."),Vc.extractUrlBase(t)}}),Js.Handlers={add:function(){console.error("THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.")},get:function(){console.error("THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.")}},Object.assign(Zl.prototype,{center:function(t){return console.warn("THREE.Box2: .center() has been renamed to .getCenter()."),this.getCenter(t)},empty:function(){return console.warn("THREE.Box2: .empty() has been renamed to .isEmpty()."),this.isEmpty()},isIntersectionBox:function(t){return console.warn("THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(t)},size:function(t){return console.warn("THREE.Box2: .size() has been renamed to .getSize()."),this.getSize(t)}}),Object.assign(Pt.prototype,{center:function(t){return console.warn("THREE.Box3: .center() has been renamed to .getCenter()."),this.getCenter(t)},empty:function(){return console.warn("THREE.Box3: .empty() has been renamed to .isEmpty()."),this.isEmpty()},isIntersectionBox:function(t){return console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(t)},isIntersectionSphere:function(t){return console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(t)},size:function(t){return console.warn("THREE.Box3: .size() has been renamed to .getSize()."),this.getSize(t)}}),Object.assign(Xt.prototype,{empty:function(){return console.warn("THREE.Sphere: .empty() has been renamed to .isEmpty()."),this.isEmpty()}}),ri.prototype.setFromMatrix=function(t){return console.warn("THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix()."),this.setFromProjectionMatrix(t)},Kl.prototype.center=function(t){return console.warn("THREE.Line3: .center() has been renamed to .getCenter()."),this.getCenter(t)},Object.assign(gt,{random16:function(){return console.warn("THREE.Math: .random16() has been deprecated. Use Math.random() instead."),Math.random()},nearestPowerOfTwo:function(t){return console.warn("THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo()."),gt.floorPowerOfTwo(t)},nextPowerOfTwo:function(t){return console.warn("THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo()."),gt.ceilPowerOfTwo(t)}}),Object.assign(xt.prototype,{flattenToArrayOffset:function(t,e){return console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(t,e)},multiplyVector3:function(t){return console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),t.applyMatrix3(this)},multiplyVector3Array:function(){console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.")},applyToBufferAttribute:function(t){return console.warn("THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead."),t.applyMatrix3(this)},applyToVector3Array:function(){console.error("THREE.Matrix3: .applyToVector3Array() has been removed.")},getInverse:function(t){return console.warn("THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(t).invert()}}),Object.assign(ne.prototype,{extractPosition:function(t){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(t)},flattenToArrayOffset:function(t,e){return console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(t,e)},getPosition:function(){return console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead."),(new Lt).setFromMatrixColumn(this,3)},setRotationFromQuaternion:function(t){return console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(t)},multiplyToArray:function(){console.warn("THREE.Matrix4: .multiplyToArray() has been removed.")},multiplyVector3:function(t){return console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead."),t.applyMatrix4(this)},multiplyVector4:function(t){return console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),t.applyMatrix4(this)},multiplyVector3Array:function(){console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.")},rotateAxis:function(t){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),t.transformDirection(this)},crossVector:function(t){return console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),t.applyMatrix4(this)},translate:function(){console.error("THREE.Matrix4: .translate() has been removed.")},rotateX:function(){console.error("THREE.Matrix4: .rotateX() has been removed.")},rotateY:function(){console.error("THREE.Matrix4: .rotateY() has been removed.")},rotateZ:function(){console.error("THREE.Matrix4: .rotateZ() has been removed.")},rotateByAxis:function(){console.error("THREE.Matrix4: .rotateByAxis() has been removed.")},applyToBufferAttribute:function(t){return console.warn("THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead."),t.applyMatrix4(this)},applyToVector3Array:function(){console.error("THREE.Matrix4: .applyToVector3Array() has been removed.")},makeFrustum:function(t,e,n,i,r,a){return console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead."),this.makePerspective(t,e,i,n,r,a)},getInverse:function(t){return console.warn("THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(t).invert()}}),Pe.prototype.isIntersectionLine=function(t){return console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine()."),this.intersectsLine(t)},Object.assign(At.prototype,{multiplyVector3:function(t){return console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),t.applyQuaternion(this)},inverse:function(){return console.warn("THREE.Quaternion: .inverse() has been renamed to invert()."),this.invert()}}),Object.assign(ee.prototype,{isIntersectionBox:function(t){return console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(t)},isIntersectionPlane:function(t){return console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane()."),this.intersectsPlane(t)},isIntersectionSphere:function(t){return console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(t)}}),Object.assign(ke.prototype,{area:function(){return console.warn("THREE.Triangle: .area() has been renamed to .getArea()."),this.getArea()},barycoordFromPoint:function(t,e){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),this.getBarycoord(t,e)},midpoint:function(t){return console.warn("THREE.Triangle: .midpoint() has been renamed to .getMidpoint()."),this.getMidpoint(t)},normal:function(t){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),this.getNormal(t)},plane:function(t){return console.warn("THREE.Triangle: .plane() has been renamed to .getPlane()."),this.getPlane(t)}}),Object.assign(ke,{barycoordFromPoint:function(t,e,n,i,r){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),ke.getBarycoord(t,e,n,i,r)},normal:function(t,e,n,i){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),ke.getNormal(t,e,n,i)}}),Object.assign(Ac.prototype,{extractAllPoints:function(t){return console.warn("THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead."),this.extractPoints(t)},extrude:function(t){return console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead."),new as(this,t)},makeGeometry:function(t){return console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead."),new ds(this,t)}}),Object.assign(yt.prototype,{fromAttribute:function(t,e,n){return console.warn("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(t,e,n)},distanceToManhattan:function(t){return console.warn("THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(t)},lengthManhattan:function(){return console.warn("THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(Lt.prototype,{setEulerFromRotationMatrix:function(){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(t){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(t)},getScaleFromMatrix:function(t){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(t)},getColumnFromMatrix:function(t,e){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(e,t)},applyProjection:function(t){return console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead."),this.applyMatrix4(t)},fromAttribute:function(t,e,n){return console.warn("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(t,e,n)},distanceToManhattan:function(t){return console.warn("THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(t)},lengthManhattan:function(){return console.warn("THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(St.prototype,{fromAttribute:function(t,e,n){return console.warn("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(t,e,n)},lengthManhattan:function(){return console.warn("THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(Ae.prototype,{getChildByName:function(t){return console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName()."),this.getObjectByName(t)},renderDepth:function(){console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.")},translate:function(t,e){return console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead."),this.translateOnAxis(e,t)},getWorldRotation:function(){console.error("THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.")},applyMatrix:function(t){return console.warn("THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}}),Object.defineProperties(Ae.prototype,{eulerOrder:{get:function(){return console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order},set:function(t){console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order=t}},useQuaternion:{get:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")}}}),Object.assign(kn.prototype,{setDrawMode:function(){console.error("THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")}}),Object.defineProperties(kn.prototype,{drawMode:{get:function(){return console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode."),0},set:function(){console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")}}}),Object.defineProperties(Ba.prototype,{objects:{get:function(){return console.warn("THREE.LOD: .objects has been renamed to .levels."),this.levels}}}),Object.defineProperty(qa.prototype,"useVertexTexture",{get:function(){console.warn("THREE.Skeleton: useVertexTexture has been removed.")},set:function(){console.warn("THREE.Skeleton: useVertexTexture has been removed.")}}),ka.prototype.initBones=function(){console.error("THREE.SkinnedMesh: initBones() has been removed.")},Object.defineProperty(ac.prototype,"__arcLengthDivisions",{get:function(){return console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions."),this.arcLengthDivisions},set:function(t){console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions."),this.arcLengthDivisions=t}}),Jn.prototype.setLens=function(t,e){console.warn("THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup."),void 0!==e&&(this.filmGauge=e),this.setFocalLength(t)},Object.defineProperties(Lc.prototype,{onlyShadow:{set:function(){console.warn("THREE.Light: .onlyShadow has been removed.")}},shadowCameraFov:{set:function(t){console.warn("THREE.Light: .shadowCameraFov is now .shadow.camera.fov."),this.shadow.camera.fov=t}},shadowCameraLeft:{set:function(t){console.warn("THREE.Light: .shadowCameraLeft is now .shadow.camera.left."),this.shadow.camera.left=t}},shadowCameraRight:{set:function(t){console.warn("THREE.Light: .shadowCameraRight is now .shadow.camera.right."),this.shadow.camera.right=t}},shadowCameraTop:{set:function(t){console.warn("THREE.Light: .shadowCameraTop is now .shadow.camera.top."),this.shadow.camera.top=t}},shadowCameraBottom:{set:function(t){console.warn("THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom."),this.shadow.camera.bottom=t}},shadowCameraNear:{set:function(t){console.warn("THREE.Light: .shadowCameraNear is now .shadow.camera.near."),this.shadow.camera.near=t}},shadowCameraFar:{set:function(t){console.warn("THREE.Light: .shadowCameraFar is now .shadow.camera.far."),this.shadow.camera.far=t}},shadowCameraVisible:{set:function(){console.warn("THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.")}},shadowBias:{set:function(t){console.warn("THREE.Light: .shadowBias is now .shadow.bias."),this.shadow.bias=t}},shadowDarkness:{set:function(){console.warn("THREE.Light: .shadowDarkness has been removed.")}},shadowMapWidth:{set:function(t){console.warn("THREE.Light: .shadowMapWidth is now .shadow.mapSize.width."),this.shadow.mapSize.width=t}},shadowMapHeight:{set:function(t){console.warn("THREE.Light: .shadowMapHeight is now .shadow.mapSize.height."),this.shadow.mapSize.height=t}}}),Object.defineProperties(nn.prototype,{length:{get:function(){return console.warn("THREE.BufferAttribute: .length has been deprecated. Use .count instead."),this.array.length}},dynamic:{get:function(){return console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.usage===it},set:function(){console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.setUsage(it)}}}),Object.assign(nn.prototype,{setDynamic:function(t){return console.warn("THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead."),this.setUsage(!0===t?it:nt),this},copyIndicesArray:function(){console.error("THREE.BufferAttribute: .copyIndicesArray() has been removed.")},setArray:function(){console.error("THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")}}),Object.assign(Sn.prototype,{addIndex:function(t){console.warn("THREE.BufferGeometry: .addIndex() has been renamed to .setIndex()."),this.setIndex(t)},addAttribute:function(t,e){return console.warn("THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute()."),e&&e.isBufferAttribute||e&&e.isInterleavedBufferAttribute?"index"===t?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),this.setIndex(e),this):this.setAttribute(t,e):(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.setAttribute(t,new nn(arguments[1],arguments[2])))},addDrawCall:function(t,e,n){void 0!==n&&console.warn("THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset."),console.warn("THREE.BufferGeometry: .addDrawCall() is now .addGroup()."),this.addGroup(t,e)},clearDrawCalls:function(){console.warn("THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups()."),this.clearGroups()},computeOffsets:function(){console.warn("THREE.BufferGeometry: .computeOffsets() has been removed.")},removeAttribute:function(t){return console.warn("THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute()."),this.deleteAttribute(t)},applyMatrix:function(t){return console.warn("THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}}),Object.defineProperties(Sn.prototype,{drawcalls:{get:function(){return console.error("THREE.BufferGeometry: .drawcalls has been renamed to .groups."),this.groups}},offsets:{get:function(){return console.warn("THREE.BufferGeometry: .offsets has been renamed to .groups."),this.groups}}}),Object.defineProperties(Wc.prototype,{maxInstancedCount:{get:function(){return console.warn("THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount."),this.instanceCount},set:function(t){console.warn("THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount."),this.instanceCount=t}}}),Object.defineProperties(Vl.prototype,{linePrecision:{get:function(){return console.warn("THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead."),this.params.Line.threshold},set:function(t){console.warn("THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead."),this.params.Line.threshold=t}}}),Object.defineProperties(ma.prototype,{dynamic:{get:function(){return console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead."),this.usage===it},set:function(t){console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead."),this.setUsage(t)}}}),Object.assign(ma.prototype,{setDynamic:function(t){return console.warn("THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead."),this.setUsage(!0===t?it:nt),this},setArray:function(){console.error("THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")}}),Object.assign(as.prototype,{getArrays:function(){console.error("THREE.ExtrudeGeometry: .getArrays() has been removed.")},addShapeList:function(){console.error("THREE.ExtrudeGeometry: .addShapeList() has been removed.")},addShape:function(){console.error("THREE.ExtrudeGeometry: .addShape() has been removed.")}}),Object.assign(fa.prototype,{dispose:function(){console.error("THREE.Scene: .dispose() has been removed.")}}),Object.defineProperties(Gl.prototype,{dynamic:{set:function(){console.warn("THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.")}},onUpdate:{value:function(){return console.warn("THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead."),this}}}),Object.defineProperties(Ke.prototype,{wrapAround:{get:function(){console.warn("THREE.Material: .wrapAround has been removed.")},set:function(){console.warn("THREE.Material: .wrapAround has been removed.")}},overdraw:{get:function(){console.warn("THREE.Material: .overdraw has been removed.")},set:function(){console.warn("THREE.Material: .overdraw has been removed.")}},wrapRGB:{get:function(){return console.warn("THREE.Material: .wrapRGB has been removed."),new Ze}},shading:{get:function(){console.error("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead.")},set:function(t){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=1===t}},stencilMask:{get:function(){return console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask},set:function(t){console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask=t}}}),Object.defineProperties(Ts.prototype,{metal:{get:function(){return console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead."),!1},set:function(){console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead")}}}),Object.defineProperties(Ss.prototype,{transparency:{get:function(){return console.warn("THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission."),this.transmission},set:function(t){console.warn("THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission."),this.transmission=t}}}),Object.defineProperties(Yn.prototype,{derivatives:{get:function(){return console.warn("THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives},set:function(t){console.warn("THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives=t}}}),Object.assign(ua.prototype,{clearTarget:function(t,e,n,i){console.warn("THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead."),this.setRenderTarget(t),this.clear(e,n,i)},animate:function(t){console.warn("THREE.WebGLRenderer: .animate() is now .setAnimationLoop()."),this.setAnimationLoop(t)},getCurrentRenderTarget:function(){return console.warn("THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget()."),this.getRenderTarget()},getMaxAnisotropy:function(){return console.warn("THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy()."),this.capabilities.getMaxAnisotropy()},getPrecision:function(){return console.warn("THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision."),this.capabilities.precision},resetGLState:function(){return console.warn("THREE.WebGLRenderer: .resetGLState() is now .state.reset()."),this.state.reset()},supportsFloatTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' )."),this.extensions.get("OES_texture_float")},supportsHalfFloatTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' )."),this.extensions.get("OES_texture_half_float")},supportsStandardDerivatives:function(){return console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' )."),this.extensions.get("OES_standard_derivatives")},supportsCompressedTextureS3TC:function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' )."),this.extensions.get("WEBGL_compressed_texture_s3tc")},supportsCompressedTexturePVRTC:function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' )."),this.extensions.get("WEBGL_compressed_texture_pvrtc")},supportsBlendMinMax:function(){return console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' )."),this.extensions.get("EXT_blend_minmax")},supportsVertexTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures."),this.capabilities.vertexTextures},supportsInstancedArrays:function(){return console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' )."),this.extensions.get("ANGLE_instanced_arrays")},enableScissorTest:function(t){console.warn("THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest()."),this.setScissorTest(t)},initMaterial:function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")},addPrePlugin:function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")},addPostPlugin:function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")},updateShadowMap:function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")},setFaceCulling:function(){console.warn("THREE.WebGLRenderer: .setFaceCulling() has been removed.")},allocTextureUnit:function(){console.warn("THREE.WebGLRenderer: .allocTextureUnit() has been removed.")},setTexture:function(){console.warn("THREE.WebGLRenderer: .setTexture() has been removed.")},setTexture2D:function(){console.warn("THREE.WebGLRenderer: .setTexture2D() has been removed.")},setTextureCube:function(){console.warn("THREE.WebGLRenderer: .setTextureCube() has been removed.")},getActiveMipMapLevel:function(){return console.warn("THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel()."),this.getActiveMipmapLevel()}}),Object.defineProperties(ua.prototype,{shadowMapEnabled:{get:function(){return this.shadowMap.enabled},set:function(t){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled."),this.shadowMap.enabled=t}},shadowMapType:{get:function(){return this.shadowMap.type},set:function(t){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type."),this.shadowMap.type=t}},shadowMapCullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")}},context:{get:function(){return console.warn("THREE.WebGLRenderer: .context has been removed. Use .getContext() instead."),this.getContext()}},vr:{get:function(){return console.warn("THREE.WebGLRenderer: .vr has been renamed to .xr"),this.xr}},gammaInput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead."),!1},set:function(){console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.")}},gammaOutput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),!1},set:function(t){console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),this.outputEncoding=!0===t?Z:Y}},toneMappingWhitePoint:{get:function(){return console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed."),1},set:function(){console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.")}}}),Object.defineProperties(ea.prototype,{cullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")}},renderReverseSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")}},renderSingleSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")}}}),Object.defineProperties(Tt.prototype,{wrapS:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS},set:function(t){console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS=t}},wrapT:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT},set:function(t){console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT=t}},magFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter},set:function(t){console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter=t}},minFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter},set:function(t){console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter=t}},anisotropy:{get:function(){return console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy},set:function(t){console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy=t}},offset:{get:function(){return console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset},set:function(t){console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset=t}},repeat:{get:function(){return console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat},set:function(t){console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat=t}},format:{get:function(){return console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format},set:function(t){console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format=t}},type:{get:function(){return console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type},set:function(t){console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type=t}},generateMipmaps:{get:function(){return console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps},set:function(t){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps=t}}}),Object.defineProperties(gl.prototype,{load:{value:function(t){console.warn("THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.");var e=this;return(new rl).load(t,(function(t){e.setBuffer(t)})),this}},startTime:{set:function(){console.warn("THREE.Audio: .startTime is now .play( delay ).")}}}),Ml.prototype.getData=function(){return console.warn("THREE.AudioAnalyser: .getData() is now .getFrequencyData()."),this.getFrequencyData()},Kn.prototype.updateCubeMap=function(t,e){return console.warn("THREE.CubeCamera: .updateCubeMap() is now .update()."),this.update(t,e)},Kn.prototype.clear=function(t,e,n,i){return console.warn("THREE.CubeCamera: .clear() is now .renderTarget.clear()."),this.renderTarget.clear(t,e,n,i)};var lh={merge:function(t,e,n){var i;console.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead."),e.isMesh&&(e.matrixAutoUpdate&&e.updateMatrix(),i=e.matrix,e=e.geometry),t.merge(e,i,n)},center:function(t){return console.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead."),t.center()}};_t.crossOrigin=void 0,_t.loadTexture=function(t,e,n,i){console.warn("THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.");var r=new rc;r.setCrossOrigin(this.crossOrigin);var a=r.load(t,n,void 0,i);return e&&(a.mapping=e),a},_t.loadTextureCube=function(t,e,n,i){console.warn("THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.");var r=new nc;r.setCrossOrigin(this.crossOrigin);var a=r.load(t,n,void 0,i);return e&&(a.mapping=e),a},_t.loadCompressedTexture=function(){console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")},_t.loadCompressedTextureCube=function(){console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")};var uh={createMultiMaterialObject:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")},detach:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")},attach:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")}};"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:n}})),"undefined"!=typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=n),t.ACESFilmicToneMapping=4,t.AddEquation=i,t.AddOperation=2,t.AdditiveAnimationBlendMode=X,t.AdditiveBlending=2,t.AlphaFormat=1021,t.AlwaysDepth=1,t.AlwaysStencilFunc=519,t.AmbientLight=Fc,t.AmbientLightProbe=ol,t.AnimationClip=js,t.AnimationLoader=$s,t.AnimationMixer=Hl,t.AnimationObjectGroup=zl,t.AnimationUtils=Os,t.ArcCurve=sc,t.ArrayCamera=aa,t.ArrowHelper=Cu,t.Audio=gl,t.AudioAnalyser=Ml,t.AudioContext=il,t.AudioListener=vl,t.AudioLoader=rl,t.AxesHelper=Pu,t.AxisHelper=function(t){return console.warn("THREE.AxisHelper has been renamed to THREE.AxesHelper."),new Pu(t)},t.BackSide=1,t.BasicDepthPacking=3200,t.BasicShadowMap=0,t.BinaryTextureLoader=function(t){return console.warn("THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader."),new ic(t)},t.Bone=Va,t.BooleanKeyframeTrack=Fs,t.BoundingBoxHelper=function(t,e){return console.warn("THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead."),new Eu(t,e)},t.Box2=Zl,t.Box3=Pt,t.Box3Helper=Au,t.BoxBufferGeometry=Wn,t.BoxGeometry=Wn,t.BoxHelper=Eu,t.BufferAttribute=nn,t.BufferGeometry=Sn,t.BufferGeometryLoader=qc,t.ByteType=1010,t.Cache=Xs,t.Camera=Zn,t.CameraHelper=_u,t.CanvasRenderer=function(){console.error("THREE.CanvasRenderer has been removed")},t.CanvasTexture=xo,t.CatmullRomCurve3=pc,t.CineonToneMapping=3,t.CircleBufferGeometry=bo,t.CircleGeometry=bo,t.ClampToEdgeWrapping=d,t.Clock=ul,t.ClosedSplineCurve3=oh,t.Color=Ze,t.ColorKeyframeTrack=Hs,t.CompressedTexture=yo,t.CompressedTextureLoader=tc,t.ConeBufferGeometry=Mo,t.ConeGeometry=Mo,t.CubeCamera=Kn,t.CubeReflectionMapping=a,t.CubeRefractionMapping=o,t.CubeTexture=$n,t.CubeTextureLoader=nc,t.CubeUVReflectionMapping=l,t.CubeUVRefractionMapping=u,t.CubicBezierCurve=gc,t.CubicBezierCurve3=yc,t.CubicInterpolant=Ds,t.CullFaceBack=1,t.CullFaceFront=2,t.CullFaceFrontBack=3,t.CullFaceNone=0,t.Curve=ac,t.CurvePath=Tc,t.CustomBlending=5,t.CustomToneMapping=5,t.CylinderBufferGeometry=wo,t.CylinderGeometry=wo,t.Cylindrical=Xl,t.DataTexture=ei,t.DataTexture2DArray=Ti,t.DataTexture3D=Ei,t.DataTextureLoader=ic,t.DataUtils=Du,t.DecrementStencilOp=7683,t.DecrementWrapStencilOp=34056,t.DefaultLoadingManager=Zs,t.DepthFormat=L,t.DepthStencilFormat=R,t.DepthTexture=_o,t.DirectionalLight=zc,t.DirectionalLightHelper=gu,t.DiscreteInterpolant=Bs,t.DodecahedronBufferGeometry=To,t.DodecahedronGeometry=To,t.DoubleSide=2,t.DstAlphaFactor=206,t.DstColorFactor=208,t.DynamicBufferAttribute=function(t,e){return console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead."),new nn(t,e).setUsage(it)},t.DynamicCopyUsage=35050,t.DynamicDrawUsage=it,t.DynamicReadUsage=35049,t.EdgesGeometry=Co,t.EdgesHelper=function(t,e){return console.warn("THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead."),new so(new Co(t.geometry),new Ka({color:void 0!==e?e:16777215}))},t.EllipseCurve=oc,t.EqualDepth=4,t.EqualStencilFunc=514,t.EquirectangularReflectionMapping=s,t.EquirectangularRefractionMapping=c,t.Euler=ue,t.EventDispatcher=dt,t.ExtrudeBufferGeometry=as,t.ExtrudeGeometry=as,t.Face3=Je,t.Face4=function(t,e,n,i,r,a,o){return console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead."),new Je(t,e,n,r,a,o)},t.FaceColors=1,t.FileLoader=Ks,t.FlatShading=1,t.Float16BufferAttribute=hn,t.Float32Attribute=function(t,e){return console.warn("THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead."),new dn(t,e)},t.Float32BufferAttribute=dn,t.Float64Attribute=function(t,e){return console.warn("THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead."),new pn(t,e)},t.Float64BufferAttribute=pn,t.FloatType=M,t.Fog=pa,t.FogExp2=da,t.Font=tl,t.FontLoader=nl,t.FrontSide=0,t.Frustum=ri,t.GLBufferAttribute=kl,t.GLSL1="100",t.GLSL3=rt,t.GammaEncoding=J,t.GeometryUtils=lh,t.GreaterDepth=6,t.GreaterEqualDepth=5,t.GreaterEqualStencilFunc=518,t.GreaterStencilFunc=516,t.GridHelper=du,t.Group=oa,t.HalfFloatType=S,t.HemisphereLight=Rc,t.HemisphereLightHelper=hu,t.HemisphereLightProbe=al,t.IcosahedronBufferGeometry=ss,t.IcosahedronGeometry=ss,t.ImageBitmapLoader=Qc,t.ImageLoader=ec,t.ImageUtils=_t,t.ImmediateRenderObject=$l,t.IncrementStencilOp=7682,t.IncrementWrapStencilOp=34055,t.InstancedBufferAttribute=jc,t.InstancedBufferGeometry=Wc,t.InstancedInterleavedBuffer=Ul,t.InstancedMesh=Qa,t.Int16Attribute=function(t,e){return console.warn("THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead."),new sn(t,e)},t.Int16BufferAttribute=sn,t.Int32Attribute=function(t,e){return console.warn("THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead."),new ln(t,e)},t.Int32BufferAttribute=ln,t.Int8Attribute=function(t,e){return console.warn("THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead."),new rn(t,e)},t.Int8BufferAttribute=rn,t.IntType=1013,t.InterleavedBuffer=ma,t.InterleavedBufferAttribute=ya,t.Interpolant=Is,t.InterpolateDiscrete=G,t.InterpolateLinear=U,t.InterpolateSmooth=k,t.InvertStencilOp=5386,t.JSONLoader=function(){console.error("THREE.JSONLoader has been removed.")},t.KeepStencilOp=et,t.KeyframeTrack=zs,t.LOD=Ba,t.LatheBufferGeometry=cs,t.LatheGeometry=cs,t.Layers=pe,t.LensFlare=function(){console.error("THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js")},t.LessDepth=2,t.LessEqualDepth=3,t.LessEqualStencilFunc=515,t.LessStencilFunc=513,t.Light=Lc,t.LightProbe=Uc,t.Line=ro,t.Line3=Kl,t.LineBasicMaterial=Ka,t.LineCurve=xc,t.LineCurve3=_c,t.LineDashedMaterial=Cs,t.LineLoop=co,t.LinePieces=1,t.LineSegments=so,t.LineStrip=0,t.LinearEncoding=Y,t.LinearFilter=g,t.LinearInterpolant=Ns,t.LinearMipMapLinearFilter=1008,t.LinearMipMapNearestFilter=1007,t.LinearMipmapLinearFilter=x,t.LinearMipmapNearestFilter=y,t.LinearToneMapping=1,t.Loader=Js,t.LoaderUtils=Vc,t.LoadingManager=Ys,t.LogLuvEncoding=3003,t.LoopOnce=2200,t.LoopPingPong=2202,t.LoopRepeat=2201,t.LuminanceAlphaFormat=1025,t.LuminanceFormat=1024,t.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},t.Material=Ke,t.MaterialLoader=kc,t.Math=gt,t.MathUtils=gt,t.Matrix3=xt,t.Matrix4=ne,t.MaxEquation=104,t.Mesh=kn,t.MeshBasicMaterial=$e,t.MeshDepthMaterial=$r,t.MeshDistanceMaterial=ta,t.MeshFaceMaterial=function(t){return console.warn("THREE.MeshFaceMaterial has been removed. Use an Array instead."),t},t.MeshLambertMaterial=Ls,t.MeshMatcapMaterial=Rs,t.MeshNormalMaterial=As,t.MeshPhongMaterial=Ts,t.MeshPhysicalMaterial=Ss,t.MeshStandardMaterial=Ms,t.MeshToonMaterial=Es,t.MinEquation=103,t.MirroredRepeatWrapping=p,t.MixOperation=1,t.MultiMaterial=function(t){return void 0===t&&(t=[]),console.warn("THREE.MultiMaterial has been removed. Use an Array instead."),t.isMultiMaterial=!0,t.materials=t,t.clone=function(){return t.slice()},t},t.MultiplyBlending=4,t.MultiplyOperation=0,t.NearestFilter=f,t.NearestMipMapLinearFilter=1005,t.NearestMipMapNearestFilter=1004,t.NearestMipmapLinearFilter=v,t.NearestMipmapNearestFilter=m,t.NeverDepth=0,t.NeverStencilFunc=512,t.NoBlending=0,t.NoColors=0,t.NoToneMapping=0,t.NormalAnimationBlendMode=q,t.NormalBlending=1,t.NotEqualDepth=7,t.NotEqualStencilFunc=517,t.NumberKeyframeTrack=Gs,t.Object3D=Ae,t.ObjectLoader=Xc,t.ObjectSpaceNormalMap=1,t.OctahedronBufferGeometry=ls,t.OctahedronGeometry=ls,t.OneFactor=201,t.OneMinusDstAlphaFactor=207,t.OneMinusDstColorFactor=209,t.OneMinusSrcAlphaFactor=205,t.OneMinusSrcColorFactor=203,t.OrthographicCamera=Nc,t.PCFShadowMap=1,t.PCFSoftShadowMap=2,t.PMREMGenerator=$u,t.ParametricBufferGeometry=us,t.ParametricGeometry=us,t.Particle=function(t){return console.warn("THREE.Particle has been renamed to THREE.Sprite."),new Oa(t)},t.ParticleBasicMaterial=function(t){return console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial."),new lo(t)},t.ParticleSystem=function(t,e){return console.warn("THREE.ParticleSystem has been renamed to THREE.Points."),new mo(t,e)},t.ParticleSystemMaterial=function(t){return console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial."),new lo(t)},t.Path=Ec,t.PerspectiveCamera=Jn,t.Plane=Pe,t.PlaneBufferGeometry=si,t.PlaneGeometry=si,t.PlaneHelper=Lu,t.PointCloud=function(t,e){return console.warn("THREE.PointCloud has been renamed to THREE.Points."),new mo(t,e)},t.PointCloudMaterial=function(t){return console.warn("THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial."),new lo(t)},t.PointLight=Dc,t.PointLightHelper=su,t.Points=mo,t.PointsMaterial=lo,t.PolarGridHelper=pu,t.PolyhedronBufferGeometry=So,t.PolyhedronGeometry=So,t.PositionalAudio=wl,t.PropertyBinding=Bl,t.PropertyMixer=Sl,t.QuadraticBezierCurve=bc,t.QuadraticBezierCurve3=wc,t.Quaternion=At,t.QuaternionKeyframeTrack=ks,t.QuaternionLinearInterpolant=Us,t.REVISION=n,t.RGBADepthPacking=3201,t.RGBAFormat=A,t.RGBAIntegerFormat=1033,t.RGBA_ASTC_10x10_Format=37819,t.RGBA_ASTC_10x5_Format=37816,t.RGBA_ASTC_10x6_Format=37817,t.RGBA_ASTC_10x8_Format=37818,t.RGBA_ASTC_12x10_Format=37820,t.RGBA_ASTC_12x12_Format=37821,t.RGBA_ASTC_4x4_Format=37808,t.RGBA_ASTC_5x4_Format=37809,t.RGBA_ASTC_5x5_Format=37810,t.RGBA_ASTC_6x5_Format=37811,t.RGBA_ASTC_6x6_Format=37812,t.RGBA_ASTC_8x5_Format=37813,t.RGBA_ASTC_8x6_Format=37814,t.RGBA_ASTC_8x8_Format=37815,t.RGBA_BPTC_Format=36492,t.RGBA_ETC2_EAC_Format=H,t.RGBA_PVRTC_2BPPV1_Format=z,t.RGBA_PVRTC_4BPPV1_Format=B,t.RGBA_S3TC_DXT1_Format=P,t.RGBA_S3TC_DXT3_Format=O,t.RGBA_S3TC_DXT5_Format=I,t.RGBDEncoding=tt,t.RGBEEncoding=Q,t.RGBEFormat=1023,t.RGBFormat=E,t.RGBIntegerFormat=1032,t.RGBM16Encoding=$,t.RGBM7Encoding=K,t.RGB_ETC1_Format=36196,t.RGB_ETC2_Format=F,t.RGB_PVRTC_2BPPV1_Format=N,t.RGB_PVRTC_4BPPV1_Format=D,t.RGB_S3TC_DXT1_Format=C,t.RGFormat=1030,t.RGIntegerFormat=1031,t.RawShaderMaterial=ws,t.Ray=ee,t.Raycaster=Vl,t.RectAreaLight=Hc,t.RedFormat=1028,t.RedIntegerFormat=1029,t.ReinhardToneMapping=2,t.RepeatWrapping=h,t.ReplaceStencilOp=7681,t.ReverseSubtractEquation=102,t.RingBufferGeometry=hs,t.RingGeometry=hs,t.SRGB8_ALPHA8_ASTC_10x10_Format=37851,t.SRGB8_ALPHA8_ASTC_10x5_Format=37848,t.SRGB8_ALPHA8_ASTC_10x6_Format=37849,t.SRGB8_ALPHA8_ASTC_10x8_Format=37850,t.SRGB8_ALPHA8_ASTC_12x10_Format=37852,t.SRGB8_ALPHA8_ASTC_12x12_Format=37853,t.SRGB8_ALPHA8_ASTC_4x4_Format=37840,t.SRGB8_ALPHA8_ASTC_5x4_Format=37841,t.SRGB8_ALPHA8_ASTC_5x5_Format=37842,t.SRGB8_ALPHA8_ASTC_6x5_Format=37843,t.SRGB8_ALPHA8_ASTC_6x6_Format=37844,t.SRGB8_ALPHA8_ASTC_8x5_Format=37845,t.SRGB8_ALPHA8_ASTC_8x6_Format=37846,t.SRGB8_ALPHA8_ASTC_8x8_Format=37847,t.Scene=fa,t.SceneUtils=uh,t.ShaderChunk=ci,t.ShaderLib=ui,t.ShaderMaterial=Yn,t.ShadowMaterial=bs,t.Shape=Ac,t.ShapeBufferGeometry=ds,t.ShapeGeometry=ds,t.ShapePath=Kc,t.ShapeUtils=ns,t.ShortType=1011,t.Skeleton=qa,t.SkeletonHelper=au,t.SkinnedMesh=ka,t.SmoothShading=2,t.Sphere=Xt,t.SphereBufferGeometry=ps,t.SphereGeometry=ps,t.Spherical=ql,t.SphericalHarmonics3=Gc,t.Spline=ch,t.SplineCurve=Mc,t.SplineCurve3=sh,t.SpotLight=Oc,t.SpotLightHelper=eu,t.Sprite=Oa,t.SpriteMaterial=xa,t.SrcAlphaFactor=204,t.SrcAlphaSaturateFactor=210,t.SrcColorFactor=202,t.StaticCopyUsage=35046,t.StaticDrawUsage=nt,t.StaticReadUsage=35045,t.StereoCamera=ll,t.StreamCopyUsage=35042,t.StreamDrawUsage=35040,t.StreamReadUsage=35041,t.StringKeyframeTrack=Vs,t.SubtractEquation=101,t.SubtractiveBlending=3,t.TOUCH={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},t.TangentSpaceNormalMap=0,t.TetrahedronBufferGeometry=fs,t.TetrahedronGeometry=fs,t.TextBufferGeometry=ms,t.TextGeometry=ms,t.Texture=wt,t.TextureLoader=rc,t.TorusBufferGeometry=vs,t.TorusGeometry=vs,t.TorusKnotBufferGeometry=gs,t.TorusKnotGeometry=gs,t.Triangle=ke,t.TriangleFanDrawMode=2,t.TriangleStripDrawMode=1,t.TrianglesDrawMode=0,t.TubeBufferGeometry=ys,t.TubeGeometry=ys,t.UVMapping=r,t.Uint16Attribute=function(t,e){return console.warn("THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead."),new cn(t,e)},t.Uint16BufferAttribute=cn,t.Uint32Attribute=function(t,e){return console.warn("THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead."),new un(t,e)},t.Uint32BufferAttribute=un,t.Uint8Attribute=function(t,e){return console.warn("THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead."),new an(t,e)},t.Uint8BufferAttribute=an,t.Uint8ClampedAttribute=function(t,e){return console.warn("THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead."),new on(t,e)},t.Uint8ClampedBufferAttribute=on,t.Uniform=Gl,t.UniformsLib=li,t.UniformsUtils=Xn,t.UnsignedByteType=_,t.UnsignedInt248Type=T,t.UnsignedIntType=w,t.UnsignedShort4444Type=1017,t.UnsignedShort5551Type=1018,t.UnsignedShort565Type=1019,t.UnsignedShortType=b,t.VSMShadowMap=3,t.Vector2=yt,t.Vector3=Lt,t.Vector4=St,t.VectorKeyframeTrack=Ws,t.Vertex=function(t,e,n){return console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead."),new Lt(t,e,n)},t.VertexColors=2,t.VideoTexture=go,t.WebGL1Renderer=ha,t.WebGLCubeRenderTarget=ti,t.WebGLMultisampleRenderTarget=Et,t.WebGLRenderTarget=Tt,t.WebGLRenderTargetCube=function(t,e,n){return console.warn("THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options )."),new ti(t,n)},t.WebGLRenderer=ua,t.WebGLUtils=ra,t.WireframeGeometry=xs,t.WireframeHelper=function(t,e){return console.warn("THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead."),new so(new xs(t.geometry),new Ka({color:void 0!==e?e:16777215}))},t.WrapAroundEnding=j,t.XHRLoader=function(t){return console.warn("THREE.XHRLoader has been renamed to THREE.FileLoader."),new Ks(t)},t.ZeroCurvatureEnding=V,t.ZeroFactor=200,t.ZeroSlopeEnding=W,t.ZeroStencilOp=0,t.sRGBEncoding=Z,Object.defineProperty(t,"__esModule",{value:!0})})); +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// +// Orbit - left mouse / touch: one-finger move +// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish +// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move + +THREE.OrbitControls = function ( object, domElement ) { + + if ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter "domElement" is now mandatory.' ); + if ( domElement === document ) console.error( 'THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' ); + + this.object = object; + this.domElement = domElement; + + // Set to false to disable this control + this.enabled = true; + + // "target" sets the location of focus, where the object orbits around + this.target = new THREE.Vector3(); + + // How far you can dolly in and out ( PerspectiveCamera only ) + this.minDistance = 0; + this.maxDistance = Infinity; + + // How far you can zoom in and out ( OrthographicCamera only ) + this.minZoom = 0; + this.maxZoom = Infinity; + + // How far you can orbit vertically, upper and lower limits. + // Range is 0 to Math.PI radians. + this.minPolarAngle = 0; // radians + this.maxPolarAngle = Math.PI; // radians + + // How far you can orbit horizontally, upper and lower limits. + // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI ) + this.minAzimuthAngle = - Infinity; // radians + this.maxAzimuthAngle = Infinity; // radians + + // Set to true to enable damping (inertia) + // If damping is enabled, you must call controls.update() in your animation loop + this.enableDamping = false; + this.dampingFactor = 0.05; + + // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. + // Set to false to disable zooming + this.enableZoom = true; + this.zoomSpeed = 1.0; + + // Set to false to disable rotating + this.enableRotate = true; + this.rotateSpeed = 1.0; + + // Set to false to disable panning + this.enablePan = true; + this.panSpeed = 1.0; + this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up + this.keyPanSpeed = 7.0; // pixels moved per arrow key push + + // Set to true to automatically rotate around the target + // If auto-rotate is enabled, you must call controls.update() in your animation loop + this.autoRotate = false; + this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60 + + // The four arrow keys + this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; + + // Mouse buttons + this.mouseButtons = { LEFT: THREE.MOUSE.ROTATE, MIDDLE: THREE.MOUSE.DOLLY, RIGHT: THREE.MOUSE.PAN }; + + // Touch fingers + this.touches = { ONE: THREE.TOUCH.ROTATE, TWO: THREE.TOUCH.DOLLY_PAN }; + + // for reset + this.target0 = this.target.clone(); + this.position0 = this.object.position.clone(); + this.zoom0 = this.object.zoom; + + // the target DOM element for key events + this._domElementKeyEvents = null; + + // + // public methods + // + + this.getPolarAngle = function () { + + return spherical.phi; + + }; + + this.getAzimuthalAngle = function () { + + return spherical.theta; + + }; + + this.listenToKeyEvents = function ( domElement ) { + + domElement.addEventListener( 'keydown', onKeyDown ); + this._domElementKeyEvents = domElement; + + }; + + this.saveState = function () { + + scope.target0.copy( scope.target ); + scope.position0.copy( scope.object.position ); + scope.zoom0 = scope.object.zoom; + + }; + + this.reset = function () { + + scope.target.copy( scope.target0 ); + scope.object.position.copy( scope.position0 ); + scope.object.zoom = scope.zoom0; + + scope.object.updateProjectionMatrix(); + scope.dispatchEvent( changeEvent ); + + scope.update(); + + state = STATE.NONE; + + }; + + // this method is exposed, but perhaps it would be better if we can make it private... + this.update = function () { + + var offset = new THREE.Vector3(); + + // so camera.up is the orbit axis + var quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) ); + var quatInverse = quat.clone().invert(); + + var lastPosition = new THREE.Vector3(); + var lastQuaternion = new THREE.Quaternion(); + + var twoPI = 2 * Math.PI; + + return function update() { + + var position = scope.object.position; + + offset.copy( position ).sub( scope.target ); + + // rotate offset to "y-axis-is-up" space + offset.applyQuaternion( quat ); + + // angle from z-axis around y-axis + spherical.setFromVector3( offset ); + + if ( scope.autoRotate && state === STATE.NONE ) { + + rotateLeft( getAutoRotationAngle() ); + + } + + if ( scope.enableDamping ) { + + spherical.theta += sphericalDelta.theta * scope.dampingFactor; + spherical.phi += sphericalDelta.phi * scope.dampingFactor; + + } else { + + spherical.theta += sphericalDelta.theta; + spherical.phi += sphericalDelta.phi; + + } + + // restrict theta to be between desired limits + + var min = scope.minAzimuthAngle; + var max = scope.maxAzimuthAngle; + + if ( isFinite( min ) && isFinite( max ) ) { + + if ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI; + + if ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI; + + if ( min <= max ) { + + spherical.theta = Math.max( min, Math.min( max, spherical.theta ) ); + + } else { + + spherical.theta = ( spherical.theta > ( min + max ) / 2 ) ? + Math.max( min, spherical.theta ) : + Math.min( max, spherical.theta ); + + } + + } + + // restrict phi to be between desired limits + spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); + + spherical.makeSafe(); + + + spherical.radius *= scale; + + // restrict radius to be between desired limits + spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); + + // move target to panned location + + if ( scope.enableDamping === true ) { + + scope.target.addScaledVector( panOffset, scope.dampingFactor ); + + } else { + + scope.target.add( panOffset ); + + } + + offset.setFromSpherical( spherical ); + + // rotate offset back to "camera-up-vector-is-up" space + offset.applyQuaternion( quatInverse ); + + position.copy( scope.target ).add( offset ); + + scope.object.lookAt( scope.target ); + + if ( scope.enableDamping === true ) { + + sphericalDelta.theta *= ( 1 - scope.dampingFactor ); + sphericalDelta.phi *= ( 1 - scope.dampingFactor ); + + panOffset.multiplyScalar( 1 - scope.dampingFactor ); + + } else { + + sphericalDelta.set( 0, 0, 0 ); + + panOffset.set( 0, 0, 0 ); + + } + + scale = 1; + + // update condition is: + // min(camera displacement, camera rotation in radians)^2 > EPS + // using small-angle approximation cos(x/2) = 1 - x^2 / 8 + + if ( zoomChanged || + lastPosition.distanceToSquared( scope.object.position ) > EPS || + 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) { + + scope.dispatchEvent( changeEvent ); + + lastPosition.copy( scope.object.position ); + lastQuaternion.copy( scope.object.quaternion ); + zoomChanged = false; + + return true; + + } + + return false; + + }; + + }(); + + this.dispose = function () { + + scope.domElement.removeEventListener( 'contextmenu', onContextMenu ); + + scope.domElement.removeEventListener( 'pointerdown', onPointerDown ); + scope.domElement.removeEventListener( 'wheel', onMouseWheel ); + + scope.domElement.removeEventListener( 'touchstart', onTouchStart ); + scope.domElement.removeEventListener( 'touchend', onTouchEnd ); + scope.domElement.removeEventListener( 'touchmove', onTouchMove ); + + scope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove ); + scope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp ); + + + if ( scope._domElementKeyEvents !== null ) { + + scope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown ); + + } + + //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? + + }; + + // + // internals + // + + var scope = this; + + var changeEvent = { type: 'change' }; + var startEvent = { type: 'start' }; + var endEvent = { type: 'end' }; + + var STATE = { + NONE: - 1, + ROTATE: 0, + DOLLY: 1, + PAN: 2, + TOUCH_ROTATE: 3, + TOUCH_PAN: 4, + TOUCH_DOLLY_PAN: 5, + TOUCH_DOLLY_ROTATE: 6 + }; + + var state = STATE.NONE; + + var EPS = 0.000001; + + // current position in spherical coordinates + var spherical = new THREE.Spherical(); + var sphericalDelta = new THREE.Spherical(); + + var scale = 1; + var panOffset = new THREE.Vector3(); + var zoomChanged = false; + + var rotateStart = new THREE.Vector2(); + var rotateEnd = new THREE.Vector2(); + var rotateDelta = new THREE.Vector2(); + + var panStart = new THREE.Vector2(); + var panEnd = new THREE.Vector2(); + var panDelta = new THREE.Vector2(); + + var dollyStart = new THREE.Vector2(); + var dollyEnd = new THREE.Vector2(); + var dollyDelta = new THREE.Vector2(); + + function getAutoRotationAngle() { + + return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; + + } + + function getZoomScale() { + + return Math.pow( 0.95, scope.zoomSpeed ); + + } + + function rotateLeft( angle ) { + + sphericalDelta.theta -= angle; + + } + + function rotateUp( angle ) { + + sphericalDelta.phi -= angle; + + } + + var panLeft = function () { + + var v = new THREE.Vector3(); + + return function panLeft( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix + v.multiplyScalar( - distance ); + + panOffset.add( v ); + + }; + + }(); + + var panUp = function () { + + var v = new THREE.Vector3(); + + return function panUp( distance, objectMatrix ) { + + if ( scope.screenSpacePanning === true ) { + + v.setFromMatrixColumn( objectMatrix, 1 ); + + } else { + + v.setFromMatrixColumn( objectMatrix, 0 ); + v.crossVectors( scope.object.up, v ); + + } + + v.multiplyScalar( distance ); + + panOffset.add( v ); + + }; + + }(); + + // deltaX and deltaY are in pixels; right and down are positive + var pan = function () { + + var offset = new THREE.Vector3(); + + return function pan( deltaX, deltaY ) { + + var element = scope.domElement; + + if ( scope.object.isPerspectiveCamera ) { + + // perspective + var position = scope.object.position; + offset.copy( position ).sub( scope.target ); + var targetDistance = offset.length(); + + // half of the fov is center to top of screen + targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); + + // we use only clientHeight here so aspect ratio does not distort speed + panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); + panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); + + } else if ( scope.object.isOrthographicCamera ) { + + // orthographic + panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); + panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); + + } else { + + // camera neither orthographic nor perspective + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); + scope.enablePan = false; + + } + + }; + + }(); + + function dollyOut( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale /= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + function dollyIn( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale *= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + // + // event callbacks - update the object state + // + + function handleMouseDownRotate( event ) { + + rotateStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownDolly( event ) { + + dollyStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownPan( event ) { + + panStart.set( event.clientX, event.clientY ); + + } + + function handleMouseMoveRotate( event ) { + + rotateEnd.set( event.clientX, event.clientY ); + + rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); + + var element = scope.domElement; + + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height + + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleMouseMoveDolly( event ) { + + dollyEnd.set( event.clientX, event.clientY ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyIn( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleMouseMovePan( event ) { + + panEnd.set( event.clientX, event.clientY ); + + panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleMouseUp( /*event*/ ) { + + // no-op + + } + + function handleMouseWheel( event ) { + + if ( event.deltaY < 0 ) { + + dollyIn( getZoomScale() ); + + } else if ( event.deltaY > 0 ) { + + dollyOut( getZoomScale() ); + + } + + scope.update(); + + } + + function handleKeyDown( event ) { + + var needsUpdate = false; + + switch ( event.keyCode ) { + + case scope.keys.UP: + pan( 0, scope.keyPanSpeed ); + needsUpdate = true; + break; + + case scope.keys.BOTTOM: + pan( 0, - scope.keyPanSpeed ); + needsUpdate = true; + break; + + case scope.keys.LEFT: + pan( scope.keyPanSpeed, 0 ); + needsUpdate = true; + break; + + case scope.keys.RIGHT: + pan( - scope.keyPanSpeed, 0 ); + needsUpdate = true; + break; + + } + + if ( needsUpdate ) { + + // prevent the browser from scrolling on cursor keys + event.preventDefault(); + + scope.update(); + + } + + + } + + function handleTouchStartRotate( event ) { + + if ( event.touches.length == 1 ) { + + rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + rotateStart.set( x, y ); + + } + + } + + function handleTouchStartPan( event ) { + + if ( event.touches.length == 1 ) { + + panStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + panStart.set( x, y ); + + } + + } + + function handleTouchStartDolly( event ) { + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyStart.set( 0, distance ); + + } + + function handleTouchStartDollyPan( event ) { + + if ( scope.enableZoom ) handleTouchStartDolly( event ); + + if ( scope.enablePan ) handleTouchStartPan( event ); + + } + + function handleTouchStartDollyRotate( event ) { + + if ( scope.enableZoom ) handleTouchStartDolly( event ); + + if ( scope.enableRotate ) handleTouchStartRotate( event ); + + } + + function handleTouchMoveRotate( event ) { + + if ( event.touches.length == 1 ) { + + rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + rotateEnd.set( x, y ); + + } + + rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); + + var element = scope.domElement; + + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height + + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); + + rotateStart.copy( rotateEnd ); + + } + + function handleTouchMovePan( event ) { + + if ( event.touches.length == 1 ) { + + panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + panEnd.set( x, y ); + + } + + panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + } + + function handleTouchMoveDolly( event ) { + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyEnd.set( 0, distance ); + + dollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) ); + + dollyOut( dollyDelta.y ); + + dollyStart.copy( dollyEnd ); + + } + + function handleTouchMoveDollyPan( event ) { + + if ( scope.enableZoom ) handleTouchMoveDolly( event ); + + if ( scope.enablePan ) handleTouchMovePan( event ); + + } + + function handleTouchMoveDollyRotate( event ) { + + if ( scope.enableZoom ) handleTouchMoveDolly( event ); + + if ( scope.enableRotate ) handleTouchMoveRotate( event ); + + } + + function handleTouchEnd( /*event*/ ) { + + // no-op + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onPointerDown( event ) { + + if ( scope.enabled === false ) return; + + switch ( event.pointerType ) { + + case 'mouse': + case 'pen': + onMouseDown( event ); + break; + + // TODO touch + + } + + } + + function onPointerMove( event ) { + + if ( scope.enabled === false ) return; + + switch ( event.pointerType ) { + + case 'mouse': + case 'pen': + onMouseMove( event ); + break; + + // TODO touch + + } + + } + + function onPointerUp( event ) { + + switch ( event.pointerType ) { + + case 'mouse': + case 'pen': + onMouseUp( event ); + break; + + // TODO touch + + } + + } + + function onMouseDown( event ) { + + // Prevent the browser from scrolling. + event.preventDefault(); + + // Manually set the focus since calling preventDefault above + // prevents the browser from setting it automatically. + + scope.domElement.focus ? scope.domElement.focus() : window.focus(); + + var mouseAction; + + switch ( event.button ) { + + case 0: + + mouseAction = scope.mouseButtons.LEFT; + break; + + case 1: + + mouseAction = scope.mouseButtons.MIDDLE; + break; + + case 2: + + mouseAction = scope.mouseButtons.RIGHT; + break; + + default: + + mouseAction = - 1; + + } + + switch ( mouseAction ) { + + case THREE.MOUSE.DOLLY: + + if ( scope.enableZoom === false ) return; + + handleMouseDownDolly( event ); + + state = STATE.DOLLY; + + break; + + case THREE.MOUSE.ROTATE: + + if ( event.ctrlKey || event.metaKey || event.shiftKey ) { + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + } else { + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + } + + break; + + case THREE.MOUSE.PAN: + + if ( event.ctrlKey || event.metaKey || event.shiftKey ) { + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + } else { + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + } + + break; + + default: + + state = STATE.NONE; + + } + + if ( state !== STATE.NONE ) { + + scope.domElement.ownerDocument.addEventListener( 'pointermove', onPointerMove ); + scope.domElement.ownerDocument.addEventListener( 'pointerup', onPointerUp ); + + scope.dispatchEvent( startEvent ); + + } + + } + + function onMouseMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( state ) { + + case STATE.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleMouseMoveRotate( event ); + + break; + + case STATE.DOLLY: + + if ( scope.enableZoom === false ) return; + + handleMouseMoveDolly( event ); + + break; + + case STATE.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseMovePan( event ); + + break; + + } + + } + + function onMouseUp( event ) { + + scope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove ); + scope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp ); + + if ( scope.enabled === false ) return; + + handleMouseUp( event ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onMouseWheel( event ) { + + if ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return; + + event.preventDefault(); + event.stopPropagation(); + + scope.dispatchEvent( startEvent ); + + handleMouseWheel( event ); + + scope.dispatchEvent( endEvent ); + + } + + function onKeyDown( event ) { + + if ( scope.enabled === false || scope.enablePan === false ) return; + + handleKeyDown( event ); + + } + + function onTouchStart( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); // prevent scrolling + + switch ( event.touches.length ) { + + case 1: + + switch ( scope.touches.ONE ) { + + case THREE.TOUCH.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleTouchStartRotate( event ); + + state = STATE.TOUCH_ROTATE; + + break; + + case THREE.TOUCH.PAN: + + if ( scope.enablePan === false ) return; + + handleTouchStartPan( event ); + + state = STATE.TOUCH_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + break; + + case 2: + + switch ( scope.touches.TWO ) { + + case THREE.TOUCH.DOLLY_PAN: + + if ( scope.enableZoom === false && scope.enablePan === false ) return; + + handleTouchStartDollyPan( event ); + + state = STATE.TOUCH_DOLLY_PAN; + + break; + + case THREE.TOUCH.DOLLY_ROTATE: + + if ( scope.enableZoom === false && scope.enableRotate === false ) return; + + handleTouchStartDollyRotate( event ); + + state = STATE.TOUCH_DOLLY_ROTATE; + + break; + + default: + + state = STATE.NONE; + + } + + break; + + default: + + state = STATE.NONE; + + } + + if ( state !== STATE.NONE ) { + + scope.dispatchEvent( startEvent ); + + } + + } + + function onTouchMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); // prevent scrolling + event.stopPropagation(); + + switch ( state ) { + + case STATE.TOUCH_ROTATE: + + if ( scope.enableRotate === false ) return; + + handleTouchMoveRotate( event ); + + scope.update(); + + break; + + case STATE.TOUCH_PAN: + + if ( scope.enablePan === false ) return; + + handleTouchMovePan( event ); + + scope.update(); + + break; + + case STATE.TOUCH_DOLLY_PAN: + + if ( scope.enableZoom === false && scope.enablePan === false ) return; + + handleTouchMoveDollyPan( event ); + + scope.update(); + + break; + + case STATE.TOUCH_DOLLY_ROTATE: + + if ( scope.enableZoom === false && scope.enableRotate === false ) return; + + handleTouchMoveDollyRotate( event ); + + scope.update(); + + break; + + default: + + state = STATE.NONE; + + } + + } + + function onTouchEnd( event ) { + + if ( scope.enabled === false ) return; + + handleTouchEnd( event ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onContextMenu( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + } + + // + + scope.domElement.addEventListener( 'contextmenu', onContextMenu ); + + scope.domElement.addEventListener( 'pointerdown', onPointerDown ); + scope.domElement.addEventListener( 'wheel', onMouseWheel ); + + scope.domElement.addEventListener( 'touchstart', onTouchStart ); + scope.domElement.addEventListener( 'touchend', onTouchEnd ); + scope.domElement.addEventListener( 'touchmove', onTouchMove ); + + // force an update at start + + this.update(); + +}; + +THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; + + +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// This is very similar to OrbitControls, another set of touch behavior +// +// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate +// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish +// Pan - left mouse, or arrow keys / touch: one-finger move + +THREE.MapControls = function ( object, domElement ) { + + THREE.OrbitControls.call( this, object, domElement ); + + this.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up + + this.mouseButtons.LEFT = THREE.MOUSE.PAN; + this.mouseButtons.RIGHT = THREE.MOUSE.ROTATE; + + this.touches.ONE = THREE.TOUCH.PAN; + this.touches.TWO = THREE.TOUCH.DOLLY_ROTATE; + +}; + +THREE.MapControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.MapControls.prototype.constructor = THREE.MapControls; diff --git a/kaolin/experimental/dash3d/templates/home.html b/kaolin/experimental/dash3d/templates/home.html new file mode 100644 index 000000000..b033cff49 --- /dev/null +++ b/kaolin/experimental/dash3d/templates/home.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + Nvidia Kaolin Tensorboard 3D + + + + + + + + + + + + +
+ +
+ +
+
+

Meshes

+ {% with %} + {% set type='mesh' %} + {% set count=nmeshes %} + {% include 'render_row.html' %} + {% endwith %} +
+
+
+
+

Point Clouds

+ {% with %} + {% set type='pointcloud' %} + {% set count=npointclouds %} + {% include 'render_row.html' %} + {% endwith %} +
+
+
+
+ + diff --git a/kaolin/experimental/dash3d/templates/render_card.html b/kaolin/experimental/dash3d/templates/render_card.html new file mode 100644 index 000000000..47cb0738c --- /dev/null +++ b/kaolin/experimental/dash3d/templates/render_card.html @@ -0,0 +1,13 @@ +
+
+
+ +
+
+ +
+
+
+
+
+
diff --git a/kaolin/experimental/dash3d/templates/render_row.html b/kaolin/experimental/dash3d/templates/render_row.html new file mode 100644 index 000000000..a5e0c1dde --- /dev/null +++ b/kaolin/experimental/dash3d/templates/render_row.html @@ -0,0 +1,34 @@ +{# Note: number of render cards is limited to ensure decent performance for all cases. #} +
+ {% if count == 0 %} + No {{type}} content written. + {% elif count == 1 %} +
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+ {% elif count == 2 %} + {% for id in range(2) %} +
+ {% include 'render_card.html' %} +
+ {% endfor %} + {% else %} + {% for id in range(3) %} +
+ {% include 'render_card.html' %} +
+ {% endfor %} + {% endif %} +
diff --git a/kaolin/experimental/dash3d/util.py b/kaolin/experimental/dash3d/util.py new file mode 100644 index 000000000..c98697a7a --- /dev/null +++ b/kaolin/experimental/dash3d/util.py @@ -0,0 +1,325 @@ +# Copyright (c) 2019-2021, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import json +import logging +import numpy as np + +from pxr import Usd, UsdGeom +from tornado.websocket import WebSocketHandler +import tornado.gen + +import kaolin.io.usd +from kaolin.visualize import TimelapseParser + +logger = logging.getLogger(__name__) + + +def meshes_to_binary(vertices_list, faces_list): + """Encodes meshes in a binary format for transferring over the network. + + Args: + vertices_list: list of numpy array V x 3 (float32; will convert to this) + faces_list: list of numpy array F x 3 (int32; will convert to this) + + Returns: + bytes + """ + nmeshes = len(vertices_list) + if len(faces_list) != nmeshes: + raise RuntimeError( + 'Expected equal number of vertex and face lists, got: {}, {}'.format( + nmeshes, len(faces_list))) + + # TODO: if needed, specify consistent order in tobytes() + texture_mode = 0 # TODO: use to extend support with backward compatibility + tbd_info0 = 0 + tbd_info1 = 0 + binstr = np.array([nmeshes, texture_mode, tbd_info0, tbd_info1], dtype=np.int32).tobytes() + + for i in range(nmeshes): + vertices = vertices_list[i] + faces = faces_list[i] + # TODO: better to assume we always reshape USD data consistently before calling this + nvertices = vertices.size // 3 + nfaces = faces.size // 3 + binstr += np.array([nvertices, nfaces], dtype=np.int32).tobytes() + # TODO: ideally stream raw USD chunk without even parsing + binstr += vertices.astype(np.float32).tobytes() + binstr += faces.astype(np.int32).tobytes() + + return binstr + + +def point_clouds_to_binary(positions_list): + """Encodes point clouds in a binary format for transferring over the network. + + Args: + positions_list (list of numpy arrays): P x 3 (float32; will convert to this) + Returns: + bytes + """ + nclouds = len(positions_list) + texture_mode = 0 # TODO: use to extend support with backward compatibility + tbd_info0 = 0 + tbd_info1 = 0 + binstr = np.array([nclouds, texture_mode, tbd_info0, tbd_info1], dtype=np.int32).tobytes() + + for i in range(nclouds): + positions = positions_list[i] + # TODO: better to assume we always reshape USD data consistently before calling this + npts = positions.size // 3 + binstr += np.array([npts, 0], dtype=np.int32).tobytes() + # Also include bounding box, mins, then maxes + binstr += np.min(positions, axis=0).astype(np.float32).tobytes() + binstr += np.max(positions, axis=0).astype(np.float32).tobytes() + # TODO: avoid going through numpy; ideally stream raw USD chunk without even parsing + binstr += positions.astype(np.float32).tobytes() + + return binstr + + +class StreamingGeometryHelper(object): + """Helper class for parsing and preparing geometry updates to the client. + """ + def __init__(self, logdir): + self.logdir = logdir + self.parser = TimelapseParser(logdir) + + def get_directory_info(self): + self.parser.check_for_updates() + return self.parser.dir_info + + @staticmethod + def _find_snap_time(brackets, target_time): + """Returns the closest time to target_time out of bracketing time samples already provided by USD. + Args: + brackets (list of Number): list of length 2 of two time samples surrounding the target_time + target_time (Number): target time to find a snap for + Returns: + (Number) + """ + if abs(brackets[0] - target_time) < abs(brackets[1] - target_time): + return brackets[0] + return brackets[1] + + @staticmethod + def _does_snap_time_require_update(snap_time, current_time): + """ + Returns true if snap_time is sufficiently far from current_time to send geometry update. + Args: + snap_time (Number) + current_time (Number) + Returns: + (bool) + """ + if current_time is not None and abs(snap_time - current_time) < 0.5: + logger.info('Snap time {} too close to current_time {}; no geometry parsed'.format( + snap_time, current_time)) + return False + return True + + @staticmethod + def _pick_one_scene_path(fpath, scene_paths, type_str): + if len(scene_paths) == 0: + logger.warning('USD {} has no data of type {}'.format(fpath, type_str)) + return None + if len(scene_paths) > 1: + logger.warning('USD {} has more than one scene path of type {},' + 'only one will be shown: {}'.format(fpath, type_str, scene_paths)) + return scene_paths[0] + + def parse_encode_pointcloud(self, category, id, target_time, current_time=None): + """Retrieves pointcloud by its user-given category, id within batch and timecode. + Geometry is only parsed and encoded if target_time is sufficiently far from current_time. + Retrieved geometry is encoded in binary if an update is required. + + Note that this function *never* interpolates attributes in time, but snaps to + the closest time to avoid misrepresenting the Timelapse data. + + Args: + category (str): + id (int): + target_time (Number): + current_time (Number): + Return: + (binary_str, Number) - encoded geometry or None, and snap_time found + """ + fpath = self.parser.get_file_path("pointcloud", category, id) + if fpath is None: + return None, 0 + + scene_path = self._pick_one_scene_path( + fpath, kaolin.io.usd.get_pointcloud_scene_paths(fpath), "pointcloud") + if scene_path is None: + return None, 0 + + stage = Usd.Stage.Open(fpath) + time_brackets = kaolin.io.usd.get_pointcloud_bracketing_time_samples(stage, scene_path, target_time=target_time) + snap_time = StreamingGeometryHelper._find_snap_time(time_brackets, target_time) + if not StreamingGeometryHelper._does_snap_time_require_update(snap_time, current_time): + return None, current_time + + # TODO: is there overhead to creating stage? + points = kaolin.io.usd.import_pointcloud(fpath, scene_path, snap_time) + return point_clouds_to_binary([points.numpy()]), snap_time + + def parse_encode_mesh(self, category, id, target_time, current_time=None): + fpath = self.parser.get_file_path("mesh", category, id) + if fpath is None: + return None, 0 + + scene_path = self._pick_one_scene_path( + fpath, kaolin.io.usd.get_scene_paths(fpath, prim_types=['Mesh']), "mesh") + if scene_path is None: + return None, 0 + + # TODO: modify io.usd API to be usable here instead once we add support for textures + stage = Usd.Stage.Open(fpath) + mesh_prim = stage.GetPrimAtPath(scene_path) + mesh = UsdGeom.Mesh(mesh_prim) + if mesh is None: + return None, 0 + + # May only need to update vertices, not faces + vertices = None + triangles = None + time_brackets_verts = mesh.GetPointsAttr().GetBracketingTimeSamples(target_time) + time_brackets_faces = mesh.GetFaceVertexIndicesAttr().GetBracketingTimeSamples(target_time) + + snap_time_verts = StreamingGeometryHelper._find_snap_time(time_brackets_verts, target_time) + snap_time_faces = StreamingGeometryHelper._find_snap_time(time_brackets_faces, target_time) + + if StreamingGeometryHelper._does_snap_time_require_update(snap_time_verts, current_time): + snap_time = snap_time_verts + vertices = np.array(mesh.GetPointsAttr().Get(time=snap_time_verts), + dtype=np.float32) + + # TODO: support streaming update to only one of values + # if StreamingGeometryHelper._does_snap_time_require_update(snap_time_faces, current_time): + if vertices is not None: + triangles = np.array(mesh.GetFaceVertexIndicesAttr().Get(time=snap_time_faces), + dtype=np.int32) + + if triangles is None and vertices is None: + return None, current_time + + return meshes_to_binary([vertices], [triangles]), snap_time + + +class GeometryWebSocketHandler(WebSocketHandler): + """ Handles websocket communication with the JS client. + """ + + def initialize(self, helper): + """ Takes existing StreamingGeometryHelper as input.""" + # Note: this is correct, __init__ method should not be written for this + self.helper = helper + + def open(self): + """ Open socket connection and send information about available geometry.""" + logger.debug("Socket opened.") + message = {"type": "dirinfo", + "data": self.helper.get_directory_info()} + self.write_message(message, binary=False) + + @tornado.gen.coroutine + def on_message(self, message): + """ Handles new messages on the socket.""" + logger.debug("Received message of type {}: {}".format(type(message), message)) + + try: + msg = json.loads(message) + except Exception as e: + logger.error('Failed to decode incoming message: {}'.format(e)) + return + + if msg.get("type") == "geometry": + requests = msg.get("data") + if not requests: + logger.error('Message contained no data: {}'.format(msg)) + + logger.debug('Handling geometry request: {}'.format(msg)) + + for req in requests: + byte_message = yield self.get_requested_geometry(req) + self.maybe_write_message(byte_message, binary=True) + + @tornado.gen.coroutine + def get_requested_geometry(self, req): + """Finds, parses and encodes requested geometry if update is required; + returns None of geometry can't be found or no update is required (i.e. requested + timestamp is equal to the current timestamp on the client). + + Args: + req (dict): parsed client side json request with the following fields + type (str): required geometry type in "mesh", "pointcloud" + category (str): the user-provided category when writing the Timelapse + id (convertible to int): the id within the batch written by Timelapse + time (convertible to float): the timestamp of the requested geometry + view_id (int): id of the client side view to send result to + current_time (convertible to float): time of the currently displayed + geometry on the client side, used to skip unneeded updates (optional) + Returns: + None or binary string encoding: + - first 32bit int: type_id with 0 for mesh, 1 for pointcloud + - 2nd 32bit int: view_id from the request + - 3rd 32bit int: snap_time or the actual timestamp of the returned geometry + - 4th 32bit int: reserved for extra info in the future + - remaining bytes: encoding of the geometry + """ + byte_geometry = None + snap_time = 0 + type_id = 0 + + required_attr = ["type", "category", "id", "time", "view_id"] + for att in required_attr: + if att not in req: + logger.error("Request missing key {}: {}".format(att, req)) + return None + + req_id = int(req["id"]) + req_time = float(req["time"]) + req_current_time = float(req.get("current_time")) if "current_time" in req else None + + if req.get("type") == "mesh": + type_id = 0 + try: + byte_geometry, snap_time = self.helper.parse_encode_mesh( + req["category"], req_id, req_time, current_time=req_current_time) + except Exception as e: + logger.error('Failed to obtain mesh for request {}: {}'.format(req, e)) + elif req.get("type") == "pointcloud": + type_id = 1 + try: + byte_geometry, snap_time = self.helper.parse_encode_pointcloud( + req["category"], req_id, req_time, current_time=req_current_time) + except Exception as e: + logger.error('Failed to obtain pointcloud for request {}: {}'.format(req, e)) + else: + logger.error('Unsupported requested geometry type: {}'.format(req.get("type"))) + + if byte_geometry is None: + return None + + bininfo = np.array([type_id, req["view_id"], snap_time, 0], dtype=np.int32).tobytes() # TODO: order + return bininfo + byte_geometry + + @tornado.gen.coroutine + def maybe_write_message(self, byte_message, binary=True): + """ Writes message, unless it is None.""" + if byte_message is not None: + self.write_message(byte_message, binary=binary) + + def on_close(self): + logger.info("Socket closed.") diff --git a/kaolin/io/materials.py b/kaolin/io/materials.py index b86c35993..3386efa98 100644 --- a/kaolin/io/materials.py +++ b/kaolin/io/materials.py @@ -36,7 +36,7 @@ class Material: """ @abstractmethod def write_to_usd(self, file_path, scene_path, bound_prims=None, time=None, - usd_dir=None, texture_dir=None, texture_prefix=''): + texture_dir=None, texture_file_prefix='', **kwargs): pass @abstractmethod @@ -110,8 +110,8 @@ def __init__( }, } - def write_to_usd(self, file_path, scene_path, shader='UsdPreviewSurface', bound_prims=None, time=None, - texture_dir='', texture_file_prefix=''): + def write_to_usd(self, file_path, scene_path, bound_prims=None, time=None, + texture_dir='', texture_file_prefix='', shader='UsdPreviewSurface'): r"""Write material to USD. Textures will be written to disk in the format `{file_path}/{texture_dir}/{texture_file_prefix}{attr}.png` where `attr` is one of diff --git a/kaolin/io/usd.py b/kaolin/io/usd.py index e74cea750..b1963333a 100644 --- a/kaolin/io/usd.py +++ b/kaolin/io/usd.py @@ -16,6 +16,7 @@ and PointCloud representations are currently supported. """ +import itertools import os import re import warnings @@ -66,6 +67,7 @@ def _get_flattened_mesh_attributes(stage, scene_path, time): prim = stage.GetPrimAtPath(scene_path) if not prim: raise ValueError(f'No prim found at "{scene_path}".') + mesh_prims = [x for x in Usd.PrimRange(prim).AllPrims(prim) if UsdGeom.Mesh(x)] cur_first_idx_faces = 0 cur_first_idx_uvs = 0 @@ -172,7 +174,22 @@ def get_root(file_path): return stage.GetPseudoRoot().GetPath() -def get_scene_paths(file_path, scene_path_regex=None, prim_types=None): +def get_pointcloud_scene_paths(file_path): + r"""Returns all point cloud scene paths contained in specified file. Assumes that point + clouds are exported using this API. + + Args: + file_path (str): Path to usd file (\*.usd, \*.usda). + + Returns: + (list of str): List of filtered scene paths. + """ + # TODO(mshugrina): is passing prim_types='PointInstancer' the same as UsdGeom.PointInstancer(p) ? + return get_scene_paths(file_path, prim_types=['PointInstancer'], + conditional=lambda p: p.GetAttribute('primvars:kaolin_type').Get() == 'PointCloud') + + +def get_scene_paths(file_path, scene_path_regex=None, prim_types=None, conditional=lambda x: True): r"""Return all scene paths contained in specified file. Filter paths with regular expression in `scene_path_regex` if provided. @@ -181,6 +198,7 @@ def get_scene_paths(file_path, scene_path_regex=None, prim_types=None): scene_path_regex (str, optional): Optional regular expression used to select returned scene paths. prim_types (list of str, optional): Optional list of valid USD Prim types used to select scene paths. + conditional (function path: Bool): Custom conditionals to check Returns: (list of str): List of filtered scene paths. @@ -206,11 +224,32 @@ def get_scene_paths(file_path, scene_path_regex=None, prim_types=None): for p in stage.Traverse(): is_valid_prim_type = prim_types is None or p.GetTypeName().lower() in prim_types is_valid_scene_path = re.match(scene_path_regex, str(p.GetPath())) - if is_valid_prim_type and is_valid_scene_path: + passes_conditional = conditional(p) + if is_valid_prim_type and is_valid_scene_path and passes_conditional: scene_paths.append(p.GetPath()) return scene_paths +def get_authored_time_samples(file_path): + r""" + Returns *all* authored time samples within the USD, aggregated across all primitives. + + Args: + file_path (str): Path to usd file (\*.usd, \*.usda). + + Returns: + (list) + """ + stage = Usd.Stage.Open(file_path) + scene_paths = get_scene_paths(file_path) + res = set() + for scene_path in scene_paths: + prim = stage.GetPrimAtPath(scene_path) + attr = prim.GetAttributes() + res.update(set(itertools.chain.from_iterable([x.GetTimeSamples() for x in attr]))) + return sorted(res) + + def create_stage(file_path, up_axis='Y'): r"""Create a new USD file and return an empty stage. @@ -625,29 +664,42 @@ def import_pointclouds(file_path, scene_paths=None, times=None): torch.Size([100, 3]) """ assert os.path.exists(file_path) - stage = Usd.Stage.Open(file_path) - # If scene path not specified, find all point clouds if scene_paths is None: - scene_paths = [] - for p in stage.Traverse(): - is_point_instancer = UsdGeom.PointInstancer(p) - if UsdGeom.PointInstancer(p) and p.GetAttribute('primvars:kaolin_type').Get() == 'PointCloud': - scene_paths.append(p.GetPath()) + scene_paths = get_pointcloud_scene_paths(file_path) if times is None: times = [Usd.TimeCode.Default()] * len(scene_paths) pointclouds = [] + stage = Usd.Stage.Open(file_path) for scene_path, time in zip(scene_paths, times): prim = stage.GetPrimAtPath(scene_path) assert prim, f'The prim at {scene_path} does not exist.' instancer = UsdGeom.PointInstancer(prim) - assert instancer # Currently only support pointclouds from point instancers + assert instancer, f'Only point clouds from point instancers are supported. No PointInstancer at {scene_path}.' pointclouds.append(torch.tensor(instancer.GetPositionsAttr().Get(time=time))) return pointclouds +def get_pointcloud_bracketing_time_samples(stage, scene_path, target_time): + """Returns two time samples that bracket target_time for point cloud attributes at a specified + scene_path. + + Args: + stage (Usd.Stage) + scene_path (str) + target_time (Number) + Returns: + (iterable of 2 numbers) + """ + # Note: can also get usd_attr.GetTimeSamples() + prim = stage.GetPrimAtPath(scene_path) + instancer = UsdGeom.PointInstancer(prim) + assert instancer, f'Only point clouds from point instancers are supported. No PointInstancer at {scene_path}.' + return instancer.GetPositionsAttr().GetBracketingTimeSamples(target_time) + + def add_pointcloud(stage, points, scene_path, time=None): r"""Add a pointcloud to an existing USD stage. diff --git a/kaolin/visualize/__init__.py b/kaolin/visualize/__init__.py index 76edc7f2b..26335e6b9 100644 --- a/kaolin/visualize/__init__.py +++ b/kaolin/visualize/__init__.py @@ -1,3 +1,4 @@ from .timelapse import Timelapse +from .timelapse import TimelapseParser __all__ = [k for k in locals().keys() if not k.startswith('__')] diff --git a/kaolin/visualize/timelapse.py b/kaolin/visualize/timelapse.py index 154dc12be..8819a2484 100644 --- a/kaolin/visualize/timelapse.py +++ b/kaolin/visualize/timelapse.py @@ -1,4 +1,7 @@ +import glob +import logging import os +import re import posixpath import warnings @@ -9,12 +12,14 @@ from kaolin import io +logger = logging.getLogger(__name__) + class Timelapse: def __init__(self, log_dir, up_axis='Y'): self.logdir = log_dir - def _add_shading_variant(self, stage, prim, name): + def _add_shading_variant(self, prim, name): vset = prim.GetVariantSets().AddVariantSet("shadingVariant") vset.AddVariant(name) return vset @@ -126,7 +131,6 @@ def add_voxelgrid_batch(self, iteration=0, category='', voxelgrid_list=None, col stage.Save() - def add_mesh_batch(self, iteration=0, category='', vertices_list=None, faces_list=None, uvs_list=None, face_uvs_idx_list=None, face_normals_list=None, materials_list=None): """ @@ -168,7 +172,7 @@ def add_mesh_batch(self, iteration=0, category='', vertices_list=None, faces_lis stage.SetDefaultPrim(stage.GetPrimAtPath(f'/{mesh_name}')) if materials_list is not None: for material_name, _ in materials_list[i].items(): - self._add_shading_variant(stage, mesh_prim, material_name) + self._add_shading_variant(mesh_prim, material_name) else: stage = Usd.Stage.Open(ind_out_path) mesh_prim = stage.GetPrimAtPath(f'/{mesh_name}') @@ -188,10 +192,206 @@ def add_mesh_batch(self, iteration=0, category='', vertices_list=None, faces_lis vset.SetVariantSelection(material_name) material.usd_root_path = meshes_path with vset.GetVariantEditContext(): - material_prim = material.write_to_usd(ind_out_path, f'/{mesh_name}/{material_name}', time=iteration, - texture_dir='textures', - texture_file_prefix=f'{mesh_name}_{material_name}_{iteration}_') + material_prim = material.write_to_usd( + ind_out_path, f'/{mesh_name}/{material_name}', + time=iteration, + texture_dir='textures', + texture_file_prefix=f'{mesh_name}_{material_name}_{iteration}_') binding_api = UsdShade.MaterialBindingAPI(mesh_prim) binding_api.Bind(UsdShade.Material(material_prim)) - stage.Save() + + +def _get_timestamps(filenames): + """ + Returns the timestamps of all filenames as a dictionary keyed by + filename. Will throw error if files do not exits. + """ + res = {} + for f in filenames: + res[f] = os.stat(f).st_mtime_ns + return res + + +class TimelapseParser(object): + """ + Utility class for working with log directories created using the Timelapse + interface. For example, this class can be used to extract raw data from + the written checkpoints as follows: + + Example: + # During training + timelapse = Timelapse(log_dir) + timelapse.add_pointcloud_batch(iteration=idx, category="prediction", pointcloud_list=[predictions]) + + # Examining training run + parser = TimelapseParser(log_dir) + path = parser.get_file_path("pointcloud", "prediction", 0) + cloud = kaolin.io.usd.import_pointclouds(path, time=iteration_number) # time should be iteration number + # Visualize, save or analyze as desired + """ + __SUPPORTED_TYPES = ["mesh", "pointcloud", "voxelgrid"] + + class CategoryInfo: + """ + Corresponds to a "category" specified in Timelapse for a specific type + like "mesh". The ids corresponds to the number of objects + saved in calls like add_mesh_batch, and end_time is the largest end + time in the group. + """ + def __init__(self, category, ids=None, end_time=0): + self.category = category + self.ids = [] if ids is None else list(ids) + self.end_time = end_time + + def serializable(self): + return {'category': self.category, + 'ids': self.ids, + 'end_time': self.end_time} + + def __repr__(self): + return repr((self.category, len(self.ids), self.end_time)) + + def __lt__(self, other): + return repr(self) < repr(other) + + def add_instance(self, new_id, end_timecode): + if new_id in self.ids: + raise RuntimeError('Id {} already added for category {}'.format(new_id, self.category)) + self.ids.append(new_id) + self.ids.sort() + self.end_time = max(self.end_time, end_timecode) + + def __init__(self, log_dir): + self.logdir = log_dir + + # { (typestr, category, id) : path } + self.filepaths = TimelapseParser.get_filepaths(self.logdir) + self.timestamps = _get_timestamps(self.filepaths.values()) + + # { typestr : [CategoryInfo (serializable)] } + self.dir_info = TimelapseParser.parse_filepath_info(self.filepaths) + logger.debug(self.dir_info) + + def get_file_path(self, type, category, id): + """Gets file path by keys. + Args: + type (str): one of "mesh", "pointcloud", "voxelgrid" + category (str): category passed to Timelapse when writing checkpoints + id (int): id of the item within its batch + Return: + (str) or None + """ + fpath_key = (type, category, int(id)) + if fpath_key not in self.filepaths: + logger.error('Key {} not in filepaths: {}'.format(fpath_key, self.filepaths)) + return None + return self.filepaths[fpath_key] + + def check_for_updates(self): + """Updates parse information if it has changed in the logdir. + + Returns: + (bool) - True if updates exist, False if not + """ + filepaths = TimelapseParser.get_filepaths(self.logdir) + timestamps = _get_timestamps(filepaths.values()) + if timestamps != self.timestamps: + logger.info('Changes to logdirectory detected: {}'.format(self.logdir)) + self.filepaths = filepaths + self.timestamps = timestamps + self.dir_info = TimelapseParser.parse_filepath_info(self.filepaths) + return True + return False + + def num_mesh_categories(self): + return len(self.dir_info['mesh']) + + def num_pointcloud_categories(self): + return len(self.dir_info['pointcloud']) + + def num_voxelgrid_categories(self): + return len(self.dir_info['voxelgrid']) + + def get_category_names_by_type(self, type): + if type not in self.dir_info: + return [x['category'] for x in self.dir_info[type]] + + def get_category_info(self, type, category): + if type not in self.dir_info: + return None + return next((x for x in self.dir_info[type] if x['category'] == category), None) + + @staticmethod + def get_filepaths(logdir): + """Get all USD file paths within a directory that match naming conventions imposed by Timelapse. + + Args: + logdir (str): root directory where USD timelapse files are written + + Returns: + dict: keyed by tuples (typestr, category, id_within_batch) with values + containing full USD file paths + """ + fname_pattern = '(.*)_([0-9]+).usd' + + filepaths = {} + for typestr in TimelapseParser.__SUPPORTED_TYPES: + usd_pattern = '{}*.usd'.format(typestr) + files = glob.glob(os.path.join(logdir, '**', usd_pattern), recursive=True) + + if len(files) == 0: + logger.info('No checkpoints found for type {}: no files matched pattern {} in {}'.format( + typestr, usd_pattern, logdir)) + + for fpath in files: + cat = os.path.dirname(os.path.relpath(fpath, logdir)) + m = re.match(fname_pattern, os.path.basename(fpath)) + if m is None: + logger.error('USD {} basename does not match pattern {}'.format( + fpath, fname_pattern)) + continue + num = int(m.group(2)) + filepaths[(typestr, cat, num)] = fpath + + return filepaths + + @staticmethod + def parse_filepath_info(filepaths): + """Parses a directory of checkpoints written by Timelapse module into a summary format. + + Args: + filepaths: dictionary output by get_filepaths + + Returns: + dictionary keyed by checkpoint type ("mesh", "pointcloud", "voxelgrid") + with each value a list of (serializable) CategoryInfo + """ + info = {} # { "mesh" : { "category": CategoryInfo} } + for k, fpath in filepaths.items(): + stage = Usd.Stage.Open(fpath) + + # Note: stage.GetEndTimeCode() may store incorrect value + times = io.usd.get_authored_time_samples(fpath) + if len(times) == 0: + end_time = 0 + else: + end_time = times[-1] + + typestr, cat, id_num = k + + if typestr not in info: + info[typestr] = {} + if cat not in info[typestr]: + info[typestr][cat] = TimelapseParser.CategoryInfo(cat) + info[typestr][cat].add_instance(id_num, end_time) + + result = {} # { "mesh": [ CategoryInfo (serializable dict) ] } + for typestr, catdict in info.items(): + result[typestr] = [x.serializable() for x in sorted(catdict.values())] + + for typestr in TimelapseParser.__SUPPORTED_TYPES: + if typestr not in result: + result[typestr] = [] # Ensure all types are represented + + return result diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..29b533d63 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5612 @@ +{ + "name": "kaolin", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "jquery": "^3.5.1", + "mustard-ui": "^1.0.4", + "three": "^0.125.2" + }, + "devDependencies": { + "cypress": "^6.5.0", + "mocha": "^8.3.0", + "uglify-js": "^3.12.8" + } + }, + "node_modules/@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@cypress/request": { + "version": "2.88.5", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.5.tgz", + "integrity": "sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "dependencies": { + "any-observable": "^0.3.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "rxjs": { + "optional": true + }, + "zen-observable": { + "optional": true + } + } + }, + "node_modules/@types/node": { + "version": "12.12.50", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.50.tgz", + "integrity": "sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w==", + "dev": true + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz", + "integrity": "sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg==", + "dev": true + }, + "node_modules/@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", + "dev": true + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "dependencies": { + "restore-cursor": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-table3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", + "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "dev": true, + "dependencies": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "dependencies": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cypress": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.5.0.tgz", + "integrity": "sha512-ol/yTAqHrQQpYBjxLlRSvZf4DOb9AhaQNVlwdOZgJcBHZOOa52/p/6/p3PPcvzjWGOMG6Yq0z4G+jrbWyk/9Dg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@cypress/listr-verbose-renderer": "^0.4.1", + "@cypress/request": "^2.88.5", + "@cypress/xvfb": "^1.2.4", + "@types/node": "12.12.50", + "@types/sinonjs__fake-timers": "^6.0.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.1.2", + "blob-util": "2.0.2", + "bluebird": "^3.7.2", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-table3": "~0.6.0", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.9.3", + "debug": "4.3.2", + "eventemitter2": "^6.4.2", + "execa": "^4.0.2", + "executable": "^4.1.1", + "extract-zip": "^1.7.0", + "fs-extra": "^9.0.1", + "getos": "^3.2.1", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.2", + "lazy-ass": "^1.6.0", + "listr": "^0.14.3", + "lodash": "^4.17.19", + "log-symbols": "^4.0.0", + "minimist": "^1.2.5", + "moment": "^2.29.1", + "ospath": "^1.2.2", + "pretty-bytes": "^5.4.1", + "ramda": "~0.26.1", + "request-progress": "^3.0.0", + "supports-color": "^7.2.0", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "url": "^0.11.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/cypress/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/cypress/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/cypress/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "node_modules/dayjs": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz", + "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz", + "integrity": "sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ==", + "dev": true + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "dev": true, + "dependencies": { + "ini": "1.3.7" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "dependencies": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "dependencies": { + "symbol-observable": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/jquery": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==" + }, + "node_modules/js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", + "dev": true, + "engines": { + "node": "> 0.8" + } + }, + "node_modules/listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "dependencies": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "listr": "^0.14.2" + } + }, + "node_modules/listr-update-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/listr-update-renderer/node_modules/log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "dependencies": { + "chalk": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/listr-verbose-renderer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/listr-verbose-renderer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/listr-verbose-renderer/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/mime-db": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "dev": true, + "dependencies": { + "mime-db": "1.46.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.0.tgz", + "integrity": "sha512-TQqyC89V1J/Vxx0DhJIXlq9gbbL9XFNdeLQ1+JsnZsVaSOV1z3tWfw0qZmQJGQRIfkvZcs7snQnZnOCKoldq1Q==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 10.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mustard-ui": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mustard-ui/-/mustard-ui-1.0.4.tgz", + "integrity": "sha512-VcKZCTnrd5f3BBWFqJW0RzdUHYiRVitsDIpCz4gEZM2cNt6Ebye92iD0yArqw8cxhrK3QnvBE9rRJ99JpeciPw==", + "dependencies": { + "natives": "^1.1.6" + } + }, + "node_modules/nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natives": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", + "deprecated": "This module relies on Node.js's internals and will break at some point. Do not use it, and update to graceful-fs@4.x." + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=", + "dev": true + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.5.0.tgz", + "integrity": "sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/ramda": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "dependencies": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/three": { + "version": "0.125.2", + "resolved": "https://registry.npmjs.org/three/-/three-0.125.2.tgz", + "integrity": "sha512-7rIRO23jVKWcAPFdW/HREU2NZMGWPBZ4XwEMt0Ak0jwLUKVJhcKM55eCBWyGZq/KiQbeo1IeuAoo/9l2dzhTXA==" + }, + "node_modules/throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/uglify-js": { + "version": "3.12.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.8.tgz", + "integrity": "sha512-fvBeuXOsvqjecUtF/l1dwsrrf5y2BCUk9AOJGzGcm6tE7vegku5u/YvqjyDaAGr422PLoLnrxg3EnRvTqsdC1w==", + "dev": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@cypress/request": { + "version": "2.88.5", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.5.tgz", + "integrity": "sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@types/node": { + "version": "12.12.50", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.50.tgz", + "integrity": "sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w==", + "dev": true + }, + "@types/sinonjs__fake-timers": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz", + "integrity": "sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg==", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", + "dev": true + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", + "dev": true + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-table3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", + "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "optional": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "cypress": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.5.0.tgz", + "integrity": "sha512-ol/yTAqHrQQpYBjxLlRSvZf4DOb9AhaQNVlwdOZgJcBHZOOa52/p/6/p3PPcvzjWGOMG6Yq0z4G+jrbWyk/9Dg==", + "dev": true, + "requires": { + "@cypress/listr-verbose-renderer": "^0.4.1", + "@cypress/request": "^2.88.5", + "@cypress/xvfb": "^1.2.4", + "@types/node": "12.12.50", + "@types/sinonjs__fake-timers": "^6.0.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.1.2", + "blob-util": "2.0.2", + "bluebird": "^3.7.2", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-table3": "~0.6.0", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.9.3", + "debug": "4.3.2", + "eventemitter2": "^6.4.2", + "execa": "^4.0.2", + "executable": "^4.1.1", + "extract-zip": "^1.7.0", + "fs-extra": "^9.0.1", + "getos": "^3.2.1", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.2", + "lazy-ass": "^1.6.0", + "listr": "^0.14.3", + "lodash": "^4.17.19", + "log-symbols": "^4.0.0", + "minimist": "^1.2.5", + "moment": "^2.29.1", + "ospath": "^1.2.2", + "pretty-bytes": "^5.4.1", + "ramda": "~0.26.1", + "request-progress": "^3.0.0", + "supports-color": "^7.2.0", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "url": "^0.11.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "dayjs": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz", + "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eventemitter2": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz", + "integrity": "sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ==", + "dev": true + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "requires": { + "async": "^3.2.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "dev": true, + "requires": { + "ini": "1.3.7" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "^1.1.0" + } + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jquery": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==" + }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", + "dev": true + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "mime-db": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "dev": true, + "requires": { + "mime-db": "1.46.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.0.tgz", + "integrity": "sha512-TQqyC89V1J/Vxx0DhJIXlq9gbbL9XFNdeLQ1+JsnZsVaSOV1z3tWfw0qZmQJGQRIfkvZcs7snQnZnOCKoldq1Q==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + } + }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "mustard-ui": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mustard-ui/-/mustard-ui-1.0.4.tgz", + "integrity": "sha512-VcKZCTnrd5f3BBWFqJW0RzdUHYiRVitsDIpCz4gEZM2cNt6Ebye92iD0yArqw8cxhrK3QnvBE9rRJ99JpeciPw==", + "requires": { + "natives": "^1.1.6" + } + }, + "nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true + }, + "natives": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pretty-bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.5.0.tgz", + "integrity": "sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "ramda": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + }, + "dependencies": { + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + } + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "three": { + "version": "0.125.2", + "resolved": "https://registry.npmjs.org/three/-/three-0.125.2.tgz", + "integrity": "sha512-7rIRO23jVKWcAPFdW/HREU2NZMGWPBZ4XwEMt0Ak0jwLUKVJhcKM55eCBWyGZq/KiQbeo1IeuAoo/9l2dzhTXA==" + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.12.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.8.tgz", + "integrity": "sha512-fvBeuXOsvqjecUtF/l1dwsrrf5y2BCUk9AOJGzGcm6tE7vegku5u/YvqjyDaAGr422PLoLnrxg3EnRvTqsdC1w==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..f8e371c35 --- /dev/null +++ b/package.json @@ -0,0 +1,12 @@ +{ + "dependencies": { + "jquery": "^3.5.1", + "mustard-ui": "^1.0.4", + "three": "^0.125.2" + }, + "devDependencies": { + "cypress": "^6.5.0", + "mocha": "^8.3.0", + "uglify-js": "^3.12.8" + } +} diff --git a/setup.py b/setup.py index db160258c..7106cb4d5 100644 --- a/setup.py +++ b/setup.py @@ -6,6 +6,7 @@ # IGNORE_VER_ERR # ignore version error for torch +from os import environ from setuptools import setup, find_packages, dist import importlib from pkg_resources import parse_version @@ -14,6 +15,7 @@ TORCH_MIN_VER = '1.5.0' TORCH_MAX_VER = '1.7.1' CYTHON_MIN_VER = '0.29.20' +INCLUDE_EXPERIMENTAL = environ.get('KAOLIN_INSTALL_EXPERIMENTAL') is not None missing_modules = [] torch_spec = importlib.util.find_spec("torch") @@ -122,9 +124,19 @@ def get_requirements(): "and won't be installed, please use python_version 3.6 or 3.6 " "to use USD related features") requirements.append('usd-core==20.11; python_version < "3.8"') - + if INCLUDE_EXPERIMENTAL: + requirements.append('tornado==6.0.4') + requirements.append('flask==1.1.2') return requirements + +def get_scripts(): + if INCLUDE_EXPERIMENTAL: + logger.info('Including experimental features') + return ['kaolin/experimental/dash3d/kaolin-dash3d'] + return [] + + def get_extensions(): extra_compile_args = {'cxx': ['-O3']} define_macros = [] @@ -204,6 +216,8 @@ def get_include_dirs(): # Package info packages=find_packages(exclude=('docs', 'tests', 'examples')), + scripts=get_scripts(), + include_package_data=True, install_requires=get_requirements(), include_dirs=get_include_dirs(), zip_safe=True, diff --git a/tests/integration/experimental/dash3d/.gitignore b/tests/integration/experimental/dash3d/.gitignore new file mode 100644 index 000000000..20f821b67 --- /dev/null +++ b/tests/integration/experimental/dash3d/.gitignore @@ -0,0 +1,3 @@ +cypress/test_output +cypress/videos +cypress/screenshots \ No newline at end of file diff --git a/tests/integration/experimental/dash3d/README.md b/tests/integration/experimental/dash3d/README.md new file mode 100644 index 000000000..c36841f36 --- /dev/null +++ b/tests/integration/experimental/dash3d/README.md @@ -0,0 +1,101 @@ +# Dash3D Integration Testing (beta) + +Because Dash3d is still in experimental stage, we opt for only +high-level integration testing at this point. + +## Dependencies + +To run tests, install [node js](https://nodejs.org/): +``` +conda install -c conda-forge nodejs +``` + +Make sure to install system dependencies required by +[Cypress](https://docs.cypress.io/guides/getting-started/installing-cypress.html#System-requirements). + +Most front end dependencies are managed by [npm](https://www.npmjs.com/), +automatically installed with node. To install front end dependencies, run +the following from the **root of kaolin**: +``` +npm install +``` + +## How to run all tests + +All integration tests are wrapped in python. To run all tests +from the root of kaolin: +``` +pytest --capture=tee-sys tests/integration/experimental/dash3d/ +``` + +## Under the Hood + +Currently, the only javascript tests are integration, and we call +the javascript test from a python test file. In the future, this +may change. + +#### Mocha Tests + +Javascript tests that can run *outside of the browser* are +implemented using [Mocha](https://mochajs.org/). Note that +currently, **all js tests are called from python**. To run +Mocha tests manually, run: +``` + npx mocha "./tests/integration/experimental/dash3d/*.js" +``` +*Note:* his will fail, because it expects +data generated by python wrapper tests. + +Failing mocha tests can be debugged in Chrome by running: +``` +./node_modules/mocha/bin/mocha --inspect --inspect-brk path/to/test.js +``` +Then, in Chrome navigate to [chrome://inspect/](chrome://inspect/) and +click "Open dedicated DevTools for Node". You may need to manually add +the test and `static` sibdirectories under sources. + +#### Cypress Tests + +End-to-end tests that *require a browser* are implemented +using [Cypress](https://www.cypress.io/). Note that currently, **all cypress +tests are called from python**, but the tests themselves + are written in javascript and located in `tests/integration/experimental/dash3d/cypress/integration/`. It is essential to be able +to run them manually for debugging. + +First run a python test that spins up a dash3d instance in the +background (note that multiple invokations of this may require you +to set `--skip_start_dash3d` at the end of the command in case +dash3d is already running): +``` +python -m tests.integration.experimental.dash3d.run_e2e_test +``` +This test also runs cypress tests, but in case they fail it's useful to invoke cypress manually. + +To open cypress UI: +``` +npx cypress open --config-file tests/integration/experimental/dash3d/cypress.json +``` + +Alternatively, run cypress tests automatically (this is called from `run_e2e_test`): +``` +npx cypress run --config-file tests/integration/experimental/dash3d/cypress.json +``` + +#### Debugging Cypress Tests + +Cypress writes a lot of diagnostic information during testing. Opening debug console in the browser during test execution is helpful. Also, check +out the following directories: +* screenshots: `tests/integration/experimental/dash3d/cypress/screenshots/` +* videos: `tests/integration/experimental/dash3d/cypress/videos/` +* renderings from tests: `tests/integration/experimental/dash3d/cypress/test_output/` + +Most of the tests perform visual regression to ensure that the right +geometry is passed from the server to the client. As a consequence, +changes to rendering properties will break the test and require +change to golden files. The `test_output` directory will contain +the updated golden files. + + + + + diff --git a/tests/integration/experimental/dash3d/cypress.json b/tests/integration/experimental/dash3d/cypress.json new file mode 100644 index 000000000..44204556d --- /dev/null +++ b/tests/integration/experimental/dash3d/cypress.json @@ -0,0 +1,11 @@ +{ + "fileServerFolder": "tests/integration/experimental/dash3d/cypress", + "componentFolder" : "tests/integration/experimental/dash3d/cypress/component", + "downloadsFolder" : "tests/integration/experimental/dash3d/cypress/downloads", + "fixturesFolder": "tests/integration/experimental/dash3d/cypress/fixtures", + "integrationFolder": "tests/integration/experimental/dash3d/cypress/integration", + "pluginsFile": "tests/integration/experimental/dash3d/cypress/plugins/index.js", + "screenshotsFolder": "tests/integration/experimental/dash3d/cypress/screenshots", + "supportFile": "tests/integration/experimental/dash3d/cypress/support/index.js", + "videosFolder": "tests/integration/experimental/dash3d/cypress/videos" +} diff --git a/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_gt_id0.png b/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_gt_id0.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1af4bc44d190ecf01146ac727bc822809859c8 GIT binary patch literal 14254 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 literal 0 HcmV?d00001 diff --git a/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_gt_id1.png b/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_gt_id1.png new file mode 100644 index 0000000000000000000000000000000000000000..e98174c72c21b70fd7a494e29a24e4ff452bdd7f GIT binary patch literal 12106 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 WYmdQiphX@8dZdO>t$Oe@>i+?gg?Ksu literal 0 HcmV?d00001 diff --git a/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id0_final.png b/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id0_final.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1af4bc44d190ecf01146ac727bc822809859c8 GIT binary patch literal 14254 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 literal 0 HcmV?d00001 diff --git a/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id0_it50.png b/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id0_it50.png new file mode 100644 index 0000000000000000000000000000000000000000..b53ba59bed643e6956e047dbc41974a99978d597 GIT binary patch literal 19404 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 literal 0 HcmV?d00001 diff --git a/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id1_final.png b/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id1_final.png new file mode 100644 index 0000000000000000000000000000000000000000..e98174c72c21b70fd7a494e29a24e4ff452bdd7f GIT binary patch literal 12106 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 WYmdQiphX@8dZdO>t$Oe@>i+?gg?Ksu literal 0 HcmV?d00001 diff --git a/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id1_it50.png b/tests/integration/experimental/dash3d/cypress/fixtures/images/mesh_output_id1_it50.png new file mode 100644 index 0000000000000000000000000000000000000000..f94f08f64462871dbbc17fa55e7141ce25d52e6f GIT binary patch literal 18916 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≶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

SpB^ZPW23x;~ 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 literal 0 HcmV?d00001 diff --git a/tests/integration/experimental/dash3d/cypress/integration/visual_regression.js b/tests/integration/experimental/dash3d/cypress/integration/visual_regression.js new file mode 100644 index 000000000..955f456a0 --- /dev/null +++ b/tests/integration/experimental/dash3d/cypress/integration/visual_regression.js @@ -0,0 +1,129 @@ +// Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const assert = require('assert'); + + +const TYPES_TO_TEST = ['mesh', 'pointcloud']; +const NVIEWS = 2; + +// This tests the renderings in the viewports against ground truth images +describe('Visual Regression', () => { + beforeEach(function() { + // To update these can use one of 2 ways: + // 1. Look at test output saved in DEBUG_FOLDER + // 2. Load dash3d localhost:8008 and run commands like this in console: + // nvidia.util.downloadURL('mesh0.png', $("#mesh-view0 canvas")[0].toDataURL()) + + // Initial renderings + cy.fixture('images/mesh_gt_id0.png').as('mesh0_data'); // fixture data names + cy.fixture('images/mesh_output_id0_final.png').as('mesh1_data'); + cy.fixture('images/pointcloud_input_id0.png').as('pointcloud0_data'); + cy.fixture('images/pointcloud_output_id0_final.png').as('pointcloud1_data'); + + + // Specific renderings (caused by user input) + cy.fixture('images/mesh_gt_id0.png').as('mesh_ground_truth_id0'); + cy.fixture('images/mesh_gt_id1.png').as('mesh_ground_truth_id1'); + cy.fixture('images/mesh_output_id0_final.png').as('mesh_output_id0'); // last it + cy.fixture('images/mesh_output_id0_it50.png').as('mesh_output_id0_it50'); + cy.fixture('images/mesh_output_id1_final.png').as('mesh_output_id1'); // last it + cy.fixture('images/mesh_output_id1_it50.png').as('mesh_output_id1_it50'); + cy.fixture('images/pointcloud_input_id0.png').as('pointcloud_input_id0'); + cy.fixture('images/pointcloud_input_id1.png').as('pointcloud_input_id1'); + cy.fixture('images/pointcloud_output_id0_final.png').as('pointcloud_output_id0'); // last it + cy.fixture('images/pointcloud_output_id0_it50.png').as('pointcloud_output_id0_it50'); + cy.fixture('images/pointcloud_output_id1_final.png').as('pointcloud_output_id1'); // last it + cy.fixture('images/pointcloud_output_id1_it50.png').as('pointcloud_output_id1_it50'); + }) + it('Initial Page Rendering', () => { + cy.visit('http://localhost:8008/'); + + // Note: this part depends on the initial rendering, which may change + cy.wait(2000).then(() => { + cy.wrap(TYPES_TO_TEST).each((tname) => { + cy.wrap([0, 1]).each((v) => { + // e.g. '#mesh-view0 canvas' + var view_selector = '#' + tname + '-view' + v + ' canvas'; + var data_name = '@' + tname + v + '_data'; // fixture data name + cy.checkCanvasRendering(view_selector, data_name, 'test_initial_render'); + }); + }); + }); + }); + it('Setting Category and ID', () => { + cy.visit('http://localhost:8008/'); + + // Select the right id and category and test that we can load + // requested geometry in every viewport + var cats_per_type = { 'mesh': ['ground_truth', 'output'], + 'pointcloud': ['input', 'output'] }; + cy.wait(2000).then(() => { + cy.wrap(TYPES_TO_TEST).each((tname) => { + cy.wrap([0, 1]).each((view_id) => { + cy.wrap(cats_per_type[tname]).each((cat_name) => { + cy.wrap([0, 1]).each((mesh_id) => { + // e.g. '#mesh-view0 canvas' + var view_selector = '#' + tname + '-view' + view_id + ' canvas'; + var category_selector = '#' + tname + '-header' + view_id + ' select.cat'; + var id_selector = '#' + tname + '-header' + view_id + ' select.id'; + var data_name = '@' + tname + '_' + cat_name + '_id' + mesh_id; + // Set category and id in the viewport + cy.get(id_selector).select('id ' + mesh_id).then(() => { + cy.get(category_selector).select(cat_name).wait(1000).then(() => { + console.log('Set category ' + cat_name + ' and id ' + mesh_id); + // Check rendering + cy.checkCanvasRendering(view_selector, data_name, 'test_set_category_and_id'); + + }); + }); + }); + }); + }); + }); + }); + }); + it('Setting Global Iteration Number', () => { + cy.visit('http://localhost:8008/'); + + cy.get('#mesh-header0 select.cat').select('output').then(() => { + cy.get('#mesh-header0 select.id').select('id 0').then(() => { + cy.get('#mesh-header1 select.cat').select('ground_truth').then(() => { + cy.get('#mesh-header1 select.id').select('id 0').then(() => { + cy.get('#pointcloud-header0 select.cat').select('output').then(() => { + cy.get('#pointcloud-header0 select.id').select('id 0').then(() => { + cy.get('#pointcloud-header1 select.cat').select('input').then(() => { + cy.get('#pointcloud-header1 select.id').select('id 0').then(() => { + cy.get('#timeslider').invoke('val', 50).trigger('change').wait(1000).then(() => { + let test_subfolder = 'test_set_its'; + cy.checkCanvasRendering( + '#mesh-view0 canvas', '@mesh_output_id0_it50', test_subfolder); + cy.checkCanvasRendering( + '#mesh-view1 canvas', '@mesh_ground_truth_id0', test_subfolder); + cy.checkCanvasRendering( + '#pointcloud-view0 canvas', '@pointcloud_output_id0_it50', test_subfolder); + cy.checkCanvasRendering( + '#pointcloud-view1 canvas', '@pointcloud_input_id0', test_subfolder); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + +}) diff --git a/tests/integration/experimental/dash3d/cypress/plugins/index.js b/tests/integration/experimental/dash3d/cypress/plugins/index.js new file mode 100644 index 000000000..aa9918d21 --- /dev/null +++ b/tests/integration/experimental/dash3d/cypress/plugins/index.js @@ -0,0 +1,21 @@ +/// +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +/** + * @type {Cypress.PluginConfig} + */ +module.exports = (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config +} diff --git a/tests/integration/experimental/dash3d/cypress/support/commands.js b/tests/integration/experimental/dash3d/cypress/support/commands.js new file mode 100644 index 000000000..4b66cd491 --- /dev/null +++ b/tests/integration/experimental/dash3d/cypress/support/commands.js @@ -0,0 +1,56 @@ +// Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const IMG_WIDTH = 300; +const MAX_DIFFERING_PIXELS = Math.floor(IMG_WIDTH * IMG_WIDTH * 0.02); +const DEBUG_FOLDER = 'tests/integration/experimental/dash3d/cypress/test_output/'; + +Cypress.Commands.add('checkCanvasRendering', (view_selector, data_name, testsubfolder) => { + cy.window().then((win) => { + expect(cy.get(view_selector)); + cy.get(view_selector) + .then(($el) => { + return win.nvidia.test.convertDataUrl($el.get(0).toDataURL(), IMG_WIDTH); + }) + .then((actual) => { + cy.get(data_name) + .then((img_data) => { + return win.nvidia.test.convertDataUrl('data:image/png;base64,' + img_data, IMG_WIDTH); + }) + .then((expected) => { + console.log('Actual: '); + console.log(actual); + console.log('Expected: '); + console.log(expected); + let cmpare = win.nvidia.test.getImageDiff(expected[0], actual[0]); + console.log(cmpare); + let fprefix = DEBUG_FOLDER + testsubfolder; + cy.writeFile(fprefix + '/expected/' + data_name.slice(1) + '_expected.png', + win.nvidia.test.stripBase64Marker(expected[1]), 'base64') + .then(() => { + cy.writeFile(fprefix + '/actual/' + data_name.slice(1) + '.png', + win.nvidia.test.stripBase64Marker(actual[1]), 'base64'); + }) + .then(() => { + cy.writeFile(fprefix + '/expected/' + data_name.slice(1) + '_diff.png', + win.nvidia.test.stripBase64Marker( + win.nvidia.test.imageDataToDataUrl(cmpare[0])), 'base64'); + }) + .then(() => { + expect(cmpare[1]).to.be.lessThan(MAX_DIFFERING_PIXELS); + }); + }); + }); + }); +}); \ No newline at end of file diff --git a/tests/integration/experimental/dash3d/cypress/support/index.js b/tests/integration/experimental/dash3d/cypress/support/index.js new file mode 100644 index 000000000..d68db96df --- /dev/null +++ b/tests/integration/experimental/dash3d/cypress/support/index.js @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands') diff --git a/tests/integration/experimental/dash3d/run_e2e_test.py b/tests/integration/experimental/dash3d/run_e2e_test.py new file mode 100644 index 000000000..cc82cf896 --- /dev/null +++ b/tests/integration/experimental/dash3d/run_e2e_test.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import logging +import os +import shutil +import subprocess +import sys + +THIS_DIR = os.path.dirname(os.path.realpath(__file__)) +KAOLIN_ROOT = os.path.realpath( + os.path.join(THIS_DIR, os.pardir, os.pardir, os.pardir, os.pardir)) + +logger = logging.getLogger(__name__) + + +def obj_paths(): + samples_dir = os.path.join(KAOLIN_ROOT, 'tests', 'samples') + return [os.path.join(samples_dir, 'rocket.obj'), + os.path.join(samples_dir, 'model.obj')] + + +def timelapse_path(): + return os.path.realpath( + os.path.join(KAOLIN_ROOT, 'tests', 'samples', 'timelapse', 'notexture')) + + +def golden_screenshots_path(): + return os.path.join(THIS_DIR, 'cypress', 'fixtures') + + +def cypress_config_path(): + # Important: must be relative + return os.path.join('tests', 'integration', 'experimental', 'dash3d', 'cypress.json') + + +def port(): + return 8008 + + +def generate_timelapse_input(): + objs = ','.join(obj_paths()) + out_dir = timelapse_path() + script = os.path.realpath( + os.path.join(KAOLIN_ROOT, 'examples', 'tutorial', 'visualize_main.py')) + + args = f'--skip_normalization --test_objs={objs} --output_dir={out_dir}' + command = f'python {script} {args}' + logger.info(f'Re-generating timelapse input here: {out_dir}\n by running {command}') + if os.path.exists(out_dir): + shutil.rmtree(out_dir) + os.makedirs(out_dir, exist_ok=True) + ret = os.system(command) + if ret != 0: + raise RuntimeError('Creation of timelapse failed') + + +def start_dash3d(): + script = os.path.realpath(os.path.join(THIS_DIR, 'start_dash3d.sh')) + logdir = timelapse_path() + _port = port() + + command = f'{script} {logdir} {_port}' + logger.info(f'Starting dash3d server in the background by running {command}') + ret = os.system(command) + + if ret != 0: + raise RuntimeError('Failed to start Dash3D') + + +def run_cypress(): + command = 'npx cypress run --config-file {}'.format(cypress_config_path()) + logger.info(f'Starting cypress by running {command}') + os.chdir(KAOLIN_ROOT) + ret = os.system(command) + if ret != 0: + raise RuntimeError('Failed cypress integration test') + + +def run_end_to_end_integration_tests(): + print('END 2 END INTEGRATION TEST FOR DASH 3D-------------------------------') + print('Timelapse input: {}'.format(timelapse_path())) + print('Server: http://localhost:{}'.format(port)) + print('Golden screenshot files: {}'.format(golden_screenshots_path())) + print('Visual comparison results: ') + + +def run_main(regenerate_timelapse_input, + skip_start_dash3d): + logging.basicConfig(level=logging.DEBUG, + format='%(asctime)s|%(levelname)8s|%(name)15s| %(message)s', + handlers=[logging.StreamHandler(sys.stdout)]) + + if regenerate_timelapse_input: + generate_timelapse_input() + + if not skip_start_dash3d: + start_dash3d() + + run_cypress() + + +class TestBinaryEncoding: + def test_server_client_binary_compatibility(self): + run_main(regenerate_timelapse_input=False, + skip_start_dash3d=False) + + +if __name__ == "__main__": + aparser = argparse.ArgumentParser() + aparser.add_argument('--regenerate_timelapse_input', action='store_true', + help='If set, will regenerate timelapse input in {}') + aparser.add_argument('--skip_start_dash3d', action='store_true', + help='If set, will skip starting dash3d, which may already be running.') + args = aparser.parse_args() + + run_main(regenerate_timelapse_input=args.regenerate_timelapse_input, + skip_start_dash3d=args.skip_start_dash3d) diff --git a/tests/integration/experimental/dash3d/start_dash3d.sh b/tests/integration/experimental/dash3d/start_dash3d.sh new file mode 100755 index 000000000..d5d22deca --- /dev/null +++ b/tests/integration/experimental/dash3d/start_dash3d.sh @@ -0,0 +1,36 @@ +#!/bin/bash -e +set -o nounset + +# Get the directory where current script is located +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +KAOLIN_ROOT=$SCRIPT_DIR/../../../.. + +DASH3D=$KAOLIN_ROOT/kaolin/experimental/dash3d/kaolin-dash3d + +USAGE="$0 [log_directory] (optional: port) + +Runs dash3d in the background using script: +$DASH3D +" +if [ $# -lt 1 ]; then + echo "$USAGE" + exit +fi + +FLAGS="--logdir=$1 --log_level=10" # DEBUG +if [ $# -gt 1 ]; then + FLAGS="$FLAGS --port=$2" +fi + +echo "Running Dash3D in the background using command: " +echo "$DASH3D $FLAGS" + +$DASH3D $FLAGS & +PID=$! + +sleep 2 +kill -0 $PID # Check still runs +if [ "$?" -ne "0" ]; then + echo "Failed to start dash3d" + exit 1 +fi \ No newline at end of file diff --git a/tests/integration/experimental/dash3d/test_binary_parse.js b/tests/integration/experimental/dash3d/test_binary_parse.js new file mode 100644 index 000000000..d1d4e5acb --- /dev/null +++ b/tests/integration/experimental/dash3d/test_binary_parse.js @@ -0,0 +1,140 @@ +// Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +var assert = require('assert'); +var THREE = require('three'); +var fs = require('fs'); +var path = require('path'); + +var geometry = require('../../../../kaolin/experimental/dash3d/src/geometry.js'); +var util = require('../../../../kaolin/experimental/dash3d/src/util.js'); + +var binaries = []; +before(function(done){ + util.set_global_log_level('INFO'); // Comment out to DEBUG if needed + + var paths = ['meshes0_1.bin', 'meshes2.bin', 'clouds0_1.bin', 'clouds2.bin']; + for (var i = 0; i < paths.length; ++i) { + var p = path.join(__dirname, '_out', paths[i]); + util.timed_log('Parsing binary file at path ' + p); + var res = fs.readFileSync(p); + var res_buffer = new Uint8Array(res).buffer; + binaries.push(res_buffer); + } + done(); +}); + +describe("Binary Mesh Parsing", function() { + describe("Reading and checking two meshes from _out/meshes0_1.bin", function() { + let geos = null; + it('two meshes should be parsed', function() { + geos = geometry.BufferedGeometriesFromBinary(binaries[0], 0); + assert.equal(geos.length, 2); + }); + it('two meshes should have correct number of vertices and faces', function() { + assert.equal(geos[0].getAttribute('position').count, 4); + assert.equal(geos[0].getIndex().count, 2 * 3); + + assert.equal(geos[1].getAttribute('position').count, 100); + assert.equal(geos[1].getIndex().count, 100 * 3); + }); + it('first mesh should have correct geometry values', function() { + let expected_face_idx = [0, 1, 2, 2, 1, 3]; + for (let i = 0; i < expected_face_idx.length; ++i) { + assert.equal(geos[0].getIndex().array[i], expected_face_idx[i], + 'unexpected face index at ' + i); + } + let expected_positions = [1.0, 2.0, 3.0, + 10.0, 20.0, 30.0, + 2.0, 4.0, 6.0, + 15.0, 25.0, 35.0]; + for (let i = 0; i < expected_positions.length; ++i) { + assert.equal(geos[0].getAttribute('position').array[i], + expected_positions[i], + 'unexpected position at ' + i); + } + }); + it('correct bounding box should be computed for both meshes', function() { + let bbox = geometry.GetBoundingBox(geos); + assert.equal(bbox.min.x, 0); + assert.equal(bbox.min.y, 1); + assert.equal(bbox.min.z, 2); + assert.equal(bbox.max.x, 297); + assert.equal(bbox.max.y, 298); + assert.equal(bbox.max.z, 299); + }); + }); + describe("Reading and checking one mesh from _out/meshes2.bin", function() { + let geos = null; + it('one mesh should be parsed', function() { + geos = geometry.BufferedGeometriesFromBinary(binaries[1], 0); + assert.equal(geos.length, 1); + }); + it('one mesh should have correct number of vertices and faces', function() { + assert.equal(geos[0].getAttribute('position').count, 3000); + assert.equal(geos[0].getIndex().count, 6000 * 3); + }); + }); +}); + +describe("Binary Pointcloud Parsing", function() { + describe("Reading and checking two point clouds from _out/clouds0_1.bin", function() { + let geos = null; + it('two point clouds should be parsed', function() { + geos = geometry.PtCloudsFromBinary(binaries[2], 0); + assert.equal(geos.length, 2); + }); + it('two point clouds should have correct number of points', function() { + assert.equal(geos[0].instanceCount, 4); + assert.equal(geos[1].instanceCount, 100); + }); + it('first point cloud should have correct geometry values', function() { + let expected_positions = [1.0, 2.0, 3.0, + 10.0, 20.0, 30.0, + 2.0, 4.0, 6.0, + 15.0, 25.0, 35.0]; + for (let i = 0; i < expected_positions.length; ++i) { + assert.equal(geos[0].getAttribute('instanceTranslation').array[i], + expected_positions[i], + 'unexpected position at ' + i); + } + }); + it('second point cloud should have correct geometry values', function() { + for (let i = 0; i < 300; ++i) { + assert.equal(geos[1].getAttribute('instanceTranslation').array[i], + i + 0.0, + 'unexpected position at ' + i); + } + }); + it('correct bounding box should be computed for both point clouds', function() { + let bbox = geometry.GetBoundingBox(geos); + assert.equal(Math.round(bbox.min.x * 1000), 0); + assert.equal(Math.round(bbox.min.y * 1000), 1 * 1000); + assert.equal(Math.round(bbox.min.z * 1000), 2 * 1000); + assert.equal(Math.round(bbox.max.x * 1000), 297 * 1000); + assert.equal(Math.round(bbox.max.y * 1000), 298 * 1000); + assert.equal(Math.round(bbox.max.z * 1000), 299 * 1000); + }); + }); + describe("Reading and checking one point cloud from _out/clouds2.bin", function() { + let geos = null; + it('one point cloud should be parsed', function() { + geos = geometry.PtCloudsFromBinary(binaries[3], 0); + assert.equal(geos.length, 1); + }); + it('one point cloud should have correct number of points', function() { + assert.equal(geos[0].instanceCount, 3000); + }); + }); +}) \ No newline at end of file diff --git a/tests/integration/experimental/dash3d/test_client_server_io.py b/tests/integration/experimental/dash3d/test_client_server_io.py new file mode 100644 index 000000000..238e8249e --- /dev/null +++ b/tests/integration/experimental/dash3d/test_client_server_io.py @@ -0,0 +1,88 @@ +# Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import numpy as np +import os +import pytest +import shutil +import torch + +import kaolin + +from kaolin.utils.testing import tensor_info + +from kaolin.experimental.dash3d.util import meshes_to_binary +from kaolin.experimental.dash3d.util import point_clouds_to_binary + +@pytest.fixture(scope='module') +def out_dir(): + # Create temporary output directory + out_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), '_out') + os.makedirs(out_dir, exist_ok=True) + yield out_dir + shutil.rmtree(out_dir) # Note: comment to keep output directory + + +@pytest.fixture(scope='module') +def meshes(): + vertices0 = np.array([[1.0, 2.0, 3.0], + [10.0, 20.0, 30.0], + [2.0, 4.0, 6.0], + [15.0, 25.0, 35.0]], dtype=np.float32) + faces0 = np.array([[0, 1, 2], + [2, 1, 3]], dtype=np.int32) + vertices1 = np.arange(0, 300).reshape((-1, 3)) + faces1 = np.stack([np.arange(0, 100), + np.mod(np.arange(0, 100) + 1, 100), + np.mod(np.arange(0, 100) + 2, 100)]).astype(np.int32).reshape((-1, 3)) + vertices2 = np.random.random((1, 9000)).reshape((-1, 3)) + faces2 = np.stack([np.mod(np.arange(0, 6000), 1000), + np.ones((6000,)), + np.random.randint(0, 2999 + 1, (6000,))]).astype(np.int32).reshape((-1, 3)) + return {"faces": [faces0, faces1, faces2], + "vertices": [vertices0, vertices1, vertices2]} + + +@pytest.fixture(scope='module') +def pointclouds(): + pts0 = np.array([[1.0, 2.0, 3.0], + [10.0, 20.0, 30.0], + [2.0, 4.0, 6.0], + [15.0, 25.0, 35.0]], dtype=np.float32) + pts1 = np.arange(0, 300).astype(np.float32).reshape((-1, 3)) + pts2 = np.random.random((1, 9000)).astype(np.float32).reshape((-1, 3)) + return {"positions": [pts0, pts1, pts2]} + + +class TestBinaryEncoding: + def test_server_client_binary_compatibility(self, meshes, pointclouds, out_dir): + # Encode and write mesh0+mesh1 and mesh2 to binary files + binstr = meshes_to_binary(meshes['vertices'][0:2], meshes['faces'][0:2]) + with open(os.path.join(out_dir, 'meshes0_1.bin'), 'wb') as f: + f.write(binstr) + binstr = meshes_to_binary([meshes['vertices'][2]], [meshes['faces'][2]]) + with open(os.path.join(out_dir, 'meshes2.bin'), 'wb') as f: + f.write(binstr) + + # Encode and write ptcloud0+ptcloud1 and pointcloud2 to binary files + binstr = point_clouds_to_binary(pointclouds['positions'][0:2]) + with open(os.path.join(out_dir, 'clouds0_1.bin'), 'wb') as f: + f.write(binstr) + binstr = point_clouds_to_binary([pointclouds['positions'][2]]) + with open(os.path.join(out_dir, 'clouds2.bin'), 'wb') as f: + f.write(binstr) + + # Execute javascript test that checks that these are parsed correctly + js_test = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_binary_parse.js') + os.system('npx mocha {}'.format(js_test)) # TODO: will npx work for everyone? diff --git a/tests/python/kaolin/io/test_usd.py b/tests/python/kaolin/io/test_usd.py index ad4247596..1588c9ee3 100644 --- a/tests/python/kaolin/io/test_usd.py +++ b/tests/python/kaolin/io/test_usd.py @@ -55,6 +55,16 @@ def hetero_mesh_path(): return os.path.join(cur_dir, os.pardir, os.pardir, os.pardir, 'samples/rocket_hetero.usd') +@pytest.fixture(scope='module') +def pointcloud(): + cur_dir = os.path.dirname(os.path.realpath(__file__)) + pointcloud = usd.import_pointcloud( + os.path.join(cur_dir, os.pardir, os.pardir, + os.pardir, 'samples/rocket_pointcloud.usda'), + '/World/pointcloud') + return pointcloud + + class TestMeshes: def setup_method(self): self.file_name = 'meshes.usda' @@ -252,14 +262,6 @@ def setup_method(self): self.scene_path = '/World/pointcloud' self.num_multiple = 3 - @pytest.fixture(scope='class') - def pointcloud(self): - cur_dir = os.path.dirname(os.path.realpath(__file__)) - pointcloud = usd.import_pointcloud(os.path.join(cur_dir, os.pardir, os.pardir, - os.pardir, 'samples/rocket_pointcloud.usda'), - '/World/pointcloud') - return pointcloud - def test_export_single(self, out_dir, pointcloud): out_path = os.path.join(out_dir, 'pointcloud.usda') usd.export_pointcloud(pointcloud=pointcloud, file_path=out_path, scene_path=self.scene_path) @@ -275,6 +277,10 @@ def test_export_multiple(self, out_dir, pointcloud): usd.export_pointclouds(pointclouds=[pointcloud for _ in range(self.num_multiple)], file_path=out_path) + # Test that can get their scene paths later + scene_paths = usd.get_pointcloud_scene_paths(out_path) + assert len(scene_paths) == self.num_multiple + def test_import_single(self, out_dir, pointcloud): out_path = os.path.join(out_dir, 'pointcloud.usda') pointcloud_in = usd.import_pointcloud(file_path=out_path, scene_path=self.scene_path) @@ -297,13 +303,17 @@ def setup_method(self): self.scene_path = '/World/voxelgrid' self.num_multiple = 3 - @pytest.fixture(scope='class') - def voxelgrid(self, mesh): + @staticmethod + def make_voxelgrid(mesh): resolution = 64 voxelgrid = trianglemeshes_to_voxelgrids(mesh.vertices.unsqueeze(0), mesh.faces, resolution) return voxelgrid[0].bool() + @pytest.fixture(scope='class') + def voxelgrid(self, mesh): + return TestVoxelGrid.make_voxelgrid(mesh) + def test_export_single(self, out_dir, voxelgrid): out_path = os.path.join(out_dir, 'voxelgrid.usda') usd.export_voxelgrid(file_path=out_path, voxelgrid=voxelgrid, scene_path=self.scene_path) @@ -331,3 +341,35 @@ def test_import_multiple(self, out_dir, voxelgrid): assert len(voxelgrid_in_list) == self.num_multiple for voxelgrid_in in voxelgrid_in_list: assert torch.equal(voxelgrid, voxelgrid_in) + + +class TestMisc: + @pytest.fixture(scope='class') + def voxelgrid(self, mesh): + return TestVoxelGrid.make_voxelgrid(mesh) + + def test_get_authored_time_samples_untimed(self, out_dir, mesh, voxelgrid): + out_path = os.path.join(out_dir, 'untimed.usda') + usd.export_voxelgrid(file_path=out_path, voxelgrid=voxelgrid, scene_path='/World/voxelgrid') + usd.export_mesh(out_path, scene_path='/World/meshes', vertices=mesh.vertices, faces=mesh.faces) + + times = usd.get_authored_time_samples(out_path) + assert times == [] + + def test_get_authored_time_samples_timed(self, out_dir, mesh, voxelgrid, pointcloud): + out_path = os.path.join(out_dir, 'timed.usda') + usd.export_voxelgrid(file_path=out_path, voxelgrid=voxelgrid, scene_path='/World/voxelgrid') + times = usd.get_authored_time_samples(out_path) + assert times == [] + + usd.export_voxelgrid(file_path=out_path, voxelgrid=voxelgrid, scene_path='/World/voxelgrid', time=1) + times = usd.get_authored_time_samples(out_path) + assert times == [1] + + usd.export_mesh(out_path, scene_path='/World/meshes', vertices=mesh.vertices, faces=mesh.faces, time=20) + usd.export_mesh(out_path, scene_path='/World/meshes', vertices=mesh.vertices, faces=None, time=250) + times = usd.get_authored_time_samples(out_path) + assert times == [1, 20, 250] + + usd.export_pointcloud(out_path, pointcloud) + diff --git a/tests/python/kaolin/visualize/test_timelapse.py b/tests/python/kaolin/visualize/test_timelapse.py index c8adeba57..d78c2d7da 100644 --- a/tests/python/kaolin/visualize/test_timelapse.py +++ b/tests/python/kaolin/visualize/test_timelapse.py @@ -180,3 +180,87 @@ def test_add_pointcloud_batch(self, out_dir, pointcloud): pointcloud_in = io.usd.import_pointcloud(filename, scene_path='/pointcloud_0', time=iteration) assert torch.allclose(pointcloud_in, params['pointcloud_list'][0]) + + +class TestTimelapseParser: + @pytest.fixture(scope='class') + def timelapse_sample_dir(self): + # To regenerate run: + # 'examples/tutorial/visualize_main.py \ + # --checkpoint_interval=10 --iterations=101 --skip_normalization \ + # --test_objs=test/samples/rocket.obj,test/samples/model.obj --output_dir= + cur_dir = os.path.dirname(os.path.realpath(__file__)) + return os.path.join(cur_dir, os.pardir, os.pardir, os.pardir, 'samples', + 'timelapse', 'notexture') + + @pytest.fixture(scope='class') + def output_dir2(self): + # Create temporary output directory + out_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), '_viz_out') + if os.path.exists(out_dir): + shutil.rmtree(out_dir) + yield out_dir + # shutil.rmtree(out_dir) # Note: comment to keep output directory + + def test_parsing(self, timelapse_sample_dir, output_dir2, meshes): + shutil.copytree(timelapse_sample_dir, output_dir2) + + parser = timelapse.TimelapseParser(output_dir2) + expected_keys = [('mesh', 'ground_truth', 0), + ('mesh', 'ground_truth', 1), + ('mesh', 'output', 0), + ('mesh', 'output', 1), + ('pointcloud', 'input', 0), + ('pointcloud', 'input', 1), + ('pointcloud', 'output', 0), + ('pointcloud', 'output', 1), + ('voxelgrid', 'output', 0), + ('voxelgrid', 'output', 1)] + expected_keys.sort() + assert sorted(parser.filepaths.keys()) == expected_keys + for k in expected_keys: + assert os.path.exists(parser.filepaths[k]) + + assert parser.num_mesh_categories() == 2 + assert parser.num_pointcloud_categories() == 2 + assert parser.num_voxelgrid_categories() == 1 + + expected_categories = { + "mesh": [ + timelapse.TimelapseParser.CategoryInfo( + 'ground_truth', ids=[0, 1], end_time=0).serializable(), + timelapse.TimelapseParser.CategoryInfo( + 'output', ids=[0, 1], end_time=100).serializable()], + "pointcloud": [ + timelapse.TimelapseParser.CategoryInfo( + 'input', ids=[0, 1], end_time=0).serializable(), + timelapse.TimelapseParser.CategoryInfo( + 'output', ids=[0, 1], end_time=100).serializable()], + "voxelgrid": [ + timelapse.TimelapseParser.CategoryInfo( + 'output', ids=[0, 1], end_time=100).serializable()] + } + assert set(expected_categories.keys()) == set(parser.dir_info.keys()) + for k, v in expected_categories.items(): + expected = v + actual = parser.dir_info[k] + assert len(expected) == len(actual) + for i in range(len(expected)): + for ck, cv in expected[i].items(): # Only check expected properties + assert (ck in actual[i]) + assert cv == actual[i][ck] + + # Now we add another iteration + writer = timelapse.Timelapse(output_dir2) + writer.add_mesh_batch(iteration=200, category='output', + vertices_list=[m.vertices for m in meshes], + faces_list=[m.faces for m in meshes]) + assert parser.check_for_updates() + assert parser.get_category_info('mesh', 'output')['end_time'] == 200 + + # Now let's delete a category + shutil.rmtree(os.path.join(output_dir2, 'output')) + assert parser.check_for_updates() + assert parser.num_mesh_categories() == 1 + assert parser.num_pointcloud_categories() == 1 + assert parser.num_voxelgrid_categories() == 0 diff --git a/tests/samples/timelapse/notexture/ground_truth/mesh_0.usd b/tests/samples/timelapse/notexture/ground_truth/mesh_0.usd new file mode 100644 index 0000000000000000000000000000000000000000..ebc222653c71b05b1910e048eb4a3e14b23f1d3f GIT binary patch literal 9362 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 t_z&>t1UrhR!v{e3R`{qv37^C z^PRoFv(LWw9B$Q(*AJ_mGQONVq(7T}e)0SN`?rxMaH((DX8Lz`_1#1LpQZjkoNmlb zU!y7*?4&G%KGU{Y+U?@CL*6uIt!3MGt@;FHw9hziNl6uiEMw7qRlEA8{7-uc)r1a@DP-ns^jZB^g(fOI@udqaJQ& z2PRW?#W*VPR}_(nNBiXuOV7SMkcYJOpEDS9#k8+jk$n%2JzGE8b-99Xb#jdUt~;?OF4ThoAb!| zGva+@^dmz}Xg#@ClDk4fvxs+*IgHL`S5ybq>>jdn_ftFTFI_{-CNp=M?zsAPq}bu3 z$CB(ym<~>=@z1?<%FN>*dYZP$-`SU(>TUcO@7tX0(~|6cs+ZA{9}V!SJhLTWv?l$r z+;+E%leVkNWp=rYNOxCjrYmX(qJE<}Xef;O6A47{SJKnv+=4z^{u6`RXc01XV= z!Kgx|g0TYPAw*BntVGJ2a3uy&VIR(9PocGe_Cz4==7h&d?BgsivzmNg{C1*+ zRGM^0yLV?}89Q^?7dcD|T?%QtQoFcHX`66)*cV$$#tt@j@eoez6 zV>kPve_&s;NrmBHY9jF}&W?vw&mf1@pYO=|G5f+TRGxIlosSrvW;zlH#MFP$KwHB0 zkL9X_TcyFPU@BCTc8F@J=F{Xp{z%1x#lc-85o^X9_IO~nV zu-_PBW(SrSoXxq(vz&cly9($mFHsZFV&{d=a!rd$wPdl;H*toI>_`>$YYA*LT_cpY zc5nx0ZsRJCN@wqrM2k%4Ml;xQj|zdSf}^dE*g3RH^zo&iV_NtCsOrlhUvGQ`OlvQ-;BYVJAFx%9(U>(rMT#{SCFwSyhAp zoiV@fdD>y;8~@wqbe@C%*5|Z+Ngvmlf*TrLxZ@-5y(2 z31?E(0}qFD%}9>f;*Y5$$^XH5#-UnbdFSG}s(2+bx-wKzNI2=N*K7_%?EJ8u&&_^E zb3pxU?+iq`^_c29n~_LmaF;Xb4R`lOGQHd!h}x=%`J?$x8X5Lxx0;`*73NitXm>BS z1U9=0TXG!(sWF^?uFD_I*g&&YUFdS822oi!H)5Alb*g7LKb)cFB%_CNbRx|#yPU0= zo^@nSq$d=$ayaUZ57am709C0VnghMn(!hGDvb{#9-^s725gm>$XRNy?`X)8{V=CEG zJx3F7A{tEDso}iEh?}Uo9Lf0#B(YTfP(EYYs;c^#%BSUAnCWe~kpp>t-Wv19Gdv!SJIx(DL&>Ndew_GDqV3!m$!qJ%jRhOY zxs3~z|0f&@w6-PHtEFd4Mpw65<`9)R;*Qv1q9w#pro+U)A|uM#=6S~mr=yjrf3)W$ z^0~hzpIYhtlitV4*vd4Wv-7v}1m&0+Vd|-}JTKD27?2z5PgT(jZ_2ZReV&zu=Nt7f zV6aKqv3Zo6JB-Q6G?a}kOv{O$WqP0aGNv7F9!UIa!}&Wl-sdOOM7DLQna z?cs@Z%V_zvLEDI@8Ol4K5h8xT=o$am;K_7nK-~l*sf;3Hsw-)G!ZBub)7VUzt;|<& zmilQSG}sf;&OzZvS@(ZRgOFq-Mim~ejkg+TH$wfKfx z#-}{k`jQK+PkE$eyu(*nj>BB0)|y>z8BJ>adEVku%XLt-HUCvD!b7Uh=RCwB`i?I? z$n|_|Zt=a_=a;Oy^17yJv%f0toKmjs{R59{+dlpD!4JLDG^YLJg15Ra8e1}{VMGY{ zeVku%qVx`Jmpq=M?Sa3&@v6w}BQ<7uaemSHYla<&tp0=MEL%}|5cbgGPv4q*^p_>a zfAMV-c>ZVhcx{)zTvPO=eP2`O*tHtJ;ov`Q5 zI>3ewi2dlhS=vv;4jZvU!&Rpq(RgSG8yZesZfMM3{%dCOsw1y!ZC`Tr(>5@$fq|aD zJYtTxI4@(LFY56?U#(|R$AiVa>W97s4L{wSIsiYRVe&sW6z}Qvkk(3Kfj-CId!`r| zXd)QI4h(n@J9xm4c)^cxb-Zd^#0Z`{$9PK+BY3v2bC&G9WrNlbI#_M{G|wu9hyUOi z{Cr1os`7Xdc$$yZ6z_WRlVa#|>ubl0ubjL_YjSMQc5NfyU;~5Lfk9v7B>I9A`36pm zrE^J*1%D8`_=B8*KgDPJXnt!`MDv65(JTEWXvbJ+9}pXP75FhO<^uc+7hhW9FX`O` ze#`~t4*cB)Tv>AFL(n%w+OQ3){6L@>}681O(_nO|rEevAuErtZBMJ2ZiB z$T4t!pL2T&atxdcw$CiN$2zEWMqXJ%?$Df)8{qu+HPt15`r+tX;1u1!`TIFz^;pO& z@MB!W4jbA+6JXF6I-oD+9Xfy$V?hUu1%IG}_ye8c4`Ku-;sPE#GDqMC4{{8gCF>WI ze4D>bb0Wu32f+DA(S0Q^o;|L$#ai>N8Fm0VJXdyq2{6z>Fwpj;viu_OKwDW0&;k7L z0Xm2e&;dTcPv`(YjT2$5C+Y*n1rOE*Y68Y`9b8?4bp%d~3;n?TSSY9Ms@u=U}Rs&9=DIFTE$!2^9@gCA=XHaM}~ zVS`ipf)jNT?cjWL^jeKayn=zYf`KN&107^6=pbW32k{3wU@d?jI>659EDwpE6GoPX zM9WzbC$?v_=0T2S4Y^D6Bgbx-uu^kk9x)a;k+%;$xJq+ED_|sV zfswogr{pa-C2ujV6ys0^nOK1lt+JOfr@ZbR_cowdGMe6{q z5F_+NZU1J`4z0-~74Hoz)@vP5|6xN1*uX#sV9*yjpf5O~12~}-IB`D$9{CB(3GaT* z58coXPH6`x+R+!B==){wBbpOAhIxbzxNlA#@}Z6$wE}q#ZE-L2o;<2`z`6qlItT_j z0MoCaLF)h>@FTClf9<-jH0PbFzD?cujpmu8>I2%rgLbSP@Zfm>ISD=SJn;I~w!9WvWzynRd z1Ab@=evAuEFz%p-!kP!qjo<_iY}6U>z(#!l4{Xc@cwl4gXl<2^xkl`0NB$#Tv7rNO zU=X|X)!M3da3XfJV=SFl%7#CvfoO+6h#fYx1^>L|?>32^uO&X$?HCK~qV3ny_cV#N zBTK*2nt*@r+)YiQ?U9d~n?&1_D_8zqThH`}#y}InKoej@Tkwds;1_K%uH*xJlN>%} zj|l+}&b#j&6_OkVkL2)*vJaXhhrbP89+DiMbxmgz@)J70+@l~QIUM;qOWTMYw&XA{ zlEdgLISfvW1syOJ{DIEm4|IkeyL;P19X57Qq$n4)Z0NPAJv+m z?+N$nkknh~BQ+Ly^aal!Kf5a=HFibw&Dw^Zuz^9mz(|cnU#YRe4?TA)e)xdc;e*^G zkdty>_;|$Qx*hSN9rrt|1;irvESWoKJ8s=GA>=NXKJbq5{(n6WP;&oEeb@(gn*Yrn=o2f;uGVB}fr z&#JFHUkzT}qLkGb?TfsmF@L+Euddj{4T4A38erSj@4RC@-_Ah9cJr3}) z$APx8uYtC*uYo?;vxv5`uYsO=&zsg(_BGHJeMMW@*ML*@U&uY#b0I&mXO|q7J)^Wk zTjZ_mAJMm0de4Zwl|3W!R`!g@N!c?ZCuPt0teRihGYUrXR`!hG0YCBq{Ia)2T(Sqp zT+1F@;*~l8KQTwB1K2N19gsaZ>HzlFh!<-d`);WNvIj>UkUcmsvIj?B*@KHF$N`K6 z&2djbEyDQ;_`xG*8mO^y?g1MZskayx^M!gVXC2TVa{+$TTRH1+%Dk(wP*>%w18YIf zIs^kvfB_FQ0T1}03HUKC))&T=b0n-CIY*M*0}t+5a*l+1mYgFYAD|U@aL?+WK1YI9 za*hOk*jTf$fkEst7l<8w!`_pH1m=`&hle~hS zcpi{*Iazn|Jb*JstXZsaIhPX*bigwM@)LT3N6zKI48)kUpkP|5E?5-w$S?ye2_%{cepg zx1?X6_@}td|01q21Hk2Er>`l?|=iRRZWo_p&^nq4<%=F)jfsutDH zr<-VLW7)F$#Wb~H(Y)EzsM^Zs*3X;0sBQt(Etp+XKfkWLVRjuYZmgSCKc~KK5#2ba zVbOeAvb?cw^33^l^ee?lb7sz}yP`pH;V*8XM|yp>a_| zqXO2e7WI4j&G~f37&T}5&9p>~G-c-e#(Ct@K6@`G&gGn-kStEOG`7{RIaXMsw;CnG;%2UJT$6XX^w{q zvio^y)Nq>Mq5B&3qz%Wr5BhUS`kT&l!~AiDdS`?w>5My#POs6S{+TnwY{MHX_{g{S z;!mPR-G?Ys8n&ocQS4gv!b_b8l>pPE2kL2f%C z-D|F^te89n%@;o#bx=g_r+-hWxqjm0YkvaF=zsBoWaKpyD<+Nq=`zhtUtf{#fAM-n sjX-`#UsrE~=ucHy%>=oIhMb>YY*+s@s6SJxD$4)y`tRi`YDoZ5ERzwsbO0tzDl_Vl$DbXS%Ns>rsMzU2% zitJlRh(aoa@9q75y}qB{?~mW(_s93oZ`0$PGxxdXo_o%m=bUrRbg;)=qfl5kTNZYsh}Rk;0|PD2YJ?}uNYXOXF)5DcU-??_b94bEX zFHg)6sxxJ73@aL%DIY-Q>`E+;Vy4$Ve3#j6vNmKc%wX7?d_ zfGIAS;0WSYkKtXu0#>kOJUF2UqIX~6&y0KS5T7QmOofbijlyt5>^)TSOWb`SL zW>KrIK<~%t#MWqAWtHjr3SEZ+NI6&lYO=b}dRhl}AKM9Ro+fk$8Im>;BUaaQ50X>9 z;J!V|7;Li>>SLU6N9GyWP^N+byN8gy38&m^l!wv9t2>~j%8Ry$8!)x3kGT460bD+o z2Q}jb*xn@ysau~wN{$z~&CLj&_UOM6VDHWclq> ze!^QkDk{sSD{kjrJIfF!5l0rr<-@k!dr(471(RPLa{5&`; zK1Vb5Rbgp?1b7J)*{Qou#3RIwYAD!3nE!MV{HKy~O}n}C4ms$y{0Y^WDup$Pi!jeL zfEHA}1fR;ecqF_DQgSzP0Vkud$;yxg#C6alYYVcus}>q>E4x2!Xo1f&wt?|odDf6T zjHJzq;j3Q75A*k$g=>zjr80VkeA*y0NS&U{lomKq3$6J$ZGtol{PvYg&QQX=C$s2` zsDt!VkUECf52UUuE?-ctnvEWZmvdDK7iiJvU-)3V1%#b@abZszkKT`RXuVk>C9zr9 zsj>sI+HS!Q)5ADC{_hokfbEo=9K6oe6)8j^pct0kD37fF->Y;CDF=Ooo1? zO?^WM6+K23AEm;ootJP-p((2`{K)I?Q^!@_*5FVX2P3)pBs@iz+wL$5PAZwA?D$OR zG2Bo0J{m$&R`tNUq57!v*p!%SPvT5Wyg1|B!;tl`klLv0!OjEo$bPGM`pMgfz4kwZ z6Fz!C?b}QI(zpp2nJMem`tcOcsoLNn4X` z*bCc1=wWgcVjt>Y+iNj0^XX}tBR7fW8DB>0DrWBXgO@k0_?L!9 z&}x7kJ2Bc6t*`IFVcy%g2D*oqp1OkN>Bcx-M}Xf`PN|^I}XKgt~Zg60!!%sl;uLe}K9|`Lt>ZwXxD!Oj{4y_W~sFwKxydLuqllUc zMlBmc{O`@=CJr#d%%)0gj@$zp3vF1-o|Bm8TF;IAZH=2&^q}WQFYul@j2kmQ2R&V^ z*qMVKJZBR`-d-)G#oD9zn>Dp~cd`gOr)H0#d!@+Iqi1-hd2`|J*K-)R%K~@k*U|y| z_o3qyNp>hMoE=XL<6ktY;9h%E%3Y7Z!vhuBEsuQOsYwoh&eUiAK00WpVM%mbdwB7Z zhxGHgVW{UnhRQ9l!cDj4qDq|vmQ318<262`=yeM`A32_G&zHrU*Je|NWya_>;vvdZ zWWop2o78@pI+0Y6#*7);>5p_7>|D{ztwbMaQ=!EF*m(rk#B!`9 zTflyWCSa8Oba-}eGdEwX96hw}&`m#0QFUJq4(R#~?rJyO5Aoha6^q$)NcQI^4*z8yI|IFzUD1;n3S6r4>e zB**Tb>BcJO*Hp~=D~P^SC)bp_sGrS) z)V#uX*9P-nW{A)ygG|Zzg$DS{?l4syS%H^1eN3C-fE~)>L~+dp{&cMf{COTh)`{M5 zZ;kGzz3Y>a*4IGSf}iy2^#-&l6J^;Vf%I&;B97K9bMF-yg{`UrTyLt0_OhZlOb>~3 zpaEEnOrkqlkKmLo26!phjA{OsBQaO}sp5xsH0i=~Ot>eee zr2*PrFUQRCdocZ_IX}_50Yge;*}%gpXw|4qX74DZokxCfe(#is{3#pevU3lAYtk!7 zlxV7q(a?o&C33{L)`s1+9>CXq?ZjKdJ7`C>H7>nA4F`2f;>i0-7%l5al46HZ#cXvp zSzVUwk7QK#MmK%7Z8%E4T*5sLRp4*yo$~@X z+>K`H7VL~8KO54dd#QZd>USXjz@7PhtLKx_$B|dr-{{I`!?=-ujzhQmN|t@HmJV^) zhI*HB;F!t)bSiQn38iN$+Xu3dE0(#Otn)>9)E0X!Cp!iJdD0Bix@+nY4}QRyPPdo%GRYhAJ^T znFtdqbeZf-Gm^aHDmQvoGGFrg5PFyN&@8X})S=6dB#Vl3le84Eyze}Qh~B5TXbrza z%?+Qnx-j2O;q)%-6V{+$`~|o& zpNHyTbJX|rhTLgpxO=n$Y2Q2wR$iD3`b);6;rkn$W|Ia+7UkiSr}+@JOoXjn-3V%v zYT?J1I!^LMIou4AVul{8soBh7#N_EO=-hOga?8h(SjXewm1D&sB|PEW?J@xSL0D6G z8vX7z!=V^ORwP}6L&bN&(xcyaXSReq*YDwtK8xej)5A!$JqJHeNOB^BlkshsKU;Ll z81MKU!|__vsoyS9Hn^-ARX3l2->jC3+f<{dp9V|w+zcXa^2F<$5qi{~;eMHgkp*)W zQXRjC^ofN8QJk&FW~#_w$L>&^+iD8$TJ)*b)NyE_+DpfV-h=eZA93jRJSc~qpezNL zKI$4Q(D#7qyi~X_J(KR3K933}TN3pE4ffqdnr3d>hOko~TV0*;!LB~cdbP7MmFZyd zOf{^^7r|M&3RszU7B?6+Q|&dEF37$j==Q9aU!;}GozgcWpR5egZ=gLUJ$Vg_q!q9( za2<^McmPJmEvGW>8IY-4gtDo+n7(Q`C;Mb1;j%<=PoFybR6x;YXbqKoErK?n5c5Vk-K30{`smWvuvi zn7SzB(izL1qH~!J%z9Vu9&T5Pk`_Mfl*m_lr9KvQ6feMs-#fXsF>1K?&oTOPKmhkq zc`|2v=^A?H^Dt%Z(F6Mz6U9@7sYRn>)?g0H<{_Yg~lxxXLScC9)H&Xtw!7EZIS8Z z)9r0A@<0b2;aZC28%3CnyfjN_zKo_D%OF){BF=v6fZrZTqYR8^9*t74;87hcy!r;R znj29WcY(WADIGm>HhQ^d!P-z~W;W|Bu1qN5W3;ll?<)u4ZOIy1Ya_xQr5li+y7d&j z@~C{A2QkdKL&aBnGdygHDbJeW!hJUybkZ1y#Ga$i2Rwo^%5Ts>*q{CU!x!c**@zEb z+Q5Ew0x4OR*iu#v1y_vtsheJa%Hm9SuhZr9x|BSg7`lhcxN6F0+)>1<+@?T8x!Wc;5cR;E`m+X z>%cll62yhEele7A%eE7pTivd#r#8e0muJkS=0d%>XPg&K+bzJFI7@!<^WPZdcbP8CPK5H6 zm*9M=DP1~|!9<^2bXPwQ6tiKqh6=t=y~6o_(&QSq<{>e2XGIe&+3R*SGHKv$&RDS> z@^Z!!o1?!unfJ1|cFtbhKDiZ+o_EG6P0uh$qm(On*9F_>84xki=k!zQO0H(57hXsf z;G?uKRu|y`k}YZ&S3L}`G9fi>SGmD(D3 z4-7e9${8qha)xKS;OtjD*n0jWz0iFO4hNis>ezWub5{?I=|S2f8%r;U4l_q*0Vy957B$8m1ily0 z)y@_dcIY!J({wak?gHyKOQY7UV$95cL>J_gP}e6~WWAOulYT1#RohCj?}aV;I-jcC zD%9~b4<3iRjbSuU7;iLjg>Cf`Z1sWnnD*`qD5<^WOy)em0{y{kj&&Nuh9+b9R|WLz z_~_1QHDGOoDLXW1BzL`32S=ODWco&zz;Kx@?sK<-T-0T{LC4WPX%8)nGhlDS29Pa@ zp)_Q6EyxPrS%bBX&~B0r2{+ckOYIdf$X$_zNXinYDR-!rY8mVkmS>h$8?P8=#FU50 zlfe@bXzBUMRJx-a6<=DiKPa>T=FpT;hp7%K%sTT9o_*2r_{Q0E8I!6LNgp%y0UEvFCf%CN&xZe-tW0fm+FXi%IA zKQxX&!C-w1aLmF=qh9#==?UMpJA!P%md`626^$Fkp1w1^BVV3Zjur>1nu+>kY zOkxJA`{hybC4cy`QH8M8IU5Qdx>Hp(buuf)jKwDZ;(W?HNL!%@t7+0_7yL{~xXuEe zPm{;>gN(`8(p=gjwTQR6XpEiPJz2rmY&xgA5kL9KL(ZA33s;2w&6cb7H0Ss+XmB`$ zHInN1Y5aRgI+l;yMx;RR*yViV$Ui{mjAt(Gn(UR&2~5>1qCMR*7*NiU>JmNPDdI3a zWbhWR-7&(l1v@VkO#!?*s2h$P633fguH!MKFK}h03>#Nmf}3*_p+vWvR>v^>^6fbE zsJf%rid5Wp;s@*>EYIE@btB3V+3xdV68V^0&tOrF7aN^*o}SW+1XGzyeBY`}E~5Jf zrnNY;u7Fhc;8?&zheW8$e0OH3*a$B!{)BBdd*B=s;I&$FU=OC!``?BN^?@dkyX=L@ zrt@HkS`Qo&q=NmBmH1pz5)TcN#T7$8;o`1V*fH@Vzvt`%qCMCL&>#awrbOX${u4L; zr54uPZp2QR3tYSHLVDHjn*i_mBi|uBB{%|qu{GT9s|hpeya5UZ_1OGXsP9b7lV%2d7Fiiy8xr)+oVFv7NO3mog?;AIG|i z3ive669(Vb#3M&DVCu9<;BnuTl$(j8`V1*9;C>Tc8m-Oj=Nn?VoiT|wb?3Z>N;3J1 zq2zejbgI{@R+%_A4FkeV@S9N=*B3RAlsH)6I?ekuMtLHMh%u&lLk9B4ukD9W7|2ow zbyDCybu-MB1`g198lTYmzMdu;Edf3)FQQuHovY#i`z#b zYn%cz(i}#dOxN=YD-6(m=^iW{a|?$5r~>H$k5ILH5ri9-(o1*3u;SAznlR6vOH(wSyM7)XXYF{b3H5nc0P;Mrx# zz1^@66DJH~Bi@*?_l8~8z4qfk{P!pVT$`Ai0aj4qA-Zy zP-7VWY$^TuX{WFbOrX-;i#va#5xTy&(GMr?f`sWtJTr}Mt1z> z2!cOWb#UiHMshmQ^GWvF&2;s`Tv`#Kgb9bGIPsibs7M|}*2~<6i_8h9r>dh?;xpJY z#U5IQXW*7vBNjNsj#domgrm}@D=nW7WOF8O!U2;u@vcrbD3^K(2kRiu{|-1TCK5q8k#P)89{JNpy@fD_xsJJ8g<_!cHSL~{wco(&%RFIRw=_=5 zTY**TYpMILMqd2wbe3Qmd2q%UEV(91@K*Vfg2sNlr-DQ(*?`Tv1``}#Ion`;Ldis;p97%yJUfqb>>Wq*CJYt zlXx}92h_*Z7R?e5bNc&5K-b+D?WV7TnOXH*Qkk$1zRelSUxmV+k$^tuIxU*MW|=z7^43Y39hu+ z5RD#ZW6XpgI`oPJ?AqZ&k|(~VD|=(%=WS1X)botes5)@0o=Q5ldvV93FYx!4PC%{9 z50%*&@3_X20w|C@M6)jn+|-h15mCc)w0Bmy+my7`cz5H(ewePc`b$$fyPx?+Low*7Aie4Bu zHwzBf_R^0Ldc_=PQ2uEWn;PX z+Y3=8(3Ytetl+a0G)doR8@$(Wta6F4?_;}46u)##;xcdV!|V1YEN@U8)wLc-s$S@# zWFw99PQ_bu@?p(-H5C0Y4$plm2LF$zxkdbIXr7)x>*uCXky@c2p>`nFyy}55 zhj}z8JOHmx$}<;hd%|0-q&4{inX>z4oNv+yp;edN?_?dvfNA^b&8xcT<;A1xoI+~o z{T7m1dN6Z`EK~cSgL@q;Nmut#F8pG=yN>)_v{pJn)#SF)i;5W-F#jpndO2KZ&x!=s zGxK5h#tQzkbrdE=-J(J3eu4NcSz_k!6~5O|I5BQ3TAvVMqL)9>FHZ&&%daI=Ahbj7 z$&AAIV4)9YX)s*(ufu8SiQsl<2_E)1Q+a)!HqO@H#$6BQgT@x%^^PxO%P5pLR{MsN$aVBTXr+44tnuve!F0yiz@&0dTkErn7{H1r5x zc|)JzLNkoNriH#|29eJ(Q=xL4F0+_EkmyZc1XD-fhn%i#Om4pdlMiTNPg@Tze|wQ; z5HTnpID~jCRb|P~WDw>pg*hodU=Elue{+h{z9hg>LMq)ZG{E+K>D0m6k%><{f!pgZ zg1?MEf498?UC&FfakI97o6S^=eR_g>m$aQ$1+Rpo-SO1a<{?yDyW!G3UbO4wDOhu; z2y5~+agUNFTkn~O`cLfO*N(T;r9BbfA8w*43pP>FiD%H_gB?gb*vhSODTVpTUhGSE zJ}s=;f?Ai-!1k3cuKt~jdxyN>tF5hAtMM=FmYYo*bq|7hzytJIY9h3oZ-HYXBhl^Cx5NF^5p$INQ-nK1UVzpX!bP{{ zLh-K?FgNfVxO!HibZaq;-Y8GUZxtueoFlt%?h`dtZN;*Ha43CT3^hwMQRQVe$Mkbx z|IuOOhyG`pr}2W0cgexxl%ue3)EX9OAIIG}E`{@-euJfQ)k5F>0hr*C=$@Y!ObqAb z(Z@R^*|d2@XnODo^p5C(lHL)-*?Bx|4oanxR_5e-s51Lqyp86n<>HMYy6Cs*XXTvD zin!u!9DB1mhVE>hPu@HY=cjwDg=T#>GXLQZaDJ1`MJ2z1Zu1Pz?WHLT^4o)!U#0nv zDu(>}csnl1A(e%mDyBJO<;a|k+AQvtid&Yjy*$vc;5AL1;WIdq-gZTt{5Fp7*4mFj zO)|_mL6No3aUt~bZ(e=oL~I)q4n;piG32opM!Ym91y5B$7LDLjr6mm`ZECGa<3qoY<_FXOGUs zxo6r5NYVjDvn(dk_dYMM#m%0@57b~DszKPbwE?_!)Tv;jKB~J{z=5U^nl(=jm7j_5 z>8y-1^(J_1{8xJ6;4eT;GcxP!6{@?=j$bW&-o6>+%?2&IN^fL4645CyATIGT{Tw4j zBJXRk_s{P_nR*Bo_)%(?WzCyCf5&Zd3t*XN#!#(aVdP<7D<8O2leKHc;qiugh(1?9 zhlNcdzQKE``wU6EyK^-9UVjhnT2^e|o}CyKdkncx2zTW44RL%hDiQjO2v(WD#qk#)f=#yP_Ti}w4485E27HjLAnSbCR zZj2xYJ#Jj3A^_V+7FAU3!CVM39ghtQ4#7kJLojRAW^~&jgIPJv zT*9jy%s01WE(&kBI3bg5GhcB_lsl@DBB$&9rHG!Ksbe&5H-RoS0*TT2M z-byE?piR;AM?HLP?4%#B_~8woC3Nsh3Y(X7p=)&>_@){&`*{v%_5B6B_Pz|SW6lDX z+yF&``atpU3A|wYnf|P8q?*?g@O5S@^-VFvfNvY|o%A25***~*_HMAXdXGkDCkBTH7PVzY%BO4(SD zjbtVaHBhE+-i;)xlYc_e!q1#ru^Qeq&ZZU7@?4s1Bo_ZrW6dGGm4S=gP^2=N%_!Uk zRj#8+@wGcJSwa%MmbIXILl+d;{Gf+Lh4$?&d+54UIrpV57clssGgB8oQaMa`zk>4; zxQDy-*ck~Ga$ar+{dv9s;x7df>GRUCA;}Ww8;g@+Pba|;b6J+KUzu? zNLtfvS~{wlrapL#Yxfz$Gw~kx-dbDE@oE&SOHsn5j*rlD_%piVumCSAG-1R2ddMtD z;(qhu&^U1x<6FPF2Q(`YLlt`#c6x(bWWzO_D?fxi3bR3<1=sL&=qOrz(1jKn@u0de z4vwnafebQ`Oi2^L$M4S4mj!LOUu^)`xSH`}wx#0Mr6X9rf;t3pTDVztFyv`fy35B) z0-5R01}Ay(I~}5-D0vmL`}qZ49eM((5>cSk-ALyhwj{-tZ$NU0Dvn4viHVPRXjv)E zPMbQDV_R0!2fQO&FYIILPWsAc*=fT}EotN%mQ#lTy)=d|#g3qpa6Zn7Pu#r&JsxkP zG3#fu@OgGn_52-Nd>>2|R3icHN74CXba9%c9(g=;I_RJSi`u&oO0#m|ZpJrm#=6O* zdw4S~T#!K}9#q5N`%;`(TNTx8nt(_0%3=M3J@8_tIeGV0fpKy{^hbsRD(GJYu~J#4 zza#_Q>Z{=NQ!OUjTaIzROX2I7<$(ScB$}zSp>gu?;7Y90%y}EkzMB1mAKl8ecgN&<4?`x6SSpZzRyu)j#kVlLz%`Z z+L9U1G|_VT1Bi+Nl0Wq*thgc1l3(|sm(~+-a9==;qQ!~FWGhy8Ycc%p8A8VM(oA-u z2d}e40M#$!7(3ZPe;U*Z$L8gOV%t8tAn`KNMk8#Kl%dI1yD`ekh>5DmFt=Pg(ijpC z#e%E6+Y6yTB1q_;H{Zk=Ojw6EQHvGt$b?bjR7t_ifoyY3IkNYGyk=NMy_~-6~7n5LVhCV4{w3?fs!aapoki+7=q@P61mDuC;Dj9 zEX;g59!5EuvY!=FWYU7wFz>85%8h%D--CWo*J+w8xIP8GSMGo*uB#zlQv@%)Ome^f zp{8~Us- z2$^E6PQxw?0vGRaBG|Q!!_iL6@A4DenxI55Kc`yyjt>_f^4Z2&m)2x6BP?lAO zs6`goGgpJymgI3$oDR^?mBHj?wg>ODNSv*`I}^<%17YQJV|xFqB^Iw5%;hH>r8{hg zlk+zkU}E|#SanDqtGydE-82en!-BEYpOy{p%_F*%d+hemr*9891=U1vGv<5p*&F?O*dPx%)7#7 zR#pyrM}||`vsxsj$C$a;m@v6p?w}Rb3?r}EGyk!{_-yrCI8+x(8z1b$ObvbZ%*7rv zB*clsO)+rMm1DashhmoT4Hzw<&11V3-n)LDt}PhJM&2*P>e@#Tr#FmxY)k^9lZU9! zs5ewHcRxOPI1~;_=Tif%LFDvgCARapBr~&jA-l?Fz%?r|IxtER%kJ!=@;ZI6af}C+ zs;}g&YTUSC#i2wiZX10nzZ)7XTJcxAxlq@b%Q1-@>>a1h=9n9>z2|GNY~KlJ(b)`l zm%T!-VM`#o@MUFubtY;~x5O#l59k~+97{r0z{fRy>~MuUmM;?OFyUtC*^_})9(TEO zFSXeF&AH%qV?9{e0Bza2n0(E?<39962uycwMwbj57GQUU&uyr|?H`3UY_r9bu5cuI z`(*Kyt_5qcRVQf%LL2k&YP!L48d-HrgkH-z>YlT)4(EsuVdEzGQ?nQY65g%H`p!zT zi^T)Uu&Y<7^fex;#*aXkxWn|)Qzh(Jl8dJK74W5=0|hldyl?yq3ZH)BDi)r@vfcJr zEPoKLf3+cbAyTZTGXkdi2vFzUZfj5@t2< zq`eItr=5gpr+dMuxCj#-e1q?@0et(oDopGAPMby)(%h)$c(q0Vp(65ZPMZdqn0A#; zym^B6_h+z2)Rb+@Oo7N9Lx|SiKcM;L9WVZ41`&3fsfU<3+oSFeXU3j{lD(F2-aiI2 zt>?nh*#p@YzkN8ocs&hlVw}ED2x?W|qDxf;{IKFD`1YsDh={v-{Ul#1u??S?MJXP|!k7(R#+XX|$mS~O0V*xwn1+5>dBZ(C|$ zP+|r>vdbR3zxG1p9eI?!`~hADijx3&DR$=4O!{ZtX53$@&g3V2rDCHQ+R*|S9J`w? zOV!5;jScj!``gM^j-rmFGyc#`fVr_o#Kc7do!#x3@coUKTCTw5LvEP6&>o2VO9&se zj_clTj^+2=*tz%3{KNnr{pB2S;NiCry)pxXKYfFHC(isQhB$+js%zw#L2}f?2(fL8Ma#+MEz~SJ5~puW?$ek z8_k%{H8tUQW)%pYtjW5TU4^;QPatRCcnGk_!F4L3&~W$%4Qp6{rw;6ZxT!&?yZtmI z=j!8w>9W|+ycDB`eSqGAvG77$l#GwIMeCdlSo<=FOxrhr@{#)Z+UzcLjFP~n;nvU~ zEk+LN*|W|VH}2xDdi?rMg!x(I(5}4cDAo0h)>k^i)ZA+9bhTq{4hr0tz*^j@W59;A z&4BSc2I0}sh4fMFCn!tG!{qL62y*szf4ckteyg%%(}m-fOJuHKpN<`V$!>+j3**SU zk-Bu|=MTWzy~)PY8#(!t$7xi{EV3*xfwOK_!-Fo8Yf{AYK5^is}IU_2XWMtw)ZpCcjyT==dS$Z37a}Hr|b0lzOixj5& zE~BlNM-mMGOy4iGL*2watV=PcD*Eb(>@ZHOETY|Zo9MZhq2z&KQDxcu7c|As9#;n} zz0l*egdf*9nK(v1p{=Ve*zE{)QYG<#*BIafezWG2 z7_G*eIn$(auXdDHU&;k$j46!#+ap%0MR<{q5Mn{AN}J! zUA_K3PF*`2TJM^%x(5SDIJwMCv2~=w)gocp+9UM+&*5yb@k#ug_W&+;o3Z=fHOc6q zk2$>-TmFW2H~MGaqUS?DaOw?TQBOFgCi$}@cR)TLJ<~_BFp|lI4M{<AaAU-y z2F!WsK^ndBJw(}L!EAFIEO$AFzn)mpoSR`FZoV8n`5sPYlQ$>`$8CDv+XTmtnXuh2 zvr)yu22Pfz!7`^}mG zT-}BO*Il$5~1I)f^Aghl_xYu$_h}9pJA#7U!(vufeT(-|3ip zl2|b45f<$KO3#Wl!10VJic_e-rNi>6my_{g0Qc; zZ66(a^)0=)c^SqBR)U(gDbqXj0-1gWEngGpxQzZ^Rm zWJNk3ZiY|sHL!KqOq2?)h9!%O`D=?E$=xtb6x1u=Yd;O*^z;%f_RQe7bydQk@}bQ1 zi8;om35Y_^YI<^P0o7apq|f(0yfAn}=f7Qs!YZKkrfRIACmQ|Nib0m50|ce+K}_2K zUZ%I{H{X0r1{t=%CJzpYOcb{FLaM5oEo=)3nERy|+)keb@81*$uQ~~_wYJzf@C^pk zc|okDB-XdMlg>{v@NTg(r@lTO%^W8)yJ-esSWIw3{dVZ>c?=d)$B{#)XHomlpW#yS z7F@IBHod%24K@9w$nCz%P$({rov&x0p1TgccU*yu-L(&o8kfs#J}Zj~yf#A5 z1rPe}#&gh-*n@`N-Egbx3WRl4;_^Lb!QWh;xyC7ylxI7s$7ykP#Opko^qdje!u8l% z)#Z3dv>9^Rf5Cysx#-xi4u0?Swt?ks%-jXXHqw-ne)v*4%Y;CP@Wuy-F3UEY`1TD>=C9H2 zOHcVYzfYj`Es72w;=*TbPKMOU>)3ihA?T|FkwVj7?o)yqXxlhb6nitAUsh#^(zn%# zQ)?()rkD;dcT~Zx*^l}C@yBS|(N9<)7{tmdYABrjjFC46uxD?hAVoP2Bd>hq{Euw} zlRu@X|Jj61-a3vIhY5Ab`etC`hU1R}12dD>GN;VZz-qn(Pe$` zua(2zir=_l(@Xj#`zCdq<%>k`8&_P_2vx)8;n|~%rr*5B9~rR)OSkB;>JecyZP6rx zO;_lqfQvBmOoBwN9E=yuhEV?}VrUv+PM>;~ z3T@?kkhv*fvZ^+Ic$R=ZVLkBup*s5|^9IAM8(_@WJo>KjG=3wSVS4>w_t&F0@Xg*^ zS^LlvAX|J@IA`i8>==`A0WQxVN%SJDxgdkp5*%^cxtiPeSc;W@7enoi$zU?moSpM7 zhokF0!0R`P=$h|LQcf7raXm)VC!-t2|LEiT8pQd9?av|oX9DXG`o&kpI$?WZ6zhy_ zq6wSM89+rv;=c?MDqH;GS z$Swt+XR34aSc>3`t*=lyu($9}LEeNlOTvM#EvsDkjUuheYA7&7i*EqBWJF?4Tk!Y_-J z@QCG;N>_m#sTNtr>*h5Wjm4mNF9ZI%Lg38-1P<{Om&d-%&yzY4X z@~90e9K}#eIG0LulP&pJig5k46O)_r5_fC;;_?m`)3m3W__#ZRucE5_p9wqh_31IJ zD|RQiigARC{{UUbq-fAs87vr^4CyCU@|}ma;}1+4v1c|$E6$2VtsiW7yHhUKcICQ&dIM~boX5d zxZ9304FynoBA**EVLX-}lwr^8eQDduStR+!}H+mhdq7)^_^jTsXhHLmBs2jbp2xS~BllGK5CD&}osn z=xuTgRi5vp1CQ{)a2zqv+7DiE7oPFCSnszKjLfT{QQd&-vl7R|U!A;jts1Us%cibD zN?5VE5O)P$h4z~xSkNZnT;QyW@b7%feg^s(=x3mxfqn-18R%!ApMib``WfhFpr3($ z2KpK3XP}>feg^s(=x3mxfqn-18R%!ApMib``WfhFpr3($2KpK3XP}>feg^s(=x3mx zfqn-18R%!ApMib``WfhFpr3($2KpKJzli~@eJz*qRNxyR=#(0}ba`~}(s@GZ^2o5z zs8C@(5z!GQ0@dYm|B;3)oEN%WScv5dqZdXjT`pKYFF0I9&?yl9+REUl-tSKu2J9I|i)5wr+P?>s+nmSA~w)WW3;)(ezJJrIaD3p#BC zLW%IaFqehFa~Fm$j9w#%4vtz78toe#9kyH$60u@#c&K20ctmitvoKw>@OmZ(FNq8n z=KpUM{k?|+{;9uz>rv48cQtgu6wfLCQ$)l>MMXqJ`{aA2dlkPZi*zV{QBVFSy}(dZ zn2&?paB(TY2!Y)2>CyrfOG&|Sfk0-sq(C?=-)gw5lwg!lA}^GLNei4U1<}Hoy0pMi zZg`q-Zz<3eo|PLuKw2R3HxJq2Ix>G{B0`zX@GRlpNT4T_SqPNLYJr-*vcRw;Rz~1# zCuoxv#3`@+TM#>e@jvAe-s=B`&H;ZfPsCF~!*i1V6b(V2#19G49tnwW3SX2vR6okg zd{B~luP*jZ_Mi0s9{+RMf6rC@{r-sI5&}`t9}<6;g8xtG{7^q{8vgF52qgZ92><^4o8AA2|0#|zyFO8||NZX^O8%}T?PyfwILPH?+ z=cm;7zbn@N4gM3oJ$)wsH~x3;`kyNo2nPSnSQsYz`;GM({XYr9*Zudr{C^Juud$xv zJ^n{5SpAQ@>i;G8^#3=B>-zr+hW#V=9pOLbU)kSN%l?s1`$s<6*K^eWQ(p6reB3|s F{{<1twlDwy literal 0 HcmV?d00001 diff --git a/tests/samples/timelapse/notexture/input/pointcloud_1.usd b/tests/samples/timelapse/notexture/input/pointcloud_1.usd new file mode 100644 index 0000000000000000000000000000000000000000..2e02ffeaa046e3a63e332ed09893e27a5da02e12 GIT binary patch literal 26970 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 literal 0 HcmV?d00001 diff --git a/tests/samples/timelapse/notexture/output/mesh_0.usd b/tests/samples/timelapse/notexture/output/mesh_0.usd new file mode 100644 index 0000000000000000000000000000000000000000..493737774a7f47d78b775e74ea42eeb83c8ad81e GIT binary patch literal 96324 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 ASO5S3 literal 0 HcmV?d00001 diff --git a/tests/samples/timelapse/notexture/output/mesh_1.usd b/tests/samples/timelapse/notexture/output/mesh_1.usd new file mode 100644 index 0000000000000000000000000000000000000000..c3b566318e2fe40e595dd3e8eba625eca839b222 GIT binary patch literal 95876 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ūC>9V_f!8M=a*Z^x-aKi#m--tp-*@tl5 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

iJ-XP4A)1PCenlf!GR2Whd#lZ0uNm6yIe=S= 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

-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 {ZX{=o+@YV&F)wst7 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 literal 0 HcmV?d00001 diff --git a/tests/samples/timelapse/notexture/output/voxelgrid_0.usd b/tests/samples/timelapse/notexture/output/voxelgrid_0.usd new file mode 100644 index 0000000000000000000000000000000000000000..edec463b3509fb5fe53523c31071d4295befa333 GIT binary patch literal 349959 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%0Ap5JF-XJKdI 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 o%DevKRsDza`TF^nUeq(9JNf+Q^7$v$FMP conda_build.txt @@ -43,5 +47,8 @@ COPY . . RUN pip install -r tools/ci_requirements.txt +RUN npm install + ENV TORCH_CUDA_ARCH_LIST "5.2 6.0 6.1 7.0 7.5+PTX" +ENV KAOLIN_INSTALL_EXPERIMENTAL "1" RUN python setup.py develop diff --git a/tools/linux/build_docker.sh b/tools/linux/build_docker.sh index ebd33c88e..9afaf669f 100755 --- a/tools/linux/build_docker.sh +++ b/tools/linux/build_docker.sh @@ -23,6 +23,6 @@ docker run --rm "${image_name}" cat conda_build.txt mkdir dist/ docker run --rm --network=host --ipc=host -v `pwd`/dist:/dist "${image_name}" \ - /bin/bash -c "python setup.py bdist_wheel && python -m pip install --find-links=dist kaolin" + /bin/bash -c "export KAOLIN_INSTALL_EXPERIMENTAL=1; python setup.py bdist_wheel && python -m pip install --find-links=dist kaolin" mv -v dist artifacts